@jiangood/open-admin 2.4.5 → 2.4.7

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.
package/package.json CHANGED
@@ -35,5 +35,5 @@
35
35
  "dev": "umi dev",
36
36
  "build": "umi build"
37
37
  },
38
- "version": "2.4.5"
38
+ "version": "2.4.7"
39
39
  }
@@ -37,7 +37,7 @@
37
37
  "dev": "umi dev",
38
38
  "build": "umi build"
39
39
  },
40
- "version": "2.4.5"
40
+ "version": "2.4.7"
41
41
  },
42
42
  "pkgPath": "/home/runner/work/open-admin/open-admin/web/package.json",
43
43
  "plugins": {
@@ -63,7 +63,7 @@
63
63
  "config": {},
64
64
  "time": {
65
65
  "hooks": {},
66
- "register": 4
66
+ "register": 5
67
67
  },
68
68
  "enableBy": "register"
69
69
  },
@@ -114,7 +114,7 @@
114
114
  0
115
115
  ]
116
116
  },
117
- "register": 1
117
+ "register": 0
118
118
  },
119
119
  "enableBy": "register"
120
120
  },
@@ -141,10 +141,10 @@
141
141
  "time": {
142
142
  "hooks": {
143
143
  "modifyAppData": [
144
- 63
144
+ 72
145
145
  ]
146
146
  },
147
- "register": 21
147
+ "register": 22
148
148
  },
149
149
  "enableBy": "register"
150
150
  },
@@ -174,7 +174,7 @@
174
174
  0
175
175
  ],
176
176
  "onCheck": [
177
- 1
177
+ 0
178
178
  ]
179
179
  },
180
180
  "register": 1
@@ -207,7 +207,7 @@
207
207
  "config": {},
208
208
  "time": {
209
209
  "hooks": {},
210
- "register": 0
210
+ "register": 1
211
211
  },
212
212
  "enableBy": "config"
213
213
  },
@@ -224,7 +224,7 @@
224
224
  0
225
225
  ]
226
226
  },
227
- "register": 6
227
+ "register": 5
228
228
  },
229
229
  "enableBy": "register"
230
230
  },
@@ -1090,7 +1090,7 @@
1090
1090
  "time": {
1091
1091
  "hooks": {
1092
1092
  "onStart": [
1093
- 0
1093
+ 1
1094
1094
  ]
1095
1095
  },
1096
1096
  "register": 1
@@ -1119,7 +1119,7 @@
1119
1119
  "config": {},
1120
1120
  "time": {
1121
1121
  "hooks": {},
1122
- "register": 95
1122
+ "register": 100
1123
1123
  },
1124
1124
  "enableBy": "register"
1125
1125
  },
@@ -1132,7 +1132,7 @@
1132
1132
  "config": {},
1133
1133
  "time": {
1134
1134
  "hooks": {},
1135
- "register": 27
1135
+ "register": 30
1136
1136
  },
1137
1137
  "enableBy": "config"
1138
1138
  },
@@ -1162,7 +1162,7 @@
1162
1162
  0
1163
1163
  ]
1164
1164
  },
1165
- "register": 1
1165
+ "register": 0
1166
1166
  },
1167
1167
  "enableBy": "register"
1168
1168
  },
@@ -1175,7 +1175,7 @@
1175
1175
  "config": {},
1176
1176
  "time": {
1177
1177
  "hooks": {},
1178
- "register": 0
1178
+ "register": 1
1179
1179
  },
1180
1180
  "enableBy": "register"
1181
1181
  },
@@ -1201,7 +1201,7 @@
1201
1201
  "config": {},
1202
1202
  "time": {
1203
1203
  "hooks": {},
1204
- "register": 30
1204
+ "register": 32
1205
1205
  }
1206
1206
  },
1207
1207
  "./node_modules/@umijs/preset-umi/dist/features/mpa/mpa": {
@@ -1213,7 +1213,7 @@
1213
1213
  "config": {},
1214
1214
  "time": {
1215
1215
  "hooks": {},
1216
- "register": 1
1216
+ "register": 0
1217
1217
  },
1218
1218
  "enableBy": "config"
1219
1219
  },
@@ -1306,7 +1306,7 @@
1306
1306
  "config": {},
1307
1307
  "time": {
1308
1308
  "hooks": {},
1309
- "register": 0
1309
+ "register": 1
1310
1310
  },
1311
1311
  "enableBy": "config"
1312
1312
  },
@@ -1319,7 +1319,7 @@
1319
1319
  "config": {},
1320
1320
  "time": {
1321
1321
  "hooks": {},
1322
- "register": 1
1322
+ "register": 0
1323
1323
  },
1324
1324
  "enableBy": "config"
1325
1325
  },
@@ -1422,7 +1422,7 @@
1422
1422
  "config": {},
1423
1423
  "time": {
1424
1424
  "hooks": {},
1425
- "register": 2
1425
+ "register": 3
1426
1426
  },
1427
1427
  "enableBy": "config"
1428
1428
  },
@@ -1435,7 +1435,7 @@
1435
1435
  "config": {},
1436
1436
  "time": {
1437
1437
  "hooks": {},
1438
- "register": 1
1438
+ "register": 0
1439
1439
  },
1440
1440
  "enableBy": "config"
1441
1441
  },
@@ -1448,7 +1448,7 @@
1448
1448
  "config": {},
1449
1449
  "time": {
1450
1450
  "hooks": {},
1451
- "register": 3
1451
+ "register": 4
1452
1452
  }
1453
1453
  },
1454
1454
  "./node_modules/@umijs/preset-umi/dist/features/monorepo/redirect": {
@@ -1485,7 +1485,7 @@
1485
1485
  "config": {},
1486
1486
  "time": {
1487
1487
  "hooks": {},
1488
- "register": 1
1488
+ "register": 0
1489
1489
  }
1490
1490
  },
1491
1491
  "./node_modules/@umijs/preset-umi/dist/features/legacy/legacy": {
@@ -1510,7 +1510,7 @@
1510
1510
  "config": {},
1511
1511
  "time": {
1512
1512
  "hooks": {},
1513
- "register": 0
1513
+ "register": 1
1514
1514
  },
1515
1515
  "enableBy": "config"
1516
1516
  },
@@ -1523,7 +1523,7 @@
1523
1523
  "config": {},
1524
1524
  "time": {
1525
1525
  "hooks": {},
1526
- "register": 1
1526
+ "register": 0
1527
1527
  }
1528
1528
  },
1529
1529
  "./node_modules/@umijs/preset-umi/dist/features/swc/swc": {
@@ -1539,7 +1539,7 @@
1539
1539
  0
1540
1540
  ]
1541
1541
  },
1542
- "register": 0
1542
+ "register": 1
1543
1543
  },
1544
1544
  "enableBy": "register"
1545
1545
  },
@@ -1552,7 +1552,7 @@
1552
1552
  "config": {},
1553
1553
  "time": {
1554
1554
  "hooks": {},
1555
- "register": 3
1555
+ "register": 2
1556
1556
  }
1557
1557
  },
1558
1558
  "./node_modules/@umijs/preset-umi/dist/features/mako/mako": {
@@ -1564,7 +1564,7 @@
1564
1564
  "config": {},
1565
1565
  "time": {
1566
1566
  "hooks": {},
1567
- "register": 0
1567
+ "register": 1
1568
1568
  },
1569
1569
  "enableBy": "config"
1570
1570
  },
@@ -1589,7 +1589,7 @@
1589
1589
  "config": {},
1590
1590
  "time": {
1591
1591
  "hooks": {},
1592
- "register": 3
1592
+ "register": 2
1593
1593
  }
1594
1594
  },
1595
1595
  "./node_modules/@umijs/preset-umi/dist/features/routePreloadOnLoad/routePreloadOnLoad": {
@@ -1601,7 +1601,7 @@
1601
1601
  "config": {},
1602
1602
  "time": {
1603
1603
  "hooks": {},
1604
- "register": 26
1604
+ "register": 28
1605
1605
  }
1606
1606
  },
1607
1607
  "./node_modules/@umijs/preset-umi/dist/features/forget/forget": {
@@ -1652,7 +1652,7 @@
1652
1652
  "config": {},
1653
1653
  "time": {
1654
1654
  "hooks": {},
1655
- "register": 43
1655
+ "register": 44
1656
1656
  },
1657
1657
  "enableBy": "register"
1658
1658
  },
@@ -1742,7 +1742,7 @@
1742
1742
  "config": {},
1743
1743
  "time": {
1744
1744
  "hooks": {},
1745
- "register": 2
1745
+ "register": 1
1746
1746
  },
1747
1747
  "enableBy": "register"
1748
1748
  },
@@ -1755,7 +1755,7 @@
1755
1755
  "config": {},
1756
1756
  "time": {
1757
1757
  "hooks": {},
1758
- "register": 0
1758
+ "register": 1
1759
1759
  },
1760
1760
  "enableBy": "register"
1761
1761
  },
@@ -1833,7 +1833,7 @@
1833
1833
  "config": {},
1834
1834
  "time": {
1835
1835
  "hooks": {},
1836
- "register": 1
1836
+ "register": 0
1837
1837
  },
1838
1838
  "enableBy": "register"
1839
1839
  },
@@ -1846,7 +1846,7 @@
1846
1846
  "config": {},
1847
1847
  "time": {
1848
1848
  "hooks": {},
1849
- "register": 0
1849
+ "register": 1
1850
1850
  },
1851
1851
  "enableBy": "register"
1852
1852
  },
@@ -1911,7 +1911,7 @@
1911
1911
  "config": {},
1912
1912
  "time": {
1913
1913
  "hooks": {},
1914
- "register": 21
1914
+ "register": 22
1915
1915
  },
1916
1916
  "enableBy": "register"
1917
1917
  },
@@ -1937,7 +1937,7 @@
1937
1937
  "config": {},
1938
1938
  "time": {
1939
1939
  "hooks": {},
1940
- "register": 1
1940
+ "register": 2
1941
1941
  },
1942
1942
  "enableBy": "register"
1943
1943
  },
@@ -1950,7 +1950,7 @@
1950
1950
  "config": {},
1951
1951
  "time": {
1952
1952
  "hooks": {},
1953
- "register": 1
1953
+ "register": 0
1954
1954
  },
1955
1955
  "enableBy": "register"
1956
1956
  },
@@ -2144,7 +2144,7 @@
2144
2144
  "parentId": "@@/global-layout",
2145
2145
  "file": "system/log/index.jsx",
2146
2146
  "absPath": "/system/log",
2147
- "__content": "import React from 'react';\nimport {Form, Input, Tag} from \"antd\";\nimport {ViewText, FieldDateRange, HttpUtils, Page, ProTable} from \"../../../framework\";\n\nexport default class extends React.Component {\n\n\n columns = [\n {\n title: '操作',\n dataIndex: 'operation',\n },\n {\n title: '操作者',\n dataIndex: 'username'\n },\n\n {\n title: 'ip',\n dataIndex: 'ip',\n },\n\n\n {\n title: '时间',\n dataIndex: 'operationTime',\n sorter: true,\n },\n {\n title: '参数',\n dataIndex: 'params',\n render(v) {\n return <ViewText value={v} ellipsis={true} />\n }\n\n },\n {\n title: '结果',\n dataIndex: 'success',\n render(v) {\n return <>\n <Tag color={v ? 'green' : 'red'}>{v ? '成功' : '失败'}</Tag>\n </>\n }\n },\n {\n title: '错误消息',\n dataIndex: 'error',\n render(v) {\n return <ViewText value={v} ellipsis={true} />\n }\n },\n ];\n\n\n render() {\n return <Page>\n <ProTable\n request={(params) => HttpUtils.get('admin/sysLog/page', params)}\n columns={this.columns}\n >\n <Form.Item label='操作' name='operation'>\n <Input/>\n </Form.Item>\n <Form.Item label='时间' name='dateRange'>\n <FieldDateRange/>\n </Form.Item>\n </ProTable>\n </Page>\n }\n\n\n}\n\n\n\n",
2147
+ "__content": "import React from 'react';\nimport {Form, Input, Tag} from \"antd\";\nimport {ViewText, FieldDateRange, HttpUtils, Page, ProTable} from \"../../../framework\";\n\nexport default class extends React.Component {\n\n\n columns = [\n {\n title: '操作者',\n dataIndex: 'username'\n },\n {\n title: '操作',\n dataIndex: 'operation',\n },\n\n\n {\n title: 'ip',\n dataIndex: 'ip',\n },\n\n\n {\n title: '时间',\n dataIndex: 'operationTime',\n sorter: true,\n },\n {\n title: '参数',\n dataIndex: 'params',\n render(v) {\n return <ViewText value={v} ellipsis={true} />\n }\n\n },\n {\n title: '结果',\n dataIndex: 'success',\n render(v) {\n return <>\n <Tag color={v ? 'green' : 'red'}>{v ? '成功' : '失败'}</Tag>\n </>\n }\n },\n {\n title: '错误消息',\n dataIndex: 'error',\n render(v) {\n return <ViewText value={v} ellipsis={true} />\n }\n },\n ];\n\n\n render() {\n return <Page>\n <ProTable\n request={(params) => HttpUtils.get('admin/sysLog/page', params)}\n columns={this.columns}\n >\n <Form.Item label='操作' name='operation'>\n <Input/>\n </Form.Item>\n <Form.Item label='时间' name='dateRange'>\n <FieldDateRange/>\n </Form.Item>\n </ProTable>\n </Page>\n }\n\n\n}\n\n\n\n",
2148
2148
  "__isJSFile": true,
2149
2149
  "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/log/index.jsx"
2150
2150
  },
@@ -2204,7 +2204,7 @@
2204
2204
  "parentId": "@@/global-layout",
2205
2205
  "file": "login.jsx",
2206
2206
  "absPath": "/login",
2207
- "__content": "import React from 'react';\nimport {Button, Form, Input, message, Space} from 'antd';\nimport {LockOutlined, SafetyCertificateOutlined, UserOutlined, WarningOutlined} from '@ant-design/icons';\nimport {history} from 'umi';\nimport {EventBusUtils, HttpUtils, PageUtils, MessageUtils, SysUtils} from \"../framework/utils\";\n\nimport \"./login.less\"\n\nfunction getRedirect() {\n let redirect = PageUtils.currentParams()['redirect'];\n if (redirect) {\n redirect = decodeURIComponent(redirect)\n } else {\n redirect = '/'\n }\n return redirect;\n}\n\nfunction postLogin(values) {\n return new Promise((resolve, reject) => {\n HttpUtils.post('/admin/auth/login', values).then(rs => {\n EventBusUtils.emit('loginSuccess')\n history.push(getRedirect())\n resolve(rs)\n }).catch(e => {\n console.error('[Login] 登录失败:', e);\n reject(e)\n })\n })\n}\n\nfunction encodePassword(pwd) {\n const chars = [];\n for (let i = 0; i < pwd.length; i++)\n chars.push(pwd.charCodeAt(i) + i + 2);\n return btoa(String.fromCharCode(...chars));\n}\n\nexport default class extends React.Component {\n\n state = {\n logging: false,\n siteInfo: {},\n random: Math.random()\n }\n\n async componentDidMount() {\n const siteInfo = SysUtils.getSiteInfo()\n if (siteInfo && siteInfo.title) {\n this.setState({siteInfo})\n return\n }\n // localStorage 中无站点信息,从服务端重新加载\n try {\n const rs = await HttpUtils.get('/admin/public/site-info')\n SysUtils.setSiteInfo(rs)\n this.setState({siteInfo: rs})\n } catch (e) {\n console.error('[Login] 加载站点信息失败:', e);\n message.error('加载站点信息失败,请刷新页面重试')\n }\n }\n\n submit = values => {\n this.setState({logging: true})\n values.password = encodePassword(values.password)\n postLogin(values).finally(() => {\n this.setState({logging: false})\n })\n }\n\n render() {\n const {siteInfo} = this.state\n\n const pageStyle = {\n backgroundImage: `url(\"${SysUtils.contextPath('/admin/public/login_bg.jpg')}\")`\n }\n if (siteInfo.loginBackground) {\n const url = SysUtils.contextPath('/admin/sysFile/preview/' + siteInfo.loginBackground);\n pageStyle.backgroundImage = 'url(\"' + url + '\")'\n }\n\n return (\n <section className='login-page' style={pageStyle}>\n <div className=\"login-content\">\n <h1>{siteInfo.title}</h1>\n {this.getForm(siteInfo)}\n {this.renderFormBottom()}\n </div>\n </section>\n );\n }\n\n getForm = siteInfo => {\n const form = (\n <Form\n name=\"normal_login\"\n className=\"login-form\"\n initialValues={{remember: true}}\n onFinish={this.submit}\n requiredMark={false}\n colon={false}\n >\n <Form.Item name=\"username\" rules={[{required: true, message: '请输入用户名!'}]}>\n <Input size='large' prefix={<UserOutlined/>} placeholder=\"用户名\" autoComplete=\"off\"/>\n </Form.Item>\n <Form.Item name=\"password\" rules={[{required: true, message: '请输入密码!'}]}>\n <Input autoComplete=\"off\" prefix={<LockOutlined/>} type=\"password\" placeholder=\"密码\"\n size='large'\n />\n </Form.Item>\n\n {siteInfo.captcha && (\n <Form.Item name='captchaCode' rules={[{required: true}]}>\n <Space style={{alignItems: 'center'}}>\n <Input size='large' placeholder='验证码' prefix={<SafetyCertificateOutlined/>}/>\n <img height={36} width={100}\n src={SysUtils.contextPath(\"/admin/auth/captcha-image?_random=\" + this.state.random)}\n onClick={() => this.setState({random: Math.random()})}/>\n </Space>\n </Form.Item>\n )}\n\n <Form.Item style={{marginTop: 10}}>\n <Button loading={this.state.logging} type=\"primary\" htmlType=\"submit\"\n block size='large'>\n 登录\n </Button>\n </Form.Item>\n </Form>\n );\n\n if (this.props.formRender) {\n return this.props.formRender(form);\n }\n return form;\n };\n\n renderFormBottom() {\n const siteInfo = this.state.siteInfo;\n if (siteInfo.loginBoxBottomTip) {\n return (\n <div style={{color: 'white', marginTop: 50, fontSize: '14px', textAlign: 'center'}}>\n <WarningOutlined/> {siteInfo.loginBoxBottomTip}\n </div>\n )\n }\n }\n}\n",
2207
+ "__content": "import React from 'react';\nimport {Button, Form, Input, message} from 'antd';\nimport {LockOutlined, UserOutlined, WarningOutlined} from '@ant-design/icons';\nimport {history} from 'umi';\nimport {EventBusUtils, HttpUtils, PageUtils, SysUtils} from \"../framework/utils\";\n\nimport \"./login.less\"\n\nfunction getRedirect() {\n let redirect = PageUtils.currentParams()['redirect'];\n if (redirect) {\n redirect = decodeURIComponent(redirect)\n } else {\n redirect = '/'\n }\n return redirect;\n}\n\nfunction postLogin(values) {\n return new Promise((resolve, reject) => {\n HttpUtils.post('/admin/auth/login', values).then(rs => {\n EventBusUtils.emit('loginSuccess')\n history.push(getRedirect())\n resolve(rs)\n }).catch(e => {\n console.error('[Login] 登录失败:', e);\n reject(e)\n })\n })\n}\n\nfunction encodePassword(pwd) {\n const chars = [];\n for (let i = 0; i < pwd.length; i++)\n chars.push(pwd.charCodeAt(i) + i + 2);\n return btoa(String.fromCharCode(...chars));\n}\n\nexport default class extends React.Component {\n\n state = {\n logging: false,\n siteInfo: {}\n }\n\n async componentDidMount() {\n const siteInfo = SysUtils.getSiteInfo()\n if (siteInfo && siteInfo.title) {\n this.setState({siteInfo})\n return\n }\n // localStorage 中无站点信息,从服务端重新加载\n try {\n const rs = await HttpUtils.get('/admin/public/site-info')\n SysUtils.setSiteInfo(rs)\n this.setState({siteInfo: rs})\n } catch (e) {\n console.error('[Login] 加载站点信息失败:', e);\n message.error('加载站点信息失败,请刷新页面重试')\n }\n }\n\n submit = values => {\n this.setState({logging: true})\n values.password = encodePassword(values.password)\n postLogin(values).finally(() => {\n this.setState({logging: false})\n })\n }\n\n render() {\n const {siteInfo} = this.state\n\n const pageStyle = {\n backgroundImage: `url(\"${SysUtils.contextPath('/admin/public/login_bg.jpg')}\")`\n }\n if (siteInfo.loginBackground) {\n const url = SysUtils.contextPath('/admin/sysFile/preview/' + siteInfo.loginBackground);\n pageStyle.backgroundImage = 'url(\"' + url + '\")'\n }\n\n return (\n <section className='login-page' style={pageStyle}>\n <div className=\"login-content\">\n <h1>{siteInfo.title}</h1>\n {this.getForm(siteInfo)}\n {this.renderFormBottom()}\n </div>\n </section>\n );\n }\n\n getForm = siteInfo => {\n const form = (\n <Form\n name=\"normal_login\"\n className=\"login-form\"\n initialValues={{remember: true}}\n onFinish={this.submit}\n requiredMark={false}\n colon={false}\n >\n <Form.Item name=\"username\" rules={[{required: true, message: '请输入用户名!'}]}>\n <Input size='large' prefix={<UserOutlined/>} placeholder=\"用户名\" autoComplete=\"off\"/>\n </Form.Item>\n <Form.Item name=\"password\" rules={[{required: true, message: '请输入密码!'}]}>\n <Input autoComplete=\"off\" prefix={<LockOutlined/>} type=\"password\" placeholder=\"密码\"\n size='large'\n />\n </Form.Item>\n\n <Form.Item style={{marginTop: 10}}>\n <Button loading={this.state.logging} type=\"primary\" htmlType=\"submit\"\n block size='large'>\n 登录\n </Button>\n </Form.Item>\n </Form>\n );\n\n if (this.props.formRender) {\n return this.props.formRender(form);\n }\n return form;\n };\n\n renderFormBottom() {\n const siteInfo = this.state.siteInfo;\n if (siteInfo.loginBoxBottomTip) {\n return (\n <div style={{color: 'white', marginTop: 50, fontSize: '14px', textAlign: 'center'}}>\n <WarningOutlined/> {siteInfo.loginBoxBottomTip}\n </div>\n )\n }\n }\n}\n",
2208
2208
  "__isJSFile": true,
2209
2209
  "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/login.jsx"
2210
2210
  },
@@ -112,7 +112,7 @@ export class PageUtils {
112
112
  * @param path 要跳转的路径。
113
113
  * @param label 可选,用于在 URL 中添加一个 '_label' 参数。
114
114
  */
115
- static open(path: string, label: string = '临时'): void {
115
+ static open(path: string, label: string = '未命名'): void {
116
116
  let targetPath = path;
117
117
  if (label) {
118
118
  // 假设 UrlUtil.setParam(url, key, value) 存在并返回设置参数后的 URL
@@ -81,12 +81,6 @@ export default class extends React.Component {
81
81
  if (!activeTopMenuKey && topMenus.length > 0) {
82
82
  activeTopMenuKey = topMenus[0].key;
83
83
  sideMenus = topMenus[0].children || [];
84
- if (!currentMenuKey && sideMenus.length > 0 && (pathname === '' || pathname === '/')) {
85
- currentMenuKey = sideMenus[0].key;
86
- if (sideMenus[0].path && (pathname === '' || pathname === '/')) {
87
- history.push(sideMenus[0].path);
88
- }
89
- }
90
84
  }
91
85
 
92
86
  this.setState({menuTree, pathMenuMap, topMenus, sideMenus, activeTopMenuKey, currentMenuKey})
@@ -149,11 +143,6 @@ export default class extends React.Component {
149
143
 
150
144
  const sideMenus = topMenu.children || [];
151
145
  this.setState({activeTopMenuKey: key, sideMenus});
152
-
153
- if (sideMenus.length > 0 && sideMenus[0].path) {
154
- this.setState({currentMenuKey: sideMenus[0].key});
155
- history.push(sideMenus[0].path);
156
- }
157
146
  }
158
147
 
159
148
  onLeftMenuClick = ({key}) => {
@@ -161,7 +150,7 @@ export default class extends React.Component {
161
150
  if (!menu) return;
162
151
  const {path} = menu;
163
152
  this.setState({currentMenuKey: key});
164
- history.push(path);
153
+ PageUtils.open(path, menu.name);
165
154
  }
166
155
 
167
156
  renderTopMenu = () => {
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
- import {Button, Form, Input, message, Space} from 'antd';
3
- import {LockOutlined, SafetyCertificateOutlined, UserOutlined, WarningOutlined} from '@ant-design/icons';
2
+ import {Button, Form, Input, message} from 'antd';
3
+ import {LockOutlined, UserOutlined, WarningOutlined} from '@ant-design/icons';
4
4
  import {history} from 'umi';
5
- import {EventBusUtils, HttpUtils, PageUtils, MessageUtils, SysUtils} from "../framework/utils";
5
+ import {EventBusUtils, HttpUtils, PageUtils, SysUtils} from "../framework/utils";
6
6
 
7
7
  import "./login.less"
8
8
 
@@ -40,8 +40,7 @@ export default class extends React.Component {
40
40
 
41
41
  state = {
42
42
  logging: false,
43
- siteInfo: {},
44
- random: Math.random()
43
+ siteInfo: {}
45
44
  }
46
45
 
47
46
  async componentDidMount() {
@@ -110,17 +109,6 @@ export default class extends React.Component {
110
109
  />
111
110
  </Form.Item>
112
111
 
113
- {siteInfo.captcha && (
114
- <Form.Item name='captchaCode' rules={[{required: true}]}>
115
- <Space style={{alignItems: 'center'}}>
116
- <Input size='large' placeholder='验证码' prefix={<SafetyCertificateOutlined/>}/>
117
- <img height={36} width={100}
118
- src={SysUtils.contextPath("/admin/auth/captcha-image?_random=" + this.state.random)}
119
- onClick={() => this.setState({random: Math.random()})}/>
120
- </Space>
121
- </Form.Item>
122
- )}
123
-
124
112
  <Form.Item style={{marginTop: 10}}>
125
113
  <Button loading={this.state.logging} type="primary" htmlType="submit"
126
114
  block size='large'>
@@ -6,14 +6,15 @@ export default class extends React.Component {
6
6
 
7
7
 
8
8
  columns = [
9
- {
10
- title: '操作',
11
- dataIndex: 'operation',
12
- },
13
9
  {
14
10
  title: '操作者',
15
11
  dataIndex: 'username'
16
12
  },
13
+ {
14
+ title: '操作',
15
+ dataIndex: 'operation',
16
+ },
17
+
17
18
 
18
19
  {
19
20
  title: 'ip',