From 74b96e43d6dad1d3566538c04ecaf053069070fd Mon Sep 17 00:00:00 2001
From: zhangyongQINGHU <15371817+zhangyongqinghu@user.noreply.gitee.com>
Date: Sat, 19 Jul 2025 18:57:11 +0800
Subject: [PATCH] =?UTF-8?q?=E9=87=91=E5=B8=81=E6=B6=88=E8=80=97=E5=AF=BC?=
=?UTF-8?q?=E5=87=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/permissions/permission.vue | 165 +++++++++++++++++++++++++++++------
1 file changed, 140 insertions(+), 25 deletions(-)
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 }) => {
{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
- }}
+ }}
@@ -733,32 +830,50 @@ const handleCheckChange = (checkedNodes, { checkedKeys }) => {
-
+
-
+
-
+
-
+
-
-
-
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+