Browse Source

角色编辑修改

zhangrenyuan/feature-20250728113353-金币前端三期
ZhangYong 3 weeks ago
parent
commit
90056f7fc3
  1. 6
      .env.development
  2. 121
      src/views/permissions/permission.vue

6
.env.development

@ -1,9 +1,11 @@
VITE_API_BASE='https://hwjb.homilychart.com/dev/admin'
# VITE_API_BASE='https://hwjb.homilychart.com/dev/admin'
# 测试环境
# VITE_API_BASE='http://18.143.76.3:10704/'
# VITE_API_BASE='http://192.168.9.52:10705/'
VITE_UPLOAD_URL=http://39.101.133.168:8828/hljw/api/aws/upload
# VITE_API_BASE='http://192.168.9.28:8081/'
# 孙加倍
# sunjiabei
# VITE_API_BASE='http://192.168.9.28:8081/'
# VITE_API_BASE='http://192.168.5.92:8081/'
# zhangyong
VITE_API_BASE='http://192.168.9.62:8081/'

121
src/views/permissions/permission.vue

@ -1,5 +1,5 @@
<script setup>
import { ref, onMounted, reactive, computed, watch } from 'vue'
import { ref, onMounted, reactive, computed, watch, nextTick } from 'vue'
import ElementPlus from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
import axios from 'axios'
@ -98,6 +98,7 @@ const permissionEditObj = ref({
machineIds: [''],
machineId: '',
password: '',
postiton:''
})
const addMachineIdInput = function () {
if (addAdmin.value.machineIds.length >= 2) {
@ -438,7 +439,7 @@ const permissionEditInit = async function (row) {
//
permissionEditObj.value.market = [];
}
permissionEditObj.value.postiton = row.postiton
permissionEditObj.value.postiton = row.postiton || ''
permissionEditObj.value.roleId = row.roleId
const result = await request({
url: '/role/selectFather',
@ -546,8 +547,8 @@ const editAdminRules = {
{ required: true, message: '请选择所属地区', trigger: 'change' }
],
postiton: [
{ required: true, message: '请输入职位', trigger: 'blur' },
{ max: 20, message: '长度不能超过20位', trigger: 'blur' }
{ required: true, message: '请输入职位', trigger: ['blur', 'change'] },
{ max: 20, message: '长度不能超过20位', trigger: ['blur', 'change'] }
],
machineIds: [
{
@ -692,13 +693,15 @@ const handleAddRole = async function () {
});
addRole.value.roleName = addRole.value.roleName.replace(/\s+/g, '');
console.log('去除角色名空格:', addRole.value.roleName);
// ID
const finalCheckedKeys = addRole.value.checkedKeys || [];
const res = await API({
url: '/role/add',
data: {
"roleName": addRole.value.roleName,
"menuIds": addRole.value.checkedKeys,
"menuIds": finalCheckedKeys,
"priority": addRole.value.grade,
"fatherId": addRole.value.parentId,
"market": addRole.value.market
@ -707,6 +710,7 @@ const handleAddRole = async function () {
if (res.code == 200) {
ElMessage.success('角色' + addRole.value.roleName + '添加成功')
console.log('成功了,看看addRole', addRole.value)
console.log('提交的权限ID列表:', finalCheckedKeys);
closePermissionAddVisible()
} else {
ElMessage.error(res.msg)
@ -776,7 +780,7 @@ const getLists = async function () {
data: { id: roleId }
})
data.value = res.data
data.value = data.value.filter(item => item.id !== 9);
data.value = data.value.filter(item => item.id !== 9);
console.log('看看data', data.value)
console.log('parentID:', addRole.value.parentId, 'roleId:', roleId)
@ -844,13 +848,30 @@ const EdithandleMarketChange = (values) => {
console.log('看看现在的地区', permissionEditObj.value.market);
};
const treeRef = ref(null)
//
const handleEditRolePermissionCheck = (checkedNodes, { checkedKeys }) => {
const handleEditRolePermissionCheck = (checkedNodes, checkedInfo) => {
const { checkedKeys, checkedNodes: allCheckedNodes } = checkedInfo;
//
if (allCheckedNodes.length === 0) {
permissionEditRoleObj.value.checkedKeys = [];
return;
}
// check-strictly="false"Element Plus
// 使 checkedKeysID
permissionEditRoleObj.value.checkedKeys = checkedKeys;
console.log('编辑角色选中的权限ID:', checkedKeys);
console.log('选中的节点数量:', allCheckedNodes.length);
};
const handleCheckChange = async (checkedNodes, checkedInfo) => {
const { checkedKeys, checkedNodes: allCheckedNodes } = checkedInfo;
@ -871,7 +892,7 @@ const handleCheckChange = async (checkedNodes, checkedInfo) => {
// Set
addRole.value.checkedKeys = Array.from(allKeys);
console.log('包含所有父级的选中项:', addRole.value.checkedKeys);
console.log('新增角色包含所有父级的选中项:', addRole.value.checkedKeys);
};
const selectParentNodes = (treeData, nodeId, checkedKeys) => {
@ -1010,6 +1031,7 @@ const collectIds2 = (tree) => {
//
const permissionEditRoleInit = async function (row) {
console.log('row', row);
console.log('row.tree', row.tree);
permissionEditRoleObj.value = {};
permissionEditRoleObj.value.id = row.id;
permissionEditRoleObj.value.roleName = row.roleName;
@ -1018,21 +1040,7 @@ const permissionEditRoleInit = async function (row) {
permissionEditRoleObj.value.parentName = row.fatherName;
permissionEditRoleObj.value.grade = row.priority;
// // 使
// if (row.tree && row.tree.length > 0) {
// // id
// permissionEditRoleObj.value.checkedKeys = collectIds2(row.tree);
// // el-tree
// data.value = row.tree;
// } else {
// permissionEditRoleObj.value.checkedKeys = [];
// data.value = [];
// }
try {
let roleId = permissionEditRoleObj.value.parentId;
// id
if (permissionEditRoleObj.value.parentId === null || permissionEditRoleObj.value.parentId === undefined) {
@ -1045,9 +1053,12 @@ const permissionEditRoleInit = async function (row) {
});
data.value = res.data;
data.value = data.value.filter(item => item.id !== 9);
// id
// id
if (row.tree && row.tree.length > 0) {
permissionEditRoleObj.value.checkedKeys = collectIds2(row.tree);
const leafIds = collectIds2(row.tree);
permissionEditRoleObj.value.checkedKeys = leafIds;
console.log('编辑角色初始化时的权限列表', permissionEditRoleObj.value.checkedKeys);
} else {
permissionEditRoleObj.value.checkedKeys = [];
}
@ -1056,10 +1067,15 @@ const permissionEditRoleInit = async function (row) {
data.value = [];
permissionEditRoleObj.value.checkedKeys = [];
}
console.log('编辑角色', permissionEditRoleObj.value);
permissionEditRoleVisible.value = true;
// DOM
await nextTick();
if (treeRef.value && permissionEditRoleObj.value.checkedKeys.length > 0) {
treeRef.value.setCheckedKeys(permissionEditRoleObj.value.checkedKeys);
console.log('手动设置树的选中状态:', permissionEditRoleObj.value.checkedKeys);
}
};
//
@ -1075,12 +1091,23 @@ const permissionEditRole = async function () {
});
});
// ID
let finalCheckedKeys = permissionEditRoleObj.value.checkedKeys || [];
// ID
const allKeys = new Set(finalCheckedKeys);
finalCheckedKeys.forEach(nodeId => {
selectParentNodesForSubmit(data.value, nodeId, allKeys);
});
finalCheckedKeys = Array.from(allKeys);
const res = await API({
url: '/menu/update',
data: {
"id": permissionEditRoleObj.value.id,
"roleName": permissionEditRoleObj.value.roleName,
"menuIds": permissionEditRoleObj.value.checkedKeys,
"menuIds": finalCheckedKeys,
"priority": permissionEditRoleObj.value.grade,
"fatherId": permissionEditRoleObj.value.parentId,
"market": permissionEditRoleObj.value.market
@ -1088,6 +1115,7 @@ const permissionEditRole = async function () {
});
if (res.code === 200) {
console.log('编辑角色成功', permissionEditRoleObj.value);
console.log('提交的权限ID列表:', finalCheckedKeys);
permissionEditRoleVisible.value = false;
getRoleList();
ElMessage.success('编辑角色成功');
@ -1104,6 +1132,30 @@ const permissionEditRole = async function () {
}
};
//
const selectParentNodesForSubmit = (treeData, nodeId, checkedKeys) => {
if (!Array.isArray(treeData)) return false;
for (const item of treeData) {
//
if (item.children && item.children.length > 0) {
const foundInChildren = selectParentNodesForSubmit(item.children, nodeId, checkedKeys);
if (foundInChildren) {
//
checkedKeys.add(item.id);
return true;
}
}
//
if (item.id === nodeId) {
return true;
}
}
return false;
};
@ -1343,7 +1395,7 @@ onMounted(async function () {
</el-table-column> -->
<el-table-column prop="operation" label="操作" width="200px">
<template #default="scope">
<el-button type="warning" text @click="permissionEditRoleInit(scope.row)" :disabled="scope.row.id === 2">
<el-button type="warning" text @click="permissionEditRoleInit(scope.row)" :disabled="scope.row.id === 2">
编辑
</el-button>
</template>
@ -1509,6 +1561,7 @@ onMounted(async function () {
<el-form-item prop="checkedKeys" label="权限列表:" required>
<el-tree v-if="data.length > 0" :data="data" show-checkbox node-key="id"
:props="{ label: 'menuName', children: 'children' }" :checked-keys="addRole.checkedKeys"
:check-strictly="false"
@check="handleCheckChange">
<template #default="{ node, data }">
<span>{{ node.label }}</span>
@ -1573,9 +1626,11 @@ onMounted(async function () {
<el-input v-model="permissionEditRoleObj.market" placeholder="请输入所属地区" style="width: 220px" disabled />
</el-form-item>
<el-form-item prop="checkedKeys" label="权限列表:" required>
<el-tree v-if="data.length > 0" :data="data" show-checkbox node-key="id"
<el-tree v-if="data.length > 0" :data="data" show-checkbox node-key="id" ref="treeRef"
:props="{ label: 'menuName', children: 'children' }"
:default-checked-keys="permissionEditRoleObj.checkedKeys" @check="handleEditRolePermissionCheck">
:default-checked-keys="permissionEditRoleObj.checkedKeys"
:check-strictly="false"
@check="handleEditRolePermissionCheck">
<template #default="{ node, data }">
<span>{{ node.label }}</span>
</template>

Loading…
Cancel
Save