index.js
3.14 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
import * as services from '@/services/menu';
import { message } from 'antd';
import { getPermissionList } from '@/utils/menu';
export default {
namespace: 'SystemMenu',
state: {
dataSystemMenu: [], // 层级菜单
dataLevelMenu: [], // 铺平菜单
dataMenuInfo: [], // 菜单详情
dataExpandedKeys: [], // 菜单code
dataModal: {
modalType: '',
modalShow: false,
modalData: {},
},
},
effects: {
/* 获取菜单层级 */
*getAllSystemMenu({ payload }, { call, put, select }) {
const { dataMenuInfo } = yield select(state => state.SystemMenu);
try {
const res = yield call(services.getAllMenu);
if (res.code === 0) {
const { dataMenu, dataExpandedKeys } = getPermissionList(res.data || []);
yield put({
type: 'changeState',
payload: {
dataSystemMenu: res.data || [],
dataLevelMenu: dataMenu,
dataExpandedKeys,
},
});
// 处理菜单选中进行编辑、删除的情况
if (payload && payload.isEdit && dataMenuInfo.length) {
const selectMenuInfo = dataMenu.find(
item => item.resourceCode === dataMenuInfo[0].resourceCode,
);
yield put({
type: 'changeState',
payload: {
dataMenuInfo: [{ ...selectMenuInfo, children: undefined }],
},
});
} else if (payload && payload.isDel && dataMenuInfo.length) {
const selectMenuInfo = dataMenu.find(
item => item.resourceCode === dataMenuInfo[0].resourceCode,
);
yield put({
type: 'changeState',
payload: {
dataMenuInfo: selectMenuInfo ? [{ ...selectMenuInfo, children: undefined }] : [],
},
});
}
}
} catch (err) {
console.error(err);
}
},
/* 新增、编辑菜单 */
*updateSystemMenu({ payload }, { call, put, select }) {
try {
const res = yield call(services[!payload.id ? 'addMenu' : 'updateMenu'], payload);
if (res.code === 0) {
message.success(!payload.id ? '新增成功' : '编辑成功');
yield put({ type: 'cancelModal' });
yield put({ type: 'getAllSystemMenu', payload: { isEdit: payload.id ? true : false } });
}
} catch (err) {
console.error(err);
}
},
/* 删除菜单 */
*delSystemMenu({ payload }, { call, put, select }) {
try {
const res = yield call(services.delMenu, payload);
if (res.code === 0) {
message.success('删除成功');
yield put({ type: 'getAllSystemMenu', payload: { isDel: true } });
}
} catch (err) {
console.error(err);
}
},
},
reducers: {
changeState(state, { payload }) {
return {
...state,
...payload,
};
},
cancelModal(state, { payload }) {
return {
...state,
dataModal: {
modalType: '',
modalShow: false,
modalData: {},
},
};
},
},
};