diff --git a/src/views/permissions/permission.vue b/src/views/permissions/permission.vue index 9de459a..16d2c64 100644 --- a/src/views/permissions/permission.vue +++ b/src/views/permissions/permission.vue @@ -209,10 +209,8 @@ const reset = function () { const getArea = async function () { try { const result = await request({ - url: '/general/adminMarkets', - data: { - account: adminData.value.account - } + url: '/permission/getmarket', + data: {} }) market.value = result.data } catch (error) { @@ -348,13 +346,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' } @@ -363,8 +358,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: [ { @@ -407,16 +401,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 @@ -444,10 +437,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({ @@ -469,6 +459,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() @@ -534,62 +525,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', @@ -616,7 +566,6 @@ const permissionEdit = async function () { } ); get(); - closeUserEditVisible() } else { ElMessage.error(result.msg) } @@ -624,6 +573,7 @@ const permissionEdit = async function () { } catch (error) { console.log('编辑用户权限失败', error) ElMessage.error('编辑用户权限失败') + closeUserEditVisible() } } const throttledPermissionEdit = _.throttle(permissionEdit, 5000, { @@ -772,23 +722,18 @@ const getLists = async function () { data: { id: roleId } }) data.value = res.data - if(addRole.value.parentId ==null ||addRole.value.parentId ==undefined){ data.value = data.value - console.log('111') }else if (addRole.value.parentId != 2) { - console.log('222') data.value = data.value.filter(item => item.id !== 9); } 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(','); @@ -820,6 +765,7 @@ const getLists = async function () { addRole.value.market = '' } } + } catch (error) { console.log('请求失败', error) } @@ -852,8 +798,8 @@ const EdithandleMarketChange = (values) => { // 如果选择了总部,只保留总部 permissionEditObj.value.market = ['总部']; } - console.log('看看现在的地区', permissionEditObj.value.market); - + console.log('看看现在的地区',permissionEditObj.value.market); + }; // 处理编辑角色权限时的勾选事件 @@ -1008,6 +954,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); @@ -1022,7 +983,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 { @@ -1031,8 +992,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; } @@ -1045,7 +1009,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 = []; } @@ -1054,7 +1018,7 @@ const permissionEditRoleInit = async function (row) { data.value = []; permissionEditRoleObj.value.checkedKeys = []; } - + console.log('编辑角色', permissionEditRoleObj.value); permissionEditRoleVisible.value = true; @@ -1319,9 +1283,9 @@ onMounted(async function () { --> @@ -1401,8 +1365,7 @@ onMounted(async function () { - + @@ -1425,20 +1388,17 @@ onMounted(async function () { - + - -
- 暂未分配权限 -
@@ -1471,7 +1431,7 @@ onMounted(async function () { - + @@ -1532,15 +1492,16 @@ onMounted(async function () { - +