hy-app 0.5.9 → 0.5.11

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 (290) hide show
  1. package/components/hy-action-sheet/hy-action-sheet.vue +200 -200
  2. package/components/hy-action-sheet/props.ts +71 -71
  3. package/components/hy-action-sheet/typing.d.ts +64 -64
  4. package/components/hy-address-picker/hy-address-picker.vue +1 -1
  5. package/components/hy-address-picker/props.ts +100 -100
  6. package/components/hy-address-picker/typing.d.ts +16 -16
  7. package/components/hy-avatar/hy-avatar.vue +163 -163
  8. package/components/hy-avatar/props.ts +78 -78
  9. package/components/hy-avatar/typing.d.ts +4 -4
  10. package/components/hy-back-top/hy-back-top.vue +90 -90
  11. package/components/hy-back-top/props.ts +60 -60
  12. package/components/hy-back-top/typing.d.ts +4 -4
  13. package/components/hy-badge/hy-badge.vue +97 -97
  14. package/components/hy-badge/props.ts +82 -82
  15. package/components/hy-badge/typing.d.ts +9 -9
  16. package/components/hy-button/hy-button.vue +275 -275
  17. package/components/hy-button/props.ts +135 -135
  18. package/components/hy-button/typing.d.ts +30 -30
  19. package/components/hy-calendar/header.vue +60 -60
  20. package/components/hy-calendar/hy-calendar.vue +362 -362
  21. package/components/hy-calendar/month.vue +537 -537
  22. package/components/hy-calendar/props.ts +159 -159
  23. package/components/hy-calendar/typing.d.ts +6 -6
  24. package/components/hy-card/hy-card.vue +161 -161
  25. package/components/hy-card/props.ts +122 -122
  26. package/components/hy-card/typing.d.ts +12 -12
  27. package/components/hy-cell/hy-cell.vue +33 -33
  28. package/components/hy-cell/props.ts +54 -54
  29. package/components/hy-cell/typing.d.ts +4 -4
  30. package/components/hy-cell-item/hy-cell-item.vue +161 -161
  31. package/components/hy-cell-item/props.ts +66 -66
  32. package/components/hy-cell-item/typing.d.ts +7 -7
  33. package/components/hy-check-button/hy-check-button.vue +96 -96
  34. package/components/hy-check-button/props.ts +74 -74
  35. package/components/hy-check-button/typing.d.ts +44 -44
  36. package/components/hy-checkbox/hy-checkbox.vue +227 -227
  37. package/components/hy-checkbox/props.ts +96 -96
  38. package/components/hy-checkbox/typing.d.ts +8 -8
  39. package/components/hy-checkbox-group/hy-checkbox-group.vue +45 -45
  40. package/components/hy-checkbox-group/props.ts +80 -80
  41. package/components/hy-checkbox-group/typing.d.ts +6 -6
  42. package/components/hy-checkbox-item/hy-checkbox-item.vue +199 -199
  43. package/components/hy-checkbox-item/props.ts +24 -24
  44. package/components/hy-checkbox-item/typing.d.ts +7 -7
  45. package/components/hy-code-input/hy-code-input.vue +231 -231
  46. package/components/hy-code-input/props.ts +88 -88
  47. package/components/hy-code-input/typing.d.ts +8 -8
  48. package/components/hy-config-provider/hy-config-provider.vue +53 -53
  49. package/components/hy-config-provider/props.ts +28 -28
  50. package/components/hy-count-down/hy-count-down.vue +170 -170
  51. package/components/hy-count-down/index.ts +52 -52
  52. package/components/hy-count-down/props.ts +32 -32
  53. package/components/hy-count-down/typing.d.ts +14 -14
  54. package/components/hy-count-to/hy-count-to.vue +218 -218
  55. package/components/hy-count-to/props.ts +62 -62
  56. package/components/hy-count-to/typing.d.ts +4 -4
  57. package/components/hy-coupon/hy-coupon.vue +172 -172
  58. package/components/hy-coupon/index.scss +171 -171
  59. package/components/hy-coupon/props.ts +103 -103
  60. package/components/hy-coupon/typing.d.ts +14 -14
  61. package/components/hy-datetime-picker/hy-datetime-picker.vue +521 -521
  62. package/components/hy-datetime-picker/props.ts +142 -142
  63. package/components/hy-datetime-picker/typing.d.ts +20 -20
  64. package/components/hy-divider/hy-divider.vue +132 -132
  65. package/components/hy-divider/props.ts +80 -80
  66. package/components/hy-dropdown/hy-dropdown.vue +60 -60
  67. package/components/hy-dropdown/props.ts +40 -40
  68. package/components/hy-dropdown-item/hy-dropdown-item.vue +206 -206
  69. package/components/hy-dropdown-item/props.ts +21 -21
  70. package/components/hy-dropdown-item/typing.d.ts +17 -17
  71. package/components/hy-empty/hy-empty.vue +116 -116
  72. package/components/hy-empty/icon.ts +72 -72
  73. package/components/hy-empty/props.ts +60 -60
  74. package/components/hy-empty/typing.d.ts +38 -38
  75. package/components/hy-flex/hy-flex.vue +53 -53
  76. package/components/hy-flex/index.scss +8 -8
  77. package/components/hy-flex/props.ts +58 -58
  78. package/components/hy-flex/typing.d.ts +21 -21
  79. package/components/hy-float-button/hy-float-button.vue +378 -378
  80. package/components/hy-float-button/props.ts +111 -111
  81. package/components/hy-float-button/typing.d.ts +35 -35
  82. package/components/hy-folding-panel/hy-folding-panel.vue +109 -109
  83. package/components/hy-folding-panel/props.ts +42 -42
  84. package/components/hy-folding-panel/typing.d.ts +19 -19
  85. package/components/hy-folding-panel-item/hy-folding-panel-item.vue +183 -183
  86. package/components/hy-folding-panel-item/props.ts +81 -81
  87. package/components/hy-folding-panel-item/typing.d.ts +37 -37
  88. package/components/hy-form/hy-form.vue +220 -220
  89. package/components/hy-form/props.ts +37 -37
  90. package/components/hy-form/typing.d.ts +41 -41
  91. package/components/hy-form-group/hy-form-group.vue +333 -333
  92. package/components/hy-form-group/props.ts +105 -105
  93. package/components/hy-form-item/hy-form-item.vue +176 -176
  94. package/components/hy-form-item/index.scss +0 -1
  95. package/components/hy-form-item/props.ts +25 -25
  96. package/components/hy-form-item/typing.d.ts +30 -30
  97. package/components/hy-grid/hy-grid.vue +109 -109
  98. package/components/hy-grid/props.ts +60 -60
  99. package/components/hy-grid/typing.d.ts +35 -35
  100. package/components/hy-icon/hy-icon.vue +112 -112
  101. package/components/hy-icon/index.scss +0 -3
  102. package/components/hy-icon/props.ts +79 -79
  103. package/components/hy-icon/typing.d.ts +9 -9
  104. package/components/hy-image/hy-image.vue +192 -192
  105. package/components/hy-image/props.ts +107 -107
  106. package/components/hy-image/typing.d.ts +10 -10
  107. package/components/hy-input/hy-input.vue +333 -333
  108. package/components/hy-input/index.scss +5 -0
  109. package/components/hy-input/props.ts +186 -186
  110. package/components/hy-input/typing.d.ts +31 -31
  111. package/components/hy-line/hy-line.vue +55 -55
  112. package/components/hy-line/props.ts +43 -43
  113. package/components/hy-line-progress/hy-line-progress.vue +102 -102
  114. package/components/hy-line-progress/index.scss +1 -0
  115. package/components/hy-line-progress/props.ts +33 -33
  116. package/components/hy-list/hy-list.vue +226 -226
  117. package/components/hy-list/props.ts +69 -69
  118. package/components/hy-list/typing.d.ts +6 -6
  119. package/components/hy-loading/hy-loading.vue +107 -107
  120. package/components/hy-loading/props.ts +65 -65
  121. package/components/hy-menu/hy-menu.vue +159 -159
  122. package/components/hy-menu/props.ts +44 -44
  123. package/components/hy-menu/typing.d.ts +34 -34
  124. package/components/hy-modal/hy-modal.vue +173 -173
  125. package/components/hy-modal/props.ts +90 -90
  126. package/components/hy-modal/typing.d.ts +11 -11
  127. package/components/hy-navbar/hy-navbar.vue +144 -144
  128. package/components/hy-navbar/props.ts +78 -78
  129. package/components/hy-navbar/typing.d.ts +6 -6
  130. package/components/hy-notice-bar/hy-column-notice.vue +94 -94
  131. package/components/hy-notice-bar/hy-notice-bar.vue +96 -96
  132. package/components/hy-notice-bar/hy-row-notice.vue +121 -121
  133. package/components/hy-notice-bar/props.ts +85 -85
  134. package/components/hy-notice-bar/typing.d.ts +8 -8
  135. package/components/hy-notify/hy-notify.vue +174 -174
  136. package/components/hy-notify/props.ts +51 -51
  137. package/components/hy-number-step/hy-number-step.vue +367 -367
  138. package/components/hy-number-step/props.ts +112 -112
  139. package/components/hy-number-step/typing.d.ts +16 -16
  140. package/components/hy-overlay/hy-overlay.vue +60 -60
  141. package/components/hy-overlay/props.ts +33 -33
  142. package/components/hy-overlay/typing.d.ts +4 -4
  143. package/components/hy-pagination/hy-pagination.vue +135 -135
  144. package/components/hy-pagination/props.ts +55 -55
  145. package/components/hy-pagination/typing.d.ts +10 -10
  146. package/components/hy-picker/hy-picker.vue +7 -5
  147. package/components/hy-picker/props.ts +7 -2
  148. package/components/hy-picker/typing.d.ts +9 -5
  149. package/components/hy-popover/hy-popover.vue +251 -251
  150. package/components/hy-popover/props.ts +51 -51
  151. package/components/hy-popover/typing.d.ts +39 -39
  152. package/components/hy-popup/hy-popup.vue +197 -197
  153. package/components/hy-popup/props.ts +85 -85
  154. package/components/hy-popup/typing.d.ts +10 -10
  155. package/components/hy-price/hy-price.vue +79 -79
  156. package/components/hy-price/props.ts +54 -54
  157. package/components/hy-price/typing.d.ts +4 -4
  158. package/components/hy-qrcode/hy-qrcode.vue +216 -216
  159. package/components/hy-qrcode/props.ts +70 -70
  160. package/components/hy-qrcode/qrcode.js +1304 -1304
  161. package/components/hy-qrcode/typing.d.ts +8 -8
  162. package/components/hy-radio/hy-radio.vue +226 -226
  163. package/components/hy-radio/props.ts +1 -1
  164. package/components/hy-radio/typing.d.ts +8 -8
  165. package/components/hy-rate/hy-rate.vue +239 -239
  166. package/components/hy-rate/props.ts +77 -77
  167. package/components/hy-rate/typing.d.ts +6 -6
  168. package/components/hy-read-more/hy-read-more.vue +130 -130
  169. package/components/hy-read-more/props.ts +45 -45
  170. package/components/hy-read-more/typing.d.ts +6 -6
  171. package/components/hy-rolling-num/hy-rolling-num.vue +188 -188
  172. package/components/hy-rolling-num/props.ts +68 -68
  173. package/components/hy-scroll-list/hy-scroll-list.vue +123 -123
  174. package/components/hy-scroll-list/props.ts +22 -22
  175. package/components/hy-scroll-list/typing.d.ts +6 -6
  176. package/components/hy-search/hy-search.vue +221 -221
  177. package/components/hy-search/props.ts +131 -131
  178. package/components/hy-search/typing.d.ts +22 -22
  179. package/components/hy-signature/hy-signature.vue +640 -640
  180. package/components/hy-signature/props.ts +118 -118
  181. package/components/hy-signature/typing.d.ts +93 -93
  182. package/components/hy-slider/hy-slider.vue +444 -444
  183. package/components/hy-slider/props.ts +77 -77
  184. package/components/hy-slider/typing.d.ts +10 -10
  185. package/components/hy-status-bar/hy-status-bar.vue +41 -41
  186. package/components/hy-status-bar/props.ts +8 -8
  187. package/components/hy-status-bar/typing.d.ts +12 -12
  188. package/components/hy-steps/hy-steps.vue +267 -267
  189. package/components/hy-steps/props.ts +49 -49
  190. package/components/hy-steps/typing.d.ts +21 -21
  191. package/components/hy-sticky/hy-sticky.vue +226 -226
  192. package/components/hy-sticky/props.ts +24 -24
  193. package/components/hy-sticky/typing.d.ts +4 -4
  194. package/components/hy-submit-bar/hy-submit-bar.vue +189 -189
  195. package/components/hy-submit-bar/props.ts +91 -91
  196. package/components/hy-submit-bar/typing.d.ts +24 -24
  197. package/components/hy-subsection/hy-subsection.vue +207 -207
  198. package/components/hy-subsection/props.ts +52 -52
  199. package/components/hy-subsection/typing.d.ts +13 -13
  200. package/components/hy-swipe-action/hy-swipe-action.vue +323 -323
  201. package/components/hy-swipe-action/index.ts +25 -25
  202. package/components/hy-swipe-action/props.ts +47 -47
  203. package/components/hy-swipe-action/typing.d.ts +25 -25
  204. package/components/hy-swiper/hy-swiper-indicator.vue +75 -75
  205. package/components/hy-swiper/hy-swiper.vue +224 -224
  206. package/components/hy-swiper/props.ts +128 -128
  207. package/components/hy-swiper/typing.d.ts +26 -26
  208. package/components/hy-switch/hy-switch.vue +173 -173
  209. package/components/hy-switch/props.ts +61 -61
  210. package/components/hy-switch/typing.d.ts +8 -8
  211. package/components/hy-tabbar/hy-tabbar.vue +136 -136
  212. package/components/hy-tabbar/props.ts +59 -59
  213. package/components/hy-tabbar/typing.d.ts +21 -21
  214. package/components/hy-tabbar-group/hy-tabbar-group.vue +87 -87
  215. package/components/hy-tabbar-group/props.ts +78 -78
  216. package/components/hy-tabbar-group/typing.d.ts +16 -16
  217. package/components/hy-tabbar-item/hy-tabbar-item.vue +103 -103
  218. package/components/hy-tabbar-item/typing.d.ts +10 -10
  219. package/components/hy-table/hy-table.vue +358 -358
  220. package/components/hy-table/props.ts +47 -47
  221. package/components/hy-table/typing.d.ts +34 -34
  222. package/components/hy-tabs/hy-tabs.vue +335 -335
  223. package/components/hy-tabs/props.ts +77 -77
  224. package/components/hy-tabs/typing.d.ts +33 -33
  225. package/components/hy-tag/hy-tag.vue +174 -174
  226. package/components/hy-tag/props.ts +89 -89
  227. package/components/hy-tag/typing.d.ts +13 -13
  228. package/components/hy-text/hy-text.vue +237 -237
  229. package/components/hy-text/props.ts +115 -115
  230. package/components/hy-text/typing.d.ts +6 -6
  231. package/components/hy-textarea/hy-textarea.vue +197 -197
  232. package/components/hy-textarea/index.scss +5 -0
  233. package/components/hy-textarea/props.ts +116 -116
  234. package/components/hy-textarea/typing.d.ts +22 -22
  235. package/components/hy-toast/hy-toast.vue +190 -190
  236. package/components/hy-toast/typing.d.ts +38 -38
  237. package/components/hy-tooltip/hy-tooltip.vue +277 -277
  238. package/components/hy-tooltip/props.ts +78 -78
  239. package/components/hy-tooltip/typing.d.ts +4 -4
  240. package/components/hy-transition/hy-transition.vue +157 -157
  241. package/components/hy-transition/props.ts +32 -32
  242. package/components/hy-transition/typing.d.ts +16 -16
  243. package/components/hy-upload/hy-upload.vue +385 -385
  244. package/components/hy-upload/props.ts +132 -132
  245. package/components/hy-upload/typing.d.ts +65 -65
  246. package/components/hy-warn/hy-warn.vue +115 -115
  247. package/components/hy-warn/props.ts +49 -49
  248. package/components/hy-warn/typing.d.ts +6 -6
  249. package/components/hy-waterfall/hy-waterfall.vue +191 -191
  250. package/components/hy-waterfall/props.ts +21 -21
  251. package/components/hy-watermark/hy-watermark.vue +978 -978
  252. package/components/hy-watermark/props.ts +104 -104
  253. package/components/index.ts +183 -183
  254. package/global.d.ts +91 -91
  255. package/index.ts +1 -1
  256. package/libs/api/http.ts +140 -140
  257. package/libs/api/index.ts +1 -1
  258. package/libs/common/index.ts +2 -2
  259. package/libs/common/queue.ts +28 -28
  260. package/libs/composables/index.ts +6 -6
  261. package/libs/composables/usePopover.ts +241 -241
  262. package/libs/composables/useQueue.ts +53 -53
  263. package/libs/composables/useShakeService.ts +64 -64
  264. package/libs/composables/useShare.ts +42 -42
  265. package/libs/composables/useToast.ts +45 -45
  266. package/libs/composables/useTouch.ts +51 -51
  267. package/libs/config/color.ts +7 -7
  268. package/libs/config/icon.ts +430 -430
  269. package/libs/config/index.ts +2 -2
  270. package/libs/css/iconfont.css +443 -443
  271. package/libs/css/theme.scss +1 -1
  272. package/libs/global/index.ts +6 -6
  273. package/libs/global/register-properties.ts +37 -37
  274. package/libs/index.ts +7 -7
  275. package/libs/typing/index.ts +4 -4
  276. package/libs/typing/modules/common.d.ts +139 -139
  277. package/libs/typing/modules/enum.ts +67 -67
  278. package/libs/typing/modules/form.ts +5 -1
  279. package/libs/typing/modules/http.ts +17 -17
  280. package/libs/typing/modules/icon.d.ts +366 -366
  281. package/libs/typing/modules/rect.ts +10 -10
  282. package/libs/utils/base64.ts +119 -119
  283. package/libs/utils/calendar.js +1021 -1021
  284. package/libs/utils/colorGradient.ts +112 -112
  285. package/libs/utils/index.ts +5 -5
  286. package/libs/utils/inside.ts +350 -361
  287. package/libs/utils/inspect.ts +171 -171
  288. package/libs/utils/utils.ts +521 -521
  289. package/package.json +18 -18
  290. package/web-types.json +1 -1
@@ -1,333 +1,333 @@
1
- <template>
2
- <hy-form
3
- ref="hyFormRef"
4
- :model="formData"
5
- :rules="extractRules(columns)"
6
- :label-position="labelPosition"
7
- :label-align="labelAlign"
8
- :label-width="labelWidth"
9
- :border="border"
10
- >
11
- <hy-form-item
12
- v-for="item in columns"
13
- :key="item.field"
14
- :label="item.label"
15
- :prop="item.field"
16
- :required="item.required"
17
- >
18
- <template v-if="isInput(item.type)">
19
- <hy-input
20
- v-model="formData[item.field]"
21
- :type="item.type"
22
- :disabled="disabled || item?.input?.disabled || input?.disabled"
23
- :disabledColor="item?.input?.disabledColor || input?.disabledColor"
24
- :maxlength="item?.input?.maxlength || input?.maxlength"
25
- :password="item?.input?.password"
26
- :clearable="item?.input?.clearable || input?.clearable"
27
- :readonly="item?.input?.readonly || input?.readonly"
28
- :placeholder="item?.input?.placeholder"
29
- :placeholderClass="item?.input?.placeholderClass || input?.placeholderClass"
30
- :placeholderStyle="item?.input?.placeholderStyle || input?.placeholderStyle"
31
- :showWordLimit="item?.input?.showWordLimit || input?.showWordLimit"
32
- :confirmType="item?.input?.confirmType || input?.confirmType"
33
- :confirmHold="item?.input?.confirmHold || input?.confirmHold"
34
- :holdKeyboard="item?.input?.holdKeyboard || input?.holdKeyboard"
35
- :focus="item?.input?.focus || input?.focus"
36
- :autoBlur="item?.input?.autoBlur || input?.autoBlur"
37
- :selectionStart="item?.input?.selectionStart || input?.selectionStart"
38
- :selectionEnd="item?.input?.selectionEnd || input?.selectionEnd"
39
- :adjustPosition="item?.input?.adjustPosition || input?.adjustPosition"
40
- :inputAlign="item?.input?.inputAlign || input?.inputAlign"
41
- :fontSize="item?.input?.fontSize || input?.fontSize"
42
- :color="item?.input?.color || input?.color"
43
- :prefixIcon="item?.input?.prefixIcon || input?.prefixIcon"
44
- :suffixIcon="item?.input?.suffixIcon || input?.suffixIcon"
45
- :formatter="item?.input?.formatter || input?.formatter"
46
- :shape="item?.input?.shape || input?.shape"
47
- :border="item?.input?.border || input?.border"
48
- @change="item?.input?.onChange"
49
- @blur="item?.input?.onBlur"
50
- @onPrefix="item?.input?.onPrefix"
51
- @onSuffix="item?.input?.onSuffix"
52
- ></hy-input>
53
- </template>
54
-
55
- <!-- 上传 -->
56
- <template v-if="item.type === FormTypeEnum.UPLOAD">
57
- <hy-upload
58
- :fileList="formData[item.field]"
59
- :maxCount="item.maxCount"
60
- :disabled="disabled || item.disabled"
61
- />
62
- </template>
63
- <!-- 上传 -->
64
-
65
- <!-- 详情 -->
66
- <template v-if="item.type === FormTypeEnum.DETAIL">
67
- <view class="detail">
68
- {{ formData[item.field] }}
69
- </view>
70
- </template>
71
- <!-- 详情 -->
72
-
73
- <!-- 文本域 -->
74
- <view class="flex" v-if="item.type === FormTypeEnum.TEXTAREA">
75
- <hy-textarea
76
- v-model="formData[item.field]"
77
- :disabled="disabled || item?.textarea?.disabled || textarea?.disabled"
78
- :maxlength="item?.textarea?.maxlength || textarea?.maxlength"
79
- :placeholder="item?.textarea?.placeholder"
80
- :placeholderClass="
81
- item?.textarea?.placeholderClass || textarea?.placeholderClass
82
- "
83
- :placeholderStyle="
84
- item?.textarea?.placeholderStyle || textarea?.placeholderStyle
85
- "
86
- :holdKeyboard="item?.textarea?.holdKeyboard || textarea?.holdKeyboard"
87
- :focus="item?.textarea?.focus || textarea?.focus"
88
- :selectionStart="item?.textarea?.selectionStart || textarea?.selectionStart"
89
- :selectionEnd="item?.textarea?.selectionEnd || textarea?.selectionEnd"
90
- :adjustPosition="item?.textarea?.adjustPosition || textarea?.adjustPosition"
91
- :formatter="item?.textarea?.formatter || textarea?.formatter"
92
- :border="item?.textarea?.border || textarea?.border"
93
- :height="textarea?.height || item?.textarea?.height"
94
- @change="handleChange($event, item)"
95
- @blur="handleBlur($event, item)"
96
- ></hy-textarea>
97
- </view>
98
- <!-- 文本域 -->
99
-
100
- <!-- 复选框/单选框 -->
101
- <template v-if="item.type === FormTypeEnum.CHECK_BUTTON">
102
- <hy-check-button
103
- v-model="formData[item.field]"
104
- :columns="item.actions"
105
- :type="item?.checkButton?.type || checkButton?.type"
106
- :shape="item?.checkButton?.shape || checkButton?.shape"
107
- :size="item?.checkButton?.size || checkButton?.size"
108
- :col="item?.checkButton?.col || checkButton?.col"
109
- :gap="item?.checkButton?.gap || checkButton?.gap"
110
- :fieldNames="item?.checkButton?.fieldNames || checkButton?.fieldNames"
111
- :disabled="disabled || item?.checkButton?.size || checkButton?.disabled"
112
- :selectType="item?.checkButton?.selectType || checkButton?.selectType"
113
- ></hy-check-button>
114
- </template>
115
- <!-- 复选框/单选框 -->
116
-
117
- <!-- 单选框 -->
118
- <template v-if="item.type === FormTypeEnum.RADIO">
119
- <hy-radio
120
- v-model="formData[item.field]"
121
- :columns="item.actions"
122
- :fieldNames="item?.radio?.fieldNames || radio?.fieldNames"
123
- :shape="item?.radio?.shape || radio?.shape"
124
- :disabled="disabled || item?.radio?.disabled || radio?.disabled"
125
- :size="item?.radio?.size || radio?.size"
126
- :activeColor="item?.radio?.activeColor || radio?.activeColor"
127
- :inactiveColor="item?.radio?.inactiveColor || radio?.inactiveColor"
128
- :iconSize="item?.radio?.iconSize || radio?.iconSize"
129
- :iconColor="item?.radio?.iconColor || radio?.iconColor"
130
- :labelDisabled="item?.radio?.disabled || radio?.labelDisabled"
131
- :placement="item?.radio?.placement || radio?.placement"
132
- ></hy-radio>
133
- </template>
134
- <!-- 单选框 -->
135
-
136
- <!-- 开关 -->
137
- <template v-if="item.type === FormTypeEnum.SWITCH">
138
- <hy-switch
139
- v-model="formData[item.field]"
140
- :loading="item?.switchItem?.loading || switchItem?.loading"
141
- :disabled="disabled || item?.switchItem?.disabled || switchItem?.disabled"
142
- :size="item?.switchItem?.size || switchItem?.size"
143
- :activeColor="item?.switchItem?.activeColor || switchItem?.activeColor"
144
- :inactiveColor="item?.switchItem?.inactiveColor || switchItem?.inactiveColor"
145
- :activeValue="item?.switchItem?.activeValue || switchItem?.activeValue"
146
- :inactiveValue="item?.switchItem?.inactiveValue || switchItem?.inactiveValue"
147
- :activeIcon="item?.switchItem?.activeIcon || switchItem?.activeIcon"
148
- :inactiveIcon="item?.switchItem?.inactiveIcon || switchItem?.inactiveIcon"
149
- :space="item?.switchItem?.space || switchItem?.space"
150
- ></hy-switch>
151
- </template>
152
- <!-- 开关 -->
153
-
154
- <!-- 自定义选择器 -->
155
- <template v-if="item.type === FormTypeEnum.SELECT">
156
- <hy-picker
157
- v-model="formData[item.field]"
158
- :columns="item.select"
159
- has-input
160
- :separator="item?.picker?.separator || picker?.separator"
161
- :itemHeight="item?.picker?.itemHeight || picker?.itemHeight"
162
- :cancelText="item?.picker?.cancelText || picker?.cancelText"
163
- :confirmText="item?.picker?.confirmText || picker?.confirmText"
164
- :cancelColor="item?.picker?.cancelColor || picker?.cancelColor"
165
- :confirmColor="item?.picker?.confirmColor || picker?.confirmColor"
166
- :visibleItemCount="item?.picker?.visibleItemCount || picker?.visibleItemCount"
167
- :closeOnClickOverlay="
168
- item?.picker?.closeOnClickOverlay || picker?.closeOnClickOverlay
169
- "
170
- :title="item?.picker?.title || picker?.title"
171
- :showToolbar="item?.picker?.showToolbar || picker?.showToolbar"
172
- :input="{
173
- disabled:
174
- disabled || item?.picker?.input?.disabled || picker?.input?.disabled,
175
- placeholder: item.picker?.input?.placeholder,
176
- shape: item?.picker?.input?.shape || picker?.input?.shape,
177
- border: item?.picker?.input?.border || picker?.input?.border
178
- }"
179
- ></hy-picker>
180
- </template>
181
- <!-- 自定义选择器 -->
182
-
183
- <!-- 时间选择器 -->
184
- <template v-if="item.type === FormTypeEnum.DATE">
185
- <hy-datetime-picker
186
- v-model="formData[item.field]"
187
- has-input
188
- :mode="item.mode"
189
- :separator="item?.picker?.separator || picker?.separator"
190
- :itemHeight="item?.picker?.itemHeight || picker?.itemHeight"
191
- :cancelText="item?.picker?.cancelText || picker?.cancelText"
192
- :confirmText="item?.picker?.confirmText || picker?.confirmText"
193
- :cancelColor="item?.picker?.cancelColor || picker?.cancelColor"
194
- :confirmColor="item?.picker?.confirmColor || picker?.confirmColor"
195
- :visibleItemCount="item?.picker?.visibleItemCount || picker?.visibleItemCount"
196
- :closeOnClickOverlay="
197
- item?.picker?.closeOnClickOverlay || picker?.closeOnClickOverlay
198
- "
199
- :title="item?.picker?.title || picker?.title"
200
- :showToolbar="item?.picker?.showToolbar || picker?.showToolbar"
201
- :input="{
202
- disabled:
203
- disabled || item?.picker?.input?.disabled || picker?.input?.disabled,
204
- placeholder: item.picker?.input?.placeholder,
205
- shape: item?.picker?.input?.shape || picker?.input?.shape,
206
- border: item?.picker?.input?.border || picker?.input?.border
207
- }"
208
- ></hy-datetime-picker>
209
- </template>
210
- <!-- 时间选择器 -->
211
-
212
- <!-- 地址选择器 -->
213
- <template v-if="item.type === FormTypeEnum.ADDRESS">
214
- <hy-address-picker
215
- v-model="formData[item.field]"
216
- has-input
217
- :separator="item?.picker?.separator || picker?.separator"
218
- :itemHeight="item?.picker?.itemHeight || picker?.itemHeight"
219
- :cancelText="item?.picker?.cancelText || picker?.cancelText"
220
- :confirmText="item?.picker?.confirmText || picker?.confirmText"
221
- :cancelColor="item?.picker?.cancelColor || picker?.cancelColor"
222
- :confirmColor="item?.picker?.confirmColor || picker?.confirmColor"
223
- :visibleItemCount="item?.picker?.visibleItemCount || picker?.visibleItemCount"
224
- :closeOnClickOverlay="
225
- item?.picker?.closeOnClickOverlay || picker?.closeOnClickOverlay
226
- "
227
- :title="item?.picker?.title || picker?.title"
228
- :showToolbar="item?.picker?.showToolbar || picker?.showToolbar"
229
- :input="{
230
- disabled:
231
- disabled || item?.picker?.input?.disabled || picker?.input?.disabled,
232
- placeholder: item.picker?.input?.placeholder,
233
- shape: item?.picker?.input?.shape || picker?.input?.shape,
234
- border: item?.picker?.input?.border || picker?.input?.border
235
- }"
236
- ></hy-address-picker>
237
- </template>
238
- <!-- 地址选择器 -->
239
-
240
- <!-- 自定义插槽 -->
241
- <view class="flex" v-if="item.type === FormTypeEnum.CUSTOM">
242
- <slot :name="item.field" :record="item"></slot>
243
- </view>
244
- <!-- 自定义插槽 -->
245
- </hy-form-item>
246
- </hy-form>
247
- </template>
248
-
249
- <script lang="ts">
250
- export default {
251
- name: 'hy-form-group',
252
- options: {
253
- addGlobalClass: true,
254
- virtualHost: true,
255
- styleIsolation: 'shared'
256
- }
257
- }
258
- </script>
259
-
260
- <script setup lang="ts">
261
- import { ref } from 'vue'
262
- import formGroupProps from './props'
263
- import { type FormColumnsType, FormTypeEnum, type RulesVo } from '../../libs'
264
-
265
- // 组件
266
- import HyInput from '../hy-input/hy-input.vue'
267
- import HyPicker from '../hy-picker/hy-picker.vue'
268
- import HyUpload from '../hy-upload/hy-upload.vue'
269
- import HyTextarea from '../hy-textarea/hy-textarea.vue'
270
- import HySwitch from '../hy-switch/hy-switch.vue'
271
- import HyRadio from '../hy-radio/hy-radio.vue'
272
- import HyDatetimePicker from '../hy-datetime-picker/hy-datetime-picker.vue'
273
- import HyAddressPicker from '../hy-address-picker/hy-address-picker.vue'
274
- import HyCheckButton from '../hy-check-button/hy-check-button.vue'
275
- import HyForm from '../hy-form/hy-form.vue'
276
- import HyFormItem from '../hy-form-item/hy-form-item.vue'
277
-
278
- const props = defineProps(formGroupProps)
279
- const hyFormRef = ref<InstanceType<typeof HyForm> | null>(null)
280
-
281
- const isInput = (type: FormTypeEnum) =>
282
- type === FormTypeEnum.TEXT || type === FormTypeEnum.NUMBER || type === FormTypeEnum.PASSWORD
283
-
284
- // 提取规则
285
- function extractRules(formConfig: FormColumnsType[]): Record<string, RulesVo | RulesVo[]> {
286
- return formConfig.reduce(
287
- (acc, field) => {
288
- if (field.rules) {
289
- acc[field.field] = field.rules
290
- }
291
- return acc
292
- },
293
- {} as Record<string, RulesVo | RulesVo[]>
294
- )
295
- }
296
-
297
- // 验证表单
298
- const validate = () => {
299
- return new Promise((resolve, reject) => {
300
- hyFormRef.value
301
- .validate()
302
- .then((isValid: boolean) => resolve(isValid))
303
- .catch((isValid: boolean) => reject(isValid))
304
- })
305
- }
306
-
307
- // 验证表单
308
- const submit = () => {
309
- return new Promise((resolve, reject) => {
310
- hyFormRef.value
311
- .submit()
312
- .then((isValid: boolean) => resolve(isValid))
313
- .catch((allErrors: string[]) => reject(allErrors))
314
- })
315
- }
316
-
317
- // 清楚字段值
318
- const resetFields = () => hyFormRef.value.resetFields()
319
-
320
- // 清楚校验
321
- const clearValidate = () => hyFormRef.value.clearValidate()
322
-
323
- defineExpose({
324
- validate,
325
- resetFields,
326
- clearValidate,
327
- submit
328
- })
329
- </script>
330
-
331
- <style lang="scss" scoped>
332
- @import './index.scss';
333
- </style>
1
+ <template>
2
+ <hy-form
3
+ ref="hyFormRef"
4
+ :model="formData"
5
+ :rules="extractRules(columns)"
6
+ :label-position="labelPosition"
7
+ :label-align="labelAlign"
8
+ :label-width="labelWidth"
9
+ :border="border"
10
+ >
11
+ <hy-form-item
12
+ v-for="item in columns"
13
+ :key="item.field"
14
+ :label="item.label"
15
+ :prop="item.field"
16
+ :required="item.required"
17
+ >
18
+ <template v-if="isInput(item.type)">
19
+ <hy-input
20
+ v-model="formData[item.field]"
21
+ :type="item.type"
22
+ :disabled="disabled || item?.input?.disabled || input?.disabled"
23
+ :disabledColor="item?.input?.disabledColor || input?.disabledColor"
24
+ :maxlength="item?.input?.maxlength || input?.maxlength"
25
+ :password="item?.input?.password"
26
+ :clearable="item?.input?.clearable || input?.clearable"
27
+ :readonly="item?.input?.readonly || input?.readonly"
28
+ :placeholder="item?.input?.placeholder"
29
+ :placeholderClass="item?.input?.placeholderClass || input?.placeholderClass"
30
+ :placeholderStyle="item?.input?.placeholderStyle || input?.placeholderStyle"
31
+ :showWordLimit="item?.input?.showWordLimit || input?.showWordLimit"
32
+ :confirmType="item?.input?.confirmType || input?.confirmType"
33
+ :confirmHold="item?.input?.confirmHold || input?.confirmHold"
34
+ :holdKeyboard="item?.input?.holdKeyboard || input?.holdKeyboard"
35
+ :focus="item?.input?.focus || input?.focus"
36
+ :autoBlur="item?.input?.autoBlur || input?.autoBlur"
37
+ :selectionStart="item?.input?.selectionStart || input?.selectionStart"
38
+ :selectionEnd="item?.input?.selectionEnd || input?.selectionEnd"
39
+ :adjustPosition="item?.input?.adjustPosition || input?.adjustPosition"
40
+ :inputAlign="item?.input?.inputAlign || input?.inputAlign"
41
+ :fontSize="item?.input?.fontSize || input?.fontSize"
42
+ :color="item?.input?.color || input?.color"
43
+ :prefixIcon="item?.input?.prefixIcon || input?.prefixIcon"
44
+ :suffixIcon="item?.input?.suffixIcon || input?.suffixIcon"
45
+ :formatter="item?.input?.formatter || input?.formatter"
46
+ :shape="item?.input?.shape || input?.shape"
47
+ :border="item?.input?.border || input?.border"
48
+ @change="item?.input?.onChange"
49
+ @blur="item?.input?.onBlur"
50
+ @onPrefix="item?.input?.onPrefix"
51
+ @onSuffix="item?.input?.onSuffix"
52
+ ></hy-input>
53
+ </template>
54
+
55
+ <!-- 上传 -->
56
+ <template v-if="item.type === FormTypeEnum.UPLOAD">
57
+ <hy-upload
58
+ :fileList="formData[item.field]"
59
+ :maxCount="item.maxCount"
60
+ :disabled="disabled || item.disabled"
61
+ />
62
+ </template>
63
+ <!-- 上传 -->
64
+
65
+ <!-- 详情 -->
66
+ <template v-if="item.type === FormTypeEnum.DETAIL">
67
+ <view class="detail">
68
+ {{ formData[item.field] }}
69
+ </view>
70
+ </template>
71
+ <!-- 详情 -->
72
+
73
+ <!-- 文本域 -->
74
+ <view class="flex" v-if="item.type === FormTypeEnum.TEXTAREA">
75
+ <hy-textarea
76
+ v-model="formData[item.field]"
77
+ :disabled="disabled || item?.textarea?.disabled || textarea?.disabled"
78
+ :maxlength="item?.textarea?.maxlength || textarea?.maxlength"
79
+ :placeholder="item?.textarea?.placeholder"
80
+ :placeholderClass="
81
+ item?.textarea?.placeholderClass || textarea?.placeholderClass
82
+ "
83
+ :placeholderStyle="
84
+ item?.textarea?.placeholderStyle || textarea?.placeholderStyle
85
+ "
86
+ :holdKeyboard="item?.textarea?.holdKeyboard || textarea?.holdKeyboard"
87
+ :focus="item?.textarea?.focus || textarea?.focus"
88
+ :selectionStart="item?.textarea?.selectionStart || textarea?.selectionStart"
89
+ :selectionEnd="item?.textarea?.selectionEnd || textarea?.selectionEnd"
90
+ :adjustPosition="item?.textarea?.adjustPosition || textarea?.adjustPosition"
91
+ :formatter="item?.textarea?.formatter || textarea?.formatter"
92
+ :border="item?.textarea?.border || textarea?.border"
93
+ :height="textarea?.height || item?.textarea?.height"
94
+ @change="handleChange($event, item)"
95
+ @blur="handleBlur($event, item)"
96
+ ></hy-textarea>
97
+ </view>
98
+ <!-- 文本域 -->
99
+
100
+ <!-- 复选框/单选框 -->
101
+ <template v-if="item.type === FormTypeEnum.CHECK_BUTTON">
102
+ <hy-check-button
103
+ v-model="formData[item.field]"
104
+ :columns="item.actions"
105
+ :type="item?.checkButton?.type || checkButton?.type"
106
+ :shape="item?.checkButton?.shape || checkButton?.shape"
107
+ :size="item?.checkButton?.size || checkButton?.size"
108
+ :col="item?.checkButton?.col || checkButton?.col"
109
+ :gap="item?.checkButton?.gap || checkButton?.gap"
110
+ :fieldNames="item?.checkButton?.fieldNames || checkButton?.fieldNames"
111
+ :disabled="disabled || item?.checkButton?.size || checkButton?.disabled"
112
+ :selectType="item?.checkButton?.selectType || checkButton?.selectType"
113
+ ></hy-check-button>
114
+ </template>
115
+ <!-- 复选框/单选框 -->
116
+
117
+ <!-- 单选框 -->
118
+ <template v-if="item.type === FormTypeEnum.RADIO">
119
+ <hy-radio
120
+ v-model="formData[item.field]"
121
+ :columns="item.actions"
122
+ :fieldNames="item?.radio?.fieldNames || radio?.fieldNames"
123
+ :shape="item?.radio?.shape || radio?.shape"
124
+ :disabled="disabled || item?.radio?.disabled || radio?.disabled"
125
+ :size="item?.radio?.size || radio?.size"
126
+ :activeColor="item?.radio?.activeColor || radio?.activeColor"
127
+ :inactiveColor="item?.radio?.inactiveColor || radio?.inactiveColor"
128
+ :iconSize="item?.radio?.iconSize || radio?.iconSize"
129
+ :iconColor="item?.radio?.iconColor || radio?.iconColor"
130
+ :labelDisabled="item?.radio?.disabled || radio?.labelDisabled"
131
+ :placement="item?.radio?.placement || radio?.placement"
132
+ ></hy-radio>
133
+ </template>
134
+ <!-- 单选框 -->
135
+
136
+ <!-- 开关 -->
137
+ <template v-if="item.type === FormTypeEnum.SWITCH">
138
+ <hy-switch
139
+ v-model="formData[item.field]"
140
+ :loading="item?.switchItem?.loading || switchItem?.loading"
141
+ :disabled="disabled || item?.switchItem?.disabled || switchItem?.disabled"
142
+ :size="item?.switchItem?.size || switchItem?.size"
143
+ :activeColor="item?.switchItem?.activeColor || switchItem?.activeColor"
144
+ :inactiveColor="item?.switchItem?.inactiveColor || switchItem?.inactiveColor"
145
+ :activeValue="item?.switchItem?.activeValue || switchItem?.activeValue"
146
+ :inactiveValue="item?.switchItem?.inactiveValue || switchItem?.inactiveValue"
147
+ :activeIcon="item?.switchItem?.activeIcon || switchItem?.activeIcon"
148
+ :inactiveIcon="item?.switchItem?.inactiveIcon || switchItem?.inactiveIcon"
149
+ :space="item?.switchItem?.space || switchItem?.space"
150
+ ></hy-switch>
151
+ </template>
152
+ <!-- 开关 -->
153
+
154
+ <!-- 自定义选择器 -->
155
+ <template v-if="item.type === FormTypeEnum.SELECT">
156
+ <hy-picker
157
+ v-model="formData[item.field]"
158
+ :columns="item.select"
159
+ has-input
160
+ :separator="item?.picker?.separator || picker?.separator"
161
+ :itemHeight="item?.picker?.itemHeight || picker?.itemHeight"
162
+ :cancelText="item?.picker?.cancelText || picker?.cancelText"
163
+ :confirmText="item?.picker?.confirmText || picker?.confirmText"
164
+ :cancelColor="item?.picker?.cancelColor || picker?.cancelColor"
165
+ :confirmColor="item?.picker?.confirmColor || picker?.confirmColor"
166
+ :visibleItemCount="item?.picker?.visibleItemCount || picker?.visibleItemCount"
167
+ :closeOnClickOverlay="
168
+ item?.picker?.closeOnClickOverlay || picker?.closeOnClickOverlay
169
+ "
170
+ :title="item?.picker?.title || picker?.title"
171
+ :showToolbar="item?.picker?.showToolbar || picker?.showToolbar"
172
+ :input="{
173
+ disabled:
174
+ disabled || item?.picker?.input?.disabled || picker?.input?.disabled,
175
+ placeholder: item.picker?.input?.placeholder,
176
+ shape: item?.picker?.input?.shape || picker?.input?.shape,
177
+ border: item?.picker?.input?.border || picker?.input?.border
178
+ }"
179
+ ></hy-picker>
180
+ </template>
181
+ <!-- 自定义选择器 -->
182
+
183
+ <!-- 时间选择器 -->
184
+ <template v-if="item.type === FormTypeEnum.DATE">
185
+ <hy-datetime-picker
186
+ v-model="formData[item.field]"
187
+ has-input
188
+ :mode="item.mode"
189
+ :separator="item?.picker?.separator || picker?.separator"
190
+ :itemHeight="item?.picker?.itemHeight || picker?.itemHeight"
191
+ :cancelText="item?.picker?.cancelText || picker?.cancelText"
192
+ :confirmText="item?.picker?.confirmText || picker?.confirmText"
193
+ :cancelColor="item?.picker?.cancelColor || picker?.cancelColor"
194
+ :confirmColor="item?.picker?.confirmColor || picker?.confirmColor"
195
+ :visibleItemCount="item?.picker?.visibleItemCount || picker?.visibleItemCount"
196
+ :closeOnClickOverlay="
197
+ item?.picker?.closeOnClickOverlay || picker?.closeOnClickOverlay
198
+ "
199
+ :title="item?.picker?.title || picker?.title"
200
+ :showToolbar="item?.picker?.showToolbar || picker?.showToolbar"
201
+ :input="{
202
+ disabled:
203
+ disabled || item?.picker?.input?.disabled || picker?.input?.disabled,
204
+ placeholder: item.picker?.input?.placeholder,
205
+ shape: item?.picker?.input?.shape || picker?.input?.shape,
206
+ border: item?.picker?.input?.border || picker?.input?.border
207
+ }"
208
+ ></hy-datetime-picker>
209
+ </template>
210
+ <!-- 时间选择器 -->
211
+
212
+ <!-- 地址选择器 -->
213
+ <template v-if="item.type === FormTypeEnum.ADDRESS">
214
+ <hy-address-picker
215
+ v-model="formData[item.field]"
216
+ has-input
217
+ :separator="item?.picker?.separator || picker?.separator"
218
+ :itemHeight="item?.picker?.itemHeight || picker?.itemHeight"
219
+ :cancelText="item?.picker?.cancelText || picker?.cancelText"
220
+ :confirmText="item?.picker?.confirmText || picker?.confirmText"
221
+ :cancelColor="item?.picker?.cancelColor || picker?.cancelColor"
222
+ :confirmColor="item?.picker?.confirmColor || picker?.confirmColor"
223
+ :visibleItemCount="item?.picker?.visibleItemCount || picker?.visibleItemCount"
224
+ :closeOnClickOverlay="
225
+ item?.picker?.closeOnClickOverlay || picker?.closeOnClickOverlay
226
+ "
227
+ :title="item?.picker?.title || picker?.title"
228
+ :showToolbar="item?.picker?.showToolbar || picker?.showToolbar"
229
+ :input="{
230
+ disabled:
231
+ disabled || item?.picker?.input?.disabled || picker?.input?.disabled,
232
+ placeholder: item.picker?.input?.placeholder,
233
+ shape: item?.picker?.input?.shape || picker?.input?.shape,
234
+ border: item?.picker?.input?.border || picker?.input?.border
235
+ }"
236
+ ></hy-address-picker>
237
+ </template>
238
+ <!-- 地址选择器 -->
239
+
240
+ <!-- 自定义插槽 -->
241
+ <view class="flex" v-if="item.type === FormTypeEnum.CUSTOM">
242
+ <slot :name="item.field" :record="item"></slot>
243
+ </view>
244
+ <!-- 自定义插槽 -->
245
+ </hy-form-item>
246
+ </hy-form>
247
+ </template>
248
+
249
+ <script lang="ts">
250
+ export default {
251
+ name: 'hy-form-group',
252
+ options: {
253
+ addGlobalClass: true,
254
+ virtualHost: true,
255
+ styleIsolation: 'shared'
256
+ }
257
+ }
258
+ </script>
259
+
260
+ <script setup lang="ts">
261
+ import { ref } from 'vue'
262
+ import formGroupProps from './props'
263
+ import { type FormColumnsType, FormTypeEnum, type RulesVo } from '../../libs'
264
+
265
+ // 组件
266
+ import HyInput from '../hy-input/hy-input.vue'
267
+ import HyPicker from '../hy-picker/hy-picker.vue'
268
+ import HyUpload from '../hy-upload/hy-upload.vue'
269
+ import HyTextarea from '../hy-textarea/hy-textarea.vue'
270
+ import HySwitch from '../hy-switch/hy-switch.vue'
271
+ import HyRadio from '../hy-radio/hy-radio.vue'
272
+ import HyDatetimePicker from '../hy-datetime-picker/hy-datetime-picker.vue'
273
+ import HyAddressPicker from '../hy-address-picker/hy-address-picker.vue'
274
+ import HyCheckButton from '../hy-check-button/hy-check-button.vue'
275
+ import HyForm from '../hy-form/hy-form.vue'
276
+ import HyFormItem from '../hy-form-item/hy-form-item.vue'
277
+
278
+ const props = defineProps(formGroupProps)
279
+ const hyFormRef = ref<InstanceType<typeof HyForm> | null>(null)
280
+
281
+ const isInput = (type: FormTypeEnum) =>
282
+ type === FormTypeEnum.TEXT || type === FormTypeEnum.NUMBER || type === FormTypeEnum.PASSWORD
283
+
284
+ // 提取规则
285
+ function extractRules(formConfig: FormColumnsType[]): Record<string, RulesVo | RulesVo[]> {
286
+ return formConfig.reduce(
287
+ (acc, field) => {
288
+ if (field.rules) {
289
+ acc[field.field] = field.rules
290
+ }
291
+ return acc
292
+ },
293
+ {} as Record<string, RulesVo | RulesVo[]>
294
+ )
295
+ }
296
+
297
+ // 验证表单
298
+ const validate = () => {
299
+ return new Promise((resolve, reject) => {
300
+ hyFormRef.value
301
+ .validate()
302
+ .then((isValid: boolean) => resolve(isValid))
303
+ .catch((isValid: boolean) => reject(isValid))
304
+ })
305
+ }
306
+
307
+ // 验证表单
308
+ const submit = () => {
309
+ return new Promise((resolve, reject) => {
310
+ hyFormRef.value
311
+ .submit()
312
+ .then((isValid: boolean) => resolve(isValid))
313
+ .catch((allErrors: string[]) => reject(allErrors))
314
+ })
315
+ }
316
+
317
+ // 清楚字段值
318
+ const resetFields = () => hyFormRef.value.resetFields()
319
+
320
+ // 清楚校验
321
+ const clearValidate = () => hyFormRef.value.clearValidate()
322
+
323
+ defineExpose({
324
+ validate,
325
+ resetFields,
326
+ clearValidate,
327
+ submit
328
+ })
329
+ </script>
330
+
331
+ <style lang="scss" scoped>
332
+ @import './index.scss';
333
+ </style>