3 Commits

Author SHA1 Message Date
Misaka_Company
811361a1a3 1.7.2 2026-04-01 13:56:14 +08:00
Misaka_Company
ffbda4c618 docs: add release notes for version 1.7.2 2026-04-01 13:55:50 +08:00
Misaka_Company
348b02600d fix(time): use UTC methods for operation history display
The database stores time in UTC format, and the UI should display UTC
time without timezone conversion. Use getUTCXxx() methods instead of
getHours() to avoid adding 8-hour timezone offset.

Also extract common datetime formatting logic to reduce code duplication.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 13:54:26 +08:00
5 changed files with 36 additions and 16 deletions

6
docs/releases/1.7.2.md Normal file
View File

@@ -0,0 +1,6 @@
# 1.7.2
## 问题修复
- 修复操作历史时间显示错误时区转换导致时间快8小时
- 操作历史支持一键复制总排号和订单号。

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "erpauto", "name": "erpauto",
"version": "1.7.1", "version": "1.7.2",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "erpauto", "name": "erpauto",
"version": "1.7.1", "version": "1.7.2",
"hasInstallScript": true, "hasInstallScript": true,
"dependencies": { "dependencies": {
"@aws-sdk/client-s3": "^3.929.0", "@aws-sdk/client-s3": "^3.929.0",

View File

@@ -1,6 +1,6 @@
{ {
"name": "erpauto", "name": "erpauto",
"version": "1.7.1", "version": "1.7.2",
"description": "An Electron application with React and TypeScript", "description": "An Electron application with React and TypeScript",
"main": "./out/main/index.js", "main": "./out/main/index.js",
"author": "example.com", "author": "example.com",

View File

@@ -21,6 +21,17 @@ import type {
const log = createLogger('ExtractorOperationHistoryDAO') const log = createLogger('ExtractorOperationHistoryDAO')
/**
* Format datetime value from database to ISO string
* mssql driver returns Date objects in UTC format
*/
function formatDateTime(value: unknown): string {
if (value instanceof Date) {
return value.toISOString()
}
return value ? String(value) : new Date().toISOString()
}
/** /**
* Configuration for ExtractorOperationHistory table * Configuration for ExtractorOperationHistory table
*/ */
@@ -324,9 +335,7 @@ export class ExtractorOperationHistoryDAO {
batchId: row.BatchId as string, batchId: row.BatchId as string,
userId: row.UserId as number, userId: row.UserId as number,
username: row.Username as string, username: row.Username as string,
operationTime: row.OperationTime operationTime: formatDateTime(row.OperationTime),
? new Date(row.OperationTime as string).toISOString()
: new Date().toISOString(),
status: row.Status as string, status: row.Status as string,
totalOrders: row.TotalOrders as number, totalOrders: row.TotalOrders as number,
totalRecords: (row.TotalRecords as number) || 0, totalRecords: (row.TotalRecords as number) || 0,
@@ -432,9 +441,7 @@ export class ExtractorOperationHistoryDAO {
batchId: row.BatchId as string, batchId: row.BatchId as string,
userId: row.UserId as number, userId: row.UserId as number,
username: row.Username as string, username: row.Username as string,
operationTime: row.OperationTime operationTime: formatDateTime(row.OperationTime),
? new Date(row.OperationTime as string).toISOString()
: new Date().toISOString(),
status: row.Status as string, status: row.Status as string,
totalOrders: row.TotalOrders as number, totalOrders: row.TotalOrders as number,
totalRecords: (row.TotalRecords as number) || 0, totalRecords: (row.TotalRecords as number) || 0,

View File

@@ -53,13 +53,20 @@ const statusIcons: Record<string, React.ReactNode> = {
const formatDateTime = (dateStr: string) => { const formatDateTime = (dateStr: string) => {
const date = new Date(dateStr) const date = new Date(dateStr)
return date.toLocaleString('zh-CN', {
year: 'numeric', // Check if the date is valid
month: '2-digit', if (isNaN(date.getTime())) {
day: '2-digit', return dateStr // Return original if invalid
hour: '2-digit', }
minute: '2-digit'
}) // Use UTC methods to display the time as stored in database (without timezone conversion)
const year = date.getUTCFullYear()
const month = String(date.getUTCMonth() + 1).padStart(2, '0')
const day = String(date.getUTCDate()).padStart(2, '0')
const hours = String(date.getUTCHours()).padStart(2, '0')
const minutes = String(date.getUTCMinutes()).padStart(2, '0')
return `${year}-${month}-${day} ${hours}:${minutes}`
} }
export const ExtractorOperationHistoryModal: React.FC<ExtractorOperationHistoryModalProps> = ({ export const ExtractorOperationHistoryModal: React.FC<ExtractorOperationHistoryModalProps> = ({