@bit-sun/business-component 2.4.13 → 2.4.15-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/.editorconfig +16 -16
  2. package/.fatherrc.ts +5 -5
  3. package/.gitlab-ci.yml +179 -179
  4. package/.prettierignore +7 -7
  5. package/.prettierrc +11 -11
  6. package/.umirc.ts +74 -74
  7. package/README.md +27 -27
  8. package/dist/index.js +336 -265
  9. package/docs/index.md +21 -21
  10. package/lib/assets/drag.svg +17 -17
  11. package/lib/assets/exportFail.svg +37 -37
  12. package/lib/assets/exportProcessing.svg +28 -28
  13. package/lib/assets/exportSuccess.svg +34 -34
  14. package/lib/assets/label_icon_bottom.svg +25 -25
  15. package/lib/assets/upExport.svg +22 -22
  16. package/package.json +79 -79
  17. package/src/assets/32.svg +27 -27
  18. package/src/assets/addIcon.svg +17 -17
  19. package/src/assets/allfunc.svg +27 -27
  20. package/src/assets/arrowRight.svg +24 -24
  21. package/src/assets/btn-delete.svg +29 -29
  22. package/src/assets/btn-edit.svg +19 -19
  23. package/src/assets/btn-more.svg +17 -17
  24. package/src/assets/btn-submit.svg +19 -19
  25. package/src/assets/caidan.svg +11 -11
  26. package/src/assets/close.svg +26 -26
  27. package/src/assets/drag.svg +17 -17
  28. package/src/assets/exportFail.svg +37 -37
  29. package/src/assets/exportProcessing.svg +28 -28
  30. package/src/assets/exportSuccess.svg +34 -34
  31. package/src/assets/fixed-left-active.svg +11 -11
  32. package/src/assets/fixed-left.svg +15 -15
  33. package/src/assets/fixed-right-active.svg +11 -11
  34. package/src/assets/fixed-right.svg +15 -15
  35. package/src/assets/guanbi.svg +15 -15
  36. package/src/assets/icon-quanping.svg +15 -15
  37. package/src/assets/icon-shezhi.svg +17 -17
  38. package/src/assets/label_icon_bottom.svg +25 -25
  39. package/src/assets/list-no-img.svg +21 -21
  40. package/src/assets/morentouxiang-32.svg +23 -23
  41. package/src/assets/scanning.svg +24 -24
  42. package/src/assets/upExport.svg +22 -22
  43. package/src/common/ENUM.ts +41 -41
  44. package/src/components/Business/AddSelectBusiness/index.md +162 -162
  45. package/src/components/Business/AddSelectBusiness/index.tsx +1061 -1061
  46. package/src/components/Business/BsLayouts/Components/AllFunc/drawContent.tsx +111 -111
  47. package/src/components/Business/BsLayouts/Components/AllFunc/index.less +153 -153
  48. package/src/components/Business/BsLayouts/Components/AllFunc/index.tsx +70 -70
  49. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.less +90 -90
  50. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.tsx +37 -37
  51. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/leftTree.tsx +242 -242
  52. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/rightTree.tsx +384 -384
  53. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/DrawContent.tsx +285 -285
  54. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/customMenuHeader.tsx +74 -74
  55. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/drawContent.less +170 -170
  56. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.less +64 -64
  57. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.tsx +153 -153
  58. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.less +72 -72
  59. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.tsx +157 -157
  60. package/src/components/Business/BsLayouts/Components/RightContent/LoginModal.tsx +85 -85
  61. package/src/components/Business/BsLayouts/Components/RightContent/home.less +218 -218
  62. package/src/components/Business/BsLayouts/Components/RightContent/index.tsx +155 -155
  63. package/src/components/Business/BsLayouts/Components/SearchFunc/index.less +160 -160
  64. package/src/components/Business/BsLayouts/Components/SearchFunc/index.tsx +75 -75
  65. package/src/components/Business/BsLayouts/index.less +79 -79
  66. package/src/components/Business/BsLayouts/index.tsx +1484 -1484
  67. package/src/components/Business/BsLayouts/service.ts +10 -10
  68. package/src/components/Business/BsLayouts/utils.tsx +203 -203
  69. package/src/components/Business/BsSulaQueryTable/SearchItemSetting.tsx +566 -566
  70. package/src/components/Business/BsSulaQueryTable/index.less +221 -221
  71. package/src/components/Business/BsSulaQueryTable/index.tsx +538 -538
  72. package/src/components/Business/BsSulaQueryTable/setting.tsx +854 -854
  73. package/src/components/Business/BsSulaQueryTable/utils.less +65 -65
  74. package/src/components/Business/BsSulaQueryTable/utils.tsx +690 -690
  75. package/src/components/Business/CommodityEntry/index.md +70 -70
  76. package/src/components/Business/CommodityEntry/index.tsx +80 -80
  77. package/src/components/Business/CommonAlert/index.tsx +23 -23
  78. package/src/components/Business/CommonGuideWrapper/index.less +111 -111
  79. package/src/components/Business/CommonGuideWrapper/index.md +39 -39
  80. package/src/components/Business/CommonGuideWrapper/index.tsx +83 -83
  81. package/src/components/Business/DetailPageWrapper/index.less +79 -79
  82. package/src/components/Business/DetailPageWrapper/index.tsx +315 -315
  83. package/src/components/Business/DetailPageWrapper/utils.tsx +100 -100
  84. package/src/components/Business/HomePageWrapper/index.less +33 -33
  85. package/src/components/Business/HomePageWrapper/index.md +45 -45
  86. package/src/components/Business/HomePageWrapper/index.tsx +162 -162
  87. package/src/components/Business/JsonQueryTable/components/FieldsModifyModal.tsx +824 -824
  88. package/src/components/Business/JsonQueryTable/components/FieldsSettingsTable.tsx +205 -205
  89. package/src/components/Business/JsonQueryTable/components/Formula.tsx +206 -206
  90. package/src/components/Business/JsonQueryTable/components/MaintainOptions.tsx +127 -127
  91. package/src/components/Business/JsonQueryTable/configButton/index.js +20 -20
  92. package/src/components/Business/JsonQueryTable/configTree/component/compactArrayView.js +25 -25
  93. package/src/components/Business/JsonQueryTable/configTree/component/compactObjectView.js +30 -30
  94. package/src/components/Business/JsonQueryTable/configTree/index.js +82 -82
  95. package/src/components/Business/JsonQueryTable/configTree/index.less +44 -44
  96. package/src/components/Business/JsonQueryTable/configTree/parser/highlight.js +57 -57
  97. package/src/components/Business/JsonQueryTable/configTree/parser/index.js +124 -124
  98. package/src/components/Business/JsonQueryTable/configTree/render/iconRender.js +29 -29
  99. package/src/components/Business/JsonQueryTable/configTree/render/nameRender.js +22 -22
  100. package/src/components/Business/JsonQueryTable/configTree/treeNode.js +116 -116
  101. package/src/components/Business/JsonQueryTable/drawer/index.tsx +12 -12
  102. package/src/components/Business/JsonQueryTable/function.ts +62 -62
  103. package/src/components/Business/JsonQueryTable/index.less +16 -16
  104. package/src/components/Business/JsonQueryTable/index.md +328 -328
  105. package/src/components/Business/JsonQueryTable/index.tsx +537 -537
  106. package/src/components/Business/JsonQueryTable/jsonEditor/index.js +346 -346
  107. package/src/components/Business/JsonQueryTable/jsonEditor/index.less +22 -22
  108. package/src/components/Business/JsonQueryTable/jsonEditor/lint/basicType.js +147 -147
  109. package/src/components/Business/JsonQueryTable/jsonEditor/lint/index.js +389 -389
  110. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/actions.js +118 -118
  111. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/dependency.js +22 -22
  112. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/index.js +21 -21
  113. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/request.js +65 -65
  114. package/src/components/Business/JsonQueryTable/static.ts +450 -450
  115. package/src/components/Business/SearchSelect/BusinessUtils.ts +1903 -1836
  116. package/src/components/Business/SearchSelect/common.ts +75 -75
  117. package/src/components/Business/SearchSelect/index.md +1387 -1387
  118. package/src/components/Business/SearchSelect/index.tsx +55 -55
  119. package/src/components/Business/SearchSelect/utils.ts +101 -101
  120. package/src/components/Business/StateFlow/index.less +130 -130
  121. package/src/components/Business/StateFlow/index.md +60 -60
  122. package/src/components/Business/StateFlow/index.tsx +29 -29
  123. package/src/components/Business/TreeSearchSelect/index.md +185 -185
  124. package/src/components/Business/TreeSearchSelect/index.tsx +33 -33
  125. package/src/components/Business/TreeSearchSelect/utils.ts +104 -104
  126. package/src/components/Business/columnSettingTable/columnSetting.tsx +766 -766
  127. package/src/components/Business/columnSettingTable/index.less +247 -247
  128. package/src/components/Business/columnSettingTable/index.md +357 -357
  129. package/src/components/Business/columnSettingTable/index.tsx +234 -234
  130. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +242 -242
  131. package/src/components/Business/columnSettingTable/utils.tsx +71 -71
  132. package/src/components/Business/moreTreeTable/FixedScrollBar.tsx +87 -87
  133. package/src/components/Business/moreTreeTable/hooks/useSticky.ts +21 -21
  134. package/src/components/Business/moreTreeTable/index.less +99 -99
  135. package/src/components/Business/moreTreeTable/index.md +448 -448
  136. package/src/components/Business/moreTreeTable/index.tsx +387 -387
  137. package/src/components/Business/moreTreeTable/utils.ts +126 -126
  138. package/src/components/Functional/AddSelect/helps.ts +80 -80
  139. package/src/components/Functional/AddSelect/index.less +367 -367
  140. package/src/components/Functional/AddSelect/index.md +155 -155
  141. package/src/components/Functional/AddSelect/index.tsx +1171 -1171
  142. package/src/components/Functional/BillEntry/index.less +371 -371
  143. package/src/components/Functional/BillEntry/index.md +39 -39
  144. package/src/components/Functional/BillEntry/index.tsx +773 -773
  145. package/src/components/Functional/BsAntdSula/BsCascader/index.md +62 -62
  146. package/src/components/Functional/BsAntdSula/BsCascader/index.tsx +178 -178
  147. package/src/components/Functional/BsAntdSula/index.ts +2 -2
  148. package/src/components/Functional/DataImport/index.less +63 -63
  149. package/src/components/Functional/DataImport/index.md +44 -44
  150. package/src/components/Functional/DataImport/index.tsx +696 -696
  151. package/src/components/Functional/DataValidation/index.less +63 -63
  152. package/src/components/Functional/DataValidation/index.md +39 -39
  153. package/src/components/Functional/DataValidation/index.tsx +688 -688
  154. package/src/components/Functional/EllipsisTooltip/index.d.ts +5 -5
  155. package/src/components/Functional/EllipsisTooltip/index.js +36 -36
  156. package/src/components/Functional/EllipsisTooltip/index.md +30 -30
  157. package/src/components/Functional/ExportFunctions/ExportIcon/index.md +37 -37
  158. package/src/components/Functional/ExportFunctions/ExportIcon/index.tsx +60 -60
  159. package/src/components/Functional/QueryMutipleInput/index.less +37 -37
  160. package/src/components/Functional/QueryMutipleInput/index.md +33 -33
  161. package/src/components/Functional/QueryMutipleInput/index.tsx +128 -128
  162. package/src/components/Functional/SearchSelect/index.less +115 -115
  163. package/src/components/Functional/SearchSelect/index.md +141 -141
  164. package/src/components/Functional/SearchSelect/index.tsx +896 -896
  165. package/src/components/Functional/SearchSelect/utils.ts +3 -3
  166. package/src/components/Functional/TreeSearchSelect/index.md +47 -47
  167. package/src/components/Functional/TreeSearchSelect/index.tsx +204 -201
  168. package/src/components/Solution/RuleComponent/Formula.tsx +335 -335
  169. package/src/components/Solution/RuleComponent/InnerSelect.tsx +62 -62
  170. package/src/components/Solution/RuleComponent/index.d.ts +29 -29
  171. package/src/components/Solution/RuleComponent/index.js +2073 -2073
  172. package/src/components/Solution/RuleComponent/index.less +230 -230
  173. package/src/components/Solution/RuleComponent/renderSpecificAction.js +99 -99
  174. package/src/components/Solution/RuleComponent/ruleFiled.js +2281 -2281
  175. package/src/components/Solution/RuleComponent/services.ts +13 -13
  176. package/src/components/Solution/RuleComponent/util.js +143 -143
  177. package/src/index.ts +38 -38
  178. package/src/plugin/TableColumnSetting/index.less +247 -247
  179. package/src/plugin/TableColumnSetting/index.md +50 -50
  180. package/src/plugin/TableColumnSetting/index.tsx +725 -725
  181. package/src/plugin/TableColumnSetting/utils.ts +19 -19
  182. package/src/styles/bsDefault.less +1912 -1912
  183. package/src/utils/CheckOneUser/index.md +39 -39
  184. package/src/utils/CheckOneUser/index.ts +51 -51
  185. package/src/utils/CustomLoginInfo.ts +55 -55
  186. package/src/utils/LocalstorageUtils.ts +95 -95
  187. package/src/utils/TableUtils.tsx +18 -18
  188. package/src/utils/checkUtils.ts +39 -39
  189. package/src/utils/enumConfig.ts +11 -11
  190. package/src/utils/getFormMode.js +12 -12
  191. package/src/utils/index.ts +4 -4
  192. package/src/utils/requestUtils.ts +166 -166
  193. package/src/utils/serialize.js +7 -7
  194. package/src/utils/utils.ts +195 -195
  195. package/tsconfig.json +29 -29
  196. package/typings.d.ts +4 -4
  197. package/dist/common/ENUM.d.ts +0 -40
  198. package/dist/components/Business/AddSelectBusiness/index.d.ts +0 -4
  199. package/dist/components/Business/BsLayouts/Components/AllFunc/drawContent.d.ts +0 -5
  200. package/dist/components/Business/BsLayouts/Components/AllFunc/index.d.ts +0 -4
  201. package/dist/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.d.ts +0 -4
  202. package/dist/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/leftTree.d.ts +0 -17
  203. package/dist/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/rightTree.d.ts +0 -30
  204. package/dist/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/DrawContent.d.ts +0 -4
  205. package/dist/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/customMenuHeader.d.ts +0 -3
  206. package/dist/components/Business/BsLayouts/Components/CustomerMenu/index.d.ts +0 -4
  207. package/dist/components/Business/BsLayouts/Components/GlobalHeader/index.d.ts +0 -5
  208. package/dist/components/Business/BsLayouts/Components/RightContent/LoginModal.d.ts +0 -3
  209. package/dist/components/Business/BsLayouts/Components/RightContent/index.d.ts +0 -8
  210. package/dist/components/Business/BsLayouts/Components/SearchFunc/index.d.ts +0 -8
  211. package/dist/components/Business/BsLayouts/index.d.ts +0 -18
  212. package/dist/components/Business/BsLayouts/service.d.ts +0 -1
  213. package/dist/components/Business/BsLayouts/utils.d.ts +0 -10
  214. package/dist/components/Business/BsSulaQueryTable/SearchItemSetting.d.ts +0 -60
  215. package/dist/components/Business/BsSulaQueryTable/index.d.ts +0 -3
  216. package/dist/components/Business/BsSulaQueryTable/setting.d.ts +0 -60
  217. package/dist/components/Business/BsSulaQueryTable/utils.d.ts +0 -99
  218. package/dist/components/Business/CommodityEntry/index.d.ts +0 -3
  219. package/dist/components/Business/CommonAlert/index.d.ts +0 -4
  220. package/dist/components/Business/CommonGuideWrapper/index.d.ts +0 -6
  221. package/dist/components/Business/DetailPageWrapper/index.d.ts +0 -10
  222. package/dist/components/Business/DetailPageWrapper/utils.d.ts +0 -8
  223. package/dist/components/Business/HomePageWrapper/index.d.ts +0 -4
  224. package/dist/components/Business/JsonQueryTable/components/FieldsModifyModal.d.ts +0 -3
  225. package/dist/components/Business/JsonQueryTable/components/FieldsSettingsTable.d.ts +0 -3
  226. package/dist/components/Business/JsonQueryTable/components/Formula.d.ts +0 -7
  227. package/dist/components/Business/JsonQueryTable/components/MaintainOptions.d.ts +0 -3
  228. package/dist/components/Business/JsonQueryTable/drawer/index.d.ts +0 -3
  229. package/dist/components/Business/JsonQueryTable/function.d.ts +0 -37
  230. package/dist/components/Business/JsonQueryTable/index.d.ts +0 -4
  231. package/dist/components/Business/JsonQueryTable/static.d.ts +0 -44
  232. package/dist/components/Business/SearchSelect/BusinessUtils.d.ts +0 -5
  233. package/dist/components/Business/SearchSelect/common.d.ts +0 -25
  234. package/dist/components/Business/SearchSelect/index.d.ts +0 -3
  235. package/dist/components/Business/SearchSelect/utils.d.ts +0 -5
  236. package/dist/components/Business/StateFlow/index.d.ts +0 -4
  237. package/dist/components/Business/TreeSearchSelect/index.d.ts +0 -3
  238. package/dist/components/Business/TreeSearchSelect/utils.d.ts +0 -4
  239. package/dist/components/Business/columnSettingTable/columnSetting.d.ts +0 -54
  240. package/dist/components/Business/columnSettingTable/index.d.ts +0 -16
  241. package/dist/components/Business/columnSettingTable/sulaSettingTable.d.ts +0 -17
  242. package/dist/components/Business/columnSettingTable/utils.d.ts +0 -9
  243. package/dist/components/Business/moreTreeTable/FixedScrollBar.d.ts +0 -3
  244. package/dist/components/Business/moreTreeTable/hooks/useSticky.d.ts +0 -8
  245. package/dist/components/Business/moreTreeTable/index.d.ts +0 -4
  246. package/dist/components/Business/moreTreeTable/utils.d.ts +0 -9
  247. package/dist/components/Functional/AddSelect/helps.d.ts +0 -14
  248. package/dist/components/Functional/AddSelect/index.d.ts +0 -4
  249. package/dist/components/Functional/BillEntry/index.d.ts +0 -4
  250. package/dist/components/Functional/BsAntdSula/BsCascader/index.d.ts +0 -18
  251. package/dist/components/Functional/BsAntdSula/index.d.ts +0 -1
  252. package/dist/components/Functional/DataImport/index.d.ts +0 -144
  253. package/dist/components/Functional/DataValidation/index.d.ts +0 -144
  254. package/dist/components/Functional/ExportFunctions/ExportIcon/index.d.ts +0 -13
  255. package/dist/components/Functional/QueryMutipleInput/index.d.ts +0 -6
  256. package/dist/components/Functional/SearchSelect/index.d.ts +0 -4
  257. package/dist/components/Functional/SearchSelect/utils.d.ts +0 -1
  258. package/dist/components/Functional/TreeSearchSelect/index.d.ts +0 -3
  259. package/dist/components/Solution/RuleComponent/Formula.d.ts +0 -9
  260. package/dist/components/Solution/RuleComponent/InnerSelect.d.ts +0 -12
  261. package/dist/components/Solution/RuleComponent/services.d.ts +0 -1
  262. package/dist/index.d.ts +0 -28
  263. package/dist/index.esm.js +0 -31379
  264. package/dist/plugin/TableColumnSetting/index.d.ts +0 -64
  265. package/dist/plugin/TableColumnSetting/utils.d.ts +0 -1
  266. package/dist/utils/CheckOneUser/index.d.ts +0 -2
  267. package/dist/utils/CustomLoginInfo.d.ts +0 -11
  268. package/dist/utils/LocalstorageUtils.d.ts +0 -17
  269. package/dist/utils/TableUtils.d.ts +0 -11
  270. package/dist/utils/checkUtils.d.ts +0 -3
  271. package/dist/utils/enumConfig.d.ts +0 -12
  272. package/dist/utils/index.d.ts +0 -4
  273. package/dist/utils/requestUtils.d.ts +0 -29
  274. package/dist/utils/utils.d.ts +0 -17
@@ -1,538 +1,538 @@
1
- // @ts-nocheck
2
- import React, { useState, useEffect, useRef, useMemo } from 'react';
3
- import { useLocation } from 'umi';
4
- import { QueryTable } from 'bssula';
5
- import {
6
- userColumns,
7
- getItemDefaultWidth,
8
- authFn,
9
- queryParams,
10
- } from './utils';
11
- import { Menu, Tooltip, Dropdown } from 'antd';
12
- import SortableTable from './setting';
13
- import SearchItemTable from "./SearchItemSetting";
14
- import { Resizable } from 'react-resizable';
15
- import quanping from '../../../assets/icon-quanping.svg';
16
- import scanning from '../../../assets/scanning.svg';
17
- import shezhi from '../../../assets/icon-shezhi.svg';
18
- import { debounce } from 'lodash';
19
- import ExportIcon from '@/components/Functional/ExportFunctions/ExportIcon';
20
- import ENUM from '@/utils/enumConfig';
21
- import { handleBssulaColumnsSpecialParams } from '@/utils/utils';
22
-
23
- const MemoQueryTable = React.memo(QueryTable);
24
-
25
- const ResizeableTitle = (props) => {
26
- const { onResize, width, ...restProps } = props;
27
-
28
- if (!width) {
29
- return <th {...restProps} />;
30
- }
31
- return (
32
- <Resizable
33
- width={width}
34
- height={0}
35
- onResize={onResize}
36
- draggableOpts={{ enableUserSelectHack: false }}
37
- >
38
- <th {...restProps} />
39
- </Resizable>
40
- );
41
- };
42
-
43
- export default (props: any) => {
44
- const refs = useRef(null);
45
- const [pagePath, setPagePath] = useState('');
46
- // 获取 table columns中所有的 key 防止有的地方是 dataindex
47
- const [checkedList, setCheckedList] = useState(
48
- props.columns.filter((col: any) => !col.hidden).map((d: any) => Array.isArray(d.key || d.dataIndex) ? JSON.stringify(d.key || d.dataIndex) : (d.key || d.dataIndex)),
49
- );
50
- const { pathname } = useLocation();
51
- const [id]: any = useState(
52
- Number(Math.random().toString().substr(2, 0) + Date.now()).toString(36),
53
- );
54
- const [isFullScreen, setIsFnllScreen]: any = useState(false);
55
- // @ts-nocheck
56
- const [value, setValue]: any = useState(props);
57
- const [showColumn, setShowColumns] = useState([]); // 列字段
58
- const [showSearchFields, setShowSearchFields] = useState(props.fields || []); //搜索项字段
59
- const { isPage = true, pagination, tableCode, appRequestConfig } = props;
60
-
61
- const [height, setHeight]: any = useState('100vh');
62
- const sortTableRef = useRef(null);
63
- const searchTableRef = useRef(null);
64
-
65
- const bsTableCode = tableCode || window.location.hash; //设置列字段的唯一标识
66
- // 获取table高度
67
- const getTableHeight = () => {
68
- setTimeout(() => {
69
- const cancelHeight = window.top == window ? 303 : 223;
70
- const isFullScreen: any =
71
- window.top.document.fullScreen ||
72
- window.top.document.webkitIsFullScreen ||
73
- window.top.document.mozFullScreen;
74
-
75
- // wujie子应用iframe首次加载获取不到client以及dom元素高度兼容处理
76
- let realIframeClientHeight = document.body.clientHeight ? document.body.clientHeight : window.top?.document.body.clientHeight - 76;
77
- let summaryHeight = document.querySelector(`.ant-tabs-tabpane-active .table-bssula-summary`) ?
78
- (document.querySelector(`.ant-tabs-tabpane-active .table-bssula-summary`)?.clientHeight || 22) : 0;
79
- let listTabHeight = document.querySelector(`.ant-tabs-tabpane-active .list_top_tab .ant-tabs-nav`) ?
80
- (document.querySelector(`.ant-tabs-tabpane-active .list_top_tab .ant-tabs-nav`)?.clientHeight || 48) : 0;
81
-
82
-
83
- const h =
84
- realIframeClientHeight - summaryHeight - listTabHeight -
85
- (document.querySelector(`.ant-tabs-tabpane-active .ant-form ant-form-horizontal`)?.clientHeight ||
86
- 0) -
87
- (isFullScreen
88
- ? 0
89
- : document.querySelector(`.ant-tabs-tabpane-active .ant-pro-page-container-warp`)
90
- ?.clientHeight || 0) -
91
- cancelHeight +
92
- 'px';
93
- setHeight(h);
94
- setValue({ ...value });
95
- }, 0)
96
- };
97
-
98
- //监测是否按下esc键
99
- function checkFull() {
100
- let globalDocument = window?.parent?.document || document;
101
- var isFull =
102
- globalDocument.fullscreenElement ||
103
- globalDocument.mozFullScreenElement ||
104
- globalDocument.webkitFullscreenElement;
105
- if (isFull == undefined) isFull = false;
106
- return isFull;
107
- }
108
-
109
- const getConfigFromlocalstorage = (type: string) => {
110
- let config = localStorage.getItem(type) || '[]';
111
- let configArray = JSON.parse(config);
112
- let configSetting = configArray.filter(
113
- (item) => item.code === bsTableCode,
114
- );
115
-
116
- if (configSetting.length && configSetting[0].detail) {
117
- return JSON.parse(configSetting[0].detail);
118
- }
119
- return [];
120
- };
121
-
122
- const setInitialTableInfo = () => {
123
- const resourceCodeArray = {};
124
- if (props.actionsRender && props.actionsRender.length) {
125
- props.actionsRender.forEach((item: any) => {
126
- if (item.code) {
127
- if (resourceCodeArray[item.code]) {
128
- resourceCodeArray[item.code + 1] = item;
129
- } else {
130
- resourceCodeArray[item.code] = item;
131
- }
132
- }
133
- });
134
- }
135
- if (props.columns && props.columns.length) {
136
- props.columns.forEach((d: any) => {
137
- if (d.isPermissionColumn && d.render && d.render.length) {
138
- d.render.forEach((inneritem: any) => {
139
- if (inneritem.code) {
140
- if (resourceCodeArray[inneritem.code]) {
141
- resourceCodeArray[inneritem.code + 1] = inneritem;
142
- } else {
143
- resourceCodeArray[inneritem.code] = inneritem;
144
- }
145
- }
146
- });
147
- }
148
- handleBssulaColumnsSpecialParams(d);
149
- });
150
- setCommonRenderFn(props.columns);
151
- const authButton = localStorage.getItem(ENUM.BROWSER_CACHE.MAIN_AUTH_CODES)
152
- ? JSON.parse(localStorage.getItem(ENUM.BROWSER_CACHE.MAIN_AUTH_CODES) as string)
153
- : [];
154
- Object.keys(resourceCodeArray).forEach((item: any) => {
155
- let Item = item;
156
- if (Number(item.slice(-1)) >= 1) {
157
- Item = item.substr(0, item.length - 1);
158
- }
159
- if (!authButton.filter((itemInner: any) => Item === itemInner).length) {
160
- resourceCodeArray[item].visible = false;
161
- }
162
- });
163
-
164
- }
165
- setValue({
166
- ...value,
167
- columns: [...props.columns],
168
- });
169
- const { columns } = props;
170
- let columnConfig = getConfigFromlocalstorage(ENUM.BROWSER_CACHE.COLUMN_CONDITION);
171
- let showColumns = columnConfig.length ? columnConfig.map((item) => {
172
- let inner = columns.filter(
173
- (inneritem) => {
174
- let innerKey = Array.isArray(inneritem.key || inneritem.dataIndex) ? JSON.stringify(inneritem.key || inneritem.dataIndex) : (inneritem.key || inneritem.dataIndex);
175
- let itemKey = Array.isArray(item.key || item.dataIndex) ? JSON.stringify(item.key || item.dataIndex) : (item.key || item.dataIndex);
176
- return innerKey && innerKey === itemKey;
177
- }
178
- )[0];
179
-
180
- return {
181
- ...inner,
182
- ...item,
183
- };
184
- }) : columns.filter(
185
- (column) => {
186
- let columnKey = Array.isArray(column.key || column.dataIndex) ? JSON.stringify(column.key || column.dataIndex) : (column.key || column.dataIndex);
187
- return column.notRegularCheckList || checkedList.indexOf(columnKey) > -1;
188
- }
189
- )
190
-
191
- showColumns.forEach((item, index) => {
192
- item.width = item.width || getItemDefaultWidth(item);
193
- handleBssulaColumnsSpecialParams(item);
194
- item.onHeaderCell = (column) => ({
195
- ...item,
196
- width:
197
- typeof column.width === 'number'
198
- ? column.width
199
- : parseInt(column.width.replace('px', '')),
200
- onResize: handleResize(index),
201
- });
202
- });
203
- setShowColumns([...showColumns]);
204
-
205
- }
206
-
207
- const setInitialSearchFieldsInfo = () =>{
208
- //获取搜索字段的缓存配置
209
- const { fields = [] } = props;
210
- let searchFieldsConfig = getConfigFromlocalstorage(ENUM.BROWSER_CACHE.SEARCH_FIELDS_CONDITION);
211
- let showSearchFields = searchFieldsConfig.length ? searchFieldsConfig.map((item) => {
212
- let inner = fields.filter(
213
- (inneritem) => {
214
- let innerKey = Array.isArray(inneritem.name) ? JSON.stringify(inneritem.name) : inneritem.name;
215
- let itemKey = Array.isArray(item.name) ? JSON.stringify(item.name) : item.name;
216
- return innerKey && innerKey === itemKey;
217
- }
218
- )[0];
219
-
220
- return {
221
- ...inner,
222
- ...item,
223
- };
224
- }) : fields;
225
- setShowSearchFields([...showSearchFields])
226
- }
227
-
228
- //组件初始挂载
229
- useEffect(() => {
230
- getTableHeight();
231
- setInitialTableInfo();
232
- setInitialSearchFieldsInfo();
233
- window.addEventListener('resize', (e) => {
234
- watchWinResize();
235
- });
236
-
237
- setPagePath(pathname); // 做处理,记录当前页面渲染的初始pathname,用于进行判断当前列表页面数据是否需要重新渲染
238
- }, []);
239
-
240
- useEffect(() => {
241
- if (props?.columns && value?.columns) {
242
- let newKeys = props.columns.map((d: any) => Array.isArray(d.key || d.dataIndex) ? JSON.stringify(d.key || d.dataIndex) : (d.key || d.dataIndex));
243
- let oldKeys = value.columns.map((d: any) => Array.isArray(d.key || d.dataIndex) ? JSON.stringify(d.key || d.dataIndex) : (d.key || d.dataIndex));
244
- JSON.stringify(newKeys) !== JSON.stringify(oldKeys) && setInitialTableInfo();
245
- }
246
- }, [props?.columns])
247
-
248
- useEffect(() => {
249
- if (props?.fields && value?.fields) {
250
- let newKeys = props.fields.map((d: any) => Array.isArray(d.name) ? JSON.stringify(d.name) : (d.name));
251
- let oldKeys = value.fields.map((d: any) => Array.isArray(d.name) ? JSON.stringify(d.name) : (d.name));
252
- JSON.stringify(newKeys) !== JSON.stringify(oldKeys) && setInitialSearchFieldsInfo();
253
- }
254
- },[props?.fields])
255
-
256
- useEffect(() => {
257
- setInitialTableInfo();
258
- }, [props?.refreshColumns]);
259
-
260
-
261
- const watchWinResize = debounce(() => {
262
- getTableHeight();
263
- if (!checkFull()) {
264
- // addTabsNavStyle(true);
265
- // 全屏下按键esc后要执行的动作
266
- // isFullScreen 为true 此时为全屏状态 false 为非全屏状态
267
- if (!isFullScreen) {
268
- // 按下esc键退出全屏
269
- setIsFnllScreen(false);
270
- } else {
271
- setIsFnllScreen(false);
272
- }
273
- }
274
- }, 10);
275
-
276
- const setCommonRenderFn = (columns: any[]) => {
277
- columns.forEach((column) => {
278
- if (column.showDetailUserInfo) {
279
- column.render = ({ text }: any) => userColumns({ name: text });
280
- }
281
- });
282
- };
283
-
284
- // 处理 table 基本参数
285
- const setTableProps = () => {
286
- let tableProps = value.tableProps || {};
287
- tableProps = {
288
- ...tableProps,
289
- size: value.size || 'middle',
290
- defaultPageSize: 20,
291
- pageSize: 20,
292
- initialPaging: {
293
- pagination: pagination
294
- ? false
295
- : {
296
- defaultPageSize: 20,
297
- pageSize: 20,
298
- showTotal: (total: any) => `共 ${total} 条`,
299
- showQuickJumper: true,
300
- hideOnSinglePage: value.hideOnSinglePage || false,
301
- },
302
- },
303
- initialSelectedRowKeys: value.initialSelectedRowKeys || [],
304
- expandable: value.expandable,
305
- scroll: { x: props.overScrollX || 'max-content', y: height },
306
- bordered: value.bordered || false,
307
- sticky: true,
308
- rowClassName: (record: object | null | undefined, index: number) =>
309
- index % 2 === 0 ? 'table_base' : 'table_odd',
310
- ...value.tableProps,
311
- components: {
312
- header: {
313
- cell: ResizeableTitle,
314
- },
315
- },
316
- };
317
-
318
- // @ts-ignore
319
- if (tableProps?.initialPaging?.pagination) {
320
- // @ts-ignore
321
- tableProps.initialPaging.pagination.showSizeChanger = true;
322
- }
323
- return tableProps;
324
- };
325
-
326
-
327
- const ShowFullScreen = () => {
328
- const isFullScreen: any =
329
- window.top.document.fullScreen ||
330
- window.top.document.webkitIsFullScreen ||
331
- window.top.document.mozFullScreen;
332
- let contentEle: any = window.top.document.querySelector(`body`);
333
- // addTabsNavStyle(isFullScreen);
334
- if (contentEle && !isFullScreen) {
335
- let fullScreenEle =
336
- contentEle.requestFullscreen ||
337
- contentEle.mozRequestFullScreen ||
338
- contentEle.webkitRequestFullScreen ||
339
- contentEle.msRequestFullscreen;
340
- if (fullScreenEle) {
341
- fullScreenEle.call(contentEle);
342
- setIsFnllScreen(true);
343
- // getTableHeight(true);
344
- return;
345
- }
346
- }
347
- if (window.top.document && isFullScreen) {
348
- let exitFullScreen =
349
- window.top.document.exitFullscreen ||
350
- window.top.document.mozCancelFullScreen ||
351
- window.top.document.webkitCancelFullScreen ||
352
- window.top.document.msExitFullscreen;
353
- if (exitFullScreen) {
354
- exitFullScreen.call(window.top.document);
355
- setIsFnllScreen(false);
356
- // getTableHeight();
357
- return;
358
- }
359
- }
360
- };
361
-
362
- const handleTimeValue = () => {
363
- let actionsRender = value.actionsRender || [];
364
- actionsRender = [
365
- ...actionsRender,
366
- {
367
- type: 'text',
368
- props: {
369
- children: (
370
- <span className="ant-dropdown-link">
371
- <Dropdown overlay={
372
- <Menu>
373
- <Menu.Item>
374
- <div
375
- onClick={sortTableRef?.current?.showModal}
376
- style={{fontSize:14, textAlign: 'center'}}
377
- >列设置</div>
378
- </Menu.Item>
379
- <Menu.Item>
380
- <SearchItemTable
381
- ref={searchTableRef}
382
- setShowSearchFields={setShowSearchFields}
383
- showSearchFields={showSearchFields}
384
- datasource={value?.fields || []}
385
- bsTableCode={bsTableCode}
386
- appRequestConfig={appRequestConfig}
387
- />
388
- </Menu.Item>
389
- </Menu>
390
- } placement="bottomRight" >
391
- <span className="ant-dropdown-link">
392
- <img width={32} src={shezhi} />
393
- </span>
394
- </Dropdown>
395
- </span>
396
- ),
397
- },
398
- },
399
- {
400
- type: 'text',
401
- props: {
402
- children: (
403
- <a>
404
- {isFullScreen ? (
405
- <Tooltip title="取消全屏">
406
- <img
407
- onClick={() => {
408
- ShowFullScreen();
409
- }}
410
- width={32}
411
- src={scanning}
412
- />
413
- </Tooltip>
414
- ) : (
415
- <Tooltip title="全屏">
416
- <img
417
- onClick={() => {
418
- ShowFullScreen();
419
- }}
420
- width={32}
421
- src={quanping}
422
- />
423
- </Tooltip>
424
- )}
425
- </a>
426
- ),
427
- },
428
- },
429
- {
430
- type: 'text',
431
- props: {
432
- children:
433
- value?.exportConfig && authFn(value?.exportConfig?.code) ? (
434
- <ExportIcon
435
- request={{
436
- url: `/oms-ops/excel/exportAsync/${value?.exportConfig?.type}`,
437
- params: value?.exportConfig?.params || queryParams,
438
- }}
439
- tableRef={props.forwardedRef || refs}
440
- />
441
- ) : (
442
- <span />
443
- ),
444
- },
445
- },
446
- ];
447
- if (value.rowSelection) {
448
- value.rowSelection.columnWidth = 50;
449
- }
450
- return {
451
- ...value,
452
- actionsRender,
453
- };
454
- };
455
-
456
- const handleResize =
457
- (index) =>
458
- (e, { size }) => {
459
- setShowColumns((columns: any) => {
460
- let newColumns = [...columns];
461
- newColumns[index] = {
462
- ...newColumns[index],
463
- width: size.width,
464
- };
465
- newColumns.forEach((d: any) => {
466
- handleBssulaColumnsSpecialParams(d);
467
- })
468
- return [...newColumns];
469
- });
470
- };
471
-
472
- const setVisibleColumn = (columnTitle: string) => {
473
- sortTableRef?.current?.handleTableHeadHidden?.(columnTitle);
474
- };
475
-
476
- const config = {
477
- visibleFieldsCount: 3,
478
- tableWrapperStyle: {
479
- padding: '10px',
480
- background: '#f3f3f3',
481
- },
482
- setVisibleColumn: setVisibleColumn,
483
- itemLayout: {
484
- span: 8, // 栅格占位格数
485
- labelCol: {
486
- // label标签布局;可设置 span、offset
487
- span: 8,
488
- },
489
- wrapperCol: {
490
- // value布局, 方式同labelCol(horizontal状态下配置)
491
- span: 16,
492
- },
493
- },
494
- rowSelection: false, // 默认无多选
495
- ...handleTimeValue(),
496
- tableProps: setTableProps(),
497
- columns: [...showColumn],
498
- fields: [...showSearchFields],
499
- ref: props.forwardedRef || refs,
500
- isFullScreen,
501
- };
502
-
503
- useEffect(() => {
504
- if (!localStorage.getItem('isTabChange')) {
505
- if (pagePath === pathname) {
506
- // @ts-ignore
507
- config.ref?.current?.tableRef?.current?.refreshTable();
508
- }
509
- } else {
510
- setTimeout(() => {
511
- // 处理页面刷新两面
512
- localStorage.removeItem('isTabChange');
513
- }, 0);
514
- }
515
- }, [pathname]);
516
-
517
- const memoConfig = useMemo(
518
- () => ({
519
- ...config,
520
- summary: props.summary,
521
- statusMapping: props.statusMapping,
522
- appRequestConfig: props.appRequestConfig
523
- }),
524
- [value, checkedList, showColumn, props.statusMapping, showSearchFields],
525
- );
526
- return <>
527
- <MemoQueryTable {...memoConfig} />
528
- <SortableTable
529
- ref={sortTableRef}
530
- setShowColumns={setShowColumns}
531
- showColumn={showColumn}
532
- datasource={value?.columns || []}
533
- bsTableCode={bsTableCode}
534
- appRequestConfig={appRequestConfig}
535
- onlyModal
536
- />
537
- </>;
538
- };
1
+ // @ts-nocheck
2
+ import React, { useState, useEffect, useRef, useMemo } from 'react';
3
+ import { useLocation } from 'umi';
4
+ import { QueryTable } from 'bssula';
5
+ import {
6
+ userColumns,
7
+ getItemDefaultWidth,
8
+ authFn,
9
+ queryParams,
10
+ } from './utils';
11
+ import { Menu, Tooltip, Dropdown } from 'antd';
12
+ import SortableTable from './setting';
13
+ import SearchItemTable from "./SearchItemSetting";
14
+ import { Resizable } from 'react-resizable';
15
+ import quanping from '../../../assets/icon-quanping.svg';
16
+ import scanning from '../../../assets/scanning.svg';
17
+ import shezhi from '../../../assets/icon-shezhi.svg';
18
+ import { debounce } from 'lodash';
19
+ import ExportIcon from '@/components/Functional/ExportFunctions/ExportIcon';
20
+ import ENUM from '@/utils/enumConfig';
21
+ import { handleBssulaColumnsSpecialParams } from '@/utils/utils';
22
+
23
+ const MemoQueryTable = React.memo(QueryTable);
24
+
25
+ const ResizeableTitle = (props) => {
26
+ const { onResize, width, ...restProps } = props;
27
+
28
+ if (!width) {
29
+ return <th {...restProps} />;
30
+ }
31
+ return (
32
+ <Resizable
33
+ width={width}
34
+ height={0}
35
+ onResize={onResize}
36
+ draggableOpts={{ enableUserSelectHack: false }}
37
+ >
38
+ <th {...restProps} />
39
+ </Resizable>
40
+ );
41
+ };
42
+
43
+ export default (props: any) => {
44
+ const refs = useRef(null);
45
+ const [pagePath, setPagePath] = useState('');
46
+ // 获取 table columns中所有的 key 防止有的地方是 dataindex
47
+ const [checkedList, setCheckedList] = useState(
48
+ props.columns.filter((col: any) => !col.hidden).map((d: any) => Array.isArray(d.key || d.dataIndex) ? JSON.stringify(d.key || d.dataIndex) : (d.key || d.dataIndex)),
49
+ );
50
+ const { pathname } = useLocation();
51
+ const [id]: any = useState(
52
+ Number(Math.random().toString().substr(2, 0) + Date.now()).toString(36),
53
+ );
54
+ const [isFullScreen, setIsFnllScreen]: any = useState(false);
55
+ // @ts-nocheck
56
+ const [value, setValue]: any = useState(props);
57
+ const [showColumn, setShowColumns] = useState([]); // 列字段
58
+ const [showSearchFields, setShowSearchFields] = useState(props.fields || []); //搜索项字段
59
+ const { isPage = true, pagination, tableCode, appRequestConfig } = props;
60
+
61
+ const [height, setHeight]: any = useState('100vh');
62
+ const sortTableRef = useRef(null);
63
+ const searchTableRef = useRef(null);
64
+
65
+ const bsTableCode = tableCode || window.location.hash; //设置列字段的唯一标识
66
+ // 获取table高度
67
+ const getTableHeight = () => {
68
+ setTimeout(() => {
69
+ const cancelHeight = window.top == window ? 303 : 223;
70
+ const isFullScreen: any =
71
+ window.top.document.fullScreen ||
72
+ window.top.document.webkitIsFullScreen ||
73
+ window.top.document.mozFullScreen;
74
+
75
+ // wujie子应用iframe首次加载获取不到client以及dom元素高度兼容处理
76
+ let realIframeClientHeight = document.body.clientHeight ? document.body.clientHeight : window.top?.document.body.clientHeight - 76;
77
+ let summaryHeight = document.querySelector(`.ant-tabs-tabpane-active .table-bssula-summary`) ?
78
+ (document.querySelector(`.ant-tabs-tabpane-active .table-bssula-summary`)?.clientHeight || 22) : 0;
79
+ let listTabHeight = document.querySelector(`.ant-tabs-tabpane-active .list_top_tab .ant-tabs-nav`) ?
80
+ (document.querySelector(`.ant-tabs-tabpane-active .list_top_tab .ant-tabs-nav`)?.clientHeight || 48) : 0;
81
+
82
+
83
+ const h =
84
+ realIframeClientHeight - summaryHeight - listTabHeight -
85
+ (document.querySelector(`.ant-tabs-tabpane-active .ant-form ant-form-horizontal`)?.clientHeight ||
86
+ 0) -
87
+ (isFullScreen
88
+ ? 0
89
+ : document.querySelector(`.ant-tabs-tabpane-active .ant-pro-page-container-warp`)
90
+ ?.clientHeight || 0) -
91
+ cancelHeight +
92
+ 'px';
93
+ setHeight(h);
94
+ setValue({ ...value });
95
+ }, 0)
96
+ };
97
+
98
+ //监测是否按下esc键
99
+ function checkFull() {
100
+ let globalDocument = window?.parent?.document || document;
101
+ var isFull =
102
+ globalDocument.fullscreenElement ||
103
+ globalDocument.mozFullScreenElement ||
104
+ globalDocument.webkitFullscreenElement;
105
+ if (isFull == undefined) isFull = false;
106
+ return isFull;
107
+ }
108
+
109
+ const getConfigFromlocalstorage = (type: string) => {
110
+ let config = localStorage.getItem(type) || '[]';
111
+ let configArray = JSON.parse(config);
112
+ let configSetting = configArray.filter(
113
+ (item) => item.code === bsTableCode,
114
+ );
115
+
116
+ if (configSetting.length && configSetting[0].detail) {
117
+ return JSON.parse(configSetting[0].detail);
118
+ }
119
+ return [];
120
+ };
121
+
122
+ const setInitialTableInfo = () => {
123
+ const resourceCodeArray = {};
124
+ if (props.actionsRender && props.actionsRender.length) {
125
+ props.actionsRender.forEach((item: any) => {
126
+ if (item.code) {
127
+ if (resourceCodeArray[item.code]) {
128
+ resourceCodeArray[item.code + 1] = item;
129
+ } else {
130
+ resourceCodeArray[item.code] = item;
131
+ }
132
+ }
133
+ });
134
+ }
135
+ if (props.columns && props.columns.length) {
136
+ props.columns.forEach((d: any) => {
137
+ if (d.isPermissionColumn && d.render && d.render.length) {
138
+ d.render.forEach((inneritem: any) => {
139
+ if (inneritem.code) {
140
+ if (resourceCodeArray[inneritem.code]) {
141
+ resourceCodeArray[inneritem.code + 1] = inneritem;
142
+ } else {
143
+ resourceCodeArray[inneritem.code] = inneritem;
144
+ }
145
+ }
146
+ });
147
+ }
148
+ handleBssulaColumnsSpecialParams(d);
149
+ });
150
+ setCommonRenderFn(props.columns);
151
+ const authButton = localStorage.getItem(ENUM.BROWSER_CACHE.MAIN_AUTH_CODES)
152
+ ? JSON.parse(localStorage.getItem(ENUM.BROWSER_CACHE.MAIN_AUTH_CODES) as string)
153
+ : [];
154
+ Object.keys(resourceCodeArray).forEach((item: any) => {
155
+ let Item = item;
156
+ if (Number(item.slice(-1)) >= 1) {
157
+ Item = item.substr(0, item.length - 1);
158
+ }
159
+ if (!authButton.filter((itemInner: any) => Item === itemInner).length) {
160
+ resourceCodeArray[item].visible = false;
161
+ }
162
+ });
163
+
164
+ }
165
+ setValue({
166
+ ...value,
167
+ columns: [...props.columns],
168
+ });
169
+ const { columns } = props;
170
+ let columnConfig = getConfigFromlocalstorage(ENUM.BROWSER_CACHE.COLUMN_CONDITION);
171
+ let showColumns = columnConfig.length ? columnConfig.map((item) => {
172
+ let inner = columns.filter(
173
+ (inneritem) => {
174
+ let innerKey = Array.isArray(inneritem.key || inneritem.dataIndex) ? JSON.stringify(inneritem.key || inneritem.dataIndex) : (inneritem.key || inneritem.dataIndex);
175
+ let itemKey = Array.isArray(item.key || item.dataIndex) ? JSON.stringify(item.key || item.dataIndex) : (item.key || item.dataIndex);
176
+ return innerKey && innerKey === itemKey;
177
+ }
178
+ )[0];
179
+
180
+ return {
181
+ ...inner,
182
+ ...item,
183
+ };
184
+ }) : columns.filter(
185
+ (column) => {
186
+ let columnKey = Array.isArray(column.key || column.dataIndex) ? JSON.stringify(column.key || column.dataIndex) : (column.key || column.dataIndex);
187
+ return column.notRegularCheckList || checkedList.indexOf(columnKey) > -1;
188
+ }
189
+ )
190
+
191
+ showColumns.forEach((item, index) => {
192
+ item.width = item.width || getItemDefaultWidth(item);
193
+ handleBssulaColumnsSpecialParams(item);
194
+ item.onHeaderCell = (column) => ({
195
+ ...item,
196
+ width:
197
+ typeof column.width === 'number'
198
+ ? column.width
199
+ : parseInt(column.width.replace('px', '')),
200
+ onResize: handleResize(index),
201
+ });
202
+ });
203
+ setShowColumns([...showColumns]);
204
+
205
+ }
206
+
207
+ const setInitialSearchFieldsInfo = () =>{
208
+ //获取搜索字段的缓存配置
209
+ const { fields = [] } = props;
210
+ let searchFieldsConfig = getConfigFromlocalstorage(ENUM.BROWSER_CACHE.SEARCH_FIELDS_CONDITION);
211
+ let showSearchFields = searchFieldsConfig.length ? searchFieldsConfig.map((item) => {
212
+ let inner = fields.filter(
213
+ (inneritem) => {
214
+ let innerKey = Array.isArray(inneritem.name) ? JSON.stringify(inneritem.name) : inneritem.name;
215
+ let itemKey = Array.isArray(item.name) ? JSON.stringify(item.name) : item.name;
216
+ return innerKey && innerKey === itemKey;
217
+ }
218
+ )[0];
219
+
220
+ return {
221
+ ...inner,
222
+ ...item,
223
+ };
224
+ }) : fields;
225
+ setShowSearchFields([...showSearchFields])
226
+ }
227
+
228
+ //组件初始挂载
229
+ useEffect(() => {
230
+ getTableHeight();
231
+ setInitialTableInfo();
232
+ setInitialSearchFieldsInfo();
233
+ window.addEventListener('resize', (e) => {
234
+ watchWinResize();
235
+ });
236
+
237
+ setPagePath(pathname); // 做处理,记录当前页面渲染的初始pathname,用于进行判断当前列表页面数据是否需要重新渲染
238
+ }, []);
239
+
240
+ useEffect(() => {
241
+ if (props?.columns && value?.columns) {
242
+ let newKeys = props.columns.map((d: any) => Array.isArray(d.key || d.dataIndex) ? JSON.stringify(d.key || d.dataIndex) : (d.key || d.dataIndex));
243
+ let oldKeys = value.columns.map((d: any) => Array.isArray(d.key || d.dataIndex) ? JSON.stringify(d.key || d.dataIndex) : (d.key || d.dataIndex));
244
+ JSON.stringify(newKeys) !== JSON.stringify(oldKeys) && setInitialTableInfo();
245
+ }
246
+ }, [props?.columns])
247
+
248
+ useEffect(() => {
249
+ if (props?.fields && value?.fields) {
250
+ let newKeys = props.fields.map((d: any) => Array.isArray(d.name) ? JSON.stringify(d.name) : (d.name));
251
+ let oldKeys = value.fields.map((d: any) => Array.isArray(d.name) ? JSON.stringify(d.name) : (d.name));
252
+ JSON.stringify(newKeys) !== JSON.stringify(oldKeys) && setInitialSearchFieldsInfo();
253
+ }
254
+ },[props?.fields])
255
+
256
+ useEffect(() => {
257
+ setInitialTableInfo();
258
+ }, [props?.refreshColumns]);
259
+
260
+
261
+ const watchWinResize = debounce(() => {
262
+ getTableHeight();
263
+ if (!checkFull()) {
264
+ // addTabsNavStyle(true);
265
+ // 全屏下按键esc后要执行的动作
266
+ // isFullScreen 为true 此时为全屏状态 false 为非全屏状态
267
+ if (!isFullScreen) {
268
+ // 按下esc键退出全屏
269
+ setIsFnllScreen(false);
270
+ } else {
271
+ setIsFnllScreen(false);
272
+ }
273
+ }
274
+ }, 10);
275
+
276
+ const setCommonRenderFn = (columns: any[]) => {
277
+ columns.forEach((column) => {
278
+ if (column.showDetailUserInfo) {
279
+ column.render = ({ text }: any) => userColumns({ name: text });
280
+ }
281
+ });
282
+ };
283
+
284
+ // 处理 table 基本参数
285
+ const setTableProps = () => {
286
+ let tableProps = value.tableProps || {};
287
+ tableProps = {
288
+ ...tableProps,
289
+ size: value.size || 'middle',
290
+ defaultPageSize: 20,
291
+ pageSize: 20,
292
+ initialPaging: {
293
+ pagination: pagination
294
+ ? false
295
+ : {
296
+ defaultPageSize: 20,
297
+ pageSize: 20,
298
+ showTotal: (total: any) => `共 ${total} 条`,
299
+ showQuickJumper: true,
300
+ hideOnSinglePage: value.hideOnSinglePage || false,
301
+ },
302
+ },
303
+ initialSelectedRowKeys: value.initialSelectedRowKeys || [],
304
+ expandable: value.expandable,
305
+ scroll: { x: props.overScrollX || 'max-content', y: height },
306
+ bordered: value.bordered || false,
307
+ sticky: true,
308
+ rowClassName: (record: object | null | undefined, index: number) =>
309
+ index % 2 === 0 ? 'table_base' : 'table_odd',
310
+ ...value.tableProps,
311
+ components: {
312
+ header: {
313
+ cell: ResizeableTitle,
314
+ },
315
+ },
316
+ };
317
+
318
+ // @ts-ignore
319
+ if (tableProps?.initialPaging?.pagination) {
320
+ // @ts-ignore
321
+ tableProps.initialPaging.pagination.showSizeChanger = true;
322
+ }
323
+ return tableProps;
324
+ };
325
+
326
+
327
+ const ShowFullScreen = () => {
328
+ const isFullScreen: any =
329
+ window.top.document.fullScreen ||
330
+ window.top.document.webkitIsFullScreen ||
331
+ window.top.document.mozFullScreen;
332
+ let contentEle: any = window.top.document.querySelector(`body`);
333
+ // addTabsNavStyle(isFullScreen);
334
+ if (contentEle && !isFullScreen) {
335
+ let fullScreenEle =
336
+ contentEle.requestFullscreen ||
337
+ contentEle.mozRequestFullScreen ||
338
+ contentEle.webkitRequestFullScreen ||
339
+ contentEle.msRequestFullscreen;
340
+ if (fullScreenEle) {
341
+ fullScreenEle.call(contentEle);
342
+ setIsFnllScreen(true);
343
+ // getTableHeight(true);
344
+ return;
345
+ }
346
+ }
347
+ if (window.top.document && isFullScreen) {
348
+ let exitFullScreen =
349
+ window.top.document.exitFullscreen ||
350
+ window.top.document.mozCancelFullScreen ||
351
+ window.top.document.webkitCancelFullScreen ||
352
+ window.top.document.msExitFullscreen;
353
+ if (exitFullScreen) {
354
+ exitFullScreen.call(window.top.document);
355
+ setIsFnllScreen(false);
356
+ // getTableHeight();
357
+ return;
358
+ }
359
+ }
360
+ };
361
+
362
+ const handleTimeValue = () => {
363
+ let actionsRender = value.actionsRender || [];
364
+ actionsRender = [
365
+ ...actionsRender,
366
+ {
367
+ type: 'text',
368
+ props: {
369
+ children: (
370
+ <span className="ant-dropdown-link">
371
+ <Dropdown overlay={
372
+ <Menu>
373
+ <Menu.Item>
374
+ <div
375
+ onClick={sortTableRef?.current?.showModal}
376
+ style={{fontSize:14, textAlign: 'center'}}
377
+ >列设置</div>
378
+ </Menu.Item>
379
+ <Menu.Item>
380
+ <SearchItemTable
381
+ ref={searchTableRef}
382
+ setShowSearchFields={setShowSearchFields}
383
+ showSearchFields={showSearchFields}
384
+ datasource={value?.fields || []}
385
+ bsTableCode={bsTableCode}
386
+ appRequestConfig={appRequestConfig}
387
+ />
388
+ </Menu.Item>
389
+ </Menu>
390
+ } placement="bottomRight" >
391
+ <span className="ant-dropdown-link">
392
+ <img width={32} src={shezhi} />
393
+ </span>
394
+ </Dropdown>
395
+ </span>
396
+ ),
397
+ },
398
+ },
399
+ {
400
+ type: 'text',
401
+ props: {
402
+ children: (
403
+ <a>
404
+ {isFullScreen ? (
405
+ <Tooltip title="取消全屏">
406
+ <img
407
+ onClick={() => {
408
+ ShowFullScreen();
409
+ }}
410
+ width={32}
411
+ src={scanning}
412
+ />
413
+ </Tooltip>
414
+ ) : (
415
+ <Tooltip title="全屏">
416
+ <img
417
+ onClick={() => {
418
+ ShowFullScreen();
419
+ }}
420
+ width={32}
421
+ src={quanping}
422
+ />
423
+ </Tooltip>
424
+ )}
425
+ </a>
426
+ ),
427
+ },
428
+ },
429
+ {
430
+ type: 'text',
431
+ props: {
432
+ children:
433
+ value?.exportConfig && authFn(value?.exportConfig?.code) ? (
434
+ <ExportIcon
435
+ request={{
436
+ url: `/oms-ops/excel/exportAsync/${value?.exportConfig?.type}`,
437
+ params: value?.exportConfig?.params || queryParams,
438
+ }}
439
+ tableRef={props.forwardedRef || refs}
440
+ />
441
+ ) : (
442
+ <span />
443
+ ),
444
+ },
445
+ },
446
+ ];
447
+ if (value.rowSelection) {
448
+ value.rowSelection.columnWidth = 50;
449
+ }
450
+ return {
451
+ ...value,
452
+ actionsRender,
453
+ };
454
+ };
455
+
456
+ const handleResize =
457
+ (index) =>
458
+ (e, { size }) => {
459
+ setShowColumns((columns: any) => {
460
+ let newColumns = [...columns];
461
+ newColumns[index] = {
462
+ ...newColumns[index],
463
+ width: size.width,
464
+ };
465
+ newColumns.forEach((d: any) => {
466
+ handleBssulaColumnsSpecialParams(d);
467
+ })
468
+ return [...newColumns];
469
+ });
470
+ };
471
+
472
+ const setVisibleColumn = (columnTitle: string) => {
473
+ sortTableRef?.current?.handleTableHeadHidden?.(columnTitle);
474
+ };
475
+
476
+ const config = {
477
+ visibleFieldsCount: 3,
478
+ tableWrapperStyle: {
479
+ padding: '10px',
480
+ background: '#f3f3f3',
481
+ },
482
+ setVisibleColumn: setVisibleColumn,
483
+ itemLayout: {
484
+ span: 8, // 栅格占位格数
485
+ labelCol: {
486
+ // label标签布局;可设置 span、offset
487
+ span: 8,
488
+ },
489
+ wrapperCol: {
490
+ // value布局, 方式同labelCol(horizontal状态下配置)
491
+ span: 16,
492
+ },
493
+ },
494
+ rowSelection: false, // 默认无多选
495
+ ...handleTimeValue(),
496
+ tableProps: setTableProps(),
497
+ columns: [...showColumn],
498
+ fields: [...showSearchFields],
499
+ ref: props.forwardedRef || refs,
500
+ isFullScreen,
501
+ };
502
+
503
+ useEffect(() => {
504
+ if (!localStorage.getItem('isTabChange')) {
505
+ if (pagePath === pathname) {
506
+ // @ts-ignore
507
+ config.ref?.current?.tableRef?.current?.refreshTable();
508
+ }
509
+ } else {
510
+ setTimeout(() => {
511
+ // 处理页面刷新两面
512
+ localStorage.removeItem('isTabChange');
513
+ }, 0);
514
+ }
515
+ }, [pathname]);
516
+
517
+ const memoConfig = useMemo(
518
+ () => ({
519
+ ...config,
520
+ summary: props.summary,
521
+ statusMapping: props.statusMapping,
522
+ appRequestConfig: props.appRequestConfig
523
+ }),
524
+ [value, checkedList, showColumn, props.statusMapping, showSearchFields],
525
+ );
526
+ return <>
527
+ <MemoQueryTable {...memoConfig} />
528
+ <SortableTable
529
+ ref={sortTableRef}
530
+ setShowColumns={setShowColumns}
531
+ showColumn={showColumn}
532
+ datasource={value?.columns || []}
533
+ bsTableCode={bsTableCode}
534
+ appRequestConfig={appRequestConfig}
535
+ onlyModal
536
+ />
537
+ </>;
538
+ };