Просмотр исходного кода

fix(admin/活动管理): 开始/结束时间按 Asia/Shanghai 本地时间展示

Xiaogang Liao 4 дней назад
Родитель
Сommit
6add60017b
1 измененных файлов с 17 добавлено и 0 удалено
  1. 17 0
      cfc-web/src/views/admin/Activities.vue

+ 17 - 0
cfc-web/src/views/admin/Activities.vue

@@ -111,11 +111,17 @@
           </template>
         </el-table-column>
         <el-table-column prop="startTime" label="开始时间" width="170">
+          <template slot-scope="{ row }">
+            {{ fmtLocalTime(row.startTime) }}
+          </template>
           <template slot="header">
             <span class="sort-header" @click.stop="onSortClick('startTime', $event)">开始时间<span v-if="sortIndex('startTime') !== null" class="sort-index" :class="sortClass('startTime') === 'sort-asc' ? 'sort-asc-badge' : 'sort-desc-badge'">{{ sortIndex('startTime') }}</span>{{ sortIcon('startTime') }}</span>
           </template>
         </el-table-column>
         <el-table-column prop="endTime" label="结束时间" width="170">
+          <template slot-scope="{ row }">
+            {{ fmtLocalTime(row.endTime) }}
+          </template>
           <template slot="header">
             <span class="sort-header" @click.stop="onSortClick('endTime', $event)">结束时间<span v-if="sortIndex('endTime') !== null" class="sort-index" :class="sortClass('endTime') === 'sort-asc' ? 'sort-asc-badge' : 'sort-desc-badge'">{{ sortIndex('endTime') }}</span>{{ sortIcon('endTime') }}</span>
           </template>
@@ -256,6 +262,17 @@ export default {
     dimensionLabel(code) {
       return DIMENSION_MAP[code] || code || '—'
     },
+    // 后端把 java.util.Date 序列化为 UTC 偏移串(如 2026-10-25T01:00:00.000+00:00),
+    // 这里统一转 Asia/Shanghai 本地墙钟时间展示,避免比实际时间少 8 小时
+    fmtLocalTime(val) {
+      if (val === null || val === undefined || val === '') return '—'
+      const d = new Date(val)
+      if (isNaN(d.getTime())) return String(val)
+      const bj = new Date(d.getTime() + d.getTimezoneOffset() * 60000 + 8 * 3600000)
+      const pad = n => (n < 10 ? '0' + n : '' + n)
+      return bj.getFullYear() + '-' + pad(bj.getMonth() + 1) + '-' + pad(bj.getDate()) + ' ' +
+        pad(bj.getHours()) + ':' + pad(bj.getMinutes()) + ':' + pad(bj.getSeconds())
+    },
     async loadActivities() {
       this.loading = true
       try {