diff --git a/.changeset/three-starfishes-wave.md b/.changeset/three-starfishes-wave.md new file mode 100644 index 0000000000..854338d0ff --- /dev/null +++ b/.changeset/three-starfishes-wave.md @@ -0,0 +1,5 @@ +--- +"@scow/mis-web": patch +--- + +消费记录导出日期时区不一致修复 diff --git a/apps/mis-web/src/pageComponents/file/apis.ts b/apps/mis-web/src/pageComponents/file/apis.ts index 044bd74148..eb20016c36 100644 --- a/apps/mis-web/src/pageComponents/file/apis.ts +++ b/apps/mis-web/src/pageComponents/file/apis.ts @@ -23,12 +23,14 @@ export const urlToExport = ({ count, query, encoding, + timeZone, }: { exportApi: string columns: string[], count: number, query: Record encoding: Encoding + timeZone?: string | undefined }, ) => { const params = new URLSearchParams(); @@ -54,6 +56,7 @@ export const urlToExport = ({ }); params.append("count", count.toString()); params.append("encoding", encoding); + params.append("timeZone",timeZone ?? "UTC"); const queryString = params.toString(); const fullPath = join(publicConfig.BASE_PATH, `/api/file/${exportApi}?${queryString}`); return fullPath; diff --git a/apps/mis-web/src/pageComponents/finance/ChargeTable.tsx b/apps/mis-web/src/pageComponents/finance/ChargeTable.tsx index c8e5080654..b5634539c5 100644 --- a/apps/mis-web/src/pageComponents/finance/ChargeTable.tsx +++ b/apps/mis-web/src/pageComponents/finance/ChargeTable.tsx @@ -167,6 +167,8 @@ export const ChargeTable: React.FC = ({ // 处理消费记录导出的函数 const handleExport = async (columns: string[], encoding: Encoding) => { + const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone; + const totalCount = totalResultData?.totalCount ?? 0; if (totalCount > MAX_EXPORT_COUNT) { message.error(t(pCommon("exportMaxDataErrorMsg"), [MAX_EXPORT_COUNT])); @@ -176,6 +178,7 @@ export const ChargeTable: React.FC = ({ window.location.href = urlToExport({ encoding, exportApi: "exportChargeRecord", + timeZone:timeZone, columns, count: totalCount, query: { diff --git a/apps/mis-web/src/pages/api/file/exportChargeRecord.ts b/apps/mis-web/src/pages/api/file/exportChargeRecord.ts index e42e1138a1..61c3c56db6 100644 --- a/apps/mis-web/src/pages/api/file/exportChargeRecord.ts +++ b/apps/mis-web/src/pages/api/file/exportChargeRecord.ts @@ -48,6 +48,7 @@ export const ExportChargeRecordSchema = typeboxRouteSchema({ searchType: Type.Optional(Type.Enum(SearchType)), userIds: Type.Optional(Type.String()), encoding: Type.Enum(Encoding), + timeZone:Type.Optional(Type.String()), }), responses:{ @@ -62,7 +63,7 @@ export const ExportChargeRecordSchema = typeboxRouteSchema({ export default route(ExportChargeRecordSchema, async (req, res) => { const { query } = req; - const { columns, startTime, endTime, searchType, isPlatformRecords, count, userIds, encoding } = query; + const { columns, startTime, endTime, searchType, isPlatformRecords, count, userIds, encoding, timeZone } = query; let { accountNames, types } = query; accountNames = emptyStringArrayToUndefined(accountNames); types = emptyStringArrayToUndefined(types); @@ -92,7 +93,7 @@ export default route(ExportChargeRecordSchema, async (req, res) => { const client = getClient(ExportServiceClient); - const filename = `charge_record-${new Date().toLocaleString("zh-CN", { timeZone: "Asia/Shanghai" })}.csv`; + const filename = `charge_record-${new Date().toLocaleString("zh-CN", { timeZone: timeZone ?? "UTC" })}.csv`; const dispositionParm = "filename* = UTF-8''" + encodeURIComponent(filename); const contentTypeWithCharset = getContentTypeWithCharset(filename, encoding); @@ -125,7 +126,7 @@ export default route(ExportChargeRecordSchema, async (req, res) => { accountName: x.accountName, tenantName: x.tenantName, userId: x.userId, - time: x.time ? new Date(x.time).toISOString() : "", + time: x.time ? new Date(x.time).toLocaleString("zh-CN", { timeZone: timeZone ?? "UTC" }) : "", amount: nullableMoneyToString(x.amount), type: x.type, comment: x.comment,