@cloudbase/weda-ui 3.4.3 → 3.4.5

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 (277) hide show
  1. package/dist/configs/components/chart/bar.json +117 -8
  2. package/dist/configs/components/chart/line.js +127 -18
  3. package/dist/configs/components/chart/pie.json +117 -8
  4. package/dist/configs/components/chart/statisticsCard.json +57 -0
  5. package/dist/configs/components/dataView.js +507 -0
  6. package/dist/configs/components/form/location.json +2 -1
  7. package/dist/configs/components/form/userTreeSelect.json +55 -0
  8. package/dist/configs/components/formdetail.json +12 -2
  9. package/dist/configs/components/graphicCard.json +1 -1
  10. package/dist/configs/components/grid/col.js +125 -0
  11. package/dist/configs/components/grid/grid.js +131 -0
  12. package/dist/configs/components/grid/row.js +143 -0
  13. package/dist/configs/components/image.js +11 -1
  14. package/dist/configs/components/link.js +11 -1
  15. package/dist/configs/components/listView.js +1092 -0
  16. package/dist/configs/components/navLayout.json +1 -1
  17. package/dist/configs/components/navigationBar.json +9 -1
  18. package/dist/configs/components/repeater-item.json +17 -0
  19. package/dist/configs/components/repeater.js +125 -0
  20. package/dist/configs/components/table.json +187 -29
  21. package/dist/configs/components/text.js +12 -1
  22. package/dist/configs/components/wd-bubble.js +204 -0
  23. package/dist/configs/components/wd-button.js +417 -0
  24. package/dist/configs/components/wd-divider.js +89 -0
  25. package/dist/configs/components/wd-icon.js +126 -0
  26. package/dist/configs/components/wd-image.js +164 -0
  27. package/dist/configs/components/wd-link.js +234 -0
  28. package/dist/configs/components/wd-table.js +59 -0
  29. package/dist/configs/components/wd-text.js +142 -0
  30. package/dist/configs/components/wxOpenApi/phone.js +2 -2
  31. package/dist/configs/components/wxOpenApi/phoneCode.js +2 -2
  32. package/dist/configs/index.js +34 -3
  33. package/dist/configs/type-utils/index.js +4 -1
  34. package/dist/docs/common/componentList.js +144 -0
  35. package/dist/docs/common/components/classes-view.js +34 -0
  36. package/dist/docs/common/components/event-view.js +46 -0
  37. package/dist/docs/common/components/json-schema-view.js +18 -0
  38. package/dist/docs/common/components/methods-view.js +32 -0
  39. package/dist/docs/common/components/properties-view.js +45 -0
  40. package/dist/docs/common/format.js +60 -35
  41. package/dist/docs/common/helper.js +1 -0
  42. package/dist/docs/common/tableView.js +61 -50
  43. package/dist/enum/index.js +521 -0
  44. package/dist/index.js +1 -1
  45. package/dist/style/index.scss +1 -0
  46. package/dist/web/actions/showMessage/index.css +0 -3
  47. package/dist/web/actions/showMessage/index.js +1 -1
  48. package/dist/web/actions/showModal/index.css +0 -3
  49. package/dist/web/components/button/index.css +2 -5
  50. package/dist/web/components/button/index.js +3 -3
  51. package/dist/web/components/calendar/index.css +29 -32
  52. package/dist/web/components/calendar/index.js +37 -35
  53. package/dist/web/components/carousel/index.css +11 -14
  54. package/dist/web/components/carousel/index.js +3 -1
  55. package/dist/web/components/chart/common/core/eChartBar.js +10 -2
  56. package/dist/web/components/chart/common/core/eChartLine.js +16 -8
  57. package/dist/web/components/chart/common/core/eChartPie.js +2 -1
  58. package/dist/web/components/chart/common/data-transform.js +1 -1
  59. package/dist/web/components/chart/statisticsCard/index.css +12 -15
  60. package/dist/web/components/chart/statisticsCard/index.js +7 -2
  61. package/dist/web/components/dataView/index.js +3 -3
  62. package/dist/web/components/emptyContent/index.css +26 -0
  63. package/dist/web/components/emptyContent/index.js +46 -0
  64. package/dist/web/components/flow/components/FlowModuleText/index.css +1 -4
  65. package/dist/web/components/flow/components/FlowUserSelect/index.css +29 -32
  66. package/dist/web/components/flow/components/HighlightTextarea/index.css +5 -8
  67. package/dist/web/components/flow/components/UserSelectModel/UserSelect.js +9 -8
  68. package/dist/web/components/flow/components/UserSelectModel/UserSelectMobile.css +1 -4
  69. package/dist/web/components/flow/components/UserSelectModel/UserSelectMobile.js +3 -4
  70. package/dist/web/components/flow/components/WedaUserTransfer/index.css +0 -3
  71. package/dist/web/components/flow/frame/getCommonFlowData.js +3 -1
  72. package/dist/web/components/flow/frame/index.js +18 -1
  73. package/dist/web/components/flow/frame/types.js +6 -0
  74. package/dist/web/components/flow/frame/utils.js +20 -11
  75. package/dist/web/components/flow/modules/basic/Basic.css +3 -6
  76. package/dist/web/components/flow/modules/basic/BasicMobile.css +9 -12
  77. package/dist/web/components/flow/modules/chart/Chart.js +2 -2
  78. package/dist/web/components/flow/modules/chart/index.css +23 -29
  79. package/dist/web/components/flow/modules/chart/isString.js +5 -0
  80. package/dist/web/components/flow/modules/control/ApprovalDrawer.css +44 -47
  81. package/dist/web/components/flow/modules/control/ApprovalPopup.css +34 -37
  82. package/dist/web/components/flow/modules/control/ApprovalPopup.js +12 -9
  83. package/dist/web/components/flow/modules/control/Control.css +7 -10
  84. package/dist/web/components/flow/modules/control/Control.js +31 -16
  85. package/dist/web/components/flow/modules/control/ControlMobile.css +41 -12
  86. package/dist/web/components/flow/modules/control/ControlMobile.js +28 -13
  87. package/dist/web/components/flow/modules/control/FlowTaskInfoModal.css +0 -3
  88. package/dist/web/components/flow/modules/control/FlowTaskInfoModal.js +4 -4
  89. package/dist/web/components/flow/modules/control/provider/useControlModel.js +20 -11
  90. package/dist/web/components/flow/modules/control/provider/useMobileModel.js +0 -2
  91. package/dist/web/components/flow/modules/control/provider/useRevokeAndBackHook.js +2 -0
  92. package/dist/web/components/flow/modules/control/utils/index.js +1 -0
  93. package/dist/web/components/flow/modules/control/utils/tools.js +3 -0
  94. package/dist/web/components/flow/modules/layout/index.css +0 -3
  95. package/dist/web/components/flow/modules/process/Process.js +1 -1
  96. package/dist/web/components/flow/modules/process/ProcessMobile.js +1 -1
  97. package/dist/web/components/flow/modules/process/index.css +49 -43
  98. package/dist/web/components/form/form/index.css +2 -5
  99. package/dist/web/components/form/form/index.js +48 -4
  100. package/dist/web/components/form/formcell/index.css +29 -17
  101. package/dist/web/components/form/input/index.css +5 -8
  102. package/dist/web/components/form/input/index.js +11 -0
  103. package/dist/web/components/form/location/common/mapChoose.css +88 -91
  104. package/dist/web/components/form/location/common/selectModal.css +10 -13
  105. package/dist/web/components/form/location/components/LocationH5/index.css +17 -20
  106. package/dist/web/components/form/location/components/LocationH5/location.h5.js +2 -3
  107. package/dist/web/components/form/location/components/LocationH5/location.module.css +0 -3
  108. package/dist/web/components/form/location/components/LocationPC/index.css +10 -13
  109. package/dist/web/components/form/location/components/LocationPC/location.PC.js +2 -3
  110. package/dist/web/components/form/location/index.css +0 -3
  111. package/dist/web/components/form/radio/index.css +0 -3
  112. package/dist/web/components/form/select/allTimePicker/calendar.css +15 -18
  113. package/dist/web/components/form/select/allTimePicker/index.css +53 -27
  114. package/dist/web/components/form/select/dropdown-select/h5.js +23 -12
  115. package/dist/web/components/form/select/dropdown-select/index.css +34 -27
  116. package/dist/web/components/form/select/dropdown-select/index.js +37 -4
  117. package/dist/web/components/form/select/dropdown-select/pc.js +57 -17
  118. package/dist/web/components/form/select/dropdown-select/ui.js +5 -2
  119. package/dist/web/components/form/select/index.css +12 -8
  120. package/dist/web/components/form/select/index.js +4 -9
  121. package/dist/web/components/form/select/status/index.css +10 -13
  122. package/dist/web/components/form/switch/switch.module.css +0 -3
  123. package/dist/web/components/form/textarea/index.css +1 -4
  124. package/dist/web/components/form/textarea/index.js +1 -1
  125. package/dist/web/components/form/tips/index.css +11 -2
  126. package/dist/web/components/form/uploader/index.css +14 -17
  127. package/dist/web/components/form/uploaderFile/index.css +64 -66
  128. package/dist/web/components/form/uploaderFile/uploadFile.h5.js +10 -11
  129. package/dist/web/components/form/uploaderFile/uploadFile.pc.js +3 -2
  130. package/dist/web/components/form/userOrgSelect/common/fetch-data-service.js +120 -38
  131. package/dist/web/components/form/userOrgSelect/common/utils.js +89 -1
  132. package/dist/web/components/form/userOrgSelect/component/depart-breadcrumb.js +15 -0
  133. package/dist/web/components/form/userOrgSelect/component/depart-select/depart-select-pc.js +63 -0
  134. package/dist/web/components/form/userOrgSelect/component/depart-select/index.js +96 -0
  135. package/dist/web/components/form/userOrgSelect/component/depart-select/org-modal-pc.js +69 -0
  136. package/dist/web/components/form/userOrgSelect/{user-select-pc → component}/error-tips.js +0 -0
  137. package/dist/web/components/form/userOrgSelect/component/index.css +323 -0
  138. package/dist/web/components/form/userOrgSelect/component/input-tags.js +21 -0
  139. package/dist/web/components/form/userOrgSelect/component/modal-search-h5.js +25 -0
  140. package/dist/web/components/form/userOrgSelect/component/modal-search.js +11 -0
  141. package/dist/web/components/form/userOrgSelect/component/modal-select-h5.js +201 -0
  142. package/dist/web/components/form/userOrgSelect/component/org-tree-h5.js +19 -0
  143. package/dist/web/components/form/userOrgSelect/component/org-tree.js +33 -0
  144. package/dist/web/components/form/userOrgSelect/component/selected-list-h5.js +44 -0
  145. package/dist/web/components/form/userOrgSelect/component/selected-list.js +15 -0
  146. package/dist/web/components/form/userOrgSelect/component/user-org-list.js +55 -0
  147. package/dist/web/components/form/userOrgSelect/component/user-select-h5/index.js +168 -0
  148. package/dist/web/components/form/userOrgSelect/component/user-select-h5/user-list-h5.js +107 -0
  149. package/dist/web/components/form/userOrgSelect/component/user-select-h5/user-select-h5.js +59 -0
  150. package/dist/web/components/form/userOrgSelect/component/user-select-pc/error-tips.js +11 -0
  151. package/dist/web/components/form/userOrgSelect/{user-select-pc → component/user-select-pc}/model-user-list.js +9 -9
  152. package/dist/web/components/form/userOrgSelect/component/user-select-pc/org-tree.js +10 -0
  153. package/dist/web/components/form/userOrgSelect/component/user-select-pc/user-model.js +75 -0
  154. package/dist/web/components/form/userOrgSelect/component/user-select-pc/user-select-pc.js +65 -0
  155. package/dist/web/components/form/userOrgSelect/component/userOrgSelect.css +1160 -0
  156. package/dist/web/components/form/userOrgSelect/departTreeSelect/departTreeSelect.h5.js +54 -87
  157. package/dist/web/components/form/userOrgSelect/hooks/use-depart-data.js +30 -35
  158. package/dist/web/components/form/userOrgSelect/hooks/use-views-data.js +48 -0
  159. package/dist/web/components/formdetail/index.css +34 -31
  160. package/dist/web/components/formdetail/index.js +12 -3
  161. package/dist/web/components/graphicCard/index.css +15 -18
  162. package/dist/web/components/grid/_utils.css +67 -0
  163. package/dist/web/components/grid/col.js +33 -0
  164. package/dist/web/components/grid/grid.css +1185 -0
  165. package/dist/web/components/grid/grid.js +19 -0
  166. package/dist/web/components/grid/row.js +14 -0
  167. package/dist/web/components/image/image.js +9 -1
  168. package/dist/web/components/image/index.css +2 -5
  169. package/dist/web/components/index.js +17 -3
  170. package/dist/web/components/link/index.css +0 -3
  171. package/dist/web/components/listView/index.css +21 -23
  172. package/dist/web/components/listView/index.js +215 -81
  173. package/dist/web/components/lottery/index.css +72 -75
  174. package/dist/web/components/modal/h5.css +19 -21
  175. package/dist/web/components/modal/modal.h5.js +11 -10
  176. package/dist/web/components/navLayout/index.css +14 -139
  177. package/dist/web/components/navigationBar/common.js +5 -4
  178. package/dist/web/components/navigationBar/h5Menu.js +12 -10
  179. package/dist/web/components/navigationBar/horizontalMenu.js +42 -35
  180. package/dist/web/components/navigationBar/index.css +130 -86
  181. package/dist/web/components/navigationBar/index.js +6 -4
  182. package/dist/web/components/navigationBar/verticalMenu.js +13 -9
  183. package/dist/web/components/pageLayout/PageContent/index.css +7 -10
  184. package/dist/web/components/pageLayout/index.css +0 -3
  185. package/dist/web/components/pageLayout/index.js +2 -1
  186. package/dist/web/components/repeater/index.js +17 -0
  187. package/dist/web/components/repeater-item/index.js +9 -0
  188. package/dist/web/components/richText/index.css +5 -8
  189. package/dist/web/components/richText/index.js +4 -2
  190. package/dist/web/components/richText/richtext.module.css +1 -4
  191. package/dist/web/components/richTextView/index.css +9 -10
  192. package/dist/web/components/swiper/index.css +10 -13
  193. package/dist/web/components/swiper/index.js +25 -5
  194. package/dist/web/components/table/BaseTable.js +355 -286
  195. package/dist/web/components/table/ExportFileModalByApi/index.css +9 -0
  196. package/dist/web/components/table/ExportFileModalByApi/index.js +150 -0
  197. package/dist/web/components/table/FieldRender.js +25 -18
  198. package/dist/web/components/table/FilterFields.js +17 -11
  199. package/dist/web/components/table/Form/Location.css +2 -5
  200. package/dist/web/components/table/ImportFileModal/csvTemplate.json +65 -6
  201. package/dist/web/components/table/ImportFileModalByApi/index.css +130 -0
  202. package/dist/web/components/table/ImportFileModalByApi/index.js +321 -0
  203. package/dist/web/components/table/ImportFileModalByApi/uploadCSVFile.js +115 -0
  204. package/dist/web/components/table/InOrOutRecordModeal.js +139 -0
  205. package/dist/web/components/table/SelectableBlock/index.css +0 -2
  206. package/dist/web/components/table/UserDepartment/viewCell.css +3 -6
  207. package/dist/web/components/table/baseTable.css +579 -0
  208. package/dist/web/components/table/hooks/useImportingStatus.js +69 -0
  209. package/dist/web/components/table/hooks/useInOutFieldsRecords.js +23 -0
  210. package/dist/web/components/table/index.css +275 -508
  211. package/dist/web/components/table/index.js +6 -4
  212. package/dist/web/components/tabs/index.css +19 -18
  213. package/dist/web/components/tabs/tabs.h5.js +7 -16
  214. package/dist/web/components/text/index.css +6 -9
  215. package/dist/web/components/uploaderFileView/index.css +0 -3
  216. package/dist/web/components/uploaderView/index.css +5 -8
  217. package/dist/web/components/wd-bubble/index.js +3 -17
  218. package/dist/web/components/wd-bubble/wd-bubble.js +17 -0
  219. package/dist/web/components/wd-button/convert-legacy-props.js +14 -0
  220. package/dist/web/components/wd-button/index.js +3 -0
  221. package/dist/web/components/wd-button/wd-button.js +89 -0
  222. package/dist/web/components/wd-config-provider/index.js +1 -0
  223. package/dist/web/components/wd-config-provider/wd-config-context.js +5 -0
  224. package/dist/web/components/wd-config-provider/wd-config-provider.js +12 -0
  225. package/dist/web/components/wd-divider/index.js +3 -0
  226. package/dist/web/components/wd-divider/wd-divider.js +29 -0
  227. package/dist/web/components/wd-icon/convert-legacy-props.js +14 -0
  228. package/dist/web/components/wd-icon/index.js +3 -0
  229. package/dist/web/components/wd-icon/wd-icon.js +63 -0
  230. package/dist/web/components/wd-image/image.js +171 -0
  231. package/dist/web/components/wd-image/index.js +82 -0
  232. package/dist/web/components/wd-link/index.js +3 -0
  233. package/dist/web/components/wd-link/wd-link.js +105 -0
  234. package/dist/web/components/wd-table/index.js +3 -0
  235. package/dist/web/components/wd-table/wd-table.js +24 -0
  236. package/dist/web/components/wd-text/convert-legacy-props.js +14 -0
  237. package/dist/web/components/wd-text/index.js +3 -0
  238. package/dist/web/components/wd-text/wd-text.js +91 -0
  239. package/dist/web/components/wedaVideo/index.css +2 -5
  240. package/dist/web/components/wedaVideo/index.js +8 -6
  241. package/dist/web/index.js +1 -1
  242. package/dist/web/utils/config-context/index.js +1 -0
  243. package/dist/web/utils/config-context/use-config.js +9 -0
  244. package/dist/web/utils/constant.js +1 -0
  245. package/dist/web/utils/datasource.js +19 -7
  246. package/dist/web/utils/file.js +22 -0
  247. package/dist/web/utils/hooks/CreatePortal.js +6 -0
  248. package/dist/web/utils/hooks/EnumHoc.js +23 -3
  249. package/dist/web/utils/hooks/context.js +5 -1
  250. package/dist/web/utils/hooks/use-cloud-id-temp-url.js +2 -1
  251. package/dist/web/utils/platform.js +40 -12
  252. package/dist/web/utils/pollingInterface.js +61 -0
  253. package/dist/web/utils/tcb.js +16 -0
  254. package/dist/web/utils/tool.js +88 -0
  255. package/dist/web/utils/widget-api/index.js +18 -0
  256. package/dist/web/weda-ui.css +128 -4
  257. package/package.json +51 -33
  258. package/dist/configs/components/dataView.json +0 -305
  259. package/dist/configs/components/listView.json +0 -515
  260. package/dist/configs/components/wd-bubble.json +0 -170
  261. package/dist/web/components/form/userOrgSelect/comTool.js +0 -102
  262. package/dist/web/components/form/userOrgSelect/departTreeSelect/departTreeSelect.pc.js +0 -155
  263. package/dist/web/components/form/userOrgSelect/departTreeSelect/index.js +0 -17
  264. package/dist/web/components/form/userOrgSelect/getUserService.js +0 -165
  265. package/dist/web/components/form/userOrgSelect/index.js +0 -17
  266. package/dist/web/components/form/userOrgSelect/user-select-pc/index.css +0 -216
  267. package/dist/web/components/form/userOrgSelect/user-select-pc/index.js +0 -195
  268. package/dist/web/components/form/userOrgSelect/user-select-pc/org-tree.js +0 -15
  269. package/dist/web/components/form/userOrgSelect/user-select-pc/search-user.js +0 -80
  270. package/dist/web/components/form/userOrgSelect/user-select-pc/selected-user-list.js +0 -12
  271. package/dist/web/components/form/userOrgSelect/user-select-pc/user-model.js +0 -36
  272. package/dist/web/components/form/userOrgSelect/userOrgSelect.css +0 -824
  273. package/dist/web/components/form/userOrgSelect/userTreeSelect.h5.js +0 -302
  274. package/dist/web/components/form/userOrgSelect/utils.js +0 -95
  275. package/dist/web/components/table/ImportFileModal/index.css +0 -263
  276. package/dist/web/components/wd-bubble/index.css +0 -21
  277. package/dist/web/utils/hooks/useRequest.js +0 -25
@@ -1,31 +1,41 @@
1
- import React, { useState, useEffect, useRef, useCallback } from 'react';
1
+ import React, { useState, useEffect, useRef, useCallback, useImperativeHandle, } from 'react';
2
2
  import { callDataSource } from '../../utils/tcb';
3
- import { isInIde, getWhereList } from '../../utils/platform';
3
+ import { isInIde, getWhereList, alertErrorMessage } from '../../utils/platform';
4
4
  import classNames from '../../utils/classnames';
5
5
  import isequal from 'lodash.isequal';
6
6
  import './index.css';
7
7
  import { isNil } from '../../utils/lodash';
8
+ import { getUuid } from '../../utils/tool';
9
+ import EmptyContent from '../emptyContent';
8
10
  const ORDERTYPE = ['asc', 'desc'];
9
11
  const BLOCK_NAME = 'weda-list-view';
12
+ const LISTVIEW_MESSAGE = {
13
+ methods_no_support: '当前组件绑定了APIs,暂不支持进行数据删除',
14
+ deleteOne_param_error: '传入的"数据标识"参数格式错误',
15
+ deleteOne_success: '删除数据成功',
16
+ deleteOne_fail: '删除数据失败',
17
+ refresh_success: '刷新数据成功',
18
+ refresh_fail: '刷新数据失败',
19
+ };
10
20
  const getIdeMockData = (length = 3) => Array.from({ length }).map(() => Object.create(null));
21
+ const getStringValue = (v) => (typeof v === 'string' ? v : '');
11
22
  /**
12
23
  * 数据容器-列表视图
13
24
  */
14
- export default function ListView(props) {
25
+ export default React.forwardRef(function ListView(props, ref) {
15
26
  var _a, _b, _c;
16
27
  const { dataSourceType, bindConnectMetadata, connectorMethod, connectorParams: rawConnectorParams, datasource, orderBy, orderType, where: rawWhere, template, pageSize = 5, pagination, events, className, children, isRecords = true, //是否展示回调recoreds字段
17
28
  isSetStatus = false, //是否开启加载状态
29
+ emptyText, //空状态时的文案
18
30
  loadCompletedText = '', // 加载到底提示
19
31
  appCloud = { callDataSource, isInIde }, beforeDataChange = (v) => v, ...rest } = props;
20
32
  const connectorParams = rawConnectorParams && JSON.parse(JSON.stringify(rawConnectorParams));
21
33
  const where = rawWhere && JSON.parse(JSON.stringify(rawWhere));
22
34
  const isModel = dataSourceType !== 'custom-connector';
23
- const methodName = isModel
35
+ const methodName = getStringValue(isModel
24
36
  ? ((_a = datasource === null || datasource === void 0 ? void 0 : datasource.extra) === null || _a === void 0 ? void 0 : _a.methodName) || 'wedaGetRecords'
25
- : connectorMethod === null || connectorMethod === void 0 ? void 0 : connectorMethod.name; // 默认方法名
26
- const dataSourceName = isModel
27
- ? datasource === null || datasource === void 0 ? void 0 : datasource.name
28
- : (_b = bindConnectMetadata === null || bindConnectMetadata === void 0 ? void 0 : bindConnectMetadata.datasource) === null || _b === void 0 ? void 0 : _b.name;
37
+ : connectorMethod === null || connectorMethod === void 0 ? void 0 : connectorMethod.name);
38
+ const dataSourceName = getStringValue(isModel ? datasource === null || datasource === void 0 ? void 0 : datasource.name : (_b = bindConnectMetadata === null || bindConnectMetadata === void 0 ? void 0 : bindConnectMetadata.datasource) === null || _b === void 0 ? void 0 : _b.name);
29
39
  const [entry, setEntry] = useState(null); // 触底的observer对象
30
40
  const [status, setStatus] = useState(''); // 查询状态
31
41
  const paramRef = useRef({
@@ -48,12 +58,17 @@ export default function ListView(props) {
48
58
  ['', 'success'].includes(status); // 能否触底加载
49
59
  // 组件卸载时触发
50
60
  useEffect(() => {
61
+ clearContext();
51
62
  return () => {
52
- var _a, _b;
63
+ var _a;
53
64
  (_a = observeRef.current) === null || _a === void 0 ? void 0 : _a.disconnect();
54
- (_b = events === null || events === void 0 ? void 0 : events.onDataChange) === null || _b === void 0 ? void 0 : _b.call(events, { data: beforeDataChange([]), state: {} });
65
+ clearContext();
55
66
  };
56
67
  }, []);
68
+ // 监听更改数据源时,清空当前列表
69
+ useEffect(() => {
70
+ clearContext();
71
+ }, [methodName, dataSourceName, isModel]);
57
72
  // props 基本类型监听,需重新分页;处于 ide 且未绑定数据源时返回mock数据
58
73
  useEffect(() => {
59
74
  var _a, _b;
@@ -78,15 +93,7 @@ export default function ListView(props) {
78
93
  state: getContextState(),
79
94
  });
80
95
  }
81
- }, [
82
- methodName,
83
- dataSourceName,
84
- pageSize,
85
- pagination,
86
- orderBy,
87
- orderType,
88
- isModel,
89
- ]);
96
+ }, [methodName, dataSourceName, pageSize, pagination, orderBy, orderType, isModel]);
90
97
  // props 对象类型监听,需重新分页
91
98
  useEffect(() => {
92
99
  var _a, _b, _c, _d;
@@ -121,6 +128,11 @@ export default function ListView(props) {
121
128
  clearTimeout(delayRef.current.statusTimer);
122
129
  clearTimeout(delayRef.current.eventTimer);
123
130
  };
131
+ // 清除上下文状态
132
+ const clearContext = () => {
133
+ var _a;
134
+ (_a = events === null || events === void 0 ? void 0 : events.onDataChange) === null || _a === void 0 ? void 0 : _a.call(events, { data: beforeDataChange([]), state: {} });
135
+ };
124
136
  // 触底监控对象
125
137
  const nodeRefCallback = useCallback((node) => {
126
138
  var _a;
@@ -139,15 +151,90 @@ export default function ListView(props) {
139
151
  const { total = 0 } = dataRef.current || {};
140
152
  return pageNo * pageSize < total;
141
153
  };
154
+ /**
155
+ * 循环调用接口获取当前已加载的数据
156
+ */
157
+ const fetchDataLoop = useCallback(async (param = {}, count = 0) => {
158
+ let [records, total] = [[], 0];
159
+ try {
160
+ const { dataSourceName, methodName, params } = param || {};
161
+ const MAX_PAGESIZE = Math.min(1000, count);
162
+ const loopLength = Math.ceil(count / MAX_PAGESIZE);
163
+ for (let i = 1; i < loopLength + 1; i++) {
164
+ const tcbParams = { ...params, pageNo: i, pageSize: MAX_PAGESIZE };
165
+ const temp = await (appCloud === null || appCloud === void 0 ? void 0 : appCloud.callDataSource({
166
+ dataSourceName,
167
+ methodName,
168
+ params: tcbParams,
169
+ }, true));
170
+ records = records.concat(temp.records || []);
171
+ total = temp.total || 0;
172
+ }
173
+ }
174
+ catch (e) {
175
+ console.error('fetchDataLoop: ', e);
176
+ }
177
+ return { records: records.slice(0, count), total };
178
+ }, [appCloud]);
179
+ /**
180
+ * 根据fetchData方法返回值,回调给外部事件
181
+ */
182
+ const onEvents = useCallback((data, datasource) => {
183
+ var _a, _b;
184
+ const fetchRecords = [].concat(!isRecords && !isModel ? data : (data === null || data === void 0 ? void 0 : data.records) || []);
185
+ const total = Number(data === null || data === void 0 ? void 0 : data.total) || 0;
186
+ if (['loadMoreButton', 'bottomLoad'].includes(paramRef.current.pagination)) {
187
+ dataRef.current = {
188
+ total,
189
+ records: [...dataRef.current.records, ...fetchRecords],
190
+ };
191
+ }
192
+ else {
193
+ dataRef.current = { total, records: fetchRecords };
194
+ }
195
+ (_a = events === null || events === void 0 ? void 0 : events.onDataChange) === null || _a === void 0 ? void 0 : _a.call(events, {
196
+ data: beforeDataChange(dataRef.current.records || []),
197
+ state: getContextState(),
198
+ });
199
+ if (total === 0) {
200
+ setStatus('empty');
201
+ (_b = events === null || events === void 0 ? void 0 : events.queryEmpty) === null || _b === void 0 ? void 0 : _b.call(events, {
202
+ datasource,
203
+ data: beforeDataChange([]),
204
+ });
205
+ }
206
+ else {
207
+ const statusCb = () => setStatus('success');
208
+ if (pagination === 'bottomLoad') {
209
+ delayRef.current.statusTimer = window.setTimeout(statusCb, 150);
210
+ }
211
+ else {
212
+ statusCb();
213
+ }
214
+ }
215
+ const successCb = () => {
216
+ var _a;
217
+ (_a = events === null || events === void 0 ? void 0 : events.querySuccess) === null || _a === void 0 ? void 0 : _a.call(events, {
218
+ datasource,
219
+ data: beforeDataChange(dataRef.current.records),
220
+ });
221
+ };
222
+ if (pagination === 'bottomLoad') {
223
+ delayRef.current.eventTimer = window.setTimeout(successCb, 200);
224
+ }
225
+ else {
226
+ successCb();
227
+ }
228
+ }, [beforeDataChange, events, isModel, isRecords, pagination]);
142
229
  /**
143
230
  * 列表视图拉取数据
144
231
  * 方法仅依赖入参和paramRef的参数
145
- * isInitData: 是否初始化数据默认否
232
+ * isInitData: 是否初始化数据默认否, isFetchCurrent: 是否拉取当前所有数据默认否
146
233
  */
147
- const fetchData = async (param, options) => {
234
+ const fetchData = useCallback(async (param, options) => {
148
235
  var _a;
149
- const fetchVersion = (delayRef.current.version = Date.now());
150
- const { isInitData } = options || {};
236
+ const fetchVersion = (delayRef.current.version = getUuid());
237
+ const { isInitData, isFetchCurrent } = options || {};
151
238
  // 合并参数并保存,useEffect 中需要比对
152
239
  paramRef.current = {
153
240
  ...paramRef.current,
@@ -180,16 +267,21 @@ export default function ListView(props) {
180
267
  tcbParams = Object.assign({}, connectorParams, tcbParams);
181
268
  }
182
269
  // tcb结果和事件
183
- let data = [];
270
+ let data = {};
184
271
  const eventDatasource = isModel
185
272
  ? datasource
186
273
  : { ...bindConnectMetadata, ...connectorMethod };
187
274
  try {
188
- data = await (appCloud === null || appCloud === void 0 ? void 0 : appCloud.callDataSource({
189
- dataSourceName,
190
- methodName,
191
- params: tcbParams,
192
- }, true));
275
+ if (isFetchCurrent) {
276
+ data = await fetchDataLoop({ dataSourceName, methodName, params: tcbParams }, dataRef.current.records.length);
277
+ }
278
+ else {
279
+ data = await (appCloud === null || appCloud === void 0 ? void 0 : appCloud.callDataSource({
280
+ dataSourceName,
281
+ methodName,
282
+ params: tcbParams,
283
+ }, true));
284
+ }
193
285
  if (fetchVersion !== delayRef.current.version)
194
286
  return;
195
287
  isInitData && (dataRef.current = { total: 0, records: [] });
@@ -199,66 +291,106 @@ export default function ListView(props) {
199
291
  setStatus('fail');
200
292
  (_a = events === null || events === void 0 ? void 0 : events.queryFail) === null || _a === void 0 ? void 0 : _a.call(events, { datasource: eventDatasource, data: null });
201
293
  }
202
- };
294
+ }, [
295
+ appCloud,
296
+ bindConnectMetadata,
297
+ connectorMethod,
298
+ datasource,
299
+ events,
300
+ fetchDataLoop,
301
+ isModel,
302
+ onEvents,
303
+ ]);
203
304
  /**
204
- * 根据fetchData方法返回值,回调给外部事件
305
+ * 计算上下文对象数据
205
306
  */
206
- const onEvents = (data, datasource) => {
307
+ const getContextState = (state = {}) => {
207
308
  var _a, _b;
208
- const fetchRecords = [].concat(!isRecords && !isModel ? data : (data === null || data === void 0 ? void 0 : data.records) || []);
209
- const total = Number(data === null || data === void 0 ? void 0 : data.total) || 0;
210
- if (['loadMoreButton', 'bottomLoad'].includes(paramRef.current.pagination)) {
211
- dataRef.current = {
212
- total,
213
- records: [...dataRef.current.records, ...fetchRecords],
214
- };
215
- }
216
- else {
217
- dataRef.current = { total, records: fetchRecords };
309
+ const total = (_b = (_a = dataRef.current) === null || _a === void 0 ? void 0 : _a.total) !== null && _b !== void 0 ? _b : 0;
310
+ const { pageNo, pageSize } = paramRef.current.params;
311
+ return { total, pageNo, pageSize, ...state };
312
+ };
313
+ /**
314
+ * 组件刷新方法,重新初始化
315
+ */
316
+ const methodRefreshFromStart = useCallback(async () => {
317
+ try {
318
+ clearDelay();
319
+ await fetchData({ params: { pageNo: 1 } }, { isInitData: true });
218
320
  }
219
- (_a = events === null || events === void 0 ? void 0 : events.onDataChange) === null || _a === void 0 ? void 0 : _a.call(events, {
220
- data: beforeDataChange(dataRef.current.records || []),
221
- state: getContextState(),
222
- });
223
- if (total === 0) {
224
- setStatus('empty');
225
- (_b = events === null || events === void 0 ? void 0 : events.queryEmpty) === null || _b === void 0 ? void 0 : _b.call(events, {
226
- datasource,
227
- data: beforeDataChange([]),
228
- });
321
+ catch (e) {
322
+ alertErrorMessage({ message: LISTVIEW_MESSAGE.refresh_fail });
229
323
  }
230
- else {
231
- const statusCb = () => setStatus('success');
232
- if (pagination === 'bottomLoad') {
233
- delayRef.current.statusTimer = window.setTimeout(statusCb, 150);
324
+ }, [fetchData]);
325
+ /**
326
+ * 组件刷新当前方法,保持当前已加载的数据列表状态
327
+ */
328
+ const methodRefreshKeepPage = useCallback(async () => {
329
+ try {
330
+ clearDelay();
331
+ const { pageNo, pageSize } = paramRef.current.params;
332
+ const { total } = dataRef.current;
333
+ if (pagination === 'pagination') {
334
+ const pageNoRaw = (pageNo - 1) * pageSize + 1 === total ? pageNo - 1 : pageNo;
335
+ await fetchData({ params: { pageNo: pageNoRaw } }, { isInitData: true });
336
+ }
337
+ else if (['loadMoreButton', 'bottomLoad'].includes(pagination)) {
338
+ await fetchData({}, { isFetchCurrent: true, isInitData: true });
234
339
  }
235
340
  else {
236
- statusCb();
341
+ await methodRefreshFromStart();
237
342
  }
238
343
  }
239
- const successCb = () => {
240
- var _a;
241
- (_a = events === null || events === void 0 ? void 0 : events.querySuccess) === null || _a === void 0 ? void 0 : _a.call(events, {
242
- datasource,
243
- data: beforeDataChange(dataRef.current.records),
244
- });
245
- };
246
- if (pagination === 'bottomLoad') {
247
- delayRef.current.eventTimer = window.setTimeout(successCb, 200);
344
+ catch (e) {
345
+ alertErrorMessage({ message: LISTVIEW_MESSAGE.refresh_fail });
346
+ }
347
+ }, [fetchData, methodRefreshFromStart, pagination]);
348
+ /**
349
+ * 组件刷新方法,通过类别区分
350
+ */
351
+ const methodRefresh = useCallback((params) => {
352
+ if (typeof params === 'object' && (params === null || params === void 0 ? void 0 : params.type) === 'refreshKeepPage') {
353
+ methodRefreshKeepPage();
248
354
  }
249
355
  else {
250
- successCb();
356
+ methodRefreshFromStart();
251
357
  }
252
- };
358
+ }, [methodRefreshFromStart, methodRefreshKeepPage]);
253
359
  /**
254
- * 计算上下文对象数据
360
+ * 组件删除单条方法
255
361
  */
256
- const getContextState = (state = {}) => {
257
- var _a, _b;
258
- const total = (_b = (_a = dataRef.current) === null || _a === void 0 ? void 0 : _a.total) !== null && _b !== void 0 ? _b : 0;
259
- const { pageNo, pageSize } = paramRef.current.params;
260
- return { total, pageNo, pageSize, ...state };
261
- };
362
+ const methodDeleteOne = useCallback(async (params) => {
363
+ try {
364
+ if (!isModel) {
365
+ return alertErrorMessage({
366
+ message: LISTVIEW_MESSAGE.methods_no_support,
367
+ });
368
+ }
369
+ const _id = params === null || params === void 0 ? void 0 : params._id;
370
+ if (!_id || typeof _id !== 'string') {
371
+ return alertErrorMessage({
372
+ message: LISTVIEW_MESSAGE.deleteOne_param_error,
373
+ });
374
+ }
375
+ clearDelay();
376
+ await (appCloud === null || appCloud === void 0 ? void 0 : appCloud.callDataSource({
377
+ dataSourceName: paramRef.current.dataSourceName,
378
+ methodName: 'wedaDelete',
379
+ params: { _id },
380
+ }));
381
+ await methodRefreshKeepPage();
382
+ }
383
+ catch (e) {
384
+ alertErrorMessage({ message: LISTVIEW_MESSAGE.deleteOne_fail });
385
+ }
386
+ }, [appCloud, isModel, methodRefreshKeepPage]);
387
+ // 组件方法
388
+ useImperativeHandle(ref, () => ({
389
+ methods: {
390
+ deleteOne: methodDeleteOne,
391
+ refresh: methodRefresh,
392
+ },
393
+ }), [methodDeleteOne, methodRefresh]);
262
394
  /**
263
395
  * 分页,加载更多
264
396
  */
@@ -301,11 +433,12 @@ export default function ListView(props) {
301
433
  const renderStatus = () => {
302
434
  switch (status) {
303
435
  case 'empty':
304
- return React.createElement("div", { className: `${BLOCK_NAME}__empty` }, "\u6682\u65E0\u6570\u636E");
436
+ return emptyText && React.createElement(EmptyContent, { emptyText: emptyText });
305
437
  case 'fail':
306
- return React.createElement("div", { className: `${BLOCK_NAME}__fail` }, "\u52A0\u8F7D\u5931\u8D25");
438
+ return (isSetStatus && React.createElement("div", { className: `${BLOCK_NAME}__fail` }, "\u52A0\u8F7D\u5931\u8D25"));
307
439
  case 'loading':
308
- return (pagination === 'pagination' && (React.createElement("div", { className: classNames(`${BLOCK_NAME}__more`, `${BLOCK_NAME}__content-loading`) }, LoadingSymbol)));
440
+ return (isSetStatus &&
441
+ pagination === 'pagination' && (React.createElement("div", { className: classNames(`${BLOCK_NAME}__more`, `${BLOCK_NAME}__content-loading`) }, LoadingSymbol)));
309
442
  }
310
443
  };
311
444
  /**
@@ -320,13 +453,14 @@ export default function ListView(props) {
320
453
  */
321
454
  const LoadEnd = status === 'success' && loadCompletedText && (React.createElement("div", { className: `${BLOCK_NAME}__load-completed` }, String(loadCompletedText)));
322
455
  return (React.createElement("div", { ...rest, className: classNames('weda-ui', `${BLOCK_NAME}__containor`, className) },
323
- children && (React.createElement("div", { className: classNames(template === 'cardList' ? `${BLOCK_NAME}-card` : '', `${BLOCK_NAME}__content`, ['empty', 'fail'].includes(status) && isSetStatus
456
+ children && (React.createElement("div", { className: classNames(template === 'cardList' ? `${BLOCK_NAME}-card` : '', `${BLOCK_NAME}__content`, (status === 'empty' && emptyText) ||
457
+ (status === 'fail' && isSetStatus)
324
458
  ? `${BLOCK_NAME}__content-blank`
325
459
  : '') },
326
460
  children,
327
- isSetStatus && renderStatus())),
461
+ renderStatus())),
328
462
  React.createElement("div", { className: classNames(`${BLOCK_NAME}__more`, `${BLOCK_NAME}__more-${pagination}`) },
329
463
  pagination === 'bottomLoad' && renderBottomLoad(),
330
464
  pagination === 'loadMoreButton' && renderLoadMore(),
331
465
  pagination === 'pagination' && renderPagination())));
332
- }
466
+ });