|
@@ -4,7 +4,9 @@ import { connect } from 'dva';
|
4
|
4
|
import XForm, { FieldTypes } from '../../../components/XForm';
|
5
|
5
|
import request from '../../../utils/request';
|
6
|
6
|
import channels from './channelList.less';
|
7
|
|
-import { resolve } from 'path';
|
|
7
|
+import { resolve, join } from 'path';
|
|
8
|
+import router from 'umi/router';
|
|
9
|
+
|
8
|
10
|
const { TextArea } = Input;
|
9
|
11
|
|
10
|
12
|
|
|
@@ -22,13 +24,23 @@ const { TextArea } = Input;
|
22
|
24
|
// 获取当前所有菜单
|
23
|
25
|
const [data, setData] = useState({ data: [] })
|
24
|
26
|
const [buutonDate, setBuutonDate] = useState({ })
|
|
27
|
+
|
|
28
|
+ // 展示要显示的菜单和按钮----(编辑)
|
|
29
|
+ const [dataMenuId, setDataMenuId] = useState([])
|
|
30
|
+ const [dataButtonId, setDataButtonId] = useState([])
|
|
31
|
+
|
25
|
32
|
useEffect(() => {
|
26
|
|
- localStorage.removeItem('value');
|
27
|
|
- menuList({ pageNum: 1, pageSize: 100 })
|
|
33
|
+ // 新增和编辑用一个页面,判断新增是否为0和null
|
|
34
|
+ if (props.location.query) {
|
|
35
|
+ const { id } = props.location.query
|
|
36
|
+ if (id) {
|
|
37
|
+ buttonAndMenuList('', id)
|
|
38
|
+ }
|
|
39
|
+ }
|
|
40
|
+ // menuList({ pageNum: 1, pageSize: 100 })
|
28
|
41
|
buttonList({ pageNum: 1, pageSize: 100 })
|
29
|
|
- // buttonAndMenuList()
|
30
|
42
|
}, [])
|
31
|
|
-
|
|
43
|
+ // 当前所有的菜单
|
32
|
44
|
function menuList(params) {
|
33
|
45
|
request({
|
34
|
46
|
url: '/api/admin/menuList',
|
|
@@ -36,7 +48,6 @@ const { TextArea } = Input;
|
36
|
48
|
params: { ...params },
|
37
|
49
|
// eslint-disable-next-line no-shadow
|
38
|
50
|
}).then(data => {
|
39
|
|
- console.log(data)
|
40
|
51
|
setData(data)
|
41
|
52
|
})
|
42
|
53
|
}
|
|
@@ -52,19 +63,39 @@ const { TextArea } = Input;
|
52
|
63
|
setBuutonDate(data)
|
53
|
64
|
})
|
54
|
65
|
}
|
55
|
|
-
|
|
66
|
+
|
56
|
67
|
// 根据角色id查询当前的菜单及其按钮
|
57
|
|
- function buttonAndMenuList(params) {
|
|
68
|
+ function buttonAndMenuList(params, id) {
|
|
69
|
+ console.log('id: ', id)
|
58
|
70
|
request({
|
59
|
|
- url: `/api/admin/taRole/details/${2}`,
|
|
71
|
+ url: `/api/admin/taRole/details/${id}`,
|
60
|
72
|
method: 'GET',
|
61
|
73
|
params: { ...params },
|
62
|
74
|
// eslint-disable-next-line no-shadow
|
63
|
75
|
}).then(data => {
|
|
76
|
+ console.log('data.roleName: ', data)
|
|
77
|
+ props.form.setFieldsValue({ roleName: data.roleName })
|
64
|
78
|
console.log(data)
|
65
|
79
|
setData(data)
|
|
80
|
+
|
|
81
|
+ // 获取所有的权限Id
|
|
82
|
+ setDataMenuId(data.sysMenuList.map(item => item.menuId))
|
|
83
|
+ setDataButtonId((data.sysMenuList.map(item => item.sysButtonInMenu.map(btn => btn.btnId).join(',')).filter(f => f !== '').join(',').split(',')).map(a => parseInt(a)))
|
66
|
84
|
})
|
67
|
85
|
}
|
|
86
|
+ // 添加角色
|
|
87
|
+ function addRole(params) {
|
|
88
|
+ request({
|
|
89
|
+ url: '/api/admin/taRole/',
|
|
90
|
+ method: 'GET',
|
|
91
|
+ params: { ...params },
|
|
92
|
+ // eslint-disable-next-line no-shadow
|
|
93
|
+ }).then(data => {
|
|
94
|
+ console.log(data)
|
|
95
|
+ setData(data)
|
|
96
|
+ })
|
|
97
|
+ }
|
|
98
|
+
|
68
|
99
|
|
69
|
100
|
// const [menus, setMenus] = useState([]);
|
70
|
101
|
// 判断menus是否有值
|
|
@@ -75,13 +106,15 @@ const { TextArea } = Input;
|
75
|
106
|
};
|
76
|
107
|
const delMenus = m => setMenus(menus.filter(x => x.menuId !== m.menuId));
|
77
|
108
|
const handleMenuChange = m => e => {
|
78
|
|
- console.log('e', m)
|
79
|
109
|
if (e.target.checked) {
|
80
|
|
- // setMenusData(m)
|
|
110
|
+ setDataMenuId(dataMenuId.concat(m.menuId))
|
81
|
111
|
addMenus(m)
|
82
|
112
|
} else {
|
|
113
|
+ setDataMenuId([m.menuId])
|
83
|
114
|
delMenus(m)
|
84
|
115
|
}
|
|
116
|
+ console.log('dataMenuId', dataMenuId)
|
|
117
|
+ console.log('menus', menus)
|
85
|
118
|
}
|
86
|
119
|
|
87
|
120
|
const [but, setBut] = useState([]);
|
|
@@ -97,26 +130,71 @@ const { TextArea } = Input;
|
97
|
130
|
}
|
98
|
131
|
}
|
99
|
132
|
const gridStyle1 = {
|
100
|
|
- width: '20%',
|
|
133
|
+ width: '17%',
|
101
|
134
|
textAlign: 'left',
|
102
|
135
|
};
|
103
|
136
|
const gridStyle2 = {
|
104
|
137
|
width: '80%',
|
105
|
138
|
textAlign: 'left',
|
106
|
|
- height: '69px',
|
|
139
|
+ height: '72px',
|
107
|
140
|
};
|
|
141
|
+// 添加菜单
|
|
142
|
+function addMenuList() {
|
|
143
|
+ request({
|
|
144
|
+ url: '/api/admin/updateAuthMenu',
|
|
145
|
+ method: 'PUT',
|
|
146
|
+ data: { sysMenu: menus },
|
|
147
|
+// eslint-disable-next-line no-shadow
|
|
148
|
+}).then(data => {
|
|
149
|
+ console.log(data)
|
|
150
|
+})
|
|
151
|
+}
|
|
152
|
+
|
|
153
|
+// 添加按钮
|
|
154
|
+function addButt() {
|
|
155
|
+ request({
|
|
156
|
+ url: '/api/admin/updateAuthMenu',
|
|
157
|
+ method: 'PUT',
|
|
158
|
+ data: { sysMenu: but },
|
|
159
|
+// eslint-disable-next-line no-shadow
|
|
160
|
+}).then(data => {
|
|
161
|
+ console.log(data)
|
|
162
|
+})
|
|
163
|
+}
|
|
164
|
+
|
|
165
|
+// 添加按钮
|
|
166
|
+function editAndAddRole() {
|
|
167
|
+ request({
|
|
168
|
+ url: '/admin/editAndAddRole/{id}',
|
|
169
|
+ method: 'PUT',
|
|
170
|
+ data: { sysMenu: but },
|
|
171
|
+// eslint-disable-next-line no-shadow
|
|
172
|
+}).then(data => {
|
|
173
|
+ console.log(data)
|
|
174
|
+})
|
|
175
|
+}
|
|
176
|
+
|
|
177
|
+function toRoleList(roleId) {
|
|
178
|
+ router.push({
|
|
179
|
+ pathname: '/staff/RoleList',
|
|
180
|
+ });
|
|
181
|
+}
|
108
|
182
|
|
109
|
183
|
function handleSubmit (e) {
|
110
|
184
|
e.preventDefault();
|
111
|
185
|
props.form.validateFields((err, values) => {
|
|
186
|
+ console.log('values', values)
|
|
187
|
+ // 保存菜单
|
|
188
|
+ // addMenuList()
|
|
189
|
+ // setm
|
|
190
|
+ const sumitMenu = [...data.sysMenuList, ...menus]
|
112
|
191
|
request({
|
113
|
192
|
url: '/api/admin/updateAuthMenu',
|
114
|
|
- method: 'PUT',
|
115
|
|
- data: { sysMenu: menus },
|
|
193
|
+ method: 'POST',
|
|
194
|
+ data: { sysMenu: sumitMenu, name: values.roleName, id: props.location.query.id },
|
116
|
195
|
// eslint-disable-next-line no-shadow
|
117
|
196
|
}).then(data => {
|
118
|
|
- console.log(data)
|
119
|
|
- setData(data)
|
|
197
|
+ toRoleList()
|
120
|
198
|
})
|
121
|
199
|
});
|
122
|
200
|
}
|
|
@@ -125,29 +203,29 @@ const { TextArea } = Input;
|
125
|
203
|
<>
|
126
|
204
|
<div >
|
127
|
205
|
<Form labelCol={{ span: 7 }} wrapperCol={{ span: 12 }} onSubmit={handleSubmit}>
|
128
|
|
- <Form.Item label="渠道名称">
|
129
|
|
- {getFieldDecorator('channelName', {
|
|
206
|
+ <Form.Item label="角色名称">
|
|
207
|
+ {getFieldDecorator('roleName', {
|
130
|
208
|
rules: [{ required: true, message: '请输入渠道名称' }],
|
131
|
209
|
})(<Input className={channels.inpuit} />)}
|
132
|
210
|
|
133
|
211
|
</Form.Item>
|
134
|
212
|
{userMenus.map(item => (
|
135
|
213
|
(item.parentCode === '-1') &&
|
136
|
|
- <Card title={<Checkbox onChange={handleMenuChange(item)}>{item.name}</Checkbox>} bordered style={{ width: '100%', alignItems: 'center' }} >
|
|
214
|
+ <Card title={<Checkbox checked={ dataMenuId.includes(item.menuId) } onChange={handleMenuChange(item)}>{item.name}</Checkbox>} bordered style={{ width: '100%', alignItems: 'center' }} >
|
137
|
215
|
{
|
138
|
216
|
userMenus.map(menu => (
|
139
|
217
|
|
140
|
218
|
(item.menuId === menu.menuRoot && item.menuId !== menu.menuId) &&
|
141
|
219
|
<>
|
142
|
220
|
<Card.Grid style={gridStyle1} >
|
143
|
|
- <Checkbox onChange={handleMenuChange(menu)}>{menu.name}</Checkbox>
|
|
221
|
+ <Checkbox checked={ dataMenuId.includes(menu.menuId) } onChange={handleMenuChange(menu)}>{menu.name}</Checkbox>
|
144
|
222
|
</Card.Grid>
|
145
|
223
|
<Card.Grid style={gridStyle2}>
|
146
|
224
|
{buutonDate.length > 0 && buutonDate.map(btn => (
|
147
|
225
|
<>
|
148
|
226
|
{
|
149
|
227
|
btn.menuId === menu.menuId &&
|
150
|
|
- <Checkbox onChange={handleButChange(btn)}>{btn.name}</Checkbox>
|
|
228
|
+ <Checkbox checked={ dataButtonId.includes(btn.btnId) } onChange={handleButChange(btn)}>{btn.name}</Checkbox>
|
151
|
229
|
}
|
152
|
230
|
</>
|
153
|
231
|
))}
|