From 2ef7624772c988856de24f72788764573c5b2384 Mon Sep 17 00:00:00 2001 From: taiyi Date: Fri, 5 Jun 2026 20:41:19 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2=E8=BE=93=E5=85=A5?= =?UTF-8?q?=E6=8E=A7=E4=BB=B6=E3=80=81=E6=92=A4=E9=94=80=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=92=8C=E9=A1=B5=E9=9D=A2=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复数字/JSON/switch字段的输入类型,重置修改改为真正的撤销, 移除纯展示panel精简页面,保存改为并行提升效率。 Co-Authored-By: Claude Opus 4.7 (1M context) --- frontend/web-admin/src/views/ConfigPage.vue | 64 +++++++++------------ 1 file changed, 27 insertions(+), 37 deletions(-) diff --git a/frontend/web-admin/src/views/ConfigPage.vue b/frontend/web-admin/src/views/ConfigPage.vue index fa9d35b..c71dc44 100644 --- a/frontend/web-admin/src/views/ConfigPage.vue +++ b/frontend/web-admin/src/views/ConfigPage.vue @@ -33,7 +33,8 @@
-

规则参数

已联调 `/api/configs/{config_key}` 读取与保存
+

规则参数

+

配置联动提醒中心与报表模块。分组:提醒规则(物流超时/欠款/沉默客户)、权限规则(脱敏/视图隔离)、利润规则(阈值/提成)。

@@ -42,7 +43,15 @@

{{ item.description }}

- + + +
+ +
+ + +
+
@@ -50,21 +59,11 @@
- +
-
-

配置分组

按业务板块查看
-
-
-

{{ group.title }}

-

{{ group.description }}

-
-
-
-

提醒检查动作

直接触发后端规则检查
@@ -75,15 +74,6 @@
-
-

前后端联动说明

配置中心连接提醒、报表与权限规则
-
-

提醒联动

直接触发后端提醒检查,配合提醒中心查看结果。

-

报表联动

报表分类映射将影响核对口径和导出结果。

-

权限联动

脱敏与可见范围规则可在权限中心继续收口。

-
-
-
{{ item.name }} @@ -120,18 +110,13 @@ const configKeys = [ /** 配置项列表数据(含值、启用状态、修改标记) */ const configs = ref([]); +/** 加载时的原始配置快照,用于撤销修改 */ +const originalConfigs = ref([]); /** 保存操作进行中标识 */ const saving = ref(false); /** 最近一次保存时间 */ const lastSavedAt = ref(''); -/** 配置分组定义(提醒规则、权限规则、利润规则) */ -const groups = [ - { title: '提醒规则', description: '物流超时、欠款提醒、长期未下单。' }, - { title: '权限规则', description: '字段可见性、手机号脱敏、角色视图隔离。' }, - { title: '利润规则', description: '利润阈值、提成核对、电商订单剔除。' }, -]; - /** 自动校验项列表(已对齐/待收口) */ const validationItems = ref([ { name: '字段映射检查表', detail: '客户、订单、司机、报表字段已完成主口径整理。', state: 'done', stateText: '已对齐' }, @@ -165,22 +150,27 @@ async function reloadConfig() { }); })); configs.value = items; + originalConfigs.value = JSON.parse(JSON.stringify(items)); } async function saveAll() { saving.value = true; try { - for (const item of configs.value) { - if (!item.dirty) continue; - await updateConfigItem(item.key, { + const dirtyItems = configs.value.filter(item => item.dirty); + if (!dirtyItems.length) { + toast.success('没有需要保存的修改。'); + return; + } + await Promise.all(dirtyItems.map(item => + updateConfigItem(item.key, { config_value: item.value, config_name: item.name, remark: item.remark, status: item.enabled ? 1 : 0, - }); - item.dirty = false; - } + }).then(() => { item.dirty = false; }) + )); lastSavedAt.value = new Date().toLocaleString(); + originalConfigs.value = JSON.parse(JSON.stringify(configs.value)); toast.success('配置已保存。'); } catch (error) { toast.error(error?.message || '保存配置失败'); @@ -190,7 +180,7 @@ async function saveAll() { } function resetDirty() { - configs.value.forEach((item) => { item.dirty = false; }); + configs.value = JSON.parse(JSON.stringify(originalConfigs.value)); } async function runChecks(type) { @@ -209,5 +199,5 @@ onMounted(reloadConfig);