@dt-frames/ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/README.md +15 -0
  2. package/es/assets/app-antd-dark-theme-style.e3b0c442.css +0 -0
  3. package/es/assets/app-theme-style.e3b0c442.css +0 -0
  4. package/es/assets/data/icon.d.ts +4 -0
  5. package/es/assets/data/icon.ts +69 -0
  6. package/es/assets/data/icon11.ts +69 -0
  7. package/es/assets/data/icons/actions.d.ts +1 -0
  8. package/es/assets/data/icons/actions.ts +427 -0
  9. package/es/assets/data/icons/code.d.ts +1 -0
  10. package/es/assets/data/icons/code.ts +10 -0
  11. package/es/assets/data/icons/commuticate.d.ts +1 -0
  12. package/es/assets/data/icons/commuticate.ts +190 -0
  13. package/es/assets/data/icons/currency.d.ts +1 -0
  14. package/es/assets/data/icons/currency.ts +46 -0
  15. package/es/assets/data/icons/devices.d.ts +1 -0
  16. package/es/assets/data/icons/devices.ts +128 -0
  17. package/es/assets/data/icons/edit.d.ts +1 -0
  18. package/es/assets/data/icons/edit.ts +165 -0
  19. package/es/assets/data/icons/file.d.ts +1 -0
  20. package/es/assets/data/icons/file.ts +104 -0
  21. package/es/assets/data/icons/math.d.ts +1 -0
  22. package/es/assets/data/icons/math.ts +53 -0
  23. package/es/assets/data/icons/message.d.ts +1 -0
  24. package/es/assets/data/icons/message.ts +75 -0
  25. package/es/assets/data/icons/navigate.d.ts +1 -0
  26. package/es/assets/data/icons/navigate.ts +181 -0
  27. package/es/assets/data/icons/other.d.ts +1 -0
  28. package/es/assets/data/icons/other.ts +333 -0
  29. package/es/assets/data/icons.d.ts +4 -0
  30. package/es/assets/data/icons.ts +58 -0
  31. package/es/assets/imgs/logo/logo.png +0 -0
  32. package/es/assets/locales/en_US.json +3 -0
  33. package/es/assets/locales/zh_CN.json +3 -0
  34. package/es/assets/style/index.less +10 -0
  35. package/es/assets/style/reset.less +20 -0
  36. package/es/assets/style/var.less +42 -0
  37. package/es/components/container/index.d.ts +3 -0
  38. package/es/components/container/src/bar.d.ts +14 -0
  39. package/es/components/container/src/scroll-bar.d.ts +93 -0
  40. package/es/components/container/src/scroll-container.d.ts +99 -0
  41. package/es/components/curd/index.d.ts +2 -0
  42. package/es/components/curd/src/components/dialog.d.ts +1494 -0
  43. package/es/components/curd/src/components/props.d.ts +33 -0
  44. package/es/components/curd/src/hooks/useCurd.d.ts +11 -0
  45. package/es/components/curd/src/types/curd.type.d.ts +19 -0
  46. package/es/components/excel/index.d.ts +2 -0
  47. package/es/components/excel/src/export2Excel.d.ts +3 -0
  48. package/es/components/forms/index.d.ts +5 -0
  49. package/es/components/forms/src/componentMap.d.ts +4 -0
  50. package/es/components/forms/src/components/formButton.d.ts +75 -0
  51. package/es/components/forms/src/components/formIcon.d.ts +2845 -0
  52. package/es/components/forms/src/components/formItem.d.ts +59 -0
  53. package/es/components/forms/src/components/radioButton.d.ts +33 -0
  54. package/es/components/forms/src/const/form.const.d.ts +7 -0
  55. package/es/components/forms/src/hooks/helper.d.ts +6 -0
  56. package/es/components/forms/src/hooks/useForm.d.ts +5 -0
  57. package/es/components/forms/src/hooks/useFormActions.d.ts +13 -0
  58. package/es/components/forms/src/hooks/useFormEvents.d.ts +26 -0
  59. package/es/components/forms/src/hooks/useFormValue.d.ts +3 -0
  60. package/es/components/forms/src/hooks/useFormValues.d.ts +14 -0
  61. package/es/components/forms/src/hooks/useLabelWidth.d.ts +35 -0
  62. package/es/components/forms/src/index.d.ts +186 -0
  63. package/es/components/forms/src/prop.d.ts +79 -0
  64. package/es/components/forms/src/types/form.type.d.ts +124 -0
  65. package/es/components/icons/index.d.ts +3 -0
  66. package/es/components/icons/pick-icon.d.ts +529 -0
  67. package/es/components/icons/src/pick-icon.d.ts +432 -0
  68. package/es/components/icons/src/svg-icon.d.ts +44 -0
  69. package/es/components/icons/svg-icon.d.ts +44 -0
  70. package/es/components/iframe/index.d.ts +2 -0
  71. package/es/components/iframe/src/index.d.ts +967 -0
  72. package/es/components/index.d.ts +14 -0
  73. package/es/components/modal/index.d.ts +3 -0
  74. package/es/components/modal/src/components/close-icon.d.ts +344 -0
  75. package/es/components/modal/src/components/modal-wrap.d.ts +236 -0
  76. package/es/components/modal/src/components/modal.d.ts +194 -0
  77. package/es/components/modal/src/components/modalFooter.d.ts +102 -0
  78. package/es/components/modal/src/hooks/useDrag.d.ts +7 -0
  79. package/es/components/modal/src/hooks/useFullScreen.d.ts +12 -0
  80. package/es/components/modal/src/hooks/useModal.d.ts +4 -0
  81. package/es/components/modal/src/index.d.ts +1187 -0
  82. package/es/components/modal/src/props.d.ts +89 -0
  83. package/es/components/modal/src/types/modal.type.d.ts +22 -0
  84. package/es/components/router/base-router.d.ts +2 -0
  85. package/es/components/router/index.d.ts +2 -0
  86. package/es/components/source/index.d.ts +1 -0
  87. package/es/components/source/src/hooks/useFetch.d.ts +5 -0
  88. package/es/components/source/src/hooks/useSource.d.ts +33 -0
  89. package/es/components/source/src/index.d.ts +2 -0
  90. package/es/components/source/src/types/source.type.d.ts +31 -0
  91. package/es/components/source/src/types/table.type.d.ts +7 -0
  92. package/es/components/table/index.d.ts +3 -0
  93. package/es/components/table/src/components/TableActions.d.ts +1279 -0
  94. package/es/components/table/src/components/TableHeader.d.ts +28 -0
  95. package/es/components/table/src/components/TableRender.d.ts +25 -0
  96. package/es/components/table/src/components/setting/Column.d.ts +1349 -0
  97. package/es/components/table/src/components/setting/Download.d.ts +1144 -0
  98. package/es/components/table/src/components/setting/Fullscreen.d.ts +270 -0
  99. package/es/components/table/src/components/setting/Size.d.ts +1145 -0
  100. package/es/components/table/src/components/setting/index.d.ts +26 -0
  101. package/es/components/table/src/const.d.ts +12 -0
  102. package/es/components/table/src/hooks/useColumns.d.ts +12 -0
  103. package/es/components/table/src/hooks/useDataSource.d.ts +16 -0
  104. package/es/components/table/src/hooks/useFormat.d.ts +2 -0
  105. package/es/components/table/src/hooks/useLoading.d.ts +6 -0
  106. package/es/components/table/src/hooks/usePagination.d.ts +122 -0
  107. package/es/components/table/src/hooks/useRowSelection.d.ts +13 -0
  108. package/es/components/table/src/hooks/useRows.d.ts +5 -0
  109. package/es/components/table/src/hooks/useTable.d.ts +5 -0
  110. package/es/components/table/src/hooks/useTableHeader.d.ts +8 -0
  111. package/es/components/table/src/hooks/useTableInstance.d.ts +13 -0
  112. package/es/components/table/src/hooks/useTableScroll.d.ts +12 -0
  113. package/es/components/table/src/hooks/useVirtualScroll.d.ts +5 -0
  114. package/es/components/table/src/index.d.ts +565 -0
  115. package/es/components/table/src/props.d.ts +192 -0
  116. package/es/components/table/src/types/table.type.d.ts +89 -0
  117. package/es/components/table/src/types/tableHeader.type.d.ts +23 -0
  118. package/es/components/table/src/utils/format.d.ts +1 -0
  119. package/es/directives/icon.d.ts +2 -0
  120. package/es/directives/index.d.ts +6 -0
  121. package/es/directives/permission.d.ts +2 -0
  122. package/es/global.d.ts +8 -0
  123. package/es/index.css +1 -0
  124. package/es/index.d.ts +3 -0
  125. package/es/index.js +8867 -0
  126. package/es/style/assets/style/index.less +10 -0
  127. package/es/style/assets/style/reset.less +20 -0
  128. package/es/style/assets/style/var.less +42 -0
  129. package/es/style/components/container/index.less +85 -0
  130. package/es/style/components/forms/src/index.less +82 -0
  131. package/es/style/components/icons/index.less +96 -0
  132. package/es/style/components/icons/src/index.less +96 -0
  133. package/es/style/components/iframe/src/index.less +3 -0
  134. package/es/style/components/modal/src/index.less +60 -0
  135. package/es/style/components/table/src/index.less +162 -0
  136. package/es/style/theme/footer/index.less +16 -0
  137. package/es/style/theme/header/index.less +438 -0
  138. package/es/style/theme/header/set-theme.less +68 -0
  139. package/es/style/theme/sider/index.less +203 -0
  140. package/es/style/theme/tabs/index.less +165 -0
  141. package/es/style/theme/theme.less +66 -0
  142. package/es/style/theme/transition.less +99 -0
  143. package/es/theme/content/index.d.ts +29 -0
  144. package/es/theme/feature/back-top.d.ts +105 -0
  145. package/es/theme/feature/index.d.ts +107 -0
  146. package/es/theme/footer/index.d.ts +30 -0
  147. package/es/theme/header/components/bread-crumb.d.ts +127 -0
  148. package/es/theme/header/components/fullscreen.d.ts +5 -0
  149. package/es/theme/header/components/handler.d.ts +2 -0
  150. package/es/theme/header/components/index.d.ts +10 -0
  151. package/es/theme/header/components/lang-picker.d.ts +290 -0
  152. package/es/theme/header/components/logo.d.ts +40 -0
  153. package/es/theme/header/components/menu-search.d.ts +528 -0
  154. package/es/theme/header/components/notify.d.ts +269 -0
  155. package/es/theme/header/components/setting-theme.d.ts +2550 -0
  156. package/es/theme/header/components/theme-drawer/enum.d.ts +5 -0
  157. package/es/theme/header/components/theme-drawer/feature.d.ts +1096 -0
  158. package/es/theme/header/components/theme-drawer/index.d.ts +3 -0
  159. package/es/theme/header/components/theme-drawer/menu-type.d.ts +273 -0
  160. package/es/theme/header/components/theme-drawer/select-item.d.ts +778 -0
  161. package/es/theme/header/components/theme-drawer/switch-item.d.ts +289 -0
  162. package/es/theme/header/components/trigger.d.ts +14 -0
  163. package/es/theme/header/components/user-info.d.ts +452 -0
  164. package/es/theme/header/const/index.d.ts +20 -0
  165. package/es/theme/header/helper/menu-tree.d.ts +3 -0
  166. package/es/theme/header/index.d.ts +4369 -0
  167. package/es/theme/header/multiple-header.d.ts +2001 -0
  168. package/es/theme/index.d.ts +2 -0
  169. package/es/theme/sider/components/basic-menu/basic-menu-item.d.ts +121 -0
  170. package/es/theme/sider/components/basic-menu/basic-menu.d.ts +752 -0
  171. package/es/theme/sider/components/basic-menu/basic-sub-menu-item.d.ts +250 -0
  172. package/es/theme/sider/components/basic-menu/menu-item-content.d.ts +34 -0
  173. package/es/theme/sider/components/drag-bar.d.ts +14 -0
  174. package/es/theme/sider/components/layout-menu.d.ts +22 -0
  175. package/es/theme/sider/components/props.d.ts +69 -0
  176. package/es/theme/sider/components/sider-trigger.d.ts +68 -0
  177. package/es/theme/sider/helper/sider.d.ts +12 -0
  178. package/es/theme/sider/helper/split-menu.d.ts +10 -0
  179. package/es/theme/sider/hooks/useDragLine.d.ts +2 -0
  180. package/es/theme/sider/hooks/useOpenKeys.d.ts +13 -0
  181. package/es/theme/sider/index.d.ts +152 -0
  182. package/es/theme/styles/hooks/changeTheme.d.ts +1 -0
  183. package/es/theme/styles/hooks/generate.d.ts +13 -0
  184. package/es/theme/styles/index.d.ts +2 -0
  185. package/es/theme/tabs/components/TabContent.d.ts +887 -0
  186. package/es/theme/tabs/components/TabRedo.d.ts +49 -0
  187. package/es/theme/tabs/hooks/useMultifyTabs.d.ts +7 -0
  188. package/es/theme/tabs/hooks/useTabDropdown.d.ts +6 -0
  189. package/es/theme/tabs/index.d.ts +1399 -0
  190. package/es/theme/tabs/types/tabs.type.d.ts +7 -0
  191. package/es/theme/theme/initTheme.d.ts +3 -0
  192. package/es/theme/theme/util.d.ts +5 -0
  193. package/es/theme/theme.d.ts +4911 -0
  194. package/es/themes/generate.ts +74 -0
  195. package/es/themes/index.ts +10 -0
  196. package/es/themes/modifyVars.ts +33 -0
  197. package/es/themes/themePlugiin.ts +74 -0
  198. package/package.json +49 -0
  199. package/src/assets/data/icons/actions.ts +427 -0
  200. package/src/assets/data/icons/code.ts +10 -0
  201. package/src/assets/data/icons/commuticate.ts +190 -0
  202. package/src/assets/data/icons/currency.ts +46 -0
  203. package/src/assets/data/icons/devices.ts +128 -0
  204. package/src/assets/data/icons/edit.ts +165 -0
  205. package/src/assets/data/icons/file.ts +104 -0
  206. package/src/assets/data/icons/math.ts +53 -0
  207. package/src/assets/data/icons/message.ts +75 -0
  208. package/src/assets/data/icons/navigate.ts +181 -0
  209. package/src/assets/data/icons/other.ts +333 -0
  210. package/src/assets/data/icons.ts +58 -0
  211. package/src/assets/imgs/logo/logo.png +0 -0
  212. package/src/assets/locales/en_US.json +3 -0
  213. package/src/assets/locales/zh_CN.json +3 -0
  214. package/src/assets/style/index.less +10 -0
  215. package/src/assets/style/reset.less +20 -0
  216. package/src/components/container/index.less +85 -0
  217. package/src/components/container/index.ts +8 -0
  218. package/src/components/container/src/bar.ts +107 -0
  219. package/src/components/container/src/lazy-container.vue +9 -0
  220. package/src/components/container/src/scroll-bar.vue +117 -0
  221. package/src/components/container/src/scroll-container.vue +61 -0
  222. package/src/components/curd/index.ts +5 -0
  223. package/src/components/curd/src/components/dialog.vue +65 -0
  224. package/src/components/curd/src/components/props.ts +32 -0
  225. package/src/components/curd/src/hooks/useCurd.tsx +72 -0
  226. package/src/components/curd/src/types/curd.type.ts +29 -0
  227. package/src/components/excel/index.ts +6 -0
  228. package/src/components/excel/src/export2Excel.ts +44 -0
  229. package/src/components/forms/index.ts +12 -0
  230. package/src/components/forms/src/componentMap.ts +44 -0
  231. package/src/components/forms/src/components/formButton.vue +150 -0
  232. package/src/components/forms/src/components/formIcon.vue +50 -0
  233. package/src/components/forms/src/components/formItem.vue +407 -0
  234. package/src/components/forms/src/components/radioButton.vue +58 -0
  235. package/src/components/forms/src/const/form.const.ts +7 -0
  236. package/src/components/forms/src/hooks/helper.ts +70 -0
  237. package/src/components/forms/src/hooks/useForm.ts +130 -0
  238. package/src/components/forms/src/hooks/useFormActions.ts +63 -0
  239. package/src/components/forms/src/hooks/useFormEvents.ts +247 -0
  240. package/src/components/forms/src/hooks/useFormValue.ts +49 -0
  241. package/src/components/forms/src/hooks/useFormValues.ts +131 -0
  242. package/src/components/forms/src/hooks/useLabelWidth.ts +57 -0
  243. package/src/components/forms/src/index.less +82 -0
  244. package/src/components/forms/src/index.vue +306 -0
  245. package/src/components/forms/src/prop.ts +80 -0
  246. package/src/components/forms/src/types/form.type.ts +269 -0
  247. package/src/components/icons/index.ts +7 -0
  248. package/src/components/icons/src/index.less +96 -0
  249. package/src/components/icons/src/pick-icon.vue +117 -0
  250. package/src/components/icons/src/svg-icon.vue +117 -0
  251. package/src/components/iframe/index.ts +5 -0
  252. package/src/components/iframe/src/index.less +3 -0
  253. package/src/components/iframe/src/index.vue +38 -0
  254. package/src/components/index.ts +46 -0
  255. package/src/components/modal/index.ts +8 -0
  256. package/src/components/modal/src/components/close-icon.vue +47 -0
  257. package/src/components/modal/src/components/modal-wrap.vue +118 -0
  258. package/src/components/modal/src/components/modal.tsx +30 -0
  259. package/src/components/modal/src/components/modalFooter.vue +38 -0
  260. package/src/components/modal/src/hooks/useDrag.ts +107 -0
  261. package/src/components/modal/src/hooks/useFullScreen.ts +27 -0
  262. package/src/components/modal/src/hooks/useModal.ts +177 -0
  263. package/src/components/modal/src/index.less +60 -0
  264. package/src/components/modal/src/index.vue +173 -0
  265. package/src/components/modal/src/props.ts +43 -0
  266. package/src/components/modal/src/types/modal.type.ts +27 -0
  267. package/src/components/router/base-router.vue +11 -0
  268. package/src/components/router/index.ts +3 -0
  269. package/src/components/source/index.ts +1 -0
  270. package/src/components/source/src/hooks/useFetch.ts +70 -0
  271. package/src/components/source/src/hooks/usePage.ts +3 -0
  272. package/src/components/source/src/hooks/useSource.ts +178 -0
  273. package/src/components/source/src/index.ts +5 -0
  274. package/src/components/source/src/types/source.type.ts +68 -0
  275. package/src/components/source/src/types/table.type.ts +8 -0
  276. package/src/components/table/index.ts +7 -0
  277. package/src/components/table/src/components/TableActions.vue +108 -0
  278. package/src/components/table/src/components/TableHeader.vue +77 -0
  279. package/src/components/table/src/components/TableRender.vue +76 -0
  280. package/src/components/table/src/components/setting/Column.vue +355 -0
  281. package/src/components/table/src/components/setting/Download.vue +55 -0
  282. package/src/components/table/src/components/setting/Fullscreen.vue +43 -0
  283. package/src/components/table/src/components/setting/Size.vue +42 -0
  284. package/src/components/table/src/components/setting/index.vue +64 -0
  285. package/src/components/table/src/const.ts +13 -0
  286. package/src/components/table/src/hooks/useColumns.ts +319 -0
  287. package/src/components/table/src/hooks/useCustomRow.ts +0 -0
  288. package/src/components/table/src/hooks/useDataSource.ts +99 -0
  289. package/src/components/table/src/hooks/useLoading.ts +29 -0
  290. package/src/components/table/src/hooks/usePagination.ts +76 -0
  291. package/src/components/table/src/hooks/useRowSelection.ts +146 -0
  292. package/src/components/table/src/hooks/useRows.ts +30 -0
  293. package/src/components/table/src/hooks/useTable.ts +77 -0
  294. package/src/components/table/src/hooks/useTableHeader.ts +48 -0
  295. package/src/components/table/src/hooks/useTableInstance.ts +29 -0
  296. package/src/components/table/src/hooks/useTableScroll.ts +227 -0
  297. package/src/components/table/src/index.less +162 -0
  298. package/src/components/table/src/index.vue +198 -0
  299. package/src/components/table/src/props.ts +152 -0
  300. package/src/components/table/src/types/table.type.ts +133 -0
  301. package/src/components/table/src/types/tableHeader.type.ts +27 -0
  302. package/src/components/type.ts +0 -0
  303. package/src/directives/icon.ts +36 -0
  304. package/src/directives/index.ts +26 -0
  305. package/src/directives/permission.ts +21 -0
  306. package/src/global.d.ts +8 -0
  307. package/src/index.ts +4 -0
  308. package/src/theme/content/index.vue +37 -0
  309. package/src/theme/feature/back-top.vue +11 -0
  310. package/src/theme/feature/index.vue +7 -0
  311. package/src/theme/footer/index.less +16 -0
  312. package/src/theme/footer/index.vue +24 -0
  313. package/src/theme/header/components/bread-crumb.vue +26 -0
  314. package/src/theme/header/components/fullscreen.vue +14 -0
  315. package/src/theme/header/components/handler.ts +81 -0
  316. package/src/theme/header/components/index.ts +21 -0
  317. package/src/theme/header/components/lang-picker.vue +36 -0
  318. package/src/theme/header/components/logo.vue +33 -0
  319. package/src/theme/header/components/menu-search.vue +62 -0
  320. package/src/theme/header/components/notify.vue +23 -0
  321. package/src/theme/header/components/setting-theme.vue +123 -0
  322. package/src/theme/header/components/theme-drawer/enum.ts +12 -0
  323. package/src/theme/header/components/theme-drawer/feature.vue +75 -0
  324. package/src/theme/header/components/theme-drawer/index.ts +7 -0
  325. package/src/theme/header/components/theme-drawer/menu-type.vue +40 -0
  326. package/src/theme/header/components/theme-drawer/select-item.vue +46 -0
  327. package/src/theme/header/components/theme-drawer/switch-item.vue +39 -0
  328. package/src/theme/header/components/theme-drawer/theme-color.vue +26 -0
  329. package/src/theme/header/components/trigger.vue +14 -0
  330. package/src/theme/header/components/user-info.vue +43 -0
  331. package/src/theme/header/const/index.ts +40 -0
  332. package/src/theme/header/helper/menu-tree.ts +67 -0
  333. package/src/theme/header/index.less +438 -0
  334. package/src/theme/header/index.ts +0 -0
  335. package/src/theme/header/index.vue +96 -0
  336. package/src/theme/header/multiple-header.vue +67 -0
  337. package/src/theme/header/set-theme.less +68 -0
  338. package/src/theme/index.ts +3 -0
  339. package/src/theme/sider/components/basic-menu/basic-menu-item.vue +14 -0
  340. package/src/theme/sider/components/basic-menu/basic-menu.vue +122 -0
  341. package/src/theme/sider/components/basic-menu/basic-sub-menu-item.vue +46 -0
  342. package/src/theme/sider/components/basic-menu/menu-item-content.vue +13 -0
  343. package/src/theme/sider/components/drag-bar.vue +26 -0
  344. package/src/theme/sider/components/layout-menu.vue +132 -0
  345. package/src/theme/sider/components/props.ts +97 -0
  346. package/src/theme/sider/components/sider-trigger.vue +24 -0
  347. package/src/theme/sider/helper/sider.ts +52 -0
  348. package/src/theme/sider/helper/split-menu.ts +147 -0
  349. package/src/theme/sider/hooks/useDragLine.ts +86 -0
  350. package/src/theme/sider/hooks/useOpenKeys.ts +57 -0
  351. package/src/theme/sider/index.less +203 -0
  352. package/src/theme/sider/index.vue +88 -0
  353. package/src/theme/tabs/components/TabContent.vue +37 -0
  354. package/src/theme/tabs/components/TabRedo.vue +18 -0
  355. package/src/theme/tabs/hooks/useMultifyTabs.ts +96 -0
  356. package/src/theme/tabs/hooks/useTabDropdown.ts +89 -0
  357. package/src/theme/tabs/index.less +165 -0
  358. package/src/theme/tabs/index.vue +98 -0
  359. package/src/theme/tabs/types/tabs.type.ts +8 -0
  360. package/src/theme/theme.less +66 -0
  361. package/src/theme/theme.vue +89 -0
  362. package/src/theme/transition.less +99 -0
  363. package/tsconfig.json +28 -0
@@ -0,0 +1,131 @@
1
+ /** =========================================================
2
+ * 处理表单的值
3
+ * ==========================================================*/
4
+ import { dateFormat, isFunction, isObject, isString, Recordable } from "@dt-frames/core";
5
+ import { isArray } from "@vue/shared";
6
+ import { set } from "lodash-es";
7
+ import dayjs from "dayjs";
8
+ import { ComputedRef, Ref, unref } from "vue";
9
+ import { FormProps, FormSchema } from "../types/form.type";
10
+ import { datePickerType } from "./helper";
11
+
12
+ type FormValueOptions = {
13
+ getProps: ComputedRef<FormProps>
14
+ defaultValue: Ref<any>
15
+ getSchema: ComputedRef<FormSchema[]>
16
+ formModel: Recordable
17
+ }
18
+
19
+ export function useFormValues({
20
+ defaultValue,
21
+ getSchema,
22
+ formModel,
23
+ getProps
24
+ }: FormValueOptions) {
25
+
26
+ /**
27
+ * 可以动态获取formModel的值
28
+ */
29
+ function handleFormValues(values: Recordable) {
30
+ if( !isObject(values) ) return { }
31
+
32
+ const res: Recordable = {}
33
+
34
+ for(let [key, value] of Object.entries(values)) {
35
+ if( !key || (Array.isArray(value) && value.length === 0) || isFunction(value) ) {
36
+ continue
37
+ }
38
+
39
+ /**
40
+ * TODO 这里需要对时间进行处理
41
+ */
42
+
43
+
44
+ if ( isString(value) ) {
45
+ value = value.trim();
46
+ }
47
+
48
+ set(res, key, value)
49
+ }
50
+
51
+ return res
52
+ }
53
+
54
+
55
+ /**
56
+ * 设置默认值
57
+ * 设置初始化的formModel值
58
+ */
59
+ function initDefault() {
60
+ const schema = unref( getSchema )
61
+ const obj: Recordable = {}
62
+
63
+ schema.forEach( item => {
64
+
65
+ const { props = {}, name, component } = item
66
+
67
+ let { defaultValue, mode, format, treeCheckable } = isFunction( props ) ? props() : props
68
+ const names: string[] = isString(name) ? [ name ] : name
69
+
70
+ if( defaultValue !== null && defaultValue !== undefined ) {
71
+
72
+ // 处理时间
73
+ if( datePickerType.includes(component) ) {
74
+ const modeType = {
75
+ time: 'YYYY-MM-DD HH:mm:ss',
76
+ date: 'YYYY-MM-DD',
77
+ month: 'YYYY-MM',
78
+ year: 'YYYY'
79
+ }
80
+
81
+ const _format = format || ( modeType[mode] ) || modeType.date
82
+
83
+ if ( !isArray(defaultValue) ) {
84
+ // 单个时间
85
+ obj[names[0]] = dayjs(defaultValue, _format)
86
+ formModel[names[0]] = dayjs(defaultValue, _format)
87
+ } else {
88
+
89
+ // 范围时间
90
+ let rangeTimes = defaultValue.reduce(( t, it ) => {
91
+ t.push( dayjs(it, _format) )
92
+ return t
93
+ }, [])
94
+
95
+ obj[names[0]] = rangeTimes
96
+ formModel[names[0]] = rangeTimes
97
+ }
98
+ } else {
99
+ // 如果names是数组 则代表有多个默认值 如 InputGroup
100
+ if( names.length > 1 ) {
101
+ names.forEach( ( key, index ) => {
102
+ obj[ key ] = defaultValue[ index ]
103
+ formModel[ key ] = defaultValue[ index ]
104
+ } )
105
+ } else {
106
+ obj[names[0]] = defaultValue
107
+ formModel[names[0]] = defaultValue
108
+ }
109
+ }
110
+ } else {
111
+ names.forEach( ( key, index ) => {
112
+ let defaultV = null
113
+ // 如果为树结构且为多选 或者复选框为多选状态
114
+ if( (component === 'TreeSelect' && (mode === 'multiple' || treeCheckable)) ||
115
+ (component === 'Select' && mode === 'multiple') ) {
116
+ defaultV = []
117
+ }
118
+
119
+ formModel[ key ] = obj[ key ] = defaultV
120
+ } )
121
+ }
122
+ } )
123
+
124
+ defaultValue.value = obj
125
+ }
126
+
127
+ return {
128
+ handleFormValues,
129
+ initDefault
130
+ }
131
+ }
@@ -0,0 +1,57 @@
1
+ /** =========================================================
2
+ * 处理表单的label宽度问题
3
+ * ==========================================================*/
4
+
5
+ import { isString, isNumber, useAppStore } from "@dt-frames/core";
6
+ import { computed, Ref, unref } from "vue";
7
+ import { FormProps, FormSchema } from "../types/form.type";
8
+
9
+ // 计算label的宽度
10
+ export function useLabelWidth(schemaItemRef: Ref<FormSchema>, propsRef: Ref<FormProps>) {
11
+ return computed(() => {
12
+ // 当前元素上关于label的设置
13
+ const { labelWidth, labelCol = { }, wrapperCol = { } } = unref( schemaItemRef )
14
+ // 获取全局配置
15
+ const { appConf } = useAppStore()
16
+
17
+ // 整个form关于label的设置
18
+ const {
19
+ labelWidth: gLabelWidth,
20
+ labelCol: glabelCol,
21
+ wrapperCol: gwrapperCol,
22
+ layout = appConf.ui.form.layout
23
+ } = unref( propsRef )
24
+
25
+ // 如果宽度设置为0
26
+ if( (isString(labelWidth) || isNumber(labelWidth)) && Number(labelWidth.toString()) === 0 ) {
27
+ return {
28
+ labelCol: {
29
+ ...labelCol,
30
+ ...{ style: { textAlign: 'left' } }
31
+ },
32
+ wrapperCol
33
+ }
34
+ }
35
+
36
+ let width = labelWidth || gLabelWidth
37
+ const labelcol = { ...glabelCol, ...labelCol }
38
+ const wrapcol = { ...gwrapperCol, ...wrapperCol }
39
+
40
+ if (width) {
41
+ width = isNumber(width) ? `${width}px` : width
42
+ }
43
+
44
+ return {
45
+ labelCol: {
46
+ style: { width },
47
+ ...labelcol
48
+ },
49
+ wrapperCol: {
50
+ style: { width: layout === 'vertical' ? '100%' : `calc(100% - ${width})` },
51
+ ...wrapcol
52
+ }
53
+ }
54
+
55
+ })
56
+ }
57
+
@@ -0,0 +1,82 @@
1
+ .text-secondary{
2
+ color: #666;
3
+ }
4
+
5
+ .suffix-item .suffix {
6
+ display: inline-flex;
7
+ padding-left: 6px;
8
+ margin-top: 1px;
9
+ line-height: 1;
10
+ align-items: center;
11
+ }
12
+
13
+ .form-btns{
14
+ button{
15
+ margin-left: 12px;
16
+ }
17
+
18
+ .advanced{
19
+ margin-left: 8px;
20
+ .text{
21
+ margin-right: 5px;
22
+ }
23
+ .basic-arrow{
24
+ margin-left: -8px;
25
+ }
26
+ }
27
+ }
28
+
29
+ .basic-arrow{
30
+ display: inline-block;
31
+ cursor: pointer;
32
+ transform: rotate(0deg);
33
+ transition: all 0.3s ease 0.1s;
34
+ transform-origin: center center;
35
+
36
+
37
+ .dt-icon{
38
+ vertical-align: middle;
39
+ color: @primary-color !important;
40
+ }
41
+
42
+ &--active{
43
+ transform: rotate(180deg);
44
+ }
45
+ }
46
+
47
+ .form-btns{
48
+ .ant-form-item-control-input-content{
49
+ display: flex;
50
+ .ant-btn{
51
+ display: flex;
52
+ align-items: center;
53
+ }
54
+ .ant-btn .dt-icon{
55
+ font-size: 20px;
56
+ height: 100%;
57
+
58
+ svg{
59
+ display: block;
60
+ height: 100%;
61
+ text-align: center;
62
+ }
63
+
64
+ .preIcon{
65
+ padding-right: 2px;
66
+ }
67
+ }
68
+
69
+ .ant-btn-primary .dt-icon svg{
70
+ color: #fff;
71
+ }
72
+ }
73
+ }
74
+
75
+ .basic-form--compact{
76
+ .ant-form-item {
77
+ margin-bottom: 14px !important;
78
+ }
79
+ }
80
+
81
+
82
+
@@ -0,0 +1,306 @@
1
+ <template>
2
+ <Form
3
+ v-bind="getFormBindValue"
4
+ ref="formElRef"
5
+ :class="getFormClass"
6
+ :model="formModel"
7
+ :layout="getLayout"
8
+ >
9
+ <Row v-bind="getProps.rowProps">
10
+ <template v-for="schema in getSchema" :key="schema.prop">
11
+ <FormItem
12
+ :schema="schema"
13
+ :formProps="getProps"
14
+ :formModel="formModel"
15
+ :defaultValues="defaultValue"
16
+ :setFormModel="setFormModel"
17
+ :formActionType="formActionMethods"
18
+ >
19
+ <template #[item]="data" v-for="item in Object.keys($slots)">
20
+ <slot :name="item" v-bind="data || {}"></slot>
21
+ </template>
22
+ </FormItem>
23
+ </template>
24
+
25
+ <FormButtons
26
+ v-if="getActionsProps.buttonList?.length && getProps.mode === 'search'"
27
+ v-bind="getActionsProps"
28
+ @handle-method="handleMethod"
29
+ ></FormButtons>
30
+ </Row>
31
+ </Form>
32
+ </template>
33
+
34
+ <script lang="ts">
35
+ import { computed, ref, reactive, unref, onMounted, Ref, watch, defineComponent, toRaw } from 'vue'
36
+ import { Form, Row } from 'ant-design-vue'
37
+ import { Nullable, Recordable, deepMerge, useAppStore, isFunction, useTimeoutFn } from '@dt-frames/core'
38
+
39
+ import FormItem from './components/formItem.vue'
40
+ import FormButtons from './components/formButton.vue'
41
+ import { ButtonProps, FormActionType, FormProps, FormSchema } from './types/form.type'
42
+ import { BasicProps } from './prop'
43
+ import { useFormValues } from './hooks/useFormValues'
44
+ import { useFormEvents } from './hooks/useFormEvents'
45
+ import { useFormActions } from './hooks/useFormActions'
46
+ import { SEARCH_BTNS, SEARCH_BTN_NAME } from './const/form.const'
47
+
48
+
49
+ export default defineComponent({
50
+ name: 'dt-form',
51
+ components: {
52
+ Form,
53
+ Row,
54
+ FormItem,
55
+ FormButtons
56
+ },
57
+ props: BasicProps,
58
+ emits: [ 'register', 'reset' ],
59
+ setup(props, { emit, attrs }) {
60
+ const { appConf } = useAppStore()
61
+ const formElRef = ref(null)
62
+
63
+ // 表单绑定的变量
64
+ const formModel = reactive<Recordable>({})
65
+ // 表单默认值
66
+ const defaultValue = ref<Recordable>({})
67
+ // 定义一个新的propref,防止污染原来的prop
68
+ const propsRef = ref<Partial<FormProps>>({})
69
+ // 表单条目
70
+ const schemaRef = ref<Nullable<FormSchema[]>>(null)
71
+
72
+ // 计算容器的css样式
73
+ const formStyle = computed(() => {
74
+ const { style, mode } = unref(getProps)
75
+ return {
76
+ style: deepMerge({
77
+ padding: mode === 'dialog' ? '20px' : null
78
+ }, style)
79
+ }
80
+ })
81
+
82
+ // form绑定的属性
83
+ const getFormBindValue = computed( () => ({
84
+ ...attrs,
85
+ ...props,
86
+ ...unref(getProps),
87
+ ...unref(formStyle)
88
+ } as Recordable))
89
+
90
+ /**
91
+ * 获取form的所有配置信息
92
+ */
93
+ const getProps = computed( (): FormProps => {
94
+ const { labelAlign, rowProps } = props
95
+
96
+ // 全局设置
97
+ const globalProps = {
98
+ labelAlign: labelAlign || appConf.ui.form.labelAlign,
99
+ rowProps: rowProps || appConf.ui.form.rowProps
100
+ }
101
+
102
+ return { ...props, ...globalProps, ...(unref(propsRef) as any) } as unknown as FormProps
103
+ } )
104
+
105
+ // 计算布局方式
106
+ const getLayout = computed(() => {
107
+ return unref(getProps).layout || appConf.ui.form.layout
108
+ })
109
+
110
+ // form表单样式[紧凑型 | 正常]
111
+ const getFormClass = computed(() => {
112
+ const { compact, mode } = unref(getProps)
113
+
114
+ const getCompact = compact === null
115
+ ? ( mode === 'dialog' ? false : true)
116
+ : compact
117
+
118
+ return [
119
+ 'basic-form',
120
+ {
121
+ 'basic-form--compact': getCompact,
122
+ 'basic-form--search': (mode === 'search' || mode === undefined) ? true : false
123
+ },
124
+ ];
125
+ })
126
+
127
+ const getSchema = computed(() => {
128
+ const schemas = unref(schemaRef) || (unref(getProps).schemas as any)
129
+ return schemas as FormSchema[];
130
+ })
131
+
132
+
133
+
134
+ /**
135
+ * 处理表单的初始化数据
136
+ */
137
+ const { handleFormValues, initDefault } = useFormValues({
138
+ getProps,
139
+ defaultValue,
140
+ getSchema,
141
+ formModel,
142
+ })
143
+
144
+ /**
145
+ * 处理表单函数
146
+ */
147
+ // 表单注册
148
+ async function setProps(formProps: Partial<FormProps>): Promise<void> {
149
+ propsRef.value = deepMerge(unref(propsRef) || {}, formProps);
150
+ }
151
+
152
+ // 设置formModel
153
+ function setFormModel(key: string, value: any) {
154
+ formModel[ key ] = value
155
+ const { validateTrigger } = unref(getFormBindValue)
156
+
157
+ if (!validateTrigger || validateTrigger === 'change') {
158
+ validateFields([key]).catch((_) => {});
159
+ }
160
+ }
161
+
162
+ const {
163
+ updateSchema,
164
+ resetSchema,
165
+ clearValidate,
166
+ resetForms,
167
+ removeFormByName,
168
+ setFormValues,
169
+ appendFormItems,
170
+ getFormValues,
171
+ validate,
172
+ validateFields
173
+ } = useFormEvents({
174
+ emit,
175
+ getProps,
176
+ getSchema,
177
+ formModel,
178
+ formElRef: formElRef as Ref<FormActionType>,
179
+ defaultValue,
180
+ schemaRef: schemaRef as unknown as Ref<FormSchema[]>,
181
+ handleFormValues
182
+ })
183
+
184
+ const formActionMethods: FormActionType = {
185
+ setProps,
186
+ updateSchema,
187
+ resetSchema,
188
+ clearValidate,
189
+ resetForms,
190
+ removeFormByName,
191
+ setFormValues,
192
+ appendFormItems,
193
+ getFormValues,
194
+ validate,
195
+ validateFields
196
+ }
197
+
198
+ // 操作按钮相关操作
199
+ const [ handleMethod ] = useFormActions({
200
+ getProps,
201
+ getSchema,
202
+ defaultValue,
203
+ updateSchema,
204
+ getFormValues,
205
+ setFormValues
206
+ })
207
+
208
+
209
+ watch(
210
+ () => unref(getProps).model,
211
+ () => {
212
+ const { model } = unref(getProps);
213
+ if (!model) return;
214
+ setFormValues(model);
215
+ },
216
+ {
217
+ immediate: true,
218
+ },
219
+ )
220
+
221
+ watch(
222
+ () => unref(getProps).schemas,
223
+ (schemas) => resetSchema(schemas ?? [])
224
+ )
225
+
226
+ onMounted(() => {
227
+ // 每次加载 进行重置
228
+ setFormValues( null )
229
+ emit('register', formActionMethods)
230
+ initDefault()
231
+
232
+ // 为了保证table的数据能够成功传入useSource中,这里需要延迟执行search
233
+ useTimeoutFn(() => {
234
+ // 如果有onSearch默认查询
235
+ const { onSearch, autoFetch } = unref(getProps)
236
+
237
+ if( autoFetch && onSearch && isFunction(onSearch) ) {
238
+ onSearch(toRaw(defaultValue.value))
239
+ }
240
+ }, 20)
241
+ })
242
+
243
+ const getActionsProps = computed((): Recordable => {
244
+ const {
245
+ mode,
246
+ minShowColumn = appConf.ui.form.minShowColumn || 2,
247
+ schemas = [],
248
+ showAdvancedButton: advanced,
249
+ loading,
250
+ buttons
251
+ } = unref(getProps)
252
+
253
+ let showAdvancedButton = mode === 'search' ? true : false
254
+
255
+ if( advanced !== undefined ) {
256
+ showAdvancedButton = advanced
257
+ }
258
+
259
+ if( schemas.length <= minShowColumn ) {
260
+ showAdvancedButton = false
261
+ }
262
+
263
+ let buttonList: ButtonProps[] = []
264
+ if( !buttons && mode === 'search' ) {
265
+ SEARCH_BTNS.forEach((it: any) => {
266
+ it.loading = it.name === SEARCH_BTN_NAME ? loading?.onSearch : loading?.onReset
267
+ buttonList.push(it)
268
+ })
269
+ } else {
270
+ buttonList = [...(buttons||[])]
271
+ }
272
+
273
+ let colspan = mode === 'search' ? appConf.ui.form.searchColspan : appConf.ui.form.dialogColspan
274
+
275
+ return {
276
+ ...colspan,
277
+ ...{
278
+ showAdvancedButton,
279
+ buttonList
280
+ },
281
+ }
282
+ })
283
+
284
+ return {
285
+ getFormBindValue,
286
+ getFormClass,
287
+ formModel,
288
+ getLayout,
289
+ getProps,
290
+ getSchema,
291
+ defaultValue,
292
+ formActionMethods,
293
+ formElRef,
294
+ props,
295
+ setFormModel,
296
+ handleMethod,
297
+ getActionsProps
298
+ }
299
+ }
300
+ })
301
+
302
+
303
+
304
+
305
+
306
+ </script>
@@ -0,0 +1,80 @@
1
+ import { Recordable } from "@dt-frames/core"
2
+ import { PropType } from "vue"
3
+ import { ColEx, FormActionType, FormProps, FormSchema } from "./types/form.type"
4
+ import type { RowProps } from 'ant-design-vue/lib/grid/Row'
5
+
6
+
7
+ export const BasicProps = {
8
+ mode: {
9
+ type: String as PropType<'search' | 'dialog' | null>,
10
+ default: 'search'
11
+ },
12
+ // 自动查询
13
+ autoFetch: {
14
+ type: Boolean,
15
+ default: true
16
+ },
17
+ // 绑定的model
18
+ model: {
19
+ type: Object as PropType<Recordable>,
20
+ default: {}
21
+ },
22
+ labelWidth: {
23
+ type: Number, String,
24
+ default: 100
25
+ },
26
+ // 表单配置规则
27
+ schemas: {
28
+ type: [Array] as PropType<FormSchema[]>,
29
+ default: () => [],
30
+ },
31
+ // 是否使用紧凑布局
32
+ compact: {
33
+ type: Boolean,
34
+ default: null
35
+ },
36
+ // 表单尺寸
37
+ size: {
38
+ type: String as PropType<'default' | 'small' | 'large'>
39
+ },
40
+ formActions: {
41
+ type: Object as PropType<FormActionType>
42
+ },
43
+ labelAlign: {
44
+ type: String as PropType<'left' | 'right'>
45
+ },
46
+ rowProps: Object as PropType<RowProps>,
47
+ colProps: Object as PropType<ColEx>
48
+ }
49
+
50
+ export const FormItemProps = {
51
+ // 配置参数
52
+ schema: {
53
+ type: Object as PropType<FormSchema>
54
+ },
55
+ // 表单属性
56
+ formProps: {
57
+ type: Object as PropType<FormProps>,
58
+ default: () => ({})
59
+ },
60
+ // 默认值
61
+ defaultValues: {
62
+ type: Object as PropType<Recordable>,
63
+ default: () => ({})
64
+ },
65
+ // 绑定的model
66
+ formModel: {
67
+ type: Object as PropType<Recordable>,
68
+ default: () => ({})
69
+ },
70
+ // 设置formModel
71
+ setFormModel: {
72
+ type: Function as PropType<(key: string, value: any) => void>
73
+ },
74
+ formActionType: {
75
+ type: Object as PropType<FormActionType>
76
+ },
77
+ style: {
78
+ type: Object as PropType<Recordable>
79
+ }
80
+ }