znyg-frontend-common 1.0.84 → 1.0.86-beta

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 (283) hide show
  1. package/es/components/index.mjs +1 -1
  2. package/es/components/znForm/src/index.vue2.mjs +4 -4
  3. package/es/components/znForm/src/index.vue2.mjs.map +1 -1
  4. package/es/components/znForm/src/interface/index.mjs.map +1 -1
  5. package/es/components/znFormV2/index.mjs +2 -0
  6. package/es/components/znFormV2/index.mjs.map +1 -0
  7. package/es/components/znFormV2/src/components/Tree.vue.mjs +2 -0
  8. package/es/components/znFormV2/src/components/Tree.vue.mjs.map +1 -0
  9. package/es/components/znFormV2/src/components/Tree.vue2.mjs +4 -0
  10. package/es/components/znFormV2/src/components/Tree.vue2.mjs.map +1 -0
  11. package/es/components/znFormV2/src/components/ZnFormV2Item.vue.mjs +2 -0
  12. package/es/components/znFormV2/src/components/ZnFormV2Item.vue.mjs.map +1 -0
  13. package/es/components/znFormV2/src/components/ZnFormV2Item.vue2.mjs +4 -0
  14. package/es/components/znFormV2/src/components/ZnFormV2Item.vue2.mjs.map +1 -0
  15. package/es/components/znFormV2/src/components/useRenderCheckbox.mjs +2 -0
  16. package/es/components/znFormV2/src/components/useRenderCheckbox.mjs.map +1 -0
  17. package/es/components/znFormV2/src/components/useRenderComponent.mjs +2 -0
  18. package/es/components/znFormV2/src/components/useRenderComponent.mjs.map +1 -0
  19. package/es/components/znFormV2/src/components/useRenderRadio.mjs +2 -0
  20. package/es/components/znFormV2/src/components/useRenderRadio.mjs.map +1 -0
  21. package/es/components/znFormV2/src/components/useRenderSelect.mjs +2 -0
  22. package/es/components/znFormV2/src/components/useRenderSelect.mjs.map +1 -0
  23. package/es/components/znFormV2/src/helper/componentMap.mjs +20 -0
  24. package/es/components/znFormV2/src/helper/componentMap.mjs.map +1 -0
  25. package/es/components/znFormV2/src/helper/index.mjs +2 -0
  26. package/es/components/znFormV2/src/helper/index.mjs.map +1 -0
  27. package/es/components/znFormV2/src/hooks/useZnFormV2.mjs +12 -0
  28. package/es/components/znFormV2/src/hooks/useZnFormV2.mjs.map +1 -0
  29. package/es/components/znFormV2/src/index.vue.mjs +2 -0
  30. package/es/components/znFormV2/src/index.vue.mjs.map +1 -0
  31. package/es/components/znFormV2/src/index.vue2.mjs +11 -0
  32. package/es/components/znFormV2/src/index.vue2.mjs.map +1 -0
  33. package/es/components/znFormV2/src/interface/index.mjs +2 -0
  34. package/es/components/znFormV2/src/interface/index.mjs.map +1 -0
  35. package/es/components/znFormV2/src/performance/PerformanceOptimizer.mjs +4 -0
  36. package/es/components/znFormV2/src/performance/PerformanceOptimizer.mjs.map +1 -0
  37. package/es/index.mjs +1 -1
  38. package/es/index.mjs.map +1 -1
  39. package/global.d.ts +1 -0
  40. package/lib/components/index.js +1 -1
  41. package/lib/components/znForm/src/index.vue2.js +4 -4
  42. package/lib/components/znForm/src/index.vue2.js.map +1 -1
  43. package/lib/components/znForm/src/interface/index.js.map +1 -1
  44. package/lib/components/znFormV2/index.js +2 -0
  45. package/lib/components/znFormV2/index.js.map +1 -0
  46. package/lib/components/znFormV2/src/components/Tree.vue.js +2 -0
  47. package/lib/components/znFormV2/src/components/Tree.vue.js.map +1 -0
  48. package/lib/components/znFormV2/src/components/Tree.vue2.js +4 -0
  49. package/lib/components/znFormV2/src/components/Tree.vue2.js.map +1 -0
  50. package/lib/components/znFormV2/src/components/ZnFormV2Item.vue.js +2 -0
  51. package/lib/components/znFormV2/src/components/ZnFormV2Item.vue.js.map +1 -0
  52. package/lib/components/znFormV2/src/components/ZnFormV2Item.vue2.js +4 -0
  53. package/lib/components/znFormV2/src/components/ZnFormV2Item.vue2.js.map +1 -0
  54. package/lib/components/znFormV2/src/components/useRenderCheckbox.js +2 -0
  55. package/lib/components/znFormV2/src/components/useRenderCheckbox.js.map +1 -0
  56. package/lib/components/znFormV2/src/components/useRenderComponent.js +2 -0
  57. package/lib/components/znFormV2/src/components/useRenderComponent.js.map +1 -0
  58. package/lib/components/znFormV2/src/components/useRenderRadio.js +2 -0
  59. package/lib/components/znFormV2/src/components/useRenderRadio.js.map +1 -0
  60. package/lib/components/znFormV2/src/components/useRenderSelect.js +2 -0
  61. package/lib/components/znFormV2/src/components/useRenderSelect.js.map +1 -0
  62. package/lib/components/znFormV2/src/helper/componentMap.js +20 -0
  63. package/lib/components/znFormV2/src/helper/componentMap.js.map +1 -0
  64. package/lib/components/znFormV2/src/helper/index.js +2 -0
  65. package/lib/components/znFormV2/src/helper/index.js.map +1 -0
  66. package/lib/components/znFormV2/src/hooks/useZnFormV2.js +12 -0
  67. package/lib/components/znFormV2/src/hooks/useZnFormV2.js.map +1 -0
  68. package/lib/components/znFormV2/src/index.vue.js +2 -0
  69. package/lib/components/znFormV2/src/index.vue.js.map +1 -0
  70. package/lib/components/znFormV2/src/index.vue2.js +11 -0
  71. package/lib/components/znFormV2/src/index.vue2.js.map +1 -0
  72. package/lib/components/znFormV2/src/interface/index.js +2 -0
  73. package/lib/components/znFormV2/src/interface/index.js.map +1 -0
  74. package/lib/components/znFormV2/src/performance/PerformanceOptimizer.js +4 -0
  75. package/lib/components/znFormV2/src/performance/PerformanceOptimizer.js.map +1 -0
  76. package/lib/index.js +1 -1
  77. package/lib/index.js.map +1 -1
  78. package/package.json +1 -1
  79. package/theme-default/index.css +1 -1
  80. package/es/components/index.d.ts +0 -18
  81. package/es/components/znChart/index.d.ts +0 -100
  82. package/es/components/znChart/src/znChart.d.ts +0 -5
  83. package/es/components/znChart/src/znChart.vue.d.ts +0 -100
  84. package/es/components/znCountTo/index.d.ts +0 -233
  85. package/es/components/znCountTo/src/countUp.d.ts +0 -67
  86. package/es/components/znCountTo/src/index.vue.d.ts +0 -234
  87. package/es/components/znForm/index.d.ts +0 -376
  88. package/es/components/znForm/src/components/Test.vue.d.ts +0 -432
  89. package/es/components/znForm/src/components/Tree.vue.d.ts +0 -3008
  90. package/es/components/znForm/src/components/ZnFormItem.vue.d.ts +0 -3037
  91. package/es/components/znForm/src/components/useRenderCheckbox.d.ts +0 -4
  92. package/es/components/znForm/src/components/useRenderComponent.d.ts +0 -5
  93. package/es/components/znForm/src/components/useRenderRadio.d.ts +0 -4
  94. package/es/components/znForm/src/components/useRenderSelect.d.ts +0 -4
  95. package/es/components/znForm/src/helper/componentMap.d.ts +0 -4
  96. package/es/components/znForm/src/helper/index.d.ts +0 -56
  97. package/es/components/znForm/src/hooks/useZnForm.d.ts +0 -78
  98. package/es/components/znForm/src/index.vue.d.ts +0 -426
  99. package/es/components/znForm/src/interface/index.d.ts +0 -243
  100. package/es/components/znGrid/index.d.ts +0 -194
  101. package/es/components/znGrid/src/components/GridItem.vue.d.ts +0 -130
  102. package/es/components/znGrid/src/index.vue.d.ts +0 -87
  103. package/es/components/znNumberScroll/index.d.ts +0 -124
  104. package/es/components/znNumberScroll/src/index.vue.d.ts +0 -121
  105. package/es/components/znNumberScroll/src/interface/index.d.ts +0 -67
  106. package/es/components/znSearch/index.d.ts +0 -4557
  107. package/es/components/znSearch/src/hooks/useProSearch.d.ts +0 -58
  108. package/es/components/znSearch/src/index.vue.d.ts +0 -4590
  109. package/es/components/znTable/index.d.ts +0 -4219
  110. package/es/components/znTable/src/components/ColSetting.vue.d.ts +0 -878
  111. package/es/components/znTable/src/components/Grid/components/GridItem.vue.d.ts +0 -116
  112. package/es/components/znTable/src/components/Grid/index.vue.d.ts +0 -79
  113. package/es/components/znTable/src/components/Grid/interface/index.d.ts +0 -5
  114. package/es/components/znTable/src/components/OperationBtns/index.vue.d.ts +0 -71
  115. package/es/components/znTable/src/components/Pagination.vue.d.ts +0 -43
  116. package/es/components/znTable/src/components/SearchForm/components/SearchFormItem.vue.d.ts +0 -45
  117. package/es/components/znTable/src/components/SearchForm/index.vue.d.ts +0 -304
  118. package/es/components/znTable/src/components/TableColumn.vue.d.ts +0 -30
  119. package/es/components/znTable/src/hooks/interface/index.d.ts +0 -22
  120. package/es/components/znTable/src/hooks/useSelection.d.ts +0 -16
  121. package/es/components/znTable/src/hooks/useTable.d.ts +0 -46
  122. package/es/components/znTable/src/index.vue.d.ts +0 -4242
  123. package/es/components/znTable/src/interface/index.d.ts +0 -126
  124. package/es/components/znTable/src/utils.d.ts +0 -171
  125. package/es/components/znTest/index.d.ts +0 -4
  126. package/es/components/znTest/src/index.vue.d.ts +0 -4
  127. package/es/components/znTimeLine/index.d.ts +0 -165
  128. package/es/components/znTimeLine/src/component/timelineItem.vue.d.ts +0 -117
  129. package/es/components/znTimeLine/src/index.vue.d.ts +0 -187
  130. package/es/components/znTimeLine/src/interface/index.d.ts +0 -0
  131. package/es/components/znTreeFilter/index.d.ts +0 -2178
  132. package/es/components/znTreeFilter/src/index.vue.d.ts +0 -2178
  133. package/es/components/znTreeSelect/index.d.ts +0 -1965
  134. package/es/components/znTreeSelect/src/index.vue.d.ts +0 -2020
  135. package/es/components/znVirtualTable/index.d.ts +0 -5
  136. package/es/components/znVirtualTable/src/components/ColSetting.vue.d.ts +0 -361
  137. package/es/components/znVirtualTable/src/components/Pagination.vue.d.ts +0 -28
  138. package/es/components/znVirtualTable/src/components/SearchForm/components/SearchFormItem.vue.d.ts +0 -25
  139. package/es/components/znVirtualTable/src/components/SearchForm/index.vue.d.ts +0 -78
  140. package/es/components/znVirtualTable/src/hooks/useSelection.d.ts +0 -7
  141. package/es/components/znVirtualTable/src/hooks/useTable.d.ts +0 -22
  142. package/es/components/znVirtualTable/src/index.vue.d.ts +0 -986
  143. package/es/components/znVirtualTable/src/interface/index.d.ts +0 -144
  144. package/es/components/znVirtualTable/src/utils/index.d.ts +0 -8
  145. package/es/components/znVirtualTable/src/utils/vxe-setup.d.ts +0 -19
  146. package/es/components/znWorkGrid/index.d.ts +0 -85
  147. package/es/components/znWorkGrid/src/index.vue.d.ts +0 -92
  148. package/es/components/znWorkGrid/src/interface/index.d.ts +0 -14
  149. package/es/directives/index.d.ts +0 -7
  150. package/es/directives/modules/autoScroll.d.ts +0 -3
  151. package/es/directives/modules/confirm.d.ts +0 -3
  152. package/es/directives/modules/copy.d.ts +0 -8
  153. package/es/directives/modules/countTo.d.ts +0 -6
  154. package/es/directives/modules/drag.d.ts +0 -7
  155. package/es/directives/modules/tooltip.d.ts +0 -3
  156. package/es/functions/index.d.ts +0 -4
  157. package/es/functions/modules/is.d.ts +0 -83
  158. package/es/functions/modules/log.d.ts +0 -11
  159. package/es/functions/modules/uitls.d.ts +0 -25
  160. package/es/hooks/index.d.ts +0 -8
  161. package/es/hooks/useDialog/index.d.ts +0 -6
  162. package/es/hooks/useDialog/src/index.d.ts +0 -43
  163. package/es/hooks/useDialogV2/index.d.ts +0 -6
  164. package/es/hooks/useDialogV2/src/index.d.ts +0 -58
  165. package/es/hooks/useDrawer/index.d.ts +0 -6
  166. package/es/hooks/useDrawer/src/index.d.ts +0 -52
  167. package/es/hooks/useDrawerV2/index.d.ts +0 -7
  168. package/es/hooks/useDrawerV2/src/index.d.ts +0 -69
  169. package/es/hooks/useImageViewer/index.d.ts +0 -5
  170. package/es/hooks/useImageViewer/src/index.vue.d.ts +0 -241
  171. package/es/hooks/usePopWindow/index.d.ts +0 -10
  172. package/es/hooks/usePopWindow/src/index.d.ts +0 -40
  173. package/es/hooks/usePopWindow/src/interface/index.d.ts +0 -59
  174. package/es/hooks/usePopWindowV2/index.d.ts +0 -7
  175. package/es/hooks/usePopWindowV2/src/index.d.ts +0 -35
  176. package/es/hooks/usePopWindowV2/src/interface/index.d.ts +0 -68
  177. package/es/index.d.ts +0 -8
  178. package/es/installer.d.ts +0 -6
  179. package/es/types.d.ts +0 -6
  180. package/es/utils/index.d.ts +0 -11
  181. package/es/utils/install.d.ts +0 -7
  182. package/lib/components/index.d.ts +0 -18
  183. package/lib/components/znChart/index.d.ts +0 -100
  184. package/lib/components/znChart/src/znChart.d.ts +0 -5
  185. package/lib/components/znChart/src/znChart.vue.d.ts +0 -100
  186. package/lib/components/znCountTo/index.d.ts +0 -233
  187. package/lib/components/znCountTo/src/countUp.d.ts +0 -67
  188. package/lib/components/znCountTo/src/index.vue.d.ts +0 -234
  189. package/lib/components/znForm/index.d.ts +0 -376
  190. package/lib/components/znForm/src/components/Test.vue.d.ts +0 -432
  191. package/lib/components/znForm/src/components/Tree.vue.d.ts +0 -3008
  192. package/lib/components/znForm/src/components/ZnFormItem.vue.d.ts +0 -3037
  193. package/lib/components/znForm/src/components/useRenderCheckbox.d.ts +0 -4
  194. package/lib/components/znForm/src/components/useRenderComponent.d.ts +0 -5
  195. package/lib/components/znForm/src/components/useRenderRadio.d.ts +0 -4
  196. package/lib/components/znForm/src/components/useRenderSelect.d.ts +0 -4
  197. package/lib/components/znForm/src/helper/componentMap.d.ts +0 -4
  198. package/lib/components/znForm/src/helper/index.d.ts +0 -56
  199. package/lib/components/znForm/src/hooks/useZnForm.d.ts +0 -78
  200. package/lib/components/znForm/src/index.vue.d.ts +0 -426
  201. package/lib/components/znForm/src/interface/index.d.ts +0 -243
  202. package/lib/components/znGrid/index.d.ts +0 -194
  203. package/lib/components/znGrid/src/components/GridItem.vue.d.ts +0 -130
  204. package/lib/components/znGrid/src/index.vue.d.ts +0 -87
  205. package/lib/components/znNumberScroll/index.d.ts +0 -124
  206. package/lib/components/znNumberScroll/src/index.vue.d.ts +0 -121
  207. package/lib/components/znNumberScroll/src/interface/index.d.ts +0 -67
  208. package/lib/components/znSearch/index.d.ts +0 -4557
  209. package/lib/components/znSearch/src/hooks/useProSearch.d.ts +0 -58
  210. package/lib/components/znSearch/src/index.vue.d.ts +0 -4590
  211. package/lib/components/znTable/index.d.ts +0 -4219
  212. package/lib/components/znTable/src/components/ColSetting.vue.d.ts +0 -878
  213. package/lib/components/znTable/src/components/Grid/components/GridItem.vue.d.ts +0 -116
  214. package/lib/components/znTable/src/components/Grid/index.vue.d.ts +0 -79
  215. package/lib/components/znTable/src/components/Grid/interface/index.d.ts +0 -5
  216. package/lib/components/znTable/src/components/OperationBtns/index.vue.d.ts +0 -71
  217. package/lib/components/znTable/src/components/Pagination.vue.d.ts +0 -43
  218. package/lib/components/znTable/src/components/SearchForm/components/SearchFormItem.vue.d.ts +0 -45
  219. package/lib/components/znTable/src/components/SearchForm/index.vue.d.ts +0 -304
  220. package/lib/components/znTable/src/components/TableColumn.vue.d.ts +0 -30
  221. package/lib/components/znTable/src/hooks/interface/index.d.ts +0 -22
  222. package/lib/components/znTable/src/hooks/useSelection.d.ts +0 -16
  223. package/lib/components/znTable/src/hooks/useTable.d.ts +0 -46
  224. package/lib/components/znTable/src/index.vue.d.ts +0 -4242
  225. package/lib/components/znTable/src/interface/index.d.ts +0 -126
  226. package/lib/components/znTable/src/utils.d.ts +0 -171
  227. package/lib/components/znTest/index.d.ts +0 -4
  228. package/lib/components/znTest/src/index.vue.d.ts +0 -4
  229. package/lib/components/znTimeLine/index.d.ts +0 -165
  230. package/lib/components/znTimeLine/src/component/timelineItem.vue.d.ts +0 -117
  231. package/lib/components/znTimeLine/src/index.vue.d.ts +0 -187
  232. package/lib/components/znTimeLine/src/interface/index.d.ts +0 -0
  233. package/lib/components/znTreeFilter/index.d.ts +0 -2178
  234. package/lib/components/znTreeFilter/src/index.vue.d.ts +0 -2178
  235. package/lib/components/znTreeSelect/index.d.ts +0 -1965
  236. package/lib/components/znTreeSelect/src/index.vue.d.ts +0 -2020
  237. package/lib/components/znVirtualTable/index.d.ts +0 -5
  238. package/lib/components/znVirtualTable/src/components/ColSetting.vue.d.ts +0 -361
  239. package/lib/components/znVirtualTable/src/components/Pagination.vue.d.ts +0 -28
  240. package/lib/components/znVirtualTable/src/components/SearchForm/components/SearchFormItem.vue.d.ts +0 -25
  241. package/lib/components/znVirtualTable/src/components/SearchForm/index.vue.d.ts +0 -78
  242. package/lib/components/znVirtualTable/src/hooks/useSelection.d.ts +0 -7
  243. package/lib/components/znVirtualTable/src/hooks/useTable.d.ts +0 -22
  244. package/lib/components/znVirtualTable/src/index.vue.d.ts +0 -986
  245. package/lib/components/znVirtualTable/src/interface/index.d.ts +0 -144
  246. package/lib/components/znVirtualTable/src/utils/index.d.ts +0 -8
  247. package/lib/components/znVirtualTable/src/utils/vxe-setup.d.ts +0 -19
  248. package/lib/components/znWorkGrid/index.d.ts +0 -85
  249. package/lib/components/znWorkGrid/src/index.vue.d.ts +0 -92
  250. package/lib/components/znWorkGrid/src/interface/index.d.ts +0 -14
  251. package/lib/directives/index.d.ts +0 -7
  252. package/lib/directives/modules/autoScroll.d.ts +0 -3
  253. package/lib/directives/modules/confirm.d.ts +0 -3
  254. package/lib/directives/modules/copy.d.ts +0 -8
  255. package/lib/directives/modules/countTo.d.ts +0 -6
  256. package/lib/directives/modules/drag.d.ts +0 -7
  257. package/lib/directives/modules/tooltip.d.ts +0 -3
  258. package/lib/functions/index.d.ts +0 -4
  259. package/lib/functions/modules/is.d.ts +0 -83
  260. package/lib/functions/modules/log.d.ts +0 -11
  261. package/lib/functions/modules/uitls.d.ts +0 -25
  262. package/lib/hooks/index.d.ts +0 -8
  263. package/lib/hooks/useDialog/index.d.ts +0 -6
  264. package/lib/hooks/useDialog/src/index.d.ts +0 -43
  265. package/lib/hooks/useDialogV2/index.d.ts +0 -6
  266. package/lib/hooks/useDialogV2/src/index.d.ts +0 -58
  267. package/lib/hooks/useDrawer/index.d.ts +0 -6
  268. package/lib/hooks/useDrawer/src/index.d.ts +0 -52
  269. package/lib/hooks/useDrawerV2/index.d.ts +0 -7
  270. package/lib/hooks/useDrawerV2/src/index.d.ts +0 -69
  271. package/lib/hooks/useImageViewer/index.d.ts +0 -5
  272. package/lib/hooks/useImageViewer/src/index.vue.d.ts +0 -241
  273. package/lib/hooks/usePopWindow/index.d.ts +0 -10
  274. package/lib/hooks/usePopWindow/src/index.d.ts +0 -40
  275. package/lib/hooks/usePopWindow/src/interface/index.d.ts +0 -59
  276. package/lib/hooks/usePopWindowV2/index.d.ts +0 -7
  277. package/lib/hooks/usePopWindowV2/src/index.d.ts +0 -35
  278. package/lib/hooks/usePopWindowV2/src/interface/index.d.ts +0 -68
  279. package/lib/index.d.ts +0 -8
  280. package/lib/installer.d.ts +0 -6
  281. package/lib/types.d.ts +0 -6
  282. package/lib/utils/index.d.ts +0 -11
  283. package/lib/utils/install.d.ts +0 -7
@@ -1,2 +1,2 @@
1
- export{ZnChart}from"./znChart/index.mjs";export{ZnTable}from"./znTable/index.mjs";export{ZnTreeSelect}from"./znTreeSelect/index.mjs";export{ZnTreeFilter}from"./znTreeFilter/index.mjs";export{ZnCountTo}from"./znCountTo/index.mjs";export{ZnForm}from"./znForm/index.mjs";export{ZnTimeline}from"./znTimeLine/index.mjs";export{ZnGrid,ZnGridItem}from"./znGrid/index.mjs";export{ZnTest}from"./znTest/index.mjs";export{ZnWorkGrid}from"./znWorkGrid/index.mjs";export{ZnSearch}from"./znSearch/index.mjs";export{ZnNumberScroll}from"./znNumberScroll/index.mjs";import"./znVirtualTable/index.mjs";export{useZnForm}from"./znForm/src/hooks/useZnForm.mjs";export{useZnSearch}from"./znSearch/src/hooks/useProSearch.mjs";export{default as ZnVirtualTable}from"./znVirtualTable/src/index.vue2.mjs";export{initVXETable}from"./znVirtualTable/src/utils/vxe-setup.mjs";
1
+ export{ZnChart}from"./znChart/index.mjs";export{ZnTable}from"./znTable/index.mjs";export{ZnTreeSelect}from"./znTreeSelect/index.mjs";export{ZnTreeFilter}from"./znTreeFilter/index.mjs";export{ZnCountTo}from"./znCountTo/index.mjs";export{ZnForm}from"./znForm/index.mjs";export{ZnFormV2}from"./znFormV2/index.mjs";export{ZnTimeline}from"./znTimeLine/index.mjs";export{ZnGrid,ZnGridItem}from"./znGrid/index.mjs";export{ZnTest}from"./znTest/index.mjs";export{ZnWorkGrid}from"./znWorkGrid/index.mjs";export{ZnSearch}from"./znSearch/index.mjs";export{ZnNumberScroll}from"./znNumberScroll/index.mjs";import"./znVirtualTable/index.mjs";export{useZnForm}from"./znForm/src/hooks/useZnForm.mjs";export{useZnFormV2}from"./znFormV2/src/hooks/useZnFormV2.mjs";export{useZnSearch}from"./znSearch/src/hooks/useProSearch.mjs";export{default as ZnFormItem}from"./znForm/src/components/ZnFormItem.vue2.mjs";export{batchExecute,camelCaseToHyphen,checkFeatureSupport,createUniqueId,debounce,delay,executeInIdle,getElementOffsetTop,getMemoryUsage,getObjectHash,isDeepEqual,isElementInViewport,isShallowEqual,throttle}from"./znFormV2/src/helper/index.mjs";export{default as ZnFormV2Item}from"./znFormV2/src/components/ZnFormV2Item.vue2.mjs";export{initVXETable,isVXETableInitialized}from"./znVirtualTable/src/utils/vxe-setup.mjs";export{default as ZnVirtualTable}from"./znVirtualTable/src/index.vue2.mjs";
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1,8 +1,8 @@
1
- import{isVNode as e,defineComponent as t,useModel as o,shallowRef as a,ref as l,computed as n,unref as r,nextTick as u,provide as d,watch as i,markRaw as s,useSlots as p,createVNode as m,mergeProps as c,Fragment as f,createTextVNode as v,withDirectives as y,vShow as g,onMounted as h,onUnmounted as b,createBlock as x,openBlock as w,mergeModels as L}from"vue";import"./components/ZnFormItem.vue.mjs";import{getFormProp as D,setFormProp as z,hyphenToCamelCase as V,deleteObjProperty as $,getPx as T,isString as S}from"./helper/index.mjs";import{componentMap as C}from"./helper/componentMap.mjs";import{formEnumMapKey as F,ComponentNameEnum as I}from"./interface/index.mjs";import{ElForm as E,ElFormItem as M,ElRow as q,ElCol as j}from"element-plus";import P from"./components/ZnFormItem.vue2.mjs";var Z=Object.defineProperty,O=(e,t)=>Z(e,"name",{value:t,configurable:!0});function k(t){return"function"==typeof t||"[object Object]"===Object.prototype.toString.call(t)&&!e(t)}O(k,"_isSlot");var R=t({name:"ZnForm",__name:"index",props:L({modelValue:{type:Object,required:!1,default:O((()=>({})),"default")},schema:{type:Array,required:!1,default:O((()=>[]),"default")},elFormProps:{type:Object,required:!1},useCol:{type:Boolean,required:!1,default:!0},rowProps:{type:Object,required:!1},onlyRenderComponent:{type:Boolean,required:!1,default:!1},dynamicModel:{type:Boolean,required:!1,default:!0},includeModelKeys:{type:Array,required:!1},enumMapProps:{type:Map,required:!1},isView:{type:Boolean,required:!1,default:!1},disableRulesInView:{type:Boolean,required:!1,default:!0},lazyLoad:{type:Boolean,required:!1,default:!1},lazyLoadDelay:{type:Number,required:!1,default:50},initialLoadCount:{type:Number,required:!1,default:10},batchLoadCount:{type:Number,required:!1,default:5},lazyLoadDebug:{type:Boolean,required:!1,default:!1},componentDelayLoad:{type:Number,required:!1,default:0}},{modelValue:{default:O((()=>({})),"default")},modelModifiers:{}}),emits:L(["register","validate"],["update:modelValue"]),setup(e,{expose:t,emit:L}){const Z=e,R=o(e,"modelValue"),B=a(),W=l({}),_=n((()=>{const e={...Z};return Object.assign(e,r(W)),e})),N=l(Z.enumMapProps||new Map),U=l(new Set),A=l([]),K=l(!1),H=l(null),J=l(0),G=l([]),Y=new Map,Q=O((()=>{Y.clear()}),"clearCache"),X=O((async({enum:e,prop:t,useCacheEnum:o=!0})=>{if(!e)return;const a=r(N);if("function"!=typeof e)return a.set(t,r(e)),void(N.value=new Map(a));try{a.set(t,[]);let o=await e(r(R),a);o=o?.result||o,Array.isArray(o)||(console.warn(`警告: '${t}' 的enum函数返回值不是数组`,o),o=[]),a.set(t,o),N.value=new Map(a),u((()=>{if(t){const e=r(_).schema?.find((e=>e.prop===t));e&&ee(e)}}))}catch(e){console.error(`添加enum函数参数失败: '${t}'`,e),a.set(t,[]),N.value=new Map(a)}}),"setEnumMap");d(F,N);const ee=O((async({defaultValue:e,fieldNames:t,prop:o})=>{const a=r(R),l=D(a,o);if(l||!1===l||0===l)return;const n=r(e);if(null!=n)return z(a,o,"function"!=typeof n?n:await n(a,r(N)));const u=r(N).get(o);if(u?.length){const e=u.filter((e=>"Y"===e.isDefault));return e.length&&z(a,o,e[0][t?.value??"value"])}}),"initDefaultValue"),te=O((({prop:e,el:t,subProp:o,subEnum:a})=>{if(V(t)===I.EL_SELECT){if("string"!=typeof o)return;i((()=>D(r(R),e)),(async t=>{const l=r(N);if(r(R)[o]&&(r(R)[o]=""),!a)return;if(!t)return l.set(o,[]);if(l.get(`${o}-${t}`))l.set(o,l.get(`${o}-${t}`)||[]);else if("function"==typeof a){const n=await a(t,l.get(e));l.set(`${o}-${t}`,n),l.set(o,n)}else Array.isArray(a)&&(l.set(`${o}-${t}`,a),l.set(o,a));const n=l.get(e)||[],[u]=n.filter((e=>e.value===t));u?.subValue&&(r(R)[o]=u.subValue)}),{immediate:!0})}}),"cascadeEnum"),oe=O((e=>{const{hidden:t,prop:o}=e;if("function"!=typeof t)return t;const a=`${`hidden_${o}`}_${JSON.stringify(r(R))}`;if(Y.has(a))return Y.get(a);const l=t(r(R));return Y.set(a,l),l}),"isHidden"),ae=O((e=>{const{destroy:t,prop:o}=e,a=`destroy_${o}`;if("function"!=typeof t){const a=t||!1;return a?$(r(R),o):ee(e),a}const l=`${a}_${JSON.stringify(r(R))}`;if(Y.has(l))return Y.get(l);const n=t(r(R));return Y.set(l,n),n?$(r(R),o):ee(e),n}),"isDestroy"),le=O((e=>"function"==typeof e?e(r(R)):e+""),"parseLabel"),ne=n((()=>{const e=r(_).schema||[];return s([...e].sort(((e,t)=>(e.order??0)-(t.order??0))))})),re=l({total:0,loaded:0,pending:0,startTime:0,endTime:0,duration:0}),ue=n((()=>(J.value,0===re.value.startTime?0:re.value.duration>0?re.value.duration:Date.now()-re.value.startTime))),de=n((()=>[...G.value].sort(((e,t)=>t.duration-e.duration)))),ie=O((e=>{K.value=!0,re.value.startTime=Date.now(),re.value.endTime=0,re.value.duration=0,G.value=[],Z.lazyLoadDebug&&H.value&&clearInterval(H.value),Z.lazyLoadDebug&&(H.value=setInterval((()=>{J.value+=1}),100)),Z.lazyLoadDebug&&console.log("ZnForm Component LazyLoad Started:",{componentDelayLoad:Z.componentDelayLoad,totalItems:e.length,startTime:new Date(re.value.startTime).toLocaleTimeString()});const t=A.value.slice(0,Math.min(Z.initialLoadCount,A.value.length));t.forEach((e=>{e.prop&&U.value.add(e.prop)})),A.value=A.value.filter((e=>!t.some((t=>t.prop===e.prop)))),re.value.loaded=U.value.size,re.value.pending=A.value.length,u((()=>se()))}),"startComponentLazyLoad"),se=O((()=>{if(0===A.value.length)return;let e=0;const t=O((()=>{if(0===A.value.length)return;e++;Date.now();const o=A.value.slice(0,Z.batchLoadCount);if(A.value=A.value.slice(Z.batchLoadCount),o.forEach(((t,o)=>{if(t.prop){const o=Date.now();U.value.add(t.prop),u((()=>{const a=Date.now();G.value.push({prop:t.prop,label:"function"==typeof t.label?t.label(r(R)):t.label||t.prop,startTime:o,endTime:a,duration:a-o,batchIndex:e})}))}})),re.value.loaded=U.value.size,re.value.pending=A.value.length,Z.lazyLoadDebug&&console.log("ZnForm LazyLoad Batch:",{loaded:re.value.loaded,pending:re.value.pending,total:re.value.total}),A.value.length>0)setTimeout(t,Z.lazyLoadDelay);else if(re.value.endTime=Date.now(),re.value.duration=re.value.endTime-re.value.startTime,H.value&&(clearInterval(H.value),H.value=null),Z.lazyLoadDebug&&(console.log("ZnForm LazyLoad Completed:",{total:re.value.total,duration:re.value.duration+"ms",endTime:new Date(re.value.endTime).toLocaleTimeString()}),G.value.length>0)){console.log(`[ZnForm 组件加载详情] 总计 ${G.value.length} 个组件`);const e=[...G.value].sort(((e,t)=>t.duration-e.duration)).slice(0,5);console.log("[ZnForm 最耗时的5个组件]:",e.map((e=>`${e.label}(${e.prop}): ${e.duration}ms`)));const t=Math.round(G.value.reduce(((e,t)=>e+t.duration),0)/G.value.length);console.log(`[ZnForm 性能统计] 最慢: ${e[0]?.duration||0}ms | 最快: ${[...G.value].sort(((e,t)=>e.duration-t.duration))[0]?.duration||0}ms | 平均: ${t}ms`)}}),"loadNextBatch");t()}),"startLazyLoading"),pe=O((e=>!Z.lazyLoad||(!e.prop||!!K.value&&U.value.has(e.prop))),"shouldRenderItem");i((()=>r(_).schema),((e=[])=>{const t=Z.includeModelKeys?.length>0&&r(_).dynamicModel?new Set(Object.keys(r(R))):null;if(Q(),Z.lazyLoad&&(U.value.clear(),A.value=[]),re.value.total=e.length,e.forEach(((e,o)=>{X(e),te(e),e&&(e.order=e.order??o+2),ee(e),t&&e.prop&&(t.delete(e.prop),e.renderUseProp?.forEach((e=>t.delete(e)))),Z.lazyLoad&&e.prop&&A.value.push(e)})),t&&Z.includeModelKeys?.length&&Z.includeModelKeys.forEach((e=>t.delete(e))),t?.size){const e=r(R);t.forEach((t=>{delete e[t]}))}if(!Z.lazyLoad||Z.isView){if(K.value=!0,re.value.startTime=Date.now(),G.value=[],e.forEach(((e,t)=>{if(e.prop){const t=Date.now();U.value.add(e.prop);const o=Date.now();G.value.push({prop:e.prop,label:"function"==typeof e.label?e.label(r(R)):e.label||e.prop,startTime:t,endTime:o,duration:o-t,batchIndex:0})}})),re.value.endTime=Date.now(),re.value.duration=re.value.endTime-re.value.startTime,re.value.loaded=e.length,re.value.pending=0,Z.lazyLoadDebug&&(console.log("ZnForm Sync Render Completed:",{total:re.value.total,duration:re.value.duration+"ms"}),G.value.length>0)){console.log(`[ZnForm 组件加载详情] 总计 ${G.value.length} 个组件`);const e=[...G.value].sort(((e,t)=>t.duration-e.duration)).slice(0,5);console.log("[ZnForm 最耗时的5个组件]:",e.map((e=>`${e.label}(${e.prop}): ${e.duration}ms`)));const t=Math.round(G.value.reduce(((e,t)=>e+t.duration),0)/G.value.length);console.log(`[ZnForm 性能统计] 最慢: ${e[0]?.duration||0}ms | 最快: ${[...G.value].sort(((e,t)=>e.duration-t.duration))[0]?.duration||0}ms | 平均: ${t}ms`)}}else A.value.length>0&&(Z.componentDelayLoad>0?setTimeout((()=>{ie(e)}),Z.componentDelayLoad):ie(e))}),{immediate:!0,deep:!0}),i((()=>(r(_).schema||[]).map((e=>({prop:e.prop,enum:e.enum})))),((e,t)=>{e&&0!==e.length&&e.forEach(((e,o)=>{if(e.enum!==t?.[o]?.enum){const t=r(_).schema?.find((t=>t.prop===e.prop));t&&(X(t),u((()=>{ee(t)})))}}))}),{deep:!0}),i((()=>N.value),(()=>{Q()}),{deep:!0});n((()=>ne.value));const me=O((({width:e,props:t})=>{const{elFormProps:o={}}=r(_),a=t?.style||{width:"100%"};return e?{...a,width:T(e)}:o.fixWidth?{...a,width:T(o.width||o.inline?220:"100%")}:a}),"getComponentWidth"),ce=O((({labelSize:e})=>e&&"default"!==e?"small"===e?{fontSize:"14px",fontWeight:600}:"large"===e?{fontSize:"18px",fontWeight:600}:{}:{fontSize:"16px",fontWeight:600}),"getTitleFontStyle"),fe=O(((e={})=>({
1
+ import{isVNode as e,defineComponent as t,useModel as o,shallowRef as a,ref as l,computed as n,unref as r,getCurrentInstance as u,nextTick as i,provide as s,watch as d,markRaw as p,useSlots as m,createVNode as c,mergeProps as f,Fragment as h,createTextVNode as v,withDirectives as g,vShow as y,onMounted as b,onUnmounted as x,createBlock as w,openBlock as L,mergeModels as D}from"vue";import"./components/ZnFormItem.vue.mjs";import{getFormProp as $,setFormProp as C,hyphenToCamelCase as z,deleteObjProperty as T,getPx as V,isString as S}from"./helper/index.mjs";import{componentMap as M}from"./helper/componentMap.mjs";import{formEnumMapKey as E,ComponentNameEnum as F}from"./interface/index.mjs";import{ElForm as I,ElFormItem as j,ElRow as q,ElCol as P}from"element-plus";import k from"./components/ZnFormItem.vue2.mjs";var R=Object.defineProperty,Z=(e,t)=>R(e,"name",{value:t,configurable:!0});function _(t){return"function"==typeof t||"[object Object]"===Object.prototype.toString.call(t)&&!e(t)}Z(_,"_isSlot");var O=t({name:"ZnForm",__name:"index",props:D({modelValue:{type:Object,required:!1,default:Z((()=>({})),"default")},schema:{type:Array,required:!1,default:Z((()=>[]),"default")},elFormProps:{type:Object,required:!1},useCol:{type:Boolean,required:!1,default:!0},rowProps:{type:Object,required:!1},onlyRenderComponent:{type:Boolean,required:!1,default:!1},dynamicModel:{type:Boolean,required:!1,default:!0},includeModelKeys:{type:Array,required:!1},enumMapProps:{type:Map,required:!1},isView:{type:Boolean,required:!1,default:!1},disableRulesInView:{type:Boolean,required:!1,default:!0},lazyLoad:{type:Boolean,required:!1,default:!1},lazyLoadDelay:{type:Number,required:!1,default:50},initialLoadCount:{type:Number,required:!1,default:10},batchLoadCount:{type:Number,required:!1,default:30},lazyLoadDebug:{type:Boolean,required:!1,default:!1},componentDelayLoad:{type:Number,required:!1,default:0}},{modelValue:{default:Z((()=>({})),"default")},modelModifiers:{}}),emits:D(["register","validate"],["update:modelValue"]),setup(e,{expose:t,emit:D}){const R=1e3,O=3e4,B=16;class W{static{Z(this,"PerformanceCache")}cache=new Map;timers=new Map;hitCount=0;missCount=0;has(e){const t=this.cache.get(e);return!!(t&&Date.now()-t.timestamp<O)||(t&&this.delete(e),!1)}get(e){const t=this.cache.get(e);if(t&&Date.now()-t.timestamp<O)return this.hitCount++,t.value;this.missCount++,this.delete(e)}set(e,t){if(this.cache.size>=R){const e=this.cache.keys().next().value;this.delete(e)}this.cache.set(e,{value:t,timestamp:Date.now()}),this.timers.has(e)&&clearTimeout(this.timers.get(e));const o=setTimeout((()=>{this.delete(e)}),O);this.timers.set(e,o)}delete(e){this.cache.delete(e);const t=this.timers.get(e);t&&(clearTimeout(t),this.timers.delete(e))}clear(){this.cache.clear(),this.timers.forEach((e=>clearTimeout(e))),this.timers.clear()}getStats(){return{size:this.cache.size,hitRate:this.hitCount/(this.hitCount+this.missCount)||0,hitCount:this.hitCount,missCount:this.missCount}}}const U=Z((()=>{const e=new Map;return(t,o,a=B)=>{e.has(t)&&clearTimeout(e.get(t));const l=setTimeout((()=>{o(),e.delete(t)}),a);e.set(t,l)}}),"createDebouncer"),A=Z((()=>{let e=null,t="";return o=>{if(o===e)return t;const a=Object.keys(o).sort();let l=a.length.toString();for(const e of a){const t=o[e];l+="object"==typeof t&&null!==t?`${e}:obj:${Object.keys(t).length};`:`${e}:${typeof t}:${String(t).slice(0,50)};`}return e=o,t=l,l}}),"createModelHasher"),N=e,H=o(e,"modelValue"),K=a(),G=l({}),Y=n((()=>{const e={...N};return Object.assign(e,r(G)),e})),J=l(N.enumMapProps||new Map),Q=l(new Set),X=l([]),ee=l(!1),te=l(null),oe=l(0),ae=l([]),le=new W,ne=U(),re=A(),ue=(l({renderCount:0,lastRenderTime:0,avgRenderTime:0,cacheStats:{size:0,hitRate:0,hitCount:0,missCount:0}}),Z((()=>{le.clear()}),"clearCache")),ie=(u(),Z((async({enum:e,prop:t,useCacheEnum:o=!0})=>{if(!e)return;const a=r(J);if("function"!=typeof e)return a.set(t,r(e)),void(J.value=new Map(a));try{a.set(t,[]);let o=await e(r(H),a);o=o?.result||o,Array.isArray(o)||(console.warn(`警告: '${t}' 的enum函数返回值不是数组`,o),o=[]),a.set(t,o),J.value=new Map(a),i((()=>{if(t){const e=r(Y).schema?.find((e=>e.prop===t));e&&se(e)}}))}catch(e){console.error(`添加enum函数参数失败: '${t}'`,e),a.set(t,[]),J.value=new Map(a)}}),"setEnumMap"));s(E,J);const se=Z((async({defaultValue:e,fieldNames:t,prop:o})=>{const a=r(H),l=$(a,o);if(l||!1===l||0===l)return;const n=r(e);if(null!=n)return C(a,o,"function"!=typeof n?n:await n(a,r(J)));const u=r(J).get(o);if(u?.length){const e=u.filter((e=>"Y"===e.isDefault));return e.length&&C(a,o,e[0][t?.value??"value"])}}),"initDefaultValue"),de=Z((({prop:e,el:t,subProp:o,subEnum:a})=>{if(z(t)===F.EL_SELECT){if("string"!=typeof o)return;d((()=>$(r(H),e)),(async t=>{const l=r(J);if(r(H)[o]&&(r(H)[o]=""),!a)return;if(!t)return l.set(o,[]);if(l.get(`${o}-${t}`))l.set(o,l.get(`${o}-${t}`)||[]);else if("function"==typeof a){const n=await a(t,l.get(e));l.set(`${o}-${t}`,n),l.set(o,n)}else Array.isArray(a)&&(l.set(`${o}-${t}`,a),l.set(o,a));const n=l.get(e)||[],[u]=n.filter((e=>e.value===t));u?.subValue&&(r(H)[o]=u.subValue)}),{immediate:!0})}}),"cascadeEnum"),pe=Z((e=>{const{hidden:t,prop:o}=e;if("function"!=typeof t)return t;const a=`hidden_${o}_${re(r(H))}`;if(le.has(a))return le.get(a);const l=t(r(H));return le.set(a,l),l}),"isHidden"),me=Z((e=>{const{destroy:t,prop:o}=e;if("function"!=typeof t){const a=t||!1;return a?ne(`delete_${o}`,(()=>T(r(H),o)),50):ne(`init_${o}`,(()=>se(e)),50),a}const a=re(r(H)),l=`destroy_${o}_${a}`;if(le.has(l))return le.get(l);const n=t(r(H));return le.set(l,n),n?ne(`delete_${o}`,(()=>T(r(H),o)),50):ne(`init_${o}`,(()=>se(e)),50),n}),"isDestroy"),ce=Z((e=>"function"==typeof e?e(r(H)):e+""),"parseLabel"),fe=n((()=>{const e=r(Y).schema||[];return p([...e].sort(((e,t)=>(e.order??0)-(t.order??0))))})),he=l({total:0,loaded:0,pending:0,startTime:0,endTime:0,duration:0}),ve=n((()=>(oe.value,0===he.value.startTime?0:he.value.duration>0?he.value.duration:Date.now()-he.value.startTime))),ge=n((()=>[...ae.value].sort(((e,t)=>t.duration-e.duration)))),ye=Z((e=>{ee.value=!0,he.value.startTime=Date.now(),he.value.endTime=0,he.value.duration=0,ae.value=[],N.lazyLoadDebug&&te.value&&clearInterval(te.value),N.lazyLoadDebug&&(te.value=setInterval((()=>{oe.value+=1}),100)),N.lazyLoadDebug&&console.log("ZnForm Component LazyLoad Started:",{componentDelayLoad:N.componentDelayLoad,totalItems:e.length,startTime:new Date(he.value.startTime).toLocaleTimeString()});const t=X.value.slice(0,Math.min(N.initialLoadCount,X.value.length));t.forEach((e=>{e.prop&&Q.value.add(e.prop)})),X.value=X.value.filter((e=>!t.some((t=>t.prop===e.prop)))),he.value.loaded=Q.value.size,he.value.pending=X.value.length,i((()=>be()))}),"startComponentLazyLoad"),be=Z((()=>{if(0===X.value.length)return;let e=0;const t=Z((()=>{if(0===X.value.length)return;e++;Date.now();const o=X.value.slice(0,N.batchLoadCount);if(X.value=X.value.slice(N.batchLoadCount),o.forEach(((t,o)=>{if(t.prop){const o=Date.now();Q.value.add(t.prop),i((()=>{const a=Date.now();ae.value.push({prop:t.prop,label:"function"==typeof t.label?t.label(r(H)):t.label||t.prop,startTime:o,endTime:a,duration:a-o,batchIndex:e})}))}})),he.value.loaded=Q.value.size,he.value.pending=X.value.length,N.lazyLoadDebug&&console.log("ZnForm LazyLoad Batch:",{loaded:he.value.loaded,pending:he.value.pending,total:he.value.total}),X.value.length>0)setTimeout(t,N.lazyLoadDelay);else if(he.value.endTime=Date.now(),he.value.duration=he.value.endTime-he.value.startTime,te.value&&(clearInterval(te.value),te.value=null),N.lazyLoadDebug&&(console.log("ZnForm LazyLoad Completed:",{total:he.value.total,duration:he.value.duration+"ms",endTime:new Date(he.value.endTime).toLocaleTimeString()}),ae.value.length>0)){console.log(`[ZnForm 组件加载详情] 总计 ${ae.value.length} 个组件`);const e=[...ae.value].sort(((e,t)=>t.duration-e.duration)).slice(0,5);console.log("[ZnForm 最耗时的5个组件]:",e.map((e=>`${e.label}(${e.prop}): ${e.duration}ms`)));const t=Math.round(ae.value.reduce(((e,t)=>e+t.duration),0)/ae.value.length);console.log(`[ZnForm 性能统计] 最慢: ${e[0]?.duration||0}ms | 最快: ${[...ae.value].sort(((e,t)=>e.duration-t.duration))[0]?.duration||0}ms | 平均: ${t}ms`)}}),"loadNextBatch");t()}),"startLazyLoading"),xe=Z((e=>!N.lazyLoad||(!e.prop||!!ee.value&&Q.value.has(e.prop))),"shouldRenderItem");d((()=>r(Y).schema),((e=[])=>{const t=N.includeModelKeys?.length>0&&r(Y).dynamicModel?new Set(Object.keys(r(H))):null;if(ue(),N.lazyLoad&&(Q.value.clear(),X.value=[]),he.value.total=e.length,e.forEach(((e,o)=>{ie(e),de(e),e&&(e.order=e.order??o+2),se(e),t&&e.prop&&(t.delete(e.prop),e.renderUseProp?.forEach((e=>t.delete(e)))),N.lazyLoad&&e.prop&&X.value.push(e)})),t&&N.includeModelKeys?.length&&N.includeModelKeys.forEach((e=>t.delete(e))),t?.size){const e=r(H);t.forEach((t=>{delete e[t]}))}if(!N.lazyLoad||N.isView){if(ee.value=!0,he.value.startTime=Date.now(),ae.value=[],e.forEach(((e,t)=>{if(e.prop){const t=Date.now();Q.value.add(e.prop);const o=Date.now();ae.value.push({prop:e.prop,label:"function"==typeof e.label?e.label(r(H)):e.label||e.prop,startTime:t,endTime:o,duration:o-t,batchIndex:0})}})),he.value.endTime=Date.now(),he.value.duration=he.value.endTime-he.value.startTime,he.value.loaded=e.length,he.value.pending=0,N.lazyLoadDebug&&(console.log("ZnForm Sync Render Completed:",{total:he.value.total,duration:he.value.duration+"ms"}),ae.value.length>0)){console.log(`[ZnForm 组件加载详情] 总计 ${ae.value.length} 个组件`);const e=[...ae.value].sort(((e,t)=>t.duration-e.duration)).slice(0,5);console.log("[ZnForm 最耗时的5个组件]:",e.map((e=>`${e.label}(${e.prop}): ${e.duration}ms`)));const t=Math.round(ae.value.reduce(((e,t)=>e+t.duration),0)/ae.value.length);console.log(`[ZnForm 性能统计] 最慢: ${e[0]?.duration||0}ms | 最快: ${[...ae.value].sort(((e,t)=>e.duration-t.duration))[0]?.duration||0}ms | 平均: ${t}ms`)}}else X.value.length>0&&(N.componentDelayLoad>0?setTimeout((()=>{ye(e)}),N.componentDelayLoad):ye(e))}),{immediate:!0,deep:!0}),d((()=>(r(Y).schema||[]).map((e=>({prop:e.prop,enum:e.enum})))),((e,t)=>{e&&0!==e.length&&e.forEach(((e,o)=>{if(e.enum!==t?.[o]?.enum){const t=r(Y).schema?.find((t=>t.prop===e.prop));t&&(ie(t),i((()=>{se(t)})))}}))}),{deep:!0}),d((()=>J.value),(()=>{ue()}),{deep:!0});n((()=>fe.value));const we=Z((({width:e,props:t})=>{const{elFormProps:o={}}=r(Y),a=t?.style||{width:"100%"};return e?{...a,width:V(e)}:o.fixWidth?{...a,width:V(o.width||o.inline?220:"100%")}:a}),"getComponentWidth"),Le=Z((({labelSize:e})=>e&&"default"!==e?"small"===e?{fontSize:"14px",fontWeight:600}:"large"===e?{fontSize:"18px",fontWeight:600}:{}:{fontSize:"16px",fontWeight:600}),"getTitleFontStyle"),De=Z(((e={})=>({
2
2
  // 如果有 span,代表用户优先级更高,所以不需要默认栅格
3
- ...e.span?{}:{xs:24,sm:12,md:12,lg:12,xl:12},...e})),"setGridProp"),ve=p(),ye=O((()=>{const{elFormProps:e,onlyRenderComponent:t}=r(_);return t?ne.value.filter((e=>!ae(e)&&pe(e))).map((e=>y(m("div",null,[m(P,{ref:O((t=>r(xe)[e.prop]=t),"ref"),isView:Z.isView,column:e,modelValue:R.value,"onUpdate:modelValue":O((e=>R.value=e),"onUpdate:modelValue"),style:me(e)},null)]),[[g,!oe(e)]]))):m(E,c({ref:B},e,{class:["zn-form",{"is-view":Z.isView}],model:r(R),onSubmit:O((e=>e.preventDefault()),"onSubmit")}),{default:O((()=>{let e;return ve.default?ve.default({getComponentWidth:me,parseLabel:le,isDestroy:ae,isHidden:oe}):m(f,null,[Z.lazyLoadDebug&&m("div",{style:"background-color: #f1f1f1; padding: 5px; margin-bottom: 10px; border-radius: 4px; font-size: 12px;"},[m("div",null,[v("懒加载状态:"),Z.componentDelayLoad>0&&m("span",null,[v("组件延时: "),Z.componentDelayLoad,v("ms | ")]),v("组件状态: "),K.value?"已就绪":"等待中",v(" | 已加载 "),re.value.loaded,v("/"),re.value.total,v(" 项,剩余 "),re.value.pending,v(" 项")]),re.value.startTime>0&&m("div",{style:"margin-top: 3px;"},[v("加载时间:"),re.value.duration>0?m("span",{style:"color: #67c23a; font-weight: bold;"},[v("已完成 ("),re.value.duration,v("ms)")]):m("span",{style:"color: #e6a23c;"},[v("加载中... ("),ue.value,v("ms)")])]),G.value.length>0&&m("div",{style:"margin-top: 8px;"},[m("div",{style:"font-weight: bold; margin-bottom: 5px;"},[v("组件加载耗时分析 (按耗时倒序):")]),m("div",{style:"max-height: 200px; overflow-y: auto; border: 1px solid #ddd; border-radius: 3px;"},[m("table",{style:"width: 100%; border-collapse: collapse; font-size: 11px;"},[m("thead",{style:"background-color: #fafafa; position: sticky; top: 0;"},[m("tr",null,[m("th",{style:"padding: 4px 6px; text-align: left; border-bottom: 1px solid #ddd; width: 35%;"},[v("组件标签")]),m("th",{style:"padding: 4px 6px; text-align: left; border-bottom: 1px solid #ddd; width: 25%;"},[v("属性名")]),m("th",{style:"padding: 4px 6px; text-align: center; border-bottom: 1px solid #ddd; width: 20%;"},[v("耗时(ms)")]),m("th",{style:"padding: 4px 6px; text-align: center; border-bottom: 1px solid #ddd; width: 20%;"},[v("批次")])])]),m("tbody",null,[de.value.map(((e,t)=>m("tr",{key:e.prop,style:t%2==0?"background-color: #ffffff;":"background-color: #f9f9f9;"},[m("td",{style:"padding: 3px 6px; border-bottom: 1px solid #eee; word-break: break-all;"},[e.label]),m("td",{style:"padding: 3px 6px; border-bottom: 1px solid #eee; font-family: monospace; word-break: break-all;"},[e.prop]),m("td",{style:`padding: 3px 6px; border-bottom: 1px solid #eee; text-align: center; font-weight: bold; color: ${e.duration>10?"#e6a23c":e.duration>5?"#909399":"#67c23a"};`},[e.duration]),m("td",{style:"padding: 3px 6px; border-bottom: 1px solid #eee; text-align: center;"},[e.batchIndex])])))])])]),m("div",{style:"margin-top: 3px; font-size: 10px; color: #666;"},[v("统计: 总计 "),G.value.length,v(" 个组件 | 最慢: "),de.value[0]?.duration||0,v("ms | 最快: "),de.value[de.value.length-1]?.duration||0,v("ms | 平均: "),G.value.length?Math.round(G.value.reduce(((e,t)=>e+t.duration),0)/G.value.length):0,v("ms")])])]),ge(),ve.operation?m(M,null,k(e=ve.operation())?e:{default:O((()=>[e]),"default")}):void 0])}),"default")})}),"RenderFormWrap"),ge=O((()=>{let e;const{useCol:t,rowProps:o}=r(_);return t?
3
+ ...e.span?{}:{xs:24,sm:12,md:12,lg:12,xl:12},...e})),"setGridProp"),$e=m(),Ce=Z((()=>{const{elFormProps:e,onlyRenderComponent:t}=r(Y);return t?fe.value.filter((e=>!me(e)&&xe(e))).map((e=>g(c("div",null,[c(k,{ref:Z((t=>r(Se)[e.prop]=t),"ref"),isView:N.isView,column:e,modelValue:H.value,"onUpdate:modelValue":Z((e=>H.value=e),"onUpdate:modelValue"),style:we(e)},null)]),[[y,!pe(e)]]))):c(I,f({ref:K},e,{class:["zn-form",{"is-view":N.isView}],model:r(H),onSubmit:Z((e=>e.preventDefault()),"onSubmit")}),{default:Z((()=>{let e;return $e.default?$e.default({getComponentWidth:we,parseLabel:ce,isDestroy:me,isHidden:pe}):c(h,null,[N.lazyLoadDebug&&c("div",{style:"background-color: #f1f1f1; padding: 5px; margin-bottom: 10px; border-radius: 4px; font-size: 12px;"},[c("div",null,[v("懒加载状态:"),N.componentDelayLoad>0&&c("span",null,[v("组件延时: "),N.componentDelayLoad,v("ms | ")]),v("组件状态: "),ee.value?"已就绪":"等待中",v(" | 已加载 "),he.value.loaded,v("/"),he.value.total,v(" 项,剩余 "),he.value.pending,v(" 项")]),he.value.startTime>0&&c("div",{style:"margin-top: 3px;"},[v("加载时间:"),he.value.duration>0?c("span",{style:"color: #67c23a; font-weight: bold;"},[v("已完成 ("),he.value.duration,v("ms)")]):c("span",{style:"color: #e6a23c;"},[v("加载中... ("),ve.value,v("ms)")])]),ae.value.length>0&&c("div",{style:"margin-top: 8px;"},[c("div",{style:"font-weight: bold; margin-bottom: 5px;"},[v("组件加载耗时分析 (按耗时倒序):")]),c("div",{style:"max-height: 200px; overflow-y: auto; border: 1px solid #ddd; border-radius: 3px;"},[c("table",{style:"width: 100%; border-collapse: collapse; font-size: 11px;"},[c("thead",{style:"background-color: #fafafa; position: sticky; top: 0;"},[c("tr",null,[c("th",{style:"padding: 4px 6px; text-align: left; border-bottom: 1px solid #ddd; width: 35%;"},[v("组件标签")]),c("th",{style:"padding: 4px 6px; text-align: left; border-bottom: 1px solid #ddd; width: 25%;"},[v("属性名")]),c("th",{style:"padding: 4px 6px; text-align: center; border-bottom: 1px solid #ddd; width: 20%;"},[v("耗时(ms)")]),c("th",{style:"padding: 4px 6px; text-align: center; border-bottom: 1px solid #ddd; width: 20%;"},[v("批次")])])]),c("tbody",null,[ge.value.map(((e,t)=>c("tr",{key:e.prop,style:t%2==0?"background-color: #ffffff;":"background-color: #f9f9f9;"},[c("td",{style:"padding: 3px 6px; border-bottom: 1px solid #eee; word-break: break-all;"},[e.label]),c("td",{style:"padding: 3px 6px; border-bottom: 1px solid #eee; font-family: monospace; word-break: break-all;"},[e.prop]),c("td",{style:`padding: 3px 6px; border-bottom: 1px solid #eee; text-align: center; font-weight: bold; color: ${e.duration>10?"#e6a23c":e.duration>5?"#909399":"#67c23a"};`},[e.duration]),c("td",{style:"padding: 3px 6px; border-bottom: 1px solid #eee; text-align: center;"},[e.batchIndex])])))])])]),c("div",{style:"margin-top: 3px; font-size: 10px; color: #666;"},[v("统计: 总计 "),ae.value.length,v(" 个组件 | 最慢: "),ge.value[0]?.duration||0,v("ms | 最快: "),ge.value[ge.value.length-1]?.duration||0,v("ms | 平均: "),ae.value.length?Math.round(ae.value.reduce(((e,t)=>e+t.duration),0)/ae.value.length):0,v("ms")])])]),ze(),$e.operation?c(j,null,_(e=$e.operation())?e:{default:Z((()=>[e]),"default")}):void 0])}),"default")})}),"RenderFormWrap"),ze=Z((()=>{let e;const{useCol:t,rowProps:o}=r(Y);return t?
4
4
  // 默认 gutter 20,可以被传来的 rowProps 替换
5
- m(q,c({gutter:20},o,{style:"width: 100%"}),k(e=he())?e:{default:O((()=>[e]),"default")}):he()}),"RenderForm"),he=O((()=>{const{useCol:e,rowProps:t}=r(_);return ne.value.filter((e=>!ae(e)&&pe(e))).map((o=>{let a;const l=V(o.el)||"",n=l===I.EL_DIVIDER,r=C[l];return n?m(f,null,[m(r,o.props,{default:O((()=>[m("span",{style:ce(o)},[le(o.label)])]),"default")})]):e?
5
+ c(q,f({gutter:20},o,{style:"width: 100%"}),_(e=Te())?e:{default:Z((()=>[e]),"default")}):Te()}),"RenderForm"),Te=Z((()=>{const{useCol:e,rowProps:t}=r(Y);return fe.value.filter((e=>!me(e)&&xe(e))).map((o=>{let a;const l=z(o.el)||"",n=l===F.EL_DIVIDER,r=M[l];return n?c(h,null,[c(r,o.props,{default:Z((()=>[c("span",{style:Le(o)},[ce(o.label)])]),"default")})]):e?
6
6
  // 如果需要栅格,需要包裹 ElCol
7
- y(m(j,fe({...t?.col,...o.col}),k(a=we(o))?a:{default:O((()=>[a]),"default")}),[[g,!oe(o)]]):we(o)}))}),"renderFormItemWrap"),be=l({}),xe=a({}),we=O((e=>{let t=e.formItem?.rules||null;return(Z.isView&&Z.disableRulesInView&&e.formItem||oe(e))&&(t=null),e.hiddenLabel?m(P,{ref:O((t=>r(xe)[e.prop]=t),"ref"),isView:Z.isView,column:e,modelValue:R.value,"onUpdate:modelValue":O((e=>R.value=e),"onUpdate:modelValue"),style:me(e)},null):y(m(M,c({ref:O((t=>r(be)[e.prop]=t),"ref")},e.formItem||{},{prop:e.prop,rules:t,label:le(e.label)}),{default:O((()=>[m(P,{ref:O((t=>r(xe)[e.prop]=t),"ref"),isView:Z.isView,column:e,modelValue:R.value,"onUpdate:modelValue":O((e=>R.value=e),"onUpdate:modelValue"),style:me(e)},null)]),"default")}),[[g,!oe(e)]])}),"renderFormItem"),Le=L;h((()=>{Le("register",r(B)?.$parent,r(B))})),b((()=>{H.value&&(clearInterval(H.value),H.value=null)}));const De=O(((e={})=>{R.value=Object.assign(r(R),e)}),"setValues");return t({form:B,model:R,setValues:De,setProps:O(((e={})=>{W.value=Object.assign(r(W),e)}),"setProps"),setSchema:O((e=>{const{schema:t}=r(_);for(const o of t)for(const t of e)o.prop===t.prop&&z(o,t.field,t.value)}),"setSchema"),addSchema:O(((e,t,o="after")=>{const{schema:a}=r(_),l=[...a];S(t)?l.forEach(((l,n)=>{l.prop===t&&("after"===o?a.splice(n+1,0,e):a.splice(n,0,e))})):void 0!==t?a.splice(t,0,e):a.push(e),Q(),Z.lazyLoad&&e.prop&&U.value.add(e.prop)}),"addSchema"),delSchema:O((e=>{const{schema:t}=r(_),o=t.findIndex((t=>t.prop===e));o>-1&&(t.splice(o,1),Q(),Z.lazyLoad&&U.value.delete(e))}),"delSchema"),getComponentExpose:O((e=>r(xe)[e]?.formComponentRef),"getComponentExpose"),getFormItemExpose:O((e=>r(be)[e]),"getFormItemExpose"),getComponentWidth:me,parseLabel:le,isDestroy:ae,isHidden:oe}),(e,t)=>(w(),x(ye))}});export{R as default};
7
+ g(c(P,De({...t?.col,...o.col}),_(a=Me(o))?a:{default:Z((()=>[a]),"default")}),[[y,!pe(o)]]):Me(o)}))}),"renderFormItemWrap"),Ve=l({}),Se=a({}),Me=Z((e=>{let t=e.formItem?.rules||null;return(N.isView&&N.disableRulesInView&&e.formItem||pe(e))&&(t=null),e.hiddenLabel?c(k,{ref:Z((t=>r(Se)[e.prop]=t),"ref"),isView:N.isView,column:e,modelValue:H.value,"onUpdate:modelValue":Z((e=>H.value=e),"onUpdate:modelValue"),style:we(e)},null):g(c(j,f({ref:Z((t=>r(Ve)[e.prop]=t),"ref")},e.formItem||{},{prop:e.prop,rules:t,label:ce(e.label)}),{default:Z((()=>[c(k,{ref:Z((t=>r(Se)[e.prop]=t),"ref"),isView:N.isView,column:e,modelValue:H.value,"onUpdate:modelValue":Z((e=>H.value=e),"onUpdate:modelValue"),style:we(e)},null)]),"default")}),[[y,!pe(e)]])}),"renderFormItem"),Ee=D;b((()=>{Ee("register",r(K)?.$parent,r(K))})),x((()=>{te.value&&(clearInterval(te.value),te.value=null)}));const Fe=Z(((e={})=>{H.value=Object.assign(r(H),e)}),"setValues");return t({form:K,model:H,setValues:Fe,setProps:Z(((e={})=>{G.value=Object.assign(r(G),e)}),"setProps"),setSchema:Z((e=>{const{schema:t}=r(Y);for(const o of t)for(const t of e)o.prop===t.prop&&C(o,t.field,t.value)}),"setSchema"),addSchema:Z(((e,t,o="after")=>{const{schema:a}=r(Y),l=[...a];S(t)?l.forEach(((l,n)=>{l.prop===t&&("after"===o?a.splice(n+1,0,e):a.splice(n,0,e))})):void 0!==t?a.splice(t,0,e):a.push(e),ue(),N.lazyLoad&&e.prop&&Q.value.add(e.prop)}),"addSchema"),delSchema:Z((e=>{const{schema:t}=r(Y),o=t.findIndex((t=>t.prop===e));o>-1&&(t.splice(o,1),ue(),N.lazyLoad&&Q.value.delete(e))}),"delSchema"),getComponentExpose:Z((e=>r(Se)[e]?.formComponentRef),"getComponentExpose"),getFormItemExpose:Z((e=>r(Ve)[e]),"getFormItemExpose"),getComponentWidth:we,parseLabel:ce,isDestroy:me,isHidden:pe}),(e,t)=>(L(),w(Ce))}});export{O as default};
8
8
  //# sourceMappingURL=index.vue2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue2.mjs","sources":["../../../../../../packages/components/znForm/src/index.vue"],"sourcesContent":["<script lang=\"tsx\">\nconst prefixClass = 'zn-form'\n</script>\n<template>\n <RenderFormWrap />\n</template>\n\n<script setup lang=\"tsx\">\n import { type ComponentPublicInstance, computed, defineComponent, markRaw, onMounted, onUnmounted, provide, ref, shallowRef, unref, useSlots, watch, nextTick, Fragment } from 'vue'\n\n import ZnFormItem from './components/ZnFormItem.vue'\n\n import { deleteObjProperty, getFormProp, getPx, hyphenToCamelCase, isString, setFormProp } from './helper'\n import { componentMap } from './helper/componentMap'\n import { ComponentNameEnum, formEnumMapKey, type ZnFormSchemaProps, type FormSetProps, type ZnElFormProps, type ValueType } from './interface'\n import { type ColProps, ElCol, ElForm, ElFormItem, ElRow, type FormInstance, type FormItemInstance, type FormItemProp, type RowProps } from 'element-plus'\n\n defineOptions({ name: 'ZnForm' })\n\n \n\n export interface ZnFormProps {\n /** 表单值 */\n modelValue?: Record<string, any>\n /** 表单配置项 */\n schema?: ZnFormSchemaProps[]\n /** ElForm 的 props */\n elFormProps?: ZnElFormProps | Record<string, any>\n /** 是否使用栅格布局, 默认 true */\n useCol?: boolean\n /** 栅格布局全局设置 */\n rowProps?: Partial<RowProps> & {\n col?: Partial<ColProps>\n }\n /** 是否只渲染 ZnFormItem 组件,只使用表单组件 */\n onlyRenderComponent?: boolean\n /**\n * 动态 model,如果 schema 发生变化,则重新渲染 model 表单数据\n * (将不存在 schema 的 prop 从 model 中去掉),默认启用 true\n */\n dynamicModel?: boolean\n /**\n * 搭配 dynamicModel 使用,清除 model 不存在的 prop 时,\n * 指定保留 prop。如果不传,则不做清除\n */\n includeModelKeys?: string[]\n /**\n * 存储 enum 值。该 props 是搭配 ProTable 使用,\n * 因为 ProTable 已经初始化部分字典数据,\n * 因此不需要 ProForm 再次请求这些字典数据\n */\n enumMapProps?: Map<string, Record<string, any>[]>\n /** 是否查看,默认为否 */\n isView?: boolean\n /**查看状态时,禁用表单验证 */\n disableRulesInView?: boolean\n /** 是否延迟加载表单项,用于优化大型表单渲染性能 */\n lazyLoad?: boolean\n /** 延迟加载的时间间隔,单位毫秒 */\n lazyLoadDelay?: number\n /** 初始加载的表单项数量,默认为10 */\n initialLoadCount?: number\n /** 每批加载的表单项数量,默认为5 */\n batchLoadCount?: number\n /** 开启懒加载调试模式 */\n lazyLoadDebug?: boolean\n /** 整个组件延时加载时间,用于控制多个ZnForm组件的加载优先级,单位毫秒 */\n componentDelayLoad?: number\n }\n\n const props = defineProps({\n modelValue: { type: Object, required: false, default: () => ({}) },\n schema: { type: Array, required: false, default: () => [] },\n elFormProps: { type: Object, required: false },\n useCol: { type: Boolean, required: false, default: true },\n rowProps: { type: Object, required: false },\n onlyRenderComponent: { type: Boolean, required: false, default: false },\n dynamicModel: { type: Boolean, required: false, default: true },\n includeModelKeys: { type: Array, required: false },\n enumMapProps: { type: Map, required: false },\n isView: { type: Boolean, required: false, default: false },\n disableRulesInView: { type: Boolean, required: false, default: true },\n lazyLoad: { type: Boolean, required: false, default: false },\n lazyLoadDelay: { type: Number, required: false, default: 50 },\n initialLoadCount: { type: Number, required: false, default: 10 },\n batchLoadCount: { type: Number, required: false, default: 5 },\n lazyLoadDebug: { type: Boolean, required: false, default: false },\n componentDelayLoad: { type: Number, required: false, default: 0 }\n})\n\n const model = defineModel<Record<string, any>>({ default: () => ({}) })\n\n // 存储 ElForm 实例\n const elFormRef = shallowRef<FormInstance>()\n\n const mergeProps = ref<ZnFormProps>({})\n\n const getProps = computed(() => {\n const propsObj = { ...props }\n Object.assign(propsObj, unref(mergeProps))\n return propsObj\n })\n\n // 定义 enumMap 存储 enum 值(避免异步请求无法格式化单元格内容 || 无法填充下拉选择)\n const enumMap = ref(props.enumMapProps || new Map<string, Record<string, any>[]>())\n\n // 跟踪哪些表单项已经渲染,用于懒加载\n const renderedItems = ref(new Set<string>())\n // 记录需要懒加载的表单项\n const pendingItems = ref<any[]>([])\n // 组件级别的加载状态\n const componentLoadReady = ref(false)\n // 用于更新加载时间显示的定时器\n const loadingTimer = ref<number | null>(null)\n // 用于触发加载时间更新的响应式变量\n const updateTrigger = ref(0)\n // 用于记录每个组件的加载耗时\n const componentLoadTimes = ref<Array<{\n prop: string\n label: string\n startTime: number\n endTime: number\n duration: number\n batchIndex: number\n }>>([])\n\n // 用于缓存计算结果\n const cachedResults = new Map()\n\n const clearCache = () => {\n cachedResults.clear()\n }\n\n const setEnumMap = async ({ enum: enumValue, prop, useCacheEnum = true }: ZnFormSchemaProps) => {\n if (!enumValue) return\n\n const enumMapConst = unref(enumMap)\n\n // 当前 enum 为静态数据,则直接存储到 enumMap\n if (typeof enumValue !== 'function') {\n // 即使使用缓存,也强制更新enumMap,确保最新数据能被访问到\n enumMapConst.set(prop, unref(enumValue)!)\n // 触发响应式更新\n enumMap.value = new Map(enumMapConst)\n return\n }\n\n try {\n // 为了防止接口执行慢,而存储慢,导致重复请求,所以预先存储为[],接口返回后再二次存储\n enumMapConst.set(prop!, [])\n\n // 如果当前 enum 为后台数据需要请求数据,则调用该请求接口,并存储到 enumMap\n let data = await enumValue(unref(model), enumMapConst)\n\n // 适配 enum 接口返回 data 以及自定义函数返回数组\n data = data?.result || data\n\n // 如果返回的数据不是数组,则警告并强制转换为数组\n if (!Array.isArray(data)) {\n console.warn(`警告: '${prop}' 的enum函数返回值不是数组`, data)\n data = []\n }\n\n // 更新enumMap\n enumMapConst.set(prop, data)\n\n // 强制更新enumMap\n enumMap.value = new Map(enumMapConst)\n\n // 在下一tick触发初始化默认值\n nextTick(() => {\n if (prop) {\n // 找到对应的schema项\n const schemaItem = unref(getProps).schema?.find(item => item.prop === prop)\n if (schemaItem) {\n initDefaultValue(schemaItem)\n }\n }\n })\n } catch (error) {\n console.error(`添加enum函数参数失败: '${prop}'`, error)\n enumMapConst.set(prop!, [])\n enumMap.value = new Map(enumMapConst)\n }\n }\n provide(formEnumMapKey, enumMap)\n\n // 初始化默认值\n const initDefaultValue = async ({ defaultValue, fieldNames, prop }: ZnFormSchemaProps) => {\n const formConst = unref(model)\n const value = getFormProp(formConst, prop)\n\n if (value || value === false || value === 0) return\n\n const defaultValueConst = unref(defaultValue)\n // 设置表单项的默认值,如果存在值,则不需要赋默认值\n if (defaultValueConst !== undefined && defaultValueConst !== null) {\n if (typeof defaultValueConst !== 'function') return setFormProp(formConst, prop, defaultValueConst)\n\n return setFormProp(formConst, prop, await defaultValueConst(formConst, unref(enumMap)))\n }\n\n // 如果没有设置默认值,则判断后台是否返回 isDefault 为 Y 的枚举\n const enumData = unref(enumMap).get(prop)\n if (enumData?.length) {\n // 找出 isDefault 为 Y 的 value\n const data = enumData.filter((item) => item.isDefault === 'Y')\n\n return data.length && setFormProp(formConst, prop, data[0][fieldNames?.value ?? 'value'])\n }\n }\n\n /**\n * 多个 Select 框级联下拉\n */\n const cascadeEnum = ({ prop, el, subProp, subEnum }: ZnFormSchemaProps) => {\n if (hyphenToCamelCase(el) === ComponentNameEnum.EL_SELECT) {\n if (typeof subProp !== 'string') return\n // 监听级联下拉变化\n watch(\n () => getFormProp(unref(model), prop),\n async (newVal: string) => {\n const enumMapConst = unref(enumMap)\n // 选择时将级联的 subProp 置空\n if (unref(model)[subProp!]) unref(model)[subProp!] = ''\n\n if (!subEnum) return\n if (!newVal) return enumMapConst.set(subProp!, [])\n\n if (enumMapConst.get(`${subProp!}-${newVal}`)) {\n // 存在缓存字典数据,则取出来赋值\n enumMapConst.set(subProp!, enumMapConst.get(`${subProp!}-${newVal}`) || [])\n } else {\n if (typeof subEnum === 'function') {\n const subEnumData = await subEnum(newVal, enumMapConst.get(prop))\n // 缓存字典数据\n enumMapConst.set(`${subProp!}-${newVal}`, subEnumData)\n enumMapConst.set(subProp!, subEnumData)\n } else if (Array.isArray(subEnum)) {\n // 缓存字典数据\n enumMapConst.set(`${subProp!}-${newVal}`, subEnum)\n enumMapConst.set(subProp!, subEnum)\n }\n }\n\n const formEnum = enumMapConst.get(prop) || []\n const [enumValue] = formEnum.filter((item) => item.value === newVal)\n // 如果选中的字典有 subValue,则直接赋值给 subProp\n if (enumValue?.subValue) unref(model)[subProp!] = enumValue.subValue\n },\n { immediate: true }\n )\n }\n }\n\n /**\n * 是否隐藏表单项 - 缓存计算结果提高性能\n */\n const isHidden = (item: ZnFormSchemaProps) => {\n const { hidden, prop } = item\n const cacheKey = `hidden_${prop}`\n\n if (typeof hidden !== 'function') return hidden\n\n // 使用缓存,避免重复计算\n const modelValue = JSON.stringify(unref(model))\n const cachedKey = `${cacheKey}_${modelValue}`\n\n if (cachedResults.has(cachedKey)) {\n return cachedResults.get(cachedKey)\n }\n\n const result = hidden(unref(model))\n cachedResults.set(cachedKey, result)\n return result\n }\n\n /**\n * 是否销毁表单项 & 是否初始化表单项默认值 - 带缓存\n */\n const isDestroy = (item: ZnFormSchemaProps) => {\n const { destroy, prop } = item\n const cacheKey = `destroy_${prop}`\n\n // 使用缓存,避免重复计算\n if (typeof destroy !== 'function') {\n const result = destroy || false\n // 如果不销毁,则初始化表单默认值,反之则重置为空\n if (!result) initDefaultValue(item)\n else deleteObjProperty(unref(model), prop)\n return result\n }\n\n const modelValue = JSON.stringify(unref(model))\n const cachedKey = `${cacheKey}_${modelValue}`\n\n if (cachedResults.has(cachedKey)) {\n return cachedResults.get(cachedKey)\n }\n\n const result = destroy(unref(model))\n cachedResults.set(cachedKey, result)\n\n // 如果不销毁,则初始化表单默认值,反之则重置为空\n if (!result) initDefaultValue(item)\n else deleteObjProperty(unref(model), prop)\n\n return result\n }\n\n const parseLabel = (label: ValueType | ((model: Record<string, any>) => string)) => {\n if (typeof label === 'function') return label(unref(model))\n return label + ''\n }\n\n // 添加计算属性用于排序,使用markRaw避免不必要的响应式监听\n const sortedSchema = computed(() => {\n const schema = unref(getProps).schema || []\n return markRaw([...schema].sort((a, b) => (a.order ?? 0) - (b.order ?? 0)))\n })\n\n // 用于调试的懒加载状态\n const lazyLoadStatus = ref({\n total: 0,\n loaded: 0,\n pending: 0,\n startTime: 0,\n endTime: 0,\n duration: 0\n })\n\n // 实时加载时间显示\n const currentLoadingTime = computed(() => {\n // 依赖 updateTrigger 来触发重新计算\n updateTrigger.value\n if (lazyLoadStatus.value.startTime === 0) return 0\n if (lazyLoadStatus.value.duration > 0) return lazyLoadStatus.value.duration\n return Date.now() - lazyLoadStatus.value.startTime\n })\n\n // 按加载时间排序的组件列表\n const sortedComponentLoadTimes = computed(() => {\n return [...componentLoadTimes.value].sort((a, b) => b.duration - a.duration)\n })\n\n // 开始组件级别的懒加载\n const startComponentLazyLoad = (schema: ZnFormSchemaProps[]) => {\n componentLoadReady.value = true\n\n // 记录开始时间\n lazyLoadStatus.value.startTime = Date.now()\n lazyLoadStatus.value.endTime = 0\n lazyLoadStatus.value.duration = 0\n\n // 清空之前的组件加载记录\n componentLoadTimes.value = []\n\n // 启动定时器更新加载时间显示\n if (props.lazyLoadDebug && loadingTimer.value) {\n clearInterval(loadingTimer.value)\n }\n if (props.lazyLoadDebug) {\n loadingTimer.value = setInterval(() => {\n // 触发响应式更新,让界面显示实时的加载时间\n updateTrigger.value += 1\n }, 100) as unknown as number\n }\n\n if (props.lazyLoadDebug) {\n console.log('ZnForm Component LazyLoad Started:', {\n componentDelayLoad: props.componentDelayLoad,\n totalItems: schema.length,\n startTime: new Date(lazyLoadStatus.value.startTime).toLocaleTimeString()\n })\n }\n\n const initialItems = pendingItems.value.slice(0, Math.min(props.initialLoadCount, pendingItems.value.length))\n initialItems.forEach(item => {\n if (item.prop) renderedItems.value.add(item.prop)\n })\n pendingItems.value = pendingItems.value.filter(item =>\n !initialItems.some(i => i.prop === item.prop)\n )\n\n // 更新调试信息\n lazyLoadStatus.value.loaded = renderedItems.value.size\n lazyLoadStatus.value.pending = pendingItems.value.length\n\n // 开始懒加载剩余项\n nextTick(() => startLazyLoading())\n }\n\n // 懒加载表单项\n const startLazyLoading = () => {\n if (pendingItems.value.length === 0) return\n\n let batchIndex = 0\n\n const loadNextBatch = () => {\n if (pendingItems.value.length === 0) return\n\n batchIndex++\n const batchStartTime = Date.now()\n\n // 每批次加载指定数量的表单项\n const itemsToLoad = pendingItems.value.slice(0, props.batchLoadCount)\n pendingItems.value = pendingItems.value.slice(props.batchLoadCount)\n\n itemsToLoad.forEach((item, index) => {\n if (item.prop) {\n const itemStartTime = Date.now()\n renderedItems.value.add(item.prop)\n\n // 使用 nextTick 确保组件已经渲染完成\n nextTick(() => {\n const itemEndTime = Date.now()\n componentLoadTimes.value.push({\n prop: item.prop,\n label: typeof item.label === 'function' ? item.label(unref(model)) : (item.label || item.prop),\n startTime: itemStartTime,\n endTime: itemEndTime,\n duration: itemEndTime - itemStartTime,\n batchIndex: batchIndex\n })\n })\n }\n })\n\n // 更新调试信息\n lazyLoadStatus.value.loaded = renderedItems.value.size\n lazyLoadStatus.value.pending = pendingItems.value.length\n\n if (props.lazyLoadDebug) {\n console.log('ZnForm LazyLoad Batch:', {\n loaded: lazyLoadStatus.value.loaded,\n pending: lazyLoadStatus.value.pending,\n total: lazyLoadStatus.value.total\n })\n }\n\n if (pendingItems.value.length > 0) {\n setTimeout(loadNextBatch, props.lazyLoadDelay)\n } else {\n // 所有表单项都已加载完成,记录结束时间\n lazyLoadStatus.value.endTime = Date.now()\n lazyLoadStatus.value.duration = lazyLoadStatus.value.endTime - lazyLoadStatus.value.startTime\n\n // 清除定时器\n if (loadingTimer.value) {\n clearInterval(loadingTimer.value)\n loadingTimer.value = null\n }\n\n if (props.lazyLoadDebug) {\n console.log('ZnForm LazyLoad Completed:', {\n total: lazyLoadStatus.value.total,\n duration: lazyLoadStatus.value.duration + 'ms',\n endTime: new Date(lazyLoadStatus.value.endTime).toLocaleTimeString()\n })\n\n if (componentLoadTimes.value.length > 0) {\n console.log(`[ZnForm 组件加载详情] 总计 ${componentLoadTimes.value.length} 个组件`)\n const slowestComponents = [...componentLoadTimes.value].sort((a, b) => b.duration - a.duration).slice(0, 5)\n console.log('[ZnForm 最耗时的5个组件]:', slowestComponents.map(item => `${item.label}(${item.prop}): ${item.duration}ms`))\n\n const avgDuration = Math.round(componentLoadTimes.value.reduce((sum, item) => sum + item.duration, 0) / componentLoadTimes.value.length)\n console.log(`[ZnForm 性能统计] 最慢: ${slowestComponents[0]?.duration || 0}ms | 最快: ${[...componentLoadTimes.value].sort((a, b) => a.duration - b.duration)[0]?.duration || 0}ms | 平均: ${avgDuration}ms`)\n }\n }\n }\n }\n\n loadNextBatch()\n }\n\n // 判断表单项是否应该渲染 - 用于懒加载过滤\n const shouldRenderItem = (item: ZnFormSchemaProps) => {\n if (!props.lazyLoad) return true\n if (!item.prop) return true\n // 组件级别未准备好时,不渲染任何表单项\n if (!componentLoadReady.value) return false\n return renderedItems.value.has(item.prop)\n }\n\n // 监听表单结构化数组,重新组装 schema\n watch(\n () => unref(getProps).schema,\n (schema = []) => {\n // 一次性收集需要删除的键\n const keysToDelete = props.includeModelKeys?.length > 0 && unref(getProps).dynamicModel\n ? new Set(Object.keys(unref(model)))\n : null\n\n // 清空缓存\n clearCache()\n\n if (props.lazyLoad) {\n // 重置已渲染项\n renderedItems.value.clear()\n // 准备懒加载项\n pendingItems.value = []\n }\n\n // 设置调试信息\n lazyLoadStatus.value.total = schema.length\n\n schema.forEach((item, index) => {\n // 设置枚举\n setEnumMap(item)\n // 级联下拉监听\n cascadeEnum(item)\n\n // 设置表单排序默认值\n item && (item.order = item.order ?? index + 2)\n\n // 初始化值\n initDefaultValue(item)\n\n // 如果需要删除多余的键,从待删除集合中移除当前存在的键\n if (keysToDelete && item.prop) {\n keysToDelete.delete(item.prop)\n // 处理特殊渲染使用的属性\n item.renderUseProp?.forEach(prop => keysToDelete.delete(prop))\n }\n\n // 如果启用懒加载且项目有prop,将其添加到待渲染队列\n if (props.lazyLoad && item.prop) {\n pendingItems.value.push(item)\n }\n })\n\n // 如果有设置保留键,将它们也从待删除集合中移除\n if (keysToDelete && props.includeModelKeys?.length) {\n props.includeModelKeys.forEach(key => keysToDelete.delete(key))\n }\n\n // 批量删除不存在的属性\n if (keysToDelete?.size) {\n const modelRef = unref(model)\n keysToDelete.forEach(key => {\n delete modelRef[key]\n })\n }\n\n // 如果不启用懒加载或在查看模式下,直接渲染所有表单项\n if (!props.lazyLoad || props.isView) {\n componentLoadReady.value = true\n\n // 记录开始和结束时间(同步渲染)\n lazyLoadStatus.value.startTime = Date.now()\n componentLoadTimes.value = []\n\n schema.forEach((item, index) => {\n if (item.prop) {\n const itemStartTime = Date.now()\n renderedItems.value.add(item.prop)\n const itemEndTime = Date.now()\n\n componentLoadTimes.value.push({\n prop: item.prop,\n label: typeof item.label === 'function' ? item.label(unref(model)) : (item.label || item.prop),\n startTime: itemStartTime,\n endTime: itemEndTime,\n duration: itemEndTime - itemStartTime,\n batchIndex: 0\n })\n }\n })\n\n lazyLoadStatus.value.endTime = Date.now()\n lazyLoadStatus.value.duration = lazyLoadStatus.value.endTime - lazyLoadStatus.value.startTime\n lazyLoadStatus.value.loaded = schema.length\n lazyLoadStatus.value.pending = 0\n\n if (props.lazyLoadDebug) {\n console.log('ZnForm Sync Render Completed:', {\n total: lazyLoadStatus.value.total,\n duration: lazyLoadStatus.value.duration + 'ms'\n })\n\n if (componentLoadTimes.value.length > 0) {\n console.log(`[ZnForm 组件加载详情] 总计 ${componentLoadTimes.value.length} 个组件`)\n const slowestComponents = [...componentLoadTimes.value].sort((a, b) => b.duration - a.duration).slice(0, 5)\n console.log('[ZnForm 最耗时的5个组件]:', slowestComponents.map(item => `${item.label}(${item.prop}): ${item.duration}ms`))\n\n const avgDuration = Math.round(componentLoadTimes.value.reduce((sum, item) => sum + item.duration, 0) / componentLoadTimes.value.length)\n console.log(`[ZnForm 性能统计] 最慢: ${slowestComponents[0]?.duration || 0}ms | 最快: ${[...componentLoadTimes.value].sort((a, b) => a.duration - b.duration)[0]?.duration || 0}ms | 平均: ${avgDuration}ms`)\n }\n }\n }\n // 否则如果启用懒加载,需要考虑组件延时加载\n else if (pendingItems.value.length > 0) {\n // 如果设置了组件延时加载,先等待指定时间\n if (props.componentDelayLoad > 0) {\n setTimeout(() => {\n startComponentLazyLoad(schema)\n }, props.componentDelayLoad)\n } else {\n startComponentLazyLoad(schema)\n }\n }\n },\n {\n immediate: true,\n deep: true // 添加深度监听以捕获schema内部属性的变化\n }\n )\n\n // 添加一个专门监听schema中enum属性变化的watch\n watch(\n () => {\n // 返回一个包含所有schema项的enum属性的数组,这样当任何enum变化时都能触发更新\n const schema = unref(getProps).schema || []\n return schema.map(item => ({\n prop: item.prop,\n enum: item.enum\n }))\n },\n (newVal, oldVal) => {\n if (!newVal || newVal.length === 0) return\n\n // 找出发生变化的enum项\n newVal.forEach((item, index) => {\n if (item.enum !== oldVal?.[index]?.enum) {\n const schemaItem = unref(getProps).schema?.find(s => s.prop === item.prop)\n if (schemaItem) {\n // 重新设置枚举值\n setEnumMap(schemaItem)\n // 初始化默认值\n nextTick(() => {\n initDefaultValue(schemaItem)\n })\n }\n }\n })\n },\n { deep: true }\n )\n\n // 监听enumMap的变更,当enum发生变化后清除缓存\n watch(\n () => enumMap.value,\n () => {\n clearCache()\n },\n { deep: true }\n )\n\n // 使用计算属性代替排序\n const getSchemaList = computed(() => {\n return sortedSchema.value\n })\n\n // 获取每个表单的宽度\n const getComponentWidth = ({ width, props: componentProps }: ZnFormSchemaProps) => {\n const { elFormProps = {} } = unref(getProps)\n const style = componentProps?.style || { width: '100%' } // 默认宽度 100%\n if (width) return { ...style, width: getPx(width) }\n if (elFormProps.fixWidth) return { ...style, width: getPx(elFormProps.width || elFormProps.inline ? 220 : '100%') }\n return style\n }\n\n // 获取标题样式\n const getTitleFontStyle = ({ labelSize }: ZnFormSchemaProps) => {\n if (!labelSize || labelSize === 'default') return { fontSize: '16px', fontWeight: 600 }\n if (labelSize === 'small') return { fontSize: '14px', fontWeight: 600 }\n if (labelSize === 'large') return { fontSize: '18px', fontWeight: 600 }\n return {}\n }\n\n /**\n * @description 合并传入进来的栅格属性\n */\n const setGridProp = (col: Partial<ColProps> = {}) => {\n return {\n // 如果有 span,代表用户优先级更高,所以不需要默认栅格\n ...(col.span ? {} : { xs: 24, sm: 12, md: 12, lg: 12, xl: 12 }),\n ...col\n }\n }\n\n const slots = useSlots()\n\n const RenderFormWrap = () => {\n const { elFormProps, onlyRenderComponent } = unref(getProps)\n return !onlyRenderComponent ? (\n <ElForm ref={elFormRef} {...elFormProps} class={[prefixClass, { 'is-view': props.isView }]} model={unref(model)} onSubmit={(e) => e.preventDefault()}>\n {{\n default: () => {\n // 如果存在自定义插槽,则直接返回自定义插槽的 Render\n if (slots.default) return slots.default({ getComponentWidth, parseLabel, isDestroy, isHidden })\n return (\n <Fragment>\n {props.lazyLoadDebug && (\n <div style=\"background-color: #f1f1f1; padding: 5px; margin-bottom: 10px; border-radius: 4px; font-size: 12px;\">\n <div>\n 懒加载状态:\n {props.componentDelayLoad > 0 && (\n <span>组件延时: {props.componentDelayLoad}ms | </span>\n )}\n 组件状态: {componentLoadReady.value ? '已就绪' : '等待中'} |\n 已加载 {lazyLoadStatus.value.loaded}/{lazyLoadStatus.value.total} 项,剩余 {lazyLoadStatus.value.pending} 项\n </div>\n {lazyLoadStatus.value.startTime > 0 && (\n <div style=\"margin-top: 3px;\">\n 加载时间:\n {lazyLoadStatus.value.duration > 0 ? (\n <span style=\"color: #67c23a; font-weight: bold;\">\n 已完成 ({lazyLoadStatus.value.duration}ms)\n </span>\n ) : (\n <span style=\"color: #e6a23c;\">\n 加载中... ({currentLoadingTime.value}ms)\n </span>\n )}\n </div>\n )}\n {componentLoadTimes.value.length > 0 && (\n <div style=\"margin-top: 8px;\">\n <div style=\"font-weight: bold; margin-bottom: 5px;\">组件加载耗时分析 (按耗时倒序):</div>\n <div style=\"max-height: 200px; overflow-y: auto; border: 1px solid #ddd; border-radius: 3px;\">\n <table style=\"width: 100%; border-collapse: collapse; font-size: 11px;\">\n <thead style=\"background-color: #fafafa; position: sticky; top: 0;\">\n <tr>\n <th style=\"padding: 4px 6px; text-align: left; border-bottom: 1px solid #ddd; width: 35%;\">组件标签</th>\n <th style=\"padding: 4px 6px; text-align: left; border-bottom: 1px solid #ddd; width: 25%;\">属性名</th>\n <th style=\"padding: 4px 6px; text-align: center; border-bottom: 1px solid #ddd; width: 20%;\">耗时(ms)</th>\n <th style=\"padding: 4px 6px; text-align: center; border-bottom: 1px solid #ddd; width: 20%;\">批次</th>\n </tr>\n </thead>\n <tbody>\n {sortedComponentLoadTimes.value.map((item, index) => (\n <tr key={item.prop} style={index % 2 === 0 ? 'background-color: #ffffff;' : 'background-color: #f9f9f9;'}>\n <td style=\"padding: 3px 6px; border-bottom: 1px solid #eee; word-break: break-all;\">{item.label}</td>\n <td style=\"padding: 3px 6px; border-bottom: 1px solid #eee; font-family: monospace; word-break: break-all;\">{item.prop}</td>\n <td style={`padding: 3px 6px; border-bottom: 1px solid #eee; text-align: center; font-weight: bold; color: ${item.duration > 10 ? '#e6a23c' : item.duration > 5 ? '#909399' : '#67c23a'};`}>\n {item.duration}\n </td>\n <td style=\"padding: 3px 6px; border-bottom: 1px solid #eee; text-align: center;\">{item.batchIndex}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n <div style=\"margin-top: 3px; font-size: 10px; color: #666;\">\n 统计: 总计 {componentLoadTimes.value.length} 个组件 |\n 最慢: {sortedComponentLoadTimes.value[0]?.duration || 0}ms |\n 最快: {sortedComponentLoadTimes.value[sortedComponentLoadTimes.value.length - 1]?.duration || 0}ms |\n 平均: {componentLoadTimes.value.length ? Math.round(componentLoadTimes.value.reduce((sum, item) => sum + item.duration, 0) / componentLoadTimes.value.length) : 0}ms\n </div>\n </div>\n )}\n </div>\n )}\n {RenderForm()}\n {slots.operation ? <ElFormItem>{slots.operation()}</ElFormItem> : undefined}\n </Fragment>\n )\n }\n }}\n </ElForm>\n ) : (\n sortedSchema.value\n .filter((item) => !isDestroy(item) && shouldRenderItem(item))\n .map((item) => {\n return (\n <div v-show={!isHidden(item)}>\n <ZnFormItem\n ref={(el: any) => (unref(znFormItemRefs)[item.prop] = el)}\n isView={props.isView}\n column={item}\n v-model={model.value}\n style={getComponentWidth(item)}\n />\n </div>\n )\n })\n )\n }\n\n // 渲染 ELForm\n const RenderForm = () => {\n const { useCol, rowProps } = unref(getProps)\n // 如果需要栅格,需要包裹 ElCol\n return useCol ? (\n // 默认 gutter 20,可以被传来的 rowProps 替换\n <ElRow gutter={20} {...rowProps} style=\"width: 100%\">\n {renderFormItemWrap()}\n </ElRow>\n ) : (\n renderFormItemWrap()\n )\n }\n\n // 渲染 FormItem 上一层\n const renderFormItemWrap = () => {\n const { useCol, rowProps } = unref(getProps)\n\n return sortedSchema.value\n .filter((item) => !isDestroy(item) && shouldRenderItem(item))\n .map((item) => {\n // 如果有 title\n const el = hyphenToCamelCase(item.el) || ''\n const useDivider = el === ComponentNameEnum.EL_DIVIDER\n const Component = componentMap[el] as ReturnType<typeof defineComponent>\n\n return useDivider ? (\n <Fragment>\n <Component {...item.props}>\n <span style={getTitleFontStyle(item)}>{parseLabel(item.label)}</span>\n </Component>\n </Fragment>\n ) : useCol ? (\n // 如果需要栅格,需要包裹 ElCol\n <ElCol {...setGridProp({ ...rowProps?.col, ...item.col })} v-show={!isHidden(item)}>\n {renderFormItem(item)}\n </ElCol>\n ) : (\n renderFormItem(item)\n )\n })\n }\n\n // 存储每一个 ElFormItem 实例\n const formItemComponentsRef = ref<Record<string, FormItemInstance>>({})\n\n // 存储表单组件实例\n const znFormItemRefs = shallowRef<Record<string, InstanceType<typeof ZnFormItem>>>({})\n\n // 渲染 FormItem\n const renderFormItem = (item: ZnFormSchemaProps) => {\n let rules = item.formItem?.rules || null\n if (props.isView && props.disableRulesInView && item.formItem || isHidden(item) ) {\n //如果查看或者是隐藏的item,则去除表单验证信息\n rules = null\n }\n\n return item.hiddenLabel ? (\n <ZnFormItem\n ref={(el: any) => (unref(znFormItemRefs)[item.prop] = el)}\n isView={props.isView}\n column={item}\n v-model={model.value}\n style={getComponentWidth(item)}\n />\n ) : (\n <ElFormItem\n v-show={!isHidden(item)}\n ref={(el: any) => (unref(formItemComponentsRef)[item.prop] = el)}\n {...(item.formItem || {})}\n prop={item.prop}\n rules={rules}\n label={parseLabel(item.label)}>\n <ZnFormItem\n ref={(el: any) => (unref(znFormItemRefs)[item.prop] = el)}\n isView={props.isView}\n column={item}\n v-model={model.value}\n style={getComponentWidth(item)}\n />\n </ElFormItem>\n )\n }\n\n type ProFormEmits = {\n register: [proFormRef?: ComponentPublicInstance | null | any, elFormRef?: FormInstance]\n validate: [prop: FormItemProp, isValid: boolean, message: string] // ElForm 自带的事件\n }\n\n export type ProFormOnEmits = ProFormEmits\n\n // 定义 emit 事件\n const emits = defineEmits([\"register\", \"validate\"])\n\n onMounted(() => {\n emits('register', unref(elFormRef)?.$parent, unref(elFormRef))\n })\n\n onUnmounted(() => {\n // 清理定时器\n if (loadingTimer.value) {\n clearInterval(loadingTimer.value)\n loadingTimer.value = null\n }\n })\n\n // 设置 form 的值\n const setValues = (data: Record<string, any> = {}) => {\n model.value = Object.assign(unref(model), data)\n }\n\n // 设置 ProForm 组件的 props\n const setProps = (props: Partial<ZnFormProps> = {}) => {\n mergeProps.value = Object.assign(unref(mergeProps), props)\n }\n\n // 设置 schema\n const setSchema = (schemaSet: FormSetProps[]) => {\n const { schema } = unref(getProps)\n for (const v of schema) {\n for (const item of schemaSet) {\n if (v.prop === item.prop) {\n setFormProp(v, item.field, item.value)\n }\n }\n }\n }\n\n // 添加 schema\n const addSchema = (formSchema: any, prop?: number | string, position: 'before' | 'after' = 'after') => {\n const { schema } = unref(getProps) // 获取 schema 数组\n const schemaCopy = [...schema]\n if (isString(prop)) {\n // 如果传入的是一个 prop 名称\n schemaCopy.forEach((s, i) => {\n // 遍历 schema,找到对应的 prop\n if (s.prop === prop) {\n // 根据 position 决定插入到前或后\n position === 'after' ? schema.splice(i + 1, 0, formSchema) : schema.splice(i, 0, formSchema)\n }\n })\n } else if (prop !== undefined) {\n // 如果传入的是某个位置(索引)\n schema.splice(prop, 0, formSchema)\n } else {\n // 如果没有指定位置,默认添加到末尾\n schema.push(formSchema)\n }\n\n // 添加新schema后,清除缓存\n clearCache()\n\n // 如果使用懒加载,将新添加的项标记为已渲染\n if (props.lazyLoad && formSchema.prop) {\n renderedItems.value.add(formSchema.prop)\n }\n }\n\n // 删除 schema\n const delSchema = (prop: string) => {\n const { schema } = unref(getProps)\n\n const index = schema.findIndex((item) => item.prop === prop)\n if (index > -1) {\n schema.splice(index, 1)\n // 删除schema后,清除缓存\n clearCache()\n\n // 如果使用懒加载,从已渲染集合中移除\n if (props.lazyLoad) {\n renderedItems.value.delete(prop)\n }\n }\n }\n\n // 获取表单组件实例\n const getComponentExpose = (prop: string) => {\n return unref(znFormItemRefs)[prop]?.formComponentRef\n }\n\n // 获取 formItem 实例\n const getFormItemExpose = (prop: string) => {\n return unref(formItemComponentsRef)[prop]\n }\n\n defineExpose({\n form: elFormRef,\n model,\n setValues,\n setProps,\n setSchema,\n addSchema,\n delSchema,\n getComponentExpose,\n getFormItemExpose,\n getComponentWidth,\n parseLabel,\n isDestroy,\n isHidden\n })\n\n</script>\n\n"],"names":["_isSlot","s","_isVNode","Object","prototype","toString","call","props","__props","model","_useModel","elFormRef","shallowRef","mergeProps","ref","getProps","computed","propsObj","assign","unref","enumMap","enumMapProps","Map","renderedItems","Set","pendingItems","componentLoadReady","loadingTimer","updateTrigger","componentLoadTimes","cachedResults","clearCache","__name","clear","setEnumMap","async","enum","enumValue","prop","useCacheEnum","enumMapConst","set","value","data","result","Array","isArray","console","warn","nextTick","schemaItem","schema","find","item","initDefaultValue","error","provide","formEnumMapKey","defaultValue","fieldNames","formConst","getFormProp","defaultValueConst","setFormProp","enumData","get","length","filter","isDefault","cascadeEnum","el","subProp","subEnum","hyphenToCamelCase","ComponentNameEnum","EL_SELECT","watch","newVal","subEnumData","formEnum","subValue","immediate","isHidden","hidden","cachedKey","JSON","stringify","has","isDestroy","destroy","cacheKey","parseLabel","label","sortedSchema","markRaw","sort","a","b","order","lazyLoadStatus","total","loaded","pending","startTime","endTime","duration","currentLoadingTime","Date","now","sortedComponentLoadTimes","startComponentLazyLoad","lazyLoadDebug","clearInterval","setInterval","log","componentDelayLoad","totalItems","toLocaleTimeString","initialItems","slice","Math","min","initialLoadCount","forEach","add","some","i","size","startLazyLoading","batchIndex","loadNextBatch","batchStartTime","itemsToLoad","batchLoadCount","index","itemStartTime","itemEndTime","push","lazyLoadDelay","slowestComponents","map","avgDuration","round","reduce","sum","shouldRenderItem","lazyLoad","keysToDelete","includeModelKeys","dynamicModel","keys","delete","renderUseProp","key","modelRef","isView","setTimeout","deep","oldVal","getSchemaList","getComponentWidth","width","componentProps","elFormProps","style","getPx","fixWidth","inline","getTitleFontStyle","labelSize","fontSize","fontWeight","setGridProp","col","span","xs","sm","md","lg","xl","slots","useSlots","RenderFormWrap","onlyRenderComponent","_withDirectives","_createVNode","ZnFormItem","znFormItemRefs","column","modelValue","$event","_vShow","ElForm","_mergeProps","class","onSubmit","e","preventDefault","default","_slot","_Fragment","_createTextVNode","RenderForm","operation","ElFormItem","undefined","_slot2","useCol","rowProps","ElRow","gutter","renderFormItemWrap","_slot3","useDivider","EL_DIVIDER","Component","componentMap","ElCol","renderFormItem","formItemComponentsRef","rules","formItem","disableRulesInView","hiddenLabel","emits","__emit","onMounted","$parent","onUnmounted","setValues","__expose","form","setProps","setSchema","schemaSet","v","field","addSchema","formSchema","position","schemaCopy","isString","splice","delSchema","findIndex","getComponentExpose","formComponentRef","getFormItemExpose"],"mappings":"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"}
1
+ {"version":3,"file":"index.vue2.mjs","sources":["../../../../../../packages/components/znForm/src/index.vue"],"sourcesContent":["<script lang=\"tsx\">\nconst prefixClass = 'zn-form'\n</script>\n<template>\n <RenderFormWrap />\n</template>\n\n<script setup lang=\"tsx\">\n import { type ComponentPublicInstance, computed, defineComponent, markRaw, onMounted, onUnmounted, provide, ref, shallowRef, unref, useSlots, watch, nextTick, Fragment, onBeforeUnmount, getCurrentInstance } from 'vue'\n\n import ZnFormItem from './components/ZnFormItem.vue'\n\n import { deleteObjProperty, getFormProp, getPx, hyphenToCamelCase, isString, setFormProp } from './helper'\n import { componentMap } from './helper/componentMap'\n import { ComponentNameEnum, formEnumMapKey, type ZnFormSchemaProps, type FormSetProps, type ZnElFormProps, type ValueType } from './interface'\n import { type ColProps, ElCol, ElForm, ElFormItem, ElRow, type FormInstance, type FormItemInstance, type FormItemProp, type RowProps } from 'element-plus'\n\n defineOptions({ name: 'ZnForm' })\n\n \n\n // 添加性能优化相关的配置\n const PERFORMANCE_CONFIG = {\n CACHE_MAX_SIZE: 1000, // 最大缓存数量\n CACHE_TTL: 30000, // 缓存30秒过期\n DEBOUNCE_DELAY: 16, // 16ms防抖(60fps)\n BATCH_RENDER_SIZE: 10, // 每批渲染数量\n MAX_SYNC_RENDER: 50 // 超过50个组件强制异步\n }\n\n // 优化缓存系统\n class PerformanceCache {\n private cache = new Map()\n private timers = new Map()\n private hitCount = 0\n private missCount = 0\n\n has(key: string): boolean {\n const item = this.cache.get(key)\n if (item && Date.now() - item.timestamp < PERFORMANCE_CONFIG.CACHE_TTL) {\n return true\n }\n if (item) {\n this.delete(key) // 清理过期项\n }\n return false\n }\n\n get(key: string) {\n const item = this.cache.get(key)\n if (item && Date.now() - item.timestamp < PERFORMANCE_CONFIG.CACHE_TTL) {\n this.hitCount++\n return item.value\n }\n this.missCount++\n this.delete(key)\n return undefined\n }\n\n set(key: string, value: any) {\n // 限制缓存大小\n if (this.cache.size >= PERFORMANCE_CONFIG.CACHE_MAX_SIZE) {\n const firstKey = this.cache.keys().next().value\n this.delete(firstKey)\n }\n\n this.cache.set(key, {\n value,\n timestamp: Date.now()\n })\n\n // 设置过期定时器\n if (this.timers.has(key)) {\n clearTimeout(this.timers.get(key))\n }\n\n const timer = setTimeout(() => {\n this.delete(key)\n }, PERFORMANCE_CONFIG.CACHE_TTL)\n\n this.timers.set(key, timer)\n }\n\n delete(key: string) {\n this.cache.delete(key)\n const timer = this.timers.get(key)\n if (timer) {\n clearTimeout(timer)\n this.timers.delete(key)\n }\n }\n\n clear() {\n this.cache.clear()\n this.timers.forEach(timer => clearTimeout(timer))\n this.timers.clear()\n }\n\n getStats() {\n return {\n size: this.cache.size,\n hitRate: this.hitCount / (this.hitCount + this.missCount) || 0,\n hitCount: this.hitCount,\n missCount: this.missCount\n }\n }\n }\n\n // 防抖函数优化\n const createDebouncer = () => {\n const timers = new Map()\n\n return (key: string, fn: Function, delay = PERFORMANCE_CONFIG.DEBOUNCE_DELAY) => {\n if (timers.has(key)) {\n clearTimeout(timers.get(key))\n }\n\n const timer = setTimeout(() => {\n fn()\n timers.delete(key)\n }, delay)\n\n timers.set(key, timer)\n }\n }\n\n // Model变化检测优化 - 使用浅比较而不是JSON.stringify\n const createModelHasher = () => {\n let lastModel: any = null\n let lastHash = ''\n\n return (model: any) => {\n if (model === lastModel) return lastHash\n\n // 使用更快的哈希算法\n const keys = Object.keys(model).sort()\n let hash = keys.length.toString()\n\n for (const key of keys) {\n const value = model[key]\n if (typeof value === 'object' && value !== null) {\n hash += `${key}:obj:${Object.keys(value).length};`\n } else {\n hash += `${key}:${typeof value}:${String(value).slice(0, 50)};`\n }\n }\n\n lastModel = model\n lastHash = hash\n return hash\n }\n }\n\n export interface ZnFormProps {\n /** 表单值 */\n modelValue?: Record<string, any>\n /** 表单配置项 */\n schema?: ZnFormSchemaProps[]\n /** ElForm 的 props */\n elFormProps?: ZnElFormProps | Record<string, any>\n /** 是否使用栅格布局, 默认 true */\n useCol?: boolean\n /** 栅格布局全局设置 */\n rowProps?: Partial<RowProps> & {\n col?: Partial<ColProps>\n }\n /** 是否只渲染 ZnFormItem 组件,只使用表单组件 */\n onlyRenderComponent?: boolean\n /**\n * 动态 model,如果 schema 发生变化,则重新渲染 model 表单数据\n * (将不存在 schema 的 prop 从 model 中去掉),默认启用 true\n */\n dynamicModel?: boolean\n /**\n * 搭配 dynamicModel 使用,清除 model 不存在的 prop 时,\n * 指定保留 prop。如果不传,则不做清除\n */\n includeModelKeys?: string[]\n /**\n * 存储 enum 值。该 props 是搭配 ProTable 使用,\n * 因为 ProTable 已经初始化部分字典数据,\n * 因此不需要 ProForm 再次请求这些字典数据\n */\n enumMapProps?: Map<string, Record<string, any>[]>\n /** 是否查看,默认为否 */\n isView?: boolean\n /**查看状态时,禁用表单验证 */\n disableRulesInView?: boolean\n /** 是否延迟加载表单项,用于优化大型表单渲染性能 */\n lazyLoad?: boolean\n /** 延迟加载的时间间隔,单位毫秒 */\n lazyLoadDelay?: number\n /** 初始加载的表单项数量,默认为10 */\n initialLoadCount?: number\n /** 每批加载的表单项数量,默认为5 */\n batchLoadCount?: number\n /** 开启懒加载调试模式 */\n lazyLoadDebug?: boolean\n /** 整个组件延时加载时间,用于控制多个ZnForm组件的加载优先级,单位毫秒 */\n componentDelayLoad?: number\n }\n\n const props = defineProps({\n modelValue: { type: Object, required: false, default: () => ({}) },\n schema: { type: Array, required: false, default: () => [] },\n elFormProps: { type: Object, required: false },\n useCol: { type: Boolean, required: false, default: true },\n rowProps: { type: Object, required: false },\n onlyRenderComponent: { type: Boolean, required: false, default: false },\n dynamicModel: { type: Boolean, required: false, default: true },\n includeModelKeys: { type: Array, required: false },\n enumMapProps: { type: Map, required: false },\n isView: { type: Boolean, required: false, default: false },\n disableRulesInView: { type: Boolean, required: false, default: true },\n lazyLoad: { type: Boolean, required: false, default: false },\n lazyLoadDelay: { type: Number, required: false, default: 50 },\n initialLoadCount: { type: Number, required: false, default: 10 },\n batchLoadCount: { type: Number, required: false, default: 30 },\n lazyLoadDebug: { type: Boolean, required: false, default: false },\n componentDelayLoad: { type: Number, required: false, default: 0 }\n})\n\n const model = defineModel<Record<string, any>>({ default: () => ({}) })\n\n // 存储 ElForm 实例\n const elFormRef = shallowRef<FormInstance>()\n\n const mergeProps = ref<ZnFormProps>({})\n\n const getProps = computed(() => {\n const propsObj = { ...props }\n Object.assign(propsObj, unref(mergeProps))\n return propsObj\n })\n\n // 定义 enumMap 存储 enum 值(避免异步请求无法格式化单元格内容 || 无法填充下拉选择)\n const enumMap = ref(props.enumMapProps || new Map<string, Record<string, any>[]>())\n\n // 跟踪哪些表单项已经渲染,用于懒加载\n const renderedItems = ref(new Set<string>())\n // 记录需要懒加载的表单项\n const pendingItems = ref<any[]>([])\n // 组件级别的加载状态\n const componentLoadReady = ref(false)\n // 用于更新加载时间显示的定时器\n const loadingTimer = ref<number | null>(null)\n // 用于触发加载时间更新的响应式变量\n const updateTrigger = ref(0)\n // 用于记录每个组件的加载耗时\n const componentLoadTimes = ref<Array<{\n prop: string\n label: string\n startTime: number\n endTime: number\n duration: number\n batchIndex: number\n }>>([])\n\n // 用于缓存计算结果 - 替换为高性能缓存系统\n const performanceCache = new PerformanceCache()\n const debouncer = createDebouncer()\n const modelHasher = createModelHasher()\n\n // 性能监控\n const performanceStats = ref({\n renderCount: 0,\n lastRenderTime: 0,\n avgRenderTime: 0,\n cacheStats: { size: 0, hitRate: 0, hitCount: 0, missCount: 0 }\n })\n\n const clearCache = () => {\n performanceCache.clear()\n }\n\n // 组件实例引用用于清理\n const componentInstance = getCurrentInstance()\n\n // 清理所有定时器和缓存\n const cleanup = () => {\n if (loadingTimer.value) {\n clearInterval(loadingTimer.value)\n loadingTimer.value = null\n }\n performanceCache.clear()\n }\n\n const setEnumMap = async ({ enum: enumValue, prop, useCacheEnum = true }: ZnFormSchemaProps) => {\n if (!enumValue) return\n\n const enumMapConst = unref(enumMap)\n\n // 当前 enum 为静态数据,则直接存储到 enumMap\n if (typeof enumValue !== 'function') {\n // 即使使用缓存,也强制更新enumMap,确保最新数据能被访问到\n enumMapConst.set(prop, unref(enumValue)!)\n // 触发响应式更新\n enumMap.value = new Map(enumMapConst)\n return\n }\n\n try {\n // 为了防止接口执行慢,而存储慢,导致重复请求,所以预先存储为[],接口返回后再二次存储\n enumMapConst.set(prop!, [])\n\n // 如果当前 enum 为后台数据需要请求数据,则调用该请求接口,并存储到 enumMap\n let data = await enumValue(unref(model), enumMapConst)\n\n // 适配 enum 接口返回 data 以及自定义函数返回数组\n data = data?.result || data\n\n // 如果返回的数据不是数组,则警告并强制转换为数组\n if (!Array.isArray(data)) {\n console.warn(`警告: '${prop}' 的enum函数返回值不是数组`, data)\n data = []\n }\n\n // 更新enumMap\n enumMapConst.set(prop, data)\n\n // 强制更新enumMap\n enumMap.value = new Map(enumMapConst)\n\n // 在下一tick触发初始化默认值\n nextTick(() => {\n if (prop) {\n // 找到对应的schema项\n const schemaItem = unref(getProps).schema?.find(item => item.prop === prop)\n if (schemaItem) {\n initDefaultValue(schemaItem)\n }\n }\n })\n } catch (error) {\n console.error(`添加enum函数参数失败: '${prop}'`, error)\n enumMapConst.set(prop!, [])\n enumMap.value = new Map(enumMapConst)\n }\n }\n provide(formEnumMapKey, enumMap)\n\n // 初始化默认值\n const initDefaultValue = async ({ defaultValue, fieldNames, prop }: ZnFormSchemaProps) => {\n const formConst = unref(model)\n const value = getFormProp(formConst, prop)\n\n if (value || value === false || value === 0) return\n\n const defaultValueConst = unref(defaultValue)\n // 设置表单项的默认值,如果存在值,则不需要赋默认值\n if (defaultValueConst !== undefined && defaultValueConst !== null) {\n if (typeof defaultValueConst !== 'function') return setFormProp(formConst, prop, defaultValueConst)\n\n return setFormProp(formConst, prop, await defaultValueConst(formConst, unref(enumMap)))\n }\n\n // 如果没有设置默认值,则判断后台是否返回 isDefault 为 Y 的枚举\n const enumData = unref(enumMap).get(prop)\n if (enumData?.length) {\n // 找出 isDefault 为 Y 的 value\n const data = enumData.filter((item) => item.isDefault === 'Y')\n\n return data.length && setFormProp(formConst, prop, data[0][fieldNames?.value ?? 'value'])\n }\n }\n\n /**\n * 多个 Select 框级联下拉\n */\n const cascadeEnum = ({ prop, el, subProp, subEnum }: ZnFormSchemaProps) => {\n if (hyphenToCamelCase(el) === ComponentNameEnum.EL_SELECT) {\n if (typeof subProp !== 'string') return\n // 监听级联下拉变化\n watch(\n () => getFormProp(unref(model), prop),\n async (newVal: string) => {\n const enumMapConst = unref(enumMap)\n // 选择时将级联的 subProp 置空\n if (unref(model)[subProp!]) unref(model)[subProp!] = ''\n\n if (!subEnum) return\n if (!newVal) return enumMapConst.set(subProp!, [])\n\n if (enumMapConst.get(`${subProp!}-${newVal}`)) {\n // 存在缓存字典数据,则取出来赋值\n enumMapConst.set(subProp!, enumMapConst.get(`${subProp!}-${newVal}`) || [])\n } else {\n if (typeof subEnum === 'function') {\n const subEnumData = await subEnum(newVal, enumMapConst.get(prop))\n // 缓存字典数据\n enumMapConst.set(`${subProp!}-${newVal}`, subEnumData)\n enumMapConst.set(subProp!, subEnumData)\n } else if (Array.isArray(subEnum)) {\n // 缓存字典数据\n enumMapConst.set(`${subProp!}-${newVal}`, subEnum)\n enumMapConst.set(subProp!, subEnum)\n }\n }\n\n const formEnum = enumMapConst.get(prop) || []\n const [enumValue] = formEnum.filter((item) => item.value === newVal)\n // 如果选中的字典有 subValue,则直接赋值给 subProp\n if (enumValue?.subValue) unref(model)[subProp!] = enumValue.subValue\n },\n { immediate: true }\n )\n }\n }\n\n /**\n * 是否隐藏表单项 - 优化缓存计算结果提高性能\n */\n const isHidden = (item: ZnFormSchemaProps) => {\n const { hidden, prop } = item\n\n if (typeof hidden !== 'function') return hidden\n\n // 使用优化的模型哈希而不是JSON.stringify\n const modelHash = modelHasher(unref(model))\n const cacheKey = `hidden_${prop}_${modelHash}`\n\n // 检查缓存\n if (performanceCache.has(cacheKey)) {\n return performanceCache.get(cacheKey)\n }\n\n const result = hidden(unref(model))\n performanceCache.set(cacheKey, result)\n return result\n }\n\n /**\n * 是否销毁表单项 & 是否初始化表单项默认值 - 优化缓存\n */\n const isDestroy = (item: ZnFormSchemaProps) => {\n const { destroy, prop } = item\n\n // 使用缓存,避免重复计算\n if (typeof destroy !== 'function') {\n const result = destroy || false\n // 使用防抖优化初始化默认值\n if (!result) {\n debouncer(`init_${prop}`, () => initDefaultValue(item), 50)\n } else {\n debouncer(`delete_${prop}`, () => deleteObjProperty(unref(model), prop), 50)\n }\n return result\n }\n\n // 使用优化的模型哈希\n const modelHash = modelHasher(unref(model))\n const cacheKey = `destroy_${prop}_${modelHash}`\n\n if (performanceCache.has(cacheKey)) {\n return performanceCache.get(cacheKey)\n }\n\n const result = destroy(unref(model))\n performanceCache.set(cacheKey, result)\n\n // 使用防抖优化副作用操作\n if (!result) {\n debouncer(`init_${prop}`, () => initDefaultValue(item), 50)\n } else {\n debouncer(`delete_${prop}`, () => deleteObjProperty(unref(model), prop), 50)\n }\n\n return result\n }\n\n const parseLabel = (label: ValueType | ((model: Record<string, any>) => string)) => {\n if (typeof label === 'function') return label(unref(model))\n return label + ''\n }\n\n // 添加计算属性用于排序,使用markRaw避免不必要的响应式监听\n const sortedSchema = computed(() => {\n const schema = unref(getProps).schema || []\n return markRaw([...schema].sort((a, b) => (a.order ?? 0) - (b.order ?? 0)))\n })\n\n // 用于调试的懒加载状态\n const lazyLoadStatus = ref({\n total: 0,\n loaded: 0,\n pending: 0,\n startTime: 0,\n endTime: 0,\n duration: 0\n })\n\n // 实时加载时间显示\n const currentLoadingTime = computed(() => {\n // 依赖 updateTrigger 来触发重新计算\n updateTrigger.value\n if (lazyLoadStatus.value.startTime === 0) return 0\n if (lazyLoadStatus.value.duration > 0) return lazyLoadStatus.value.duration\n return Date.now() - lazyLoadStatus.value.startTime\n })\n\n // 按加载时间排序的组件列表\n const sortedComponentLoadTimes = computed(() => {\n return [...componentLoadTimes.value].sort((a, b) => b.duration - a.duration)\n })\n\n // 开始组件级别的懒加载\n const startComponentLazyLoad = (schema: ZnFormSchemaProps[]) => {\n componentLoadReady.value = true\n\n // 记录开始时间\n lazyLoadStatus.value.startTime = Date.now()\n lazyLoadStatus.value.endTime = 0\n lazyLoadStatus.value.duration = 0\n\n // 清空之前的组件加载记录\n componentLoadTimes.value = []\n\n // 启动定时器更新加载时间显示\n if (props.lazyLoadDebug && loadingTimer.value) {\n clearInterval(loadingTimer.value)\n }\n if (props.lazyLoadDebug) {\n loadingTimer.value = setInterval(() => {\n // 触发响应式更新,让界面显示实时的加载时间\n updateTrigger.value += 1\n }, 100) as unknown as number\n }\n\n if (props.lazyLoadDebug) {\n console.log('ZnForm Component LazyLoad Started:', {\n componentDelayLoad: props.componentDelayLoad,\n totalItems: schema.length,\n startTime: new Date(lazyLoadStatus.value.startTime).toLocaleTimeString()\n })\n }\n\n const initialItems = pendingItems.value.slice(0, Math.min(props.initialLoadCount, pendingItems.value.length))\n initialItems.forEach(item => {\n if (item.prop) renderedItems.value.add(item.prop)\n })\n pendingItems.value = pendingItems.value.filter(item =>\n !initialItems.some(i => i.prop === item.prop)\n )\n\n // 更新调试信息\n lazyLoadStatus.value.loaded = renderedItems.value.size\n lazyLoadStatus.value.pending = pendingItems.value.length\n\n // 开始懒加载剩余项\n nextTick(() => startLazyLoading())\n }\n\n // 懒加载表单项\n const startLazyLoading = () => {\n if (pendingItems.value.length === 0) return\n\n let batchIndex = 0\n\n const loadNextBatch = () => {\n if (pendingItems.value.length === 0) return\n\n batchIndex++\n const batchStartTime = Date.now()\n\n // 每批次加载指定数量的表单项\n const itemsToLoad = pendingItems.value.slice(0, props.batchLoadCount)\n pendingItems.value = pendingItems.value.slice(props.batchLoadCount)\n\n itemsToLoad.forEach((item, index) => {\n if (item.prop) {\n const itemStartTime = Date.now()\n renderedItems.value.add(item.prop)\n\n // 使用 nextTick 确保组件已经渲染完成\n nextTick(() => {\n const itemEndTime = Date.now()\n componentLoadTimes.value.push({\n prop: item.prop,\n label: typeof item.label === 'function' ? item.label(unref(model)) : (item.label || item.prop),\n startTime: itemStartTime,\n endTime: itemEndTime,\n duration: itemEndTime - itemStartTime,\n batchIndex: batchIndex\n })\n })\n }\n })\n\n // 更新调试信息\n lazyLoadStatus.value.loaded = renderedItems.value.size\n lazyLoadStatus.value.pending = pendingItems.value.length\n\n if (props.lazyLoadDebug) {\n console.log('ZnForm LazyLoad Batch:', {\n loaded: lazyLoadStatus.value.loaded,\n pending: lazyLoadStatus.value.pending,\n total: lazyLoadStatus.value.total\n })\n }\n\n if (pendingItems.value.length > 0) {\n setTimeout(loadNextBatch, props.lazyLoadDelay)\n } else {\n // 所有表单项都已加载完成,记录结束时间\n lazyLoadStatus.value.endTime = Date.now()\n lazyLoadStatus.value.duration = lazyLoadStatus.value.endTime - lazyLoadStatus.value.startTime\n\n // 清除定时器\n if (loadingTimer.value) {\n clearInterval(loadingTimer.value)\n loadingTimer.value = null\n }\n\n if (props.lazyLoadDebug) {\n console.log('ZnForm LazyLoad Completed:', {\n total: lazyLoadStatus.value.total,\n duration: lazyLoadStatus.value.duration + 'ms',\n endTime: new Date(lazyLoadStatus.value.endTime).toLocaleTimeString()\n })\n\n if (componentLoadTimes.value.length > 0) {\n console.log(`[ZnForm 组件加载详情] 总计 ${componentLoadTimes.value.length} 个组件`)\n const slowestComponents = [...componentLoadTimes.value].sort((a, b) => b.duration - a.duration).slice(0, 5)\n console.log('[ZnForm 最耗时的5个组件]:', slowestComponents.map(item => `${item.label}(${item.prop}): ${item.duration}ms`))\n\n const avgDuration = Math.round(componentLoadTimes.value.reduce((sum, item) => sum + item.duration, 0) / componentLoadTimes.value.length)\n console.log(`[ZnForm 性能统计] 最慢: ${slowestComponents[0]?.duration || 0}ms | 最快: ${[...componentLoadTimes.value].sort((a, b) => a.duration - b.duration)[0]?.duration || 0}ms | 平均: ${avgDuration}ms`)\n }\n }\n }\n }\n\n loadNextBatch()\n }\n\n // 判断表单项是否应该渲染 - 用于懒加载过滤\n const shouldRenderItem = (item: ZnFormSchemaProps) => {\n if (!props.lazyLoad) return true\n if (!item.prop) return true\n // 组件级别未准备好时,不渲染任何表单项\n if (!componentLoadReady.value) return false\n return renderedItems.value.has(item.prop)\n }\n\n // 监听表单结构化数组,重新组装 schema\n watch(\n () => unref(getProps).schema,\n (schema = []) => {\n // 一次性收集需要删除的键\n const keysToDelete = props.includeModelKeys?.length > 0 && unref(getProps).dynamicModel\n ? new Set(Object.keys(unref(model)))\n : null\n\n // 清空缓存\n clearCache()\n\n if (props.lazyLoad) {\n // 重置已渲染项\n renderedItems.value.clear()\n // 准备懒加载项\n pendingItems.value = []\n }\n\n // 设置调试信息\n lazyLoadStatus.value.total = schema.length\n\n schema.forEach((item, index) => {\n // 设置枚举\n setEnumMap(item)\n // 级联下拉监听\n cascadeEnum(item)\n\n // 设置表单排序默认值\n item && (item.order = item.order ?? index + 2)\n\n // 初始化值\n initDefaultValue(item)\n\n // 如果需要删除多余的键,从待删除集合中移除当前存在的键\n if (keysToDelete && item.prop) {\n keysToDelete.delete(item.prop)\n // 处理特殊渲染使用的属性\n item.renderUseProp?.forEach(prop => keysToDelete.delete(prop))\n }\n\n // 如果启用懒加载且项目有prop,将其添加到待渲染队列\n if (props.lazyLoad && item.prop) {\n pendingItems.value.push(item)\n }\n })\n\n // 如果有设置保留键,将它们也从待删除集合中移除\n if (keysToDelete && props.includeModelKeys?.length) {\n props.includeModelKeys.forEach(key => keysToDelete.delete(key))\n }\n\n // 批量删除不存在的属性\n if (keysToDelete?.size) {\n const modelRef = unref(model)\n keysToDelete.forEach(key => {\n delete modelRef[key]\n })\n }\n\n // 如果不启用懒加载或在查看模式下,直接渲染所有表单项\n if (!props.lazyLoad || props.isView) {\n componentLoadReady.value = true\n\n // 记录开始和结束时间(同步渲染)\n lazyLoadStatus.value.startTime = Date.now()\n componentLoadTimes.value = []\n\n schema.forEach((item, index) => {\n if (item.prop) {\n const itemStartTime = Date.now()\n renderedItems.value.add(item.prop)\n const itemEndTime = Date.now()\n\n componentLoadTimes.value.push({\n prop: item.prop,\n label: typeof item.label === 'function' ? item.label(unref(model)) : (item.label || item.prop),\n startTime: itemStartTime,\n endTime: itemEndTime,\n duration: itemEndTime - itemStartTime,\n batchIndex: 0\n })\n }\n })\n\n lazyLoadStatus.value.endTime = Date.now()\n lazyLoadStatus.value.duration = lazyLoadStatus.value.endTime - lazyLoadStatus.value.startTime\n lazyLoadStatus.value.loaded = schema.length\n lazyLoadStatus.value.pending = 0\n\n if (props.lazyLoadDebug) {\n console.log('ZnForm Sync Render Completed:', {\n total: lazyLoadStatus.value.total,\n duration: lazyLoadStatus.value.duration + 'ms'\n })\n\n if (componentLoadTimes.value.length > 0) {\n console.log(`[ZnForm 组件加载详情] 总计 ${componentLoadTimes.value.length} 个组件`)\n const slowestComponents = [...componentLoadTimes.value].sort((a, b) => b.duration - a.duration).slice(0, 5)\n console.log('[ZnForm 最耗时的5个组件]:', slowestComponents.map(item => `${item.label}(${item.prop}): ${item.duration}ms`))\n\n const avgDuration = Math.round(componentLoadTimes.value.reduce((sum, item) => sum + item.duration, 0) / componentLoadTimes.value.length)\n console.log(`[ZnForm 性能统计] 最慢: ${slowestComponents[0]?.duration || 0}ms | 最快: ${[...componentLoadTimes.value].sort((a, b) => a.duration - b.duration)[0]?.duration || 0}ms | 平均: ${avgDuration}ms`)\n }\n }\n }\n // 否则如果启用懒加载,需要考虑组件延时加载\n else if (pendingItems.value.length > 0) {\n // 如果设置了组件延时加载,先等待指定时间\n if (props.componentDelayLoad > 0) {\n setTimeout(() => {\n startComponentLazyLoad(schema)\n }, props.componentDelayLoad)\n } else {\n startComponentLazyLoad(schema)\n }\n }\n },\n {\n immediate: true,\n deep: true // 添加深度监听以捕获schema内部属性的变化\n }\n )\n\n // 添加一个专门监听schema中enum属性变化的watch\n watch(\n () => {\n // 返回一个包含所有schema项的enum属性的数组,这样当任何enum变化时都能触发更新\n const schema = unref(getProps).schema || []\n return schema.map(item => ({\n prop: item.prop,\n enum: item.enum\n }))\n },\n (newVal, oldVal) => {\n if (!newVal || newVal.length === 0) return\n\n // 找出发生变化的enum项\n newVal.forEach((item, index) => {\n if (item.enum !== oldVal?.[index]?.enum) {\n const schemaItem = unref(getProps).schema?.find(s => s.prop === item.prop)\n if (schemaItem) {\n // 重新设置枚举值\n setEnumMap(schemaItem)\n // 初始化默认值\n nextTick(() => {\n initDefaultValue(schemaItem)\n })\n }\n }\n })\n },\n { deep: true }\n )\n\n // 监听enumMap的变更,当enum发生变化后清除缓存\n watch(\n () => enumMap.value,\n () => {\n clearCache()\n },\n { deep: true }\n )\n\n // 使用计算属性代替排序\n const getSchemaList = computed(() => {\n return sortedSchema.value\n })\n\n // 获取每个表单的宽度\n const getComponentWidth = ({ width, props: componentProps }: ZnFormSchemaProps) => {\n const { elFormProps = {} } = unref(getProps)\n const style = componentProps?.style || { width: '100%' } // 默认宽度 100%\n if (width) return { ...style, width: getPx(width) }\n if (elFormProps.fixWidth) return { ...style, width: getPx(elFormProps.width || elFormProps.inline ? 220 : '100%') }\n return style\n }\n\n // 获取标题样式\n const getTitleFontStyle = ({ labelSize }: ZnFormSchemaProps) => {\n if (!labelSize || labelSize === 'default') return { fontSize: '16px', fontWeight: 600 }\n if (labelSize === 'small') return { fontSize: '14px', fontWeight: 600 }\n if (labelSize === 'large') return { fontSize: '18px', fontWeight: 600 }\n return {}\n }\n\n /**\n * @description 合并传入进来的栅格属性\n */\n const setGridProp = (col: Partial<ColProps> = {}) => {\n return {\n // 如果有 span,代表用户优先级更高,所以不需要默认栅格\n ...(col.span ? {} : { xs: 24, sm: 12, md: 12, lg: 12, xl: 12 }),\n ...col\n }\n }\n\n const slots = useSlots()\n\n const RenderFormWrap = () => {\n const { elFormProps, onlyRenderComponent } = unref(getProps)\n return !onlyRenderComponent ? (\n <ElForm ref={elFormRef} {...elFormProps} class={[prefixClass, { 'is-view': props.isView }]} model={unref(model)} onSubmit={(e) => e.preventDefault()}>\n {{\n default: () => {\n // 如果存在自定义插槽,则直接返回自定义插槽的 Render\n if (slots.default) return slots.default({ getComponentWidth, parseLabel, isDestroy, isHidden })\n return (\n <Fragment>\n {props.lazyLoadDebug && (\n <div style=\"background-color: #f1f1f1; padding: 5px; margin-bottom: 10px; border-radius: 4px; font-size: 12px;\">\n <div>\n 懒加载状态:\n {props.componentDelayLoad > 0 && (\n <span>组件延时: {props.componentDelayLoad}ms | </span>\n )}\n 组件状态: {componentLoadReady.value ? '已就绪' : '等待中'} |\n 已加载 {lazyLoadStatus.value.loaded}/{lazyLoadStatus.value.total} 项,剩余 {lazyLoadStatus.value.pending} 项\n </div>\n {lazyLoadStatus.value.startTime > 0 && (\n <div style=\"margin-top: 3px;\">\n 加载时间:\n {lazyLoadStatus.value.duration > 0 ? (\n <span style=\"color: #67c23a; font-weight: bold;\">\n 已完成 ({lazyLoadStatus.value.duration}ms)\n </span>\n ) : (\n <span style=\"color: #e6a23c;\">\n 加载中... ({currentLoadingTime.value}ms)\n </span>\n )}\n </div>\n )}\n {componentLoadTimes.value.length > 0 && (\n <div style=\"margin-top: 8px;\">\n <div style=\"font-weight: bold; margin-bottom: 5px;\">组件加载耗时分析 (按耗时倒序):</div>\n <div style=\"max-height: 200px; overflow-y: auto; border: 1px solid #ddd; border-radius: 3px;\">\n <table style=\"width: 100%; border-collapse: collapse; font-size: 11px;\">\n <thead style=\"background-color: #fafafa; position: sticky; top: 0;\">\n <tr>\n <th style=\"padding: 4px 6px; text-align: left; border-bottom: 1px solid #ddd; width: 35%;\">组件标签</th>\n <th style=\"padding: 4px 6px; text-align: left; border-bottom: 1px solid #ddd; width: 25%;\">属性名</th>\n <th style=\"padding: 4px 6px; text-align: center; border-bottom: 1px solid #ddd; width: 20%;\">耗时(ms)</th>\n <th style=\"padding: 4px 6px; text-align: center; border-bottom: 1px solid #ddd; width: 20%;\">批次</th>\n </tr>\n </thead>\n <tbody>\n {sortedComponentLoadTimes.value.map((item, index) => (\n <tr key={item.prop} style={index % 2 === 0 ? 'background-color: #ffffff;' : 'background-color: #f9f9f9;'}>\n <td style=\"padding: 3px 6px; border-bottom: 1px solid #eee; word-break: break-all;\">{item.label}</td>\n <td style=\"padding: 3px 6px; border-bottom: 1px solid #eee; font-family: monospace; word-break: break-all;\">{item.prop}</td>\n <td style={`padding: 3px 6px; border-bottom: 1px solid #eee; text-align: center; font-weight: bold; color: ${item.duration > 10 ? '#e6a23c' : item.duration > 5 ? '#909399' : '#67c23a'};`}>\n {item.duration}\n </td>\n <td style=\"padding: 3px 6px; border-bottom: 1px solid #eee; text-align: center;\">{item.batchIndex}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n <div style=\"margin-top: 3px; font-size: 10px; color: #666;\">\n 统计: 总计 {componentLoadTimes.value.length} 个组件 |\n 最慢: {sortedComponentLoadTimes.value[0]?.duration || 0}ms |\n 最快: {sortedComponentLoadTimes.value[sortedComponentLoadTimes.value.length - 1]?.duration || 0}ms |\n 平均: {componentLoadTimes.value.length ? Math.round(componentLoadTimes.value.reduce((sum, item) => sum + item.duration, 0) / componentLoadTimes.value.length) : 0}ms\n </div>\n </div>\n )}\n </div>\n )}\n {RenderForm()}\n {slots.operation ? <ElFormItem>{slots.operation()}</ElFormItem> : undefined}\n </Fragment>\n )\n }\n }}\n </ElForm>\n ) : (\n sortedSchema.value\n .filter((item) => !isDestroy(item) && shouldRenderItem(item))\n .map((item) => {\n return (\n <div v-show={!isHidden(item)}>\n <ZnFormItem\n ref={(el: any) => (unref(znFormItemRefs)[item.prop] = el)}\n isView={props.isView}\n column={item}\n v-model={model.value}\n style={getComponentWidth(item)}\n />\n </div>\n )\n })\n )\n }\n\n // 渲染 ELForm\n const RenderForm = () => {\n const { useCol, rowProps } = unref(getProps)\n // 如果需要栅格,需要包裹 ElCol\n return useCol ? (\n // 默认 gutter 20,可以被传来的 rowProps 替换\n <ElRow gutter={20} {...rowProps} style=\"width: 100%\">\n {renderFormItemWrap()}\n </ElRow>\n ) : (\n renderFormItemWrap()\n )\n }\n\n // 渲染 FormItem 上一层\n const renderFormItemWrap = () => {\n const { useCol, rowProps } = unref(getProps)\n\n return sortedSchema.value\n .filter((item) => !isDestroy(item) && shouldRenderItem(item))\n .map((item) => {\n // 如果有 title\n const el = hyphenToCamelCase(item.el) || ''\n const useDivider = el === ComponentNameEnum.EL_DIVIDER\n const Component = componentMap[el] as ReturnType<typeof defineComponent>\n\n return useDivider ? (\n <Fragment>\n <Component {...item.props}>\n <span style={getTitleFontStyle(item)}>{parseLabel(item.label)}</span>\n </Component>\n </Fragment>\n ) : useCol ? (\n // 如果需要栅格,需要包裹 ElCol\n <ElCol {...setGridProp({ ...rowProps?.col, ...item.col })} v-show={!isHidden(item)}>\n {renderFormItem(item)}\n </ElCol>\n ) : (\n renderFormItem(item)\n )\n })\n }\n\n // 存储每一个 ElFormItem 实例\n const formItemComponentsRef = ref<Record<string, FormItemInstance>>({})\n\n // 存储表单组件实例\n const znFormItemRefs = shallowRef<Record<string, InstanceType<typeof ZnFormItem>>>({})\n\n // 渲染 FormItem\n const renderFormItem = (item: ZnFormSchemaProps) => {\n let rules = item.formItem?.rules || null\n if (props.isView && props.disableRulesInView && item.formItem || isHidden(item) ) {\n //如果查看或者是隐藏的item,则去除表单验证信息\n rules = null\n }\n\n return item.hiddenLabel ? (\n <ZnFormItem\n ref={(el: any) => (unref(znFormItemRefs)[item.prop] = el)}\n isView={props.isView}\n column={item}\n v-model={model.value}\n style={getComponentWidth(item)}\n />\n ) : (\n <ElFormItem\n v-show={!isHidden(item)}\n ref={(el: any) => (unref(formItemComponentsRef)[item.prop] = el)}\n {...(item.formItem || {})}\n prop={item.prop}\n rules={rules}\n label={parseLabel(item.label)}>\n <ZnFormItem\n ref={(el: any) => (unref(znFormItemRefs)[item.prop] = el)}\n isView={props.isView}\n column={item}\n v-model={model.value}\n style={getComponentWidth(item)}\n />\n </ElFormItem>\n )\n }\n\n type ProFormEmits = {\n register: [proFormRef?: ComponentPublicInstance | null | any, elFormRef?: FormInstance]\n validate: [prop: FormItemProp, isValid: boolean, message: string] // ElForm 自带的事件\n }\n\n export type ProFormOnEmits = ProFormEmits\n\n // 定义 emit 事件\n const emits = defineEmits([\"register\", \"validate\"])\n\n onMounted(() => {\n emits('register', unref(elFormRef)?.$parent, unref(elFormRef))\n })\n\n onUnmounted(() => {\n // 清理定时器\n if (loadingTimer.value) {\n clearInterval(loadingTimer.value)\n loadingTimer.value = null\n }\n })\n\n // 设置 form 的值\n const setValues = (data: Record<string, any> = {}) => {\n model.value = Object.assign(unref(model), data)\n }\n\n // 设置 ProForm 组件的 props\n const setProps = (props: Partial<ZnFormProps> = {}) => {\n mergeProps.value = Object.assign(unref(mergeProps), props)\n }\n\n // 设置 schema\n const setSchema = (schemaSet: FormSetProps[]) => {\n const { schema } = unref(getProps)\n for (const v of schema) {\n for (const item of schemaSet) {\n if (v.prop === item.prop) {\n setFormProp(v, item.field, item.value)\n }\n }\n }\n }\n\n // 添加 schema\n const addSchema = (formSchema: any, prop?: number | string, position: 'before' | 'after' = 'after') => {\n const { schema } = unref(getProps) // 获取 schema 数组\n const schemaCopy = [...schema]\n if (isString(prop)) {\n // 如果传入的是一个 prop 名称\n schemaCopy.forEach((s, i) => {\n // 遍历 schema,找到对应的 prop\n if (s.prop === prop) {\n // 根据 position 决定插入到前或后\n position === 'after' ? schema.splice(i + 1, 0, formSchema) : schema.splice(i, 0, formSchema)\n }\n })\n } else if (prop !== undefined) {\n // 如果传入的是某个位置(索引)\n schema.splice(prop, 0, formSchema)\n } else {\n // 如果没有指定位置,默认添加到末尾\n schema.push(formSchema)\n }\n\n // 添加新schema后,清除缓存\n clearCache()\n\n // 如果使用懒加载,将新添加的项标记为已渲染\n if (props.lazyLoad && formSchema.prop) {\n renderedItems.value.add(formSchema.prop)\n }\n }\n\n // 删除 schema\n const delSchema = (prop: string) => {\n const { schema } = unref(getProps)\n\n const index = schema.findIndex((item) => item.prop === prop)\n if (index > -1) {\n schema.splice(index, 1)\n // 删除schema后,清除缓存\n clearCache()\n\n // 如果使用懒加载,从已渲染集合中移除\n if (props.lazyLoad) {\n renderedItems.value.delete(prop)\n }\n }\n }\n\n // 获取表单组件实例\n const getComponentExpose = (prop: string) => {\n return unref(znFormItemRefs)[prop]?.formComponentRef\n }\n\n // 获取 formItem 实例\n const getFormItemExpose = (prop: string) => {\n return unref(formItemComponentsRef)[prop]\n }\n\n defineExpose({\n form: elFormRef,\n model,\n setValues,\n setProps,\n setSchema,\n addSchema,\n delSchema,\n getComponentExpose,\n getFormItemExpose,\n getComponentWidth,\n parseLabel,\n isDestroy,\n isHidden\n })\n\n</script>\n\n"],"names":["_isSlot","s","_isVNode","Object","prototype","toString","call","PERFORMANCE_CONFIG","PerformanceCache","__name","this","cache","Map","timers","hitCount","missCount","has","key","item","get","Date","now","timestamp","delete","value","undefined","set","size","firstKey","keys","next","clearTimeout","timer","setTimeout","clear","forEach","getStats","hitRate","createDebouncer","fn","delay","createModelHasher","lastModel","lastHash","model","sort","hash","length","String","slice","props","__props","_useModel","elFormRef","shallowRef","mergeProps","ref","getProps","computed","propsObj","assign","unref","enumMap","enumMapProps","renderedItems","Set","pendingItems","componentLoadReady","loadingTimer","updateTrigger","componentLoadTimes","performanceCache","debouncer","modelHasher","clearCache","renderCount","lastRenderTime","avgRenderTime","cacheStats","setEnumMap","getCurrentInstance","async","enum","enumValue","prop","useCacheEnum","enumMapConst","data","result","Array","isArray","console","warn","nextTick","schemaItem","schema","find","initDefaultValue","error","provide","formEnumMapKey","defaultValue","fieldNames","formConst","getFormProp","defaultValueConst","setFormProp","enumData","filter","isDefault","cascadeEnum","el","subProp","subEnum","hyphenToCamelCase","ComponentNameEnum","EL_SELECT","watch","newVal","subEnumData","formEnum","subValue","immediate","isHidden","hidden","cacheKey","isDestroy","destroy","deleteObjProperty","modelHash","parseLabel","label","sortedSchema","markRaw","a","b","order","lazyLoadStatus","total","loaded","pending","startTime","endTime","duration","currentLoadingTime","sortedComponentLoadTimes","startComponentLazyLoad","lazyLoadDebug","clearInterval","setInterval","log","componentDelayLoad","totalItems","toLocaleTimeString","initialItems","Math","min","initialLoadCount","add","some","i","startLazyLoading","batchIndex","loadNextBatch","batchStartTime","itemsToLoad","batchLoadCount","index","itemStartTime","itemEndTime","push","lazyLoadDelay","slowestComponents","map","avgDuration","round","reduce","sum","shouldRenderItem","lazyLoad","keysToDelete","includeModelKeys","dynamicModel","renderUseProp","modelRef","isView","deep","oldVal","getSchemaList","getComponentWidth","width","componentProps","elFormProps","style","getPx","fixWidth","inline","getTitleFontStyle","labelSize","fontSize","fontWeight","setGridProp","col","span","xs","sm","md","lg","xl","slots","useSlots","RenderFormWrap","onlyRenderComponent","_withDirectives","_createVNode","ZnFormItem","znFormItemRefs","column","modelValue","$event","_vShow","ElForm","_mergeProps","class","onSubmit","e","preventDefault","default","_slot","_Fragment","_createTextVNode","RenderForm","operation","ElFormItem","_slot2","useCol","rowProps","ElRow","gutter","renderFormItemWrap","_slot3","useDivider","EL_DIVIDER","Component","componentMap","ElCol","renderFormItem","formItemComponentsRef","rules","formItem","disableRulesInView","hiddenLabel","emits","__emit","onMounted","$parent","onUnmounted","setValues","__expose","form","setProps","setSchema","schemaSet","v","field","addSchema","formSchema","position","schemaCopy","isString","splice","delSchema","findIndex","getComponentExpose","formComponentRef","getFormItemExpose"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../../../packages/components/znForm/src/interface/index.ts"],"sourcesContent":["import type {\n AutocompleteProps,\n CascaderProps,\n CheckboxGroupProps,\n CheckboxProps,\n ColorPickerProps,\n ColProps,\n DatePickerProps,\n DividerProps,\n FormItemProps,\n FormProps,\n InputNumberProps,\n InputProps,\n RadioButtonProps,\n RadioGroupProps,\n RadioProps,\n RateProps,\n SliderProps,\n SwitchProps,\n TimePickerDefaultProps,\n TransferProps,\n UploadProps\n} from 'element-plus'\nimport type { SelectProps } from 'element-plus/es/components/select/src/select'\nimport type { SelectProps as SelectV2Props } from 'element-plus/es/components/select-v2/src/defaults'\nimport type { TimeSelectProps } from 'element-plus/es/components/time-select/src/time-select'\n// import type { TreeProps } from 'element-plus/es/components/tree-v2/src/types'\nimport type { ComponentPublicInstance, ComputedRef, ExtractPropTypes, InjectionKey, Ref, VNode } from 'vue'\nimport { type ZnFormProps } from '../index.vue'\nimport type ProForm from '../index.vue'\n// import { type TreeProps as CustomTreeProps } from '../components/Tree.vue'\n\n/**\n * 组件内置导入需要\n */\nexport enum ComponentNameEnum {\n EL_INPUT = 'ElInput',\n EL_INPUT_NUMBER = 'ElInputNumber',\n EL_SELECT = 'ElSelect',\n EL_SELECT_V2 = 'ElSelectV2',\n EL_TREE = 'ElTree',\n EL_TREE_SELECT = 'ElTreeSelect',\n EL_CASCADER = 'ElCascader',\n EL_DATE_PICKER = 'ElDatePicker',\n EL_TIME_PICKER = 'ElTimePicker',\n EL_TIME_SELECT = 'ElTimeSelect',\n EL_SWITCH = 'ElSwitch',\n EL_SLIDER = 'ElSlider',\n EL_RADIO = 'ElRadio',\n EL_RADIO_GROUP = 'ElRadioGroup',\n EL_RADIO_BUTTON = 'ElRadioButton',\n EL_Checkbox = 'ElCheckbox',\n EL_CHECKBOX_GROUP = 'ElCheckboxGroup',\n EL_CHECKBOX_BUTTON = 'ElCheckboxButton',\n EL_AUTOCOMPLETE = 'ElAutocomplete',\n EL_RATE = 'ElRate',\n EL_COLOR_PICKER = 'ElColorPicker',\n EL_TRANSFER = 'ElTransfer',\n EL_DIVIDER = 'ElDivider',\n EL_UPLOAD = 'ElUpload',\n WANG_EDITOR = 'WangEditor',\n TINYMCE = 'Tinymce',\n USER_SELECT = 'UserSelect',\n ICON_PICKER = 'IconPicker',\n TEST = 'Test',\n ZN_CHART = 'ZnChart'\n}\n\n/**\n * el 字面量\n */\nexport type PascalCaseComponentName = keyof typeof ComponentNameEnum extends infer K\n ? K extends string\n ? K extends `${infer A}_${infer B}`\n ? K extends `${infer A}_${infer B}_${infer C}`\n ? `${Capitalize<Lowercase<A>>}${Capitalize<Lowercase<B>>}${Capitalize<Lowercase<C>>}`\n : `${Capitalize<Lowercase<A>>}${Capitalize<Lowercase<B>>}`\n : Capitalize<Lowercase<K>>\n : never\n : never\n\n/**\n * el 字面量\n */\nexport type HyphenCaseComponentName = keyof typeof ComponentNameEnum extends infer K\n ? K extends string\n ? K extends `${infer A}_${infer B}`\n ? K extends `${infer A}_${infer B}_${infer C}`\n ? `${Lowercase<A>}-${Lowercase<B>}-${Lowercase<C>}`\n : `${Lowercase<A>}-${Lowercase<B>}`\n : Lowercase<K>\n : never\n : never\n\n/**\n * el 字面量\n */\nexport type FormType = PascalCaseComponentName | HyphenCaseComponentName\n\n/**\n * 基本类型\n */\nexport type ValueType = string | number | boolean | any[]\n\n/**\n * 字典数据类型\n */\nexport interface FormEnumProps {\n /**\n * 选项框显示的文字\n */\n label?: string\n /**\n * 选项框值\n */\n value?: ValueType\n /**\n * 是否禁用此选项\n */\n disabled?: boolean\n /**\n * 为树形选择时,可以通过 children 属性指定子选项\n */\n children?: FormEnumProps[]\n [key: string]: any\n}\n\nexport interface ZnElFormProps extends Partial<FormProps> {\n fixWidth?: boolean\n width?: number | string\n style?: Record<string, any>\n}\n\n/**\n * 自定义字典的 key\n */\nexport interface FormFieldNamesProps {\n label: string\n value: string\n disabled?: string\n children?: string\n}\n\n/**\n * 自定义 render 的参数类型\n */\nexport interface FormRenderScope {\n model: Record<string, any>\n data: ValueType\n enumData: Record<string, any>\n}\n\n/**\n * setSchema 函数的参数类型\n */\nexport interface FormSetProps {\n prop: string\n field: string\n value: ValueType\n}\n\n/**\n * 表单配置项\n */\nexport interface ZnFormSchemaProps<T = any> {\n /**\n * ElCol Props\n */\n col?: Partial<ColProps>\n /**\n * ElFormItem props\n */\n formItem?: Partial<FormItemProps>\n /**\n * 表单组件 Props\n */\n prop: string\n /**\n * ElFormItem 的 label 属性\n */\n label: ValueType | ((model: T) => any)\n /**\n * 使用的表单组件名\n */\n el?: FormType\n /**\n * 字典编码,如何使用字典编码,则枚举值根据code从字典中去除,无需再设置enum\n */\n dictCode?: string\n /**\n * 字典数据,如果 enum 是接口调用,那么可以指定哪个 key 获取 enum 数据,默认返回的数据作为 enum\n */\n enum?:\n | FormEnumProps[]\n | ((model: T, enumMap: Map<string, Record<string, any>>) => Promise<any>)\n | ComputedRef<FormEnumProps[]>\n | ((params?: any, enumData?: any) => Promise<any>)\n /**\n * 是否缓存 enum 数据\n * @default true\n */\n useCacheEnum?: boolean\n /**\n * 从 enumMap 中获取其他的 enum 数据\n */\n useEnumMap?: string | ((enumMap: Map<string, Record<string, any>>) => Record<string, any>)\n /**\n * 搭配 useEnumMap 使用,指定 enumMap 的 key\n */\n enumKey?: string\n /**\n * 字典指定 label && value && children 的 key 值\n * @default Object { label: \"label\", value: \"value\", children: \"children\" }\n */\n fieldNames?: FormFieldNamesProps\n /**\n * 级联表单的 prop\n */\n subProp?: string\n /**\n * 级联表单的 enum\n */\n subEnum?: FormEnumProps[] | ((params?: any, enumData?: any) => Promise<any> | FormEnumProps[])\n /**\n * 根据 element plus 官方文档来传递,该属性所有值会透传到表单组件\n */\n props?:\n | InputProps\n | InputNumberProps\n | ExtractPropTypes<typeof SelectProps>\n | ExtractPropTypes<typeof SelectV2Props>\n // | TreeProps\n // | CustomTreeProps\n | CascaderProps\n | DatePickerProps\n | TimePickerDefaultProps\n | TimeSelectProps\n | SwitchProps\n | SliderProps\n | RadioProps\n | RadioGroupProps\n | RadioButtonProps\n | CheckboxProps\n | CheckboxGroupProps\n | AutocompleteProps\n | RateProps\n | ColorPickerProps\n | TransferProps\n | DividerProps\n | UploadProps\n | any\n /**\n * 表单排序(从大到小)\n */\n order?: number\n /**\n * 表单属性的默认值\n */\n defaultValue?: ValueType | ((model: T, enumMap: Map<string, Record<string, any>>) => ValueType | any) | ComputedRef<ValueType>\n /**\n * 表单组件宽度\n */\n width?: string | number\n /**\n * 自定义搜索内容渲染(tsx 语法)\n */\n render?: (scope: FormRenderScope) => VNode\n /** 当isView时的自定义渲染 */\n renderInView?: (scope: FormRenderScope) => VNode\n /**\n * 自定义 render 时候,需要填写 render 里表单组件使用 v-model 绑定的 prop\n */\n renderUseProp?: string[]\n /**\n * 是否销毁表单,true 销毁,false 不销毁,类似于 v-if\n * @default false\n */\n destroy?: boolean | ((model: T) => boolean)\n /**\n * 是否隐藏表单,true 隐藏,false 不隐藏,类似于 v-show\n * @default false\n */\n hidden?: boolean | ((model: T) => boolean)\n /**\n * 是否在查看时隐藏表单,true 隐藏,false 不隐藏,类似于 v-show\n * @default false\n */\n hiddenInView?: boolean | ((model: T) => boolean)\n /**\n * 是否隐藏el-form-item的label\n * @default false\n */\n hiddenLabel?: boolean | ((model: T) => boolean)\n /**\n * 是否禁用表单,true 禁用,false 不禁用\n * @default false\n */\n disabled?: boolean | ((model: T) => boolean)\n /**\n * 表单绑定的值格式,针对 Enum Value 是 string \"1\",而值是 number 1 导致编辑时无法匹配问题\n * @default default\n */\n valueFormat?: 'default' | 'string' | 'number' | 'boolean'\n /**\n * label 标题大小,默认 default。仅 el 为 el-divider | ElDivider 生效\n * @default default\n */\n labelSize?: 'default' | 'small' | 'large'\n /**\n * 表单组件的插槽\n */\n slots?: any\n /**\n * 其他拓展\n */\n [key: string]: any\n}\n\nexport type ProFormInstance = Omit<InstanceType<typeof ProForm>, keyof ComponentPublicInstance | keyof ZnFormProps>\n\n/**\n * provide 类型\n */\nexport const formEnumMapKey: InjectionKey<Ref<Map<string, Record<string, any>[]>>> = Symbol('EnumMap')\n"],"names":["ComponentNameEnum","formEnumMapKey","Symbol"],"mappings":"AAmCY,IAAAA,GAAAA,IACVA,EAAW,SAAA,UACXA,EAAkB,gBAAA,gBAClBA,EAAY,UAAA,WACZA,EAAe,aAAA,aACfA,EAAU,QAAA,SACVA,EAAiB,eAAA,eACjBA,EAAc,YAAA,aACdA,EAAiB,eAAA,eACjBA,EAAiB,eAAA,eACjBA,EAAiB,eAAA,eACjBA,EAAY,UAAA,WACZA,EAAY,UAAA,WACZA,EAAW,SAAA,UACXA,EAAiB,eAAA,eACjBA,EAAkB,gBAAA,gBAClBA,EAAc,YAAA,aACdA,EAAoB,kBAAA,kBACpBA,EAAqB,mBAAA,mBACrBA,EAAkB,gBAAA,iBAClBA,EAAU,QAAA,SACVA,EAAkB,gBAAA,gBAClBA,EAAc,YAAA,aACdA,EAAa,WAAA,YACbA,EAAY,UAAA,WACZA,EAAc,YAAA,aACdA,EAAU,QAAA,UACVA,EAAc,YAAA,aACdA,EAAc,YAAA,aACdA,EAAO,KAAA,OACPA,EAAW,SAAA,UA9BDA,IAAAA,GAAA,CAAA,GAgSC,MAAAC,EAAwEC,OAAO"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../../../packages/components/znForm/src/interface/index.ts"],"sourcesContent":["import type {\n AutocompleteProps,\n CascaderProps,\n CheckboxGroupProps,\n CheckboxProps,\n ColorPickerProps,\n ColProps,\n DatePickerProps,\n DividerProps,\n FormItemProps,\n FormProps,\n InputNumberProps,\n InputProps,\n RadioButtonProps,\n RadioGroupProps,\n RadioProps,\n RateProps,\n SliderProps,\n SwitchProps,\n TimePickerDefaultProps,\n TransferProps,\n UploadProps\n} from 'element-plus'\nimport type { SelectProps } from 'element-plus/es/components/select/src/select'\nimport type { SelectProps as SelectV2Props } from 'element-plus/es/components/select-v2/src/defaults'\nimport type { TimeSelectProps } from 'element-plus/es/components/time-select/src/time-select'\n// import type { TreeProps } from 'element-plus/es/components/tree-v2/src/types'\nimport type { ComponentPublicInstance, ComputedRef, ExtractPropTypes, InjectionKey, Ref, VNode } from 'vue'\nimport type ProForm from '../index.vue'\n// import { type TreeProps as CustomTreeProps } from '../components/Tree.vue'\n\n/**\n * 组件内置导入需要\n */\nexport enum ComponentNameEnum {\n EL_INPUT = 'ElInput',\n EL_INPUT_NUMBER = 'ElInputNumber',\n EL_SELECT = 'ElSelect',\n EL_SELECT_V2 = 'ElSelectV2',\n EL_TREE = 'ElTree',\n EL_TREE_SELECT = 'ElTreeSelect',\n EL_CASCADER = 'ElCascader',\n EL_DATE_PICKER = 'ElDatePicker',\n EL_TIME_PICKER = 'ElTimePicker',\n EL_TIME_SELECT = 'ElTimeSelect',\n EL_SWITCH = 'ElSwitch',\n EL_SLIDER = 'ElSlider',\n EL_RADIO = 'ElRadio',\n EL_RADIO_GROUP = 'ElRadioGroup',\n EL_RADIO_BUTTON = 'ElRadioButton',\n EL_Checkbox = 'ElCheckbox',\n EL_CHECKBOX_GROUP = 'ElCheckboxGroup',\n EL_CHECKBOX_BUTTON = 'ElCheckboxButton',\n EL_AUTOCOMPLETE = 'ElAutocomplete',\n EL_RATE = 'ElRate',\n EL_COLOR_PICKER = 'ElColorPicker',\n EL_TRANSFER = 'ElTransfer',\n EL_DIVIDER = 'ElDivider',\n EL_UPLOAD = 'ElUpload',\n WANG_EDITOR = 'WangEditor',\n TINYMCE = 'Tinymce',\n USER_SELECT = 'UserSelect',\n ICON_PICKER = 'IconPicker',\n TEST = 'Test',\n ZN_CHART = 'ZnChart'\n}\n\n/**\n * el 字面量\n */\nexport type PascalCaseComponentName = keyof typeof ComponentNameEnum extends infer K\n ? K extends string\n ? K extends `${infer A}_${infer B}`\n ? K extends `${infer A}_${infer B}_${infer C}`\n ? `${Capitalize<Lowercase<A>>}${Capitalize<Lowercase<B>>}${Capitalize<Lowercase<C>>}`\n : `${Capitalize<Lowercase<A>>}${Capitalize<Lowercase<B>>}`\n : Capitalize<Lowercase<K>>\n : never\n : never\n\n/**\n * el 字面量\n */\nexport type HyphenCaseComponentName = keyof typeof ComponentNameEnum extends infer K\n ? K extends string\n ? K extends `${infer A}_${infer B}`\n ? K extends `${infer A}_${infer B}_${infer C}`\n ? `${Lowercase<A>}-${Lowercase<B>}-${Lowercase<C>}`\n : `${Lowercase<A>}-${Lowercase<B>}`\n : Lowercase<K>\n : never\n : never\n\n/**\n * el 字面量\n */\nexport type FormType = PascalCaseComponentName | HyphenCaseComponentName\n\n/**\n * 基本类型\n */\nexport type ValueType = string | number | boolean | any[]\n\n/**\n * 字典数据类型\n */\nexport interface FormEnumProps {\n /**\n * 选项框显示的文字\n */\n label?: string\n /**\n * 选项框值\n */\n value?: ValueType\n /**\n * 是否禁用此选项\n */\n disabled?: boolean\n /**\n * 为树形选择时,可以通过 children 属性指定子选项\n */\n children?: FormEnumProps[]\n [key: string]: any\n}\n\nexport interface ZnElFormProps extends Partial<FormProps> {\n fixWidth?: boolean\n width?: number | string\n style?: Record<string, any>\n}\n\n/**\n * 自定义字典的 key\n */\nexport interface FormFieldNamesProps {\n label: string\n value: string\n disabled?: string\n children?: string\n}\n\n/**\n * 自定义 render 的参数类型\n */\nexport interface FormRenderScope {\n model: Record<string, any>\n data: ValueType\n enumData: Record<string, any>\n}\n\n/**\n * setSchema 函数的参数类型\n */\nexport interface FormSetProps {\n prop: string\n field: string\n value: ValueType\n}\n\n/**\n * 表单配置项\n */\nexport interface ZnFormSchemaProps<T = any> {\n /**\n * ElCol Props\n */\n col?: Partial<ColProps>\n /**\n * ElFormItem props\n */\n formItem?: Partial<FormItemProps>\n /**\n * 表单组件 Props\n */\n prop: string\n /**\n * ElFormItem 的 label 属性\n */\n label: ValueType | ((model: T) => any)\n /**\n * 使用的表单组件名\n */\n el?: FormType\n /**\n * 字典编码,如何使用字典编码,则枚举值根据code从字典中去除,无需再设置enum\n */\n dictCode?: string\n /**\n * 字典数据,如果 enum 是接口调用,那么可以指定哪个 key 获取 enum 数据,默认返回的数据作为 enum\n */\n enum?:\n | FormEnumProps[]\n | ((model: T, enumMap: Map<string, Record<string, any>>) => Promise<any>)\n | ComputedRef<FormEnumProps[]>\n | ((params?: any, enumData?: any) => Promise<any>)\n /**\n * 是否缓存 enum 数据\n * @default true\n */\n useCacheEnum?: boolean\n /**\n * 从 enumMap 中获取其他的 enum 数据\n */\n useEnumMap?: string | ((enumMap: Map<string, Record<string, any>>) => Record<string, any>)\n /**\n * 搭配 useEnumMap 使用,指定 enumMap 的 key\n */\n enumKey?: string\n /**\n * 字典指定 label && value && children 的 key 值\n * @default Object { label: \"label\", value: \"value\", children: \"children\" }\n */\n fieldNames?: FormFieldNamesProps\n /**\n * 级联表单的 prop\n */\n subProp?: string\n /**\n * 级联表单的 enum\n */\n subEnum?: FormEnumProps[] | ((params?: any, enumData?: any) => Promise<any> | FormEnumProps[])\n /**\n * 根据 element plus 官方文档来传递,该属性所有值会透传到表单组件\n */\n props?:\n | InputProps\n | InputNumberProps\n | ExtractPropTypes<typeof SelectProps>\n | ExtractPropTypes<typeof SelectV2Props>\n // | TreeProps\n // | CustomTreeProps\n | CascaderProps\n | DatePickerProps\n | TimePickerDefaultProps\n | TimeSelectProps\n | SwitchProps\n | SliderProps\n | RadioProps\n | RadioGroupProps\n | RadioButtonProps\n | CheckboxProps\n | CheckboxGroupProps\n | AutocompleteProps\n | RateProps\n | ColorPickerProps\n | TransferProps\n | DividerProps\n | UploadProps\n | any\n /**\n * 表单排序(从大到小)\n */\n order?: number\n /**\n * 表单属性的默认值\n */\n defaultValue?: ValueType | ((model: T, enumMap: Map<string, Record<string, any>>) => ValueType | any) | ComputedRef<ValueType>\n /**\n * 表单组件宽度\n */\n width?: string | number\n /**\n * 自定义搜索内容渲染(tsx 语法)\n */\n render?: (scope: FormRenderScope) => VNode\n /** 当isView时的自定义渲染 */\n renderInView?: (scope: FormRenderScope) => VNode\n /**\n * 自定义 render 时候,需要填写 render 里表单组件使用 v-model 绑定的 prop\n */\n renderUseProp?: string[]\n /**\n * 是否销毁表单,true 销毁,false 不销毁,类似于 v-if\n * @default false\n */\n destroy?: boolean | ((model: T) => boolean)\n /**\n * 是否隐藏表单,true 隐藏,false 不隐藏,类似于 v-show\n * @default false\n */\n hidden?: boolean | ((model: T) => boolean)\n /**\n * 是否在查看时隐藏表单,true 隐藏,false 不隐藏,类似于 v-show\n * @default false\n */\n hiddenInView?: boolean | ((model: T) => boolean)\n /**\n * 是否隐藏el-form-item的label\n * @default false\n */\n hiddenLabel?: boolean | ((model: T) => boolean)\n /**\n * 是否禁用表单,true 禁用,false 不禁用\n * @default false\n */\n disabled?: boolean | ((model: T) => boolean)\n /**\n * 表单绑定的值格式,针对 Enum Value 是 string \"1\",而值是 number 1 导致编辑时无法匹配问题\n * @default default\n */\n valueFormat?: 'default' | 'string' | 'number' | 'boolean'\n /**\n * label 标题大小,默认 default。仅 el 为 el-divider | ElDivider 生效\n * @default default\n */\n labelSize?: 'default' | 'small' | 'large'\n /**\n * 表单组件的插槽\n */\n slots?: any\n /**\n * 其他拓展\n */\n [key: string]: any\n}\n\nexport type ProFormInstance = Omit<InstanceType<typeof ProForm>, keyof ComponentPublicInstance>\n\n/**\n * provide 类型\n */\nexport const formEnumMapKey: InjectionKey<Ref<Map<string, Record<string, any>[]>>> = Symbol('EnumMap')\n"],"names":["ComponentNameEnum","formEnumMapKey","Symbol"],"mappings":"AAkCY,IAAAA,GAAAA,IACVA,EAAW,SAAA,UACXA,EAAkB,gBAAA,gBAClBA,EAAY,UAAA,WACZA,EAAe,aAAA,aACfA,EAAU,QAAA,SACVA,EAAiB,eAAA,eACjBA,EAAc,YAAA,aACdA,EAAiB,eAAA,eACjBA,EAAiB,eAAA,eACjBA,EAAiB,eAAA,eACjBA,EAAY,UAAA,WACZA,EAAY,UAAA,WACZA,EAAW,SAAA,UACXA,EAAiB,eAAA,eACjBA,EAAkB,gBAAA,gBAClBA,EAAc,YAAA,aACdA,EAAoB,kBAAA,kBACpBA,EAAqB,mBAAA,mBACrBA,EAAkB,gBAAA,iBAClBA,EAAU,QAAA,SACVA,EAAkB,gBAAA,gBAClBA,EAAc,YAAA,aACdA,EAAa,WAAA,YACbA,EAAY,UAAA,WACZA,EAAc,YAAA,aACdA,EAAU,QAAA,UACVA,EAAc,YAAA,aACdA,EAAc,YAAA,aACdA,EAAO,KAAA,OACPA,EAAW,SAAA,UA9BDA,IAAAA,GAAA,CAAA,GAgSC,MAAAC,EAAwEC,OAAO"}
@@ -0,0 +1,2 @@
1
+ import{withInstall as e}from"../../utils/install.mjs";import"./src/index.vue.mjs";import"./src/components/ZnFormV2Item.vue.mjs";export{ComponentNameEnum,formEnumMapKey}from"./src/interface/index.mjs";export{batchExecute,camelCaseToHyphen,checkFeatureSupport,createUniqueId,debounce,delay,deleteObjProperty,executeInIdle,getElementOffsetTop,getFormProp,getMemoryUsage,getObjectHash,getProp,getPx,handleNestProp,hyphenToCamelCase,isDeepEqual,isElementInViewport,isEmptyVal,isNumber,isObject,isResponsive,isShallowEqual,isString,setComponentSlots,setFormProp,setProp,throttle}from"./src/helper/index.mjs";export{useZnFormV2}from"./src/hooks/useZnFormV2.mjs";import t from"./src/index.vue2.mjs";export{default as ZnFormV2Item}from"./src/components/ZnFormV2Item.vue2.mjs";const o=e(t);export{o as ZnFormV2,o as default};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/znFormV2/index.ts"],"sourcesContent":["import { withInstall } from '../../utils/install'\nimport index from './src/index.vue'\n\nimport ZnFormV2Item from './src/components/ZnFormV2Item.vue'\n\nexport type { ZnFormV2Props, ProFormV2OnEmits } from './src/index.vue'\n\nexport * from './src/interface'\nexport * from './src/helper'\nexport { useZnFormV2 } from './src/hooks/useZnFormV2'\n\nexport { ZnFormV2Item }\n\nexport const ZnFormV2 = withInstall(index)\n\nexport default ZnFormV2\n"],"names":["ZnFormV2","withInstall","index"],"mappings":"+vBAaa,MAAAA,EAAWC,EAAYC"}
@@ -0,0 +1,2 @@
1
+ import e from"./Tree.vue2.mjs";export{e as default};
2
+ //# sourceMappingURL=Tree.vue.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tree.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import{defineComponent as e,useModel as l,ref as a,watch as d,unref as t,nextTick as o,createElementBlock as u,openBlock as c,Fragment as r,createCommentVNode as n,createBlock as s,createVNode as h,normalizeStyle as i,mergeProps as y,withCtx as p,renderSlot as m,mergeModels as k}from"vue";import{ElCheckbox as v,ElInput as f,ElTree as V}from"element-plus";var x=Object.defineProperty,b=(e,l)=>x(e,"name",{value:l,configurable:!0});const g={key:0};var q=e({name:"Tree",__name:"Tree",props:k({data:{type:Array,required:!0},nodeKey:{type:String,required:!1,default:" id"},checkValueType:{type:String,required:!1,default:"keys"},expandSelected:{type:Boolean,required:!1,default:!0},checkbox:{type:Boolean,required:!1,default:!1},search:{type:Boolean,required:!1,default:!1},select:{type:Boolean,required:!1,default:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const k=e,x=l(e,"modelValue"),q=a(!1),C=a(!1),K=a(!1),N=a(!0),_=a([]),T=a(""),B=a();d(q,(e=>{const l=t(B)?.store._getAllNodes();l?.forEach(e?e=>e.expanded=!0:e=>e.expanded=!1)})),d(C,(e=>{e?t(B)?.setCheckedNodes(k.data):t(B)?.setCheckedNodes([]),K.value=!1})),d(T,(e=>{t(B).filter(e)}));const S=b(((e,l)=>!e||l.label.includes(e)),"filterNode"),U=b(((e,l)=>{"nodes"===k.checkValueType?x.value=l.checkedNodes:x.value=l.checkedKeys,l.checkedKeys?.length?l.checkedKeys?.length===t(B)?.store._getAllNodes().length?(C.value=!0,K.value=!1):K.value=!0:(C.value=!1,K.value=!1)}),"handleCheck"),$=b((e=>{o((()=>{const{checkValueType:l,expandSelected:a,nodeKey:d}=k;"nodes"===l?(t(B)?.setCheckedNodes(e),a&&(_.value=e?.map((e=>e[d])))):(t(B)?.setCheckedKeys(e,!1),a&&(_.value=e))}))}),"setChecked");return d(x,(e=>e?.length&&$(e)),{immediate:!0}),(l,a)=>(c(),u(r,null,[e.checkbox?(c(),u("div",g,[h(t(v),{modelValue:q.value,"onUpdate:modelValue":a[0]||(a[0]=e=>q.value=e),label:"展开/折叠"},null,8,["modelValue"]),e.select?(c(),s(t(v),{key:0,modelValue:C.value,"onUpdate:modelValue":a[1]||(a[1]=e=>C.value=e),indeterminate:K.value,label:"全选/全不选"},null,8,["modelValue","indeterminate"])):n("v-if",!0),e.select?(c(),s(t(v),{key:1,modelValue:N.value,"onUpdate:modelValue":a[2]||(a[2]=e=>N.value=e),label:"父子联动"},null,8,["modelValue"])):n("v-if",!0)])):n("v-if",!0),e.search?(c(),s(t(f),{key:1,modelValue:T.value,"onUpdate:modelValue":a[3]||(a[3]=e=>T.value=e),style:i({width:l.$attrs.searchWidth||"98.5%"}),placeholder:l.$attrs.searchPlaceholder||"请输入关键词进行筛选"},null,8,["modelValue","style","placeholder"])):n("v-if",!0),h(t(V),y({ref_key:"treeRef",ref:B,"show-checkbox":e.select,onCheck:U,"filter-node-method":S,"check-strictly":!N.value,"default-expanded-keys":_.value},l.$attrs,{data:e.data,"node-key":e.nodeKey}),{default:p((({node:e,data:a})=>[m(l.$slots,"default",{node:e,data:a})])),_:3
2
+ /* FORWARDED */},16,["show-checkbox","check-strictly","default-expanded-keys","data","node-key"])],64
3
+ /* STABLE_FRAGMENT */))}});export{q as default};
4
+ //# sourceMappingURL=Tree.vue2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tree.vue2.mjs","sources":["../../../../../../../packages/components/znFormV2/src/components/Tree.vue"],"sourcesContent":["<template>\n <div v-if=\"checkbox\">\n <el-checkbox v-model=\"defaultExpandAll\" label=\"展开/折叠\" />\n <el-checkbox v-if=\"select\" v-model=\"isSelectAll\" :indeterminate=\"indeterminate\" label=\"全选/全不选\" />\n <el-checkbox v-if=\"select\" v-model=\"checkStrictly\" label=\"父子联动\" />\n </div>\n <el-input\n v-if=\"search\"\n v-model=\"filterText\"\n :style=\"{ width: $attrs.searchWidth || '98.5%' }\"\n :placeholder=\"($attrs.searchPlaceholder as string) || '请输入关键词进行筛选'\"\n />\n <el-tree\n ref=\"treeRef\"\n :show-checkbox=\"select\"\n @check=\"handleCheck\"\n :filter-node-method=\"filterNode\"\n :check-strictly=\"!checkStrictly\"\n :default-expanded-keys=\"defaultExpandedKeys\"\n v-bind=\"$attrs\"\n :data=\"data\"\n :node-key=\"nodeKey\"\n >\n <template #default=\"{ node, data }\">\n <slot :node=\"node\" :data=\"data\"></slot>\n </template>\n </el-tree>\n</template>\n<script setup lang=\"ts\">\nimport { nextTick, ref, unref, watch } from 'vue'\n\nimport { ElCheckbox, ElInput, ElTree } from 'element-plus'\n\ndefineOptions({ name: 'Tree' })\n\nexport interface TreeProps {\n data: any[]; // 树数据\n nodeKey?: string; // 每一个树节点 id\n checkValueType?: 'keys' | 'nodes'; // v-model 返回的格式,keys 返回选中的节点 nodeKey,nodes 为返回选中的节点\n expandSelected?: boolean; // 初始化就有默认选中的节点时,是否展开选中节点的所有父节点\n checkbox?: boolean; // 开启工具栏\n search?: boolean; // 开启搜索功能\n select?: boolean; // 开启全选/全不选功能\n}\n\nconst props = defineProps({\n data: { type: Array, required: true },\n nodeKey: { type: String, required: false, default: ' id' },\n checkValueType: { type: String, required: false, default: 'keys' },\n expandSelected: { type: Boolean, required: false, default: true },\n checkbox: { type: Boolean, required: false, default: false },\n search: { type: Boolean, required: false, default: false },\n select: { type: Boolean, required: false, default: true }\n})\n\nconst checkedList = defineModel<any[]>()\n\nconst defaultExpandAll = ref(false) // 展开/折叠状态\nconst isSelectAll = ref(false) // 全选/全不选状态\nconst indeterminate = ref(false) // 处于全选和全不选期间的状态\nconst checkStrictly = ref(true) // 父子联动\nconst defaultExpandedKeys = ref<string[]>([]) // 默认展开的节点 nodeKey\nconst filterText = ref('') // 搜索的文本\nconst treeRef = ref<InstanceType<typeof ElTree>>()\n\nwatch(defaultExpandAll, val => {\n const nodes = unref(treeRef)?.store._getAllNodes()\n // true 全展开,false 全折叠\n if (val) nodes?.forEach(item => (item.expanded = true))\n else nodes?.forEach(item => (item.expanded = false))\n})\n\nwatch(isSelectAll, val => {\n // true 全选,false 全不选\n if (val) unref(treeRef)?.setCheckedNodes(props.data)\n else unref(treeRef)?.setCheckedNodes([])\n // 关闭处于全选和全不选期间的状态\n indeterminate.value = false\n})\n\nwatch(filterText, val => {\n unref(treeRef)!.filter(val)\n})\n\n// 过滤搜索条件\nconst filterNode = (value: string, data: Record<string, any>) => {\n if (!value) return true\n return data.label.includes(value)\n}\n\nconst handleCheck = (_: any, selected: { checkedKeys: string[]; checkedNodes: Record<string, any>[] }) => {\n if (props.checkValueType === 'nodes') checkedList.value = selected.checkedNodes\n else checkedList.value = selected.checkedKeys\n\n // 如果都没选择任何节点,则状态关闭\n if (!selected.checkedKeys?.length) {\n isSelectAll.value = false\n indeterminate.value = false\n } else if (selected.checkedKeys?.length === unref(treeRef)?.store._getAllNodes().length) {\n // 如果选择的节点等于节点数量,则代表全选\n isSelectAll.value = true\n indeterminate.value = false\n } else indeterminate.value = true\n}\n\nconst setChecked = (val: any[]) => {\n // 不用 nextTick 导致获取不到 treeRef 实例\n nextTick(() => {\n const { checkValueType, expandSelected, nodeKey } = props\n if (checkValueType === 'nodes') {\n unref(treeRef)?.setCheckedNodes(val)\n if (expandSelected) defaultExpandedKeys.value = val?.map(item => item[nodeKey])\n } else {\n unref(treeRef)?.setCheckedKeys(val, false)\n if (expandSelected) defaultExpandedKeys.value = val\n }\n })\n}\n\nwatch(checkedList, val => val?.length && setChecked(val), { immediate: true })\n</script>\n"],"names":["props","__props","checkedList","_useModel","defaultExpandAll","ref","isSelectAll","indeterminate","checkStrictly","defaultExpandedKeys","filterText","treeRef","watch","val","nodes","unref","store","_getAllNodes","forEach","item","expanded","setCheckedNodes","data","value","filter","filterNode","__name","label","includes","handleCheck","_","selected","checkValueType","checkedNodes","checkedKeys","length","setChecked","nextTick","expandSelected","nodeKey","map","setCheckedKeys","immediate"],"mappings":"y3BA6CA,MAAMA,EAAQC,EAURC,EAAcC,EAAmBF,EAAA,cAEjCG,EAAmBC,GAAI,GACvBC,EAAcD,GAAI,GAClBE,EAAgBF,GAAI,GACpBG,EAAgBH,GAAI,GACpBI,EAAsBJ,EAAc,IACpCK,EAAaL,EAAI,IACjBM,EAAUN,IAEhBO,EAAMR,GAAyBS,IAC7B,MAAMC,EAAQC,EAAMJ,IAAUK,MAAMC,eAEpBH,GAAAI,QAAZL,EAA6BM,GAAAA,EAAKC,UAAW,EACpBD,GAAAA,EAAKC,UAAW,EAAM,IAGrDR,EAAMN,GAAoBO,IAEpBA,EAAWE,EAAAJ,IAAUU,gBAAgBrB,EAAMsB,MACpCP,EAAAJ,IAAUU,gBAAgB,IAErCd,EAAcgB,OAAQ,CAAA,IAGxBX,EAAMF,GAAmBG,IACjBE,EAAAJ,GAAUa,OAAOX,EAAG,IAItB,MAAAY,EAAcC,GAAA,CAAAH,EAAeD,KAC5BC,GACED,EAAKK,MAAMC,SAASL,IAFV,cAKbM,EAAeH,GAAA,CAAAI,EAAQC,KACE,UAAzB/B,EAAMgC,eAA4B9B,EAAYqB,MAAQQ,EAASE,aAC9D/B,EAAYqB,MAAQQ,EAASG,YAG7BH,EAASG,aAAaC,OAGhBJ,EAASG,aAAaC,SAAWpB,EAAMJ,IAAUK,MAAMC,eAAekB,QAE/E7B,EAAYiB,OAAQ,EACpBhB,EAAcgB,OAAQ,KACHA,OAAQ,GAN3BjB,EAAYiB,OAAQ,EACpBhB,EAAcgB,OAAQ,EAKK,GAZX,eAeda,KAAcvB,IAElBwB,GAAS,KACP,MAAML,eAAEA,EAAAM,eAAgBA,EAAgBC,QAAAA,GAAYvC,EAC7B,UAAnBgC,GACIjB,EAAAJ,IAAUU,gBAAgBR,GAC5ByB,MAAoCf,MAAQV,GAAK2B,KAAYrB,GAAAA,EAAKoB,QAEtExB,EAAMJ,IAAU8B,eAAe5B,GAAK,GAChCyB,MAAoCf,MAAQV,GAAA,GAEnD,GAXgB,qBAcbD,EAAAV,GAAoBW,GAAAA,GAAKsB,QAAUC,EAAWvB,IAAM,CAAE6B,WAAW;;"}
@@ -0,0 +1,2 @@
1
+ import m from"./ZnFormV2Item.vue2.mjs";export{m as default};
2
+ //# sourceMappingURL=ZnFormV2Item.vue.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZnFormV2Item.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import{defineComponent as e,useModel as l,computed as o,inject as n,ref as r,unref as t,markRaw as u,createVNode as a,createTextVNode as s,resolveComponent as i,h as m,createElementBlock as c,openBlock as d,createCommentVNode as p,toDisplayString as y,createElementVNode as f,Fragment as g,createBlock as E,normalizeStyle as _,mergeProps as L,mergeModels as b}from"vue";import"./Tree.vue.mjs";import{hyphenToCamelCase as h,getFormProp as v,setFormProp as R}from"../helper/index.mjs";import{getComponent as V}from"../helper/componentMap.mjs";import{formEnumMapKey as $,ComponentNameEnum as C}from"../interface/index.mjs";import{useRenderCheckbox as w}from"./useRenderCheckbox.mjs";import{useRenderComponent as D}from"./useRenderComponent.mjs";import{useRenderRadio as S}from"./useRenderRadio.mjs";import{useRenderSelect as I}from"./useRenderSelect.mjs";import{useLocalStorage as T}from"@vueuse/core";import M from"./Tree.vue2.mjs";var O=Object.defineProperty,j=(e,l)=>O(e,"name",{value:l,configurable:!0});const z={key:1,style:{display:"flex","align-items":"center","min-height":"32px",opacity:"0.5"}},k={style:{color:"#999","font-size":"12px"}};var F=e({name:"ZnFormV2Item",__name:"ZnFormV2Item",props:b({column:{type:Object,required:!0},style:{required:!1},isView:{type:Boolean,skipCheck:!0,required:!1,default:!1},isLazyLoading:{type:Boolean,required:!1,default:!1},isReady:{type:Boolean,required:!1,default:!0}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(b){const O=b,F=T("znyg",{dictMap:{}}),P=l(b,"modelValue"),U=new Map,x=o((()=>{const{dictCode:e}=O.column;let l=O.column.fieldNames?.label??"label",o=O.column.fieldNames?.value??"value";return e&&(l="name",o="code"),{label:l,value:o,children:O.column.fieldNames?.children??"children",disabled:O.column.fieldNames?.disabled??"disabled"}})),N=n($,r(new Map)),A=o((()=>O.column.enum)),Y=o((()=>{const{useEnumMap:e,enumKey:l,prop:o,el:n,dictCode:r}=O.column,u=t(N),a=t(A);let s;if(r&&F&&F.value?.dictMap&&(s=F.value.dictMap[r?.toString()]??[]),e)if("function"==typeof e)s=e(u);else{const o=u.get(e);s=o?l?o[l]||[]:o:[]}if(!s)if(Array.isArray(a)&&a.length>0)s=a;else{let e=u.get(o);s=e?h(n)===C.EL_SELECT_V2?e.map((e=>({...e,label:e[t(x).label],value:e[t(x).value]}))):l?e[l]||[]:e:[]}return s||[]})),B=o((()=>{const e=t(x).label,l=t(x).value,o=t(x).children,n=h(O.column?.el);let r=O.column.props??{};const u=`formProps_${n}_${JSON.stringify(r)}_${e}_${l}_${o}`;if(U.has(u))return U.get(u);let a={...r};return n===C.EL_TREE_SELECT&&(a={...a,props:{...a.props,label:e,children:o},nodeKey:l}),n===C.EL_CASCADER&&(a={...a,props:{...a.props,label:e,value:l,children:o}}),n===C.EL_DATE_PICKER&&("datetime"===a.type&&(a={valueFormat:"YYYY-MM-DD HH:mm:ss",...a}),a=(a.type,{valueFormat:"YYYY-MM-DD",...a})),n===C.EL_TIME_PICKER&&(a={valueFormat:"HH:mm:ss",...a}),U.set(u,a),a})),q=o((()=>{const{props:{type:e,isRange:l,placeholder:o,notDefaultPlaceholder:n}={},el:r}=O.column?.props?O.column:{props:{},el:O.column?.el},t=`placeholder_${r}_${e}_${l}_${o}_${n}`;if(U.has(t))return U.get(t);let u;if(!["datetimerange","daterange","monthrange"].includes(e)&&!l||n){u={placeholder:o??(h(r)?.includes(C.EL_INPUT)?"请输入":"请选择")}}else u={rangeSeparator:"至",startPlaceholder:"开始时间",endPlaceholder:"结束时间"};return U.set(t,u),u})),H=o((()=>{const{props:{clearable:e}={},defaultValue:l}=O.column;return e??null==l})),K=o((()=>{const{render:e,renderInView:l}=O.column,o=t(O.isView);if(O.isLazyLoading&&!O.isReady)return console.log(`[ZnFormV2Item Debug] ${O.column.prop} lazy loading not ready, deferring custom render`),!1;if(console.log(`[ZnFormV2Item Debug] ${O.column.prop}:`,{render:!!e,renderInView:!!l,isView:o,el:O.column.el,isLazyLoading:O.isLazyLoading,isReady:O.isReady}),o){const o=!(!l&&!e);return console.log(`[ZnFormV2Item Debug] ${O.column.prop} shouldUseCustomRender in view mode:`,o),o}const n=!!e;return console.log(`[ZnFormV2Item Debug] ${O.column.prop} shouldUseCustomRender in edit mode:`,n),n})),Z=j((()=>{const{disabled:e}=O.column;if("boolean"==typeof e)return e;if("function"==typeof e){const l=`disabled_${O.column.prop}_${JSON.stringify(t(P))}`;if(U.has(l))return U.get(l);const o=e(t(P));return U.set(l,o),o}return!1}),"isDisabled"),G=u(e({name:"RenderSlots",props:["style","column","isView"],setup:e=>()=>{if(O.isLazyLoading&&!O.isReady)return console.log(`[RenderSlots Debug] ${e.column.prop} lazy loading not ready, showing placeholder`),a("div",{style:"min-height: 32px; opacity: 0.5;"},[s("Loading...")]);const{render:l,renderInView:o}=e.column,n=t(e.isView);console.log(`[RenderSlots Debug] ${e.column.prop}:`,{render:!!l,renderInView:!!o,isView:n,isLazyLoading:O.isLazyLoading,isReady:O.isReady});let r=null;if(r=n&&o||l,console.log(`[RenderSlots Debug] ${e.column.prop} selected renderFunction:`,!!r),!r)return null;const u={model:t(P),data:v(t(P),e.column.prop),enumData:t(Y)};try{const l=r(u);return console.log(`[RenderSlots Debug] ${e.column.prop} render result:`,l),l}catch(l){return console.error(`[RenderSlots Debug] ${e.column.prop} render error:`,l),null}}})),J=j((()=>{const e=v(t(P),O.column.prop),l=h(O.column.el);if(l!==C.EL_SELECT&&l!==C.EL_SELECT_V2)return e;const o=t(x),n=t(Y);if(O.column.props?.multiple){return n.filter((l=>e?.includes(l[o.value]))).map((e=>e[o.label])).join(",")}{const l=n.find((l=>l[o.value]===e));return l?l[o.label]:e}}),"getShowValue"),X=u(e({name:"RenderElComponents",props:["column"],setup:e=>()=>{if(t(O.isView))return a("span",null,[J()]);const l=e.column.el,o=h(l);let n=V(l);if(!n&&o&&(n=V(o)),!n)return console.warn(`未找到组件: ${l} (也尝试了 ${o})`),null;switch(o){case C.EL_SELECT:case C.EL_SELECT_V2:return I(n,t(P),e.column,t(B),t(q),t(H),Z(),t(Y),t(x));case C.EL_RADIO_GROUP:case C.EL_RADIO:case C.EL_RADIO_BUTTON:return S(n,t(P),e.column,t(B),Z(),t(Y),t(x));case C.EL_CHECKBOX_GROUP:case C.EL_Checkbox:case C.EL_CHECKBOX_BUTTON:return w(n,t(P),e.column,t(B),Z(),t(Y),t(x));default:return D(n,t(P),e.column,{...t(B),...t(q),clearable:t(H),disabled:Z()})}}})),W=u(e({name:"RenderComponent",props:["style","column"],setup:e=>()=>{const{el:l}=e.column;try{const o=i(l);return o?m(o,{modelValue:v(t(P),e.column.prop),"onUpdate:modelValue":j((l=>R(t(P),e.column.prop,l)),"onUpdate:modelValue"),...t(B),...t(q),clearable:t(H),disabled:Z(),style:e.style}):(console.warn(`未找到自定义组件: ${l}`),null)}catch(e){return console.error(`渲染自定义组件失败: ${l}`,e),null}}}));return(e,l)=>(d(),c("div",null,[p(" 调试信息 "),p("v-if",!0),p(" 懒加载占位符 "),b.isLazyLoading&&!b.isReady?(d(),c("div",z,[f("span",k,y(b.column.label||b.column.prop)+" 加载中...",1
2
+ /* TEXT */)])):(d(),c(g,{key:2},[K.value?(d(),E(t(G),{key:0,style:_(b.style),column:b.column,"is-view":b.isView},null,8,["style","column","is-view"])):t(h)(b.column.el)===t(C).EL_TREE?(d(),E(M,L({key:1,data:Y.value,"model-value":t(v)(P.value,b.column.prop),"onUpdate:modelValue":l[0]||(l[0]=e=>t(R)(P.value,b.column.prop,e))},{...B.value}),null,16,["data","model-value"])):t(h)(b.column.el)?.startsWith("El")?(d(),E(t(X),{key:2,column:b.column},null,8,["column"])):(d(),E(t(W),{key:3,style:_(b.style),column:b.column},null,8,["style","column"]))],64
3
+ /* STABLE_FRAGMENT */))]))}});export{F as default};
4
+ //# sourceMappingURL=ZnFormV2Item.vue2.mjs.map