1
This commit is contained in:
@@ -347,7 +347,13 @@ async def export_team_credit_records(
|
||||
# 生成 CSV(兼容 Excel 打开)
|
||||
import csv
|
||||
import io
|
||||
from datetime import datetime
|
||||
|
||||
def _format_dt(val):
|
||||
if val is None:
|
||||
return "-"
|
||||
if isinstance(val, datetime):
|
||||
return val.strftime("%Y-%m-%d %H:%M:%S")
|
||||
return str(val)
|
||||
|
||||
output = io.StringIO()
|
||||
writer = csv.writer(output)
|
||||
@@ -360,12 +366,12 @@ async def export_team_credit_records(
|
||||
item.get("amount", 0),
|
||||
item.get("balance_after", 0),
|
||||
item.get("description") or "-",
|
||||
datetime.fromisoformat(item.get("created_at") or "-").strftime("%Y-%m-%d %H:%M:%S"),
|
||||
_format_dt(item.get("created_at")),
|
||||
])
|
||||
|
||||
from starlette.responses import StreamingResponse
|
||||
output.seek(0)
|
||||
filename = f"team_credits_{team.id}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.csv"
|
||||
filename = f"团队积分_{team.name}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.csv"
|
||||
return StreamingResponse(
|
||||
iter([output.getvalue()]),
|
||||
media_type="text/csv; charset=utf-8-sig",
|
||||
|
||||
Reference in New Issue
Block a user