Browse Source

fix: 补充 Order.status/Order.pay 字典项颜色,回退前端硬编码

问题根因:前端查询 dict code 为 Order.status/Order.pay,
但 init.sql 中注册的 code 为 WashOrder.orderStatus/WashOrder.payStatus,
code 不匹配导致 getDictColor 始终返回空,状态标签全为默认色。

修复:init.sql 增加 Order.status/Order.pay 条目(保留旧 code 兼容),
新增 v16 迁移脚本供存量部署执行。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
skyline 3 days ago
parent
commit
8bfc7ba414

+ 1 - 32
admin-h5/src/utils/dict.js

@@ -6,24 +6,6 @@ const DICT_KEY = 'dicts'
 /**
  * 字典工具模块 — 对标 PC 端 admin-web-new/src/utils/dict.ts
  */
-const COLOR_PALETTE = [
-  '#1890FF', '#52C41A', '#FAAD14', '#F5222D', '#722ED1',
-  '#13C2C2', '#EB2F96', '#FA8C16', '#2F54EB', '#009688',
-]
-
-const BUILTIN_COLORS = {
-  'Order.status': {
-    0: '#1890FF',   // 开机 — 蓝色
-    1: '#52C41A',   // 成功 — 绿色
-    2: '#F5222D',   // 失败 — 红色
-    3: '#999999',   // 取消 — 灰色
-  },
-  'Order.pay': {
-    0: '#FAAD14',   // 未支付 — 橙色
-    1: '#52C41A',   // 已支付 — 绿色
-  },
-}
-
 const dictUtil = {
   /**
    * 加载全部字典数据,按 code 分组后存入 storage
@@ -100,7 +82,6 @@ const dictUtil = {
 
   /**
    * 根据字典编码和值获取颜色
-   * 优先级:字典配置 → 内置语义色板 → 通用色板取模
    * @param {string} code - 字典编码
    * @param {*} value - 字典值
    * @returns {string} 颜色值
@@ -111,19 +92,7 @@ const dictUtil = {
     }
     const list = dictUtil.getDictList(code)
     const item = list.find(k => k.value == value)
-    if (item?.color) {
-      return item.color
-    }
-    // 兜底:内置语义色板
-    if (BUILTIN_COLORS[code] && BUILTIN_COLORS[code][value]) {
-      return BUILTIN_COLORS[code][value]
-    }
-    // 兜底:通用色板取模
-    const v = Number(value)
-    if (!isNaN(v)) {
-      return COLOR_PALETTE[Math.abs(v) % COLOR_PALETTE.length]
-    }
-    return ''
+    return item?.color || ''
   },
 
   /**

+ 11 - 2
car-wash-entity/src/main/resources/sql/init.sql

@@ -502,15 +502,24 @@ INSERT INTO `t_data_dict` (`code`, `name`, `value`, `weight`, `remark`, `color`)
 ('SplitRecord.status', '处理中', '0', 1, '分账状态', '#FAAD14'),
 ('SplitRecord.status', '成功', '1', 2, '分账状态', '#52C41A'),
 ('SplitRecord.status', '失败', '2', 3, '分账状态', '#F5222D'),
--- 订单状态 (WashOrder.orderStatus)
+-- 订单状态 (WashOrder.orderStatus, 保留兼容)
 ('WashOrder.orderStatus', '未知', '-1', 1, '订单状态', '#999999'),
 ('WashOrder.orderStatus', '开机', '0', 2, '订单状态', '#1890FF'),
 ('WashOrder.orderStatus', '成功', '1', 3, '订单状态', '#52C41A'),
 ('WashOrder.orderStatus', '失败', '2', 4, '订单状态', '#F5222D'),
 ('WashOrder.orderStatus', '取消', '3', 5, '订单状态', '#999999'),
--- 支付状态 (WashOrder.payStatus)
+-- 订单状态 (Order.status, 前端实际使用)
+('Order.status', '未知', '-1', 1, '订单状态', '#999999'),
+('Order.status', '开机', '0', 2, '订单状态', '#1890FF'),
+('Order.status', '成功', '1', 3, '订单状态', '#52C41A'),
+('Order.status', '失败', '2', 4, '订单状态', '#F5222D'),
+('Order.status', '取消', '3', 5, '订单状态', '#999999'),
+-- 支付状态 (WashOrder.payStatus, 保留兼容)
 ('WashOrder.payStatus', '未支付', '0', 1, '支付状态', '#FAAD14'),
 ('WashOrder.payStatus', '已支付', '1', 2, '支付状态', '#52C41A'),
+-- 支付状态 (Order.pay, 前端实际使用)
+('Order.pay', '未支付', '0', 1, '支付状态', '#FAAD14'),
+('Order.pay', '已支付', '1', 2, '支付状态', '#52C41A'),
 -- 关机方式 (WashOrder.closeType)
 ('WashOrder.closeType', '维护按钮', 'button', 1, '关机方式', ''),
 ('WashOrder.closeType', '网络命令', 'network', 2, '关机方式', ''),

+ 15 - 0
car-wash-entity/src/main/resources/sql/v16_order_dict_color.sql

@@ -0,0 +1,15 @@
+-- ====================================================
+-- 补充订单/支付状态字典项 (Order.status / Order.pay)
+-- 前端使用此 code 读取颜色,原 WashOrder.* code 保留兼容
+-- 发布日期:2026-06-20
+-- ====================================================
+
+INSERT IGNORE INTO `t_data_dict` (`code`, `name`, `value`, `sort`, `remark`, `color`) VALUES
+('Order.status', '未知', '-1', 1, '订单状态', '#999999'),
+('Order.status', '开机', '0',  2, '订单状态', '#1890FF'),
+('Order.status', '成功', '1',  3, '订单状态', '#52C41A'),
+('Order.status', '失败', '2',  4, '订单状态', '#F5222D'),
+('Order.status', '取消', '3',  5, '订单状态', '#999999'),
+
+('Order.pay', '未支付', '0', 1, '支付状态', '#FAAD14'),
+('Order.pay', '已支付', '1', 2, '支付状态', '#52C41A');