Commit 99097018 by ZhengJie

[缺陷修复](v2.5): 修复角色分配菜单三级节点数据丢失的Bug

close https://github.com/elunez/eladmin/issues/413
parent 7865cd94
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
"echarts": "^4.2.1", "echarts": "^4.2.1",
"echarts-gl": "^1.1.1", "echarts-gl": "^1.1.1",
"echarts-wordcloud": "^1.1.3", "echarts-wordcloud": "^1.1.3",
"element-ui": "^2.12.0", "element-ui": "^2.13.2",
"file-saver": "1.3.8", "file-saver": "1.3.8",
"fuse.js": "3.4.4", "fuse.js": "3.4.4",
"js-beautify": "^1.10.2", "js-beautify": "^1.10.2",
......
...@@ -16,7 +16,6 @@ export function getMenus(params) { ...@@ -16,7 +16,6 @@ export function getMenus(params) {
} }
export function getMenuSuperior(ids) { export function getMenuSuperior(ids) {
console.log(ids.length)
const data = ids.length || ids.length === 0 ? ids : Array.of(ids) const data = ids.length || ids.length === 0 ? ids : Array.of(ids)
return request({ return request({
url: 'api/menus/superior', url: 'api/menus/superior',
......
...@@ -109,6 +109,7 @@ ...@@ -109,6 +109,7 @@
accordion accordion
show-checkbox show-checkbox
node-key="id" node-key="id"
@check="menuChange"
/> />
</el-card> </el-card>
</el-col> </el-col>
...@@ -185,7 +186,7 @@ export default { ...@@ -185,7 +186,7 @@ export default {
} }
} }
const depts = [] const depts = []
form.depts.forEach(function(dept, index) { form.depts.forEach(function(dept) {
depts.push(dept.id) depts.push(dept.id)
}) })
form.depts = depts form.depts = depts
...@@ -200,7 +201,7 @@ export default { ...@@ -200,7 +201,7 @@ export default {
return false return false
} else if (crud.form.dataScope === '自定义') { } else if (crud.form.dataScope === '自定义') {
const depts = [] const depts = []
crud.form.depts.forEach(function(data, index) { crud.form.depts.forEach(function(data) {
const dept = { id: data } const dept = { id: data }
depts.push(dept) depts.push(dept)
}) })
...@@ -218,7 +219,7 @@ export default { ...@@ -218,7 +219,7 @@ export default {
}, },
afterErrorMethod(crud) { afterErrorMethod(crud) {
const depts = [] const depts = []
crud.form.depts.forEach(function(dept, index) { crud.form.depts.forEach(function(dept) {
depts.push(dept.id) depts.push(dept.id)
}) })
crud.form.depts = depts crud.form.depts = depts
...@@ -236,7 +237,7 @@ export default { ...@@ -236,7 +237,7 @@ export default {
// 初始化 // 初始化
this.menuIds = [] this.menuIds = []
// 菜单数据需要特殊处理 // 菜单数据需要特殊处理
val.menus.forEach(function(data, index) { val.menus.forEach(function(data) {
_this.menuIds.push(data.id) _this.menuIds.push(data.id)
}) })
getMenuSuperior(this.menuIds).then(res => { getMenuSuperior(this.menuIds).then(res => {
...@@ -246,21 +247,25 @@ export default { ...@@ -246,21 +247,25 @@ export default {
}) })
} }
}, },
menuChange(menu) {
// 判断是否在 menuIds 中,如果存在则删除,否则添加
const index = this.menuIds.indexOf(menu.id)
if (index !== -1) {
this.menuIds.splice(index, 1)
} else {
this.menuIds.push(menu.id)
}
},
// 保存菜单 // 保存菜单
saveMenu() { saveMenu() {
this.menuLoading = true this.menuLoading = true
const role = { id: this.currentId, menus: [] } const role = { id: this.currentId, menus: [] }
// 得到半选的父节点数据,保存起来
this.$refs.menu.getHalfCheckedNodes().forEach(function(data, index) {
const menu = { id: data.id }
role.menus.push(menu)
})
// 得到已选中的 key 值 // 得到已选中的 key 值
this.$refs.menu.getCheckedKeys().forEach(function(data, index) { this.menuIds.forEach(function(id) {
const menu = { id: data } const menu = { id: id }
role.menus.push(menu) role.menus.push(menu)
}) })
crudRoles.editMenu(role).then(res => { crudRoles.editMenu(role).then(() => {
this.crud.notify('保存成功', CRUD.NOTIFICATION_TYPE.SUCCESS) this.crud.notify('保存成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.menuLoading = false this.menuLoading = false
this.update() this.update()
...@@ -328,7 +333,7 @@ export default { ...@@ -328,7 +333,7 @@ export default {
this.getDepts() this.getDepts()
} }
}, },
checkboxT(row, rowIndex) { checkboxT(row) {
return row.level >= this.level return row.level >= this.level
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment