角色权限表单优化

This commit is contained in:
dzl 2025-05-09 17:56:34 +08:00
parent e1170d9f62
commit 88be2b5c5a
2 changed files with 53 additions and 24 deletions

View File

@ -63,12 +63,12 @@
:dataSource="dataSource" :dataSource="dataSource"
:scroll="{ x: 'max-content' }" :scroll="{ x: 'max-content' }"
> >
<template #bodyCell="{ column }"> <template #bodyCell="{ column ,record}">
<template v-if="column.key === 'action'"> <template v-if="column.key === 'action'">
<a-space> <a-space>
<a>排序</a> <a>排序</a>
<a-divider type="vertical" /> <a-divider type="vertical" />
<a @click="handleAdd('编辑角色')">编辑</a> <a @click="handleAdd('编辑角色',record)">编辑</a>
<a-divider type="vertical" /> <a-divider type="vertical" />
<a>删除</a> <a>删除</a>
</a-space> </a-space>
@ -185,18 +185,33 @@ const getData = async () => {
}); });
} }
const handleAdd = async (title) => { const handleAdd = async (title, record) => {
openTitle.value = title; openTitle.value = title;
open.value = true; open.value = true;
nextTick(() => { nextTick(() => {
if (formModel.value) { if (formModel.value) {
formModel.value.openForm({}); const params = record == null ? {} : {
roleName: record['roleName'],
roleDescription: record['roleDescription'],
roleId: record['roleId']
}
formModel.value.openForm(params);
} else { } else {
console.log('formModel is not ready yet'); console.log('formModel is not ready yet');
} }
}); });
} }
const handleOkModal = () => {
formModel.value.formSave(bres => {
open.value = false;
if (bres) {
getData()
}
});
}
const handleCancelModal = () => { const handleCancelModal = () => {
formModel.value.resetAll(bres => { formModel.value.resetAll(bres => {
if (bres) open.value = false; if (bres) open.value = false;

View File

@ -46,10 +46,7 @@
:wrapper-col="{ span: 21 }" :wrapper-col="{ span: 21 }"
name="roleDescription" name="roleDescription"
> >
<a-tabs <a-tabs v-model:activeKey="activeKey">
v-model:activeKey="activeKey"
@click="clickTab"
>
<a-tab-pane <a-tab-pane
key="1" key="1"
tab="运营后台" tab="运营后台"
@ -58,8 +55,8 @@
<a-tree <a-tree
v-if="treeDataByWeb.length" v-if="treeDataByWeb.length"
defaultExpandAll defaultExpandAll
v-model:checkedKeys="checkedKeys" v-model:checkedKeys="checkedKeysByWeb"
@check="checkNode" @check="checkNodeByWeb"
v-model:tree-data="treeDataByWeb" v-model:tree-data="treeDataByWeb"
checkable checkable
> >
@ -78,8 +75,8 @@
<div style="border: solid 1px #ddd;margin-top: -15px;"> <div style="border: solid 1px #ddd;margin-top: -15px;">
<a-tree <a-tree
v-if="treeDataByApplet.length" v-if="treeDataByApplet.length"
v-model:checkedKeys="checkedKeys" v-model:checkedKeys="checkedKeysByApplet"
@check="checkNode" @check="checkNodeByApplet"
:tree-data="treeDataByApplet" :tree-data="treeDataByApplet"
defaultExpandAll defaultExpandAll
checkable checkable
@ -106,37 +103,54 @@ import _ from 'lodash'
const formRef = ref(); const formRef = ref();
const form = ref({}); const form = ref({});
const activeKey = ref("1") const activeKey = ref("1")
const checkedKeys = ref([]) const checkedKeysByWeb = ref([])
const checkedKeysByApplet = ref([])
const treeDataByWeb = ref([]) const treeDataByWeb = ref([])
const treeDataByApplet = ref([]) const treeDataByApplet = ref([])
const treeDataList = ref([]) const treeDataList = ref([])
const openForm = (params = {}) => { const openForm = (params = {}) => {
loadData(params); form.value = { ...params }
loadPermissionsList(params['roleId']);
}; };
const loadData = () => { const loadPermissionsList = (roleId = null) => {
callUser("/permissions/list", {}, "get").then((res) => { callUser("/permissions/list", {}, "get").then((res) => {
if (res.code != 200) { if (res.code != 200) {
message.error(res.message) message.error(res.message)
treeData.value = [] treeDataByWeb.value = []
treeDataByApplet.value = []
return return
} }
const dataList = res.data.map((item) => { const dataList = res.data.map((item) => {
return { ...item, key: item.permId } return { ...item, key: item.permId }
}) })
treeDataList.value = dataList; treeDataList.value = dataList;
const newDataList = buildTreeWithChildren(dataList, 1) const newDataListByWeb = buildTreeWithChildren(dataList, 1)
treeDataByWeb.value = [{ description: "全部", key: "all", children: [...newDataList] }] const newDataList = buildTreeWithChildren(dataList, 2)
treeDataByWeb.value = [{ description: "全部", key: "all", children: [...newDataListByWeb] }]
treeDataByApplet.value = [{ description: "全部", key: "all", children: [...newDataList] }]
if (roleId) {
callUser("/rolePermissions/getRolePermissionsByRoleId/" + roleId, {}, "get").then((res) => {
if (res.code == 200) {
const checkKeys = res.data.map(item => {
return item['permId'];
})
checkedKeysByWeb.value = checkedKeysByApplet.value = checkKeys;
}
})
}
}); });
} }
const clickTab = (e) => { const checkNodeByWeb = (checkNodes) => {
debugger const newcheckNodes = checkNodes.filter(item => item != "all")
checkedKeysByWeb.value = newcheckNodes
} }
const checkNode = (checkNodes) => { const checkNodeByApplet = (checkNodes) => {
debugger const newcheckNodes = checkNodes.filter(item => item != "all")
checkedKeysByApplet.value = newcheckNodes
} }
const buildTreeWithChildren = (data, where) => { const buildTreeWithChildren = (data, where) => {