@jiangood/open-admin 1.0.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.
Files changed (164) hide show
  1. package/config/dist/common-plugin.js +148 -0
  2. package/config/dist/config.js +45 -0
  3. package/config/dist/index.js +18 -0
  4. package/package.json +41 -0
  5. package/src/app.js +1 -0
  6. package/src/asserts/welcome.png +0 -0
  7. package/src/forms/demoForm.jsx +16 -0
  8. package/src/framework/components/DownloadFileButton.d.ts +11 -0
  9. package/src/framework/components/DownloadFileButton.jsx +33 -0
  10. package/src/framework/components/Ellipsis.jsx +39 -0
  11. package/src/framework/components/Ellipsis.less +8 -0
  12. package/src/framework/components/Gap/index.d.ts +23 -0
  13. package/src/framework/components/Gap/index.jsx +46 -0
  14. package/src/framework/components/LinkButton.d.ts +14 -0
  15. package/src/framework/components/LinkButton.jsx +10 -0
  16. package/src/framework/components/NamedIcon.tsx +15 -0
  17. package/src/framework/components/Page/index.d.ts +17 -0
  18. package/src/framework/components/Page/index.jsx +30 -0
  19. package/src/framework/components/Page/index.less +10 -0
  20. package/src/framework/components/PageLoading.tsx +27 -0
  21. package/src/framework/components/ProModal/index.tsx +66 -0
  22. package/src/framework/components/ProTable/components/ToolBar/index.jsx +123 -0
  23. package/src/framework/components/ProTable/components/ToolBar/index.less +53 -0
  24. package/src/framework/components/ProTable/index.d.ts +42 -0
  25. package/src/framework/components/ProTable/index.jsx +260 -0
  26. package/src/framework/components/ProTable/index.less +14 -0
  27. package/src/framework/components/ProTable/utils/index.js +43 -0
  28. package/src/framework/components/ValueType/index.jsx +34 -0
  29. package/src/framework/components/ValueType/registry.jsx +27 -0
  30. package/src/framework/components/index.ts +17 -0
  31. package/src/framework/components/system/ButtonList.d.ts +8 -0
  32. package/src/framework/components/system/ButtonList.jsx +42 -0
  33. package/src/framework/components/system/HasPerm.tsx +14 -0
  34. package/src/framework/components/system/index.tsx +29 -0
  35. package/src/framework/components/view/ViewBooleanEnableDisable.tsx +20 -0
  36. package/src/framework/components/view/ViewEllipsis.d.ts +11 -0
  37. package/src/framework/components/view/ViewEllipsis.jsx +30 -0
  38. package/src/framework/components/view/ViewFile.d.ts +10 -0
  39. package/src/framework/components/view/ViewFile.jsx +49 -0
  40. package/src/framework/components/view/ViewFileButton.d.ts +10 -0
  41. package/src/framework/components/view/ViewFileButton.jsx +0 -0
  42. package/src/framework/components/view/ViewImage.d.ts +9 -0
  43. package/src/framework/components/view/ViewImage.jsx +60 -0
  44. package/src/framework/components/view/ViewRange/index.d.ts +16 -0
  45. package/src/framework/components/view/ViewRange/index.jsx +20 -0
  46. package/src/framework/components/view/ViewText.tsx +16 -0
  47. package/src/framework/components/view/index.ts +10 -0
  48. package/src/framework/field-components/FieldBoolean.d.ts +13 -0
  49. package/src/framework/field-components/FieldBoolean.jsx +76 -0
  50. package/src/framework/field-components/FieldDate.d.ts +27 -0
  51. package/src/framework/field-components/FieldDate.jsx +114 -0
  52. package/src/framework/field-components/FieldDateRange.d.ts +6 -0
  53. package/src/framework/field-components/FieldDateRange.jsx +104 -0
  54. package/src/framework/field-components/FieldDictSelect.d.ts +13 -0
  55. package/src/framework/field-components/FieldDictSelect.jsx +16 -0
  56. package/src/framework/field-components/FieldEditor.d.ts +10 -0
  57. package/src/framework/field-components/FieldEditor.jsx +58 -0
  58. package/src/framework/field-components/FieldNumberRange.d.ts +13 -0
  59. package/src/framework/field-components/FieldNumberRange.jsx +59 -0
  60. package/src/framework/field-components/FieldPercent.d.ts +12 -0
  61. package/src/framework/field-components/FieldPercent.jsx +27 -0
  62. package/src/framework/field-components/FieldRemoteSelect.d.ts +13 -0
  63. package/src/framework/field-components/FieldRemoteSelect.jsx +87 -0
  64. package/src/framework/field-components/FieldRemoteSelectMultiple.d.ts +13 -0
  65. package/src/framework/field-components/FieldRemoteSelectMultiple.jsx +86 -0
  66. package/src/framework/field-components/FieldRemoteSelectMultipleInline.d.ts +20 -0
  67. package/src/framework/field-components/FieldRemoteSelectMultipleInline.jsx +86 -0
  68. package/src/framework/field-components/FieldRemoteTree.d.ts +21 -0
  69. package/src/framework/field-components/FieldRemoteTree.jsx +45 -0
  70. package/src/framework/field-components/FieldRemoteTreeCascader.d.ts +23 -0
  71. package/src/framework/field-components/FieldRemoteTreeCascader.jsx +61 -0
  72. package/src/framework/field-components/FieldRemoteTreeSelect.d.ts +17 -0
  73. package/src/framework/field-components/FieldRemoteTreeSelect.jsx +67 -0
  74. package/src/framework/field-components/FieldRemoteTreeSelectMultiple.d.ts +17 -0
  75. package/src/framework/field-components/FieldRemoteTreeSelectMultiple.jsx +72 -0
  76. package/src/framework/field-components/FieldSysOrgTree.d.ts +12 -0
  77. package/src/framework/field-components/FieldSysOrgTree.jsx +23 -0
  78. package/src/framework/field-components/FieldSysOrgTreeSelect.d.ts +12 -0
  79. package/src/framework/field-components/FieldSysOrgTreeSelect.jsx +23 -0
  80. package/src/framework/field-components/FieldTable.d.ts +17 -0
  81. package/src/framework/field-components/FieldTable.jsx +108 -0
  82. package/src/framework/field-components/FieldTable.less +29 -0
  83. package/src/framework/field-components/FieldTableSelect.d.ts +19 -0
  84. package/src/framework/field-components/FieldTableSelect.jsx +59 -0
  85. package/src/framework/field-components/FieldUploadFile.d.ts +34 -0
  86. package/src/framework/field-components/FieldUploadFile.jsx +141 -0
  87. package/src/framework/field-components/index.ts +21 -0
  88. package/src/framework/field-components/system/OrgTree.tsx +61 -0
  89. package/src/framework/field-components/system/RoleTree.tsx +53 -0
  90. package/src/framework/field-components/system/index.ts +2 -0
  91. package/src/framework/index.ts +5 -0
  92. package/src/framework/pages/LoginPage.d.ts +16 -0
  93. package/src/framework/pages/LoginPage.jsx +135 -0
  94. package/src/framework/pages/LoginPage.less +53 -0
  95. package/src/framework/pages/LoginPageUtils.ts +36 -0
  96. package/src/framework/pages/index.ts +2 -0
  97. package/src/framework/utils/ArrUtils.ts +229 -0
  98. package/src/framework/utils/ColorsUtils.ts +378 -0
  99. package/src/framework/utils/DateUtils.ts +187 -0
  100. package/src/framework/utils/DeviceUtils.ts +46 -0
  101. package/src/framework/utils/DomUtils.ts +50 -0
  102. package/src/framework/utils/EventBusUtils.ts +144 -0
  103. package/src/framework/utils/Logger.ts +40 -0
  104. package/src/framework/utils/MessageUtils.tsx +170 -0
  105. package/src/framework/utils/ObjectUtils.ts +118 -0
  106. package/src/framework/utils/StorageUtils.ts +50 -0
  107. package/src/framework/utils/StringUtils.ts +436 -0
  108. package/src/framework/utils/TreeUtils.ts +251 -0
  109. package/src/framework/utils/UrlUtils.ts +152 -0
  110. package/src/framework/utils/UuidUtils.ts +88 -0
  111. package/src/framework/utils/ValidateUtils.ts +28 -0
  112. package/src/framework/utils/index.ts +16 -0
  113. package/src/framework/utils/system/DictUtils.ts +97 -0
  114. package/src/framework/utils/system/FormRegistryUtils.ts +77 -0
  115. package/src/framework/utils/system/HttpUtils.ts +247 -0
  116. package/src/framework/utils/system/PageUtils.ts +163 -0
  117. package/src/framework/utils/system/PermUtils.ts +79 -0
  118. package/src/framework/utils/system/SysUtils.ts +97 -0
  119. package/src/framework/utils/system/ThemeUtils.ts +27 -0
  120. package/src/framework/utils/system/index.ts +7 -0
  121. package/src/framework/view-components/ViewApproveStatus.tsx +26 -0
  122. package/src/framework/view-components/ViewBoolean.tsx +6 -0
  123. package/src/framework/view-components/ViewFlowableInstanceProgress.d.ts +12 -0
  124. package/src/framework/view-components/ViewFlowableInstanceProgress.jsx +97 -0
  125. package/src/framework/view-components/ViewFlowableInstanceProgressButton.tsx +26 -0
  126. package/src/framework/view-components/ViewPassword.tsx +25 -0
  127. package/src/framework/view-components/ViewProps.ts +11 -0
  128. package/src/framework/view-components/index.ts +6 -0
  129. package/src/index.ts +2 -0
  130. package/src/layouts/PageRender.d.ts +22 -0
  131. package/src/layouts/PageRender.jsx +90 -0
  132. package/src/layouts/admin/HeaderRight.jsx +104 -0
  133. package/src/layouts/admin/TabPageRender.jsx +158 -0
  134. package/src/layouts/admin/index.jsx +161 -0
  135. package/src/layouts/admin/index.less +65 -0
  136. package/src/layouts/index.jsx +165 -0
  137. package/src/layouts/index.less +24 -0
  138. package/src/loading.jsx +18 -0
  139. package/src/pages/404.jsx +13 -0
  140. package/src/pages/about.jsx +14 -0
  141. package/src/pages/index.jsx +25 -0
  142. package/src/pages/login.jsx +21 -0
  143. package/src/pages/system/api/ApiDoc.jsx +144 -0
  144. package/src/pages/system/api/index.jsx +268 -0
  145. package/src/pages/system/api/perm.jsx +69 -0
  146. package/src/pages/system/dict/Dict.jsx +72 -0
  147. package/src/pages/system/dict/DictItem.jsx +177 -0
  148. package/src/pages/system/dict/index.jsx +25 -0
  149. package/src/pages/system/file/index.jsx +160 -0
  150. package/src/pages/system/job/index.jsx +324 -0
  151. package/src/pages/system/log/index.jsx +78 -0
  152. package/src/pages/system/org/index.jsx +262 -0
  153. package/src/pages/system/role/index.jsx +308 -0
  154. package/src/pages/system/role/perm.jsx +108 -0
  155. package/src/pages/system/sysManual/index.jsx +127 -0
  156. package/src/pages/system/user/UserPerm.jsx +97 -0
  157. package/src/pages/system/user/index.jsx +258 -0
  158. package/src/pages/test.jsx +200 -0
  159. package/src/pages/ureport/index.jsx +16 -0
  160. package/src/pages/userCenter/ChangePassword.jsx +63 -0
  161. package/src/pages/userCenter/index.jsx +90 -0
  162. package/src/pages/userCenter/manual.jsx +59 -0
  163. package/src/pages/userCenter/message.jsx +105 -0
  164. package/src/style/global.less +51 -0
@@ -0,0 +1,127 @@
1
+ import {PlusOutlined} from '@ant-design/icons'
2
+ import {Button, Form, Input, Modal, Popconfirm} from 'antd'
3
+ import React from 'react'
4
+ import {ButtonList, FieldUploadFile, HttpUtils, Page, ProTable} from "../../../framework";
5
+
6
+
7
+ export default class extends React.Component {
8
+
9
+ state = {
10
+ formValues: {},
11
+ formOpen: false
12
+ }
13
+
14
+ formRef = React.createRef()
15
+ tableRef = React.createRef()
16
+
17
+ columns = [
18
+
19
+ {
20
+ title: '名称',
21
+ dataIndex: 'name',
22
+
23
+
24
+ },
25
+
26
+ {
27
+ title: '版本',
28
+ dataIndex: 'version',
29
+ render(version) {
30
+ return 'v' +version;
31
+ }
32
+ },
33
+
34
+ {
35
+ title: '文件',
36
+ dataIndex: 'fileId',
37
+ render(id){
38
+ const url = 'admin/sysFile/preview/' + id;
39
+ return <a href={url} target='_blank'>查看文件</a>
40
+ }
41
+
42
+ },
43
+ {
44
+ title: '操作',
45
+ dataIndex: 'option',
46
+ render: (_, record) => (
47
+ <ButtonList>
48
+ <Button size='small' perm='sysManual:save' onClick={() => this.handleEdit(record)}>编辑</Button>
49
+ <Popconfirm perm='sysManual:delete' title='是否确定删除操作手册' onConfirm={() => this.handleDelete(record)}>
50
+ <Button size='small'>删除</Button>
51
+ </Popconfirm>
52
+ </ButtonList>
53
+ ),
54
+ },
55
+
56
+ ]
57
+
58
+ handleAdd = () => {
59
+ this.setState({formOpen: true, formValues: {}})
60
+ }
61
+
62
+ handleEdit = record => {
63
+ this.setState({formOpen: true, formValues: record})
64
+ }
65
+
66
+
67
+ onFinish = values => {
68
+ HttpUtils.post('admin/sysManual/save', values).then(rs => {
69
+ this.setState({formOpen: false})
70
+ this.tableRef.current.reload()
71
+ })
72
+ }
73
+
74
+
75
+ handleDelete = record => {
76
+ HttpUtils.get('admin/sysManual/delete', {id: record.id}).then(rs => {
77
+ this.tableRef.current.reload()
78
+ })
79
+ }
80
+
81
+ render() {
82
+ return <Page>
83
+ <ProTable
84
+ actionRef={this.tableRef}
85
+ toolBarRender={(params, {selectedRows, selectedRowKeys}) => {
86
+ return <ButtonList>
87
+ <Button perm='sysManual:save' type='primary' onClick={this.handleAdd}>
88
+ <PlusOutlined/> 新增
89
+ </Button>
90
+ </ButtonList>
91
+ }}
92
+ request={(params) => HttpUtils.get('admin/sysManual/page', params)}
93
+ columns={this.columns}
94
+
95
+ />
96
+
97
+ <Modal title='操作手册'
98
+ open={this.state.formOpen}
99
+ onOk={() => this.formRef.current.submit()}
100
+ onCancel={() => this.setState({formOpen: false})}
101
+ destroyOnHidden
102
+ maskClosable={false}
103
+ >
104
+
105
+ <Form ref={this.formRef} labelCol={{flex: '100px'}}
106
+ initialValues={this.state.formValues}
107
+ onFinish={this.onFinish}
108
+ >
109
+ <Form.Item name='id' noStyle></Form.Item>
110
+
111
+ <Form.Item label='名称' name='name' rules={[{required: true}]}>
112
+ <Input/>
113
+ </Form.Item>
114
+
115
+ <Form.Item label='文件' name='fileId' rules={[{required: true}]}>
116
+ <FieldUploadFile accept=".pdf" maxCount={1} />
117
+ </Form.Item>
118
+
119
+ </Form>
120
+ </Modal>
121
+ </Page>
122
+
123
+
124
+ }
125
+ }
126
+
127
+
@@ -0,0 +1,97 @@
1
+ import {Form, Modal} from 'antd';
2
+ import React from 'react';
3
+ import {FieldDictSelect, FieldRemoteSelectMultiple, FieldSysOrgTree, HttpUtils} from "../../../framework";
4
+
5
+
6
+ export default class UserPerm extends React.Component {
7
+
8
+
9
+ state = {
10
+ visible: false,
11
+
12
+ confirmLoading: false,
13
+
14
+ formValues: {
15
+ dataPermType: null
16
+ },
17
+ }
18
+ show(item) {
19
+ this.setState({visible: true})
20
+
21
+ HttpUtils.get('admin/sysUser/getPermInfo', {id: item.id}).then(rs => {
22
+ this.setState({formValues: rs})
23
+ this.formRef.current.setFieldsValue(rs)
24
+ })
25
+ }
26
+
27
+ handleSave = (values) => {
28
+ values.grantOrgIdList = this.state.checked
29
+
30
+ this.setState({
31
+ confirmLoading: true
32
+ })
33
+
34
+
35
+ HttpUtils.post('admin/sysUser/grantPerm', values).then(rs => {
36
+ this.setState({
37
+ visible: false,
38
+ confirmLoading: false
39
+ })
40
+ this.props.onOk()
41
+ }).finally(()=>{
42
+ this.setState({
43
+ confirmLoading: false
44
+ })
45
+
46
+ })
47
+ }
48
+
49
+
50
+
51
+ formRef = React.createRef()
52
+
53
+
54
+ render() {
55
+ let {visible, confirmLoading} = this.state
56
+
57
+ return <Modal
58
+ title="授权"
59
+ destroyOnHidden
60
+ width={600}
61
+ open={visible}
62
+ confirmLoading={confirmLoading}
63
+ onCancel={() => this.setState({visible: false})}
64
+ onOk={() => this.formRef.current.submit()}
65
+ >
66
+
67
+ <Form ref={this.formRef}
68
+ onFinish={this.handleSave}
69
+ onValuesChange={(change, values) => {
70
+ this.setState({formValues: values})
71
+ }}
72
+ labelCol={{flex: '100px'}}
73
+ >
74
+ <Form.Item name='id' noStyle></Form.Item>
75
+ <Form.Item label='角色' name='roleIds' rules={[{required: true}]}>
76
+ <FieldRemoteSelectMultiple url='admin/sysRole/options'/>
77
+ </Form.Item>
78
+ <Form.Item label='数据权限' name='dataPermType' rules={[{required: true}]}>
79
+ <FieldDictSelect typeCode='dataPermType' />
80
+ </Form.Item>
81
+
82
+
83
+ {this.state.formValues.dataPermType === 'CUSTOM' && <>
84
+ <Form.Item label='组织机构' name='orgIds'>
85
+ <FieldSysOrgTree />
86
+ </Form.Item>
87
+ </>}
88
+
89
+
90
+ </Form>
91
+
92
+
93
+ </Modal>
94
+ }
95
+
96
+
97
+ }
@@ -0,0 +1,258 @@
1
+ import {PlusOutlined} from '@ant-design/icons';
2
+ import {Button, Form, Input, Modal, Popconfirm, Splitter, Tabs} from 'antd';
3
+ import React from 'react';
4
+ import {
5
+ ButtonList, DictUtils,
6
+ FieldBoolean,
7
+ FieldSysOrgTreeSelect, HttpUtils,
8
+ OrgTree,
9
+ Page,
10
+ ProTable,
11
+ RoleTree
12
+ } from "../../../framework";
13
+ import UserPerm from "./UserPerm";
14
+
15
+ export default class extends React.Component {
16
+
17
+ state = {
18
+ showAddForm: false,
19
+ showEditForm: false,
20
+ formValues: {},
21
+
22
+ currentOrgId: null,
23
+ currentRoleId:null,
24
+ }
25
+ permRef = React.createRef();
26
+
27
+ formRef = React.createRef()
28
+ tableRef = React.createRef()
29
+
30
+ columns = [
31
+ {
32
+ title: '单位',
33
+ dataIndex: 'unitLabel',
34
+ },
35
+ {
36
+ title: '部门',
37
+ dataIndex: 'deptLabel',
38
+ },
39
+ {
40
+ title: '姓名',
41
+ dataIndex: 'name',
42
+ sorter: true
43
+ },
44
+ {
45
+ title: '登录账号',
46
+ dataIndex: 'account',
47
+ sorter: true
48
+ },
49
+
50
+
51
+ {
52
+ title: '手机',
53
+ dataIndex: 'phone'
54
+ },
55
+ {
56
+ title: '邮箱',
57
+ dataIndex: 'email'
58
+ },
59
+
60
+ {
61
+ title: '角色',
62
+ dataIndex: 'roleIds',
63
+ render: (_, row) => {
64
+ if (row.roleNames) {
65
+ return row.roleNames.join(',')
66
+ }
67
+ },
68
+ },
69
+ {
70
+ title: '状态',
71
+ dataIndex: 'enabled',
72
+ render(v) {
73
+ return v == null ? null : (v ? '是' : '否')
74
+ },
75
+ },
76
+ {
77
+ title: '数据权限',
78
+ dataIndex: 'dataPermType',
79
+ render(v) {
80
+ return DictUtils.dictTag('dataPermType', v)
81
+ }
82
+ },
83
+
84
+ {
85
+ title: '创建时间',
86
+ dataIndex: 'createTime',
87
+ },
88
+ {
89
+ title: '操作',
90
+ dataIndex: 'option',
91
+ fixed:'right',
92
+ render: (_, record) => {
93
+ return <ButtonList>
94
+ <Button size='small' perm='sysUser:save' onClick={() => this.handleEdit(record)}> 编辑 </Button>
95
+
96
+ <Button size='small' perm='sysUser:grantPerm'
97
+ onClick={() => this.permRef.current.show(record)}> 授权 </Button>
98
+
99
+ <Popconfirm perm='sysUser:resetPwd' title='确认重置密码?' onConfirm={() => this.resetPwd(record)}>
100
+ <Button size='small' >重置密码</Button>
101
+ </Popconfirm>
102
+
103
+ <Popconfirm perm='sysUser:delete' title={'是否确定删除用户'}
104
+ onConfirm={() => this.handleDelete(record)}>
105
+ <Button size='small' >删除</Button>
106
+ </Popconfirm>
107
+ </ButtonList>;
108
+ },
109
+ },
110
+ ];
111
+
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
+ onFinish = values => {
152
+ HttpUtils.post('admin/sysUser/save', values).then(rs => {
153
+ this.setState({formOpen: false})
154
+ this.tableRef.current.reload()
155
+ })
156
+ }
157
+
158
+ render() {
159
+
160
+ return <Page >
161
+ <Splitter >
162
+ <Splitter.Panel defaultSize={400} >
163
+ <Tabs
164
+ type='card'
165
+ size='small'
166
+ items={[
167
+ {
168
+ key: 'org',
169
+ label: '按组织机构',
170
+ children: <OrgTree onChange={this.onSelectOrg}/>
171
+ },
172
+ {
173
+ key: 'role',
174
+ label: '按角色',
175
+ children: <RoleTree onSelect={this.onSelectRole}/>
176
+ }
177
+ ]}/>
178
+
179
+ </Splitter.Panel>
180
+ <Splitter.Panel style={{paddingLeft:16}}>
181
+ <ProTable
182
+ actionRef={this.tableRef}
183
+ toolBarRender={() => {
184
+ return <ButtonList>
185
+ <Button
186
+ perm='sysUser:save'
187
+ type="primary"
188
+ onClick={this.handleAdd}>
189
+ <PlusOutlined/> 新增
190
+ </Button>
191
+
192
+
193
+ </ButtonList>
194
+ }}
195
+ showToolbarSearch
196
+ request={(params) => {
197
+ params.orgId = this.state.currentOrgId
198
+ params.roleId = this.state.currentRoleId
199
+ return HttpUtils.get('admin/sysUser/page', params)
200
+ }
201
+ }
202
+ columns={this.columns}
203
+ >
204
+
205
+ </ProTable>
206
+ </Splitter.Panel>
207
+ </Splitter>
208
+
209
+
210
+ <Modal title='系统用户'
211
+ open={this.state.formOpen}
212
+ onOk={() => this.formRef.current.submit()}
213
+ onCancel={() => this.setState({formOpen: false})}
214
+ destroyOnHidden
215
+ >
216
+
217
+ <Form ref={this.formRef} labelCol={{flex: '100px'}}
218
+ initialValues={this.state.formValues}
219
+ onFinish={this.onFinish}>
220
+ <Form.Item name='id' noStyle></Form.Item>
221
+
222
+ <Form.Item label='所属机构' name='deptId' rules={[{required: true}]}>
223
+ <FieldSysOrgTreeSelect />
224
+ </Form.Item>
225
+
226
+ <Form.Item label='姓名' name='name' rules={[{required: true}]}>
227
+ <Input/>
228
+ </Form.Item>
229
+ <Form.Item label='账号' name='account' rules={[{required: true}]}>
230
+ <Input/>
231
+ </Form.Item>
232
+
233
+
234
+ <Form.Item label='电话' name='phone'>
235
+ <Input/>
236
+ </Form.Item>
237
+ <Form.Item label='邮箱' name='email'>
238
+ <Input/>
239
+ </Form.Item>
240
+
241
+ <Form.Item label='启用状态' name='enabled' rules={[{required: true}]}>
242
+ <FieldBoolean/>
243
+ </Form.Item>
244
+
245
+ </Form>
246
+ </Modal>
247
+
248
+
249
+ <UserPerm ref={this.permRef} onOk={() => this.tableRef.current.reload()}/>
250
+
251
+ </Page>
252
+ }
253
+
254
+
255
+ }
256
+
257
+
258
+
@@ -0,0 +1,200 @@
1
+ import React from "react";
2
+ import {Button, Card, Divider, Form, Space} from "antd";
3
+ import {
4
+ FieldBoolean,
5
+ FieldDate,
6
+ FieldDateRange,
7
+ FieldEditor,
8
+ FieldPercent,
9
+ FieldRemoteSelect,
10
+ FieldRemoteSelectMultiple,
11
+ FieldRemoteTree,
12
+ FieldRemoteTreeCascader,
13
+ FieldRemoteTreeSelect,
14
+ FieldRemoteTreeSelectMultiple,
15
+ FieldSysOrgTree,
16
+ FieldSysOrgTreeSelect,
17
+ FieldTable,
18
+ FieldTableSelect,
19
+ FieldUploadFile
20
+ } from "../framework";
21
+
22
+ export default class extends React.Component {
23
+
24
+
25
+ state = {
26
+ formValues: {}
27
+ }
28
+
29
+
30
+ componentDidMount() {
31
+ const json = localStorage.getItem("_test")
32
+ const formValues = json ? JSON.parse(json) : {}
33
+ this.formRef.current.setFieldsValue(formValues)
34
+ this.setState({formValues})
35
+ }
36
+
37
+ formRef = React.createRef()
38
+
39
+
40
+ render() {
41
+
42
+ return <>
43
+ <Card title='表单组件-自定义封装'>
44
+ {JSON.stringify(this.state.formValues)}
45
+ <Divider></Divider>
46
+ <Form
47
+ ref={this.formRef}
48
+ onValuesChange={(changedValues, allValues) => {
49
+ this.setState({formValues: allValues})
50
+ }}
51
+ onReset={() => {
52
+ this.setState({formValues: {}})
53
+ }}
54
+
55
+ onFinish={values => {
56
+ localStorage.setItem("_test", JSON.stringify(values))
57
+ }}
58
+
59
+ labelAlign={'left'}
60
+ labelCol={{flex: '400px',}}
61
+ layout='horizontal'
62
+ >
63
+ <Form.Item label='上传' name='file'>
64
+ <FieldUploadFile cropImage={true} />
65
+ </Form.Item>
66
+
67
+ <Form.Item label='百分数' name='number'>
68
+ <FieldPercent />
69
+ </Form.Item>
70
+ <Form.Item label='机构树选择 (部门) FieldSysOrgTree' name='org'>
71
+ <FieldSysOrgTree />
72
+ </Form.Item>
73
+ <Form.Item label='机构树选择 (部门) FieldSysOrgTreeSelect' name='org'>
74
+ <FieldSysOrgTreeSelect />
75
+ </Form.Item>
76
+
77
+ <Form.Item label='机构树选择(单位) FieldSysOrgTreeSelect' name='org'>
78
+ <FieldSysOrgTreeSelect type='unit' />
79
+ </Form.Item>
80
+
81
+
82
+
83
+ <Form.Item label='选择表格 FieldTableSelect' name='user'>
84
+ <FieldTableSelect url='admin/sysUser/page' columns={[
85
+ {title: '姓名', dataIndex: 'name'},
86
+ {title: '账号', dataIndex: 'account'},
87
+ ]}/>
88
+ </Form.Item>
89
+
90
+ <Form.Item label='可编辑表格' name='tableData'>
91
+ <FieldTable columns={[
92
+ {title: '名称', dataIndex: 'name'},
93
+ {title: '年龄', dataIndex: 'age'},
94
+ {title: '婚否', dataIndex: 'marry',render(){
95
+ return <FieldBoolean type='select'></FieldBoolean>
96
+ }},
97
+ ]}></FieldTable>
98
+ </Form.Item>
99
+
100
+ <Divider>日期区间 FieldDateRange</Divider>
101
+ <Form.Item label=' YYYY-MM-DD HH:mm:ss' name='dateRange'>
102
+ <FieldDateRange type='YYYY-MM-DD HH:mm:ss'></FieldDateRange>
103
+ </Form.Item>
104
+ <Form.Item label='YYYY-MM-DD HH:mm' name='dateRange'>
105
+ <FieldDateRange type='YYYY-MM-DD HH:mm'></FieldDateRange>
106
+ </Form.Item>
107
+ <Form.Item label='日期' name='dateRange'>
108
+ <FieldDateRange ></FieldDateRange>
109
+ </Form.Item>
110
+ <Form.Item label='YYYY-QQ 季度' name='dateRange'>
111
+ <FieldDateRange type='YYYY-QQ'></FieldDateRange>
112
+ </Form.Item>
113
+ <Form.Item label='YYYY-MM' name='dateRange'>
114
+ <FieldDateRange type='YYYY-MM'></FieldDateRange>
115
+ </Form.Item>
116
+ <Form.Item label='YYYY' name='dateRange'>
117
+ <FieldDateRange type='YYYY'></FieldDateRange>
118
+ </Form.Item>
119
+ <Form.Item label='HH:mm' name='dateRange'>
120
+ <FieldDateRange type='HH:mm'></FieldDateRange>
121
+ </Form.Item>
122
+ <Form.Item label='HH:mm:ss' name='dateRange'>
123
+ <FieldDateRange type='HH:mm:ss'></FieldDateRange>
124
+ </Form.Item>
125
+
126
+
127
+ <Divider>日期</Divider>
128
+ <Form.Item label='YYYY-MM-DD HH:mm:ss' name='date'>
129
+ <FieldDate type='YYYY-MM-DD HH:mm:ss'></FieldDate>
130
+ </Form.Item>
131
+ <Form.Item label='FieldDate YYYY-MM-DD HH:mm' name='date'>
132
+ <FieldDate type='YYYY-MM-DD HH:mm'></FieldDate>
133
+ </Form.Item>
134
+ <Form.Item label='FieldDate 日期' name='date'>
135
+ <FieldDate ></FieldDate>
136
+ </Form.Item>
137
+ <Form.Item label='FieldDate YYYY-QQ 季度' name='date'>
138
+ <FieldDate type='YYYY-QQ'></FieldDate>
139
+ </Form.Item>
140
+ <Form.Item label='FieldDate YYYY-MM' name='date'>
141
+ <FieldDate type='YYYY-MM'></FieldDate>
142
+ </Form.Item>
143
+ <Form.Item label='FieldDate YYYY' name='date'>
144
+ <FieldDate type='YYYY'></FieldDate>
145
+ </Form.Item>
146
+ <Form.Item label='FieldDate HH:mm' name='date'>
147
+ <FieldDate type='HH:mm'></FieldDate>
148
+ </Form.Item>
149
+ <Form.Item label='FieldDate HH:mm:ss' name='date'>
150
+ <FieldDate type='HH:mm:ss'></FieldDate>
151
+ </Form.Item>
152
+ <Divider>布尔</Divider>
153
+ <Form.Item label='FieldBoolean 布尔 (switch)' name='boolean'>
154
+ <FieldBoolean type='switch'></FieldBoolean>
155
+ </Form.Item>
156
+ <Form.Item label='FieldBoolean 布尔 (checkbox)' name='boolean'>
157
+ <FieldBoolean type='checkbox'></FieldBoolean>
158
+ </Form.Item>
159
+ <Form.Item label='FieldBoolean 布尔 (radio)' name='boolean'>
160
+ <FieldBoolean type='radio'></FieldBoolean>
161
+ </Form.Item>
162
+ <Form.Item label='FieldBoolean 布尔 (选择框)' name='boolean'>
163
+ <FieldBoolean type='select'></FieldBoolean>
164
+ </Form.Item>
165
+ <Form.Item label='FieldRemoteTreeSelectMultiple 远程树选择(多选)' name='users'>
166
+ <FieldRemoteTreeSelectMultiple url='admin/sysUser/tree'/>
167
+ </Form.Item>
168
+
169
+ <Divider>选择</Divider>
170
+ <Form.Item label='远程树选择' name='user'>
171
+ <FieldRemoteTreeSelect url='admin/sysUser/tree'/>
172
+ </Form.Item>
173
+ <Form.Item label='远程树(多选)' name='users'>
174
+ <FieldRemoteTree url='admin/sysUser/tree'/>
175
+ </Form.Item>
176
+ <Form.Item label='远程树级联选择' name='user'>
177
+ <FieldRemoteTreeCascader url='admin/sysUser/tree'/>
178
+ </Form.Item>
179
+
180
+ <Form.Item label='单选' name='user'>
181
+ <FieldRemoteSelect url='admin/sysUser/options'/>
182
+ </Form.Item>
183
+ <Form.Item label='多选' name='users'>
184
+ <FieldRemoteSelectMultiple url='admin/sysUser/options'/>
185
+ </Form.Item>
186
+ <Form.Item label='富文本' name='富文本'>
187
+ <FieldEditor height={100}/>
188
+ </Form.Item>
189
+
190
+ <Space>
191
+ <Button type='primary' htmlType='submit'>保存</Button>
192
+ <Button htmlType='reset'>重置</Button>
193
+ </Space>
194
+ </Form>
195
+
196
+
197
+ </Card>
198
+ </>
199
+ }
200
+ }
@@ -0,0 +1,16 @@
1
+ import React from 'react'
2
+ import {Button, Flex} from "antd";
3
+
4
+ export default class extends React.Component {
5
+
6
+ render() {
7
+ return <div style={{display:'flex',alignItems:'center',justifyContent:'center'}}>
8
+ <Button type='primary' href='/ureport/designer'>打开设计器</Button>
9
+ </div>
10
+ }
11
+
12
+
13
+ }
14
+
15
+
16
+