@cloudbase/weda-ui 3.4.8 → 3.4.9

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 (391) hide show
  1. package/README.md +65 -30
  2. package/dist/configs/components/carousel.json +12 -2
  3. package/dist/configs/components/chart/bar.json +2 -2
  4. package/dist/configs/components/chart/line.js +2 -2
  5. package/dist/configs/components/chart/pie.json +2 -2
  6. package/dist/configs/components/chart/statisticsCard.json +1 -1
  7. package/dist/configs/components/common/form-input-required.js +176 -0
  8. package/dist/configs/components/container.js +1 -1
  9. package/dist/configs/components/customer-service.js +262 -0
  10. package/dist/configs/components/dataView.js +10 -66
  11. package/dist/configs/components/flowgraph.json +22 -0
  12. package/dist/configs/components/form/departTreeSelect.json +10 -0
  13. package/dist/configs/components/form-checkbox.js +261 -0
  14. package/dist/configs/components/form-date.js +268 -0
  15. package/dist/configs/components/form-depart-tree-select.js +237 -0
  16. package/dist/configs/components/form-email.js +258 -0
  17. package/dist/configs/components/form-image-uploader.js +326 -0
  18. package/dist/configs/components/form-input.js +477 -0
  19. package/dist/configs/components/form-location.js +328 -0
  20. package/dist/configs/components/form-multi-region.js +202 -0
  21. package/dist/configs/components/form-phone.js +250 -0
  22. package/dist/configs/components/form-radio.js +261 -0
  23. package/dist/configs/components/form-region.js +198 -0
  24. package/dist/configs/components/form-rich-text.js +212 -0
  25. package/dist/configs/components/form-select.js +368 -0
  26. package/dist/configs/components/form-switch.js +153 -0
  27. package/dist/configs/components/form-text-area.js +241 -0
  28. package/dist/configs/components/form-time.js +221 -0
  29. package/dist/configs/components/form-upload-file.js +269 -0
  30. package/dist/configs/components/form-url.js +259 -0
  31. package/dist/configs/components/form-user-tree-select.js +315 -0
  32. package/dist/configs/components/formdetail.json +8 -0
  33. package/dist/configs/components/grid/col.js +6 -0
  34. package/dist/configs/components/listView.js +34 -92
  35. package/dist/configs/components/modal.js +2 -3
  36. package/dist/configs/components/navigationBar.json +2 -4
  37. package/dist/configs/components/pagelayout.json +1 -1
  38. package/dist/configs/components/qr_code.js +117 -0
  39. package/dist/configs/components/repeater.js +3 -2
  40. package/dist/configs/components/scrollVeiw.json +3 -1
  41. package/dist/configs/components/table.json +14 -4
  42. package/dist/configs/components/tabs.js +1 -1
  43. package/dist/configs/components/wd-bubble.js +2 -2
  44. package/dist/configs/components/wd-button.js +5 -5
  45. package/dist/configs/components/wd-divider.js +3 -3
  46. package/dist/configs/components/wd-form-detail.js +229 -0
  47. package/dist/configs/components/wd-form.js +394 -0
  48. package/dist/configs/components/wd-icon.js +4 -4
  49. package/dist/configs/components/wd-image.js +5 -0
  50. package/dist/configs/components/wd-link.js +5 -5
  51. package/dist/configs/components/wd-table.js +1110 -24
  52. package/dist/configs/components/wd-text.js +4 -3
  53. package/dist/configs/components/web-view.js +152 -0
  54. package/dist/configs/components/wedaVideo.json +4 -2
  55. package/dist/configs/components/wxOpenApi/share.js +1 -0
  56. package/dist/configs/index.js +50 -0
  57. package/dist/configs/type-utils/index.js +0 -1
  58. package/dist/docs/common/componentList.js +8 -37
  59. package/dist/docs/common/components/classes-view.js +2 -32
  60. package/dist/docs/common/components/event-view.js +2 -43
  61. package/dist/docs/common/components/json-schema-view.js +4 -8
  62. package/dist/docs/common/components/methods-view.js +2 -30
  63. package/dist/docs/common/components/properties-view.js +4 -43
  64. package/dist/docs/common/tableView.js +15 -94
  65. package/dist/enum/index.js +53 -0
  66. package/dist/setupTests.js +4 -0
  67. package/dist/style/index.scss +1 -1
  68. package/dist/web/actions/showModal/index.js +15 -21
  69. package/dist/web/components/button/index.css +1 -0
  70. package/dist/web/components/button/index.js +3 -6
  71. package/dist/web/components/calendar/index.js +19 -45
  72. package/dist/web/components/carousel/index.js +35 -45
  73. package/dist/web/components/chart/bar/index.js +6 -7
  74. package/dist/web/components/chart/bar/index.old.js +3 -2
  75. package/dist/web/components/chart/common/Chart.js +3 -2
  76. package/dist/web/components/chart/common/chart-custom-connector.js +3 -7
  77. package/dist/web/components/chart/common/core/eChartLine.js +12 -1
  78. package/dist/web/components/chart/common/data-transform.js +13 -9
  79. package/dist/web/components/chart/line/index.js +6 -7
  80. package/dist/web/components/chart/line/index.old.js +5 -3
  81. package/dist/web/components/chart/pie/index.js +6 -7
  82. package/dist/web/components/chart/pie/index.old.js +3 -2
  83. package/dist/web/components/chart/statisticsCard/index.js +3 -9
  84. package/dist/web/components/common/error-boundary.js +13 -15
  85. package/dist/web/components/common/form-item-wrapper.js +4 -0
  86. package/dist/web/components/common/use-loop-render-detect.js +2 -2
  87. package/dist/web/components/container/index.js +2 -2
  88. package/dist/web/components/customer-service/convert-legacy-props.js +14 -0
  89. package/dist/web/components/customer-service/customer-service.js +13 -0
  90. package/dist/web/components/customer-service/index.js +3 -0
  91. package/dist/web/components/dataView/index.js +5 -1
  92. package/dist/web/components/drawer/index.js +2 -3
  93. package/dist/web/components/flow/common/components/container.js +12 -0
  94. package/dist/web/components/flow/common/components/index.js +2 -0
  95. package/dist/web/components/flow/common/components/text/index.js +62 -0
  96. package/dist/web/components/flow/common/constants.js +14 -0
  97. package/dist/web/components/flow/common/hooks/index.js +2 -0
  98. package/dist/web/components/flow/common/hooks/useCommonFlowData/flow-get.js +83 -0
  99. package/dist/web/components/flow/common/hooks/useCommonFlowData/index.js +67 -0
  100. package/dist/web/components/flow/common/hooks/useCommonFlowData/preview-data.js +45 -0
  101. package/dist/web/components/flow/common/hooks/useCommonFlowData/request-hub.js +125 -0
  102. package/dist/web/components/flow/common/hooks/useCommonFlowData/types.js +1 -0
  103. package/dist/web/components/flow/common/hooks/useElementMediaQuery.js +23 -0
  104. package/dist/web/components/flow/common/hooks/useFlowConfig.js +44 -0
  105. package/dist/web/components/flow/common/hooks/useFlowFormLoad.js +64 -0
  106. package/dist/web/components/flow/common/hooks/useFlowPageType.js +49 -0
  107. package/dist/web/components/flow/common/index.js +6 -0
  108. package/dist/web/components/flow/common/request.js +47 -0
  109. package/dist/web/components/flow/common/types.js +1 -0
  110. package/dist/web/components/flow/common/utils.js +15 -0
  111. package/dist/web/components/flow/modules/basic/Basic.js +14 -22
  112. package/dist/web/components/flow/modules/basic/BasicMobile.js +12 -30
  113. package/dist/web/components/flow/modules/basic/index.js +19 -11
  114. package/dist/web/components/flow/modules/basic/status-text.js +37 -0
  115. package/dist/web/components/flow/modules/basic/utils.js +17 -8
  116. package/dist/web/components/flow/modules/chart/Chart.js +22 -41
  117. package/dist/web/components/flow/modules/chart/index.js +49 -5
  118. package/dist/web/components/flow/modules/chart/preview-data.js +88 -0
  119. package/dist/web/components/flow/modules/chart/utils.js +111 -0
  120. package/dist/web/components/flow/modules/combination/index.js +4 -6
  121. package/dist/web/components/flow/modules/layout/index.css +2 -2
  122. package/dist/web/components/flow/modules/layout/index.js +11 -15
  123. package/dist/web/components/flow/modules/operations/components/button/index.js +2 -4
  124. package/dist/web/components/flow/modules/operations/components/popup/index.js +11 -15
  125. package/dist/web/components/flow/modules/operations/components/user-select/index.js +4 -5
  126. package/dist/web/components/flow/modules/operations/config/approval-form-config.js +8 -9
  127. package/dist/web/components/flow/modules/operations/config/control-config.js +38 -33
  128. package/dist/web/components/flow/modules/operations/control.js +21 -15
  129. package/dist/web/components/flow/modules/operations/controls-items/add-assignee-btn.js +8 -8
  130. package/dist/web/components/flow/modules/operations/controls-items/apply-cc-btn.js +2 -2
  131. package/dist/web/components/flow/modules/operations/controls-items/approval-drawer/comment/index.js +3 -6
  132. package/dist/web/components/flow/modules/operations/controls-items/approval-drawer/drawer-form/index.js +25 -32
  133. package/dist/web/components/flow/modules/operations/controls-items/approval-drawer/field/index.js +2 -6
  134. package/dist/web/components/flow/modules/operations/controls-items/approval-drawer/index.js +15 -7
  135. package/dist/web/components/flow/modules/operations/controls-items/approval-drawer/style.css +1 -0
  136. package/dist/web/components/flow/modules/operations/controls-items/cancel-apply-btn.js +2 -2
  137. package/dist/web/components/flow/modules/operations/controls-items/check-list-popup/index.js +2 -4
  138. package/dist/web/components/flow/modules/operations/controls-items/flow-task-info-modal/index.js +20 -0
  139. package/dist/web/components/flow/modules/operations/controls-items/flow-task-info-modal/view-model.js +119 -0
  140. package/dist/web/components/flow/modules/operations/controls-items/initiation-btn.js +6 -3
  141. package/dist/web/components/flow/modules/operations/controls-items/revoke-modal/index.js +13 -22
  142. package/dist/web/components/flow/modules/operations/controls-items/roll-back-modal.js +18 -26
  143. package/dist/web/components/flow/modules/operations/view-model.js +95 -70
  144. package/dist/web/components/flow/process/components/comment-text/index.js +24 -0
  145. package/dist/web/components/flow/process/components/comment-text/style.css +33 -0
  146. package/dist/web/components/flow/process/components/descriptions/index.js +19 -0
  147. package/dist/web/components/flow/process/components/descriptions/style.css +31 -0
  148. package/dist/web/components/flow/process/components/index.js +4 -0
  149. package/dist/web/components/flow/process/components/timeline/index.js +13 -0
  150. package/dist/web/components/flow/process/components/timeline/style.css +75 -0
  151. package/dist/web/components/flow/process/constants.js +46 -0
  152. package/dist/web/components/flow/process/index.js +2 -0
  153. package/dist/web/components/flow/process/process.js +113 -0
  154. package/dist/web/components/flow/process/style.css +17 -0
  155. package/dist/web/components/flow/process/types.js +1 -0
  156. package/dist/web/components/flow/process/view-model.js +135 -0
  157. package/dist/web/components/flow-graph/constants.js +28 -0
  158. package/dist/web/components/flow-graph/graph.js +267 -0
  159. package/dist/web/components/flow-graph/index.js +2 -0
  160. package/dist/web/components/flow-graph/style.css +109 -0
  161. package/dist/web/components/flow-graph/types.js +1 -0
  162. package/dist/web/components/form/checkbox/index.js +18 -19
  163. package/dist/web/components/form/enumSelect/MultipleSelect.js +4 -5
  164. package/dist/web/components/form/enumSelect/NormalSelect.js +4 -5
  165. package/dist/web/components/form/enumSelect/SelectContainer.js +2 -2
  166. package/dist/web/components/form/form/index.js +8 -14
  167. package/dist/web/components/form/formcell/index.js +12 -18
  168. package/dist/web/components/form/input/index.js +17 -16
  169. package/dist/web/components/form/location/common/mapChoose.js +37 -69
  170. package/dist/web/components/form/location/common/mapView.js +2 -1
  171. package/dist/web/components/form/location/common/selectModal.js +3 -7
  172. package/dist/web/components/form/location/components/LocationH5/location.h5.js +22 -34
  173. package/dist/web/components/form/location/components/LocationPC/Header.js +6 -15
  174. package/dist/web/components/form/location/components/LocationPC/location.PC.js +13 -15
  175. package/dist/web/components/form/location/index.js +5 -7
  176. package/dist/web/components/form/radio/index.js +8 -12
  177. package/dist/web/components/form/renderDecorator.js +3 -2
  178. package/dist/web/components/form/select/allTimePicker/calendar.js +27 -28
  179. package/dist/web/components/form/select/allTimePicker/index.js +66 -91
  180. package/dist/web/components/form/select/dropdown-select/h5.js +30 -53
  181. package/dist/web/components/form/select/dropdown-select/index.css +4 -0
  182. package/dist/web/components/form/select/dropdown-select/index.js +7 -3
  183. package/dist/web/components/form/select/dropdown-select/pc.js +27 -29
  184. package/dist/web/components/form/select/dropdown-select/ui.js +4 -8
  185. package/dist/web/components/form/select/h5.js +8 -6
  186. package/dist/web/components/form/select/index.js +19 -20
  187. package/dist/web/components/form/select/region/index.js +2 -2
  188. package/dist/web/components/form/select/request.js +10 -10
  189. package/dist/web/components/form/select/status/allEmpty.js +2 -2
  190. package/dist/web/components/form/select/status/empty.js +3 -2
  191. package/dist/web/components/form/select/status/loading.js +3 -4
  192. package/dist/web/components/form/select/status/retry.js +3 -4
  193. package/dist/web/components/form/select/year.js +16 -31
  194. package/dist/web/components/form/switch/index.js +11 -15
  195. package/dist/web/components/form/textarea/index.js +5 -10
  196. package/dist/web/components/form/tips/index.js +2 -2
  197. package/dist/web/components/form/uploader/index.js +5 -4
  198. package/dist/web/components/form/uploader/uploader.h5.js +29 -54
  199. package/dist/web/components/form/uploader/uploader.pc.js +18 -44
  200. package/dist/web/components/form/uploaderFile/index.js +4 -5
  201. package/dist/web/components/form/uploaderFile/uploadFile.h5.js +58 -104
  202. package/dist/web/components/form/uploaderFile/uploadFile.pc.js +42 -69
  203. package/dist/web/components/form/userOrgSelect/common/fetch-data-service.js +44 -62
  204. package/dist/web/components/form/userOrgSelect/common/utils.js +225 -0
  205. package/dist/web/components/form/userOrgSelect/component/OrgPaths.js +12 -0
  206. package/dist/web/components/form/userOrgSelect/component/depart-breadcrumb.js +5 -10
  207. package/dist/web/components/form/userOrgSelect/component/depart-select/depart-select-pc.js +9 -19
  208. package/dist/web/components/form/userOrgSelect/component/depart-select/departTreeSelect.h5.js +156 -0
  209. package/dist/web/components/form/userOrgSelect/component/depart-select/index.js +58 -21
  210. package/dist/web/components/form/userOrgSelect/component/depart-select/org-modal-pc.js +29 -35
  211. package/dist/web/components/form/userOrgSelect/component/error-tips.js +4 -4
  212. package/dist/web/components/form/userOrgSelect/component/index.css +52 -0
  213. package/dist/web/components/form/userOrgSelect/component/input-tags.js +4 -18
  214. package/dist/web/components/form/userOrgSelect/component/modal-search-h5.js +11 -19
  215. package/dist/web/components/form/userOrgSelect/component/modal-search.js +2 -5
  216. package/dist/web/components/form/userOrgSelect/component/modal-select-h5.js +49 -35
  217. package/dist/web/components/form/userOrgSelect/component/org-tree-h5.js +7 -13
  218. package/dist/web/components/form/userOrgSelect/component/org-tree.js +26 -18
  219. package/dist/web/components/form/userOrgSelect/component/selected-list-h5.js +23 -40
  220. package/dist/web/components/form/userOrgSelect/component/selected-list.js +8 -5
  221. package/dist/web/components/form/userOrgSelect/component/user-org-list.js +35 -35
  222. package/dist/web/components/form/userOrgSelect/component/user-select-h5/index.js +30 -4
  223. package/dist/web/components/form/userOrgSelect/component/user-select-h5/user-list-h5.js +36 -50
  224. package/dist/web/components/form/userOrgSelect/component/user-select-h5/user-select-h5.js +9 -11
  225. package/dist/web/components/form/userOrgSelect/component/user-select-pc/error-tips.js +4 -4
  226. package/dist/web/components/form/userOrgSelect/component/user-select-pc/model-user-list.js +24 -17
  227. package/dist/web/components/form/userOrgSelect/component/user-select-pc/org-tree.js +2 -2
  228. package/dist/web/components/form/userOrgSelect/component/user-select-pc/user-model.js +12 -30
  229. package/dist/web/components/form/userOrgSelect/component/user-select-pc/user-select-pc.js +8 -8
  230. package/dist/web/components/form/userOrgSelect/component/userOrgSelect.css +20 -2
  231. package/dist/web/components/form/userOrgSelect/departTreeSelect/departTreeSelect.h5.js +68 -158
  232. package/dist/web/components/form/userOrgSelect/hooks/use-depart-data.js +4 -2
  233. package/dist/web/components/form-checkbox/index.js +36 -0
  234. package/dist/web/components/form-date/index.js +52 -0
  235. package/dist/web/components/form-depart-tree-select/index.js +22 -0
  236. package/dist/web/components/form-email/index.js +31 -0
  237. package/dist/web/components/form-image-uploader/index.js +50 -0
  238. package/dist/web/components/form-input/index.js +25 -0
  239. package/dist/web/components/form-input-hooks/index.js +284 -0
  240. package/dist/web/components/form-input-hooks/validator.js +124 -0
  241. package/dist/web/components/form-location/index.js +24 -0
  242. package/dist/web/components/form-multi-region/index.js +22 -0
  243. package/dist/web/components/form-phone/index.js +32 -0
  244. package/dist/web/components/form-radio/index.js +38 -0
  245. package/dist/web/components/form-region/index.js +24 -0
  246. package/dist/web/components/form-rich-text/index.js +22 -0
  247. package/dist/web/components/form-select/index.js +21 -0
  248. package/dist/web/components/form-switch/index.js +22 -0
  249. package/dist/web/components/form-text-area/index.js +22 -0
  250. package/dist/web/components/form-time/index.js +22 -0
  251. package/dist/web/components/form-upload-file/index.js +47 -0
  252. package/dist/web/components/form-url/index.js +31 -0
  253. package/dist/web/components/form-user-tree-select/index.js +24 -0
  254. package/dist/web/components/formdetail/index.css +213 -3
  255. package/dist/web/components/formdetail/index.js +156 -30
  256. package/dist/web/components/graphicCard/index.js +13 -25
  257. package/dist/web/components/grid/col.js +3 -2
  258. package/dist/web/components/grid/grid.js +4 -3
  259. package/dist/web/components/grid/row.js +3 -2
  260. package/dist/web/components/image/image.js +52 -57
  261. package/dist/web/components/image/index.js +2 -2
  262. package/dist/web/components/index.js +46 -3
  263. package/dist/web/components/link/index.js +3 -5
  264. package/dist/web/components/listView/index.js +29 -49
  265. package/dist/web/components/lottery/index.js +123 -143
  266. package/dist/web/components/modal/h5.css +3 -0
  267. package/dist/web/components/modal/index.js +3 -2
  268. package/dist/web/components/modal/modal.h5.js +8 -14
  269. package/dist/web/components/modal/modal.pc.js +5 -7
  270. package/dist/web/components/navLayout/index.js +13 -20
  271. package/dist/web/components/navigationBar/common.js +12 -14
  272. package/dist/web/components/navigationBar/h5Menu.js +18 -37
  273. package/dist/web/components/navigationBar/horizontalMenu.js +33 -50
  274. package/dist/web/components/navigationBar/index.css +2 -1
  275. package/dist/web/components/navigationBar/index.js +5 -10
  276. package/dist/web/components/navigationBar/verticalMenu.js +11 -13
  277. package/dist/web/components/pageLayout/PageContent/index.js +7 -14
  278. package/dist/web/components/pageLayout/index.css +10 -0
  279. package/dist/web/components/pageLayout/index.js +7 -12
  280. package/dist/web/components/phone/index.js +2 -4
  281. package/dist/web/components/phoneCode/index.js +2 -4
  282. package/dist/web/components/picker/datePicker.js +2 -2
  283. package/dist/web/components/picker/picker.js +2 -2
  284. package/dist/web/components/picker/timePicker.js +2 -2
  285. package/dist/web/components/qrcode/index.js +3 -0
  286. package/dist/web/components/qrcode/qr-code.js +26 -0
  287. package/dist/web/components/repeater/index.js +2 -2
  288. package/dist/web/components/repeater-item/index.js +2 -2
  289. package/dist/web/components/richText/index.js +74 -93
  290. package/dist/web/components/richTextView/index.js +3 -3
  291. package/dist/web/components/scrollView/index.js +4 -3
  292. package/dist/web/components/share/index.js +2 -4
  293. package/dist/web/components/slot/index.js +2 -2
  294. package/dist/web/components/statusContent/index.css +39 -0
  295. package/dist/web/components/statusContent/index.js +9 -0
  296. package/dist/web/components/swiper/index.js +44 -48
  297. package/dist/web/components/table/BaseTable.js +142 -190
  298. package/dist/web/components/table/ExportFileModalByApi/index.js +29 -60
  299. package/dist/web/components/table/FieldRender.js +47 -51
  300. package/dist/web/components/table/FilterFields.js +45 -71
  301. package/dist/web/components/table/Form/Enum.js +4 -4
  302. package/dist/web/components/table/Form/Location.js +9 -9
  303. package/dist/web/components/table/ImportFileModal/index.css +261 -0
  304. package/dist/web/components/table/ImportFileModal/index.js +47 -107
  305. package/dist/web/components/table/ImportFileModal/validate.js +9 -9
  306. package/dist/web/components/table/ImportFileModalByApi/index.css +35 -3
  307. package/dist/web/components/table/ImportFileModalByApi/index.js +96 -113
  308. package/dist/web/components/table/ImportFileModalByApi/uploadCSVFile.js +23 -47
  309. package/dist/web/components/table/InOrOutRecordModeal.js +26 -47
  310. package/dist/web/components/table/QuoteModal.js +3 -5
  311. package/dist/web/components/table/SelectableBlock/index.js +23 -27
  312. package/dist/web/components/table/UserDepartment/ViewCell.js +3 -3
  313. package/dist/web/components/table/UserDepartment/utils.js +4 -4
  314. package/dist/web/components/table/baseTable.css +0 -10
  315. package/dist/web/components/table/index.js +3 -5
  316. package/dist/web/components/tabs/index.js +5 -6
  317. package/dist/web/components/tabs/tabs.h5.js +12 -14
  318. package/dist/web/components/tabs/tabs.pc.js +15 -14
  319. package/dist/web/components/text/index.js +3 -2
  320. package/dist/web/components/uploaderFileView/index.js +4 -3
  321. package/dist/web/components/uploaderView/index.js +12 -16
  322. package/dist/web/components/userInfo/index.js +2 -4
  323. package/dist/web/components/wd-bubble/wd-bubble.js +10 -11
  324. package/dist/web/components/wd-button/wd-button.js +24 -8
  325. package/dist/web/components/wd-config-provider/wd-config-provider.js +3 -2
  326. package/dist/web/components/wd-divider/wd-divider.js +3 -2
  327. package/dist/web/components/wd-form/hooks/use-auth-value.js +43 -0
  328. package/dist/web/components/wd-form/hooks/use-remote-value.js +79 -0
  329. package/dist/web/components/wd-form/index.js +382 -0
  330. package/dist/web/components/wd-icon/wd-icon.js +3 -2
  331. package/dist/web/components/wd-image/image.js +98 -96
  332. package/dist/web/components/wd-image/index.js +4 -3
  333. package/dist/web/components/wd-link/wd-link.js +4 -8
  334. package/dist/web/components/wd-table/components/ExportFileModalByApi/ExportFileModalByApi.js +7 -0
  335. package/dist/web/components/wd-table/components/ExportFileModalByApi/index.css +9 -0
  336. package/dist/web/components/wd-table/components/ExportFileModalByApi/index.js +74 -0
  337. package/dist/web/components/wd-table/components/FieldRender/Form/Enum.js +56 -0
  338. package/dist/web/components/wd-table/components/FieldRender/Form/Location.css +11 -0
  339. package/dist/web/components/wd-table/components/FieldRender/Form/Location.js +127 -0
  340. package/dist/web/components/wd-table/components/FieldRender/ImagePreview.js +8 -0
  341. package/dist/web/components/wd-table/components/FieldRender/QuoteModal.js +17 -0
  342. package/dist/web/components/wd-table/components/FieldRender/UserDepartment/ViewCell.js +11 -0
  343. package/dist/web/components/wd-table/components/FieldRender/UserDepartment/utils.js +82 -0
  344. package/dist/web/components/wd-table/components/FieldRender/UserDepartment/viewCell.css +11 -0
  345. package/dist/web/components/wd-table/components/FieldRender/index.js +702 -0
  346. package/dist/web/components/wd-table/components/FilterFieldsPanel/Fields.js +82 -0
  347. package/dist/web/components/wd-table/components/FilterFieldsPanel/FilterFieldItem.js +86 -0
  348. package/dist/web/components/wd-table/components/FilterFieldsPanel/InputAdornment.js +9 -0
  349. package/dist/web/components/wd-table/components/FilterFieldsPanel/SelectSearch.js +44 -0
  350. package/dist/web/components/wd-table/components/FilterFieldsPanel/filterFieldsGenerate.js +113 -0
  351. package/dist/web/components/wd-table/components/FilterFieldsPanel/index.js +169 -0
  352. package/dist/web/components/wd-table/components/ImportFileModalByApi/index.js +44 -0
  353. package/dist/web/components/wd-table/components/InOrOutRecordModal.js +14 -0
  354. package/dist/web/components/wd-table/components/Pagination/index.js +11 -0
  355. package/dist/web/components/wd-table/components/SearchBox/index.js +45 -0
  356. package/dist/web/components/wd-table/components/Table/index.js +172 -0
  357. package/dist/web/components/wd-table/components/Table/util.js +63 -0
  358. package/dist/web/components/wd-table/components/ToolBar/index.js +34 -0
  359. package/dist/web/components/wd-table/components/deleteModal.js +40 -0
  360. package/dist/web/components/wd-table/components/index.js +10 -0
  361. package/dist/web/components/wd-table/hooks/useAuthFields.js +13 -0
  362. package/dist/web/components/wd-table/hooks/useChooseList.js +70 -0
  363. package/dist/web/components/wd-table/hooks/useDataSource.js +5 -0
  364. package/dist/web/components/wd-table/hooks/useQueryParams.js +41 -0
  365. package/dist/web/components/wd-table/hooks/useTableData.js +42 -0
  366. package/dist/web/components/wd-table/hooks/useViewFields.js +20 -0
  367. package/dist/web/components/wd-table/mock/index.js +202 -0
  368. package/dist/web/components/wd-table/utils/index.js +326 -0
  369. package/dist/web/components/wd-table/wd-table.js +459 -21
  370. package/dist/web/components/wd-text/wd-text.js +15 -14
  371. package/dist/web/components/web-view/index.css +5 -0
  372. package/dist/web/components/web-view/index.js +3 -0
  373. package/dist/web/components/web-view/web-view.js +61 -0
  374. package/dist/web/components/wedaVideo/index.js +2 -5
  375. package/dist/web/utils/constant.js +1 -0
  376. package/dist/web/utils/datasource.js +3 -1
  377. package/dist/web/utils/getModelParams.js +32 -0
  378. package/dist/web/utils/hooks/CreatePortal.js +3 -2
  379. package/dist/web/utils/hooks/EnumHoc.js +3 -2
  380. package/dist/web/utils/hooks/globalConnect.js +2 -3
  381. package/dist/web/utils/hooks/use-cloud-id-temp-url.js +6 -6
  382. package/dist/web/utils/hooks/useDataSource.js +22 -0
  383. package/dist/web/utils/loading-fallback.js +2 -2
  384. package/dist/web/utils/platform.js +21 -0
  385. package/dist/web/utils/tcb.js +0 -13
  386. package/dist/web/utils/tool.js +14 -0
  387. package/dist/web/utils/widget-api/index.js +39 -7
  388. package/package.json +32 -25
  389. package/dist/web/components/emptyContent/index.css +0 -26
  390. package/dist/web/components/flow/components/FlowModuleText/index.css +0 -4
  391. package/dist/web/components/flow/modules/process/index.css +0 -194
@@ -0,0 +1,702 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /* eslint-disable */
3
+ import React, { useMemo } from 'react';
4
+ import { useMediaQuery } from '@react-hookz/web';
5
+ import fromEntries from 'object.fromentries';
6
+ import { Modal, Table, Form, ConfigProvider } from 'tea-component';
7
+ import { formatTimeByType } from '../../../../utils/date';
8
+ import { safeJsonParse, isValueEmpty } from '../../../../utils/tool';
9
+ import Location, { locationProperties } from './Form/Location';
10
+ import { EnumView, formatEnum } from './Form/Enum';
11
+ import { ErrorBoundary } from 'react-error-boundary';
12
+ import RichTextView from '../../../richTextView';
13
+ import UploaderFileView from '../../../uploaderFileView';
14
+ import { ViewCell } from './UserDepartment/ViewCell';
15
+ import { QuoteModal } from './QuoteModal';
16
+ import { TABLE_SLOT_PREFIX } from '../../../../utils/constant';
17
+ import { getPrimaryField } from '../../../../utils/datasource';
18
+ import { useConfig } from '../../../../utils/config-context';
19
+ import { ImagePreview } from './ImagePreview';
20
+ const MODAL_SIZE = 'auto';
21
+ // 文字提示框包裹组件
22
+ const TextWrap = React.memo(function TextWrapComp(props) {
23
+ const { showTip, children, title: rawTitle } = props;
24
+ const title = rawTitle || children;
25
+ const rest = showTip ? { title, overflow: true } : { title };
26
+ return (_jsx("div", { className: "wd-text-overflow", ...rest, children: children }));
27
+ });
28
+ /**
29
+ * 根据类型获取展示字段组件的 render 方法,用于表格/详情中的值转换
30
+ * extra: { modelType: 'list' | 'detail' | 'update' | 'create', showTip: boolean }
31
+ * 表格中的字符串/枚举数组,详情中的字符串数组会截断并showTip
32
+ */
33
+ export function getFieldRender(field = {}, extra = {}) {
34
+ var _a;
35
+ const { type, format, items, properties, title } = field;
36
+ const { modelType, showTip = true } = extra;
37
+ const textProps = { showTip };
38
+ // 枚举-旧,新版 TODO
39
+ if ((_a = field['x-enumObj']) === null || _a === void 0 ? void 0 : _a.length) {
40
+ const XEnumObj = (val) => {
41
+ if (!val)
42
+ return '-';
43
+ const item = field['x-enumObj'].find((item) => (item === null || item === void 0 ? void 0 : item.value) === val);
44
+ return _jsx(TextWrap, { ...textProps, children: (item === null || item === void 0 ? void 0 : item.label) || '-' });
45
+ };
46
+ return XEnumObj;
47
+ }
48
+ // render 方法
49
+ const FieldRender = (val) => {
50
+ var _a;
51
+ if (isValueEmpty(val) ||
52
+ (type === 'array' && !(val === null || val === void 0 ? void 0 : val.length)) ||
53
+ (type === 'array' && (val === null || val === void 0 ? void 0 : val.length) && !((_a = Object.keys(val[0])) === null || _a === void 0 ? void 0 : _a.length))) {
54
+ return '-';
55
+ }
56
+ // fieldValue 值转换,如布尔/时间/枚举等
57
+ let fieldValue = val;
58
+ // 图片 render 方法
59
+ const xImageRender = (val) => (_jsx("div", { className: `${modelType === 'table' ? 'table-data-item-value' : ''}`, children: _jsx(ImagePreview, { srcList: val }) }));
60
+ // 地理位置 Render方法
61
+ const xLocationRender = (val, modelType, isInArray = false) => {
62
+ var _a;
63
+ if (isInArray) {
64
+ const value = val === null || val === void 0 ? void 0 : val.reduce((prev, curr) => {
65
+ const { address, longitude, latitude } = formatLocationData(curr).meta;
66
+ prev.push({
67
+ address,
68
+ longitude,
69
+ latitude,
70
+ });
71
+ return prev;
72
+ }, []);
73
+ const locationField = {
74
+ ...field,
75
+ items: {
76
+ ...items,
77
+ properties: locationProperties,
78
+ },
79
+ };
80
+ return (_jsx(ArrayComponent, { value: value, modelType: modelType, field: locationField, items: items }));
81
+ }
82
+ if (modelType === 'table') {
83
+ const content = (_a = formatLocationData(val)) === null || _a === void 0 ? void 0 : _a.flatContent;
84
+ return _jsx(TextWrap, { ...textProps, children: content });
85
+ }
86
+ else {
87
+ return _jsx(Location, { readonly: true, value: val });
88
+ }
89
+ };
90
+ if (type === 'string') {
91
+ if (format === 'x-rtf') {
92
+ // 富文本
93
+ const showRichText = (val) => {
94
+ const modal = Modal.show({
95
+ className: 'e-rich-text-view-modal',
96
+ caption: '内容展示',
97
+ size: MODAL_SIZE,
98
+ onClose: () => modal.destroy(),
99
+ children: _jsx(RichTextView, { value: val }),
100
+ });
101
+ };
102
+ fieldValue = JSON.stringify(val);
103
+ return modelType === 'detail' ? (_jsx(RichTextView, { value: fieldValue })) : (_jsx("a", { onClick: (e) => {
104
+ e.stopPropagation();
105
+ showRichText(fieldValue);
106
+ }, children: "\u8BE6\u60C5" }));
107
+ }
108
+ else if (format === 'x-image') {
109
+ // 图片
110
+ return xImageRender(fieldValue);
111
+ }
112
+ else if (format === 'x-file') {
113
+ // 文件
114
+ return (_jsx(UploaderFileView, { value: fieldValue, single: (extra === null || extra === void 0 ? void 0 : extra.modelType) !== 'detail' }));
115
+ }
116
+ else if (isShowOrgsView(field, modelType)) {
117
+ return (_jsx(ViewCell, { data: fieldValue, showType: modelType,
118
+ // type={field['x-parent']?.parentDataSourceName === 'sys_department' ? 'org' : 'user'}
119
+ relation: extra === null || extra === void 0 ? void 0 : extra.relation }));
120
+ }
121
+ else if (format === 'x-enum') {
122
+ // 枚举(新)
123
+ return (_jsx(TextWrap, { ...textProps, title: val, children: _jsx(EnumView, { field: field, values: val }) }));
124
+ }
125
+ else if (format === 'url') {
126
+ // 网址
127
+ return (_jsx("a", { target: "_blank", href: fieldValue, rel: "noreferrer", children: _jsx(TextWrap, { ...textProps, children: fieldValue }) }));
128
+ }
129
+ else {
130
+ return _jsx(TextWrap, { ...textProps, children: fieldValue });
131
+ }
132
+ }
133
+ else if (type === 'number') {
134
+ fieldValue = formatNumber(val, field);
135
+ return _jsx(TextWrap, { children: fieldValue });
136
+ }
137
+ else if (type === 'boolean') {
138
+ fieldValue = formatBoolean(val);
139
+ return _jsx(TextWrap, { children: fieldValue });
140
+ }
141
+ else if (type === 'object') {
142
+ const objectRender = ({ value, modelType, fields }) => {
143
+ if (typeof val === 'object') {
144
+ return (_jsx(DataItemView, { value: value, modelType: modelType, fields: fields }));
145
+ }
146
+ return _jsx(TextWrap, { ...textProps, children: value });
147
+ };
148
+ fieldValue = safeJsonParse(val);
149
+ if ((field === null || field === void 0 ? void 0 : field.format) === 'x-location') {
150
+ return xLocationRender(fieldValue, modelType);
151
+ }
152
+ else if (modelType === 'detail') {
153
+ return objectRender({
154
+ value: fieldValue,
155
+ modelType: 'detail',
156
+ fields: properties,
157
+ });
158
+ }
159
+ else {
160
+ return (_jsx(QuoteModal, { className: "e-object-view-modal", caption: title, size: MODAL_SIZE, children: objectRender({
161
+ value: val,
162
+ modelType: { modelType },
163
+ fields: properties,
164
+ }) }));
165
+ }
166
+ }
167
+ else if (type === 'array') {
168
+ if (field.name === '_departmentList' &&
169
+ ['table', 'detail'].includes(modelType)) {
170
+ return _jsx(TextWrap, { ...textProps, children: val || '-' });
171
+ }
172
+ if (format === 'x-enum') {
173
+ // 枚举(新)
174
+ return (_jsx(TextWrap, { ...textProps, title: val, children: _jsx(EnumView, { field: field, values: val }) }));
175
+ }
176
+ else if ((items === null || items === void 0 ? void 0 : items.format) === 'x-location') {
177
+ // 地理位置
178
+ return xLocationRender(fieldValue, modelType, true);
179
+ }
180
+ else if ((items === null || items === void 0 ? void 0 : items.format) === 'x-image') {
181
+ // 图片数组
182
+ return xImageRender(fieldValue);
183
+ }
184
+ else if ((items === null || items === void 0 ? void 0 : items.format) === 'x-file' && (extra === null || extra === void 0 ? void 0 : extra.modelType) === 'detail') {
185
+ // 文件数组,在详情页和表格页展示不同
186
+ return _jsx(UploaderFileView, { value: fieldValue, single: false });
187
+ }
188
+ else {
189
+ fieldValue = safeJsonParse(val);
190
+ return (_jsx(ArrayComponent, { value: fieldValue, field: field, modelType: modelType, items: items }));
191
+ }
192
+ }
193
+ return _jsx("span", { children: JSON.stringify(fieldValue) });
194
+ };
195
+ return FieldRender;
196
+ }
197
+ /**
198
+ * object类型,展示表单组件
199
+ */
200
+ export const DataItemView = ({ fields, modelType, value }) => {
201
+ const isH5 = useMediaQuery('(max-width: 768px)');
202
+ return (_jsx(Form, { readonly: true, className: isH5 ? 'tea-form--vertical' : '', children: Object.entries(fields).map(([key, field]) => {
203
+ const fieldRender = getFieldRender(field, {
204
+ showTip: false,
205
+ modelType,
206
+ });
207
+ return (_jsx(Form.Item, { label: field.title, children: _jsx(Form.Text, { children: fieldRender(value === null || value === void 0 ? void 0 : value[(field === null || field === void 0 ? void 0 : field.name) || key]) }) }, key));
208
+ }) }));
209
+ };
210
+ /**
211
+ * object,展示表格组件
212
+ */
213
+ export const DataTableView = ({ fields, value }) => {
214
+ const { classPrefix } = useConfig();
215
+ const columns = useMemo(() => {
216
+ var _a;
217
+ const rawFields = (_a = Object === null || Object === void 0 ? void 0 : Object.entries(fields.properties)) === null || _a === void 0 ? void 0 : _a.map(([name, field]) => Object.assign({}, field, { name }));
218
+ const rawFieldsSort = rawFields.sort((a, b) => a['x-index'] - b['x-index']);
219
+ const baseColumns = getColumns({
220
+ columnSets: [],
221
+ fields: rawFieldsSort,
222
+ isH5: false,
223
+ });
224
+ return baseColumns;
225
+ }, [fields]);
226
+ return (_jsx(ConfigProvider, { classPrefix: classPrefix, children: _jsx(Table, { className: `${classPrefix}-table-wrap`, bordered: "all", recordKey: "_id", records: [].concat(value), columns: columns }) }));
227
+ };
228
+ /**
229
+ * array类型,展示组件
230
+ */
231
+ const ArrayComponent = ({ items, modelType, value, field }) => {
232
+ const isH5 = useMediaQuery('(max-width: 768px)');
233
+ // PC端 数组嵌套子对象时,显示为表格
234
+ if (items.type === 'object' && !isH5) {
235
+ if (modelType === 'detail') {
236
+ return _jsx(DataTableView, { value: value, fields: field.items });
237
+ }
238
+ return (_jsx(QuoteModal, { className: "e-array-view-modal", caption: field.title, size: MODAL_SIZE, children: _jsx(DataTableView, { value: value, fields: field.items }) }));
239
+ }
240
+ // H5端或不为嵌套对象时,循环渲染字段
241
+ return (_jsx("div", { children: Array.isArray(value) &&
242
+ (value === null || value === void 0 ? void 0 : value.map((item, index) => {
243
+ const itemRender = getFieldRender(items, { modelType });
244
+ return (_jsx("div", { className: "field-array-item", children: itemRender(item) }, index));
245
+ })) }));
246
+ };
247
+ /**
248
+ * 转换数字类型
249
+ */
250
+ export const formatNumber = (value, field) => {
251
+ let newValue = value;
252
+ try {
253
+ if (['date', 'time', 'datetime'].includes(field === null || field === void 0 ? void 0 : field.format) &&
254
+ typeof value === 'number') {
255
+ newValue = formatTimeByType(field === null || field === void 0 ? void 0 : field.format, value, field);
256
+ }
257
+ else {
258
+ newValue = formatNumberFix(value, field, true);
259
+ }
260
+ }
261
+ catch (e) { }
262
+ return newValue;
263
+ };
264
+ /**
265
+ * 转换布尔值类型
266
+ */
267
+ export const formatBoolean = (value) => {
268
+ let newValue = value;
269
+ try {
270
+ if (typeof value === 'boolean') {
271
+ newValue = value ? '是' : '否';
272
+ }
273
+ else {
274
+ newValue = value;
275
+ }
276
+ }
277
+ catch (e) { }
278
+ return newValue;
279
+ };
280
+ /**
281
+ * 地理位置格式服务端数据转换
282
+ * @param {*} location
283
+ * @returns
284
+ */
285
+ export const formatLocationData = (location) => {
286
+ const { address, geopoint } = location || {};
287
+ const [longitude, latitude] = (geopoint === null || geopoint === void 0 ? void 0 : geopoint.coordinates) || [];
288
+ const content = address ? `${address}(${latitude},${longitude})` : '-';
289
+ return {
290
+ meta: { address, longitude, latitude },
291
+ flatContent: content,
292
+ };
293
+ };
294
+ /**
295
+ * 数字类型-有小数点时补齐0
296
+ * 值不为数字时原值返回,补齐 0 时返回 string,否则返回 number
297
+ */
298
+ export const formatNumberFix = (val, field, setZero = false) => {
299
+ const num = parseFloat(`${val}`);
300
+ if (isNaN(num)) {
301
+ return val;
302
+ }
303
+ if (typeof (field === null || field === void 0 ? void 0 : field.numberCount) === 'number') {
304
+ const numFix = num.toFixed(field === null || field === void 0 ? void 0 : field.numberCount);
305
+ return setZero ? numFix : parseFloat(numFix);
306
+ }
307
+ return num;
308
+ };
309
+ /**
310
+ * 根据 fields 信息生成 column
311
+ * h5 和 pc 部分参数不同
312
+ */
313
+ export const getColumns = ({ columnSets = [], fields, isH5 = false }) => fields === null || fields === void 0 ? void 0 : fields.map((item) => formatFieldToColumn(item, isH5, columnSets));
314
+ const TableCell = ({ record, field, isH5 }) => {
315
+ const component = React.useMemo(() => {
316
+ const { name } = field;
317
+ const value = getFieldValue(name, record);
318
+ const extra = isH5
319
+ ? { modelType: 'table-h5', showTip: false, relation: record[`@${name}`] }
320
+ : { modelType: 'table', relation: record[`@${name}`] };
321
+ return getFieldRender(field, extra)(value);
322
+ }, [record, field, isH5]);
323
+ // 处理渲染错误
324
+ return (_jsx(ErrorBoundary, { FallbackComponent: () => _jsx("span", { className: "", children: "\u274C \u6570\u636E\u5F02\u5E38" }), children: component }));
325
+ };
326
+ /**
327
+ * 根据 field 属性,生成 column 配置
328
+ * https://git.woa.com/QBase/lcap/common-application-specs/blob/master/types/platform/datasource.ts
329
+ */
330
+ export const formatFieldToColumn = (field, isH5, columnSets) => {
331
+ const { name, title } = field;
332
+ // 计算列宽度,略大于计算宽度
333
+ const width = getFieldWidth(field) + 10;
334
+ const item = columnSets === null || columnSets === void 0 ? void 0 : columnSets.find((i) => i.key === name);
335
+ const isIllegalWidth = typeof (item === null || item === void 0 ? void 0 : item.width) !== 'number';
336
+ return {
337
+ width: !item || (item === null || item === void 0 ? void 0 : item.widthType) === 'auto' || isIllegalWidth
338
+ ? width
339
+ : item === null || item === void 0 ? void 0 : item.width,
340
+ render: (record) => _jsx(TableCell, { record: record, field: field, isH5: isH5 }),
341
+ key: name,
342
+ slotKey: (item === null || item === void 0 ? void 0 : item.slotKey) || name,
343
+ header: title,
344
+ align: (item === null || item === void 0 ? void 0 : item.align) || 'left',
345
+ fixed: '',
346
+ };
347
+ };
348
+ // 计算 field 占据的宽度
349
+ export const getFieldWidth = (field) => {
350
+ var _a;
351
+ const TypeFormatWidthMap = {
352
+ string: {
353
+ default: 120,
354
+ 'x-image': 100,
355
+ 'x-file': 150,
356
+ },
357
+ number: {
358
+ datetime: 200,
359
+ date: 150,
360
+ default: 150,
361
+ },
362
+ boolean: {
363
+ default: 100,
364
+ },
365
+ object: {
366
+ default: 60,
367
+ },
368
+ array: {
369
+ default: 120,
370
+ 'x-image': 230,
371
+ 'x-file': 150,
372
+ },
373
+ };
374
+ const { title = '', type = '', format = '', items } = field;
375
+ // 按名称列宽度
376
+ const nameWidth = title.length * 25;
377
+ // 按类型列宽度
378
+ const typeWidth = ((_a = TypeFormatWidthMap === null || TypeFormatWidthMap === void 0 ? void 0 : TypeFormatWidthMap[type]) === null || _a === void 0 ? void 0 : _a[format || (items === null || items === void 0 ? void 0 : items.format) || 'default']) || 0;
379
+ // 最终宽度
380
+ const width = typeWidth
381
+ ? Math.max(nameWidth, typeWidth)
382
+ : Math.max(nameWidth, 120);
383
+ return width;
384
+ };
385
+ /**
386
+ * https://tcloud-dev.oa.com/document/product/1505/58791?!preview&!document=1
387
+ * @param {[String]} processHold [占有: object, 存在, 被有一个流程拥有, 置灰]
388
+ * @param {[String]} lock [锁定: 没有那个字段 空字符串, 有值就锁定, 置灰]
389
+ */
390
+ export const isProcessHoldOrLocked = (processHold, lock) => {
391
+ let isProcessHold = false;
392
+ if (processHold && typeof processHold === 'object') {
393
+ const keys = Object.keys(processHold);
394
+ if (keys === null || keys === void 0 ? void 0 : keys.length) {
395
+ isProcessHold = true;
396
+ }
397
+ }
398
+ return isProcessHold || !!lock;
399
+ };
400
+ export const isShowOrgsView = (field, modelType) => {
401
+ var _a;
402
+ const { format } = field;
403
+ return (format === 'father-son' &&
404
+ !field['x-system'] &&
405
+ ['sys_department', 'sys_user'].includes((_a = field['x-parent']) === null || _a === void 0 ? void 0 : _a.parentDataSourceName) &&
406
+ ['table', 'detail', 'table-h5'].includes(modelType));
407
+ };
408
+ /**
409
+ * 导出数据格式转换
410
+ * 目前 number/boolean/x-enum/x-location 会被转换
411
+ */
412
+ export const formatDataToExport = (datas, fields, enumOptions = {}) => {
413
+ var _a, _b, _c, _d, _e, _f;
414
+ if (isValueEmpty(datas) || isValueEmpty(fields)) {
415
+ return datas;
416
+ }
417
+ // 数组
418
+ if (Array.isArray(datas)) {
419
+ return datas.map((item) => formatDataToExport(item, fields));
420
+ }
421
+ // 对象
422
+ if (typeof datas === 'object') {
423
+ const newDatas = {};
424
+ for (const field of fields) {
425
+ const key = field === null || field === void 0 ? void 0 : field.name;
426
+ const zhTitle = (field === null || field === void 0 ? void 0 : field.title) || key;
427
+ const data = datas[key];
428
+ if ((_a = field['x-enumObj']) === null || _a === void 0 ? void 0 : _a.length) {
429
+ // 枚举-旧
430
+ const item = field['x-enumObj'].find((item) => (item === null || item === void 0 ? void 0 : item.value) === data);
431
+ newDatas[zhTitle] = (item === null || item === void 0 ? void 0 : item.label) || (item === null || item === void 0 ? void 0 : item.value);
432
+ }
433
+ else {
434
+ switch (field === null || field === void 0 ? void 0 : field.type) {
435
+ case 'string':
436
+ newDatas[zhTitle] = data;
437
+ if ((field === null || field === void 0 ? void 0 : field.format) === 'x-enum') {
438
+ newDatas[zhTitle] = formatEnum(data, field, enumOptions);
439
+ }
440
+ break;
441
+ case 'number':
442
+ newDatas[zhTitle] = formatNumber(data, field);
443
+ break;
444
+ case 'boolean':
445
+ newDatas[zhTitle] = formatBoolean(data);
446
+ break;
447
+ case 'object':
448
+ if ((field === null || field === void 0 ? void 0 : field.format) === 'x-location') {
449
+ newDatas[zhTitle] = (_b = formatLocationData(data)) === null || _b === void 0 ? void 0 : _b.flatContent;
450
+ }
451
+ else {
452
+ newDatas[zhTitle] = formatDataToExport(data, Object.values((field === null || field === void 0 ? void 0 : field.properties) || {}));
453
+ }
454
+ break;
455
+ case 'array':
456
+ if (((_c = field === null || field === void 0 ? void 0 : field.items) === null || _c === void 0 ? void 0 : _c.type) === 'object') {
457
+ newDatas[zhTitle] = formatDataToExport([].concat(data), Object.values(((_d = field === null || field === void 0 ? void 0 : field.items) === null || _d === void 0 ? void 0 : _d.properties) || {}));
458
+ }
459
+ else if (((_e = field === null || field === void 0 ? void 0 : field.items) === null || _e === void 0 ? void 0 : _e.type) === 'number') {
460
+ newDatas[zhTitle] = []
461
+ .concat(data)
462
+ .map((d) => formatNumber(d, field === null || field === void 0 ? void 0 : field.items));
463
+ }
464
+ else if (((_f = field === null || field === void 0 ? void 0 : field.items) === null || _f === void 0 ? void 0 : _f.type) === 'boolean') {
465
+ newDatas[zhTitle] = [].concat(data).map((d) => formatBoolean(d));
466
+ }
467
+ else if ((field === null || field === void 0 ? void 0 : field.format) === 'x-enum') {
468
+ newDatas[zhTitle] = formatEnum(data, field, enumOptions);
469
+ }
470
+ else if (field.name === '_departmentList') {
471
+ newDatas[zhTitle] = getFieldValue('_departmentList', datas);
472
+ }
473
+ else {
474
+ newDatas[zhTitle] = data;
475
+ }
476
+ break;
477
+ default:
478
+ newDatas[zhTitle] = data;
479
+ }
480
+ }
481
+ }
482
+ return newDatas;
483
+ }
484
+ return datas;
485
+ };
486
+ /**
487
+ * 导出数据为xlsx库接受的格式
488
+ * [[title1, title2], [value1, value2], [value1, value2]]
489
+ */
490
+ export const formatDataToXlsx = (datas, fields, enumOptions = {}) => {
491
+ const getCellValue = (data, field) => {
492
+ const key = field === null || field === void 0 ? void 0 : field.name;
493
+ const value = data === null || data === void 0 ? void 0 : data[key];
494
+ if (value === undefined)
495
+ return value;
496
+ const dataProcessed = formatDataToExport(data, [{ ...field, title: key }], enumOptions);
497
+ let valueProcessed = dataProcessed[key];
498
+ if (field.type === 'object') {
499
+ // 对象字段,展示成 json 格式
500
+ valueProcessed = JSON.stringify(valueProcessed);
501
+ valueProcessed = valueProcessed === '{}' ? undefined : valueProcessed;
502
+ }
503
+ else if (field.type === 'array') {
504
+ // 数组字段,以;隔开,元素展示成 json 格式
505
+ valueProcessed = []
506
+ .concat(valueProcessed)
507
+ .map((d) => (typeof d === 'object' ? JSON.stringify(d) : d))
508
+ .join(';');
509
+ valueProcessed = valueProcessed === '' ? undefined : valueProcessed;
510
+ }
511
+ // 值数字格式转为字符串
512
+ if (typeof valueProcessed === 'number') {
513
+ valueProcessed = `${valueProcessed}`;
514
+ }
515
+ return valueProcessed;
516
+ };
517
+ if (isValueEmpty(datas) || isValueEmpty(fields))
518
+ return [[]];
519
+ const head = fields.map((field) => field === null || field === void 0 ? void 0 : field.title);
520
+ const rows = datas.map((data) => {
521
+ const row = fields.map((field) => getCellValue(data, field));
522
+ return row;
523
+ });
524
+ return [].concat([head], rows);
525
+ };
526
+ /**
527
+ * 生成搜索配置
528
+ * 1、过滤不支持搜索的字段,时间字段不支持
529
+ * 2、生成配置
530
+ * 3、枚举/数字需要特殊处理
531
+ */
532
+ export const getSearchAttributes = (fields) => fields
533
+ .filter((field) => {
534
+ // 不支持搜索的类型
535
+ if (field.type === 'array' || field.type === 'object')
536
+ return false;
537
+ if (['time', 'date', 'datetime'].includes(field.format))
538
+ return false;
539
+ if (field['x-parent'])
540
+ return false;
541
+ return true;
542
+ })
543
+ .map((field) => {
544
+ var _a;
545
+ const inputTypes = ['string', 'number'];
546
+ const config = {
547
+ fieldType: field.type,
548
+ format: field.format,
549
+ type: (inputTypes === null || inputTypes === void 0 ? void 0 : inputTypes.includes(field.type)) ? 'input' : 'single',
550
+ key: field.name,
551
+ name: field.title,
552
+ };
553
+ if (field.type === 'boolean') {
554
+ config.type = 'single';
555
+ config.values = [
556
+ { key: true, name: '是' },
557
+ { key: false, name: '否' },
558
+ ];
559
+ }
560
+ // 枚举-旧,新版TODO
561
+ if ((_a = field['x-enumObj']) === null || _a === void 0 ? void 0 : _a.length) {
562
+ config.values = field['x-enumObj'].map((enumItem) => ({
563
+ key: enumItem === null || enumItem === void 0 ? void 0 : enumItem.value,
564
+ name: enumItem === null || enumItem === void 0 ? void 0 : enumItem.label,
565
+ }));
566
+ config.type = 'single';
567
+ config.format = 'x-enum';
568
+ }
569
+ return config;
570
+ });
571
+ export const getFieldValue = (name, _record) => {
572
+ var _a;
573
+ const record = getPrimaryField(_record);
574
+ if (name === '_departmentList')
575
+ return (((_a = record === null || record === void 0 ? void 0 : record['##SHOW']) === null || _a === void 0 ? void 0 : _a._departmentList) || []).join(',');
576
+ return record[name];
577
+ };
578
+ export const slotRender = (slot, props = {}) => typeof slot === 'function' ? slot(props) : slot;
579
+ /**
580
+ * 根据列管理,过滤表格列信息
581
+ * columns: { key, header, width, align, render,fixed }[] Tea Table 的列
582
+ * columnSets: { key, header, width, align, genre,fixed ,slotKey}[] 模型表格列管理属性
583
+ * slots: object 模型表格作用域插槽
584
+ * isH5: 判断自定义插槽列能否展示,目前是正常展示
585
+ */
586
+ export const filterCustomColumns = ({ columns, columnSets, slots }) => {
587
+ if (!Array.isArray(columnSets) || !(columnSets === null || columnSets === void 0 ? void 0 : columnSets.length))
588
+ return columns;
589
+ // 根据字段类型获取render方式
590
+ const columnsMap = columns.reduce((acc, item) => {
591
+ acc[item.key] = item;
592
+ return acc;
593
+ }, {});
594
+ return columnSets.map((item2) => {
595
+ var _a;
596
+ const { key, header, genre, fixed } = item2;
597
+ const isIllegalWidth = typeof (item2 === null || item2 === void 0 ? void 0 : item2.width) !== 'number';
598
+ item2.width =
599
+ (item2 === null || item2 === void 0 ? void 0 : item2.widthType) === 'auto' || isIllegalWidth
600
+ ? ((_a = columnsMap === null || columnsMap === void 0 ? void 0 : columnsMap[key]) === null || _a === void 0 ? void 0 : _a.width) || 120
601
+ : item2 === null || item2 === void 0 ? void 0 : item2.width;
602
+ // 拿到自定义列属性值
603
+ const customColumn = {
604
+ ...columnsMap[key],
605
+ ...item2,
606
+ key,
607
+ header,
608
+ fixed,
609
+ };
610
+ if (genre === 'slot') {
611
+ // 拿到列对应的插槽
612
+ const slot = slots[`${TABLE_SLOT_PREFIX}${(item2 === null || item2 === void 0 ? void 0 : item2.slotKey) || key}`];
613
+ const TableSlotCell = ({ record, rowKey, recordIndex, column, columnIndex, }) => {
614
+ const component = React.useMemo(() => {
615
+ // 计算单元格的值
616
+ return slotRender(slot, {
617
+ record,
618
+ rowKey,
619
+ recordIndex,
620
+ column,
621
+ columnIndex,
622
+ });
623
+ }, [record, rowKey, recordIndex, column, columnIndex]);
624
+ return _jsx(_Fragment, { children: component });
625
+ };
626
+ customColumn.render = (record, rowKey, recordIndex, column, columnIndex) => (_jsx(TableSlotCell, { record: record, rowKey: rowKey, recordIndex: recordIndex, column: column, columnIndex: columnIndex }));
627
+ }
628
+ return customColumn;
629
+ });
630
+ };
631
+ /**
632
+ * 过滤字段列表
633
+ * 导出/搜索框,不展示自定义列
634
+ */
635
+ export const filterCustomFields = ({ fields, columnSets, isFilterGenre = false, }) => {
636
+ if (!Array.isArray(fields))
637
+ return [];
638
+ if (!Array.isArray(columnSets))
639
+ return fields;
640
+ const fieldsMap = fromEntries(fields.map((item) => [item.name, item]));
641
+ return columnSets
642
+ .filter((item1) => (item1 === null || item1 === void 0 ? void 0 : item1.key) &&
643
+ fieldsMap[item1.key] &&
644
+ ((item1 === null || item1 === void 0 ? void 0 : item1.genre) !== 'slot' || isFilterGenre))
645
+ .map((item2) => ({ ...fieldsMap[item2.key], title: item2.header }));
646
+ };
647
+ /**
648
+ * 列管理加入冻结属性
649
+ */
650
+ export const getFixedColumnSets = ({ fixedFront = '', fixedEnd = '', columnSets, }) => {
651
+ if (!Array.isArray(columnSets))
652
+ return columnSets;
653
+ const fixedFrontIndex = columnSets.findIndex((item) => (item === null || item === void 0 ? void 0 : item.key) && item.key.length > 0 && item.key === fixedFront);
654
+ const fixedEndIndex = columnSets.findIndex((item) => (item === null || item === void 0 ? void 0 : item.key) && item.key.length > 0 && item.key === fixedEnd);
655
+ return Array.isArray(columnSets)
656
+ ? columnSets.map((item, index) => {
657
+ // 当冻结尾列在冻结前列之后时,冻结尾列属性才生效
658
+ if (fixedEndIndex >= 0 &&
659
+ fixedEndIndex > fixedFrontIndex &&
660
+ index >= fixedEndIndex) {
661
+ return { ...item, fixed: 'right' };
662
+ }
663
+ else if (fixedFrontIndex >= 0 && index <= fixedFrontIndex) {
664
+ return { ...item, fixed: 'left' };
665
+ }
666
+ else {
667
+ return { ...item, fixed: '' };
668
+ }
669
+ })
670
+ : [];
671
+ };
672
+ /**
673
+ * 列管理字段转换
674
+ */
675
+ export const getTableColumns = ({ fields, columnSets, slots, fixedFront, fixedEnd, isH5, }) => {
676
+ const defaultColumns = getColumns({ columnSets, fields, isH5: false });
677
+ let fixedColumnSets = columnSets;
678
+ // h5端不冻结
679
+ if (!isH5) {
680
+ fixedColumnSets = getFixedColumnSets({
681
+ fixedFront,
682
+ fixedEnd,
683
+ columnSets,
684
+ });
685
+ }
686
+ const baseColumns = filterCustomColumns({
687
+ columns: defaultColumns,
688
+ columnSets: fixedColumnSets,
689
+ slots,
690
+ });
691
+ return baseColumns.map((i) => ({
692
+ ...i,
693
+ // key值默认为字段的name值,同时作为table的key值需要唯一,因此重新设置为slotKey
694
+ key: (i === null || i === void 0 ? void 0 : i.slotKey) || (i === null || i === void 0 ? void 0 : i.key),
695
+ // 此字段为colum 绑定字段的key值,业务场景使用次字段
696
+ fieldKey: i === null || i === void 0 ? void 0 : i.key,
697
+ }));
698
+ };
699
+ export const mapColumKey = (columnSets) => {
700
+ // 业务场景,多依赖key字段,还原为字段值
701
+ return columnSets.map((i) => ({ ...i, key: i.fieldKey }));
702
+ };