@kp-ui/lowcode 1.0.50 → 1.0.52
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.
- package/_virtual/virtual_svg-icons-register.js +2 -2
- package/_virtual/virtual_svg-icons-register.js.map +1 -1
- package/package.json +1 -1
- package/src/components/form-designer/form-widget/container-widget/data-table-widget.vue.js +2 -2
- package/src/components/form-designer/form-widget/container-widget/data-table-widget.vue.js.map +1 -1
- package/src/components/form-designer/form-widget/container-widget/data-table-widget.vue2.js +0 -170
- package/src/components/form-designer/form-widget/container-widget/data-table-widget.vue2.js.map +1 -1
- package/src/components/form-designer/form-widget/field-widget/button-list-widget.vue.js +11 -34
- package/src/components/form-designer/form-widget/field-widget/button-list-widget.vue.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/button-list-editor.vue.js +13 -210
- package/src/components/form-designer/setting-panel/property-editor/button-list-editor.vue.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-showButtonsColumn-editor.vue.js +56 -422
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-showButtonsColumn-editor.vue.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-tableColumns-editor.vue.js +2 -6
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-tableColumns-editor.vue.js.map +1 -1
- package/src/components/form-render/container-item/data-table-item.vue.js +8 -14
- package/src/components/form-render/container-item/data-table-item.vue.js.map +1 -1
- package/src/components/public/ActionButtonListDialog.vue.js +189 -0
- package/src/components/public/ActionButtonListDialog.vue.js.map +1 -0
- package/src/components/public/ActionButtonListDialog.vue2.js +115 -0
- package/src/components/public/ActionButtonListDialog.vue2.js.map +1 -0
- package/src/components/public/ActionButtonListRender.vue.js +44 -0
- package/src/components/public/ActionButtonListRender.vue.js.map +1 -0
- package/src/components/public/ActionButtonListRender.vue2.js +86 -0
- package/src/components/public/ActionButtonListRender.vue2.js.map +1 -0
- package/src/mixins/useDataTableMixin.js +8 -43
- package/src/mixins/useDataTableMixin.js.map +1 -1
- package/src/utils/executeFunction.js +4 -5
- package/src/utils/executeFunction.js.map +1 -1
- package/styles/style.css +1 -1
- package/types/src/types/button.d.ts +10 -0
- package/types/src/utils/executeFunction.d.ts.map +1 -1
|
@@ -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-2bf98537"]]);
|
|
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';\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';\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
|
|
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
|
-
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
}
|
|
@@ -89,7 +64,6 @@ const useDataTableMixin = {
|
|
|
89
64
|
}
|
|
90
65
|
return item;
|
|
91
66
|
});
|
|
92
|
-
console.log(_columns, "columns");
|
|
93
67
|
return {
|
|
94
68
|
columns: _columns,
|
|
95
69
|
bodyCell
|
|
@@ -231,15 +205,6 @@ const useDataTableMixin = {
|
|
|
231
205
|
this.getFormRef().setTableRowDataValue(this.widget.options.name, scope, value);
|
|
232
206
|
},
|
|
233
207
|
getDataSource() {
|
|
234
|
-
this.proxy.$router.push({
|
|
235
|
-
path: "/formData",
|
|
236
|
-
query: {
|
|
237
|
-
formCode: "EditPurchaseInvoice",
|
|
238
|
-
id: 61,
|
|
239
|
-
type: "edit",
|
|
240
|
-
...params
|
|
241
|
-
}
|
|
242
|
-
});
|
|
243
208
|
return this.widget.options.dataSource;
|
|
244
209
|
},
|
|
245
210
|
getValue() {
|
|
@@ -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 console.log(_columns, 'columns');\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 this.proxy.$router.push({\n path: '/formData',\n query: { formCode: 'EditPurchaseInvoice', id: 61, type: 'edit', ...params }\n });\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","console","log","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","setRowDataSource","value","getFormRef","setTableRowDataValue","proxy","$router","path","query","formCode","id","params","getValue","loadDataTableDataSource","dsEnabled","ops","http","url","res","fmtHttpParams","handleCustomRow","customRow","event","customFn","onDblclick","onMouseenter","onMouseleave","omit","customRenderFn","executeFunction","functionBody","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;AAEA4B,cAAQC,IAAIH,UAAU,SAAS;AAE/B,aAAO;AAAA,QACH3C,SAAS2C;AAAAA,QACTD;AAAAA,MACH;AAAA,IACJ;AAAA,IACDK,cAAc;AACV,aAAO,KAAK5C,OAAOC,QAAQ2C,eAAeC;AAAAA,IAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAODC,cAAc;AACV,aAAO,KAAK9C,OAAOC,QAAQ6C,eAAe;AAAA,IAC7C;AAAA,IACDC,aAAa;AACT,aAAO,KAAK/C,OAAOC,QAAQ+C,aAAa;AAAA,IAC3C;AAAA,IACDC,gBAAgB;AACZ,YAAM;AAAA,QAAEC;AAAAA,MAAe,IAAI,KAAKlD,OAAOC;AACvC,UAAI,CAACiD,eAAgB,QAAO;AAC5B,aAAO;AAAA,QACH,GAAG,KAAKlD,OAAOC,QAAQkD;AAAAA,QACvBC,WAAWC,WAAS,KAAKA,KAAK;AAAA,MACjC;AAAA,IACL;AAAA,EACH;AAAA,EACDC,SAAS;AAAA,IACLC,eAAed,WAAW;;AACtB,cAAO,gBAAK5C,YAAL,mBAAc0C,aAAd,mBAAyBE;AAAAA,IACnC;AAAA,IACDe,eAAe;AACX,YAAM;AAAA,QAAEC;AAAAA,QAAUC;AAAAA,MAAO,IAAI,KAAK1D,OAAOC;AACzC,UAAIyD,OAAQ,QAAO;AACnB,UAAID,UAAU;AACV,cAAME,aAAa,IAAIC,SAASH,QAAQ;AACxC,eAAOE,WAAW7E,KAAK,IAAI;AAAA,MAC/B;AACA,aAAO;AAAA,IACV;AAAA,IACD+E,aAAa5B,QAAQ;AACjB,YAAM;AAAA,QAAE6B;AAAAA,QAAQC;AAAAA,MAAS,IAAI,KAAK/D,OAAOC;AAEzC,UAAI,CAAC8D,SAAU,QAAO;AACtB,aAAO,KAAK3E,UAAU0E,MAAM,MAAM7B,OAAO6B,MAAM,IAAI,sBAAsB;AAAA,IAC5E;AAAA,IACDE,mBAAmBC,GAAGC,KAAK;AACvB,YAAM;AAAA,QAAEtD;AAAAA,MAAa,IAAI,KAAKZ,OAAOC;AACrC,YAAMkE,kBAAkBvD,aAAaI,IAAIF,UAAQ;AAC7C,YAAIA,KAAK2B,cAAcyB,IAAIzB,WAAW;AAClC3B,eAAKR,QAAQ2D;AAAAA,QACjB;AACA,eAAO;AAAA,UAAE,GAAGnD;AAAAA,QAAM;AAAA,MACtB,CAAC;AACD,WAAKsD,gBAAgBD,eAAe;AAAA,IACvC;AAAA,IACDE,gBAAgB;AACZ,YAAM;AAAA,QAAEC;AAAAA,MAAgB,IAAI,KAAKtE,OAAOC,QAAQsE;AAChD,UAAID,iBAAiB;AACjB,eAAOE,QAAQ,KAAKvF,gBAAgBC,eAAe;AAAA,MACvD;AACA,aAAOsF,QAAQ,KAAKpF,SAAS;AAAA,IAChC;AAAA,IACDqF,qBAAqB;AACjB,aAAO,KAAKxF,gBAAgBC;AAAAA,IAC/B;AAAA,IACDwF,kBAAkB;AACd,aAAO,KAAKzF,gBAAgByF;AAAAA,IAC/B;AAAA,IACDC,kBAAkB;AACd,aAAO,KAAK3E,OAAOC,QAAQW;AAAAA,IAC9B;AAAA,IACDwD,gBAAgBQ,MAAM;AAClB,WAAK5E,OAAOC,QAAQW,eAAegE;AACnC;AAAA,IACH;AAAA,IACD,MAAMC,aAAaC,SAAS;AACxB,YAAMC,WAAW;AAAA,QAAEC,SAAS;AAAA,MAAa,CAAC;AAC1CF,gBAAUA,WAAW,KAAK7F,gBAAgBC;AAC1C,UAAI,CAAC4F,QAAQG,OAAQ;AACrB,YAAM;AAAA,QAAEnB;AAAAA,MAAO,IAAI,KAAK9D,OAAOC;AAC/B,YAAMjB,OAAO,KAAKkG,cAAe;AACjC,YAAMC,UAAUnG,KAAK6B,OAAOC,UAAQ,EAACgE,mCAASM,SAAStE,KAAKgD,MAAM,GAAE;AACpE,WAAKuB,cAAcF,OAAO;AAE1B,WAAKG,SAASC,QAAQ,MAAM;AAAA,IAC/B;AAAA,IAEDC,gBAAgB;AACZ,aAAO,KAAKxF,OAAOC,QAAQkD;AAAAA,IAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,IAKDsC,cAActC,YAAY;AACtB,UAAIA,WAAWuC,SAAS7C,QAAW;AAC/B,aAAK7C,OAAOC,QAAQkD,WAAWwC,UAAUxC,WAAWuC;AAAAA,MACxD;AAEA,UAAIvC,WAAWyC,aAAa/C,QAAW;AACnC,aAAK7C,OAAOC,QAAQkD,WAAWyC,WAAWzC,WAAWyC;AAAAA,MACzD;AAEA,UAAIzC,WAAWE,UAAUR,QAAW;AAChC,aAAK7C,OAAOC,QAAQkD,WAAWE,QAAQF,WAAWE;AAAAA,MACtD;AAAA,IACH;AAAA,IACDgC,cAAcT,MAAM;AAChB,WAAK3F,kBAAkB;AAAA,QAAEC,iBAAiB,CAAE;AAAA,QAAEC,cAAc,CAAA;AAAA,MAAI;AAChE,WAAKC,YAAY,CAAE;AACnB,YAAMyG,MAAMC,QAAQlB,IAAI,IAAIA,OAAO,CAACA,IAAI;AACxC,WAAK5E,OAAOC,QAAQ8F,aAAa,CAAC,GAAGF,GAAG;AAAA,IAC3C;AAAA,IACDG,SAASpB,MAAM;AACXlC,cAAQC,IAAI,UAAUiC,IAAI;AAC1B,WAAKS,cAAcT,IAAI;AAAA,IAC1B;AAAA,IACDqB,iBAAiBtE,OAAOuE,OAAO;AAC3B,WAAKC,aAAaC,qBAAqB,KAAKpG,OAAOC,QAAQqC,MAAMX,OAAOuE,KAAK;AAAA,IAChF;AAAA,IACDhB,gBAAgB;AACZ,WAAKmB,MAAMC,QAAQnG,KAAK;AAAA,QACpBoG,MAAM;AAAA,QACNC,OAAO;AAAA,UAAEC,UAAU;AAAA,UAAuBC,IAAI;AAAA,UAAIjH,MAAM;AAAA,UAAQ,GAAGkH;AAAAA,QAAO;AAAA,MAC9E,CAAC;AACD,aAAO,KAAK3G,OAAOC,QAAQ8F;AAAAA,IAC9B;AAAA,IACDa,WAAW;AACP,aAAO,KAAK1B,cAAe;AAAA,IAC9B;AAAA,IACD,MAAM2B,0BAA0B;AAC5B,UAAI,CAAC,KAAK7G,OAAOC,QAAQ6G,WAAW;AAChC;AAAA,MACJ;AACA,YAAMC,MAAM,KAAK/G,OAAOC;AACxB,UAAI8G,IAAID,aAAaC,IAAIC,KAAKC,KAAK;AAC/B,aAAK5H,UAAU;AACf,cAAM6H,MAAM,MAAMC,cAAcrI,KAAK,MAAMiI,GAAG;AAC9C,aAAKtB,cAAcyB,GAAG;AACtB,aAAK7B,cAAc6B,IAAItC,IAAI;AAC3B,aAAKvF,UAAU;AAAA,MACnB;AAAA,IACH;AAAA,IACD+H,gBAAgBnF,QAAQ;AACpB,YAAM;AAAA,QAAEoF;AAAAA,QAAWtD;AAAAA,MAAS,IAAI,KAAK/D,OAAOC;AAC5C,YAAM;AAAA,QAAEqE;AAAAA,MAAgB,IAAI,KAAKtE,OAAOC,QAAQsE;AAEhD,aAAO;AAAA,QACHlC,SAASiF,WAAS;AACd,cAAIvD,UAAU;AACV,iBAAK3E,YAAY6C;AAAAA,UACrB;AACA,gBAAMsF,WAAW,IAAI3D,SAAS,UAAU,SAASyD,UAAUhF,OAAO;AAClEkF,mBAASzI,KAAK,MAAMmD,QAAQqF,KAAK;AAAA,QACpC;AAAA,QACDE,YAAYF,WAAS;AACjB,gBAAMC,WAAW,IAAI3D,SAAS,UAAU,SAASyD,UAAUG,UAAU;AACrED,mBAASzI,KAAK,MAAMmD,QAAQqF,KAAK;AAAA,QACpC;AAAA,QACDG,cAAcH,WAAS;AACnB,gBAAMC,WAAW,IAAI3D,SAAS,UAAU,SAASyD,UAAUI,YAAY;AACvEF,mBAASzI,KAAK,MAAMmD,QAAQqF,KAAK;AAAA,QACpC;AAAA,QACDI,cAAcJ,WAAS;AACnB,gBAAMC,WAAW,IAAI3D,SAAS,UAAU,SAASyD,UAAUK,YAAY;AACvEH,mBAASzI,KAAK,MAAMmD,QAAQqF,KAAK;AAAA,QACrC;AAAA,MACH;AAAA,IACJ;AAAA;AAAA,IAEDrG,iBAAiBH,MAAM;AACnB,YAAMoG,MAAMS,KAAK7G,MAAM,CAAC,cAAc,CAAC;AACvC,YAAM8G,iBAAiB9G,KAAKL;AAC5B,UAAI,CAACmH,eAAgB,QAAO9G;AAC5B,aAAO;AAAA,QACH,GAAGoG;AAAAA,QACH3E,UAAUZ,WAAS;AACf,iBAAOkG,gBAAgB;AAAA,YACnBC,cAAcF;AAAAA,YACdjB,QAAQhF;AAAAA,YACRoG,SAAS;AAAA,YACTC,eAAeC,WAAS;AACpBvF,sBAAQuF,MAAM,wBAAwBA,KAAK;AAAA,YAC/C;AAAA,UACJ,CAAC;AAAA,QACL;AAAA,MACH;AAAA,IACJ;AAAA,IACDzG,wBAAwB0G,cAAcC,UAAUC,KAAK;AACjD,YAAM;AAAA,QAAEC;AAAAA,MAA0B,IAAI,KAAKrI,OAAOC;AAClD,UAAI,CAAC,CAACoI,2BAA2B;AAC7B,cAAMd,WAAW,IAAI3D,SACjB,gBACA,YACA,OACAyE,yBACJ;AACA,eAAOd,SAASzI,KAAK,MAAMoJ,cAAcC,UAAUC,GAAG;AAAA,MAC1D,OAAO;AACH,eAAOF,aAAaI;AAAAA,MACxB;AAAA,IACH;AAAA;AAAA,IAED,MAAM/G,2BAA2BgH,SAASJ,UAAUC,KAAKzG,OAAO6G,IAAI;AAChE,WAAKC,2BAA2B;AAEhC,UAAI;AACA,YAAID,GAAGnG,SAAS;AACZ,gBAAMwF,gBAAgB;AAAA,YAClBC,cAAcU,GAAGnG;AAAAA,YACjBsE,QAAQ;AAAA,cAAE1E,QAAQmG;AAAAA,cAAKrG,OAAOoG;AAAAA,cAAUO,QAAQ/G,MAAM+G;AAAAA,cAAQC,KAAKH;AAAAA,YAAI;AAAA,YACvET,SAAS;AAAA,UACb,CAAC;AACD;AAAA,QACJ;AAEA,cAAM;AAAA,UAAEa;AAAAA,QAAuB,IAAI,KAAK5I,OAAOC;AAC/C,YAAI2I,wBAAwB;AACxB,gBAAMf,gBAAgB;AAAA,YAClBC,cAAcc;AAAAA,YACdjC,QAAQ;AAAA,cAAEkC,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,IACDpH,oBAAoB6G,cAAcC,UAAUC,KAAK;AAC7C,YAAM;AAAA,QAAEW;AAAAA,MAAsB,IAAI,KAAK/I,OAAOC;AAC9C,UAAI,CAAC,CAAC8I,uBAAuB;AACzB,cAAMxB,WAAW,IAAI3D,SACjB,gBACA,YACA,OACAmF,qBACJ;AACA,eAAO,CAAC,CAACxB,SAASzI,KAAK,MAAMoJ,cAAcC,UAAUC,GAAG;AAAA,MAC5D,OAAO;AACH,eAAO,CAACF,aAAaxE;AAAAA,MACzB;AAAA,IACH;AAAA,IACDpC,uBAAuB4G,cAAcC,UAAUC,KAAK;AAChD,YAAM;AAAA,QAAEY;AAAAA,MAAyB,IAAI,KAAKhJ,OAAOC;AACjD,UAAI,CAAC,CAAC+I,0BAA0B;AAC5B,cAAMzB,WAAW,IAAI3D,SACjB,gBACA,YACA,OACAoF,wBACJ;AACA,eAAOzB,SAASzI,KAAK,MAAMoJ,cAAcC,UAAUC,GAAG;AAAA,MAC1D,OAAO;AACH,eAAOF,aAAae;AAAAA,MACxB;AAAA,IACH;AAAA,IACDvI,kBAAkB;AAAA,MAAEqB;AAAAA,IAAM,GAAG;AACzB,aAAOA,QAAQ;AAAA,IAClB;AAAA,IACDmH,wBAAwBC,aAAa;AACjC,WAAKA,cAAcA;AAKnB,YAAM;AAAA,QAAEC;AAAAA,MAAoB,IAAI,KAAKpJ,OAAOC;AAE5C,UAAI,CAAC,CAACmJ,qBAAqB;AACvB,cAAM7B,WAAW,IAAI3D,SAAS,YAAY,eAAewF,mBAAmB;AAC5E7B,iBAASzI,KAAK,MAAM,KAAK8G,UAAUuD,WAAW;AAAA,MAClD,OAAO;AACH,aAAKL,SAAS,eAAe,uBAAuB,CAChD,MACA,KAAKlD,UACLuD,WAAW,CACd;AAAA,MACL;AAAA,IACH;AAAA,IACDE,qBAAqBzD,UAAU;AAC3B,WAAKA,WAAWA;AAIhB,YAAM;AAAA,QAAE0D;AAAAA,MAAiB,IAAI,KAAKtJ,OAAOC;AACzC,UAAI,CAAC,CAACqJ,kBAAkB;AACpB,cAAM/B,WAAW,IAAI3D,SAAS,YAAY,eAAe0F,gBAAgB;AACzE/B,iBAASzI,KAAK,MAAM8G,UAAU,KAAKuD,WAAW;AAAA,MAClD,OAAO;AACH,aAAKL,SAAS,eAAe,2BAA2B,CACpD,MACAlD,UACA,KAAKuD,WAAW,CACnB;AAAA,MACL;AAAA,IACH;AAAA,IACDI,sBAAsBpG,YAAYqG,SAASC,QAAQ;AAAA,MAAEC;AAAAA,IAAkB,GAAG;AACtE,YAAMC,KAAK,KAAK3J,OAAOC,QAAQ2J;AAC/B,WAAK5J,OAAOC,QAAQkD,WAAWwC,UAAUxC,WAAWwC;AACpD,WAAK3F,OAAOC,QAAQkD,WAAWyC,WAAWzC,WAAWyC;AACrD,UAAI+D,IAAI;AACJ,cAAME,aAAa,IAAIjG,SACnB,cACA,WACA,UACA,qBACA+F,EACJ;AACAE,mBAAW/K,KAAK,MAAMqE,YAAYqG,SAASC,QAAQ;AAAA,UAAEC;AAAAA,QAAkB,CAAC;AAAA,MAC5E;AACA,WAAK7C,wBAAyB;AAAA,IACjC;AAAA,IACDiD,qBAAqB;AACjB,YAAMC,OAAO,KAAK/J,OAAOC,QAAQsE;AACjC,UAAI,CAACwF,KAAKzF,iBAAiB;AACvB,eAAOzB;AAAAA,MACX;AACA,aAAO;AAAA,QACH,GAAG8E,KAAKoC,MAAM,CAAC,UAAU,CAAC;AAAA,QAC1BC,UAAUA,CAAC9K,iBAAiBC,iBAAiB;AACzC,eAAKF,kBAAkB;AAAA,YAAEC;AAAAA,YAAiBC;AAAAA,UAAc;AACxD,gBAAM8K,SAAS,IAAIrG,SAAS,mBAAmB,gBAAgBmG,KAAKC,QAAQ;AAC5EC,iBAAOnL,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 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":["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","dataSource","setValue","console","log","setRowDataSource","value","getFormRef","setTableRowDataValue","name","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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"}
|
|
@@ -6,12 +6,11 @@ const executeFunction = ({
|
|
|
6
6
|
}) => {
|
|
7
7
|
if (!(functionBody == null ? void 0 : functionBody.trim())) return true;
|
|
8
8
|
try {
|
|
9
|
-
const
|
|
9
|
+
const _function = new Function(
|
|
10
10
|
"scope",
|
|
11
|
-
`
|
|
12
|
-
return ( ()=> {
|
|
11
|
+
`return ( ()=> {
|
|
13
12
|
try {
|
|
14
|
-
|
|
13
|
+
${functionBody}
|
|
15
14
|
} catch (error) {
|
|
16
15
|
console.error('Function execution error:', error);
|
|
17
16
|
throw error;
|
|
@@ -19,7 +18,7 @@ const executeFunction = ({
|
|
|
19
18
|
})();
|
|
20
19
|
`
|
|
21
20
|
);
|
|
22
|
-
const result =
|
|
21
|
+
const result = _function.call(context, params);
|
|
23
22
|
return result;
|
|
24
23
|
} catch (error) {
|
|
25
24
|
console.error("Execute function error:", error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeFunction.js","sources":["../../../src/utils/executeFunction.ts"],"sourcesContent":["type ExecuteFunctionContext = Record<string, any>;\n\ninterface ExecuteOptions {\n functionBody: string;\n params?: Record<string, any>;\n context?: ExecuteFunctionContext;\n errorCallback?: (error: Error) => void;\n}\n\n/**\n * 安全执行字符串形式的函数\n * @param options 执行配置项\n * @returns 函数执行结果\n */\nexport const executeFunction = ({\n functionBody,\n params = {},\n context = {},\n errorCallback\n}: ExecuteOptions) => {\n if (!functionBody?.trim()) return true;\n try {\n // 创建异步函数,传入单个对象参数\n const
|
|
1
|
+
{"version":3,"file":"executeFunction.js","sources":["../../../src/utils/executeFunction.ts"],"sourcesContent":["type ExecuteFunctionContext = Record<string, any>;\n\ninterface ExecuteOptions {\n functionBody: string;\n params?: Record<string, any>;\n context?: ExecuteFunctionContext;\n errorCallback?: (error: Error) => void;\n}\n\n/**\n * 安全执行字符串形式的函数\n * @param options 执行配置项\n * @returns 函数执行结果\n */\nexport const executeFunction = ({\n functionBody,\n params = {},\n context = {},\n errorCallback\n}: ExecuteOptions) => {\n if (!functionBody?.trim()) return true;\n try {\n // 创建异步函数,传入单个对象参数\n const _function = new Function(\n 'scope',\n `return ( ()=> { \n try {\n ${functionBody}\n } catch (error) {\n console.error('Function execution error:', error);\n throw error;\n }\n })();\n `\n );\n\n // 使用指定上下文执行函数,传入参数对象\n const result = _function.call(context, params);\n return result;\n } catch (error) {\n console.error('Execute function error:', error);\n errorCallback?.(error as Error);\n return '自定义渲染失败';\n }\n};\n"],"names":[],"mappings":"AAcO,MAAM,kBAAkB,CAAC;AAAA,EAC5B;AAAA,EACA,SAAS,CAAC;AAAA,EACV,UAAU,CAAC;AAAA,EACX;AACJ,MAAsB;AAClB,MAAI,EAAC,6CAAc,QAAe,QAAA;AAC9B,MAAA;AAEA,UAAM,YAAY,IAAI;AAAA,MAClB;AAAA,MACA;AAAA;AAAA,uBAEW,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAO3B;AAGA,UAAM,SAAS,UAAU,KAAK,SAAS,MAAM;AACtC,WAAA;AAAA,WACF,OAAO;AACJ,YAAA,MAAM,2BAA2B,KAAK;AAC9C,mDAAgB;AACT,WAAA;AAAA,EAAA;AAEf;"}
|