@bit-sun/business-component 2.1.4 → 2.1.6

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 (137) hide show
  1. package/.editorconfig +16 -16
  2. package/.fatherrc.ts +5 -5
  3. package/.gitlab-ci.yml +174 -174
  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/Functional/SearchSelect/utils.d.ts +1 -0
  9. package/dist/index.esm.js +9257 -9242
  10. package/dist/index.js +9256 -9241
  11. package/docs/index.md +21 -21
  12. package/lib/assets/drag.svg +17 -17
  13. package/lib/assets/exportFail.svg +37 -37
  14. package/lib/assets/exportProcessing.svg +28 -28
  15. package/lib/assets/exportSuccess.svg +34 -34
  16. package/lib/assets/label_icon_bottom.svg +25 -25
  17. package/lib/assets/upExport.svg +22 -22
  18. package/package.json +71 -71
  19. package/src/assets/32.svg +27 -27
  20. package/src/assets/addIcon.svg +17 -17
  21. package/src/assets/allfunc.svg +27 -27
  22. package/src/assets/arrowRight.svg +24 -24
  23. package/src/assets/btn-delete.svg +29 -29
  24. package/src/assets/btn-edit.svg +19 -19
  25. package/src/assets/btn-more.svg +17 -17
  26. package/src/assets/btn-submit.svg +19 -19
  27. package/src/assets/caidan.svg +11 -11
  28. package/src/assets/close.svg +26 -26
  29. package/src/assets/drag.svg +17 -17
  30. package/src/assets/exportFail.svg +37 -37
  31. package/src/assets/exportProcessing.svg +28 -28
  32. package/src/assets/exportSuccess.svg +34 -34
  33. package/src/assets/fixed-left-active.svg +11 -11
  34. package/src/assets/fixed-left.svg +15 -15
  35. package/src/assets/fixed-right-active.svg +11 -11
  36. package/src/assets/fixed-right.svg +15 -15
  37. package/src/assets/guanbi.svg +15 -15
  38. package/src/assets/icon-quanping.svg +15 -15
  39. package/src/assets/icon-shezhi.svg +17 -17
  40. package/src/assets/label_icon_bottom.svg +25 -25
  41. package/src/assets/list-no-img.svg +21 -21
  42. package/src/assets/morentouxiang-32.svg +23 -23
  43. package/src/assets/scanning.svg +24 -24
  44. package/src/assets/upExport.svg +22 -22
  45. package/src/components/Business/AddSelectBusiness/index.md +41 -41
  46. package/src/components/Business/AddSelectBusiness/index.tsx +290 -290
  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 +156 -156
  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 +1469 -1469
  68. package/src/components/Business/BsLayouts/service.ts +10 -10
  69. package/src/components/Business/BsLayouts/utils.tsx +210 -210
  70. package/src/components/Business/BsSulaQueryTable/index.less +219 -219
  71. package/src/components/Business/BsSulaQueryTable/index.tsx +505 -505
  72. package/src/components/Business/BsSulaQueryTable/setting.tsx +799 -799
  73. package/src/components/Business/BsSulaQueryTable/utils.less +65 -65
  74. package/src/components/Business/BsSulaQueryTable/utils.tsx +688 -688
  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 +335 -335
  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/SearchSelect/BusinessUtils.ts +1461 -1458
  88. package/src/components/Business/SearchSelect/common.ts +53 -53
  89. package/src/components/Business/SearchSelect/index.md +1137 -1137
  90. package/src/components/Business/SearchSelect/index.tsx +51 -51
  91. package/src/components/Business/SearchSelect/utils.ts +100 -100
  92. package/src/components/Business/StateFlow/index.less +130 -130
  93. package/src/components/Business/StateFlow/index.md +60 -60
  94. package/src/components/Business/StateFlow/index.tsx +29 -29
  95. package/src/components/Business/TreeSearchSelect/index.md +126 -126
  96. package/src/components/Business/TreeSearchSelect/index.tsx +34 -34
  97. package/src/components/Business/TreeSearchSelect/utils.ts +60 -60
  98. package/src/components/Business/columnSettingTable/columnSetting.tsx +763 -763
  99. package/src/components/Business/columnSettingTable/index.less +247 -247
  100. package/src/components/Business/columnSettingTable/index.md +357 -357
  101. package/src/components/Business/columnSettingTable/index.tsx +232 -232
  102. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +240 -240
  103. package/src/components/Business/columnSettingTable/utils.tsx +68 -68
  104. package/src/components/Functional/AddSelect/index.less +367 -367
  105. package/src/components/Functional/AddSelect/index.md +122 -122
  106. package/src/components/Functional/AddSelect/index.tsx +992 -992
  107. package/src/components/Functional/BillEntry/index.less +371 -371
  108. package/src/components/Functional/BillEntry/index.md +39 -39
  109. package/src/components/Functional/BillEntry/index.tsx +643 -643
  110. package/src/components/Functional/DataImport/index.less +63 -63
  111. package/src/components/Functional/DataImport/index.md +44 -44
  112. package/src/components/Functional/DataImport/index.tsx +695 -689
  113. package/src/components/Functional/DataValidation/index.less +63 -63
  114. package/src/components/Functional/DataValidation/index.md +39 -38
  115. package/src/components/Functional/DataValidation/index.tsx +687 -681
  116. package/src/components/Functional/ExportFunctions/ExportIcon/index.md +37 -37
  117. package/src/components/Functional/ExportFunctions/ExportIcon/index.tsx +59 -59
  118. package/src/components/Functional/QueryMutipleInput/index.less +37 -37
  119. package/src/components/Functional/QueryMutipleInput/index.md +33 -33
  120. package/src/components/Functional/QueryMutipleInput/index.tsx +128 -128
  121. package/src/components/Functional/SearchSelect/index.less +115 -115
  122. package/src/components/Functional/SearchSelect/index.md +141 -141
  123. package/src/components/Functional/SearchSelect/index.tsx +813 -812
  124. package/src/components/Functional/SearchSelect/utils.ts +6 -0
  125. package/src/components/Functional/TreeSearchSelect/index.md +47 -47
  126. package/src/components/Functional/TreeSearchSelect/index.tsx +149 -149
  127. package/src/index.ts +31 -31
  128. package/src/styles/bsDefault.less +1906 -1906
  129. package/src/utils/CheckOneUser/index.md +39 -39
  130. package/src/utils/CheckOneUser/index.ts +51 -51
  131. package/src/utils/checkUtils.ts +39 -39
  132. package/src/utils/enumConfig.ts +10 -10
  133. package/src/utils/index.ts +2 -2
  134. package/src/utils/requestUtils.ts +33 -33
  135. package/src/utils/utils.ts +57 -57
  136. package/tsconfig.json +29 -29
  137. package/typings.d.ts +4 -4
@@ -1,158 +1,158 @@
1
- // @ts-nocheck
2
- import React, { useState } from "react";
3
- import RightContent from '../RightContent';
4
- import { Input } from 'antd';
5
- import { SearchOutlined } from '@ant-design/icons';
6
- import { debounce, cloneDeep } from 'lodash';
7
- import { formatMessage, history } from 'umi';
8
- import ENUM from '@/utils/enumConfig';
9
- import './index.less';
10
-
11
-
12
- export const judgeIsEmpty = (value: any) => {
13
- if (value == null || value == undefined || String(value).trim() == '') {
14
- return true;
15
- }
16
- return false;
17
- };
18
-
19
- const GlobalHeaderCom = (props: any) => {
20
- const { route: {routes=[]}} = props;
21
- const [keyWord, setKeyWord] = useState('');
22
- const [routeList, setroutesData] = useState<any[]>([]);
23
-
24
- const getFullPathName = (nameId:string) => {
25
- const nameIdArr = nameId.split('.');
26
- let nameStr = '';
27
- for (let i = 0; i < nameIdArr.length; i++) {
28
- let itemId = nameIdArr.slice(0, i+1).join('.');
29
- nameStr += `${i === 0 ? '': '-'}${formatMessage({ id: `menu.${itemId}` })}`;
30
- }
31
- return nameStr;
32
- }
33
- const initRoute = (router: any, name?: any) => {
34
- const resultList: any = [];
35
- const newRouter = cloneDeep(router);
36
- const btnAuth = JSON.parse(localStorage.getItem(ENUM.BROWSER_CACHE.MAIN_AUTH_CODES) || '[]');
37
- const deep = (router: any) => {
38
- if (router && Array.isArray(router)) {
39
- router.forEach((item) => {
40
- if (item.routes && Array.isArray(item.routes)) {
41
- item.routes.forEach((d: any) => {
42
- if (!d.nameEdit) {
43
- d.name = item.name + '.' + d.name;
44
- d.nameEdit = true;
45
- }
46
- });
47
- deep(item.routes);
48
- } else if (
49
- !item.hideInMenu &&
50
- (name
51
- ? formatMessage({ id: `menu.${item.name}` }).indexOf(name) !== -1
52
- : true)
53
- && btnAuth.find((d: any) => d === item.code)
54
- ) {
55
- resultList.push({
56
- ...item,
57
- fullPathName: getFullPathName(item.name),
58
- });
59
- }
60
- });
61
- } else if (
62
- (name ? router.name.indexOf(name) !== -1 : true)
63
- // && btnAuth.find((d: any) => d.code === router.code)
64
- ) {
65
- resultList.push({
66
- ...router,
67
- name: formatMessage({ id: `menu.${router.name}` }),
68
- });
69
- }
70
- };
71
- deep(newRouter);
72
- setroutesData([...resultList]);
73
- };
74
-
75
- const renderLineStyl = (name: string) => {
76
- let newName = name.split('-').join(' > ');
77
- const index = newName.lastIndexOf(keyWord);
78
- if (index > -1) {
79
- const beforeStr = newName.substr(0, index);
80
- const afterStr = newName.substr(index + keyWord.length);
81
- return (
82
- <>
83
- <span>{beforeStr}</span>
84
- <span style={{color: '#1890ff'}}>{keyWord}</span>
85
- <span>{afterStr}</span>
86
- </>
87
- )
88
- }
89
- return newName
90
- }
91
-
92
- return (
93
- <div style={{paddingLeft: props.collapsed ? '135px': '45px'}} className={'headerContent'}>
94
- <div style={{flex: '1 1 0%', padding: '0 15px 0', marginLeft: '15px', display: 'flex', borderLeft: '1px solid #f0f0f0'}}>
95
- {/* <div
96
- className={'navigationBtn'}
97
- onClick={() => {
98
- message.warning('当前功能暂不支持。');
99
- }}
100
- >
101
- <ApartmentOutlined />
102
- &nbsp;&nbsp;
103
- 流程导航
104
- </div> */}
105
- <div style={{position: 'relative'}}>
106
- <Input
107
- style={{width: '268px', height: '32px', borderRadius:'4px'}}
108
- placeholder="搜索菜单"
109
- allowClear
110
- onFocus= {(e) => {
111
- setKeyWord(e?.target?.value)
112
- initRoute(routes, e?.target?.value)
113
- }}
114
- onBlur={() => {
115
- setTimeout(() => {
116
- setKeyWord('')
117
- }, 600)
118
- }}
119
-
120
- prefix={<SearchOutlined />}
121
- onChange={debounce((e: any) => {
122
- setKeyWord(e?.target?.value)
123
- initRoute(routes, e?.target?.value)
124
- }, 600)}
125
- />
126
- <div style={{display: judgeIsEmpty(keyWord) ? 'none' : 'block'}} className={'searchPanel'}>
127
- <p className={'searchTitle'}>
128
- 共搜到{' '}
129
- <span className={'themeColor'}>
130
- {routeList.length || 0}
131
- </span>{' '}
132
- 条结果{' '}
133
- </p>
134
- <div style={{marginTop: '10px'}}>
135
- {
136
- routeList.map(item => (
137
- <div
138
- className={'itemPath'}
139
- onClick={() => {
140
- history.push({
141
- pathname: item.path
142
- })
143
- // setKeyWord('')
144
- }}
145
- title={item.fullPathName}
146
- >{renderLineStyl(item.fullPathName)}</div>
147
- ))
148
- }
149
- </div>
150
- </div>
151
- </div>
152
- </div>
153
- <RightContent />
154
- </div>
155
- )
156
- }
157
-
1
+ // @ts-nocheck
2
+ import React, { useState } from "react";
3
+ import RightContent from '../RightContent';
4
+ import { Input } from 'antd';
5
+ import { SearchOutlined } from '@ant-design/icons';
6
+ import { debounce, cloneDeep } from 'lodash';
7
+ import { formatMessage, history } from 'umi';
8
+ import ENUM from '@/utils/enumConfig';
9
+ import './index.less';
10
+
11
+
12
+ export const judgeIsEmpty = (value: any) => {
13
+ if (value == null || value == undefined || String(value).trim() == '') {
14
+ return true;
15
+ }
16
+ return false;
17
+ };
18
+
19
+ const GlobalHeaderCom = (props: any) => {
20
+ const { route: {routes=[]}} = props;
21
+ const [keyWord, setKeyWord] = useState('');
22
+ const [routeList, setroutesData] = useState<any[]>([]);
23
+
24
+ const getFullPathName = (nameId:string) => {
25
+ const nameIdArr = nameId.split('.');
26
+ let nameStr = '';
27
+ for (let i = 0; i < nameIdArr.length; i++) {
28
+ let itemId = nameIdArr.slice(0, i+1).join('.');
29
+ nameStr += `${i === 0 ? '': '-'}${formatMessage({ id: `menu.${itemId}` })}`;
30
+ }
31
+ return nameStr;
32
+ }
33
+ const initRoute = (router: any, name?: any) => {
34
+ const resultList: any = [];
35
+ const newRouter = cloneDeep(router);
36
+ const btnAuth = JSON.parse(localStorage.getItem(ENUM.BROWSER_CACHE.MAIN_AUTH_CODES) || '[]');
37
+ const deep = (router: any) => {
38
+ if (router && Array.isArray(router)) {
39
+ router.forEach((item) => {
40
+ if (item.routes && Array.isArray(item.routes)) {
41
+ item.routes.forEach((d: any) => {
42
+ if (!d.nameEdit) {
43
+ d.name = item.name + '.' + d.name;
44
+ d.nameEdit = true;
45
+ }
46
+ });
47
+ deep(item.routes);
48
+ } else if (
49
+ !item.hideInMenu &&
50
+ (name
51
+ ? formatMessage({ id: `menu.${item.name}` }).indexOf(name) !== -1
52
+ : true)
53
+ && btnAuth.find((d: any) => d === item.code)
54
+ ) {
55
+ resultList.push({
56
+ ...item,
57
+ fullPathName: getFullPathName(item.name),
58
+ });
59
+ }
60
+ });
61
+ } else if (
62
+ (name ? router.name.indexOf(name) !== -1 : true)
63
+ // && btnAuth.find((d: any) => d.code === router.code)
64
+ ) {
65
+ resultList.push({
66
+ ...router,
67
+ name: formatMessage({ id: `menu.${router.name}` }),
68
+ });
69
+ }
70
+ };
71
+ deep(newRouter);
72
+ setroutesData([...resultList]);
73
+ };
74
+
75
+ const renderLineStyl = (name: string) => {
76
+ let newName = name.split('-').join(' > ');
77
+ const index = newName.lastIndexOf(keyWord);
78
+ if (index > -1) {
79
+ const beforeStr = newName.substr(0, index);
80
+ const afterStr = newName.substr(index + keyWord.length);
81
+ return (
82
+ <>
83
+ <span>{beforeStr}</span>
84
+ <span style={{color: '#1890ff'}}>{keyWord}</span>
85
+ <span>{afterStr}</span>
86
+ </>
87
+ )
88
+ }
89
+ return newName
90
+ }
91
+
92
+ return (
93
+ <div style={{paddingLeft: props.collapsed ? '135px': '45px'}} className={'headerContent'}>
94
+ <div style={{flex: '1 1 0%', padding: '0 15px 0', marginLeft: '15px', display: 'flex', borderLeft: '1px solid #f0f0f0'}}>
95
+ {/* <div
96
+ className={'navigationBtn'}
97
+ onClick={() => {
98
+ message.warning('当前功能暂不支持。');
99
+ }}
100
+ >
101
+ <ApartmentOutlined />
102
+ &nbsp;&nbsp;
103
+ 流程导航
104
+ </div> */}
105
+ <div style={{position: 'relative'}}>
106
+ <Input
107
+ style={{width: '268px', height: '32px', borderRadius:'4px'}}
108
+ placeholder="搜索菜单"
109
+ allowClear
110
+ onFocus= {(e) => {
111
+ setKeyWord(e?.target?.value)
112
+ initRoute(routes, e?.target?.value)
113
+ }}
114
+ onBlur={() => {
115
+ setTimeout(() => {
116
+ setKeyWord('')
117
+ }, 600)
118
+ }}
119
+
120
+ prefix={<SearchOutlined />}
121
+ onChange={debounce((e: any) => {
122
+ setKeyWord(e?.target?.value)
123
+ initRoute(routes, e?.target?.value)
124
+ }, 600)}
125
+ />
126
+ <div style={{display: judgeIsEmpty(keyWord) ? 'none' : 'block'}} className={'searchPanel'}>
127
+ <p className={'searchTitle'}>
128
+ 共搜到{' '}
129
+ <span className={'themeColor'}>
130
+ {routeList.length || 0}
131
+ </span>{' '}
132
+ 条结果{' '}
133
+ </p>
134
+ <div style={{marginTop: '10px'}}>
135
+ {
136
+ routeList.map(item => (
137
+ <div
138
+ className={'itemPath'}
139
+ onClick={() => {
140
+ history.push({
141
+ pathname: item.path
142
+ })
143
+ // setKeyWord('')
144
+ }}
145
+ title={item.fullPathName}
146
+ >{renderLineStyl(item.fullPathName)}</div>
147
+ ))
148
+ }
149
+ </div>
150
+ </div>
151
+ </div>
152
+ </div>
153
+ <RightContent />
154
+ </div>
155
+ )
156
+ }
157
+
158
158
  export default GlobalHeaderCom;
@@ -1,85 +1,85 @@
1
- // @ts-ignore
2
- import React from 'react';
3
- import { Form, Input, Button, Modal } from 'antd';
4
- import { handleAccountID, handleUserID } from '../../utils';
5
- import axios from 'axios';
6
-
7
- export default (props: any) => {
8
- const { loginOut } = props;
9
- const [form] = Form.useForm();
10
- return (
11
- <>
12
- <Modal
13
- {...props}
14
- visible={props.visible}
15
- onCancel={() => {
16
- props.onCancel();
17
- }}
18
- footer={[
19
- <Button onClick={() => props.onCancel()}>取消</Button>,
20
- <Button
21
- onClick={() => {
22
- form.validateFields().then((res) => {
23
- axios({
24
- url: `/bop/api/account/changePassWord/${handleAccountID()}`,
25
- method: 'patch',
26
- params: res,
27
- }).then(res => {
28
- loginOut();
29
- })
30
- });
31
- }}
32
- type="primary"
33
- >
34
- 确认
35
- </Button>,
36
- ]}
37
- >
38
- <Form
39
- form={form}
40
- name="login"
41
- labelCol={{ span: 4 }}
42
- wrapperCol={{ span: 20 }}
43
- initialValues={{
44
- username: handleUserID(),
45
- }}
46
- >
47
- <Form.Item label="账号" name="username">
48
- <Input disabled />
49
- </Form.Item>
50
- <Form.Item
51
- label="旧密码"
52
- name="oldPassword"
53
- rules={[{ required: true, message: '请输入您的旧密码' }]}
54
- >
55
- <Input.Password />
56
- </Form.Item>
57
- <Form.Item
58
- label="新密码"
59
- name="newPassword"
60
- help="密码最少要包含一个大写字母+一个小写字母+一个数字+一个特殊符号最少6位"
61
- rules={[
62
- { required: true, message: '请输入您的新密码' },
63
- {
64
- pattern:
65
- /^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/,
66
- message: '密码强度不够请重新输入',
67
- },
68
- ]}
69
- >
70
- <Input.Password />
71
- </Form.Item>
72
-
73
- <Form.Item
74
- label="请确认密码"
75
- name="confirmPassword"
76
- help="请确认密码和第一次输入一致"
77
- rules={[{ required: true, message: '请确认您的密码' }]}
78
- >
79
- <Input.Password />
80
- </Form.Item>
81
- </Form>
82
- </Modal>
83
- </>
84
- );
85
- };
1
+ // @ts-ignore
2
+ import React from 'react';
3
+ import { Form, Input, Button, Modal } from 'antd';
4
+ import { handleAccountID, handleUserID } from '../../utils';
5
+ import axios from 'axios';
6
+
7
+ export default (props: any) => {
8
+ const { loginOut } = props;
9
+ const [form] = Form.useForm();
10
+ return (
11
+ <>
12
+ <Modal
13
+ {...props}
14
+ visible={props.visible}
15
+ onCancel={() => {
16
+ props.onCancel();
17
+ }}
18
+ footer={[
19
+ <Button onClick={() => props.onCancel()}>取消</Button>,
20
+ <Button
21
+ onClick={() => {
22
+ form.validateFields().then((res) => {
23
+ axios({
24
+ url: `/bop/api/account/changePassWord/${handleAccountID()}`,
25
+ method: 'patch',
26
+ params: res,
27
+ }).then(res => {
28
+ loginOut();
29
+ })
30
+ });
31
+ }}
32
+ type="primary"
33
+ >
34
+ 确认
35
+ </Button>,
36
+ ]}
37
+ >
38
+ <Form
39
+ form={form}
40
+ name="login"
41
+ labelCol={{ span: 4 }}
42
+ wrapperCol={{ span: 20 }}
43
+ initialValues={{
44
+ username: handleUserID(),
45
+ }}
46
+ >
47
+ <Form.Item label="账号" name="username">
48
+ <Input disabled />
49
+ </Form.Item>
50
+ <Form.Item
51
+ label="旧密码"
52
+ name="oldPassword"
53
+ rules={[{ required: true, message: '请输入您的旧密码' }]}
54
+ >
55
+ <Input.Password />
56
+ </Form.Item>
57
+ <Form.Item
58
+ label="新密码"
59
+ name="newPassword"
60
+ help="密码最少要包含一个大写字母+一个小写字母+一个数字+一个特殊符号最少6位"
61
+ rules={[
62
+ { required: true, message: '请输入您的新密码' },
63
+ {
64
+ pattern:
65
+ /^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/,
66
+ message: '密码强度不够请重新输入',
67
+ },
68
+ ]}
69
+ >
70
+ <Input.Password />
71
+ </Form.Item>
72
+
73
+ <Form.Item
74
+ label="请确认密码"
75
+ name="confirmPassword"
76
+ help="请确认密码和第一次输入一致"
77
+ rules={[{ required: true, message: '请确认您的密码' }]}
78
+ >
79
+ <Input.Password />
80
+ </Form.Item>
81
+ </Form>
82
+ </Modal>
83
+ </>
84
+ );
85
+ };