From c2029686d15a6be40c2f887a56b82a9268163bd2 Mon Sep 17 00:00:00 2001 From: ZhangYong Date: Thu, 24 Jul 2025 00:15:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=92=E8=89=B2=E7=AE=A1=E7=90=86=E6=9D=83?= =?UTF-8?q?=E9=99=90=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/permissions/permission.vue | 163 +++++++++++++++++++++-------------- 1 file changed, 97 insertions(+), 66 deletions(-) diff --git a/src/views/permissions/permission.vue b/src/views/permissions/permission.vue index bc9ce7f..f8e8c49 100644 --- a/src/views/permissions/permission.vue +++ b/src/views/permissions/permission.vue @@ -92,8 +92,6 @@ const getRolePermission = async function(){ viewRole.value = collectIds(result.data) console.log('result111',viewRole.value); } - - // 编辑用户权限对象 const permissionEditObj = ref({ checkedKeys: [], @@ -348,10 +346,13 @@ const permissionAdd = async function () { } const addUserRules = { account: [ - { required: true, message: '请输入OA号', trigger: 'blur' } + { required: true, message: '请输入OA号', trigger: 'blur' }, + { pattern: /^\d+$/, message: 'OA号必须为数字', trigger: 'blur' }, + { max: 20, message: '长度不能超过20位', trigger: 'blur' } ], name: [ - { required: true, message: '请输入用户名', trigger: 'blur' } + { required: true, message: '请输入用户名', trigger: 'blur' }, + { max: 20, message: '长度不能超过20位', trigger: 'blur' } ], market: [ { required: true, message: '请选择所属地区', trigger: 'change' } @@ -360,7 +361,8 @@ const addUserRules = { { required: true, message: '请选择角色名称', trigger: 'change' } ], postiton: [ - { required: true, message: '请输入职位', trigger: 'blur' } + { required: true, message: '请输入职位', trigger: 'blur' }, + { max: 20, message: '长度不能超过20位', trigger: 'blur' } ], machineIds: [ { @@ -403,15 +405,16 @@ 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 @@ -439,7 +442,10 @@ 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({ @@ -461,7 +467,6 @@ 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() @@ -527,21 +532,62 @@ 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 () { - const { adminName: userName, roleName: oldRole, roleId: newRoleId } = permissionEditObj.value; + let { adminName: userName, roleName: oldRole, roleId: newRoleId } = permissionEditObj.value; + console.log('oldRole', oldRole); + + if (oldRole == null) { + oldRole = '未分配权限' + } 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 - } - ); + 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 标签 + } +); closeUserEditVisible(); const result = await request({ url: '/permission/updateAdmin', @@ -568,6 +614,7 @@ const permissionEdit = async function () { } ); get(); + closeUserEditVisible() } else { ElMessage.error(result.msg) } @@ -575,7 +622,6 @@ const permissionEdit = async function () { } catch (error) { console.log('编辑用户权限失败', error) ElMessage.error('编辑用户权限失败') - closeUserEditVisible() } } const throttledPermissionEdit = _.throttle(permissionEdit, 5000, { @@ -731,11 +777,13 @@ const getLists = async function () { } console.log('看看data', data.value) console.log('parentID:', addRole.value.parentId, 'roleId:', roleId) - if (addRole.value.parentId) { + if (addRole.value.parentId&& addRole.value.parentId!=2) { 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(','); @@ -751,17 +799,16 @@ const getLists = async function () { } console.log('addRoleMarket.value', addRoleMarket.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{ + if (typeof market.value === 'string' && market.value) { + addRoleMarket.value = market.value.split(','); + } else if (Array.isArray(market.value)) { + addRoleMarket.value = market.value } else { addRoleMarket.value = []; } } - } catch (error) { console.log('请求失败', error) } @@ -794,8 +841,8 @@ const EdithandleMarketChange = (values) => { // 如果选择了总部,只保留总部 permissionEditObj.value.market = ['总部']; } - console.log('看看现在的地区',permissionEditObj.value.market); - + console.log('看看现在的地区', permissionEditObj.value.market); + }; // 处理编辑角色权限时的勾选事件 @@ -950,21 +997,6 @@ 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); @@ -979,7 +1011,7 @@ const permissionEditRoleInit = async function (row) { // // 直接使用当前行的权限树数据 // if (row.tree && row.tree.length > 0) { // // 收集当前行权限树的所有 id - // permissionEditRoleObj.value.checkedKeys = collectIds2(row.tree); + // permissionEditRoleObj.value.checkedKeys = collectIds(row.tree); // // 以当前行的权限树数据作为 el-tree 的数据源 // data.value = row.tree; // } else { @@ -988,11 +1020,8 @@ const permissionEditRoleInit = async function (row) { // } try { - - - let roleId = permissionEditRoleObj.value.parentId; - // 如果没有上级角色,设置为管理员的id + // 如果没有上级角色,可根据实际情况设置默认值,这里假设为 2 if (permissionEditRoleObj.value.parentId === null || permissionEditRoleObj.value.parentId === undefined) { roleId = 2; } @@ -1005,7 +1034,7 @@ const permissionEditRoleInit = async function (row) { // 收集当前行权限树的所有 id if (row.tree && row.tree.length > 0) { - permissionEditRoleObj.value.checkedKeys = collectIds2(row.tree); + permissionEditRoleObj.value.checkedKeys = collectIds(row.tree); } else { permissionEditRoleObj.value.checkedKeys = []; } @@ -1014,7 +1043,7 @@ const permissionEditRoleInit = async function (row) { data.value = []; permissionEditRoleObj.value.checkedKeys = []; } - + console.log('编辑角色', permissionEditRoleObj.value); permissionEditRoleVisible.value = true; @@ -1279,9 +1308,9 @@ onMounted(async function () { --> @@ -1361,7 +1390,8 @@ onMounted(async function () { - + @@ -1384,17 +1414,20 @@ onMounted(async function () { - + - +
+ 暂未分配权限 +
@@ -1430,7 +1463,7 @@ onMounted(async function () { + :value="item.value"> @@ -1438,7 +1471,6 @@ onMounted(async function () { - - +