mirror of
http://112.124.100.131/ebiz-ai/ebiz-ai-knowledge-manage.git
synced 2025-12-09 10:56:50 +08:00
角色和权限
This commit is contained in:
@@ -50,3 +50,10 @@ export function getRoleList(data) {
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取角色菜单列表
|
||||
export function getRoleMenu(roleId) {
|
||||
return request({
|
||||
url: getUrl('/sysRoleEx/getRoleMenu?roleId=' + roleId),
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -27,26 +27,46 @@
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<r-table :columns="tableConfig.columns" :data="tableData" :deletion="false" :total="tableConfig.total"
|
||||
@currentChange="handleCurrentChange" @sizeChange="handleSizeChange" :currentPage="tableConfig.currentPage"
|
||||
:pageSize="tableConfig.pageSize" />
|
||||
<r-table
|
||||
:columns="tableConfig.columns"
|
||||
:data="tableData"
|
||||
:deletion="false"
|
||||
:total="tableConfig.total"
|
||||
@currentChange="handleCurrentChange"
|
||||
@sizeChange="handleSizeChange"
|
||||
:currentPage="tableConfig.currentPage"
|
||||
:pageSize="tableConfig.pageSize"
|
||||
/>
|
||||
</el-card>
|
||||
|
||||
<!-- 角色新增弹窗 -->
|
||||
<role-dialog :visible.sync="dialogVisible" :title="dialogTitle" :is-edit="isEdit" :is-view="isView"
|
||||
:role-data="currentRoleData" @submit="handleSubmit" />
|
||||
<role-dialog :visible.sync="dialogVisible" :title="dialogTitle" :is-edit="isEdit" :is-view="isView" :role-data="currentRoleData" @submit="handleSubmit" />
|
||||
|
||||
<!-- 角色权限 抽屉 -->
|
||||
<el-drawer :visible.sync="permissionDrawer.visible" :title="permissionDrawer.title" size="60%">
|
||||
<el-tree :data="data" show-checkbox node-key="id" :default-expanded-keys="[2, 3]" :default-checked-keys="[5]"
|
||||
:props="defaultProps">
|
||||
<el-tree
|
||||
:data="menuTree"
|
||||
show-checkbox
|
||||
node-key="id"
|
||||
default-expand-all
|
||||
:props="defaultProps"
|
||||
:default-checked-keys="defaultCheckedKeys"
|
||||
@check="handleCheckChange"
|
||||
>
|
||||
</el-tree>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-button type="primary" size="medium" @click="handleOnSave">确定</el-button>
|
||||
<el-button type="primary" plain size="medium" @click="handleOnClose">取消</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-drawer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getRolePage, deleteRole, queryRoleDetail, getMenuTree } from '@/api/system/role'
|
||||
import { getRolePage, deleteRole, queryRoleDetail, updateRole, getRoleMenu } from '@/api/system/role'
|
||||
import { getMenuTree } from '@/api/system/menu'
|
||||
import RoleDialog from '@/views/system/role/components/RoleDialog'
|
||||
|
||||
export default {
|
||||
@@ -69,12 +89,23 @@ export default {
|
||||
currentRoleData: {},
|
||||
total: 0,
|
||||
roleList: [],
|
||||
menuTree: [],
|
||||
defaultProps: {
|
||||
children: 'children',
|
||||
label: 'menuName'
|
||||
},
|
||||
defaultCheckedKeys: [],
|
||||
checkedKeys: [], // 存储当前选中的节点key
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
roleCodeLike: '',
|
||||
roleNameLike: ''
|
||||
},
|
||||
roleMenuForm: {
|
||||
id: '',
|
||||
sysMenuRoleDTOs: [{ menuId: '' }]
|
||||
},
|
||||
// 表格配置项
|
||||
tableConfig: {
|
||||
total: 0,
|
||||
@@ -89,31 +120,28 @@ export default {
|
||||
isRedraw: true,
|
||||
render: (h, params) => {
|
||||
return h('div', [
|
||||
h(
|
||||
'el-button',
|
||||
{
|
||||
props: { type: 'primary', size: 'mini', icon: 'el-icon-edit-outline', title: '编辑' },
|
||||
class: "normal-button",
|
||||
on: { click: () => this.handleEdit(params.row) }
|
||||
},
|
||||
),
|
||||
h('el-button', {
|
||||
props: { type: 'primary', size: 'mini', icon: 'el-icon-edit-outline', title: '编辑' },
|
||||
class: 'normal-button',
|
||||
on: { click: () => this.handleEdit(params.row) }
|
||||
}),
|
||||
h(
|
||||
'el-button',
|
||||
{
|
||||
props: { type: 'danger', size: 'mini', icon: 'el-icon-delete', title: '删除' },
|
||||
class: "normal-button",
|
||||
class: 'normal-button',
|
||||
on: { click: () => this.handleDelete(params.row) }
|
||||
},
|
||||
"删除"
|
||||
'删除'
|
||||
),
|
||||
h(
|
||||
'el-button',
|
||||
{
|
||||
props: { type: 'primary', size: 'mini', icon: 'el-icon-tickets', title: '设置权限' },
|
||||
class: "normal-button",
|
||||
class: 'normal-button',
|
||||
on: { click: () => this.handlePermissionVisible(params.row) }
|
||||
},
|
||||
"设置权限"
|
||||
'设置权限'
|
||||
)
|
||||
])
|
||||
}
|
||||
@@ -128,11 +156,46 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
async handlePermissionVisible(row) {
|
||||
this.getRoleMenuData(row.id)
|
||||
this.roleMenuForm.id = row.id
|
||||
this.permissionDrawer.visible = true
|
||||
|
||||
// const response = await getMenuTree()
|
||||
// console.log(response);
|
||||
|
||||
getMenuTree({})
|
||||
.then(response => {
|
||||
if (response.code === '0') {
|
||||
this.menuTree = response.content.content
|
||||
} else {
|
||||
this.$message.error(response.msg || '获取菜单列表失败')
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
this.$message.error('获取菜单列表出错', error)
|
||||
})
|
||||
.finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
getRoleMenuData(roleId) {
|
||||
getRoleMenu(roleId)
|
||||
.then(response => {
|
||||
if (response.code === '0') {
|
||||
const nodes = response.content.content
|
||||
nodes.forEach(node => {
|
||||
this.defaultCheckedKeys.push(node.id)
|
||||
if (node.children !== null) {
|
||||
node.children.forEach(v => {
|
||||
this.defaultCheckedKeys.push(v.id)
|
||||
})
|
||||
}
|
||||
})
|
||||
console.log(this.defaultCheckedKeys, 'getRoleMenu')
|
||||
} else {
|
||||
this.$message.error(response.msg || '获取角色菜单失败')
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
this.$message.error('获取角色菜单出错', error)
|
||||
})
|
||||
},
|
||||
// 获取角色列表
|
||||
getRoleList() {
|
||||
@@ -188,7 +251,6 @@ export default {
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('获取角色详情出错:', error)
|
||||
this.$message.error('获取角色详情出错')
|
||||
})
|
||||
.finally(() => {
|
||||
@@ -237,6 +299,38 @@ export default {
|
||||
.catch(() => {
|
||||
this.$message.info('已取消删除')
|
||||
})
|
||||
},
|
||||
// 关闭权限抽屉
|
||||
handleOnClose() {
|
||||
this.permissionDrawer.visible = false
|
||||
},
|
||||
// 选中状态变化时的处理
|
||||
handleCheckChange(checkedNodes, object) {
|
||||
this.checkedKeys = object.checkedKeys
|
||||
},
|
||||
// 修改权限
|
||||
handleOnSave() {
|
||||
this.checkedKeys.forEach(menuId => {
|
||||
if (menuId !== '' && menuId !== null) {
|
||||
this.roleMenuForm.sysMenuRoleDTOs.push({ menuId: menuId })
|
||||
}
|
||||
})
|
||||
console.log(this.roleMenuForm, '角色权限表单')
|
||||
updateRole(this.roleMenuForm)
|
||||
.then(response => {
|
||||
if (response.code === '0') {
|
||||
this.$message.success(this.isEdit ? '修改成功' : '添加成功')
|
||||
delete this.roleMenuForm.id
|
||||
delete this.roleMenuForm.sysMenuRoleDTOs
|
||||
} else {
|
||||
this.$message.error(response.msg || (this.isEdit ? '修改失败' : '添加失败'))
|
||||
delete this.roleMenuForm.id
|
||||
delete this.roleMenuForm.sysMenuRoleDTOs
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
this.permissionDrawer.visible = false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user