李志伟 2 年前
父节点
当前提交
0de57c9728

+ 58
- 0
src/pages/Machinery/Person/components/OrgTree.jsx 查看文件

@@ -0,0 +1,58 @@
1
+import React, { useState, useEffect } from 'react';
2
+import {
3
+  Card,
4
+  Tree,
5
+} from 'antd';
6
+import { getCooperativeList } from '@/services/cooperative';
7
+
8
+export default (props) => {
9
+  const { setOrgId, setCooperativeList } = props
10
+  const [data, setData] = useState([]);
11
+
12
+  // 动态生成树
13
+  const handelNode = (item) => {
14
+    let node = (
15
+      <div
16
+        key={item.orgId}
17
+        style={{
18
+          justifyContent: 'space-between',
19
+          display: 'flex',
20
+          padding: '8px 0',
21
+        }}
22
+      >
23
+        <span>{item.title}</span>
24
+      </div>
25
+    );
26
+    return node;
27
+  };
28
+  const onSelect = (checkedKeys, info) => {
29
+    if (info.selected) {
30
+      setOrgId(info.node.key);
31
+    } else {
32
+      setOrgId();
33
+    }
34
+  };
35
+  useEffect(() => {
36
+    getCooperativeList({ pageSize: 500 })
37
+      .then((res) => {
38
+        setCooperativeList(res.records);
39
+        const list = res.records?.map((item) => {
40
+          return { title: item.name, key: item.orgId };
41
+        });
42
+        setData(list);
43
+      })
44
+      .catch((err) => {
45
+        console.log(err.message);
46
+      });
47
+  }, [])
48
+  return (
49
+    <Card title="合作社列表">
50
+      <Tree
51
+        onSelect={onSelect}
52
+        className="treeClass"
53
+        titleRender={(data) => handelNode(data)}
54
+        treeData={data}
55
+      />
56
+    </Card>
57
+  )
58
+}

+ 100
- 0
src/pages/Machinery/Person/components/RoleModel.jsx 查看文件

@@ -0,0 +1,100 @@
1
+import React, { useState, useEffect } from 'react';
2
+import {
3
+  Modal,
4
+  message,
5
+  List,
6
+  Checkbox,
7
+} from 'antd';
8
+import { getRoleList } from '@/services/role';
9
+import { addUserUserRole, deleteUserRole } from '@/services/userRole';
10
+export default (props) => {
11
+
12
+  const { rUserId, setRUserId, currentCheckbox, setCurrentCheckbox, editRoleModal, setEditRoleModal } = props
13
+  const [roleList, setRoleList] = useState([]);
14
+  const [rLoading, setRLoading] = useState(false);
15
+
16
+  //授权弹窗点击取消按钮
17
+  const onRoleCancel = () => {
18
+    setRUserId();
19
+    setCurrentCheckbox();
20
+    setEditRoleModal(false);
21
+  };
22
+  //授权角色弹窗点击保存按钮
23
+  const handelOk = () => {
24
+    if (!currentCheckbox) {
25
+      message.info('请选择角色');
26
+      return;
27
+    }
28
+    setRLoading(true);
29
+    if (currentCheckbox.length === 0) {
30
+      deleteUserRole(rUserId)
31
+        .then(() => {
32
+          message.success('取消授权角色成功');
33
+          setRLoading(false);
34
+          onRoleCancel();
35
+        })
36
+        .catch((err) => {
37
+          console.log(err.message);
38
+          setRLoading(false);
39
+        });
40
+    } else {
41
+      addUserUserRole(
42
+        rUserId,
43
+        currentCheckbox.map((item) => {
44
+          return { userId: rUserId, roleId: item };
45
+        }),
46
+      )
47
+        .then(() => {
48
+          message.success('授权角色成功');
49
+          setRLoading(false);
50
+          onRoleCancel();
51
+        })
52
+        .catch((err) => {
53
+          console.log(err.message);
54
+          setRLoading(false);
55
+        });
56
+    }
57
+  };
58
+  const handleCheckboxChange = (list) => {
59
+    setCurrentCheckbox(list);
60
+  };
61
+  useEffect(() => {
62
+    //获取角色列表数据
63
+    getRoleList({ pageSize: 999 })
64
+      .then((res) => {
65
+        setRoleList(res.records);
66
+      })
67
+      .catch((err) => {
68
+        console.log(err.message);
69
+      });
70
+  }, []);
71
+  return (
72
+    <Modal
73
+      forceRender
74
+      title="授权角色"
75
+      visible={editRoleModal}
76
+      onCancel={onRoleCancel}
77
+      keyboard={false}
78
+      maskClosable={false}
79
+      destroyOnClose={true}
80
+      onOk={handelOk}
81
+      confirmLoading={rLoading}
82
+    >
83
+      <Checkbox.Group
84
+        style={{ width: '100%' }}
85
+        value={currentCheckbox}
86
+        onChange={handleCheckboxChange}
87
+      >
88
+        <List
89
+          dataSource={roleList}
90
+          renderItem={(item) => (
91
+            <List.Item>
92
+              <Checkbox value={item.roleId}>{item.name}</Checkbox>
93
+            </List.Item>
94
+          )}
95
+        />
96
+      </Checkbox.Group>
97
+    </Modal>
98
+
99
+  )
100
+}

+ 161
- 0
src/pages/Machinery/Person/components/UserModal.jsx 查看文件

@@ -0,0 +1,161 @@
1
+import {
2
+  Button,
3
+  Modal,
4
+  Form,
5
+  Input,
6
+  message,
7
+  Radio,
8
+  Select,
9
+} from 'antd';
10
+import { useEffect, useState } from 'react';
11
+import Search from '@/components/CooperativeSearch';
12
+import {
13
+  addUser,
14
+  updateUser,
15
+  getDefaultPassword
16
+} from '@/services/user';
17
+
18
+const FormItem = Form.Item;
19
+const { Option } = Select;
20
+const formItemLayout = { labelCol: { span: 6 }, wrapperCol: { span: 14 } };
21
+export default (props) => {
22
+  const { editModal, onCancel, actionRef, form, orgId, userId } = props
23
+  const [loading, setLoading] = useState(false);
24
+  const [password, setPassWord] = useState('');
25
+
26
+  // 编辑弹窗的表单提交
27
+  const Submit = (values) => {
28
+    const newData = { ...values };
29
+    if (!newData.sex && newData.sex !== 0) {
30
+      newData.sex = 1;
31
+    }
32
+    setLoading(true);
33
+    if (!/^1[0-9]{10}$/.test(newData.phone)) {
34
+      message.warning('请输入正确的十一位手机号');
35
+      setLoading(false);
36
+      return false;
37
+    }
38
+    if (
39
+      !/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(
40
+        newData.idCard,
41
+      )
42
+    ) {
43
+      message.warning('请输入正确的身份证号');
44
+      setLoading(false);
45
+      return false;
46
+    }
47
+
48
+    if (userId) {
49
+      updateUser(userId, newData)
50
+        .then(() => {
51
+          setLoading(false);
52
+          message.success(`修改成功`);
53
+          onCancel();
54
+          actionRef.current.reload();
55
+        })
56
+        .catch((err) => {
57
+          setLoading(false);
58
+          console.log(err.message);
59
+        });
60
+    } else {
61
+      addUser(newData)
62
+        .then(() => {
63
+          setLoading(false);
64
+          message.success(`保存成功`);
65
+          onCancel();
66
+          actionRef.current.reload();
67
+        })
68
+        .catch((err) => {
69
+          setLoading(false);
70
+          message.error(err.message || err);
71
+        });
72
+    }
73
+  };
74
+  // 弹窗表单中合作社搜索框改变事件目前没用
75
+  const handelChange = () => { };
76
+  useEffect(() => {
77
+    //获取账号默认密码
78
+    getDefaultPassword()
79
+      .then((res) => {
80
+        setPassWord(res);
81
+      })
82
+      .catch((err) => {
83
+        console.log(err.message);
84
+      });
85
+  }, [])
86
+  return (
87
+    <Modal
88
+      forceRender
89
+      title={userId ? '人员编辑' : '人员新增'}
90
+      visible={editModal}
91
+      onCancel={onCancel}
92
+      keyboard={false}
93
+      maskClosable={false}
94
+      destroyOnClose={true}
95
+      footer={null}
96
+    >
97
+      <Form {...formItemLayout} onFinish={Submit} form={form}>
98
+        <FormItem label="用户名" name="userName" rules={[{ required: true, message: '请输入' }]}>
99
+          <Input placeholder="请输入" />
100
+        </FormItem>
101
+        <FormItem label="性别" name="sex" rules={[{ required: true, message: '请选择' }]}>
102
+          <Radio.Group>
103
+            <Radio value={1}>男</Radio>
104
+            <Radio value={0}>女</Radio>
105
+          </Radio.Group>
106
+        </FormItem>
107
+        <FormItem label="手机号" name="phone" rules={[{ required: true, message: '请输入' }]}>
108
+          <Input maxLength="11" placeholder="请输入" />
109
+        </FormItem>
110
+        <FormItem label="身份证" name="idCard" rules={[{ required: true, message: '请输入' }]}>
111
+          <Input placeholder="请输入" />
112
+        </FormItem>
113
+        <FormItem
114
+          label="登录账号"
115
+          name="loginName"
116
+          rules={[{ required: true, message: '请输入登录账号' }]}
117
+        >
118
+          <Input placeholder="请输入" />
119
+        </FormItem>
120
+        <FormItem label=" " colon={false} style={{ height: '4px', marginTop: '-28px' }}>
121
+          <span style={{ opacity: '0.7' }}>默认密码{password}</span>
122
+        </FormItem>
123
+        <FormItem label="所属合作社" name="orgId" rules={[{ required: true, message: '请输入' }]}>
124
+          <Search placeholder="请输入合作社" disabled={orgId && !userId ? true : false} onChange={handelChange} />
125
+        </FormItem>
126
+        {userId && (
127
+          <FormItem
128
+            label="合作社管理员"
129
+            name="isOrgManager"
130
+            rules={[{ required: true, message: '请选择' }]}
131
+          >
132
+            <Select placeholder="请选择是否启用">
133
+              <Option value={false}>否</Option>
134
+              <Option value={true}>是</Option>
135
+            </Select>
136
+          </FormItem>
137
+        )}
138
+        <FormItem label="状态" name="status" rules={[{ required: true, message: '请选择' }]}>
139
+          <Select placeholder="请选择是否启用">
140
+            <Option value={1}>启用</Option>
141
+            <Option value={0}>禁用</Option>
142
+          </Select>
143
+        </FormItem>
144
+        <FormItem label=" " colon={false}>
145
+          <Button type="default" onClick={onCancel}>
146
+            取消
147
+          </Button>
148
+          <Button
149
+            type="primary"
150
+            loading={loading}
151
+            htmlType="Submit"
152
+            style={{ marginLeft: '4em' }}
153
+          >
154
+            确认
155
+          </Button>
156
+        </FormItem>
157
+      </Form>
158
+    </Modal>
159
+
160
+  )
161
+}

+ 8
- 276
src/pages/Machinery/Person/index.jsx 查看文件

@@ -4,139 +4,49 @@ import {
4 4
   Popconfirm,
5 5
   Modal,
6 6
   Form,
7
-  Input,
8 7
   message,
9
-  Radio,
10
-  Select,
11
-  List,
12 8
   Row,
13 9
   Col,
14
-  Card,
15
-  Tree,
16
-  Checkbox,
17 10
 } from 'antd';
18 11
 import { PlusOutlined } from '@ant-design/icons';
19
-import { getCooperativeList } from '@/services/cooperative';
20 12
 import {
21 13
   getUserList,
22
-  addUser,
23 14
   deleteUser,
24 15
   updateUser,
25
-  getDefaultPassword,
26 16
   getUserDetail,
27 17
 } from '@/services/user';
28
-import { getRoleList } from '@/services/role';
29
-import { getUserRoleList, addUserUserRole, deleteUserRole } from '@/services/userRole';
18
+import { getUserRoleList } from '@/services/userRole';
30 19
 import { PageHeaderWrapper } from '@ant-design/pro-layout';
31 20
 import PageTable from '@/components/PageTable';
32 21
 import moment from 'moment';
33
-import Search from '@/components/CooperativeSearch';
34 22
 import './index.less';
23
+import OrgTree from './components/OrgTree';
24
+import UserModal from './components/UserModal';
25
+import RoleModel from './components/RoleModel';
35 26
 
36
-const FormItem = Form.Item;
37
-const { Option } = Select;
38 27
 const formatterTime = (val) => {
39 28
   return val && val !== '-' ? moment(val).format('YYYY-MM-DD') : '-';
40 29
 };
41 30
 export default (props) => {
42 31
   //编辑弹窗
43
-  const formItemLayout = { labelCol: { span: 6 }, wrapperCol: { span: 14 } };
44 32
   const [form] = Form.useForm();
45 33
   const [editModal, setEditModal] = useState(false);
46
-  const [loading, setLoading] = useState(false);
47 34
   const [userId, setuserId] = useState();
48
-  const [password, setPassWord] = useState('');
49 35
   const [cooperativeList, setCooperativeList] = useState([]);
50 36
 
51 37
   const [editRoleModal, setEditRoleModal] = useState(false);
52
-  const [rLoading, setRLoading] = useState(false);
53 38
   const [rUserId, setRUserId] = useState();
54
-  const [roleList, setRoleList] = useState([]);
55 39
   const [currentCheckbox, setCurrentCheckbox] = useState();
56 40
   //列表数据
57 41
   const actionRef = useRef();
58
-  const [data, setData] = useState([]);
59 42
   const [orgId, setOrgId] = useState();
60 43
 
61
-  // 动态生成树
62
-  const handelNode = (item) => {
63
-    let node = (
64
-      <div
65
-        key={item.orgId}
66
-        style={{
67
-          justifyContent: 'space-between',
68
-          display: 'flex',
69
-          padding: '8px 0',
70
-        }}
71
-      >
72
-        <span>{item.title}</span>
73
-      </div>
74
-    );
75
-    return node;
76
-  };
77
-  const onSelect = (checkedKeys, info) => {
78
-    if (info.selected) {
79
-      setOrgId(info.node.key);
80
-    } else {
81
-      setOrgId();
82
-    }
83
-  };
84
-  // 编辑弹窗的表单提交
85
-  const Submit = (values) => {
86
-    const newData = { ...values };
87
-    if (!newData.sex && newData.sex !== 0) {
88
-      newData.sex = 1;
89
-    }
90
-    setLoading(true);
91
-    if (!/^1[0-9]{10}$/.test(newData.phone)) {
92
-      message.warning('请输入正确的十一位手机号');
93
-      setLoading(false);
94
-      return false;
95
-    }
96
-    if (
97
-      !/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(
98
-        newData.idCard,
99
-      )
100
-    ) {
101
-      message.warning('请输入正确的身份证号');
102
-      setLoading(false);
103
-      return false;
104
-    }
105
-
106
-    if (userId) {
107
-      updateUser(userId, newData)
108
-        .then(() => {
109
-          setLoading(false);
110
-          message.success(`修改成功`);
111
-          onCancel();
112
-          actionRef.current.reload();
113
-        })
114
-        .catch((err) => {
115
-          setLoading(false);
116
-          console.log(err.message);
117
-        });
118
-    } else {
119
-      addUser(newData)
120
-        .then(() => {
121
-          setLoading(false);
122
-          message.success(`保存成功`);
123
-          onCancel();
124
-          actionRef.current.reload();
125
-        })
126
-        .catch((err) => {
127
-          setLoading(false);
128
-          message.error(err.message || err);
129
-        });
130
-    }
131
-  };
132 44
   //表单点击取消按钮
133 45
   const onCancel = () => {
134 46
     setuserId();
135 47
     form.resetFields();
136 48
     setEditModal(false);
137 49
   };
138
-  // 弹窗表单中合作社搜索框改变事件目前没用
139
-  const handelChange = () => { };
140 50
 
141 51
   // 列表点击编辑按钮
142 52
   const handleEdit = (val) => {
@@ -189,82 +99,7 @@ export default (props) => {
189 99
       });
190 100
     setEditRoleModal(true);
191 101
   };
192
-  //授权弹窗点击取消按钮
193
-  const onRoleCancel = () => {
194
-    setRUserId();
195
-    setCurrentCheckbox();
196
-    form.resetFields();
197
-    setEditRoleModal(false);
198
-  };
199
-  //授权角色弹窗点击保存按钮
200
-  const handelOk = () => {
201
-    if (!currentCheckbox) {
202
-      message.info('请选择角色');
203
-      return;
204
-    }
205
-    setRLoading(true);
206
-    if (currentCheckbox.length === 0) {
207
-      deleteUserRole(rUserId)
208
-        .then(() => {
209
-          message.success('取消授权角色成功');
210
-          setRLoading(false);
211
-          onRoleCancel();
212
-        })
213
-        .catch((err) => {
214
-          console.log(err.message);
215
-          setRLoading(false);
216
-        });
217
-    } else {
218
-      addUserUserRole(
219
-        rUserId,
220
-        currentCheckbox.map((item) => {
221
-          return { userId: rUserId, roleId: item };
222
-        }),
223
-      )
224
-        .then(() => {
225
-          message.success('授权角色成功');
226
-          setRLoading(false);
227
-          onRoleCancel();
228
-        })
229
-        .catch((err) => {
230
-          console.log(err.message);
231
-          setRLoading(false);
232
-        });
233
-    }
234
-  };
235
-  const handleCheckboxChange = (list) => {
236
-    setCurrentCheckbox(list);
237
-  };
238
-  useEffect(() => {
239
-    //获取账号默认密码
240
-    getDefaultPassword()
241
-      .then((res) => {
242
-        setPassWord(res);
243
-      })
244
-      .catch((err) => {
245
-        console.log(err.message);
246
-      });
247
-    //获取合作社列表数据
248
-    getCooperativeList({ pageSize: 999 })
249
-      .then((res) => {
250
-        setCooperativeList(res.records);
251
-        const list = res.records?.map((item) => {
252
-          return { title: item.name, key: item.orgId };
253
-        });
254
-        setData(list);
255
-      })
256
-      .catch((err) => {
257
-        console.log(err.message);
258
-      });
259
-    //获取角色列表数据
260
-    getRoleList({ pageSize: 999 })
261
-      .then((res) => {
262
-        setRoleList(res.records);
263
-      })
264
-      .catch((err) => {
265
-        console.log(err.message);
266
-      });
267
-  }, []);
102
+
268 103
   //监控
269 104
   useEffect(() => {
270 105
     if (userId) {
@@ -382,14 +217,7 @@ export default (props) => {
382 217
     <PageHeaderWrapper>
383 218
       <Row gutter={16}>
384 219
         <Col span={6}>
385
-          <Card title="合作社列表">
386
-            <Tree
387
-              onSelect={onSelect}
388
-              className="treeClass"
389
-              titleRender={(data) => handelNode(data)}
390
-              treeData={data}
391
-            />
392
-          </Card>
220
+          <OrgTree setOrgId={setOrgId} setCooperativeList={setCooperativeList} />
393 221
         </Col>
394 222
         <Col span={18}>
395 223
           <PageTable
@@ -405,104 +233,8 @@ export default (props) => {
405 233
           />
406 234
         </Col>
407 235
       </Row>
408
-      <Modal
409
-        forceRender
410
-        title={userId ? '人员编辑' : '人员新增'}
411
-        visible={editModal}
412
-        onCancel={onCancel}
413
-        keyboard={false}
414
-        maskClosable={false}
415
-        destroyOnClose={true}
416
-        footer={null}
417
-      >
418
-        <Form {...formItemLayout} onFinish={Submit} form={form}>
419
-          <FormItem label="用户名" name="userName" rules={[{ required: true, message: '请输入' }]}>
420
-            <Input placeholder="请输入" />
421
-          </FormItem>
422
-          <FormItem label="性别" name="sex" rules={[{ required: true, message: '请选择' }]}>
423
-            <Radio.Group>
424
-              <Radio value={1}>男</Radio>
425
-              <Radio value={0}>女</Radio>
426
-            </Radio.Group>
427
-          </FormItem>
428
-          <FormItem label="手机号" name="phone" rules={[{ required: true, message: '请输入' }]}>
429
-            <Input maxLength="11" placeholder="请输入" />
430
-          </FormItem>
431
-          <FormItem label="身份证" name="idCard" rules={[{ required: true, message: '请输入' }]}>
432
-            <Input placeholder="请输入" />
433
-          </FormItem>
434
-          <FormItem
435
-            label="登录账号"
436
-            name="loginName"
437
-            rules={[{ required: true, message: '请输入登录账号' }]}
438
-          >
439
-            <Input placeholder="请输入" />
440
-          </FormItem>
441
-          <FormItem label=" " colon={false} style={{ height: '4px', marginTop: '-28px' }}>
442
-            <span style={{ opacity: '0.7' }}>默认密码{password}</span>
443
-          </FormItem>
444
-          <FormItem label="所属合作社" name="orgId" rules={[{ required: true, message: '请输入' }]}>
445
-            <Search placeholder="请输入合作社" disabled={orgId && !userId ? true : false} onChange={handelChange} />
446
-          </FormItem>
447
-          {userId && (
448
-            <FormItem
449
-              label="合作社管理员"
450
-              name="isOrgManager"
451
-              rules={[{ required: true, message: '请选择' }]}
452
-            >
453
-              <Select placeholder="请选择是否启用">
454
-                <Option value={false}>否</Option>
455
-                <Option value={true}>是</Option>
456
-              </Select>
457
-            </FormItem>
458
-          )}
459
-          <FormItem label="状态" name="status" rules={[{ required: true, message: '请选择' }]}>
460
-            <Select placeholder="请选择是否启用">
461
-              <Option value={1}>启用</Option>
462
-              <Option value={0}>禁用</Option>
463
-            </Select>
464
-          </FormItem>
465
-          <FormItem label=" " colon={false}>
466
-            <Button type="default" onClick={onCancel}>
467
-              取消
468
-            </Button>
469
-            <Button
470
-              type="primary"
471
-              loading={loading}
472
-              htmlType="Submit"
473
-              style={{ marginLeft: '4em' }}
474
-            >
475
-              确认
476
-            </Button>
477
-          </FormItem>
478
-        </Form>
479
-      </Modal>
480
-      <Modal
481
-        forceRender
482
-        title="授权角色"
483
-        visible={editRoleModal}
484
-        onCancel={onRoleCancel}
485
-        keyboard={false}
486
-        maskClosable={false}
487
-        destroyOnClose={true}
488
-        onOk={handelOk}
489
-        confirmLoading={rLoading}
490
-      >
491
-        <Checkbox.Group
492
-          style={{ width: '100%' }}
493
-          value={currentCheckbox}
494
-          onChange={handleCheckboxChange}
495
-        >
496
-          <List
497
-            dataSource={roleList}
498
-            renderItem={(item) => (
499
-              <List.Item>
500
-                <Checkbox value={item.roleId}>{item.name}</Checkbox>
501
-              </List.Item>
502
-            )}
503
-          />
504
-        </Checkbox.Group>
505
-      </Modal>
236
+      <UserModal editModal={editModal} onCancel={onCancel} actionRef={actionRef} form={form} orgId={orgId} userId={userId} />
237
+      <RoleModel rUserId={rUserId} setRUserId={setRUserId} currentCheckbox={currentCheckbox} setCurrentCheckbox={setCurrentCheckbox} editRoleModal={editRoleModal} setEditRoleModal={setEditRoleModal} />
506 238
     </PageHeaderWrapper>
507 239
   );
508 240
 };