1
This commit is contained in:
@@ -347,7 +347,13 @@ async def export_team_credit_records(
|
|||||||
# 生成 CSV(兼容 Excel 打开)
|
# 生成 CSV(兼容 Excel 打开)
|
||||||
import csv
|
import csv
|
||||||
import io
|
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()
|
output = io.StringIO()
|
||||||
writer = csv.writer(output)
|
writer = csv.writer(output)
|
||||||
@@ -360,12 +366,12 @@ async def export_team_credit_records(
|
|||||||
item.get("amount", 0),
|
item.get("amount", 0),
|
||||||
item.get("balance_after", 0),
|
item.get("balance_after", 0),
|
||||||
item.get("description") or "-",
|
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
|
from starlette.responses import StreamingResponse
|
||||||
output.seek(0)
|
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(
|
return StreamingResponse(
|
||||||
iter([output.getvalue()]),
|
iter([output.getvalue()]),
|
||||||
media_type="text/csv; charset=utf-8-sig",
|
media_type="text/csv; charset=utf-8-sig",
|
||||||
|
|||||||
Reference in New Issue
Block a user