From 9f21f8f1d52021fb4e3b283ef9bb6dd1a1d827fc Mon Sep 17 00:00:00 2001 From: roymondchen Date: Thu, 23 Apr 2026 17:03:04 +0800 Subject: [PATCH] =?UTF-8?q?refactor(form):=20=E6=8A=BD=E5=87=BA=20TableGro?= =?UTF-8?q?upList=20=E7=88=B6=E7=BB=84=E4=BB=B6=E7=BB=9F=E4=B8=80=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20Table/GroupList=20=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 TableGroupList 父组件集中持有 displayMode 状态并派生两种形态的 config,避免原实现通过直接改写 props.config 来触发视图切换 - 将公共的 toggle/add 按钮上移到 TableGroupList,Table/GroupList 通过 具名 slot + scoped slot 暴露位置与业务钩子(newHandler/addHandler) - m-form-table、m-form-group-list 统一注册为 TableGroupList,对外导出 的 MTable/MGroupList 也指向它,新增 MTableGroupList 显式导出 - useAdd 移除重复的 addable 计算,由父组件统一管理 Made-with: Cursor --- packages/form/src/containers/GroupList.vue | 45 +---- .../form/src/containers/TableGroupList.vue | 169 ++++++++++++++++++ packages/form/src/index.ts | 5 +- packages/form/src/plugin.ts | 7 +- packages/form/src/table/Table.vue | 50 +----- packages/form/src/table/useAdd.ts | 18 +- 6 files changed, 184 insertions(+), 110 deletions(-) create mode 100644 packages/form/src/containers/TableGroupList.vue diff --git a/packages/form/src/containers/GroupList.vue b/packages/form/src/containers/GroupList.vue index ad2d3973..1b0c464a 100644 --- a/packages/form/src/containers/GroupList.vue +++ b/packages/form/src/containers/GroupList.vue @@ -27,30 +27,19 @@ > diff --git a/packages/form/src/index.ts b/packages/form/src/index.ts index 3079ff16..f729a9b6 100644 --- a/packages/form/src/index.ts +++ b/packages/form/src/index.ts @@ -32,8 +32,9 @@ export { default as MFlexLayout } from './containers/FlexLayout.vue'; export { default as MPanel } from './containers/Panel.vue'; export { default as MRow } from './containers/Row.vue'; export { default as MTabs } from './containers/Tabs.vue'; -export { default as MTable } from './table/Table.vue'; -export { default as MGroupList } from './containers/GroupList.vue'; +export { default as MTable } from './containers/TableGroupList.vue'; +export { default as MGroupList } from './containers/TableGroupList.vue'; +export { default as MTableGroupList } from './containers/TableGroupList.vue'; export { default as MText } from './fields/Text.vue'; export { default as MNumber } from './fields/Number.vue'; export { default as MNumberRange } from './fields/NumberRange.vue'; diff --git a/packages/form/src/plugin.ts b/packages/form/src/plugin.ts index 8abc6f55..c8a3ab47 100644 --- a/packages/form/src/plugin.ts +++ b/packages/form/src/plugin.ts @@ -21,10 +21,10 @@ import { type App } from 'vue'; import Container from './containers/Container.vue'; import Fieldset from './containers/Fieldset.vue'; import FlexLayout from './containers/FlexLayout.vue'; -import GroupList from './containers/GroupList.vue'; import Panel from './containers/Panel.vue'; import Row from './containers/Row.vue'; import MStep from './containers/Step.vue'; +import TableGroupList from './containers/TableGroupList.vue'; import Tabs from './containers/Tabs.vue'; import Cascader from './fields/Cascader.vue'; import Checkbox from './fields/Checkbox.vue'; @@ -46,7 +46,6 @@ import Text from './fields/Text.vue'; import Textarea from './fields/Textarea.vue'; import Time from './fields/Time.vue'; import Timerange from './fields/Timerange.vue'; -import Table from './table/Table.vue'; import { setConfig } from './utils/config'; import Form from './Form.vue'; import FormDialog from './FormDialog.vue'; @@ -70,11 +69,11 @@ export default { app.component('m-form-dialog', FormDialog); app.component('m-form-container', Container); app.component('m-form-fieldset', Fieldset); - app.component('m-form-group-list', GroupList); + app.component('m-form-group-list', TableGroupList); app.component('m-form-panel', Panel); app.component('m-form-row', Row); app.component('m-form-step', MStep); - app.component('m-form-table', Table); + app.component('m-form-table', TableGroupList); app.component('m-form-tab', Tabs); app.component('m-form-flex-layout', FlexLayout); app.component('m-fields-text', Text); diff --git a/packages/form/src/table/Table.vue b/packages/form/src/table/Table.vue index 60ee20ce..8ea285ed 100644 --- a/packages/form/src/table/Table.vue +++ b/packages/form/src/table/Table.vue @@ -34,13 +34,7 @@
- 展开配置 + 清空
- {{ config.addButtonConfig?.text || '新增一行' }} +
@@ -97,7 +81,7 @@