yuan
2 天以前 fc5715d0024827f16597697e40fd0755ba043170
feat: 统一日期格式化为“年月日”以提升一致性
已修改14个文件
101 ■■■■■ 文件已修改
src/utils/request.js 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicData/customerFile/index.vue 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/collaborativeApproval/notificationManagement/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/collaborativeApproval/rulesRegulationsManagement/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/equipmentManagement/repair/Modal/MaintainModal.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/equipmentManagement/spareParts/index.vue 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/equipmentManagement/upkeep/Form/MaintenanceModal.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/stockWarning/index.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/transportTaskManagement/index.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/monitor/logininfor/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/monitor/operlog/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/qualityManagement/afterSalesTraceability/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/safeProduction/accidentReportingRecord/index.vue 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/returnOrder/components/formDia.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/request.js
@@ -11,6 +11,29 @@
// 是否显示重新登录
export let isRelogin = { show: false }
/**
 * 全局日期展示口径:**页面上所有时间只显示年月日,不显示时分秒**。
 * 后端返回的 `datetime/timestamp` 是 "2026-05-23 10:30:00"(或带 T / 毫秒的 ISO 形式),
 * 这里在响应拦截器里递归把它统一截断成 "2026-05-23",
 * 覆盖所有直接用 `prop` 渲染、不走 `parseTime` 的表格列 / 详情弹框 / 图表。
 * 只匹配严格的日期时间串,不会误伤普通文本。
 */
const DATE_TIME_RE = /^(\d{4}-\d{2}-\d{2})[ T]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?$/
function trimDateTimeDeep(value, depth = 0) {
  if (value === null || value === undefined) return value
  if (typeof value === 'string') {
    const m = DATE_TIME_RE.exec(value)
    return m ? m[1] : value
  }
  if (typeof value !== 'object' || depth > 12) return value
  if (Array.isArray(value)) {
    for (let i = 0; i < value.length; i++) value[i] = trimDateTimeDeep(value[i], depth + 1)
    return value
  }
  for (const key of Object.keys(value)) value[key] = trimDateTimeDeep(value[key], depth + 1)
  return value
}
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 创建axios实例
const service = axios.create({
@@ -104,7 +127,8 @@
      ElNotification.error({ title: msg })
      return Promise.reject('error')
    } else {
      return  Promise.resolve(res.data)
      // 全局:把响应里所有 datetime 截断为「年月日」再交给页面
      return Promise.resolve(trimDateTimeDeep(res.data))
    }
  },
  error => {
src/views/basicData/customerFile/index.vue
@@ -269,7 +269,7 @@
          <el-date-picker v-model="reminderForm.reminderTime"
                          type="datetime"
                          value-format="YYYY-MM-DD HH:mm:ss"
                          format="YYYY-MM-DD HH:mm:ss"
                          format="YYYY-MM-DD"
                          placeholder="请选择提醒时间"
                          style="width: 100%" />
        </el-form-item>
@@ -337,7 +337,7 @@
              <el-date-picker v-model="negotiationForm.followUpTime"
                              type="datetime"
                              value-format="YYYY-MM-DD HH:mm:ss"
                              format="YYYY-MM-DD HH:mm:ss"
                              format="YYYY-MM-DD"
                              placeholder="请选择"
                              style="width: 100%" />
            </el-form-item>
src/views/collaborativeApproval/notificationManagement/index.vue
@@ -155,7 +155,7 @@
                v-model="meetingForm.startTime"
                type="datetime"
                value-format="YYYY-MM-DD HH:mm:ss"
                format="YYYY-MM-DD HH:mm:ss"
                format="YYYY-MM-DD"
                placeholder="请选择开始时间"
                style="width: 100%"
              />
src/views/collaborativeApproval/rulesRegulationsManagement/index.vue
@@ -103,7 +103,7 @@
                      prop="effectiveTime">
          <el-date-picker v-model="regulationForm.effectiveTime"
                          type="datetime"
                          format="YYYY-MM-DD HH:mm:ss"
                          format="YYYY-MM-DD"
                          value-format="YYYY-MM-DD HH:mm:ss"
                          placeholder="选择生效时间"
                          style="width: 100%" />
src/views/equipmentManagement/repair/Modal/MaintainModal.vue
@@ -25,7 +25,7 @@
        <el-date-picker
          v-model="form.maintenanceTime"
          placeholder="请选择维修日期"
          format="YYYY-MM-DD HH:mm:ss"
          format="YYYY-MM-DD"
          value-format="YYYY-MM-DD HH:mm:ss"
          type="datetime"
          clearable
src/views/equipmentManagement/spareParts/index.vue
@@ -257,8 +257,27 @@
    }
    const res = await getSparePartsList(params);
    if (res.code === 200) {
      renderTableData.value = res.data.records || [];
      categories.value = res.data.records || [];
      const records = res.data.records || [];
      // 「设备名称」列取的是 deviceNameStr:后端已按 device_ids 反查设备名返回;
      // 若后端返回为空(老版本后端),这里用已加载的设备选项兜底计算,保证列不空白。
      for (const row of records) {
        if (!row.deviceNameStr && row.deviceIds) {
          const names = String(row.deviceIds).split(',')
            .map(id => id.trim()).filter(Boolean)
            .map(id => {
              const d = (deviceOptions.value || []).find(x => String(x.id) === String(id));
              return d ? (d.deviceName || d.name || '') : '';
            }).filter(Boolean);
          row.deviceNameStr = names.join(',');
        }
        // 备件分类行(parentId 为空)本身不绑定设备,给个占位符,
        // 否则这一列会出现空白单元格,看起来像"设备名称没显示"。
        if (!row.deviceNameStr && (row.parentId === null || row.parentId === undefined || row.parentId === '')) {
          row.deviceNameStr = '—';
        }
      }
      renderTableData.value = records;
      categories.value = records;
      pagination.total = res.data.total || 0;
    }
  } catch (error) {
@@ -281,14 +300,16 @@
  fetchListData();
}
// 分页大小改变
const handleSizeChange = (size) => {
  pagination.size = size;
  pagination.current = 1;
// 分页变化(PIMTable/Pagination 回传的是 { page, limit } 对象)
// 2026-10-13 修复:原来写成 handleSizeChange(size) 把整个对象赋给 pagination.size,
// 导致翻页请求带上 size=[object Object],第 2/3 页永远打不开(备件共 21 条却只能看到 10 条)。
const handleSizeChange = ({ page, limit } = {}) => {
  if (page) pagination.current = page;
  if (limit) pagination.size = limit;
  fetchListData();
}
// 当前页改变
// 当前页改变(保留给需要单独绑定的场景)
const handleCurrentChange = (current) => {
  pagination.current = current;
  fetchListData();
@@ -408,7 +429,9 @@
};
// 组件挂载时获取列表数据
onMounted(() => {
onMounted(async () => {
  // 先加载设备选项,fetchListData 里用它兜底计算 deviceNameStr
  await loadDeviceName();
  fetchListData();
});
</script>
src/views/equipmentManagement/upkeep/Form/MaintenanceModal.vue
@@ -18,7 +18,7 @@
        <el-date-picker
          v-model="form.maintenanceActuallyTime"
          placeholder="请选择实际保养日期"
          format="YYYY-MM-DD HH:mm:ss"
          format="YYYY-MM-DD"
          value-format="YYYY-MM-DD HH:mm:ss"
          type="datetime"
          clearable
src/views/inventoryManagement/stockWarning/index.vue
@@ -262,7 +262,7 @@
                type="datetime"
                placeholder="请选择预警时间"
                style="width: 100%"
                value-format="YYYY-MM-DD HH:mm:ss"
                format="YYYY-MM-DD"  value-format="YYYY-MM-DD HH:mm:ss"
              />
            </el-form-item>
          </el-col>
@@ -273,7 +273,7 @@
                type="datetime"
                placeholder="请选择预计充装时间"
                style="width: 100%"
                value-format="YYYY-MM-DD HH:mm:ss"
                format="YYYY-MM-DD"  value-format="YYYY-MM-DD HH:mm:ss"
              />
            </el-form-item>
          </el-col>
@@ -287,7 +287,7 @@
                type="datetime"
                placeholder="请选择预计缺气时间"
                style="width: 100%"
                value-format="YYYY-MM-DD HH:mm:ss"
                format="YYYY-MM-DD"  value-format="YYYY-MM-DD HH:mm:ss"
              />
            </el-form-item>
          </el-col>
src/views/inventoryManagement/transportTaskManagement/index.vue
@@ -305,7 +305,7 @@
                v-model="form.loadTime"
                type="datetime"
                value-format="YYYY-MM-DD HH:mm:ss"
                format="YYYY-MM-DD HH:mm"
                format="YYYY-MM-DD"
                placeholder="请选择装货时间"
                style="width: 100%"
              />
@@ -317,7 +317,7 @@
                v-model="form.deliveryTime"
                type="datetime"
                value-format="YYYY-MM-DD HH:mm:ss"
                format="YYYY-MM-DD HH:mm"
                format="YYYY-MM-DD"
                placeholder="请选择送货时间"
                style="width: 100%"
              />
@@ -329,7 +329,7 @@
                v-model="form.signTime"
                type="datetime"
                value-format="YYYY-MM-DD HH:mm:ss"
                format="YYYY-MM-DD HH:mm"
                format="YYYY-MM-DD"
                placeholder="请选择签收时间"
                style="width: 100%"
              />
src/views/monitor/logininfor/index.vue
@@ -37,7 +37,7 @@
         <el-form-item label="登录时间" style="width: 308px">
            <el-date-picker
               v-model="dateRange"
               value-format="YYYY-MM-DD HH:mm:ss"
               format="YYYY-MM-DD"  value-format="YYYY-MM-DD HH:mm:ss"
               type="daterange"
               range-separator="-"
               start-placeholder="开始日期"
src/views/monitor/operlog/index.vue
@@ -61,7 +61,7 @@
         <el-form-item label="操作时间" style="width: 308px">
            <el-date-picker
               v-model="dateRange"
               value-format="YYYY-MM-DD HH:mm:ss"
               format="YYYY-MM-DD"  value-format="YYYY-MM-DD HH:mm:ss"
               type="daterange"
               range-separator="-"
               start-placeholder="开始日期"
src/views/qualityManagement/afterSalesTraceability/index.vue
@@ -223,7 +223,7 @@
                v-model="form.feedbackTime"
                type="datetime"
                value-format="YYYY-MM-DD HH:mm:ss"
                format="YYYY-MM-DD HH:mm"
                format="YYYY-MM-DD"
                placeholder="请选择反馈时间"
                style="width: 100%"
              />
src/views/safeProduction/accidentReportingRecord/index.vue
@@ -77,7 +77,7 @@
              <el-date-picker style="width: 100%"
                              v-model="form.happenTime"
                              value-format="YYYY-MM-DD HH:mm:ss"
                              format="YYYY-MM-DD HH:mm:ss"
                              format="YYYY-MM-DD"
                              type="datetime"
                              placeholder="请选择"
                              clearable />
@@ -157,7 +157,7 @@
              <el-date-picker style="width: 100%"
                              v-model="form.createTime"
                              value-format="YYYY-MM-DD HH:mm:ss"
                              format="YYYY-MM-DD HH:mm:ss"
                              format="YYYY-MM-DD"
                              type="datetime"
                              disabled
                              placeholder="请选择"
src/views/salesManagement/returnOrder/components/formDia.vue
@@ -52,7 +52,7 @@
            </el-col>
            <el-col :span="4">
              <el-form-item label="制单时间:" prop="makeTime">
                <el-date-picker v-model="form.makeTime" type="datetime" style="width:100%" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" />
                <el-date-picker v-model="form.makeTime" type="datetime" style="width:100%" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD" />
              </el-form-item>
            </el-col>
            <el-col :span="4">