@fecp/designer 5.1.8 → 5.2.1

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 +26 -1
  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 +5 -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 +34 -5
  62. package/es/packages/vue/src/components/table/DynamicQuery.vue.mjs +425 -0
  63. package/es/packages/vue/src/components/table/Table.vue.mjs +55 -30
  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 +26 -1
  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 +5 -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 +43 -14
  128. package/lib/packages/vue/src/components/table/DynamicQuery.vue.js +425 -0
  129. package/lib/packages/vue/src/components/table/Table.vue.js +54 -29
  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,27 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const vue = require("vue");
4
+ ;/* empty css */
5
+ const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.js");
6
+ const _hoisted_1 = { class: "fec-sub-title" };
7
+ const _hoisted_2 = { class: "fec-label-title" };
8
+ const _sfc_main = {
9
+ __name: "SubTitle",
10
+ props: {
11
+ config: {
12
+ type: Object,
13
+ required: true
14
+ }
15
+ },
16
+ setup(__props) {
17
+ return (_ctx, _cache) => {
18
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
19
+ _cache[0] || (_cache[0] = vue.createElementVNode("div", { class: "fec-label-line" }, null, -1)),
20
+ vue.createElementVNode("div", _hoisted_2, vue.toDisplayString(__props.config.label), 1),
21
+ _cache[1] || (_cache[1] = vue.createElementVNode("div", { class: "fec-label-line-query" }, null, -1))
22
+ ]);
23
+ };
24
+ }
25
+ };
26
+ const _SubTitle = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-733e1815"]]);
27
+ exports.default = _SubTitle;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const SubTitle$1 = require("./SubTitle.vue.js");
4
+ const install = require("../../../utils/install.js");
5
+ const SubTitle = install.default.withInstall("SubTitle", SubTitle$1.default);
6
+ exports.SubTitle = SubTitle;
7
+ exports.default = SubTitle;
@@ -7,10 +7,12 @@ const vue = require("vue");
7
7
  ;/* empty css */
8
8
  ;/* empty css */
9
9
  ;/* empty css */
10
- const index$2 = require("../../dialog/index.js");
10
+ const index$3 = require("../../dialog/index.js");
11
+ const index$2 = require("../../../api/index.js");
11
12
  ;/* empty css */
12
13
  ;/* empty css */
13
14
  const eventFlowHandler = require("../../../utils/eventFlow/eventFlowHandler.js");
15
+ const getInstance = require("../../../utils/getInstance.js");
14
16
  ;/* empty css */
15
17
  const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.js");
16
18
  const index = require("../../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/input/index.js");
@@ -90,10 +92,35 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
90
92
  formMode: {
91
93
  type: String,
92
94
  default: ""
95
+ },
96
+ dialogSource: {
97
+ type: String,
98
+ default: ""
99
+ },
100
+ selectionMode: {
101
+ type: String,
102
+ default: ""
103
+ },
104
+ displayFormatText: {
105
+ type: String,
106
+ default: ""
107
+ },
108
+ displayFormat: {
109
+ type: Object,
110
+ default: {}
111
+ },
112
+ fieldMapping: {
113
+ type: Array,
114
+ default: []
115
+ },
116
+ callbackEventConfig: {
117
+ type: Object,
118
+ default: {}
93
119
  }
94
120
  },
95
121
  emits: ["update:modelValue", "change"],
96
122
  setup(__props, { emit: __emit }) {
123
+ const ctx = getInstance.getCurrentVueInstance();
97
124
  const props = __props;
98
125
  const emit = __emit;
99
126
  const inputValue = vue.computed({
@@ -128,11 +155,27 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
128
155
  }
129
156
  });
130
157
  const getEventHandlers = (row, item, eventConfig) => createEventHandlers(item, row, eventConfig);
131
- function openSuffixDialog() {
132
- const dialogsConfig = localConfig.value.dialogs || [];
133
- const dialog = dialogsConfig.find((item) => item.id == props.suffixDialogId);
158
+ async function openSuffixDialog() {
159
+ let dialog = null;
160
+ if (props.dialogSource == "global") {
161
+ const data = await index$2.default.getTemplateDialogById(
162
+ ctx.$http,
163
+ props.suffixDialogId
164
+ );
165
+ dialog = JSON.parse(data.config);
166
+ dialog.id = data.id;
167
+ dialog.name = data.name;
168
+ dialog.selectionMode = props.selectionMode;
169
+ dialog.displayFormat = props.displayFormat;
170
+ dialog.displayFormatText = props.displayFormatText;
171
+ dialog.fieldMapping = props.fieldMapping;
172
+ dialog.callbackEventConfig = props.callbackEventConfig;
173
+ } else if (props.dialogSource == "custom") {
174
+ const dialogsConfig = localConfig.value.dialogs || [];
175
+ dialog = dialogsConfig.find((item) => item.id == props.suffixDialogId);
176
+ }
134
177
  if (dialog) {
135
- index$2.openDialog(
178
+ index$3.openDialog(
136
179
  props.config.fieldName,
137
180
  dialog,
138
181
  instance,
@@ -208,5 +251,5 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
208
251
  };
209
252
  }
210
253
  });
211
- const _Text = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-e18a850d"]]);
254
+ const _Text = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-b0c0d80f"]]);
212
255
  exports.default = _Text;
@@ -4,12 +4,18 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
4
4
  ;/* empty css */
5
5
  const vue = require("vue");
6
6
  require("../../../../../node_modules/.pnpm/vxe-table@4.17.47_vue@3.5.13_typescript@5.7.3_/node_modules/vxe-table/es/components.js");
7
- const index$2 = require("../../../../../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");
7
+ const index$1 = require("../../../../../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");
8
+ const getInstance = require("../../utils/getInstance.js");
8
9
  ;/* empty css */
9
10
  const _pluginVue_exportHelper = require("../../../../../_virtual/_plugin-vue_export-helper.js");
10
- const index = require("../../../../../node_modules/.pnpm/vxe-table@4.17.47_vue@3.5.13_typescript@5.7.3_/node_modules/vxe-table/es/toolbar/index.js");
11
- const index$1 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/button/index.js");
11
+ const index = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/icon/index.js");
12
+ const index$2 = require("../../../../../node_modules/.pnpm/vxe-table@4.17.47_vue@3.5.13_typescript@5.7.3_/node_modules/vxe-table/es/toolbar/index.js");
13
+ const index$3 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/button/index.js");
12
14
  const _hoisted_1 = { class: "custom-buttons" };
15
+ const _hoisted_2 = {
16
+ key: 1,
17
+ class: "template-name"
18
+ };
13
19
  const _sfc_main = {
14
20
  __name: "CustomButtons",
15
21
  props: {
@@ -19,10 +25,15 @@ const _sfc_main = {
19
25
  left: [],
20
26
  right: []
21
27
  })
28
+ },
29
+ localConfig: {
30
+ type: Object,
31
+ default: {}
22
32
  }
23
33
  },
24
34
  emits: ["click"],
25
35
  setup(__props, { emit: __emit }) {
36
+ const ctx = getInstance.getCurrentVueInstance();
26
37
  const props = __props;
27
38
  const emit = __emit;
28
39
  const leftButtons = vue.computed(() => {
@@ -36,13 +47,13 @@ const _sfc_main = {
36
47
  });
37
48
  const getBtnIcon = (btnType) => {
38
49
  const iconMap = {
39
- refresh: index$2.Refresh,
40
- export: index$2.Download,
41
- personalize: index$2.Setting,
42
- add: index$2.Plus,
43
- delete: index$2.Delete,
44
- edit: index$2.Edit,
45
- search: index$2.Search
50
+ refresh: index$1.Refresh,
51
+ export: index$1.Download,
52
+ personalize: index$1.Setting,
53
+ add: index$1.Plus,
54
+ delete: index$1.Delete,
55
+ edit: index$1.Edit,
56
+ search: index$1.Search
46
57
  };
47
58
  return iconMap[btnType] || null;
48
59
  };
@@ -59,12 +70,30 @@ const _sfc_main = {
59
70
  type: "custom"
60
71
  });
61
72
  };
73
+ function goBack() {
74
+ ctx.$router.go(-1);
75
+ }
62
76
  return (_ctx, _cache) => {
63
- const _component_el_button = index$1.ElButton;
77
+ const _component_el_icon = index.ElIcon;
78
+ const _component_el_button = index$3.ElButton;
64
79
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
65
- hasButtons.value ? (vue.openBlock(), vue.createBlock(vue.unref(index.VxeToolbar), {
80
+ __props.localConfig.showReturn ? (vue.openBlock(), vue.createElementBlock("div", {
66
81
  key: 0,
67
- ref: "toolbarRef"
82
+ class: "back-icon",
83
+ onClick: goBack
84
+ }, [
85
+ vue.createVNode(_component_el_icon, null, {
86
+ default: vue.withCtx(() => [
87
+ vue.createVNode(vue.unref(index$1.ArrowLeftBold))
88
+ ]),
89
+ _: 1
90
+ })
91
+ ])) : vue.createCommentVNode("", true),
92
+ __props.localConfig.showTitle ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, vue.toDisplayString(__props.localConfig.templateName), 1)) : vue.createCommentVNode("", true),
93
+ hasButtons.value ? (vue.openBlock(), vue.createBlock(vue.unref(index$2.VxeToolbar), {
94
+ key: 2,
95
+ ref: "toolbarRef",
96
+ style: { "flex": "1" }
68
97
  }, {
69
98
  buttons: vue.withCtx(() => [
70
99
  leftButtons.value.length ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(leftButtons.value, (btn) => {
@@ -102,5 +131,5 @@ const _sfc_main = {
102
131
  };
103
132
  }
104
133
  };
105
- const CustomButtons = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-92668e19"]]);
134
+ const CustomButtons = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-afddc440"]]);
106
135
  exports.default = CustomButtons;
@@ -0,0 +1,425 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ ;/* empty css */
4
+ ;/* empty css */
5
+ ;/* empty css */
6
+ ;/* empty css */
7
+ ;/* empty css */
8
+ ;/* empty css */
9
+ require("../../../../../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.js");
10
+ ;/* empty css */
11
+ ;/* empty css */
12
+ ;/* empty css */
13
+ ;/* empty css */
14
+ ;/* empty css */
15
+ ;/* empty css */
16
+ ;/* empty css */
17
+ ;/* empty css */
18
+ require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/theme-chalk/el-tab-pane.css.js");
19
+ const vue = require("vue");
20
+ const index$1 = require("../../../../../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");
21
+ require("../../../../../node_modules/.pnpm/vxe-table@4.17.47_vue@3.5.13_typescript@5.7.3_/node_modules/vxe-table/es/components.js");
22
+ const index$f = require("../forms/text/index.js");
23
+ const index$b = require("../forms/select/index.js");
24
+ const index$c = require("../forms/multipleSelection/index.js");
25
+ const index$e = require("../forms/date/index.js");
26
+ const index$d = require("../forms/number/index.js");
27
+ const common = require("../../utils/common.js");
28
+ ;/* empty css */
29
+ const _pluginVue_exportHelper = require("../../../../../_virtual/_plugin-vue_export-helper.js");
30
+ const index = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/icon/index.js");
31
+ const index$2 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/tabs/index.js");
32
+ const index$3 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/input/index.js");
33
+ const index$4 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/button/index.js");
34
+ const index$6 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/collapse-transition/index.js");
35
+ const index$7 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/form/index.js");
36
+ const index$8 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/checkbox/index.js");
37
+ const index$9 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/date-picker/index.js");
38
+ const index$a = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/input-number/index.js");
39
+ const index$5 = require("../../../../../node_modules/.pnpm/vxe-table@4.17.47_vue@3.5.13_typescript@5.7.3_/node_modules/vxe-table/es/toolbar/index.js");
40
+ const _hoisted_1 = { class: "dynamic-mode-config" };
41
+ const _hoisted_2 = { class: "dynamic-row" };
42
+ const _hoisted_3 = {
43
+ key: 0,
44
+ class: "back-icon"
45
+ };
46
+ const _hoisted_4 = {
47
+ key: 1,
48
+ class: "template-name"
49
+ };
50
+ const _hoisted_5 = {
51
+ key: 2,
52
+ class: "tab-display-section"
53
+ };
54
+ const _hoisted_6 = { class: "search-display-section" };
55
+ const _hoisted_7 = { class: "search-input-group" };
56
+ const _hoisted_8 = { class: "expand-filter-section" };
57
+ const _hoisted_9 = { class: "filter-form-section" };
58
+ const _hoisted_10 = { class: "form-items-draggable" };
59
+ const _hoisted_11 = {
60
+ key: 1,
61
+ style: { "display": "flex", "align-items": "center", "gap": "8px", "width": "100%" }
62
+ };
63
+ const _sfc_main = {
64
+ __name: "DynamicQuery",
65
+ props: {
66
+ localConfig: {
67
+ type: Object,
68
+ default: () => ({})
69
+ },
70
+ fieldsData: {
71
+ type: Array,
72
+ default: () => []
73
+ }
74
+ },
75
+ emits: ["click", "search"],
76
+ setup(__props, { emit: __emit }) {
77
+ const props = __props;
78
+ const emit = __emit;
79
+ const queryConfig = vue.computed(() => {
80
+ var _a;
81
+ return ((_a = props.localConfig) == null ? void 0 : _a.queryConfig) || {};
82
+ });
83
+ const dynamicConfig = vue.computed(() => {
84
+ var _a;
85
+ return ((_a = queryConfig.value) == null ? void 0 : _a.dynamicConfig) || {};
86
+ });
87
+ const activeTab = vue.ref("");
88
+ const tabConfigs = vue.computed(() => {
89
+ var _a, _b, _c, _d;
90
+ activeTab.value = ((_b = (_a = dynamicConfig.value) == null ? void 0 : _a.tabConfigs) == null ? void 0 : _b.length) > 0 ? (_c = dynamicConfig.value) == null ? void 0 : _c.tabActive : "";
91
+ return ((_d = dynamicConfig.value) == null ? void 0 : _d.tabConfigs) || [];
92
+ });
93
+ const rightButtons = vue.computed(() => {
94
+ var _a;
95
+ return ((_a = props.localConfig) == null ? void 0 : _a.customBtns.right) || [];
96
+ });
97
+ const getBtnIcon = (btnType) => {
98
+ const iconMap = {
99
+ refresh: index$1.Refresh,
100
+ export: index$1.Download,
101
+ personalize: index$1.Setting,
102
+ add: index$1.Plus,
103
+ delete: index$1.Delete,
104
+ edit: index$1.Edit,
105
+ search: index$1.Search
106
+ };
107
+ return iconMap[btnType] || null;
108
+ };
109
+ const getBtnType = (btn) => {
110
+ if (btn.btnType === "custom") {
111
+ return "primary";
112
+ }
113
+ return btn.btnStyle || "default";
114
+ };
115
+ const handleClick = (btn, event) => {
116
+ emit("click", {
117
+ btn,
118
+ event,
119
+ type: "custom"
120
+ });
121
+ };
122
+ const getFieldConfig = (fieldId) => {
123
+ return props.fieldsData.find((field) => field.id === fieldId) || {};
124
+ };
125
+ const filterFields = vue.computed(() => {
126
+ return props.localConfig.queryConfig.filterFields.map((filterField) => {
127
+ const fieldConfig = getFieldConfig(filterField.fieldId);
128
+ return {
129
+ ...filterField,
130
+ ...fieldConfig
131
+ };
132
+ });
133
+ });
134
+ const filterValues = vue.ref({});
135
+ const searchInputValue = vue.ref("");
136
+ const showAdvancedFilter = vue.ref(false);
137
+ const toggleAdvancedFilter = () => {
138
+ const willShow = !showAdvancedFilter.value;
139
+ showAdvancedFilter.value = willShow;
140
+ };
141
+ const handleSearch = () => {
142
+ const filters = common.handleSearchData(filterValues.value, filterFields.value);
143
+ const filterData = {
144
+ ...currentTab.value,
145
+ dynamicFilter: searchInputValue.value,
146
+ ...filters
147
+ };
148
+ console.log("🚀 ~ 开始执行查询", filterData);
149
+ emit("search", {
150
+ filters: JSON.stringify(filterData)
151
+ });
152
+ };
153
+ const currentTab = vue.ref({});
154
+ vue.watch(
155
+ activeTab,
156
+ (newVal, oldVal) => {
157
+ console.log("🚀 ~ Tab切换:", tabConfigs.value, "->", newVal);
158
+ const tab = tabConfigs.value.find((item) => item.id == newVal);
159
+ if (tab) {
160
+ currentTab.value[tab.fieldName] = tab.fixedValue;
161
+ handleSearch();
162
+ }
163
+ },
164
+ {
165
+ immediate: true
166
+ }
167
+ );
168
+ const onSearchInputKeyup = (event) => {
169
+ if (event.key === "Enter") {
170
+ console.log("🚀 ~ 搜索输入框回车");
171
+ handleSearch();
172
+ }
173
+ };
174
+ const debounce = (fn, delay = 500) => {
175
+ let timer = null;
176
+ return (...args) => {
177
+ if (timer) clearTimeout(timer);
178
+ timer = setTimeout(() => {
179
+ fn(...args);
180
+ }, delay);
181
+ };
182
+ };
183
+ const debouncedSearch = debounce(handleSearch, 500);
184
+ vue.watch(
185
+ filterValues,
186
+ (newVal) => {
187
+ console.log("🚀 ~ 筛选值变化:", newVal);
188
+ debouncedSearch();
189
+ },
190
+ { deep: true }
191
+ );
192
+ const getFilterComponent = (fieldType) => {
193
+ const componentMap = {
194
+ text: index$f.Text,
195
+ select: index$b.Select,
196
+ date: index$e.Date,
197
+ number: index$d.Number,
198
+ multipleSelection: index$c.MultipleSelection,
199
+ switch: index$b.Select
200
+ };
201
+ return componentMap[fieldType] || index$f.Text;
202
+ };
203
+ const getComponentConfig = (field) => {
204
+ return { ...field };
205
+ };
206
+ const getPlaceholder = (field, type = "default") => {
207
+ const placeholderMap = {
208
+ text: "请输入",
209
+ select: "请选择",
210
+ date: type === "start" ? "开始日期" : type === "end" ? "结束日期" : "请选择日期",
211
+ number: "请输入",
212
+ number_min: "最小值",
213
+ number_max: "最大值",
214
+ radio: "请选择",
215
+ checkbox: "请选择",
216
+ switch: "请选择"
217
+ };
218
+ if (field.fieldType === "date") {
219
+ return placeholderMap.date;
220
+ }
221
+ if (field.fieldType === "number") {
222
+ return type === "min" ? placeholderMap.number_min : type === "max" ? placeholderMap.number_max : placeholderMap.number;
223
+ }
224
+ return `${placeholderMap[field.fieldType] || "请输入"}${field.label || ""}`;
225
+ };
226
+ return (_ctx, _cache) => {
227
+ const _component_el_icon = index.ElIcon;
228
+ const _component_el_tab_pane = index$2.ElTabPane;
229
+ const _component_el_tabs = index$2.ElTabs;
230
+ const _component_el_button = index$4.ElButton;
231
+ const _component_el_input = index$3.ElInput;
232
+ const _component_el_checkbox_button = index$8.ElCheckboxButton;
233
+ const _component_el_checkbox_group = index$8.ElCheckboxGroup;
234
+ const _component_el_date_picker = index$9.ElDatePicker;
235
+ const _component_el_input_number = index$a.ElInputNumber;
236
+ const _component_el_form_item = index$7.ElFormItem;
237
+ const _component_el_form = index$7.ElForm;
238
+ const _component_el_collapse_transition = index$6.ElCollapseTransition;
239
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
240
+ vue.createElementVNode("div", _hoisted_2, [
241
+ __props.localConfig.showReturn ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3, [
242
+ vue.createVNode(_component_el_icon, null, {
243
+ default: vue.withCtx(() => [
244
+ vue.createVNode(vue.unref(index$1.ArrowLeftBold))
245
+ ]),
246
+ _: 1
247
+ })
248
+ ])) : vue.createCommentVNode("", true),
249
+ __props.localConfig.showTitle ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, vue.toDisplayString(__props.localConfig.templateName), 1)) : vue.createCommentVNode("", true),
250
+ tabConfigs.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, [
251
+ vue.createVNode(_component_el_tabs, {
252
+ modelValue: activeTab.value,
253
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => activeTab.value = $event),
254
+ class: "dynamic-tabs"
255
+ }, {
256
+ default: vue.withCtx(() => [
257
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(tabConfigs.value, (tab) => {
258
+ return vue.openBlock(), vue.createBlock(_component_el_tab_pane, {
259
+ key: tab.id,
260
+ label: tab.label,
261
+ name: tab.id
262
+ }, null, 8, ["label", "name"]);
263
+ }), 128))
264
+ ]),
265
+ _: 1
266
+ }, 8, ["modelValue"])
267
+ ])) : vue.createCommentVNode("", true),
268
+ vue.createElementVNode("div", _hoisted_6, [
269
+ vue.createElementVNode("div", _hoisted_7, [
270
+ vue.createVNode(_component_el_input, {
271
+ modelValue: searchInputValue.value,
272
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => searchInputValue.value = $event),
273
+ placeholder: "请输入关键词搜索...",
274
+ class: "search-input",
275
+ "prefix-icon": vue.unref(index$1.Search),
276
+ onKeyup: onSearchInputKeyup
277
+ }, vue.createSlots({ _: 2 }, [
278
+ dynamicConfig.value.advancedSearch ? {
279
+ name: "append",
280
+ fn: vue.withCtx(() => [
281
+ vue.createVNode(_component_el_button, {
282
+ type: "primary",
283
+ onClick: toggleAdvancedFilter
284
+ }, {
285
+ default: vue.withCtx(() => [
286
+ vue.createTextVNode(vue.toDisplayString(showAdvancedFilter.value ? "隐藏高级搜索" : "高级搜索"), 1)
287
+ ]),
288
+ _: 1
289
+ })
290
+ ]),
291
+ key: "0"
292
+ } : void 0
293
+ ]), 1032, ["modelValue", "prefix-icon"])
294
+ ]),
295
+ rightButtons.value.length > 0 ? (vue.openBlock(), vue.createBlock(vue.unref(index$5.VxeToolbar), {
296
+ key: 0,
297
+ ref: "toolbarRef"
298
+ }, {
299
+ tools: vue.withCtx(() => [
300
+ rightButtons.value.length ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(rightButtons.value, (btn) => {
301
+ return vue.openBlock(), vue.createBlock(_component_el_button, {
302
+ key: btn.id,
303
+ type: getBtnType(btn),
304
+ icon: getBtnIcon(btn.btnType),
305
+ onClick: ($event) => handleClick(btn, $event)
306
+ }, {
307
+ default: vue.withCtx(() => [
308
+ vue.createTextVNode(vue.toDisplayString(btn.label), 1)
309
+ ]),
310
+ _: 2
311
+ }, 1032, ["type", "icon", "onClick"]);
312
+ }), 128)) : vue.createCommentVNode("", true)
313
+ ]),
314
+ _: 1
315
+ }, 512)) : vue.createCommentVNode("", true)
316
+ ])
317
+ ]),
318
+ vue.createVNode(_component_el_collapse_transition, null, {
319
+ default: vue.withCtx(() => [
320
+ vue.withDirectives(vue.createElementVNode("div", _hoisted_8, [
321
+ vue.createElementVNode("div", _hoisted_9, [
322
+ vue.createVNode(_component_el_form, {
323
+ ref: "formRef",
324
+ model: filterValues.value,
325
+ class: "filter-form",
326
+ "label-width": "100px",
327
+ inline: ""
328
+ }, {
329
+ default: vue.withCtx(() => [
330
+ vue.createElementVNode("div", _hoisted_10, [
331
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(filterFields.value, (field) => {
332
+ return vue.openBlock(), vue.createElementBlock("div", {
333
+ key: field.id,
334
+ style: vue.normalizeStyle(field.isExclusiveRow ? "width:100%" : "")
335
+ }, [
336
+ vue.createVNode(_component_el_form_item, {
337
+ label: field.label
338
+ }, {
339
+ default: vue.withCtx(() => [
340
+ field.isButtonStyle ? (vue.openBlock(), vue.createBlock(_component_el_checkbox_group, {
341
+ key: 0,
342
+ modelValue: filterValues.value[field.fieldId],
343
+ "onUpdate:modelValue": ($event) => filterValues.value[field.fieldId] = $event
344
+ }, {
345
+ default: vue.withCtx(() => [
346
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(field.optionConfig.options, (option) => {
347
+ return vue.openBlock(), vue.createBlock(_component_el_checkbox_button, {
348
+ key: option.value,
349
+ value: option.value
350
+ }, {
351
+ default: vue.withCtx(() => [
352
+ vue.createTextVNode(vue.toDisplayString(option.label), 1)
353
+ ]),
354
+ _: 2
355
+ }, 1032, ["value"]);
356
+ }), 128))
357
+ ]),
358
+ _: 2
359
+ }, 1032, ["modelValue", "onUpdate:modelValue"])) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
360
+ field.fieldType == "date" ? (vue.openBlock(), vue.createBlock(_component_el_date_picker, {
361
+ key: 0,
362
+ modelValue: filterValues.value[field.fieldId],
363
+ "onUpdate:modelValue": ($event) => filterValues.value[field.fieldId] = $event,
364
+ type: "daterange",
365
+ "start-placeholder": getPlaceholder(field, "start"),
366
+ "end-placeholder": getPlaceholder(field, "end"),
367
+ format: "YYYY-MM-DD",
368
+ "value-format": "YYYYMMDD",
369
+ clearable: "",
370
+ style: { "width": "100%" }
371
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "start-placeholder", "end-placeholder"])) : field.fieldType == "number" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_11, [
372
+ vue.createVNode(_component_el_input_number, {
373
+ modelValue: filterValues.value[field.fieldId],
374
+ "onUpdate:modelValue": ($event) => filterValues.value[field.fieldId] = $event,
375
+ placeholder: getPlaceholder(field, "min"),
376
+ controls: false,
377
+ "controls-position": "right",
378
+ style: { "flex": "1" },
379
+ clearable: ""
380
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "placeholder"]),
381
+ _cache[2] || (_cache[2] = vue.createElementVNode("span", null, "-", -1)),
382
+ vue.createVNode(_component_el_input_number, {
383
+ modelValue: filterValues.value[`${field.fieldId}_max`],
384
+ "onUpdate:modelValue": ($event) => filterValues.value[`${field.fieldId}_max`] = $event,
385
+ placeholder: getPlaceholder(field, "max"),
386
+ controls: false,
387
+ "controls-position": "right",
388
+ style: { "flex": "1" },
389
+ clearable: ""
390
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "placeholder"])
391
+ ])) : (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(getFilterComponent(field.fieldType)), vue.mergeProps({
392
+ key: 2,
393
+ modelValue: filterValues.value[field.fieldId],
394
+ "onUpdate:modelValue": ($event) => filterValues.value[field.fieldId] = $event,
395
+ config: { ...field, eventHandlers: {} },
396
+ ref_for: true
397
+ }, getComponentConfig(field), {
398
+ placeholder: getPlaceholder(field)
399
+ }), null, 16, ["modelValue", "onUpdate:modelValue", "config", "placeholder"]))
400
+ ], 64))
401
+ ]),
402
+ _: 2
403
+ }, 1032, ["label"])
404
+ ], 4);
405
+ }), 128))
406
+ ])
407
+ ]),
408
+ _: 1
409
+ }, 8, ["model"])
410
+ ])
411
+ ], 512), [
412
+ [
413
+ vue.vShow,
414
+ showAdvancedFilter.value && dynamicConfig.value.advancedSearch && filterFields.value.length > 0
415
+ ]
416
+ ])
417
+ ]),
418
+ _: 1
419
+ })
420
+ ]);
421
+ };
422
+ }
423
+ };
424
+ const DynamicQuery = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-66d8d7cb"]]);
425
+ exports.default = DynamicQuery;