@jiangood/open-admin 2.4.6 → 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.6"
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.6"
40
+ "version": "2.4.7"
41
41
  },
42
42
  "pkgPath": "/home/runner/work/open-admin/open-admin/web/package.json",
43
43
  "plugins": {
@@ -50,7 +50,7 @@
50
50
  "config": {},
51
51
  "time": {
52
52
  "hooks": {},
53
- "register": 1
53
+ "register": 0
54
54
  },
55
55
  "enableBy": "register"
56
56
  },
@@ -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
  },
@@ -80,7 +80,7 @@
80
80
  0
81
81
  ]
82
82
  },
83
- "register": 3
83
+ "register": 2
84
84
  },
85
85
  "enableBy": "register"
86
86
  },
@@ -94,7 +94,7 @@
94
94
  "time": {
95
95
  "hooks": {
96
96
  "onStart": [
97
- 2
97
+ 1
98
98
  ]
99
99
  },
100
100
  "register": 2
@@ -141,10 +141,10 @@
141
141
  "time": {
142
142
  "hooks": {
143
143
  "modifyAppData": [
144
- 75
144
+ 72
145
145
  ]
146
146
  },
147
- "register": 24
147
+ "register": 22
148
148
  },
149
149
  "enableBy": "register"
150
150
  },
@@ -157,7 +157,7 @@
157
157
  "config": {},
158
158
  "time": {
159
159
  "hooks": {},
160
- "register": 1
160
+ "register": 0
161
161
  },
162
162
  "enableBy": "register"
163
163
  },
@@ -194,7 +194,7 @@
194
194
  0
195
195
  ]
196
196
  },
197
- "register": 0
197
+ "register": 1
198
198
  },
199
199
  "enableBy": "register"
200
200
  },
@@ -224,7 +224,7 @@
224
224
  0
225
225
  ]
226
226
  },
227
- "register": 7
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": 98
1122
+ "register": 100
1123
1123
  },
1124
1124
  "enableBy": "register"
1125
1125
  },
@@ -1201,7 +1201,7 @@
1201
1201
  "config": {},
1202
1202
  "time": {
1203
1203
  "hooks": {},
1204
- "register": 31
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
  },
@@ -1226,7 +1226,7 @@
1226
1226
  "config": {},
1227
1227
  "time": {
1228
1228
  "hooks": {},
1229
- "register": 0
1229
+ "register": 1
1230
1230
  }
1231
1231
  },
1232
1232
  "./node_modules/@umijs/preset-umi/dist/features/overrides/overrides": {
@@ -1238,7 +1238,7 @@
1238
1238
  "config": {},
1239
1239
  "time": {
1240
1240
  "hooks": {},
1241
- "register": 1
1241
+ "register": 0
1242
1242
  },
1243
1243
  "enableBy": "register"
1244
1244
  },
@@ -1251,7 +1251,7 @@
1251
1251
  "config": {},
1252
1252
  "time": {
1253
1253
  "hooks": {},
1254
- "register": 0
1254
+ "register": 1
1255
1255
  },
1256
1256
  "enableBy": "config"
1257
1257
  },
@@ -1265,10 +1265,10 @@
1265
1265
  "time": {
1266
1266
  "hooks": {
1267
1267
  "modifyConfig": [
1268
- 0
1268
+ 1
1269
1269
  ]
1270
1270
  },
1271
- "register": 2
1271
+ "register": 1
1272
1272
  }
1273
1273
  },
1274
1274
  "./node_modules/@umijs/preset-umi/dist/features/polyfill/publicPathPolyfill": {
@@ -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
  },
@@ -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
  },
@@ -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": 27
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
  },
@@ -1677,7 +1677,7 @@
1677
1677
  "config": {},
1678
1678
  "time": {
1679
1679
  "hooks": {},
1680
- "register": 1
1680
+ "register": 0
1681
1681
  },
1682
1682
  "enableBy": "register"
1683
1683
  },
@@ -1690,7 +1690,7 @@
1690
1690
  "config": {},
1691
1691
  "time": {
1692
1692
  "hooks": {},
1693
- "register": 0
1693
+ "register": 1
1694
1694
  },
1695
1695
  "enableBy": "register"
1696
1696
  },
@@ -1703,7 +1703,7 @@
1703
1703
  "config": {},
1704
1704
  "time": {
1705
1705
  "hooks": {},
1706
- "register": 1
1706
+ "register": 0
1707
1707
  },
1708
1708
  "enableBy": "register"
1709
1709
  },
@@ -1716,7 +1716,7 @@
1716
1716
  "config": {},
1717
1717
  "time": {
1718
1718
  "hooks": {},
1719
- "register": 0
1719
+ "register": 1
1720
1720
  },
1721
1721
  "enableBy": "register"
1722
1722
  },
@@ -1729,7 +1729,7 @@
1729
1729
  "config": {},
1730
1730
  "time": {
1731
1731
  "hooks": {},
1732
- "register": 1
1732
+ "register": 0
1733
1733
  },
1734
1734
  "enableBy": "register"
1735
1735
  },
@@ -1807,7 +1807,7 @@
1807
1807
  "config": {},
1808
1808
  "time": {
1809
1809
  "hooks": {},
1810
- "register": 0
1810
+ "register": 1
1811
1811
  },
1812
1812
  "enableBy": "register"
1813
1813
  },
@@ -1820,7 +1820,7 @@
1820
1820
  "config": {},
1821
1821
  "time": {
1822
1822
  "hooks": {},
1823
- "register": 1
1823
+ "register": 0
1824
1824
  },
1825
1825
  "enableBy": "register"
1826
1826
  },
@@ -1924,7 +1924,7 @@
1924
1924
  "config": {},
1925
1925
  "time": {
1926
1926
  "hooks": {},
1927
- "register": 0
1927
+ "register": 1
1928
1928
  },
1929
1929
  "enableBy": "register"
1930
1930
  },
@@ -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
  },
@@ -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',