From 3d4e2c74133efbe53c28703823435b627921c06d Mon Sep 17 00:00:00 2001 From: ZhangAo Date: Thu, 3 Sep 2026 17:31:37 +0800 Subject: [PATCH] 20260903173136 --- .../fms-module-list/moduleListUtils.js | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/code/fms/fms-vue/src/components/fms-module-list/moduleListUtils.js b/code/fms/fms-vue/src/components/fms-module-list/moduleListUtils.js index d372d834..3eb2e4d2 100644 --- a/code/fms/fms-vue/src/components/fms-module-list/moduleListUtils.js +++ b/code/fms/fms-vue/src/components/fms-module-list/moduleListUtils.js @@ -4,6 +4,29 @@ export const identifierRe = /^[A-Za-z_][A-Za-z0-9_]*$/ const padDatePart = (number) => String(number).padStart(2, '0') +// 序号字段按保存表主键的命名域推断:b_id(系统/基础表)→ b_xh,subid(业务子表)→ mx_xh。 +const seqFieldByKeyField = new Map([ + ['b_id', 'b_xh'], + ['subid', 'mx_xh'], +]) + +/** + * 解析模块的序号字段(用于行拖拽重排、新增自动取 MAX+10)。 + * 显式传入 orderField 时直接使用(页面覆盖口); + * 否则按主键域推断,且推断结果必须已登记为模块的数值字段, + * 否则返回 ''(不启用,避免给无序号列的表塞字段,如日志表)。 + */ +export function resolveSeqField(orderField, module, fields) { + const explicit = String(orderField || '').trim() + if (identifierRe.test(explicit)) return explicit + const inferred = seqFieldByKeyField.get(String(module?.b_keyfield || '').trim()) + if (!inferred) return '' + const field = (fields || []).find((item) => item.b_field === inferred) + if (!field) return '' + if (field.b_type !== 'number' && field.b_type !== 'money') return '' + return inferred +} + export function escapeSqlText(value) { return String(value).replaceAll("'", "''") }