@bit-sun/business-component 2.3.21 → 2.3.23

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 (202) 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/BsLayouts/Components/CustomerMenu/MenuSetting/index.d.ts +1 -1
  9. package/dist/components/Business/BsLayouts/Components/CustomerMenu/index.d.ts +1 -1
  10. package/dist/components/Business/SearchSelect/index.d.ts +1 -1
  11. package/dist/components/Business/moreTreeTable/FixedScrollBar.d.ts +1 -1
  12. package/dist/components/Functional/AddSelect/helps.d.ts +13 -0
  13. package/dist/components/Functional/SearchSelect/index.d.ts +1 -1
  14. package/dist/index.esm.js +1338 -1258
  15. package/dist/index.js +1344 -1264
  16. package/dist/utils/utils.d.ts +1 -1
  17. package/docs/index.md +21 -21
  18. package/lib/assets/drag.svg +17 -17
  19. package/lib/assets/exportFail.svg +37 -37
  20. package/lib/assets/exportProcessing.svg +28 -28
  21. package/lib/assets/exportSuccess.svg +34 -34
  22. package/lib/assets/label_icon_bottom.svg +25 -25
  23. package/lib/assets/upExport.svg +22 -22
  24. package/package.json +78 -78
  25. package/src/assets/32.svg +27 -27
  26. package/src/assets/addIcon.svg +17 -17
  27. package/src/assets/allfunc.svg +27 -27
  28. package/src/assets/arrowRight.svg +24 -24
  29. package/src/assets/btn-delete.svg +29 -29
  30. package/src/assets/btn-edit.svg +19 -19
  31. package/src/assets/btn-more.svg +17 -17
  32. package/src/assets/btn-submit.svg +19 -19
  33. package/src/assets/caidan.svg +11 -11
  34. package/src/assets/close.svg +26 -26
  35. package/src/assets/drag.svg +17 -17
  36. package/src/assets/exportFail.svg +37 -37
  37. package/src/assets/exportProcessing.svg +28 -28
  38. package/src/assets/exportSuccess.svg +34 -34
  39. package/src/assets/fixed-left-active.svg +11 -11
  40. package/src/assets/fixed-left.svg +15 -15
  41. package/src/assets/fixed-right-active.svg +11 -11
  42. package/src/assets/fixed-right.svg +15 -15
  43. package/src/assets/guanbi.svg +15 -15
  44. package/src/assets/icon-quanping.svg +15 -15
  45. package/src/assets/icon-shezhi.svg +17 -17
  46. package/src/assets/label_icon_bottom.svg +25 -25
  47. package/src/assets/list-no-img.svg +21 -21
  48. package/src/assets/morentouxiang-32.svg +23 -23
  49. package/src/assets/scanning.svg +24 -24
  50. package/src/assets/upExport.svg +22 -22
  51. package/src/common/ENUM.ts +41 -41
  52. package/src/components/Business/AddSelectBusiness/index.md +162 -162
  53. package/src/components/Business/AddSelectBusiness/index.tsx +1060 -895
  54. package/src/components/Business/BsLayouts/Components/AllFunc/drawContent.tsx +111 -111
  55. package/src/components/Business/BsLayouts/Components/AllFunc/index.less +153 -153
  56. package/src/components/Business/BsLayouts/Components/AllFunc/index.tsx +70 -70
  57. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.less +90 -90
  58. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.tsx +37 -37
  59. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/leftTree.tsx +242 -242
  60. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/rightTree.tsx +384 -384
  61. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/DrawContent.tsx +285 -285
  62. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/customMenuHeader.tsx +74 -74
  63. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/drawContent.less +170 -170
  64. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.less +64 -64
  65. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.tsx +153 -153
  66. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.less +72 -72
  67. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.tsx +157 -157
  68. package/src/components/Business/BsLayouts/Components/RightContent/LoginModal.tsx +85 -85
  69. package/src/components/Business/BsLayouts/Components/RightContent/home.less +218 -218
  70. package/src/components/Business/BsLayouts/Components/RightContent/index.tsx +155 -155
  71. package/src/components/Business/BsLayouts/Components/SearchFunc/index.less +160 -160
  72. package/src/components/Business/BsLayouts/Components/SearchFunc/index.tsx +75 -75
  73. package/src/components/Business/BsLayouts/index.less +79 -79
  74. package/src/components/Business/BsLayouts/index.tsx +1484 -1484
  75. package/src/components/Business/BsLayouts/service.ts +10 -10
  76. package/src/components/Business/BsLayouts/utils.tsx +203 -203
  77. package/src/components/Business/BsSulaQueryTable/SearchItemSetting.tsx +564 -564
  78. package/src/components/Business/BsSulaQueryTable/index.less +221 -221
  79. package/src/components/Business/BsSulaQueryTable/index.tsx +535 -535
  80. package/src/components/Business/BsSulaQueryTable/setting.tsx +852 -852
  81. package/src/components/Business/BsSulaQueryTable/utils.less +65 -65
  82. package/src/components/Business/BsSulaQueryTable/utils.tsx +690 -690
  83. package/src/components/Business/CommodityEntry/index.md +70 -70
  84. package/src/components/Business/CommodityEntry/index.tsx +80 -80
  85. package/src/components/Business/CommonAlert/index.tsx +23 -23
  86. package/src/components/Business/CommonGuideWrapper/index.less +111 -111
  87. package/src/components/Business/CommonGuideWrapper/index.md +39 -39
  88. package/src/components/Business/CommonGuideWrapper/index.tsx +83 -83
  89. package/src/components/Business/DetailPageWrapper/index.less +79 -79
  90. package/src/components/Business/DetailPageWrapper/index.tsx +313 -313
  91. package/src/components/Business/DetailPageWrapper/utils.tsx +100 -100
  92. package/src/components/Business/HomePageWrapper/index.less +33 -33
  93. package/src/components/Business/HomePageWrapper/index.md +45 -45
  94. package/src/components/Business/HomePageWrapper/index.tsx +162 -162
  95. package/src/components/Business/JsonQueryTable/components/FieldsModifyModal.tsx +824 -824
  96. package/src/components/Business/JsonQueryTable/components/FieldsSettingsTable.tsx +205 -205
  97. package/src/components/Business/JsonQueryTable/components/Formula.tsx +205 -205
  98. package/src/components/Business/JsonQueryTable/components/MaintainOptions.tsx +127 -127
  99. package/src/components/Business/JsonQueryTable/configButton/index.js +20 -20
  100. package/src/components/Business/JsonQueryTable/configTree/component/compactArrayView.js +25 -25
  101. package/src/components/Business/JsonQueryTable/configTree/component/compactObjectView.js +30 -30
  102. package/src/components/Business/JsonQueryTable/configTree/index.js +82 -82
  103. package/src/components/Business/JsonQueryTable/configTree/index.less +44 -44
  104. package/src/components/Business/JsonQueryTable/configTree/parser/highlight.js +57 -57
  105. package/src/components/Business/JsonQueryTable/configTree/parser/index.js +124 -124
  106. package/src/components/Business/JsonQueryTable/configTree/render/iconRender.js +29 -29
  107. package/src/components/Business/JsonQueryTable/configTree/render/nameRender.js +22 -22
  108. package/src/components/Business/JsonQueryTable/configTree/treeNode.js +116 -116
  109. package/src/components/Business/JsonQueryTable/drawer/index.tsx +12 -12
  110. package/src/components/Business/JsonQueryTable/function.ts +62 -62
  111. package/src/components/Business/JsonQueryTable/index.less +16 -16
  112. package/src/components/Business/JsonQueryTable/index.md +328 -328
  113. package/src/components/Business/JsonQueryTable/index.tsx +535 -535
  114. package/src/components/Business/JsonQueryTable/jsonEditor/index.js +346 -346
  115. package/src/components/Business/JsonQueryTable/jsonEditor/index.less +22 -22
  116. package/src/components/Business/JsonQueryTable/jsonEditor/lint/basicType.js +147 -147
  117. package/src/components/Business/JsonQueryTable/jsonEditor/lint/index.js +389 -389
  118. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/actions.js +118 -118
  119. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/dependency.js +22 -22
  120. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/index.js +21 -21
  121. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/request.js +65 -65
  122. package/src/components/Business/JsonQueryTable/static.ts +390 -390
  123. package/src/components/Business/SearchSelect/BusinessUtils.ts +1762 -1762
  124. package/src/components/Business/SearchSelect/common.ts +75 -75
  125. package/src/components/Business/SearchSelect/index.md +1329 -1329
  126. package/src/components/Business/SearchSelect/index.tsx +55 -55
  127. package/src/components/Business/SearchSelect/utils.ts +100 -100
  128. package/src/components/Business/StateFlow/index.less +130 -130
  129. package/src/components/Business/StateFlow/index.md +60 -60
  130. package/src/components/Business/StateFlow/index.tsx +29 -29
  131. package/src/components/Business/TreeSearchSelect/index.md +156 -156
  132. package/src/components/Business/TreeSearchSelect/index.tsx +33 -33
  133. package/src/components/Business/TreeSearchSelect/utils.ts +75 -75
  134. package/src/components/Business/columnSettingTable/columnSetting.tsx +764 -764
  135. package/src/components/Business/columnSettingTable/index.less +247 -247
  136. package/src/components/Business/columnSettingTable/index.md +357 -357
  137. package/src/components/Business/columnSettingTable/index.tsx +232 -232
  138. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +240 -240
  139. package/src/components/Business/columnSettingTable/utils.tsx +71 -71
  140. package/src/components/Business/moreTreeTable/FixedScrollBar.tsx +87 -87
  141. package/src/components/Business/moreTreeTable/hooks/useSticky.ts +21 -21
  142. package/src/components/Business/moreTreeTable/index.less +99 -99
  143. package/src/components/Business/moreTreeTable/index.md +448 -448
  144. package/src/components/Business/moreTreeTable/index.tsx +387 -387
  145. package/src/components/Business/moreTreeTable/utils.ts +126 -126
  146. package/src/components/Functional/AddSelect/helps.ts +79 -14
  147. package/src/components/Functional/AddSelect/index.less +367 -367
  148. package/src/components/Functional/AddSelect/index.md +155 -155
  149. package/src/components/Functional/AddSelect/index.tsx +1170 -1282
  150. package/src/components/Functional/BillEntry/index.less +371 -371
  151. package/src/components/Functional/BillEntry/index.md +39 -39
  152. package/src/components/Functional/BillEntry/index.tsx +772 -772
  153. package/src/components/Functional/BsAntdSula/BsCascader/index.md +62 -62
  154. package/src/components/Functional/BsAntdSula/BsCascader/index.tsx +178 -178
  155. package/src/components/Functional/BsAntdSula/index.ts +2 -2
  156. package/src/components/Functional/DataImport/index.less +63 -63
  157. package/src/components/Functional/DataImport/index.md +44 -44
  158. package/src/components/Functional/DataImport/index.tsx +695 -695
  159. package/src/components/Functional/DataValidation/index.less +63 -63
  160. package/src/components/Functional/DataValidation/index.md +39 -39
  161. package/src/components/Functional/DataValidation/index.tsx +687 -687
  162. package/src/components/Functional/EllipsisTooltip/index.d.ts +5 -5
  163. package/src/components/Functional/EllipsisTooltip/index.js +36 -36
  164. package/src/components/Functional/EllipsisTooltip/index.md +30 -30
  165. package/src/components/Functional/ExportFunctions/ExportIcon/index.md +37 -37
  166. package/src/components/Functional/ExportFunctions/ExportIcon/index.tsx +59 -59
  167. package/src/components/Functional/QueryMutipleInput/index.less +37 -37
  168. package/src/components/Functional/QueryMutipleInput/index.md +33 -33
  169. package/src/components/Functional/QueryMutipleInput/index.tsx +128 -128
  170. package/src/components/Functional/SearchSelect/index.less +115 -115
  171. package/src/components/Functional/SearchSelect/index.md +141 -141
  172. package/src/components/Functional/SearchSelect/index.tsx +879 -879
  173. package/src/components/Functional/SearchSelect/utils.ts +3 -3
  174. package/src/components/Functional/TreeSearchSelect/index.md +47 -47
  175. package/src/components/Functional/TreeSearchSelect/index.tsx +199 -199
  176. package/src/components/Solution/RuleComponent/Formula.tsx +335 -335
  177. package/src/components/Solution/RuleComponent/index.d.ts +29 -29
  178. package/src/components/Solution/RuleComponent/index.js +2032 -2032
  179. package/src/components/Solution/RuleComponent/index.less +230 -230
  180. package/src/components/Solution/RuleComponent/renderSpecificAction.js +99 -99
  181. package/src/components/Solution/RuleComponent/ruleFiled.js +2107 -2107
  182. package/src/components/Solution/RuleComponent/services.ts +13 -13
  183. package/src/components/Solution/RuleComponent/util.js +139 -139
  184. package/src/index.ts +38 -38
  185. package/src/plugin/TableColumnSetting/index.less +247 -247
  186. package/src/plugin/TableColumnSetting/index.md +50 -50
  187. package/src/plugin/TableColumnSetting/index.tsx +724 -724
  188. package/src/plugin/TableColumnSetting/utils.ts +19 -19
  189. package/src/styles/bsDefault.less +1912 -1912
  190. package/src/utils/CheckOneUser/index.md +39 -39
  191. package/src/utils/CheckOneUser/index.ts +51 -51
  192. package/src/utils/LocalstorageUtils.ts +95 -95
  193. package/src/utils/TableUtils.tsx +18 -18
  194. package/src/utils/checkUtils.ts +39 -39
  195. package/src/utils/enumConfig.ts +11 -11
  196. package/src/utils/getFormMode.js +12 -12
  197. package/src/utils/index.ts +4 -4
  198. package/src/utils/requestUtils.ts +34 -34
  199. package/src/utils/serialize.js +7 -7
  200. package/src/utils/utils.ts +212 -212
  201. package/tsconfig.json +29 -29
  202. package/typings.d.ts +4 -4
@@ -1,155 +1,155 @@
1
- ---
2
- nav:
3
- title: '组件'
4
- order: 1
5
- group:
6
- title: 功能组件
7
- order: 0
8
- title: 添加选择器
9
- order: 3
10
- ---
11
-
12
- ## AddSelect
13
-
14
- Demo:
15
-
16
- ```tsx
17
- import React, { useState } from 'react';
18
- import { AddSelect } from '../../../index';
19
-
20
- export default () => {
21
- const selectProps = {
22
- mode: 'multiple',
23
- }
24
- const [value, setValue] = useState(selectProps?.mode ? [] : null);
25
- const props = {
26
- value,
27
- // labelInValue: true, // 非必填 默认为false
28
- requestConfig: {
29
- url: `/items/sku/pager/v2`,
30
- filter: 'qp-name-like', // 过滤参数 支持'qp-name-like'和['qp-name-like', 'qp-code-like']两种结构
31
- otherParams: {
32
- 'qp-combination-eq': false,
33
- 'qp-approveStatus-eq': 1,
34
- 'qp-status-eq': 1,
35
- }, // 默认参数
36
- mappingTextField: 'name',
37
- mappingValueField: 'skuCode',
38
- },
39
- selectProps,
40
- onChange: (value: any) => {
41
- console.log(value)
42
- setValue(value)
43
- },
44
- onSaveCallback: (rows) => {
45
- console.log('save call', rows);
46
- // return Promise.resolve(true);
47
- // return Promise.reject('FAILE')
48
- },
49
- tableCode: 'test1111'
50
- };
51
- const DictionaryUC000013 = [{ text: '共享', value: '10' }, { text: '私有', value: '20' }]
52
- const modalTableProps = {
53
- modalTableTitle: '选择商品',
54
- tableSearchForm: [
55
- { name: 'qp-name-like', label: 'SKU名称' }, // field: { type: 'input', props: { placeholder: '8888'}}
56
- { name: 'qp-code-like', label: 'SKU编码' },
57
- { name: 'qp-brandId-in', type: 'select', label: '品牌', field: {
58
- type: 'select',
59
- props: {
60
- mode: 'multiple',
61
- notFoundContent: '暂无数据',
62
- allowClear: true,
63
- showSearch: true,
64
- showArrow: true,
65
- maxTagCount: 1,
66
- optionFilterProp: 'children',
67
- filterOption: (input: string, option: { props: { children: string } }) =>
68
- option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0,
69
- },
70
- } },
71
- { name: 'qp-categoryId-in', type: 'treeSelect', label: '类目', field: {
72
- type: 'treeSelect',
73
- props: {
74
- treeData: [],
75
- treeCheckable: true,
76
- showSearch: true,
77
- allowClear: true,
78
- showArrow: true,
79
- treeNodeFilterProp: 'title',
80
- treeDefaultExpandAll: true,
81
- maxTagCount: 1,
82
- placeholder: '请选择',
83
- style: {
84
- width: '100%',
85
- },
86
- dropdownStyle: { maxHeight: 400, maxWidth: 100, overflow: 'auto' }
87
- },
88
- } }
89
- ],
90
- tableColumns: [
91
- {
92
- title: '商品编码',
93
- width: 150,
94
- dataIndex: 'skuCode',
95
- },
96
- {
97
- title: '商品名称',
98
- width: 250,
99
- dataIndex: 'name',
100
- },
101
- {
102
- title: '归属集团',
103
- width: 150,
104
- dataIndex: 'conglomerateName',
105
- },
106
- {
107
- title: '归属法人公司',
108
- width: 150,
109
- dataIndex: 'legalCompanyName',
110
- },
111
- ],
112
- selectColumn: [
113
- {
114
- title: '商品编码',
115
- width: 150,
116
- dataIndex: 'skuCode',
117
- },
118
- {
119
- title: '商品名称',
120
- width: 250,
121
- dataIndex: 'name',
122
- },
123
- {
124
- title: '数量',
125
- width: 150,
126
- isInputItem: true,
127
- dataIndex: 'count',
128
- },
129
- {
130
- title: '价格',
131
- width: 150,
132
- dataIndex: 'price',
133
- isInputItem: true,
134
- },
135
- {
136
- title: '折扣',
137
- width: 150,
138
- dataIndex: 'sales',
139
- isInputItem: true,
140
- }
141
- ]
142
- }
143
-
144
- return (
145
- <div>
146
- <AddSelect
147
- {...props}
148
- modalTableProps={modalTableProps}
149
- />
150
- </div>
151
- );
152
- };
153
- ```
154
-
155
- 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: 3
10
+ ---
11
+
12
+ ## AddSelect
13
+
14
+ Demo:
15
+
16
+ ```tsx
17
+ import React, { useState } from 'react';
18
+ import { AddSelect } from '../../../index';
19
+
20
+ export default () => {
21
+ const selectProps = {
22
+ mode: 'multiple',
23
+ }
24
+ const [value, setValue] = useState(selectProps?.mode ? [] : null);
25
+ const props = {
26
+ value,
27
+ // labelInValue: true, // 非必填 默认为false
28
+ requestConfig: {
29
+ url: `/items/sku/pager/v2`,
30
+ filter: 'qp-name-like', // 过滤参数 支持'qp-name-like'和['qp-name-like', 'qp-code-like']两种结构
31
+ otherParams: {
32
+ 'qp-combination-eq': false,
33
+ 'qp-approveStatus-eq': 1,
34
+ 'qp-status-eq': 1,
35
+ }, // 默认参数
36
+ mappingTextField: 'name',
37
+ mappingValueField: 'skuCode',
38
+ },
39
+ selectProps,
40
+ onChange: (value: any) => {
41
+ console.log(value)
42
+ setValue(value)
43
+ },
44
+ onSaveCallback: (rows) => {
45
+ console.log('save call', rows);
46
+ // return Promise.resolve(true);
47
+ // return Promise.reject('FAILE')
48
+ },
49
+ tableCode: 'test1111'
50
+ };
51
+ const DictionaryUC000013 = [{ text: '共享', value: '10' }, { text: '私有', value: '20' }]
52
+ const modalTableProps = {
53
+ modalTableTitle: '选择商品',
54
+ tableSearchForm: [
55
+ { name: 'qp-name-like', label: 'SKU名称' }, // field: { type: 'input', props: { placeholder: '8888'}}
56
+ { name: 'qp-code-like', label: 'SKU编码' },
57
+ { name: 'qp-brandId-in', type: 'select', label: '品牌', field: {
58
+ type: 'select',
59
+ props: {
60
+ mode: 'multiple',
61
+ notFoundContent: '暂无数据',
62
+ allowClear: true,
63
+ showSearch: true,
64
+ showArrow: true,
65
+ maxTagCount: 1,
66
+ optionFilterProp: 'children',
67
+ filterOption: (input: string, option: { props: { children: string } }) =>
68
+ option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0,
69
+ },
70
+ } },
71
+ { name: 'qp-categoryId-in', type: 'treeSelect', label: '类目', field: {
72
+ type: 'treeSelect',
73
+ props: {
74
+ treeData: [],
75
+ treeCheckable: true,
76
+ showSearch: true,
77
+ allowClear: true,
78
+ showArrow: true,
79
+ treeNodeFilterProp: 'title',
80
+ treeDefaultExpandAll: true,
81
+ maxTagCount: 1,
82
+ placeholder: '请选择',
83
+ style: {
84
+ width: '100%',
85
+ },
86
+ dropdownStyle: { maxHeight: 400, maxWidth: 100, overflow: 'auto' }
87
+ },
88
+ } }
89
+ ],
90
+ tableColumns: [
91
+ {
92
+ title: '商品编码',
93
+ width: 150,
94
+ dataIndex: 'skuCode',
95
+ },
96
+ {
97
+ title: '商品名称',
98
+ width: 250,
99
+ dataIndex: 'name',
100
+ },
101
+ {
102
+ title: '归属集团',
103
+ width: 150,
104
+ dataIndex: 'conglomerateName',
105
+ },
106
+ {
107
+ title: '归属法人公司',
108
+ width: 150,
109
+ dataIndex: 'legalCompanyName',
110
+ },
111
+ ],
112
+ selectColumn: [
113
+ {
114
+ title: '商品编码',
115
+ width: 150,
116
+ dataIndex: 'skuCode',
117
+ },
118
+ {
119
+ title: '商品名称',
120
+ width: 250,
121
+ dataIndex: 'name',
122
+ },
123
+ {
124
+ title: '数量',
125
+ width: 150,
126
+ isInputItem: true,
127
+ dataIndex: 'count',
128
+ },
129
+ {
130
+ title: '价格',
131
+ width: 150,
132
+ dataIndex: 'price',
133
+ isInputItem: true,
134
+ },
135
+ {
136
+ title: '折扣',
137
+ width: 150,
138
+ dataIndex: 'sales',
139
+ isInputItem: true,
140
+ }
141
+ ]
142
+ }
143
+
144
+ return (
145
+ <div>
146
+ <AddSelect
147
+ {...props}
148
+ modalTableProps={modalTableProps}
149
+ />
150
+ </div>
151
+ );
152
+ };
153
+ ```
154
+
155
+ More skills for writing demo: https://d.umijs.org/guide/demo-principle