@kp-ui/lowcode-pc 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/assets/styles/style.css +61 -59
  2. package/core/src/components/common/RenderWidgetList.vue.js +1 -1
  3. package/core/src/components/common/RenderWidgetList.vue2.js +4 -2
  4. package/core/src/components/common/RenderWidgetList.vue2.js.map +1 -1
  5. package/core/src/hooks/useField.js +1 -0
  6. package/core/src/hooks/useField.js.map +1 -1
  7. package/core/src/store/useTableColumnStore.js +42 -0
  8. package/core/src/store/useTableColumnStore.js.map +1 -0
  9. package/package.json +1 -1
  10. package/src/components/desginer/form-widget/container-widget/useTableWidget.js +59 -3
  11. package/src/components/desginer/form-widget/container-widget/useTableWidget.js.map +1 -1
  12. package/src/components/desginer/widget-panel/advanced/data-table.js +1 -1
  13. package/src/components/desginer/widget-panel/advanced/data-table.js.map +1 -1
  14. package/src/components/field-widget/diy-compontent-widget.vue2.js +7 -3
  15. package/src/components/field-widget/diy-compontent-widget.vue2.js.map +1 -1
  16. package/src/components/form-render/container-items/data-table-widget.vue.js +1 -1
  17. package/src/components/form-render/container-items/data-table-widget.vue2.js +25 -68
  18. package/src/components/form-render/container-items/data-table-widget.vue2.js.map +1 -1
  19. package/src/components/form-render/container-items/grid-sub-form-widget.vue.js +1 -1
  20. package/src/components/form-render/container-items/grid-sub-form-widget.vue2.js +9 -8
  21. package/src/components/form-render/container-items/grid-sub-form-widget.vue2.js.map +1 -1
  22. package/src/components/public/ConfigView/CustomPageRender.vue.js +10 -4
  23. package/src/components/public/ConfigView/CustomPageRender.vue.js.map +1 -1
  24. package/src/components/public/DataTableColumnDialog.vue.js +1 -1
  25. package/src/components/public/DataTableColumnDialog.vue2.js +103 -32
  26. package/src/components/public/DataTableColumnDialog.vue2.js.map +1 -1
  27. package/stats.html +1 -1
@@ -11,6 +11,7 @@ import { useExecFunction, tranformAntTableColumnToVxetableColumn, CustomItemRend
11
11
  import "../../widget-panel/widgetsConfig.js";
12
12
  import ActionButtonListRender from "../../../public/ActionButtonListRender.vue.js";
13
13
  /* empty css */
14
+ import { useTableColumnStore } from "../../../../../core/src/store/useTableColumnStore.js";
14
15
  import { useDataHttp } from "../../../../../core/src/hooks/useDataHttp.js";
15
16
  import { useI18n } from "../../../../../core/src/utils/i18n.js";
16
17
  function useTableWidget({ props, fieldModel, designState = false }) {
@@ -19,6 +20,7 @@ function useTableWidget({ props, fieldModel, designState = false }) {
19
20
  const { widget } = props;
20
21
  const { i18nt } = useI18n();
21
22
  const { executeFunction, context } = useExecFunction();
23
+ const tableColumnStore = useTableColumnStore();
22
24
  const { loadataSource, setPagination, getPagination, pagintion } = useDataHttp({
23
25
  props
24
26
  });
@@ -26,10 +28,59 @@ function useTableWidget({ props, fieldModel, designState = false }) {
26
28
  var _a;
27
29
  return ((_a = widget == null ? void 0 : widget.options) == null ? void 0 : _a.showColumnManager) ?? false;
28
30
  });
31
+ const columnList = ref([]);
32
+ const initColumnList = () => {
33
+ const storageKey = props.field.options.name || props.field.id;
34
+ const originalColumns = props.field.options.tableColumns || [];
35
+ let savedColumnList = [];
36
+ if (storageKey && tableColumnStore.hasTableConfig(storageKey)) {
37
+ savedColumnList = tableColumnStore.getColumnList(storageKey);
38
+ }
39
+ if (originalColumns.length > 0) {
40
+ const mergedColumns = originalColumns.map((col) => {
41
+ const saved = savedColumnList.find((item) => item.dataIndex === col.dataIndex);
42
+ if (saved) {
43
+ return {
44
+ ...col,
45
+ visible: saved.visible !== false,
46
+ fixed: saved.fixed,
47
+ displayOrdinal: saved.displayOrdinal,
48
+ title: col.title || col.dataIndex
49
+ };
50
+ }
51
+ return {
52
+ ...col,
53
+ visible: col.show !== false,
54
+ title: col.title || col.dataIndex
55
+ };
56
+ });
57
+ mergedColumns.sort((a, b) => {
58
+ const aOrder = a.displayOrdinal ?? 9999;
59
+ const bOrder = b.displayOrdinal ?? 9999;
60
+ return aOrder - bOrder;
61
+ });
62
+ columnList.value = mergedColumns;
63
+ props.field.options.tableColumns = mergedColumns.map((col) => ({
64
+ ...col,
65
+ show: col.visible !== false
66
+ }));
67
+ }
68
+ };
69
+ const handleUpdateColumns = (newColumns) => {
70
+ if (props.field.options.tableColumns) {
71
+ props.field.options.tableColumns = newColumns.map((col) => ({
72
+ ...col,
73
+ show: col.visible !== false
74
+ }));
75
+ }
76
+ initColumnList();
77
+ };
29
78
  const columns = computed(() => {
79
+ var _a;
30
80
  const leftFixedColumns = [];
31
81
  const optins = (widget == null ? void 0 : widget.options) || {};
32
- const { rowSelection, showIndex, tableColumns = [] } = (widget == null ? void 0 : widget.options) ?? {};
82
+ const tableColumns = ((_a = widget == null ? void 0 : widget.options) == null ? void 0 : _a.tableColumns) || [];
83
+ const { rowSelection, showIndex } = (widget == null ? void 0 : widget.options) ?? {};
33
84
  if (rowSelection == null ? void 0 : rowSelection.hasRowSelection) {
34
85
  leftFixedColumns.push({
35
86
  title: rowSelection.columnTitle,
@@ -62,7 +113,7 @@ function useTableWidget({ props, fieldModel, designState = false }) {
62
113
  ...item,
63
114
  ...handleColumnItem(item),
64
115
  titleSuffix: item.titleSuffix ? { content: item.titleSuffixContent } : false,
65
- hidden: item.show === false
116
+ visible: item.show !== false
66
117
  };
67
118
  });
68
119
  const rightFixedColumns = [];
@@ -307,7 +358,12 @@ function useTableWidget({ props, fieldModel, designState = false }) {
307
358
  tableSize,
308
359
  tableWidth,
309
360
  tableProps,
310
- tableRef
361
+ tableRef,
362
+ columns,
363
+ // 列管理相关
364
+ columnList,
365
+ initColumnList,
366
+ handleUpdateColumns
311
367
  };
312
368
  }
313
369
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"useTableWidget.js","sources":["../../../../../../src/components/desginer/form-widget/container-widget/useTableWidget.ts"],"sourcesContent":["import { computed, Ref, h, ref, watchEffect, watch, isVNode } from 'vue';\nimport { VxeGridInstance } from 'vxe-table';\nimport { cloneDeep, isArray, omit } from 'lodash-es';\nimport { ActionButtonListRender } from '@kp-ui/lowcode-pc';\n\nimport { useDataHttp, useI18n, WidgetProps } from '@kp-ui/lowcode-core';\nimport {\n tranformAntTableColumnToVxetableColumn,\n tranformAntSizzVxetableSize,\n ImeTableProps,\n useExecFunction,\n CustomItemRender,\n TpfDelConfirm\n} from 'tmgc2-share';\nimport { message } from 'ant-design-vue';\ntype useTableWidgetProps = {\n props: WidgetProps;\n fieldModel: Ref<any>;\n designState?: boolean;\n};\n\nexport function useTableWidget<T>({ props, fieldModel, designState = false }: useTableWidgetProps) {\n const tableRef = ref<VxeGridInstance>();\n const isLoading = ref(false);\n const { widget } = props;\n const { i18nt } = useI18n();\n const { executeFunction, context } = useExecFunction();\n const { loadataSource, setPagination, getPagination, pagintion } = useDataHttp({\n props\n });\n const showColumnManager = computed(() => widget?.options?.showColumnManager ?? false);\n\n const columns = computed(() => {\n const leftFixedColumns: any[] = [];\n const optins = widget?.options || {};\n const { rowSelection, showIndex, tableColumns = [] } = widget?.options ?? {};\n if (rowSelection?.hasRowSelection) {\n leftFixedColumns.push({\n title: rowSelection.columnTitle,\n width: rowSelection.columnWidth,\n align: 'left',\n fixed: 'left',\n dataIndex: 'checkbox',\n type: 'checkbox'\n });\n }\n if (showIndex) {\n leftFixedColumns.push({\n title: i18nt('designer.setting.seq'),\n align: 'left',\n width: 90,\n fixed: 'left',\n maxWidth: 100,\n dataIndex: 'seq',\n resizable: true,\n type: 'seq'\n });\n }\n\n const centerColumns = tableColumns.map(item => {\n // 确保每列都有 dataIndex/field,否则 storage 功能无法正常工作\n if (!item.dataIndex && !item.field) {\n console.warn(\n `[vxe-table] 列 \"${item.title}\" 缺少 dataIndex 属性,storage 功能可能无法正常工作`\n );\n }\n // 使用 hidden 属性控制列的隐藏(vxe-table 使用 hidden 而不是 visible)\n return {\n ...item,\n ...handleColumnItem(item),\n titleSuffix: item.titleSuffix ? { content: item.titleSuffixContent } : false,\n hidden: item.show === false\n };\n });\n const rightFixedColumns: any[] = [];\n if (optins.showButtonsColumn) {\n const operationButtons = optins.operationButtons ?? [];\n rightFixedColumns.push({\n fixed: 'right',\n align: 'center',\n title: optins.buttonsColumnTitle,\n width: optins.buttonsColumnWidth,\n dataIndex: 'action',\n slots: {\n default: scope => {\n return h(ActionButtonListRender, {\n buttonList: operationButtons,\n flex: 'center',\n scope: scope,\n ctx: context.value,\n onClick: (e: Event) => {\n e.stopPropagation();\n }\n });\n }\n }\n });\n }\n\n // 把customRender渲染成 bodyCell 插槽\n const _columns = [...leftFixedColumns, ...centerColumns, ...rightFixedColumns];\n\n return tranformAntTableColumnToVxetableColumn(_columns);\n });\n\n // 处理列配置\n const handleColumnItem = item => {\n const res = omit(item, ['customRender']);\n const customRenderFn = item.customRender;\n item.minWidth = 50;\n item.maxWidth = 1200;\n if (item.isAutoWidth) {\n item.width = null;\n delete item.width;\n } else {\n item.width = isNaN(Number(item.width)) ? item.width : Number(item.width);\n }\n if (!customRenderFn) return item;\n\n return {\n ...res,\n slots: {\n default(scope) {\n const Com = executeFunction({\n source: widget?.options?.name,\n functionBody: customRenderFn,\n params: {\n index: scope.rowIndex,\n record: scope.row,\n ...scope\n },\n errorCallback: error => {\n console.error('Custom render error:', error);\n }\n });\n if (isVNode(Com)) {\n return h(CustomItemRender, { is: Com });\n }\n return Com;\n }\n }\n };\n };\n\n const tableWidth = computed(() => widget.options.tableWidth);\n const tableSize = computed(() => widget.options.tableSize);\n\n const onSortChange = () => {\n initTableSoureData();\n };\n\n const rowKey = computed(() => widget.options.rowKey);\n\n const tableProps = computed<ImeTableProps>(() => {\n const {\n tableSize,\n rowKey,\n tableHeight = 300,\n border = false,\n lineHeight = 50,\n colorRow = false,\n showPagination = true\n } = widget.options;\n\n return {\n id: widget.id,\n showPagination,\n size: tranformAntSizzVxetableSize(tableSize),\n height: tableHeight,\n border: border ?? false,\n data: fieldModel.value || [],\n columns: columns.value,\n sortConfig: {\n trigger: 'cell',\n remote: true,\n orders: ['ascend', 'descend', null]\n },\n rowConfig: {\n keyField: rowKey,\n isCurrent: colorRow,\n isHover: true\n },\n customConfig: {\n // 启用 localStorage 本地保存列配置(列宽、冻结、顺序等)\n // 注意:启用 storage 时,所有列必须设置 dataIndex/field 属性,否则会出现错误\n // 特殊列类型(checkbox、seq)也需要设置 dataIndex,如:'checkbox'、'seq'\n storage: !designState\n },\n checkboxConfig: {\n isShiftKey: true,\n checkMethod: data => {\n return executeFunction({\n functionBody: widget.options.rowSelection?.checkMethod,\n params: data,\n keys: ['row']\n });\n }\n },\n cellConfig: {\n height: lineHeight\n }\n } as ImeTableProps;\n });\n\n const setTableRef = _tableRef => {\n tableRef.value = _tableRef;\n };\n\n const initTableSoureData = async () => {\n if (props.field.options.dsEnabled) {\n isLoading.value = true;\n try {\n const data = await loadataSource();\n const tableData = data?.list || [];\n fieldModel.value = cloneDeep(tableData || []);\n setPagination(data);\n } catch (error) {\n fieldModel.value = [];\n console.error(error);\n }\n } else {\n fieldModel.value = widget.options.dataSource || [];\n setPagination({\n total: widget.options.dataSource?.length || 0\n });\n }\n isLoading.value = false;\n };\n\n type EventType = 'onDblclick' | 'onMouseenter' | 'onMouseleave' | 'onClick';\n const onRunEvent = ({ row, $event }: any, type: EventType) => {\n executeFunction({\n functionBody: widget.options.customRow[type],\n params: [row, $event],\n keys: ['record', 'event']\n });\n };\n\n const setTableData = (data: T[]) => {\n setValue(data);\n };\n\n const handleTableChange = ({ sorts }) => {\n const fn = widget.options.onTableChange;\n if (fn) {\n executeFunction({\n functionBody: fn,\n params: {\n pagination: getPagination(),\n currentDataSource: getDataSource(),\n sorter: sorts\n },\n keys: ['pagination', 'sorter', 'currentDataSource']\n });\n }\n };\n\n // 选中 checkbox回调\n const onCheckboxChange = (selectedRowInfo: any) => {\n executeFunction({\n functionBody: widget.options.rowSelection.onChange,\n keys: ['selectedRowKeys', 'selectedRows'],\n params: selectedRowInfo\n });\n };\n\n const getDataSource = () => {\n return fieldModel.value;\n };\n\n const insertTableValue = (data: T) => {\n if (!fieldModel.value) {\n fieldModel.value = [];\n }\n fieldModel.value.push(cloneDeep(data));\n };\n\n const setValue = (data: T[]) => {\n if (!isArray(data)) {\n return console.error('表格数据类型错误');\n }\n fieldModel.value = cloneDeep(data);\n };\n\n const getTableColumns = () => {\n return props.field.options.tableColumns;\n };\n\n const setTableColumns = (data: any[]) => {\n props.field.options.tableColumns = data;\n };\n\n const delSelectRow = async delKeys => {\n if (!delKeys.length) return;\n try {\n await TpfDelConfirm({ content: i18nt('确定删除选中的数据吗') });\n const newList = fieldModel.value.filter(item => !delKeys?.includes(item[rowKey.value]));\n setValue(newList);\n message.success(i18nt('操作成功'));\n } catch {}\n };\n\n const tableDefinExpoed = {\n delSelectRow,\n getTableColumns,\n setTableColumns,\n setValue,\n insertTableValue,\n setPagination,\n getDataSource,\n getPagination,\n initTableSoureData\n };\n\n watch(\n () => props.field.options.dsEnabled,\n () => {\n initTableSoureData();\n }\n );\n\n return {\n showColumnManager,\n rowKey,\n onCheckboxChange,\n tableDefinExpoed,\n onSortChange,\n pagintion,\n setPagination,\n getPagination,\n handleTableChange,\n setTableData,\n showPagination: computed(() => !!props.field.options.showPagination),\n onRunEvent,\n isLoading,\n initTableSoureData,\n setTableRef,\n tableSize,\n tableWidth,\n tableProps,\n tableRef\n };\n}\n"],"names":["tableSize","rowKey"],"mappings":"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"}
1
+ {"version":3,"file":"useTableWidget.js","sources":["../../../../../../src/components/desginer/form-widget/container-widget/useTableWidget.ts"],"sourcesContent":["import { computed, Ref, h, ref, watchEffect, watch, isVNode } from 'vue';\nimport { VxeGridInstance } from 'vxe-table';\nimport { cloneDeep, isArray, omit } from 'lodash-es';\nimport { ActionButtonListRender } from '@kp-ui/lowcode-pc';\n\nimport { useDataHttp, useI18n, WidgetProps, useTableColumnStore } from '@kp-ui/lowcode-core';\nimport {\n tranformAntTableColumnToVxetableColumn,\n tranformAntSizzVxetableSize,\n ImeTableProps,\n useExecFunction,\n CustomItemRender,\n TpfDelConfirm\n} from 'tmgc2-share';\nimport { message } from 'ant-design-vue';\ntype useTableWidgetProps = {\n props: WidgetProps;\n fieldModel: Ref<any>;\n designState?: boolean;\n};\n\nexport function useTableWidget<T>({ props, fieldModel, designState = false }: useTableWidgetProps) {\n const tableRef = ref<VxeGridInstance>();\n const isLoading = ref(false);\n const { widget } = props;\n const { i18nt } = useI18n();\n const { executeFunction, context } = useExecFunction();\n const tableColumnStore = useTableColumnStore();\n const { loadataSource, setPagination, getPagination, pagintion } = useDataHttp({\n props\n });\n const showColumnManager = computed(() => widget?.options?.showColumnManager ?? false);\n\n // 列管理相关\n const columnList = ref<any[]>([]);\n\n // 初始化列列表(从 store 读取已保存的配置)\n const initColumnList = () => {\n const storageKey = props.field.options.name || props.field.id;\n const originalColumns = props.field.options.tableColumns || [];\n\n // 从 store 读取已保存的列配置\n let savedColumnList: any[] = [];\n if (storageKey && tableColumnStore.hasTableConfig(storageKey)) {\n savedColumnList = tableColumnStore.getColumnList(storageKey);\n }\n\n // 合并保存的配置和原始列配置\n if (originalColumns.length > 0) {\n const mergedColumns = originalColumns.map(col => {\n // 查找是否有保存的配置\n const saved = savedColumnList.find(item => item.dataIndex === col.dataIndex);\n if (saved) {\n // 使用保存的配置(visible、fixed、displayOrdinal)\n return {\n ...col,\n visible: saved.visible !== false,\n fixed: saved.fixed,\n displayOrdinal: saved.displayOrdinal,\n title: col.title || col.dataIndex\n };\n }\n // 没有保存的配置,使用默认值\n return {\n ...col,\n visible: col.show !== false,\n title: col.title || col.dataIndex\n };\n });\n\n // 按照 displayOrdinal 排序\n mergedColumns.sort((a, b) => {\n const aOrder = a.displayOrdinal ?? 9999;\n const bOrder = b.displayOrdinal ?? 9999;\n return aOrder - bOrder;\n });\n\n columnList.value = mergedColumns;\n\n // 同步更新 props.field.options.tableColumns,将 visible 转换为 show\n props.field.options.tableColumns = mergedColumns.map(col => ({\n ...col,\n show: col.visible !== false\n }));\n }\n };\n\n // 处理列更新\n const handleUpdateColumns = (newColumns: any[]) => {\n // 更新原始配置,同步 show 属性\n if (props.field.options.tableColumns) {\n props.field.options.tableColumns = newColumns.map(col => ({\n ...col,\n show: col.visible !== false\n }));\n }\n\n // 重新初始化列列表\n initColumnList();\n };\n\n const columns = computed(() => {\n const leftFixedColumns: any[] = [];\n const optins = widget?.options || {};\n // 直接使用 widget.options.tableColumns 而不是解构,确保响应式依赖正确\n const tableColumns = widget?.options?.tableColumns || [];\n const { rowSelection, showIndex } = widget?.options ?? {};\n if (rowSelection?.hasRowSelection) {\n leftFixedColumns.push({\n title: rowSelection.columnTitle,\n width: rowSelection.columnWidth,\n align: 'left',\n fixed: 'left',\n dataIndex: 'checkbox',\n type: 'checkbox'\n });\n }\n if (showIndex) {\n leftFixedColumns.push({\n title: i18nt('designer.setting.seq'),\n align: 'left',\n width: 90,\n fixed: 'left',\n maxWidth: 100,\n dataIndex: 'seq',\n resizable: true,\n type: 'seq'\n });\n }\n\n const centerColumns = tableColumns.map(item => {\n // 确保每列都有 dataIndex/field,否则 storage 功能无法正常工作\n if (!item.dataIndex && !item.field) {\n console.warn(\n `[vxe-table] 列 \"${item.title}\" 缺少 dataIndex 属性,storage 功能可能无法正常工作`\n );\n }\n // 使用 visible 属性控制列的隐藏(vxe-table visible)\n return {\n ...item,\n ...handleColumnItem(item),\n titleSuffix: item.titleSuffix ? { content: item.titleSuffixContent } : false,\n visible: item.show !== false\n };\n });\n const rightFixedColumns: any[] = [];\n if (optins.showButtonsColumn) {\n const operationButtons = optins.operationButtons ?? [];\n rightFixedColumns.push({\n fixed: 'right',\n align: 'center',\n title: optins.buttonsColumnTitle,\n width: optins.buttonsColumnWidth,\n dataIndex: 'action',\n slots: {\n default: scope => {\n return h(ActionButtonListRender, {\n buttonList: operationButtons,\n flex: 'center',\n scope: scope,\n ctx: context.value,\n onClick: (e: Event) => {\n e.stopPropagation();\n }\n });\n }\n }\n });\n }\n\n // 把customRender渲染成 bodyCell 插槽\n const _columns = [...leftFixedColumns, ...centerColumns, ...rightFixedColumns];\n\n return tranformAntTableColumnToVxetableColumn(_columns);\n });\n\n // 处理列配置\n const handleColumnItem = item => {\n const res = omit(item, ['customRender']);\n const customRenderFn = item.customRender;\n item.minWidth = 50;\n item.maxWidth = 1200;\n if (item.isAutoWidth) {\n item.width = null;\n delete item.width;\n } else {\n item.width = isNaN(Number(item.width)) ? item.width : Number(item.width);\n }\n if (!customRenderFn) return item;\n\n return {\n ...res,\n slots: {\n default(scope) {\n const Com = executeFunction({\n source: widget?.options?.name,\n functionBody: customRenderFn,\n params: {\n index: scope.rowIndex,\n record: scope.row,\n ...scope\n },\n errorCallback: error => {\n console.error('Custom render error:', error);\n }\n });\n if (isVNode(Com)) {\n return h(CustomItemRender, { is: Com });\n }\n return Com;\n }\n }\n };\n };\n\n const tableWidth = computed(() => widget.options.tableWidth);\n const tableSize = computed(() => widget.options.tableSize);\n\n const onSortChange = () => {\n initTableSoureData();\n };\n\n const rowKey = computed(() => widget.options.rowKey);\n\n const tableProps = computed<ImeTableProps>(() => {\n const {\n tableSize,\n rowKey,\n tableHeight = 300,\n border = false,\n lineHeight = 50,\n colorRow = false,\n showPagination = true\n } = widget.options;\n\n return {\n id: widget.id,\n showPagination,\n size: tranformAntSizzVxetableSize(tableSize),\n height: tableHeight,\n border: border ?? false,\n data: fieldModel.value || [],\n columns: columns.value,\n sortConfig: {\n trigger: 'cell',\n remote: true,\n orders: ['ascend', 'descend', null]\n },\n rowConfig: {\n keyField: rowKey,\n isCurrent: colorRow,\n isHover: true\n },\n customConfig: {\n // 启用 localStorage 本地保存列配置(列宽、冻结、顺序等)\n // 注意:启用 storage 时,所有列必须设置 dataIndex/field 属性,否则会出现错误\n // 特殊列类型(checkbox、seq)也需要设置 dataIndex,如:'checkbox'、'seq'\n storage: !designState\n },\n checkboxConfig: {\n isShiftKey: true,\n checkMethod: data => {\n return executeFunction({\n functionBody: widget.options.rowSelection?.checkMethod,\n params: data,\n keys: ['row']\n });\n }\n },\n cellConfig: {\n height: lineHeight\n }\n } as ImeTableProps;\n });\n\n const setTableRef = _tableRef => {\n tableRef.value = _tableRef;\n };\n\n const initTableSoureData = async () => {\n if (props.field.options.dsEnabled) {\n isLoading.value = true;\n try {\n const data = await loadataSource();\n const tableData = data?.list || [];\n fieldModel.value = cloneDeep(tableData || []);\n setPagination(data);\n } catch (error) {\n fieldModel.value = [];\n console.error(error);\n }\n } else {\n fieldModel.value = widget.options.dataSource || [];\n setPagination({\n total: widget.options.dataSource?.length || 0\n });\n }\n isLoading.value = false;\n };\n\n type EventType = 'onDblclick' | 'onMouseenter' | 'onMouseleave' | 'onClick';\n const onRunEvent = ({ row, $event }: any, type: EventType) => {\n executeFunction({\n functionBody: widget.options.customRow[type],\n params: [row, $event],\n keys: ['record', 'event']\n });\n };\n\n const setTableData = (data: T[]) => {\n setValue(data);\n };\n\n const handleTableChange = ({ sorts }) => {\n const fn = widget.options.onTableChange;\n if (fn) {\n executeFunction({\n functionBody: fn,\n params: {\n pagination: getPagination(),\n currentDataSource: getDataSource(),\n sorter: sorts\n },\n keys: ['pagination', 'sorter', 'currentDataSource']\n });\n }\n };\n\n // 选中 checkbox回调\n const onCheckboxChange = (selectedRowInfo: any) => {\n executeFunction({\n functionBody: widget.options.rowSelection.onChange,\n keys: ['selectedRowKeys', 'selectedRows'],\n params: selectedRowInfo\n });\n };\n\n const getDataSource = () => {\n return fieldModel.value;\n };\n\n const insertTableValue = (data: T) => {\n if (!fieldModel.value) {\n fieldModel.value = [];\n }\n fieldModel.value.push(cloneDeep(data));\n };\n\n const setValue = (data: T[]) => {\n if (!isArray(data)) {\n return console.error('表格数据类型错误');\n }\n fieldModel.value = cloneDeep(data);\n };\n\n const getTableColumns = () => {\n return props.field.options.tableColumns;\n };\n\n const setTableColumns = (data: any[]) => {\n props.field.options.tableColumns = data;\n };\n\n const delSelectRow = async delKeys => {\n if (!delKeys.length) return;\n try {\n await TpfDelConfirm({ content: i18nt('确定删除选中的数据吗') });\n const newList = fieldModel.value.filter(item => !delKeys?.includes(item[rowKey.value]));\n setValue(newList);\n message.success(i18nt('操作成功'));\n } catch {}\n };\n\n const tableDefinExpoed = {\n delSelectRow,\n getTableColumns,\n setTableColumns,\n setValue,\n insertTableValue,\n setPagination,\n getDataSource,\n getPagination,\n initTableSoureData\n };\n\n watch(\n () => props.field.options.dsEnabled,\n () => {\n initTableSoureData();\n }\n );\n\n return {\n showColumnManager,\n rowKey,\n onCheckboxChange,\n tableDefinExpoed,\n onSortChange,\n pagintion,\n setPagination,\n getPagination,\n handleTableChange,\n setTableData,\n showPagination: computed(() => !!props.field.options.showPagination),\n onRunEvent,\n isLoading,\n initTableSoureData,\n setTableRef,\n tableSize,\n tableWidth,\n tableProps,\n tableRef,\n columns,\n // 列管理相关\n columnList,\n initColumnList,\n handleUpdateColumns\n };\n}\n"],"names":["tableSize","rowKey"],"mappings":"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"}
@@ -36,7 +36,7 @@ const dataTable = (ops = {}) => {
36
36
  showSorterTooltip: false
37
37
  }
38
38
  ],
39
- // showColumnManager: false,
39
+ showColumnManager: false,
40
40
  showButtonsColumn: false,
41
41
  buttonsColumnTitle: "操作",
42
42
  buttonsColumnWidth: 200,
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.js","sources":["../../../../../../src/components/desginer/widget-panel/advanced/data-table.ts"],"sourcesContent":["import { rowSelectionType } from '@kp-ui/lowcode-core/src/types/rowSelectionType';\nimport { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\nimport type { HttpConfig } from 'tmgc2-share';\n\nexport interface DataTableOptions extends WidgetOptions {\n lineHeight: number | string;\n tableHeight: number | string;\n tableWidth: number | string;\n showColumnManager: boolean;\n showIndex: boolean;\n showPagination: boolean;\n border: boolean;\n tableSize: string;\n virtual: boolean;\n tableColumns: any[];\n showButtonsColumn: boolean;\n buttonsColumnWidth: number;\n operationButtons: any[];\n dsEnabled: boolean;\n http: HttpConfig;\n dataReqHandlerCode: string;\n dataHandlerCode: string;\n rowKey: string;\n childrenKey: string;\n dataSource: any[];\n onCreated: string;\n onMounted: string;\n colorRow: boolean;\n rowSelection: rowSelectionType;\n customRow: {\n onClick: string;\n onDblclick: string;\n onMouseenter: string;\n onMouseleave: string;\n };\n onTableChange: string;\n pagination: {\n pageSizeOptions: any[];\n current: number;\n hideOnSinglePage: false;\n pageSize: number;\n total: number;\n showQuickJumper: boolean;\n showSizeChanger: boolean;\n onPageSizeChange: string;\n showTotal: (number) => string;\n };\n}\n\nexport interface DataTableWidget extends Widget<DataTableOptions> {}\n\nexport const dataTable = (ops = {} as any): DataTableWidget => {\n return {\n id: '',\n key: getUuidKey(),\n type: 'data-table',\n category: 'container',\n icon: 'data-table',\n options: {\n lineHeight: 50,\n name: '',\n label: 'data-table',\n hidden: false,\n tableHeight: '300px',\n tableWidth: '100%',\n customClass: [],\n showIndex: false,\n showPagination: true,\n border: false,\n tableSize: 'small',\n virtual: false,\n tableColumns: [\n {\n columnId: 1,\n dataIndex: 'name',\n titleSuffix: false,\n title: '姓名',\n width: 150,\n show: true,\n align: 'center',\n fixed: '',\n sorter: false,\n customRender: '',\n ellipsis: true,\n resizable: true,\n showSorterTooltip: false\n }\n ],\n // showColumnManager: false,\n showButtonsColumn: false,\n buttonsColumnTitle: '操作',\n buttonsColumnWidth: 200,\n operationButtons: [\n {\n name: 'detail',\n label: '详情',\n type: 'link',\n shape: 'default',\n size: 'small',\n hidden: false,\n disabled: false,\n onClick: ''\n }\n ],\n dsEnabled: false,\n http: {\n url: '',\n method: 'get',\n data: {},\n params: {}\n },\n dataReqHandlerCode: '',\n dataHandlerCode: '',\n rowKey: '_id',\n childrenKey: 'children',\n dataSource: [],\n onCreated: '',\n onMounted: '',\n customRow: {\n onClick: '',\n onDblclick: '',\n onMouseenter: '',\n onMouseleave: ''\n },\n onTableChange: '',\n pagination: {\n pageSizeOptions: ['10', '20', '50', '100'],\n current: 1,\n hideOnSinglePage: false,\n pageSize: 20,\n total: 0,\n showQuickJumper: true,\n showSizeChanger: true,\n position: ['bottomRight'],\n showTotal: total => `共 ${total} 条`\n },\n colorRow: true,\n rowSelection: {\n hasRowSelection: false,\n preserveSelectedRowKeys: false,\n fixed: true,\n onChange: 'console.log(selectedRowKeys, selectedRows)',\n columnWidth: 32,\n checkMethod: `console.log(row);\\nreturn true;`\n },\n ...ops\n }\n };\n};\n"],"names":[],"mappings":";AAoDO,MAAM,YAAY,CAAC,MAAM,OAA+B;AAC3D,SAAO;AAAA,IACH,IAAI;AAAA,IACJ,KAAK,WAAA;AAAA,IACL,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,MACL,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,aAAa,CAAA;AAAA,MACb,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,SAAS;AAAA,MACT,cAAc;AAAA,QACV;AAAA,UACI,UAAU;AAAA,UACV,WAAW;AAAA,UACX,aAAa;AAAA,UACb,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,UAAU;AAAA,UACV,WAAW;AAAA,UACX,mBAAmB;AAAA,QAAA;AAAA,MACvB;AAAA;AAAA,MAGJ,mBAAmB;AAAA,MACnB,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,QACd;AAAA,UACI,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,SAAS;AAAA,QAAA;AAAA,MACb;AAAA,MAEJ,WAAW;AAAA,MACX,MAAM;AAAA,QACF,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM,CAAA;AAAA,QACN,QAAQ,CAAA;AAAA,MAAC;AAAA,MAEb,oBAAoB;AAAA,MACpB,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,YAAY,CAAA;AAAA,MACZ,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,QACP,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,cAAc;AAAA,MAAA;AAAA,MAElB,eAAe;AAAA,MACf,YAAY;AAAA,QACR,iBAAiB,CAAC,MAAM,MAAM,MAAM,KAAK;AAAA,QACzC,SAAS;AAAA,QACT,kBAAkB;AAAA,QAClB,UAAU;AAAA,QACV,OAAO;AAAA,QACP,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,QACjB,UAAU,CAAC,aAAa;AAAA,QACxB,WAAW,CAAA,UAAS,KAAK,KAAK;AAAA,MAAA;AAAA,MAElC,UAAU;AAAA,MACV,cAAc;AAAA,QACV,iBAAiB;AAAA,QACjB,yBAAyB;AAAA,QACzB,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,QACb,aAAa;AAAA;AAAA,MAAA;AAAA,MAEjB,GAAG;AAAA,IAAA;AAAA,EACP;AAER;"}
1
+ {"version":3,"file":"data-table.js","sources":["../../../../../../src/components/desginer/widget-panel/advanced/data-table.ts"],"sourcesContent":["import { rowSelectionType } from '@kp-ui/lowcode-core/src/types/rowSelectionType';\nimport { Widget, WidgetOptions } from '@kp-ui/lowcode-core/src/types/schema';\nimport { getUuidKey } from '@kp-ui/tool';\nimport type { HttpConfig } from 'tmgc2-share';\n\nexport interface DataTableOptions extends WidgetOptions {\n lineHeight: number | string;\n tableHeight: number | string;\n tableWidth: number | string;\n showColumnManager: boolean;\n showIndex: boolean;\n showPagination: boolean;\n border: boolean;\n tableSize: string;\n virtual: boolean;\n tableColumns: any[];\n showButtonsColumn: boolean;\n buttonsColumnWidth: number;\n operationButtons: any[];\n dsEnabled: boolean;\n http: HttpConfig;\n dataReqHandlerCode: string;\n dataHandlerCode: string;\n rowKey: string;\n childrenKey: string;\n dataSource: any[];\n onCreated: string;\n onMounted: string;\n colorRow: boolean;\n rowSelection: rowSelectionType;\n customRow: {\n onClick: string;\n onDblclick: string;\n onMouseenter: string;\n onMouseleave: string;\n };\n onTableChange: string;\n pagination: {\n pageSizeOptions: any[];\n current: number;\n hideOnSinglePage: false;\n pageSize: number;\n total: number;\n showQuickJumper: boolean;\n showSizeChanger: boolean;\n onPageSizeChange: string;\n showTotal: (number) => string;\n };\n}\n\nexport interface DataTableWidget extends Widget<DataTableOptions> {}\n\nexport const dataTable = (ops = {} as any): DataTableWidget => {\n return {\n id: '',\n key: getUuidKey(),\n type: 'data-table',\n category: 'container',\n icon: 'data-table',\n options: {\n lineHeight: 50,\n name: '',\n label: 'data-table',\n hidden: false,\n tableHeight: '300px',\n tableWidth: '100%',\n customClass: [],\n showIndex: false,\n showPagination: true,\n border: false,\n tableSize: 'small',\n virtual: false,\n tableColumns: [\n {\n columnId: 1,\n dataIndex: 'name',\n titleSuffix: false,\n title: '姓名',\n width: 150,\n show: true,\n align: 'center',\n fixed: '',\n sorter: false,\n customRender: '',\n ellipsis: true,\n resizable: true,\n showSorterTooltip: false\n }\n ],\n showColumnManager: false,\n showButtonsColumn: false,\n buttonsColumnTitle: '操作',\n buttonsColumnWidth: 200,\n operationButtons: [\n {\n name: 'detail',\n label: '详情',\n type: 'link',\n shape: 'default',\n size: 'small',\n hidden: false,\n disabled: false,\n onClick: ''\n }\n ],\n dsEnabled: false,\n http: {\n url: '',\n method: 'get',\n data: {},\n params: {}\n },\n dataReqHandlerCode: '',\n dataHandlerCode: '',\n rowKey: '_id',\n childrenKey: 'children',\n dataSource: [],\n onCreated: '',\n onMounted: '',\n customRow: {\n onClick: '',\n onDblclick: '',\n onMouseenter: '',\n onMouseleave: ''\n },\n onTableChange: '',\n pagination: {\n pageSizeOptions: ['10', '20', '50', '100'],\n current: 1,\n hideOnSinglePage: false,\n pageSize: 20,\n total: 0,\n showQuickJumper: true,\n showSizeChanger: true,\n position: ['bottomRight'],\n showTotal: total => `共 ${total} 条`\n },\n colorRow: true,\n rowSelection: {\n hasRowSelection: false,\n preserveSelectedRowKeys: false,\n fixed: true,\n onChange: 'console.log(selectedRowKeys, selectedRows)',\n columnWidth: 32,\n checkMethod: `console.log(row);\\nreturn true;`\n },\n ...ops\n }\n };\n};\n"],"names":[],"mappings":";AAoDO,MAAM,YAAY,CAAC,MAAM,OAA+B;AAC3D,SAAO;AAAA,IACH,IAAI;AAAA,IACJ,KAAK,WAAA;AAAA,IACL,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,MACL,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,aAAa,CAAA;AAAA,MACb,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,SAAS;AAAA,MACT,cAAc;AAAA,QACV;AAAA,UACI,UAAU;AAAA,UACV,WAAW;AAAA,UACX,aAAa;AAAA,UACb,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,UAAU;AAAA,UACV,WAAW;AAAA,UACX,mBAAmB;AAAA,QAAA;AAAA,MACvB;AAAA,MAEJ,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,QACd;AAAA,UACI,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,SAAS;AAAA,QAAA;AAAA,MACb;AAAA,MAEJ,WAAW;AAAA,MACX,MAAM;AAAA,QACF,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM,CAAA;AAAA,QACN,QAAQ,CAAA;AAAA,MAAC;AAAA,MAEb,oBAAoB;AAAA,MACpB,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,YAAY,CAAA;AAAA,MACZ,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,QACP,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,cAAc;AAAA,MAAA;AAAA,MAElB,eAAe;AAAA,MACf,YAAY;AAAA,QACR,iBAAiB,CAAC,MAAM,MAAM,MAAM,KAAK;AAAA,QACzC,SAAS;AAAA,QACT,kBAAkB;AAAA,QAClB,UAAU;AAAA,QACV,OAAO;AAAA,QACP,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,QACjB,UAAU,CAAC,aAAa;AAAA,QACxB,WAAW,CAAA,UAAS,KAAK,KAAK;AAAA,MAAA;AAAA,MAElC,UAAU;AAAA,MACV,cAAc;AAAA,QACV,iBAAiB;AAAA,QACjB,yBAAyB;AAAA,QACzB,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,QACb,aAAa;AAAA;AAAA,MAAA;AAAA,MAEjB,GAAG;AAAA,IAAA;AAAA,EACP;AAER;"}
@@ -1,5 +1,6 @@
1
- import { defineComponent, createBlock, createCommentVNode, unref, openBlock, mergeProps, withCtx, createElementVNode, resolveDynamicComponent } from "vue";
1
+ import { defineComponent, createBlock, createCommentVNode, unref, openBlock, mergeProps, withCtx, createElementVNode, resolveDynamicComponent, isVNode, h } from "vue";
2
2
  import FormItemWrapper from "./form-item-wrapper.vue.js";
3
+ import { CustomItemRender } from "tmgc2-share";
3
4
  import { ComponentNameEnum, WidgetTypeEnum } from "../../../core/src/constants/WidgetTypeEnum.js";
4
5
  import { useField } from "../../../core/src/hooks/useField.js";
5
6
  const _hoisted_1 = { class: "slot-wrapper-render" };
@@ -29,7 +30,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
29
30
  params: { data: fieldModel.value },
30
31
  keys: ["data"]
31
32
  });
32
- return component ?? null;
33
+ if (isVNode(component)) {
34
+ return h(CustomItemRender, { is: component, stopPropagation: false });
35
+ }
36
+ return component;
33
37
  };
34
38
  __expose({
35
39
  ...defineExposed
@@ -38,7 +42,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
38
42
  return !unref(handleHidden) ? (openBlock(), createBlock(FormItemWrapper, mergeProps({ key: 0 }, props, { rules: unref(rules) }), {
39
43
  default: withCtx(() => [
40
44
  createElementVNode("div", _hoisted_1, [
41
- (openBlock(), createBlock(resolveDynamicComponent(renderCompont()), {
45
+ (openBlock(), createBlock(resolveDynamicComponent(renderCompont), {
42
46
  ref_key: "fieldEditor",
43
47
  ref: fieldEditor
44
48
  }, null, 512))
@@ -1 +1 @@
1
- {"version":3,"file":"diy-compontent-widget.vue2.js","sources":["../../../../src/components/field-widget/diy-compontent-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper v-bind=\"props\" v-if=\"!handleHidden\" :rules=\"rules\">\n <div class=\"slot-wrapper-render\">\n <component ref=\"fieldEditor\" :is=\"renderCompont()\" />\n </div>\n </form-item-wrapper>\n</template>\n\n<script lang=\"ts\" setup>\n import { ComponentNameEnum, WidgetTypeEnum } from '@kp-ui/lowcode-core';\n import FormItemWrapper from './form-item-wrapper.vue';\n import { type FieldProps, useField } from '@kp-ui/lowcode-core';\n\n defineOptions({\n name: WidgetTypeEnum.bpmnEditor,\n componentName: ComponentNameEnum.FieldWidget\n });\n const props = withDefaults(defineProps<FieldProps>(), {});\n\n const { rules, fieldEditor, field, fieldModel, handleHidden, defineExposed, executeFunction } =\n useField(props);\n\n const renderCompont = () => {\n const component = executeFunction({\n functionBody: field.options.customRender,\n params: { data: fieldModel.value },\n keys: ['data']\n });\n\n return component ?? null;\n };\n\n defineExpose({\n ...defineExposed\n });\n</script>\n\n<style lang=\"scss\" scoped></style>\n"],"names":["_unref","_openBlock","_createBlock","_mergeProps","_createElementVNode","_resolveDynamicComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAiBI,UAAM,QAAQ;AAEd,UAAM,EAAE,OAAO,aAAa,OAAO,YAAY,cAAc,eAAe,gBAAA,IACxE,SAAS,KAAK;AAElB,UAAM,gBAAgB,MAAM;AACxB,YAAM,YAAY,gBAAgB;AAAA,QAC9B,cAAc,MAAM,QAAQ;AAAA,QAC5B,QAAQ,EAAE,MAAM,WAAW,MAAA;AAAA,QAC3B,MAAM,CAAC,MAAM;AAAA,MAAA,CAChB;AAED,aAAO,aAAa;AAAA,IACxB;AAEA,aAAa;AAAA,MACT,GAAG;AAAA,IAAA,CACN;;cAjCwCA,MAAA,YAAA,KAAzCC,aAAAC,YAIoB,iBAJpBC,WAIoB,EAAA,KAAA,EAAA,GAJO,OAAK,EAAwB,OAAOH,MAAA,KAAA,EAAA,CAAK,GAAA;AAAA,yBAChE,MAEM;AAAA,UAFNI,mBAEM,OAFN,YAEM;AAAA,aADFH,aAAAC,YAAqDG,wBAAnB,cAAA,CAAa,GAAA;AAAA,uBAAhC;AAAA,cAAJ,KAAI;AAAA,YAAA;;;;;;;;"}
1
+ {"version":3,"file":"diy-compontent-widget.vue2.js","sources":["../../../../src/components/field-widget/diy-compontent-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper v-bind=\"props\" v-if=\"!handleHidden\" :rules=\"rules\">\n <div class=\"slot-wrapper-render\">\n <component ref=\"fieldEditor\" :is=\"renderCompont\" />\n </div>\n </form-item-wrapper>\n</template>\n\n<script lang=\"ts\" setup>\n import { ComponentNameEnum, WidgetTypeEnum } from '@kp-ui/lowcode-core';\n import FormItemWrapper from './form-item-wrapper.vue';\n import { type FieldProps, useField } from '@kp-ui/lowcode-core';\n import { h, isVNode } from 'vue';\n import { CustomItemRender } from 'tmgc2-share';\n\n defineOptions({\n name: WidgetTypeEnum.bpmnEditor,\n componentName: ComponentNameEnum.FieldWidget\n });\n const props = withDefaults(defineProps<FieldProps>(), {});\n\n const { rules, fieldEditor, field, fieldModel, handleHidden, defineExposed, executeFunction } =\n useField(props);\n\n const renderCompont = () => {\n const component = executeFunction({\n functionBody: field.options.customRender,\n params: { data: fieldModel.value },\n keys: ['data']\n });\n\n if (isVNode(component)) {\n return h(CustomItemRender, { is: component, stopPropagation: false });\n }\n return component;\n };\n\n defineExpose({\n ...defineExposed\n });\n</script>\n\n<style lang=\"scss\" scoped></style>\n"],"names":["_unref","_openBlock","_createBlock","_mergeProps","_createElementVNode","_resolveDynamicComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAmBI,UAAM,QAAQ;AAEd,UAAM,EAAE,OAAO,aAAa,OAAO,YAAY,cAAc,eAAe,gBAAA,IACxE,SAAS,KAAK;AAElB,UAAM,gBAAgB,MAAM;AACxB,YAAM,YAAY,gBAAgB;AAAA,QAC9B,cAAc,MAAM,QAAQ;AAAA,QAC5B,QAAQ,EAAE,MAAM,WAAW,MAAA;AAAA,QAC3B,MAAM,CAAC,MAAM;AAAA,MAAA,CAChB;AAED,UAAI,QAAQ,SAAS,GAAG;AACpB,eAAO,EAAE,kBAAkB,EAAE,IAAI,WAAW,iBAAiB,OAAO;AAAA,MACxE;AACA,aAAO;AAAA,IACX;AAEA,aAAa;AAAA,MACT,GAAG;AAAA,IAAA,CACN;;cAtCwCA,MAAA,YAAA,KAAzCC,aAAAC,YAIoB,iBAJpBC,WAIoB,EAAA,KAAA,EAAA,GAJO,OAAK,EAAwB,OAAOH,MAAA,KAAA,EAAA,CAAK,GAAA;AAAA,yBAChE,MAEM;AAAA,UAFNI,mBAEM,OAFN,YAEM;AAAA,aADFH,aAAAC,YAAmDG,wBAAjB,aAAa,GAAA;AAAA,uBAAhC;AAAA,cAAJ,KAAI;AAAA,YAAA;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./data-table-widget.vue2.js";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
4
- const DataTableWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-02a5f9df"]]);
4
+ const DataTableWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-05f21e50"]]);
5
5
  export {
6
6
  DataTableWidget as default
7
7
  };
@@ -1,15 +1,11 @@
1
- import { defineComponent, ref, watchEffect, onMounted, resolveComponent, createElementBlock, createCommentVNode, unref, openBlock, normalizeStyle, createVNode, withCtx, createTextVNode, toDisplayString } from "vue";
2
- import { SettingOutlined } from "@ant-design/icons-vue";
3
- import { useVxeTable, Table } from "tmgc2-share";
1
+ import { defineComponent, watchEffect, ref, onMounted, createElementBlock, createCommentVNode, unref, openBlock, normalizeStyle, createElementVNode, createVNode } from "vue";
2
+ import { useVxeTable, SvgIcon, Table } from "tmgc2-share";
4
3
  import { useI18n } from "@kp-ui/i18n";
5
4
  import { useTableWidget } from "../../desginer/form-widget/container-widget/useTableWidget.js";
6
5
  import DataTableColumnDialog from "../../public/DataTableColumnDialog.vue.js";
7
6
  import { ComponentNameEnum, ContainerTypeEnum } from "../../../../core/src/constants/WidgetTypeEnum.js";
8
7
  import { useField } from "../../../../core/src/hooks/useField.js";
9
- const _hoisted_1 = {
10
- key: 0,
11
- class: "table-toolbar"
12
- };
8
+ const _hoisted_1 = { class: "table-toolbar t-flex t-justify-end" };
13
9
  const _sfc_main = /* @__PURE__ */ defineComponent({
14
10
  ...{
15
11
  name: ContainerTypeEnum.DataTable,
@@ -27,16 +23,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
27
23
  setup(__props, { expose: __expose }) {
28
24
  var _a;
29
25
  const props = __props;
26
+ const { widget } = props;
30
27
  const { t } = useI18n();
31
28
  const { fieldModel, handleHidden, defineExposed } = useField(props);
32
- const columnDialogVisible = ref(false);
33
- const columnList = ref([]);
34
29
  const {
35
30
  isLoading,
36
31
  tableProps,
37
32
  tableWidth,
38
33
  pagintion,
39
- showColumnManager,
40
34
  setPagination,
41
35
  setTableRef,
42
36
  initTableSoureData,
@@ -44,10 +38,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
44
38
  onRunEvent,
45
39
  onSortChange,
46
40
  onCheckboxChange,
47
- tableDefinExpoed
41
+ tableDefinExpoed,
42
+ // 列管理相关
43
+ columnList,
44
+ initColumnList,
45
+ handleUpdateColumns
48
46
  } = useTableWidget({
49
47
  props,
50
- fieldModel
48
+ fieldModel,
49
+ designState: false
51
50
  });
52
51
  watchEffect(() => {
53
52
  if (!props.field.options.showPagination) {
@@ -62,41 +61,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
62
61
  const openColumnDialog = () => {
63
62
  columnDialogVisible.value = true;
64
63
  };
65
- const handleUpdateColumns = (newColumns) => {
66
- if (props.field.options.tableColumns) {
67
- props.field.options.tableColumns = props.field.options.tableColumns.map((col) => {
68
- const found = newColumns.find((item) => item.dataIndex === col.dataIndex);
69
- if (found) {
70
- return { ...col, show: found.visible !== false };
71
- }
72
- return col;
73
- });
74
- }
75
- clearTableStorage();
76
- initColumnList();
77
- updateTableColumns();
78
- };
79
- const initColumnList = () => {
80
- const tableColumns = props.field.options.tableColumns || [];
81
- if (tableColumns.length > 0) {
82
- columnList.value = tableColumns.map((col) => ({
83
- ...col,
84
- visible: col.show !== false,
85
- title: col.title || col.dataIndex
86
- }));
87
- }
88
- };
89
- const clearTableStorage = () => {
90
- const tableId = props.field.id || props.field.options.name;
91
- const keysToRemove = [];
92
- for (let i = 0; i < localStorage.length; i++) {
93
- const key = localStorage.key(i);
94
- if (key && key.includes(tableId)) {
95
- keysToRemove.push(key);
96
- }
97
- }
98
- keysToRemove.forEach((key) => localStorage.removeItem(key));
99
- };
64
+ const columnDialogVisible = ref(false);
100
65
  const { tableRef, register, selectedRowInfo, sorts, selectRow, delSelectRow } = useVxeTable({
101
66
  props: {
102
67
  rowKey: props.field.options.rowKey,
@@ -115,10 +80,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
115
80
  cellClick: (params) => onRunEvent(params, "onClick")
116
81
  }
117
82
  });
118
- const updateTableColumns = () => {
119
- if (!tableRef.value) return;
120
- tableRef.value.refreshColumn();
121
- };
122
83
  const getSelectedRowKeys = () => {
123
84
  var _a2;
124
85
  const selectRows = ((_a2 = tableRef.value) == null ? void 0 : _a2.getCheckboxRecords()) || [];
@@ -155,26 +116,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
155
116
  fieldEditor: tableRef
156
117
  });
157
118
  return (_ctx, _cache) => {
158
- const _component_a_button = resolveComponent("a-button");
159
119
  return !unref(handleHidden) ? (openBlock(), createElementBlock("div", {
160
120
  key: 0,
161
121
  class: "talbe-wrapper",
162
122
  style: normalizeStyle({ width: unref(tableWidth) })
163
123
  }, [
164
- unref(showColumnManager) ? (openBlock(), createElementBlock("div", _hoisted_1, [
165
- createVNode(_component_a_button, {
166
- size: "small",
167
- onClick: openColumnDialog
168
- }, {
169
- icon: withCtx(() => [
170
- createVNode(unref(SettingOutlined))
171
- ]),
172
- default: withCtx(() => [
173
- createTextVNode(" " + toDisplayString(unref(t)("lang.列设置")), 1)
174
- ]),
175
- _: 1
124
+ createElementVNode("div", _hoisted_1, [
125
+ createVNode(unref(SvgIcon), {
126
+ onClick: openColumnDialog,
127
+ size: "22",
128
+ type: "icon-weizhi",
129
+ cursor: "",
130
+ shadow: ""
176
131
  })
177
- ])) : createCommentVNode("", true),
132
+ ]),
178
133
  createVNode(unref(Table), {
179
134
  onRegister: unref(register),
180
135
  tableProps: unref(tableProps),
@@ -184,10 +139,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
184
139
  createVNode(DataTableColumnDialog, {
185
140
  visible: columnDialogVisible.value,
186
141
  "onUpdate:visible": _cache[0] || (_cache[0] = ($event) => columnDialogVisible.value = $event),
187
- columns: columnList.value,
188
- onUpdate: handleUpdateColumns,
142
+ columns: unref(columnList),
143
+ "page-code": props.field.options.name,
144
+ "table-id": unref(widget).id,
145
+ onUpdate: unref(handleUpdateColumns),
189
146
  ref: "columnDialogRef"
190
- }, null, 8, ["visible", "columns"])
147
+ }, null, 8, ["visible", "columns", "page-code", "table-id", "onUpdate"])
191
148
  ], 4)) : createCommentVNode("", true);
192
149
  };
193
150
  }
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-widget.vue2.js","sources":["../../../../../src/components/form-render/container-items/data-table-widget.vue"],"sourcesContent":["<template>\n <div class=\"talbe-wrapper\" :style=\"{ width: tableWidth }\" v-if=\"!handleHidden\">\n <div class=\"table-toolbar\" v-if=\"showColumnManager\">\n <a-button size=\"small\" @click=\"openColumnDialog\">\n <template #icon>\n <SettingOutlined />\n </template>\n {{ t('lang.列设置') }}\n </a-button>\n </div>\n <Table\n @register=\"register\"\n :tableProps=\"tableProps\"\n :loading=\"isLoading\"\n :pagination=\"pagintion\"\n />\n <!-- 列管理弹窗 -->\n <DataTableColumnDialog\n v-model:visible=\"columnDialogVisible\"\n :columns=\"columnList\"\n @update=\"handleUpdateColumns\"\n ref=\"columnDialogRef\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n import { ref, onMounted, watchEffect } from 'vue';\n import { ContainerTypeEnum, ComponentNameEnum, WidgetProps } from '@kp-ui/lowcode-core';\n import { SettingOutlined } from '@ant-design/icons-vue';\n import { useVxeTable, Table } from 'tmgc2-share';\n import { useI18n } from '@kp-ui/i18n';\n import { useField } from '@kp-ui/lowcode-core';\n import { useTableWidget } from '../../desginer/form-widget/container-widget/useTableWidget';\n import { DataTableWidget } from '../../desginer/widget-panel/advanced';\n import DataTableColumnDialog from '../../public/DataTableColumnDialog.vue';\n\n const props = defineProps<WidgetProps<DataTableWidget>>();\n defineOptions({\n name: ContainerTypeEnum.DataTable,\n componentName: ComponentNameEnum.FieldWidget\n });\n\n const { t } = useI18n();\n const { fieldModel, handleHidden, defineExposed, customClass } = useField(props);\n\n // 列管理相关\n const columnDialogVisible = ref(false);\n const columnList = ref<any[]>([]);\n const {\n isLoading,\n tableProps,\n tableWidth,\n pagintion,\n showColumnManager,\n setPagination,\n setTableRef,\n initTableSoureData,\n handleTableChange,\n onRunEvent,\n onSortChange,\n onCheckboxChange,\n tableDefinExpoed\n } = useTableWidget({\n props,\n fieldModel\n });\n\n watchEffect(() => {\n if (!props.field.options.showPagination) {\n setPagination({\n total: 0\n });\n }\n });\n\n pagintion.value.onChange = (current, pageSize) => {\n initTableSoureData();\n };\n\n // 打开列管理弹窗\n const openColumnDialog = () => {\n columnDialogVisible.value = true;\n };\n\n // 处理列更新\n const handleUpdateColumns = (newColumns: any[]) => {\n // 更新原始配置,同步 show 属性\n if (props.field.options.tableColumns) {\n props.field.options.tableColumns = props.field.options.tableColumns.map(col => {\n const found = newColumns.find(item => item.dataIndex === col.dataIndex);\n if (found) {\n return { ...col, show: found.visible !== false };\n }\n return col;\n });\n }\n // 清除 vxe-table storage 中的列配置\n clearTableStorage();\n // 重新初始化列列表\n initColumnList();\n // 刷新表格列状态\n updateTableColumns();\n };\n\n // 初始化列列表\n const initColumnList = () => {\n const tableColumns = props.field.options.tableColumns || [];\n if (tableColumns.length > 0) {\n columnList.value = tableColumns.map(col => ({\n ...col,\n visible: col.show !== false,\n title: col.title || col.dataIndex\n }));\n }\n };\n\n // 清除 vxe-table storage 中的列配置\n const clearTableStorage = () => {\n // 清除当前表格的 storage key(包含表格 id)\n const tableId = props.field.id || props.field.options.name;\n const keysToRemove: string[] = [];\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n // 查找包含表格 id 的 storage key\n if (key && key.includes(tableId)) {\n keysToRemove.push(key);\n }\n }\n keysToRemove.forEach(key => localStorage.removeItem(key));\n };\n\n const { tableRef, register, selectedRowInfo, sorts, selectRow, delSelectRow } = useVxeTable({\n props: {\n rowKey: props.field.options.rowKey,\n hasRowSelection: props.field.options.rowSelection?.hasRowSelection,\n clickRowCheck: props.field.options.colorRow\n },\n events: {\n dataChange: params => handleTableChange({ sorts: sorts.value }),\n cellDblclick: params => onRunEvent(params, 'onDblclick'),\n cellMouseenter: params => onRunEvent(params, 'onMouseenter'),\n cellMouseleave: params => onRunEvent(params, 'onMouseleave')\n },\n callbacks: {\n onCheckboxChange,\n onSortChange,\n cellClick: params => onRunEvent(params, 'onClick')\n }\n });\n\n // 更新表格列配置\n const updateTableColumns = () => {\n if (!tableRef.value) return;\n // 调用 vxe-table 的 refreshColumn 方法来刷新列状态\n tableRef.value.refreshColumn();\n };\n\n const getSelectedRowKeys = () => {\n const selectRows = tableRef.value?.getCheckboxRecords() || [];\n return selectRows.map(item => item[props.field.options.rowKey]);\n };\n\n const getSelectedRows = () => {\n // return selectedRowInfo.value.selectedRows;\n return tableRef.value?.getCheckboxRecords(true);\n };\n\n /**\n * 获取字段编辑器\n * @returns 字段编辑器\n */\n const getFieldEditor = () => {\n // 获取内置的el表单组件\n return tableRef.value;\n };\n\n watchEffect(() => {\n if (tableRef.value) {\n setTableRef(tableRef.value);\n }\n });\n\n onMounted(() => {\n initTableSoureData();\n initColumnList();\n });\n\n defineExpose({\n ...defineExposed,\n ...tableDefinExpoed,\n delSelectRow,\n getFieldEditor,\n selectRow,\n getSelectedRowKeys,\n getSelectedRows,\n setPagination,\n sorts,\n selectedRowInfo,\n loadDataTableDataSource: initTableSoureData,\n fieldEditor: tableRef\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .talbe-wrapper {\n width: 100%;\n\n .table-toolbar {\n padding: 8px 0;\n margin-bottom: 8px;\n }\n\n .vxe-grid {\n width: 100%;\n }\n\n &__pagination {\n margin-top: 10px;\n display: flex;\n justify-content: end;\n }\n }\n</style>\n"],"names":["_a","_unref","_createElementBlock","_openBlock","_createVNode","_createTextVNode"],"mappings":"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"}
1
+ {"version":3,"file":"data-table-widget.vue2.js","sources":["../../../../../src/components/form-render/container-items/data-table-widget.vue"],"sourcesContent":["<template>\n <div class=\"talbe-wrapper\" :style=\"{ width: tableWidth }\" v-if=\"!handleHidden\">\n <!-- v-if=\"showColumnManager\" -->\n <div class=\"table-toolbar t-flex t-justify-end\">\n <SvgIcon @click=\"openColumnDialog\" size=\"22\" type=\"icon-weizhi\" cursor shadow />\n </div>\n <Table\n @register=\"register\"\n :tableProps=\"tableProps\"\n :loading=\"isLoading\"\n :pagination=\"pagintion\"\n />\n <!-- 列管理弹窗 -->\n <DataTableColumnDialog\n v-model:visible=\"columnDialogVisible\"\n :columns=\"columnList\"\n :page-code=\"props.field.options.name\"\n :table-id=\"widget.id\"\n @update=\"handleUpdateColumns\"\n ref=\"columnDialogRef\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n import { ref, onMounted, watchEffect } from 'vue';\n import { ContainerTypeEnum, ComponentNameEnum, WidgetProps } from '@kp-ui/lowcode-core';\n import { useVxeTable, Table, SvgIcon } from 'tmgc2-share';\n import { useI18n } from '@kp-ui/i18n';\n import { useField } from '@kp-ui/lowcode-core';\n import { useTableWidget } from '../../desginer/form-widget/container-widget/useTableWidget';\n import { DataTableWidget } from '../../desginer/widget-panel/advanced';\n import DataTableColumnDialog from '../../public/DataTableColumnDialog.vue';\n\n const props = defineProps<WidgetProps<DataTableWidget>>();\n const { widget } = props;\n defineOptions({\n name: ContainerTypeEnum.DataTable,\n componentName: ComponentNameEnum.FieldWidget\n });\n\n const { t } = useI18n();\n const { fieldModel, handleHidden, defineExposed, customClass } = useField(props);\n\n const {\n columns,\n isLoading,\n tableProps,\n tableWidth,\n pagintion,\n showColumnManager,\n setPagination,\n setTableRef,\n initTableSoureData,\n handleTableChange,\n onRunEvent,\n onSortChange,\n onCheckboxChange,\n tableDefinExpoed,\n // 列管理相关\n columnList,\n initColumnList,\n handleUpdateColumns\n } = useTableWidget({\n props,\n fieldModel,\n designState: false\n });\n\n watchEffect(() => {\n if (!props.field.options.showPagination) {\n setPagination({\n total: 0\n });\n }\n });\n\n pagintion.value.onChange = (current, pageSize) => {\n initTableSoureData();\n };\n\n // 打开列管理弹窗\n const openColumnDialog = () => {\n columnDialogVisible.value = true;\n };\n\n // 列管理弹窗\n const columnDialogVisible = ref(false);\n\n const { tableRef, register, selectedRowInfo, sorts, selectRow, delSelectRow } = useVxeTable({\n props: {\n rowKey: props.field.options.rowKey,\n hasRowSelection: props.field.options.rowSelection?.hasRowSelection,\n clickRowCheck: props.field.options.colorRow\n },\n events: {\n dataChange: params => handleTableChange({ sorts: sorts.value }),\n cellDblclick: params => onRunEvent(params, 'onDblclick'),\n cellMouseenter: params => onRunEvent(params, 'onMouseenter'),\n cellMouseleave: params => onRunEvent(params, 'onMouseleave')\n },\n callbacks: {\n onCheckboxChange,\n onSortChange,\n cellClick: params => onRunEvent(params, 'onClick')\n }\n });\n\n const getSelectedRowKeys = () => {\n const selectRows = tableRef.value?.getCheckboxRecords() || [];\n return selectRows.map(item => item[props.field.options.rowKey]);\n };\n\n const getSelectedRows = () => {\n // return selectedRowInfo.value.selectedRows;\n return tableRef.value?.getCheckboxRecords(true);\n };\n\n /**\n * 获取字段编辑器\n * @returns 字段编辑器\n */\n const getFieldEditor = () => {\n // 获取内置的el表单组件\n return tableRef.value;\n };\n\n watchEffect(() => {\n if (tableRef.value) {\n setTableRef(tableRef.value);\n }\n });\n\n onMounted(() => {\n initTableSoureData();\n initColumnList();\n });\n\n defineExpose({\n ...defineExposed,\n ...tableDefinExpoed,\n delSelectRow,\n getFieldEditor,\n selectRow,\n getSelectedRowKeys,\n getSelectedRows,\n setPagination,\n sorts,\n selectedRowInfo,\n loadDataTableDataSource: initTableSoureData,\n fieldEditor: tableRef\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .talbe-wrapper {\n width: 100%;\n\n .table-toolbar {\n padding: 8px 0;\n margin-bottom: 8px;\n }\n\n .vxe-grid {\n width: 100%;\n }\n\n &__pagination {\n margin-top: 10px;\n display: flex;\n justify-content: end;\n }\n }\n</style>\n"],"names":["_a","_unref","_createElementBlock","_createElementVNode","_createVNode"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./grid-sub-form-widget.vue2.js";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
4
- const GridSubFormWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-a3f1d201"]]);
4
+ const GridSubFormWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-b2ab76f8"]]);
5
5
  export {
6
6
  GridSubFormWidget as default
7
7
  };
@@ -33,7 +33,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
33
33
  provide("getSubFormName", () => props.widget.options.name);
34
34
  const { i18nt } = useI18n();
35
35
  const props = __props;
36
- const rowIdData = ref([]);
36
+ const listData = ref([]);
37
37
  const fieldWidgetList = ref([]);
38
38
  const insertDisabled = ref(false);
39
39
  const deleteDisabled = ref(false);
@@ -53,11 +53,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
53
53
  traverseFieldWidgetsOfContainer(props.widget, fieldListFn);
54
54
  };
55
55
  const initRowIdData = (initFlag = false) => {
56
- rowIdData.value = [];
56
+ listData.value = [];
57
57
  const subFormModel = formModel.value[props.widget.options.name];
58
58
  if (!!subFormModel && subFormModel.length > 0) {
59
59
  subFormModel.forEach(() => {
60
- rowIdData.value.push("id" + generateId());
60
+ listData.value.push("id" + generateId());
61
61
  });
62
62
  if (initFlag) {
63
63
  setTimeout(() => {
@@ -118,7 +118,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
118
118
  formModel.value[props.widget.options.name] = oldSubFormData;
119
119
  }
120
120
  const newRowId = "id" + generateId();
121
- rowIdData.value.push(newRowId);
121
+ listData.value.push(newRowId);
122
122
  nextTick(() => {
123
123
  handleSubFormRowAdd(oldSubFormData, newRowId);
124
124
  handleSubFormRowChange(oldSubFormData);
@@ -137,7 +137,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
137
137
  formModel.value[props.widget.options.name] = oldSubFormData;
138
138
  }
139
139
  const newRowId = "id" + generateId();
140
- rowIdData.value.splice(index, 0, newRowId);
140
+ listData.value.splice(index, 0, newRowId);
141
141
  nextTick(() => {
142
142
  handleSubFormRowInsert(oldSubFormData, newRowId);
143
143
  handleSubFormRowChange(oldSubFormData);
@@ -154,7 +154,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
154
154
  const oldSubFormData = formModel.value[props.widget.options.name] || [];
155
155
  const deletedDataRow = deepClone(oldSubFormData[index]);
156
156
  oldSubFormData.splice(index, 1);
157
- rowIdData.value.splice(index, 1);
157
+ listData.value.splice(index, 1);
158
158
  nextTick(() => {
159
159
  handleSubFormRowDelete(oldSubFormData, deletedDataRow);
160
160
  handleSubFormRowChange(oldSubFormData);
@@ -163,7 +163,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
163
163
  });
164
164
  };
165
165
  const handleSubFormFirstRowAdd = () => {
166
- if (!!props.widget.options.showBlankRow && rowIdData.value.length === 0) {
166
+ if (!!props.widget.options.showBlankRow && listData.value.length === 0) {
167
167
  if (fieldWidgetList.value.length === 0) extractFieldWidgetList();
168
168
  addSubFormRow();
169
169
  }
@@ -185,6 +185,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
185
185
  });
186
186
  __expose({
187
187
  ...defineExposed,
188
+ listData,
188
189
  insertDisabled,
189
190
  deleteDisabled,
190
191
  actionDisabled,
@@ -201,7 +202,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
201
202
  return (_ctx, _cache) => {
202
203
  const _component_a_button = resolveComponent("a-button");
203
204
  return withDirectives((openBlock(), createElementBlock("div", _hoisted_1, [
204
- (openBlock(true), createElementBlock(Fragment, null, renderList(rowIdData.value, (subFormRowId, sfrIdx) => {
205
+ (openBlock(true), createElementBlock(Fragment, null, renderList(listData.value, (subFormRowId, sfrIdx) => {
205
206
  return openBlock(), createElementBlock("div", {
206
207
  class: "sub-form-row",
207
208
  key: subFormRowId