27752351b96cb2862850bdf468ba39d5b472fb3d
- 新建 composables/useFieldLookup.js:FIELD_TYPE_LABELS 常量 +
useFieldLookup(fieldsRef) 返回 fieldNameMap/fieldMap/fieldOf/fieldName/controlTypeLabel
- 新建 editPanelShared.js(纯函数,无 Vue 依赖):renumberRows/buildVisibilityMap/
buildClipboardProps/applyClipboardProps/toggleFlag/filterLibraryFields/createEditRowFactory
- ModuleTableEditPanel/ModuleFormEditPanel/ModuleStructureTree 三处同体字段查询
统一改用 useFieldLookup,删除各自 FIELD_TYPE_LABELS/fieldNameMap/fieldMap/fieldOf/
fieldName/controlTypeLabel 复制体
- 两面板 syncToList/syncToQuery 共享 buildVisibilityMap(emit 与提示文案留在各自面板)
- 两面板 copyRowProps/pastePropsToSelected 共享 buildClipboardProps/applyClipboardProps:
键集合 diff 后参数化(子表 b_width / 主表 b_colspan+spanOf 归一),行为不变
- createEditRow 语义相同、细节不同(子表写 b_width、主表写 b_colspan)→
抽参数化工厂 createEditRowFactory({ moduleId, getExtra }),两面板各自传参
- 主表 groupIdOf 与 useGroupTree.groupIdOfRow 函数体逐字相同 → 改导入(别名保持调用点不变)
- 字段库 libraryFields 的过滤排序逻辑抽为 filterLibraryFields(.sort→.toSorted,
消除 oxlint 变异告警);toggleInspector/toggleRowFlag 核心抽为 toggleFlag
行为不变;测试 184 通过(2 个既有失败与本重构无关);lint 告警 60→59(净减 1)
Languages
Vue
33%
JavaScript
30.6%
TypeScript
12.3%
Java
10.6%
CSS
6.8%
Other
6.7%