diff --git a/src/views/permissions/permission.vue b/src/views/permissions/permission.vue index 868e31b..92af168 100644 --- a/src/views/permissions/permission.vue +++ b/src/views/permissions/permission.vue @@ -82,6 +82,7 @@ const getAdminData = async function () { } } + // 编辑用户权限对象 const permissionEditObj = ref({ checkedKeys: [], @@ -336,13 +337,10 @@ const permissionAdd = async function () { } const addUserRules = { account: [ - { required: true, message: '请输入OA号', trigger: 'blur' }, - { pattern: /^\d+$/, message: 'OA号必须为数字', trigger: 'blur' }, - { max: 20, message: '长度不能超过20位', trigger: 'blur' } + { required: true, message: '请输入OA号', trigger: 'blur' } ], name: [ - { required: true, message: '请输入用户名', trigger: 'blur' }, - { max: 20, message: '长度不能超过20位', trigger: 'blur' } + { required: true, message: '请输入用户名', trigger: 'blur' } ], market: [ { required: true, message: '请选择所属地区', trigger: 'change' } @@ -351,8 +349,7 @@ const addUserRules = { { required: true, message: '请选择角色名称', trigger: 'change' } ], postiton: [ - { required: true, message: '请输入职位', trigger: 'blur' }, - { max: 20, message: '长度不能超过20位', trigger: 'blur' } + { required: true, message: '请输入职位', trigger: 'blur' } ], machineIds: [ { @@ -395,16 +392,15 @@ const getRoles = async function () { // 打开编辑用户权限弹窗 const openUserEditVisible = function () { + getRoles() userEditVisible.value = true } // 关闭编辑用户权限弹窗 const closeUserEditVisible = function () { userEditVisible.value = false - data.value = [] } // 编辑用户权限初始化 const permissionEditInit = async function (row) { - getRoles() console.log('row', row) permissionEditObj.value = {} permissionEditObj.value.id = row.id @@ -432,10 +428,7 @@ const permissionEditInit = async function (row) { permissionEditObj.value.parentId = result.data?.fatherId permissionEditObj.value.parentName = result.data?.fatherName console.log('get前', permissionEditObj.value.roleId); - permissionEditObj.value.roleName = row.roleName - if (permissionEditObj.value.roleId == 0) { - permissionEditObj.value.roleId = '' - } + getUserLists(row.roleId) let machineIdsRef = await request({ @@ -457,6 +450,7 @@ const permissionEditInit = async function (row) { permissionEditObj.value.machineId = permissionEditObj.value.machineIds[0] //permissionEditObj.value.permission = row.permission + permissionEditObj.value.roleName = row.roleName console.log('编辑用户权限', permissionEditObj.value) console.log('11111111111111', permissionEditObj.value.machineId) openUserEditVisible() @@ -522,62 +516,21 @@ const getUserLists = async function (selectedRoleId) { console.log('请求失败', error) } } -//编辑用户表单校验 -const editAdminRules = { - market: [ - { required: true, message: '请选择所属地区', trigger: 'change' } - ], - postiton: [ - { required: true, message: '请输入职位', trigger: 'blur' }, - { max: 20, message: '长度不能超过20位', trigger: 'blur' } - ], - machineIds: [ - { - required: true, - message: '请至少输入一个机器码', - trigger: 'change', - validator: (rule, value, callback) => { - // 检查是否有非空的机器码 - const hasValid = value.some(item => item.trim() !== ''); - if (!hasValid) { - callback(new Error('请至少输入一个机器码')); - } else { - callback(); - } - } - } - ] -}; // 编辑用户权限提交 const permissionEdit = async function () { - let { adminName: userName, roleName: oldRole, roleId: newRoleId } = permissionEditObj.value; - console.log('oldRole', oldRole); - - if (oldRole == null) { - oldRole = '未分配权限' - } + const { adminName: userName, roleName: oldRole, roleId: newRoleId } = permissionEditObj.value; const newRole = permissionList.value.find(item => item.value === newRoleId)?.label || '未知角色'; try { - await new Promise((resolve, reject) => { - Ref.value.validate((valid) => { - if (valid) { - resolve(); // 验证通过,继续执行后续代码 - } else { - reject(new Error('请检查并完善表单信息')); // 验证失败,抛出错误 - } - }); - }); - await ElMessageBox.confirm( - `确认修改权限角色?
您正在将【${userName}】的权限角色从【${oldRole}】修改为【${newRole}】
变更后,该用户的可操作权限将同步更新为新角色配置,涉及数据访问、功能操作等权限变化,请谨慎确认。`, - '警告', - { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: "warning", - lockScroll: false, - dangerouslyUseHTMLString: true //允许解析 HTML 标签 - } -); + await ElMessageBox.confirm( + `确认修改权限角色?\n您正在将【${userName}】的权限角色从【${oldRole}】修改为【${newRole}】\n变更后,该用户的可操作权限将同步更新为新角色配置,涉及数据访问、功能操作等权限变化,请谨慎确认。`, + '警告', + { + confirmButtonText: '确认', + cancelButtonText: '取消', + type: "warning", + lockScroll: false + } + ); closeUserEditVisible(); const result = await request({ url: '/permission/updateAdmin', @@ -604,7 +557,6 @@ const permissionEdit = async function () { } ); get(); - closeUserEditVisible() } else { ElMessage.error(result.msg) } @@ -612,6 +564,7 @@ const permissionEdit = async function () { } catch (error) { console.log('编辑用户权限失败', error) ElMessage.error('编辑用户权限失败') + closeUserEditVisible() } } const throttledPermissionEdit = _.throttle(permissionEdit, 5000, { @@ -763,13 +716,11 @@ const getLists = async function () { } console.log('看看data', data.value) console.log('parentID:', addRole.value.parentId, 'roleId:', roleId) - if (addRole.value.parentId&& addRole.value.parentId!=2) { + if (addRole.value.parentId) { const result = await API({ url: '/general/roleMarket', data: { id: addRole.value.parentId } }) - console.log('result11',result.data); - if (result.code == 200) { if (typeof result.data === 'string' && result.data) { addRoleMarket.value = result.data.split(','); @@ -785,16 +736,17 @@ const getLists = async function () { } console.log('addRoleMarket.value', addRoleMarket.value); - } else{ - if (typeof market.value === 'string' && market.value) { - addRoleMarket.value = market.value.split(','); - } else if (Array.isArray(market.value)) { - addRoleMarket.value = market.value + } else { + if (typeof adminData.value.markets === 'string' && adminData.value.markets) { + addRoleMarket.value = adminData.value.markets.split(','); + } else if (Array.isArray(adminData.value.markets)) { + addRoleMarket.value = adminData.value.markets } else { addRoleMarket.value = []; } } + } catch (error) { console.log('请求失败', error) } @@ -827,8 +779,8 @@ const EdithandleMarketChange = (values) => { // 如果选择了总部,只保留总部 permissionEditObj.value.market = ['总部']; } - console.log('看看现在的地区', permissionEditObj.value.market); - + console.log('看看现在的地区',permissionEditObj.value.market); + }; // 处理编辑角色权限时的勾选事件 @@ -983,6 +935,21 @@ const permissionEditRoleObj = ref({ // 编辑角色弹窗 const permissionEditRoleVisible = ref(false); +const collectIds2 = (tree) => { + let ids = []; + tree.forEach((node) => { + // 如果当前节点没有 children 或 children 为空,说明是叶子节点 + if (!node.children || node.children.length === 0) { + ids.push(node.id); + } else { + // 如果有 children,递归收集子节点的叶子节点 + ids = ids.concat(collectIds2(node.children)); + } + }); + return ids; +}; + + // 编辑角色初始化 const permissionEditRoleInit = async function (row) { console.log('row', row); @@ -997,7 +964,7 @@ const permissionEditRoleInit = async function (row) { // // 直接使用当前行的权限树数据 // if (row.tree && row.tree.length > 0) { // // 收集当前行权限树的所有 id - // permissionEditRoleObj.value.checkedKeys = collectIds(row.tree); + // permissionEditRoleObj.value.checkedKeys = collectIds2(row.tree); // // 以当前行的权限树数据作为 el-tree 的数据源 // data.value = row.tree; // } else { @@ -1006,8 +973,11 @@ const permissionEditRoleInit = async function (row) { // } try { + + + let roleId = permissionEditRoleObj.value.parentId; - // 如果没有上级角色,可根据实际情况设置默认值,这里假设为 2 + // 如果没有上级角色,设置为管理员的id if (permissionEditRoleObj.value.parentId === null || permissionEditRoleObj.value.parentId === undefined) { roleId = 2; } @@ -1020,7 +990,7 @@ const permissionEditRoleInit = async function (row) { // 收集当前行权限树的所有 id if (row.tree && row.tree.length > 0) { - permissionEditRoleObj.value.checkedKeys = collectIds(row.tree); + permissionEditRoleObj.value.checkedKeys = collectIds2(row.tree); } else { permissionEditRoleObj.value.checkedKeys = []; } @@ -1029,7 +999,7 @@ const permissionEditRoleInit = async function (row) { data.value = []; permissionEditRoleObj.value.checkedKeys = []; } - + console.log('编辑角色', permissionEditRoleObj.value); permissionEditRoleVisible.value = true; @@ -1294,9 +1264,9 @@ onMounted(async function () { --> @@ -1376,8 +1346,7 @@ onMounted(async function () { - + @@ -1400,20 +1369,17 @@ onMounted(async function () { - + - -
- 暂未分配权限 -
@@ -1446,17 +1412,17 @@ onMounted(async function () { + + + + + - - - - - - +