@cloudbase/weda-ui 3.4.1 → 3.4.3

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 (398) hide show
  1. package/dist/configs/actions/showModal.json +21 -0
  2. package/dist/configs/actions/showToast.json +11 -2
  3. package/dist/configs/components/auth.json +2 -1
  4. package/dist/configs/components/button.js +240 -0
  5. package/dist/configs/components/calendar.json +4 -2
  6. package/dist/configs/components/carousel.json +3 -2
  7. package/dist/configs/components/chart/bar.json +5 -4
  8. package/dist/configs/components/chart/line.js +868 -0
  9. package/dist/configs/components/chart/pie.json +5 -4
  10. package/dist/configs/components/chart/statisticsCard.json +9 -8
  11. package/dist/configs/components/container.js +64 -0
  12. package/dist/configs/components/dataView.json +18 -3
  13. package/dist/configs/components/drawer.json +2 -1
  14. package/dist/configs/components/flow/flow.json +26 -0
  15. package/dist/configs/components/flow/flowbasic.json +122 -0
  16. package/dist/configs/components/flow/flowchart.json +22 -0
  17. package/dist/configs/components/flow/flowcontrol.json +66 -0
  18. package/dist/configs/components/flow/flowlayout.json +31 -0
  19. package/dist/configs/components/flow/flowprocess.json +122 -0
  20. package/dist/configs/components/form/checkbox.json +2 -1
  21. package/dist/configs/components/form/departTreeSelect.json +2 -1
  22. package/dist/configs/components/form/form.json +3 -2
  23. package/dist/configs/components/form/input.json +2 -1
  24. package/dist/configs/components/form/location.json +3 -2
  25. package/dist/configs/components/form/radio.json +2 -1
  26. package/dist/configs/components/form/richText.json +2 -1
  27. package/dist/configs/components/form/select.json +6 -1
  28. package/dist/configs/components/form/switch.json +2 -1
  29. package/dist/configs/components/form/textarea.json +2 -1
  30. package/dist/configs/components/form/tips.json +2 -1
  31. package/dist/configs/components/form/uploader.json +2 -1
  32. package/dist/configs/components/form/uploaderFile.json +2 -1
  33. package/dist/configs/components/form/userTreeSelect.json +2 -1
  34. package/dist/configs/components/formdetail.json +5 -3
  35. package/dist/configs/components/graphicCard.json +3 -2
  36. package/dist/configs/components/image.js +195 -0
  37. package/dist/configs/components/link.js +68 -0
  38. package/dist/configs/components/listView.json +72 -10
  39. package/dist/configs/components/lottery.json +7 -3
  40. package/dist/configs/components/modal.js +72 -0
  41. package/dist/configs/components/navLayout.json +4 -3
  42. package/dist/configs/components/navigationBar.json +4 -3
  43. package/dist/configs/components/pagelayout.json +31 -0
  44. package/dist/configs/components/richtextview.json +5 -4
  45. package/dist/configs/components/scrollVeiw.json +98 -75
  46. package/dist/configs/components/slot.json +2 -1
  47. package/dist/configs/components/swiper.json +4 -3
  48. package/dist/configs/components/table.json +734 -0
  49. package/dist/configs/components/tabs.js +120 -0
  50. package/dist/configs/components/text.js +109 -0
  51. package/dist/configs/components/wd-bubble.json +170 -0
  52. package/dist/configs/components/wedaVideo.json +8 -3
  53. package/dist/configs/components/wxOpenApi/phone.js +126 -0
  54. package/dist/configs/components/wxOpenApi/phoneCode.js +117 -0
  55. package/dist/configs/components/wxOpenApi/share.js +164 -0
  56. package/dist/configs/components/wxOpenApi/userInfo.js +168 -0
  57. package/dist/configs/index.js +30 -12
  58. package/dist/configs/type-utils/index.js +89 -0
  59. package/dist/web/components/button/index.js +1 -1
  60. package/dist/web/components/carousel/index.js +10 -5
  61. package/dist/web/components/flow/components/FlowModuleText/Content.js +6 -0
  62. package/dist/web/components/flow/components/FlowModuleText/Title.js +16 -0
  63. package/dist/web/components/flow/components/FlowModuleText/index.css +7 -0
  64. package/dist/web/components/flow/components/FlowModuleText/index.js +7 -0
  65. package/dist/web/components/flow/components/FlowModuleText/utils.js +34 -0
  66. package/dist/web/components/flow/components/FlowStatusText/index.js +37 -0
  67. package/dist/web/components/flow/components/FlowUserSelect/index.css +119 -0
  68. package/dist/web/components/flow/components/FlowUserSelect/index.js +115 -0
  69. package/dist/web/components/flow/components/HighLightComment/index.js +31 -0
  70. package/dist/web/components/flow/components/HighlightTextarea/index.css +45 -0
  71. package/dist/web/components/flow/components/HighlightTextarea/index.js +131 -0
  72. package/dist/web/components/flow/components/UserSelectModel/UserSelect.js +71 -0
  73. package/dist/web/components/flow/components/UserSelectModel/UserSelectMobile.css +11 -0
  74. package/dist/web/components/flow/components/UserSelectModel/UserSelectMobile.js +83 -0
  75. package/dist/web/components/flow/components/UserSelectModel/index.js +18 -0
  76. package/dist/web/components/flow/components/WedaUserTransfer/index.css +6 -0
  77. package/dist/web/components/flow/components/WedaUserTransfer/index.js +162 -0
  78. package/dist/web/components/flow/components/index.js +7 -0
  79. package/dist/web/components/flow/constants/index.js +65 -0
  80. package/dist/web/components/flow/frame/getCommonFlowData.js +78 -0
  81. package/dist/web/components/flow/frame/hooks/index.js +2 -0
  82. package/dist/web/components/flow/frame/hooks/useCommonFlowRequest.js +148 -0
  83. package/dist/web/components/flow/frame/hooks/useElementMediaQuery.js +15 -0
  84. package/dist/web/components/flow/frame/index.js +58 -0
  85. package/dist/web/components/flow/frame/types.js +265 -0
  86. package/dist/web/components/flow/frame/utils.js +81 -0
  87. package/dist/web/components/flow/modules/basic/Basic.css +19 -0
  88. package/dist/web/components/flow/modules/basic/Basic.js +48 -0
  89. package/dist/web/components/flow/modules/basic/BasicMobile.css +32 -0
  90. package/dist/web/components/flow/modules/basic/BasicMobile.js +41 -0
  91. package/dist/web/components/flow/modules/basic/index.js +13 -0
  92. package/dist/web/components/flow/modules/basic/utils.js +20 -0
  93. package/dist/web/components/flow/modules/chart/Chart.js +302 -0
  94. package/dist/web/components/flow/modules/chart/constants.js +28 -0
  95. package/dist/web/components/flow/modules/chart/index.css +90 -0
  96. package/dist/web/components/flow/modules/chart/index.js +5 -0
  97. package/dist/web/components/flow/modules/combination/index.js +21 -0
  98. package/dist/web/components/flow/modules/control/ApprovalDrawer.css +147 -0
  99. package/dist/web/components/flow/modules/control/ApprovalDrawer.js +178 -0
  100. package/dist/web/components/flow/modules/control/ApprovalPopup.css +118 -0
  101. package/dist/web/components/flow/modules/control/ApprovalPopup.js +237 -0
  102. package/dist/web/components/flow/modules/control/Control.css +32 -0
  103. package/dist/web/components/flow/modules/control/Control.js +90 -0
  104. package/dist/web/components/flow/modules/control/ControlMobile.css +72 -0
  105. package/dist/web/components/flow/modules/control/ControlMobile.js +133 -0
  106. package/dist/web/components/flow/modules/control/FlowTaskInfoModal.css +6 -0
  107. package/dist/web/components/flow/modules/control/FlowTaskInfoModal.js +31 -0
  108. package/dist/web/components/flow/modules/control/constants/index.js +35 -0
  109. package/dist/web/components/flow/modules/control/index.js +15 -0
  110. package/dist/web/components/flow/modules/control/provider/index.js +17 -0
  111. package/dist/web/components/flow/modules/control/provider/useControlModel.js +243 -0
  112. package/dist/web/components/flow/modules/control/provider/useMobileModel.js +86 -0
  113. package/dist/web/components/flow/modules/control/provider/useRevokeAndBackHook.js +82 -0
  114. package/dist/web/components/flow/modules/control/utils/ControlModelUtils.js +57 -0
  115. package/dist/web/components/flow/modules/control/utils/index.js +2 -0
  116. package/dist/web/components/flow/modules/layout/index.css +9 -0
  117. package/dist/web/components/flow/modules/layout/index.js +22 -0
  118. package/dist/web/components/flow/modules/process/Process.js +73 -0
  119. package/dist/web/components/flow/modules/process/ProcessMobile.js +81 -0
  120. package/dist/web/components/flow/modules/process/index.css +188 -0
  121. package/dist/web/components/flow/modules/process/index.js +14 -0
  122. package/dist/web/components/flow/modules/process/utils/index.js +32 -0
  123. package/dist/web/components/flow/services/flow.js +111 -0
  124. package/dist/web/components/flow/services/ideData/chart.js +88 -0
  125. package/dist/web/components/flow/services/ideData/index.js +5 -0
  126. package/dist/web/components/flow/services/ideData/instance.js +23 -0
  127. package/dist/web/components/flow/services/ideData/pageDetail.js +41 -0
  128. package/dist/web/components/flow/services/ideData/process.js +27 -0
  129. package/dist/web/components/flow/services/index.js +2 -0
  130. package/dist/web/components/flow/services/user.js +23 -0
  131. package/dist/web/components/flow/services/utils.js +28 -0
  132. package/dist/web/components/form/enumSelect/NormalSelect.js +1 -1
  133. package/dist/web/components/form/form/index.js +19 -7
  134. package/dist/web/components/form/input/index.css +6 -1
  135. package/dist/web/components/form/input/index.js +1 -1
  136. package/dist/web/components/form/select/allTimePicker/dataUtils.js +10 -0
  137. package/dist/web/components/form/select/allTimePicker/index.js +36 -27
  138. package/dist/web/components/form/select/dropdown-select/h5.js +130 -0
  139. package/dist/web/components/form/select/dropdown-select/index.css +159 -0
  140. package/dist/web/components/form/select/dropdown-select/index.js +173 -0
  141. package/dist/web/components/form/select/dropdown-select/pc.js +73 -0
  142. package/dist/web/components/form/select/dropdown-select/ui.js +42 -40
  143. package/dist/web/components/form/select/h5.js +16 -6
  144. package/dist/web/components/form/select/index.css +8 -1
  145. package/dist/web/components/form/select/index.js +5 -7
  146. package/dist/web/components/form/select/request.js +106 -0
  147. package/dist/web/components/form/select/status/allEmpty.js +5 -0
  148. package/dist/web/components/form/select/status/empty.js +18 -0
  149. package/dist/web/components/form/select/status/index.css +66 -0
  150. package/dist/web/components/form/select/status/index.js +7 -0
  151. package/dist/web/components/form/select/status/loading.js +20 -0
  152. package/dist/web/components/form/select/status/propsType.js +1 -0
  153. package/dist/web/components/form/select/status/retry.js +20 -0
  154. package/dist/web/components/form/switch/index.js +1 -1
  155. package/dist/web/components/form/textarea/index.js +1 -1
  156. package/dist/web/components/form/uploader/uploader.h5.js +4 -4
  157. package/dist/web/components/form/uploader/uploader.pc.js +1 -1
  158. package/dist/web/components/form/uploaderFile/uploadFile.h5.js +1 -1
  159. package/dist/web/components/form/uploaderFile/uploadFile.pc.js +1 -1
  160. package/dist/web/components/form/userOrgSelect/comTool.js +2 -4
  161. package/dist/web/components/form/userOrgSelect/common/fetch-data-service.js +194 -0
  162. package/dist/web/components/form/userOrgSelect/common/types.js +1 -0
  163. package/dist/web/components/form/userOrgSelect/common/utils.js +15 -0
  164. package/dist/web/components/form/userOrgSelect/departTreeSelect/departTreeSelect.h5.js +3 -4
  165. package/dist/web/components/form/userOrgSelect/departTreeSelect/departTreeSelect.pc.js +4 -5
  166. package/dist/web/components/form/userOrgSelect/getUserService.js +10 -5
  167. package/dist/web/components/form/userOrgSelect/hooks/use-depart-data.js +93 -0
  168. package/dist/web/components/form/userOrgSelect/index.js +1 -1
  169. package/dist/web/components/form/userOrgSelect/user-select-pc/error-tips.js +11 -0
  170. package/dist/web/components/form/userOrgSelect/user-select-pc/index.css +216 -0
  171. package/dist/web/components/form/userOrgSelect/user-select-pc/index.js +195 -0
  172. package/dist/web/components/form/userOrgSelect/user-select-pc/model-user-list.js +99 -0
  173. package/dist/web/components/form/userOrgSelect/user-select-pc/org-tree.js +15 -0
  174. package/dist/web/components/form/userOrgSelect/user-select-pc/search-user.js +80 -0
  175. package/dist/web/components/form/userOrgSelect/user-select-pc/selected-user-list.js +12 -0
  176. package/dist/web/components/form/userOrgSelect/user-select-pc/user-model.js +36 -0
  177. package/dist/web/components/form/userOrgSelect/userTreeSelect.h5.js +72 -50
  178. package/dist/web/components/image/index.js +1 -1
  179. package/dist/web/components/index.js +17 -0
  180. package/dist/web/components/listView/index.css +9 -1
  181. package/dist/web/components/listView/index.js +66 -50
  182. package/dist/web/components/modal/modal.h5.js +1 -1
  183. package/dist/web/components/modal/modal.pc.js +1 -1
  184. package/dist/web/components/navigationBar/index.css +2 -1
  185. package/dist/web/components/pageLayout/PageContent/index.css +28 -0
  186. package/dist/web/components/pageLayout/PageContent/index.js +81 -0
  187. package/dist/web/components/pageLayout/index.css +7 -0
  188. package/dist/web/components/pageLayout/index.js +21 -0
  189. package/dist/web/components/phoneCode/index.js +1 -0
  190. package/dist/web/components/richText/index.css +5 -1
  191. package/dist/web/components/richText/index.js +2 -2
  192. package/dist/web/components/richText/richtext.module.css +2 -2
  193. package/dist/web/components/table/BaseTable.js +1171 -0
  194. package/dist/web/components/table/FieldRender.js +622 -0
  195. package/dist/web/components/table/FilterFields.js +512 -0
  196. package/dist/web/components/table/Form/Enum.js +56 -0
  197. package/dist/web/components/table/Form/Location.css +14 -0
  198. package/dist/web/components/table/Form/Location.js +126 -0
  199. package/dist/web/components/table/ImportFileModal/csvTemplate.json +547 -0
  200. package/dist/web/components/table/ImportFileModal/index.css +263 -0
  201. package/dist/web/components/table/ImportFileModal/index.js +310 -0
  202. package/dist/web/components/table/ImportFileModal/submitFormatter.js +32 -0
  203. package/dist/web/components/table/ImportFileModal/validate.js +127 -0
  204. package/dist/web/components/table/QuoteModal.js +16 -0
  205. package/dist/web/components/table/SelectableBlock/index.css +2 -0
  206. package/dist/web/components/table/SelectableBlock/index.js +81 -0
  207. package/dist/web/components/table/UserDepartment/ViewCell.js +11 -0
  208. package/dist/web/components/table/UserDepartment/utils.js +80 -0
  209. package/dist/web/components/table/UserDepartment/viewCell.css +14 -0
  210. package/dist/web/components/table/index.css +569 -0
  211. package/dist/web/components/table/index.js +109 -0
  212. package/dist/web/components/tabs/tabs.h5.js +1 -1
  213. package/dist/web/components/tabs/tabs.pc.js +1 -1
  214. package/dist/web/components/text/index.css +2 -1
  215. package/dist/web/components/text/index.js +2 -2
  216. package/dist/web/components/uploaderFileView/index.js +6 -5
  217. package/dist/web/components/wd-bubble/index.css +21 -0
  218. package/dist/web/components/wd-bubble/index.js +17 -0
  219. package/dist/web/components/wedaVideo/index.js +1 -1
  220. package/dist/web/index.js +1 -0
  221. package/dist/web/utils/constant.js +94 -1
  222. package/dist/web/utils/datasource.js +357 -0
  223. package/dist/web/utils/date.js +137 -0
  224. package/dist/web/utils/file.js +168 -0
  225. package/dist/web/utils/getPageQuery.js +16 -0
  226. package/dist/web/utils/hooks/EnumHoc.js +61 -0
  227. package/dist/web/utils/hooks/context.js +24 -0
  228. package/dist/web/utils/hooks/globalConnect.js +26 -0
  229. package/dist/web/utils/{use-cloud-id-temp-url.js → hooks/use-cloud-id-temp-url.js} +2 -2
  230. package/dist/web/utils/hooks/useRequest.js +25 -0
  231. package/dist/web/utils/{useSetState.js → hooks/useSetState.js} +0 -0
  232. package/dist/web/utils/{useSyncValue.js → hooks/useSyncValue.js} +0 -0
  233. package/dist/web/utils/platform.js +112 -23
  234. package/dist/web/utils/tcb.js +30 -8
  235. package/dist/web/utils/tool.js +21 -0
  236. package/package.json +26 -4
  237. package/dist/configs/components/button.json +0 -239
  238. package/dist/configs/components/chart/line.json +0 -881
  239. package/dist/configs/components/container.json +0 -64
  240. package/dist/configs/components/image.json +0 -190
  241. package/dist/configs/components/link.json +0 -82
  242. package/dist/configs/components/modal.json +0 -72
  243. package/dist/configs/components/tabs.json +0 -122
  244. package/dist/configs/components/text.json +0 -112
  245. package/dist/configs/components/wxOpenApi/phone.json +0 -127
  246. package/dist/configs/components/wxOpenApi/phoneCode.json +0 -109
  247. package/dist/configs/components/wxOpenApi/share.json +0 -160
  248. package/dist/configs/components/wxOpenApi/userInfo.json +0 -168
  249. package/dist/configs/index.d.ts +0 -105
  250. package/dist/docs/common/format.d.ts +0 -13
  251. package/dist/docs/common/tableView.d.ts +0 -30
  252. package/dist/index.d.ts +0 -2
  253. package/dist/setupTests.d.ts +0 -2
  254. package/dist/web/actions/index.d.ts +0 -3
  255. package/dist/web/actions/showMessage/index.d.ts +0 -17
  256. package/dist/web/actions/showModal/index.d.ts +0 -4
  257. package/dist/web/actions/showToast/index.d.ts +0 -1
  258. package/dist/web/components/button/index.d.ts +0 -33
  259. package/dist/web/components/calendar/index.d.ts +0 -19
  260. package/dist/web/components/calendar/util.d.ts +0 -13
  261. package/dist/web/components/carousel/index.d.ts +0 -41
  262. package/dist/web/components/chart/bar/index.d.ts +0 -3
  263. package/dist/web/components/chart/bar/index.old.d.ts +0 -40
  264. package/dist/web/components/chart/common/Chart.d.ts +0 -9
  265. package/dist/web/components/chart/common/chart-custom-connector.d.ts +0 -6
  266. package/dist/web/components/chart/common/chart-error.d.ts +0 -2
  267. package/dist/web/components/chart/common/config/bar.d.ts +0 -48
  268. package/dist/web/components/chart/common/config/global.d.ts +0 -13
  269. package/dist/web/components/chart/common/config/line.d.ts +0 -46
  270. package/dist/web/components/chart/common/config/pie.d.ts +0 -29
  271. package/dist/web/components/chart/common/core/eChartBar.d.ts +0 -66
  272. package/dist/web/components/chart/common/core/eChartBase.d.ts +0 -127
  273. package/dist/web/components/chart/common/core/eChartLine.d.ts +0 -60
  274. package/dist/web/components/chart/common/core/eChartPie.d.ts +0 -48
  275. package/dist/web/components/chart/common/core/type.d.ts +0 -35
  276. package/dist/web/components/chart/common/data-transform.d.ts +0 -8
  277. package/dist/web/components/chart/common/echarts.d.ts +0 -5
  278. package/dist/web/components/chart/common/useChart.d.ts +0 -8
  279. package/dist/web/components/chart/line/index.d.ts +0 -3
  280. package/dist/web/components/chart/line/index.old.d.ts +0 -38
  281. package/dist/web/components/chart/pie/index.d.ts +0 -3
  282. package/dist/web/components/chart/pie/index.old.d.ts +0 -27
  283. package/dist/web/components/chart/statisticsCard/index.d.ts +0 -85
  284. package/dist/web/components/chart/statisticsCard/interface.d.ts +0 -13
  285. package/dist/web/components/common/error-boundary.d.ts +0 -5
  286. package/dist/web/components/common/portal.d.ts +0 -7
  287. package/dist/web/components/common/use-loop-render-detect.d.ts +0 -11
  288. package/dist/web/components/container/index.d.ts +0 -6
  289. package/dist/web/components/dataView/index.d.ts +0 -6
  290. package/dist/web/components/dataView/interface.d.ts +0 -5
  291. package/dist/web/components/drawer/index.d.ts +0 -13
  292. package/dist/web/components/form/checkbox/index.d.ts +0 -13
  293. package/dist/web/components/form/enumSelect/MultipleSelect.d.ts +0 -78
  294. package/dist/web/components/form/enumSelect/NormalSelect.d.ts +0 -83
  295. package/dist/web/components/form/enumSelect/SelectContainer.d.ts +0 -16
  296. package/dist/web/components/form/enumSelect/index.d.ts +0 -82
  297. package/dist/web/components/form/enumSelect/props/defaultProps.d.ts +0 -34
  298. package/dist/web/components/form/enumSelect/props/propsTypes.d.ts +0 -39
  299. package/dist/web/components/form/form/index.d.ts +0 -32
  300. package/dist/web/components/form/formcell/index.d.ts +0 -8
  301. package/dist/web/components/form/input/index.d.ts +0 -14
  302. package/dist/web/components/form/location/common/mapChoose.d.ts +0 -15
  303. package/dist/web/components/form/location/common/mapView.d.ts +0 -19
  304. package/dist/web/components/form/location/common/propsConfig.d.ts +0 -59
  305. package/dist/web/components/form/location/common/selectModal.d.ts +0 -21
  306. package/dist/web/components/form/location/common/useLocationInfo.d.ts +0 -36
  307. package/dist/web/components/form/location/components/LocationH5/location.h5.d.ts +0 -8
  308. package/dist/web/components/form/location/components/LocationPC/Header.d.ts +0 -12
  309. package/dist/web/components/form/location/components/LocationPC/location.PC.d.ts +0 -8
  310. package/dist/web/components/form/location/constants.d.ts +0 -2
  311. package/dist/web/components/form/location/index.d.ts +0 -1
  312. package/dist/web/components/form/radio/index.d.ts +0 -11
  313. package/dist/web/components/form/renderDecorator.d.ts +0 -6
  314. package/dist/web/components/form/select/allTimePicker/calendar.d.ts +0 -13
  315. package/dist/web/components/form/select/allTimePicker/dataUtils.d.ts +0 -24
  316. package/dist/web/components/form/select/allTimePicker/index.d.ts +0 -14
  317. package/dist/web/components/form/select/dropdown-select/ui.d.ts +0 -15
  318. package/dist/web/components/form/select/h5.d.ts +0 -16
  319. package/dist/web/components/form/select/index.d.ts +0 -66
  320. package/dist/web/components/form/select/region/index.d.ts +0 -6
  321. package/dist/web/components/form/select/time.d.ts +0 -9
  322. package/dist/web/components/form/select/use-options.d.ts +0 -26
  323. package/dist/web/components/form/select/use-options.js +0 -103
  324. package/dist/web/components/form/select/year.d.ts +0 -7
  325. package/dist/web/components/form/switch/index.d.ts +0 -6
  326. package/dist/web/components/form/textarea/index.d.ts +0 -12
  327. package/dist/web/components/form/tips/index.d.ts +0 -8
  328. package/dist/web/components/form/uploader/index.d.ts +0 -3
  329. package/dist/web/components/form/uploader/uploader.h5.d.ts +0 -20
  330. package/dist/web/components/form/uploader/uploader.pc.d.ts +0 -30
  331. package/dist/web/components/form/uploaderFile/index.d.ts +0 -4
  332. package/dist/web/components/form/uploaderFile/uploadFile.h5.d.ts +0 -23
  333. package/dist/web/components/form/uploaderFile/uploadFile.pc.d.ts +0 -35
  334. package/dist/web/components/form/userOrgSelect/comTool.d.ts +0 -8
  335. package/dist/web/components/form/userOrgSelect/departTreeSelect/departTreeSelect.h5.d.ts +0 -19
  336. package/dist/web/components/form/userOrgSelect/departTreeSelect/departTreeSelect.pc.d.ts +0 -4
  337. package/dist/web/components/form/userOrgSelect/departTreeSelect/index.d.ts +0 -2
  338. package/dist/web/components/form/userOrgSelect/getUserService.d.ts +0 -11
  339. package/dist/web/components/form/userOrgSelect/index.d.ts +0 -2
  340. package/dist/web/components/form/userOrgSelect/userTreeSelect.h5.d.ts +0 -27
  341. package/dist/web/components/form/userOrgSelect/userTreeSelect.pc.d.ts +0 -9
  342. package/dist/web/components/form/userOrgSelect/userTreeSelect.pc.js +0 -271
  343. package/dist/web/components/form/userOrgSelect/utils.d.ts +0 -37
  344. package/dist/web/components/formdetail/index.d.ts +0 -31
  345. package/dist/web/components/graphicCard/index.d.ts +0 -47
  346. package/dist/web/components/image/image.d.ts +0 -9
  347. package/dist/web/components/image/index.d.ts +0 -13
  348. package/dist/web/components/index.d.ts +0 -50
  349. package/dist/web/components/link/index.d.ts +0 -24
  350. package/dist/web/components/listView/index.d.ts +0 -7
  351. package/dist/web/components/listView/interface.d.ts +0 -127
  352. package/dist/web/components/lottery/index.d.ts +0 -22
  353. package/dist/web/components/lottery/lotteryUtil.d.ts +0 -23
  354. package/dist/web/components/modal/index.d.ts +0 -17
  355. package/dist/web/components/modal/modal.h5.d.ts +0 -4
  356. package/dist/web/components/modal/modal.pc.d.ts +0 -3
  357. package/dist/web/components/navLayout/index.d.ts +0 -65
  358. package/dist/web/components/navigationBar/common.d.ts +0 -15
  359. package/dist/web/components/navigationBar/h5Menu.d.ts +0 -14
  360. package/dist/web/components/navigationBar/horizontalMenu.d.ts +0 -12
  361. package/dist/web/components/navigationBar/index.d.ts +0 -13
  362. package/dist/web/components/navigationBar/verticalMenu.d.ts +0 -13
  363. package/dist/web/components/phone/index.d.ts +0 -18
  364. package/dist/web/components/phoneCode/index.d.ts +0 -18
  365. package/dist/web/components/picker/datePicker.d.ts +0 -10
  366. package/dist/web/components/picker/picker.d.ts +0 -6
  367. package/dist/web/components/picker/timePicker.d.ts +0 -7
  368. package/dist/web/components/richText/const.d.ts +0 -1
  369. package/dist/web/components/richText/index.d.ts +0 -50
  370. package/dist/web/components/richTextView/index.d.ts +0 -7
  371. package/dist/web/components/scrollView/index.d.ts +0 -25
  372. package/dist/web/components/share/index.d.ts +0 -34
  373. package/dist/web/components/slot/index.d.ts +0 -6
  374. package/dist/web/components/swiper/index.d.ts +0 -24
  375. package/dist/web/components/tabs/index.d.ts +0 -13
  376. package/dist/web/components/tabs/tabs.h5.d.ts +0 -4
  377. package/dist/web/components/tabs/tabs.pc.d.ts +0 -3
  378. package/dist/web/components/text/index.d.ts +0 -15
  379. package/dist/web/components/uploaderFileView/index.d.ts +0 -10
  380. package/dist/web/components/uploaderView/index.d.ts +0 -17
  381. package/dist/web/components/userInfo/index.d.ts +0 -26
  382. package/dist/web/components/wedaVideo/index.d.ts +0 -17
  383. package/dist/web/index.d.ts +0 -8
  384. package/dist/web/utils/classnames.d.ts +0 -2
  385. package/dist/web/utils/console.d.ts +0 -3
  386. package/dist/web/utils/constant.d.ts +0 -23
  387. package/dist/web/utils/debounce.d.ts +0 -2
  388. package/dist/web/utils/getLocalCounter.d.ts +0 -1
  389. package/dist/web/utils/isObjectEqual.d.ts +0 -2
  390. package/dist/web/utils/loading-fallback.d.ts +0 -2
  391. package/dist/web/utils/lodash.d.ts +0 -1
  392. package/dist/web/utils/platform.d.ts +0 -28
  393. package/dist/web/utils/tcb.d.ts +0 -33
  394. package/dist/web/utils/tmap.d.ts +0 -3
  395. package/dist/web/utils/use-cloud-id-temp-url.d.ts +0 -1
  396. package/dist/web/utils/useSetState.d.ts +0 -1
  397. package/dist/web/utils/useSyncValue.d.ts +0 -4
  398. package/dist/web/utils/weui.d.ts +0 -1
@@ -0,0 +1,1171 @@
1
+ import React, { useMemo, useEffect, useRef, useImperativeHandle, useState, } from 'react';
2
+ import { Icon, Table, Button, Justify, Modal, message, TagSearchBox, useClassNames, Card, Row, Col, Checkbox, Text, LoadingTip, Dropdown, List, Radio, Collapse, Form, } from 'tea-component';
3
+ import InfiniteScroll from 'react-infinite-scroll-component';
4
+ import { getColumns, isProcessHoldOrLocked, formatDataToXlsx, getSearchAttributes, filterCustomColumns, filterCustomFields, getFixedColumnSets, slotRender, } from './FieldRender';
5
+ import { FilterFieldsPanel } from './FilterFields';
6
+ import { SelectableBlock } from './SelectableBlock';
7
+ import { REL_DICT, CELL_CUSTOM_OPTION } from '../../utils/constant';
8
+ import { ImportFileModal } from './ImportFileModal';
9
+ import isObjectEqual from '../../utils/isObjectEqual';
10
+ import { useEnumContext } from '../../utils/hooks/context';
11
+ import { useSetState } from '../../utils/hooks/useSetState';
12
+ import { useRequest } from '../../utils/hooks/useRequest';
13
+ import { alertErrorMessage, isInIde, navigateToModelPage, usePlatform, } from '../../utils/platform';
14
+ import { callWedaApi, appCloudGetWedaUserId } from '../../utils/tcb';
15
+ import { exportData } from '../../utils/file';
16
+ import { DataSource, getDataSourceByName, getPrimaryField, getDataSourceFieldsWithAuth, } from '../../utils/datasource';
17
+ import './index.css';
18
+ const { sortable, radioable, selectable, pageable, autotip, injectable } = Table.addons;
19
+ /**
20
+ * 基础表格
21
+ */
22
+ export const BaseTable = (props) => {
23
+ const { selectedView = [], // 视图列表 列表
24
+ dbName, // 数据源 Name
25
+ fields: showFields = [], // 字段 schema 列表
26
+ tableAction = true, // 是否有操作按钮
27
+ tableSearch = true, // 是否有搜索栏
28
+ actionColumn = true, // 是否有操作列
29
+ enableCellCustomOption, // 是否显示插槽操作列(默认为undefined, 在编辑器中会通过boolean类型来判断显隐)
30
+ enableGlobalButton, // 是否显示插槽全局按钮(默认为undefined, 在编辑器中会通过boolean类型来判断显隐)
31
+ multipleSelect = true, // 是否多选
32
+ onSelectConfirm, // 表底是否有确认按钮,以及确认事件
33
+ onSelectCancel, // 表底是否有取消按钮,以及取消事件
34
+ defaultSearchValue, // 默认搜索条件,比如关联关系时默认 _id 搜索条件
35
+ defaultsSlectedKeys = [], // 默认选中的行
36
+ compId, // 组件ID
37
+ buttons, // 选区按钮集合
38
+ settings, // 操作列集合「试用于非插槽实现的操作列」
39
+ selectableBlockEvents, // 选区按钮事件对象
40
+ filterType = 'searchbox', // 搜索方式
41
+ filterFields, // 筛选字段
42
+ connectorParams = {}, // API查询入参
43
+ isModel = true, // 数据源类型
44
+ connectorMethod, // API方法
45
+ isOrderBy, rowColor, // 背景色,可以是字符串或方法的引用
46
+ columnSets, // 动态列设置, array, 为 undefined 时表示不存在列管理,使用默认列值
47
+ slots, // 动态插槽, object
48
+ events, // 事件
49
+ outerRef, where, // 筛选条件
50
+ orderBy: defaultOrderBy, // 排序字段
51
+ orderType: defaultOrderType, // 排序方式
52
+ fixedFront, // 冻结首列至本列
53
+ fixedEnd, // 冻结本列至尾列
54
+ } = props;
55
+ const connectorParamsRef = React.useRef({});
56
+ const selectedViewRef = React.useRef([]);
57
+ const whereRef = React.useRef(undefined);
58
+ const isViewTable = selectedView === null || selectedView === void 0 ? void 0 : selectedView.length; // 判断是新增还是存量用户
59
+ const isH5 = usePlatform() === 'h5'; // 响应式判定
60
+ const datasource = useMemo(() => new DataSource(dbName), [dbName]); // datasource 方法-模型
61
+ const { Margin } = useClassNames();
62
+ const chooseList = useRef([]);
63
+ const searchThrottleWait = useRef(0);
64
+ const emptyTextRef = useRef('');
65
+ const [visible, setVisible] = useState(false);
66
+ const { enumOptions } = useEnumContext();
67
+ // 搜索和分页参数
68
+ const [{ pageIndex = 1, pageSize, sort, selectedKeys, isLoading, searchValues, filterCollapse, cardList = [],
69
+ // 视图选择相关
70
+ selectedViewId = '', viewList = [], fields = isViewTable ? [] : showFields,
71
+ // 数据源名称
72
+ datasourceTitle, }, setState,] = useSetState({
73
+ sort: [],
74
+ pageIndex: 1,
75
+ pageSize: 10,
76
+ selectedKeys: defaultsSlectedKeys,
77
+ isLoading: true,
78
+ searchValues: undefined,
79
+ filterCollapse: true,
80
+ cardList: [],
81
+ pageableInfo: undefined,
82
+ });
83
+ React.useMemo(() => {
84
+ if (!isModel) {
85
+ setState({
86
+ pageSize: (connectorParams === null || connectorParams === void 0 ? void 0 : connectorParams.pageSize) || 10,
87
+ pageIndex: (connectorParams === null || connectorParams === void 0 ? void 0 : connectorParams.pageNo) || 1,
88
+ });
89
+ }
90
+ }, [connectorParams === null || connectorParams === void 0 ? void 0 : connectorParams.pageSize, connectorParams === null || connectorParams === void 0 ? void 0 : connectorParams.pageNo, isModel]);
91
+ // 数据筛选条件
92
+ const whereList = () => {
93
+ try {
94
+ const resultList = [];
95
+ const groupLogic = {};
96
+ let firstGroupLogicTyp = 'and';
97
+ let groupLogicList = [];
98
+ if (Array.isArray(where) && (where === null || where === void 0 ? void 0 : where.length)) {
99
+ groupLogicList = where.map((item1, index1) => {
100
+ const item1Result = {};
101
+ let item1ResultList = [];
102
+ let secondGroupLogicTyp = 'and';
103
+ if (index1 === 1) {
104
+ // 每组之间统一取且/或,只有一组 groupLogic 默认值为 null
105
+ firstGroupLogicTyp = item1 === null || item1 === void 0 ? void 0 : item1.groupLogic;
106
+ }
107
+ if (Array.isArray(item1 === null || item1 === void 0 ? void 0 : item1.logicData)) {
108
+ item1ResultList = item1 === null || item1 === void 0 ? void 0 : item1.logicData.map((item2, index2) => {
109
+ const item2Result = {};
110
+ const rule = {};
111
+ if (index2 === 1) {
112
+ // 每组之间统一取且/或,只有一组 groupLogic 默认值为 null
113
+ secondGroupLogicTyp = item2 === null || item2 === void 0 ? void 0 : item2.logic;
114
+ }
115
+ let [rel, val] = [REL_DICT[item2 === null || item2 === void 0 ? void 0 : item2.rel], item2 === null || item2 === void 0 ? void 0 : item2.value];
116
+ if ('_begin_with' === rel) {
117
+ rel = 'regex';
118
+ val = `^${val}`;
119
+ }
120
+ if ('_exclude' === rel) {
121
+ rel = 'regex';
122
+ val = `^((?!${val}).)*$`;
123
+ }
124
+ rule['$' + rel] = val;
125
+ item2Result[item2 === null || item2 === void 0 ? void 0 : item2.key] = rule;
126
+ return item2Result;
127
+ });
128
+ }
129
+ item1Result['$' + secondGroupLogicTyp] = item1ResultList;
130
+ return item1Result;
131
+ });
132
+ groupLogic['$' + firstGroupLogicTyp] = groupLogicList;
133
+ resultList.push(groupLogic);
134
+ return resultList;
135
+ }
136
+ return [];
137
+ }
138
+ catch (error) {
139
+ console.error('getWhereList error', error);
140
+ return [];
141
+ }
142
+ };
143
+ // 获取数据源名称
144
+ useEffect(() => {
145
+ async function getDataSourceName() {
146
+ const ds = await getDataSourceByName(dbName, isModel);
147
+ setState({
148
+ datasourceTitle: (ds === null || ds === void 0 ? void 0 : ds.title) || dbName,
149
+ });
150
+ }
151
+ getDataSourceName();
152
+ }, [dbName]);
153
+ // 查询子数据库数据
154
+ useEffect(() => {
155
+ if (!filterFields) {
156
+ return;
157
+ }
158
+ const FORMAT_FATHER_SON = 'father-son';
159
+ const FORMAT_RELATED = 'related';
160
+ const fatherSon = getDataBase(FORMAT_FATHER_SON);
161
+ const related = getDataBase(FORMAT_RELATED);
162
+ chooseList.current = [
163
+ {
164
+ format: FORMAT_FATHER_SON,
165
+ list: fatherSon,
166
+ },
167
+ {
168
+ format: FORMAT_RELATED,
169
+ list: related,
170
+ },
171
+ ];
172
+ }, []);
173
+ const getDataBase = (format) => {
174
+ const filter = filterFields.filter((item) => (item === null || item === void 0 ? void 0 : item.format) === format);
175
+ const data = filter === null || filter === void 0 ? void 0 : filter.map((item) => {
176
+ var _a, _b, _c;
177
+ const childDbName = (_a = item['x-parent']) === null || _a === void 0 ? void 0 : _a.parentDataSourceName;
178
+ const primaryColumn = (_c = (_b = item.parentDatasource) === null || _b === void 0 ? void 0 : _b.schema) === null || _c === void 0 ? void 0 : _c['x-primary-column'];
179
+ const childItem = {
180
+ childDbName,
181
+ primaryColumn,
182
+ };
183
+ return childItem;
184
+ });
185
+ return data;
186
+ };
187
+ const getViews = async () => {
188
+ try {
189
+ const queryParams = {
190
+ action: 'DescribeRuntimeDataViewList',
191
+ data: { DatasourceName: dbName, GetColumnAuth: true },
192
+ };
193
+ const viewPropertiesQueryParams = {
194
+ action: 'DescribeRuntimeDataViewPropertiesList',
195
+ data: { DatasourceName: dbName },
196
+ };
197
+ const { ResourceCheckInfos } = await callWedaApi(queryParams);
198
+ const { Count, Rows } = await callWedaApi(viewPropertiesQueryParams);
199
+ if (Count) {
200
+ const selectedViewList = selectedView
201
+ .map((view) => Rows === null || Rows === void 0 ? void 0 : Rows.filter((item) => item.ViewId === view)[0])
202
+ .filter((item) => !!item);
203
+ const views = selectedViewList.map((item) => {
204
+ var _a, _b, _c, _d, _e;
205
+ item.text = item.ViewName;
206
+ item.value = item.ViewId;
207
+ item.fields = (_a = item === null || item === void 0 ? void 0 : item.Properties) === null || _a === void 0 ? void 0 : _a.map((itemProperties) => {
208
+ itemProperties = JSON.parse(itemProperties);
209
+ if (itemProperties && itemProperties['x-viewType']) {
210
+ // 关联模型字段
211
+ itemProperties.parentRelationRecordsName = itemProperties === null || itemProperties === void 0 ? void 0 : itemProperties.name;
212
+ itemProperties.name = `${itemProperties['x-parentRelationKey']}.${itemProperties['name']}`;
213
+ itemProperties.title = `${itemProperties['title']}(${itemProperties['x-dataSourceTitle']})`;
214
+ }
215
+ return itemProperties;
216
+ });
217
+ // 根据x-layoutShow显示隐藏
218
+ item.fields = (_b = item.fields) === null || _b === void 0 ? void 0 : _b.filter((item) => item['x-layoutShow'] === true).sort((a, b) => a['x-index'] - b['x-index']);
219
+ // 筛选条件
220
+ if (item.SearchConfig) {
221
+ item.SearchConfig = (_c = JSON.parse(item.SearchConfig)
222
+ .condition) === null || _c === void 0 ? void 0 : _c.filter((item) => item.IsQuery).map((item) => {
223
+ var _a, _b;
224
+ // 当规则为包含/不包含当前用户时,设计态无法获取当前用户uid需要 运行态主动获取
225
+ if (item.Rel === 'eq-current-user' ||
226
+ item.Rel === 'ne-current-user') {
227
+ item.Val =
228
+ (appCloudGetWedaUserId === null || appCloudGetWedaUserId === void 0 ? void 0 : appCloudGetWedaUserId()) ||
229
+ ((_b = (_a = window === null || window === void 0 ? void 0 : window._WedaHostConfig) === null || _a === void 0 ? void 0 : _a.wedaUser) === null || _b === void 0 ? void 0 : _b.userId);
230
+ }
231
+ return {
232
+ Key: item.Key,
233
+ Rel: item.Rel,
234
+ Val: item.Val,
235
+ };
236
+ });
237
+ }
238
+ // 数据查询支持复杂条件改造新增 ConditionConfig 查询字段
239
+ if (item.ConditionConfig) {
240
+ item.ConditionConfig = {
241
+ ...JSON.parse((item === null || item === void 0 ? void 0 : item.ConditionConfig) || '{}'),
242
+ };
243
+ }
244
+ // 排序
245
+ const sortItem = (_d = item.fields) === null || _d === void 0 ? void 0 : _d.filter((item) => item['x-sortable'])[0];
246
+ if (sortItem) {
247
+ item.sortItem = {
248
+ orderBy: sortItem.name,
249
+ orderType: sortItem['x-defaultSort'],
250
+ };
251
+ }
252
+ // 设置字段权限,关联模型字段权限,接口没返回暂不进行校验:['x-viewType']
253
+ item.fields = (_e = getDataSourceFieldsWithAuth(item.fields, ResourceCheckInfos)) === null || _e === void 0 ? void 0 : _e.filter((value) => value.readWriteAuth === 'rw' ||
254
+ value.readWriteAuth === 'r' ||
255
+ (value === null || value === void 0 ? void 0 : value['x-viewType']));
256
+ return item;
257
+ });
258
+ setState({
259
+ viewList: views,
260
+ fields: views[0].fields,
261
+ selectedViewId: views[0].ViewId,
262
+ });
263
+ }
264
+ }
265
+ catch (err) {
266
+ console.error('err getViews', err);
267
+ }
268
+ };
269
+ // 兼容私有环境,新接口不存在的情况,产品策略完善后移除
270
+ const getViewsCompatibleProvite = async () => {
271
+ try {
272
+ const queryParams = {
273
+ action: 'DescribeRuntimeDataViewList',
274
+ data: { DatasourceName: dbName, GetColumnAuth: true },
275
+ };
276
+ const { Count, Rows } = await callWedaApi(queryParams);
277
+ if (Count) {
278
+ const selectedViewList = selectedView
279
+ .map((view) => Rows.filter((item) => item.ViewId === view)[0])
280
+ .filter((item) => !!item);
281
+ const views = selectedViewList.map((item) => {
282
+ var _a, _b, _c, _d;
283
+ item.text = item.ViewName;
284
+ item.value = item.ViewId;
285
+ // 主模型字段
286
+ const schemaProperties = JSON.parse(item.Schema).properties;
287
+ item.fields = (_a = Object.keys(schemaProperties)) === null || _a === void 0 ? void 0 : _a.map((key) => ({
288
+ name: key,
289
+ ...schemaProperties[key],
290
+ }));
291
+ // 筛选条件
292
+ if (item.SearchConfig) {
293
+ item.SearchConfig = (_b = JSON.parse(item.SearchConfig)
294
+ .condition) === null || _b === void 0 ? void 0 : _b.filter((item) => item.IsQuery).map((item) => {
295
+ var _a, _b;
296
+ // 当规则为包含/不包含当前用户时,设计态无法获取当前用户uid需要 运行态主动获取
297
+ if (item.Rel === 'eq-current-user' ||
298
+ item.Rel === 'ne-current-user') {
299
+ item.Val =
300
+ (appCloudGetWedaUserId === null || appCloudGetWedaUserId === void 0 ? void 0 : appCloudGetWedaUserId()) ||
301
+ ((_b = (_a = window === null || window === void 0 ? void 0 : window._WedaHostConfig) === null || _a === void 0 ? void 0 : _a.wedaUser) === null || _b === void 0 ? void 0 : _b.userId);
302
+ }
303
+ return {
304
+ Key: item.Key,
305
+ Rel: item.Rel,
306
+ Val: item.Val,
307
+ };
308
+ });
309
+ }
310
+ // 数据查询支持复杂条件改造新增 ConditionConfig 查询字段
311
+ if (item.ConditionConfig) {
312
+ item.ConditionConfig = {
313
+ ...JSON.parse((item === null || item === void 0 ? void 0 : item.ConditionConfig) || '{}'),
314
+ };
315
+ }
316
+ // 排序
317
+ const sortItem = (_c = item.fields) === null || _c === void 0 ? void 0 : _c.filter((item) => item === null || item === void 0 ? void 0 : item['x-sortable'])[0];
318
+ if (sortItem) {
319
+ item.sortItem = {
320
+ orderBy: sortItem.name,
321
+ orderType: sortItem['x-defaultSort'],
322
+ };
323
+ }
324
+ // 根据x-layoutShow显示隐藏
325
+ item.fields = (_d = item.fields) === null || _d === void 0 ? void 0 : _d.filter((item) => item['x-layoutShow'] === true).sort((a, b) => a['x-index'] - b['x-index']);
326
+ return item;
327
+ });
328
+ setState({
329
+ viewList: views,
330
+ fields: views[0].fields,
331
+ selectedViewId: views[0].ViewId,
332
+ });
333
+ }
334
+ }
335
+ catch (err) {
336
+ console.error('err getViews', err);
337
+ }
338
+ };
339
+ // 获取视图列表
340
+ useEffect(() => {
341
+ if (!isModel)
342
+ return;
343
+ if (!isObjectEqual(selectedViewRef.current, selectedView)) {
344
+ if (selectedView.length === 0) {
345
+ setState({ fields: showFields });
346
+ }
347
+ else {
348
+ // 兼容私有环境,新接口不存在的情况,产品策略完善后移除
349
+ if (window === null || window === void 0 ? void 0 : window._isPrivate) {
350
+ getViewsCompatibleProvite();
351
+ }
352
+ else {
353
+ getViews();
354
+ }
355
+ }
356
+ selectedViewRef.current = selectedView;
357
+ }
358
+ }, [dbName, selectedView, isModel]);
359
+ // 视图变化再次请求
360
+ useEffect(() => {
361
+ if (!selectedViewId)
362
+ return;
363
+ const selectedView = viewList.filter((item) => item.ViewId === selectedViewId)[0];
364
+ if (!selectedView)
365
+ return;
366
+ setState({
367
+ fields: selectedView.fields,
368
+ });
369
+ fetchData({ pageNo: pageIndex, pageSize });
370
+ }, [selectedViewId]);
371
+ useEffect(() => {
372
+ // 小屏时默认收起
373
+ setState({ filterCollapse: !isH5 });
374
+ fetchData({ pageNo: pageIndex, pageSize });
375
+ }, [isH5]);
376
+ // 筛选条件变化时候请求
377
+ useEffect(() => {
378
+ if (!isObjectEqual(whereRef.current, where)) {
379
+ fetchData({ pageNo: pageIndex, pageSize });
380
+ whereRef.current = where;
381
+ }
382
+ }, [where]);
383
+ useEffect(() => {
384
+ try {
385
+ if (connectorParams &&
386
+ !isObjectEqual(connectorParamsRef.current, connectorParams)) {
387
+ fetchData({ pageNo: pageIndex, pageSize });
388
+ connectorParamsRef.current = JSON.parse(JSON.stringify(connectorParams));
389
+ }
390
+ }
391
+ catch (e) {
392
+ console.error(e);
393
+ }
394
+ }, [connectorParams]);
395
+ // 移动端和自定义APIs场景不支持导入功能,监听变化存到表格上下文中
396
+ useEffect(() => {
397
+ handleContext({ state: { isH5, isModel } });
398
+ }, [isH5, isModel]);
399
+ // 查询子系数据库
400
+ const { run: getChooseList } = useRequest(async (params = {}) => {
401
+ var _a, _b, _c, _d, _e;
402
+ const child = (_b = (_a = chooseList.current) === null || _a === void 0 ? void 0 : _a.find((child) => child.format === params.format)) === null || _b === void 0 ? void 0 : _b.list.find((item) => item.childDbName === params.childDbName);
403
+ if (!child)
404
+ return;
405
+ // 删除标识,请求参数没该数据
406
+ delete params.format;
407
+ delete params.childDbName;
408
+ const { childDbName, primaryColumn } = child;
409
+ if (Array.isArray(params.where)) {
410
+ params.where = params.where.map((item) => {
411
+ return { ...item, key: primaryColumn };
412
+ });
413
+ searchThrottleWait.current = 1000;
414
+ }
415
+ else {
416
+ searchThrottleWait.current = 0;
417
+ }
418
+ const data = await datasource.getRecordList(params, childDbName);
419
+ const relData = (_d = (_c = data === null || data === void 0 ? void 0 : data.records) === null || _c === void 0 ? void 0 : _c.filter((item) => primaryColumn in item)) === null || _d === void 0 ? void 0 : _d.map((childItem) => ({
420
+ value: childItem._id,
421
+ text: childItem[primaryColumn].length === 0
422
+ ? childItem._id
423
+ : childItem[primaryColumn],
424
+ }));
425
+ return {
426
+ data: relData,
427
+ size: ((_e = data === null || data === void 0 ? void 0 : data.records) === null || _e === void 0 ? void 0 : _e.length) || 0,
428
+ };
429
+ }, { manual: true, throttleWait: searchThrottleWait.current });
430
+ // 搜索和分页事件
431
+ const { loading, run: fetchData, data: { records = [], total = 0 } = {}, } = useRequest(async (params = {}) => {
432
+ var _a, _b, _c, _d;
433
+ // h5模式下,查询收起filter,清空选中状态
434
+ if (isH5) {
435
+ setState({ filterCollapse: false, selectedKeys: [] });
436
+ }
437
+ // H5端加载等待状态
438
+ setState({
439
+ isLoading: true,
440
+ });
441
+ const { searchValues, pageNo = 1, empty = true, pageSize = 10 } = params;
442
+ // 分页
443
+ const queryParams = {
444
+ pageSize,
445
+ pageNo,
446
+ };
447
+ let viewed, data;
448
+ let SearchConfig = [];
449
+ let ConditionConfig = {};
450
+ // 区分是否模型逻辑
451
+ if (isModel) {
452
+ if (isViewTable) {
453
+ viewed = viewList === null || viewList === void 0 ? void 0 : viewList.filter((item) => item.ViewId === selectedViewId)[0];
454
+ // 视图筛选条件
455
+ SearchConfig = viewed === null || viewed === void 0 ? void 0 : viewed.SearchConfig;
456
+ ConditionConfig = viewed === null || viewed === void 0 ? void 0 : viewed.ConditionConfig;
457
+ }
458
+ // 首次加载,属性区配置了视图,但数据源接口还未获取到全部视图配置
459
+ if (isViewTable && !viewed)
460
+ return;
461
+ // 搜索
462
+ const wList = whereList();
463
+ if (searchValues !== undefined ||
464
+ defaultSearchValue !== undefined ||
465
+ SearchConfig !== undefined ||
466
+ ConditionConfig !== undefined ||
467
+ wList !== undefined) {
468
+ queryParams.where = [
469
+ ...(searchValues || []),
470
+ ...(defaultSearchValue || []),
471
+ ...(SearchConfig || []),
472
+ ...(wList || []),
473
+ ConditionConfig,
474
+ ];
475
+ }
476
+ // 如果设计态存在排序条件
477
+ if (viewed === null || viewed === void 0 ? void 0 : viewed.sortItem) {
478
+ queryParams.orderBy = (_a = viewed === null || viewed === void 0 ? void 0 : viewed.sortItem) === null || _a === void 0 ? void 0 : _a.orderBy;
479
+ queryParams.orderType = (_b = viewed === null || viewed === void 0 ? void 0 : viewed.sortItem) === null || _b === void 0 ? void 0 : _b.orderType;
480
+ }
481
+ // 存在排序属性配置
482
+ if (!isViewTable && defaultOrderBy && defaultOrderType) {
483
+ queryParams.orderBy = defaultOrderBy;
484
+ queryParams.orderType = defaultOrderType;
485
+ }
486
+ // 运行态主动排序进行覆盖
487
+ if ((sort === null || sort === void 0 ? void 0 : sort.length) && sort[0].order) {
488
+ queryParams.orderBy = sort[0].by;
489
+ queryParams.orderType = sort[0].order;
490
+ }
491
+ data = await datasource.getRecordList(queryParams);
492
+ events === null || events === void 0 ? void 0 : events.querySuccess({ data: Object.assign({}, data, queryParams) });
493
+ }
494
+ else {
495
+ // 搜索
496
+ if (defaultSearchValue !== undefined) {
497
+ queryParams.where = [...(defaultSearchValue || [])];
498
+ }
499
+ // API排序
500
+ if (isOrderBy && (sort === null || sort === void 0 ? void 0 : sort.length) && sort[0].order) {
501
+ queryParams.orderBy = sort[0].by;
502
+ queryParams.orderType = sort[0].order;
503
+ }
504
+ const connectQueryParams = Object.assign({}, connectorParams, queryParams);
505
+ data = await datasource.getConnect(connectorMethod, connectQueryParams);
506
+ events === null || events === void 0 ? void 0 : events.querySuccess({
507
+ data: Object.assign({}, data, connectQueryParams),
508
+ });
509
+ }
510
+ data.records = (_c = data === null || data === void 0 ? void 0 : data.records) === null || _c === void 0 ? void 0 : _c.map((item) => {
511
+ const data = getPrimaryField(item);
512
+ return {
513
+ ...data,
514
+ };
515
+ });
516
+ // 关联模型字段
517
+ const relationViewsFields = (_d = viewed === null || viewed === void 0 ? void 0 : viewed.fields) === null || _d === void 0 ? void 0 : _d.filter((item) => item['x-viewType']);
518
+ if ((relationViewsFields === null || relationViewsFields === void 0 ? void 0 : relationViewsFields.length) > 0) {
519
+ data.records = data.records.map((item) => {
520
+ relationViewsFields.forEach((_viewFields) => {
521
+ var _a, _b;
522
+ const parentRelationRecord = (_b = (_a = item[_viewFields['x-parentRelationKey']]) === null || _a === void 0 ? void 0 : _a.v1) === null || _b === void 0 ? void 0 : _b.record;
523
+ item[_viewFields.name] = parentRelationRecord
524
+ ? parentRelationRecord[_viewFields === null || _viewFields === void 0 ? void 0 : _viewFields.parentRelationRecordsName]
525
+ : '';
526
+ });
527
+ return item;
528
+ });
529
+ }
530
+ // 小屏列表更新
531
+ if ((data === null || data === void 0 ? void 0 : data.total) && data.records) {
532
+ // empty :是否清空列表
533
+ if (empty) {
534
+ setState(() => ({ cardList: data.records }));
535
+ }
536
+ else {
537
+ setState((pre) => ({ cardList: [...pre.cardList, ...data.records] }));
538
+ }
539
+ }
540
+ else {
541
+ setState({ cardList: [] });
542
+ }
543
+ handleContext({
544
+ state: { pageNo, pageSize, total: data.total },
545
+ records: data.records,
546
+ });
547
+ setState({ isLoading: false, searchValues, pageIndex: pageNo, pageSize });
548
+ emptyTextRef.current = '暂无数据';
549
+ return data || { total: 0, records: [] };
550
+ }, {
551
+ refreshDeps: [sort, defaultOrderBy, defaultOrderType, isViewTable],
552
+ onError: (e) => {
553
+ emptyTextRef.current = '暂无数据';
554
+ alertErrorMessage({ message: `加载数据错误 ${e.message}` });
555
+ },
556
+ });
557
+ // 删除数据事件
558
+ const { run: deleteRecord } = useRequest(async (keys) => {
559
+ if (!isModel) {
560
+ return alertErrorMessage({
561
+ message: '当前表格组件绑定了APIs,暂不支持进行数据删除',
562
+ });
563
+ }
564
+ if (!(keys === null || keys === void 0 ? void 0 : keys.length) && !(selectedKeys === null || selectedKeys === void 0 ? void 0 : selectedKeys.length)) {
565
+ alertErrorMessage({ message: '请选择需要删除的记录' });
566
+ return;
567
+ }
568
+ const msg = !(keys === null || keys === void 0 ? void 0 : keys.length) && (selectedKeys === null || selectedKeys === void 0 ? void 0 : selectedKeys.length)
569
+ ? '确认删除选定的条目?'
570
+ : '确认删除此条目?';
571
+ const modal = Modal.show({
572
+ className: 'modal-table-delete',
573
+ caption: '操作确认',
574
+ onClose: () => modal.destroy(),
575
+ children: (React.createElement(React.Fragment, null,
576
+ React.createElement("div", null, msg),
577
+ React.createElement(Modal.Footer, null,
578
+ React.createElement(Button, { type: "primary", onClick: async () => {
579
+ try {
580
+ modal.destroy();
581
+ message.loading({
582
+ content: '删除数据中',
583
+ });
584
+ await datasource.batchDeleteRecord(keys || selectedKeys);
585
+ // 清除选中的 key
586
+ setState({
587
+ selectedKeys: [],
588
+ });
589
+ // 重新加载数据
590
+ fetchData(pageSize);
591
+ message.success({ content: '删除数据成功' });
592
+ }
593
+ catch (error) {
594
+ console.error('删除', error);
595
+ alertErrorMessage({
596
+ message: `删除数据失败: ${error.message}`,
597
+ });
598
+ }
599
+ } }, "\u786E\u8BA4")))),
600
+ });
601
+ }, {
602
+ manual: true,
603
+ onError: (e) => alertErrorMessage({ message: `删除数据失败: ${e.message}` }),
604
+ });
605
+ // 批量上传数据事件
606
+ const { run: dataBatchCreate } = useRequest(async (res) => {
607
+ try {
608
+ await datasource.batchCreateRecord(res.data);
609
+ if (res.cb) {
610
+ res.cb({ type: 'success' });
611
+ }
612
+ // 重新加载数据
613
+ fetchData();
614
+ message.success({ content: '导入数据成功' });
615
+ }
616
+ catch (error) {
617
+ if (res.cb) {
618
+ res.cb({ type: 'error', message: (error === null || error === void 0 ? void 0 : error.message) || '未知错误' });
619
+ }
620
+ }
621
+ }, {
622
+ manual: true,
623
+ onError: (e) => alertErrorMessage({ message: `导入数据错误: ${e.message}` }),
624
+ });
625
+ useImperativeHandle(outerRef, () => ({
626
+ methods: {
627
+ deleteOne: (params) => {
628
+ const keys = [];
629
+ const { id } = params;
630
+ if (id) {
631
+ keys.push(id);
632
+ }
633
+ deleteRecord(keys);
634
+ },
635
+ // 删除选中数据
636
+ deleteSelected: () => deleteRecord(),
637
+ // 导入
638
+ import: () => importHandle(),
639
+ // 导出
640
+ export: () => exportHandle(),
641
+ refresh: () => fetchData({ searchValues, pageSize, pageNo: 1 }),
642
+ // 刷新表格(查看当前页数据)
643
+ refreshKeepPage: () => fetchData({ searchValues, pageSize, pageNo: pageIndex }),
644
+ },
645
+ }));
646
+ // 表格选中事件
647
+ const handleRowsSelect = (keys) => {
648
+ if (events === null || events === void 0 ? void 0 : events.rowsSelect) {
649
+ const selectedData = records.filter((_) => keys.find((key) => _._id === key));
650
+ events.rowsSelect(selectedData);
651
+ handleContext({ keys });
652
+ }
653
+ };
654
+ // 表格更改上下文数据
655
+ const handleContext = ({ state = {}, keys: _keys, records: _records } = {}) => {
656
+ // 表格上下文
657
+ if (typeof (events === null || events === void 0 ? void 0 : events.onDataChange) === 'function') {
658
+ _keys = [].concat(_keys || selectedKeys);
659
+ _records = [].concat(_records || records);
660
+ const selectedRecords = _records.filter((_) => _keys.find((key) => _._id === key));
661
+ events.onDataChange({
662
+ state: {
663
+ total,
664
+ pageNo: pageIndex,
665
+ pageSize,
666
+ selectedRecords,
667
+ isModel,
668
+ isH5,
669
+ ...state,
670
+ },
671
+ });
672
+ }
673
+ };
674
+ // table 插件
675
+ const tableAddons = [
676
+ // 排序
677
+ isOrderBy
678
+ ? sortable({
679
+ value: sort,
680
+ columns: fields
681
+ .filter((field) => field.type !== 'array' && field.type !== 'object')
682
+ .map((_) => _.name),
683
+ onChange: (value, context) => {
684
+ setState({
685
+ sort: [context.sort],
686
+ });
687
+ },
688
+ })
689
+ : sortable({
690
+ value: sort,
691
+ columns: [],
692
+ }),
693
+ // 分页
694
+ pageable({
695
+ pageIndex: pageIndex || 1,
696
+ pageSize: pageSize || 10,
697
+ recordCount: total,
698
+ onPagingChange: (query) => {
699
+ fetchData({
700
+ ...query,
701
+ pageNo: query.pageIndex,
702
+ pageSize: query.pageSize,
703
+ searchValues,
704
+ });
705
+ },
706
+ }),
707
+ // 行选择
708
+ multipleSelect
709
+ ? selectable({
710
+ value: selectedKeys,
711
+ onChange: (keys) => {
712
+ setState({ selectedKeys: keys });
713
+ handleRowsSelect(keys);
714
+ },
715
+ render: (element, { disabled }) => disabled ? React.createElement(Icon, { type: "loading" }) : element,
716
+ targetColumnKey: fixedFront ? 'weda_select' : undefined,
717
+ })
718
+ : radioable({
719
+ value: selectedKeys === null || selectedKeys === void 0 ? void 0 : selectedKeys[0],
720
+ onChange: (key) => setState({
721
+ selectedKeys: [key],
722
+ }),
723
+ rowSelect: true,
724
+ render: (element, { disabled }) => disabled ? React.createElement(Icon, { type: "loading" }) : element,
725
+ targetColumnKey: fixedFront ? 'weda_select' : undefined,
726
+ }),
727
+ // 加载、错误信息提示
728
+ autotip({
729
+ isLoading: loading || !emptyTextRef.current,
730
+ emptyText: emptyTextRef.current,
731
+ // isError: Boolean(tableError),
732
+ // isFound: Boolean(searchKeyword),
733
+ onClear: () => {
734
+ setState({ searchKeyword: '' });
735
+ // handleSearchData({}, '');
736
+ },
737
+ onRetry: () => {
738
+ fetchData();
739
+ },
740
+ foundKeyword: '',
741
+ }),
742
+ // 行背景色
743
+ injectable({
744
+ row: (props, context) => ({
745
+ style: {
746
+ background: rowColor
747
+ ? typeof rowColor === 'function'
748
+ ? rowColor({ event: { detail: context }, data: props })
749
+ : `${rowColor}`
750
+ : undefined,
751
+ },
752
+ className: rowColor ? 'modal-table-rowcolor' : '',
753
+ }),
754
+ }),
755
+ ];
756
+ const settingsMap = {
757
+ retrieve: (e, { dbName, recordkey }) => {
758
+ if (isInIde()) {
759
+ return alertErrorMessage({
760
+ message: '请开启“实时真实预览”后,再进行查看操作',
761
+ });
762
+ }
763
+ navigateToModelPage('detail', {
764
+ dbName,
765
+ id: recordkey,
766
+ });
767
+ },
768
+ edit: (e, { dbName, recordkey }) => {
769
+ if (isInIde()) {
770
+ return alertErrorMessage({
771
+ message: '请开启“实时真实预览”后,再进行查看操作',
772
+ });
773
+ }
774
+ navigateToModelPage('update', {
775
+ dbName,
776
+ id: recordkey,
777
+ });
778
+ },
779
+ del: (e, { recordkey }) => deleteRecord([recordkey]),
780
+ };
781
+ const BlockButton = ({ props, index, record, recordkey }) => (React.createElement(SelectableBlock, { ...props, component: "Button", blockKey: "settings", index: index, disabled: props.action === 'edit' || props.action === 'del'
782
+ ? props.disabled ||
783
+ isProcessHoldOrLocked(record['!!Weda!!ProcessHold'], record['!!Weda!!LOCK'])
784
+ : props.disabled, compId: compId, exportValue: { record, recordKey: recordkey }, actionMap: settingsMap, actionParams: { dbName, recordkey }, selectableBlockEvents: selectableBlockEvents }));
785
+ // 导出、搜索框字段按列管理过滤
786
+ const exportFields = filterCustomFields({ fields, columnSets });
787
+ // 表格 columns
788
+ const columns = useMemo(() => {
789
+ const defaultColumns = getColumns(fields, isH5);
790
+ const fixedColumnSets = getFixedColumnSets({
791
+ fixedFront,
792
+ fixedEnd,
793
+ columnSets,
794
+ });
795
+ const baseColumns = filterCustomColumns({
796
+ columns: defaultColumns,
797
+ columnSets: fixedColumnSets,
798
+ slots,
799
+ });
800
+ // 插入选择项列,进行冻结联动
801
+ !isH5 && fixedFront && fixedFront.length > 0
802
+ ? baseColumns.unshift({
803
+ key: 'weda_select',
804
+ header: null,
805
+ width: 30,
806
+ fixed: 'left',
807
+ })
808
+ : null;
809
+ // 操作列
810
+ if (actionColumn &&
811
+ (settings === null || settings === void 0 ? void 0 : settings.length) > 0 &&
812
+ enableCellCustomOption === undefined) {
813
+ // 展示非插槽操作列
814
+ baseColumns.push({
815
+ key: '_ope',
816
+ width: 150,
817
+ header: '操作',
818
+ align: 'left',
819
+ fixed: 'right',
820
+ render: (record, recordkey) => !isInIde() ? (React.createElement(React.Fragment, null, settings === null || settings === void 0 ? void 0 :
821
+ settings.map((props, index) => index < 3 && (React.createElement(BlockButton, { props: props, index: index, record: record, recordkey: recordkey }))),
822
+ settings.length > 3 && (React.createElement(Dropdown, { boxStyle: {
823
+ minWidth: '80px',
824
+ }, overlayStyle: { zIndex: 998 }, className: "adminPortal_dropdown", clickClose: false, button: "\u66F4\u591A", appearance: "link", placement: "bottom" },
825
+ React.createElement(List, { type: "option" }, settings === null || settings === void 0 ? void 0 : settings.map((props, index) => index > 2 &&
826
+ props.show && (React.createElement(List.Item, null,
827
+ React.createElement(BlockButton, { props: props, index: index, record: record, recordkey: recordkey }))))))))) : (settings === null || settings === void 0 ? void 0 : settings.map((props, index) => (React.createElement(SelectableBlock, { key: index, ...props, component: "Button", blockKey: "settings", index: index, disabled: props.action === 'edit' || props.action === 'del'
828
+ ? props.disabled ||
829
+ isProcessHoldOrLocked(record['!!Weda!!ProcessHold'], record['!!Weda!!LOCK'])
830
+ : props.disabled, compId: compId, exportValue: { record, recordKey: recordkey }, actionMap: settingsMap, actionParams: { dbName, recordkey }, selectableBlockEvents: selectableBlockEvents })))),
831
+ });
832
+ }
833
+ else if (enableCellCustomOption) {
834
+ // 展示插槽操作列
835
+ baseColumns.push({
836
+ key: 'button',
837
+ header: '操作',
838
+ width: 150,
839
+ align: 'left',
840
+ fixed: 'right',
841
+ render: (record, rowKey, recordIndex, column, columnIndex) => slotRender(slots[CELL_CUSTOM_OPTION], {
842
+ record,
843
+ rowKey,
844
+ recordIndex,
845
+ column,
846
+ columnIndex,
847
+ }),
848
+ });
849
+ }
850
+ return baseColumns;
851
+ }, [fields, actionColumn, dbName, isH5, columnSets, slots]);
852
+ /**
853
+ * 表格底部,表格弹窗的确定和取消
854
+ */
855
+ const renderFooter = () => (onSelectConfirm || onSelectCancel) && (React.createElement("div", { className: isH5
856
+ ? 'adaptation-table__footer modal-table__footer'
857
+ : ' modal-table__footer' },
858
+ onSelectConfirm && (React.createElement(Button, { type: "primary", className: "adaptation-table__footer-btn", onClick: () => {
859
+ if (!(selectedKeys === null || selectedKeys === void 0 ? void 0 : selectedKeys.length)) {
860
+ return alertErrorMessage({ message: '请选择记录' });
861
+ }
862
+ if (!multipleSelect && (selectedKeys === null || selectedKeys === void 0 ? void 0 : selectedKeys.length) > 1) {
863
+ return alertErrorMessage({ message: '仅允许选择一条记录' });
864
+ }
865
+ const keys = multipleSelect
866
+ ? selectedKeys
867
+ : records.find((item) => item._id === selectedKeys[0]);
868
+ onSelectConfirm === null || onSelectConfirm === void 0 ? void 0 : onSelectConfirm(keys);
869
+ } }, "\u786E\u8BA4")),
870
+ onSelectCancel && (React.createElement(Button, { className: "adaptation-table__footer-btn", onClick: () => {
871
+ onSelectCancel === null || onSelectCancel === void 0 ? void 0 : onSelectCancel();
872
+ } }, "\u53D6\u6D88"))));
873
+ /**
874
+ * 表格导入方法
875
+ */
876
+ const importHandle = () => {
877
+ if (!isModel) {
878
+ return alertErrorMessage({
879
+ message: '当前表格组件绑定了APIs,暂不支持进行数据导入',
880
+ });
881
+ }
882
+ if (isH5) {
883
+ return alertErrorMessage({
884
+ message: '移动端暂不支持进行数据导入',
885
+ });
886
+ }
887
+ // 判断数据源是否含有不支持的导入的字段
888
+ const unsupportFields = fields.some((field) => {
889
+ if (((field === null || field === void 0 ? void 0 : field.type) === 'array' || (field === null || field === void 0 ? void 0 : field.type) === 'object') &&
890
+ field['x-required'])
891
+ return true;
892
+ });
893
+ if (unsupportFields) {
894
+ const modal = Modal.show({
895
+ size: 's',
896
+ children: (React.createElement(React.Fragment, null,
897
+ React.createElement(Modal.Body, null,
898
+ React.createElement(Modal.Message, { icon: "warning", message: "\u5F53\u524D\u8868\u683C\u6682\u4E0D\u652F\u6301\u6570\u636E\u5BFC\u5165", description: "\u5F53\u524D\u8868\u683C\u6709\u6570\u7EC4\u6216\u5BF9\u8C61\u3001\u5730\u7406\u4F4D\u7F6E\u5B57\u6BB5\u8981\u6C42\u5FC5\u586B\uFF0C\u6682\u4E0D\u652F\u6301\u5BFC\u5165\u76F8\u5173\u5B57\u6BB5\u6570\u636E" })),
899
+ React.createElement(Modal.Footer, null,
900
+ React.createElement(Button, { onClick: () => {
901
+ modal.destroy();
902
+ } }, "\u53D6\u6D88"),
903
+ React.createElement(Button, { type: "primary", onClick: async () => {
904
+ modal.destroy();
905
+ } }, "\u786E\u8BA4")))),
906
+ onClose: () => modal.destroy(),
907
+ });
908
+ }
909
+ else {
910
+ setVisible(true);
911
+ }
912
+ };
913
+ /**
914
+ * 表格导出方法
915
+ */
916
+ const exportHandle = () => {
917
+ if (!selectedKeys.length) {
918
+ return alertErrorMessage({
919
+ message: '请选择需要导出的数据',
920
+ });
921
+ }
922
+ const selectedData = records.filter((_) => selectedKeys.find((key) => _._id === key));
923
+ const selectedDataTrans = formatDataToXlsx(selectedData, exportFields, enumOptions);
924
+ exportData(selectedDataTrans, 'xlsx', datasourceTitle);
925
+ };
926
+ /**
927
+ * 表格按钮选区默认事件
928
+ */
929
+ const actionMap = {
930
+ create: () => {
931
+ if (isInIde()) {
932
+ return alertErrorMessage({
933
+ message: '请开启“实时真实预览”后,再进行新建操作',
934
+ });
935
+ }
936
+ navigateToModelPage('create', {
937
+ dbName,
938
+ });
939
+ },
940
+ del: () => deleteRecord(),
941
+ export: () => exportHandle(),
942
+ import: () => importHandle(),
943
+ };
944
+ /**
945
+ * 表格按钮选区默认事件参数
946
+ */
947
+ const exportValue = {
948
+ selectedKeys,
949
+ records, // 查询记录
950
+ };
951
+ // 左上角按钮
952
+ const renderButtons = () => {
953
+ // 展示插槽全局按钮
954
+ if (enableGlobalButton) {
955
+ return slotRender(slots.globalButton);
956
+ }
957
+ else if (enableGlobalButton === undefined) {
958
+ // 移动端和自定义APIs场景不支持导入功能
959
+ const buttonsList = isH5 || !isModel
960
+ ? buttons.filter((i) => i.action !== 'import')
961
+ : buttons;
962
+ return (buttonsList &&
963
+ buttonsList.map((props, index) => (React.createElement(SelectableBlock, { key: index, ...props, style: { marginBottom: '8px', marginRight: '10px', ...props.style }, component: "Button", blockKey: "buttons", index: index, compId: compId, exportValue: exportValue, actionMap: actionMap, selectableBlockEvents: selectableBlockEvents }))));
964
+ }
965
+ };
966
+ /**
967
+ * 右上角搜索
968
+ */
969
+ const renderSearch = () => (React.createElement("div", { className: "modal-table__search" },
970
+ React.createElement(TagSearchBox, { className: "modal-table__search-input", hideHelp: true, minWidth: 400, tips: searchValues ? '' : '搜索', attributesSelectTips: "\u9009\u62E9\u8FDB\u884C\u641C\u7D22\u7684\u5B57\u6BB5", attributes: getSearchAttributes(exportFields), onClearButtonClick: () => fetchData(), onChange: (tags) => {
971
+ const searchValues = tags
972
+ .map((item) => {
973
+ var _a, _b, _c;
974
+ // 没有选择 key
975
+ if (!item.attr) {
976
+ alertErrorMessage({ message: '请选择搜索关键字' });
977
+ return null;
978
+ }
979
+ const { key } = item.attr;
980
+ let val = ((_a = item.values[0]) === null || _a === void 0 ? void 0 : _a.key) === undefined
981
+ ? (_b = item.values[0]) === null || _b === void 0 ? void 0 : _b.name
982
+ : (_c = item.values[0]) === null || _c === void 0 ? void 0 : _c.key;
983
+ let rel = 'search';
984
+ // 过滤无效搜索值
985
+ if (val === undefined) {
986
+ return null;
987
+ }
988
+ // 字符串转换成数字
989
+ if (item.attr.fieldType === 'number') {
990
+ val = Number(val);
991
+ }
992
+ // 枚举-旧/数字/布尔用 eq,新枚举 TODO
993
+ if (['number', 'boolean'].includes(item.attr.fieldType) ||
994
+ item.attr.format === 'x-enum') {
995
+ rel = 'eq';
996
+ }
997
+ return { key, val, rel };
998
+ })
999
+ .filter((item) => item);
1000
+ fetchData({ searchValues });
1001
+ } }),
1002
+ React.createElement(Button, { className: Margin.Left['2n'], icon: "refresh", title: "\u5237\u65B0", onClick: async () => fetchData({ searchValues }) })));
1003
+ /**
1004
+ * H5的全选
1005
+ */
1006
+ const renderH5CheckboxAll = () => multipleSelect && (React.createElement(Checkbox, { value: cardList.length !== 0 && selectedKeys.length === cardList.length, onChange: (value) => {
1007
+ if (value) {
1008
+ const userKeys = cardList.map((item) => item._id);
1009
+ setState({
1010
+ selectedKeys: userKeys,
1011
+ });
1012
+ }
1013
+ else {
1014
+ setState({
1015
+ selectedKeys: [],
1016
+ });
1017
+ }
1018
+ } }, "\u5168\u9009"));
1019
+ /**
1020
+ * H5的表单单行内容
1021
+ */
1022
+ const renderH5FormItem = (columns, record, indexParam = {}) => columns.map((columnsItem, i) => {
1023
+ const { offset = 0, recordIndex = 0 } = indexParam;
1024
+ const component = columnsItem.render(record, record === null || record === void 0 ? void 0 : record[columnsItem.key], recordIndex, columnsItem, i + offset);
1025
+ return (React.createElement(Form.Item, { label: columnsItem.header, key: columnsItem.key || i },
1026
+ React.createElement(Form.Text, null, component)));
1027
+ });
1028
+ /**
1029
+ * H5的以表单格式展示内容
1030
+ */
1031
+ const renderH5Form = () => {
1032
+ const hasActionColumn = (actionColumn &&
1033
+ (settings === null || settings === void 0 ? void 0 : settings.length) > 0 &&
1034
+ enableCellCustomOption === undefined) ||
1035
+ enableCellCustomOption;
1036
+ return (React.createElement(InfiniteScroll, { dataLength: cardList.length, next: async () => {
1037
+ if (!isLoading) {
1038
+ await fetchData({
1039
+ searchValues,
1040
+ pageNo: pageIndex + 1,
1041
+ empty: false,
1042
+ });
1043
+ }
1044
+ }, hasMore: cardList.length < total, loader: React.createElement(LoadingTip, { className: "adaptation-table__loading" }), scrollableTarget: "listScrollableContainer" }, cardList.map((recordsItem, recordIndex) => (React.createElement(Card, { className: "adaptation-table__card", key: recordsItem === null || recordsItem === void 0 ? void 0 : recordsItem._id },
1045
+ React.createElement(Card.Body, { className: "adaptation-table__card-body" },
1046
+ actionColumn &&
1047
+ (settings === null || settings === void 0 ? void 0 : settings.length) > 0 &&
1048
+ enableCellCustomOption === undefined && (React.createElement(Dropdown, { clickClose: false, className: "adaptation-table__row-actions", overlayStyle: { zIndex: 998 }, button: React.createElement(Button, { type: "icon", icon: "more", style: { width: '100%' } }), appearance: "pure", ...(isInIde() && recordIndex === 0 ? { open: true } : {}) },
1049
+ React.createElement(List, { type: "option" }, settings === null || settings === void 0 ? void 0 : settings.map((props, index) => props.show && (React.createElement(List.Item, null,
1050
+ React.createElement(SelectableBlock, { ...props, component: "Button", blockKey: "settings", index: index, disabled: props.action === 'edit' ||
1051
+ props.action === 'del'
1052
+ ? props.disabled ||
1053
+ isProcessHoldOrLocked(recordsItem['!!Weda!!ProcessHold'], recordsItem['!!Weda!!LOCK'])
1054
+ : props.disabled, compId: compId, exportValue: {
1055
+ record: recordsItem,
1056
+ recordKey: recordsItem === null || recordsItem === void 0 ? void 0 : recordsItem._id,
1057
+ }, actionMap: settingsMap, actionParams: {
1058
+ dbName,
1059
+ recordkey: recordsItem === null || recordsItem === void 0 ? void 0 : recordsItem._id,
1060
+ }, selectableBlockEvents: selectableBlockEvents, style: props.type === 'link'
1061
+ ? { width: '100%', color: 'inherit' }
1062
+ : { width: '100%' } }))))))),
1063
+ enableCellCustomOption && (React.createElement(Dropdown, { clickClose: false, className: "adaptation-table__row-actions", overlayStyle: { zIndex: 998 }, button: React.createElement(Button, { type: "icon", icon: "more", style: { width: '100%' } }), appearance: "pure", ...(isInIde() && recordIndex === 0 ? { open: true } : {}) },
1064
+ React.createElement(List, { type: "option", className: "adaptation-table__row-actions-list" }, slotRender(slots[CELL_CUSTOM_OPTION], {
1065
+ record: recordsItem,
1066
+ rowKey: recordsItem === null || recordsItem === void 0 ? void 0 : recordsItem._id,
1067
+ recordIndex,
1068
+ })))),
1069
+ React.createElement(Form, { readonly: true, className: "adaptation-table__form", layout: "fixed", fixedLabelWidth: "70px" },
1070
+ multipleSelect ? (React.createElement(Checkbox, { className: "adaptation-table__item-check", name: recordsItem === null || recordsItem === void 0 ? void 0 : recordsItem._id })) : (React.createElement(Radio, { className: "adaptation-table__item-check", name: recordsItem === null || recordsItem === void 0 ? void 0 : recordsItem._id })),
1071
+ renderH5FormItem(columns.slice(0, columns.length < 4 ? -1 : 3), recordsItem, {
1072
+ offset: 0,
1073
+ recordIndex,
1074
+ })),
1075
+ React.createElement(Form, { readonly: true, className: "adaptation-table__form adaptation-table__form-extra", layout: "fixed", fixedLabelWidth: "70px" },
1076
+ React.createElement(Collapse, { icon: (active) => (React.createElement(Icon, { type: active ? 'arrowup' : 'arrowdown' })), iconPosition: "right", className: "adaptation-table__text-down" },
1077
+ React.createElement(Collapse.Panel, { id: "1", title: (active) => (active ? '收起' : '展开更多'), className: "adaptation-table__form-collapse" }, renderH5FormItem(hasActionColumn ? columns.slice(3, -1) : columns.slice(3), recordsItem, {
1078
+ offset: 3,
1079
+ recordIndex,
1080
+ }))))))))));
1081
+ };
1082
+ /**
1083
+ * H5的表格内容
1084
+ */
1085
+ const renderH5Table = () => {
1086
+ if (dbName && isLoading && cardList.length === 0) {
1087
+ return React.createElement(LoadingTip, { className: "adaptation-table__loading" });
1088
+ }
1089
+ if (cardList.length === 0 || !dbName) {
1090
+ return (!loading && (React.createElement(Text, { theme: "text", align: "center", className: "adaptation-table__nodata" }, "\u6682\u65E0\u6570\u636E")));
1091
+ }
1092
+ if (multipleSelect) {
1093
+ return (React.createElement(Checkbox.Group, { value: selectedKeys, className: "adaptation-table__all-check", onChange: (val) => {
1094
+ setState({ selectedKeys: val });
1095
+ handleRowsSelect(val);
1096
+ } }, renderH5Form()));
1097
+ }
1098
+ return (React.createElement(Radio.Group, { value: selectedKeys === null || selectedKeys === void 0 ? void 0 : selectedKeys[0], className: "adaptation-table__item-check", onChange: (val) => {
1099
+ const keys = [].concat(val);
1100
+ setState({ selectedKeys: keys });
1101
+ handleRowsSelect(keys);
1102
+ } }, renderH5Form()));
1103
+ };
1104
+ /**
1105
+ * filter 查询
1106
+ */
1107
+ const queryHandle = (searchValues = []) => {
1108
+ fetchData({ searchValues, pageNo: 1, pageSize });
1109
+ };
1110
+ /**
1111
+ * h5 filter面板
1112
+ */
1113
+ const renderH5Filter = () => (React.createElement("div", { className: "_wedamodal-fn-data-filter-form-h5" },
1114
+ React.createElement("div", { className: "_wedamodal-fn-data-filter _wedamodal-fn-data-filter--mobile" },
1115
+ React.createElement("div", { className: "_wedamodal-fn-data-filter__panel filter__panel", style: filterCollapse ? { display: 'block' } : { display: 'none' } },
1116
+ React.createElement("div", { className: "_wedamodal-fn-data-filter__panel-inner" },
1117
+ React.createElement("div", { className: "_wedamodal-fn-data-filter__panel-header" },
1118
+ React.createElement("span", { className: "filter-title" }, "\u6761\u4EF6\u7B5B\u9009"),
1119
+ React.createElement("i", { className: "filter-close-icon", onClick: () => setState((prev) => ({ filterCollapse: !prev.filterCollapse })) })),
1120
+ React.createElement("br", null),
1121
+ React.createElement(FilterFieldsPanel, { data: filterFields, getChooseList: getChooseList, fetchData: queryHandle, isH5: true }))))));
1122
+ /**
1123
+ * pc 搜索 视图选择 筛选
1124
+ */
1125
+ const renderPCViewFilter = () => (React.createElement(Row, { gap: 10 },
1126
+ React.createElement(Col, { span: 24 }, tableSearch &&
1127
+ (filterType === 'searchbox' ? (renderSearch()) : (React.createElement(Button, { className: `${Margin.Left['2n']} ${filterCollapse && 'active'}`, icon: "filter", title: "\u7B5B\u9009", onClick: () => {
1128
+ setState((prev) => ({ filterCollapse: !prev.filterCollapse }));
1129
+ } }))))));
1130
+ /**
1131
+ * 导入弹窗
1132
+ */
1133
+ const renderImportFileModal = () => {
1134
+ const supportFields = fields.filter((field) => {
1135
+ // 不支持上传的类型
1136
+ if (!field)
1137
+ return false;
1138
+ if ((field === null || field === void 0 ? void 0 : field.type) === 'array' ||
1139
+ (field === null || field === void 0 ? void 0 : field.type) === 'object' ||
1140
+ field['x-system'])
1141
+ return false;
1142
+ return true;
1143
+ });
1144
+ return (visible && (React.createElement(ImportFileModal, { fields: supportFields, visible: visible, datasourceTitle: datasourceTitle, dataBatchCreate: (data, cb) => {
1145
+ dataBatchCreate({ data, cb });
1146
+ }, onCancel: () => {
1147
+ setVisible(false);
1148
+ } })));
1149
+ };
1150
+ return isH5 ? (React.createElement("div", { className: "_wedamodal-fn-data-filter-body-h5 adaptation-table" },
1151
+ React.createElement("div", { className: "hiddenScrollbar adaptation-table__body", id: "listScrollableContainer" },
1152
+ React.createElement("div", { className: "adaptation-table__actions" },
1153
+ React.createElement(React.Fragment, null,
1154
+ React.createElement("div", { className: "_wedamodal-fn-data-filter _wedamodal-fn-data-filter--mobile" },
1155
+ tableAction && renderButtons(),
1156
+ tableSearch && filterType === 'filter' && (React.createElement(Icon, { style: { marginLeft: '10px', marginBottom: '8px' }, type: "filter", onClick: () => setState((prev) => ({
1157
+ filterCollapse: !prev.filterCollapse,
1158
+ })) }))),
1159
+ React.createElement(Justify, { className: "adaptation-table__all_check", left: renderH5CheckboxAll(), right: tableSearch && filterType === 'searchbox' && renderSearch() }))),
1160
+ renderH5Table()),
1161
+ filterType === 'filter' && renderH5Filter(),
1162
+ renderFooter(),
1163
+ renderImportFileModal())) : (React.createElement(React.Fragment, null,
1164
+ React.createElement(Table.ActionPanel, null,
1165
+ React.createElement(Justify, { left: tableAction && renderButtons(), right: renderPCViewFilter() })),
1166
+ filterType === 'filter' && (React.createElement("div", { className: "_wedamodal-fn-data-filter", style: { display: `${filterCollapse ? 'block' : 'none'}` } },
1167
+ React.createElement(FilterFieldsPanel, { data: filterFields, getChooseList: getChooseList, fetchData: queryHandle }))),
1168
+ React.createElement(Table, { className: `modal-table ${loading ? 'modal-table-loading' : ''}`, recordKey: "_id", records: loading ? [] : records, addons: tableAddons, columns: columns, hideHeader: !emptyTextRef.current }),
1169
+ renderFooter(),
1170
+ renderImportFileModal()));
1171
+ };