Skip to content

Commit 1ec1ea9

Browse files
committed
feat(permission): dispatch
1 parent f48458d commit 1ec1ea9

6 files changed

Lines changed: 42 additions & 63 deletions

File tree

.eslintrc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ module.exports = {
2525
'class-methods-use-this': 'off',
2626
'consistent-return': 'off',
2727
'arrow-parens': ['error', 'as-needed'],
28+
'no-prototype-builtins': 'off',
2829
'object-curly-newline': [
2930
'error',
3031
{

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "lin-cms",
3-
"version": "0.2.2",
3+
"version": "0.3.0",
44
"private": true,
55
"scripts": {
66
"serve": "node script/plugin-get-config.js && vue-cli-service serve",

src/components/layout/User.vue

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,6 @@
2525
></el-input>
2626
</div>
2727
<img src="../../assets/img/user/corner.png" class="corner" />
28-
<div class="info">
29-
<div class="username">{{ username }}</div>
30-
<div class="mid">|</div>
31-
<div class="desc">{{ groupName }}</div>
32-
</div>
3328
</div>
3429
<ul class="dropdown-box">
3530
<li class="password" @click="goToCenter">
@@ -499,6 +494,8 @@ export default {
499494
.username {
500495
margin-bottom: 10px;
501496
font-size: 16px;
497+
height: 32px;
498+
line-height: 32px;
502499
cursor: pointer;
503500
}
504501

src/lin/models/admin.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,10 @@ export default class Admin {
125125
return res
126126
}
127127

128-
static async dispatchAuths(group_id, auths) {
129-
const res = await post('cms/admin/dispatch/patch', {
128+
static async dispatchAuths(group_id, permission_ids) {
129+
const res = await post('cms/admin/permission/dispatch/batch', {
130130
group_id,
131-
auths,
131+
permission_ids,
132132
})
133133
return res
134134
}
@@ -141,10 +141,10 @@ export default class Admin {
141141
return res
142142
}
143143

144-
static async removeAuths(group_id, auths) {
145-
const res = await post('cms/admin/remove', {
144+
static async removeAuths(group_id, permission_ids) {
145+
const res = await post('cms/admin/permission/remove', {
146146
group_id,
147-
auths,
147+
permission_ids,
148148
})
149149
return res
150150
}

src/views/admin/group/GroupAuths.vue

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export default {
3939
data() {
4040
return {
4141
allAuths: {}, // 所有分组权限
42+
allAuthIds: [],
4243
// auths: [], // 拥有的分组权限
4344
auth_module_name: [], // 权限组 module name
4445
auth_module_ids: [], // 权限组 集合 id
@@ -47,14 +48,19 @@ export default {
4748
loading: false,
4849
}
4950
},
51+
async created() {
52+
try {
53+
this.loading = true
54+
await this.getGroupAuths()
55+
this.loading = false
56+
} catch (e) {
57+
this.loading = false
58+
console.log(e)
59+
}
60+
},
5061
methods: {
51-
// 获取全部权限
52-
async getAllAuths() {
53-
this.allAuths = await Admin.getAllAuths()
54-
},
5562
// 获取分组权限
5663
async getGroupAuths() {
57-
// this.auths = [] // 父组件 重置
5864
this.allAuths = await Admin.getAllAuths()
5965
// 通过判断有没有传入id,来判断当前页面是添加分组还是编辑分组
6066
if (this.id) {
@@ -64,23 +70,24 @@ export default {
6470
res.permissions.forEach(v => {
6571
this.auth_module_ids.push(v.id)
6672
temp.push(v.module)
73+
// 每个module拥有权限个数
6774
if (!cache[v.module]) {
6875
cache[v.module] = 1
6976
} else {
7077
cache[v.module]++
7178
}
7279
})
7380
temp = Array.from(new Set(temp))
81+
// 半选
7482
temp.forEach(item => {
75-
if (this.allAuths[item].length === cache[item]) {
76-
this.auth_module_ids.push(item)
77-
} else {
83+
if (this.allAuths[item].length !== cache[item]) {
7884
this.halfAuths.push(item)
7985
}
8086
})
8187
this.auth_module_name = Array.from(new Set(temp))
8288
}
83-
this.$emit('updateAuths', this.auths)
89+
this.$emit('getCacheAuthIds', this.auth_module_ids.slice())
90+
this.$emit('updateAuths', this.auth_module_ids)
8491
this.$emit('updateAllAuths', this.allAuths)
8592
},
8693
@@ -95,7 +102,7 @@ export default {
95102
this.auth_module_ids = this.auth_module_ids.filter(v => !_ids.includes(v))
96103
this.auth_module_name = this.auth_module_name.filter(v => v !== moduleName)
97104
}
98-
// this.$emit('updateAuths', this.auths)
105+
this.$emit('updateAuths', this.auth_module_ids)
99106
},
100107
101108
// 单选
@@ -129,16 +136,6 @@ export default {
129136
this.$emit('updateAuths', this.auth_module_ids)
130137
},
131138
},
132-
async created() {
133-
try {
134-
this.loading = true
135-
await this.getGroupAuths()
136-
this.loading = false
137-
} catch (e) {
138-
this.loading = false
139-
console.log(e)
140-
}
141-
},
142139
}
143140
</script>
144141

src/views/admin/group/GroupList.vue

Lines changed: 15 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
:id="id"
4545
ref="groupAuths"
4646
@updateAuths="updateAuths"
47-
@updateCacheAuths="updateCacheAuths"
47+
@getCacheAuthIds="getCacheAuthIds"
4848
@updateAllAuths="updateAllAuths"
4949
style="margin-right:-30px;margin-left:-25px;margin-bottom:-10px;"
5050
>
@@ -130,36 +130,16 @@ export default {
130130
}
131131
}
132132
} else {
133-
// 修改权限
134-
// 权限取子集(module)
135-
this.auths = this.auths.filter(item => Object.keys(this.allAuths).indexOf(item) < 0)
136-
this.cacheAuths = this.cacheAuths.filter(item => Object.keys(this.allAuths).indexOf(item) < 0) // eslint-disable-line
133+
let addRes = 0
134+
let delRes = 0
137135
// 判断是否更改了分组权限
138136
if (this.auths.sort().toString() !== this.cacheAuths.sort().toString()) {
139-
const addAuths = [...this.auths] // 增加的权限
140-
const deleteAuths = this.cacheAuths // 删除的权限
141-
let addRes = {}
142-
let delRes = {}
143-
// 判断增加的权限
144-
for (let i = 0; i < addAuths.length; i++) {
145-
// eslint-disable-line
146-
for (let j = 0; j < this.cacheAuths.length; j++) {
147-
// eslint-disable-line
148-
if (addAuths[i] === this.cacheAuths[j]) {
149-
addAuths.splice(i, 1)
150-
}
151-
}
152-
}
153-
// 判断删除的权限
154-
for (let i = 0; i < deleteAuths.length; i++) {
155-
// eslint-disable-line
156-
for (let j = 0; j < this.auths.length; j++) {
157-
// eslint-disable-line
158-
if (deleteAuths[i] === this.auths[j]) {
159-
deleteAuths.splice(i, 1)
160-
}
161-
}
162-
}
137+
const deleteAuths = this.cacheAuths.concat(this.auths).filter(v => !this.auths.includes(v))
138+
const addAuths = this.cacheAuths.concat(this.auths).filter(v => !this.cacheAuths.includes(v))
139+
140+
console.log(deleteAuths)
141+
console.log(addAuths)
142+
163143
if (addAuths.length > 0) {
164144
addRes = await Admin.dispatchAuths(this.id, addAuths)
165145
}
@@ -235,13 +215,17 @@ export default {
235215
}
236216
},
237217
// 弹窗打开时,记录缓存所拥有的全部权限
238-
updateCacheAuths(cacheAuths) {
239-
this.cacheAuths = cacheAuths
218+
getCacheAuthIds(ids) {
219+
this.cacheAuths = ids
240220
},
241221
// 获取拥有的权限
242222
updateAuths(auths) {
243223
this.auths = auths
244224
},
225+
// 权限id集合
226+
getAllAuthIds(allAuthIds) {
227+
this.allAuthIds = allAuthIds
228+
},
245229
// 获取所有权限
246230
updateAllAuths(allAuths) {
247231
this.allAuths = allAuths

0 commit comments

Comments
 (0)