From fd0fb8385b5f09e3f5b406def587424345ed68a1 Mon Sep 17 00:00:00 2001 From: zhangrenyuan <18990852002@163.com> Date: Fri, 19 Dec 2025 15:12:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=96=B0=E5=A2=9E=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E4=B8=AD=E6=B7=BB=E5=8A=A0=E9=A2=91=E9=81=93?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E9=80=89=E6=8B=A9=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E6=98=BE=E7=A4=BA=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/permissions/rolePermission.vue | 55 +++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/src/views/permissions/rolePermission.vue b/src/views/permissions/rolePermission.vue index b904b35..00b08b9 100644 --- a/src/views/permissions/rolePermission.vue +++ b/src/views/permissions/rolePermission.vue @@ -32,16 +32,25 @@ const getRoleObj = ref({ pageSize: 10 }) const permissionAddVisible = ref(false) +// 新增角色表单数据 const addRole = ref({ roleName: '', parentId: null, checkedKeys: [], - market: '' + market: '', + // 新增角色选择的频道名称 + channel: '' }) const addRoleMarket = ref([]) +// 频道列表 const channelList = ref([t('common.all')]) +// 新增弹窗是否需要展示“频道名称”下拉 +const addHasChannel = ref(false) +// 编辑弹窗是否需要展示“频道名称”下拉 +const editHasChannel = ref(false) const getRoleList = async function (val) { if (!findMenuById(menuTree.value, permissionMapping.view_role_information)) { + // 无此权限 ElMessage.error(t('elmessage.noPermissionText')) return } @@ -119,12 +128,18 @@ const getRoleArea = async function () { // 新增角色弹窗 const openPermissionAddVisible = function () { permissionAddVisible.value = true + // 打开新增弹窗时,重置“频道相关”的显示与选中状态,避免受上一次操作影响 + addHasChannel.value = false + addRole.value.channel = '' getRoles() getLists() } const closePermissionAddVisible = function () { permissionAddVisible.value = false + // 关闭时也重置一次,确保下次打开是干净状态 + addHasChannel.value = false + addRole.value.channel = '' Ref.value.resetFields(); getRoleList() } @@ -331,14 +346,15 @@ const filterPermission = (tree) => { return true }) } -// 处理编辑角色权限时的勾选事件 +// 处理编辑角色权限时的勾选事件(编辑弹窗专用) const handleEditRolePermissionCheck = (checkedNodes, checkedInfo) => { const { checkedKeys, checkedNodes: allCheckedNodes } = checkedInfo // 判断是否有选中的节点 if (allCheckedNodes.length === 0) { permissionEditRoleObj.value.checkedKeys = [] - ifHasChannel.value = false + // 没有任何权限时,不显示频道下拉 + editHasChannel.value = false return } @@ -349,21 +365,22 @@ const handleEditRolePermissionCheck = (checkedNodes, checkedInfo) => { console.log('编辑角色选中的权限ID:', checkedKeys) console.log('选中的节点数量:', allCheckedNodes.length) if (checkedKeys.includes(124) || checkedKeys.includes(125) || checkedKeys.includes(126) || checkedKeys.includes(127)) { - ifHasChannel.value = true + // 编辑时勾选了频道管理相关菜单 -> 显示频道下拉 + editHasChannel.value = true } else { - ifHasChannel.value = false + editHasChannel.value = false } }; -//用于标记是否勾选频道管理 -const ifHasChannel = ref(false) +// 新增弹窗权限树勾选事件(新增弹窗专用) const handleCheckChange = async (checkedNodes, checkedInfo) => { const { checkedKeys, checkedNodes: allCheckedNodes } = checkedInfo // 判断是否有选中的节点 if (allCheckedNodes.length === 0) { addRole.value.checkedKeys = [] - ifHasChannel.value = false + // 新增时没有任何权限时,不显示频道下拉 + addHasChannel.value = false return } @@ -380,10 +397,11 @@ const handleCheckChange = async (checkedNodes, checkedInfo) => { addRole.value.checkedKeys = Array.from(allKeys) console.log('新增角色包含所有父级的选中项:', addRole.value.checkedKeys) if (addRole.value.checkedKeys.includes(124)) { - ifHasChannel.value = true + // 新增时勾选了频道管理菜单 -> 显示频道下拉 + addHasChannel.value = true console.log('勾选了频道'); } else { - ifHasChannel.value = false + addHasChannel.value = false } } const selectParentNodes = (treeData, nodeId, checkedKeys) => { @@ -437,6 +455,12 @@ const permissionEditRoleObj = ref({ // 编辑角色弹窗 const permissionEditRoleVisible = ref(false) +// 编辑弹窗关闭时,顺便把“编辑态是否显示频道下拉”的标记重置 +const closePermissionEditRoleVisible = () => { + permissionEditRoleVisible.value = false + editHasChannel.value = false +} + const collectIds2 = (tree) => { let ids = [] tree.forEach((node) => { @@ -481,9 +505,10 @@ const permissionEditRoleInit = async function (row) { console.log('permissionEditRoleObj.value', permissionEditRoleObj.value); if (EditIds.includes(124)) { - ifHasChannel.value = true + // 编辑初始化时,根据已有权限决定是否展示频道下拉 + editHasChannel.value = true } else { - ifHasChannel.value = false + editHasChannel.value = false } try { let roleId = permissionEditRoleObj.value.parentId; @@ -745,7 +770,7 @@ onMounted(async function () { {{ t('common.noData') }} - + @@ -794,7 +819,7 @@ onMounted(async function () { - + @@ -802,7 +827,7 @@ onMounted(async function () { - {{ t('common.cancel') }} + {{ t('common.cancel') }} {{ t('common.submit') }}