@kp-ui/lowcode 1.0.51 → 1.0.53

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 (35) hide show
  1. package/_virtual/virtual_svg-icons-register.js +2 -2
  2. package/_virtual/virtual_svg-icons-register.js.map +1 -1
  3. package/package.json +1 -1
  4. package/render.js +4 -1
  5. package/render.js.map +1 -1
  6. package/src/components/CustomRender/components/RenderBodyCell.js +1 -1
  7. package/src/components/CustomRender/components/RenderBodyCell.js.map +1 -1
  8. package/src/components/form-designer/form-widget/container-widget/data-table-widget.vue.js +1 -1
  9. package/src/components/form-designer/form-widget/container-widget/data-table-widget.vue.js.map +1 -1
  10. package/src/components/form-designer/form-widget/container-widget/data-table-widget.vue2.js +0 -170
  11. package/src/components/form-designer/form-widget/container-widget/data-table-widget.vue2.js.map +1 -1
  12. package/src/components/form-designer/form-widget/field-widget/button-list-widget.vue.js +11 -34
  13. package/src/components/form-designer/form-widget/field-widget/button-list-widget.vue.js.map +1 -1
  14. package/src/components/form-designer/setting-panel/property-editor/button-list-editor.vue.js +13 -210
  15. package/src/components/form-designer/setting-panel/property-editor/button-list-editor.vue.js.map +1 -1
  16. package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-showButtonsColumn-editor.vue.js +56 -422
  17. package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-showButtonsColumn-editor.vue.js.map +1 -1
  18. package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-tableColumns-editor.vue.js +15 -17
  19. package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-tableColumns-editor.vue.js.map +1 -1
  20. package/src/components/form-render/container-item/data-table-item.vue.js +8 -15
  21. package/src/components/form-render/container-item/data-table-item.vue.js.map +1 -1
  22. package/src/components/public/ActionButtonListDialog.vue.js +189 -0
  23. package/src/components/public/ActionButtonListDialog.vue.js.map +1 -0
  24. package/src/components/public/ActionButtonListDialog.vue2.js +115 -0
  25. package/src/components/public/ActionButtonListDialog.vue2.js.map +1 -0
  26. package/src/components/public/ActionButtonListRender.vue.js +44 -0
  27. package/src/components/public/ActionButtonListRender.vue.js.map +1 -0
  28. package/src/components/public/ActionButtonListRender.vue2.js +86 -0
  29. package/src/components/public/ActionButtonListRender.vue2.js.map +1 -0
  30. package/src/mixins/useDataTableMixin.js +10 -34
  31. package/src/mixins/useDataTableMixin.js.map +1 -1
  32. package/styles/style.css +1 -1
  33. package/types/src/components/form-render/index.d.ts +1 -0
  34. package/types/src/components/form-render/index.d.ts.map +1 -1
  35. package/types/src/types/button.d.ts +10 -0
@@ -0,0 +1,115 @@
1
+ import { defineComponent, ref, computed, watch } from "vue";
2
+ import i18n, { useI18n } from "../../utils/i18n.js";
3
+ import CodeModalEditor from "../code-editor/code-modal-editor.vue.js";
4
+ import { generateId } from "../../utils/util.js";
5
+ const _sfc_main = defineComponent({
6
+ name: "ActionButtonList",
7
+ props: {
8
+ parmas: {
9
+ type: String,
10
+ default: ""
11
+ },
12
+ data: {
13
+ type: Array,
14
+ required: true
15
+ }
16
+ },
17
+ components: { CodeModalEditor },
18
+ mixins: [i18n],
19
+ emits: ["update:data"],
20
+ setup(props, { emit }) {
21
+ const { i18nt } = useI18n();
22
+ const currentEditBtn = ref();
23
+ const codeModalEditorRef = ref(null);
24
+ const currentRecordIndexs = ref();
25
+ const columns = [
26
+ {
27
+ dataIndex: "label",
28
+ title: i18nt("designer.setting.operationButtonLabel"),
29
+ width: 60
30
+ },
31
+ {
32
+ dataIndex: "type",
33
+ title: i18nt("designer.setting.operationButtonType"),
34
+ width: 120
35
+ },
36
+ {
37
+ dataIndex: "size",
38
+ title: i18nt("designer.setting.operationButtonType"),
39
+ width: 80
40
+ },
41
+ {
42
+ dataIndex: "danger",
43
+ title: i18nt("designer.setting.danger"),
44
+ width: 120
45
+ },
46
+ {
47
+ dataIndex: "icon",
48
+ title: i18nt("designer.setting.buttonIcon"),
49
+ width: 120
50
+ },
51
+ {
52
+ dataIndex: "onHidden",
53
+ title: i18nt("designer.setting.operationButtonHidden"),
54
+ width: 100
55
+ },
56
+ {
57
+ dataIndex: "onDisabled",
58
+ title: i18nt("designer.setting.operationButtonDisabled"),
59
+ width: 100
60
+ },
61
+ { dataIndex: "onClick", title: "点击事件", width: 100 },
62
+ { dataIndex: "action", title: "操作", width: 80 }
63
+ ];
64
+ const buttonList = computed(() => props.data);
65
+ watch(
66
+ () => buttonList.value,
67
+ () => {
68
+ emit("update:data", buttonList.value);
69
+ },
70
+ {
71
+ deep: true
72
+ }
73
+ );
74
+ const deleteOperationButton = (index) => {
75
+ console.log(index);
76
+ buttonList.value.splice(index, 1);
77
+ };
78
+ const editClickEvent = (name, row, recordIndexs) => {
79
+ var _a;
80
+ currentRecordIndexs.value = recordIndexs[0];
81
+ currentEditBtn.value = name;
82
+ (_a = codeModalEditorRef.value) == null ? void 0 : _a.open(row[name]);
83
+ };
84
+ const saveColumnRender = (value) => {
85
+ console.log(buttonList.value, currentRecordIndexs.value, currentEditBtn.value);
86
+ buttonList.value[currentRecordIndexs.value][currentEditBtn.value] = value;
87
+ };
88
+ const addOperationButton = () => {
89
+ buttonList.value.push({
90
+ name: "btn" + generateId(),
91
+ label: "new btn",
92
+ type: "primary",
93
+ size: "small",
94
+ shape: "default",
95
+ hidden: false,
96
+ disabled: false,
97
+ onClick: ""
98
+ });
99
+ };
100
+ return {
101
+ addOperationButton,
102
+ saveColumnRender,
103
+ columns,
104
+ buttonList,
105
+ editClickEvent,
106
+ codeModalEditorRef,
107
+ currentEditBtn,
108
+ deleteOperationButton
109
+ };
110
+ }
111
+ });
112
+ export {
113
+ _sfc_main as default
114
+ };
115
+ //# sourceMappingURL=ActionButtonListDialog.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionButtonListDialog.vue2.js","sources":["../../../../src/components/public/ActionButtonListDialog.vue"],"sourcesContent":["<template>\n <STable\n deepWatchDataSource\n :data-source=\"buttonList\"\n :pagination=\"false\"\n :resizable=\"true\"\n :columns=\"columns\"\n :row-key=\"record => record.name\"\n >\n <template #bodyCell=\"{ column, recordIndexs, record }\">\n <template v-if=\"column.dataIndex === 'label'\">\n <a-input\n v-model:value=\"buttonList[recordIndexs[0]].label\"\n :placeholder=\"i18nt('designer.setting.operationButtonLabel')\"\n />\n </template>\n <template v-if=\"column.dataIndex === 'type'\">\n <a-select\n v-model:value=\"buttonList[recordIndexs[0]].type\"\n :placeholder=\"i18nt('designer.setting.operationButtonType')\"\n style=\"width: 100%\"\n >\n <a-select-option value=\"primary\">primary</a-select-option>\n <a-select-option value=\"ghost\">ghost</a-select-option>\n <a-select-option value=\"dashed\">dashed</a-select-option>\n <a-select-option value=\"text\">text</a-select-option>\n <a-select-option value=\"link\">link</a-select-option>\n <a-select-option value=\"default\">default</a-select-option>\n </a-select>\n </template>\n <template v-if=\"column.dataIndex === 'size'\">\n <a-select\n v-model:value=\"buttonList[recordIndexs[0]].size\"\n :placeholder=\"i18nt('designer.setting.size')\"\n style=\"width: 100%\"\n >\n <a-select-option value=\"default\">default</a-select-option>\n <a-select-option value=\"small\">small</a-select-option>\n <a-select-option value=\"large\">large</a-select-option>\n </a-select>\n </template>\n <template v-if=\"column.dataIndex === 'icon'\">\n <a-input\n v-model:value=\"buttonList[recordIndexs[0]].icon\"\n :placeholder=\"i18nt('designer.setting.operationButtonLabel')\"\n />\n </template>\n <template v-if=\"column.dataIndex === 'danger'\">\n <a-switch\n :checkedValue=\"1\"\n :unCheckedValue=\"0\"\n v-model:checked=\"buttonList[recordIndexs[0]].danger\"\n />\n </template>\n <template v-if=\"column.dataIndex === 'onHidden'\">\n <a-button\n :class=\"[{ 'button-text-highlight': !!record.onHidden }]\"\n @click=\"editClickEvent('onHidden', record, recordIndexs)\"\n size=\"small\"\n >\n {{ i18nt('designer.setting.operationButtonHidden') }}\n </a-button>\n </template>\n <template v-if=\"column.dataIndex === 'onDisabled'\">\n <a-button\n :class=\"[{ 'button-text-highlight': !!record.onDisabled }]\"\n @click=\"editClickEvent('onDisabled', record, recordIndexs)\"\n size=\"small\"\n >\n {{ i18nt('designer.setting.operationButtonDisabled') }}\n </a-button>\n </template>\n <template v-if=\"column.dataIndex === 'onClick'\">\n <a-button\n :class=\"[{ 'button-text-highlight': !!record.onClick }]\"\n @click=\"editClickEvent('onClick', record, recordIndexs)\"\n size=\"small\"\n >\n 点击事件\n </a-button>\n </template>\n <template v-if=\"column.dataIndex === 'action'\">\n <a-button type=\"link\" @click=\"deleteOperationButton(index)\" size=\"small\">\n 删除\n </a-button>\n </template>\n </template>\n </STable>\n <div class=\"add-btn\">\n <a-button type=\"primary\" size=\"default\" @click=\"addOperationButton\">\n {{ i18nt('designer.setting.addOperationButton') }}\n </a-button>\n </div>\n\n <CodeModalEditor\n ref=\"codeModalEditorRef\"\n @save=\"saveColumnRender\"\n :event-header=\"`${currentEditBtn}(${parmas}){`\"\n />\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, getCurrentInstance, ref, watch, watchEffect } from 'vue';\n import i18n, { useI18n } from '@/utils/i18n';\n import CodeModalEditor from '@/components/code-editor/code-modal-editor.vue';\n import { generateId } from '@/utils/util';\n export default defineComponent({\n name: 'ActionButtonList',\n props: {\n parmas: {\n type: String,\n default: ''\n },\n data: {\n type: Array,\n required: true\n }\n },\n components: { CodeModalEditor },\n mixins: [i18n],\n emits: ['update:data'],\n setup(props, { emit }) {\n const { i18nt } = useI18n();\n const currentEditBtn = ref();\n const codeModalEditorRef = ref(null);\n const currentRecordIndexs = ref();\n const columns = [\n {\n dataIndex: 'label',\n title: i18nt('designer.setting.operationButtonLabel'),\n width: 60\n },\n {\n dataIndex: 'type',\n title: i18nt('designer.setting.operationButtonType'),\n width: 120\n },\n {\n dataIndex: 'size',\n title: i18nt('designer.setting.operationButtonType'),\n width: 80\n },\n {\n dataIndex: 'danger',\n title: i18nt('designer.setting.danger'),\n width: 120\n },\n {\n dataIndex: 'icon',\n title: i18nt('designer.setting.buttonIcon'),\n width: 120\n },\n {\n dataIndex: 'onHidden',\n title: i18nt('designer.setting.operationButtonHidden'),\n width: 100\n },\n {\n dataIndex: 'onDisabled',\n title: i18nt('designer.setting.operationButtonDisabled'),\n width: 100\n },\n { dataIndex: 'onClick', title: '点击事件', width: 100 },\n { dataIndex: 'action', title: '操作', width: 80 }\n ];\n\n const buttonList = computed(() => props.data as any[]);\n\n watch(\n () => buttonList.value,\n () => {\n emit('update:data', buttonList.value);\n },\n {\n deep: true\n }\n );\n\n const deleteOperationButton = (index: number) => {\n console.log(index);\n buttonList.value.splice(index, 1);\n };\n\n const editClickEvent = (name, row, recordIndexs) => {\n currentRecordIndexs.value = recordIndexs[0];\n currentEditBtn.value = name;\n codeModalEditorRef.value?.open(row[name]);\n };\n\n const saveColumnRender = value => {\n console.log(buttonList.value, currentRecordIndexs.value, currentEditBtn.value);\n buttonList.value[currentRecordIndexs.value][currentEditBtn.value] = value;\n };\n\n const addOperationButton = () => {\n buttonList.value.push({\n name: 'btn' + generateId(),\n label: 'new btn',\n type: 'primary',\n size: 'small',\n shape: 'default',\n hidden: false,\n disabled: false,\n onClick: ''\n });\n };\n\n return {\n addOperationButton,\n saveColumnRender,\n columns,\n buttonList,\n editClickEvent,\n codeModalEditorRef,\n currentEditBtn,\n deleteOperationButton\n };\n }\n });\n</script>\n<style lang=\"less\" scoped>\n .add-btn {\n margin-top: 10px;\n text-align: center;\n }\n</style>\n"],"names":[],"mappings":";;;;AA0GI,MAAA,YAAe,gBAAgB;AAAA,EAC3B,MAAM;AAAA,EACN,OAAO;AAAA,IACH,QAAQ;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACb;AAAA,IACA,MAAM;AAAA,MACF,MAAM;AAAA,MACN,UAAU;AAAA,IAAA;AAAA,EAElB;AAAA,EACA,YAAY,EAAE,gBAAgB;AAAA,EAC9B,QAAQ,CAAC,IAAI;AAAA,EACb,OAAO,CAAC,aAAa;AAAA,EACrB,MAAM,OAAO,EAAE,QAAQ;AACb,UAAA,EAAE,MAAM,IAAI,QAAQ;AAC1B,UAAM,iBAAiB,IAAI;AACrB,UAAA,qBAAqB,IAAI,IAAI;AACnC,UAAM,sBAAsB,IAAI;AAChC,UAAM,UAAU;AAAA,MACZ;AAAA,QACI,WAAW;AAAA,QACX,OAAO,MAAM,uCAAuC;AAAA,QACpD,OAAO;AAAA,MACX;AAAA,MACA;AAAA,QACI,WAAW;AAAA,QACX,OAAO,MAAM,sCAAsC;AAAA,QACnD,OAAO;AAAA,MACX;AAAA,MACA;AAAA,QACI,WAAW;AAAA,QACX,OAAO,MAAM,sCAAsC;AAAA,QACnD,OAAO;AAAA,MACX;AAAA,MACA;AAAA,QACI,WAAW;AAAA,QACX,OAAO,MAAM,yBAAyB;AAAA,QACtC,OAAO;AAAA,MACX;AAAA,MACA;AAAA,QACI,WAAW;AAAA,QACX,OAAO,MAAM,6BAA6B;AAAA,QAC1C,OAAO;AAAA,MACX;AAAA,MACA;AAAA,QACI,WAAW;AAAA,QACX,OAAO,MAAM,wCAAwC;AAAA,QACrD,OAAO;AAAA,MACX;AAAA,MACA;AAAA,QACI,WAAW;AAAA,QACX,OAAO,MAAM,0CAA0C;AAAA,QACvD,OAAO;AAAA,MACX;AAAA,MACA,EAAE,WAAW,WAAW,OAAO,QAAQ,OAAO,IAAI;AAAA,MAClD,EAAE,WAAW,UAAU,OAAO,MAAM,OAAO,GAAG;AAAA,IAClD;AAEA,UAAM,aAAa,SAAS,MAAM,MAAM,IAAa;AAErD;AAAA,MACI,MAAM,WAAW;AAAA,MACjB,MAAM;AACG,aAAA,eAAe,WAAW,KAAK;AAAA,MACxC;AAAA,MACA;AAAA,QACI,MAAM;AAAA,MAAA;AAAA,IAEd;AAEM,UAAA,wBAAwB,CAAC,UAAkB;AAC7C,cAAQ,IAAI,KAAK;AACN,iBAAA,MAAM,OAAO,OAAO,CAAC;AAAA,IACpC;AAEA,UAAM,iBAAiB,CAAC,MAAM,KAAK,iBAAiB;;AAC5B,0BAAA,QAAQ,aAAa,CAAC;AAC1C,qBAAe,QAAQ;AACvB,+BAAmB,UAAnB,mBAA0B,KAAK,IAAI,IAAI;AAAA,IAC3C;AAEA,UAAM,mBAAmB,CAAS,UAAA;AAC9B,cAAQ,IAAI,WAAW,OAAO,oBAAoB,OAAO,eAAe,KAAK;AAC7E,iBAAW,MAAM,oBAAoB,KAAK,EAAE,eAAe,KAAK,IAAI;AAAA,IACxE;AAEA,UAAM,qBAAqB,MAAM;AAC7B,iBAAW,MAAM,KAAK;AAAA,QAClB,MAAM,QAAQ,WAAW;AAAA,QACzB,OAAO;AAAA,QACP,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SAAS;AAAA,MAAA,CACZ;AAAA,IACL;AAEO,WAAA;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EAAA;AAER,CAAC;"}
@@ -0,0 +1,44 @@
1
+ import _sfc_main from "./ActionButtonListRender.vue2.js";
2
+ import { resolveComponent, createElementBlock, openBlock, normalizeStyle, normalizeClass, createVNode, withCtx, Fragment, renderList, createBlock, createCommentVNode, createTextVNode, toDisplayString } from "vue";
3
+ /* empty css */
4
+ import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.js";
5
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
6
+ const _component_SvgIcon = resolveComponent("SvgIcon");
7
+ const _component_a_button = resolveComponent("a-button");
8
+ const _component_a_space = resolveComponent("a-space");
9
+ return openBlock(), createElementBlock("div", {
10
+ ref: "fieldEditor",
11
+ class: normalizeClass(["button-list-container", ..._ctx.customClass]),
12
+ style: normalizeStyle(_ctx.containerStyle)
13
+ }, [
14
+ createVNode(_component_a_space, { size: 8 }, {
15
+ default: withCtx(() => [
16
+ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.visibleButtons, (item) => {
17
+ return openBlock(), createBlock(_component_a_button, {
18
+ key: item.key,
19
+ type: item.type,
20
+ danger: item.danger,
21
+ disabled: _ctx.handleDisabled(item),
22
+ onClick: ($event) => _ctx.handleClick(item)
23
+ }, {
24
+ default: withCtx(() => [
25
+ item.icon ? (openBlock(), createBlock(_component_SvgIcon, {
26
+ key: 0,
27
+ "icon-class": item.icon,
28
+ class: "button-icon"
29
+ }, null, 8, ["icon-class"])) : createCommentVNode("", true),
30
+ createTextVNode(" " + toDisplayString(item.label), 1)
31
+ ]),
32
+ _: 2
33
+ }, 1032, ["type", "danger", "disabled", "onClick"]);
34
+ }), 128))
35
+ ]),
36
+ _: 1
37
+ })
38
+ ], 6);
39
+ }
40
+ const ActionButtonListRender = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-e0104a64"]]);
41
+ export {
42
+ ActionButtonListRender as default
43
+ };
44
+ //# sourceMappingURL=ActionButtonListRender.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionButtonListRender.vue.js","sources":["../../../../src/components/public/ActionButtonListRender.vue"],"sourcesContent":["<template>\n <div\n ref=\"fieldEditor\"\n :class=\"['button-list-container', ...customClass]\"\n :style=\"containerStyle\"\n >\n <a-space :size=\"8\">\n <a-button\n v-for=\"item in visibleButtons\"\n :key=\"item.key\"\n :type=\"item.type\"\n :danger=\"item.danger\"\n :disabled=\"handleDisabled(item)\"\n @click=\"handleClick(item)\"\n >\n <template v-if=\"item.icon\">\n <SvgIcon :icon-class=\"item.icon\" class=\"button-icon\" />\n </template>\n {{ item.label }}\n </a-button>\n </a-space>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, computed, PropType } from 'vue';\n import { executeFunction } from '@/utils/executeFunction';\n import SvgIcon from '@/components/svg-icon/index.vue';\n import type { ActionButton } from '@/types/button';\n\n export default defineComponent({\n name: 'ActionButtonListRender',\n components: { SvgIcon },\n props: {\n scope: {\n type: Object,\n default: () => {}\n },\n ctx: {\n type: Object\n },\n buttonList: {\n type: Array as PropType<ActionButton[]>,\n default: () => []\n },\n customClass: {\n type: Array as PropType<string[]>,\n default: () => []\n },\n flex: {\n type: String,\n default: 'center',\n validator: (value: string) =>\n ['start', 'center', 'end', 'space-between'].includes(value)\n }\n },\n setup(props) {\n const containerStyle = computed(() => ({\n '--flex': props.flex\n }));\n\n const visibleButtons = computed(() =>\n props.buttonList.filter(item => !handleHidden(item))\n );\n\n const handleClick = async (item: ActionButton) => {\n if (!item.onClick) return;\n\n try {\n await executeFunction({\n functionBody: item.onClick,\n context: props.ctx,\n params: props.scope\n });\n } catch (error) {\n console.error('Button click handler error:', error);\n }\n };\n\n const handleDisabled = (item: ActionButton): boolean => {\n if (!item.onDisabled) return false;\n\n try {\n return executeFunction({\n functionBody: item.onDisabled,\n context: props.ctx,\n params: props.scope\n });\n } catch (error) {\n console.error('Button disabled handler error:', error);\n return false;\n }\n };\n\n const handleHidden = (item: ActionButton): boolean => {\n if (!item.onHidden) return false;\n\n try {\n return executeFunction({\n functionBody: item.onHidden,\n context: props.ctx,\n params: props.scope\n });\n } catch (error) {\n console.error('Button hidden handler error:', error);\n return false;\n }\n };\n\n return {\n containerStyle,\n visibleButtons,\n handleClick,\n handleDisabled\n };\n }\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .button-list-container {\n flex: 1;\n display: flex;\n justify-content: var(--flex);\n\n .button-icon {\n margin-right: 4px;\n }\n }\n</style>\n"],"names":["_createElementBlock","_normalizeClass","_normalizeStyle","_createVNode","_withCtx","_openBlock","_Fragment","_renderList","_createBlock","_createCommentVNode","_toDisplayString"],"mappings":";;;;;;;;sBACIA,mBAoBM,OAAA;AAAA,IAnBF,KAAI;AAAA,IACH,OAAKC,4CAA+B,KAAW,WAAA,CAAA;AAAA,IAC/C,OAAKC,eAAE,KAAc,cAAA;AAAA,EAAA,GAAA;AAAA,IAEtBC,YAcU,oBAAA,EAdA,MAAM,EAAC,GAAA;AAAA,MAAA,SAAAC,QAET,MAA8B;AAAA,SAAAC,UAAA,IAAA,GADlCL,mBAYWM,UAAA,MAAAC,WAXQ,KAAc,gBAAA,CAAtB,SAAI;8BADfC,YAYW,qBAAA;AAAA,YAVN,KAAK,KAAK;AAAA,YACV,MAAM,KAAK;AAAA,YACX,QAAQ,KAAK;AAAA,YACb,UAAU,oBAAe,IAAI;AAAA,YAC7B,SAAK,CAAE,WAAA,KAAA,YAAY,IAAI;AAAA,UAAA,GAAA;AAAA,6BAExB,MAEW;AAAA,cAFK,KAAK,qBACjBA,YAAuD,oBAAA;AAAA,gBAAA,KAAA;AAAA,gBAA7C,cAAY,KAAK;AAAA,gBAAM,OAAM;AAAA,cAAA,GAAA,MAAA,GAAA,CAAA,YAAA,CAAA,KAAAC,mBAAA,IAAA,IAAA;AAAA,8BAChC,MACXC,gBAAG,KAAK,KAAK,GAAA,CAAA;AAAA,YAAA,CAAA;AAAA;;;;;;;;;"}
@@ -0,0 +1,86 @@
1
+ import { defineComponent, computed } from "vue";
2
+ import { executeFunction } from "../../utils/executeFunction.js";
3
+ import SvgIcon from "../svg-icon/index.vue.js";
4
+ const _sfc_main = defineComponent({
5
+ name: "ActionButtonListRender",
6
+ components: { SvgIcon },
7
+ props: {
8
+ scope: {
9
+ type: Object,
10
+ default: () => {
11
+ }
12
+ },
13
+ ctx: {
14
+ type: Object
15
+ },
16
+ buttonList: {
17
+ type: Array,
18
+ default: () => []
19
+ },
20
+ customClass: {
21
+ type: Array,
22
+ default: () => []
23
+ },
24
+ flex: {
25
+ type: String,
26
+ default: "center",
27
+ validator: (value) => ["start", "center", "end", "space-between"].includes(value)
28
+ }
29
+ },
30
+ setup(props) {
31
+ const containerStyle = computed(() => ({
32
+ "--flex": props.flex
33
+ }));
34
+ const visibleButtons = computed(
35
+ () => props.buttonList.filter((item) => !handleHidden(item))
36
+ );
37
+ const handleClick = async (item) => {
38
+ if (!item.onClick) return;
39
+ try {
40
+ await executeFunction({
41
+ functionBody: item.onClick,
42
+ context: props.ctx,
43
+ params: props.scope
44
+ });
45
+ } catch (error) {
46
+ console.error("Button click handler error:", error);
47
+ }
48
+ };
49
+ const handleDisabled = (item) => {
50
+ if (!item.onDisabled) return false;
51
+ try {
52
+ return executeFunction({
53
+ functionBody: item.onDisabled,
54
+ context: props.ctx,
55
+ params: props.scope
56
+ });
57
+ } catch (error) {
58
+ console.error("Button disabled handler error:", error);
59
+ return false;
60
+ }
61
+ };
62
+ const handleHidden = (item) => {
63
+ if (!item.onHidden) return false;
64
+ try {
65
+ return executeFunction({
66
+ functionBody: item.onHidden,
67
+ context: props.ctx,
68
+ params: props.scope
69
+ });
70
+ } catch (error) {
71
+ console.error("Button hidden handler error:", error);
72
+ return false;
73
+ }
74
+ };
75
+ return {
76
+ containerStyle,
77
+ visibleButtons,
78
+ handleClick,
79
+ handleDisabled
80
+ };
81
+ }
82
+ });
83
+ export {
84
+ _sfc_main as default
85
+ };
86
+ //# sourceMappingURL=ActionButtonListRender.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionButtonListRender.vue2.js","sources":["../../../../src/components/public/ActionButtonListRender.vue"],"sourcesContent":["<template>\n <div\n ref=\"fieldEditor\"\n :class=\"['button-list-container', ...customClass]\"\n :style=\"containerStyle\"\n >\n <a-space :size=\"8\">\n <a-button\n v-for=\"item in visibleButtons\"\n :key=\"item.key\"\n :type=\"item.type\"\n :danger=\"item.danger\"\n :disabled=\"handleDisabled(item)\"\n @click=\"handleClick(item)\"\n >\n <template v-if=\"item.icon\">\n <SvgIcon :icon-class=\"item.icon\" class=\"button-icon\" />\n </template>\n {{ item.label }}\n </a-button>\n </a-space>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, computed, PropType } from 'vue';\n import { executeFunction } from '@/utils/executeFunction';\n import SvgIcon from '@/components/svg-icon/index.vue';\n import type { ActionButton } from '@/types/button';\n\n export default defineComponent({\n name: 'ActionButtonListRender',\n components: { SvgIcon },\n props: {\n scope: {\n type: Object,\n default: () => {}\n },\n ctx: {\n type: Object\n },\n buttonList: {\n type: Array as PropType<ActionButton[]>,\n default: () => []\n },\n customClass: {\n type: Array as PropType<string[]>,\n default: () => []\n },\n flex: {\n type: String,\n default: 'center',\n validator: (value: string) =>\n ['start', 'center', 'end', 'space-between'].includes(value)\n }\n },\n setup(props) {\n const containerStyle = computed(() => ({\n '--flex': props.flex\n }));\n\n const visibleButtons = computed(() =>\n props.buttonList.filter(item => !handleHidden(item))\n );\n\n const handleClick = async (item: ActionButton) => {\n if (!item.onClick) return;\n\n try {\n await executeFunction({\n functionBody: item.onClick,\n context: props.ctx,\n params: props.scope\n });\n } catch (error) {\n console.error('Button click handler error:', error);\n }\n };\n\n const handleDisabled = (item: ActionButton): boolean => {\n if (!item.onDisabled) return false;\n\n try {\n return executeFunction({\n functionBody: item.onDisabled,\n context: props.ctx,\n params: props.scope\n });\n } catch (error) {\n console.error('Button disabled handler error:', error);\n return false;\n }\n };\n\n const handleHidden = (item: ActionButton): boolean => {\n if (!item.onHidden) return false;\n\n try {\n return executeFunction({\n functionBody: item.onHidden,\n context: props.ctx,\n params: props.scope\n });\n } catch (error) {\n console.error('Button hidden handler error:', error);\n return false;\n }\n };\n\n return {\n containerStyle,\n visibleButtons,\n handleClick,\n handleDisabled\n };\n }\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .button-list-container {\n flex: 1;\n display: flex;\n justify-content: var(--flex);\n\n .button-icon {\n margin-right: 4px;\n }\n }\n</style>\n"],"names":[],"mappings":";;;AA8BI,MAAA,YAAe,gBAAgB;AAAA,EAC3B,MAAM;AAAA,EACN,YAAY,EAAE,QAAQ;AAAA,EACtB,OAAO;AAAA,IACH,OAAO;AAAA,MACH,MAAM;AAAA,MACN,SAAS,MAAM;AAAA,MAAA;AAAA,IACnB;AAAA,IACA,KAAK;AAAA,MACD,MAAM;AAAA,IACV;AAAA,IACA,YAAY;AAAA,MACR,MAAM;AAAA,MACN,SAAS,MAAM,CAAA;AAAA,IACnB;AAAA,IACA,aAAa;AAAA,MACT,MAAM;AAAA,MACN,SAAS,MAAM,CAAA;AAAA,IACnB;AAAA,IACA,MAAM;AAAA,MACF,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,UACR,CAAC,SAAS,UAAU,OAAO,eAAe,EAAE,SAAS,KAAK;AAAA,IAAA;AAAA,EAEtE;AAAA,EACA,MAAM,OAAO;AACH,UAAA,iBAAiB,SAAS,OAAO;AAAA,MACnC,UAAU,MAAM;AAAA,IAAA,EAClB;AAEF,UAAM,iBAAiB;AAAA,MAAS,MAC5B,MAAM,WAAW,OAAO,UAAQ,CAAC,aAAa,IAAI,CAAC;AAAA,IACvD;AAEM,UAAA,cAAc,OAAO,SAAuB;AAC1C,UAAA,CAAC,KAAK,QAAS;AAEf,UAAA;AACA,cAAM,gBAAgB;AAAA,UAClB,cAAc,KAAK;AAAA,UACnB,SAAS,MAAM;AAAA,UACf,QAAQ,MAAM;AAAA,QAAA,CACjB;AAAA,eACI,OAAO;AACJ,gBAAA,MAAM,+BAA+B,KAAK;AAAA,MAAA;AAAA,IAE1D;AAEM,UAAA,iBAAiB,CAAC,SAAgC;AAChD,UAAA,CAAC,KAAK,WAAmB,QAAA;AAEzB,UAAA;AACA,eAAO,gBAAgB;AAAA,UACnB,cAAc,KAAK;AAAA,UACnB,SAAS,MAAM;AAAA,UACf,QAAQ,MAAM;AAAA,QAAA,CACjB;AAAA,eACI,OAAO;AACJ,gBAAA,MAAM,kCAAkC,KAAK;AAC9C,eAAA;AAAA,MAAA;AAAA,IAEf;AAEM,UAAA,eAAe,CAAC,SAAgC;AAC9C,UAAA,CAAC,KAAK,SAAiB,QAAA;AAEvB,UAAA;AACA,eAAO,gBAAgB;AAAA,UACnB,cAAc,KAAK;AAAA,UACnB,SAAS,MAAM;AAAA,UACf,QAAQ,MAAM;AAAA,QAAA,CACjB;AAAA,eACI,OAAO;AACJ,gBAAA,MAAM,gCAAgC,KAAK;AAC5C,eAAA;AAAA,MAAA;AAAA,IAEf;AAEO,WAAA;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EAAA;AAER,CAAC;"}
@@ -1,13 +1,10 @@
1
- import { createVNode, Fragment, mergeProps, isVNode } from "vue";
1
+ import { createVNode } from "vue";
2
2
  import { omit, isArray, isEmpty } from "lodash-es";
3
3
  import { fmtHttpParams } from "../utils/request/fmtHttpParams.js";
4
4
  import { TpfConfirm } from "../hooks/TpfConfirm.js";
5
- import { Space, Button } from "ant-design-vue";
6
5
  import RenderBodyCell from "../components/CustomRender/components/RenderBodyCell.js";
7
6
  import { executeFunction } from "../utils/executeFunction.js";
8
- function _isSlot(s) {
9
- return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
10
- }
7
+ import ActionButtonListRender from "../components/public/ActionButtonListRender.vue.js";
11
8
  const useDataTableMixin = {
12
9
  data() {
13
10
  return {
@@ -22,12 +19,6 @@ const useDataTableMixin = {
22
19
  components: {
23
20
  RenderBodyCell
24
21
  },
25
- props: {
26
- data: {
27
- type: Array,
28
- default: () => []
29
- }
30
- },
31
22
  computed: {
32
23
  columns() {
33
24
  var _a;
@@ -50,34 +41,18 @@ const useDataTableMixin = {
50
41
  const rightFixedColumns = [];
51
42
  if (optins.showButtonsColumn) {
52
43
  const operationButtons = optins.operationButtons ?? [];
53
- let showOperationButton = this.showOperationButton;
54
- let disableOperationButton = this.disableOperationButton;
55
- let handleOperationButtonClick = this.handleOperationButtonClick;
56
- let getOperationButtonLabel = this.getOperationButtonLabel;
57
44
  rightFixedColumns.push({
58
45
  fixed: "right",
59
46
  align: "center",
60
47
  title: optins.buttonsColumnTitle,
61
48
  width: optins.buttonsColumnWidth,
62
49
  customRender(scope) {
63
- let _slot2;
64
- return createVNode(Space, null, _isSlot(_slot2 = operationButtons.map((item, index) => {
65
- let _slot;
66
- if (!showOperationButton(item, scope.index, scope.record)) {
67
- return createVNode(Fragment, null, null);
68
- }
69
- return createVNode(Button, mergeProps({
70
- "key": index
71
- }, item, {
72
- "disabled": disableOperationButton(item, scope.index, scope.record),
73
- "onClick": () => handleOperationButtonClick(item.name, scope.index, scope.record, scope, item),
74
- "class": ["data-table-" + item.name + "-button"]
75
- }), _isSlot(_slot = getOperationButtonLabel(item, scope.index, scope.record)) ? _slot : {
76
- default: () => [_slot]
77
- });
78
- })) ? _slot2 : {
79
- default: () => [_slot2]
80
- });
50
+ return createVNode(ActionButtonListRender, {
51
+ "buttonList": operationButtons,
52
+ "flex": "center",
53
+ "scope": scope,
54
+ "ctx": this
55
+ }, null);
81
56
  }
82
57
  });
83
58
  }
@@ -220,13 +195,14 @@ const useDataTableMixin = {
220
195
  };
221
196
  this.selectRow = {};
222
197
  const val = isArray(list) ? list : [list];
223
- this.widget.options.dataSource = [...val];
198
+ this.getFormRef().setTableValue(this.widget.options.name, val);
224
199
  },
225
200
  setValue(list) {
226
201
  console.log("list: ", list);
227
202
  this.setDataSource(list);
228
203
  },
229
204
  setRowDataSource(scope, value) {
205
+ console.log(scope, value);
230
206
  this.getFormRef().setTableRowDataValue(this.widget.options.name, scope, value);
231
207
  },
232
208
  getDataSource() {
@@ -1 +1 @@
1
- {"version":3,"file":"useDataTableMixin.js","sources":["../../../src/mixins/useDataTableMixin.jsx"],"sourcesContent":["import { omit, isEmpty, isArray } from 'lodash-es';\nimport { fmtHttpParams } from '@/utils/request/fmtHttpParams';\nimport { TpfConfirm } from '@/hooks/TpfConfirm';\nimport { Button, Space } from 'ant-design-vue';\nimport RenderBodyCell from '@/components/CustomRender/components/RenderBodyCell.tsx';\nimport { executeFunction } from '@/utils/executeFunction';\nexport default {\n data() {\n return {\n selectedRowInfo: { selectedRowKeys: [], selectedRows: [] },\n selectRow: {},\n loading: false\n };\n },\n components: {\n RenderBodyCell\n },\n props: {\n data: {\n type: Array,\n default: () => []\n }\n },\n computed: {\n columns() {\n const leftFixedColumns = [];\n const optins = this.widget?.options ?? {};\n if (optins.showIndex) {\n leftFixedColumns.push({\n title: '序号',\n align: 'left',\n width: 90,\n fixed: 'left',\n field: 'dataIndex',\n customRender: this.customRenderIndex\n });\n }\n const centerColumns = optins.tableColumns\n .filter(item => item.show)\n .map(item => ({\n ...item,\n ...this.handleColumnItem(item)\n }));\n const rightFixedColumns = [];\n if (optins.showButtonsColumn) {\n const operationButtons = optins.operationButtons ?? [];\n let showOperationButton = this.showOperationButton;\n let disableOperationButton = this.disableOperationButton;\n let handleOperationButtonClick = this.handleOperationButtonClick;\n let getOperationButtonLabel = this.getOperationButtonLabel;\n rightFixedColumns.push({\n fixed: 'right',\n align: 'center',\n title: optins.buttonsColumnTitle,\n width: optins.buttonsColumnWidth,\n customRender(scope) {\n return (\n <Space>\n {operationButtons.map((item, index) => {\n if (!showOperationButton(item, scope.index, scope.record)) {\n return <></>;\n }\n\n return (\n <Button\n key={index}\n {...item}\n disabled={disableOperationButton(\n item,\n scope.index,\n scope.record\n )}\n onClick={() =>\n handleOperationButtonClick(\n item.name,\n scope.index,\n scope.record,\n scope,\n item\n )\n }\n class={['data-table-' + item.name + '-button']}\n >\n {getOperationButtonLabel(\n item,\n scope.index,\n scope.record\n )}\n </Button>\n );\n })}\n </Space>\n );\n }\n });\n }\n\n let bodyCell = {};\n\n // 把customRender渲染成 bodyCell 插槽\n let _columns = [...leftFixedColumns, ...centerColumns, ...rightFixedColumns].map(\n item => {\n if (item.bodyCell) {\n bodyCell[item.dataIndex] = item.bodyCell;\n delete item.customRender;\n }\n return item;\n }\n );\n\n return {\n columns: _columns,\n bodyCell\n };\n },\n tableHeight() {\n return this.widget.options.tableHeight || undefined;\n },\n // rowClassName() {\n // if (this.widget.options.stripe) {\n // return (_record, index) => (index % 2 === 1 ? 'table-striped' : null);\n // }\n // return null;\n // },\n customClass() {\n return this.widget.options.customClass || '';\n },\n widgetSize() {\n return this.widget.options.tableSize || 'default';\n },\n fmtPagination() {\n const { showPagination } = this.widget.options;\n if (!showPagination) return false;\n return {\n ...this.widget.options.pagination,\n showTotal: total => `共 ${total} 条`\n };\n }\n },\n methods: {\n isShowBodyCell(dataIndex) {\n return this.columns?.bodyCell?.[dataIndex];\n },\n handleHidden() {\n const { onHidden, hidden } = this.widget.options;\n if (hidden) return true;\n if (onHidden) {\n const onHiddenFn = new Function(onHidden);\n return onHiddenFn.call(this);\n }\n return false;\n },\n rowClassName(record) {\n const { rowKey, colorRow } = this.widget.options;\n\n if (!colorRow) return '';\n return this.selectRow[rowKey] === record[rowKey] ? 'colorRowClassName' : '';\n },\n handleResizeColumn(w, col) {\n const { tableColumns } = this.widget.options;\n const newTableColumns = tableColumns.map(item => {\n if (item.dataIndex === col.dataIndex) {\n item.width = w;\n }\n return { ...item };\n });\n this.setTableColumns(newTableColumns);\n },\n disabledClick() {\n const { hasRowSelection } = this.widget.options.rowSelection;\n if (hasRowSelection) {\n return isEmpty(this.selectedRowInfo.selectedRowKeys);\n }\n return isEmpty(this.selectRow);\n },\n getSelectedRowKeys() {\n return this.selectedRowInfo.selectedRowKeys;\n },\n getSelectedRows() {\n return this.selectedRowInfo.getSelectedRows;\n },\n getTableColumns() {\n return this.widget.options.tableColumns;\n },\n setTableColumns(list) {\n this.widget.options.tableColumns = list;\n return;\n },\n async delSelectRow(delKeys) {\n await TpfConfirm({ content: '确定删除选中的数据吗' });\n delKeys = delKeys || this.selectedRowInfo.selectedRowKeys;\n if (!delKeys.length) return;\n const { rowKey } = this.widget.options;\n const data = this.getDataSource();\n const newList = data.filter(item => !delKeys?.includes(item[rowKey]));\n this.setDataSource(newList);\n\n this.$message.success('操作成功');\n },\n\n getPagination() {\n return this.widget.options.pagination;\n },\n /**\n * 设置表格分页\n * @param pagination\n */\n setPagination(pagination) {\n if (pagination.page !== undefined) {\n this.widget.options.pagination.current = pagination.page;\n }\n\n if (pagination.pageSize !== undefined) {\n this.widget.options.pagination.pageSize = pagination.pageSize;\n }\n\n if (pagination.total !== undefined) {\n this.widget.options.pagination.total = pagination.total;\n }\n },\n setDataSource(list) {\n this.selectedRowInfo = { selectedRowKeys: [], selectedRows: [] };\n this.selectRow = {};\n const val = isArray(list) ? list : [list];\n this.widget.options.dataSource = [...val];\n },\n setValue(list) {\n console.log('list: ', list);\n this.setDataSource(list);\n },\n setRowDataSource(scope, value) {\n this.getFormRef().setTableRowDataValue(this.widget.options.name, scope, value);\n },\n getDataSource() {\n return this.widget.options.dataSource;\n },\n getValue() {\n return this.getDataSource();\n },\n async loadDataTableDataSource() {\n if (!this.widget.options.dsEnabled) {\n return;\n }\n const ops = this.widget.options;\n if (ops.dsEnabled && ops.http.url) {\n this.loading = true;\n const res = await fmtHttpParams.call(this, ops);\n this.setPagination(res);\n this.setDataSource(res.list);\n this.loading = false;\n }\n },\n handleCustomRow(record) {\n const { customRow, colorRow } = this.widget.options;\n const { hasRowSelection } = this.widget.options.rowSelection;\n // if (!customRow) return {};\n return {\n onClick: event => {\n if (colorRow) {\n this.selectRow = record;\n }\n const customFn = new Function('record', 'event', customRow.onClick);\n customFn.call(this, record, event);\n },\n onDblclick: event => {\n const customFn = new Function('record', 'event', customRow.onDblclick);\n customFn.call(this, record, event);\n },\n onMouseenter: event => {\n const customFn = new Function('record', 'event', customRow.onMouseenter);\n customFn.call(this, record, event);\n },\n onMouseleave: event => {\n const customFn = new Function('record', 'event', customRow.onMouseleave);\n customFn.call(this, record, event);\n }\n };\n },\n // 处理列配置\n handleColumnItem(item) {\n const res = omit(item, ['customRender']);\n const customRenderFn = item.customRender;\n if (!customRenderFn) return item;\n return {\n ...res,\n bodyCell: scope => {\n return executeFunction({\n functionBody: customRenderFn,\n params: scope,\n context: this,\n errorCallback: error => {\n console.error('Custom render error:', error);\n }\n });\n }\n };\n },\n getOperationButtonLabel(buttonConfig, rowIndex, row) {\n const { onGetOperationButtonLabel } = this.widget.options;\n if (!!onGetOperationButtonLabel) {\n const customFn = new Function(\n 'buttonConfig',\n 'rowIndex',\n 'row',\n onGetOperationButtonLabel\n );\n return customFn.call(this, buttonConfig, rowIndex, row);\n } else {\n return buttonConfig.label;\n }\n },\n // 处理操作按钮点击\n async handleOperationButtonClick(btnName, rowIndex, row, scope, ob) {\n this.skipSelectionChangeEvent = true;\n\n try {\n if (ob.onClick) {\n await executeFunction({\n functionBody: ob.onClick,\n params: { record: row, index: rowIndex, column: scope.column, btn: ob },\n context: this\n });\n return;\n }\n\n const { onOperationButtonClick } = this.widget.options;\n if (onOperationButtonClick) {\n await executeFunction({\n functionBody: onOperationButtonClick,\n params: { buttonName: btnName, rowIndex, row },\n context: this\n });\n } else {\n this.dispatch('VFormRender', 'operationButtonClick', [\n this,\n btnName,\n rowIndex,\n row\n ]);\n }\n } finally {\n this.skipSelectionChangeEvent = false;\n }\n },\n showOperationButton(buttonConfig, rowIndex, row) {\n const { onHideOperationButton } = this.widget.options;\n if (!!onHideOperationButton) {\n const customFn = new Function(\n 'buttonConfig',\n 'rowIndex',\n 'row',\n onHideOperationButton\n );\n return !!customFn.call(this, buttonConfig, rowIndex, row);\n } else {\n return !buttonConfig.hidden;\n }\n },\n disableOperationButton(buttonConfig, rowIndex, row) {\n const { onDisableOperationButton } = this.widget.options;\n if (!!onDisableOperationButton) {\n const customFn = new Function(\n 'buttonConfig',\n 'rowIndex',\n 'row',\n onDisableOperationButton\n );\n return customFn.call(this, buttonConfig, rowIndex, row);\n } else {\n return buttonConfig.disabled;\n }\n },\n customRenderIndex({ index }) {\n return index + 1;\n },\n handleCurrentPageChange(currentPage) {\n this.currentPage = currentPage;\n // if (!!this.widget.options.dsEnabled && !!this.widget.options.dsName) {\n // this.loadDataFromDS();\n // }\n\n const { onCurrentPageChange } = this.widget.options;\n\n if (!!onCurrentPageChange) {\n const customFn = new Function('pageSize', 'currentPage', onCurrentPageChange);\n customFn.call(this, this.pageSize, currentPage);\n } else {\n this.dispatch('VFormRender', 'dataTablePageChange', [\n this,\n this.pageSize,\n currentPage\n ]);\n }\n },\n handlePageSizeChange(pageSize) {\n this.pageSize = pageSize;\n // if (!!this.widget.options.dsEnabled && !!this.widget.options.dsName) {\n // this.loadDataFromDS();\n // }\n const { onPageSizeChange } = this.widget.options;\n if (!!onPageSizeChange) {\n const customFn = new Function('pageSize', 'currentPage', onPageSizeChange);\n customFn.call(this, pageSize, this.currentPage);\n } else {\n this.dispatch('VFormRender', 'dataTablePageSizeChange', [\n this,\n pageSize,\n this.currentPage\n ]);\n }\n },\n handleTablePageChange(pagination, filters, sorter, { currentDataSource }) {\n const fn = this.widget.options.onTableChange;\n this.widget.options.pagination.current = pagination.current;\n this.widget.options.pagination.pageSize = pagination.pageSize;\n if (fn) {\n const changeFunc = new Function(\n 'pagination',\n 'filters',\n 'sorter',\n 'currentDataSource',\n fn\n );\n changeFunc.call(this, pagination, filters, sorter, { currentDataSource });\n }\n this.loadDataTableDataSource();\n },\n handleRowSelection() {\n const info = this.widget.options.rowSelection;\n if (!info.hasRowSelection) {\n return undefined;\n }\n return {\n ...omit(info, ['onChange']),\n onChange: (selectedRowKeys, selectedRows) => {\n this.selectedRowInfo = { selectedRowKeys, selectedRows };\n const rcFunc = new Function('selectedRowKeys', 'selectedRows', info.onChange);\n rcFunc.call(this, selectedRowKeys, selectedRows);\n }\n };\n }\n }\n};\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","data","selectedRowInfo","selectedRowKeys","selectedRows","selectRow","loading","components","RenderBodyCell","props","type","Array","default","computed","columns","leftFixedColumns","optins","widget","options","showIndex","push","title","align","width","fixed","field","customRender","customRenderIndex","centerColumns","tableColumns","filter","item","show","map","handleColumnItem","rightFixedColumns","showButtonsColumn","operationButtons","showOperationButton","disableOperationButton","handleOperationButtonClick","getOperationButtonLabel","buttonsColumnTitle","buttonsColumnWidth","scope","_slot2","_createVNode","Space","index","_slot","record","_Fragment","Button","_mergeProps","onClick","name","bodyCell","_columns","dataIndex","tableHeight","undefined","customClass","widgetSize","tableSize","fmtPagination","showPagination","pagination","showTotal","total","methods","isShowBodyCell","handleHidden","onHidden","hidden","onHiddenFn","Function","rowClassName","rowKey","colorRow","handleResizeColumn","w","col","newTableColumns","setTableColumns","disabledClick","hasRowSelection","rowSelection","isEmpty","getSelectedRowKeys","getSelectedRows","getTableColumns","list","delSelectRow","delKeys","TpfConfirm","content","length","getDataSource","newList","includes","setDataSource","$message","success","getPagination","setPagination","page","current","pageSize","val","isArray","dataSource","setValue","console","log","setRowDataSource","value","getFormRef","setTableRowDataValue","getValue","loadDataTableDataSource","dsEnabled","ops","http","url","res","fmtHttpParams","handleCustomRow","customRow","event","customFn","onDblclick","onMouseenter","onMouseleave","omit","customRenderFn","executeFunction","functionBody","params","context","errorCallback","error","buttonConfig","rowIndex","row","onGetOperationButtonLabel","label","btnName","ob","skipSelectionChangeEvent","column","btn","onOperationButtonClick","buttonName","dispatch","onHideOperationButton","onDisableOperationButton","disabled","handleCurrentPageChange","currentPage","onCurrentPageChange","handlePageSizeChange","onPageSizeChange","handleTablePageChange","filters","sorter","currentDataSource","fn","onTableChange","changeFunc","handleRowSelection","info","onChange","rcFunc"],"mappings":";;;;;;;AAK0D,SAAAA,QAAAC,GAAA;AAAA,SAAA,OAAAA,MAAA,cAAAC,OAAAC,UAAAC,SAAAC,KAAAJ,CAAA,MAAAK,qBAAAA,CAAAA,QAAAL,CAAA;AAAA;AAC1D,MAAe,oBAAA;AAAA,EACXM,OAAO;AACH,WAAO;AAAA,MACHC,iBAAiB;AAAA,QAAEC,iBAAiB,CAAE;AAAA,QAAEC,cAAc,CAAA;AAAA,MAAI;AAAA,MAC1DC,WAAW,CAAE;AAAA,MACbC,SAAS;AAAA,IACZ;AAAA,EACJ;AAAA,EACDC,YAAY;AAAA,IACRC;AAAAA,EACH;AAAA,EACDC,OAAO;AAAA,IACHR,MAAM;AAAA,MACFS,MAAMC;AAAAA,MACNC,SAASA,MAAM,CAAA;AAAA,IACnB;AAAA,EACH;AAAA,EACDC,UAAU;AAAA,IACNC,UAAU;;AACN,YAAMC,mBAAmB,CAAE;AAC3B,YAAMC,WAAS,UAAKC,WAAL,mBAAaC,YAAW,CAAE;AACzC,UAAIF,OAAOG,WAAW;AAClBJ,yBAAiBK,KAAK;AAAA,UAClBC,OAAO;AAAA,UACPC,OAAO;AAAA,UACPC,OAAO;AAAA,UACPC,OAAO;AAAA,UACPC,OAAO;AAAA,UACPC,cAAc,KAAKC;AAAAA,QACvB,CAAC;AAAA,MACL;AACA,YAAMC,gBAAgBZ,OAAOa,aACxBC,OAAOC,UAAQA,KAAKC,IAAI,EACxBC,IAAIF,WAAS;AAAA,QACV,GAAGA;AAAAA,QACH,GAAG,KAAKG,iBAAiBH,IAAI;AAAA,MACjC,EAAE;AACN,YAAMI,oBAAoB,CAAE;AAC5B,UAAInB,OAAOoB,mBAAmB;AAC1B,cAAMC,mBAAmBrB,OAAOqB,oBAAoB,CAAE;AACtD,YAAIC,sBAAsB,KAAKA;AAC/B,YAAIC,yBAAyB,KAAKA;AAClC,YAAIC,6BAA6B,KAAKA;AACtC,YAAIC,0BAA0B,KAAKA;AACnCN,0BAAkBf,KAAK;AAAA,UACnBI,OAAO;AAAA,UACPF,OAAO;AAAA,UACPD,OAAOL,OAAO0B;AAAAA,UACdnB,OAAOP,OAAO2B;AAAAA,UACdjB,aAAakB,OAAO;AAAA,gBAAAC;AAChB,mBAAAC,YAAAC,OAAArD,MAAAA,QAAAmD,SAESR,iBAAiBJ,IAAI,CAACF,MAAMiB,UAAU;AAAA,kBAAAC;AACnC,kBAAI,CAACX,oBAAoBP,MAAMa,MAAMI,OAAOJ,MAAMM,MAAM,GAAG;AACvD,uBAAAJ,YAAAK,UAAA,MAAA,IAAA;AAAA,cACJ;AAEA,qBAAAL,YAAAM,QAAAC,WAAA;AAAA,gBAAA,OAEaL;AAAAA,cAAK,GACNjB,MAAI;AAAA,gBAAA,YACEQ,uBACNR,MACAa,MAAMI,OACNJ,MAAMM,MACV;AAAA,gBAAC,WACQI,MACLd,2BACIT,KAAKwB,MACLX,MAAMI,OACNJ,MAAMM,QACNN,OACAb,IACJ;AAAA,gBAAC,SAEE,CAAC,gBAAgBA,KAAKwB,OAAO,SAAS;AAAA,cAAC,CAAA,GAAA7D,QAAAuD,QAE7CR,wBACGV,MACAa,MAAMI,OACNJ,MAAMM,MACV,CAAC,IAAAD,QAAA;AAAA,gBAAArC,SAAAA,MAAA,CAAAqC,KAAA;AAAA,cAAA,CAAA;AAAA,aAGZ,CAAC,IAAAJ,SAAA;AAAA,cAAAjC,SAAAA,MAAA,CAAAiC,MAAA;AAAA,YAAA,CAAA;AAAA,UAGd;AAAA,QACJ,CAAC;AAAA,MACL;AAEA,UAAIW,WAAW,CAAE;AAGjB,UAAIC,WAAW,CAAC,GAAG1C,kBAAkB,GAAGa,eAAe,GAAGO,iBAAiB,EAAEF,IACzEF,UAAQ;AACJ,YAAIA,KAAKyB,UAAU;AACfA,mBAASzB,KAAK2B,SAAS,IAAI3B,KAAKyB;AAChC,iBAAOzB,KAAKL;AAAAA,QAChB;AACA,eAAOK;AAAAA,MACX,CACJ;AAEA,aAAO;AAAA,QACHjB,SAAS2C;AAAAA,QACTD;AAAAA,MACH;AAAA,IACJ;AAAA,IACDG,cAAc;AACV,aAAO,KAAK1C,OAAOC,QAAQyC,eAAeC;AAAAA,IAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAODC,cAAc;AACV,aAAO,KAAK5C,OAAOC,QAAQ2C,eAAe;AAAA,IAC7C;AAAA,IACDC,aAAa;AACT,aAAO,KAAK7C,OAAOC,QAAQ6C,aAAa;AAAA,IAC3C;AAAA,IACDC,gBAAgB;AACZ,YAAM;AAAA,QAAEC;AAAAA,MAAe,IAAI,KAAKhD,OAAOC;AACvC,UAAI,CAAC+C,eAAgB,QAAO;AAC5B,aAAO;AAAA,QACH,GAAG,KAAKhD,OAAOC,QAAQgD;AAAAA,QACvBC,WAAWC,WAAS,KAAKA,KAAK;AAAA,MACjC;AAAA,IACL;AAAA,EACH;AAAA,EACDC,SAAS;AAAA,IACLC,eAAeZ,WAAW;;AACtB,cAAO,gBAAK5C,YAAL,mBAAc0C,aAAd,mBAAyBE;AAAAA,IACnC;AAAA,IACDa,eAAe;AACX,YAAM;AAAA,QAAEC;AAAAA,QAAUC;AAAAA,MAAO,IAAI,KAAKxD,OAAOC;AACzC,UAAIuD,OAAQ,QAAO;AACnB,UAAID,UAAU;AACV,cAAME,aAAa,IAAIC,SAASH,QAAQ;AACxC,eAAOE,WAAW3E,KAAK,IAAI;AAAA,MAC/B;AACA,aAAO;AAAA,IACV;AAAA,IACD6E,aAAa1B,QAAQ;AACjB,YAAM;AAAA,QAAE2B;AAAAA,QAAQC;AAAAA,MAAS,IAAI,KAAK7D,OAAOC;AAEzC,UAAI,CAAC4D,SAAU,QAAO;AACtB,aAAO,KAAKzE,UAAUwE,MAAM,MAAM3B,OAAO2B,MAAM,IAAI,sBAAsB;AAAA,IAC5E;AAAA,IACDE,mBAAmBC,GAAGC,KAAK;AACvB,YAAM;AAAA,QAAEpD;AAAAA,MAAa,IAAI,KAAKZ,OAAOC;AACrC,YAAMgE,kBAAkBrD,aAAaI,IAAIF,UAAQ;AAC7C,YAAIA,KAAK2B,cAAcuB,IAAIvB,WAAW;AAClC3B,eAAKR,QAAQyD;AAAAA,QACjB;AACA,eAAO;AAAA,UAAE,GAAGjD;AAAAA,QAAM;AAAA,MACtB,CAAC;AACD,WAAKoD,gBAAgBD,eAAe;AAAA,IACvC;AAAA,IACDE,gBAAgB;AACZ,YAAM;AAAA,QAAEC;AAAAA,MAAgB,IAAI,KAAKpE,OAAOC,QAAQoE;AAChD,UAAID,iBAAiB;AACjB,eAAOE,QAAQ,KAAKrF,gBAAgBC,eAAe;AAAA,MACvD;AACA,aAAOoF,QAAQ,KAAKlF,SAAS;AAAA,IAChC;AAAA,IACDmF,qBAAqB;AACjB,aAAO,KAAKtF,gBAAgBC;AAAAA,IAC/B;AAAA,IACDsF,kBAAkB;AACd,aAAO,KAAKvF,gBAAgBuF;AAAAA,IAC/B;AAAA,IACDC,kBAAkB;AACd,aAAO,KAAKzE,OAAOC,QAAQW;AAAAA,IAC9B;AAAA,IACDsD,gBAAgBQ,MAAM;AAClB,WAAK1E,OAAOC,QAAQW,eAAe8D;AACnC;AAAA,IACH;AAAA,IACD,MAAMC,aAAaC,SAAS;AACxB,YAAMC,WAAW;AAAA,QAAEC,SAAS;AAAA,MAAa,CAAC;AAC1CF,gBAAUA,WAAW,KAAK3F,gBAAgBC;AAC1C,UAAI,CAAC0F,QAAQG,OAAQ;AACrB,YAAM;AAAA,QAAEnB;AAAAA,MAAO,IAAI,KAAK5D,OAAOC;AAC/B,YAAMjB,OAAO,KAAKgG,cAAe;AACjC,YAAMC,UAAUjG,KAAK6B,OAAOC,UAAQ,EAAC8D,mCAASM,SAASpE,KAAK8C,MAAM,GAAE;AACpE,WAAKuB,cAAcF,OAAO;AAE1B,WAAKG,SAASC,QAAQ,MAAM;AAAA,IAC/B;AAAA,IAEDC,gBAAgB;AACZ,aAAO,KAAKtF,OAAOC,QAAQgD;AAAAA,IAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,IAKDsC,cAActC,YAAY;AACtB,UAAIA,WAAWuC,SAAS7C,QAAW;AAC/B,aAAK3C,OAAOC,QAAQgD,WAAWwC,UAAUxC,WAAWuC;AAAAA,MACxD;AAEA,UAAIvC,WAAWyC,aAAa/C,QAAW;AACnC,aAAK3C,OAAOC,QAAQgD,WAAWyC,WAAWzC,WAAWyC;AAAAA,MACzD;AAEA,UAAIzC,WAAWE,UAAUR,QAAW;AAChC,aAAK3C,OAAOC,QAAQgD,WAAWE,QAAQF,WAAWE;AAAAA,MACtD;AAAA,IACH;AAAA,IACDgC,cAAcT,MAAM;AAChB,WAAKzF,kBAAkB;AAAA,QAAEC,iBAAiB,CAAE;AAAA,QAAEC,cAAc,CAAA;AAAA,MAAI;AAChE,WAAKC,YAAY,CAAE;AACnB,YAAMuG,MAAMC,QAAQlB,IAAI,IAAIA,OAAO,CAACA,IAAI;AACxC,WAAK1E,OAAOC,QAAQ4F,aAAa,CAAC,GAAGF,GAAG;AAAA,IAC3C;AAAA,IACDG,SAASpB,MAAM;AACXqB,cAAQC,IAAI,UAAUtB,IAAI;AAC1B,WAAKS,cAAcT,IAAI;AAAA,IAC1B;AAAA,IACDuB,iBAAiBtE,OAAOuE,OAAO;AAC3B,WAAKC,aAAaC,qBAAqB,KAAKpG,OAAOC,QAAQqC,MAAMX,OAAOuE,KAAK;AAAA,IAChF;AAAA,IACDlB,gBAAgB;AACZ,aAAO,KAAKhF,OAAOC,QAAQ4F;AAAAA,IAC9B;AAAA,IACDQ,WAAW;AACP,aAAO,KAAKrB,cAAe;AAAA,IAC9B;AAAA,IACD,MAAMsB,0BAA0B;AAC5B,UAAI,CAAC,KAAKtG,OAAOC,QAAQsG,WAAW;AAChC;AAAA,MACJ;AACA,YAAMC,MAAM,KAAKxG,OAAOC;AACxB,UAAIuG,IAAID,aAAaC,IAAIC,KAAKC,KAAK;AAC/B,aAAKrH,UAAU;AACf,cAAMsH,MAAM,MAAMC,cAAc9H,KAAK,MAAM0H,GAAG;AAC9C,aAAKjB,cAAcoB,GAAG;AACtB,aAAKxB,cAAcwB,IAAIjC,IAAI;AAC3B,aAAKrF,UAAU;AAAA,MACnB;AAAA,IACH;AAAA,IACDwH,gBAAgB5E,QAAQ;AACpB,YAAM;AAAA,QAAE6E;AAAAA,QAAWjD;AAAAA,MAAS,IAAI,KAAK7D,OAAOC;AAC5C,YAAM;AAAA,QAAEmE;AAAAA,MAAgB,IAAI,KAAKpE,OAAOC,QAAQoE;AAEhD,aAAO;AAAA,QACHhC,SAAS0E,WAAS;AACd,cAAIlD,UAAU;AACV,iBAAKzE,YAAY6C;AAAAA,UACrB;AACA,gBAAM+E,WAAW,IAAItD,SAAS,UAAU,SAASoD,UAAUzE,OAAO;AAClE2E,mBAASlI,KAAK,MAAMmD,QAAQ8E,KAAK;AAAA,QACpC;AAAA,QACDE,YAAYF,WAAS;AACjB,gBAAMC,WAAW,IAAItD,SAAS,UAAU,SAASoD,UAAUG,UAAU;AACrED,mBAASlI,KAAK,MAAMmD,QAAQ8E,KAAK;AAAA,QACpC;AAAA,QACDG,cAAcH,WAAS;AACnB,gBAAMC,WAAW,IAAItD,SAAS,UAAU,SAASoD,UAAUI,YAAY;AACvEF,mBAASlI,KAAK,MAAMmD,QAAQ8E,KAAK;AAAA,QACpC;AAAA,QACDI,cAAcJ,WAAS;AACnB,gBAAMC,WAAW,IAAItD,SAAS,UAAU,SAASoD,UAAUK,YAAY;AACvEH,mBAASlI,KAAK,MAAMmD,QAAQ8E,KAAK;AAAA,QACrC;AAAA,MACH;AAAA,IACJ;AAAA;AAAA,IAED9F,iBAAiBH,MAAM;AACnB,YAAM6F,MAAMS,KAAKtG,MAAM,CAAC,cAAc,CAAC;AACvC,YAAMuG,iBAAiBvG,KAAKL;AAC5B,UAAI,CAAC4G,eAAgB,QAAOvG;AAC5B,aAAO;AAAA,QACH,GAAG6F;AAAAA,QACHpE,UAAUZ,WAAS;AACf,iBAAO2F,gBAAgB;AAAA,YACnBC,cAAcF;AAAAA,YACdG,QAAQ7F;AAAAA,YACR8F,SAAS;AAAA,YACTC,eAAeC,WAAS;AACpB5B,sBAAQ4B,MAAM,wBAAwBA,KAAK;AAAA,YAC/C;AAAA,UACJ,CAAC;AAAA,QACL;AAAA,MACH;AAAA,IACJ;AAAA,IACDnG,wBAAwBoG,cAAcC,UAAUC,KAAK;AACjD,YAAM;AAAA,QAAEC;AAAAA,MAA0B,IAAI,KAAK/H,OAAOC;AAClD,UAAI,CAAC,CAAC8H,2BAA2B;AAC7B,cAAMf,WAAW,IAAItD,SACjB,gBACA,YACA,OACAqE,yBACJ;AACA,eAAOf,SAASlI,KAAK,MAAM8I,cAAcC,UAAUC,GAAG;AAAA,MAC1D,OAAO;AACH,eAAOF,aAAaI;AAAAA,MACxB;AAAA,IACH;AAAA;AAAA,IAED,MAAMzG,2BAA2B0G,SAASJ,UAAUC,KAAKnG,OAAOuG,IAAI;AAChE,WAAKC,2BAA2B;AAEhC,UAAI;AACA,YAAID,GAAG7F,SAAS;AACZ,gBAAMiF,gBAAgB;AAAA,YAClBC,cAAcW,GAAG7F;AAAAA,YACjBmF,QAAQ;AAAA,cAAEvF,QAAQ6F;AAAAA,cAAK/F,OAAO8F;AAAAA,cAAUO,QAAQzG,MAAMyG;AAAAA,cAAQC,KAAKH;AAAAA,YAAI;AAAA,YACvET,SAAS;AAAA,UACb,CAAC;AACD;AAAA,QACJ;AAEA,cAAM;AAAA,UAAEa;AAAAA,QAAuB,IAAI,KAAKtI,OAAOC;AAC/C,YAAIqI,wBAAwB;AACxB,gBAAMhB,gBAAgB;AAAA,YAClBC,cAAce;AAAAA,YACdd,QAAQ;AAAA,cAAEe,YAAYN;AAAAA,cAASJ;AAAAA,cAAUC;AAAAA,YAAK;AAAA,YAC9CL,SAAS;AAAA,UACb,CAAC;AAAA,QACL,OAAO;AACH,eAAKe,SAAS,eAAe,wBAAwB,CACjD,MACAP,SACAJ,UACAC,GAAG,CACN;AAAA,QACL;AAAA,MACJ,UAAU;AACN,aAAKK,2BAA2B;AAAA,MACpC;AAAA,IACH;AAAA,IACD9G,oBAAoBuG,cAAcC,UAAUC,KAAK;AAC7C,YAAM;AAAA,QAAEW;AAAAA,MAAsB,IAAI,KAAKzI,OAAOC;AAC9C,UAAI,CAAC,CAACwI,uBAAuB;AACzB,cAAMzB,WAAW,IAAItD,SACjB,gBACA,YACA,OACA+E,qBACJ;AACA,eAAO,CAAC,CAACzB,SAASlI,KAAK,MAAM8I,cAAcC,UAAUC,GAAG;AAAA,MAC5D,OAAO;AACH,eAAO,CAACF,aAAapE;AAAAA,MACzB;AAAA,IACH;AAAA,IACDlC,uBAAuBsG,cAAcC,UAAUC,KAAK;AAChD,YAAM;AAAA,QAAEY;AAAAA,MAAyB,IAAI,KAAK1I,OAAOC;AACjD,UAAI,CAAC,CAACyI,0BAA0B;AAC5B,cAAM1B,WAAW,IAAItD,SACjB,gBACA,YACA,OACAgF,wBACJ;AACA,eAAO1B,SAASlI,KAAK,MAAM8I,cAAcC,UAAUC,GAAG;AAAA,MAC1D,OAAO;AACH,eAAOF,aAAae;AAAAA,MACxB;AAAA,IACH;AAAA,IACDjI,kBAAkB;AAAA,MAAEqB;AAAAA,IAAM,GAAG;AACzB,aAAOA,QAAQ;AAAA,IAClB;AAAA,IACD6G,wBAAwBC,aAAa;AACjC,WAAKA,cAAcA;AAKnB,YAAM;AAAA,QAAEC;AAAAA,MAAoB,IAAI,KAAK9I,OAAOC;AAE5C,UAAI,CAAC,CAAC6I,qBAAqB;AACvB,cAAM9B,WAAW,IAAItD,SAAS,YAAY,eAAeoF,mBAAmB;AAC5E9B,iBAASlI,KAAK,MAAM,KAAK4G,UAAUmD,WAAW;AAAA,MAClD,OAAO;AACH,aAAKL,SAAS,eAAe,uBAAuB,CAChD,MACA,KAAK9C,UACLmD,WAAW,CACd;AAAA,MACL;AAAA,IACH;AAAA,IACDE,qBAAqBrD,UAAU;AAC3B,WAAKA,WAAWA;AAIhB,YAAM;AAAA,QAAEsD;AAAAA,MAAiB,IAAI,KAAKhJ,OAAOC;AACzC,UAAI,CAAC,CAAC+I,kBAAkB;AACpB,cAAMhC,WAAW,IAAItD,SAAS,YAAY,eAAesF,gBAAgB;AACzEhC,iBAASlI,KAAK,MAAM4G,UAAU,KAAKmD,WAAW;AAAA,MAClD,OAAO;AACH,aAAKL,SAAS,eAAe,2BAA2B,CACpD,MACA9C,UACA,KAAKmD,WAAW,CACnB;AAAA,MACL;AAAA,IACH;AAAA,IACDI,sBAAsBhG,YAAYiG,SAASC,QAAQ;AAAA,MAAEC;AAAAA,IAAkB,GAAG;AACtE,YAAMC,KAAK,KAAKrJ,OAAOC,QAAQqJ;AAC/B,WAAKtJ,OAAOC,QAAQgD,WAAWwC,UAAUxC,WAAWwC;AACpD,WAAKzF,OAAOC,QAAQgD,WAAWyC,WAAWzC,WAAWyC;AACrD,UAAI2D,IAAI;AACJ,cAAME,aAAa,IAAI7F,SACnB,cACA,WACA,UACA,qBACA2F,EACJ;AACAE,mBAAWzK,KAAK,MAAMmE,YAAYiG,SAASC,QAAQ;AAAA,UAAEC;AAAAA,QAAkB,CAAC;AAAA,MAC5E;AACA,WAAK9C,wBAAyB;AAAA,IACjC;AAAA,IACDkD,qBAAqB;AACjB,YAAMC,OAAO,KAAKzJ,OAAOC,QAAQoE;AACjC,UAAI,CAACoF,KAAKrF,iBAAiB;AACvB,eAAOzB;AAAAA,MACX;AACA,aAAO;AAAA,QACH,GAAGyE,KAAKqC,MAAM,CAAC,UAAU,CAAC;AAAA,QAC1BC,UAAUA,CAACxK,iBAAiBC,iBAAiB;AACzC,eAAKF,kBAAkB;AAAA,YAAEC;AAAAA,YAAiBC;AAAAA,UAAc;AACxD,gBAAMwK,SAAS,IAAIjG,SAAS,mBAAmB,gBAAgB+F,KAAKC,QAAQ;AAC5EC,iBAAO7K,KAAK,MAAMI,iBAAiBC,YAAY;AAAA,QACnD;AAAA,MACH;AAAA,IACL;AAAA,EACJ;AACJ;"}
1
+ {"version":3,"file":"useDataTableMixin.js","sources":["../../../src/mixins/useDataTableMixin.jsx"],"sourcesContent":["import { omit, isEmpty, isArray } from 'lodash-es';\nimport { fmtHttpParams } from '@/utils/request/fmtHttpParams';\nimport { TpfConfirm } from '@/hooks/TpfConfirm';\nimport RenderBodyCell from '@/components/CustomRender/components/RenderBodyCell.tsx';\nimport { executeFunction } from '@/utils/executeFunction';\nimport ActionButtonListRender from '@/components/public/ActionButtonListRender.vue';\nexport default {\n data() {\n return {\n selectedRowInfo: { selectedRowKeys: [], selectedRows: [] },\n selectRow: {},\n loading: false\n };\n },\n components: {\n RenderBodyCell\n },\n computed: {\n columns() {\n const leftFixedColumns = [];\n const optins = this.widget?.options ?? {};\n if (optins.showIndex) {\n leftFixedColumns.push({\n title: '序号',\n align: 'left',\n width: 90,\n fixed: 'left',\n field: 'dataIndex',\n customRender: this.customRenderIndex\n });\n }\n const centerColumns = optins.tableColumns\n .filter(item => item.show)\n .map(item => ({\n ...item,\n ...this.handleColumnItem(item)\n }));\n const rightFixedColumns = [];\n if (optins.showButtonsColumn) {\n const operationButtons = optins.operationButtons ?? [];\n\n rightFixedColumns.push({\n fixed: 'right',\n align: 'center',\n title: optins.buttonsColumnTitle,\n width: optins.buttonsColumnWidth,\n customRender(scope) {\n return (\n <ActionButtonListRender\n buttonList={operationButtons}\n flex=\"center\"\n scope={scope}\n ctx={this}\n />\n );\n }\n });\n }\n\n let bodyCell = {};\n\n // 把customRender渲染成 bodyCell 插槽\n let _columns = [...leftFixedColumns, ...centerColumns, ...rightFixedColumns].map(\n item => {\n if (item.bodyCell) {\n bodyCell[item.dataIndex] = item.bodyCell;\n delete item.customRender;\n }\n return item;\n }\n );\n\n return {\n columns: _columns,\n bodyCell\n };\n },\n tableHeight() {\n return this.widget.options.tableHeight || undefined;\n },\n // rowClassName() {\n // if (this.widget.options.stripe) {\n // return (_record, index) => (index % 2 === 1 ? 'table-striped' : null);\n // }\n // return null;\n // },\n customClass() {\n return this.widget.options.customClass || '';\n },\n widgetSize() {\n return this.widget.options.tableSize || 'default';\n },\n fmtPagination() {\n const { showPagination } = this.widget.options;\n if (!showPagination) return false;\n return {\n ...this.widget.options.pagination,\n showTotal: total => `共 ${total} 条`\n };\n }\n },\n methods: {\n isShowBodyCell(dataIndex) {\n return this.columns?.bodyCell?.[dataIndex];\n },\n handleHidden() {\n const { onHidden, hidden } = this.widget.options;\n if (hidden) return true;\n if (onHidden) {\n const onHiddenFn = new Function(onHidden);\n return onHiddenFn.call(this);\n }\n return false;\n },\n rowClassName(record) {\n const { rowKey, colorRow } = this.widget.options;\n\n if (!colorRow) return '';\n return this.selectRow[rowKey] === record[rowKey] ? 'colorRowClassName' : '';\n },\n handleResizeColumn(w, col) {\n const { tableColumns } = this.widget.options;\n const newTableColumns = tableColumns.map(item => {\n if (item.dataIndex === col.dataIndex) {\n item.width = w;\n }\n return { ...item };\n });\n this.setTableColumns(newTableColumns);\n },\n disabledClick() {\n const { hasRowSelection } = this.widget.options.rowSelection;\n if (hasRowSelection) {\n return isEmpty(this.selectedRowInfo.selectedRowKeys);\n }\n return isEmpty(this.selectRow);\n },\n getSelectedRowKeys() {\n return this.selectedRowInfo.selectedRowKeys;\n },\n getSelectedRows() {\n return this.selectedRowInfo.getSelectedRows;\n },\n getTableColumns() {\n return this.widget.options.tableColumns;\n },\n setTableColumns(list) {\n this.widget.options.tableColumns = list;\n return;\n },\n async delSelectRow(delKeys) {\n await TpfConfirm({ content: '确定删除选中的数据吗' });\n delKeys = delKeys || this.selectedRowInfo.selectedRowKeys;\n if (!delKeys.length) return;\n const { rowKey } = this.widget.options;\n const data = this.getDataSource();\n const newList = data.filter(item => !delKeys?.includes(item[rowKey]));\n this.setDataSource(newList);\n\n this.$message.success('操作成功');\n },\n\n getPagination() {\n return this.widget.options.pagination;\n },\n /**\n * 设置表格分页\n * @param pagination\n */\n setPagination(pagination) {\n if (pagination.page !== undefined) {\n this.widget.options.pagination.current = pagination.page;\n }\n\n if (pagination.pageSize !== undefined) {\n this.widget.options.pagination.pageSize = pagination.pageSize;\n }\n\n if (pagination.total !== undefined) {\n this.widget.options.pagination.total = pagination.total;\n }\n },\n setDataSource(list) {\n this.selectedRowInfo = { selectedRowKeys: [], selectedRows: [] };\n this.selectRow = {};\n const val = isArray(list) ? list : [list];\n\n this.getFormRef().setTableValue(this.widget.options.name, val);\n // this.widget.options.dataSource = [...val];\n },\n setValue(list) {\n console.log('list: ', list);\n this.setDataSource(list);\n },\n setRowDataSource(scope, value) {\n console.log(scope, value);\n this.getFormRef().setTableRowDataValue(this.widget.options.name, scope, value);\n },\n getDataSource() {\n return this.widget.options.dataSource;\n },\n getValue() {\n return this.getDataSource();\n },\n async loadDataTableDataSource() {\n if (!this.widget.options.dsEnabled) {\n return;\n }\n const ops = this.widget.options;\n if (ops.dsEnabled && ops.http.url) {\n this.loading = true;\n const res = await fmtHttpParams.call(this, ops);\n this.setPagination(res);\n this.setDataSource(res.list);\n this.loading = false;\n }\n },\n handleCustomRow(record) {\n const { customRow, colorRow } = this.widget.options;\n const { hasRowSelection } = this.widget.options.rowSelection;\n // if (!customRow) return {};\n return {\n onClick: event => {\n if (colorRow) {\n this.selectRow = record;\n }\n const customFn = new Function('record', 'event', customRow.onClick);\n customFn.call(this, record, event);\n },\n onDblclick: event => {\n const customFn = new Function('record', 'event', customRow.onDblclick);\n customFn.call(this, record, event);\n },\n onMouseenter: event => {\n const customFn = new Function('record', 'event', customRow.onMouseenter);\n customFn.call(this, record, event);\n },\n onMouseleave: event => {\n const customFn = new Function('record', 'event', customRow.onMouseleave);\n customFn.call(this, record, event);\n }\n };\n },\n // 处理列配置\n handleColumnItem(item) {\n const res = omit(item, ['customRender']);\n const customRenderFn = item.customRender;\n if (!customRenderFn) return item;\n return {\n ...res,\n bodyCell: scope => {\n return executeFunction({\n functionBody: customRenderFn,\n params: scope,\n context: this,\n errorCallback: error => {\n console.error('Custom render error:', error);\n }\n });\n }\n };\n },\n getOperationButtonLabel(buttonConfig, rowIndex, row) {\n const { onGetOperationButtonLabel } = this.widget.options;\n if (!!onGetOperationButtonLabel) {\n const customFn = new Function(\n 'buttonConfig',\n 'rowIndex',\n 'row',\n onGetOperationButtonLabel\n );\n return customFn.call(this, buttonConfig, rowIndex, row);\n } else {\n return buttonConfig.label;\n }\n },\n // 处理操作按钮点击\n async handleOperationButtonClick(btnName, rowIndex, row, scope, ob) {\n this.skipSelectionChangeEvent = true;\n\n try {\n if (ob.onClick) {\n await executeFunction({\n functionBody: ob.onClick,\n params: { record: row, index: rowIndex, column: scope.column, btn: ob },\n context: this\n });\n return;\n }\n\n const { onOperationButtonClick } = this.widget.options;\n if (onOperationButtonClick) {\n await executeFunction({\n functionBody: onOperationButtonClick,\n params: { buttonName: btnName, rowIndex, row },\n context: this\n });\n } else {\n this.dispatch('VFormRender', 'operationButtonClick', [\n this,\n btnName,\n rowIndex,\n row\n ]);\n }\n } finally {\n this.skipSelectionChangeEvent = false;\n }\n },\n showOperationButton(buttonConfig, rowIndex, row) {\n const { onHideOperationButton } = this.widget.options;\n if (!!onHideOperationButton) {\n const customFn = new Function(\n 'buttonConfig',\n 'rowIndex',\n 'row',\n onHideOperationButton\n );\n return !!customFn.call(this, buttonConfig, rowIndex, row);\n } else {\n return !buttonConfig.hidden;\n }\n },\n disableOperationButton(buttonConfig, rowIndex, row) {\n const { onDisableOperationButton } = this.widget.options;\n if (!!onDisableOperationButton) {\n const customFn = new Function(\n 'buttonConfig',\n 'rowIndex',\n 'row',\n onDisableOperationButton\n );\n return customFn.call(this, buttonConfig, rowIndex, row);\n } else {\n return buttonConfig.disabled;\n }\n },\n customRenderIndex({ index }) {\n return index + 1;\n },\n handleCurrentPageChange(currentPage) {\n this.currentPage = currentPage;\n // if (!!this.widget.options.dsEnabled && !!this.widget.options.dsName) {\n // this.loadDataFromDS();\n // }\n\n const { onCurrentPageChange } = this.widget.options;\n\n if (!!onCurrentPageChange) {\n const customFn = new Function('pageSize', 'currentPage', onCurrentPageChange);\n customFn.call(this, this.pageSize, currentPage);\n } else {\n this.dispatch('VFormRender', 'dataTablePageChange', [\n this,\n this.pageSize,\n currentPage\n ]);\n }\n },\n handlePageSizeChange(pageSize) {\n this.pageSize = pageSize;\n // if (!!this.widget.options.dsEnabled && !!this.widget.options.dsName) {\n // this.loadDataFromDS();\n // }\n const { onPageSizeChange } = this.widget.options;\n if (!!onPageSizeChange) {\n const customFn = new Function('pageSize', 'currentPage', onPageSizeChange);\n customFn.call(this, pageSize, this.currentPage);\n } else {\n this.dispatch('VFormRender', 'dataTablePageSizeChange', [\n this,\n pageSize,\n this.currentPage\n ]);\n }\n },\n handleTablePageChange(pagination, filters, sorter, { currentDataSource }) {\n const fn = this.widget.options.onTableChange;\n this.widget.options.pagination.current = pagination.current;\n this.widget.options.pagination.pageSize = pagination.pageSize;\n if (fn) {\n const changeFunc = new Function(\n 'pagination',\n 'filters',\n 'sorter',\n 'currentDataSource',\n fn\n );\n changeFunc.call(this, pagination, filters, sorter, { currentDataSource });\n }\n this.loadDataTableDataSource();\n },\n handleRowSelection() {\n const info = this.widget.options.rowSelection;\n if (!info.hasRowSelection) {\n return undefined;\n }\n return {\n ...omit(info, ['onChange']),\n onChange: (selectedRowKeys, selectedRows) => {\n this.selectedRowInfo = { selectedRowKeys, selectedRows };\n const rcFunc = new Function('selectedRowKeys', 'selectedRows', info.onChange);\n rcFunc.call(this, selectedRowKeys, selectedRows);\n }\n };\n }\n }\n};\n"],"names":["data","selectedRowInfo","selectedRowKeys","selectedRows","selectRow","loading","components","RenderBodyCell","computed","columns","leftFixedColumns","optins","widget","options","showIndex","push","title","align","width","fixed","field","customRender","customRenderIndex","centerColumns","tableColumns","filter","item","show","map","handleColumnItem","rightFixedColumns","showButtonsColumn","operationButtons","buttonsColumnTitle","buttonsColumnWidth","scope","_createVNode","ActionButtonListRender","bodyCell","_columns","dataIndex","tableHeight","undefined","customClass","widgetSize","tableSize","fmtPagination","showPagination","pagination","showTotal","total","methods","isShowBodyCell","handleHidden","onHidden","hidden","onHiddenFn","Function","call","rowClassName","record","rowKey","colorRow","handleResizeColumn","w","col","newTableColumns","setTableColumns","disabledClick","hasRowSelection","rowSelection","isEmpty","getSelectedRowKeys","getSelectedRows","getTableColumns","list","delSelectRow","delKeys","TpfConfirm","content","length","getDataSource","newList","includes","setDataSource","$message","success","getPagination","setPagination","page","current","pageSize","val","isArray","getFormRef","setTableValue","name","setValue","console","log","setRowDataSource","value","setTableRowDataValue","dataSource","getValue","loadDataTableDataSource","dsEnabled","ops","http","url","res","fmtHttpParams","handleCustomRow","customRow","onClick","event","customFn","onDblclick","onMouseenter","onMouseleave","omit","customRenderFn","executeFunction","functionBody","params","context","errorCallback","error","getOperationButtonLabel","buttonConfig","rowIndex","row","onGetOperationButtonLabel","label","handleOperationButtonClick","btnName","ob","skipSelectionChangeEvent","index","column","btn","onOperationButtonClick","buttonName","dispatch","showOperationButton","onHideOperationButton","disableOperationButton","onDisableOperationButton","disabled","handleCurrentPageChange","currentPage","onCurrentPageChange","handlePageSizeChange","onPageSizeChange","handleTablePageChange","filters","sorter","currentDataSource","fn","onTableChange","changeFunc","handleRowSelection","info","onChange","rcFunc"],"mappings":"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"}