| | |
| | | // 是否显示重新登录
|
| | | 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({
|
| | |
| | | ElNotification.error({ title: msg })
|
| | | return Promise.reject('error')
|
| | | } else {
|
| | | return Promise.resolve(res.data)
|
| | | // 全局:把响应里所有 datetime 截断为「年月日」再交给页面
|
| | | return Promise.resolve(trimDateTimeDeep(res.data))
|
| | | }
|
| | | },
|
| | | error => {
|