From 4d46ce6c53f8d2023a5948c128065cdba4643934 Mon Sep 17 00:00:00 2001 From: ZhangAo Date: Mon, 31 Aug 2026 17:29:13 +0800 Subject: [PATCH] 20260831172912 --- code/fms/.tmp-dnd-test.html | 57 -- code/fms/.tmp-server.js | 20 - code/fms/FMS新系统核心表结构设计.md | 4 +- code/fms/_debug_subtable_designer.png | Bin 62753 -> 0 bytes code/fms/_debug_subtable_final.png | Bin 62725 -> 0 bytes code/fms/_debug_subtable_fixed.png | Bin 62601 -> 0 bytes .../migrations/003_create_login_log.sql | 2 +- .../040_log_account_to_nvarchar.sql | 46 + .../migrations/041_add_s_i18n_module_id.sql | 75 ++ .../migrations/100_initialize_fms_new.sql | 4 +- .../exception/GlobalExceptionHandler.java | 10 +- .../fmsapi/exception/SaveObjectException.java | 12 + .../GlobalExceptionHandlerTests.java | 3 +- .../exception/GlobalExceptionHandler.class | Bin 4450 -> 5156 bytes .../exception/SaveObjectException.class | Bin 966 -> 1265 bytes .../2026-08-31T17-07-39_468.dumpstream | 5 + .../2026-08-31T17-07-58_994.dumpstream | 5 + ....exception.GlobalExceptionHandlerTests.xml | 52 +- ....exception.GlobalExceptionHandlerTests.txt | 2 +- .../GlobalExceptionHandlerTests.class | Bin 3109 -> 3157 bytes .../src/components/UnsavedChangesModal.vue | 77 ++ .../src/components/fms-table/FmsTable.vue | 4 +- .../{components => }/ModuleAutoCodePanel.vue | 0 .../{components => }/ModuleBasicPanel.vue | 100 +- .../module-management/ModuleEditPanel.vue | 87 ++ .../{components => }/ModuleFieldsPanel.vue | 101 +- .../{components => }/ModuleI18nPanel.vue | 27 +- .../ModuleListConfigPanel.vue | 46 + .../{components => }/ModulePowersPanel.vue | 71 +- .../ModuleQueryConfigPanel.vue | 2 +- .../views/system/module-management/common.js | 6 - .../components/I18nKeyCell.js | 40 - .../components/I18nQuickSetModal.vue | 135 --- .../components/ModuleListConfigPanel.vue | 574 ----------- .../FormDesignEditor.vue} | 59 +- .../TableDesignEditor.vue} | 256 +++-- .../common}/EditDataView.vue | 0 .../common}/FieldLibrary.vue | 2 +- .../common}/useStructureEditing.js | 361 ++++++- .../form}/FormInspector.vue | 61 +- .../form}/useFormGrid.js | 26 +- .../table/StructureTree.vue} | 6 +- .../table}/StructureTreeNode.vue | 0 .../table}/TableInspector.vue | 31 +- .../table}/TablePreview.vue | 182 +++- .../fieldDefaults.js} | 14 +- .../components/i18n-key-cell.scss | 35 - .../components/table-edit/useColumnResize.js | 72 -- .../table-edit/useTablePreviewDrag.js | 124 --- .../composables/useBandLayout.js | 91 -- .../composables/useFieldLookup.js | 59 -- .../composables/useGroupTree.js | 118 --- .../composables/useModuleConfig.js | 389 -------- .../composables/useModuleSave.js | 170 ---- .../composables/useModuleTree.js | 351 ------- .../module-management/editPanelShared.js | 77 -- .../module-management/fieldParticipation.js | 80 -- .../views/system/module-management/index.vue | 929 +++++++++++++++--- code/fms/fms-vue/src/views/tmp-dnd-panel.vue | 2 +- .../tests/unit/field-participation.spec.js | 2 +- .../results.json | 1 - 61 files changed, 2086 insertions(+), 2979 deletions(-) delete mode 100644 code/fms/.tmp-dnd-test.html delete mode 100644 code/fms/.tmp-server.js delete mode 100644 code/fms/_debug_subtable_designer.png delete mode 100644 code/fms/_debug_subtable_final.png delete mode 100644 code/fms/_debug_subtable_fixed.png create mode 100644 code/fms/fms-api/config/migrations/040_log_account_to_nvarchar.sql create mode 100644 code/fms/fms-api/config/migrations/041_add_s_i18n_module_id.sql create mode 100644 code/fms/fms-api/target/surefire-reports/2026-08-31T17-07-39_468.dumpstream create mode 100644 code/fms/fms-api/target/surefire-reports/2026-08-31T17-07-58_994.dumpstream create mode 100644 code/fms/fms-vue/src/components/UnsavedChangesModal.vue rename code/fms/fms-vue/src/views/system/module-management/{components => }/ModuleAutoCodePanel.vue (100%) rename code/fms/fms-vue/src/views/system/module-management/{components => }/ModuleBasicPanel.vue (76%) create mode 100644 code/fms/fms-vue/src/views/system/module-management/ModuleEditPanel.vue rename code/fms/fms-vue/src/views/system/module-management/{components => }/ModuleFieldsPanel.vue (65%) rename code/fms/fms-vue/src/views/system/module-management/{components => }/ModuleI18nPanel.vue (92%) create mode 100644 code/fms/fms-vue/src/views/system/module-management/ModuleListConfigPanel.vue rename code/fms/fms-vue/src/views/system/module-management/{components => }/ModulePowersPanel.vue (73%) rename code/fms/fms-vue/src/views/system/module-management/{components => }/ModuleQueryConfigPanel.vue (99%) delete mode 100644 code/fms/fms-vue/src/views/system/module-management/common.js delete mode 100644 code/fms/fms-vue/src/views/system/module-management/components/I18nKeyCell.js delete mode 100644 code/fms/fms-vue/src/views/system/module-management/components/I18nQuickSetModal.vue delete mode 100644 code/fms/fms-vue/src/views/system/module-management/components/ModuleListConfigPanel.vue rename code/fms/fms-vue/src/views/system/module-management/components/{form-edit/FormEditPanel.vue => design-editor/FormDesignEditor.vue} (98%) rename code/fms/fms-vue/src/views/system/module-management/components/{table-edit/TableEditPanel.vue => design-editor/TableDesignEditor.vue} (64%) rename code/fms/fms-vue/src/views/system/module-management/components/{edit-panels => design-editor/common}/EditDataView.vue (100%) rename code/fms/fms-vue/src/views/system/module-management/components/{edit-panels => design-editor/common}/FieldLibrary.vue (99%) rename code/fms/fms-vue/src/views/system/module-management/{composables => components/design-editor/common}/useStructureEditing.js (61%) rename code/fms/fms-vue/src/views/system/module-management/components/{form-edit => design-editor/form}/FormInspector.vue (85%) rename code/fms/fms-vue/src/views/system/module-management/components/{form-edit => design-editor/form}/useFormGrid.js (84%) rename code/fms/fms-vue/src/views/system/module-management/components/{structure-tree/ModuleStructureTree.vue => design-editor/table/StructureTree.vue} (99%) rename code/fms/fms-vue/src/views/system/module-management/components/{structure-tree => design-editor/table}/StructureTreeNode.vue (100%) rename code/fms/fms-vue/src/views/system/module-management/components/{table-edit => design-editor/table}/TableInspector.vue (90%) rename code/fms/fms-vue/src/views/system/module-management/components/{table-edit => design-editor/table}/TablePreview.vue (77%) rename code/fms/fms-vue/src/views/system/module-management/{fieldAreaDefaults.js => components/fieldDefaults.js} (81%) delete mode 100644 code/fms/fms-vue/src/views/system/module-management/components/i18n-key-cell.scss delete mode 100644 code/fms/fms-vue/src/views/system/module-management/components/table-edit/useColumnResize.js delete mode 100644 code/fms/fms-vue/src/views/system/module-management/components/table-edit/useTablePreviewDrag.js delete mode 100644 code/fms/fms-vue/src/views/system/module-management/composables/useBandLayout.js delete mode 100644 code/fms/fms-vue/src/views/system/module-management/composables/useFieldLookup.js delete mode 100644 code/fms/fms-vue/src/views/system/module-management/composables/useGroupTree.js delete mode 100644 code/fms/fms-vue/src/views/system/module-management/composables/useModuleConfig.js delete mode 100644 code/fms/fms-vue/src/views/system/module-management/composables/useModuleSave.js delete mode 100644 code/fms/fms-vue/src/views/system/module-management/composables/useModuleTree.js delete mode 100644 code/fms/fms-vue/src/views/system/module-management/editPanelShared.js delete mode 100644 code/fms/fms-vue/src/views/system/module-management/fieldParticipation.js delete mode 100644 code/fms/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json diff --git a/code/fms/.tmp-dnd-test.html b/code/fms/.tmp-dnd-test.html deleted file mode 100644 index d43c792f..00000000 --- a/code/fms/.tmp-dnd-test.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - -DnD behavior probe - - - -
source (field 42)
-
group target
-
group target 2
-

-
-
-
diff --git a/code/fms/.tmp-server.js b/code/fms/.tmp-server.js
deleted file mode 100644
index 0e749c24..00000000
--- a/code/fms/.tmp-server.js
+++ /dev/null
@@ -1,20 +0,0 @@
-const http = require('http')
-const fs = require('fs')
-const path = require('path')
-const root = 'd:/workspace/code/fms'
-http
-  .createServer((req, res) => {
-    const urlPath = req.url === '/' ? '/.tmp-dnd-test.html' : decodeURIComponent(req.url.split('?')[0])
-    const fp = path.join(root, urlPath)
-    fs.readFile(fp, (err, data) => {
-      if (err) {
-        res.writeHead(404)
-        res.end('nf')
-        return
-      }
-      res.writeHead(200, { 'Content-Type': fp.endsWith('.html') ? 'text/html; charset=utf-8' : 'text/plain' })
-      res.end(data)
-    })
-  })
-  .listen(8090, '127.0.0.1')
-console.log('server on 8090')
diff --git a/code/fms/FMS新系统核心表结构设计.md b/code/fms/FMS新系统核心表结构设计.md
index 6212b1f1..3461277f 100644
--- a/code/fms/FMS新系统核心表结构设计.md
+++ b/code/fms/FMS新系统核心表结构设计.md
@@ -582,7 +582,7 @@ create index ix_s_i18n_locale on s_i18n (b_locale, b_canuse);
 create table s_log_technical (
     b_id bigint not null,                -- 雪花主键(应用层生成,全局唯一)
     b_user_id bigint null,                              -- 操作用户(逻辑外键)
-    b_account varchar(50) null,                         -- 登录名快照
+    b_account nvarchar(50) null,                        -- 登录名快照
     b_sourcetype varchar(20) null,                      -- 来源类型:web/api
     b_loglevel varchar(16) not null,                    -- 级别:INFO/WARN/ERROR
     b_logcategory varchar(64) null,                     -- 分类:sql/exception/performance
@@ -613,7 +613,7 @@ create index ix_s_log_technical_level on s_log_technical (b_loglevel, b_occurdat
 create table s_log_login (
     b_id bigint not null,                -- 雪花主键(应用层生成,全局唯一)
     b_user_id bigint null,                              -- 用户(逻辑外键)
-    b_account varchar(50) null,                         -- 登录名
+    b_account nvarchar(50) null,                        -- 登录名
     b_login_type varchar(20) not null,                  -- 登录类型:password/token/oidc/ldap
     b_login_result int not null default 0,              -- 登录结果:0失败/1成功
     b_fail_reason nvarchar(200) null,                   -- 失败原因
diff --git a/code/fms/_debug_subtable_designer.png b/code/fms/_debug_subtable_designer.png
deleted file mode 100644
index 2a41078e007c650709d47c756c70a05dcf7570ec..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 62753
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�`XZTURs3#;V2oVx%tarku
zx(y1Q_PhEZ%EY+~iDCQKRg}JkL(Ns{&2Sp!ix6fYWQw;>NNBFKa1`Et_>oaX(g_Nw
zlT#GFJ=-$F9Z#H-o-*tavS45mi54Z)pa%$#p&pRBHCK#lj!Uf0mjlI5KeF⁡8Es
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
A$N&HU

diff --git a/code/fms/_debug_subtable_final.png b/code/fms/_debug_subtable_final.png
deleted file mode 100644
index 8c7dc8a6b3949cee87fce8cae3a4464e1b7ec6b6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 62725
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�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

diff --git a/code/fms/fms-api/config/migrations/003_create_login_log.sql b/code/fms/fms-api/config/migrations/003_create_login_log.sql
index 00b8d65a..ab05c106 100644
--- a/code/fms/fms-api/config/migrations/003_create_login_log.sql
+++ b/code/fms/fms-api/config/migrations/003_create_login_log.sql
@@ -19,7 +19,7 @@ BEGIN TRANSACTION;
         CREATE TABLE dbo.s_log_login (
             b_id              bigint        NOT NULL,
             b_user_id         bigint        NULL,
-            b_account         varchar(50)   NULL,
+            b_account         nvarchar(50)  NULL,
             b_login_type      varchar(20)   NOT NULL, -- 登录类型:password/token/oidc/ldap
             b_login_result    int           NOT NULL CONSTRAINT DF_s_log_login_result    DEFAULT (0),
             b_fail_reason     nvarchar(200) NULL,
diff --git a/code/fms/fms-api/config/migrations/040_log_account_to_nvarchar.sql b/code/fms/fms-api/config/migrations/040_log_account_to_nvarchar.sql
new file mode 100644
index 00000000..351f9d02
--- /dev/null
+++ b/code/fms/fms-api/config/migrations/040_log_account_to_nvarchar.sql
@@ -0,0 +1,46 @@
+/*
+  日志表账号列改为 nvarchar:s_log_login.b_account / s_log_technical.b_account 原为 varchar(50),
+  中文账号写入会因代码页转换变为 '?'(b_user.b_account 本身是 nvarchar,账号支持中文,见
+  100_initialize_fms_new.sql)。改为 nvarchar(50) 与用户表对齐。
+
+  可重复执行:仅在列存在且当前类型为 varchar 时才 ALTER。
+  s_log_login.b_account 上有索引 IX_s_log_login_account,SQL Server 修改列类型前需先删除、改完重建。
+*/
+SET NOCOUNT ON;
+SET XACT_ABORT ON;
+
+BEGIN TRANSACTION;
+
+    IF OBJECT_ID(N'dbo.s_log_login', N'U') IS NOT NULL
+       AND EXISTS (
+           SELECT 1
+           FROM sys.columns c
+           JOIN sys.types t ON t.user_type_id = c.user_type_id
+           WHERE c.object_id = OBJECT_ID(N'dbo.s_log_login')
+             AND c.name = N'b_account'
+             AND t.name = N'varchar'
+       )
+    BEGIN
+        IF OBJECT_ID(N'dbo.IX_s_log_login_account', N'INDEX') IS NOT NULL
+            DROP INDEX IX_s_log_login_account ON dbo.s_log_login;
+
+        ALTER TABLE dbo.s_log_login ALTER COLUMN b_account nvarchar(50) NULL;
+
+        IF OBJECT_ID(N'dbo.IX_s_log_login_account', N'INDEX') IS NULL
+            CREATE INDEX IX_s_log_login_account ON dbo.s_log_login (b_account, b_occurdatetime DESC);
+    END
+
+    IF OBJECT_ID(N'dbo.s_log_technical', N'U') IS NOT NULL
+       AND EXISTS (
+           SELECT 1
+           FROM sys.columns c
+           JOIN sys.types t ON t.user_type_id = c.user_type_id
+           WHERE c.object_id = OBJECT_ID(N'dbo.s_log_technical')
+             AND c.name = N'b_account'
+             AND t.name = N'varchar'
+       )
+    BEGIN
+        ALTER TABLE dbo.s_log_technical ALTER COLUMN b_account nvarchar(50) NULL;
+    END
+
+COMMIT TRANSACTION;
diff --git a/code/fms/fms-api/config/migrations/041_add_s_i18n_module_id.sql b/code/fms/fms-api/config/migrations/041_add_s_i18n_module_id.sql
new file mode 100644
index 00000000..7d7dd2ba
--- /dev/null
+++ b/code/fms/fms-api/config/migrations/041_add_s_i18n_module_id.sql
@@ -0,0 +1,75 @@
+/*
+  为 dbo.s_i18n 增加 b_module_id 列,使多语言数据可按模块级联删除/查询,
+  解决「删除模块后 s_i18n 残留孤儿数据」的问题(前端按 b_key 前缀匹配清理易漏)。
+
+  与 006_add_i18n_module_id.sql 的区别:006 作用于旧表 dbo.b_i18n;
+  本脚本作用于当前前端实际使用的 dbo.s_i18n。
+
+  本脚本可重复执行:
+  - 列不存在时才添加,并建索引;
+  - 对存量数据做一次基于键命名约定的回填(module./menu./field./power./group. 前缀,
+    取第二段作为模块编码关联 s_module.b_code),已回填或无法匹配的行不受影响。
+  - 通用文案键(common.* 等)不关联模块,b_module_id 保持 NULL。
+*/
+SET NOCOUNT ON;
+
+-- 第 1 批:DDL(列与索引)
+BEGIN TRANSACTION;
+
+    IF NOT EXISTS (
+        SELECT 1 FROM sys.columns
+        WHERE object_id = OBJECT_ID(N'dbo.s_i18n') AND name = N'b_module_id'
+    )
+    BEGIN
+        ALTER TABLE dbo.s_i18n
+            ADD b_module_id bigint NULL;
+
+        CREATE INDEX IX_s_i18n_module_id ON dbo.s_i18n (b_module_id)
+            INCLUDE (b_key, b_locale, b_value);
+    END
+
+COMMIT TRANSACTION;
+GO
+
+-- 第 2 批:存量回填(依赖第 1 批列已存在,因此必须 GO 分隔)
+SET NOCOUNT ON;
+
+BEGIN TRANSACTION;
+
+    -- 键形如 module. / menu. / field.. / power..
+    -- / group..,模块编码恒为第二个以 "." 分隔的片段。
+    UPDATE i
+    SET b_module_id = m.b_id
+    FROM dbo.s_i18n i
+    CROSS APPLY (
+        SELECT
+            CASE
+                WHEN CHARINDEX(N'.', i.b_key) > 0 THEN
+                    SUBSTRING(
+                        i.b_key,
+                        CHARINDEX(N'.', i.b_key) + 1,
+                        CASE
+                            WHEN CHARINDEX(N'.', i.b_key, CHARINDEX(N'.', i.b_key) + 1) > 0
+                                THEN CHARINDEX(N'.', i.b_key, CHARINDEX(N'.', i.b_key) + 1)
+                                     - CHARINDEX(N'.', i.b_key) - 1
+                            ELSE LEN(i.b_key) - CHARINDEX(N'.', i.b_key)
+                        END
+                    )
+                ELSE NULL
+            END AS code
+    ) c
+    CROSS APPLY (
+        SELECT TOP (1) sm.b_id
+        FROM dbo.s_module sm
+        WHERE sm.b_code = c.code
+    ) m
+    WHERE i.b_module_id IS NULL
+      AND (
+            i.b_key LIKE N'module.%'
+         OR i.b_key LIKE N'menu.%'
+         OR i.b_key LIKE N'field.%'
+         OR i.b_key LIKE N'power.%'
+         OR i.b_key LIKE N'group.%'
+      );
+
+COMMIT TRANSACTION;
diff --git a/code/fms/fms-api/config/migrations/100_initialize_fms_new.sql b/code/fms/fms-api/config/migrations/100_initialize_fms_new.sql
index 4813c15c..79f9d8b1 100644
--- a/code/fms/fms-api/config/migrations/100_initialize_fms_new.sql
+++ b/code/fms/fms-api/config/migrations/100_initialize_fms_new.sql
@@ -416,7 +416,7 @@ BEGIN
     CREATE TABLE dbo.s_log_technical (
         b_id bigint NOT NULL, -- 雪花主键(应用层生成,全局唯一)
         b_user_id bigint NULL,
-        b_account varchar(50) NULL,
+        b_account nvarchar(50) NULL,
         b_sourcetype varchar(20) NULL,
         b_loglevel varchar(16) NOT NULL,
         b_logcategory varchar(64) NULL,
@@ -443,7 +443,7 @@ BEGIN
     CREATE TABLE dbo.s_log_login (
         b_id bigint NOT NULL, -- 雪花主键(应用层生成,全局唯一)
         b_user_id bigint NULL,
-        b_account varchar(50) NULL,
+        b_account nvarchar(50) NULL,
         b_login_type varchar(20) NOT NULL,
         b_login_result int NOT NULL CONSTRAINT DF_s_log_login_result DEFAULT (0),
         b_fail_reason nvarchar(200) NULL,
diff --git a/code/fms/fms-api/src/main/java/cn/g3soft/fmsapi/exception/GlobalExceptionHandler.java b/code/fms/fms-api/src/main/java/cn/g3soft/fmsapi/exception/GlobalExceptionHandler.java
index 2b251d83..9d566ae9 100644
--- a/code/fms/fms-api/src/main/java/cn/g3soft/fmsapi/exception/GlobalExceptionHandler.java
+++ b/code/fms/fms-api/src/main/java/cn/g3soft/fmsapi/exception/GlobalExceptionHandler.java
@@ -42,7 +42,15 @@ public class GlobalExceptionHandler {
         details.put("table", exception.getTable());
         details.put("action", exception.getAction());
         details.put("index", exception.getIndex());
-        return new ApiResponse<>(ApiResponse.SAVE_ERROR_CODE, "保存失败", details);
+        String rootCause = exception.rootCauseMessage();
+        if (rootCause != null) {
+            details.put("cause", rootCause);
+        }
+        return new ApiResponse<>(
+                ApiResponse.SAVE_ERROR_CODE,
+                rootCause == null ? "保存失败" : "保存失败: " + rootCause,
+                details
+        );
     }
 
     @ExceptionHandler({SQLException.class, DataAccessException.class})
diff --git a/code/fms/fms-api/src/main/java/cn/g3soft/fmsapi/exception/SaveObjectException.java b/code/fms/fms-api/src/main/java/cn/g3soft/fmsapi/exception/SaveObjectException.java
index 3e2d2c3c..d2f94418 100644
--- a/code/fms/fms-api/src/main/java/cn/g3soft/fmsapi/exception/SaveObjectException.java
+++ b/code/fms/fms-api/src/main/java/cn/g3soft/fmsapi/exception/SaveObjectException.java
@@ -29,4 +29,16 @@ public class SaveObjectException extends RuntimeException {
     public int getIndex() {
         return index;
     }
+
+    /**
+     * 根因摘要(如 SQLServerException 的 "Violation of UNIQUE constraint ..."),
+     * 用于接口响应中提示具体失败原因,避免只看到笼统的「保存失败」。
+     */
+    public String rootCauseMessage() {
+        Throwable root = getCause();
+        while (root != null && root.getCause() != null) {
+            root = root.getCause();
+        }
+        return root == null ? null : root.getMessage();
+    }
 }
diff --git a/code/fms/fms-api/src/test/java/cn/g3soft/fmsapi/exception/GlobalExceptionHandlerTests.java b/code/fms/fms-api/src/test/java/cn/g3soft/fmsapi/exception/GlobalExceptionHandlerTests.java
index 7ad9b9bb..84bd86f9 100644
--- a/code/fms/fms-api/src/test/java/cn/g3soft/fmsapi/exception/GlobalExceptionHandlerTests.java
+++ b/code/fms/fms-api/src/test/java/cn/g3soft/fmsapi/exception/GlobalExceptionHandlerTests.java
@@ -39,9 +39,10 @@ class GlobalExceptionHandlerTests {
         ApiResponse> response = handler.handleSaveObjectException(exception);
 
         assertThat(response.code()).isEqualTo(ApiResponse.SAVE_ERROR_CODE);
-        assertThat(response.message()).isEqualTo("保存失败");
+        assertThat(response.message()).isEqualTo("保存失败: update failed");
         assertThat(response.data()).containsEntry("table", "bs_business");
         assertThat(response.data()).containsEntry("action", "update");
         assertThat(response.data()).containsEntry("index", 2);
+        assertThat(response.data()).containsEntry("cause", "update failed");
     }
 }
diff --git a/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/exception/GlobalExceptionHandler.class b/code/fms/fms-api/target/classes/cn/g3soft/fmsapi/exception/GlobalExceptionHandler.class
index a8491ec829c897bb191d8f5efc6c818deada1bf8..6dc0382c94d5f60ef7d315e01c67b44cb8fa9435 100644
GIT binary patch
delta 1802
zcmbtUS#KLv6#lL~_RKirII)yeNkwTxoMt70yg(vSwUJ5#aR{-~5W2wB9vs)M$MsA?
z!_r}2LR)BuB`jr4DO(UBRob)y-atZq;U6GGC4NBP5R`LgjO|bh2_buC&OP_s?|kPw
z_ugMx7TW_q{(13R0Nb&&9JuVY0%*aog1b=5P*>1(b4Z;rw5VnnYD$wZ!r)7AkAzVM
z<=5{{Us+nXvbg-)xieux8B=gC#u+voQZw3+o=d3aWZIl2%P`fPX)v_4j~rBI)!wX{
zOZCRgLOPck=qS53{Ot=sL|lOn6AbO`!}iZ|tJ1MMfM!f8xDQkIR$-rikAl6}XU_}U
z*#q`vp-onCKtw`8(*9lO->Bjt1u0%hFr}H}+Tj_^Fek=`C8X^!-%T|cWJMfOkb}N*
z)OWkENiG%45H6D{aTU=PZ|>5X9!hl*T0#C{P-|{kFY4>3|H}EhSoB0Iyb9lv?38#*qv&^)C+SA
z3zd=<1Kmu!)SQycYDVjbu4iWQ1Ek^&;dK%5xx6-D2fc0flDEbxP7SHqY%FbR1JvQ+
zTuv(tWmUt_3=y9)M6M%M%2km{#ODl~{ymhz@AASHYO4pZuPO~zp0-gh82tcW=XtPY
zGCVj;Z@=TLLxF6?4S)fYMhr8Ug#f;I8$}ZsYUT!CG?g2~S2w4`M;7RRE!KP%H;KmAcse~>O-jmh9
zpQ-}R1E0n-Zbd9fl?y~*-oCANZ$H(vYqaNk1iQm`_pD*ii^)q6r|QL@dVYWuj-G|w
za}oCd-RBYGl?#q|g9zDQ)^=DbZiYq*>$rs^>%)um<$`v)DN20jiSM&S<5oIt&*6E}
zN<{}=pm;ClDV{gLoqLJqj*({vynjF!u}#GBYY0IQ(JZ3Hb-*h@r@zIn(V<>HCAd?J
z)?Kgt%T?szyk5acR~|%(k(ct
zo1XxKQgA^cU!y6!-~SCfQ{L`1Jjf86vIMd;Zuz=mYv}W$e7+i~Gr%adb_@-41>Hz?
zE8-PoBPH1)CD|g?W%KZ>xk#vwzFc9so>^DJ(^XF7q?5!w)N(P2EBu>~@D>%soYJ;9
zID`~#zJP-(XyWWy#qAKLP4PDQJb1_H7+-jr#_!T2k=^hCz23uF8V1Pv1fSsxH2nqJ
CO=6k=

delta 1156
zcmbu8%X3Rn9LK-s=01{}OOuq$v=l`QNoG297>v=$#PKjVRXjAjx~Pg+&dAS>`W&2{Labm{Jx)jfA=@O^vgo?!>?Cw
z0mN`WXMS|eb)$vB`ugt4)bmGE*vfya
zG1kdr+7eF}k_L8I=;j03TD=Rs7IyNiHjC}%@3lqVy+|3@XJJ1Mr`7?Kj&zoW7>%AiiH>>J0eT3BjMjt>6Pk`kpP;ii*x;*sZ5XF|AfHV%%j^PN7
zLWQ{8MA-_hUO#&fDZo=iRhG8pC4#a<&`xto&;=Yre}-xeP`buw2OO6-PhgPNne@|1
z`kv|rOQD~l(>UXZuA`k0b(3Os5y9z-bIKImB}F%BoTZy(g3E2ia}^Xt=6PIj6hD(4
zE>cYMPG3*$YZytt@hQ+8oxnyR?vjp$Ve;?3Wf|ev0z17Vo+j~&RB{DY;}R|teulDy
zulC6mIw=FQxvo~=5=E}zy2BMG8NuZZN1_G9!v%C?MPb{2Q@XU0*jGtMY$$IDO7vie
z>WOX)Da~?kr;kTbQ+?ha5IHlba1-@N#-xgG?Mj1()9l%|GpYSgiX^z
zPw_quLeEG?LN8Dg*rvaMl5|BUv7I52R4M2Yffh+jqS1w12{1^*2W+5@G-EbeFrVVZ
zXf1;cm23-@YztMgjr>={&^knov(H%&s6oAktv@x>(}~mwUSfehlgXCVR1@Zbb~gmAjF^&S+UY;=?2lc|In4%
z&9j=3W7toaGJ7`%EO6j#*6X9?V~{LL4E9o6Ke;ICjk36aV~4>x**)SiebSLt0RzV>
zB!ta|lw=X}PVzg}NNW}fc`u@fnJ-c_7Doayl2lueVHXdXn=DSokV1%j*mPL5PJ}8m
zlmQw9m2DU+f@(OM9?epmp^lhSQjc&vP#|Ff_Duz^V}l^!e_+@B1l$=?2B)Go$E$B>
zN+M7+)q_?@_u)$S;OoOGoUBZDGD^W+cAVkro-Djdk.net.URLClassPath.disableClassPathURLCheck=true
+'other' has different root
+
diff --git a/code/fms/fms-api/target/surefire-reports/2026-08-31T17-07-58_994.dumpstream b/code/fms/fms-api/target/surefire-reports/2026-08-31T17-07-58_994.dumpstream
new file mode 100644
index 00000000..8a62948d
--- /dev/null
+++ b/code/fms/fms-api/target/surefire-reports/2026-08-31T17-07-58_994.dumpstream
@@ -0,0 +1,5 @@
+# Created at 2026-08-31T17:07:59.323
+Boot Manifest-JAR contains absolute paths in classpath 'D:\workspace\code\fms\fms-api\target\test-classes'
+Hint: -Djdk.net.URLClassPath.disableClassPathURLCheck=true
+'other' has different root
+
diff --git a/code/fms/fms-api/target/surefire-reports/TEST-cn.g3soft.fmsapi.exception.GlobalExceptionHandlerTests.xml b/code/fms/fms-api/target/surefire-reports/TEST-cn.g3soft.fmsapi.exception.GlobalExceptionHandlerTests.xml
index 84f51e8e..46abc5a8 100644
--- a/code/fms/fms-api/target/surefire-reports/TEST-cn.g3soft.fmsapi.exception.GlobalExceptionHandlerTests.xml
+++ b/code/fms/fms-api/target/surefire-reports/TEST-cn.g3soft.fmsapi.exception.GlobalExceptionHandlerTests.xml
@@ -1,66 +1,66 @@
 
-
+
   
     
     
     
-    
-    
+    
+    
     
     
-    
+    
     
-    
+    
     
     
     
-    
-    
+    
+    
     
-    
+    
+    
     
-    
+    
     
     
-    
-    
+    
+    
     
     
     
     
     
     
-    
+    
     
     
-    
-    
+    
+    
     
     
     
     
     
     
-    
-    
-    
-    
-    
+    
+    
+    
+    
     
     
     
     
     
-    
+    
     
     
-    
-    
+    
+    
     
     
   
-  
-    
+    
   
-  
-    
+    Dn1jmu!5oWvP`yX+cV2Nvc9xVrEWi
z%H{>EZj6E)48@ELtjUR`#i{HJrHl+_lMOkgCq{{FmSw-f6i~vz1T>9-ffQ$|gH<#WI#p
zp3kM63{s`Vzyc(FpsF|+To`H?YJsMRFjz3uG1LQfC^Kj>G%z#*9nb_+$pe&wh%^I5
zT7V)TJ6nM?14A3c1_lO34h9aexm}Z0xy$8sw=vipV2Iwq5Gzz96tImUDIDZtX0VI3
z7`P^{XXpUBM};8`%{>s2PBiy0GIRlLVPfb80I(fL
A@c;k-

delta 338
zcmcaAu~dTV)W2Q(7#J8F8M-!db+YpEJlQ|@>Dn1jmu!5oW$EVitZs~K>3}%xb
zup4eRXTQQET*SZx)WE>N48*JqYz&MHC6nd2#MDcHd=QU;frp_COoG^~4CM?JK$?M}
z5-7_AR2$6|%UC*jCzoEFsQ)A$qe3e@@
p9AR?>+~xwP&2kJ;46O`pK$}$
+/**
+ * 未保存修改确认弹窗(通用)。
+ * 场景:对象(模块/页签等)存在未保存修改时,离开/切换/关闭前询问用户如何处理。
+ * 纯受控展示组件:父组件持有 open/saving 状态,接收 save/discard 事件自行执行
+ * 保存与放弃逻辑,完成后自行关闭(update:open)。
+ *
+ * 用法:
+ *   
+ */
+import { Modal, Button } from '@/components/ui'
+
+defineOptions({ inheritAttrs: false })
+
+const props = defineProps({
+  /** 受控打开状态 */
+  open: { type: Boolean, default: false },
+  /** 当前对象名称(用于「「xxx」有未保存的修改」文案) */
+  name: { type: String, default: '' },
+  /** 保存进行中:主按钮转圈、锁定弹窗(阻止一切关闭入口) */
+  saving: { type: Boolean, default: false },
+  /** 保存按钮文案 */
+  saveText: { type: String, default: '保存并继续' },
+  /** 放弃修改按钮文案 */
+  discardText: { type: String, default: '放弃修改' },
+  /** 描述文案;缺省按 name 生成 */
+  description: { type: String, default: '' },
+  /** 自定义标题 */
+  title: { type: String, default: '有未保存的修改' },
+})
+
+const emit = defineEmits(['update:open', 'save', 'discard'])
+
+function close() {
+  if (props.saving) return
+  emit('update:open', false)
+}
+
+function onSave() {
+  emit('save')
+}
+
+function onDiscard() {
+  emit('discard')
+}
+
+
+
diff --git a/code/fms/fms-vue/src/components/fms-table/FmsTable.vue b/code/fms/fms-vue/src/components/fms-table/FmsTable.vue
index 6264eb36..8f4838fa 100644
--- a/code/fms/fms-vue/src/components/fms-table/FmsTable.vue
+++ b/code/fms/fms-vue/src/components/fms-table/FmsTable.vue
@@ -40,8 +40,8 @@ const props = defineProps({
     validator: (value) => value === 'light' || value === 'dark',
   },
   // 行高:唯一真源,同时驱动虚拟滚动计算与库注入的 --row-height 等 CSS 变量,外部勿用 CSS 覆盖
-  rowHeight: { type: Number, default: 34 },
-  headerRowHeight: { type: Number, default: 40 },
+  rowHeight: { type: Number, default: 30 },
+  headerRowHeight: { type: Number, default: 34 },
 })
 
 const emit = defineEmits(['update:columns', 'change', 'row-order-change'])
diff --git a/code/fms/fms-vue/src/views/system/module-management/components/ModuleAutoCodePanel.vue b/code/fms/fms-vue/src/views/system/module-management/ModuleAutoCodePanel.vue
similarity index 100%
rename from code/fms/fms-vue/src/views/system/module-management/components/ModuleAutoCodePanel.vue
rename to code/fms/fms-vue/src/views/system/module-management/ModuleAutoCodePanel.vue
diff --git a/code/fms/fms-vue/src/views/system/module-management/components/ModuleBasicPanel.vue b/code/fms/fms-vue/src/views/system/module-management/ModuleBasicPanel.vue
similarity index 76%
rename from code/fms/fms-vue/src/views/system/module-management/components/ModuleBasicPanel.vue
rename to code/fms/fms-vue/src/views/system/module-management/ModuleBasicPanel.vue
index dda3157f..50863aef 100644
--- a/code/fms/fms-vue/src/views/system/module-management/components/ModuleBasicPanel.vue
+++ b/code/fms/fms-vue/src/views/system/module-management/ModuleBasicPanel.vue
@@ -5,10 +5,8 @@
  * category 分类节点 / data 数据模块 / query 查询模块。
  */
 import { computed, ref, watch } from 'vue'
-import { Languages } from '@lucide/vue'
-import { Input, Select, Switch, Form, FormItem, Button } from '@/components/ui'
+import { Input, Select, Switch, Form, FormItem } from '@/components/ui'
 import { buildModuleI18nKey, validateModuleCode } from '@/utils/i18n'
-import I18nQuickSetModal from './I18nQuickSetModal.vue'
 
 const props = defineProps({
   data: { type: Object, default: null },
@@ -16,7 +14,7 @@ const props = defineProps({
   loading: { type: Boolean, default: false },
 })
 
-const emit = defineEmits(['update', 'i18nSaved'])
+const emit = defineEmits(['update'])
 
 const formData = ref(null)
 
@@ -35,10 +33,11 @@ const typeOptions = [
   { label: '查询模块', value: 'query' },
 ]
 
+// 取值与设计文档/CK_s_module_delete_policy 对齐(模块层无 cascade,级联由 s_relation 表达)
 const deletePolicyOptions = [
-  { label: '禁止删除(restrict)', value: 'restrict' },
-  { label: '生命周期(lifecycle)', value: 'lifecycle' },
-  { label: '物理删除(hard)', value: 'hard' },
+  { label: 'restrict · 主数据', value: 'restrict' },
+  { label: 'lifecycle · 业务单据', value: 'lifecycle' },
+  { label: 'hard · 临时记录', value: 'hard' },
 ]
 
 const isCategory = computed(() => formData.value?.b_module_type === 'category')
@@ -47,7 +46,7 @@ const isQuery = computed(() => formData.value?.b_module_type === 'query')
 
 /* ---------- 校验规则:错误直接显示在对应 FormItem 下方 ---------- */
 // data/query 的必填项与数据库 CK_s_module_config 约束对齐:
-// data:查询视图/保存表/主键字段/删除策略全必填;query:仅查询视图必填(主键字段可选)
+// data:查询视图/保存表/主键字段必填;query:仅查询视图必填(主键字段可选)
 const formRules = computed(() => ({
   b_code: [
     {
@@ -65,6 +64,7 @@ const formRules = computed(() => ({
     isData.value || isQuery.value ? [{ required: true, message: '请填写查询视图' }] : [],
   b_keyfield: isData.value ? [{ required: true, message: '请填写主键字段' }] : [],
   b_savetable: isData.value ? [{ required: true, message: '请填写保存表' }] : [],
+  // CK_s_module_config 要求 data 的 b_delete_policy 非空、category/query 必须为空
   b_delete_policy: isData.value ? [{ required: true, message: '请选择删除策略' }] : [],
 }))
 
@@ -115,19 +115,6 @@ function onModuleTypeChange(v) {
   emitUpdate()
 }
 
-const i18nModalRef = ref(null)
-
-function openI18nModal() {
-  if (!formData.value || !i18nModalRef.value) return
-  const key =
-    formData.value.b_i18n || buildModuleI18nKey(formData.value.b_module_type, formData.value.b_code)
-  i18nModalRef.value.open(key, formData.value.b_name || '')
-}
-
-function onI18nSaved(key) {
-  setField('b_i18n', key)
-  emit('i18nSaved', key)
-}
 
 
 
 
diff --git a/code/fms/fms-vue/src/views/system/module-management/components/ModuleI18nPanel.vue b/code/fms/fms-vue/src/views/system/module-management/ModuleI18nPanel.vue
similarity index 92%
rename from code/fms/fms-vue/src/views/system/module-management/components/ModuleI18nPanel.vue
rename to code/fms/fms-vue/src/views/system/module-management/ModuleI18nPanel.vue
index c663dde4..dee61772 100644
--- a/code/fms/fms-vue/src/views/system/module-management/components/ModuleI18nPanel.vue
+++ b/code/fms/fms-vue/src/views/system/module-management/ModuleI18nPanel.vue
@@ -9,9 +9,14 @@ import { Message, Button, Input } from '@/components/ui'
 import FmsTable from '@/components/fms-table/FmsTable.vue'
 import { createTempId } from '@/utils/tempId'
 import { cloneData } from '@/utils/dataChanges'
-import { consolidatePivotRows } from '@/utils/i18n'
+import { consolidatePivotRows, getI18nNamespace } from '@/utils/i18n'
 import { loadDataApi } from '@/services/api'
-import { DEFAULT_LANGUAGES } from '../common'
+// 前端默认语言列表(默认语言排第一)。
+// 后续若引入语言类型表(s_i18n_type)再改为接口加载。
+const DEFAULT_LANGUAGES = [
+  { code: 'zh-CN', name: '简体中文', default: true },
+  { code: 'en-US', name: 'English', default: false },
+]
 
 const props = defineProps({
   moduleId: { type: String, required: true },
@@ -257,6 +262,13 @@ function buildSaveRequest() {
   const inserts = []
   const updates = []
   const deletes = []
+  // 模块命名空间:这些键属于当前模块元数据,落库时写入 b_module_id 便于按模块级联删除;
+  // 其余(common.* 等通用文案)b_module_id 保持 NULL,不归属任何模块
+  const MODULE_NAMESPACES = ['module', 'menu', 'field', 'power', 'group']
+  function moduleIdOf(key) {
+    const ns = getI18nNamespace(key)
+    return MODULE_NAMESPACES.includes(ns) ? props.moduleId : null
+  }
   const originals = new Map(
     originalsFlat.value.map((r) => [`${r.b_key}|${r.b_locale}`, r]),
   )
@@ -273,7 +285,14 @@ function buildSaveRequest() {
       const localeId = row._localeIds?.[locale]
       if (localeId) {
         if (!original || String(original.b_value ?? '') !== value) {
-          updates.push({ b_id: localeId, b_key: key, b_locale: locale, b_value: value, b_canuse: 1 })
+          updates.push({
+            b_id: localeId,
+            b_key: key,
+            b_locale: locale,
+            b_value: value,
+            b_module_id: moduleIdOf(key),
+            b_canuse: 1,
+          })
         }
       } else if (value !== '') {
         inserts.push({
@@ -285,6 +304,7 @@ function buildSaveRequest() {
           b_key: key,
           b_locale: locale,
           b_value: value,
+          b_module_id: moduleIdOf(key),
           b_canuse: 1,
         })
       }
@@ -331,6 +351,7 @@ defineExpose({
   removeByManagedIds,
   reconcileManagedRows,
   applyInsertedIds,
+  loadI18n,
 })
 
 
diff --git a/code/fms/fms-vue/src/views/system/module-management/ModuleListConfigPanel.vue b/code/fms/fms-vue/src/views/system/module-management/ModuleListConfigPanel.vue
new file mode 100644
index 00000000..553f764b
--- /dev/null
+++ b/code/fms/fms-vue/src/views/system/module-management/ModuleListConfigPanel.vue
@@ -0,0 +1,46 @@
+
+
+
diff --git a/code/fms/fms-vue/src/views/system/module-management/components/ModulePowersPanel.vue b/code/fms/fms-vue/src/views/system/module-management/ModulePowersPanel.vue
similarity index 73%
rename from code/fms/fms-vue/src/views/system/module-management/components/ModulePowersPanel.vue
rename to code/fms/fms-vue/src/views/system/module-management/ModulePowersPanel.vue
index 0971dec7..32f9d88c 100644
--- a/code/fms/fms-vue/src/views/system/module-management/components/ModulePowersPanel.vue
+++ b/code/fms/fms-vue/src/views/system/module-management/ModulePowersPanel.vue
@@ -3,13 +3,11 @@
  * 权限配置面板(s_power):模块操作权限点(b_power_type=action)。
  * i18n 键按 power.{moduleCode}.{powerCode} 自动同步。
  */
-import { computed, h, nextTick, ref, shallowRef, watch } from 'vue'
-import { Languages } from '@lucide/vue'
+import { computed, nextTick, ref, shallowRef, watch } from 'vue'
 import { Message, Modal, Button } from '@/components/ui'
 import FmsTable from '@/components/fms-table/FmsTable.vue'
-import { buildModuleItemI18nKey, syncModuleItemI18nKeys } from '@/utils/i18n'
+import { syncModuleItemI18nKeys } from '@/utils/i18n'
 import { createTempId } from '@/utils/tempId'
-import I18nQuickSetModal from './I18nQuickSetModal.vue'
 
 const props = defineProps({
   moduleId: { type: String, required: true },
@@ -24,7 +22,7 @@ const props = defineProps({
   i18nPrefix: { type: String, default: 'power' },
 })
 
-const emit = defineEmits(['update', 'i18nSaved'])
+const emit = defineEmits(['update'])
 
 const localPowers = ref([])
 const activeKey = ref(null)
@@ -101,37 +99,10 @@ function onCellChange() {
   emitUpdate()
 }
 
-function openI18n(row) {
-  const key = buildModuleItemI18nKey(props.i18nPrefix, props.moduleCode, row.b_code)
-  if (!key) {
-    Message.warning('请先填写操作编码')
-    return
-  }
-  i18nModalRef.value?.open(key, row.b_name || '')
-}
-
-const I18nKeyCell = ({ row, cellValue }) =>
-  h('span', { class: 'mm-i18n-cell' }, [
-    h('span', { class: 'mm-i18n-cell__text' }, cellValue ?? ''),
-    h(
-      'button',
-      {
-        type: 'button',
-        title: '设置多语言',
-        class: 'mm-i18n-cell__btn',
-        onClick: (event) => {
-          event.stopPropagation()
-          openI18n(row)
-        },
-      },
-      [h(Languages, { size: 14 })],
-    ),
-  ])
-
 const columns = shallowRef([
   { dataIndex: 'b_code', title: '操作编码', width: 160, editor: { type: 'input' } },
   { dataIndex: 'b_name', title: '操作名称', width: 160, editor: { type: 'input' } },
-  { dataIndex: 'b_i18n', title: '多语言键', width: 200, customCell: I18nKeyCell },
+  { dataIndex: 'b_i18n', title: '多语言键', width: 200 },
   { dataIndex: 'b_xh', title: '排序', width: 90, editor: { type: 'input', inputType: 'number' } },
   {
     dataIndex: 'b_canuse',
@@ -177,7 +148,6 @@ const columns = shallowRef([
         @change="onCellChange"
       />
     
-    
   
 
 
@@ -204,36 +174,3 @@ const columns = shallowRef([
   flex: 1;
 }
 
-
-
-
diff --git a/code/fms/fms-vue/src/views/system/module-management/components/ModuleQueryConfigPanel.vue b/code/fms/fms-vue/src/views/system/module-management/ModuleQueryConfigPanel.vue
similarity index 99%
rename from code/fms/fms-vue/src/views/system/module-management/components/ModuleQueryConfigPanel.vue
rename to code/fms/fms-vue/src/views/system/module-management/ModuleQueryConfigPanel.vue
index 536c2bb0..b8bd924d 100644
--- a/code/fms/fms-vue/src/views/system/module-management/components/ModuleQueryConfigPanel.vue
+++ b/code/fms/fms-vue/src/views/system/module-management/ModuleQueryConfigPanel.vue
@@ -9,7 +9,7 @@ import { computed, nextTick, ref, shallowRef, watch } from 'vue'
 import { Button } from '@/components/ui'
 import FmsTable from '@/components/fms-table/FmsTable.vue'
 import { createTempId } from '@/utils/tempId'
-import { queryRowDefaults } from '../fieldAreaDefaults'
+import { queryRowDefaults } from './components/fieldDefaults'
 
 const props = defineProps({
   moduleId: { type: String, required: true },
diff --git a/code/fms/fms-vue/src/views/system/module-management/common.js b/code/fms/fms-vue/src/views/system/module-management/common.js
deleted file mode 100644
index 08304311..00000000
--- a/code/fms/fms-vue/src/views/system/module-management/common.js
+++ /dev/null
@@ -1,6 +0,0 @@
-// 前端默认语言列表(默认语言排第一)。
-// 后续若引入语言类型表(s_i18n_type)再改为接口加载。
-export const DEFAULT_LANGUAGES = [
-  { code: 'zh-CN', name: '简体中文', default: true },
-  { code: 'en-US', name: 'English', default: false },
-]
diff --git a/code/fms/fms-vue/src/views/system/module-management/components/I18nKeyCell.js b/code/fms/fms-vue/src/views/system/module-management/components/I18nKeyCell.js
deleted file mode 100644
index 5c5e3ee6..00000000
--- a/code/fms/fms-vue/src/views/system/module-management/components/I18nKeyCell.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * 多语言键单元格(h 渲染函数):key 文本 + globe 快捷设置按钮。
- * 供字段定义 / 列表配置等 FmsTable 列的 customCell 复用。
- * 表格 cell 由 h() 动态渲染、不受 scoped 样式约束,样式放独立 scss 随本模块全局引入。
- */
-import { h } from 'vue'
-import { Languages } from '@lucide/vue'
-import './i18n-key-cell.scss'
-
-/**
- * @param {object} opts
- * @param {(row: object) => void} opts.onOpen 点击 globe 打开快捷设置
- * @param {(row: object) => string} [opts.textOf] 单元格显示值(缺省用 cellValue)
- * @param {(row: object) => boolean} [opts.isMuted] 显示为继承/占位样式(灰色)
- */
-export function createI18nKeyCell({ onOpen, textOf, isMuted }) {
-  return ({ row, cellValue }) => {
-    const text = textOf ? textOf(row) : cellValue || ''
-    return h('span', { class: 'mm-i18n-cell' }, [
-      h(
-        'span',
-        { class: ['mm-i18n-cell__text', isMuted?.(row) ? 'is-muted' : ''] },
-        text || '',
-      ),
-      h(
-        'button',
-        {
-          type: 'button',
-          title: '设置多语言',
-          class: 'mm-i18n-cell__btn',
-          onClick: (event) => {
-            event.stopPropagation()
-            onOpen(row)
-          },
-        },
-        [h(Languages, { size: 14 })],
-      ),
-    ])
-  }
-}
diff --git a/code/fms/fms-vue/src/views/system/module-management/components/I18nQuickSetModal.vue b/code/fms/fms-vue/src/views/system/module-management/components/I18nQuickSetModal.vue
deleted file mode 100644
index 7a95dbf8..00000000
--- a/code/fms/fms-vue/src/views/system/module-management/components/I18nQuickSetModal.vue
+++ /dev/null
@@ -1,135 +0,0 @@
-
-
-
-
-
diff --git a/code/fms/fms-vue/src/views/system/module-management/components/ModuleListConfigPanel.vue b/code/fms/fms-vue/src/views/system/module-management/components/ModuleListConfigPanel.vue
deleted file mode 100644
index 8199ba22..00000000
--- a/code/fms/fms-vue/src/views/system/module-management/components/ModuleListConfigPanel.vue
+++ /dev/null
@@ -1,574 +0,0 @@
-
-
-
-
-
diff --git a/code/fms/fms-vue/src/views/system/module-management/components/form-edit/FormEditPanel.vue b/code/fms/fms-vue/src/views/system/module-management/components/design-editor/FormDesignEditor.vue
similarity index 98%
rename from code/fms/fms-vue/src/views/system/module-management/components/form-edit/FormEditPanel.vue
rename to code/fms/fms-vue/src/views/system/module-management/components/design-editor/FormDesignEditor.vue
index f6a5e62e..90a8c37f 100644
--- a/code/fms/fms-vue/src/views/system/module-management/components/form-edit/FormEditPanel.vue
+++ b/code/fms/fms-vue/src/views/system/module-management/components/design-editor/FormDesignEditor.vue
@@ -1,10 +1,12 @@
 
 
 
             
@@ -311,7 +402,7 @@ function switchView(mode) {
           :visual-columns="visualColumns"
           :band-rows="bandRows"
           :header-columns="headerColumns"
-          :ungrouped-count="groupColumnsMap.ungrouped.length"
+          :ungrouped-count="ungroupedCount"
           :selected-node-key="selectedNodeKey"
           :loading="loading"
           :width-of="widthOf"
@@ -320,6 +411,7 @@ function switchView(mode) {
           :group-id-of-row="groupIdOfRow"
           :commit-col-drag="commitColDrag"
           :on-commit="emitUpdate"
+          :empty-text="isSubtable ? undefined : '暂无列配置'"
         />
 
         
@@ -329,14 +421,15 @@ function switchView(mode) { {{ groupCount }} 个分组
- 暂无分组,点击工具栏「添加分组」 - +
@@ -452,7 +547,10 @@ function switchView(mode) { line-height: 1; padding-bottom: 1px; cursor: help; - transition: border-color 0.15s, color 0.15s, background 0.15s; + transition: + border-color 0.15s, + color 0.15s, + background 0.15s; &:hover { border-color: color-mix(in srgb, var(--fms-primary) 45%, transparent); background: color-mix(in srgb, var(--fms-primary) 5%, var(--fms-card)); diff --git a/code/fms/fms-vue/src/views/system/module-management/components/edit-panels/EditDataView.vue b/code/fms/fms-vue/src/views/system/module-management/components/design-editor/common/EditDataView.vue similarity index 100% rename from code/fms/fms-vue/src/views/system/module-management/components/edit-panels/EditDataView.vue rename to code/fms/fms-vue/src/views/system/module-management/components/design-editor/common/EditDataView.vue diff --git a/code/fms/fms-vue/src/views/system/module-management/components/edit-panels/FieldLibrary.vue b/code/fms/fms-vue/src/views/system/module-management/components/design-editor/common/FieldLibrary.vue similarity index 99% rename from code/fms/fms-vue/src/views/system/module-management/components/edit-panels/FieldLibrary.vue rename to code/fms/fms-vue/src/views/system/module-management/components/design-editor/common/FieldLibrary.vue index 83bee0fa..cec2ec4b 100644 --- a/code/fms/fms-vue/src/views/system/module-management/components/edit-panels/FieldLibrary.vue +++ b/code/fms/fms-vue/src/views/system/module-management/components/design-editor/common/FieldLibrary.vue @@ -12,7 +12,7 @@ import { computed, ref } from 'vue' import { Input } from '@/components/ui' import draggable from 'vuedraggable' -import { filterLibraryFields } from '../../editPanelShared' +import { filterLibraryFields } from './useStructureEditing' const props = defineProps({ /** 模块全部字段 */ diff --git a/code/fms/fms-vue/src/views/system/module-management/composables/useStructureEditing.js b/code/fms/fms-vue/src/views/system/module-management/components/design-editor/common/useStructureEditing.js similarity index 61% rename from code/fms/fms-vue/src/views/system/module-management/composables/useStructureEditing.js rename to code/fms/fms-vue/src/views/system/module-management/components/design-editor/common/useStructureEditing.js index 6b870603..266b5a47 100644 --- a/code/fms/fms-vue/src/views/system/module-management/composables/useStructureEditing.js +++ b/code/fms/fms-vue/src/views/system/module-management/components/design-editor/common/useStructureEditing.js @@ -1,10 +1,17 @@ /** - * 结构编辑内核(分组树 + 行归属 + 平铺重编 + 选中态 + 列属性剪贴板)。 - * 由 TableEditPanel(子表设计,s_field_edit 行)与 ModuleListConfigPanel(列表配置, - * s_field_view 行)共用:宿主只注入数据源(getter)、行工厂(差异字段)、 - * 提交回调(转 emit)与重命名请求(转发结构树 startRename)。 + * 设计器内核(design-editor 唯一共享 js,纯编辑器逻辑、不与业务打交道)。 + * 由 TableDesignEditor(子表/列表表格设计)与 FormEditPanel(表单画布设计)共用,按区块划分: * - * 语义约定: + * 1. 分组树推导 buildGroupTree / groupIdOfRow / useGroupTree + * 2. 字段查询 useFieldLookup(字段名/字段对象 Map、控件类型标签) + * 3. 多级表头布局 useBandLayout(visualColumns / bandRows / headerColumns) + * 4. 行编辑纯函数 renumberRows / 剪贴板 / toggleFlag / filterLibraryFields / createEditRowFactory + * 5. 结构编辑内核 useStructureEditing(分组树 + 行归属 + 平铺重编 + 选中态 + 列属性剪贴板) + * + * 业务默认策略(listRowDefaults / queryRowDefaults / createListConfigRow / createQueryConfigRow) + * 已拆至 ../fieldDefaults.js(业务层);编辑器内核不依赖它——差异行工厂由宿主注入。 + * + * 语义约定(useStructureEditing): * - 分组 b_xh 为「兄弟内编号」((i+1)*10),不同层可重复; * - 行 b_xh 为「未分组在前 + 分组树先序」的全局平铺序,与运行时列序一致; * - 删除分组:直接子分组提升为被删分组的父级,组内行归未分组;级联清理其它配置 @@ -13,8 +20,348 @@ import { computed, nextTick, ref, watch } from 'vue' import { Message } from '@/components/ui' import { createTempId } from '@/utils/tempId' -import { useGroupTree, buildGroupTree } from './useGroupTree' -import { applyClipboardProps, buildClipboardProps, renumberRows } from '../editPanelShared' + +/* ============================================================ + * 1. 分组树推导(s_field_group 分组扁平数组 → 树 + 多级表头 band 元信息) + * ============================================================ */ + +// toSorted 返回新数组,必须回写原数组,否则 buildGroupTree 的排序不生效 +function sortGroupNodesByXh(nodes) { + const sorted = nodes.toSorted((a, b) => (a.group.b_xh || 0) - (b.group.b_xh || 0)) + nodes.splice(0, nodes.length, ...sorted) + return nodes +} + +export function buildGroupTree(groups) { + const map = new Map() + const roots = [] + for (const g of groups || []) { + map.set(String(g.b_id), { group: g, children: [] }) + } + for (const g of groups || []) { + const node = map.get(String(g.b_id)) + const parentId = g.b_parent_id == null ? null : String(g.b_parent_id) + if (parentId != null && map.has(parentId)) map.get(parentId).children.push(node) + else roots.push(node) + } + sortGroupNodesByXh(roots) + const walk = (nodes) => { + for (const node of nodes) { + sortGroupNodesByXh(node.children) + walk(node.children) + } + } + walk(roots) + return roots +} + +export function groupIdOfRow(row) { + return row?.b_group_id == null ? null : String(row.b_group_id) +} + +/** + * @param {import('vue').Ref|import('vue').ComputedRef} groupsRef 分组扁平数组 + * @param {import('vue').Ref|import('vue').ComputedRef} rowsRef 编辑行数组 + */ +export function useGroupTree(groupsRef, rowsRef) { + const groupTree = computed(() => buildGroupTree(groupsRef.value)) + + const groupNodeMap = computed(() => { + const map = new Map() + const walk = (nodes) => { + for (const node of nodes) { + map.set(String(node.group.b_id), node) + walk(node.children) + } + } + walk(groupTree.value) + return map + }) + + // groupId → 直属列(不递归收集);未分组列单独收集 + const groupColumnsMap = computed(() => { + const map = new Map() + const ungrouped = [] + for (const row of rowsRef.value || []) { + const gid = groupIdOfRow(row) + if (gid != null && groupNodeMap.value.has(gid)) { + if (!map.has(gid)) map.set(gid, []) + map.get(gid).push(row) + } else { + ungrouped.push(row) + } + } + return { map, ungrouped } + }) + + // 分组带元信息:层级(根=0)、直属列数、子树列数(span,空分组至少 1)、最大层级 + const bandMeta = computed(() => { + const columns = groupColumnsMap.value + const metaMap = new Map() + let maxLevel = 0 + const build = (nodes, level) => + nodes.map((node) => { + const gid = String(node.group.b_id) + const meta = { + gid, + group: node.group, + level, + ownCount: (columns.map.get(gid) || []).length, + children: [], + span: 0, + } + metaMap.set(gid, meta) + meta.children = build(node.children, level + 1) + meta.span = Math.max(1, meta.ownCount + meta.children.reduce((s, c) => s + c.span, 0)) + if (level > maxLevel) maxLevel = level + return meta + }) + const roots = build(groupTree.value, 0) + return { roots, metaMap, maxLevel } + }) + + // gid 是否位于 ancestorGid 的子树内(防拖入自身子树成环) + function isDescendantGroup(ancestorGid, gid) { + const meta = bandMeta.value.metaMap.get(String(gid)) + if (!meta) return false + let cur = meta.group.b_parent_id == null ? null : String(meta.group.b_parent_id) + while (cur != null) { + if (cur === String(ancestorGid)) return true + const m = bandMeta.value.metaMap.get(cur) + if (!m) break + cur = m.group.b_parent_id == null ? null : String(m.group.b_parent_id) + } + return false + } + + return { groupColumnsMap, bandMeta, isDescendantGroup, groupIdOfRow } +} + +/* ============================================================ + * 2. 字段查询与标签共享逻辑 + * ============================================================ */ + +const FIELD_TYPE_LABELS = { + input: '输入框', + textarea: '文本域', + number: '数字', + money: '金额', + date: '日期', + datetime: '日期时间', + checkbox: '复选框', + select: '下拉选择', +} + +/** + * @param {import('vue').Ref|import('vue').ComputedRef|(() => Array)} fieldsRef + * 字段数组 ref/computed,或返回字段数组的 getter 函数 + */ +export function useFieldLookup(fieldsRef) { + const fields = typeof fieldsRef === 'function' ? computed(fieldsRef) : fieldsRef + + const fieldNameMap = computed(() => { + const map = new Map() + for (const field of fields.value || []) { + map.set(String(field.b_id), field.b_name || field.b_field) + } + return map + }) + + const fieldMap = computed(() => { + const map = new Map() + for (const field of fields.value || []) { + map.set(String(field.b_id), field) + } + return map + }) + + function fieldOf(row) { + if (row?.b_field_id == null) return null + return fieldMap.value.get(String(row.b_field_id)) || null + } + + function fieldName(row) { + const fid = row?.b_field_id + if (fid == null) return '' + return fieldNameMap.value.get(String(fid)) || String(fid) + } + + function controlTypeLabel(row) { + const field = fieldOf(row) + return FIELD_TYPE_LABELS[field?.b_type] || field?.b_type || '未知' + } + + return { fieldNameMap, fieldMap, fieldOf, fieldName, controlTypeLabel } +} + +/* ============================================================ + * 3. 多级表头渲染推导(纯 computed,无状态) + * ============================================================ */ + +/** + * @param {{ groupColumnsMap: import('vue').ComputedRef<{map: Map, ungrouped: Array}>, + * bandMeta: import('vue').ComputedRef<{roots: Array, maxLevel: number}> }} tree + */ +export function useBandLayout(tree) { + const { groupColumnsMap, bandMeta } = tree + + // 视觉列序:未分组列在前,随后分组树先序(每分组:直属列 → 空叶子分组补 slot 占位) + const visualColumns = computed(() => { + const columns = groupColumnsMap.value + const list = [] + for (const row of columns.ungrouped) { + list.push({ kind: 'col', key: `col-${row.b_field_id}`, row, gid: null }) + } + const walk = (nodes) => { + for (const node of nodes) { + const own = columns.map.get(node.gid) || [] + for (const row of own) { + list.push({ kind: 'col', key: `col-${row.b_field_id}`, row, gid: node.gid }) + } + if (!own.length && !node.children.length) { + list.push({ kind: 'slot', key: `slot-${node.gid}`, gid: node.gid, group: node.group }) + } + walk(node.children) + } + } + walk(bandMeta.value.roots) + return list + }) + + // 多级表头 band 行:每层一个 tr 的单元格序列;未分组列头在第 0 层,贯穿全部表头行高 + const bandRows = computed(() => { + const { roots, maxLevel } = bandMeta.value + if (!roots.length) return [] + const ungrouped = groupColumnsMap.value.ungrouped + const totalHeaderRows = maxLevel + 2 + const byLevel = new Map() + const collect = (nodes) => { + for (const node of nodes) { + if (!byLevel.has(node.level)) byLevel.set(node.level, []) + byLevel.get(node.level).push(node) + collect(node.children) + } + } + collect(roots) + const rows = [] + for (let level = 0; level <= maxLevel; level++) { + const nodes = byLevel.get(level) || [] + const cells = [] + if (level === 0 && ungrouped.length) { + for (const row of ungrouped) { + cells.push({ kind: 'ungrouped-col', row, span: 1, rowspan: totalHeaderRows }) + } + } + cells.push( + ...nodes.map((node) => ({ + kind: 'band', + gid: node.gid, + group: node.group, + level: node.level, + span: node.span, + rowspan: node.children.length ? 1 : maxLevel - node.level + 1, + })), + ) + rows.push(cells) + } + return rows + }) + + const ungroupedCount = computed(() => groupColumnsMap.value.ungrouped.length) + const ungroupedInBand = computed( + () => bandRows.value.length > 0 && groupColumnsMap.value.ungrouped.length > 0, + ) + + // 列头行:未分组列头已渲染在 band 行时,这里只渲染分组内列 + const headerColumns = computed(() => { + if (!ungroupedInBand.value) return visualColumns.value + return visualColumns.value.filter((c) => c.gid != null) + }) + + return { visualColumns, bandRows, headerColumns, ungroupedInBand, ungroupedCount } +} + +/* ============================================================ + * 4. 行编辑纯函数(无 Vue 依赖) + * ============================================================ */ + +/** 按索引重排 b_xh:从 10 开始,步长 10 */ +export function renumberRows(rows) { + return rows.map((row, index) => ({ ...row, b_xh: (index + 1) * 10 })) +} + +/** + * 复制列属性:提取指定 keys 的标准化值,返回 { name, props }。 + * 特殊键处理:b_placeholder → 字符串或 null;b_height/b_width → 数值或 null; + * 其余按键的 0/1 标志归一。normalize 可覆盖个别键的自定义取值(如 b_colspan 需 spanOf)。 + */ +export function buildClipboardProps(row, fieldNameOf, keys, normalize = {}) { + const props = {} + for (const k of keys) { + if (normalize[k]) props[k] = normalize[k](row) + else if (k === 'b_placeholder') props[k] = row.b_placeholder || null + else if (k === 'b_height' || k === 'b_width') props[k] = row[k] == null ? null : Number(row[k]) || null + else props[k] = Number(row[k]) === 1 ? 1 : 0 + } + return { name: fieldNameOf(row), props } +} + +/** 将剪切板属性对象应用到行的目标属性 */ +export function applyClipboardProps(row, props) { + Object.assign(row, props) +} + +/** 切换字段布尔标志(纯 mutation) */ +export function toggleFlag(row, key) { + row[key] = Number(row[key]) === 1 ? 0 : 1 +} + +/** 按关键字过滤字段(名称/编码),按名称排序 */ +export function filterLibraryFields(fields, keyword) { + const kw = String(keyword || '').trim().toLowerCase() + return [...(fields || [])] + .filter( + (f) => + !kw || + String(f.b_name || '').toLowerCase().includes(kw) || + String(f.b_field || '').toLowerCase().includes(kw), + ) + .toSorted((a, b) => + String(a.b_name || a.b_field || '').localeCompare(String(b.b_name || b.b_field || ''), 'zh'), + ) +} + +/** + * 创建编辑行工厂函数。 + * 共享:b_id / b_module_id / b_field_id / b_group_id / b_visible / b_required / b_readonly / b_disabled + * / b_colspan(默认24) / b_height(textarea 120) / b_placeholder / b_xh + * 差异:由 getExtra(field, groupId) 补充(如 b_width / b_colspan 覆盖)。 + * @param {{ moduleId: string, getExtra?: (field: object, groupId: string|null) => object }} opts + * @returns {(field: object, groupId: string|null) => object} + */ +export function createEditRowFactory({ moduleId, getExtra }) { + return (field, groupId) => ({ + b_id: createTempId(), + b_module_id: moduleId, + b_field_id: String(field.b_id), + b_group_id: groupId || null, + b_visible: 1, + b_required: 0, + b_readonly: 0, + b_disabled: 0, + b_colspan: 24, + b_height: field.b_type === 'textarea' ? 120 : null, + b_placeholder: null, + b_xh: 0, + ...(getExtra ? getExtra(field, groupId) : {}), + }) +} + +/* ============================================================ + * 5. 结构编辑内核 + * 由 TableDesignEditor(子表设计 / 列表设计共用)消费:宿主只注入数据源(getter)、 + * 行工厂(差异字段)、提交回调(转 emit)与重命名请求(转发结构树 startRename)。 + * ============================================================ */ const DEFAULT_CLIP_KEYS = [ 'b_required', diff --git a/code/fms/fms-vue/src/views/system/module-management/components/form-edit/FormInspector.vue b/code/fms/fms-vue/src/views/system/module-management/components/design-editor/form/FormInspector.vue similarity index 85% rename from code/fms/fms-vue/src/views/system/module-management/components/form-edit/FormInspector.vue rename to code/fms/fms-vue/src/views/system/module-management/components/design-editor/form/FormInspector.vue index 3d91f9dd..08314e86 100644 --- a/code/fms/fms-vue/src/views/system/module-management/components/form-edit/FormInspector.vue +++ b/code/fms/fms-vue/src/views/system/module-management/components/design-editor/form/FormInspector.vue @@ -1,37 +1,58 @@ - - + -

- 「{{ switchConfirm?.name || '当前对象' }}」有未保存的修改,切换前请选择如何处理: -

- -
+ :name="switchConfirm?.name || ''" + :saving="switchSaving" + save-text="保存并切换" + discard-text="放弃修改" + @save="onSwitchSave" + @discard="onSwitchDiscard" + @update:open="(v) => !v && onSwitchCancel()" + /> @@ -862,15 +1512,6 @@ loadModuleTree() color: var(--fms-text-secondary); } -/* 脏点:作为 label 插槽的 flex 子元素排在图标后,间距由 .tabs-tab 的 gap 统一管理 */ -.mm-config-nav__dirty { - flex: none; - width: 6px; - height: 6px; - border-radius: 50%; - background: var(--fms-primary); -} - .mm-config-nav .tabs-tab-active .mm-config-nav__icon { color: var(--fms-primary); } diff --git a/code/fms/fms-vue/src/views/tmp-dnd-panel.vue b/code/fms/fms-vue/src/views/tmp-dnd-panel.vue index 3e5b7d74..41f65a3b 100644 --- a/code/fms/fms-vue/src/views/tmp-dnd-panel.vue +++ b/code/fms/fms-vue/src/views/tmp-dnd-panel.vue @@ -1,6 +1,6 @@