yuan
8 天以前 fc5715d0024827f16597697e40fd0755ba043170
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 => {