@bit-sun/business-component 2.3.22-beta1 → 2.3.22-beta10

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 (235) 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/components/Business/AddSelectBusiness/index.d.ts +4 -3
  9. package/dist/components/Business/BsLayouts/Components/AllFunc/drawContent.d.ts +2 -1
  10. package/dist/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/leftTree.d.ts +1 -1
  11. package/dist/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/rightTree.d.ts +2 -2
  12. package/dist/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/DrawContent.d.ts +2 -1
  13. package/dist/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/customMenuHeader.d.ts +2 -1
  14. package/dist/components/Business/BsLayouts/Components/GlobalHeader/index.d.ts +2 -1
  15. package/dist/components/Business/BsLayouts/Components/RightContent/LoginModal.d.ts +2 -1
  16. package/dist/components/Business/BsLayouts/index.d.ts +1 -1
  17. package/dist/components/Business/BsLayouts/service.d.ts +1 -1
  18. package/dist/components/Business/BsSulaQueryTable/SearchItemSetting.d.ts +5 -5
  19. package/dist/components/Business/BsSulaQueryTable/index.d.ts +2 -1
  20. package/dist/components/Business/BsSulaQueryTable/setting.d.ts +5 -5
  21. package/dist/components/Business/BsSulaQueryTable/utils.d.ts +14 -13
  22. package/dist/components/Business/CommodityEntry/index.d.ts +2 -1
  23. package/dist/components/Business/CommonAlert/index.d.ts +2 -1
  24. package/dist/components/Business/CommonGuideWrapper/index.d.ts +3 -3
  25. package/dist/components/Business/DetailPageWrapper/index.d.ts +6 -5
  26. package/dist/components/Business/HomePageWrapper/index.d.ts +2 -1
  27. package/dist/components/Business/JsonQueryTable/components/FieldsModifyModal.d.ts +2 -1
  28. package/dist/components/Business/JsonQueryTable/components/FieldsSettingsTable.d.ts +2 -1
  29. package/dist/components/Business/JsonQueryTable/components/Formula.d.ts +2 -1
  30. package/dist/components/Business/JsonQueryTable/components/MaintainOptions.d.ts +2 -1
  31. package/dist/components/Business/JsonQueryTable/drawer/index.d.ts +2 -1
  32. package/dist/components/Business/StateFlow/index.d.ts +2 -1
  33. package/dist/components/Business/TreeSearchSelect/index.d.ts +1 -1
  34. package/dist/components/Business/columnSettingTable/columnSetting.d.ts +5 -5
  35. package/dist/components/Business/columnSettingTable/index.d.ts +2 -2
  36. package/dist/components/Business/columnSettingTable/sulaSettingTable.d.ts +2 -2
  37. package/dist/components/Business/columnSettingTable/utils.d.ts +2 -1
  38. package/dist/components/Functional/AddSelect/index.d.ts +2 -1
  39. package/dist/components/Functional/DataImport/index.d.ts +3 -3
  40. package/dist/components/Functional/DataValidation/index.d.ts +3 -3
  41. package/dist/components/Functional/ExportFunctions/ExportIcon/index.d.ts +2 -1
  42. package/dist/components/Functional/QueryMutipleInput/index.d.ts +2 -1
  43. package/dist/components/Functional/TreeSearchSelect/index.d.ts +2 -1
  44. package/dist/components/Solution/RuleComponent/Formula.d.ts +2 -1
  45. package/dist/components/Solution/RuleComponent/services.d.ts +1 -1
  46. package/dist/index.esm.js +74 -53
  47. package/dist/index.js +74 -53
  48. package/dist/plugin/TableColumnSetting/index.d.ts +5 -5
  49. package/dist/utils/LocalstorageUtils.d.ts +5 -0
  50. package/docs/index.md +21 -21
  51. package/lib/assets/drag.svg +17 -17
  52. package/lib/assets/exportFail.svg +37 -37
  53. package/lib/assets/exportProcessing.svg +28 -28
  54. package/lib/assets/exportSuccess.svg +34 -34
  55. package/lib/assets/label_icon_bottom.svg +25 -25
  56. package/lib/assets/upExport.svg +22 -22
  57. package/package.json +78 -78
  58. package/src/assets/32.svg +27 -27
  59. package/src/assets/addIcon.svg +17 -17
  60. package/src/assets/allfunc.svg +27 -27
  61. package/src/assets/arrowRight.svg +24 -24
  62. package/src/assets/btn-delete.svg +29 -29
  63. package/src/assets/btn-edit.svg +19 -19
  64. package/src/assets/btn-more.svg +17 -17
  65. package/src/assets/btn-submit.svg +19 -19
  66. package/src/assets/caidan.svg +11 -11
  67. package/src/assets/close.svg +26 -26
  68. package/src/assets/drag.svg +17 -17
  69. package/src/assets/exportFail.svg +37 -37
  70. package/src/assets/exportProcessing.svg +28 -28
  71. package/src/assets/exportSuccess.svg +34 -34
  72. package/src/assets/fixed-left-active.svg +11 -11
  73. package/src/assets/fixed-left.svg +15 -15
  74. package/src/assets/fixed-right-active.svg +11 -11
  75. package/src/assets/fixed-right.svg +15 -15
  76. package/src/assets/guanbi.svg +15 -15
  77. package/src/assets/icon-quanping.svg +15 -15
  78. package/src/assets/icon-shezhi.svg +17 -17
  79. package/src/assets/label_icon_bottom.svg +25 -25
  80. package/src/assets/list-no-img.svg +21 -21
  81. package/src/assets/morentouxiang-32.svg +23 -23
  82. package/src/assets/scanning.svg +24 -24
  83. package/src/assets/upExport.svg +22 -22
  84. package/src/common/ENUM.ts +41 -41
  85. package/src/components/Business/AddSelectBusiness/index.md +162 -162
  86. package/src/components/Business/AddSelectBusiness/index.tsx +1060 -1060
  87. package/src/components/Business/BsLayouts/Components/AllFunc/drawContent.tsx +111 -111
  88. package/src/components/Business/BsLayouts/Components/AllFunc/index.less +153 -153
  89. package/src/components/Business/BsLayouts/Components/AllFunc/index.tsx +70 -70
  90. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.less +90 -90
  91. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.tsx +37 -37
  92. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/leftTree.tsx +242 -242
  93. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/rightTree.tsx +384 -384
  94. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/DrawContent.tsx +285 -285
  95. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/customMenuHeader.tsx +74 -74
  96. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/drawContent.less +170 -170
  97. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.less +64 -64
  98. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.tsx +153 -153
  99. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.less +72 -72
  100. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.tsx +157 -157
  101. package/src/components/Business/BsLayouts/Components/RightContent/LoginModal.tsx +85 -85
  102. package/src/components/Business/BsLayouts/Components/RightContent/home.less +218 -218
  103. package/src/components/Business/BsLayouts/Components/RightContent/index.tsx +155 -155
  104. package/src/components/Business/BsLayouts/Components/SearchFunc/index.less +160 -160
  105. package/src/components/Business/BsLayouts/Components/SearchFunc/index.tsx +75 -75
  106. package/src/components/Business/BsLayouts/index.less +79 -79
  107. package/src/components/Business/BsLayouts/index.tsx +1484 -1484
  108. package/src/components/Business/BsLayouts/service.ts +10 -10
  109. package/src/components/Business/BsLayouts/utils.tsx +203 -203
  110. package/src/components/Business/BsSulaQueryTable/SearchItemSetting.tsx +565 -564
  111. package/src/components/Business/BsSulaQueryTable/index.less +221 -221
  112. package/src/components/Business/BsSulaQueryTable/index.tsx +531 -535
  113. package/src/components/Business/BsSulaQueryTable/setting.tsx +855 -852
  114. package/src/components/Business/BsSulaQueryTable/utils.less +65 -65
  115. package/src/components/Business/BsSulaQueryTable/utils.tsx +690 -690
  116. package/src/components/Business/CommodityEntry/index.md +70 -70
  117. package/src/components/Business/CommodityEntry/index.tsx +80 -80
  118. package/src/components/Business/CommonAlert/index.tsx +23 -23
  119. package/src/components/Business/CommonGuideWrapper/index.less +111 -111
  120. package/src/components/Business/CommonGuideWrapper/index.md +39 -39
  121. package/src/components/Business/CommonGuideWrapper/index.tsx +83 -83
  122. package/src/components/Business/DetailPageWrapper/index.less +79 -79
  123. package/src/components/Business/DetailPageWrapper/index.tsx +313 -313
  124. package/src/components/Business/DetailPageWrapper/utils.tsx +100 -100
  125. package/src/components/Business/HomePageWrapper/index.less +33 -33
  126. package/src/components/Business/HomePageWrapper/index.md +45 -45
  127. package/src/components/Business/HomePageWrapper/index.tsx +162 -162
  128. package/src/components/Business/JsonQueryTable/components/FieldsModifyModal.tsx +824 -824
  129. package/src/components/Business/JsonQueryTable/components/FieldsSettingsTable.tsx +205 -205
  130. package/src/components/Business/JsonQueryTable/components/Formula.tsx +205 -205
  131. package/src/components/Business/JsonQueryTable/components/MaintainOptions.tsx +127 -127
  132. package/src/components/Business/JsonQueryTable/configButton/index.js +20 -20
  133. package/src/components/Business/JsonQueryTable/configTree/component/compactArrayView.js +25 -25
  134. package/src/components/Business/JsonQueryTable/configTree/component/compactObjectView.js +30 -30
  135. package/src/components/Business/JsonQueryTable/configTree/index.js +82 -82
  136. package/src/components/Business/JsonQueryTable/configTree/index.less +44 -44
  137. package/src/components/Business/JsonQueryTable/configTree/parser/highlight.js +57 -57
  138. package/src/components/Business/JsonQueryTable/configTree/parser/index.js +124 -124
  139. package/src/components/Business/JsonQueryTable/configTree/render/iconRender.js +29 -29
  140. package/src/components/Business/JsonQueryTable/configTree/render/nameRender.js +22 -22
  141. package/src/components/Business/JsonQueryTable/configTree/treeNode.js +116 -116
  142. package/src/components/Business/JsonQueryTable/drawer/index.tsx +12 -12
  143. package/src/components/Business/JsonQueryTable/function.ts +62 -62
  144. package/src/components/Business/JsonQueryTable/index.less +16 -16
  145. package/src/components/Business/JsonQueryTable/index.md +328 -328
  146. package/src/components/Business/JsonQueryTable/index.tsx +535 -535
  147. package/src/components/Business/JsonQueryTable/jsonEditor/index.js +346 -346
  148. package/src/components/Business/JsonQueryTable/jsonEditor/index.less +22 -22
  149. package/src/components/Business/JsonQueryTable/jsonEditor/lint/basicType.js +147 -147
  150. package/src/components/Business/JsonQueryTable/jsonEditor/lint/index.js +389 -389
  151. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/actions.js +118 -118
  152. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/dependency.js +22 -22
  153. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/index.js +21 -21
  154. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/request.js +65 -65
  155. package/src/components/Business/JsonQueryTable/static.ts +390 -390
  156. package/src/components/Business/SearchSelect/BusinessUtils.ts +1762 -1762
  157. package/src/components/Business/SearchSelect/common.ts +75 -75
  158. package/src/components/Business/SearchSelect/index.md +1329 -1329
  159. package/src/components/Business/SearchSelect/index.tsx +55 -55
  160. package/src/components/Business/SearchSelect/utils.ts +100 -100
  161. package/src/components/Business/StateFlow/index.less +130 -130
  162. package/src/components/Business/StateFlow/index.md +60 -60
  163. package/src/components/Business/StateFlow/index.tsx +29 -29
  164. package/src/components/Business/TreeSearchSelect/index.md +156 -156
  165. package/src/components/Business/TreeSearchSelect/index.tsx +33 -33
  166. package/src/components/Business/TreeSearchSelect/utils.ts +75 -75
  167. package/src/components/Business/columnSettingTable/columnSetting.tsx +766 -764
  168. package/src/components/Business/columnSettingTable/index.less +247 -247
  169. package/src/components/Business/columnSettingTable/index.md +357 -357
  170. package/src/components/Business/columnSettingTable/index.tsx +232 -232
  171. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +240 -240
  172. package/src/components/Business/columnSettingTable/utils.tsx +71 -71
  173. package/src/components/Business/moreTreeTable/FixedScrollBar.tsx +87 -87
  174. package/src/components/Business/moreTreeTable/hooks/useSticky.ts +21 -21
  175. package/src/components/Business/moreTreeTable/index.less +99 -99
  176. package/src/components/Business/moreTreeTable/index.md +448 -448
  177. package/src/components/Business/moreTreeTable/index.tsx +387 -387
  178. package/src/components/Business/moreTreeTable/utils.ts +126 -126
  179. package/src/components/Functional/AddSelect/helps.ts +79 -79
  180. package/src/components/Functional/AddSelect/index.less +367 -367
  181. package/src/components/Functional/AddSelect/index.md +155 -155
  182. package/src/components/Functional/AddSelect/index.tsx +1170 -1170
  183. package/src/components/Functional/BillEntry/index.less +371 -371
  184. package/src/components/Functional/BillEntry/index.md +39 -39
  185. package/src/components/Functional/BillEntry/index.tsx +772 -772
  186. package/src/components/Functional/BsAntdSula/BsCascader/index.md +62 -62
  187. package/src/components/Functional/BsAntdSula/BsCascader/index.tsx +178 -178
  188. package/src/components/Functional/BsAntdSula/index.ts +2 -2
  189. package/src/components/Functional/DataImport/index.less +63 -63
  190. package/src/components/Functional/DataImport/index.md +44 -44
  191. package/src/components/Functional/DataImport/index.tsx +695 -695
  192. package/src/components/Functional/DataValidation/index.less +63 -63
  193. package/src/components/Functional/DataValidation/index.md +39 -39
  194. package/src/components/Functional/DataValidation/index.tsx +687 -687
  195. package/src/components/Functional/EllipsisTooltip/index.d.ts +5 -5
  196. package/src/components/Functional/EllipsisTooltip/index.js +36 -36
  197. package/src/components/Functional/EllipsisTooltip/index.md +30 -30
  198. package/src/components/Functional/ExportFunctions/ExportIcon/index.md +37 -37
  199. package/src/components/Functional/ExportFunctions/ExportIcon/index.tsx +59 -59
  200. package/src/components/Functional/QueryMutipleInput/index.less +37 -37
  201. package/src/components/Functional/QueryMutipleInput/index.md +33 -33
  202. package/src/components/Functional/QueryMutipleInput/index.tsx +128 -128
  203. package/src/components/Functional/SearchSelect/index.less +115 -115
  204. package/src/components/Functional/SearchSelect/index.md +141 -141
  205. package/src/components/Functional/SearchSelect/index.tsx +879 -879
  206. package/src/components/Functional/SearchSelect/utils.ts +3 -3
  207. package/src/components/Functional/TreeSearchSelect/index.md +47 -47
  208. package/src/components/Functional/TreeSearchSelect/index.tsx +199 -199
  209. package/src/components/Solution/RuleComponent/Formula.tsx +335 -335
  210. package/src/components/Solution/RuleComponent/index.d.ts +29 -29
  211. package/src/components/Solution/RuleComponent/index.js +2032 -2032
  212. package/src/components/Solution/RuleComponent/index.less +230 -230
  213. package/src/components/Solution/RuleComponent/renderSpecificAction.js +99 -99
  214. package/src/components/Solution/RuleComponent/ruleFiled.js +2107 -2107
  215. package/src/components/Solution/RuleComponent/services.ts +13 -13
  216. package/src/components/Solution/RuleComponent/util.js +139 -139
  217. package/src/index.ts +38 -38
  218. package/src/plugin/TableColumnSetting/index.less +247 -247
  219. package/src/plugin/TableColumnSetting/index.md +50 -50
  220. package/src/plugin/TableColumnSetting/index.tsx +726 -724
  221. package/src/plugin/TableColumnSetting/utils.ts +19 -19
  222. package/src/styles/bsDefault.less +1890 -1912
  223. package/src/utils/CheckOneUser/index.md +39 -39
  224. package/src/utils/CheckOneUser/index.ts +51 -51
  225. package/src/utils/LocalstorageUtils.ts +114 -95
  226. package/src/utils/TableUtils.tsx +18 -18
  227. package/src/utils/checkUtils.ts +39 -39
  228. package/src/utils/enumConfig.ts +11 -11
  229. package/src/utils/getFormMode.js +12 -12
  230. package/src/utils/index.ts +4 -4
  231. package/src/utils/requestUtils.ts +42 -34
  232. package/src/utils/serialize.js +7 -7
  233. package/src/utils/utils.ts +212 -212
  234. package/tsconfig.json +29 -29
  235. package/typings.d.ts +4 -4
@@ -1,3 +1,3 @@
1
- export const handleSourceName = (sName: any) => {
2
- return sName
3
- }
1
+ export const handleSourceName = (sName: any) => {
2
+ return sName
3
+ }
@@ -1,47 +1,47 @@
1
- ---
2
- nav:
3
- title: '组件'
4
- order: 1
5
- group:
6
- title: 功能组件
7
- order: 0
8
- title: 树型选择器
9
- order: 4
10
- ---
11
-
12
- ## TreeSearchSelect
13
-
14
- 部门选择器Demo:
15
-
16
- ```tsx
17
- import React, { useState } from 'react';
18
- import { TreeSearchSelect } from '../../../index';
19
-
20
- export default () => {
21
-
22
- const [value, setValue] = useState();
23
-
24
- const props = {
25
- mode: 'create',
26
- remoteSource: {
27
- url: `/user/orgViewNode/common/getTreeForOrgViewAndTenant`,
28
- initialParams: { 'orgViewCode': 'administrative-organization-view' },
29
- resKeyValue: ['code', 'name'],
30
- },
31
- value,
32
- isChoose: false, // 控制是否父节点可选中,默认不可选中
33
- treeCheckable: true,
34
- onChange: (v) => {
35
- setValue(v)
36
- }
37
- };
38
-
39
- return (
40
- <div>
41
- <TreeSearchSelect {...props} />
42
- </div>
43
- );
44
- };
45
- ```
46
-
47
- More skills for writing demo: https://d.umijs.org/guide/demo-principle
1
+ ---
2
+ nav:
3
+ title: '组件'
4
+ order: 1
5
+ group:
6
+ title: 功能组件
7
+ order: 0
8
+ title: 树型选择器
9
+ order: 4
10
+ ---
11
+
12
+ ## TreeSearchSelect
13
+
14
+ 部门选择器Demo:
15
+
16
+ ```tsx
17
+ import React, { useState } from 'react';
18
+ import { TreeSearchSelect } from '../../../index';
19
+
20
+ export default () => {
21
+
22
+ const [value, setValue] = useState();
23
+
24
+ const props = {
25
+ mode: 'create',
26
+ remoteSource: {
27
+ url: `/user/orgViewNode/common/getTreeForOrgViewAndTenant`,
28
+ initialParams: { 'orgViewCode': 'administrative-organization-view' },
29
+ resKeyValue: ['code', 'name'],
30
+ },
31
+ value,
32
+ isChoose: false, // 控制是否父节点可选中,默认不可选中
33
+ treeCheckable: true,
34
+ onChange: (v) => {
35
+ setValue(v)
36
+ }
37
+ };
38
+
39
+ return (
40
+ <div>
41
+ <TreeSearchSelect {...props} />
42
+ </div>
43
+ );
44
+ };
45
+ ```
46
+
47
+ More skills for writing demo: https://d.umijs.org/guide/demo-principle
@@ -1,199 +1,199 @@
1
- import React, { useState, useEffect } from 'react';
2
- import { TreeSelect, Tooltip, Tag } from 'antd';
3
- import axios from 'axios';
4
- import { stringify } from 'querystring';
5
- import _ from "lodash"
6
-
7
- const TreeSearchSelect = (props: any) => {
8
- const [treeData, setTreeData] = useState([]);
9
- const {
10
- ctx, // ctx中有自己的name
11
- value,
12
- valueName, // 当labelInValue为true时,值为null
13
- onChange,
14
- onChangeName, // 当labelInValue为true时,此函数无意义,故无需传
15
- placeholder,
16
- remoteSource,
17
- initialValue,
18
- treeCheckable = false,
19
- showSearch = true,
20
- maxTagCount = 1,
21
- multiple = false,
22
- isChoose = false, // 默认父节点不可选;传true则不限制
23
- rootDisabled = false, // 默认根节点可选
24
- mode,
25
- getPopupContainer,
26
- labelInValue = false,
27
- showArrow = true,
28
- allowClear = true,
29
- showCheckedStrategy = props?.treeCheckStrictly ? TreeSelect.SHOW_ALL : TreeSelect.SHOW_PARENT,
30
- style = { width: '100%' },
31
- getTreeData,
32
- disabled,
33
- ...restProps
34
- } = props;
35
-
36
- const {
37
- url,
38
- headers,
39
- paramsKey = 'qp-name-like',
40
- resKeyValue = ['id', 'name'],
41
- initialParams = {},
42
- } = remoteSource;
43
-
44
- const mapSearchTree = (treeDataItem: any) => {
45
- const haveChildren = Array.isArray(treeDataItem.children) && treeDataItem.children.length > 0; // 盘算是否为父节点
46
- const isRoot = treeDataItem?.id == '0'; // 判断是否为根节点
47
- return {
48
- title: treeDataItem[resKeyValue[1]],
49
- key: treeDataItem[resKeyValue[0]],
50
- value: treeDataItem[resKeyValue[0]],
51
- parentId: treeDataItem.parent,
52
- data: { ...treeDataItem },
53
- isLeaf: !haveChildren,
54
- disabled: isDisabled(haveChildren,isRoot),
55
- children: haveChildren ? treeDataItem.children.map((i: any) => mapSearchTree(i)) : [],
56
- };
57
- };
58
-
59
- const isDisabled = (isParent: boolean,isRoot: boolean) => {
60
- if (isChoose) {
61
- if(rootDisabled && isRoot){
62
- return rootDisabled
63
- }
64
- return false;
65
- }
66
- return isParent;
67
- }
68
-
69
- /* 实时查询 但是目前用的直接是完整数据源, 所以没有使用 */
70
- const handleSearch = (q: string) => {
71
- const paramsData = {
72
- [`${paramsKey}`]: q,
73
- ...initialParams,
74
- }
75
- axios.get(`${url}?${stringify(paramsData)}`, {headers}).then(async (res: any) => {
76
- const resData = res?.data || [];
77
- let coverData;
78
-
79
- if(resData.status === '0' || resData.code === '000000') {
80
- const { data } = resData;
81
- if (remoteSource.converter) {
82
- coverData = await remoteSource.converter({ data: [data] })
83
- } else {
84
- const dataList = (data && Array.isArray(data)) ? data : (data && [data] || []);
85
- coverData = dataList.length && dataList.map((ites: any) => mapSearchTree(ites)) || [];
86
- }
87
- } else {
88
- coverData = []
89
- }
90
-
91
- setTreeData(coverData);
92
- ctx?.form?.setFieldSource(ctx.name, coverData);
93
- });
94
- };
95
-
96
- const formatData = (value: any) => {
97
- if (labelInValue) {
98
- const formatResult = multiple||treeCheckable ? value.map((i: any) => ({...i, key: i.value})) : { ...value, key: value?.value };
99
- return formatResult
100
- } else {
101
- const formatResult = multiple||treeCheckable ? value.map((i: any) => (i?.value || i)) : (_.get(value?.[0], 'value') || value)
102
- return formatResult
103
- }
104
- }
105
- const parallelData = (data: any,result: any) => {
106
- data.forEach((i: any) => {
107
- result.push(i);
108
- if (i.children) {
109
- parallelData(i.children, result);
110
- }
111
- });
112
- return result;
113
- }
114
- const getSelectItem = (tData: any,selectValue: any) => {
115
- const handleList = tData||[];
116
- let result = [];
117
- if(labelInValue) {
118
- result = multiple||treeCheckable ? (selectValue?.map((i: any) => {
119
- if(handleList.some((s: any) => s.key == i.value)){
120
- return handleList.find((s: any) => s.key == i.value)
121
- }
122
- }) || []) : (handleList?.find((s: any) => s.key == selectValue?.value)||{})
123
- } else {
124
- const cValue = _.get(selectValue?.[0], 'value', selectValue);
125
- result = multiple||treeCheckable ? (selectValue?.map((i: any) => {
126
- if(handleList.some((s: any) => s.key == i)){
127
- return handleList.find((s: any) => s.key == i)
128
- }
129
- }) || []) : (handleList?.find((s: any) => s.key == cValue)||{})
130
- }
131
- return result;
132
- }
133
- const handleChange = (data: any, dataName: any) => {
134
- const handleData = formatData(data);
135
- // 获取选中树节点当条数据,并返回给调用业务
136
- const parallelTreeData = parallelData(treeData,[])
137
- const currentItem = getSelectItem(parallelTreeData,data)
138
- onChange(handleData,data,currentItem,parallelTreeData);
139
- onChangeName && onChangeName(dataName);
140
- getTreeData && getTreeData(treeData); // 把树节点暴露出去
141
- ctx?.form?.setFieldValue(ctx.name, handleData);
142
- };
143
-
144
- useEffect(() => {
145
- handleSearch(initialValue);
146
- }, []);
147
-
148
- const maxTagPlaceholder = (selectedValues: any) => {
149
- const onClose = (e: any,item: any) => {
150
- e.preventDefault();
151
- const newValue = labelInValue ? JSON.parse(JSON.stringify(value)).filter((i: any) => i.value !== item.value): JSON.parse(JSON.stringify(value)).filter((i: any) => i !== item.value)
152
- const newValueName = labelInValue ? null: JSON.parse(JSON.stringify(valueName)).filter((i: any) => i !== item.label)
153
- handleChange(newValue, newValueName);
154
- }
155
- return (
156
- <Tooltip title={selectedValues.map((i: any) => (
157
- <Tag
158
- closable={true}
159
- onClose={(e) => onClose(e,i)}
160
- style={{ marginRight: 3, background: '#f5f5f5', height: '24px', border: '1px solid #f0f0f0' }}
161
- >
162
- {i.label}
163
- </Tag>
164
- ))}>
165
- {`+ ${selectedValues?.length}`}
166
- </Tooltip>
167
- )
168
- }
169
-
170
- return (
171
- <div className={'tree_search_select'}>
172
- <TreeSelect
173
- {...restProps}
174
- treeCheckable={treeCheckable}
175
- maxTagCount={maxTagCount}
176
- showSearch={showSearch}
177
- style={style}
178
- value={value}
179
- dropdownStyle={{ maxHeight: 400, maxWidth: 100, overflow: 'auto' }}
180
- treeData={treeData}
181
- placeholder={placeholder}
182
- allowClear={allowClear}
183
- labelInValue={labelInValue}
184
- showArrow={showArrow}
185
- showCheckedStrategy={showCheckedStrategy}
186
- treeNodeFilterProp={'title'}
187
- treeDefaultExpandAll
188
- multiple={multiple} // 支持多选(当设置 treeCheckable 时自动变为 true)
189
- maxTagPlaceholder={maxTagPlaceholder}
190
- onChange={handleChange}
191
- disabled={disabled || mode==='view' || ctx?.mode === 'view'}
192
- getPopupContainer={(triggerNode) => (getPopupContainer && getPopupContainer(triggerNode)) || document.body}
193
- >
194
- </TreeSelect>
195
- </div>
196
- );
197
- };
198
-
199
- export default TreeSearchSelect;
1
+ import React, { useState, useEffect } from 'react';
2
+ import { TreeSelect, Tooltip, Tag } from 'antd';
3
+ import axios from 'axios';
4
+ import { stringify } from 'querystring';
5
+ import _ from "lodash"
6
+
7
+ const TreeSearchSelect = (props: any) => {
8
+ const [treeData, setTreeData] = useState([]);
9
+ const {
10
+ ctx, // ctx中有自己的name
11
+ value,
12
+ valueName, // 当labelInValue为true时,值为null
13
+ onChange,
14
+ onChangeName, // 当labelInValue为true时,此函数无意义,故无需传
15
+ placeholder,
16
+ remoteSource,
17
+ initialValue,
18
+ treeCheckable = false,
19
+ showSearch = true,
20
+ maxTagCount = 1,
21
+ multiple = false,
22
+ isChoose = false, // 默认父节点不可选;传true则不限制
23
+ rootDisabled = false, // 默认根节点可选
24
+ mode,
25
+ getPopupContainer,
26
+ labelInValue = false,
27
+ showArrow = true,
28
+ allowClear = true,
29
+ showCheckedStrategy = props?.treeCheckStrictly ? TreeSelect.SHOW_ALL : TreeSelect.SHOW_PARENT,
30
+ style = { width: '100%' },
31
+ getTreeData,
32
+ disabled,
33
+ ...restProps
34
+ } = props;
35
+
36
+ const {
37
+ url,
38
+ headers,
39
+ paramsKey = 'qp-name-like',
40
+ resKeyValue = ['id', 'name'],
41
+ initialParams = {},
42
+ } = remoteSource;
43
+
44
+ const mapSearchTree = (treeDataItem: any) => {
45
+ const haveChildren = Array.isArray(treeDataItem.children) && treeDataItem.children.length > 0; // 盘算是否为父节点
46
+ const isRoot = treeDataItem?.id == '0'; // 判断是否为根节点
47
+ return {
48
+ title: treeDataItem[resKeyValue[1]],
49
+ key: treeDataItem[resKeyValue[0]],
50
+ value: treeDataItem[resKeyValue[0]],
51
+ parentId: treeDataItem.parent,
52
+ data: { ...treeDataItem },
53
+ isLeaf: !haveChildren,
54
+ disabled: isDisabled(haveChildren,isRoot),
55
+ children: haveChildren ? treeDataItem.children.map((i: any) => mapSearchTree(i)) : [],
56
+ };
57
+ };
58
+
59
+ const isDisabled = (isParent: boolean,isRoot: boolean) => {
60
+ if (isChoose) {
61
+ if(rootDisabled && isRoot){
62
+ return rootDisabled
63
+ }
64
+ return false;
65
+ }
66
+ return isParent;
67
+ }
68
+
69
+ /* 实时查询 但是目前用的直接是完整数据源, 所以没有使用 */
70
+ const handleSearch = (q: string) => {
71
+ const paramsData = {
72
+ [`${paramsKey}`]: q,
73
+ ...initialParams,
74
+ }
75
+ axios.get(`${url}?${stringify(paramsData)}`, {headers}).then(async (res: any) => {
76
+ const resData = res?.data || [];
77
+ let coverData;
78
+
79
+ if(resData.status === '0' || resData.code === '000000') {
80
+ const { data } = resData;
81
+ if (remoteSource.converter) {
82
+ coverData = await remoteSource.converter({ data: [data] })
83
+ } else {
84
+ const dataList = (data && Array.isArray(data)) ? data : (data && [data] || []);
85
+ coverData = dataList.length && dataList.map((ites: any) => mapSearchTree(ites)) || [];
86
+ }
87
+ } else {
88
+ coverData = []
89
+ }
90
+
91
+ setTreeData(coverData);
92
+ ctx?.form?.setFieldSource(ctx.name, coverData);
93
+ });
94
+ };
95
+
96
+ const formatData = (value: any) => {
97
+ if (labelInValue) {
98
+ const formatResult = multiple||treeCheckable ? value.map((i: any) => ({...i, key: i.value})) : { ...value, key: value?.value };
99
+ return formatResult
100
+ } else {
101
+ const formatResult = multiple||treeCheckable ? value.map((i: any) => (i?.value || i)) : (_.get(value?.[0], 'value') || value)
102
+ return formatResult
103
+ }
104
+ }
105
+ const parallelData = (data: any,result: any) => {
106
+ data.forEach((i: any) => {
107
+ result.push(i);
108
+ if (i.children) {
109
+ parallelData(i.children, result);
110
+ }
111
+ });
112
+ return result;
113
+ }
114
+ const getSelectItem = (tData: any,selectValue: any) => {
115
+ const handleList = tData||[];
116
+ let result = [];
117
+ if(labelInValue) {
118
+ result = multiple||treeCheckable ? (selectValue?.map((i: any) => {
119
+ if(handleList.some((s: any) => s.key == i.value)){
120
+ return handleList.find((s: any) => s.key == i.value)
121
+ }
122
+ }) || []) : (handleList?.find((s: any) => s.key == selectValue?.value)||{})
123
+ } else {
124
+ const cValue = _.get(selectValue?.[0], 'value', selectValue);
125
+ result = multiple||treeCheckable ? (selectValue?.map((i: any) => {
126
+ if(handleList.some((s: any) => s.key == i)){
127
+ return handleList.find((s: any) => s.key == i)
128
+ }
129
+ }) || []) : (handleList?.find((s: any) => s.key == cValue)||{})
130
+ }
131
+ return result;
132
+ }
133
+ const handleChange = (data: any, dataName: any) => {
134
+ const handleData = formatData(data);
135
+ // 获取选中树节点当条数据,并返回给调用业务
136
+ const parallelTreeData = parallelData(treeData,[])
137
+ const currentItem = getSelectItem(parallelTreeData,data)
138
+ onChange(handleData,data,currentItem,parallelTreeData);
139
+ onChangeName && onChangeName(dataName);
140
+ getTreeData && getTreeData(treeData); // 把树节点暴露出去
141
+ ctx?.form?.setFieldValue(ctx.name, handleData);
142
+ };
143
+
144
+ useEffect(() => {
145
+ handleSearch(initialValue);
146
+ }, []);
147
+
148
+ const maxTagPlaceholder = (selectedValues: any) => {
149
+ const onClose = (e: any,item: any) => {
150
+ e.preventDefault();
151
+ const newValue = labelInValue ? JSON.parse(JSON.stringify(value)).filter((i: any) => i.value !== item.value): JSON.parse(JSON.stringify(value)).filter((i: any) => i !== item.value)
152
+ const newValueName = labelInValue ? null: JSON.parse(JSON.stringify(valueName)).filter((i: any) => i !== item.label)
153
+ handleChange(newValue, newValueName);
154
+ }
155
+ return (
156
+ <Tooltip title={selectedValues.map((i: any) => (
157
+ <Tag
158
+ closable={true}
159
+ onClose={(e) => onClose(e,i)}
160
+ style={{ marginRight: 3, background: '#f5f5f5', height: '24px', border: '1px solid #f0f0f0' }}
161
+ >
162
+ {i.label}
163
+ </Tag>
164
+ ))}>
165
+ {`+ ${selectedValues?.length}`}
166
+ </Tooltip>
167
+ )
168
+ }
169
+
170
+ return (
171
+ <div className={'tree_search_select'}>
172
+ <TreeSelect
173
+ {...restProps}
174
+ treeCheckable={treeCheckable}
175
+ maxTagCount={maxTagCount}
176
+ showSearch={showSearch}
177
+ style={style}
178
+ value={value}
179
+ dropdownStyle={{ maxHeight: 400, maxWidth: 100, overflow: 'auto' }}
180
+ treeData={treeData}
181
+ placeholder={placeholder}
182
+ allowClear={allowClear}
183
+ labelInValue={labelInValue}
184
+ showArrow={showArrow}
185
+ showCheckedStrategy={showCheckedStrategy}
186
+ treeNodeFilterProp={'title'}
187
+ treeDefaultExpandAll
188
+ multiple={multiple} // 支持多选(当设置 treeCheckable 时自动变为 true)
189
+ maxTagPlaceholder={maxTagPlaceholder}
190
+ onChange={handleChange}
191
+ disabled={disabled || mode==='view' || ctx?.mode === 'view'}
192
+ getPopupContainer={(triggerNode) => (getPopupContainer && getPopupContainer(triggerNode)) || document.body}
193
+ >
194
+ </TreeSelect>
195
+ </div>
196
+ );
197
+ };
198
+
199
+ export default TreeSearchSelect;