|
1
|
import {USER_AUTH, SYS_BUTTON_AUTH} from "@/store/mutation-types"
|
|
2
|
|
|
3
4
|
export function disabledAuthFilter(code, formData) {
if (nodeDisabledAuth(code, formData)) {
|
|
5
|
return true;
|
|
6
|
} else {
|
|
7
8
9
10
|
return globalDisabledAuth(code);
}
}
|
|
11
|
function nodeDisabledAuth(code, formData) {
|
|
12
13
14
15
16
17
|
//console.log("页面权限禁用--NODE--开始");
let permissionList = [];
try {
//console.log("页面权限禁用--NODE--开始",formData);
if (formData) {
let bpmList = formData.permissionList;
|
|
18
|
permissionList = bpmList.filter(item => item.type == '2')
|
|
19
20
21
22
23
|
// for (let bpm of bpmList) {
// if(bpm.type == '2') {
// permissionList.push(bpm);
// }
// }
|
|
24
|
} else {
|
|
25
26
27
28
29
|
return false;
}
} catch (e) {
//console.log("页面权限异常----", e);
}
|
|
30
|
if (permissionList.length == 0) {
|
|
31
32
33
34
35
36
|
return false;
}
console.log("流程节点页面权限禁用--NODE--开始");
let permissions = [];
for (let item of permissionList) {
|
|
37
|
if (item.type == '2') {
|
|
38
39
40
41
42
43
|
permissions.push(item.action);
}
}
//console.log("页面权限----"+code);
if (!permissions.includes(code)) {
return false;
|
|
44
|
} else {
|
|
45
|
for (let item2 of permissionList) {
|
|
46
|
if (code === item2.action) {
|
|
47
48
49
50
51
52
53
54
|
console.log("流程节点页面权限禁用--NODE--生效");
return true;
}
}
}
return false;
}
|
|
55
|
function globalDisabledAuth(code) {
|
|
56
57
58
59
60
61
62
63
|
//console.log("全局页面禁用权限--Global--开始");
let permissionList = [];
let allPermissionList = [];
//let authList = Vue.ls.get(USER_AUTH);
let authList = JSON.parse(sessionStorage.getItem(USER_AUTH) || "[]");
for (let auth of authList) {
|
|
64
|
if (auth.type == '2') {
|
|
65
66
67
68
69
70
|
permissionList.push(auth);
}
}
//console.log("页面禁用权限--Global--",sessionStorage.getItem(SYS_BUTTON_AUTH));
let allAuthList = JSON.parse(sessionStorage.getItem(SYS_BUTTON_AUTH) || "[]");
for (let gauth of allAuthList) {
|
|
71
|
if (gauth.type == '2') {
|
|
72
73
74
75
|
allPermissionList.push(gauth);
}
}
//设置全局配置是否有命中
|
|
76
|
let gFlag = false;//禁用命中
|
|
77
|
let invalidFlag = false;//无效命中
|
|
78
|
if (allPermissionList != null && allPermissionList != "" && allPermissionList != undefined && allPermissionList.length > 0) {
|
|
79
|
for (let itemG of allPermissionList) {
|
|
80
81
|
if (code === itemG.action) {
if (itemG.status == '0') {
|
|
82
83
|
invalidFlag = true;
break;
|
|
84
|
} else {
|
|
85
86
87
88
89
90
|
gFlag = true;
break;
}
}
}
}
|
|
91
|
if (invalidFlag) {
|
|
92
93
|
return false;
}
|
|
94
|
if (permissionList === null || permissionList === "" || permissionList === undefined || permissionList.length <= 0) {
|
|
95
96
97
98
|
return gFlag;
}
let permissions = [];
for (let item of permissionList) {
|
|
99
|
if (item.type == '2') {
|
|
100
101
102
103
104
105
|
permissions.push(item.action);
}
}
//console.log("页面禁用权限----"+code);
if (!permissions.includes(code)) {
return gFlag;
|
|
106
|
} else {
|
|
107
|
for (let item2 of permissionList) {
|
|
108
|
if (code === item2.action) {
|
|
109
110
111
112
113
114
115
116
117
|
//console.log("全局页面权限解除禁用--Global--生效");
gFlag = false;
}
}
return gFlag;
}
}
|
|
118
|
export function colAuthFilter(columns, pre) {
|
|
119
120
|
let authList = getNoAuthCols(pre);
const cols = columns.filter(item => {
|
|
121
|
if (hasColoum(item, authList)) {
|
|
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
return true
}
return false
})
return cols
}
/**
* 【子表行编辑】实现两个功能:
* 1、隐藏JEditableTable无权限的字段
* 2、禁用JEditableTable无权限的字段
* @param columns
* @param pre
* @returns {*}
*/
|
|
137
|
export function colAuthFilterJEditableTable(columns, pre) {
|
|
138
139
140
141
142
|
let authList = getAllShowAndDisabledAuthCols(pre);
const cols = columns.filter(item => {
let oneAuth = authList.find(auth => {
return auth.action === pre + item.key;
});
|
|
143
|
if (!oneAuth) {
|
|
144
145
146
147
|
return true
}
//代码严谨处理,防止一个授权标识,配置多次
|
|
148
|
if (oneAuth instanceof Array) {
|
|
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
oneAuth = oneAuth[0]
}
//禁用逻辑
if (oneAuth.type == '2' && !oneAuth.isAuth) {
item["disabled"] = true
return true
}
//隐藏逻辑逻辑
if (oneAuth.type == '1' && !oneAuth.isAuth) {
return false
}
return true
})
return cols
}
|
|
167
|
function hasColoum(item, authList) {
|
|
168
169
170
171
172
173
174
175
|
if (authList.includes(item.dataIndex)) {
return false
}
return true
}
//权限无效时不做控制,有效时控制,只能控制 显示不显示
//根据授权码前缀获取未授权的列信息
|
|
176
177
|
export function getNoAuthCols(pre) {
if (!pre || pre.length == 0) {
|
|
178
179
180
181
182
183
184
185
186
|
return []
}
let permissionList = [];
let allPermissionList = [];
//let authList = Vue.ls.get(USER_AUTH);
let authList = JSON.parse(sessionStorage.getItem(USER_AUTH) || "[]");
for (let auth of authList) {
//显示策略,有效状态
|
|
187
188
|
if (auth.type == '1' && startWith(auth.action, pre)) {
permissionList.push(substrPre(auth.action, pre));
|
|
189
190
191
192
193
194
|
}
}
//console.log("页面禁用权限--Global--",sessionStorage.getItem(SYS_BUTTON_AUTH));
let allAuthList = JSON.parse(sessionStorage.getItem(SYS_BUTTON_AUTH) || "[]");
for (let gauth of allAuthList) {
//显示策略,有效状态
|
|
195
196
|
if (gauth.type == '1' && gauth.status == '1' && startWith(gauth.action, pre)) {
allPermissionList.push(substrPre(gauth.action, pre));
|
|
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
}
}
const cols = allPermissionList.filter(item => {
if (permissionList.includes(item)) {
return false;
}
return true;
})
return cols;
}
/**
* 将Online的行编辑按钮权限,添加至本地存储
*/
|
|
211
|
export function addOnlineBtAuth2Storage(pre, authList) {
|
|
212
|
let allAuthList = JSON.parse(sessionStorage.getItem(SYS_BUTTON_AUTH) || "[]");
|
|
213
214
|
let newAuthList = allAuthList.filter(item => {
if (!item.action) {
|
|
215
216
|
return true
}
|
|
217
|
return item.action.indexOf(pre) < 0
|
|
218
|
})
|
|
219
220
|
if (authList && authList.length > 0) {
for (let item of authList) {
|
|
221
|
newAuthList.push({
|
|
222
223
224
|
action: pre + item,
type: 1,
status: 1
|
|
225
226
227
|
})
}
let temp = JSON.parse(sessionStorage.getItem(USER_AUTH) || "[]");
|
|
228
229
|
let newArr = temp.filter(item => {
if (!item.action) {
|
|
230
231
|
return true
}
|
|
232
|
return item.action.indexOf(pre) < 0 || authList.indexOf(item.action.replace(pre, '')) < 0
|
|
233
234
235
236
237
238
239
240
241
242
243
244
245
246
|
})
sessionStorage.setItem(USER_AUTH, JSON.stringify(newArr))
}
sessionStorage.setItem(SYS_BUTTON_AUTH, JSON.stringify(newAuthList))
}
/**
* 额外增加方法【用于行编辑组件】
* date: 2020-04-05
* author: scott
* @param pre
* @returns {*[]}
*/
|
|
247
|
function getAllShowAndDisabledAuthCols(pre) {
|
|
248
249
250
251
252
253
|
//用户拥有的权限
let userAuthList = JSON.parse(sessionStorage.getItem(USER_AUTH) || "[]");
//全部权限配置
let allAuthList = JSON.parse(sessionStorage.getItem(SYS_BUTTON_AUTH) || "[]");
let newAllAuthList = allAuthList.map(function (item, index) {
|
|
254
255
|
let hasAuthArray = userAuthList.filter(u => u.action === item.action);
if (hasAuthArray && hasAuthArray.length > 0) {
|
|
256
257
258
259
260
261
262
263
|
item["isAuth"] = true
}
return item;
})
return newAllAuthList;
}
|
|
264
265
|
function startWith(str, pre) {
if (pre == null || pre == "" || str == null || str == "" || str.length == 0 || pre.length > str.length)
|
|
266
267
268
269
270
271
272
|
return false;
if (str.substr(0, pre.length) == pre)
return true;
else
return false;
}
|
|
273
|
function substrPre(str, pre) {
|
|
274
275
|
return str.substr(pre.length);
}
|