oneao
|
63514476d7
|
20260914223013
|
2026-09-14 22:30:13 +08:00 |
|
oneao
|
549c8bd2eb
|
20260914172820
|
2026-09-14 17:28:20 +08:00 |
|
oneao
|
c31329d387
|
20260913231607
|
2026-09-13 23:16:08 +08:00 |
|
oneao
|
f3ad727f1c
|
20260911173133
|
2026-09-11 17:31:34 +08:00 |
|
oneao
|
3838ed74b1
|
20260910173853
|
2026-09-10 17:38:53 +08:00 |
|
oneao
|
19267be58d
|
20260909224013
|
2026-09-09 22:40:13 +08:00 |
|
oneao
|
d8acf69533
|
20260909173147
|
2026-09-09 17:31:47 +08:00 |
|
oneao
|
ead8e66626
|
20260908223921
|
2026-09-08 22:39:22 +08:00 |
|
oneao
|
8734b43a2a
|
20260908170359
|
2026-09-08 17:03:59 +08:00 |
|
oneao
|
2f5eac079e
|
20260907224521
|
2026-09-07 22:45:21 +08:00 |
|
oneao
|
1b596ffa5b
|
20260907172356
|
2026-09-07 17:23:56 +08:00 |
|
oneao
|
78825797e7
|
20260906214757
|
2026-09-06 21:47:57 +08:00 |
|
oneao
|
3b03eccdb5
|
20260905172602
|
2026-09-05 17:26:03 +08:00 |
|
oneao
|
7b00eeb88c
|
20260905172534
|
2026-09-05 17:25:35 +08:00 |
|
oneao
|
1b01a31252
|
20260904232445
|
2026-09-04 23:24:45 +08:00 |
|
oneao
|
4e167df0f0
|
20260904173136
|
2026-09-04 17:31:36 +08:00 |
|
oneao
|
0928437c67
|
20260903221055
|
2026-09-03 22:10:55 +08:00 |
|
oneao
|
3d4e2c7413
|
20260903173136
|
2026-09-03 17:31:37 +08:00 |
|
oneao
|
0faf44cffc
|
20260903173038
|
2026-09-03 17:30:39 +08:00 |
|
oneao
|
c8940f6e03
|
20260902223822
|
2026-09-02 22:38:23 +08:00 |
|
oneao
|
db7813a2d2
|
20260902173133
|
2026-09-02 17:31:35 +08:00 |
|
oneao
|
6b9cda5424
|
20260901222055
|
2026-09-01 22:20:55 +08:00 |
|
oneao
|
53aba8b956
|
20260901173242
|
2026-09-01 17:32:43 +08:00 |
|
oneao
|
3bbcafc5be
|
20260831223203
|
2026-08-31 22:32:03 +08:00 |
|
oneao
|
4d46ce6c53
|
20260831172912
|
2026-08-31 17:29:13 +08:00 |
|
oneao
|
d6a56eb17f
|
20260830215003
|
2026-08-30 21:50:03 +08:00 |
|
oneao
|
47c0bf08aa
|
refactor(module-management): 参与勾选改用 FmsTable 内置 checkbox,删除自制 ParticipationCell
- 参与状态物化为字段行的 __form/__list/__query 虚拟字段(watch 就地 patch,
不替换数组引用,不触发整表重建),参与列用内置 editor: checkbox 渲染——
居中/事件隔离/Enter 切换与「启用」列同款,自制 cell 与配套 scss 删除
- FmsTable change 按列路由:参与列 → toggle 写对应配置草稿;普通列照旧走
字段 i18n 同步。emitUpdate 剥离 __ 虚拟字段,不进草稿与保存请求
- 新 spec module-fields-panel-participation:物化勾选态、勾选路由生成默认
查询行、普通编辑剥离虚拟字段(jsdom 无布局,patch clientWidth 关闭虚拟列裁剪)
|
2026-08-30 21:47:40 +08:00 |
|
oneao
|
59b91e9a7b
|
fix(module-management): 参与勾选列表头与内容居中——对齐「启用」列
- 表头:参与列补 headerAlign: 'center'(stk-table 中 th 与 td 的对齐分开配置,
此前仅 align 只作用于内容,表头走 getHeaderAlign 默认 left)
- 内容:.mm-part-cell 补 height:100% + line-height:1,与 FmsTable 内置
勾选列 .fms-checkbox 同构(铺满单元格后 flex 居中)
|
2026-08-30 21:28:27 +08:00 |
|
oneao
|
ac346f929c
|
refactor(module-management): 参与开关由 Switch 改为 Checkbox
与「启用」列的表格勾选交互保持一致,视觉更轻。
|
2026-08-30 21:14:41 +08:00 |
|
oneao
|
f019a1c1ac
|
feat(module-management): 字段定义面板增加 表单/列表/查询 参与开关
跨 tab 的「字段参与了哪些界面」在字段定义一行内表达并可就地切换,
tab 结构不变。「参与是选择不是缺失」——不引入任何完整性提示。
- 语义沿用 fieldAreaDefaults 既有约定:行存在=已配置,行内开关=是否参与
(表单/列表 b_visible、查询 b_canuse);关=置 0 不删行,保留画布布局与既有查询配置
- fieldParticipation.js(纯逻辑):判定与切换;行不存在时按默认工厂生成且强制参与
(显式意愿覆盖大文本默认 参与=0),表单新行 b_colspan=24 追加到末尾序号
- fieldAreaDefaults 增加列表/查询默认行工厂,useModuleConfig.buildMissingDefaultConfigs
改用工厂——「同步字段自动补全」与「手动打开开关」生成的行结构同源
- ParticipationCell(h 渲染 ui Switch)接 FmsTable customCell;表单列仅 data 模块展示
- 新 spec field-participation 9 用例:判定/两路切换/大文本强制参与/不变性
|
2026-08-30 21:05:57 +08:00 |
|
oneao
|
08646c547f
|
revert(module-management): 撤回表单设计「缺 N」徽标(阶段二)
并非所有启用字段都应出现在表单里(审计字段等常有意不布局),
「缺 N」口径对表单设计是假警报。revert 6bfa0d81,计划文档记录决策。
阶段一(tab 脏点)保留;查询配置的「缺 N」为使用者既有实现,不动。
|
2026-08-30 20:23:04 +08:00 |
|
oneao
|
2ab502b4a5
|
revert(module-management): 撤回概览配置完成度 checklist(阶段三)
使用者试用后决定不要:清单信息与 tab 徽标(脏点/缺 N)重复,且占据概览篇幅。
revert 29f98494(组件、spec、index.vue 接线全部移除),计划文档记录该决策。
阶段一(脏点)与阶段二(表单设计缺 N 徽标)保留。
|
2026-08-30 20:16:14 +08:00 |
|
oneao
|
29f98494af
|
feat(module-management): 导航状态化阶段三——概览配置完成度 checklist
- 新组件 ModuleOverviewChecklist:字段/表单/列表/查询/权限按依赖顺序排列,
状态以文案表达(缺 N/已配置 N,不只靠颜色),空态给引导文案
- 条目点击与 Enter 跳转对应分节;查询缺配提供「一键补充」
(复用 fillMissingConfigs,不冒泡为跳转);仅数据/查询模块渲染
- index.vue 补 fieldsEnabledCount/listVisibleCount/powersCount 派生统计;
表单/查询缺配复用阶段二/既有的 missingEditCount/missingQueryCount
- 新 spec module-overview-checklist 7 用例:条目显隐、缺配/完整/空态文案、
跳转与一键补充事件
|
2026-08-30 20:10:53 +08:00 |
|
oneao
|
6bfa0d816f
|
feat(module-management): 导航状态化阶段二——表单设计「缺 N」徽标
- 复用既有 missingConfigCount 通用口径,新增 missingEditCount(启用字段
未被 editConfig 任何行 b_field_id 引用的数量),子表表格编辑方式下同样成立
- configGroups 表单设计项挂「缺 N」徽标,样式与语义沿用查询配置;
拖入画布后徽标消失
- spec 新增 4 用例:缺配计数、停用字段不计、b_field_id 类型不一致按字符串比较、空态为 0
|
2026-08-30 20:07:56 +08:00 |
|
oneao
|
4f89f373e6
|
feat(module-management): 导航状态化阶段一——分 section 脏检查 + tab 脏点
- useModuleConfig 新增 dirtySections(逐段 JSON.stringify 对比),hasModuleChanges
改为其派生;先以整树对比语义为基准写等价断言(含「加载补全默认行即脏」的
既有怪癖),新 spec module-dirty-sections 7 用例全绿
- index.vue #label 插槽给脏 tab 渲染 6px 圆点(title/aria-label,不只靠颜色),
ui/Tabs 组件零改动;groups 由列表/表单两面板共享编辑,两 tab 联动标脏
- 计划文档 docs/module-management-tab-status-plan.md(横排保留、不做分组为已决策)
|
2026-08-30 20:06:36 +08:00 |
|
oneao
|
05d0c7f304
|
chore(fms-vue): WIP 基线快照——收编工作区未提交的前端改动
不含 fms-api Java 侧改动与后续导航状态化阶段提交。主要内容:
- ui 组件库:date/dropdown/form/input/popover/select/tooltip 调整,
新增 Segmented 组件;fms-table 可编辑单元格渲染器与 FileCard 更新
- 模块管理:列表配置加载自动补全、查询缺配徽标与一键补充、
结构编辑内核 useStructureEditing/useBandLayout、子表表格编辑方式、
分组标题多语言、I18nKeyCell 等(含配套 spec)
- 布局/主题/仪表盘/演示页小幅更新
|
2026-08-30 20:06:19 +08:00 |
|
oneao
|
a1079a7150
|
refactor(ui): Dropdown/Popover 增加 stretch-trigger,结构树宽度改为组件级解决
antdv-next 的 Dropdown/Popover 触发器不额外包裹 span,block 内容天然撑满;
我们组件因统一挂载事件/ref 用 span.popover-trigger(inline-flex 收缩)包裹,
导致结构树(.mst-tree)只有内容宽度。
参照其语义化定制思路,改为组件提供显式能力而非业务侧 :deep 打补丁:
- Popover 新增 stretchTrigger prop:true 时 trigger 加 .popover-trigger--stretch
(display:block + width:100%,特异性 0,2,0 高于默认)
- Dropdown 透传 stretchTrigger
- ModuleStructureTree 使用 stretch-trigger 撑满分组树面板
- 移除 TableEditPanel 的 :deep(.popover-trigger) 覆盖(回归组件自身能力)
|
2026-08-28 19:28:40 +08:00 |
|
oneao
|
5e63ef8e50
|
fix(module-management): 子表设计器 mst-tree 宽度异常——撑开 Popover trigger
根因:ModuleStructureTree 外层是 Dropdown→Popover 的 span.popover-trigger
(display:inline-flex,收缩到内容宽度),导致内部 .mst-tree 即使自身是 block
也只有内容宽度,无法填满分组树面板。
修复:
- TableEditPanel 结构树滚动容器内 :deep(.popover-trigger) 覆盖为
display:block + width:100%(特异性 0,3,0 高于 Popover 自身 0,2,0)
- ModuleStructureTree .mst-tree 加 width:100% 双保险
|
2026-08-28 19:25:00 +08:00 |
|
oneao
|
c2fee5a294
|
refactor(module-management): 清理未使用的代码——解构、导出、返回槽、死 computed、死 CSS
- groupNodeMap 在 TableEditPanel/ModuleStructureTree 中解构却未使用 → 移除
- useGroupTree 返回对象中 groupTree/groupNodeMap 无消费者 → 移除
- FIELD_TYPE_LABELS 导出仅内部使用 → 去 export
- sortGroupNodesByXh 导出仅内部使用 → 去 export
- buildBreadcrumb + moduleBreadcrumb 完全死代码 → 删除
- useModuleTree 返回对象中未消费的 moduleTreeLoading/moduleKeyword/moduleExpandedKeys/deleteModule/moduleBreadcrumb → 移除
- useModuleSave 返回对象中未消费的 validateAutoCode/configSaving → 移除
- useModuleConfig 返回对象中未消费的 8 个成员 → 移除(仅保留 index.vue 解构的 5 个)
- FormInspector 中 .mm-fdesign__stale-tag 死样式(预留样式,模板未使用) → 删除
- ModuleBasicPanel 中 .mm-basic__hint 死样式(模板未使用) → 删除
lint: 零新增告警(54w/3e 不变);test: 184/185 通过(唯一失败为既有 fms-table 判断)
|
2026-08-28 19:21:28 +08:00 |
|
oneao
|
fefdcb9ca8
|
refactor(module-management): R3 完成——form-edit 拆分收尾
- 接 index.vue:ModuleFormEditPanel import 改为 ./components/form-edit/FormEditPanel.vue
- 删除旧 components/ModuleFormEditPanel.vue(3168 行)
- 清理壳组件死样式(lib/ inspector/ prop/ toggle 等已迁至子组件)
- 验证:form-edit 组件图编译通过,dnd 14 例全绿,lint 零新增告警
按停损条款:FormCanvas/useFormDrag 交织最深且无测试保护,保留现状,留待下轮。
|
2026-08-28 19:04:13 +08:00 |
|
oneao
|
a85f9b0120
|
20260828173144
|
2026-08-28 17:31:45 +08:00 |
|
oneao
|
76b12cc5e1
|
refactor(module-management): R2c 表单设计面板 UI 归一
- 字段库搜索/占位符/栅格宽度/文本域高度输入 → ui Input(change 载荷改为值)
- 编辑方式切换 → ui RadioGroup;设计/数据视图切换 → ui Tabs(nav-only)
- 帮助气泡 → ui Popover(hover),删除自绘 help-pop/.mm-edit__help 样式
- 属性面板折叠/展开钮 → ui Button;状态开关×4 → ui Switch
- 分组名称内联编辑 → ui Input;确认/取消/齿轮/删除 → ui Button(type=ghost)
- 删除废弃 .mm-fdesign__toggle、.mm-edit__mode-btn、.mm-edit__view-btn 样式
- 适配 .mm-edit__mode / .mm-edit__view-switch 为紧凑字号
- 所有 Button 覆写样式加 .button 后缀(确保覆盖 ui Button 默认尺寸)
- 所有 Input 覆写样式加 .input-wrapper 后缀
- 替换 .mm-fdesign__span-control input[type=number] 为 .mm-fdesign__span-input.input-wrapper
|
2026-08-28 17:00:00 +08:00 |
|
oneao
|
8c506ae56c
|
refactor(module-management): R2b 表格设计面板 UI 归一
- 字段库搜索/带标题/列宽输入 → ui Input(change 载荷改为值)
- 编辑方式切换 → ui RadioGroup;设计/数据视图切换 → ui Tabs(nav-only)
- 帮助气泡 → ui Popover(hover),删除自绘 help-pop 样式
- 属性面板折叠/步进钮 → ui Button;状态开关×5 → ui Switch
- 删除 .mm-fdesign__toggle、.mm-edit__mode-btn、__view-btn 等死样式
|
2026-08-28 16:37:58 +08:00 |
|
oneao
|
ce3a9d87f8
|
refactor(module-management): R2a UI 归一——小文件替换为 ui 组件
- ui Input 补 defineExpose(focus/select/blur),供内联重命名程序化聚焦
- index.vue 树头新建按钮、ModuleBasicPanel 多语言按钮 → ui Button
- StructureTreeNode 内联重命名 input → ui Input,六个操作钮 → ui Button
- ModuleStructureTree 自绘右键菜单 → ui Dropdown(trigger=contextmenu),
删除自绘定位/关闭监听与 .mst-context-* 样式
|
2026-08-28 16:25:58 +08:00 |
|
oneao
|
2dba857880
|
refactor(module-management): R1 清场——删除无引用的 MenuDetailPanel/IconSelect 与过期 spec,useConfirm 合回 index.vue
|
2026-08-28 16:15:30 +08:00 |
|
oneao
|
91237c4a47
|
refactor(module-management): 阶段三——index.vue 拆出 useModuleTree/useModuleConfig/useModuleSave/useConfirm
|
2026-08-28 16:11:57 +08:00 |
|
oneao
|
27752351b9
|
refactor(module-management): 阶段二——抽取字段查询与共享纯函数
- 新建 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)
|
2026-08-28 15:22:04 +08:00 |
|
oneao
|
158eb3c029
|
refactor(module-management): 阶段一——抽取分组树推导 composable useGroupTree
- 新建 composables/useGroupTree.js:buildGroupTree/sortGroupNodesByXh/groupIdOfRow
纯函数导出 + useGroupTree(groupsRef, rowsRef) 返回 groupTree/groupNodeMap/
groupColumnsMap/bandMeta(统一含 maxLevel)/isDescendantGroup/groupIdOfRow
- ModuleTableEditPanel.vue:删除本地 7 份同体实现,改用 composable;
isDescendantOf 重命名为 isDescendantGroup(两处函数体逐字相同)
- structure-tree/ModuleStructureTree.vue:同样替换;删除「与面板 bandMeta 同源」注释
(复制关系已不成立);bandMeta 多出的 maxLevel 字段对其消费处无害
- ModuleTableEditPanel 中 watch(props.editConfig, …, { immediate: true }) 注册位置
保持不变,仍位于 bandMeta 等 computed 之后(避免 immediate 回调 TDZ)
行为不变;测试结果与基线一致(184 通过,2 个既有失败与本重构无关)
|
2026-08-28 14:20:58 +08:00 |
|
oneao
|
61ac01075b
|
chore: 重构前基线快照(工作区既有改动 + 重构计划文档)
|
2026-08-28 14:14:03 +08:00 |
|
oneao
|
35ca496b5f
|
20260827230636
|
2026-08-27 23:06:36 +08:00 |
|