hy-dispatch-ui-v3 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/dist/tailwind.css +1083 -0
  4. package/es/bussiness/index.mjs +2 -0
  5. package/es/bussiness/index.mjs.map +1 -0
  6. package/es/components/appConfirmDialog/appConfirmDialog.vue.mjs +204 -0
  7. package/es/components/appConfirmDialog/appConfirmDialog.vue.mjs.map +1 -0
  8. package/es/components/appConfirmDialog/appConfirmMethod.mjs +73 -0
  9. package/es/components/appConfirmDialog/appConfirmMethod.mjs.map +1 -0
  10. package/es/components/appConfirmDialog/index.mjs +8 -0
  11. package/es/components/appConfirmDialog/index.mjs.map +1 -0
  12. package/es/components/appConfirmDialog/style/appConfirmDialog.scss +5 -0
  13. package/es/components/appDatePicker/appDatePicker.vue.mjs +99 -0
  14. package/es/components/appDatePicker/appDatePicker.vue.mjs.map +1 -0
  15. package/es/components/appDatePicker/index.mjs +7 -0
  16. package/es/components/appDatePicker/index.mjs.map +1 -0
  17. package/es/components/appDatePicker/style/appDatePicker.scss +0 -0
  18. package/es/components/appForm/appForm.vue.mjs +331 -0
  19. package/es/components/appForm/appForm.vue.mjs.map +1 -0
  20. package/es/components/appForm/index.mjs +8 -0
  21. package/es/components/appForm/index.mjs.map +1 -0
  22. package/es/components/appForm/js/index.mjs +87 -0
  23. package/es/components/appForm/js/index.mjs.map +1 -0
  24. package/es/components/appForm/js/useAppForm.mjs +149 -0
  25. package/es/components/appForm/js/useAppForm.mjs.map +1 -0
  26. package/es/components/appForm/style/appForm.scss +16 -0
  27. package/es/components/appOrgCascader/appOrgCascader.vue.mjs +229 -0
  28. package/es/components/appOrgCascader/appOrgCascader.vue.mjs.map +1 -0
  29. package/es/components/appOrgCascader/index.mjs +7 -0
  30. package/es/components/appOrgCascader/index.mjs.map +1 -0
  31. package/es/components/appOrgCascader/style/appOrgCascader.scss +0 -0
  32. package/es/components/appSearch/appSearch.vue.mjs +408 -0
  33. package/es/components/appSearch/appSearch.vue.mjs.map +1 -0
  34. package/es/components/appSearch/index.mjs +8 -0
  35. package/es/components/appSearch/index.mjs.map +1 -0
  36. package/es/components/appSearch/js/index.mjs +114 -0
  37. package/es/components/appSearch/js/index.mjs.map +1 -0
  38. package/es/components/appSearch/js/useAppSearch.mjs +178 -0
  39. package/es/components/appSearch/js/useAppSearch.mjs.map +1 -0
  40. package/es/components/appSearch/style/appSearch.scss +53 -0
  41. package/es/components/appTable/appTable.vue.mjs +578 -0
  42. package/es/components/appTable/appTable.vue.mjs.map +1 -0
  43. package/es/components/appTable/cpns/columnSelect.vue.mjs +414 -0
  44. package/es/components/appTable/cpns/columnSelect.vue.mjs.map +1 -0
  45. package/es/components/appTable/index.mjs +8 -0
  46. package/es/components/appTable/index.mjs.map +1 -0
  47. package/es/components/appTable/js/index.mjs +304 -0
  48. package/es/components/appTable/js/index.mjs.map +1 -0
  49. package/es/components/appTable/js/search.mjs +129 -0
  50. package/es/components/appTable/js/search.mjs.map +1 -0
  51. package/es/components/appTable/js/useAppTable.mjs +63 -0
  52. package/es/components/appTable/js/useAppTable.mjs.map +1 -0
  53. package/es/components/appTable/style/appTable.scss +15 -0
  54. package/es/components/appTooltip/appTooltip.vue.mjs +94 -0
  55. package/es/components/appTooltip/appTooltip.vue.mjs.map +1 -0
  56. package/es/components/appTooltip/index.mjs +7 -0
  57. package/es/components/appTooltip/index.mjs.map +1 -0
  58. package/es/components/appTooltip/style/appTooltip.scss +0 -0
  59. package/es/components/index.mjs +12 -0
  60. package/es/components/index.mjs.map +1 -0
  61. package/es/components/svgIcon/iconBox.vue.mjs +99 -0
  62. package/es/components/svgIcon/iconBox.vue.mjs.map +1 -0
  63. package/es/components/svgIcon/index.mjs +9 -0
  64. package/es/components/svgIcon/index.mjs.map +1 -0
  65. package/es/components/svgIcon/style/iconBox.scss +13 -0
  66. package/es/components/svgIcon/style/svgIcon.scss +12 -0
  67. package/es/components/svgIcon/svgIcon.vue.mjs +47 -0
  68. package/es/components/svgIcon/svgIcon.vue.mjs.map +1 -0
  69. package/es/config/index.mjs +2 -0
  70. package/es/config/index.mjs.map +1 -0
  71. package/es/constants/index.mjs +4 -0
  72. package/es/constants/index.mjs.map +1 -0
  73. package/es/constants/keys.mjs +2 -0
  74. package/es/constants/keys.mjs.map +1 -0
  75. package/es/hooks/index.mjs +5 -0
  76. package/es/hooks/index.mjs.map +1 -0
  77. package/es/hooks/useApi.mjs +10 -0
  78. package/es/hooks/useApi.mjs.map +1 -0
  79. package/es/hooks/useGlobalConfig.mjs +56 -0
  80. package/es/hooks/useGlobalConfig.mjs.map +1 -0
  81. package/es/hooks/useLocale.mjs +34 -0
  82. package/es/hooks/useLocale.mjs.map +1 -0
  83. package/es/hooks/useMixins.mjs +19 -0
  84. package/es/hooks/useMixins.mjs.map +1 -0
  85. package/es/index.mjs +30 -0
  86. package/es/index.mjs.map +1 -0
  87. package/es/locale/en_US.mjs +67 -0
  88. package/es/locale/en_US.mjs.map +1 -0
  89. package/es/locale/index.mjs +3 -0
  90. package/es/locale/index.mjs.map +1 -0
  91. package/es/locale/zh_CN.mjs +67 -0
  92. package/es/locale/zh_CN.mjs.map +1 -0
  93. package/es/make-installer.mjs +29 -0
  94. package/es/make-installer.mjs.map +1 -0
  95. package/es/store/index.mjs +7 -0
  96. package/es/store/index.mjs.map +1 -0
  97. package/es/store/maintain.mjs +90 -0
  98. package/es/store/maintain.mjs.map +1 -0
  99. package/es/style/index.scss +46 -0
  100. package/es/style/tailwind.scss +3 -0
  101. package/es/style/theme.scss +123 -0
  102. package/es/utils/adaptive.mjs +30 -0
  103. package/es/utils/adaptive.mjs.map +1 -0
  104. package/es/utils/bus.mjs +6 -0
  105. package/es/utils/bus.mjs.map +1 -0
  106. package/es/utils/crypto.mjs +21 -0
  107. package/es/utils/crypto.mjs.map +1 -0
  108. package/es/utils/date.mjs +25 -0
  109. package/es/utils/date.mjs.map +1 -0
  110. package/es/utils/handler.mjs +83 -0
  111. package/es/utils/handler.mjs.map +1 -0
  112. package/es/utils/index.mjs +7 -0
  113. package/es/utils/index.mjs.map +1 -0
  114. package/es/utils/is.mjs +19 -0
  115. package/es/utils/is.mjs.map +1 -0
  116. package/es/version.mjs +4 -0
  117. package/es/version.mjs.map +1 -0
  118. package/lib/bussiness/index.js +3 -0
  119. package/lib/bussiness/index.js.map +1 -0
  120. package/lib/components/appConfirmDialog/appConfirmDialog.vue.js +208 -0
  121. package/lib/components/appConfirmDialog/appConfirmDialog.vue.js.map +1 -0
  122. package/lib/components/appConfirmDialog/appConfirmMethod.js +77 -0
  123. package/lib/components/appConfirmDialog/appConfirmMethod.js.map +1 -0
  124. package/lib/components/appConfirmDialog/index.js +13 -0
  125. package/lib/components/appConfirmDialog/index.js.map +1 -0
  126. package/lib/components/appConfirmDialog/style/appConfirmDialog.scss +5 -0
  127. package/lib/components/appDatePicker/appDatePicker.vue.js +103 -0
  128. package/lib/components/appDatePicker/appDatePicker.vue.js.map +1 -0
  129. package/lib/components/appDatePicker/index.js +12 -0
  130. package/lib/components/appDatePicker/index.js.map +1 -0
  131. package/lib/components/appDatePicker/style/appDatePicker.scss +0 -0
  132. package/lib/components/appForm/appForm.vue.js +335 -0
  133. package/lib/components/appForm/appForm.vue.js.map +1 -0
  134. package/lib/components/appForm/index.js +14 -0
  135. package/lib/components/appForm/index.js.map +1 -0
  136. package/lib/components/appForm/js/index.js +93 -0
  137. package/lib/components/appForm/js/index.js.map +1 -0
  138. package/lib/components/appForm/js/useAppForm.js +152 -0
  139. package/lib/components/appForm/js/useAppForm.js.map +1 -0
  140. package/lib/components/appForm/style/appForm.scss +16 -0
  141. package/lib/components/appOrgCascader/appOrgCascader.vue.js +233 -0
  142. package/lib/components/appOrgCascader/appOrgCascader.vue.js.map +1 -0
  143. package/lib/components/appOrgCascader/index.js +12 -0
  144. package/lib/components/appOrgCascader/index.js.map +1 -0
  145. package/lib/components/appOrgCascader/style/appOrgCascader.scss +0 -0
  146. package/lib/components/appSearch/appSearch.vue.js +412 -0
  147. package/lib/components/appSearch/appSearch.vue.js.map +1 -0
  148. package/lib/components/appSearch/index.js +14 -0
  149. package/lib/components/appSearch/index.js.map +1 -0
  150. package/lib/components/appSearch/js/index.js +122 -0
  151. package/lib/components/appSearch/js/index.js.map +1 -0
  152. package/lib/components/appSearch/js/useAppSearch.js +181 -0
  153. package/lib/components/appSearch/js/useAppSearch.js.map +1 -0
  154. package/lib/components/appSearch/style/appSearch.scss +53 -0
  155. package/lib/components/appTable/appTable.vue.js +582 -0
  156. package/lib/components/appTable/appTable.vue.js.map +1 -0
  157. package/lib/components/appTable/cpns/columnSelect.vue.js +418 -0
  158. package/lib/components/appTable/cpns/columnSelect.vue.js.map +1 -0
  159. package/lib/components/appTable/index.js +14 -0
  160. package/lib/components/appTable/index.js.map +1 -0
  161. package/lib/components/appTable/js/index.js +311 -0
  162. package/lib/components/appTable/js/index.js.map +1 -0
  163. package/lib/components/appTable/js/search.js +131 -0
  164. package/lib/components/appTable/js/search.js.map +1 -0
  165. package/lib/components/appTable/js/useAppTable.js +65 -0
  166. package/lib/components/appTable/js/useAppTable.js.map +1 -0
  167. package/lib/components/appTable/style/appTable.scss +15 -0
  168. package/lib/components/appTooltip/appTooltip.vue.js +98 -0
  169. package/lib/components/appTooltip/appTooltip.vue.js.map +1 -0
  170. package/lib/components/appTooltip/index.js +12 -0
  171. package/lib/components/appTooltip/index.js.map +1 -0
  172. package/lib/components/appTooltip/style/appTooltip.scss +0 -0
  173. package/lib/components/index.js +29 -0
  174. package/lib/components/index.js.map +1 -0
  175. package/lib/components/svgIcon/iconBox.vue.js +103 -0
  176. package/lib/components/svgIcon/iconBox.vue.js.map +1 -0
  177. package/lib/components/svgIcon/index.js +15 -0
  178. package/lib/components/svgIcon/index.js.map +1 -0
  179. package/lib/components/svgIcon/style/iconBox.scss +13 -0
  180. package/lib/components/svgIcon/style/svgIcon.scss +12 -0
  181. package/lib/components/svgIcon/svgIcon.vue.js +51 -0
  182. package/lib/components/svgIcon/svgIcon.vue.js.map +1 -0
  183. package/lib/config/index.js +3 -0
  184. package/lib/config/index.js.map +1 -0
  185. package/lib/constants/index.js +6 -0
  186. package/lib/constants/index.js.map +1 -0
  187. package/lib/constants/keys.js +3 -0
  188. package/lib/constants/keys.js.map +1 -0
  189. package/lib/hooks/index.js +21 -0
  190. package/lib/hooks/index.js.map +1 -0
  191. package/lib/hooks/useApi.js +13 -0
  192. package/lib/hooks/useApi.js.map +1 -0
  193. package/lib/hooks/useGlobalConfig.js +59 -0
  194. package/lib/hooks/useGlobalConfig.js.map +1 -0
  195. package/lib/hooks/useLocale.js +41 -0
  196. package/lib/hooks/useLocale.js.map +1 -0
  197. package/lib/hooks/useMixins.js +21 -0
  198. package/lib/hooks/useMixins.js.map +1 -0
  199. package/lib/index.js +85 -0
  200. package/lib/index.js.map +1 -0
  201. package/lib/locale/en_US.js +71 -0
  202. package/lib/locale/en_US.js.map +1 -0
  203. package/lib/locale/index.js +10 -0
  204. package/lib/locale/index.js.map +1 -0
  205. package/lib/locale/zh_CN.js +71 -0
  206. package/lib/locale/zh_CN.js.map +1 -0
  207. package/lib/make-installer.js +33 -0
  208. package/lib/make-installer.js.map +1 -0
  209. package/lib/store/index.js +10 -0
  210. package/lib/store/index.js.map +1 -0
  211. package/lib/store/maintain.js +92 -0
  212. package/lib/store/maintain.js.map +1 -0
  213. package/lib/style/index.scss +46 -0
  214. package/lib/style/tailwind.scss +3 -0
  215. package/lib/style/theme.scss +123 -0
  216. package/lib/utils/adaptive.js +35 -0
  217. package/lib/utils/adaptive.js.map +1 -0
  218. package/lib/utils/bus.js +8 -0
  219. package/lib/utils/bus.js.map +1 -0
  220. package/lib/utils/crypto.js +25 -0
  221. package/lib/utils/crypto.js.map +1 -0
  222. package/lib/utils/date.js +27 -0
  223. package/lib/utils/date.js.map +1 -0
  224. package/lib/utils/handler.js +89 -0
  225. package/lib/utils/handler.js.map +1 -0
  226. package/lib/utils/index.js +38 -0
  227. package/lib/utils/index.js.map +1 -0
  228. package/lib/utils/is.js +32 -0
  229. package/lib/utils/is.js.map +1 -0
  230. package/lib/version.js +6 -0
  231. package/lib/version.js.map +1 -0
  232. package/package.json +102 -0
@@ -0,0 +1,335 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var vue = require('vue');
6
+ var elementPlus = require('element-plus');
7
+ var index$1 = require('../svgIcon/index.js');
8
+ var appDatePicker = require('../appDatePicker/appDatePicker.vue.js');
9
+ var index = require('./js/index.js');
10
+ var useAppForm = require('./js/useAppForm.js');
11
+ var useLocale = require('../../hooks/useLocale.js');
12
+ var is = require('../../utils/is.js');
13
+ var handler = require('../../utils/handler.js');
14
+
15
+ import "./style/appForm.scss";
16
+
17
+ const __default__ = vue.defineComponent({
18
+ name: "AppForm"
19
+ });
20
+ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
21
+ props: {
22
+ model: {
23
+ type: Object,
24
+ default: () => ({})
25
+ },
26
+ columns: {
27
+ type: Array,
28
+ default: () => []
29
+ },
30
+ rules: {
31
+ type: Object,
32
+ default: () => ({})
33
+ },
34
+ columnNum: {
35
+ type: Number,
36
+ default: 1
37
+ },
38
+ readonly: {
39
+ type: Boolean,
40
+ default: false
41
+ },
42
+ loading: {
43
+ type: Boolean,
44
+ default: false
45
+ }
46
+ },
47
+ setup(__props, { expose: __expose }) {
48
+ const props = __props;
49
+ const { t } = useLocale.useLocale();
50
+ const formTemplateRef = vue.useTemplateRef("formTemplateRef");
51
+ const formColumnMap = vue.computed(() => {
52
+ return (props.columns || []).reduce((map, column) => {
53
+ if (is.isArray(column.field)) {
54
+ column.field.forEach((key) => map.set(key, column));
55
+ } else {
56
+ map.set(column.field, column);
57
+ }
58
+ return map;
59
+ }, /* @__PURE__ */ new Map());
60
+ });
61
+ const containerStyle = vue.computed(() => {
62
+ const columnNum = is.isNumber(props.columnNum) ? props.columnNum || 1 : 1;
63
+ return {
64
+ gridTemplateColumns: `repeat(${columnNum}, minmax(0, 1fr))`
65
+ };
66
+ });
67
+ __expose({
68
+ validate: async (callback) => {
69
+ await vue.nextTick();
70
+ return vue.unref(formTemplateRef).validate(callback);
71
+ },
72
+ validateField: async (fields) => {
73
+ await vue.nextTick();
74
+ return vue.unref(formTemplateRef).validateField(fields);
75
+ },
76
+ resetFields: (fields) => {
77
+ let columns = props.columns || [];
78
+ if (fields && (fields == null ? void 0 : fields.length)) {
79
+ columns = fields.map((key) => formColumnMap.get(key)).filter(Boolean);
80
+ }
81
+ useAppForm.resetAppFormValue(columns, props.model);
82
+ },
83
+ scrollToField: async (fields) => {
84
+ await vue.nextTick();
85
+ vue.unref(formTemplateRef).scrollToField(fields);
86
+ },
87
+ clearValidate: async (fields) => {
88
+ await vue.nextTick();
89
+ vue.unref(formTemplateRef).clearValidate(fields);
90
+ },
91
+ fields: vue.computed(() => {
92
+ var _a;
93
+ return ((_a = vue.unref(formTemplateRef)) == null ? void 0 : _a.fields) || [];
94
+ }),
95
+ getField: async (fields) => {
96
+ await vue.nextTick();
97
+ return vue.unref(formTemplateRef).getField(fields);
98
+ }
99
+ // setInitialValue: async (value) => {
100
+ // await nextTick()
101
+ // unref(formTemplateRef).setInitialValue(value)
102
+ // }
103
+ });
104
+ return (_ctx, _cache) => {
105
+ return vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElForm), vue.mergeProps({
106
+ ref_key: "formTemplateRef",
107
+ ref: formTemplateRef,
108
+ model: __props.model,
109
+ rules: __props.rules,
110
+ "label-position": "top"
111
+ }, _ctx.$attrs), {
112
+ default: vue.withCtx(() => [
113
+ vue.createElementVNode(
114
+ "div",
115
+ {
116
+ class: "app-form-container",
117
+ style: vue.normalizeStyle(containerStyle.value)
118
+ },
119
+ [
120
+ vue.createCommentVNode(" \u8868\u5355\u9879 "),
121
+ (vue.openBlock(true), vue.createElementBlock(
122
+ vue.Fragment,
123
+ null,
124
+ vue.renderList(__props.columns, (column, columnIndex) => {
125
+ return vue.openBlock(), vue.createElementBlock(
126
+ vue.Fragment,
127
+ {
128
+ key: column.key
129
+ },
130
+ [
131
+ vue.unref(index.columnShowHandler)(props, column) ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElFormItem), {
132
+ key: 0,
133
+ rules: column.rules,
134
+ prop: vue.unref(is.isArray)(column.field) ? column.field[0] : column.field,
135
+ style: vue.normalizeStyle(vue.unref(index.columnItemStyle)(props, column))
136
+ }, {
137
+ label: vue.withCtx(() => [
138
+ vue.createElementVNode("div", { class: "flex" }, [
139
+ column.labelSlot && _ctx.$slots[column.labelSlot] ? vue.renderSlot(_ctx.$slots, column.labelSlot, {
140
+ key: 0,
141
+ column
142
+ }) : (vue.openBlock(), vue.createElementBlock(
143
+ "span",
144
+ {
145
+ key: 1,
146
+ class: "text-main"
147
+ },
148
+ vue.toDisplayString(column.label),
149
+ 1
150
+ /* TEXT */
151
+ )),
152
+ vue.unref(index.isRequired)(props, column) ? (vue.openBlock(), vue.createElementBlock("span", {
153
+ key: 2,
154
+ class: "label-required"
155
+ })) : vue.createCommentVNode("v-if", true),
156
+ column.help ? (vue.openBlock(), vue.createBlock(
157
+ vue.unref(elementPlus.ElPopover),
158
+ {
159
+ key: 3,
160
+ placement: "bottom-start",
161
+ "popper-class": "popover_echarts w-[200px]",
162
+ trigger: "hover"
163
+ },
164
+ {
165
+ reference: vue.withCtx(() => [
166
+ vue.createElementVNode("div", { class: "flex items-center" }, [
167
+ vue.createVNode(vue.unref(index$1.SvgIcon), {
168
+ "svg-name": "help",
169
+ "class-name": "!w-3 !h-3 ml-1 svgBox"
170
+ }),
171
+ vue.createTextVNode(
172
+ " " + vue.toDisplayString(vue.unref(t)("hy.help")),
173
+ 1
174
+ /* TEXT */
175
+ )
176
+ ])
177
+ ]),
178
+ default: vue.withCtx(() => [
179
+ vue.createElementVNode(
180
+ "div",
181
+ null,
182
+ vue.toDisplayString(vue.unref(handler.funRunHandler)(column.help)),
183
+ 1
184
+ /* TEXT */
185
+ )
186
+ ]),
187
+ _: 2
188
+ /* DYNAMIC */
189
+ },
190
+ 1024
191
+ /* DYNAMIC_SLOTS */
192
+ )) : vue.createCommentVNode("v-if", true),
193
+ column.rightSlot && _ctx.$slots[column.rightSlot] ? (vue.openBlock(), vue.createElementBlock("div", {
194
+ key: 4,
195
+ class: "ml-auto"
196
+ }, [
197
+ vue.renderSlot(_ctx.$slots, column.rightSlot)
198
+ ])) : vue.createCommentVNode("v-if", true)
199
+ ])
200
+ ]),
201
+ default: vue.withCtx(() => {
202
+ var _a;
203
+ return [
204
+ column.readonly || __props.readonly || !column.type && !column.slot ? (vue.openBlock(), vue.createElementBlock(
205
+ "span",
206
+ { key: 0 },
207
+ vue.toDisplayString(vue.unref(index.renderText)(props, column, columnIndex)),
208
+ 1
209
+ /* TEXT */
210
+ )) : (vue.openBlock(), vue.createElementBlock(
211
+ vue.Fragment,
212
+ { key: 1 },
213
+ [
214
+ vue.createCommentVNode(" \u81EA\u5B9A\u4E49\u5177\u540D\u63D2\u69FD "),
215
+ column.slot && _ctx.$slots[column.slot] ? vue.renderSlot(_ctx.$slots, column.slot, {
216
+ key: 0,
217
+ column
218
+ }) : column.type === "input" ? (vue.openBlock(), vue.createElementBlock(
219
+ vue.Fragment,
220
+ { key: 1 },
221
+ [
222
+ vue.createCommentVNode(" \u8F93\u5165\u6846 "),
223
+ vue.createVNode(vue.unref(elementPlus.ElInput), vue.mergeProps({
224
+ modelValue: __props.model[column.field],
225
+ "onUpdate:modelValue": ($event) => __props.model[column.field] = $event
226
+ }, { ref_for: true }, column.attrs, {
227
+ disabled: vue.unref(index.isDisabled)(props, column)
228
+ }), null, 16, ["modelValue", "onUpdate:modelValue", "disabled"])
229
+ ],
230
+ 2112
231
+ /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
232
+ )) : column.type === "select" ? (vue.openBlock(), vue.createElementBlock(
233
+ vue.Fragment,
234
+ { key: 2 },
235
+ [
236
+ vue.createCommentVNode(" \u9009\u62E9\u6846 "),
237
+ vue.createVNode(vue.unref(elementPlus.ElSelect), vue.mergeProps({
238
+ modelValue: __props.model[column.field],
239
+ "onUpdate:modelValue": ($event) => __props.model[column.field] = $event
240
+ }, { ref_for: true }, column.attrs, {
241
+ disabled: vue.unref(index.isDisabled)(props, column)
242
+ }), null, 16, ["modelValue", "onUpdate:modelValue", "disabled"])
243
+ ],
244
+ 2112
245
+ /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
246
+ )) : column.type === "date-picker" ? (vue.openBlock(), vue.createElementBlock(
247
+ vue.Fragment,
248
+ { key: 3 },
249
+ [
250
+ vue.createCommentVNode(" \u65E5\u671F\u9009\u62E9\u6846 "),
251
+ [
252
+ "datetimerange",
253
+ "daterange",
254
+ "monthrange",
255
+ "yearrange"
256
+ ].includes((_a = column.attrs) == null ? void 0 : _a.type) && vue.unref(is.isArray)(column.field) ? (vue.openBlock(), vue.createBlock(appDatePicker.default, vue.mergeProps({
257
+ key: 0,
258
+ start: __props.model[column.field[0]],
259
+ "onUpdate:start": ($event) => __props.model[column.field[0]] = $event,
260
+ end: __props.model[column.field[1]],
261
+ "onUpdate:end": ($event) => __props.model[column.field[1]] = $event,
262
+ "is-range": true,
263
+ style: { "width": "100%" }
264
+ }, { ref_for: true }, column.attrs, {
265
+ disabled: vue.unref(index.isDisabled)(props, column)
266
+ }), null, 16, ["start", "onUpdate:start", "end", "onUpdate:end", "disabled"])) : (vue.openBlock(), vue.createBlock(appDatePicker.default, vue.mergeProps({
267
+ key: 1,
268
+ modelValue: __props.model[column.field],
269
+ "onUpdate:modelValue": ($event) => __props.model[column.field] = $event,
270
+ "is-range": false,
271
+ style: { "width": "100%" }
272
+ }, { ref_for: true }, column.attrs, {
273
+ disabled: vue.unref(index.isDisabled)(props, column)
274
+ }), null, 16, ["modelValue", "onUpdate:modelValue", "disabled"]))
275
+ ],
276
+ 64
277
+ /* STABLE_FRAGMENT */
278
+ )) : column.type === "radio" ? (vue.openBlock(), vue.createElementBlock(
279
+ vue.Fragment,
280
+ { key: 4 },
281
+ [
282
+ vue.createCommentVNode(" \u5355\u9009 "),
283
+ vue.createVNode(vue.unref(elementPlus.ElRadioGroup), vue.mergeProps({
284
+ modelValue: __props.model[column.field],
285
+ "onUpdate:modelValue": ($event) => __props.model[column.field] = $event,
286
+ disabled: vue.unref(index.isDisabled)(props, column)
287
+ }, { ref_for: true }, column.attrs), null, 16, ["modelValue", "onUpdate:modelValue", "disabled"])
288
+ ],
289
+ 2112
290
+ /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
291
+ )) : column.type === "checkbox" ? (vue.openBlock(), vue.createElementBlock(
292
+ vue.Fragment,
293
+ { key: 5 },
294
+ [
295
+ vue.createCommentVNode(" \u591A\u9009 "),
296
+ vue.createVNode(vue.unref(elementPlus.ElCheckboxGroup), vue.mergeProps({
297
+ modelValue: __props.model[column.field],
298
+ "onUpdate:modelValue": ($event) => __props.model[column.field] = $event,
299
+ disabled: vue.unref(index.isDisabled)(props, column)
300
+ }, { ref_for: true }, column.attrs), null, 16, ["modelValue", "onUpdate:modelValue", "disabled"])
301
+ ],
302
+ 2112
303
+ /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
304
+ )) : vue.createCommentVNode("v-if", true)
305
+ ],
306
+ 64
307
+ /* STABLE_FRAGMENT */
308
+ ))
309
+ ];
310
+ }),
311
+ _: 2
312
+ /* DYNAMIC */
313
+ }, 1032, ["rules", "prop", "style"])) : vue.createCommentVNode("v-if", true)
314
+ ],
315
+ 64
316
+ /* STABLE_FRAGMENT */
317
+ );
318
+ }),
319
+ 128
320
+ /* KEYED_FRAGMENT */
321
+ ))
322
+ ],
323
+ 4
324
+ /* STYLE */
325
+ )
326
+ ]),
327
+ _: 3
328
+ /* FORWARDED */
329
+ }, 16, ["model", "rules"]);
330
+ };
331
+ }
332
+ });
333
+
334
+ exports.default = _sfc_main;
335
+ //# sourceMappingURL=appForm.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appForm.vue.js","sources":["../../../packages/components/appForm/appForm.vue"],"sourcesContent":["<script setup>\nimport { computed, unref, useTemplateRef, nextTick } from 'vue'\nimport {\n ElForm,\n ElFormItem,\n ElInput,\n ElSelect,\n ElRadioGroup,\n ElCheckboxGroup,\n ElPopover,\n} from 'element-plus'\nimport SvgIcon from '../svgIcon'\nimport { useLocale } from '@hy-dispatch-ui-v3/hooks'\nimport { isNumber, isArray, funRunHandler } from '@hy-dispatch-ui-v3/utils'\nimport appDatePicker from '../appDatePicker/appDatePicker.vue'\nimport {\n columnItemStyle,\n columnShowHandler,\n isDisabled,\n isRequired,\n renderText,\n} from './js/index.js'\nimport { resetAppFormValue } from './js/useAppForm.js'\nimport './style/appForm.scss'\n\ndefineOptions({\n name: 'AppForm',\n})\n\nconst props = defineProps({\n model: {\n type: Object,\n default: () => ({}),\n },\n columns: {\n type: Array,\n default: () => [],\n },\n rules: {\n type: Object,\n default: () => ({}),\n },\n columnNum: {\n type: Number,\n default: 1,\n },\n readonly: {\n type: Boolean,\n default: false,\n },\n loading: {\n type: Boolean,\n default: false,\n },\n})\n\nconst { t } = useLocale()\nconst formTemplateRef = useTemplateRef('formTemplateRef')\nconst formColumnMap = computed(() => {\n return (props.columns || []).reduce((map, column) => {\n if (isArray(column.field)) {\n column.field.forEach((key) => map.set(key, column))\n } else {\n map.set(column.field, column)\n }\n return map\n }, new Map())\n})\nconst containerStyle = computed(() => {\n const columnNum = isNumber(props.columnNum) ? props.columnNum || 1 : 1\n return {\n gridTemplateColumns: `repeat(${columnNum}, minmax(0, 1fr))`,\n }\n})\n\ndefineExpose({\n validate: async (callback) => {\n await nextTick()\n return unref(formTemplateRef).validate(callback)\n },\n validateField: async (fields) => {\n await nextTick()\n return unref(formTemplateRef).validateField(fields)\n },\n resetFields: (fields) => {\n let columns = props.columns || []\n if (fields && fields?.length) {\n columns = fields.map((key) => formColumnMap.get(key)).filter(Boolean)\n }\n resetAppFormValue(columns, props.model)\n },\n scrollToField: async (fields) => {\n await nextTick()\n unref(formTemplateRef).scrollToField(fields)\n },\n clearValidate: async (fields) => {\n await nextTick()\n unref(formTemplateRef).clearValidate(fields)\n },\n fields: computed(() => {\n return unref(formTemplateRef)?.fields || []\n }),\n getField: async (fields) => {\n await nextTick()\n return unref(formTemplateRef).getField(fields)\n },\n // setInitialValue: async (value) => {\n // await nextTick()\n // unref(formTemplateRef).setInitialValue(value)\n // }\n})\n</script>\n\n<template>\n <el-form\n ref=\"formTemplateRef\"\n :model=\"model\"\n :rules=\"rules\"\n label-position=\"top\"\n v-bind=\"$attrs\"\n >\n <div class=\"app-form-container\" :style=\"containerStyle\">\n <!-- 表单项 -->\n <template v-for=\"(column, columnIndex) in columns\" :key=\"column.key\">\n <el-form-item\n v-if=\"columnShowHandler(props, column)\"\n :rules=\"column.rules\"\n :prop=\"isArray(column.field) ? column.field[0] : column.field\"\n :style=\"columnItemStyle(props, column)\"\n >\n <!-- 表单项label -->\n <template #label>\n <div class=\"flex\">\n <slot\n v-if=\"column.labelSlot && $slots[column.labelSlot]\"\n :name=\"column.labelSlot\"\n :column=\"column\"\n ></slot>\n <span v-else class=\"text-main\">{{ column.label }}</span>\n <span\n v-if=\"isRequired(props, column)\"\n class=\"label-required\"\n ></span>\n <el-popover\n v-if=\"column.help\"\n placement=\"bottom-start\"\n popper-class=\"popover_echarts w-[200px]\"\n trigger=\"hover\"\n >\n <div>\n {{ funRunHandler(column.help) }}\n </div>\n <template #reference>\n <div class=\"flex items-center\">\n <svg-icon\n svg-name=\"help\"\n class-name=\"!w-3 !h-3 ml-1 svgBox\"\n />\n {{ t('hy.help') }}\n </div>\n </template>\n </el-popover>\n <div\n v-if=\"column.rightSlot && $slots[column.rightSlot]\"\n class=\"ml-auto\"\n >\n <slot :name=\"column.rightSlot\"></slot>\n </div>\n </div>\n </template>\n <!-- 表单组件 -->\n <template\n v-if=\"column.readonly || readonly || (!column.type && !column.slot)\"\n >\n <span>{{ renderText(props, column, columnIndex) }}</span>\n </template>\n <template v-else>\n <!-- 自定义具名插槽 -->\n <slot v-if=\"column.slot && $slots[column.slot]\" :name=\"column.slot\" :column=\"column\" />\n <!-- 输入框 -->\n <el-input\n v-else-if=\"column.type === 'input'\"\n v-model=\"model[column.field]\"\n v-bind=\"column.attrs\"\n :disabled=\"isDisabled(props, column)\"\n ></el-input>\n <!-- 选择框 -->\n <el-select\n v-else-if=\"column.type === 'select'\"\n v-model=\"model[column.field]\"\n v-bind=\"column.attrs\"\n :disabled=\"isDisabled(props, column)\"\n ></el-select>\n <!-- 日期选择框 -->\n <template v-else-if=\"column.type === 'date-picker'\">\n <app-date-picker\n v-if=\"\n [\n 'datetimerange',\n 'daterange',\n 'monthrange',\n 'yearrange',\n ].includes(column.attrs?.type) && isArray(column.field)\n \"\n v-model:start=\"model[column.field[0]]\"\n v-model:end=\"model[column.field[1]]\"\n :is-range=\"true\"\n style=\"width: 100%\"\n v-bind=\"column.attrs\"\n :disabled=\"isDisabled(props, column)\"\n ></app-date-picker>\n <app-date-picker\n v-else\n v-model=\"model[column.field]\"\n :is-range=\"false\"\n style=\"width: 100%\"\n v-bind=\"column.attrs\"\n :disabled=\"isDisabled(props, column)\"\n ></app-date-picker>\n </template>\n <!-- 单选 -->\n <el-radio-group\n v-else-if=\"column.type === 'radio'\"\n v-model=\"model[column.field]\"\n :disabled=\"isDisabled(props, column)\"\n v-bind=\"column.attrs\"\n ></el-radio-group>\n <!-- 多选 -->\n <el-checkbox-group\n v-else-if=\"column.type === 'checkbox'\"\n v-model=\"model[column.field]\"\n :disabled=\"isDisabled(props, column)\"\n v-bind=\"column.attrs\"\n ></el-checkbox-group>\n </template>\n </el-form-item>\n </template>\n </div>\n </el-form>\n</template>\n"],"names":["computed","isNumber","nextTick","unref","resetAppFormValue","_openBlock","_createBlock","_unref","ElForm","_mergeProps"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var appForm = require('./appForm.vue.js');
6
+ var useAppForm = require('./js/useAppForm.js');
7
+ var handler = require('../../utils/handler.js');
8
+
9
+ const AppForm = handler.withInstall(appForm.default);
10
+
11
+ exports.useAppForm = useAppForm.useAppForm;
12
+ exports.AppForm = AppForm;
13
+ exports.default = AppForm;
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../packages/components/appForm/index.js"],"sourcesContent":["import componnet from './appForm.vue'\nimport { withInstall } from '@hy-dispatch-ui-v3/utils'\n\nconst AppForm = withInstall(componnet)\n\nexport { AppForm }\n\nexport { useAppForm } from './js/useAppForm.js'\n\nexport default AppForm\n"],"names":["withInstall","componnet"],"mappings":";;;;;;;;AAEK,MAAC,OAAO,GAAGA,mBAAW,CAACC,eAAS;;;;;;"}
@@ -0,0 +1,93 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var is = require('../../../utils/is.js');
5
+ var handler = require('../../../utils/handler.js');
6
+
7
+ function columnItemStyle(props, column) {
8
+ const style = {};
9
+ let span = handler.funRunHandler(column.span, column, props.model);
10
+ if (is.isNumber(span) && span > 1) {
11
+ span = span >= props.columnNum ? props.columnNum : span;
12
+ style["grid-column"] = `span ${span}`;
13
+ }
14
+ return style;
15
+ }
16
+ function columnShowHandler(props, column) {
17
+ const show = vue.unref(column.show);
18
+ if (is.isBoolean(show)) return show;
19
+ if (is.isFunction(show)) return show(column, props.model);
20
+ return true;
21
+ }
22
+ function isRequired(props, column) {
23
+ var _a;
24
+ let { readonly, field, rules } = column;
25
+ if (props.readonly || readonly) {
26
+ return false;
27
+ }
28
+ if (Array.isArray(field)) {
29
+ return field.find((key) => isRequired(props, { ...column, field: key }));
30
+ }
31
+ rules = is.isArray(rules) && (rules == null ? void 0 : rules.length) || is.isObject(rules) ? rules : (_a = props.rules) == null ? void 0 : _a[field];
32
+ if (is.isArray(rules)) {
33
+ return rules.some((item) => item.required);
34
+ }
35
+ if (is.isObject(rules)) {
36
+ return rules == null ? void 0 : rules.required;
37
+ }
38
+ return false;
39
+ }
40
+ function isDisabled(props, column) {
41
+ var _a;
42
+ return !!(props.loading || ((_a = column.attrs) == null ? void 0 : _a.disabled));
43
+ }
44
+ function renderText(props, column = {}, index) {
45
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
46
+ const { type, field, customRender } = column;
47
+ const { fieldNames, options = [] } = column.attrs || {};
48
+ if (customRender && typeof customRender === "function") {
49
+ return customRender({
50
+ column: props.columns[index],
51
+ model: props.model,
52
+ value: props.model[field]
53
+ });
54
+ }
55
+ if (type === "range-picker") {
56
+ const [start, end] = field;
57
+ return ((_a = props.model) == null ? void 0 : _a[start]) ? `${(_b = props.model) == null ? void 0 : _b[start]} ~ ${(_c = props.model) == null ? void 0 : _c[end]}` : "";
58
+ }
59
+ if (type === "location") {
60
+ const [lon, lat] = field;
61
+ return [props.model[lon], props.model[lat]].filter(Boolean).join("\uFF0C");
62
+ }
63
+ if (/^(select|radio|checkbox)$/.test(type)) {
64
+ const target = options.find(
65
+ (item) => {
66
+ var _a2;
67
+ return item[fieldNames.value] === ((_a2 = props.model) == null ? void 0 : _a2[field]);
68
+ }
69
+ );
70
+ return (target == null ? void 0 : target[fieldNames.label]) || ((_d = props.model) == null ? void 0 : _d[field]) || "";
71
+ }
72
+ if (/^dept-select(-all)?$/.test(type)) {
73
+ const dict = /^dept-select$/.test(type) ? deptTreeDict.value : deptTreeAllDict.value;
74
+ return dict[(_e = props.model) == null ? void 0 : _e[field]] || ((_f = props.model) == null ? void 0 : _f[field]) || "";
75
+ }
76
+ if (type === "area-select") {
77
+ return areaTreeDict.value[(_g = props.model) == null ? void 0 : _g[field]] || ((_h = props.model) == null ? void 0 : _h[field]) || "";
78
+ }
79
+ if (Array.isArray(field)) {
80
+ return field.map((key) => {
81
+ var _a2;
82
+ return ((_a2 = props.model) == null ? void 0 : _a2[key]) || "";
83
+ }).filter(Boolean).join(" - ");
84
+ }
85
+ return ((_i = props.model) == null ? void 0 : _i[field]) || ((_j = props.model) == null ? void 0 : _j[field]) || "";
86
+ }
87
+
88
+ exports.columnItemStyle = columnItemStyle;
89
+ exports.columnShowHandler = columnShowHandler;
90
+ exports.isDisabled = isDisabled;
91
+ exports.isRequired = isRequired;
92
+ exports.renderText = renderText;
93
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../packages/components/appForm/js/index.js"],"sourcesContent":["import { unref } from 'vue'\nimport {\n isArray,\n isBoolean,\n isFunction,\n isNumber,\n isObject,\n funRunHandler,\n} from '@hy-dispatch-ui-v3/utils'\n\n// 列样式\nexport function columnItemStyle(props, column) {\n const style = {}\n let span = funRunHandler(column.span, column, props.model)\n if (isNumber(span) && span > 1) {\n span = span >= props.columnNum ? props.columnNum : span\n style['grid-column'] = `span ${span}`\n }\n return style\n}\n\nexport function columnShowHandler(props, column) {\n const show = unref(column.show)\n if (isBoolean(show)) return show\n if (isFunction(show)) return show(column, props.model)\n return true\n}\n\n// 是否必填\nexport function isRequired(props, column) {\n let { readonly, field, rules } = column\n if (props.readonly || readonly) {\n return false\n }\n if (Array.isArray(field)) {\n return field.find((key) => isRequired(props, { ...column, field: key }))\n }\n rules =\n (isArray(rules) && rules?.length) || isObject(rules)\n ? rules\n : props.rules?.[field]\n if (isArray(rules)) {\n return rules.some((item) => item.required)\n }\n if (isObject(rules)) {\n return rules?.required\n }\n return false\n}\n\n// 是否禁用\nexport function isDisabled(props, column) {\n return !!(props.loading || column.attrs?.disabled)\n}\n\n// 渲染文本\nexport function renderText(props, column = {}, index) {\n const { type, field, customRender } = column\n const { fieldNames, options = [] } = column.attrs || {}\n if (customRender && typeof customRender === 'function') {\n return customRender({\n column: props.columns[index],\n model: props.model,\n value: props.model[field],\n })\n }\n if (type === 'range-picker') {\n const [start, end] = field\n return props.model?.[start]\n ? `${props.model?.[start]} ~ ${props.model?.[end]}`\n : ''\n }\n if (type === 'location') {\n const [lon, lat] = field\n return [props.model[lon], props.model[lat]].filter(Boolean).join(',')\n }\n if (/^(select|radio|checkbox)$/.test(type)) {\n const target = options.find(\n (item) => item[fieldNames.value] === props.model?.[field]\n )\n return target?.[fieldNames.label] || props.model?.[field] || ''\n }\n if (/^dept-select(-all)?$/.test(type)) {\n const dict = /^dept-select$/.test(type)\n ? deptTreeDict.value\n : deptTreeAllDict.value\n return dict[props.model?.[field]] || props.model?.[field] || ''\n }\n if (type === 'area-select') {\n return (\n areaTreeDict.value[props.model?.[field]] || props.model?.[field] || ''\n )\n }\n if (Array.isArray(field)) {\n return field\n .map((key) => props.model?.[key] || '')\n .filter(Boolean)\n .join(' - ')\n }\n return props.model?.[field] || props.model?.[field] || ''\n}\n"],"names":["funRunHandler","isNumber","unref","isBoolean","isFunction","isArray","isObject"],"mappings":"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"}
@@ -0,0 +1,152 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var handler = require('../../../utils/handler.js');
5
+ var date = require('../../../utils/date.js');
6
+ var useLocale = require('../../../hooks/useLocale.js');
7
+ var is = require('../../../utils/is.js');
8
+
9
+ const genPlaceholderHandler = (config) => {
10
+ const { t } = useLocale.useLocale();
11
+ const { type, label, attrs = {} } = config || {};
12
+ let placeholder = attrs.placeholder, startPlaceholder = attrs.startPlaceholder, endPlaceholder = attrs.endPlaceholder;
13
+ switch (type) {
14
+ case "input":
15
+ placeholder = placeholder || t("hy.pleaseEnterPlaceholder", [label]);
16
+ case "select":
17
+ placeholder = placeholder || t("hy.pleaseSelectPlaceholder", [label]);
18
+ case "date-picker":
19
+ if (["datetimerange", "daterange", "monthrange", "yearrange"].includes(
20
+ attrs == null ? void 0 : attrs.type
21
+ )) {
22
+ switch (attrs.type) {
23
+ case "yearrange":
24
+ startPlaceholder = startPlaceholder || t("hy.startYear");
25
+ endPlaceholder = endPlaceholder || t("hy.endYear");
26
+ break;
27
+ case "monthrange":
28
+ startPlaceholder = startPlaceholder || t("hy.startMonth");
29
+ endPlaceholder = endPlaceholder || t("hy.endMonth");
30
+ break;
31
+ case "daterange":
32
+ startPlaceholder = startPlaceholder || t("hy.startDate");
33
+ endPlaceholder = endPlaceholder || t("hy.endDate");
34
+ break;
35
+ case "datetimerange":
36
+ startPlaceholder = startPlaceholder || t("hy.startDateTime");
37
+ endPlaceholder = endPlaceholder || t("hy.endDateTime");
38
+ break;
39
+ }
40
+ } else {
41
+ placeholder = placeholder || t("hy.pleaseSelectPlaceholder", [label]);
42
+ }
43
+ default:
44
+ placeholder = placeholder || label;
45
+ }
46
+ return { placeholder, startPlaceholder, endPlaceholder };
47
+ };
48
+ const genRuleRequiredMsgHandler = (config) => {
49
+ const { t } = useLocale.useLocale();
50
+ const { type, prop, label } = config || {};
51
+ if (!prop || !(prop == null ? void 0 : prop.length)) return "";
52
+ switch (type) {
53
+ case "input":
54
+ return t("hy.pleaseEnterPlaceholder", [label]);
55
+ case "select":
56
+ case "radio":
57
+ case "checkbox":
58
+ case "date-picker":
59
+ return t("hy.pleaseSelectPlaceholder", [label]);
60
+ default:
61
+ return t("hy.cannotBeEmpty", [label]);
62
+ }
63
+ };
64
+ const rulesHandler = (config) => {
65
+ let { rules, required } = config || {};
66
+ rules = is.isArray(rules) ? [...rules] : [required].filter(Boolean);
67
+ if (!rules.some((item) => item.required) && required) {
68
+ rules.unshift({
69
+ required: true,
70
+ message: genRuleRequiredMsgHandler(config),
71
+ trigger: "blur"
72
+ });
73
+ }
74
+ return rules;
75
+ };
76
+ function appFormItemHandler(column = {}) {
77
+ const { placeholder, startPlaceholder, endPlaceholder } = genPlaceholderHandler(column);
78
+ const attrs = { ...column.attrs || {}, placeholder };
79
+ column = handler.mergeDeep(
80
+ { ...column },
81
+ {
82
+ key: /* @__PURE__ */ Symbol("appFormItemKey"),
83
+ field: column.prop,
84
+ readonly: column.readonly || false,
85
+ rules: rulesHandler(column)
86
+ }
87
+ );
88
+ if (/^(input)$/.test(column.type)) {
89
+ return {
90
+ ...column,
91
+ attrs: {
92
+ maxlength: attrs.type === "textarea" ? 255 : attrs.type === "text" ? 100 : void 0,
93
+ ...attrs
94
+ }
95
+ };
96
+ } else if (/^(radio|checkbox|select)$/.test(column.type)) {
97
+ return {
98
+ ...column,
99
+ attrs: {
100
+ ...attrs,
101
+ props: {
102
+ label: "label",
103
+ value: "value",
104
+ disabled: "disabled",
105
+ options: "options",
106
+ ...attrs.props
107
+ }
108
+ }
109
+ };
110
+ } else if (/^date-picker$/.test(column.type)) {
111
+ return {
112
+ ...column,
113
+ attrs: {
114
+ format: attrs.format || date.getDefaultValueFormatByType(attrs.type),
115
+ valueFormat: attrs.valueFormat || date.getDefaultValueFormatByType(attrs.type),
116
+ ...attrs,
117
+ startPlaceholder,
118
+ endPlaceholder
119
+ }
120
+ };
121
+ }
122
+ return column;
123
+ }
124
+ const resetAppFormValue = (columns = [], obj = {}) => {
125
+ for (const item of columns) {
126
+ const value = handler.funRunHandler(item.defaultValue);
127
+ if (Array.isArray(item.prop)) {
128
+ for (let i = 0; i < item.prop.length; i++) {
129
+ obj[item.prop[i]] = value && Array.isArray(value) ? value[i] : void 0;
130
+ }
131
+ } else {
132
+ obj[item.prop] = value;
133
+ }
134
+ }
135
+ return obj;
136
+ };
137
+ const useAppForm = (config = [], model) => {
138
+ const columns = [];
139
+ for (const item of vue.unref(config)) {
140
+ const target = appFormItemHandler(item);
141
+ columns.push(target);
142
+ }
143
+ const formModel = resetAppFormValue(columns, model);
144
+ return {
145
+ formModel: vue.toRef(formModel),
146
+ formColumns: vue.toRef(columns)
147
+ };
148
+ };
149
+
150
+ exports.resetAppFormValue = resetAppFormValue;
151
+ exports.useAppForm = useAppForm;
152
+ //# sourceMappingURL=useAppForm.js.map