bm-admin-ui 1.0.28-alpha → 1.0.30-alpha

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 (184) hide show
  1. package/es/components/button/index.d.ts +307 -0
  2. package/es/components/button/src/button.d.ts +12 -0
  3. package/es/components/button/src/button.vue.d.ts +308 -0
  4. package/es/components/feedback/index.d.ts +1037 -0
  5. package/es/components/feedback/index.js +1306 -25
  6. package/es/components/feedback/src/bmAlert.vue.d.ts +193 -0
  7. package/es/components/feedback/src/bmModal.vue.d.ts +839 -0
  8. package/es/components/float-table/index.d.ts +70 -0
  9. package/es/components/float-table/index.js +28 -37
  10. package/es/components/float-table/src/float-table.vue.d.ts +69 -0
  11. package/es/components/flow-designer/index.d.ts +7 -0
  12. package/es/components/flow-designer/src/flow-designer.vue.d.ts +6 -0
  13. package/es/components/form-designer/index.d.ts +9 -0
  14. package/es/components/form-designer/index.js +9 -4182
  15. package/es/components/form-designer/src/form-designer.vue.d.ts +8 -0
  16. package/es/components/index.d.ts +13 -0
  17. package/es/components/index.js +0 -1
  18. package/es/components/input-tags-display/index.d.ts +113 -0
  19. package/es/components/input-tags-display/index.js +1187 -27
  20. package/es/components/input-tags-display/src/input-tags-display.vue.d.ts +110 -0
  21. package/es/components/multi-cascader-compose/index.d.ts +164 -0
  22. package/es/components/multi-cascader-compose/index.js +1199 -31
  23. package/es/components/multi-cascader-compose/src/multi-cascader-compose.vue.d.ts +164 -0
  24. package/es/components/multi-cascader-compose/src/props.d.ts +40 -0
  25. package/es/components/multi-cascader-compose/types.d.ts +10 -0
  26. package/es/components/over-tooltips/index.d.ts +35 -0
  27. package/es/components/over-tooltips/index.js +20 -27
  28. package/es/components/over-tooltips/src/over-tooltips.vue.d.ts +34 -0
  29. package/es/components/search-filter/index.d.ts +223 -0
  30. package/es/components/search-filter/index.js +1290 -72
  31. package/es/components/search-filter/src/search-filter.d.ts +81 -0
  32. package/es/components/search-filter/src/search-filter.vue.d.ts +222 -0
  33. package/es/components/search-filter/src/search-reset-btn.vue.d.ts +106 -0
  34. package/es/components/shops-filter/index.d.ts +99 -0
  35. package/es/components/shops-filter/index.js +1182 -24
  36. package/es/components/shops-filter/src/shops-filter.d.ts +25 -0
  37. package/es/components/shops-filter/src/shops-filter.vue.d.ts +98 -0
  38. package/es/components/staffs-selector/index.d.ts +109 -0
  39. package/es/components/staffs-selector/index.js +1241 -131
  40. package/es/components/staffs-selector/src/multipleCmp.vue.d.ts +97 -0
  41. package/es/components/staffs-selector/src/radioCmp.vue.d.ts +31 -0
  42. package/es/components/staffs-selector/src/staffs-selector.vue.d.ts +108 -0
  43. package/es/components/staffs-selector/src/variedCmp.vue.d.ts +62 -0
  44. package/es/components/timeline/index.d.ts +118 -0
  45. package/es/components/timeline/index.js +15 -12
  46. package/es/components/timeline/src/props.d.ts +27 -0
  47. package/es/components/timeline/src/timeline-item.vue.d.ts +66 -0
  48. package/es/components/timeline/src/timeline.vue.d.ts +52 -0
  49. package/es/components/upload/index.d.ts +137 -0
  50. package/es/components/upload/index.js +1365 -104
  51. package/es/components/upload/src/icons.d.ts +13 -0
  52. package/es/components/upload/src/upload.vue.d.ts +136 -0
  53. package/es/components/upload/utils/index.d.ts +7 -0
  54. package/es/index.d.ts +6 -0
  55. package/es/utils/bm-admin-ui-resolver.d.ts +9 -0
  56. package/es/utils/vxe-table.d.ts +6 -0
  57. package/es/utils/vxe-table.js +3 -4
  58. package/es/utils/with-install.d.ts +3 -0
  59. package/index.esm.js +47097 -0
  60. package/index.js +47127 -0
  61. package/lib/components/button/index.d.ts +307 -0
  62. package/lib/components/button/src/button.d.ts +12 -0
  63. package/lib/components/button/src/button.vue.d.ts +308 -0
  64. package/lib/components/feedback/index.d.ts +1037 -0
  65. package/lib/components/feedback/index.js +1304 -23
  66. package/lib/components/feedback/src/bmAlert.vue.d.ts +193 -0
  67. package/lib/components/feedback/src/bmModal.vue.d.ts +839 -0
  68. package/lib/components/float-table/index.d.ts +70 -0
  69. package/lib/components/float-table/index.js +28 -37
  70. package/lib/components/float-table/src/float-table.vue.d.ts +69 -0
  71. package/lib/components/flow-designer/index.d.ts +7 -0
  72. package/lib/components/flow-designer/src/flow-designer.vue.d.ts +6 -0
  73. package/lib/components/form-designer/index.d.ts +9 -0
  74. package/lib/components/form-designer/index.js +8 -4187
  75. package/lib/components/form-designer/src/form-designer.vue.d.ts +8 -0
  76. package/lib/components/index.d.ts +13 -0
  77. package/lib/components/index.js +0 -7
  78. package/lib/components/input-tags-display/index.d.ts +113 -0
  79. package/lib/components/input-tags-display/index.js +1187 -27
  80. package/lib/components/input-tags-display/src/input-tags-display.vue.d.ts +110 -0
  81. package/lib/components/multi-cascader-compose/index.d.ts +164 -0
  82. package/lib/components/multi-cascader-compose/index.js +1198 -30
  83. package/lib/components/multi-cascader-compose/src/multi-cascader-compose.vue.d.ts +164 -0
  84. package/lib/components/multi-cascader-compose/src/props.d.ts +40 -0
  85. package/lib/components/multi-cascader-compose/types.d.ts +10 -0
  86. package/lib/components/over-tooltips/index.d.ts +35 -0
  87. package/lib/components/over-tooltips/index.js +20 -27
  88. package/lib/components/over-tooltips/src/over-tooltips.vue.d.ts +34 -0
  89. package/lib/components/search-filter/index.d.ts +223 -0
  90. package/lib/components/search-filter/index.js +1289 -71
  91. package/lib/components/search-filter/src/search-filter.d.ts +81 -0
  92. package/lib/components/search-filter/src/search-filter.vue.d.ts +222 -0
  93. package/lib/components/search-filter/src/search-reset-btn.vue.d.ts +106 -0
  94. package/lib/components/shops-filter/index.d.ts +99 -0
  95. package/lib/components/shops-filter/index.js +1181 -23
  96. package/lib/components/shops-filter/src/shops-filter.d.ts +25 -0
  97. package/lib/components/shops-filter/src/shops-filter.vue.d.ts +98 -0
  98. package/lib/components/staffs-selector/index.d.ts +109 -0
  99. package/lib/components/staffs-selector/index.js +1240 -130
  100. package/lib/components/staffs-selector/src/multipleCmp.vue.d.ts +97 -0
  101. package/lib/components/staffs-selector/src/radioCmp.vue.d.ts +31 -0
  102. package/lib/components/staffs-selector/src/staffs-selector.vue.d.ts +108 -0
  103. package/lib/components/staffs-selector/src/variedCmp.vue.d.ts +62 -0
  104. package/lib/components/timeline/index.d.ts +118 -0
  105. package/lib/components/timeline/index.js +15 -12
  106. package/lib/components/timeline/src/props.d.ts +27 -0
  107. package/lib/components/timeline/src/timeline-item.vue.d.ts +66 -0
  108. package/lib/components/timeline/src/timeline.vue.d.ts +52 -0
  109. package/lib/components/upload/index.d.ts +137 -0
  110. package/lib/components/upload/index.js +1364 -103
  111. package/lib/components/upload/src/icons.d.ts +13 -0
  112. package/lib/components/upload/src/upload.vue.d.ts +136 -0
  113. package/lib/components/upload/utils/index.d.ts +7 -0
  114. package/lib/index.d.ts +6 -0
  115. package/lib/utils/bm-admin-ui-resolver.d.ts +9 -0
  116. package/lib/utils/vxe-table.d.ts +6 -0
  117. package/lib/utils/vxe-table.js +2 -3
  118. package/lib/utils/with-install.d.ts +3 -0
  119. package/package.json +4 -9
  120. package/theme-chalk/button.css +1 -1
  121. package/theme-chalk/feedback.css +1 -1
  122. package/theme-chalk/float-table.css +1 -1
  123. package/theme-chalk/floating-vue.css +1 -1
  124. package/theme-chalk/flow-designer.css +1 -1
  125. package/theme-chalk/index.css +1 -1
  126. package/theme-chalk/input-tags-display.css +1 -1
  127. package/theme-chalk/modal.css +1 -1
  128. package/theme-chalk/multi-cascader-compose.css +1 -1
  129. package/theme-chalk/over-tooltips.css +1 -1
  130. package/theme-chalk/search-filter.css +1 -1
  131. package/theme-chalk/staffs-selector.css +1 -1
  132. package/theme-chalk/timeline.css +1 -1
  133. package/theme-chalk/upload.css +1 -1
  134. package/types/components/button/index.d.ts +307 -0
  135. package/types/components/button/src/button.d.ts +12 -0
  136. package/types/components/button/src/button.vue.d.ts +308 -0
  137. package/types/components/feedback/index.d.ts +1037 -0
  138. package/types/components/feedback/src/bmAlert.vue.d.ts +193 -0
  139. package/types/components/feedback/src/bmModal.vue.d.ts +839 -0
  140. package/types/components/float-table/index.d.ts +70 -0
  141. package/types/components/float-table/src/float-table.vue.d.ts +69 -0
  142. package/types/components/flow-designer/index.d.ts +7 -0
  143. package/types/components/flow-designer/src/flow-designer.vue.d.ts +6 -0
  144. package/types/components/form-designer/index.d.ts +9 -0
  145. package/types/components/form-designer/src/form-designer.vue.d.ts +8 -0
  146. package/types/components/index.d.ts +13 -0
  147. package/types/components/input-tags-display/index.d.ts +113 -0
  148. package/types/components/input-tags-display/src/input-tags-display.vue.d.ts +110 -0
  149. package/types/components/multi-cascader-compose/index.d.ts +164 -0
  150. package/types/components/multi-cascader-compose/src/multi-cascader-compose.vue.d.ts +164 -0
  151. package/types/components/multi-cascader-compose/src/props.d.ts +40 -0
  152. package/types/components/multi-cascader-compose/types.d.ts +10 -0
  153. package/types/components/over-tooltips/index.d.ts +35 -0
  154. package/types/components/over-tooltips/src/over-tooltips.vue.d.ts +34 -0
  155. package/types/components/search-filter/index.d.ts +223 -0
  156. package/types/components/search-filter/src/search-filter.d.ts +81 -0
  157. package/types/components/search-filter/src/search-filter.vue.d.ts +222 -0
  158. package/types/components/search-filter/src/search-reset-btn.vue.d.ts +106 -0
  159. package/types/components/shops-filter/index.d.ts +99 -0
  160. package/types/components/shops-filter/src/shops-filter.d.ts +25 -0
  161. package/types/components/shops-filter/src/shops-filter.vue.d.ts +98 -0
  162. package/types/components/staffs-selector/index.d.ts +109 -0
  163. package/types/components/staffs-selector/src/multipleCmp.vue.d.ts +97 -0
  164. package/types/components/staffs-selector/src/radioCmp.vue.d.ts +31 -0
  165. package/types/components/staffs-selector/src/staffs-selector.vue.d.ts +108 -0
  166. package/types/components/staffs-selector/src/variedCmp.vue.d.ts +62 -0
  167. package/types/components/timeline/index.d.ts +118 -0
  168. package/types/components/timeline/src/props.d.ts +27 -0
  169. package/types/components/timeline/src/timeline-item.vue.d.ts +66 -0
  170. package/types/components/timeline/src/timeline.vue.d.ts +52 -0
  171. package/types/components/upload/index.d.ts +137 -0
  172. package/types/components/upload/src/icons.d.ts +13 -0
  173. package/types/components/upload/src/upload.vue.d.ts +136 -0
  174. package/types/components/upload/utils/index.d.ts +7 -0
  175. package/types/index.d.ts +6 -0
  176. package/types/utils/bm-admin-ui-resolver.d.ts +9 -0
  177. package/types/utils/vxe-table.d.ts +6 -0
  178. package/types/utils/with-install.d.ts +3 -0
  179. package/es/components/form-create/index.js +0 -2769
  180. package/es/utils/uniqueId.js +0 -5
  181. package/lib/components/form-create/index.js +0 -2781
  182. package/lib/utils/uniqueId.js +0 -8
  183. package/theme-chalk/form-create.css +0 -1
  184. package/theme-chalk/form-designer.css +0 -1
@@ -4,71 +4,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var withInstall = require('bm-admin-ui/lib/utils/with-install');
6
6
  var vue = require('vue');
7
- var uniqueId = require('bm-admin-ui/lib/utils/uniqueId');
8
- var Draggable = require('vuedraggable');
9
- var antDesignVue = require('ant-design-vue');
10
- var iconsVue = require('@ant-design/icons-vue');
11
- var components = require('bm-admin-ui/lib/components');
12
- var lodashEs = require('lodash-es');
13
- var FC = require('@form-create/ant-design-vue');
14
-
15
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
-
17
- var uniqueId__default = /*#__PURE__*/_interopDefaultLegacy(uniqueId);
18
- var Draggable__default = /*#__PURE__*/_interopDefaultLegacy(Draggable);
19
- var FC__default = /*#__PURE__*/_interopDefaultLegacy(FC);
20
-
21
- var WidgetType;
22
- (function (WidgetType) {
23
- WidgetType["RowWidget"] = "RowWidget";
24
- WidgetType["TableWidget"] = "TableWidget";
25
- WidgetType["UploadFile"] = "UploadFile";
26
- })(WidgetType || (WidgetType = {}));
27
- function getFieldRatioRule(rule, parentRule) {
28
- let defaultValue = rule.config.fieldRatio;
29
- const propRule = {
30
- type: 'radio',
31
- title: '字段占比',
32
- options: [],
33
- props: {
34
- optionType: 'button',
35
- buttonStyle: 'solid',
36
- },
37
- };
38
- switch (parentRule === null || parentRule === void 0 ? void 0 : parentRule.type) {
39
- case WidgetType.RowWidget:
40
- defaultValue = defaultValue || 12;
41
- propRule.options = [
42
- { value: 6, label: '25%' },
43
- { value: 12, label: '50%' },
44
- { value: 18, label: '75%' },
45
- { value: 24, label: '100%' },
46
- ];
47
- propRule.value = defaultValue;
48
- break;
49
- case WidgetType.TableWidget:
50
- defaultValue = defaultValue || '140px';
51
- propRule.title = '子字段宽度';
52
- propRule.options = [
53
- { value: '140px', label: '小' },
54
- { value: '212px', label: '中' },
55
- { value: '392px', label: '大' },
56
- { value: '572px', label: '超大 ' },
57
- ];
58
- propRule.value = defaultValue;
59
- break;
60
- default:
61
- defaultValue = defaultValue || '100%';
62
- propRule.options = [
63
- { value: '25%', label: '25%' },
64
- { value: '50%', label: '50%' },
65
- { value: '75%', label: '75%' },
66
- { value: '100%', label: '100%' },
67
- ];
68
- propRule.value = defaultValue;
69
- }
70
- return propRule;
71
- }
72
7
 
73
8
  var _export_sfc = (sfc, props) => {
74
9
  const target = sfc.__vccOpts || sfc;
@@ -78,4136 +13,22 @@ var _export_sfc = (sfc, props) => {
78
13
  return target;
79
14
  };
80
15
 
81
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
82
- __name: "widget-instruction",
83
- props: ["rule"],
84
- setup(__props) {
85
- return (_ctx, _cache) => {
86
- return vue.openBlock(), vue.createElementBlock("div", {
87
- style: vue.normalizeStyle({ minHeight: "22px", color: __props.rule.style.color })
88
- }, vue.toDisplayString(__props.rule.value), 5);
89
- };
90
- }
91
- });
92
- var WidgetInstruction = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__file", "widget-instruction.vue"]]);
93
-
94
- const _hoisted_1$g = {
95
- key: 2,
96
- class: "bm-drag-tool-mask"
97
- };
98
- const _hoisted_2$d = /* @__PURE__ */ vue.createTextVNode("\u590D\u5236");
99
- const _hoisted_3$b = /* @__PURE__ */ vue.createTextVNode("\u5220\u9664");
100
- const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
101
- __name: "drag-tool",
102
- props: ["rule", "activeRule", "parentRule"],
103
- emits: [
104
- "copy",
105
- "delete",
106
- "mouseenter",
107
- "mouseleave",
108
- "setActiveRule",
109
- "widgetAdd"
110
- ],
111
- setup(__props, { emit: emits }) {
112
- const props = __props;
113
- const isActive = vue.computed(() => props.rule.field === props.activeRule?.field);
114
- const option = vue.computed(() => ({
115
- form: {
116
- layout: "vertical"
117
- },
118
- submitBtn: {
119
- show: false
120
- },
121
- parentType: props.parentRule?.type,
122
- childRules: props.parentRule?.config?.childRules
123
- }));
124
- function emitCopyEvt(rule, parentRule = void 0) {
125
- emits("copy", rule, parentRule);
126
- }
127
- function emitDeleteEvt(rule, parentRule = void 0) {
128
- emits("delete", rule, parentRule);
129
- }
130
- function handleCopy() {
131
- emitCopyEvt(props.rule);
132
- }
133
- function handleDelete() {
134
- emitDeleteEvt(props.rule);
135
- }
136
- function handleMouseenter() {
137
- props.rule.config.isHover = true;
138
- emits("mouseenter");
139
- }
140
- function handleMouseleave() {
141
- props.rule.config.isHover = false;
142
- emits("mouseleave");
143
- }
144
- function handleRowWidgetMouseenter() {
145
- props.rule.config.isHover = false;
146
- }
147
- function handleRowWidgetMouseleave() {
148
- props.rule.config.isHover = true;
149
- }
150
- function handleRowWidgetSetActiveRule(element) {
151
- emits("setActiveRule", element, props.rule);
152
- }
153
- function handleRowWidgetCopy(rule) {
154
- emitCopyEvt(rule, props.rule);
155
- }
156
- function handleRowWidgetDelete(rule) {
157
- emitDeleteEvt(rule, props.rule);
158
- }
159
- function handleRowWidgetAdd(rule) {
160
- emits("widgetAdd", rule, props.rule);
161
- }
162
- return (_ctx, _cache) => {
163
- const _component_FormCreate = vue.resolveComponent("FormCreate");
164
- const _component_Copy = vue.resolveComponent("Copy");
165
- const _component_ACol = vue.resolveComponent("ACol");
166
- const _component_Delete = vue.resolveComponent("Delete");
167
- const _component_ARow = vue.resolveComponent("ARow");
168
- return vue.openBlock(), vue.createElementBlock("div", {
169
- class: vue.normalizeClass([
170
- "bm-drag-tool",
171
- __props.rule.type === vue.unref(WidgetType).RowWidget ? "is-row" : "",
172
- vue.unref(isActive) ? "is-active" : "",
173
- __props.rule?.config?.putDisabled ? "is-put-disabled" : ""
174
- ]),
175
- onMouseenter: handleMouseenter,
176
- onMouseleave: handleMouseleave
177
- }, [
178
- __props.rule.type ? (vue.openBlock(), vue.createBlock(_component_FormCreate, {
179
- key: 0,
180
- option: vue.unref(option),
181
- rule: [__props.rule],
182
- onNestMouseenter: handleRowWidgetMouseenter,
183
- onNestMouseleave: handleRowWidgetMouseleave,
184
- onNestSetActiveRule: handleRowWidgetSetActiveRule,
185
- onNestCopy: handleRowWidgetCopy,
186
- onNestDelete: handleRowWidgetDelete,
187
- onNestAdd: handleRowWidgetAdd
188
- }, null, 8, ["option", "rule"])) : (vue.openBlock(), vue.createBlock(WidgetInstruction, {
189
- key: 1,
190
- rule: __props.rule
191
- }, null, 8, ["rule"])),
192
- __props.rule.type !== vue.unref(WidgetType).RowWidget && __props.rule.type !== vue.unref(WidgetType).TableWidget ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$g)) : vue.createCommentVNode("v-if", true),
193
- __props.rule.config.isHover || vue.unref(isActive) ? (vue.openBlock(), vue.createBlock(_component_ARow, {
194
- key: 3,
195
- class: "bm-drag-tool-btn",
196
- gutter: [16, 0]
197
- }, {
198
- default: vue.withCtx(() => [
199
- vue.createVNode(_component_ACol, { class: "bm-drag-tool-btn-col" }, {
200
- default: vue.withCtx(() => [
201
- vue.createVNode(vue.unref(antDesignVue.Tooltip), { placement: "top" }, {
202
- title: vue.withCtx(() => [
203
- _hoisted_2$d
204
- ]),
205
- default: vue.withCtx(() => [
206
- vue.createVNode(_component_Copy, {
207
- class: "bm-drag-tool-btn-icon is-copy",
208
- onClick: vue.withModifiers(handleCopy, ["stop"])
209
- }, null, 8, ["onClick"])
210
- ]),
211
- _: 1
212
- })
213
- ]),
214
- _: 1
215
- }),
216
- vue.createVNode(_component_ACol, { class: "bm-drag-tool-btn-col" }, {
217
- default: vue.withCtx(() => [
218
- vue.createVNode(vue.unref(antDesignVue.Tooltip), { placement: "top" }, {
219
- title: vue.withCtx(() => [
220
- _hoisted_3$b
221
- ]),
222
- default: vue.withCtx(() => [
223
- vue.createVNode(_component_Delete, {
224
- class: "bm-drag-tool-btn-icon is-delete",
225
- onClick: vue.withModifiers(handleDelete, ["stop"])
226
- }, null, 8, ["onClick"])
227
- ]),
228
- _: 1
229
- })
230
- ]),
231
- _: 1
232
- })
233
- ]),
234
- _: 1
235
- })) : vue.createCommentVNode("v-if", true)
236
- ], 34);
237
- };
238
- }
239
- });
240
- var DragTool = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["__file", "drag-tool.vue"]]);
241
-
242
- const _hoisted_1$f = { class: "bm-drag-placeholder" };
243
- const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
244
- __name: "drag-placeholder",
245
- props: {},
246
- setup(__props) {
247
- return (_ctx, _cache) => {
248
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f);
249
- };
250
- }
251
- });
252
- var DragPlaceholder = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__file", "drag-placeholder.vue"]]);
253
-
254
- const _hoisted_1$e = { class: "bm-widget-row-wrap" };
255
- const _hoisted_2$c = {
256
- key: 0,
257
- class: "bm-widget-row-tip"
258
- };
259
- const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
260
- __name: "widget-row",
261
- props: ["activeRule", "formCreateInject"],
262
- emits: [
263
- "mouseenter",
264
- "mouseleave",
265
- "set-active-rule",
266
- "copy",
267
- "delete",
268
- "add"
269
- ],
270
- setup(__props, { emit: emits }) {
271
- const props = __props;
272
- const childRules = vue.computed(() => props.formCreateInject.rule.config.childRules);
273
- function handleMouseenter() {
274
- emits("mouseenter");
275
- }
276
- function handleMouseleave() {
277
- emits("mouseleave");
278
- }
279
- function emitSetActiveRuleEvt(rule) {
280
- emits("set-active-rule", rule);
281
- }
282
- function handleClick(element) {
283
- emitSetActiveRuleEvt(element);
284
- }
285
- function handleRowWidgetAdd({ newIndex }) {
286
- emits("add", childRules.value[newIndex]);
287
- }
288
- function handleRowWidgetUpdate({ newIndex }) {
289
- const rule = childRules.value[newIndex];
290
- if (rule)
291
- emitSetActiveRuleEvt(rule);
292
- }
293
- function handleCopy(rule) {
294
- emits("copy", rule);
295
- }
296
- function handleDelete(rule) {
297
- emits("delete", rule);
298
- }
299
- return (_ctx, _cache) => {
300
- const _component_ACol = vue.resolveComponent("ACol");
301
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
302
- !vue.unref(childRules).length ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$c, " \u53EF\u62D6\u5165\u591A\u4E2A\u63A7\u4EF6 ")) : vue.createCommentVNode("v-if", true),
303
- vue.createVNode(vue.unref(Draggable__default["default"]), {
304
- "component-data": {
305
- field: __props.formCreateInject.rule.field,
306
- type: vue.unref(WidgetType).RowWidget
307
- },
308
- class: "bm-widget-row",
309
- tag: "ARow",
310
- group: {
311
- name: "rowWidget",
312
- pull: true,
313
- put: ["widget", "rowWidget", "formWidget"]
314
- },
315
- "ghost-class": vue.unref(childRules).length ? "row-drag-ghost" : "row-drag-ghost__is-empty",
316
- list: vue.unref(childRules),
317
- "force-fallback": true,
318
- delay: 50,
319
- "item-key": "field",
320
- direction: "vertical",
321
- onAdd: handleRowWidgetAdd,
322
- onUpdate: handleRowWidgetUpdate
323
- }, {
324
- item: vue.withCtx(({ element }) => [
325
- vue.createVNode(_component_ACol, {
326
- span: element.config.fieldRatio
327
- }, {
328
- default: vue.withCtx(() => [
329
- vue.createVNode(DragTool, {
330
- rule: element,
331
- "active-rule": __props.activeRule,
332
- "parent-rule": __props.formCreateInject.rule,
333
- onMouseenter: handleMouseenter,
334
- onMouseleave: handleMouseleave,
335
- onClick: vue.withModifiers(($event) => handleClick(element), ["stop"]),
336
- onCopy: handleCopy,
337
- onDelete: handleDelete
338
- }, null, 8, ["rule", "active-rule", "parent-rule", "onClick"]),
339
- vue.createVNode(DragPlaceholder)
340
- ]),
341
- _: 2
342
- }, 1032, ["span"])
343
- ]),
344
- _: 1
345
- }, 8, ["component-data", "ghost-class", "list"])
346
- ]);
347
- };
348
- }
349
- });
350
- var WidgetRow = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__file", "widget-row.vue"]]);
351
-
352
- const label$h = '分栏';
353
- const fieldsMap$h = {
354
- 'title.title': 'title.title',
355
- 'config.title': 'config.title',
356
- 'config.showTitle': 'config.showTitle',
357
- };
358
- function handleTitle(title) {
359
- return title + '(该标题不会显示在表单)';
360
- }
361
- const name$h = 'row';
362
- var row = {
363
- icon: 'RowIcon',
364
- name: name$h,
365
- label: label$h,
366
- rule() {
367
- return {
368
- type: WidgetType.RowWidget,
369
- component: WidgetRow,
370
- title: {
371
- title: label$h,
372
- },
373
- field: uniqueId__default["default"](),
374
- props: {
375
- field: '',
376
- list: [],
377
- activeRule: {},
378
- },
379
- emit: [
380
- 'mouseenter',
381
- 'mouseleave',
382
- 'set-active-rule',
383
- 'copy',
384
- 'delete',
385
- 'add',
386
- ],
387
- emitPrefix: 'nest',
388
- config: {
389
- title: label$h,
390
- showTitle: true,
391
- childRules: [],
392
- propsFields: Object.values(fieldsMap$h),
393
- },
394
- };
395
- },
396
- props(rule) {
397
- return [
398
- {
399
- type: 'input',
400
- title: '标题',
401
- field: fieldsMap$h['config.title'],
402
- value: rule.config.title,
403
- effect: {
404
- required: '请输入标题',
405
- },
406
- props: {
407
- placeholder: '请输入',
408
- maxlength: 10,
409
- },
410
- inject: true,
411
- on: {
412
- change({ api, self }, $event) {
413
- const showTitle = rule.config.showTitle;
414
- let title = $event.target.value;
415
- if (!showTitle) {
416
- title = handleTitle(title);
417
- }
418
- api.emit('change', 'title.title', title, self, api, true);
419
- },
420
- },
421
- },
422
- {
423
- type: 'switch',
424
- title: '是否显示标题',
425
- field: fieldsMap$h['config.showTitle'],
426
- value: rule.config.showTitle,
427
- inject: true,
428
- on: {
429
- change({ api, self }, value) {
430
- let title = rule.config.title;
431
- if (!value) {
432
- title = handleTitle(title);
433
- }
434
- api.emit('change', 'title.title', title, self, api, true);
435
- },
436
- },
437
- },
438
- ];
439
- },
440
- parse(rule) {
441
- return {
442
- name: name$h,
443
- field: rule.field,
444
- title: {
445
- title: rule.title.title,
446
- },
447
- config: {
448
- title: rule.config.title,
449
- showTitle: rule.config.showTitle,
450
- },
451
- };
452
- },
453
- };
454
-
455
- const label$g = '单行输入框';
456
- const fieldsMap$g = {
457
- 'title.title': 'title.title',
458
- 'props.placeholder': 'props.placeholder',
459
- value: 'value',
460
- 'config.fieldRatio': 'config.fieldRatio',
461
- 'effect.required': 'effect.required',
462
- };
463
- const name$g = 'input';
464
- var input = {
465
- icon: 'InputIcon',
466
- name: name$g,
467
- label: label$g,
468
- rule() {
469
- return {
470
- type: 'input',
471
- field: uniqueId__default["default"](),
472
- title: {
473
- title: label$g,
474
- style: {
475
- overflow: 'hidden',
476
- textOverflow: 'ellipsis',
477
- whiteSpace: 'nowrap',
478
- },
479
- },
480
- effect: {
481
- required: true,
482
- formRule: 'formRule',
483
- },
484
- props: {
485
- maxlength: 200,
486
- placeholder: '请输入',
487
- },
488
- config: {
489
- propsFields: Object.values(fieldsMap$g),
490
- },
491
- };
492
- },
493
- props(rule, parentRule) {
494
- return [
495
- {
496
- type: 'input',
497
- title: '标题',
498
- field: fieldsMap$g['title.title'],
499
- value: rule.title.title,
500
- effect: {
501
- required: '请输入标题',
502
- },
503
- props: {
504
- placeholder: '请输入',
505
- maxlength: 10,
506
- },
507
- },
508
- {
509
- type: 'input',
510
- title: '提示文字',
511
- field: fieldsMap$g['props.placeholder'],
512
- props: {
513
- placeholder: '请输入',
514
- },
515
- value: rule.props.placeholder,
516
- },
517
- {
518
- type: 'input',
519
- title: '默认值',
520
- field: fieldsMap$g['value'],
521
- props: {
522
- placeholder: '请输入',
523
- },
524
- value: rule.value,
525
- },
526
- Object.assign({ field: fieldsMap$g['config.fieldRatio'] }, getFieldRatioRule(rule, parentRule)),
527
- {
528
- type: 'switch',
529
- title: '是否必填',
530
- field: fieldsMap$g['effect.required'],
531
- value: rule.effect.required,
532
- },
533
- ];
534
- },
535
- parse(rule) {
536
- return {
537
- name: name$g,
538
- field: rule.field,
539
- title: {
540
- title: rule.title.title,
541
- },
542
- props: {
543
- placeholder: rule.props.placeholder,
544
- },
545
- value: rule.value,
546
- config: {
547
- fieldRatio: rule.config.fieldRatio,
548
- },
549
- effect: {
550
- required: rule.effect.required,
551
- },
552
- };
553
- },
554
- };
555
-
556
- const label$f = '多行输入框';
557
- const fieldsMap$f = {
558
- 'title.title': 'title.title',
559
- 'props.placeholder': 'props.placeholder',
560
- value: 'value',
561
- 'config.fieldRatio': 'config.fieldRatio',
562
- 'effect.required': 'effect.required',
563
- };
564
- const name$f = 'textarea';
565
- var textarea = {
566
- icon: 'TextareaIcon',
567
- name: name$f,
568
- label: label$f,
569
- rule() {
570
- return {
571
- type: 'input',
572
- field: uniqueId__default["default"](),
573
- title: {
574
- title: label$f,
575
- style: {
576
- overflow: 'hidden',
577
- textOverflow: 'ellipsis',
578
- whiteSpace: 'nowrap',
579
- },
580
- },
581
- effect: {
582
- required: true,
583
- formRule: 'formRule',
584
- },
585
- props: {
586
- type: 'textarea',
587
- placeholder: '请输入',
588
- maxlength: 5000,
589
- },
590
- config: {
591
- propsFields: Object.values(fieldsMap$f),
592
- },
593
- };
594
- },
595
- props(rule, parentRule) {
596
- return [
597
- {
598
- type: 'input',
599
- title: '标题',
600
- field: fieldsMap$f['title.title'],
601
- value: rule.title.title,
602
- effect: {
603
- required: '请输入标题',
604
- },
605
- props: {
606
- placeholder: '请输入',
607
- maxlength: 10,
608
- },
609
- },
610
- {
611
- type: 'input',
612
- title: '提示文字',
613
- field: fieldsMap$f['props.placeholder'],
614
- props: {
615
- placeholder: '请输入',
616
- },
617
- value: rule.props.placeholder,
618
- },
619
- {
620
- type: 'input',
621
- title: '默认值',
622
- field: fieldsMap$f['value'],
623
- props: {
624
- placeholder: '请输入',
625
- },
626
- value: rule.value,
627
- },
628
- Object.assign({ field: fieldsMap$f['config.fieldRatio'] }, getFieldRatioRule(rule, parentRule)),
629
- {
630
- type: 'switch',
631
- title: '是否必填',
632
- field: fieldsMap$f['effect.required'],
633
- value: rule.effect.required,
634
- },
635
- ];
636
- },
637
- parse(rule) {
638
- return {
639
- name: name$f,
640
- field: rule.field,
641
- title: {
642
- title: rule.title.title,
643
- },
644
- props: {
645
- placeholder: rule.props.placeholder,
646
- },
647
- value: rule.value,
648
- config: {
649
- fieldRatio: rule.config.fieldRatio,
650
- },
651
- effect: {
652
- required: rule.effect.required,
653
- },
654
- };
655
- },
656
- };
657
-
658
- const label$e = '数字输入框';
659
- const fieldsMap$e = {
660
- 'title.title': 'title.title',
661
- 'props.placeholder': 'props.placeholder',
662
- value: 'value',
663
- 'config.fieldRatio': 'config.fieldRatio',
664
- 'config.count': 'config.count',
665
- 'effect.required': 'effect.required',
666
- };
667
- const name$e = 'numInput';
668
- var numInput = {
669
- icon: 'NumInput',
670
- name: name$e,
671
- label: label$e,
672
- rule() {
673
- return {
674
- type: 'inputNumber',
675
- field: uniqueId__default["default"](),
676
- title: {
677
- title: label$e,
678
- style: {
679
- overflow: 'hidden',
680
- textOverflow: 'ellipsis',
681
- whiteSpace: 'nowrap',
682
- },
683
- },
684
- effect: {
685
- required: true,
686
- formRule: 'formRule',
687
- },
688
- props: {
689
- placeholder: '请输入',
690
- },
691
- config: {
692
- propsFields: Object.values(fieldsMap$e),
693
- },
694
- style: {
695
- width: '100%',
696
- },
697
- };
698
- },
699
- props(rule, parentRule) {
700
- return [
701
- {
702
- type: 'input',
703
- title: '标题',
704
- field: fieldsMap$e['title.title'],
705
- value: rule.title.title,
706
- effect: {
707
- required: '请输入标题',
708
- },
709
- props: {
710
- placeholder: '请输入',
711
- maxlength: 10,
712
- },
713
- },
714
- {
715
- type: 'input',
716
- title: '提示文字',
717
- field: fieldsMap$e['props.placeholder'],
718
- props: {
719
- placeholder: '请输入',
720
- },
721
- value: rule.props.placeholder,
722
- },
723
- {
724
- type: 'input',
725
- title: '默认值',
726
- field: fieldsMap$e['value'],
727
- props: {
728
- placeholder: '请输入',
729
- },
730
- value: rule.value,
731
- },
732
- Object.assign({ field: fieldsMap$e['config.fieldRatio'] }, getFieldRatioRule(rule, parentRule)),
733
- {
734
- type: 'switch',
735
- title: '统计总数',
736
- info: '仅当该控件结合“表格”控件使用时应用',
737
- field: fieldsMap$e['config.count'],
738
- value: rule.config.count,
739
- props: {
740
- disabled: (parentRule === null || parentRule === void 0 ? void 0 : parentRule.type) !== WidgetType.TableWidget,
741
- },
742
- },
743
- {
744
- type: 'switch',
745
- title: '是否必填',
746
- field: fieldsMap$e['effect.required'],
747
- value: rule.effect.required,
748
- info: '勾选后可作为流程条件',
749
- },
750
- ];
751
- },
752
- parse(rule) {
753
- return {
754
- name: name$e,
755
- field: rule.field,
756
- title: {
757
- title: rule.title.title,
758
- },
759
- props: {
760
- placeholder: rule.props.placeholder,
761
- },
762
- value: rule.value,
763
- config: {
764
- count: rule.config.count,
765
- fieldRatio: rule.config.fieldRatio,
766
- },
767
- effect: {
768
- required: rule.effect.required,
769
- },
770
- };
771
- },
772
- };
773
-
774
- const _hoisted_1$d = { class: "bm-handle-options" };
775
- const _hoisted_2$b = {
776
- key: 0,
777
- class: "bm-handle-options__error-tip"
778
- };
779
- const _hoisted_3$a = /* @__PURE__ */ vue.createTextVNode(" \u6279\u91CF\u7F16\u8F91 ");
780
- const _hoisted_4$7 = /* @__PURE__ */ vue.createTextVNode(" \u6DFB\u52A0\u9009\u9879 ");
781
- const _hoisted_5$4 = /* @__PURE__ */ vue.createTextVNode(" \u6BCF\u884C\u5BF9\u5E94\u4E00\u4E2A\u9009\u9879 ");
782
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
783
- __name: "handle-options",
784
- props: ["options"],
785
- emits: ["setValue"],
786
- setup(__props, { emit: emits }) {
787
- const props = __props;
788
- const handleClass = "bm-handle-options__drag-icon";
789
- const visible = vue.ref(false);
790
- const text = vue.ref("");
791
- const repeatOption = vue.ref([]);
792
- function edit() {
793
- visible.value = true;
794
- text.value = makeText(props.options);
795
- }
796
- function add() {
797
- const index = props.options.length;
798
- const value = `\u9009\u9879${index + 1}`;
799
- props.options.push({ value, label: value });
800
- }
801
- function makeText(options) {
802
- return options.reduce((pre, cur) => {
803
- if (!pre) {
804
- return cur.label;
805
- } else {
806
- return pre + "\n" + cur.label;
807
- }
808
- }, "");
809
- }
810
- function handleOk() {
811
- const options = text.value.split("\n").reduce((pre, cur) => {
812
- if (cur) {
813
- pre.push({ value: cur, label: cur });
814
- }
815
- return pre;
816
- }, []);
817
- props.options.splice(0, props.options.length);
818
- props.options.push(...options);
819
- visible.value = false;
820
- }
821
- function handleBlur(element) {
822
- element.value = element.label;
823
- }
824
- function handleRepeatOption(val) {
825
- repeatOption.value = [];
826
- const cache = {};
827
- val.forEach(({ value }) => {
828
- if (!cache[value]) {
829
- cache[value] = 1;
830
- } else {
831
- cache[value]++;
832
- if (cache[value] === 2) {
833
- repeatOption.value.push(value);
834
- }
835
- }
836
- });
837
- }
838
- function emitSetValue(val) {
839
- emits("setValue", val);
840
- }
841
- vue.watch(
842
- props.options,
843
- (val) => {
844
- handleRepeatOption(val);
845
- emitSetValue(val);
846
- },
847
- { deep: true }
848
- );
849
- return (_ctx, _cache) => {
850
- const _component_Delete = vue.resolveComponent("Delete");
851
- const _component_ARow = vue.resolveComponent("ARow");
852
- const _component_a_textarea = vue.resolveComponent("a-textarea");
853
- const _component_a_modal = vue.resolveComponent("a-modal");
854
- return vue.openBlock(), vue.createElementBlock("div", null, [
855
- vue.createVNode(vue.unref(Draggable__default["default"]), {
856
- tag: "transition-group",
857
- "component-data": {
858
- name: "flip-list"
859
- },
860
- animation: 200,
861
- list: __props.options,
862
- handle: `.${handleClass}`,
863
- "force-fallback": true
864
- }, {
865
- item: vue.withCtx(({ element, index }) => [
866
- vue.createElementVNode("div", _hoisted_1$d, [
867
- vue.createVNode(_component_ARow, { align: "middle" }, {
868
- default: vue.withCtx(() => [
869
- vue.createVNode(vue.unref(iconsVue.HolderOutlined), {
870
- class: vue.normalizeClass([handleClass])
871
- }, null, 8, ["class"]),
872
- vue.createVNode(vue.unref(antDesignVue.FormItemRest), null, {
873
- default: vue.withCtx(() => [
874
- vue.createVNode(vue.unref(antDesignVue.Input), {
875
- value: element.label,
876
- "onUpdate:value": ($event) => element.label = $event,
877
- class: vue.normalizeClass([
878
- "bm-handle-options__input",
879
- repeatOption.value.length && repeatOption.value.includes(element.value) ? "is-error" : ""
880
- ]),
881
- onBlur: ($event) => handleBlur(element)
882
- }, null, 8, ["value", "onUpdate:value", "class", "onBlur"])
883
- ]),
884
- _: 2
885
- }, 1024),
886
- vue.createVNode(_component_Delete, {
887
- class: "bm-handle-options__del-icon",
888
- onClick: ($event) => __props.options.splice(index, 1)
889
- }, null, 8, ["onClick"])
890
- ]),
891
- _: 2
892
- }, 1024),
893
- repeatOption.value.length && repeatOption.value.includes(element.value) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$b, " \u8BF7\u66F4\u6539\u91CD\u590D\u9009\u9879 ")) : vue.createCommentVNode("v-if", true)
894
- ])
895
- ]),
896
- _: 1
897
- }, 8, ["list", "handle"]),
898
- vue.createVNode(vue.unref(antDesignVue.Button), {
899
- style: { "margin-left": "24px", "margin-top": "8px" },
900
- onClick: edit
901
- }, {
902
- icon: vue.withCtx(() => [
903
- vue.createVNode(vue.unref(iconsVue.EditOutlined))
904
- ]),
905
- default: vue.withCtx(() => [
906
- _hoisted_3$a
907
- ]),
908
- _: 1
909
- }),
910
- vue.createVNode(vue.unref(antDesignVue.Button), {
911
- style: { "margin-left": "8px", "margin-top": "8px" },
912
- onClick: add
913
- }, {
914
- icon: vue.withCtx(() => [
915
- vue.createVNode(vue.unref(iconsVue.PlusOutlined))
916
- ]),
917
- default: vue.withCtx(() => [
918
- _hoisted_4$7
919
- ]),
920
- _: 1
921
- }),
922
- vue.createVNode(_component_a_modal, {
923
- visible: visible.value,
924
- "onUpdate:visible": _cache[1] || (_cache[1] = ($event) => visible.value = $event),
925
- title: "\u9009\u9879\u6279\u91CF\u7F16\u8F91",
926
- onOk: handleOk
927
- }, {
928
- default: vue.withCtx(() => [
929
- _hoisted_5$4,
930
- vue.createVNode(_component_a_textarea, {
931
- value: text.value,
932
- "onUpdate:value": _cache[0] || (_cache[0] = ($event) => text.value = $event),
933
- style: { "margin-top": "8px" },
934
- placeholder: "\u8BF7\u8F93\u5165",
935
- "auto-size": { minRows: 8 }
936
- }, null, 8, ["value"])
937
- ]),
938
- _: 1
939
- }, 8, ["visible"])
940
- ]);
941
- };
942
- }
943
- });
944
- var HandleOptionsCom = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__file", "handle-options.vue"]]);
945
-
946
- const label$d = '单选框';
947
- const ruleType$1 = {
948
- checkedValue: 'radio',
949
- unCheckedValue: 'select',
950
- };
951
- const fieldsMap$d = {
952
- 'title.title': 'title.title',
953
- 'props.placeholder': 'props.placeholder',
954
- options: 'options',
955
- type: 'type',
956
- 'config.fieldRatio': 'config.fieldRatio',
957
- 'effect.required': 'effect.required',
958
- };
959
- const name$d = 'radio';
960
- var radio = {
961
- icon: 'RadioIcon',
962
- name: name$d,
963
- label: label$d,
964
- rule() {
965
- return {
966
- type: ruleType$1.unCheckedValue,
967
- field: uniqueId__default["default"](),
968
- title: {
969
- title: label$d,
970
- style: {
971
- overflow: 'hidden',
972
- textOverflow: 'ellipsis',
973
- whiteSpace: 'nowrap',
974
- },
975
- },
976
- effect: {
977
- required: true,
978
- formRule: 'formRule',
979
- },
980
- options: [
981
- {
982
- value: '选项1',
983
- label: '选项1',
984
- },
985
- {
986
- value: '选项2',
987
- label: '选项2',
988
- },
989
- {
990
- value: '选项3',
991
- label: '选项3',
992
- },
993
- ],
994
- props: {
995
- placeholder: '请选择',
996
- },
997
- config: {
998
- propsFields: Object.values(fieldsMap$d),
999
- },
1000
- };
1001
- },
1002
- props(rule, parentRule) {
1003
- return [
1004
- {
1005
- type: 'input',
1006
- title: '标题',
1007
- field: fieldsMap$d['title.title'],
1008
- value: rule.title.title,
1009
- effect: {
1010
- required: '请输入标题',
1011
- },
1012
- props: {
1013
- placeholder: '请输入',
1014
- maxlength: 10,
1015
- },
1016
- },
1017
- {
1018
- type: 'input',
1019
- title: '提示文字',
1020
- field: fieldsMap$d['props.placeholder'],
1021
- props: {
1022
- placeholder: '请输入',
1023
- },
1024
- value: rule.props.placeholder,
1025
- },
1026
- {
1027
- type: 'HandleOptions',
1028
- component: HandleOptionsCom,
1029
- title: '选项',
1030
- field: fieldsMap$d['options'],
1031
- props: {
1032
- options: rule.options,
1033
- },
1034
- value: rule.options,
1035
- inject: true,
1036
- on: {
1037
- setValue(inject, options) {
1038
- const rule = inject.self;
1039
- const api = inject.api;
1040
- api.changeValue(rule.field, options);
1041
- api.emit('change', rule.field, rule.value, rule, api, true);
1042
- },
1043
- },
1044
- },
1045
- {
1046
- hidden: (parentRule === null || parentRule === void 0 ? void 0 : parentRule.type) === WidgetType.TableWidget,
1047
- type: 'switch',
1048
- title: '选项平铺',
1049
- field: fieldsMap$d['type'],
1050
- value: rule.type,
1051
- props: Object.assign({}, ruleType$1),
1052
- },
1053
- Object.assign({ field: fieldsMap$d['config.fieldRatio'] }, getFieldRatioRule(rule, parentRule)),
1054
- {
1055
- type: 'switch',
1056
- title: '是否必填',
1057
- field: fieldsMap$d['effect.required'],
1058
- value: rule.effect.required,
1059
- },
1060
- ];
1061
- },
1062
- parse(rule) {
1063
- return {
1064
- name: name$d,
1065
- field: rule.field,
1066
- type: rule.type,
1067
- title: {
1068
- title: rule.title.title,
1069
- },
1070
- props: {
1071
- placeholder: rule.props.placeholder,
1072
- },
1073
- options: rule.options,
1074
- config: {
1075
- fieldRatio: rule.config.fieldRatio,
1076
- },
1077
- effect: {
1078
- required: rule.effect.required,
1079
- },
1080
- };
1081
- },
1082
- };
1083
-
1084
- const label$c = '多选框';
1085
- const ruleType = {
1086
- checkedValue: 'checkbox',
1087
- unCheckedValue: 'select',
1088
- };
1089
- const fieldsMap$c = {
1090
- 'title.title': 'title.title',
1091
- 'props.placeholder': 'props.placeholder',
1092
- options: 'options',
1093
- type: 'type',
1094
- 'config.fieldRatio': 'config.fieldRatio',
1095
- 'effect.required': 'effect.required',
1096
- };
1097
- const name$c = 'checkbox';
1098
- var checkbox = {
1099
- icon: 'CheckboxIcon',
1100
- name: name$c,
1101
- label: label$c,
1102
- rule() {
1103
- return {
1104
- type: ruleType.unCheckedValue,
1105
- field: uniqueId__default["default"](),
1106
- title: {
1107
- title: label$c,
1108
- style: {
1109
- overflow: 'hidden',
1110
- textOverflow: 'ellipsis',
1111
- whiteSpace: 'nowrap',
1112
- },
1113
- },
1114
- effect: {
1115
- required: true,
1116
- formRule: 'formRule',
1117
- },
1118
- options: [
1119
- {
1120
- value: '选项1',
1121
- label: '选项1',
1122
- },
1123
- {
1124
- value: '选项2',
1125
- label: '选项2',
1126
- },
1127
- {
1128
- value: '选项3',
1129
- label: '选项3',
1130
- },
1131
- ],
1132
- props: {
1133
- placeholder: '请选择',
1134
- },
1135
- config: {
1136
- propsFields: Object.values(fieldsMap$c),
1137
- },
1138
- };
1139
- },
1140
- props(rule, parentRule) {
1141
- return [
1142
- {
1143
- type: 'input',
1144
- title: '标题',
1145
- field: fieldsMap$c['title.title'],
1146
- value: rule.title.title,
1147
- effect: {
1148
- required: '请输入标题',
1149
- },
1150
- props: {
1151
- placeholder: '请输入',
1152
- maxlength: 10,
1153
- },
1154
- },
1155
- {
1156
- type: 'input',
1157
- title: '提示文字',
1158
- field: fieldsMap$c['props.placeholder'],
1159
- props: {
1160
- placeholder: '请输入',
1161
- },
1162
- value: rule.props.placeholder,
1163
- },
1164
- {
1165
- type: 'HandleOptions',
1166
- component: HandleOptionsCom,
1167
- title: '选项',
1168
- field: fieldsMap$c['options'],
1169
- props: {
1170
- options: rule.options,
1171
- },
1172
- value: rule.options,
1173
- inject: true,
1174
- on: {
1175
- setValue(inject, options) {
1176
- const rule = inject.self;
1177
- const api = inject.api;
1178
- api.changeValue(rule.field, options);
1179
- api.emit('change', rule.field, rule.value, rule, api, true);
1180
- },
1181
- },
1182
- },
1183
- {
1184
- hidden: (parentRule === null || parentRule === void 0 ? void 0 : parentRule.type) === WidgetType.TableWidget,
1185
- type: 'switch',
1186
- title: '选项平铺',
1187
- field: fieldsMap$c['type'],
1188
- value: rule.type,
1189
- props: Object.assign({}, ruleType),
1190
- },
1191
- Object.assign({ field: fieldsMap$c['config.fieldRatio'] }, getFieldRatioRule(rule, parentRule)),
1192
- {
1193
- type: 'switch',
1194
- title: '是否必填',
1195
- field: fieldsMap$c['effect.required'],
1196
- value: rule.effect.required,
1197
- },
1198
- ];
1199
- },
1200
- parse(rule) {
1201
- return {
1202
- name: name$c,
1203
- field: rule.field,
1204
- type: rule.type,
1205
- title: {
1206
- title: rule.title.title,
1207
- },
1208
- props: {
1209
- placeholder: rule.props.placeholder,
1210
- },
1211
- options: rule.options,
1212
- config: {
1213
- fieldRatio: rule.config.fieldRatio,
1214
- },
1215
- effect: {
1216
- required: rule.effect.required,
1217
- },
1218
- };
1219
- },
1220
- };
1221
-
1222
- const _hoisted_1$c = { class: "bm-default-date" };
1223
- const _hoisted_2$a = /* @__PURE__ */ vue.createTextVNode(" \u5F53\u524D\u65F6\u95F4(\u5E74/\u6708/\u65E5) ");
1224
- const _hoisted_3$9 = /* @__PURE__ */ vue.createTextVNode(" \u83B7\u53D6\u7528\u6237\u5B9E\u9645\u586B\u5199\u65F6\u7684\u65F6\u95F4 ");
1225
- const _hoisted_4$6 = /* @__PURE__ */ vue.createTextVNode("\u81EA\u5B9A\u4E49");
1226
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
1227
- __name: "default-date",
1228
- props: ["defaultRadioValue", "defalueDateValue"],
1229
- emits: ["change"],
1230
- setup(__props, { emit: emits }) {
1231
- const props = __props;
1232
- const radioValue = vue.ref(props.defaultRadioValue);
1233
- const dateValue = vue.ref(props.defalueDateValue);
1234
- function emitChange(dateValue2) {
1235
- emits("change", radioValue.value, dateValue2);
1236
- }
1237
- function handleRadioChange(evt) {
1238
- radioValue.value = evt.target.value;
1239
- dateValue.value = "";
1240
- emitChange("");
1241
- }
1242
- function handleDateChange(date) {
1243
- dateValue.value = date;
1244
- emitChange(date);
1245
- }
1246
- return (_ctx, _cache) => {
1247
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [
1248
- vue.createVNode(vue.unref(antDesignVue.FormItemRest), null, {
1249
- default: vue.withCtx(() => [
1250
- vue.createVNode(vue.unref(antDesignVue.RadioGroup), {
1251
- value: radioValue.value,
1252
- onChange: handleRadioChange
1253
- }, {
1254
- default: vue.withCtx(() => [
1255
- vue.createVNode(vue.unref(antDesignVue.Radio), { value: 0 }, {
1256
- default: vue.withCtx(() => [
1257
- _hoisted_2$a,
1258
- vue.createVNode(vue.unref(antDesignVue.Tooltip), null, {
1259
- title: vue.withCtx(() => [
1260
- _hoisted_3$9
1261
- ]),
1262
- default: vue.withCtx(() => [
1263
- vue.createVNode(vue.unref(iconsVue.QuestionCircleOutlined), { style: { "color": "#babac1" } })
1264
- ]),
1265
- _: 1
1266
- })
1267
- ]),
1268
- _: 1
1269
- }),
1270
- vue.createVNode(vue.unref(antDesignVue.Radio), { value: 1 }, {
1271
- default: vue.withCtx(() => [
1272
- _hoisted_4$6
1273
- ]),
1274
- _: 1
1275
- })
1276
- ]),
1277
- _: 1
1278
- }, 8, ["value"]),
1279
- radioValue.value === 1 ? (vue.openBlock(), vue.createBlock(vue.unref(antDesignVue.DatePicker), {
1280
- key: 0,
1281
- style: { width: "100%", marginTop: "8px" },
1282
- value: dateValue.value,
1283
- format: "YYYY-MM-DD",
1284
- "value-format": "YYYY-MM-DD",
1285
- placeholder: "\u8BF7\u9009\u62E9",
1286
- onChange: handleDateChange
1287
- }, null, 8, ["value"])) : vue.createCommentVNode("v-if", true)
1288
- ]),
1289
- _: 1
1290
- })
1291
- ]);
1292
- };
1293
- }
1294
- });
1295
- var DefaultDate = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__file", "default-date.vue"]]);
1296
-
1297
- const label$b = '日期';
1298
- const fieldsMap$b = {
1299
- 'title.title': 'title.title',
1300
- 'props.format': 'props.format',
1301
- 'props.placeholder': 'props.placeholder',
1302
- value: 'value',
1303
- 'config.defaultValue': 'config.defaultValue',
1304
- 'config.fieldRatio': 'config.fieldRatio',
1305
- 'effect.required': 'effect.required',
1306
- };
1307
- const name$b = 'date';
1308
- var date = {
1309
- icon: 'Date',
1310
- name: name$b,
1311
- label: label$b,
1312
- rule() {
1313
- return {
1314
- type: 'datePicker',
1315
- field: uniqueId__default["default"](),
1316
- title: {
1317
- title: label$b,
1318
- style: {
1319
- overflow: 'hidden',
1320
- textOverflow: 'ellipsis',
1321
- whiteSpace: 'nowrap',
1322
- },
1323
- },
1324
- effect: {
1325
- required: true,
1326
- formRule: 'formRule',
1327
- },
1328
- props: {
1329
- placeholder: '请选择',
1330
- format: 'YYYY-MM',
1331
- },
1332
- config: {
1333
- propsFields: Object.values(fieldsMap$b),
1334
- defaultValue: 1,
1335
- },
1336
- style: {
1337
- width: '100%',
1338
- },
1339
- };
1340
- },
1341
- props(rule, parentRule) {
1342
- return [
1343
- {
1344
- type: 'input',
1345
- title: '标题',
1346
- field: fieldsMap$b['title.title'],
1347
- value: rule.title.title,
1348
- effect: {
1349
- required: '请输入标题',
1350
- },
1351
- props: {
1352
- placeholder: '请输入',
1353
- maxlength: 10,
1354
- },
1355
- },
1356
- {
1357
- type: 'select',
1358
- title: '日期类型',
1359
- field: fieldsMap$b['props.format'],
1360
- effect: {
1361
- required: '请选择日期类型',
1362
- },
1363
- props: {
1364
- placeholder: '请选择',
1365
- },
1366
- options: [
1367
- {
1368
- value: 'YYYY-MM',
1369
- label: '年-月',
1370
- },
1371
- {
1372
- value: 'YYYY-MM-DD',
1373
- label: '年-月-日',
1374
- },
1375
- {
1376
- value: 'YYYY-MM-DD HH:mm',
1377
- label: '年-月-日 时:分',
1378
- },
1379
- ],
1380
- value: rule.props.format,
1381
- },
1382
- {
1383
- type: 'input',
1384
- title: '提示文字',
1385
- field: fieldsMap$b['props.placeholder'],
1386
- props: {
1387
- placeholder: '请输入',
1388
- },
1389
- value: rule.props.placeholder,
1390
- },
1391
- {
1392
- type: 'DefaultDate',
1393
- component: DefaultDate,
1394
- title: '默认值',
1395
- field: fieldsMap$b['config.defaultValue'],
1396
- props: {
1397
- defaultRadioValue: rule.config.defaultValue,
1398
- defalueDateValue: rule.value,
1399
- },
1400
- inject: true,
1401
- on: {
1402
- change({ api, self }, radioValue, dateValue) {
1403
- self.props.defaultRadioValue = radioValue;
1404
- self.props.defalueDateValue = dateValue;
1405
- api.emit('change', 'config.defaultValue', radioValue, self, api, true);
1406
- api.emit('change', 'value', dateValue, self, api, true);
1407
- },
1408
- },
1409
- },
1410
- Object.assign({ field: fieldsMap$b['config.fieldRatio'] }, getFieldRatioRule(rule, parentRule)),
1411
- {
1412
- type: 'switch',
1413
- title: '是否必填',
1414
- field: fieldsMap$b['effect.required'],
1415
- value: rule.effect.required,
1416
- },
1417
- ];
1418
- },
1419
- parse(rule) {
1420
- return {
1421
- name: name$b,
1422
- field: rule.field,
1423
- title: {
1424
- title: rule.title.title,
1425
- },
1426
- props: {
1427
- format: rule.props.format,
1428
- placeholder: rule.props.placeholder,
1429
- },
1430
- value: rule.value,
1431
- config: {
1432
- defaultValue: rule.config.defaultValue,
1433
- fieldRatio: rule.config.fieldRatio,
1434
- },
1435
- effect: {
1436
- required: rule.effect.required,
1437
- },
1438
- };
1439
- },
1440
- };
1441
-
1442
- const label$a = '日期区间';
1443
- const fieldsMap$a = {
1444
- 'title.title': 'title.title',
1445
- 'props.format': 'props.format',
1446
- 'props.placeholder.0': 'props.placeholder.0',
1447
- 'props.placeholder.1': 'props.placeholder.1',
1448
- 'config.fieldRatio': 'config.fieldRatio',
1449
- 'effect.required': 'effect.required',
1450
- };
1451
- const name$a = 'dateRange';
1452
- var dateRange = {
1453
- icon: 'DateRange',
1454
- name: name$a,
1455
- label: label$a,
1456
- rule() {
1457
- return {
1458
- type: 'datePicker',
1459
- field: uniqueId__default["default"](),
1460
- title: {
1461
- title: label$a,
1462
- style: {
1463
- overflow: 'hidden',
1464
- textOverflow: 'ellipsis',
1465
- whiteSpace: 'nowrap',
1466
- },
1467
- },
1468
- effect: {
1469
- required: true,
1470
- formRule: 'formRule',
1471
- },
1472
- props: {
1473
- range: true,
1474
- placeholder: ['开始日期', '结束日期'],
1475
- format: 'YYYY-MM',
1476
- separator: '~',
1477
- },
1478
- config: {
1479
- propsFields: Object.values(fieldsMap$a),
1480
- defaultValue: 1,
1481
- },
1482
- style: {
1483
- width: '100%',
1484
- },
1485
- };
1486
- },
1487
- props(rule, parentRule) {
1488
- return [
1489
- {
1490
- type: 'input',
1491
- title: '标题',
1492
- field: fieldsMap$a['title.title'],
1493
- value: rule.title.title,
1494
- effect: {
1495
- required: '请输入标题',
1496
- },
1497
- props: {
1498
- placeholder: '请输入',
1499
- maxlength: 10,
1500
- },
1501
- },
1502
- {
1503
- type: 'select',
1504
- title: '日期类型',
1505
- field: fieldsMap$a['props.format'],
1506
- effect: {
1507
- required: '请选择日期类型',
1508
- },
1509
- props: {
1510
- placeholder: '请选择',
1511
- },
1512
- options: [
1513
- {
1514
- value: 'YYYY-MM',
1515
- label: '年-月',
1516
- },
1517
- {
1518
- value: 'YYYY-MM-DD',
1519
- label: '年-月-日',
1520
- },
1521
- {
1522
- value: 'YYYY-MM-DD HH:mm',
1523
- label: '年-月-日 时:分',
1524
- },
1525
- ],
1526
- value: rule.props.format,
1527
- },
1528
- {
1529
- type: 'input',
1530
- title: '提示文字1',
1531
- field: fieldsMap$a['props.placeholder.0'],
1532
- props: {
1533
- placeholder: '请输入',
1534
- },
1535
- value: rule.props.placeholder[0],
1536
- },
1537
- {
1538
- type: 'input',
1539
- title: '提示文字2',
1540
- field: fieldsMap$a['props.placeholder.1'],
1541
- props: {
1542
- placeholder: '请输入',
1543
- },
1544
- value: rule.props.placeholder[1],
1545
- },
1546
- Object.assign({ field: fieldsMap$a['config.fieldRatio'] }, getFieldRatioRule(rule, parentRule)),
1547
- {
1548
- type: 'switch',
1549
- title: '是否必填',
1550
- field: fieldsMap$a['effect.required'],
1551
- value: rule.effect.required,
1552
- },
1553
- ];
1554
- },
1555
- parse(rule) {
1556
- return {
1557
- name: name$a,
1558
- field: rule.field,
1559
- title: {
1560
- title: rule.title.title,
1561
- },
1562
- props: {
1563
- format: rule.props.format,
1564
- placeholder: rule.props.placeholder,
1565
- },
1566
- config: {
1567
- fieldRatio: rule.config.fieldRatio,
1568
- },
1569
- effect: {
1570
- required: rule.effect.required,
1571
- },
1572
- };
1573
- },
1574
- };
1575
-
1576
- const label$9 = '说明文字';
1577
- const fieldsMap$9 = {
1578
- value: 'value',
1579
- 'style.color': 'style.color',
1580
- };
1581
- const name$9 = 'instruction';
1582
- var Colors;
1583
- (function (Colors) {
1584
- Colors["Black"] = "#242633";
1585
- Colors["Blue"] = "#2F4EED";
1586
- })(Colors || (Colors = {}));
1587
- var instruction = {
1588
- icon: 'Instruction',
1589
- name: name$9,
1590
- label: label$9,
1591
- rule() {
1592
- return {
1593
- field: uniqueId__default["default"](),
1594
- config: {
1595
- propsFields: Object.values(fieldsMap$9),
1596
- },
1597
- style: {
1598
- color: Colors.Black,
1599
- },
1600
- value: '请输入说明文字',
1601
- };
1602
- },
1603
- props(rule, parentRule) {
1604
- return [
1605
- {
1606
- type: 'input',
1607
- props: {
1608
- type: 'textarea',
1609
- autoSize: {
1610
- minRows: 5,
1611
- },
1612
- },
1613
- title: label$9,
1614
- field: fieldsMap$9.value,
1615
- value: rule.value,
1616
- prefix: {
1617
- type: 'TextColor',
1618
- props: {
1619
- rule,
1620
- },
1621
- },
1622
- },
1623
- ];
1624
- },
1625
- parse(rule) {
1626
- return {
1627
- name: name$9,
1628
- field: rule.field,
1629
- value: rule.value,
1630
- style: {
1631
- color: rule.style.color,
1632
- },
1633
- };
1634
- },
1635
- };
1636
-
1637
- const label$8 = '图片';
1638
- const fieldsMap$8 = {
1639
- 'title.title': 'title.title',
1640
- 'props.extraProps.maxCount': 'props.extraProps.maxCount',
1641
- 'effect.required': 'effect.required',
1642
- };
1643
- const name$8 = 'picture';
1644
- var picture = {
1645
- icon: 'Picture',
1646
- name: name$8,
1647
- label: label$8,
1648
- rule() {
1649
- return {
1650
- type: 'UploadPicture',
1651
- component: components.BmUpload,
1652
- field: uniqueId__default["default"](),
1653
- title: {
1654
- title: label$8,
1655
- style: {
1656
- overflow: 'hidden',
1657
- textOverflow: 'ellipsis',
1658
- whiteSpace: 'nowrap',
1659
- },
1660
- },
1661
- effect: {
1662
- required: true,
1663
- formRule: 'formRule',
1664
- },
1665
- props: {
1666
- uploadProps: {
1667
- listType: 'picture-card',
1668
- text: '请选择',
1669
- },
1670
- extraProps: {
1671
- maxCount: 9,
1672
- },
1673
- },
1674
- config: {
1675
- propsFields: Object.values(fieldsMap$8),
1676
- },
1677
- };
1678
- },
1679
- props(rule, parentRule) {
1680
- return [
1681
- {
1682
- type: 'input',
1683
- title: '标题',
1684
- field: fieldsMap$8['title.title'],
1685
- value: rule.title.title,
1686
- effect: {
1687
- required: '请输入标题',
1688
- },
1689
- props: {
1690
- placeholder: '请输入',
1691
- maxlength: 10,
1692
- },
1693
- },
1694
- {
1695
- type: 'radio',
1696
- field: 'props.extraProps.maxCount',
1697
- title: '图片上传限制',
1698
- info: '单张图片的大小需在10M以内',
1699
- options: [
1700
- {
1701
- label: '最多可上传9张',
1702
- value: 9,
1703
- },
1704
- {
1705
- label: '仅允许上传1张图片',
1706
- value: 1,
1707
- },
1708
- ],
1709
- value: rule.props.extraProps.maxCount,
1710
- className: 'form-designer-props-radio-label',
1711
- inject: true,
1712
- on: {
1713
- change({ api, self }, { target }) {
1714
- const value = target.value;
1715
- self.value = value;
1716
- api.emit('change', self.field, value, self, api, true);
1717
- },
1718
- },
1719
- },
1720
- {
1721
- type: 'switch',
1722
- title: '是否必填',
1723
- field: fieldsMap$8['effect.required'],
1724
- value: rule.effect.required,
1725
- },
1726
- ];
1727
- },
1728
- parse(rule) {
1729
- return {
1730
- name: name$8,
1731
- field: rule.field,
1732
- title: {
1733
- title: rule.title.title,
1734
- },
1735
- props: {
1736
- extraProps: {
1737
- maxCount: rule.props.extraProps.maxCount,
1738
- },
1739
- },
1740
- effect: {
1741
- required: rule.effect.required,
1742
- },
1743
- };
1744
- },
1745
- };
1746
-
1747
- const _hoisted_1$b = { class: "bm-widget-table-wrap" };
1748
- const _hoisted_2$9 = { class: "bm-widget-table-top-bar" };
1749
- const _hoisted_3$8 = /* @__PURE__ */ vue.createTextVNode(" \u65B0\u589E ");
1750
- const _hoisted_4$5 = /* @__PURE__ */ vue.createTextVNode(" \u6279\u91CF\u5220\u9664 ");
1751
- const _hoisted_5$3 = /* @__PURE__ */ vue.createTextVNode(" \u6279\u91CF\u5BFC\u5165 ");
1752
- const _hoisted_6$3 = /* @__PURE__ */ vue.createTextVNode(" \u4E0B\u8F7D\u5BFC\u5165\u6A21\u677F ");
1753
- const _hoisted_7$2 = { class: "bm-widget-table-outer" };
1754
- const _hoisted_8$2 = { class: "bm-widget-table" };
1755
- const _hoisted_9$1 = {
1756
- key: 0,
1757
- class: "bm-widget-table__virtual"
1758
- };
1759
- const _hoisted_10 = /* @__PURE__ */ vue.createElementVNode("div", { class: "bm-widget-table__virtual__head" }, null, -1);
1760
- const _hoisted_11 = /* @__PURE__ */ vue.createElementVNode("div", { class: "bm-widget-table__virtual__content" }, null, -1);
1761
- const _hoisted_12 = [
1762
- _hoisted_10,
1763
- _hoisted_11
1764
- ];
1765
- const _hoisted_13 = {
1766
- key: 1,
1767
- class: "bm-widget-table__tip"
1768
- };
1769
- const _hoisted_14 = {
1770
- key: 0,
1771
- class: "bm-widget-table__checkbox"
1772
- };
1773
- const _hoisted_15 = { class: "bm-widget-table__checkbox__head" };
1774
- const _hoisted_16 = { class: "bm-widget-table__checkbox__content" };
1775
- const _hoisted_17 = { class: "bm-widget-table__operateColumn" };
1776
- const _hoisted_18 = /* @__PURE__ */ vue.createElementVNode("div", { class: "bm-widget-table__operateColumn__head" }, "\u64CD\u4F5C", -1);
1777
- const _hoisted_19 = { class: "bm-widget-table__operateColumn__content" };
1778
- const _hoisted_20 = /* @__PURE__ */ vue.createElementVNode("a", null, "\u590D\u5236", -1);
1779
- const _hoisted_21 = /* @__PURE__ */ vue.createElementVNode("span", null, null, -1);
1780
- const _hoisted_22 = /* @__PURE__ */ vue.createElementVNode("a", null, "\u5220\u9664", -1);
1781
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
1782
- __name: "widget-table",
1783
- props: ["formCreateInject", "activeRule"],
1784
- emits: [
1785
- "add",
1786
- "mouseenter",
1787
- "mouseleave",
1788
- "set-active-rule",
1789
- "copy",
1790
- "delete"
1791
- ],
1792
- setup(__props, { emit: emits }) {
1793
- const props = __props;
1794
- const rule = vue.computed(() => props.formCreateInject.rule);
1795
- const childRules = vue.computed(() => rule.value.config.childRules);
1796
- const showDelete = vue.computed(() => showFeature("delete"));
1797
- const showImport = vue.computed(() => showFeature("import"));
1798
- const showCopy = vue.computed(() => showFeature("copy"));
1799
- function showFeature(featureId) {
1800
- return rule.value.config.tableAdvancedFeatures.includes(featureId);
1801
- }
1802
- function handleAdd({ newIndex }) {
1803
- emits("add", childRules.value[newIndex]);
1804
- }
1805
- function handleMouseenter() {
1806
- emits("mouseenter");
1807
- }
1808
- function handleMouseleave() {
1809
- emits("mouseleave");
1810
- }
1811
- function emitSetActiveRuleEvt(rule2) {
1812
- emits("set-active-rule", rule2);
1813
- }
1814
- function handleClick(element) {
1815
- emitSetActiveRuleEvt(element);
1816
- }
1817
- function handleUpdate({ newIndex }) {
1818
- emitSetActiveRuleEvt(childRules.value[newIndex]);
1819
- }
1820
- function handleCopy(rule2) {
1821
- emits("copy", rule2);
1822
- }
1823
- function handleDelete(rule2) {
1824
- emits("delete", rule2);
1825
- }
1826
- return (_ctx, _cache) => {
1827
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
1828
- vue.createElementVNode("div", _hoisted_2$9, [
1829
- vue.createVNode(vue.unref(antDesignVue.Button), { type: "primary" }, {
1830
- icon: vue.withCtx(() => [
1831
- vue.createVNode(vue.unref(iconsVue.PlusOutlined))
1832
- ]),
1833
- default: vue.withCtx(() => [
1834
- _hoisted_3$8
1835
- ]),
1836
- _: 1
1837
- }),
1838
- vue.unref(showDelete) ? (vue.openBlock(), vue.createBlock(vue.unref(antDesignVue.Button), { key: 0 }, {
1839
- default: vue.withCtx(() => [
1840
- _hoisted_4$5
1841
- ]),
1842
- _: 1
1843
- })) : vue.createCommentVNode("v-if", true),
1844
- vue.unref(showImport) ? (vue.openBlock(), vue.createBlock(vue.unref(antDesignVue.Button), { key: 1 }, {
1845
- default: vue.withCtx(() => [
1846
- _hoisted_5$3
1847
- ]),
1848
- _: 1
1849
- })) : vue.createCommentVNode("v-if", true),
1850
- vue.unref(showImport) ? (vue.openBlock(), vue.createBlock(vue.unref(antDesignVue.Button), { key: 2 }, {
1851
- default: vue.withCtx(() => [
1852
- _hoisted_6$3
1853
- ]),
1854
- _: 1
1855
- })) : vue.createCommentVNode("v-if", true)
1856
- ]),
1857
- vue.createElementVNode("div", _hoisted_7$2, [
1858
- vue.createElementVNode("div", {
1859
- class: "bm-widget-table-inner",
1860
- style: vue.normalizeStyle({
1861
- paddingLeft: vue.unref(showDelete) ? "32px" : 0,
1862
- paddingRight: vue.unref(showCopy) ? "81px" : "60px"
1863
- })
1864
- }, [
1865
- vue.createElementVNode("div", _hoisted_8$2, [
1866
- vue.unref(childRules).length ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_9$1, _hoisted_12)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_13, "\u53EF\u62D6\u5165\u591A\u4E2A\u63A7\u4EF6")),
1867
- vue.createVNode(vue.unref(Draggable__default["default"]), {
1868
- "component-data": {
1869
- field: vue.unref(rule).field,
1870
- type: vue.unref(WidgetType).TableWidget
1871
- },
1872
- class: "bm-widget-table__drag-content",
1873
- group: {
1874
- name: "tableWidget",
1875
- pull: true,
1876
- put: ["widget", "tableWidget"]
1877
- },
1878
- list: vue.unref(childRules),
1879
- "ghost-class": vue.unref(childRules).length ? "table-drag-ghost" : "table-drag-ghost__is-empty",
1880
- "item-key": "field",
1881
- direction: "vertical",
1882
- "force-fallback": true,
1883
- "scroll-sensitivity": 100,
1884
- delay: 50,
1885
- onAdd: handleAdd,
1886
- onUpdate: handleUpdate
1887
- }, {
1888
- item: vue.withCtx(({ element }) => [
1889
- vue.createElementVNode("div", {
1890
- class: "bm-widget-table__drag-item",
1891
- style: vue.normalizeStyle({ width: element.config.fieldRatio })
1892
- }, [
1893
- vue.createVNode(DragTool, {
1894
- rule: element,
1895
- "active-rule": __props.activeRule,
1896
- "parent-rule": __props.formCreateInject.rule,
1897
- onMouseenter: handleMouseenter,
1898
- onMouseleave: handleMouseleave,
1899
- onClick: vue.withModifiers(($event) => handleClick(element), ["stop"]),
1900
- onCopy: handleCopy,
1901
- onDelete: handleDelete
1902
- }, null, 8, ["rule", "active-rule", "parent-rule", "onClick"]),
1903
- vue.createVNode(DragPlaceholder)
1904
- ], 4)
1905
- ]),
1906
- _: 1
1907
- }, 8, ["component-data", "list", "ghost-class"])
1908
- ])
1909
- ], 4),
1910
- vue.unref(showDelete) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_14, [
1911
- vue.createElementVNode("div", _hoisted_15, [
1912
- vue.createVNode(vue.unref(antDesignVue.FormItemRest), null, {
1913
- default: vue.withCtx(() => [
1914
- vue.createVNode(vue.unref(antDesignVue.Checkbox))
1915
- ]),
1916
- _: 1
1917
- })
1918
- ]),
1919
- vue.createElementVNode("div", _hoisted_16, [
1920
- vue.createVNode(vue.unref(antDesignVue.FormItemRest), null, {
1921
- default: vue.withCtx(() => [
1922
- vue.createVNode(vue.unref(antDesignVue.Checkbox))
1923
- ]),
1924
- _: 1
1925
- })
1926
- ])
1927
- ])) : vue.createCommentVNode("v-if", true),
1928
- vue.createElementVNode("div", _hoisted_17, [
1929
- _hoisted_18,
1930
- vue.createElementVNode("div", _hoisted_19, [
1931
- vue.unref(showCopy) ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
1932
- _hoisted_20,
1933
- _hoisted_21
1934
- ], 64)) : vue.createCommentVNode("v-if", true),
1935
- _hoisted_22
1936
- ])
1937
- ])
1938
- ])
1939
- ]);
1940
- };
1941
- }
1942
- });
1943
- var WidgetTable = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__file", "widget-table.vue"]]);
1944
-
1945
- const label$7 = '表格';
1946
- const fieldsMap$7 = {
1947
- 'title.title': 'title.title',
1948
- 'config.childRules': 'config.childRules',
1949
- 'config.tableAdvancedFeatures': 'config.tableAdvancedFeatures',
1950
- };
1951
- const name$7 = 'table';
1952
- var table = {
1953
- icon: 'Table',
1954
- name: name$7,
1955
- label: label$7,
1956
- rule() {
1957
- const childRules = [];
1958
- return {
1959
- type: WidgetType.TableWidget,
1960
- component: WidgetTable,
1961
- field: uniqueId__default["default"](),
1962
- title: {
1963
- type: 'TableHeadCount',
1964
- title: label$7,
1965
- props: {
1966
- childRules,
1967
- },
1968
- style: {
1969
- overflow: 'hidden',
1970
- textOverflow: 'ellipsis',
1971
- whiteSpace: 'nowrap',
1972
- },
1973
- },
1974
- effect: {
1975
- formRule: 'formRule',
1976
- },
1977
- config: {
1978
- childRules,
1979
- tableAdvancedFeatures: ['copy', 'delete', 'import'],
1980
- propsFields: Object.values(fieldsMap$7),
1981
- },
1982
- emit: [
1983
- 'mouseenter',
1984
- 'mouseleave',
1985
- 'set-active-rule',
1986
- 'copy',
1987
- 'delete',
1988
- 'add',
1989
- ],
1990
- emitPrefix: 'nest',
1991
- };
1992
- },
1993
- props(rule) {
1994
- return [
1995
- {
1996
- type: 'input',
1997
- title: '标题',
1998
- field: fieldsMap$7['title.title'],
1999
- value: rule.title.title,
2000
- effect: {
2001
- required: '请输入标题',
2002
- },
2003
- props: {
2004
- placeholder: '请输入',
2005
- maxlength: 10,
2006
- },
2007
- },
2008
- {
2009
- type: 'TableColumn',
2010
- title: '子字段设置',
2011
- field: fieldsMap$7['config.childRules'],
2012
- effect: {
2013
- required: true,
2014
- },
2015
- value: rule.config.childRules,
2016
- },
2017
- {
2018
- type: 'checkbox',
2019
- title: '表格的高级操作',
2020
- field: fieldsMap$7['config.tableAdvancedFeatures'],
2021
- value: rule.config.tableAdvancedFeatures,
2022
- options: [
2023
- {
2024
- value: 'copy',
2025
- label: '复制行',
2026
- },
2027
- {
2028
- value: 'delete',
2029
- label: '批量删除',
2030
- },
2031
- {
2032
- value: 'import',
2033
- label: '批量导入',
2034
- },
2035
- ],
2036
- className: 'bfd-sider-right__form__table-checkbox',
2037
- },
2038
- ];
2039
- },
2040
- parse(rule) {
2041
- return {
2042
- name: name$7,
2043
- field: rule.field,
2044
- title: {
2045
- title: rule.title.title,
2046
- },
2047
- config: {
2048
- tableAdvancedFeatures: rule.config.tableAdvancedFeatures,
2049
- },
2050
- };
2051
- },
2052
- };
2053
-
2054
- const label$6 = '附件';
2055
- const fieldsMap$6 = {
2056
- 'title.title': 'title.title',
2057
- 'effect.required': 'effect.required',
2058
- };
2059
- const name$6 = 'file';
2060
- var file = {
2061
- icon: 'File',
2062
- name: name$6,
2063
- label: label$6,
2064
- rule() {
2065
- return {
2066
- type: WidgetType.UploadFile,
2067
- component: components.BmUpload,
2068
- field: uniqueId__default["default"](),
2069
- title: {
2070
- title: label$6,
2071
- style: {
2072
- overflow: 'hidden',
2073
- textOverflow: 'ellipsis',
2074
- whiteSpace: 'nowrap',
2075
- },
2076
- },
2077
- effect: {
2078
- required: true,
2079
- formRule: 'formRule',
2080
- },
2081
- config: {
2082
- propsFields: Object.values(fieldsMap$6),
2083
- },
2084
- };
2085
- },
2086
- props(rule, parentRule) {
2087
- return [
2088
- {
2089
- type: 'input',
2090
- title: '标题',
2091
- field: fieldsMap$6['title.title'],
2092
- value: rule.title.title,
2093
- effect: {
2094
- required: '请输入标题',
2095
- },
2096
- props: {
2097
- placeholder: '请输入',
2098
- maxlength: 10,
2099
- },
2100
- },
2101
- {
2102
- type: 'switch',
2103
- title: '是否必填',
2104
- field: fieldsMap$6['effect.required'],
2105
- value: rule.effect.required,
2106
- },
2107
- ];
2108
- },
2109
- parse(rule) {
2110
- return {
2111
- name: name$6,
2112
- field: rule.field,
2113
- title: {
2114
- title: rule.title.title,
2115
- },
2116
- effect: {
2117
- required: rule.effect.required,
2118
- },
2119
- };
2120
- },
2121
- };
2122
-
2123
- const label$5 = '员工';
2124
- const fieldsMap$5 = {
2125
- 'title.title': 'title.title',
2126
- 'props.placeholder': 'props.placeholder',
2127
- 'props.limit': 'props.limit',
2128
- 'config.fieldRatio': 'config.fieldRatio',
2129
- 'effect.required': 'effect.required',
2130
- };
2131
- const name$5 = 'people';
2132
- var people = {
2133
- icon: 'People',
2134
- name: name$5,
2135
- label: label$5,
2136
- rule() {
2137
- return {
2138
- type: 'select',
2139
- field: uniqueId__default["default"](),
2140
- title: {
2141
- title: label$5,
2142
- style: {
2143
- overflow: 'hidden',
2144
- textOverflow: 'ellipsis',
2145
- whiteSpace: 'nowrap',
2146
- },
2147
- },
2148
- effect: {
2149
- required: true,
2150
- formRule: 'formRule',
2151
- },
2152
- props: {
2153
- limit: 0,
2154
- placeholder: '请选择',
2155
- },
2156
- config: {
2157
- propsFields: Object.values(fieldsMap$5),
2158
- },
2159
- };
2160
- },
2161
- props(rule, parentRule) {
2162
- return [
2163
- {
2164
- type: 'input',
2165
- title: '标题',
2166
- field: fieldsMap$5['title.title'],
2167
- value: rule.title.title,
2168
- effect: {
2169
- required: '请输入标题',
2170
- },
2171
- props: {
2172
- placeholder: '请输入',
2173
- maxlength: 10,
2174
- },
2175
- },
2176
- {
2177
- type: 'input',
2178
- title: '提示文字',
2179
- field: fieldsMap$5['props.placeholder'],
2180
- props: {
2181
- placeholder: '请输入',
2182
- },
2183
- value: rule.props.placeholder,
2184
- },
2185
- {
2186
- type: 'radio',
2187
- title: '选项',
2188
- field: fieldsMap$5['props.limit'],
2189
- options: [
2190
- {
2191
- value: 1,
2192
- label: '只能选择一人',
2193
- },
2194
- {
2195
- value: 0,
2196
- label: '可同时选择多人',
2197
- },
2198
- ],
2199
- value: rule.props.limit,
2200
- effect: {
2201
- required: true,
2202
- },
2203
- inject: true,
2204
- on: {
2205
- change({ api, self }, { target }) {
2206
- const value = target.value;
2207
- self.value = value;
2208
- api.emit('change', self.field, value, self, api, true);
2209
- },
2210
- },
2211
- className: 'form-designer-props-radio-label',
2212
- },
2213
- Object.assign({ field: fieldsMap$5['config.fieldRatio'] }, getFieldRatioRule(rule, parentRule)),
2214
- {
2215
- type: 'switch',
2216
- title: '是否必填',
2217
- info: '勾选后可作为流程条件',
2218
- field: fieldsMap$5['effect.required'],
2219
- value: rule.effect.required,
2220
- },
2221
- ];
2222
- },
2223
- parse(rule) {
2224
- return {
2225
- name: name$5,
2226
- field: rule.field,
2227
- title: {
2228
- title: rule.title.title,
2229
- },
2230
- props: {
2231
- placeholder: rule.props.placeholder,
2232
- limit: rule.props.limit,
2233
- },
2234
- config: {
2235
- fieldRatio: rule.config.fieldRatio,
2236
- },
2237
- effect: {
2238
- required: rule.effect.required,
2239
- },
2240
- };
2241
- },
2242
- };
2243
-
2244
- const label$4 = '部门';
2245
- const fieldsMap$4 = {
2246
- 'title.title': 'title.title',
2247
- 'props.placeholder': 'props.placeholder',
2248
- 'props.limit': 'props.limit',
2249
- 'config.fieldRatio': 'config.fieldRatio',
2250
- 'effect.required': 'effect.required',
2251
- };
2252
- const name$4 = 'department';
2253
- var department = {
2254
- icon: 'Department',
2255
- name: name$4,
2256
- label: label$4,
2257
- rule() {
2258
- return {
2259
- type: 'select',
2260
- field: uniqueId__default["default"](),
2261
- title: {
2262
- title: label$4,
2263
- style: {
2264
- overflow: 'hidden',
2265
- textOverflow: 'ellipsis',
2266
- whiteSpace: 'nowrap',
2267
- },
2268
- },
2269
- effect: {
2270
- required: true,
2271
- formRule: 'formRule',
2272
- },
2273
- props: {
2274
- limit: 0,
2275
- placeholder: '请选择',
2276
- },
2277
- config: {
2278
- propsFields: Object.values(fieldsMap$4),
2279
- },
2280
- };
2281
- },
2282
- props(rule, parentRule) {
2283
- return [
2284
- {
2285
- type: 'input',
2286
- title: '标题',
2287
- field: fieldsMap$4['title.title'],
2288
- value: rule.title.title,
2289
- effect: {
2290
- required: '请输入标题',
2291
- },
2292
- props: {
2293
- placeholder: '请输入',
2294
- maxlength: 10,
2295
- },
2296
- },
2297
- {
2298
- type: 'input',
2299
- title: '提示文字',
2300
- field: fieldsMap$4['props.placeholder'],
2301
- props: {
2302
- placeholder: '请输入',
2303
- },
2304
- value: rule.props.placeholder,
2305
- },
2306
- {
2307
- type: 'radio',
2308
- title: '选项',
2309
- field: fieldsMap$4['props.limit'],
2310
- options: [
2311
- {
2312
- value: 1,
2313
- label: '只能选择一部门',
2314
- },
2315
- {
2316
- value: 0,
2317
- label: '可同时选择多个部门',
2318
- },
2319
- ],
2320
- value: rule.props.limit,
2321
- effect: {
2322
- required: true,
2323
- },
2324
- inject: true,
2325
- on: {
2326
- change({ api, self }, { target }) {
2327
- const value = target.value;
2328
- self.value = value;
2329
- api.emit('change', self.field, value, self, api, true);
2330
- },
2331
- },
2332
- className: 'form-designer-props-radio-label',
2333
- },
2334
- Object.assign({ field: fieldsMap$4['config.fieldRatio'] }, getFieldRatioRule(rule, parentRule)),
2335
- {
2336
- type: 'switch',
2337
- title: '是否必填',
2338
- info: '勾选后可作为流程条件',
2339
- field: fieldsMap$4['effect.required'],
2340
- value: rule.effect.required,
2341
- },
2342
- ];
2343
- },
2344
- parse(rule) {
2345
- return {
2346
- name: name$4,
2347
- field: rule.field,
2348
- title: {
2349
- title: rule.title.title,
2350
- },
2351
- props: {
2352
- placeholder: rule.props.placeholder,
2353
- limit: rule.props.limit,
2354
- },
2355
- config: {
2356
- fieldRatio: rule.config.fieldRatio,
2357
- },
2358
- effect: {
2359
- required: rule.effect.required,
2360
- },
2361
- };
2362
- },
2363
- };
2364
-
2365
- const _hoisted_1$a = { style: { "margin-top": "16px", "line-height": "32px" } };
2366
- const _hoisted_2$8 = /* @__PURE__ */ vue.createTextVNode(" \u660E\u7EC6\u5217\u8868 ");
2367
- const _hoisted_3$7 = { style: { "float": "right" } };
2368
- const _hoisted_4$4 = /* @__PURE__ */ vue.createTextVNode(" \u4E0B\u8F7D\u5BFC\u5165\u6A21\u677F ");
2369
- const _hoisted_5$2 = /* @__PURE__ */ vue.createTextVNode(" \u5BFC\u5165\u660E\u7EC6 ");
2370
- const _hoisted_6$2 = /* @__PURE__ */ vue.createTextVNode(" \u6279\u91CF\u5220\u9664 ");
2371
- const _hoisted_7$1 = /* @__PURE__ */ vue.createTextVNode(" \u65B0\u589E ");
2372
- const _hoisted_8$1 = /* @__PURE__ */ vue.createElementVNode("div", { class: "bm-material-temp__table-tip" }, "\u7CFB\u7EDF\u81EA\u52A8\u83B7\u53D6\u8868\u683C\u5B57\u6BB5", -1);
2373
- const _hoisted_9 = { class: "bm-material-temp__add" };
2374
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
2375
- __name: "widget-material-temp",
2376
- props: ["formCreateInject"],
2377
- setup(__props) {
2378
- const props = __props;
2379
- const panes = [
2380
- {
2381
- key: "\u7D20\u67501",
2382
- title: "\u7D20\u67501"
2383
- }
2384
- ];
2385
- let activeKey = "\u7D20\u67501";
2386
- const option = {
2387
- form: {
2388
- layout: "vertical"
2389
- },
2390
- submitBtn: {
2391
- show: false
2392
- },
2393
- row: {
2394
- gutter: [24, 24]
2395
- },
2396
- col: {
2397
- span: 12
2398
- }
2399
- };
2400
- const uploadPicField = "uploadPicture";
2401
- const rules = vue.ref([
2402
- {
2403
- type: "button",
2404
- field: "materialTemp",
2405
- title: "\u7D20\u6750\u6A21\u677F",
2406
- effect: {
2407
- required: true
2408
- },
2409
- children: [
2410
- {
2411
- type: "PlusOutlined",
2412
- component: iconsVue.PlusOutlined
2413
- },
2414
- "\u9009\u62E9\u6A21\u677F"
2415
- ]
2416
- },
2417
- {
2418
- type: "span",
2419
- field: "materialType",
2420
- title: "\u7D20\u6750\u7C7B\u578B",
2421
- children: ["\u7CFB\u7EDF\u81EA\u52A8\u83B7\u53D6"],
2422
- style: {
2423
- color: "#9393A3"
2424
- }
2425
- },
2426
- {
2427
- type: "span",
2428
- field: "size",
2429
- title: "\u5C3A\u5BF8",
2430
- children: ["\u7CFB\u7EDF\u81EA\u52A8\u83B7\u53D6"],
2431
- style: {
2432
- color: "#9393A3"
2433
- }
2434
- },
2435
- {
2436
- type: "span",
2437
- field: "coverPicture",
2438
- title: "\u5C01\u9762\u56FE",
2439
- children: ["\u7CFB\u7EDF\u81EA\u52A8\u83B7\u53D6"],
2440
- style: {
2441
- color: "#9393A3"
2442
- }
2443
- },
2444
- {
2445
- type: "span",
2446
- field: "templateStructureDiagram",
2447
- title: "\u6A21\u677F\u7ED3\u6784\u56FE",
2448
- children: ["\u7CFB\u7EDF\u81EA\u52A8\u83B7\u53D6"],
2449
- style: {
2450
- color: "#9393A3"
2451
- }
2452
- },
2453
- {
2454
- hidden: false,
2455
- type: "UploadPicture",
2456
- component: components.BmUpload,
2457
- field: uploadPicField,
2458
- title: "\u4E0A\u4F20\u53C2\u8003\u56FE",
2459
- effect: {
2460
- required: false
2461
- },
2462
- props: {
2463
- uploadProps: {
2464
- listType: "picture-card",
2465
- text: "\u4E0A\u4F20\u7167\u7247"
2466
- },
2467
- extraProps: {
2468
- maxSize: 9
2469
- }
2470
- }
2471
- }
2472
- ]);
2473
- function getUploadPicRule() {
2474
- return rules.value.find((rule) => rule.field === uploadPicField);
2475
- }
2476
- function handleUploadPicRule(uploadPictureRule) {
2477
- const uploadPicRule = getUploadPicRule();
2478
- uploadPicRule.effect.required = uploadPictureRule.required;
2479
- uploadPicRule.hidden = uploadPictureRule.hidden;
2480
- rules.value = [...rules.value];
2481
- }
2482
- vue.watch(
2483
- () => props.formCreateInject.rule.config.uploadPictureRule,
2484
- handleUploadPicRule,
2485
- {
2486
- deep: true,
2487
- immediate: true
2488
- }
2489
- );
2490
- return (_ctx, _cache) => {
2491
- const _component_FormCreate = vue.resolveComponent("FormCreate");
2492
- return vue.openBlock(), vue.createBlock(vue.unref(antDesignVue.Tabs), {
2493
- activeKey: vue.unref(activeKey),
2494
- "onUpdate:activeKey": _cache[0] || (_cache[0] = ($event) => vue.isRef(activeKey) ? activeKey.value = $event : activeKey = $event),
2495
- class: "bm-material-temp",
2496
- type: "editable-card",
2497
- "hide-add": "",
2498
- size: "small"
2499
- }, {
2500
- rightExtra: vue.withCtx(() => [
2501
- vue.createElementVNode("span", _hoisted_9, [
2502
- vue.createVNode(vue.unref(iconsVue.PlusOutlined))
2503
- ])
2504
- ]),
2505
- default: vue.withCtx(() => [
2506
- (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, vue.renderList(panes, (pane) => {
2507
- return vue.createVNode(vue.unref(antDesignVue.TabPane), {
2508
- key: pane.key,
2509
- tab: pane.title
2510
- }, {
2511
- default: vue.withCtx(() => [
2512
- vue.createVNode(_component_FormCreate, {
2513
- option,
2514
- rule: rules.value
2515
- }, null, 8, ["rule"]),
2516
- vue.createElementVNode("div", _hoisted_1$a, [
2517
- _hoisted_2$8,
2518
- vue.createElementVNode("div", _hoisted_3$7, [
2519
- vue.createVNode(vue.unref(antDesignVue.Button), null, {
2520
- default: vue.withCtx(() => [
2521
- _hoisted_4$4
2522
- ]),
2523
- _: 1
2524
- }),
2525
- vue.createVNode(vue.unref(antDesignVue.Button), null, {
2526
- default: vue.withCtx(() => [
2527
- _hoisted_5$2
2528
- ]),
2529
- _: 1
2530
- }),
2531
- vue.createVNode(vue.unref(antDesignVue.Button), null, {
2532
- default: vue.withCtx(() => [
2533
- _hoisted_6$2
2534
- ]),
2535
- _: 1
2536
- }),
2537
- vue.createVNode(vue.unref(antDesignVue.Button), { type: "primary" }, {
2538
- default: vue.withCtx(() => [
2539
- vue.createVNode(vue.unref(iconsVue.PlusOutlined)),
2540
- _hoisted_7$1
2541
- ]),
2542
- _: 1
2543
- })
2544
- ])
2545
- ]),
2546
- _hoisted_8$1
2547
- ]),
2548
- _: 2
2549
- }, 1032, ["tab"]);
2550
- }), 64))
2551
- ]),
2552
- _: 1
2553
- }, 8, ["activeKey"]);
2554
- };
2555
- }
2556
- });
2557
- var WidgetMaterialTemp = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__file", "widget-material-temp.vue"]]);
2558
-
2559
- const _hoisted_1$9 = { class: "bm-use-instruction" };
2560
- const _hoisted_2$7 = { class: "bm-use-instruction__title" };
2561
- const _hoisted_3$6 = /* @__PURE__ */ vue.createTextVNode(" \u4F7F\u7528\u8BF4\u660E ");
2562
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
2563
- __name: "use-instruction",
2564
- setup(__props) {
2565
- return (_ctx, _cache) => {
2566
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
2567
- vue.createElementVNode("div", _hoisted_2$7, [
2568
- vue.createVNode(vue.unref(iconsVue.InfoCircleFilled), { class: "bm-use-instruction__title__icon" }),
2569
- _hoisted_3$6
2570
- ]),
2571
- vue.renderSlot(_ctx.$slots, "default")
2572
- ]);
2573
- };
2574
- }
2575
- });
2576
- var UseInstruction = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__file", "use-instruction.vue"]]);
2577
-
2578
- const label$3 = '素材模板';
2579
- const fieldsMap$3 = {
2580
- 'config.uploadPictureRule.required': 'config.uploadPictureRule.required',
2581
- 'config.uploadPictureRule.hidden': 'config.uploadPictureRule.hidden',
2582
- };
2583
- const name$3 = 'materialTemp';
2584
- var materialTemp = {
2585
- icon: 'MaterialTemp',
2586
- name: name$3,
2587
- label: label$3,
2588
- rule() {
2589
- return {
2590
- type: 'WidgetMaterialTemp',
2591
- component: WidgetMaterialTemp,
2592
- title: {
2593
- title: label$3,
2594
- },
2595
- field: uniqueId__default["default"](),
2596
- config: {
2597
- propsFields: Object.values(fieldsMap$3),
2598
- uploadPictureRule: {
2599
- required: false,
2600
- hidden: false,
2601
- },
2602
- },
2603
- };
2604
- },
2605
- props(rule) {
2606
- return [
2607
- {
2608
- type: 'UseInstruction',
2609
- component: UseInstruction,
2610
- children: [
2611
- {
2612
- type: 'span',
2613
- children: [
2614
- '·该套件打通店铺与素材模板的数据关联,可根据店铺获取该店铺可用的素材模板。',
2615
- ],
2616
- },
2617
- {
2618
- type: 'span',
2619
- children: [
2620
- '·满足一个素材申请单可使用多个素材类型对应的素材模板申请素材。',
2621
- ],
2622
- style: {
2623
- display: 'inline-block',
2624
- marginTop: '8px',
2625
- },
2626
- },
2627
- ],
2628
- style: {
2629
- marginBottom: '24px',
2630
- },
2631
- },
2632
- {
2633
- type: 'span',
2634
- title: '素材模板',
2635
- field: 'materialTemp',
2636
- children: [
2637
- '用于选择对应可用的素材模板信息(编号、名称、尺寸、封面图、结构图)。此项必填并获取所选择的模板的编号及名称显示。',
2638
- ],
2639
- style: {
2640
- color: '#505259',
2641
- },
2642
- },
2643
- {
2644
- type: 'span',
2645
- title: '素材类型/尺寸/封面图/结构图',
2646
- field: 'systemGeneration',
2647
- children: ['通过所选模板,系统自动获取此模板对应的相关内容。'],
2648
- style: {
2649
- color: '#505259',
2650
- },
2651
- },
2652
- {
2653
- type: 'span',
2654
- title: '上传参考图',
2655
- field: 'uploadPicture',
2656
- prefix: {
2657
- type: 'CheckboxSwitch',
2658
- props: {
2659
- rule,
2660
- },
2661
- },
2662
- children: ['用于上传当次申请的素材参考的图片。可最多上传9张图。'],
2663
- style: {
2664
- color: '#505259',
2665
- },
2666
- },
2667
- {
2668
- type: 'span',
2669
- title: '明细列表',
2670
- field: 'detailList',
2671
- children: [
2672
- '根据所选的素材模板,系统自动获取该模板需填写的内容字段列表以及批量导入的模板。列表允许操作:下载所选素材模板的导入模板、批量导入明细、新增、编辑、删除。',
2673
- ],
2674
- style: {
2675
- color: '#505259',
2676
- },
2677
- },
2678
- ];
2679
- },
2680
- parse(rule) {
2681
- return {
2682
- name: name$3,
2683
- field: rule.field,
2684
- config: {
2685
- uploadPictureRule: {
2686
- hidden: rule.config.uploadPictureRule.hidden,
2687
- required: rule.config.uploadPictureRule.required,
2688
- },
2689
- },
2690
- };
2691
- },
2692
- };
2693
-
2694
- const _hoisted_1$8 = /* @__PURE__ */ vue.createElementVNode("div", { class: "bm-product-info-item__title" }, "\u5546\u54C1\u7F16\u53F7", -1);
2695
- const _hoisted_2$6 = { class: "bm-product-info-item__content" };
2696
- const _hoisted_3$5 = { class: "bm-product-info-item__title" };
2697
- const _hoisted_4$3 = /* @__PURE__ */ vue.createElementVNode("div", { class: "bm-product-info-item__content" }, "\u7CFB\u7EDF\u81EA\u52A8\u5E26\u51FA", -1);
2698
- const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
2699
- __name: "product-info",
2700
- props: ["formCreateInject"],
2701
- setup(__props) {
2702
- return (_ctx, _cache) => {
2703
- return vue.openBlock(), vue.createBlock(vue.unref(antDesignVue.Row), null, {
2704
- default: vue.withCtx(() => [
2705
- vue.createVNode(vue.unref(antDesignVue.Col), {
2706
- class: "bm-product-info-item",
2707
- span: 12
2708
- }, {
2709
- default: vue.withCtx(() => [
2710
- _hoisted_1$8,
2711
- vue.createElementVNode("div", _hoisted_2$6, [
2712
- vue.createVNode(vue.unref(antDesignVue.Input), { placeholder: "\u8BF7\u8F93\u5165\u5546\u54C1\u7F16\u53F7" })
2713
- ])
2714
- ]),
2715
- _: 1
2716
- }),
2717
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.formCreateInject.rule.config.associatedFields, (item) => {
2718
- return vue.openBlock(), vue.createBlock(vue.unref(antDesignVue.Col), {
2719
- key: item.value,
2720
- class: "bm-product-info-item",
2721
- span: 12
2722
- }, {
2723
- default: vue.withCtx(() => [
2724
- vue.createElementVNode("div", _hoisted_3$5, vue.toDisplayString(item.label), 1),
2725
- _hoisted_4$3
2726
- ]),
2727
- _: 2
2728
- }, 1024);
2729
- }), 128))
2730
- ]),
2731
- _: 1
2732
- });
2733
- };
2734
- }
2735
- });
2736
- var ProductInfo = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__file", "product-info.vue"]]);
2737
-
2738
- const _hoisted_1$7 = /* @__PURE__ */ vue.createElementVNode("div", { class: "bm-associated-fields-item" }, [
2739
- /* @__PURE__ */ vue.createElementVNode("span", { class: "bm-associated-fields-item__content" }, "\u5546\u54C1\u7F16\u53F7")
2740
- ], -1);
2741
- const _hoisted_2$5 = { class: "bm-associated-fields-item__content" };
2742
- const _hoisted_3$4 = /* @__PURE__ */ vue.createTextVNode(" \u6DFB\u52A0\u5B50\u5B57\u6BB5 ");
2743
- const _hoisted_4$2 = { style: { "text-align": "right", "margin": "6px 0 4px", "padding-right": "8px" } };
2744
- const _hoisted_5$1 = /* @__PURE__ */ vue.createTextVNode("\u53D6\u6D88");
2745
- const _hoisted_6$1 = /* @__PURE__ */ vue.createTextVNode("\u786E\u5B9A");
2746
- const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
2747
- __name: "associated-fields",
2748
- props: ["rule"],
2749
- emits: ["change"],
2750
- setup(__props, { emit: emits }) {
2751
- const props = __props;
2752
- const visible = vue.ref(false);
2753
- const checkList = vue.ref([]);
2754
- const options = [
2755
- {
2756
- value: "\u5546\u54C1\u540D\u79F0",
2757
- label: "\u5546\u54C1\u540D\u79F0"
2758
- },
2759
- {
2760
- value: "\u5546\u54C1\u7B80\u79F0",
2761
- label: "\u5546\u54C1\u7B80\u79F0"
2762
- },
2763
- {
2764
- value: "\u5546\u54C1\u56FE\u7247",
2765
- label: "\u5546\u54C1\u56FE\u7247"
2766
- },
2767
- {
2768
- value: "\u5EFA\u8BAE\u96F6\u552E\u4EF7",
2769
- label: "\u5EFA\u8BAE\u96F6\u552E\u4EF7"
2770
- },
2771
- {
2772
- value: "\u5546\u54C1\u7BB1\u89C4",
2773
- label: "\u5546\u54C1\u7BB1\u89C4"
2774
- },
2775
- {
2776
- value: "\u5546\u54C1\u5355\u4F4D",
2777
- label: "\u5546\u54C1\u5355\u4F4D"
2778
- }
2779
- ];
2780
- function emitChangeEvt() {
2781
- emits(
2782
- "change",
2783
- options.filter((op) => checkList.value.includes(op.value))
2784
- );
2785
- }
2786
- function handOk() {
2787
- visible.value = false;
2788
- emitChangeEvt();
2789
- }
2790
- function init() {
2791
- checkList.value = props.rule.config.associatedFields.map((item) => item.value);
2792
- }
2793
- function visibleChange(visible2) {
2794
- if (visible2) {
2795
- init();
2796
- }
2797
- }
2798
- function handleDel(value) {
2799
- checkList.value = checkList.value.filter((cl) => cl !== value);
2800
- emitChangeEvt();
2801
- }
2802
- init();
2803
- vue.watch(visible, (val) => {
2804
- visibleChange(val);
2805
- });
2806
- return (_ctx, _cache) => {
2807
- const _component_Delete = vue.resolveComponent("Delete");
2808
- return vue.openBlock(), vue.createElementBlock("div", null, [
2809
- _hoisted_1$7,
2810
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.rule.config.associatedFields, (item) => {
2811
- return vue.openBlock(), vue.createElementBlock("div", {
2812
- key: item.value,
2813
- class: "bm-associated-fields-item"
2814
- }, [
2815
- vue.createElementVNode("span", _hoisted_2$5, vue.toDisplayString(item.label), 1),
2816
- vue.createVNode(_component_Delete, {
2817
- class: "bm-associated-fields-item__icon",
2818
- onClick: ($event) => handleDel(item.value)
2819
- }, null, 8, ["onClick"])
2820
- ]);
2821
- }), 128)),
2822
- vue.createVNode(vue.unref(antDesignVue.Dropdown), {
2823
- visible: visible.value,
2824
- "onUpdate:visible": _cache[2] || (_cache[2] = ($event) => visible.value = $event),
2825
- trigger: ["click"]
2826
- }, {
2827
- overlay: vue.withCtx(() => [
2828
- vue.createVNode(vue.unref(antDesignVue.Menu), null, {
2829
- default: vue.withCtx(() => [
2830
- vue.createVNode(vue.unref(antDesignVue.FormItemRest), null, {
2831
- default: vue.withCtx(() => [
2832
- vue.createVNode(vue.unref(antDesignVue.CheckboxGroup), {
2833
- value: checkList.value,
2834
- "onUpdate:value": _cache[0] || (_cache[0] = ($event) => checkList.value = $event),
2835
- style: { "width": "100%" }
2836
- }, {
2837
- default: vue.withCtx(() => [
2838
- (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, vue.renderList(options, (item) => {
2839
- return vue.createVNode(vue.unref(antDesignVue.MenuItem), {
2840
- key: item.value
2841
- }, {
2842
- default: vue.withCtx(() => [
2843
- vue.createVNode(vue.unref(antDesignVue.Checkbox), {
2844
- value: item.value,
2845
- style: { "width": "100%" }
2846
- }, {
2847
- default: vue.withCtx(() => [
2848
- vue.createTextVNode(vue.toDisplayString(item.label), 1)
2849
- ]),
2850
- _: 2
2851
- }, 1032, ["value"])
2852
- ]),
2853
- _: 2
2854
- }, 1024);
2855
- }), 64))
2856
- ]),
2857
- _: 1
2858
- }, 8, ["value"])
2859
- ]),
2860
- _: 1
2861
- }),
2862
- vue.createVNode(vue.unref(antDesignVue.Divider), { style: { "margin": "0" } }),
2863
- vue.createElementVNode("div", _hoisted_4$2, [
2864
- vue.createVNode(vue.unref(antDesignVue.Button), {
2865
- onClick: _cache[1] || (_cache[1] = ($event) => visible.value = false)
2866
- }, {
2867
- default: vue.withCtx(() => [
2868
- _hoisted_5$1
2869
- ]),
2870
- _: 1
2871
- }),
2872
- vue.createVNode(vue.unref(antDesignVue.Button), {
2873
- type: "primary",
2874
- style: { "margin-left": "8px" },
2875
- onClick: handOk
2876
- }, {
2877
- default: vue.withCtx(() => [
2878
- _hoisted_6$1
2879
- ]),
2880
- _: 1
2881
- })
2882
- ])
2883
- ]),
2884
- _: 1
2885
- })
2886
- ]),
2887
- default: vue.withCtx(() => [
2888
- vue.createVNode(vue.unref(antDesignVue.Button), {
2889
- style: { "margin-top": "8px" },
2890
- block: ""
2891
- }, {
2892
- default: vue.withCtx(() => [
2893
- vue.createVNode(vue.unref(iconsVue.PlusOutlined)),
2894
- _hoisted_3$4
2895
- ]),
2896
- _: 1
2897
- })
2898
- ]),
2899
- _: 1
2900
- }, 8, ["visible"])
2901
- ]);
2902
- };
2903
- }
2904
- });
2905
- var AssociatedFields = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__file", "associated-fields.vue"]]);
2906
-
2907
- const _hoisted_1$6 = /* @__PURE__ */ vue.createElementVNode("div", { style: { "margin": "18px 0 6px" } }, "\u4EC5\u83B7\u53D6", -1);
2908
- const _hoisted_2$4 = /* @__PURE__ */ vue.createElementVNode("div", { style: { "margin-top": "7px" } }, "\u4E2D\u53EF\u5206\u9500\u7684\u5546\u54C1\u6570\u636E", -1);
2909
- const _hoisted_3$3 = /* @__PURE__ */ vue.createTextVNode("\u8BF7\u5148\u6DFB\u52A0\u5173\u8054\u8868\u5355\u4E2D\u7684\u5E97\u94FA\u7EC4\u4EF6");
2910
- const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
2911
- __name: "shop-data-filter",
2912
- props: ["widgetFormRules", "defaultSelectValue"],
2913
- emits: ["change"],
2914
- setup(__props, { emit: emits }) {
2915
- const props = __props;
2916
- const checkedValue = vue.ref(false);
2917
- const selectValue = vue.ref(props.defaultSelectValue);
2918
- const shopRules = vue.computed(
2919
- () => props.widgetFormRules.reduce((pre, cur) => {
2920
- const name = cur.config.config.name;
2921
- if (name === "row" || name === "table") {
2922
- cur.config.childRules.forEach((rule) => {
2923
- getShop(rule, pre);
2924
- });
2925
- } else {
2926
- getShop(cur, pre);
2927
- }
2928
- return pre;
2929
- }, [])
2930
- );
2931
- const shops = vue.computed(() => {
2932
- return shopRules.value.map((shopRule) => ({
2933
- value: shopRule.field,
2934
- label: shopRule.title.title
2935
- }));
2936
- });
2937
- function getShop(rule, target) {
2938
- if (rule.config.config.name === "shop")
2939
- target.push(rule);
2940
- }
2941
- function checkedValueChange(val) {
2942
- if (!val)
2943
- selectValue.value = void 0;
2944
- }
2945
- function selectValueChange(val) {
2946
- if (val) {
2947
- checkedValue.value = true;
2948
- }
2949
- }
2950
- function handleChange(val) {
2951
- emits("change", val);
2952
- }
2953
- function shopLinkProduct(newField, oldField) {
2954
- shopRules.value.forEach((shop) => {
2955
- if (shop.field === oldField) {
2956
- shop.config.linkProductCount--;
2957
- }
2958
- if (shop.field === newField) {
2959
- if (!shop.config.linkProductCount) {
2960
- shop.config.linkProductCount = 0;
2961
- }
2962
- shop.config.linkProductCount++;
2963
- }
2964
- });
2965
- }
2966
- vue.watch(checkedValue, (checkedValue2) => {
2967
- checkedValueChange(checkedValue2);
2968
- });
2969
- vue.watch(
2970
- selectValue,
2971
- (selectValue2, oldSelectValue) => {
2972
- selectValueChange(selectValue2);
2973
- shopLinkProduct(selectValue2, oldSelectValue);
2974
- },
2975
- {
2976
- immediate: true
2977
- }
2978
- );
2979
- return (_ctx, _cache) => {
2980
- const _component_a_tooltip = vue.resolveComponent("a-tooltip");
2981
- return vue.openBlock(), vue.createBlock(vue.unref(antDesignVue.FormItemRest), null, {
2982
- default: vue.withCtx(() => [
2983
- vue.unref(shops).length ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
2984
- vue.createVNode(vue.unref(antDesignVue.Switch), {
2985
- checked: checkedValue.value,
2986
- "onUpdate:checked": _cache[0] || (_cache[0] = ($event) => checkedValue.value = $event)
2987
- }, null, 8, ["checked"]),
2988
- checkedValue.value ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
2989
- _hoisted_1$6,
2990
- vue.createVNode(vue.unref(antDesignVue.Select), {
2991
- value: selectValue.value,
2992
- "onUpdate:value": _cache[1] || (_cache[1] = ($event) => selectValue.value = $event),
2993
- options: vue.unref(shops),
2994
- placeholder: "\u8BF7\u9009\u62E9",
2995
- onChange: handleChange
2996
- }, null, 8, ["value", "options"]),
2997
- _hoisted_2$4
2998
- ], 64)) : vue.createCommentVNode("v-if", true)
2999
- ], 64)) : (vue.openBlock(), vue.createBlock(_component_a_tooltip, {
3000
- key: 1,
3001
- placement: "bottomLeft"
3002
- }, {
3003
- title: vue.withCtx(() => [
3004
- _hoisted_3$3
3005
- ]),
3006
- default: vue.withCtx(() => [
3007
- vue.createVNode(vue.unref(antDesignVue.Switch), { disabled: "" })
3008
- ]),
3009
- _: 1
3010
- }))
3011
- ]),
3012
- _: 1
3013
- });
3014
- };
3015
- }
3016
- });
3017
- var ShopDataFilter = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__file", "shop-data-filter.vue"]]);
3018
-
3019
- const label$2 = '商品';
3020
- const fieldsMap$2 = {
3021
- 'effect.required': 'effect.required',
3022
- 'config.associatedFields': 'config.associatedFields',
3023
- 'config.dataFiltering': 'config.dataFiltering',
3024
- };
3025
- const name$2 = 'product';
3026
- var product = {
3027
- icon: 'Product',
3028
- name: name$2,
3029
- label: label$2,
3030
- rule() {
3031
- return {
3032
- type: 'ProductInfo',
3033
- component: ProductInfo,
3034
- field: uniqueId__default["default"](),
3035
- title: {
3036
- title: label$2,
3037
- style: {
3038
- overflow: 'hidden',
3039
- textOverflow: 'ellipsis',
3040
- whiteSpace: 'nowrap',
3041
- },
3042
- },
3043
- effect: {
3044
- required: true,
3045
- formRule: 'formRule',
3046
- },
3047
- config: {
3048
- propsFields: Object.values(fieldsMap$2),
3049
- associatedFields: [],
3050
- },
3051
- };
3052
- },
3053
- props(rule, parentRule, widgetFormRules) {
3054
- return [
3055
- {
3056
- type: 'AssociatedFields',
3057
- component: AssociatedFields,
3058
- title: '关联字段',
3059
- field: fieldsMap$2['config.associatedFields'],
3060
- props: {
3061
- rule,
3062
- },
3063
- effect: {
3064
- required: true,
3065
- },
3066
- inject: true,
3067
- on: {
3068
- change({ api, self }, list) {
3069
- api.emit('change', self.field, list, self, api, true);
3070
- },
3071
- },
3072
- },
3073
- {
3074
- type: 'ShopDataFilter',
3075
- component: ShopDataFilter,
3076
- title: '数据过滤',
3077
- field: fieldsMap$2['config.dataFiltering'],
3078
- info: '1.开启后,可以与当前表单的“店铺”控件关联进行商品数据过滤,在填写表单时满足仅可选择所选店铺下的可分销商品。' +
3079
- '2.若不启用数据过滤,则不进行店铺限制,用户填写表单时可选择所有未冻结的商品数据。' +
3080
- '3.开启前,请确认当前表单中已存在“店铺”控件。',
3081
- props: {
3082
- widgetFormRules: widgetFormRules,
3083
- defaultSelectValue: rule.config.dataFiltering,
3084
- },
3085
- inject: true,
3086
- on: {
3087
- change({ api, self }, value) {
3088
- self.props.defaultSelectValue = value;
3089
- api.emit('change', self.field, value, self, api, true);
3090
- },
3091
- },
3092
- },
3093
- {
3094
- type: 'switch',
3095
- title: '是否必填',
3096
- field: fieldsMap$2['effect.required'],
3097
- value: rule.effect.required,
3098
- },
3099
- ];
3100
- },
3101
- parse(rule) {
3102
- return {
3103
- name: name$2,
3104
- field: rule.field,
3105
- effect: {
3106
- required: rule.effect.required,
3107
- },
3108
- config: {
3109
- associatedFields: rule.config.associatedFields,
3110
- dataFiltering: rule.config.dataFiltering,
3111
- },
3112
- };
3113
- },
3114
- };
3115
-
3116
- const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
3117
- __name: "shop-associated-fields",
3118
- setup(__props) {
3119
- const associatedFields = [
3120
- {
3121
- value: "\u5E97\u94FA\u7F16\u53F7",
3122
- label: "\u5E97\u94FA\u7F16\u53F7"
3123
- },
3124
- {
3125
- value: "\u5E97\u94FA\u540D\u79F0",
3126
- label: "\u5E97\u94FA\u540D\u79F0"
3127
- }
3128
- ];
3129
- return (_ctx, _cache) => {
3130
- return vue.openBlock(), vue.createElementBlock("div", null, [
3131
- (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, vue.renderList(associatedFields, (item) => {
3132
- return vue.createElementVNode("span", {
3133
- key: item.value,
3134
- class: "bm-shop-associated-fields-item"
3135
- }, vue.toDisplayString(item.label), 1);
3136
- }), 64))
3137
- ]);
3138
- };
3139
- }
3140
- });
3141
- var ShopAssociatedFields = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__file", "shop-associated-fields.vue"]]);
3142
-
3143
- let i = 0;
3144
- const label$1 = '店铺';
3145
- const fieldsMap$1 = {
3146
- 'effect.required': 'effect.required',
3147
- 'config.dataFiltering': 'config.dataFiltering',
3148
- 'config.isMain': 'config.isMain',
3149
- };
3150
- const name$1 = 'shop';
3151
- var shop = {
3152
- icon: 'Shop',
3153
- name: name$1,
3154
- label: label$1,
3155
- rule() {
3156
- return {
3157
- type: 'Select',
3158
- field: uniqueId__default["default"](),
3159
- title: {
3160
- title: label$1 + ++i,
3161
- style: {
3162
- overflow: 'hidden',
3163
- textOverflow: 'ellipsis',
3164
- whiteSpace: 'nowrap',
3165
- },
3166
- },
3167
- effect: {
3168
- required: true,
3169
- formRule: 'formRule',
3170
- },
3171
- props: {
3172
- placeholder: '请选择',
3173
- },
3174
- config: {
3175
- propsFields: Object.values(fieldsMap$1),
3176
- },
3177
- };
3178
- },
3179
- props(rule, parentRule) {
3180
- return [
3181
- {
3182
- type: 'ShopAssociatedFields',
3183
- component: ShopAssociatedFields,
3184
- title: '关联字段',
3185
- field: 'config.associatedFields',
3186
- effect: {
3187
- required: true,
3188
- },
3189
- },
3190
- {
3191
- type: 'checkbox',
3192
- title: '数据过滤',
3193
- field: fieldsMap$1['config.dataFiltering'],
3194
- options: [
3195
- {
3196
- value: true,
3197
- label: '当前节点操作人所负责的店铺',
3198
- },
3199
- ],
3200
- value: [rule.config.dataFiltering],
3201
- inject: true,
3202
- on: {
3203
- change({ api, self }, value) {
3204
- api.emit('change', self.field, value[0], self, api, true);
3205
- },
3206
- },
3207
- },
3208
- {
3209
- type: 'switch',
3210
- title: '设为主控件',
3211
- info: '店铺控件在流程流转过程中涉及数据权限的控制,当表单中设置了多个店铺控件时,需设置其中1个店铺控件作为主控件。被设为主控件的店铺控件,流程流转过程中将以此店铺控件输入的数据作为数据权限判断依据。',
3212
- field: fieldsMap$1['config.isMain'],
3213
- value: rule.config.isMain,
3214
- hidden: !!parentRule,
3215
- },
3216
- {
3217
- type: 'switch',
3218
- title: '是否必填',
3219
- field: fieldsMap$1['effect.required'],
3220
- value: rule.effect.required,
3221
- },
3222
- ];
3223
- },
3224
- parse(rule) {
3225
- return {
3226
- name: name$1,
3227
- field: rule.field,
3228
- title: {
3229
- title: rule.title.title,
3230
- },
3231
- effect: {
3232
- required: rule.effect.required,
3233
- },
3234
- config: {
3235
- dataFiltering: rule.config.dataFiltering,
3236
- isMain: rule.config.isMain,
3237
- },
3238
- };
3239
- },
3240
- };
3241
- function resetIndex() {
3242
- i = 0;
3243
- }
3244
-
3245
- const label = '素材类型';
3246
- const fieldsMap = {
3247
- 'effect.required': 'effect.required',
3248
- 'config.format': 'config.format',
3249
- 'props.multiple': 'props.multiple',
3250
- };
3251
- const name = 'materialType';
3252
- var materialType = {
3253
- icon: 'MaterialType',
3254
- name,
3255
- label,
3256
- rule() {
3257
- return {
3258
- type: 'Select',
3259
- field: uniqueId__default["default"](),
3260
- title: {
3261
- title: label,
3262
- style: {
3263
- overflow: 'hidden',
3264
- textOverflow: 'ellipsis',
3265
- whiteSpace: 'nowrap',
3266
- },
3267
- },
3268
- effect: {
3269
- required: true,
3270
- formRule: 'formRule',
3271
- },
3272
- props: {
3273
- placeholder: '请选择',
3274
- multiple: false,
3275
- },
3276
- config: {
3277
- propsFields: Object.values(fieldsMap),
3278
- format: 1,
3279
- },
3280
- };
3281
- },
3282
- props(rule, parentRule) {
3283
- return [
3284
- {
3285
- type: 'radio',
3286
- title: '格式',
3287
- field: fieldsMap['config.format'],
3288
- effect: {
3289
- required: true,
3290
- },
3291
- options: [
3292
- {
3293
- value: 1,
3294
- label: '一级分类',
3295
- },
3296
- {
3297
- value: 2,
3298
- label: '一级分类-二级分类',
3299
- },
3300
- {
3301
- value: 3,
3302
- label: '一级分类-二级分类-三级分类',
3303
- },
3304
- ],
3305
- value: rule.config.format,
3306
- className: 'form-designer-props-radio-label',
3307
- },
3308
- {
3309
- type: 'radio',
3310
- title: '选项',
3311
- field: fieldsMap['props.multiple'],
3312
- effect: {
3313
- required: true,
3314
- },
3315
- options: [
3316
- {
3317
- value: false,
3318
- label: '只能选择一种类型',
3319
- },
3320
- {
3321
- value: true,
3322
- label: '可同时选择多种类型',
3323
- },
3324
- ],
3325
- value: rule.props.multiple,
3326
- className: 'form-designer-props-radio-label',
3327
- },
3328
- {
3329
- type: 'switch',
3330
- title: '是否必填',
3331
- info: '勾选后可作为流程条件',
3332
- field: fieldsMap['effect.required'],
3333
- value: rule.effect.required,
3334
- },
3335
- ];
3336
- },
3337
- parse(rule) {
3338
- return {
3339
- name,
3340
- field: rule.field,
3341
- props: {
3342
- multiple: rule.props.multiple,
3343
- },
3344
- config: {
3345
- format: rule.config.format,
3346
- },
3347
- effect: {
3348
- required: rule.effect.required,
3349
- },
3350
- };
3351
- },
3352
- };
3353
-
3354
- function createTab() {
3355
- return [
3356
- {
3357
- key: 'controlLibrary',
3358
- tab: '控件库',
3359
- menuList: [
3360
- {
3361
- name: 'layout',
3362
- title: '布局控件',
3363
- list: [row],
3364
- },
3365
- {
3366
- name: 'basic',
3367
- title: '基础控件',
3368
- list: [
3369
- input,
3370
- textarea,
3371
- numInput,
3372
- radio,
3373
- checkbox,
3374
- date,
3375
- dateRange,
3376
- instruction,
3377
- ],
3378
- },
3379
- {
3380
- name: 'enhance',
3381
- title: '增强控件',
3382
- list: [picture, table, file, people, department],
3383
- },
3384
- ],
3385
- },
3386
- {
3387
- key: 'kit',
3388
- tab: '套件',
3389
- menuList: [
3390
- {
3391
- name: 'materialKit',
3392
- title: '素材套件',
3393
- list: [materialTemp],
3394
- },
3395
- ],
3396
- },
3397
- {
3398
- key: 'associatedForm',
3399
- tab: '关联表单',
3400
- menuList: [
3401
- {
3402
- name: 'dataForm',
3403
- title: '数据表单',
3404
- list: [product, shop, materialType],
3405
- },
3406
- ],
3407
- },
3408
- ];
3409
- }
3410
-
3411
- const _hoisted_1$5 = {
3412
- style: { "vertical-align": "middle" },
3413
- width: "199px",
3414
- height: "107px",
3415
- viewBox: "0 0 199 107",
3416
- xmlns: "http://www.w3.org/2000/svg"
3417
- };
3418
- const _hoisted_2$3 = /* @__PURE__ */ vue.createStaticVNode('<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-826.000000, -249.000000)"><g transform="translate(667.000000, 71.000000)"><g transform="translate(159.000000, 178.000000)"><path d="M2,0 L197,0 C198.104569,-6.46995335e-16 199,0.8954305 199,2 L199,105 C199,106.104569 198.104569,107 197,107 L2,107 C0.8954305,107 1.3527075e-16,106.104569 0,105 L0,2 C-1.3527075e-16,0.8954305 0.8954305,2.02906125e-16 2,0 Z" fill="#F9FBFF"></path><path d="M41,6 C41.5522847,6 42,6.44771525 42,7 L42,100 C42,100.552285 41.5522847,101 41,101 L7,101 C6.44771525,101 6,100.552285 6,100 L6,7 C6,6.44771525 6.44771525,6 7,6 L41,6 Z M192,6 C192.552285,6 193,6.44771525 193,7 L193,100 C193,100.552285 192.552285,101 192,101 L159,101 C158.447715,101 158,100.552285 158,100 L158,7 C158,6.44771525 158.447715,6 159,6 L192,6 Z M151,35 C151.552285,35 152,35.4477153 152,36 L152,100 C152,100.552285 151.552285,101 151,101 L49,101 C48.4477153,101 48,100.552285 48,100 L48,36 C48,35.4477153 48.4477153,35 49,35 L151,35 Z M151,6 C151.552285,6 152,6.44771525 152,7 L152,30 C152,30.5522847 151.552285,31 151,31 L49,31 C48.4477153,31 48,30.5522847 48,30 L48,7 C48,6.44771525 48.4477153,6 49,6 L151,6 Z" fill="#EFF3FF"></path><rect stroke="#8FAAFF" fill="#D0DCFF" x="12.5" y="17.5" width="23" height="13" rx="0.5"></rect><rect fill="#E4E8F7" x="12" y="47" width="24" height="14" rx="0.5"></rect><rect fill="#E4E8F7" x="12" y="75" width="24" height="14" rx="0.5"></rect><use stroke="#AEC2FF" mask="url(#mask-2)" stroke-width="2" fill-opacity="0.26" fill="#AFC3FF" stroke-dasharray="2" xlink:href="#path-1"></use><path d="M33.5,20 C35.9852814,20 38,22.0147186 38,24.5 C38,26.9852814 35.9852814,29 33.5,29 C31.0147186,29 29,26.9852814 29,24.5 C29,22.0147186 31.0147186,20 33.5,20 Z M33.5,22 C32.1192881,22 31,23.1192881 31,24.5 C31,25.8807119 32.1192881,27 33.5,27 C34.8807119,27 36,25.8807119 36,24.5 C36,23.1192881 34.8807119,22 33.5,22 Z" fill="#2F4EED"></path><circle fill="#F9FBFF" cx="33.5" cy="24.5" r="2.5"></circle><path d="M42.5,22 C65.8354499,22 85.7454723,36.6659986 93.5155164,57.2834451 L93.7801465,55.3991118 C93.8570096,54.8522019 94.3626777,54.4711537 94.9095876,54.5480169 C95.4564976,54.6248801 95.8375458,55.1305481 95.7606826,55.677458 L94.925644,61.6190665 C94.8487808,62.1659764 94.3431128,62.5470246 93.7962028,62.4701614 L93.7673315,62.4658857 C93.5875459,62.4468789 93.4107192,62.3789077 93.2577621,62.2594045 L88.5296976,58.5654356 C88.0944913,58.2254152 88.0173279,57.5969697 88.3573483,57.1617634 C88.6973688,56.7265571 89.3258142,56.6493937 89.7610205,56.9894141 L91.887337,58.6494477 C84.582156,38.4419045 65.2276218,24 42.5,24 C40.4254117,24 38.3789284,24.1203318 36.367149,24.3543965 L36.022518,22.3809268 C38.1466458,22.1293826 40.3082134,22 42.5,22 Z" fill="#2F4EED"></path></g></g></g></g>', 1);
3419
- const _hoisted_3$2 = [
3420
- _hoisted_2$3
3421
- ];
3422
- const _hoisted_4$1 = /* @__PURE__ */ vue.createElementVNode("div", { style: { "line-height": "20px", "margin-top": "12px", "color": "#505259" } }, " \u8BF7\u62D6\u62FD\u6216\u70B9\u51FB\u5DE6\u4FA7\u5B57\u6BB5\u521B\u5EFA\u8868\u5355 ", -1);
3423
- const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
3424
- __name: "no-data-tip",
3425
- props: {},
3426
- setup(__props) {
3427
- return (_ctx, _cache) => {
3428
- return vue.openBlock(), vue.createElementBlock("div", null, [
3429
- (vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$5, _hoisted_3$2)),
3430
- _hoisted_4$1
3431
- ]);
3432
- };
3433
- }
3434
- });
3435
- var NoDataTip = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__file", "no-data-tip.vue"]]);
3436
-
3437
- const formDesignerProps = {
3438
- formRules: {
3439
- type: Array,
3440
- default() {
3441
- return [];
3442
- },
3443
- },
3444
- presetRules: {
3445
- type: Array,
3446
- default() {
3447
- return [];
3448
- },
3449
- },
3450
- flowCondition: {
3451
- type: Object,
3452
- default() {
3453
- return {};
3454
- },
3455
- },
3456
- };
3457
-
3458
- const _hoisted_1$4 = {
3459
- key: 0,
3460
- style: { "font-weight": "normal" }
3461
- };
3462
- const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
3463
- __name: "table-head-count",
3464
- props: ["childRules"],
3465
- setup(__props) {
3466
- const props = __props;
3467
- const text = vue.computed(
3468
- () => props.childRules.filter((rule) => rule.type === "inputNumber" && rule.config.count).reduce((pre, item, index) => {
3469
- if (index > 0)
3470
- pre += "\u3001";
3471
- return pre + `${item.title.title}: 0`;
3472
- }, "")
3473
- );
3474
- return (_ctx, _cache) => {
3475
- return vue.openBlock(), vue.createElementBlock("div", null, [
3476
- vue.renderSlot(_ctx.$slots, "default"),
3477
- vue.unref(text) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$4, "\uFF08" + vue.toDisplayString(vue.unref(text)) + "\uFF09", 1)) : vue.createCommentVNode("v-if", true)
3478
- ]);
3479
- };
3480
- }
3481
- });
3482
- var TableHeadCount = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__file", "table-head-count.vue"]]);
3483
-
3484
- const _hoisted_1$3 = { style: { "position": "absolute", "right": "0", "top": "-30px", "display": "flex", "align-items": "center" } };
3485
- const _hoisted_2$2 = /* @__PURE__ */ vue.createTextVNode("\u5FC5\u586B");
3486
- const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
3487
- __name: "checkbox-switch",
3488
- props: ["rule"],
3489
- setup(__props) {
3490
- return (_ctx, _cache) => {
3491
- return vue.openBlock(), vue.createElementBlock("span", _hoisted_1$3, [
3492
- vue.createVNode(vue.unref(antDesignVue.FormItemRest), null, {
3493
- default: vue.withCtx(() => [
3494
- vue.createVNode(vue.unref(antDesignVue.Checkbox), {
3495
- checked: __props.rule.config.uploadPictureRule.required,
3496
- "onUpdate:checked": _cache[0] || (_cache[0] = ($event) => __props.rule.config.uploadPictureRule.required = $event)
3497
- }, {
3498
- default: vue.withCtx(() => [
3499
- _hoisted_2$2
3500
- ]),
3501
- _: 1
3502
- }, 8, ["checked"]),
3503
- vue.createVNode(vue.unref(antDesignVue.Switch), {
3504
- checked: __props.rule.config.uploadPictureRule.hidden,
3505
- "onUpdate:checked": _cache[1] || (_cache[1] = ($event) => __props.rule.config.uploadPictureRule.hidden = $event),
3506
- style: { "margin-left": "8px" },
3507
- "checked-children": "\u5F00",
3508
- "un-checked-children": "\u5173",
3509
- "checked-value": false,
3510
- "un-checked-value": true
3511
- }, null, 8, ["checked"])
3512
- ]),
3513
- _: 1
3514
- })
3515
- ]);
3516
- };
3517
- }
3518
- });
3519
- var CheckboxSwitch = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__file", "checkbox-switch.vue"]]);
3520
-
3521
- const widgetsTableAccept = {
3522
- [input.name]: input,
3523
- [textarea.name]: textarea,
3524
- [numInput.name]: numInput,
3525
- [radio.name]: radio,
3526
- [checkbox.name]: checkbox,
3527
- [date.name]: date,
3528
- [dateRange.name]: dateRange,
3529
- [people.name]: people,
3530
- [department.name]: department,
3531
- [product.name]: product,
3532
- [shop.name]: shop,
3533
- [materialType.name]: materialType,
3534
- };
3535
- const widgetNamesRowAccept = [
3536
- input.name,
3537
- textarea.name,
3538
- numInput.name,
3539
- radio.name,
3540
- checkbox.name,
3541
- date.name,
3542
- dateRange.name,
3543
- picture.name,
3544
- table.name,
3545
- file.name,
3546
- people.name,
3547
- department.name,
3548
- product.name,
3549
- shop.name,
3550
- materialType.name,
3551
- ];
3552
- var ruleList = {
3553
- [row.name]: row,
3554
- [input.name]: input,
3555
- [textarea.name]: textarea,
3556
- [numInput.name]: numInput,
3557
- [radio.name]: radio,
3558
- [checkbox.name]: checkbox,
3559
- [date.name]: date,
3560
- [dateRange.name]: dateRange,
3561
- [instruction.name]: instruction,
3562
- [picture.name]: picture,
3563
- [table.name]: table,
3564
- [file.name]: file,
3565
- [people.name]: people,
3566
- [department.name]: department,
3567
- [materialTemp.name]: materialTemp,
3568
- [product.name]: product,
3569
- [shop.name]: shop,
3570
- [materialType.name]: materialType,
3571
- };
3572
-
3573
- const _hoisted_1$2 = { class: "bm-table-column__main" };
3574
- const _hoisted_2$1 = { class: "bm-table-column-btn-wrap" };
3575
- const _hoisted_3$1 = /* @__PURE__ */ vue.createTextVNode(" \u6DFB\u52A0\u5B50\u5B57\u6BB5 ");
3576
- const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
3577
- __name: "table-column",
3578
- props: ["formCreateInject"],
3579
- setup(__props) {
3580
- const props = __props;
3581
- const handleClass = "bm-table-column__drag-icon";
3582
- const btnCom = vue.ref();
3583
- const open = vue.ref(false);
3584
- const childRules = vue.computed(() => props.formCreateInject.rule.value);
3585
- const api = vue.computed(() => props.formCreateInject.api);
3586
- const options = vue.computed(() => Object.values(widgetsTableAccept));
3587
- function handleEdit(rule) {
3588
- api.value.emit("setActive", rule);
3589
- }
3590
- function add() {
3591
- open.value = true;
3592
- }
3593
- function handleSelect(value, config) {
3594
- api.value.emit("addChildRule", config);
3595
- open.value = false;
3596
- btnCom.value.$el.blur();
3597
- }
3598
- return (_ctx, _cache) => {
3599
- const _component_Delete = vue.resolveComponent("Delete");
3600
- const _component_ARow = vue.resolveComponent("ARow");
3601
- return vue.openBlock(), vue.createElementBlock("div", null, [
3602
- vue.createVNode(vue.unref(Draggable__default["default"]), {
3603
- tag: "transition-group",
3604
- "component-data": {
3605
- name: "flip-list"
3606
- },
3607
- animation: 200,
3608
- list: vue.unref(childRules),
3609
- handle: `.${handleClass}`,
3610
- "force-fallback": true
3611
- }, {
3612
- item: vue.withCtx(({ element, index }) => [
3613
- vue.createVNode(_component_ARow, {
3614
- class: "bm-table-column",
3615
- align: "middle"
3616
- }, {
3617
- default: vue.withCtx(() => [
3618
- vue.createVNode(vue.unref(iconsVue.HolderOutlined), {
3619
- class: vue.normalizeClass([handleClass])
3620
- }, null, 8, ["class"]),
3621
- vue.createElementVNode("div", _hoisted_1$2, vue.toDisplayString(element.title.title), 1),
3622
- vue.createVNode(vue.unref(iconsVue.EditOutlined), {
3623
- class: "bm-table-column__icon is-edit",
3624
- onClick: ($event) => handleEdit(element)
3625
- }, null, 8, ["onClick"]),
3626
- vue.createVNode(_component_Delete, {
3627
- class: "bm-table-column__icon is-del",
3628
- onClick: ($event) => vue.unref(childRules).splice(index, 1)
3629
- }, null, 8, ["onClick"])
3630
- ]),
3631
- _: 2
3632
- }, 1024)
3633
- ]),
3634
- _: 1
3635
- }, 8, ["list", "handle"]),
3636
- vue.createElementVNode("div", _hoisted_2$1, [
3637
- vue.createVNode(vue.unref(antDesignVue.FormItemRest), null, {
3638
- default: vue.withCtx(() => [
3639
- vue.createVNode(vue.unref(antDesignVue.Select), {
3640
- value: "",
3641
- class: "bm-table-column__select",
3642
- options: vue.unref(options),
3643
- "field-names": { value: "name" },
3644
- open: open.value,
3645
- placeholder: "\u8BF7\u9009\u62E9",
3646
- onSelect: handleSelect
3647
- }, null, 8, ["options", "open"])
3648
- ]),
3649
- _: 1
3650
- }),
3651
- vue.createVNode(vue.unref(antDesignVue.Button), {
3652
- ref_key: "btnCom",
3653
- ref: btnCom,
3654
- class: "bm-table-column__btn",
3655
- block: "",
3656
- onClick: add
3657
- }, {
3658
- icon: vue.withCtx(() => [
3659
- vue.createVNode(vue.unref(iconsVue.PlusOutlined))
3660
- ]),
3661
- default: vue.withCtx(() => [
3662
- _hoisted_3$1
3663
- ]),
3664
- _: 1
3665
- }, 512)
3666
- ])
3667
- ]);
3668
- };
3669
- }
3670
- });
3671
- var TableColumn = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__file", "table-column.vue"]]);
3672
-
3673
- const _hoisted_1$1 = /* @__PURE__ */ vue.createTextVNode("change");
3674
- const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
3675
- __name: "text-color",
3676
- props: ["rule"],
3677
- setup(__props) {
3678
- const props = __props;
3679
- function handleClick() {
3680
- const rule = props.rule;
3681
- rule.style.color = rule.style.color === Colors.Black ? Colors.Blue : Colors.Black;
3682
- }
3683
- return (_ctx, _cache) => {
3684
- const _component_ColorPanel = vue.resolveComponent("ColorPanel");
3685
- return vue.openBlock(), vue.createBlock(_component_ColorPanel, {
3686
- style: vue.normalizeStyle({
3687
- position: "absolute",
3688
- top: "-29px",
3689
- right: 0,
3690
- width: "1em",
3691
- height: "1em",
3692
- fontSize: "20px",
3693
- color: __props.rule.style.color,
3694
- cursor: "pointer"
3695
- }),
3696
- onClick: vue.withModifiers(handleClick, ["prevent", "stop"])
3697
- }, {
3698
- default: vue.withCtx(() => [
3699
- _hoisted_1$1
3700
- ]),
3701
- _: 1
3702
- }, 8, ["style", "onClick"]);
3703
- };
3704
- }
3705
- });
3706
- var TextColor = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__file", "text-color.vue"]]);
3707
-
3708
- const _hoisted_1 = { class: "bm-menu-title" };
3709
- const _hoisted_2 = ["onClick"];
3710
- const _hoisted_3 = { class: "bfd-main__warp" };
3711
- const _hoisted_4 = { class: "bm-widget-form-item" };
3712
- const _hoisted_5 = {
3713
- key: 0,
3714
- class: "bfd-sider-right__title"
3715
- };
3716
- const _hoisted_6 = /* @__PURE__ */ vue.createTextVNode(" \u5355\u4E2A\u6587\u4EF6\u5927\u5C0F\u9700\u572820M\u4EE5\u5185 ");
3717
- const _hoisted_7 = { class: "bfd-sider-right__form" };
3718
- const _hoisted_8 = {
3719
- key: 0,
3720
- class: "bfd-sider-right__form__flow-releated"
3721
- };
3722
16
  const __default__ = {
3723
17
  name: "BmFormDesigner"
3724
18
  };
3725
19
  const _sfc_main = /* @__PURE__ */ vue.defineComponent({
3726
20
  ...__default__,
3727
- props: formDesignerProps,
3728
- setup(__props, { expose }) {
3729
- const props = __props;
3730
- FC__default["default"].component("TableHeadCount", TableHeadCount);
3731
- FC__default["default"].component("TableColumn", TableColumn);
3732
- FC__default["default"].component("TextColor", TextColor);
3733
- FC__default["default"].component("CheckboxSwitch", CheckboxSwitch);
3734
- FC__default["default"].register({
3735
- name: "formRule",
3736
- init(effect, rule, api) {
3737
- const config = api.config;
3738
- const parentType = config.parentType;
3739
- if (!rule.config.fieldRatio) {
3740
- resetFieldRatio(rule, parentType);
3741
- }
3742
- if (rule?.props?.type === "textarea" && parentType === WidgetType.TableWidget) {
3743
- rule.props.autoSize = true;
3744
- }
3745
- if (rule.config.config.name === "product" && parentType === WidgetType.TableWidget) {
3746
- rule.type = "input";
3747
- delete rule.component;
3748
- rule.title.title = "\u5546\u54C1\u7F16\u53F7";
3749
- rule.props = {};
3750
- rule.props.placeholder = "\u8BF7\u8F93\u5165";
3751
- }
3752
- }
3753
- });
3754
- const showDragTip = vue.ref(true);
3755
- const tabData = createTab();
3756
- const activeKey = vue.ref("controlLibrary");
3757
- const widgetFormRules = vue.reactive([]);
3758
- const activeRule = vue.ref({});
3759
- const cacheProps = vue.reactive({});
3760
- const fApi = vue.ref();
3761
- const activeParentRule = vue.ref();
3762
- const menuList = vue.computed(
3763
- () => tabData.find((tab) => tab.key === activeKey.value).menuList
3764
- );
3765
- const activeProps = vue.computed(() => cacheProps[activeRule.value.field]);
3766
- const activeRuleInList = vue.computed(
3767
- () => activeParentRule.value?.config?.childRules || widgetFormRules
3768
- );
3769
- function hideShowDragTip() {
3770
- showDragTip.value = false;
3771
- }
3772
- function handleTabChange(key) {
3773
- activeKey.value = key;
3774
- }
3775
- function cloneMenuItem(original) {
3776
- return makeRule(original);
3777
- }
3778
- function checkDragMove(evt) {
3779
- const draggedData = evt.dragged._underlying_vm_ || {};
3780
- const toComponentData = evt.to.__draggable_component__.componentData || {};
3781
- const widgetNameDragged = draggedData?.config?.config?.name;
3782
- if (toComponentData.type === WidgetType.RowWidget && !widgetNamesRowAccept.includes(widgetNameDragged) || toComponentData.type === WidgetType.TableWidget && !Object.keys(widgetsTableAccept).includes(widgetNameDragged)) {
3783
- widgetFormRules.forEach((rule) => {
3784
- rule.config.putDisabled = rule.field === toComponentData.field;
3785
- });
3786
- return false;
3787
- } else {
3788
- widgetFormRules.forEach((rule) => {
3789
- rule.config.putDisabled = false;
3790
- });
3791
- }
3792
- }
3793
- function moveMenuItem(evt) {
3794
- return checkDragMove(evt);
3795
- }
3796
- function moveFormItem(evt) {
3797
- return checkDragMove(evt);
3798
- }
3799
- function handleMenuItemDragStart(evt) {
3800
- const item = evt.item.children[0];
3801
- const cloneItem = evt.clone.children[0];
3802
- item.style.opacity = 0.3;
3803
- cloneItem.style.opacity = 0.3;
3804
- item.style.color = "#2F4EED";
3805
- cloneItem.style.color = "#2F4EED";
3806
- }
3807
- function resetPutDisabled() {
3808
- widgetFormRules.forEach((rule) => {
3809
- rule.config.putDisabled = false;
3810
- });
3811
- }
3812
- function handleMenuItemDragEnd(evt) {
3813
- evt.item.children[0].style.opacity = "";
3814
- evt.item.children[0].style.color = "";
3815
- resetPutDisabled();
3816
- }
3817
- function handleMenuItemClick(config) {
3818
- const rule = makeRule(config);
3819
- const activeParentRuleName = activeParentRule.value?.config?.config?.name;
3820
- if (!widgetNamesRowAccept.includes(config.name) && activeParentRuleName === "row" || !Object.keys(widgetsTableAccept).includes(config.name) && activeParentRuleName === "table") {
3821
- disabledTip(activeParentRule.value.config.config.name);
3822
- } else {
3823
- const index = activeRuleInList.value.findIndex(
3824
- (item) => item.field === activeRule.value.field
3825
- );
3826
- activeRuleInList.value.splice(index + 1, 0, rule);
3827
- setActiveRule(rule, activeParentRule.value);
3828
- hideShowDragTip();
3829
- }
3830
- }
3831
- function makeRule(config) {
3832
- const rule = config.rule();
3833
- rule.config.config = config;
3834
- return rule;
3835
- }
3836
- function disabledTip(name) {
3837
- antDesignVue.message.warning({
3838
- content: name === "table" ? "\u8BE5\u63A7\u4EF6\u6682\u4E0D\u652F\u6301\u62D6\u5165\u8868\u683C\u4E2D" : "\u8BE5\u63A7\u4EF6\u6682\u4E0D\u652F\u6301\u5206\u680F",
3839
- class: "bm-form-designer__message-warning"
3840
- });
3841
- }
3842
- function putDisabledTip() {
3843
- const targetRule = widgetFormRules.find((rule) => rule.config.putDisabled);
3844
- if (targetRule) {
3845
- disabledTip(targetRule.config.config.name);
3846
- }
3847
- }
3848
- function dragAdd(rule, parentRule = void 0) {
3849
- resetFieldRatio(rule, parentRule?.type);
3850
- if (cacheProps[rule.field])
3851
- delete cacheProps[rule.field];
3852
- setActiveRule(rule, parentRule);
3853
- putDisabledTip();
3854
- }
3855
- function handleFormItemAdd({ newIndex }) {
3856
- const rule = widgetFormRules[newIndex];
3857
- dragAdd(rule);
3858
- hideShowDragTip();
3859
- }
3860
- function handleFormItemUpdate({ newIndex }) {
3861
- const rule = widgetFormRules[newIndex];
3862
- if (rule)
3863
- setActiveRule(widgetFormRules[newIndex]);
3864
- }
3865
- function handleFormItemDragEnd() {
3866
- putDisabledTip();
3867
- resetPutDisabled();
3868
- }
3869
- function handleFormItemClick(rule) {
3870
- setActiveRule(rule);
3871
- }
3872
- function makeChildRules(ruleList2) {
3873
- return ruleList2.map((rule) => makeRule(rule.config.config));
3874
- }
3875
- function handleFormItemCopy(rule, parentRule) {
3876
- const newRule = makeRule(rule.config.config);
3877
- const list = parentRule?.config?.childRules || widgetFormRules;
3878
- const index = list.findIndex((ruleItem) => ruleItem.field === rule.field);
3879
- if (rule.config.childRules?.length) {
3880
- newRule.config.childRules.push(...makeChildRules(rule.config.childRules));
3881
- }
3882
- list.splice(index + 1, 0, newRule);
3883
- copyPropValue(rule, newRule);
3884
- setActiveRule(newRule, parentRule);
3885
- }
3886
- function handleFormItemDelete(targetRule, parentRule) {
3887
- if (targetRule.config.linkProductCount > 0) {
3888
- antDesignVue.message.error("\u8BE5\u63A7\u4EF6\u5DF2\u88AB\u8BBE\u4E3A\u6570\u636E\u8FC7\u6EE4\u6761\u4EF6\uFF0C\u4E0D\u53EF\u5220\u9664\u3002");
3889
- return;
3890
- }
3891
- const parentList = parentRule?.config?.childRules || widgetFormRules;
3892
- const index = parentList.findIndex((rule) => rule.field === targetRule.field);
3893
- parentList.splice(index, 1);
3894
- delete cacheProps[targetRule.field];
3895
- if (targetRule.field === activeRule.value.field) {
3896
- const newIndex = Math.min(parentList.length - 1, index);
3897
- if (newIndex >= 0) {
3898
- setActiveRule(parentList[newIndex]);
3899
- } else if (parentRule) {
3900
- setActiveRule(parentRule);
3901
- } else {
3902
- activeRule.value = {};
3903
- }
3904
- } else if (targetRule?.config?.childRules?.some(
3905
- (rule) => rule.field === activeRule.value.field
3906
- )) {
3907
- const newIndex = Math.min(parentList.length - 1, index);
3908
- if (newIndex >= 0) {
3909
- setActiveRule(parentList[newIndex]);
3910
- } else {
3911
- activeRule.value = {};
3912
- activeParentRule.value = widgetFormRules;
3913
- }
3914
- }
3915
- }
3916
- function makePropRule(rule, parentRule) {
3917
- return rule.config.config.props(rule, parentRule, widgetFormRules);
3918
- }
3919
- function setActiveRule(rule, parentRule = void 0) {
3920
- activeRule.value = rule;
3921
- activeParentRule.value = parentRule;
3922
- widgetFormRules.forEach((item) => {
3923
- if (item.type === WidgetType.RowWidget || item.type === WidgetType.TableWidget) {
3924
- vue.nextTick(() => {
3925
- item.props.activeRule = rule;
3926
- });
3927
- }
3928
- });
3929
- if (!cacheProps[rule.field]) {
3930
- cacheProps[rule.field] = makePropRule(rule, parentRule);
3931
- }
3932
- }
3933
- function propChange(field, value) {
3934
- setRulePropValue(field, value, activeRule.value);
3935
- }
3936
- function setRulePropValue(field, value, rule) {
3937
- field.split(".").reduce((pre, cur, index, arr) => {
3938
- if (index === arr.length - 1) {
3939
- pre[cur] = value;
3940
- } else {
3941
- if (!pre[cur]) {
3942
- pre[cur] = {};
3943
- }
3944
- }
3945
- return pre[cur];
3946
- }, rule);
3947
- }
3948
- function copyPropValue(oldRule, newRule) {
3949
- newRule.config.propsFields.forEach((field) => {
3950
- if (field !== "config.childRules")
3951
- setRulePropValue(field, lodashEs.cloneDeep(getValue(field, oldRule)), newRule);
3952
- });
3953
- if (newRule.config.childRules?.length) {
3954
- newRule.config.childRules.forEach((rule, index) => {
3955
- copyPropValue(oldRule.config.childRules[index], rule);
3956
- });
3957
- }
3958
- }
3959
- function handleWidgetAdd(rule, parentRule) {
3960
- dragAdd(rule, parentRule);
3961
- }
3962
- function handlePropsSetActive(rule) {
3963
- setActiveRule(rule, activeRule.value);
3964
- }
3965
- function handleAddChildRule(config) {
3966
- const rule = makeRule(config);
3967
- activeRule.value.config.childRules.push(rule);
3968
- }
3969
- function getValue(field, oldRule) {
3970
- return field.split(".").reduce((pre, cur) => {
3971
- return pre[cur];
3972
- }, oldRule);
3973
- }
3974
- function resetFieldRatio(rule, parentRuleType) {
3975
- if (!parentRuleType) {
3976
- rule.config.fieldRatio = "100%";
3977
- } else if (parentRuleType === WidgetType.RowWidget) {
3978
- const ruleName = rule.config.config.name;
3979
- rule.config.fieldRatio = ruleName === "table" || ruleName === "product" ? 24 : 12;
3980
- } else if (parentRuleType === WidgetType.TableWidget) {
3981
- rule.config.fieldRatio = "140px";
3982
- }
3983
- }
3984
- function getFormRule() {
3985
- return widgetFormRules.map((rule) => {
3986
- const ruleParsed = parseRule(rule);
3987
- const childRules = rule?.config?.childRules;
3988
- if (childRules?.length) {
3989
- const childRulesParsed = ruleParsed.config.childRules = [];
3990
- childRules.forEach((ruleItem) => {
3991
- childRulesParsed.push(parseRule(ruleItem));
3992
- });
3993
- }
3994
- return ruleParsed;
3995
- });
3996
- }
3997
- function parseRule(rule) {
3998
- return rule.config.config.parse(rule);
3999
- }
4000
- function edit(formRules) {
4001
- formRules.forEach((item) => {
4002
- const rule = makeRule(ruleList[item.name]);
4003
- delete item.name;
4004
- if (item?.config?.childRules?.length) {
4005
- rule.config.childRules = item.config.childRules.map((childItem) => {
4006
- const childRule = makeRule(ruleList[childItem.name]);
4007
- delete childItem.name;
4008
- return childRule;
4009
- });
4010
- }
4011
- lodashEs.merge(rule, item);
4012
- widgetFormRules.push(rule);
4013
- });
4014
- }
4015
- function getRule(name) {
4016
- return makeRule(ruleList[name]);
4017
- }
4018
- vue.watch(
4019
- () => props.presetRules,
4020
- (presetRules) => {
4021
- widgetFormRules.push(...presetRules);
4022
- },
4023
- {
4024
- immediate: true
4025
- }
4026
- );
4027
- vue.watch(
4028
- () => props.formRules,
4029
- (formRules) => {
4030
- edit(formRules);
4031
- },
21
+ setup(__props) {
22
+ const rule = [
4032
23
  {
4033
- immediate: true
24
+ type: "input",
25
+ title: "\u5546\u54C1\u540D\u79F0",
26
+ field: "goods_name"
4034
27
  }
4035
- );
4036
- vue.onBeforeUnmount(() => {
4037
- resetIndex();
4038
- });
4039
- expose({
4040
- getFormRule,
4041
- getRule
4042
- });
28
+ ];
4043
29
  return (_ctx, _cache) => {
4044
- const _component_ACol = vue.resolveComponent("ACol");
4045
- const _component_ARow = vue.resolveComponent("ARow");
4046
- const _component_FormCreate = vue.resolveComponent("FormCreate");
4047
- return vue.openBlock(), vue.createBlock(vue.unref(antDesignVue.Layout), { class: "bm-form-designer" }, {
4048
- default: vue.withCtx(() => [
4049
- vue.createVNode(vue.unref(antDesignVue.LayoutSider), {
4050
- class: "bfd-sider-left",
4051
- width: "260"
4052
- }, {
4053
- default: vue.withCtx(() => [
4054
- vue.createVNode(_component_ARow, { class: "bm-tabs" }, {
4055
- default: vue.withCtx(() => [
4056
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(tabData), (item) => {
4057
- return vue.openBlock(), vue.createBlock(_component_ACol, {
4058
- key: item.key,
4059
- class: vue.normalizeClass(["bm-tabs-item", activeKey.value === item.key ? "active" : ""]),
4060
- onClick: ($event) => handleTabChange(item.key)
4061
- }, {
4062
- default: vue.withCtx(() => [
4063
- vue.createTextVNode(vue.toDisplayString(item.tab), 1)
4064
- ]),
4065
- _: 2
4066
- }, 1032, ["class", "onClick"]);
4067
- }), 128))
4068
- ]),
4069
- _: 1
4070
- }),
4071
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(menuList), (item, index) => {
4072
- return vue.openBlock(), vue.createElementBlock("div", { key: index }, [
4073
- vue.createElementVNode("div", _hoisted_1, vue.toDisplayString(item.title), 1),
4074
- vue.createVNode(vue.unref(Draggable__default["default"]), {
4075
- class: "bm-menu-wrap",
4076
- list: item.list,
4077
- group: { name: "widget", pull: "clone", put: false },
4078
- "item-key": "name",
4079
- sort: false,
4080
- clone: cloneMenuItem,
4081
- move: moveMenuItem,
4082
- "force-fallback": true,
4083
- "scroll-sensitivity": 100,
4084
- delay: 50,
4085
- onStart: handleMenuItemDragStart,
4086
- onEnd: handleMenuItemDragEnd
4087
- }, {
4088
- item: vue.withCtx(({ element }) => [
4089
- vue.createElementVNode("div", {
4090
- style: vue.normalizeStyle({ flexBasis: item.name === "dataForm" ? "100%" : "50%" }),
4091
- class: "bm-menu-item-wrap"
4092
- }, [
4093
- vue.createElementVNode("div", {
4094
- class: "bm-menu-item",
4095
- onClick: ($event) => handleMenuItemClick(element)
4096
- }, [
4097
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(element.icon), { class: "bm-menu-icon" })),
4098
- vue.createTextVNode(" " + vue.toDisplayString(element.label), 1)
4099
- ], 8, _hoisted_2),
4100
- vue.createVNode(DragPlaceholder)
4101
- ], 4)
4102
- ]),
4103
- _: 2
4104
- }, 1032, ["list"])
4105
- ]);
4106
- }), 128))
4107
- ]),
4108
- _: 1
4109
- }),
4110
- vue.createVNode(vue.unref(antDesignVue.LayoutContent), { class: "bfd-main" }, {
4111
- default: vue.withCtx(() => [
4112
- vue.createElementVNode("div", _hoisted_3, [
4113
- vue.createVNode(vue.unref(Draggable__default["default"]), {
4114
- list: widgetFormRules,
4115
- class: "bm-widget-form",
4116
- group: {
4117
- name: "formWidget",
4118
- pull: true,
4119
- put: ["widget", "formWidget", "rowWidget"]
4120
- },
4121
- "item-key": "field",
4122
- "ghost-class": "form-item-drag-ghost",
4123
- move: moveFormItem,
4124
- "force-fallback": true,
4125
- delay: 50,
4126
- onAdd: handleFormItemAdd,
4127
- onUpdate: handleFormItemUpdate,
4128
- onEnd: handleFormItemDragEnd
4129
- }, {
4130
- item: vue.withCtx(({ element }) => [
4131
- vue.createElementVNode("div", _hoisted_4, [
4132
- vue.createVNode(DragTool, {
4133
- rule: element,
4134
- "active-rule": activeRule.value,
4135
- style: vue.normalizeStyle({
4136
- width: element.config.fieldRatio
4137
- }),
4138
- onCopy: handleFormItemCopy,
4139
- onDelete: handleFormItemDelete,
4140
- onClick: ($event) => handleFormItemClick(element),
4141
- onSetActiveRule: setActiveRule,
4142
- onWidgetAdd: handleWidgetAdd
4143
- }, null, 8, ["rule", "active-rule", "style", "onClick"]),
4144
- vue.createVNode(DragPlaceholder)
4145
- ])
4146
- ]),
4147
- _: 1
4148
- }, 8, ["list"]),
4149
- showDragTip.value && !_ctx.formRules.length ? (vue.openBlock(), vue.createBlock(NoDataTip, {
4150
- key: 0,
4151
- class: "bm-no-data-tip"
4152
- })) : vue.createCommentVNode("v-if", true)
4153
- ])
4154
- ]),
4155
- _: 1
4156
- }),
4157
- vue.createVNode(vue.unref(antDesignVue.LayoutSider), {
4158
- class: "bfd-sider-right",
4159
- width: "288"
4160
- }, {
4161
- default: vue.withCtx(() => [
4162
- activeRule.value.field ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, [
4163
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(activeRule.value.config?.config.icon))),
4164
- vue.createTextVNode(" " + vue.toDisplayString(activeRule.value.config?.config.label) + " ", 1),
4165
- activeRule.value.type === vue.unref(WidgetType).UploadFile ? (vue.openBlock(), vue.createBlock(vue.unref(antDesignVue.Tooltip), { key: 0 }, {
4166
- title: vue.withCtx(() => [
4167
- _hoisted_6
4168
- ]),
4169
- default: vue.withCtx(() => [
4170
- vue.createVNode(vue.unref(iconsVue.QuestionCircleOutlined), { style: { "color": "#babac1", "font-size": "14px", "margin-left": "5px" } })
4171
- ]),
4172
- _: 1
4173
- })) : vue.createCommentVNode("v-if", true)
4174
- ])) : vue.createCommentVNode("v-if", true),
4175
- vue.createElementVNode("div", _hoisted_7, [
4176
- _ctx.flowCondition[activeRule.value.field] ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8, [
4177
- vue.createVNode(vue.unref(iconsVue.ExclamationCircleFilled), { style: { "color": "#2f4eed" } }),
4178
- vue.createTextVNode(" \u8BE5\u7EC4\u4EF6\u5728\u201C" + vue.toDisplayString(_ctx.flowCondition[activeRule.value.field]) + "\u201D\u5DF2\u88AB\u8BBE\u4E3A\u5BA1\u6279\u6761\u4EF6\uFF0C\u9664\u201C\u5FC5\u586B\u3001\u9009\u9879\u201D\u8BBE\u7F6E\u4E0D\u53EF\u4FEE\u6539\uFF0C\u5176\u4ED6\u4FE1\u606F\u53EF\u4FEE\u6539 ", 1)
4179
- ])) : vue.createCommentVNode("v-if", true),
4180
- vue.createVNode(_component_FormCreate, {
4181
- api: fApi.value,
4182
- "onUpdate:api": _cache[0] || (_cache[0] = ($event) => fApi.value = $event),
4183
- option: {
4184
- form: {
4185
- layout: "vertical"
4186
- },
4187
- submitBtn: {
4188
- show: false
4189
- },
4190
- info: {
4191
- type: "tooltip",
4192
- align: "left",
4193
- arrowPointAtCenter: true,
4194
- overlayStyle: {
4195
- width: "184px"
4196
- }
4197
- }
4198
- },
4199
- rule: vue.unref(activeProps),
4200
- onChange: propChange,
4201
- onSetActive: handlePropsSetActive,
4202
- onAddChildRule: handleAddChildRule
4203
- }, null, 8, ["api", "rule"])
4204
- ])
4205
- ]),
4206
- _: 1
4207
- })
4208
- ]),
4209
- _: 1
4210
- });
30
+ const _component_form_create = vue.resolveComponent("form-create");
31
+ return vue.openBlock(), vue.createBlock(_component_form_create, { rule });
4211
32
  };
4212
33
  }
4213
34
  });