@fecp/designer 5.1.8 → 5.2.0

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 (133) hide show
  1. package/es/designer.css +2177 -1400
  2. package/es/node_modules/.pnpm/@element-plus_icons-vue@2.3.2_vue@3.5.13_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/index.mjs +16 -0
  3. package/es/packages/designer/src/api/index.mjs +16 -1
  4. package/es/packages/designer/src/components/FieldSetMapping.vue2.mjs +407 -0
  5. package/es/packages/designer/src/components/FormulaEditorInput.vue.mjs +1 -1
  6. package/es/packages/designer/src/components/JsonDataDrawer.vue.mjs +1 -2
  7. package/es/packages/designer/src/components/OnlyFLowConfigButton.vue2.mjs +118 -0
  8. package/es/packages/designer/src/components/TemplateDialog.vue.mjs +254 -0
  9. package/es/packages/designer/src/components/TemplateSelector.vue.mjs +22 -175
  10. package/es/packages/designer/src/components/TemplateSelector.vue2.mjs +1 -0
  11. package/es/packages/designer/src/layout/aside/HiddenFieldDialog.vue.mjs +9 -15
  12. package/es/packages/designer/src/layout/header/index.vue.mjs +195 -11
  13. package/es/packages/designer/src/packages/dialog/index.vue.mjs +2 -2
  14. package/es/packages/designer/src/packages/dialogGlobal/index.vue.mjs +1004 -0
  15. package/es/packages/designer/src/packages/dialogGlobal/useDialogGlobalDialog.mjs +16 -0
  16. package/es/packages/designer/src/packages/event/index.vue2.mjs +76 -16
  17. package/es/packages/designer/src/packages/event/onlyFlow.vue2.mjs +105 -0
  18. package/es/packages/designer/src/packages/event/useOnlyFlowDialog.mjs +1 -1
  19. package/es/packages/designer/src/packages/eventFlow/dialog/action/Dialog.vue.mjs +225 -24
  20. package/es/packages/designer/src/packages/eventFlow/dialog/action/config.mjs +5 -1
  21. package/es/packages/designer/src/packages/form/aside/index.mjs +24 -10
  22. package/es/packages/designer/src/packages/form/components/ApprovalHistory.vue.mjs +3 -3
  23. package/es/packages/designer/src/packages/form/components/ComponentPreviewWrapper.vue.mjs +152 -69
  24. package/es/packages/designer/src/packages/form/components/DefaultValueEditor.vue.mjs +88 -0
  25. package/es/packages/designer/src/packages/form/components/SubForm.vue.mjs +3 -3
  26. package/es/packages/designer/src/packages/form/components/SubTable.vue.mjs +3 -3
  27. package/es/packages/designer/src/packages/form/components/SubTitle.vue.mjs +27 -0
  28. package/es/packages/designer/src/packages/form/headerBtn.vue.mjs +33 -57
  29. package/es/packages/designer/src/packages/form/index.vue.mjs +20 -8
  30. package/es/packages/designer/src/packages/form/property/index.vue.mjs +5 -3
  31. package/es/packages/designer/src/packages/form/property/subTitleH2.vue.mjs +94 -0
  32. package/es/packages/designer/src/packages/form/property/widgets.vue.mjs +275 -94
  33. package/es/packages/designer/src/packages/formulaEditor/components/FieldVariable.vue2.mjs +84 -0
  34. package/es/packages/designer/src/packages/formulaEditor/components/FormulaList.vue2.mjs +130 -0
  35. package/es/packages/designer/src/packages/formulaEditor/index.vue2.mjs +230 -0
  36. package/es/packages/designer/src/packages/table/default.mjs +1 -0
  37. package/es/packages/designer/src/packages/table/headerBtn.vue.mjs +48 -17
  38. package/es/packages/designer/src/packages/table/index.vue.mjs +1 -3
  39. package/es/packages/designer/src/packages/table/property/filterWidgets.vue.mjs +34 -7
  40. package/es/packages/designer/src/packages/table/queryModule/DynamicModeConfig.vue.mjs +492 -0
  41. package/es/packages/designer/src/packages/table/queryModule/FixedModeConfig.vue.mjs +15 -2
  42. package/es/packages/designer/src/packages/table/queryModule/index.vue.mjs +463 -138
  43. package/es/packages/designer/src/packages/table/tableBtn.vue.mjs +33 -15
  44. package/es/packages/designer/src/utils/optionLoader.mjs +157 -0
  45. package/es/packages/designer/src/utils/simpleCache.mjs +80 -0
  46. package/es/packages/mobile/src/components/form/field/Field.vue.mjs +14 -12
  47. package/es/packages/vue/src/api/index.mjs +3 -0
  48. package/es/packages/vue/src/components/all.mjs +2 -2
  49. package/es/packages/vue/src/components/bus/approvalHistory/ApprovalHistory.vue.mjs +3 -3
  50. package/es/packages/vue/src/components/details/header/Header.vue.mjs +1 -1
  51. package/es/packages/vue/src/components/dialog/DialogRenderer.vue2.mjs +2 -2
  52. package/es/packages/vue/src/components/forms/cascader/Cascader.vue.mjs +3 -2
  53. package/es/packages/vue/src/components/forms/form/Form.vue.mjs +6 -3
  54. package/es/packages/vue/src/components/forms/formItem/FormItem.vue.mjs +14 -12
  55. package/es/packages/vue/src/components/forms/index.mjs +2 -2
  56. package/es/packages/vue/src/components/forms/subForm/SubForm.vue.mjs +2 -2
  57. package/es/packages/vue/src/components/forms/subTable/SubTable.vue.mjs +2 -2
  58. package/es/packages/vue/src/components/forms/subTitle/SubTitle.vue.mjs +27 -0
  59. package/es/packages/vue/src/components/forms/subTitle/index.mjs +7 -0
  60. package/es/packages/vue/src/components/forms/text/Text.vue.mjs +47 -4
  61. package/es/packages/vue/src/components/table/CustomButtons.vue.mjs +32 -4
  62. package/es/packages/vue/src/components/table/DynamicQuery.vue.mjs +425 -0
  63. package/es/packages/vue/src/components/table/Table.vue.mjs +39 -21
  64. package/es/packages/vue/src/components/table/TableFilter.vue.mjs +7 -25
  65. package/es/packages/vue/src/utils/common.mjs +27 -0
  66. package/es/packages/vue/src/utils/eventFlow/actionHandlers.mjs +20 -3
  67. package/lib/designer.css +2177 -1400
  68. package/lib/node_modules/.pnpm/@element-plus_icons-vue@2.3.2_vue@3.5.13_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/index.js +16 -0
  69. package/lib/packages/designer/src/api/index.js +15 -0
  70. package/lib/packages/designer/src/components/FieldSetMapping.vue2.js +407 -0
  71. package/lib/packages/designer/src/components/FormulaEditorInput.vue.js +1 -1
  72. package/lib/packages/designer/src/components/JsonDataDrawer.vue.js +1 -2
  73. package/lib/packages/designer/src/components/OnlyFLowConfigButton.vue2.js +118 -0
  74. package/lib/packages/designer/src/components/TemplateDialog.vue.js +254 -0
  75. package/lib/packages/designer/src/components/TemplateSelector.vue.js +21 -174
  76. package/lib/packages/designer/src/components/TemplateSelector.vue2.js +1 -0
  77. package/lib/packages/designer/src/layout/aside/HiddenFieldDialog.vue.js +9 -15
  78. package/lib/packages/designer/src/layout/header/index.vue.js +192 -8
  79. package/lib/packages/designer/src/packages/dialog/index.vue.js +2 -2
  80. package/lib/packages/designer/src/packages/dialogGlobal/index.vue.js +1004 -0
  81. package/lib/packages/designer/src/packages/dialogGlobal/useDialogGlobalDialog.js +16 -0
  82. package/lib/packages/designer/src/packages/event/index.vue2.js +75 -15
  83. package/lib/packages/designer/src/packages/event/onlyFlow.vue2.js +105 -0
  84. package/lib/packages/designer/src/packages/event/useOnlyFlowDialog.js +1 -1
  85. package/lib/packages/designer/src/packages/eventFlow/dialog/action/Dialog.vue.js +226 -25
  86. package/lib/packages/designer/src/packages/eventFlow/dialog/action/config.js +5 -1
  87. package/lib/packages/designer/src/packages/form/aside/index.js +24 -10
  88. package/lib/packages/designer/src/packages/form/components/ApprovalHistory.vue.js +3 -3
  89. package/lib/packages/designer/src/packages/form/components/ComponentPreviewWrapper.vue.js +160 -77
  90. package/lib/packages/designer/src/packages/form/components/DefaultValueEditor.vue.js +88 -0
  91. package/lib/packages/designer/src/packages/form/components/SubForm.vue.js +3 -3
  92. package/lib/packages/designer/src/packages/form/components/SubTable.vue.js +3 -3
  93. package/lib/packages/designer/src/packages/form/components/SubTitle.vue.js +27 -0
  94. package/lib/packages/designer/src/packages/form/headerBtn.vue.js +33 -57
  95. package/lib/packages/designer/src/packages/form/index.vue.js +21 -9
  96. package/lib/packages/designer/src/packages/form/property/index.vue.js +6 -4
  97. package/lib/packages/designer/src/packages/form/property/subTitleH2.vue.js +94 -0
  98. package/lib/packages/designer/src/packages/form/property/widgets.vue.js +271 -90
  99. package/lib/packages/designer/src/packages/formulaEditor/components/FieldVariable.vue2.js +84 -0
  100. package/lib/packages/designer/src/packages/formulaEditor/components/FormulaList.vue2.js +130 -0
  101. package/lib/packages/designer/src/packages/formulaEditor/index.vue2.js +230 -0
  102. package/lib/packages/designer/src/packages/table/default.js +1 -0
  103. package/lib/packages/designer/src/packages/table/headerBtn.vue.js +48 -17
  104. package/lib/packages/designer/src/packages/table/index.vue.js +1 -3
  105. package/lib/packages/designer/src/packages/table/property/filterWidgets.vue.js +33 -6
  106. package/lib/packages/designer/src/packages/table/queryModule/DynamicModeConfig.vue.js +492 -0
  107. package/lib/packages/designer/src/packages/table/queryModule/FixedModeConfig.vue.js +15 -2
  108. package/lib/packages/designer/src/packages/table/queryModule/index.vue.js +463 -138
  109. package/lib/packages/designer/src/packages/table/tableBtn.vue.js +34 -16
  110. package/lib/packages/designer/src/utils/optionLoader.js +157 -0
  111. package/lib/packages/designer/src/utils/simpleCache.js +80 -0
  112. package/lib/packages/mobile/src/components/form/field/Field.vue.js +14 -12
  113. package/lib/packages/vue/src/api/index.js +3 -0
  114. package/lib/packages/vue/src/components/all.js +2 -2
  115. package/lib/packages/vue/src/components/bus/approvalHistory/ApprovalHistory.vue.js +3 -3
  116. package/lib/packages/vue/src/components/details/header/Header.vue.js +1 -1
  117. package/lib/packages/vue/src/components/dialog/DialogRenderer.vue2.js +2 -2
  118. package/lib/packages/vue/src/components/forms/cascader/Cascader.vue.js +3 -2
  119. package/lib/packages/vue/src/components/forms/form/Form.vue.js +6 -3
  120. package/lib/packages/vue/src/components/forms/formItem/FormItem.vue.js +13 -11
  121. package/lib/packages/vue/src/components/forms/index.js +2 -2
  122. package/lib/packages/vue/src/components/forms/subForm/SubForm.vue.js +2 -2
  123. package/lib/packages/vue/src/components/forms/subTable/SubTable.vue.js +2 -2
  124. package/lib/packages/vue/src/components/forms/subTitle/SubTitle.vue.js +27 -0
  125. package/lib/packages/vue/src/components/forms/subTitle/index.js +7 -0
  126. package/lib/packages/vue/src/components/forms/text/Text.vue.js +49 -6
  127. package/lib/packages/vue/src/components/table/CustomButtons.vue.js +41 -13
  128. package/lib/packages/vue/src/components/table/DynamicQuery.vue.js +425 -0
  129. package/lib/packages/vue/src/components/table/Table.vue.js +38 -20
  130. package/lib/packages/vue/src/components/table/TableFilter.vue.js +7 -25
  131. package/lib/packages/vue/src/utils/common.js +27 -0
  132. package/lib/packages/vue/src/utils/eventFlow/actionHandlers.js +30 -13
  133. package/package.json +1 -1
@@ -0,0 +1,84 @@
1
+ /* empty css */
2
+ /* empty css */
3
+ /* empty css */
4
+ import { ref, watch, onMounted, createElementBlock, openBlock, createElementVNode, createVNode, unref, withCtx, Fragment, renderList, toDisplayString } from "vue";
5
+ import { Search as search_default } from "../../../../../../node_modules/.pnpm/@element-plus_icons-vue@2.3.2_vue@3.5.13_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/index.mjs";
6
+ /* empty css */
7
+ import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.mjs";
8
+ import { ElInput } from "../../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/input/index.mjs";
9
+ import { ElScrollbar } from "../../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/scrollbar/index.mjs";
10
+ const _hoisted_1 = { class: "field-variable" };
11
+ const _hoisted_2 = { class: "field-search" };
12
+ const _hoisted_3 = ["onClick"];
13
+ const _hoisted_4 = ["field-type"];
14
+ const _sfc_main = {
15
+ __name: "FieldVariable",
16
+ props: {
17
+ fieldList: {
18
+ type: Array,
19
+ default: () => []
20
+ }
21
+ },
22
+ emits: ["fieldSelect"],
23
+ setup(__props, { emit: __emit }) {
24
+ const props = __props;
25
+ const type = {
26
+ text: "字符串",
27
+ textarea: "字符串",
28
+ select: "字符串",
29
+ radio: "字符串",
30
+ number: "数字",
31
+ multipleSelection: "数组",
32
+ checkbox: "数组",
33
+ date: "日期",
34
+ switch: "布尔值"
35
+ };
36
+ const searchVariable = ref("");
37
+ const filterFieldList = ref([]);
38
+ watch(searchVariable, (val) => {
39
+ filterFieldList.value = props.fieldList.filter(
40
+ ({ label }) => label.includes(val)
41
+ );
42
+ });
43
+ onMounted(() => {
44
+ filterFieldList.value = props.fieldList;
45
+ });
46
+ return (_ctx, _cache) => {
47
+ const _component_el_input = ElInput;
48
+ const _component_el_scrollbar = ElScrollbar;
49
+ return openBlock(), createElementBlock("div", _hoisted_1, [
50
+ createElementVNode("div", _hoisted_2, [
51
+ createVNode(_component_el_input, {
52
+ placeholder: "搜索变量",
53
+ "prefix-icon": unref(search_default),
54
+ modelValue: searchVariable.value,
55
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchVariable.value = $event),
56
+ clearable: ""
57
+ }, null, 8, ["prefix-icon", "modelValue"])
58
+ ]),
59
+ createVNode(_component_el_scrollbar, null, {
60
+ default: withCtx(() => [
61
+ (openBlock(true), createElementBlock(Fragment, null, renderList(filterFieldList.value, (item) => {
62
+ return openBlock(), createElementBlock("div", {
63
+ class: "field-item",
64
+ onClick: ($event) => _ctx.$emit("fieldSelect", item),
65
+ key: item.fieldName
66
+ }, [
67
+ createElementVNode("span", null, toDisplayString(item.label), 1),
68
+ createElementVNode("span", {
69
+ "field-type": item.fieldType,
70
+ class: "text-tag"
71
+ }, toDisplayString(type[item.fieldType]), 9, _hoisted_4)
72
+ ], 8, _hoisted_3);
73
+ }), 128))
74
+ ]),
75
+ _: 1
76
+ })
77
+ ]);
78
+ };
79
+ }
80
+ };
81
+ const FieldVariable = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-66e49c9f"]]);
82
+ export {
83
+ FieldVariable as default
84
+ };
@@ -0,0 +1,130 @@
1
+ /* empty css */
2
+ /* empty css */
3
+ /* empty css */
4
+ /* empty css */
5
+ /* empty css */
6
+ /* empty css */
7
+ import { ref, computed, onMounted, createElementBlock, openBlock, createElementVNode, createVNode, unref, withCtx, createCommentVNode, toDisplayString } from "vue";
8
+ import { Search as search_default } from "../../../../../../node_modules/.pnpm/@element-plus_icons-vue@2.3.2_vue@3.5.13_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/index.mjs";
9
+ /* empty css */
10
+ import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.mjs";
11
+ import { ElInput } from "../../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/input/index.mjs";
12
+ import { ElScrollbar } from "../../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/scrollbar/index.mjs";
13
+ import { ElTree } from "../../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/tree/index.mjs";
14
+ const _hoisted_1 = { class: "formula-list" };
15
+ const _hoisted_2 = { class: "formula-search" };
16
+ const _hoisted_3 = ["onMouseenter"];
17
+ const _hoisted_4 = {
18
+ key: 0,
19
+ class: "tip"
20
+ };
21
+ const _sfc_main = {
22
+ __name: "FormulaList",
23
+ props: {
24
+ nodes: {
25
+ type: Array,
26
+ default: () => []
27
+ },
28
+ treeProps: {
29
+ type: Object,
30
+ default: () => ({
31
+ children: "formula",
32
+ label: "name"
33
+ })
34
+ }
35
+ },
36
+ emits: ["formulaClick", "enterInfo"],
37
+ setup(__props, { emit: __emit }) {
38
+ const props = __props;
39
+ const emit = __emit;
40
+ const searchTreeVariable = ref("");
41
+ const currentKeyNode = ref({});
42
+ const filterData = computed(() => {
43
+ if (!searchTreeVariable.value) {
44
+ return props.nodes;
45
+ }
46
+ return filterTreeData(props.nodes);
47
+ });
48
+ const nodeClick = (o) => {
49
+ if (o.formula) {
50
+ if (currentKeyNode.value && currentKeyNode.value.enCode) {
51
+ currentKeyNode.value = {};
52
+ }
53
+ return;
54
+ }
55
+ currentKeyNode.value = o;
56
+ emit("formulaClick", o);
57
+ };
58
+ const filterTreeData = (nodes) => {
59
+ return nodes.reduce((pre, cur) => {
60
+ if (cur.name.toLowerCase().includes(searchTreeVariable.value)) {
61
+ pre.push({ ...cur });
62
+ }
63
+ if (cur.formula) {
64
+ pre.push(...filterTreeData(cur.formula));
65
+ }
66
+ return pre;
67
+ }, []);
68
+ };
69
+ const enterInfo = (data) => {
70
+ if (data.formula) return;
71
+ emit("enterInfo", data);
72
+ };
73
+ const leaveTree = () => {
74
+ if (currentKeyNode.value && currentKeyNode.value.enCode) {
75
+ emit("enterInfo", currentKeyNode.value);
76
+ }
77
+ };
78
+ onMounted(() => {
79
+ });
80
+ return (_ctx, _cache) => {
81
+ const _component_el_input = ElInput;
82
+ const _component_el_tree = ElTree;
83
+ const _component_el_scrollbar = ElScrollbar;
84
+ return openBlock(), createElementBlock("div", _hoisted_1, [
85
+ createElementVNode("div", _hoisted_2, [
86
+ createVNode(_component_el_input, {
87
+ placeholder: "搜索函数",
88
+ "prefix-icon": unref(search_default),
89
+ modelValue: searchTreeVariable.value,
90
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchTreeVariable.value = $event),
91
+ clearable: ""
92
+ }, null, 8, ["prefix-icon", "modelValue"])
93
+ ]),
94
+ createVNode(_component_el_scrollbar, null, {
95
+ default: withCtx(() => [
96
+ createElementVNode("div", {
97
+ class: "treeContainer",
98
+ onMouseleave: leaveTree
99
+ }, [
100
+ createVNode(_component_el_tree, {
101
+ data: filterData.value,
102
+ "default-expanded-keys": ["frequentlyUse"],
103
+ props: __props.treeProps,
104
+ "current-node-key": currentKeyNode.value.enCode,
105
+ "node-key": "enCode",
106
+ onNodeClick: nodeClick
107
+ }, {
108
+ default: withCtx(({ data }) => [
109
+ createElementVNode("span", {
110
+ class: "info-container",
111
+ onMouseenter: ($event) => enterInfo(data)
112
+ }, [
113
+ createElementVNode("span", null, toDisplayString(data.name), 1),
114
+ data.tip ? (openBlock(), createElementBlock("span", _hoisted_4, toDisplayString(data.tip), 1)) : createCommentVNode("", true)
115
+ ], 40, _hoisted_3)
116
+ ]),
117
+ _: 1
118
+ }, 8, ["data", "props", "current-node-key"])
119
+ ], 32)
120
+ ]),
121
+ _: 1
122
+ })
123
+ ]);
124
+ };
125
+ }
126
+ };
127
+ const FormulaList = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-d1fdd781"]]);
128
+ export {
129
+ FormulaList as default
130
+ };
@@ -0,0 +1,230 @@
1
+ import { ref, computed, watch, onMounted, createElementBlock, openBlock, createElementVNode, createVNode, createCommentVNode, unref, toDisplayString } from "vue";
2
+ import { Codemirror as T } from "../../../../../node_modules/.pnpm/vue-codemirror@6.1.1_codemi_73012f469d7d7603a19ccbabfd8e6a05/node_modules/vue-codemirror/dist/vue-codemirror.esm.mjs";
3
+ import { basicSetup } from "../../../../../node_modules/.pnpm/codemirror@6.0.2/node_modules/codemirror/dist/index.mjs";
4
+ import { javascript } from "../../../../../node_modules/.pnpm/@codemirror_lang-javascript@6.2.5/node_modules/@codemirror/lang-javascript/dist/index.mjs";
5
+ import { autocompletion, closeBrackets } from "../../../../../node_modules/.pnpm/@codemirror_autocomplete@6.20.1/node_modules/@codemirror/autocomplete/dist/index.mjs";
6
+ import { MatchDecorator, Decoration, ViewPlugin, EditorView, WidgetType } from "../../../../../node_modules/.pnpm/@codemirror_view@6.40.0/node_modules/@codemirror/view/dist/index.mjs";
7
+ import FormulaEditorCore from "./core/index.mjs";
8
+ import FieldVariable from "./components/FieldVariable.vue2.mjs";
9
+ import FormulaList from "./components/FormulaList.vue2.mjs";
10
+ import functionList from "./function.mjs";
11
+ /* empty css */
12
+ import _export_sfc from "../../../../../_virtual/_plugin-vue_export-helper.mjs";
13
+ const _hoisted_1 = { class: "vue-formula" };
14
+ const _hoisted_2 = ["data-error"];
15
+ const _hoisted_3 = { class: "operator-container" };
16
+ const _hoisted_4 = {
17
+ key: 0,
18
+ class: "formula-desc"
19
+ };
20
+ const _hoisted_5 = { class: "info-name" };
21
+ const _hoisted_6 = { class: "formula-info" };
22
+ const _hoisted_7 = { class: "info-text" };
23
+ const _hoisted_8 = { class: "info-text" };
24
+ const _hoisted_9 = { class: "info-text" };
25
+ const _sfc_main = {
26
+ __name: "index",
27
+ props: {
28
+ fieldList: {
29
+ type: Array,
30
+ default: () => []
31
+ },
32
+ formulaConf: {
33
+ type: Object,
34
+ default: () => ({})
35
+ }
36
+ },
37
+ emits: ["fieldSelect", "formulaClick", "enterInfo"],
38
+ setup(__props, { expose: __expose, emit: __emit }) {
39
+ const props = __props;
40
+ const editorCore = ref(null);
41
+ const editorView = ref(null);
42
+ const code = ref("");
43
+ const currentFormula = ref(null);
44
+ const validInfo = ref("");
45
+ ref("");
46
+ class FieldWidget extends WidgetType {
47
+ constructor(name) {
48
+ super();
49
+ this.name = name;
50
+ }
51
+ eq(widget) {
52
+ return this.name === widget.name;
53
+ }
54
+ toDOM() {
55
+ const span = document.createElement("span");
56
+ span.className = "cm-field";
57
+ span.textContent = this.name;
58
+ return span;
59
+ }
60
+ ignoreEvent() {
61
+ return false;
62
+ }
63
+ }
64
+ const fieldMatcher = new MatchDecorator({
65
+ regexp: /\{(\w+)\}/g,
66
+ decoration: (match) => {
67
+ const code2 = match[1];
68
+ const field = props.fieldList.find((item) => item.fieldName === code2);
69
+ const label = field ? field.label : code2;
70
+ return Decoration.replace({
71
+ widget: new FieldWidget(label)
72
+ });
73
+ }
74
+ });
75
+ const fieldMarkPlugin = ViewPlugin.fromClass(
76
+ class {
77
+ constructor(view) {
78
+ this.placeholders = fieldMatcher.createDeco(view);
79
+ }
80
+ update(update) {
81
+ this.placeholders = fieldMatcher.updateDeco(update, this.placeholders);
82
+ }
83
+ },
84
+ {
85
+ decorations: (instance) => instance.placeholders,
86
+ provide: (plugin) => EditorView.atomicRanges.of((view) => {
87
+ var _a;
88
+ return ((_a = view.plugin(plugin)) == null ? void 0 : _a.placeholders) || Decoration.none;
89
+ })
90
+ }
91
+ );
92
+ const autoCompletions = (context) => {
93
+ const word = context.matchBefore(/\w*/);
94
+ if (word.from === word.to && !context.explicit) return null;
95
+ const formulas = functionList.flatMap((group) => group.formula || []);
96
+ const formulaOptions = formulas.map((item) => ({
97
+ label: item.name,
98
+ type: "function",
99
+ detail: item.tip,
100
+ apply: (view, completion, from, to) => {
101
+ view.dispatch({
102
+ changes: { from, to, insert: `${item.name}()` },
103
+ selection: { anchor: from + item.name.length + 1 }
104
+ });
105
+ }
106
+ }));
107
+ const entityOptions = props.fieldList.map((item) => ({
108
+ label: item.fieldName,
109
+ type: "variable",
110
+ detail: item.label,
111
+ apply: `{${item.fieldName}}`
112
+ }));
113
+ const allOptions = [...formulaOptions, ...entityOptions];
114
+ const filteredOptions = allOptions.filter(
115
+ (option) => option.label.toLowerCase().startsWith(word.text.toLowerCase())
116
+ );
117
+ return {
118
+ from: word.from,
119
+ options: filteredOptions.length > 0 ? filteredOptions : allOptions
120
+ };
121
+ };
122
+ const extensions = [
123
+ basicSetup,
124
+ javascript(),
125
+ autocompletion({
126
+ override: [autoCompletions]
127
+ }),
128
+ closeBrackets(),
129
+ fieldMarkPlugin
130
+ ];
131
+ const nodes = computed(() => {
132
+ return functionList || [];
133
+ });
134
+ watch(code, (val) => {
135
+ var _a;
136
+ if (!val) {
137
+ validInfo.value = "";
138
+ return;
139
+ }
140
+ const { error, message } = ((_a = editorCore.value) == null ? void 0 : _a.validateFormula(
141
+ props.fieldList
142
+ )) || { error: false };
143
+ validInfo.value = error ? message : "";
144
+ });
145
+ const reset = () => {
146
+ var _a;
147
+ currentFormula.value = null;
148
+ (_a = editorCore.value) == null ? void 0 : _a.reset();
149
+ };
150
+ const getData = () => {
151
+ var _a;
152
+ return (_a = editorCore.value) == null ? void 0 : _a.getData();
153
+ };
154
+ const getDisplayData = () => {
155
+ var _a;
156
+ return (_a = editorCore.value) == null ? void 0 : _a.getDisplayData(props.fieldList);
157
+ };
158
+ const onReady = (payload) => {
159
+ editorView.value = payload.view;
160
+ editorCore.value = new FormulaEditorCore(payload.view, "", functionList);
161
+ editorCore.value.registerListen();
162
+ editorCore.value.renderData(props.formulaConf);
163
+ };
164
+ const onFormulaClick = (formula) => {
165
+ var _a;
166
+ currentFormula.value = formula;
167
+ (_a = editorCore.value) == null ? void 0 : _a.insertText(`${formula.name}()`, "formula");
168
+ };
169
+ const onFieldSelect = (field) => {
170
+ var _a;
171
+ (_a = editorCore.value) == null ? void 0 : _a.insertText(field, "field");
172
+ };
173
+ const onEnterInfo = (formulaInfo) => {
174
+ currentFormula.value = formulaInfo;
175
+ };
176
+ onMounted(() => {
177
+ });
178
+ __expose({
179
+ reset,
180
+ getData,
181
+ getDisplayData
182
+ });
183
+ return (_ctx, _cache) => {
184
+ return openBlock(), createElementBlock("div", _hoisted_1, [
185
+ _cache[1] || (_cache[1] = createElementVNode("div", { class: "formula-info-header" }, "公式 =", -1)),
186
+ createVNode(unref(T), {
187
+ modelValue: code.value,
188
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => code.value = $event),
189
+ style: { height: "200px" },
190
+ extensions,
191
+ autofocus: true,
192
+ placeholder: "例如:SUM(数值1,数值2)",
193
+ onReady
194
+ }, null, 8, ["modelValue"]),
195
+ validInfo.value ? (openBlock(), createElementBlock("div", {
196
+ key: 0,
197
+ class: "formula-info-container",
198
+ "data-error": `${validInfo.value != ""}`
199
+ }, [
200
+ createElementVNode("span", null, "公式错误:" + toDisplayString(validInfo.value), 1)
201
+ ], 8, _hoisted_2)) : createCommentVNode("", true),
202
+ createElementVNode("div", _hoisted_3, [
203
+ createVNode(FieldVariable, {
204
+ class: "field-variable",
205
+ onFieldSelect,
206
+ fieldList: __props.fieldList
207
+ }, null, 8, ["fieldList"]),
208
+ createVNode(FormulaList, {
209
+ nodes: nodes.value,
210
+ class: "formula-list",
211
+ onFormulaClick,
212
+ onEnterInfo
213
+ }, null, 8, ["nodes"]),
214
+ currentFormula.value ? (openBlock(), createElementBlock("div", _hoisted_4, [
215
+ createElementVNode("div", _hoisted_5, toDisplayString(currentFormula.value.name), 1),
216
+ createElementVNode("div", _hoisted_6, [
217
+ createElementVNode("div", _hoisted_7, toDisplayString(currentFormula.value.tip), 1),
218
+ createElementVNode("div", _hoisted_8, "用法:" + toDisplayString(currentFormula.value.usage), 1),
219
+ createElementVNode("div", _hoisted_9, "示例:" + toDisplayString(currentFormula.value.example), 1)
220
+ ])
221
+ ])) : createCommentVNode("", true)
222
+ ])
223
+ ]);
224
+ };
225
+ }
226
+ };
227
+ const FormulaEditor = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-975c8145"]]);
228
+ export {
229
+ FormulaEditor as default
230
+ };
@@ -18,6 +18,7 @@ const defaultTableConfig = {
18
18
  "type": "widgets"
19
19
  }
20
20
  ],
21
+ "showTitle": true,
21
22
  "isOptBtns": true,
22
23
  "optBtns": [
23
24
  // {
@@ -55,23 +55,32 @@ import { useDataSourceDialog } from "../dataSource/useDataSourceDialog.mjs";
55
55
  /* empty css */
56
56
  /* empty css */
57
57
  /* empty css */
58
+ /* empty css */
59
+ /* empty css */
60
+ /* empty css */
61
+ /* empty css */
62
+ /* empty css */
63
+ /* empty css */
64
+ import "../../../../../node_modules/.pnpm/vue-codemirror@6.1.1_codemi_73012f469d7d7603a19ccbabfd8e6a05/node_modules/vue-codemirror/dist/vue-codemirror.esm.mjs";
65
+ import "../formulaEditor/core/functionCore.mjs";
66
+ /* empty css */
67
+ /* empty css */
68
+ /* empty css */
69
+ /* empty css */
70
+ import "../../axios/config.mjs";
71
+ import "../../../../../_virtual/FileSaver.min.mjs";
72
+ import "../../../../../_virtual/index.mjs";
73
+ /* empty css */
58
74
  import { useAdvancedFilterDialog } from "../advancedFilter/useAdvancedFilterDialog.mjs";
59
75
  /* empty css */
60
76
  /* empty css */
61
77
  /* empty css */
62
- /* empty css */
63
78
  /* empty css */
64
79
  /* empty css */
65
80
  /* empty css */
66
81
  /* empty css */
67
82
  import "../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/theme-chalk/el-date-picker.css.mjs";
68
83
  /* empty css */
69
- import "../../axios/config.mjs";
70
- import "../../../../../_virtual/FileSaver.min.mjs";
71
- import "../../../../../_virtual/index.mjs";
72
- /* empty css */
73
- /* empty css */
74
- /* empty css */
75
84
  /* empty css */
76
85
  /* empty css */
77
86
  /* empty css */
@@ -81,6 +90,7 @@ import PageEvent from "../event/pageEvent.vue.mjs";
81
90
  import { useModeDialog } from "../mode/useModeDialog.mjs";
82
91
  import { useJsonDataDrawer } from "../../components/useJsonDataDrawer.mjs";
83
92
  import { useDialogDialog } from "../dialog/useDialogDialog.mjs";
93
+ import { useDialogGlobalDialog } from "../dialogGlobal/useDialogGlobalDialog.mjs";
84
94
  /* empty css */
85
95
  import { ElIcon } from "../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/icon/index.mjs";
86
96
  const _hoisted_1 = { class: "header-btns" };
@@ -102,6 +112,11 @@ const _sfc_main = {
102
112
  pageEventDialogVisible.value = true;
103
113
  }
104
114
  const { dialogDialogVisible, openDialogDialog, DialogDialog } = useDialogDialog();
115
+ const {
116
+ dialogGlobalDialogVisible,
117
+ openDialogGlobalDialog,
118
+ DialogGlobalDialog
119
+ } = useDialogGlobalDialog();
105
120
  return (_ctx, _cache) => {
106
121
  const _component_el_icon = ElIcon;
107
122
  const _component_Management = resolveComponent("Management");
@@ -116,7 +131,7 @@ const _sfc_main = {
116
131
  ]),
117
132
  _: 1
118
133
  }),
119
- _cache[9] || (_cache[9] = createElementVNode("span", null, "数据源", -1))
134
+ _cache[11] || (_cache[11] = createElementVNode("span", null, "数据源", -1))
120
135
  ]),
121
136
  createVNode(unref(DataSourceDialog), {
122
137
  modelValue: unref(dataSourceDialogVisible),
@@ -132,7 +147,7 @@ const _sfc_main = {
132
147
  ]),
133
148
  _: 1
134
149
  }),
135
- _cache[10] || (_cache[10] = createElementVNode("span", null, "全局事件", -1))
150
+ _cache[12] || (_cache[12] = createElementVNode("span", null, "全局事件", -1))
136
151
  ]),
137
152
  createVNode(PageEvent, {
138
153
  modelValue: unref(pageEventDialogVisible),
@@ -148,7 +163,7 @@ const _sfc_main = {
148
163
  ]),
149
164
  _: 1
150
165
  }),
151
- _cache[11] || (_cache[11] = createElementVNode("span", null, "列表模式", -1))
166
+ _cache[13] || (_cache[13] = createElementVNode("span", null, "列表模式", -1))
152
167
  ]),
153
168
  createVNode(unref(ModeDialog), {
154
169
  modelValue: unref(modeDialogVisible),
@@ -156,7 +171,23 @@ const _sfc_main = {
156
171
  }, null, 8, ["modelValue"]),
157
172
  createElementVNode("div", {
158
173
  class: "btn-item",
159
- onClick: _cache[5] || (_cache[5] = (...args) => unref(openDialogDialog) && unref(openDialogDialog)(...args))
174
+ onClick: _cache[5] || (_cache[5] = (...args) => unref(openDialogGlobalDialog) && unref(openDialogGlobalDialog)(...args))
175
+ }, [
176
+ createVNode(_component_el_icon, null, {
177
+ default: withCtx(() => [
178
+ createVNode(unref(chat_line_square_default))
179
+ ]),
180
+ _: 1
181
+ }),
182
+ _cache[14] || (_cache[14] = createElementVNode("span", null, "全局弹层", -1))
183
+ ]),
184
+ createVNode(unref(DialogGlobalDialog), {
185
+ modelValue: unref(dialogGlobalDialogVisible),
186
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => isRef(dialogGlobalDialogVisible) ? dialogGlobalDialogVisible.value = $event : null)
187
+ }, null, 8, ["modelValue"]),
188
+ createElementVNode("div", {
189
+ class: "btn-item",
190
+ onClick: _cache[7] || (_cache[7] = (...args) => unref(openDialogDialog) && unref(openDialogDialog)(...args))
160
191
  }, [
161
192
  createVNode(_component_el_icon, null, {
162
193
  default: withCtx(() => [
@@ -164,15 +195,15 @@ const _sfc_main = {
164
195
  ]),
165
196
  _: 1
166
197
  }),
167
- _cache[12] || (_cache[12] = createElementVNode("span", null, "弹层配置", -1))
198
+ _cache[15] || (_cache[15] = createElementVNode("span", null, "自定义弹层", -1))
168
199
  ]),
169
200
  createVNode(unref(DialogDialog), {
170
201
  modelValue: unref(dialogDialogVisible),
171
- "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => isRef(dialogDialogVisible) ? dialogDialogVisible.value = $event : null)
202
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => isRef(dialogDialogVisible) ? dialogDialogVisible.value = $event : null)
172
203
  }, null, 8, ["modelValue"]),
173
204
  createElementVNode("div", {
174
205
  class: "btn-item",
175
- onClick: _cache[7] || (_cache[7] = (...args) => unref(openJsonDrawer) && unref(openJsonDrawer)(...args))
206
+ onClick: _cache[9] || (_cache[9] = (...args) => unref(openJsonDrawer) && unref(openJsonDrawer)(...args))
176
207
  }, [
177
208
  createVNode(_component_el_icon, null, {
178
209
  default: withCtx(() => [
@@ -180,17 +211,17 @@ const _sfc_main = {
180
211
  ]),
181
212
  _: 1
182
213
  }),
183
- _cache[13] || (_cache[13] = createElementVNode("span", null, "数据结构", -1))
214
+ _cache[16] || (_cache[16] = createElementVNode("span", null, "数据结构", -1))
184
215
  ]),
185
216
  createVNode(unref(JsonDataDrawer), {
186
217
  modelValue: unref(jsonDataDrawerVisible),
187
- "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => isRef(jsonDataDrawerVisible) ? jsonDataDrawerVisible.value = $event : null)
218
+ "onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => isRef(jsonDataDrawerVisible) ? jsonDataDrawerVisible.value = $event : null)
188
219
  }, null, 8, ["modelValue"])
189
220
  ]);
190
221
  };
191
222
  }
192
223
  };
193
- const tableHeaderBtn = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-814e0033"]]);
224
+ const tableHeaderBtn = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-31dcf7ee"]]);
194
225
  export {
195
226
  tableHeaderBtn as default
196
227
  };
@@ -18,7 +18,6 @@ import { computed, ref, resolveComponent, createElementBlock, openBlock, Fragmen
18
18
  import { defaultOptBtn } from "./default.mjs";
19
19
  import { VueDraggable as lo } from "../../../../../node_modules/.pnpm/vue-draggable-plus@0.6.1_@types_sortablejs@1.15.9/node_modules/vue-draggable-plus/dist/vue-draggable-plus.mjs";
20
20
  import { Setting as setting_default, Hide as hide_default, Delete as delete_default, Plus as plus_default } from "../../../../../node_modules/.pnpm/@element-plus_icons-vue@2.3.2_vue@3.5.13_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/index.mjs";
21
- import TableBtn from "./tableBtn.vue.mjs";
22
21
  import TableSetting from "./tableSetting.vue.mjs";
23
22
  import QueryModule from "./queryModule/index.vue.mjs";
24
23
  import TablePagination from "./tablePagination.vue.mjs";
@@ -179,7 +178,6 @@ const _sfc_main = {
179
178
  const _component_el_tag = ElTag;
180
179
  return openBlock(), createElementBlock(Fragment, null, [
181
180
  createVNode(unref(QueryModule)),
182
- createVNode(TableBtn),
183
181
  createVNode(TableSetting),
184
182
  createElementVNode("div", _hoisted_1, [
185
183
  unref(tableOptions).selectMode !== "none" ? (openBlock(), createElementBlock("div", _hoisted_2, [
@@ -470,7 +468,7 @@ const _sfc_main = {
470
468
  };
471
469
  }
472
470
  };
473
- const tableWorkArea = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-ef6866d0"]]);
471
+ const tableWorkArea = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-52251340"]]);
474
472
  export {
475
473
  tableWorkArea as default
476
474
  };