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