@jiangood/open-admin 1.0.1 → 1.1.0
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/config/common-plugin.js +94 -0
- package/config/config.js +58 -0
- package/config/utils.js +73 -0
- package/package.json +8 -11
- package/src/.umi-production/appData.json +2365 -0
- package/src/.umi-production/core/EmptyRoute.tsx +9 -0
- package/src/.umi-production/core/defineApp.ts +16 -0
- package/src/.umi-production/core/helmet.ts +10 -0
- package/src/.umi-production/core/helmetContext.ts +4 -0
- package/src/.umi-production/core/history.ts +72 -0
- package/src/.umi-production/core/historyIntelli.ts +132 -0
- package/src/.umi-production/core/plugin.ts +40 -0
- package/src/.umi-production/core/pluginConfig.ts +324 -0
- package/src/.umi-production/core/pluginConfigJoi.d.ts +7 -0
- package/src/.umi-production/core/polyfill.ts +220 -0
- package/src/.umi-production/core/route.tsx +54 -0
- package/src/.umi-production/core/routeProps.js +5 -0
- package/src/.umi-production/core/routeProps.ts +6 -0
- package/src/.umi-production/core/terminal.ts +37 -0
- package/src/.umi-production/exports.ts +17 -0
- package/src/.umi-production/testBrowser.tsx +90 -0
- package/src/.umi-production/tsconfig.json +44 -0
- package/src/.umi-production/typings.d.ts +136 -0
- package/src/.umi-production/umi.ts +83 -0
- package/src/framework/components/{DownloadFileButton.jsx → DownloadFileButton/index.jsx} +1 -1
- package/src/framework/components/{LinkButton.d.ts → LinkButton/index.d.ts} +1 -1
- package/src/framework/components/{LinkButton.jsx → LinkButton/index.jsx} +1 -1
- package/src/framework/components/NamedIcon/index.d.ts +5 -0
- package/src/framework/components/{NamedIcon.tsx → NamedIcon/index.jsx} +1 -5
- package/src/framework/components/OrgTree/index.d.ts +4 -0
- package/src/framework/{field-components/system/OrgTree.tsx → components/OrgTree/index.jsx} +1 -4
- package/src/framework/components/PageLoading/index.d.ts +1 -0
- package/src/framework/components/{PageLoading.tsx → PageLoading/index.jsx} +3 -5
- package/src/framework/components/RoleTree/index.d.ts +4 -0
- package/src/framework/{field-components/system/RoleTree.tsx → components/RoleTree/index.jsx} +1 -4
- package/src/framework/components/ValueType/index.jsx +1 -1
- package/src/framework/components/ValueType/registry.jsx +2 -3
- package/src/framework/components/{view/ViewRange → ViewRange}/index.d.ts +5 -7
- package/src/framework/components/index.ts +3 -7
- package/src/framework/components/system/index.tsx +1 -1
- package/src/framework/fields/FieldBoolean/index.d.ts +9 -0
- package/src/framework/{field-components/FieldBoolean.jsx → fields/FieldBoolean/index.jsx} +6 -9
- package/src/framework/{field-components/FieldDate.d.ts → fields/FieldDate/index.d.ts} +5 -9
- package/src/framework/{field-components/FieldDate.jsx → fields/FieldDate/index.jsx} +28 -26
- package/src/framework/fields/FieldDateRange/index.d.ts +22 -0
- package/src/framework/{field-components/FieldDateRange.jsx → fields/FieldDateRange/index.jsx} +26 -27
- package/src/framework/fields/FieldDictSelect/index.d.ts +12 -0
- package/src/framework/{field-components/FieldDictSelect.jsx → fields/FieldDictSelect/index.jsx} +5 -5
- package/src/framework/fields/FieldEditor/index.d.ts +14 -0
- package/src/framework/fields/FieldEditor/index.jsx +59 -0
- package/src/framework/fields/FieldNumberRange/index.d.ts +10 -0
- package/src/framework/{field-components/FieldNumberRange.jsx → fields/FieldNumberRange/index.jsx} +20 -24
- package/src/framework/fields/FieldPercent/index.d.ts +8 -0
- package/src/framework/{field-components/FieldPercent.jsx → fields/FieldPercent/index.jsx} +9 -6
- package/src/framework/fields/FieldRemoteSelect/index.d.ts +44 -0
- package/src/framework/fields/FieldRemoteSelect/index.jsx +125 -0
- package/src/framework/fields/FieldRemoteSelectMultiple/index.d.ts +20 -0
- package/src/framework/{field-components/FieldRemoteSelectMultiple.jsx → fields/FieldRemoteSelectMultiple/index.jsx} +4 -5
- package/src/framework/fields/FieldRemoteSelectMultipleInline/index.d.ts +21 -0
- package/src/framework/{field-components/FieldRemoteSelectMultipleInline.jsx → fields/FieldRemoteSelectMultipleInline/index.jsx} +8 -6
- package/src/framework/fields/FieldRemoteTree/index.d.ts +20 -0
- package/src/framework/fields/FieldRemoteTree/index.jsx +50 -0
- package/src/framework/{field-components/FieldRemoteTreeCascader.d.ts → fields/FieldRemoteTreeCascader/index.d.ts} +10 -15
- package/src/framework/{field-components/FieldRemoteTreeCascader.jsx → fields/FieldRemoteTreeCascader/index.jsx} +11 -13
- package/src/framework/fields/FieldRemoteTreeSelect/index.d.ts +19 -0
- package/src/framework/{field-components/FieldRemoteTreeSelect.jsx → fields/FieldRemoteTreeSelect/index.jsx} +10 -20
- package/src/framework/fields/FieldRemoteTreeSelectMultiple/index.d.ts +20 -0
- package/src/framework/{field-components/FieldRemoteTreeSelectMultiple.jsx → fields/FieldRemoteTreeSelectMultiple/index.jsx} +11 -21
- package/src/framework/fields/FieldSysOrgTree/index.d.ts +9 -0
- package/src/framework/fields/FieldSysOrgTree/index.jsx +20 -0
- package/src/framework/fields/FieldSysOrgTreeSelect/index.d.ts +9 -0
- package/src/framework/{field-components/FieldSysOrgTreeSelect.jsx → fields/FieldSysOrgTreeSelect/index.jsx} +7 -8
- package/src/framework/fields/FieldTable/index.d.ts +14 -0
- package/src/framework/{field-components/FieldTable.jsx → fields/FieldTable/index.jsx} +38 -38
- package/src/framework/fields/FieldTableSelect/index.d.ts +19 -0
- package/src/framework/{field-components/FieldTableSelect.jsx → fields/FieldTableSelect/index.jsx} +13 -12
- package/src/framework/{field-components/FieldUploadFile.d.ts → fields/FieldUploadFile/index.d.ts} +12 -15
- package/src/framework/{field-components/FieldUploadFile.jsx → fields/FieldUploadFile/index.jsx} +32 -34
- package/src/framework/{field-components → fields}/index.ts +2 -1
- package/src/framework/fields/types.ts +16 -0
- package/src/framework/index.ts +2 -2
- package/src/framework/utils/index.ts +0 -1
- package/src/framework/utils/system/DictUtils.ts +1 -1
- package/src/framework/views/ViewApproveStatus/index.d.ts +3 -0
- package/src/framework/{view-components/ViewApproveStatus.tsx → views/ViewApproveStatus/index.jsx} +3 -8
- package/src/framework/views/ViewBoolean/index.d.ts +3 -0
- package/src/framework/views/ViewBoolean/index.jsx +4 -0
- package/src/framework/views/ViewBooleanEnableDisable/index.d.ts +5 -0
- package/src/framework/{components/view/ViewBooleanEnableDisable.tsx → views/ViewBooleanEnableDisable/index.jsx} +2 -7
- package/src/framework/{components/view/ViewFileButton.d.ts → views/ViewFile/index.d.ts} +3 -3
- package/src/framework/views/ViewFileButton/index.d.ts +10 -0
- package/src/framework/views/ViewFileButton/index.jsx +22 -0
- package/src/framework/views/ViewImage/index.d.ts +6 -0
- package/src/framework/views/ViewPassword/index.d.ts +5 -0
- package/src/framework/{view-components/ViewPassword.tsx → views/ViewPassword/index.jsx} +2 -3
- package/src/framework/views/ViewProcessInstanceProgress/index.d.ts +12 -0
- package/src/framework/{view-components/ViewFlowableInstanceProgress.jsx → views/ViewProcessInstanceProgress/index.jsx} +2 -2
- package/src/framework/views/ViewProcessInstanceProgressButton/index.d.ts +6 -0
- package/src/framework/{view-components/ViewFlowableInstanceProgressButton.tsx → views/ViewProcessInstanceProgressButton/index.jsx} +4 -6
- package/src/framework/views/ViewText/index.d.ts +16 -0
- package/src/framework/views/ViewText/index.jsx +42 -0
- package/src/framework/views/index.ts +12 -0
- package/src/framework/views/types.ts +26 -0
- package/src/layouts/admin/index.jsx +0 -2
- package/src/layouts/index.jsx +38 -16
- package/src/pages/404.jsx +4 -4
- package/src/pages/about.jsx +0 -2
- package/src/pages/index.jsx +4 -19
- package/src/pages/login.jsx +3 -8
- package/src/pages/system/api/ApiDoc.jsx +19 -15
- package/src/pages/system/api/index.jsx +23 -24
- package/src/pages/system/api/perm.jsx +4 -4
- package/src/pages/system/dict/Dict.jsx +0 -5
- package/src/pages/system/dict/DictItem.jsx +23 -25
- package/src/pages/system/dict/index.jsx +2 -2
- package/src/pages/system/file/index.jsx +16 -29
- package/src/pages/system/job/index.jsx +44 -44
- package/src/pages/system/log/index.jsx +3 -4
- package/src/pages/system/org/index.jsx +34 -36
- package/src/pages/system/role/index.jsx +68 -74
- package/src/pages/system/role/perm.jsx +0 -1
- package/src/pages/system/sysManual/index.jsx +27 -28
- package/src/pages/system/user/UserPerm.jsx +5 -8
- package/src/pages/system/user/index.jsx +46 -51
- package/src/pages/test/views.jsx +95 -0
- package/src/pages/ureport/index.jsx +2 -2
- package/src/pages/userCenter/ChangePassword.jsx +2 -1
- package/src/pages/userCenter/index.jsx +8 -8
- package/src/pages/userCenter/manual.jsx +3 -5
- package/src/pages/userCenter/message.jsx +14 -16
- package/config/dist/common-plugin.js +0 -149
- package/config/dist/config.js +0 -45
- package/config/dist/index.js +0 -18
- package/src/app.js +0 -1
- package/src/asserts/welcome.png +0 -0
- package/src/forms/demoForm.jsx +0 -16
- package/src/framework/components/Ellipsis.jsx +0 -39
- package/src/framework/components/Ellipsis.less +0 -8
- package/src/framework/components/view/ViewEllipsis.d.ts +0 -11
- package/src/framework/components/view/ViewEllipsis.jsx +0 -30
- package/src/framework/components/view/ViewFile.d.ts +0 -10
- package/src/framework/components/view/ViewFileButton.jsx +0 -0
- package/src/framework/components/view/ViewImage.d.ts +0 -9
- package/src/framework/components/view/ViewText.tsx +0 -16
- package/src/framework/components/view/index.ts +0 -10
- package/src/framework/field-components/FieldBoolean.d.ts +0 -13
- package/src/framework/field-components/FieldDateRange.d.ts +0 -6
- package/src/framework/field-components/FieldDictSelect.d.ts +0 -13
- package/src/framework/field-components/FieldEditor.d.ts +0 -10
- package/src/framework/field-components/FieldEditor.jsx +0 -58
- package/src/framework/field-components/FieldNumberRange.d.ts +0 -13
- package/src/framework/field-components/FieldPercent.d.ts +0 -12
- package/src/framework/field-components/FieldRemoteSelect.d.ts +0 -13
- package/src/framework/field-components/FieldRemoteSelect.jsx +0 -87
- package/src/framework/field-components/FieldRemoteSelectMultiple.d.ts +0 -13
- package/src/framework/field-components/FieldRemoteSelectMultipleInline.d.ts +0 -20
- package/src/framework/field-components/FieldRemoteTree.d.ts +0 -21
- package/src/framework/field-components/FieldRemoteTree.jsx +0 -45
- package/src/framework/field-components/FieldRemoteTreeSelect.d.ts +0 -17
- package/src/framework/field-components/FieldRemoteTreeSelectMultiple.d.ts +0 -17
- package/src/framework/field-components/FieldSysOrgTree.d.ts +0 -12
- package/src/framework/field-components/FieldSysOrgTree.jsx +0 -23
- package/src/framework/field-components/FieldSysOrgTreeSelect.d.ts +0 -12
- package/src/framework/field-components/FieldTable.d.ts +0 -17
- package/src/framework/field-components/FieldTableSelect.d.ts +0 -19
- package/src/framework/field-components/system/index.ts +0 -2
- package/src/framework/view-components/ViewBoolean.tsx +0 -6
- package/src/framework/view-components/ViewFlowableInstanceProgress.d.ts +0 -12
- package/src/framework/view-components/ViewProps.ts +0 -11
- package/src/framework/view-components/index.ts +0 -6
- package/src/pages/test.jsx +0 -200
- /package/src/framework/components/{DownloadFileButton.d.ts → DownloadFileButton/index.d.ts} +0 -0
- /package/src/framework/components/{view/ViewRange → ViewRange}/index.jsx +0 -0
- /package/src/framework/{field-components/FieldTable.less → fields/FieldTable/styles.less} +0 -0
- /package/src/framework/{components/view/ViewFile.jsx → views/ViewFile/index.jsx} +0 -0
- /package/src/framework/{components/view/ViewImage.jsx → views/ViewImage/index.jsx} +0 -0
|
@@ -2,9 +2,11 @@ import {PlusOutlined} from '@ant-design/icons';
|
|
|
2
2
|
import {Button, Form, Input, Modal, Popconfirm, Splitter, Tabs} from 'antd';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import {
|
|
5
|
-
ButtonList,
|
|
5
|
+
ButtonList,
|
|
6
|
+
DictUtils,
|
|
6
7
|
FieldBoolean,
|
|
7
|
-
FieldSysOrgTreeSelect,
|
|
8
|
+
FieldSysOrgTreeSelect,
|
|
9
|
+
HttpUtils,
|
|
8
10
|
OrgTree,
|
|
9
11
|
Page,
|
|
10
12
|
ProTable,
|
|
@@ -20,13 +22,45 @@ export default class extends React.Component {
|
|
|
20
22
|
formValues: {},
|
|
21
23
|
|
|
22
24
|
currentOrgId: null,
|
|
23
|
-
currentRoleId:null,
|
|
25
|
+
currentRoleId: null,
|
|
24
26
|
}
|
|
25
27
|
permRef = React.createRef();
|
|
26
28
|
|
|
27
29
|
formRef = React.createRef()
|
|
28
30
|
tableRef = React.createRef()
|
|
29
31
|
|
|
32
|
+
resetPwd(row) {
|
|
33
|
+
HttpUtils.post('admin/sysUser/resetPwd', {id: row.id}).then(rs => {
|
|
34
|
+
Modal.success({
|
|
35
|
+
title: '重置密码成功',
|
|
36
|
+
content: rs
|
|
37
|
+
})
|
|
38
|
+
})
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
handleDelete = r => {
|
|
42
|
+
HttpUtils.get('admin/sysUser/delete', {id: r.id}).then(rs => {
|
|
43
|
+
this.tableRef.current.reload();
|
|
44
|
+
})
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
onSelectOrg = (key) => {
|
|
48
|
+
this.setState({currentOrgId: key}, () => this.tableRef.current.reload())
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
onSelectRole = (key) => {
|
|
52
|
+
this.setState({currentRoleId: key}, () => this.tableRef.current.reload())
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
handleAdd = () => {
|
|
56
|
+
this.setState({formOpen: true, formValues: {}})
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
handleEdit = record => {
|
|
60
|
+
record.deptId = record.deptId || record.unitId
|
|
61
|
+
this.setState({formOpen: true, formValues: record})
|
|
62
|
+
}
|
|
63
|
+
|
|
30
64
|
columns = [
|
|
31
65
|
{
|
|
32
66
|
title: '单位',
|
|
@@ -88,7 +122,7 @@ export default class extends React.Component {
|
|
|
88
122
|
{
|
|
89
123
|
title: '操作',
|
|
90
124
|
dataIndex: 'option',
|
|
91
|
-
fixed:'right',
|
|
125
|
+
fixed: 'right',
|
|
92
126
|
render: (_, record) => {
|
|
93
127
|
return <ButtonList>
|
|
94
128
|
<Button size='small' perm='sysUser:save' onClick={() => this.handleEdit(record)}> 编辑 </Button>
|
|
@@ -97,57 +131,18 @@ export default class extends React.Component {
|
|
|
97
131
|
onClick={() => this.permRef.current.show(record)}> 授权 </Button>
|
|
98
132
|
|
|
99
133
|
<Popconfirm perm='sysUser:resetPwd' title='确认重置密码?' onConfirm={() => this.resetPwd(record)}>
|
|
100
|
-
<Button
|
|
134
|
+
<Button size='small'>重置密码</Button>
|
|
101
135
|
</Popconfirm>
|
|
102
136
|
|
|
103
137
|
<Popconfirm perm='sysUser:delete' title={'是否确定删除用户'}
|
|
104
138
|
onConfirm={() => this.handleDelete(record)}>
|
|
105
|
-
<Button
|
|
139
|
+
<Button size='small'>删除</Button>
|
|
106
140
|
</Popconfirm>
|
|
107
141
|
</ButtonList>;
|
|
108
142
|
},
|
|
109
143
|
},
|
|
110
144
|
];
|
|
111
145
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
resetPwd(row) {
|
|
116
|
-
HttpUtils.post('admin/sysUser/resetPwd', {id: row.id}).then(rs => {
|
|
117
|
-
Modal.success({
|
|
118
|
-
title: '重置密码成功',
|
|
119
|
-
content: rs
|
|
120
|
-
})
|
|
121
|
-
})
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
handleDelete = r => {
|
|
126
|
-
HttpUtils.get('admin/sysUser/delete', {id: r.id}).then(rs => {
|
|
127
|
-
this.tableRef.current.reload();
|
|
128
|
-
})
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
onSelectOrg = (key) => {
|
|
134
|
-
this.setState({currentOrgId: key}, () => this.tableRef.current.reload())
|
|
135
|
-
}
|
|
136
|
-
onSelectRole = (key) => {
|
|
137
|
-
this.setState({currentRoleId: key}, () => this.tableRef.current.reload())
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
handleAdd = () => {
|
|
142
|
-
this.setState({formOpen: true, formValues: {}})
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
handleEdit = record => {
|
|
146
|
-
record.deptId = record.deptId || record.unitId
|
|
147
|
-
this.setState({formOpen: true, formValues: record})
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
|
|
151
146
|
onFinish = values => {
|
|
152
147
|
HttpUtils.post('admin/sysUser/save', values).then(rs => {
|
|
153
148
|
this.setState({formOpen: false})
|
|
@@ -157,9 +152,9 @@ export default class extends React.Component {
|
|
|
157
152
|
|
|
158
153
|
render() {
|
|
159
154
|
|
|
160
|
-
return <Page
|
|
161
|
-
<Splitter
|
|
162
|
-
<Splitter.Panel defaultSize={400}
|
|
155
|
+
return <Page>
|
|
156
|
+
<Splitter>
|
|
157
|
+
<Splitter.Panel defaultSize={400}>
|
|
163
158
|
<Tabs
|
|
164
159
|
type='card'
|
|
165
160
|
size='small'
|
|
@@ -167,7 +162,7 @@ export default class extends React.Component {
|
|
|
167
162
|
{
|
|
168
163
|
key: 'org',
|
|
169
164
|
label: '按组织机构',
|
|
170
|
-
children:
|
|
165
|
+
children: <OrgTree onChange={this.onSelectOrg}/>
|
|
171
166
|
},
|
|
172
167
|
{
|
|
173
168
|
key: 'role',
|
|
@@ -177,7 +172,7 @@ export default class extends React.Component {
|
|
|
177
172
|
]}/>
|
|
178
173
|
|
|
179
174
|
</Splitter.Panel>
|
|
180
|
-
<Splitter.Panel style={{paddingLeft:16}}>
|
|
175
|
+
<Splitter.Panel style={{paddingLeft: 16}}>
|
|
181
176
|
<ProTable
|
|
182
177
|
actionRef={this.tableRef}
|
|
183
178
|
toolBarRender={() => {
|
|
@@ -220,7 +215,7 @@ export default class extends React.Component {
|
|
|
220
215
|
<Form.Item name='id' noStyle></Form.Item>
|
|
221
216
|
|
|
222
217
|
<Form.Item label='所属机构' name='deptId' rules={[{required: true}]}>
|
|
223
|
-
<FieldSysOrgTreeSelect
|
|
218
|
+
<FieldSysOrgTreeSelect/>
|
|
224
219
|
</Form.Item>
|
|
225
220
|
|
|
226
221
|
<Form.Item label='姓名' name='name' rules={[{required: true}]}>
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import {ViewText, ViewBoolean, ViewBooleanEnableDisable, ViewFile, ViewFileButton, ViewImage, ViewPassword, ViewApproveStatus, ViewProcessInstanceProgress, ViewProcessInstanceProgressButton} from "../../framework";
|
|
2
|
+
|
|
3
|
+
export function ViewTextTest() {
|
|
4
|
+
return <ViewText value='你好' />
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export function ViewBooleanTest() {
|
|
8
|
+
return <ViewBoolean value={true} />
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function ViewBooleanEnableDisableTest() {
|
|
12
|
+
return <ViewBooleanEnableDisable value={true} />
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function ViewTextEllipsisTest() {
|
|
16
|
+
return <ViewText value='这是一段很长的文本,用于测试省略显示功能' ellipsis={true} maxLength={10} />
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function ViewFileTest() {
|
|
20
|
+
return <ViewFile value='file123' height='200px' />
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function ViewFileButtonTest() {
|
|
24
|
+
return <ViewFileButton value='file123' height='200px' />
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function ViewImageTest() {
|
|
28
|
+
return <ViewImage value='https://via.placeholder.com/150' />
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function ViewPasswordTest() {
|
|
32
|
+
return <ViewPassword value='password123' />
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function ViewApproveStatusTest() {
|
|
36
|
+
return <ViewApproveStatus value='approved' />
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function ViewProcessInstanceProgressTest() {
|
|
40
|
+
return <ViewProcessInstanceProgress value='process123' />
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function ViewProcessInstanceProgressButtonTest() {
|
|
44
|
+
return <ViewProcessInstanceProgressButton value='process123' />
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export default function () {
|
|
48
|
+
return <>
|
|
49
|
+
<h1>View 组件测试</h1>
|
|
50
|
+
<div style={{marginBottom: '20px'}}>
|
|
51
|
+
<h2>ViewText</h2>
|
|
52
|
+
<ViewTextTest/>
|
|
53
|
+
</div>
|
|
54
|
+
<div style={{marginBottom: '20px'}}>
|
|
55
|
+
<h2>ViewBoolean</h2>
|
|
56
|
+
<ViewBooleanTest/>
|
|
57
|
+
</div>
|
|
58
|
+
<div style={{marginBottom: '20px'}}>
|
|
59
|
+
<h2>ViewBooleanEnableDisable</h2>
|
|
60
|
+
<ViewBooleanEnableDisableTest/>
|
|
61
|
+
</div>
|
|
62
|
+
<div style={{marginBottom: '20px'}}>
|
|
63
|
+
<h2>ViewText (with ellipsis)</h2>
|
|
64
|
+
<ViewTextEllipsisTest/>
|
|
65
|
+
</div>
|
|
66
|
+
<div style={{marginBottom: '20px'}}>
|
|
67
|
+
<h2>ViewFile</h2>
|
|
68
|
+
<ViewFileTest/>
|
|
69
|
+
</div>
|
|
70
|
+
<div style={{marginBottom: '20px'}}>
|
|
71
|
+
<h2>ViewFileButton</h2>
|
|
72
|
+
<ViewFileButtonTest/>
|
|
73
|
+
</div>
|
|
74
|
+
<div style={{marginBottom: '20px'}}>
|
|
75
|
+
<h2>ViewImage</h2>
|
|
76
|
+
<ViewImageTest/>
|
|
77
|
+
</div>
|
|
78
|
+
<div style={{marginBottom: '20px'}}>
|
|
79
|
+
<h2>ViewPassword</h2>
|
|
80
|
+
<ViewPasswordTest/>
|
|
81
|
+
</div>
|
|
82
|
+
<div style={{marginBottom: '20px'}}>
|
|
83
|
+
<h2>ViewApproveStatus</h2>
|
|
84
|
+
<ViewApproveStatusTest/>
|
|
85
|
+
</div>
|
|
86
|
+
<div style={{marginBottom: '20px'}}>
|
|
87
|
+
<h2>ViewProcessInstanceProgress</h2>
|
|
88
|
+
<ViewProcessInstanceProgressTest/>
|
|
89
|
+
</div>
|
|
90
|
+
<div style={{marginBottom: '20px'}}>
|
|
91
|
+
<h2>ViewProcessInstanceProgressButton</h2>
|
|
92
|
+
<ViewProcessInstanceProgressButtonTest/>
|
|
93
|
+
</div>
|
|
94
|
+
</>
|
|
95
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
|
-
import {Button
|
|
2
|
+
import {Button} from "antd";
|
|
3
3
|
|
|
4
4
|
export default class extends React.Component {
|
|
5
5
|
|
|
6
6
|
render() {
|
|
7
|
-
return <div style={{display:'flex',alignItems:'center',justifyContent:'center'}}>
|
|
7
|
+
return <div style={{display: 'flex', alignItems: 'center', justifyContent: 'center'}}>
|
|
8
8
|
<Button type='primary' href='/ureport/designer'>打开设计器</Button>
|
|
9
9
|
</div>
|
|
10
10
|
}
|
|
@@ -3,6 +3,7 @@ import {Button, Form, Input, Modal} from "antd";
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
import {history} from 'umi'
|
|
6
|
+
import {HttpUtils} from "../../framework";
|
|
6
7
|
|
|
7
8
|
export default class extends React.Component {
|
|
8
9
|
|
|
@@ -22,7 +23,7 @@ export default class extends React.Component {
|
|
|
22
23
|
|
|
23
24
|
validator = (rule, value) => {
|
|
24
25
|
return new Promise((resolve, reject) => {
|
|
25
|
-
HttpUtils.
|
|
26
|
+
HttpUtils.get("admin/sysUser/pwdStrength", {password: value}).then(response => {
|
|
26
27
|
const rs = response.data
|
|
27
28
|
if (!rs.success) {
|
|
28
29
|
reject(rs.message)
|
|
@@ -6,24 +6,24 @@ import {HttpUtils, Page} from "../../framework";
|
|
|
6
6
|
export default class extends React.Component {
|
|
7
7
|
|
|
8
8
|
state = {
|
|
9
|
-
info
|
|
9
|
+
info: {}
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
componentDidMount() {
|
|
13
|
-
HttpUtils.get('admin/userCenter/info').then(rs=>{
|
|
14
|
-
this.setState({info:rs})
|
|
13
|
+
HttpUtils.get('admin/userCenter/info').then(rs => {
|
|
14
|
+
this.setState({info: rs})
|
|
15
15
|
})
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
render() {
|
|
19
|
-
const {info} = this.state;
|
|
19
|
+
const {info} = this.state;
|
|
20
20
|
return <Page padding backgroundGray>
|
|
21
|
-
<Row gutter={[16,16]}>
|
|
21
|
+
<Row gutter={[16, 16]}>
|
|
22
22
|
<Col md={6} sm={24}>
|
|
23
23
|
<Card title='个人信息'>
|
|
24
24
|
|
|
25
|
-
<div className='flex-center' style={{marginBottom:32}}>
|
|
26
|
-
<Avatar size={128} title='点击修改头像'
|
|
25
|
+
<div className='flex-center' style={{marginBottom: 32}}>
|
|
26
|
+
<Avatar size={128} title='点击修改头像'/>
|
|
27
27
|
</div>
|
|
28
28
|
|
|
29
29
|
|
|
@@ -61,7 +61,7 @@ const {info} = this.state;
|
|
|
61
61
|
</table>
|
|
62
62
|
</Card>
|
|
63
63
|
</Col>
|
|
64
|
-
<Col md={18}
|
|
64
|
+
<Col md={18} sm={24}>
|
|
65
65
|
<Card title='个人设置'>
|
|
66
66
|
<Tabs
|
|
67
67
|
items={[
|
|
@@ -20,15 +20,15 @@ export default class extends React.Component {
|
|
|
20
20
|
title: '版本',
|
|
21
21
|
dataIndex: 'version',
|
|
22
22
|
render(version) {
|
|
23
|
-
return 'v' +version;
|
|
23
|
+
return 'v' + version;
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
|
|
27
27
|
{
|
|
28
28
|
title: '文件',
|
|
29
29
|
dataIndex: 'fileId',
|
|
30
|
-
render(id){
|
|
31
|
-
|
|
30
|
+
render(id) {
|
|
31
|
+
const url = ('admin/sysFile/preview/' + id);
|
|
32
32
|
return <a href={url} target='_blank'>查看文件</a>
|
|
33
33
|
}
|
|
34
34
|
|
|
@@ -41,8 +41,6 @@ export default class extends React.Component {
|
|
|
41
41
|
]
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
44
|
render() {
|
|
47
45
|
return <Page>
|
|
48
46
|
<ProTable
|
|
@@ -2,10 +2,16 @@ import React from "react";
|
|
|
2
2
|
import {Button, Card, Tabs, Tag} from "antd";
|
|
3
3
|
import {ProTable} from "../../framework";
|
|
4
4
|
|
|
5
|
-
export default class
|
|
5
|
+
export default class extends React.Component {
|
|
6
6
|
|
|
7
7
|
tableRef = React.createRef()
|
|
8
8
|
|
|
9
|
+
read = (record) => {
|
|
10
|
+
HttpUtils.post("admin/user/msg/read", record).then(rs => {
|
|
11
|
+
this.tableRef.current.reload()
|
|
12
|
+
})
|
|
13
|
+
}
|
|
14
|
+
|
|
9
15
|
columns = [
|
|
10
16
|
{
|
|
11
17
|
title: '时间',
|
|
@@ -41,31 +47,23 @@ export default class extends React.Component {
|
|
|
41
47
|
title: '-',
|
|
42
48
|
dataIndex: 'option',
|
|
43
49
|
render: (read, row) => {
|
|
44
|
-
if(!row.isRead)
|
|
45
|
-
|
|
46
|
-
},
|
|
50
|
+
if (!row.isRead)
|
|
51
|
+
return <Button size='small' onClick={() => this.read(row)}> 标记已读 </Button>
|
|
52
|
+
}, width: 80
|
|
47
53
|
}
|
|
48
54
|
]
|
|
49
55
|
|
|
50
|
-
read = (record) => {
|
|
51
|
-
HttpUtils.post("admin/user/msg/read", record).then(rs => {
|
|
52
|
-
this.tableRef.current.reload()
|
|
53
|
-
})
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
56
|
render() {
|
|
59
57
|
return <Card variant={"borderless"}>
|
|
60
58
|
|
|
61
59
|
<Tabs defaultActiveKey="0" destroyOnHidden
|
|
62
|
-
|
|
60
|
+
>
|
|
63
61
|
<Tabs.TabPane key='0' tab='所有消息'>
|
|
64
62
|
<ProTable
|
|
65
63
|
actionRef={this.tableRef}
|
|
66
64
|
request={(params) => HttpUtils.get("admin/user/msg/page", params)}
|
|
67
65
|
columns={this.columns}
|
|
68
|
-
toolbarOptions={{showSearch:false}}
|
|
66
|
+
toolbarOptions={{showSearch: false}}
|
|
69
67
|
size='small'
|
|
70
68
|
/>
|
|
71
69
|
</Tabs.TabPane>
|
|
@@ -76,7 +74,7 @@ export default class extends React.Component {
|
|
|
76
74
|
columns={this.columns}
|
|
77
75
|
rowSelection={false}
|
|
78
76
|
rowKey='id'
|
|
79
|
-
toolbarOptions={{showSearch:false}}
|
|
77
|
+
toolbarOptions={{showSearch: false}}
|
|
80
78
|
size='small'
|
|
81
79
|
/>
|
|
82
80
|
|
|
@@ -89,7 +87,7 @@ export default class extends React.Component {
|
|
|
89
87
|
request={(params) => HttpUtils.get("admin/user/msg/page?read=true", params)}
|
|
90
88
|
rowSelection={false}
|
|
91
89
|
rowKey='id'
|
|
92
|
-
toolbarOptions={{showSearch:false}}
|
|
90
|
+
toolbarOptions={{showSearch: false}}
|
|
93
91
|
options={false}
|
|
94
92
|
size='small'
|
|
95
93
|
columns={this.columns}
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var fs = require("fs");
|
|
4
|
-
var path = require("path");
|
|
5
|
-
var pkgName = '@jiangood/open-admin';
|
|
6
|
-
exports.default = (function (api) {
|
|
7
|
-
api.describe({
|
|
8
|
-
key: 'open-admin',
|
|
9
|
-
});
|
|
10
|
-
var isFramework = api.pkg.name === pkgName;
|
|
11
|
-
var frameworkDirs = Utils.getDirs(api.paths.absNodeModulesPath + "/@jiangood");
|
|
12
|
-
// ==================== 处理路由 ========================
|
|
13
|
-
// 让名字长的在最前面,插件名称通常时open-admin-xxx, 这样就能保证先解析插件的路由
|
|
14
|
-
frameworkDirs = frameworkDirs.reverse();
|
|
15
|
-
api.logger.info('依赖的框架:', frameworkDirs);
|
|
16
|
-
var _loop_1 = function (frameworkDir) {
|
|
17
|
-
api.logger.info("正在解析文件夹", frameworkDir);
|
|
18
|
-
// 处理路由
|
|
19
|
-
var routeFiles = Utils.findFilesSync(frameworkDir, /src\/pages\/.*\.jsx$/); // src/pages/**
|
|
20
|
-
api.logger.info("找到的页面文件:", routeFiles);
|
|
21
|
-
api.modifyRoutes(function (routes) {
|
|
22
|
-
for (var _i = 0, routeFiles_1 = routeFiles; _i < routeFiles_1.length; _i++) {
|
|
23
|
-
var file = routeFiles_1[_i];
|
|
24
|
-
var route = convertFileToRoute(file);
|
|
25
|
-
if (route) {
|
|
26
|
-
if (routes[route.id] == null) { // 如果用户项目没有这个路由,则加入。否则以用户项目为准
|
|
27
|
-
api.logger.info("加入路由:", route.id, "路径:", route.absPath);
|
|
28
|
-
routes[route.id] = route;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
api.logger.info("路由修改完成");
|
|
33
|
-
return routes;
|
|
34
|
-
});
|
|
35
|
-
};
|
|
36
|
-
for (var _i = 0, frameworkDirs_1 = frameworkDirs; _i < frameworkDirs_1.length; _i++) {
|
|
37
|
-
var frameworkDir = frameworkDirs_1[_i];
|
|
38
|
-
_loop_1(frameworkDir);
|
|
39
|
-
}
|
|
40
|
-
// =============== 处理表单 ========================
|
|
41
|
-
{ // 导入工具类 FormRegistryUtils
|
|
42
|
-
var importFrom_1 = path.join(api.paths.absSrcPath, 'framework');
|
|
43
|
-
if (!isFramework) {
|
|
44
|
-
importFrom_1 = path.join(api.paths.absNodeModulesPath, pkgName);
|
|
45
|
-
}
|
|
46
|
-
api.logger.info('formRegistryPath', importFrom_1);
|
|
47
|
-
api.addEntryImports(function () { return ({
|
|
48
|
-
source: importFrom_1,
|
|
49
|
-
specifier: '{FormRegistryUtils}'
|
|
50
|
-
}); });
|
|
51
|
-
}
|
|
52
|
-
Utils.findFilesSync(api.paths.absSrcPath, /forms\/.*\.jsx$/).forEach(function (file) {
|
|
53
|
-
var name = Utils.getFileMainName(file);
|
|
54
|
-
api.addEntryImports(function () { return ({
|
|
55
|
-
source: file,
|
|
56
|
-
specifier: name
|
|
57
|
-
}); });
|
|
58
|
-
// register form
|
|
59
|
-
api.addEntryCodeAhead(function () { return "FormRegistryUtils.register(\"".concat(name, "\",").concat(name, " );"); });
|
|
60
|
-
api.logger.info('新版本 formRegistry.register: ', name, file);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
function convertFileToRoute(file) {
|
|
64
|
-
var absPath = file;
|
|
65
|
-
var mainName = Utils.getFileMainName(file);
|
|
66
|
-
// 只添加小写开头的文件页面,大写的默认为组件
|
|
67
|
-
if (mainName.charAt(0) !== mainName.charAt(0).toLowerCase()) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
var routePath = file.substring(file.indexOf('pages') + 6, file.length - 4);
|
|
71
|
-
routePath = routePath.replaceAll("\$", ":"); // 文件$开头的会替换为路径变量 如$id 变为 :id
|
|
72
|
-
var parentId = "@@/global-layout";
|
|
73
|
-
if (routePath.endsWith("/index")) {
|
|
74
|
-
routePath = routePath.substring(0, routePath.length - 6);
|
|
75
|
-
}
|
|
76
|
-
return {
|
|
77
|
-
absPath: absPath,
|
|
78
|
-
id: routePath,
|
|
79
|
-
path: routePath,
|
|
80
|
-
file: file,
|
|
81
|
-
parentId: parentId
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
var Utils = /** @class */ (function () {
|
|
85
|
-
function Utils() {
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* 获取目录下的所有子目录
|
|
89
|
-
* @param dir
|
|
90
|
-
* @returns {string[]} 完整路径
|
|
91
|
-
*/
|
|
92
|
-
Utils.getDirs = function (dir) {
|
|
93
|
-
console.log('获取dir....', dir);
|
|
94
|
-
if (!fs.existsSync(dir))
|
|
95
|
-
throw new Error("\u76EE\u5F55\u4E0D\u5B58\u5728: ".concat(dir));
|
|
96
|
-
return fs.readdirSync(dir).map(function (item) {
|
|
97
|
-
var fullPath = path.join(dir, item);
|
|
98
|
-
if (fs.statSync(fullPath).isDirectory()) {
|
|
99
|
-
return path.join(dir, item);
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
};
|
|
103
|
-
/**
|
|
104
|
-
* 同步获取目录下所有文件
|
|
105
|
-
*/
|
|
106
|
-
Utils.getAllFilesSync = function (dir) {
|
|
107
|
-
if (!fs.existsSync(dir))
|
|
108
|
-
throw new Error("\u76EE\u5F55\u4E0D\u5B58\u5728: ".concat(dir));
|
|
109
|
-
var results = [];
|
|
110
|
-
function traverse(currentDir) {
|
|
111
|
-
fs.readdirSync(currentDir).forEach(function (item) {
|
|
112
|
-
var fullPath = path.join(currentDir, item);
|
|
113
|
-
if (fs.statSync(fullPath).isDirectory()) {
|
|
114
|
-
traverse(fullPath);
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
results.push(fullPath.split(path.sep).join('/'));
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
traverse(dir);
|
|
122
|
-
return results;
|
|
123
|
-
};
|
|
124
|
-
/**
|
|
125
|
-
* 同步查找匹配模式的文件
|
|
126
|
-
*
|
|
127
|
-
* @return 文件列表 全路径
|
|
128
|
-
*/
|
|
129
|
-
Utils.findFilesSync = function (dir, pattern) {
|
|
130
|
-
var files = this.getAllFilesSync(dir);
|
|
131
|
-
return files.filter(function (file) { return pattern.test(file); }).map(function (file) { return file.split(path.sep).join('/'); });
|
|
132
|
-
};
|
|
133
|
-
/**
|
|
134
|
-
* 获取文件名(不含后缀)
|
|
135
|
-
* @param {string} filePath - 文件路径
|
|
136
|
-
* @returns {string} 文件名(不含后缀)
|
|
137
|
-
*/
|
|
138
|
-
Utils.getFileMainName = function (filePath) {
|
|
139
|
-
// 从路径中提取文件名
|
|
140
|
-
var fileName = path.basename(filePath);
|
|
141
|
-
// 移除扩展名
|
|
142
|
-
var lastDotIndex = fileName.lastIndexOf('.');
|
|
143
|
-
if (lastDotIndex > 0) {
|
|
144
|
-
return fileName.substring(0, lastDotIndex);
|
|
145
|
-
}
|
|
146
|
-
return fileName; // 没有扩展名的情况
|
|
147
|
-
};
|
|
148
|
-
return Utils;
|
|
149
|
-
}());
|
package/config/dist/config.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var umi_1 = require("umi");
|
|
4
|
-
var fs = require("fs");
|
|
5
|
-
var path = require("path");
|
|
6
|
-
//https://umijs.org/docs/api/config
|
|
7
|
-
console.log('i am config.ts');
|
|
8
|
-
console.log('__dirname', __dirname);
|
|
9
|
-
console.log('process.cwd()', process.cwd());
|
|
10
|
-
var isFramework = fs.existsSync(path.join(process.cwd(), 'config/common-plugin.ts'));
|
|
11
|
-
console.log('isFramework', isFramework);
|
|
12
|
-
var pluginDir = isFramework ? './config' : '@jiangood/open-admin/config/dist';
|
|
13
|
-
console.log('pluginDir', pluginDir);
|
|
14
|
-
var host = '127.0.0.1:8080';
|
|
15
|
-
exports.default = (0, umi_1.defineConfig)({
|
|
16
|
-
// 配置是否让生成的文件包含 hash 后缀,通常用于增量发布和避免浏览器加载缓存。
|
|
17
|
-
hash: true,
|
|
18
|
-
history: { type: 'hash' },
|
|
19
|
-
// 复杂,还得设置忽略、编译等,先关掉
|
|
20
|
-
mfsu: false,
|
|
21
|
-
esbuildMinifyIIFE: true,
|
|
22
|
-
plugins: [
|
|
23
|
-
pluginDir + '/common-plugin',
|
|
24
|
-
],
|
|
25
|
-
proxy: {
|
|
26
|
-
'/admin': {
|
|
27
|
-
target: 'http://' + host,
|
|
28
|
-
changeOrigin: true,
|
|
29
|
-
},
|
|
30
|
-
'/preview': {
|
|
31
|
-
target: 'http://' + host,
|
|
32
|
-
changeOrigin: true,
|
|
33
|
-
},
|
|
34
|
-
'/ureport': {
|
|
35
|
-
target: 'http://' + host,
|
|
36
|
-
changeOrigin: true,
|
|
37
|
-
pathRewrite: { '^/ureport': '/ureport' },
|
|
38
|
-
},
|
|
39
|
-
'/admin/ws': {
|
|
40
|
-
target: 'ws://' + host,
|
|
41
|
-
changeOrigin: true,
|
|
42
|
-
ws: true,
|
|
43
|
-
},
|
|
44
|
-
}
|
|
45
|
-
});
|
package/config/dist/index.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./config"), exports);
|
|
18
|
-
__exportStar(require("./common-plugin"), exports);
|
package/src/app.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
console.log('i am app.js')
|
package/src/asserts/welcome.png
DELETED
|
Binary file
|
package/src/forms/demoForm.jsx
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import {Form, Input, InputNumber} from "antd";
|
|
2
|
-
|
|
3
|
-
export default function (){
|
|
4
|
-
|
|
5
|
-
return <div>
|
|
6
|
-
demo表单示例
|
|
7
|
-
<Form>
|
|
8
|
-
<Form.Item label="事由">
|
|
9
|
-
<Input/>
|
|
10
|
-
</Form.Item>
|
|
11
|
-
<Form.Item label="请假天数" name='days'>
|
|
12
|
-
<InputNumber/>
|
|
13
|
-
</Form.Item>
|
|
14
|
-
</Form>
|
|
15
|
-
</div>
|
|
16
|
-
}
|