ModalUpdateRole.jsx
3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/**
* Author: Charles
* Date: 2022.9.13
* Description: [更新角色]
*/
import React, { useEffect, useState } from 'react';
import { connect } from 'umi';
import { Modal, Form, Input, Button, TreeSelect } from 'antd';
const formItemLayout = { labelCol: { span: 4 }, wrapperCol: { span: 20 } };
const ModalSetRole = props => {
const [form] = Form.useForm();
const {
dispatch,
dataUserMenu,
handleCancelModal,
handleOk,
dataRoleMenuId,
dataModal: {
modalType,
modalShow,
modalData: { id, name, description },
},
} = props;
useEffect(() => {
if (modalType === 'ROLE_SET_MODAL' && modalShow) {
dispatch({ type: 'Role/getUserMenu' });
if (id) {
dispatch({ type: 'Role/getRoleMenuId', payload: { id } });
}
form.resetFields();
form.setFieldsValue({
name,
description,
});
}
}, [modalType, modalShow]);
const [value, setValue] = useState([]);
useEffect(() => {
form.setFieldsValue({
menuIds: dataRoleMenuId,
});
}, [dataRoleMenuId]);
// treeSelect配置
const tProps = {
treeData: dataUserMenu,
value: dataRoleMenuId || [],
onChange: () => {},
treeCheckable: true,
showCheckedStrategy: TreeSelect.SHOW_ALL,
placeholder: '请选择菜单权限',
style: {
width: '100%',
},
fieldNames: {
label: 'title',
value: 'id',
},
};
/* 点击保存 */
const handleSave = () => {
form.validateFields().then(values => {
console.log(values, 'values');
handleOk({ id, ...values });
});
};
return (
<Modal
title={id ? '编辑角色' : '新增角色'}
placement="right"
width={700}
maskClosable={false}
onCancel={handleCancelModal}
visible={modalType === 'ROLE_SET_MODAL' && modalShow}
footer={
<div
style={{
textAlign: 'right',
}}
>
<Button onClick={handleCancelModal} className="mr-10">
取消
</Button>
<Button onClick={handleSave} type="primary">
保存
</Button>
</div>
}
>
<Form form={form} {...formItemLayout} name="role_set_modal">
<Form.Item
name="name"
label="角色名称"
rules={[
{ required: true, message: '请输入角色名称,由2~10位非空格的字符组成' },
{ pattern: /^[\S]{2,10}$/, message: '角色名称由2~10位非空格的字符组成' },
]}
>
<Input placeholder="请输入角色名称" />
</Form.Item>
<Form.Item
name="description"
label="角色描述"
rules={[
{ required: false, message: '请输入角色描述' },
{ max: 30, message: '角色描述字符长度不能超过30' },
]}
>
<Input.TextArea autoSize={{ minRows: 4, maxRows: 4 }} placeholder="请输入角色描述" />
</Form.Item>
<Form.Item
name="menuIds"
label="菜单权限"
rules={[{ required: true, message: '请选择菜单权限' }]}
>
<TreeSelect {...tProps} />
</Form.Item>
</Form>
</Modal>
);
};
export default connect(({ Role }) => ({
...Role,
}))(ModalSetRole);