Skip to content

Commit 0bf3b53

Browse files
committed
Fixed user and role
1 parent 9b8528a commit 0bf3b53

8 files changed

Lines changed: 187 additions & 118 deletions

File tree

src/models/role.js

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,24 @@ export default {
9797
},
9898
*fetchForm({ payload }, { call, put }) {
9999
const response = yield call(roleService.get, payload);
100+
101+
const { role_menus: roleMenus } = response;
102+
if (roleMenus) {
103+
const mRoleMenus = {};
104+
const nRoleMenus = [];
105+
roleMenus.forEach(item => {
106+
if (mRoleMenus[item.menu_id]) {
107+
mRoleMenus[item.menu_id] = [...mRoleMenus[item.menu_id], item.action_id];
108+
} else {
109+
mRoleMenus[item.menu_id] = [item.action_id];
110+
}
111+
});
112+
Object.keys(mRoleMenus).forEach(key => {
113+
nRoleMenus.push({ menu_id: key, actions: mRoleMenus[key] });
114+
});
115+
response.role_menus = nRoleMenus;
116+
}
117+
100118
yield [
101119
put({
102120
type: 'saveFormData',
@@ -157,6 +175,37 @@ export default {
157175
payload: response.list || [],
158176
});
159177
},
178+
*changeStatus({ payload }, { call, put, select }) {
179+
let response;
180+
if (payload.status === 1) {
181+
response = yield call(roleService.enable, payload);
182+
} else {
183+
response = yield call(roleService.disable, payload);
184+
}
185+
186+
if (response.status === 'OK') {
187+
let msg = '启用成功';
188+
if (payload.status === 2) {
189+
msg = '停用成功';
190+
}
191+
message.success(msg);
192+
const data = yield select(state => state.role.data);
193+
const newData = { list: [], pagination: data.pagination };
194+
195+
for (let i = 0; i < data.list.length; i += 1) {
196+
const item = data.list[i];
197+
if (item.record_id === payload.record_id) {
198+
item.status = payload.status;
199+
}
200+
newData.list.push(item);
201+
}
202+
203+
yield put({
204+
type: 'saveData',
205+
payload: newData,
206+
});
207+
}
208+
},
160209
},
161210
reducers: {
162211
saveData(state, { payload }) {

src/pages/Role/RoleCard.js

Lines changed: 39 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,24 @@ class RoleCard extends PureComponent {
2020
}
2121
const formData = { ...values };
2222
formData.sequence = parseInt(formData.sequence, 10);
23-
if (!formData.menus || formData.menus.length === 0) {
23+
formData.status = 1;
24+
if (!formData.role_menus || formData.role_menus.length === 0) {
2425
message.warning('请选择菜单权限!');
2526
return;
2627
}
28+
29+
const roleMenus = [];
30+
formData.role_menus.forEach(item => {
31+
if (item.actions && item.actions.length > 0) {
32+
item.actions.forEach(v => {
33+
roleMenus.push({ menu_id: item.menu_id, action_id: v });
34+
});
35+
} else {
36+
roleMenus.push({ menu_id: item.menu_id });
37+
}
38+
});
39+
formData.role_menus = roleMenus;
40+
2741
onSubmit(formData);
2842
});
2943
};
@@ -42,13 +56,22 @@ class RoleCard extends PureComponent {
4256

4357
const formItemLayout = {
4458
labelCol: {
45-
span: 4,
59+
span: 6,
4660
},
4761
wrapperCol: {
4862
span: 18,
4963
},
5064
};
5165

66+
const formItemLayout2 = {
67+
labelCol: {
68+
span: 3,
69+
},
70+
wrapperCol: {
71+
span: 21,
72+
},
73+
};
74+
5275
return (
5376
<Modal
5477
title={formTitle}
@@ -64,7 +87,7 @@ class RoleCard extends PureComponent {
6487
>
6588
<Form>
6689
<Row>
67-
<Col>
90+
<Col span={12}>
6891
<Form.Item {...formItemLayout} label="角色名称">
6992
{getFieldDecorator('name', {
7093
initialValue: formData.name,
@@ -77,7 +100,7 @@ class RoleCard extends PureComponent {
77100
})(<Input placeholder="请输入角色名称" />)}
78101
</Form.Item>
79102
</Col>
80-
<Col>
103+
<Col span={12}>
81104
<Form.Item {...formItemLayout} label="排序值">
82105
{getFieldDecorator('sequence', {
83106
initialValue: formData.sequence ? formData.sequence.toString() : '1000000',
@@ -90,23 +113,19 @@ class RoleCard extends PureComponent {
90113
})(<InputNumber min={1} style={{ width: '100%' }} />)}
91114
</Form.Item>
92115
</Col>
93-
<Col>
94-
<Form.Item {...formItemLayout} label="备注">
95-
{getFieldDecorator('memo', {
96-
initialValue: formData.memo,
97-
})(<Input.TextArea rows={2} placeholder="请输入备注" />)}
98-
</Form.Item>
99-
</Col>
100-
</Row>
101-
<Row>
102-
<Col span={24}>
103-
<Card title="选择菜单权限" bordered={false}>
104-
{getFieldDecorator('menus', {
105-
initialValue: formData.menus,
106-
})(<RoleMenu />)}
107-
</Card>
108-
</Col>
109116
</Row>
117+
<Form.Item {...formItemLayout2} label="备注">
118+
{getFieldDecorator('memo', {
119+
initialValue: formData.memo,
120+
})(<Input.TextArea rows={2} placeholder="请输入备注" />)}
121+
</Form.Item>
122+
<Form.Item>
123+
<Card title="选择菜单权限" bordered={false}>
124+
{getFieldDecorator('role_menus', {
125+
initialValue: formData.role_menus,
126+
})(<RoleMenu />)}
127+
</Card>
128+
</Form.Item>
110129
</Form>
111130
</Modal>
112131
);

src/pages/Role/RoleList.js

Lines changed: 67 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ import React, { PureComponent } from 'react';
22
import { connect } from 'dva';
33
import { Form } from '@ant-design/compatible';
44
import '@ant-design/compatible/assets/index.css';
5-
import { Row, Col, Card, Input, Button, Table, Modal } from 'antd';
5+
import { Row, Col, Card, Input, Button, Table, Modal, Badge } from 'antd';
66
import PageHeaderLayout from '@/layouts/PageHeaderLayout';
77
import PButton from '@/components/PermButton';
8+
import { formatDate } from '@/utils/utils';
89
import RoleCard from './RoleCard';
910

1011
import styles from './RoleList.less';
@@ -28,6 +29,20 @@ class RoleList extends PureComponent {
2829
});
2930
}
3031

32+
onItemDisableClick = item => {
33+
this.dispatch({
34+
type: 'role/changeStatus',
35+
payload: { record_id: item.record_id, status: 2 },
36+
});
37+
};
38+
39+
onItemEnableClick = item => {
40+
this.dispatch({
41+
type: 'role/changeStatus',
42+
payload: { record_id: item.record_id, status: 1 },
43+
});
44+
};
45+
3146
clearSelectRows = () => {
3247
const { selectedRowKeys } = this.state;
3348
if (selectedRowKeys.length === 0) {
@@ -94,7 +109,7 @@ class RoleList extends PureComponent {
94109
this.clearSelectRows();
95110
};
96111

97-
handleResetFormClick = () => {
112+
onResetFormClick = () => {
98113
const { form } = this.props;
99114
form.resetFields();
100115

@@ -157,23 +172,21 @@ class RoleList extends PureComponent {
157172
} = this.props;
158173

159174
return (
160-
<Form onSubmit={this.handleSearchFormSubmit} layout="inline">
175+
<Form onSubmit={this.handleSearchFormSubmit}>
161176
<Row gutter={16}>
162-
<Col md={8} sm={24}>
163-
<Form.Item label="角色名称">
164-
{getFieldDecorator('name')(<Input placeholder="请输入" />)}
177+
<Col span={8}>
178+
<Form.Item>
179+
{getFieldDecorator('queryValue')(<Input placeholder="请输入需要查询的内容" />)}
165180
</Form.Item>
166181
</Col>
167-
<Col md={8} sm={24}>
168-
<div style={{ overflow: 'hidden' }}>
169-
<span style={{ marginBottom: 24 }}>
170-
<Button type="primary" htmlType="submit">
171-
查询
172-
</Button>
173-
<Button style={{ marginLeft: 8 }} onClick={this.handleResetFormClick}>
174-
重置
175-
</Button>
176-
</span>
182+
<Col span={8}>
183+
<div style={{ overflow: 'hidden', paddingTop: 4 }}>
184+
<Button type="primary" htmlType="submit">
185+
查询
186+
</Button>
187+
<Button style={{ marginLeft: 8 }} onClick={this.onResetFormClick}>
188+
重置
189+
</Button>
177190
</div>
178191
</Col>
179192
</Row>
@@ -203,7 +216,24 @@ class RoleList extends PureComponent {
203216
width: 100,
204217
},
205218
{
206-
title: '角色备注',
219+
title: '状态',
220+
dataIndex: 'status',
221+
width: 80,
222+
render: val => {
223+
if (val === 1) {
224+
return <Badge status="success" text="启用" />;
225+
}
226+
return <Badge status="error" text="停用" />;
227+
},
228+
},
229+
{
230+
title: '创建时间',
231+
width: 100,
232+
dataIndex: 'created_at',
233+
render: val => <span>{formatDate(val, 'YYYY-MM-DD')}</span>,
234+
},
235+
{
236+
title: '备注',
207237
dataIndex: 'memo',
208238
},
209239
];
@@ -223,27 +253,44 @@ class RoleList extends PureComponent {
223253
<div className={styles.tableList}>
224254
<div className={styles.tableListForm}>{this.renderSearchForm()}</div>
225255
<div className={styles.tableListOperator}>
226-
<PButton code="add" icon="plus" type="primary" onClick={() => this.handleAddClick()}>
256+
<PButton code="add" type="primary" onClick={() => this.handleAddClick()}>
227257
新建
228258
</PButton>
229259
{selectedRows.length === 1 && [
230260
<PButton
231261
key="edit"
232262
code="edit"
233-
icon="edit"
234263
onClick={() => this.handleEditClick(selectedRows[0])}
235264
>
236265
编辑
237266
</PButton>,
238267
<PButton
239268
key="del"
240269
code="del"
241-
icon="delete"
242270
type="danger"
243271
onClick={() => this.handleDelClick(selectedRows[0])}
244272
>
245273
删除
246274
</PButton>,
275+
selectedRows[0].status === 2 && (
276+
<PButton
277+
key="enable"
278+
code="enable"
279+
onClick={() => this.onItemEnableClick(selectedRows[0])}
280+
>
281+
启用
282+
</PButton>
283+
),
284+
selectedRows[0].status === 1 && (
285+
<PButton
286+
key="disable"
287+
code="disable"
288+
type="danger"
289+
onClick={() => this.onItemDisableClick(selectedRows[0])}
290+
>
291+
禁用
292+
</PButton>
293+
),
247294
]}
248295
</div>
249296
<div>

src/pages/Role/RoleMenu/EditableCell.js

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -32,32 +32,8 @@ export default class EditableCell extends PureComponent {
3232
>
3333
<Row>
3434
{record.actions.map(v => (
35-
<Col key={v.code}>
36-
<Checkbox value={v.code}>{v.name}</Checkbox>
37-
</Col>
38-
))}
39-
</Row>
40-
</Checkbox.Group>
41-
);
42-
};
43-
44-
renderResource = () => {
45-
const { record } = this.props;
46-
if (!record.resources || record.resources.length === 0) {
47-
return null;
48-
}
49-
50-
const item = this.findItem();
51-
return (
52-
<Checkbox.Group
53-
disabled={!item}
54-
value={item ? item.resources : []}
55-
onChange={this.handleChange}
56-
>
57-
<Row>
58-
{record.resources.map(v => (
59-
<Col key={v.code}>
60-
<Checkbox value={v.code}>{v.name}</Checkbox>
35+
<Col key={v.record_id}>
36+
<Checkbox value={v.record_id}>{v.name}</Checkbox>
6137
</Col>
6238
))}
6339
</Row>
@@ -70,8 +46,7 @@ export default class EditableCell extends PureComponent {
7046
return (
7147
<td {...restProps}>
7248
{dataIndex === 'actions' && this.renderAction()}
73-
{dataIndex === 'resources' && this.renderResource()}
74-
{!(dataIndex === 'actions' || dataIndex === 'resources') && restProps.children}
49+
{!(dataIndex === 'actions') && restProps.children}
7550
</td>
7651
);
7752
}

0 commit comments

Comments
 (0)