Browse Source

完善角色授权

master
yunuo970428 2 years ago
parent
commit
eb2daff841
  1. 20
      anrui-system-ui/src/api/system/roleAdminister/index.js
  2. 323
      anrui-system-ui/src/views/RoleAdminister/RoleAdminister.vue

20
anrui-system-ui/src/api/system/roleAdminister/index.js

@ -176,3 +176,23 @@ export function savefunMenu(data) {
}
})
}
// 角色授权
export function selMenuByRole(data) {
return request({
url: `/portal/v1/sysmenurole/selMenuByRole`,
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json', 'token': tokens }
})
}
// 角色授权保存
export function updateDataByRoleMenu(data) {
return request({
url: `/portal/v1/sysmenurole/updateDataByRoleMenu`,
method: 'POST',
data: data,
headers: { 'Content-Type': 'application/json', 'token': tokens }
})
}

323
anrui-system-ui/src/views/RoleAdminister/RoleAdminister.vue

@ -22,8 +22,9 @@
<el-table-column label="操作" width="520px" align="center">
<template slot-scope="scope">
<el-button @click="sourceMenus(scope.row)" type="primary" size="mini">资源授权</el-button>
<el-button @click="funMenus(scope.row)" type="primary" size="mini">功能授权</el-button>
<el-button @click="roleMenus(scope.row)" type="primary" size="mini">菜单授权</el-button>
<!-- <el-button @click="funMenus(scope.row)" type="primary" size="mini">功能授权</el-button>-->
<!-- <el-button @click="roleMenus(scope.row)" type="primary" size="mini">菜单授权</el-button>-->
<el-button @click="charactarMenus(scope.row)" type="primary" size="mini">角色授权</el-button>
<el-button @click="mobileMenus(scope.row)" type="primary" size="mini">移动端授权</el-button>
<el-button @click="editRow(scope.row)" type="primary" size="mini">修改</el-button>
<el-button @click="delRow(scope.row)" type="danger" size="mini">删除</el-button>
@ -136,57 +137,57 @@
</div>
</el-dialog>
<!-- 功能授权 -->
<el-dialog title="功能授权" :visible.sync="funDialog" width="50%">
<table class="e-table" cellspacing="0">
<tr>
<td>角色名称</td>
<td>
<el-input v-model="roleForm.name" readonly></el-input>
</td>
</tr>
<tr>
<td>可操作功能列表</td>
<td>
<el-tree v-loading="loading" :data="treedata" ref="funTree" show-checkbox accordion node-key="sid"
:default-expand-all='true'
:default-checked-keys="checkedId" :props="defaultProps" @check-change="checkchange">
</el-tree>
</td>
</tr>
</table>
<div slot="footer" class="text-center">
<el-button type="primary" @click="funSave"> </el-button>
<el-button @click="funDialog = false"> </el-button>
</div>
</el-dialog>
<!-- <el-dialog title="功能授权" :visible.sync="funDialog" width="50%">-->
<!-- <table class="e-table" cellspacing="0">-->
<!-- <tr>-->
<!-- <td>角色名称</td>-->
<!-- <td>-->
<!-- <el-input v-model="roleForm.name" readonly></el-input>-->
<!-- </td>-->
<!-- </tr>-->
<!-- <tr>-->
<!-- <td>可操作功能列表</td>-->
<!-- <td>-->
<!-- <el-tree v-loading="loading" :data="treedata" ref="funTree" show-checkbox accordion node-key="sid"-->
<!-- :default-expand-all='true'-->
<!-- :default-checked-keys="checkedId" :props="defaultProps" @check-change="checkchange">-->
<!-- </el-tree>-->
<!-- </td>-->
<!-- </tr>-->
<!-- </table>-->
<!-- <div slot="footer" class="text-center">-->
<!-- <el-button type="primary" @click="funSave"> </el-button>-->
<!-- <el-button @click="funDialog = false"> </el-button>-->
<!-- </div>-->
<!-- </el-dialog>-->
<!-- 菜单授权 -->
<el-dialog title="菜单授权" :visible.sync="roleDialog" width="50%">
<table class="e-table" cellspacing="0">
<tr>
<td>角色名称</td>
<td>
<el-input v-model="roleForm.name" readonly></el-input>
</td>
</tr>
<tr>
<td>可操作菜单列表</td>
<td>
<div style="height:230px;line-height:120px;overflow:auto;overflow-x:hidden;">
<el-tree v-loading="loading" :data="treedata" ref="Tree" show-checkbox accordion node-key="sid"
:default-expand-all='true'
:default-checked-keys="checkedId"
:props="defaultProps"
@check-change="checkchange">
</el-tree>
</div>
</td>
</tr>
</table>
<div slot="footer" class="text-center">
<el-button type="primary" @click="getCheckedKeys"> </el-button>
<el-button @click="roleDialog = false"> </el-button>
</div>
</el-dialog>
<!-- <el-dialog title="菜单授权" :visible.sync="roleDialog" width="50%">-->
<!-- <table class="e-table" cellspacing="0">-->
<!-- <tr>-->
<!-- <td>角色名称</td>-->
<!-- <td>-->
<!-- <el-input v-model="roleForm.name" readonly></el-input>-->
<!-- </td>-->
<!-- </tr>-->
<!-- <tr>-->
<!-- <td>可操作菜单列表</td>-->
<!-- <td>-->
<!-- <div style="height:230px;line-height:120px;overflow:auto;overflow-x:hidden;">-->
<!-- <el-tree v-loading="loading" :data="treedata" ref="Tree" show-checkbox accordion node-key="sid"-->
<!-- :default-expand-all='true'-->
<!-- :default-checked-keys="checkedId"-->
<!-- :props="defaultProps"-->
<!-- @check-change="checkchange">-->
<!-- </el-tree>-->
<!-- </div>-->
<!-- </td>-->
<!-- </tr>-->
<!-- </table>-->
<!-- <div slot="footer" class="text-center">-->
<!-- <el-button type="primary" @click="getCheckedKeys"> </el-button>-->
<!-- <el-button @click="roleDialog = false"> </el-button>-->
<!-- </div>-->
<!-- </el-dialog>-->
<el-dialog title="移动端授权" :visible.sync="mobileDialog" width="50%">
<table class="e-table" cellspacing="0">
<tr>
@ -214,6 +215,105 @@
<el-button @click="mobileDialog = false"> </el-button>
</div>
</el-dialog>
<el-dialog title="角色授权" :visible.sync="charactarDialog" width="70%">
<el-tabs v-model="charactarName" type="card" @tab-click="handleCharactar">
<el-tab-pane label="菜单权限" name="first">
<table class="e-table" cellspacing="0">
<tr>
<td>角色名称</td>
<td>
<el-input v-model="roleForm.name" readonly></el-input>
</td>
</tr>
<tr>
<td>可操作菜单列表</td>
<td>
<div style="height:230px;line-height:120px;overflow:auto;overflow-x:hidden;">
<el-tree v-loading="loading" :data="treedata" ref="Tree" show-checkbox accordion node-key="sid"
:default-checked-keys="checkedId"
:props="defaultProps"
@check-change="checkchange">
</el-tree>
</div>
</td>
</tr>
</table>
<div style="margin-top: 10px" class="text-center">
<el-button type="primary" @click="getCheckedKeys"> </el-button>
<el-button @click="charactarDialog = false"> </el-button>
</div>
</el-tab-pane>
<el-tab-pane label="功能权限" name="second">
<table class="e-table" cellspacing="0">
<tr>
<td>角色名称</td>
<td>
<el-input v-model="roleForm.name" readonly></el-input>
</td>
</tr>
<tr>
<td>可操作功能列表</td>
<td>
<el-tree v-loading="loading" :data="treedata" ref="funTree" show-checkbox accordion node-key="sid"
:default-checked-keys="checkedId" :props="defaultProps" @check-change="checkchange">
</el-tree>
</td>
</tr>
</table>
<div style="margin-top: 10px" class="text-center">
<el-button type="primary" @click="funSave"> </el-button>
<el-button @click="charactarDialog = false"> </el-button>
</div>
</el-tab-pane>
<el-tab-pane label="数据权限" name="third">
<el-form :model="formobj" class="formadd">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="6" class="tleftb">
<span>角色名称</span>
</el-col>
<el-col :span="18">
<el-form-item>
<span>{{ formobj.name }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6" class="tleftb">
<span>菜单名称名称</span>
</el-col>
<el-col :span="18">
<el-form-item>
<el-input v-model="formobj.title" clearable placeholder="" style="width: 30%"/>
<el-button style="margin-left: 10px" type="primary" size="small" @click="handleSelect">查询</el-button>
</el-form-item>
</el-col>
</el-row>
<el-table :key="tableKey" :data="formobj.tableData" :index="index" border style="width: 100%">
<el-table-column type="index" label="序号" :index="index + 1" width="80" align="center">
</el-table-column>
<el-table-column prop="name" label="菜单名称" header-align="center" align="left">
</el-table-column>
<el-table-column label="权限" align="center" width="450">
<template slot-scope="scope">
<el-radio-group v-model="scope.row.dataRuleId">
<el-radio label="1">集团</el-radio>
<el-radio label="2">事业部</el-radio>
<el-radio label="3">分公司</el-radio>
<el-radio label="4">部门</el-radio>
<el-radio label="5">个人</el-radio>
</el-radio-group>
</template>
</el-table-column>
</el-table>
</el-form>
<div style="margin-top: 10px" class="text-center">
<el-button type="primary" @click="handleSave"> </el-button>
<el-button @click="charactarDialog = false"> </el-button>
</div>
</el-tab-pane>
</el-tabs>
</el-dialog>
</div>
</el-tab-pane>
<!-- 新增角色 -->
@ -286,7 +386,9 @@ import {
saveSource,
setRoleEnable,
sourceMenuTree,
typeValues
typeValues,
selMenuByRole,
updateDataByRoleMenu
} from '@/api/system/roleAdminister/index.js'
export default {
@ -338,7 +440,17 @@ export default {
//
funDialog: false,
//
mobileDialog: false
mobileDialog: false,
//
charactarDialog: false,
charactarName: '',
tableKey: 0,
index: 0,
formobj: {
name: '',
title: '',
tableData: []
}
}
},
mounted() {
@ -404,6 +516,40 @@ export default {
this.getroleOrgList()
}
},
handleCharactar(tab) {
if (tab.name === 'first') {
this.roleMenus(this.Thisrow)
} else if (tab.name === 'second') {
this.funMenus(this.Thisrow)
} else if (tab.name === 'third') {
this.formobj.name = this.Thisrow.name
selMenuByRole({ roleSid: this.Thisrow.sid, menuName: this.formobj.title }).then((res) => {
if (res.success) {
this.formobj.tableData = res.data
}
})
}
},
handleSelect() {
selMenuByRole({ roleSid: this.Thisrow.sid, menuName: this.formobj.title }).then((res) => {
if (res.success) {
this.formobj.tableData = res.data
}
})
},
handleSave() {
updateDataByRoleMenu(this.formobj.tableData).then((res) => {
if (res.success) {
this.formobj = {
name: '',
title: '',
tableData: []
}
this.$message({ showClose: true, type: 'success', message: '保存成功' })
this.charactarDialog = false
}
})
},
editRow(row) {
this.dialogTitle = '编辑'
this.editDialog = true
@ -673,70 +819,11 @@ export default {
this.loading = false
})
},
mobileMenus(row) {
this.mobileDialog = true
this.checkedId = []
this.roleForm.name = row.name
charactarMenus(row) {
this.charactarDialog = true
this.charactarName = 'first'
this.Thisrow = row
this.loading = true
getRoleMenuList(row.sid).then(res => {
let data1 = res.data
//
for (let i = 0; i < data1.length; i++) {
if (data1[i].children) {
// data2
let data2 = data1[i].children
for (let j = 0; j < data2.length; j++) {
//
if (data2[j].children) {
// data3
const data3 = data2[j].children
for (let k = 0; k < data3.length; k++) {
//
if (data3[k].children) {
const data4 = data3[k].children
for (let l = 0; l < data4.length; l++) {
if (data4[l].checked == 0) {
this.checkedId.push(data4[l].sid)
}
}
}
//
if (data3[k].children.length == 0 && data3[k].checked == 0) {
this.checkedId.push(data3[k].sid)
}
}
}
//
if (data2[j].children.length == 0 && data2[j].checked == 0) {
this.checkedId.push(data2[j].sid)
}
}
}
}
// for (let i = 0; i < data1.length; i++) {
// if (data1[i].checked == 0) {
// this.checkedId.push(data1[i].sid)
// }
// for (let j = 0; j < data1[i].children.length; j++) {
// let data2 = data1[i].children
// if (data2[j].checked == 0) {
// this.checkedId.push(data2[j].sid)
// }
// for (let k = 0; k < data2[j].children.length; k++) {
// let data3 = data2[j].children
// if (data3[k].checked == 0) {
// this.checkedId.push(data3[k].sid)
// }
// }
// }
// }
console.log('112233', this.checkedId)
this.treedata = res.data
this.getTreeParentNode(res.data, this.checkedId)
// this.getTreeParentid(res.data)
this.loading = false
})
this.roleMenus(row)
},
//
getTreeParentNode(menus, ids) {
@ -800,6 +887,7 @@ export default {
}
savefunMenu(params).then(res => {
this.funDialog = false
this.charactarDialog = false
this.$message({
message: res.msg,
type: 'success'
@ -831,6 +919,7 @@ export default {
}
saveorgrolemenus(params).then(res => {
this.roleDialog = false
this.charactarDialog = false
this.$message({
message: res.msg,
type: 'success'

Loading…
Cancel
Save