diff --git a/src/views/permissions/permission.vue b/src/views/permissions/permission.vue index 982c1d6..0d4354e 100644 --- a/src/views/permissions/permission.vue +++ b/src/views/permissions/permission.vue @@ -64,10 +64,18 @@ const addRole = ref({ parentId: null, checkedKeys: [], grade: '', - market:'' + market: '' }) // 新增角色的权限列表 const permissionSelect = ref() + + +// 编辑用户权限对象 +const permissionEditObj = ref({ + checkedKeys: [], + machineIds: [], + machineId: '' +}) const addMachineIdInput = function () { if (addAdmin.value.machineIds.length >= 1) { ElMessage.warning('设备数量已达上限') @@ -75,9 +83,17 @@ const addMachineIdInput = function () { } addAdmin.value.machineIds.push('') } +const UseraddMachineIdInput = function () { + if (!permissionEditObj.value.machineIds) { + permissionEditObj.value.machineIds = []; + } + if (permissionEditObj.value.machineIds.length >= 1) { + ElMessage.warning('设备数量已达上限') + return + } + permissionEditObj.value.machineIds.push('') +} -// 编辑用户权限对象 -const permissionEditObj = ref({}) // 删除权限对象 const delObj = ref({}) // 删除角色对象 @@ -313,6 +329,7 @@ const getRoles = async function () { // 打开编辑用户权限弹窗 const openUserEditVisible = function () { + getRoles() userEditVisible.value = true } // 关闭编辑用户权限弹窗 @@ -327,33 +344,113 @@ const permissionEditInit = async function (row) { permissionEditObj.value.account = row.account permissionEditObj.value.name = row.name permissionEditObj.value.market = row.market + // 将字符串形式的 market 转换为数组 + if (typeof row.market === 'string' && row.market) { + permissionEditObj.value.market = row.market.split(','); + } else { + // 处理空值或非字符串情况 + permissionEditObj.value.market = []; + } permissionEditObj.value.postiton = row.postiton permissionEditObj.value.roleId = row.roleId const result = await request({ url: '/role/selectFather', - data: row.roleId + data: { + id: row.roleId + } }) + console.log('初始查上级权限', result) permissionEditObj.value.parentId = result.data?.fatherId permissionEditObj.value.parentName = result.data?.fatherName + getUserLists(row.roleId) - - //permissionEditObj.value.permission = row.permission + //permissionEditObj.value.permission = row.permission permissionEditObj.value.roleName = row.roleName console.log('编辑用户权限', permissionEditObj.value) openUserEditVisible() } +const collectIds = (tree) => { + let ids = []; + tree.forEach((node) => { + ids.push(node.id); + if (node.children && node.children.length > 0) { + ids = ids.concat(collectIds(node.children)); + } + }); + return ids; +}; +// 定义上级角色提示变量 +const parentRoleTip = ref(''); +//根据上级角色控制权限列表,选择角色调整上级角色 +const getUserLists = async function (selectedRoleId) { + try { + console.log('selectedRoleId', selectedRoleId); + permissionEditObj.value.parentId = null; + permissionEditObj.value.parentName = ''; + permissionEditObj.value.checkedKeys = []; + parentRoleTip.value = ''; + const parentRes = await request({ + url: '/role/selectFather', + data: { id: selectedRoleId } // 用选中的角色ID请求 + }); + console.log('parentRes', parentRes) + const parentId = parentRes.data.fatherId; + const parentName = parentRes.data.parentName; + + permissionEditObj.value.parentId = parentId; + permissionEditObj.value.parentName = parentName; + if (parentId == null) { + // 无上级角色:显示提示 + parentRoleTip.value = '该角色无上级角色'; + } + + let roleId = permissionEditObj.value.parentId + if (permissionEditObj.value.parentId === null || permissionEditObj.value.parentId === undefined) { + roleId = 2 + } + const res = await API({ + url: '/menu/tree', + data: { id: roleId } + }) + data.value = res.data + permissionEditObj.value.checkedKeys = collectIds(res.data) || []; + console.log('看看data', data.value) + console.log('看checkedKeys', permissionEditObj.value.checkedKeys) + console.log('parentID:', permissionEditObj.value.parentId, 'roleId:', roleId) + } catch (error) { + console.log('请求失败', error) + } +} // 编辑用户权限提交 const permissionEdit = async function () { + const { name: userName, roleName: oldRole, roleId: newRoleId } = permissionEditObj.value; + const newRole = permissionList.value.find(item => item.value === newRoleId)?.label || '未知角色'; try { + await ElMessageBox.confirm( + `确认修改权限角色?\n您正在将【${userName}】的权限角色从【${oldRole}】修改为【${newRole}】\n变更后,该用户的可操作权限将同步更新为新角色配置,涉及数据访问、功能操作等权限变化,请谨慎确认。`, + '警告', + { + confirmButtonText: '确认', + cancelButtonText: '取消', + type: "warning", + lockScroll: false + } + ); + closeUserEditVisible(); const result = await request({ url: '/permission/updateAdminRole', data: permissionEditObj.value - }) - console.log('请求成功3', result) - ElMessage.success('编辑用户权限成功') - get() - closeUserEditVisible() + }); + await ElMessageBox.alert( + `用户${userName}的权限角色已更改为【${newRole}】`, + '成功', + { + confirmButtonText: '确定', + type: 'success' // 设置为 success 类型 + } + ); + get(); } catch (error) { console.log('编辑用户权限失败', error) ElMessage.error('编辑用户权限失败') @@ -420,7 +517,7 @@ const handleAddRole = async function () { "menuIds": addRole.value.checkedKeys, "priority": addRole.value.grade, "fatherId": addRole.value.parentName, - "market":addRole.value.market + "market": addRole.value.market } }) console.log('成功了,看看addRole', addRole.value) @@ -555,7 +652,7 @@ const handleCheckChange = (checkedNodes, { checkedKeys }) => { @@ -733,32 +830,50 @@ const handleCheckChange = (checkedNodes, { checkedKeys }) => { - + - + - + - + - - - - - + + - - + + + + + + + + + + + +
+ + 添加 + +
+ +
+