@bit-sun/business-component 2.4.19 → 2.4.21

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 (197) 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.esm.js +10 -6
  9. package/dist/index.js +10 -6
  10. package/docs/index.md +21 -21
  11. package/lib/assets/drag.svg +17 -17
  12. package/lib/assets/exportFail.svg +37 -37
  13. package/lib/assets/exportProcessing.svg +28 -28
  14. package/lib/assets/exportSuccess.svg +34 -34
  15. package/lib/assets/label_icon_bottom.svg +25 -25
  16. package/lib/assets/upExport.svg +22 -22
  17. package/package.json +79 -79
  18. package/src/assets/32.svg +27 -27
  19. package/src/assets/addIcon.svg +17 -17
  20. package/src/assets/allfunc.svg +27 -27
  21. package/src/assets/arrowRight.svg +24 -24
  22. package/src/assets/btn-delete.svg +29 -29
  23. package/src/assets/btn-edit.svg +19 -19
  24. package/src/assets/btn-more.svg +17 -17
  25. package/src/assets/btn-submit.svg +19 -19
  26. package/src/assets/caidan.svg +11 -11
  27. package/src/assets/close.svg +26 -26
  28. package/src/assets/drag.svg +17 -17
  29. package/src/assets/exportFail.svg +37 -37
  30. package/src/assets/exportProcessing.svg +28 -28
  31. package/src/assets/exportSuccess.svg +34 -34
  32. package/src/assets/fixed-left-active.svg +11 -11
  33. package/src/assets/fixed-left.svg +15 -15
  34. package/src/assets/fixed-right-active.svg +11 -11
  35. package/src/assets/fixed-right.svg +15 -15
  36. package/src/assets/guanbi.svg +15 -15
  37. package/src/assets/icon-quanping.svg +15 -15
  38. package/src/assets/icon-shezhi.svg +17 -17
  39. package/src/assets/label_icon_bottom.svg +25 -25
  40. package/src/assets/list-no-img.svg +21 -21
  41. package/src/assets/morentouxiang-32.svg +23 -23
  42. package/src/assets/scanning.svg +24 -24
  43. package/src/assets/upExport.svg +22 -22
  44. package/src/common/ENUM.ts +41 -41
  45. package/src/components/Business/AddSelectBusiness/index.md +162 -162
  46. package/src/components/Business/AddSelectBusiness/index.tsx +1061 -1061
  47. package/src/components/Business/BsLayouts/Components/AllFunc/drawContent.tsx +111 -111
  48. package/src/components/Business/BsLayouts/Components/AllFunc/index.less +153 -153
  49. package/src/components/Business/BsLayouts/Components/AllFunc/index.tsx +70 -70
  50. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.less +90 -90
  51. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.tsx +37 -37
  52. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/leftTree.tsx +242 -242
  53. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/rightTree.tsx +384 -384
  54. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/DrawContent.tsx +285 -285
  55. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/customMenuHeader.tsx +74 -74
  56. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/drawContent.less +170 -170
  57. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.less +64 -64
  58. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.tsx +153 -153
  59. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.less +72 -72
  60. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.tsx +157 -157
  61. package/src/components/Business/BsLayouts/Components/RightContent/LoginModal.tsx +85 -85
  62. package/src/components/Business/BsLayouts/Components/RightContent/home.less +218 -218
  63. package/src/components/Business/BsLayouts/Components/RightContent/index.tsx +155 -155
  64. package/src/components/Business/BsLayouts/Components/SearchFunc/index.less +160 -160
  65. package/src/components/Business/BsLayouts/Components/SearchFunc/index.tsx +75 -75
  66. package/src/components/Business/BsLayouts/index.less +79 -79
  67. package/src/components/Business/BsLayouts/index.tsx +1484 -1484
  68. package/src/components/Business/BsLayouts/service.ts +10 -10
  69. package/src/components/Business/BsLayouts/utils.tsx +203 -203
  70. package/src/components/Business/BsSulaQueryTable/SearchItemSetting.tsx +566 -566
  71. package/src/components/Business/BsSulaQueryTable/index.less +221 -221
  72. package/src/components/Business/BsSulaQueryTable/index.tsx +558 -558
  73. package/src/components/Business/BsSulaQueryTable/setting.tsx +854 -854
  74. package/src/components/Business/BsSulaQueryTable/utils.less +65 -65
  75. package/src/components/Business/BsSulaQueryTable/utils.tsx +690 -690
  76. package/src/components/Business/CommodityEntry/index.md +70 -70
  77. package/src/components/Business/CommodityEntry/index.tsx +80 -80
  78. package/src/components/Business/CommonAlert/index.tsx +23 -23
  79. package/src/components/Business/CommonGuideWrapper/index.less +111 -111
  80. package/src/components/Business/CommonGuideWrapper/index.md +39 -39
  81. package/src/components/Business/CommonGuideWrapper/index.tsx +83 -83
  82. package/src/components/Business/DetailPageWrapper/index.less +79 -79
  83. package/src/components/Business/DetailPageWrapper/index.tsx +315 -315
  84. package/src/components/Business/DetailPageWrapper/utils.tsx +100 -100
  85. package/src/components/Business/HomePageWrapper/index.less +33 -33
  86. package/src/components/Business/HomePageWrapper/index.md +45 -45
  87. package/src/components/Business/HomePageWrapper/index.tsx +162 -162
  88. package/src/components/Business/JsonQueryTable/components/FieldsModifyModal.tsx +824 -824
  89. package/src/components/Business/JsonQueryTable/components/FieldsSettingsTable.tsx +205 -205
  90. package/src/components/Business/JsonQueryTable/components/Formula.tsx +206 -206
  91. package/src/components/Business/JsonQueryTable/components/MaintainOptions.tsx +127 -127
  92. package/src/components/Business/JsonQueryTable/configButton/index.js +20 -20
  93. package/src/components/Business/JsonQueryTable/configTree/component/compactArrayView.js +25 -25
  94. package/src/components/Business/JsonQueryTable/configTree/component/compactObjectView.js +30 -30
  95. package/src/components/Business/JsonQueryTable/configTree/index.js +82 -82
  96. package/src/components/Business/JsonQueryTable/configTree/index.less +44 -44
  97. package/src/components/Business/JsonQueryTable/configTree/parser/highlight.js +57 -57
  98. package/src/components/Business/JsonQueryTable/configTree/parser/index.js +124 -124
  99. package/src/components/Business/JsonQueryTable/configTree/render/iconRender.js +29 -29
  100. package/src/components/Business/JsonQueryTable/configTree/render/nameRender.js +22 -22
  101. package/src/components/Business/JsonQueryTable/configTree/treeNode.js +116 -116
  102. package/src/components/Business/JsonQueryTable/drawer/index.tsx +12 -12
  103. package/src/components/Business/JsonQueryTable/function.ts +62 -62
  104. package/src/components/Business/JsonQueryTable/index.less +16 -16
  105. package/src/components/Business/JsonQueryTable/index.md +328 -328
  106. package/src/components/Business/JsonQueryTable/index.tsx +537 -537
  107. package/src/components/Business/JsonQueryTable/jsonEditor/index.js +346 -346
  108. package/src/components/Business/JsonQueryTable/jsonEditor/index.less +22 -22
  109. package/src/components/Business/JsonQueryTable/jsonEditor/lint/basicType.js +147 -147
  110. package/src/components/Business/JsonQueryTable/jsonEditor/lint/index.js +389 -389
  111. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/actions.js +118 -118
  112. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/dependency.js +22 -22
  113. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/index.js +21 -21
  114. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/request.js +65 -65
  115. package/src/components/Business/JsonQueryTable/static.ts +450 -450
  116. package/src/components/Business/SearchSelect/BusinessUtils.ts +2057 -2057
  117. package/src/components/Business/SearchSelect/common.ts +134 -134
  118. package/src/components/Business/SearchSelect/index.md +1444 -1444
  119. package/src/components/Business/SearchSelect/index.tsx +55 -55
  120. package/src/components/Business/SearchSelect/utils.ts +101 -101
  121. package/src/components/Business/StateFlow/index.less +130 -130
  122. package/src/components/Business/StateFlow/index.md +60 -60
  123. package/src/components/Business/StateFlow/index.tsx +29 -29
  124. package/src/components/Business/TreeSearchSelect/index.md +185 -185
  125. package/src/components/Business/TreeSearchSelect/index.tsx +33 -33
  126. package/src/components/Business/TreeSearchSelect/utils.ts +104 -104
  127. package/src/components/Business/columnSettingTable/columnSetting.tsx +766 -766
  128. package/src/components/Business/columnSettingTable/index.less +247 -247
  129. package/src/components/Business/columnSettingTable/index.md +357 -357
  130. package/src/components/Business/columnSettingTable/index.tsx +235 -234
  131. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +243 -242
  132. package/src/components/Business/columnSettingTable/utils.tsx +71 -71
  133. package/src/components/Business/moreTreeTable/FixedScrollBar.tsx +87 -87
  134. package/src/components/Business/moreTreeTable/hooks/useSticky.ts +21 -21
  135. package/src/components/Business/moreTreeTable/index.less +99 -99
  136. package/src/components/Business/moreTreeTable/index.md +448 -448
  137. package/src/components/Business/moreTreeTable/index.tsx +387 -387
  138. package/src/components/Business/moreTreeTable/utils.ts +126 -126
  139. package/src/components/Functional/AddSelect/helps.ts +80 -80
  140. package/src/components/Functional/AddSelect/index.less +367 -367
  141. package/src/components/Functional/AddSelect/index.md +155 -155
  142. package/src/components/Functional/AddSelect/index.tsx +1171 -1171
  143. package/src/components/Functional/BillEntry/index.less +371 -371
  144. package/src/components/Functional/BillEntry/index.md +39 -39
  145. package/src/components/Functional/BillEntry/index.tsx +773 -773
  146. package/src/components/Functional/BsAntdSula/BsCascader/index.md +62 -62
  147. package/src/components/Functional/BsAntdSula/BsCascader/index.tsx +178 -178
  148. package/src/components/Functional/BsAntdSula/index.ts +2 -2
  149. package/src/components/Functional/DataImport/index.less +63 -63
  150. package/src/components/Functional/DataImport/index.md +44 -44
  151. package/src/components/Functional/DataImport/index.tsx +696 -696
  152. package/src/components/Functional/DataValidation/index.less +63 -63
  153. package/src/components/Functional/DataValidation/index.md +39 -39
  154. package/src/components/Functional/DataValidation/index.tsx +688 -688
  155. package/src/components/Functional/EllipsisTooltip/index.d.ts +5 -5
  156. package/src/components/Functional/EllipsisTooltip/index.js +36 -36
  157. package/src/components/Functional/EllipsisTooltip/index.md +30 -30
  158. package/src/components/Functional/ExportFunctions/ExportIcon/index.md +37 -37
  159. package/src/components/Functional/ExportFunctions/ExportIcon/index.tsx +60 -60
  160. package/src/components/Functional/QueryMutipleInput/index.less +37 -37
  161. package/src/components/Functional/QueryMutipleInput/index.md +33 -33
  162. package/src/components/Functional/QueryMutipleInput/index.tsx +128 -128
  163. package/src/components/Functional/SearchSelect/index.less +115 -115
  164. package/src/components/Functional/SearchSelect/index.md +141 -141
  165. package/src/components/Functional/SearchSelect/index.tsx +896 -896
  166. package/src/components/Functional/SearchSelect/utils.ts +3 -3
  167. package/src/components/Functional/TreeSearchSelect/index.md +47 -47
  168. package/src/components/Functional/TreeSearchSelect/index.tsx +204 -204
  169. package/src/components/Solution/RuleComponent/Formula.tsx +335 -335
  170. package/src/components/Solution/RuleComponent/InnerSelect.tsx +62 -62
  171. package/src/components/Solution/RuleComponent/index.d.ts +29 -29
  172. package/src/components/Solution/RuleComponent/index.js +2073 -2073
  173. package/src/components/Solution/RuleComponent/index.less +230 -230
  174. package/src/components/Solution/RuleComponent/renderSpecificAction.js +99 -99
  175. package/src/components/Solution/RuleComponent/ruleFiled.js +2281 -2281
  176. package/src/components/Solution/RuleComponent/services.ts +13 -13
  177. package/src/components/Solution/RuleComponent/util.js +143 -143
  178. package/src/index.ts +38 -38
  179. package/src/plugin/TableColumnSetting/index.less +247 -247
  180. package/src/plugin/TableColumnSetting/index.md +50 -50
  181. package/src/plugin/TableColumnSetting/index.tsx +725 -725
  182. package/src/plugin/TableColumnSetting/utils.ts +19 -19
  183. package/src/styles/bsDefault.less +1912 -1912
  184. package/src/utils/CheckOneUser/index.md +39 -39
  185. package/src/utils/CheckOneUser/index.ts +51 -51
  186. package/src/utils/CustomLoginInfo.ts +55 -55
  187. package/src/utils/LocalstorageUtils.ts +95 -95
  188. package/src/utils/TableUtils.tsx +18 -18
  189. package/src/utils/checkUtils.ts +39 -39
  190. package/src/utils/enumConfig.ts +11 -11
  191. package/src/utils/getFormMode.js +12 -12
  192. package/src/utils/index.ts +4 -4
  193. package/src/utils/requestUtils.ts +166 -166
  194. package/src/utils/serialize.js +7 -7
  195. package/src/utils/utils.ts +195 -195
  196. package/tsconfig.json +29 -29
  197. package/typings.d.ts +4 -4
@@ -1,286 +1,286 @@
1
- // @ts-nocheck
2
- import React, { useEffect, useState, useLayoutEffect, useImperativeHandle } from 'react';
3
- import { List, Tooltip, Input, Button } from 'antd';
4
- import { Link, formatMessage, history } from 'umi';
5
- import classNames from 'classnames';
6
- import { debounce } from 'lodash';
7
- import {
8
- setMenuTreeData,
9
- searchMenuData,
10
- } from '../../../utils';
11
- import { memoizeOneFormatter } from '@/utils/utils';
12
- import { SearchOutlined, CaretDownOutlined } from '@ant-design/icons';
13
- import './drawContent.less';
14
- import right from '../../../../../../assets/right.png';
15
- import closeicon from '../../../../../../assets/closeicon.png';
16
-
17
-
18
- const DrawContent = ({onClose, originRoutes=[], itemPath}: any) => {
19
- const [homepageData, sethomepageData]: any[] = useState([]);
20
- const [routesData, setroutesData]: any[] = useState([]);
21
- const [authorityMenu, setAuthorityMenu]: any[] = useState([]);
22
-
23
- const [currentOneLevel, setCurrentOneLevel] = useState<string>('');
24
- const [SearhData, setSearchMenuData] = useState<any[]>([]);
25
- const [rightMenuHeight, setHeight] = useState<number>(600);
26
- const [drawHeight, setDrawHeight] = useState<number>(900);
27
-
28
- const [moreBtnShow, setMoreBtnShow] = useState(false);
29
- const [showScroll, setShowScroll] = useState(false);
30
-
31
- useEffect(() => {
32
- getMenuContentHeight();
33
- const homepageDataList: any[] = []; //不含子集的菜单
34
- const routesDataList: any[] = []; //含子集的菜单
35
- const authorityMenuList: any[] = []; //当前权限可以看到的所有菜单
36
-
37
- const showMenu = originRoutes.find(item => item.path === '/')?.routes || [];
38
- let routesData = JSON.parse(JSON.stringify(memoizeOneFormatter(showMenu, '')));
39
- setMenuTreeData(routesData);
40
-
41
- routesData.forEach(item => {
42
- if (item.children) {
43
- routesDataList.push(item);
44
- authorityMenuList.push(item)
45
- } else {
46
- homepageDataList.push(item);
47
- authorityMenuList.push(item)
48
- }
49
- })
50
- sethomepageData(homepageDataList)
51
- setroutesData(routesDataList)
52
- setAuthorityMenu(authorityMenuList)
53
-
54
- window.onresize = () => {
55
- getMenuContentHeight();
56
- };
57
- }, []);
58
-
59
- useLayoutEffect(() => {
60
- setTimeout(() => {
61
- let drawContentHeight=document.getElementById("drawContent").scrollHeight;
62
- if (drawContentHeight > rightMenuHeight) {
63
- setMoreBtnShow(true);
64
- }
65
- }, 0)
66
- }, [])
67
-
68
- const getMenuContentHeight = () => {
69
- let clientHeight = document.body.clientHeight;
70
- setHeight(clientHeight - 190);
71
- setDrawHeight(clientHeight - 70)
72
- }
73
-
74
-
75
- const renderChildItem = (child) => {
76
- if (!child.hideInMenu && child.children) {
77
- return (
78
- <>
79
- <List.Item style={{ color: '#000', fontWeight: 'bold' }}>
80
- {formatMessage({ id: `${child.locale}` })}
81
- </List.Item>
82
- {child.children.map((menuItem: any) => {
83
- return renderChildItem(menuItem)
84
- })}
85
- </>
86
- );
87
- } else if (!child.hideInMenu && child.path) {
88
- return (
89
- <List.Item style={{fontSize: '12px'}} className="allFuncOnMouserover">
90
- <Link to={child.path} onClick={(e) => {onMenuClick(e, child);}}>
91
- <Tooltip
92
- title={formatMessage({ id: `${child.locale}` })}
93
- >
94
- {formatMessage({ id: `${child.locale}` }).length > 10
95
- ? `${formatMessage({
96
- id: `${child.name}`,
97
- }).slice(0, 10)}...`
98
- : formatMessage({ id: `${child.locale}` })}
99
- </Tooltip>
100
- <img className="allFuncOnMouseroverImg" src={right}></img>
101
- </Link>
102
- </List.Item>
103
- );
104
- }
105
- }
106
-
107
- const onMenuClick = (e, item) => {
108
- e.stopPropagation();
109
- e.preventDefault();
110
- let searchHistory = JSON.parse(localStorage.getItem(`${itemPath}_search_history`) || '[]');
111
- if (searchHistory.every(hisItem => item.path !== hisItem.padth)) {
112
- if (searchHistory.length < 10 ) {
113
- searchHistory.push({
114
- name: item.name,
115
- path: item.path
116
- })
117
- } else {
118
- searchHistory.pop();
119
- searchHistory.unshift({
120
- name: item.name,
121
- path: item.path
122
- })
123
- }
124
- }
125
- localStorage.setItem(`${itemPath}_search_history`, JSON.stringify(searchHistory))
126
- history.push({
127
- pathname: item.path
128
- })
129
- onClose();
130
- };
131
-
132
-
133
- let searchHistoryList = JSON.parse(localStorage.getItem(`${itemPath}_search_history`) || '[]');
134
- return (
135
- <div style={{height: `${drawHeight}px`}} className={'global_menu_draw_content'}>
136
- <div className={'drawerWarp_left'}>
137
- <div className={'left_item_title'} >一级菜单</div>
138
- {
139
- authorityMenu.map(item => (
140
- <div
141
- className={'left_item'}
142
- style={{
143
- borderLeft: currentOneLevel === item.path ? '2px solid #1890ff' : 'none',
144
- color: currentOneLevel === item.path ? '#1890ff' : '#000000'
145
- }}
146
- onClick={(e) => {
147
- e.stopPropagation();
148
- e.preventDefault()
149
- if (item.component) {
150
- history.push({
151
- pathname: item.path
152
- })
153
- onClose();
154
- } else {
155
- setCurrentOneLevel(item.path);
156
- let currentDom = document.getElementById(item.path);
157
- currentDom && currentDom.scrollIntoView();
158
- }
159
- }}
160
- >
161
- {item.name}
162
- </div>))
163
- }
164
- </div>
165
- <div style={{flexGrow: 1, position: 'relative'}}>
166
- <img
167
- onClick={() => {onClose()}}
168
- style={{position: 'absolute', right: '15px', top: '17px', cursor: 'pointer'}} width={24} src={closeicon} />
169
-
170
- <div style={{ padding: '10px', marginBottom: '10px', width: '100%', }}>
171
- <Input
172
- style={{ height: '36px', borderRadius: '4px', width: '830px' }}
173
- placeholder="请输入关键词"
174
- allowClear
175
- prefix={<SearchOutlined />}
176
- onChange={debounce((e: any) => {
177
- searchMenuData(authorityMenu, e.target.value, setSearchMenuData);
178
- }, 600)}
179
- />
180
- <div style={{marginTop: '10px'}}>
181
- <span style={{ color: '#8c8c8c', opacity: '0.6' }}>最近访问:&nbsp;&nbsp;&nbsp;</span>
182
- {
183
- searchHistoryList.map(item => {
184
- return (
185
- <Link style={{color: '#000000', marginRight: '10px'}} to={item.path} onClick={(e) => {onMenuClick(e, item);}}>
186
- {item.name}
187
- </Link>)
188
- })
189
- }
190
- </div>
191
- </div>
192
- {
193
- !!SearhData.length ?
194
- (<div className={'search_menu_content'}>
195
- {
196
- SearhData.map((item: any) => (
197
- <div onClick={(e) => {
198
- onMenuClick(e, item);
199
- }} key={item.path}>{item.name}</div>
200
- ))
201
- }
202
- </div>) : (
203
- <div>
204
- <div
205
- style={{
206
- height: `${rightMenuHeight}px`,
207
- overflowY: 'scroll',
208
- position: 'relative',
209
- width: '100%'
210
- }}
211
- >
212
- <div id='drawContent' className={'drawerWarp_right'}>
213
- {homepageData && homepageData.filter((d) => !d.hideInMenu).length > 0 && (
214
- <List
215
- className={classNames('allFunsList', 'allFunsListWarp')}
216
- dataSource={homepageData}
217
- renderItem={(child: any) => {
218
- if (!child.hideInMenu && child.path) {
219
- return (
220
- <div className={classNames('allFunsListWarp')}>
221
- <List.Item
222
- className={classNames('allFuncOnMouserover')}
223
- style={{ padding: '12px 24px' }}
224
- >
225
- <Link to={child.path} onClick={(e) => {onMenuClick(e, child);}}>
226
- {formatMessage({ id: `${child.name}` })}
227
- <img className="allFuncOnMouseroverImg" src={right}></img>
228
- </Link>
229
- </List.Item>
230
- </div>
231
- );
232
- }
233
- }}
234
- />
235
- )}
236
- {routesData.map((item, index) => {
237
- return (
238
- <List
239
- // className={classNames('allFunsList', 'allFunsListWarp', )}
240
- className={`allFunsList allFunsListWarp ${currentOneLevel === item.path ? 'choosedStyle' : ''}`}
241
- id={item.path}
242
- style={{
243
- color: currentOneLevel === item.path ? '#fff' : '#005CFF',
244
- }}
245
- header={<b>{formatMessage({ id: `${item.name}` })}</b>}
246
- bordered
247
- dataSource={item.children}
248
- renderItem={(child: any) => {
249
- return renderChildItem(child)
250
- }}
251
- />
252
- );
253
- })}
254
- </div>
255
- <div style={{
256
- display: moreBtnShow ? 'block' : 'none',
257
- // position: 'absolute',
258
- textAlign: 'center',
259
- bottom: 0,
260
- background: '#ffffff',
261
- width: '100%',
262
- height: '30px'
263
- }}>
264
- <span
265
- onClick={() => {
266
- setShowScroll(true);
267
- setMoreBtnShow(false);
268
- }}
269
- style={{color: '#8c8c8c'}}
270
- >
271
- <CaretDownOutlined />
272
- 下滑加载更多
273
- </span>
274
- </div>
275
- </div>
276
- </div>
277
- )
278
-
279
- }
280
- </div>
281
- </div>
282
- )
283
-
284
- }
285
-
1
+ // @ts-nocheck
2
+ import React, { useEffect, useState, useLayoutEffect, useImperativeHandle } from 'react';
3
+ import { List, Tooltip, Input, Button } from 'antd';
4
+ import { Link, formatMessage, history } from 'umi';
5
+ import classNames from 'classnames';
6
+ import { debounce } from 'lodash';
7
+ import {
8
+ setMenuTreeData,
9
+ searchMenuData,
10
+ } from '../../../utils';
11
+ import { memoizeOneFormatter } from '@/utils/utils';
12
+ import { SearchOutlined, CaretDownOutlined } from '@ant-design/icons';
13
+ import './drawContent.less';
14
+ import right from '../../../../../../assets/right.png';
15
+ import closeicon from '../../../../../../assets/closeicon.png';
16
+
17
+
18
+ const DrawContent = ({onClose, originRoutes=[], itemPath}: any) => {
19
+ const [homepageData, sethomepageData]: any[] = useState([]);
20
+ const [routesData, setroutesData]: any[] = useState([]);
21
+ const [authorityMenu, setAuthorityMenu]: any[] = useState([]);
22
+
23
+ const [currentOneLevel, setCurrentOneLevel] = useState<string>('');
24
+ const [SearhData, setSearchMenuData] = useState<any[]>([]);
25
+ const [rightMenuHeight, setHeight] = useState<number>(600);
26
+ const [drawHeight, setDrawHeight] = useState<number>(900);
27
+
28
+ const [moreBtnShow, setMoreBtnShow] = useState(false);
29
+ const [showScroll, setShowScroll] = useState(false);
30
+
31
+ useEffect(() => {
32
+ getMenuContentHeight();
33
+ const homepageDataList: any[] = []; //不含子集的菜单
34
+ const routesDataList: any[] = []; //含子集的菜单
35
+ const authorityMenuList: any[] = []; //当前权限可以看到的所有菜单
36
+
37
+ const showMenu = originRoutes.find(item => item.path === '/')?.routes || [];
38
+ let routesData = JSON.parse(JSON.stringify(memoizeOneFormatter(showMenu, '')));
39
+ setMenuTreeData(routesData);
40
+
41
+ routesData.forEach(item => {
42
+ if (item.children) {
43
+ routesDataList.push(item);
44
+ authorityMenuList.push(item)
45
+ } else {
46
+ homepageDataList.push(item);
47
+ authorityMenuList.push(item)
48
+ }
49
+ })
50
+ sethomepageData(homepageDataList)
51
+ setroutesData(routesDataList)
52
+ setAuthorityMenu(authorityMenuList)
53
+
54
+ window.onresize = () => {
55
+ getMenuContentHeight();
56
+ };
57
+ }, []);
58
+
59
+ useLayoutEffect(() => {
60
+ setTimeout(() => {
61
+ let drawContentHeight=document.getElementById("drawContent").scrollHeight;
62
+ if (drawContentHeight > rightMenuHeight) {
63
+ setMoreBtnShow(true);
64
+ }
65
+ }, 0)
66
+ }, [])
67
+
68
+ const getMenuContentHeight = () => {
69
+ let clientHeight = document.body.clientHeight;
70
+ setHeight(clientHeight - 190);
71
+ setDrawHeight(clientHeight - 70)
72
+ }
73
+
74
+
75
+ const renderChildItem = (child) => {
76
+ if (!child.hideInMenu && child.children) {
77
+ return (
78
+ <>
79
+ <List.Item style={{ color: '#000', fontWeight: 'bold' }}>
80
+ {formatMessage({ id: `${child.locale}` })}
81
+ </List.Item>
82
+ {child.children.map((menuItem: any) => {
83
+ return renderChildItem(menuItem)
84
+ })}
85
+ </>
86
+ );
87
+ } else if (!child.hideInMenu && child.path) {
88
+ return (
89
+ <List.Item style={{fontSize: '12px'}} className="allFuncOnMouserover">
90
+ <Link to={child.path} onClick={(e) => {onMenuClick(e, child);}}>
91
+ <Tooltip
92
+ title={formatMessage({ id: `${child.locale}` })}
93
+ >
94
+ {formatMessage({ id: `${child.locale}` }).length > 10
95
+ ? `${formatMessage({
96
+ id: `${child.name}`,
97
+ }).slice(0, 10)}...`
98
+ : formatMessage({ id: `${child.locale}` })}
99
+ </Tooltip>
100
+ <img className="allFuncOnMouseroverImg" src={right}></img>
101
+ </Link>
102
+ </List.Item>
103
+ );
104
+ }
105
+ }
106
+
107
+ const onMenuClick = (e, item) => {
108
+ e.stopPropagation();
109
+ e.preventDefault();
110
+ let searchHistory = JSON.parse(localStorage.getItem(`${itemPath}_search_history`) || '[]');
111
+ if (searchHistory.every(hisItem => item.path !== hisItem.padth)) {
112
+ if (searchHistory.length < 10 ) {
113
+ searchHistory.push({
114
+ name: item.name,
115
+ path: item.path
116
+ })
117
+ } else {
118
+ searchHistory.pop();
119
+ searchHistory.unshift({
120
+ name: item.name,
121
+ path: item.path
122
+ })
123
+ }
124
+ }
125
+ localStorage.setItem(`${itemPath}_search_history`, JSON.stringify(searchHistory))
126
+ history.push({
127
+ pathname: item.path
128
+ })
129
+ onClose();
130
+ };
131
+
132
+
133
+ let searchHistoryList = JSON.parse(localStorage.getItem(`${itemPath}_search_history`) || '[]');
134
+ return (
135
+ <div style={{height: `${drawHeight}px`}} className={'global_menu_draw_content'}>
136
+ <div className={'drawerWarp_left'}>
137
+ <div className={'left_item_title'} >一级菜单</div>
138
+ {
139
+ authorityMenu.map(item => (
140
+ <div
141
+ className={'left_item'}
142
+ style={{
143
+ borderLeft: currentOneLevel === item.path ? '2px solid #1890ff' : 'none',
144
+ color: currentOneLevel === item.path ? '#1890ff' : '#000000'
145
+ }}
146
+ onClick={(e) => {
147
+ e.stopPropagation();
148
+ e.preventDefault()
149
+ if (item.component) {
150
+ history.push({
151
+ pathname: item.path
152
+ })
153
+ onClose();
154
+ } else {
155
+ setCurrentOneLevel(item.path);
156
+ let currentDom = document.getElementById(item.path);
157
+ currentDom && currentDom.scrollIntoView();
158
+ }
159
+ }}
160
+ >
161
+ {item.name}
162
+ </div>))
163
+ }
164
+ </div>
165
+ <div style={{flexGrow: 1, position: 'relative'}}>
166
+ <img
167
+ onClick={() => {onClose()}}
168
+ style={{position: 'absolute', right: '15px', top: '17px', cursor: 'pointer'}} width={24} src={closeicon} />
169
+
170
+ <div style={{ padding: '10px', marginBottom: '10px', width: '100%', }}>
171
+ <Input
172
+ style={{ height: '36px', borderRadius: '4px', width: '830px' }}
173
+ placeholder="请输入关键词"
174
+ allowClear
175
+ prefix={<SearchOutlined />}
176
+ onChange={debounce((e: any) => {
177
+ searchMenuData(authorityMenu, e.target.value, setSearchMenuData);
178
+ }, 600)}
179
+ />
180
+ <div style={{marginTop: '10px'}}>
181
+ <span style={{ color: '#8c8c8c', opacity: '0.6' }}>最近访问:&nbsp;&nbsp;&nbsp;</span>
182
+ {
183
+ searchHistoryList.map(item => {
184
+ return (
185
+ <Link style={{color: '#000000', marginRight: '10px'}} to={item.path} onClick={(e) => {onMenuClick(e, item);}}>
186
+ {item.name}
187
+ </Link>)
188
+ })
189
+ }
190
+ </div>
191
+ </div>
192
+ {
193
+ !!SearhData.length ?
194
+ (<div className={'search_menu_content'}>
195
+ {
196
+ SearhData.map((item: any) => (
197
+ <div onClick={(e) => {
198
+ onMenuClick(e, item);
199
+ }} key={item.path}>{item.name}</div>
200
+ ))
201
+ }
202
+ </div>) : (
203
+ <div>
204
+ <div
205
+ style={{
206
+ height: `${rightMenuHeight}px`,
207
+ overflowY: 'scroll',
208
+ position: 'relative',
209
+ width: '100%'
210
+ }}
211
+ >
212
+ <div id='drawContent' className={'drawerWarp_right'}>
213
+ {homepageData && homepageData.filter((d) => !d.hideInMenu).length > 0 && (
214
+ <List
215
+ className={classNames('allFunsList', 'allFunsListWarp')}
216
+ dataSource={homepageData}
217
+ renderItem={(child: any) => {
218
+ if (!child.hideInMenu && child.path) {
219
+ return (
220
+ <div className={classNames('allFunsListWarp')}>
221
+ <List.Item
222
+ className={classNames('allFuncOnMouserover')}
223
+ style={{ padding: '12px 24px' }}
224
+ >
225
+ <Link to={child.path} onClick={(e) => {onMenuClick(e, child);}}>
226
+ {formatMessage({ id: `${child.name}` })}
227
+ <img className="allFuncOnMouseroverImg" src={right}></img>
228
+ </Link>
229
+ </List.Item>
230
+ </div>
231
+ );
232
+ }
233
+ }}
234
+ />
235
+ )}
236
+ {routesData.map((item, index) => {
237
+ return (
238
+ <List
239
+ // className={classNames('allFunsList', 'allFunsListWarp', )}
240
+ className={`allFunsList allFunsListWarp ${currentOneLevel === item.path ? 'choosedStyle' : ''}`}
241
+ id={item.path}
242
+ style={{
243
+ color: currentOneLevel === item.path ? '#fff' : '#005CFF',
244
+ }}
245
+ header={<b>{formatMessage({ id: `${item.name}` })}</b>}
246
+ bordered
247
+ dataSource={item.children}
248
+ renderItem={(child: any) => {
249
+ return renderChildItem(child)
250
+ }}
251
+ />
252
+ );
253
+ })}
254
+ </div>
255
+ <div style={{
256
+ display: moreBtnShow ? 'block' : 'none',
257
+ // position: 'absolute',
258
+ textAlign: 'center',
259
+ bottom: 0,
260
+ background: '#ffffff',
261
+ width: '100%',
262
+ height: '30px'
263
+ }}>
264
+ <span
265
+ onClick={() => {
266
+ setShowScroll(true);
267
+ setMoreBtnShow(false);
268
+ }}
269
+ style={{color: '#8c8c8c'}}
270
+ >
271
+ <CaretDownOutlined />
272
+ 下滑加载更多
273
+ </span>
274
+ </div>
275
+ </div>
276
+ </div>
277
+ )
278
+
279
+ }
280
+ </div>
281
+ </div>
282
+ )
283
+
284
+ }
285
+
286
286
  export default DrawContent;