Browse Source

success merge

zhangrenyuan/feature-20250714163943-金币前端二期
zry 2 weeks ago
parent
commit
90751e767f
  1. 169
      src/views/permissions/permission.vue

169
src/views/permissions/permission.vue

@ -81,6 +81,7 @@ const getAdminData = async function () {
console.log('请求失败', error)
}
}
<<<<<<< HEAD
const viewRole =ref([])
const getRolePermission = async function(){
const result = await request({
@ -92,6 +93,10 @@ const getRolePermission = async function(){
viewRole.value = collectIds(result.data)
console.log('result111',viewRole.value);
}
=======
>>>>>>> zhangrenyuan/feature-20250714163943-金币前端二期
//
const permissionEditObj = ref({
checkedKeys: [],
@ -346,13 +351,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' }
@ -361,8 +363,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: [
{
@ -405,16 +406,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
@ -442,10 +442,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({
@ -467,6 +464,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()
@ -532,62 +530,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(
`确认修改权限角色?<br>您正在将【${userName}】的权限角色从【${oldRole}】修改为【${newRole}】<br>变更后,该用户的可操作权限将同步更新为新角色配置,涉及数据访问、功能操作等权限变化,请谨慎确认。`,
'警告',
{
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',
@ -614,7 +571,6 @@ const permissionEdit = async function () {
}
);
get();
closeUserEditVisible()
} else {
ElMessage.error(result.msg)
}
@ -622,6 +578,7 @@ const permissionEdit = async function () {
} catch (error) {
console.log('编辑用户权限失败', error)
ElMessage.error('编辑用户权限失败')
closeUserEditVisible()
}
}
const throttledPermissionEdit = _.throttle(permissionEdit, 5000, {
@ -777,13 +734,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(',');
@ -799,16 +754,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)
}
@ -841,7 +797,7 @@ const EdithandleMarketChange = (values) => {
//
permissionEditObj.value.market = ['总部'];
}
console.log('看看现在的地区', permissionEditObj.value.market);
console.log('看看现在的地区',permissionEditObj.value.market);
};
@ -997,6 +953,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);
@ -1011,7 +982,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 {
@ -1020,8 +991,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;
}
@ -1034,7 +1008,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 = [];
}
@ -1308,9 +1282,9 @@ 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)">
编辑
</el-button>
<el-button type="warning" text @click="permissionEditRoleInit(scope.row)">
编辑
</el-button>
</template>
</el-table-column>
</el-table>
@ -1390,8 +1364,7 @@ onMounted(async function () {
<!-- 这是编辑用户权限弹窗 -->
<el-dialog v-model="userEditVisible" title="编辑用户权限" width="800px" :close-on-click-modal="false">
<el-form ref="Ref" :rules="editAdminRules" :model="permissionEditObj" label-width="auto"
style="max-width: 600px; align-items: center">
<el-form ref="Ref" :model="permissionEditObj" label-width="auto" style="max-width: 600px; align-items: center">
<el-form-item prop="account" label="用户账号:" clearable>
<el-input v-model="permissionEditObj.account" placeholder="请输入OA号" style="width: 220px" disabled />
</el-form-item>
@ -1414,20 +1387,17 @@ onMounted(async function () {
</el-select>
</el-form-item>
<el-form-item prop="parentName" label="上级角色:">
<el-select v-model="permissionEditObj.parentId" :placeholder="permissionEditObj.parentName || '无上级角色'"
:disabled="!!parentRoleTip" style="width: 220px">
<el-select v-model="permissionEditObj.parentId" placeholder="无上级角色" :disabled="!!parentRoleTip"
style="width: 220px">
<el-option v-if="parentRoleTip" :key="0" :label="parentRoleTip" :value="null" disabled />
<el-option v-else v-for="item in permissionList" :key="item.value" :label="item.label" disabled
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="permissionSelect" label="权限列表:">
<el-tree v-if="data.length > 0" :data="data" :disabled="true" show-checkbox node-key="id"
<el-tree :data="data" :disabled="true" show-checkbox node-key="id"
:props="{ label: 'menuName', children: 'children' }" :default-checked-keys="permissionEditObj.checkedKeys">
</el-tree>
<div v-else style="display: flex; align-items: center; gap: 8px;">
<span style="color: #999;">暂未分配权限</span>
</div>
</el-form-item>
<el-form-item prop="machineIds" label="机器码:">
<div style="display: flex; align-items: center; flex-wrap: wrap; gap: 10px;">
@ -1460,17 +1430,17 @@ onMounted(async function () {
<el-form-item prop="roleName" label="角色名称:" required>
<el-input v-model="addRole.roleName" placeholder="请输入用户名" style="width: 220px" />
</el-form-item>
<el-form-item prop="market" label="所属地区:" required>
<el-select v-model="addRole.market" placeholder="请选择所属地区" style="width: 240px" clearable>
<el-option v-for="item in addRoleMarket" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
<el-form-item prop="parentName" label="上级角色:">
<el-select v-model="addRole.parentId" placeholder="请选择上级角色" style="width: 220px" @change="getLists" clearable>
<el-option v-for="item in permissionList" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="market" label="所属地区:" required>
<el-select v-model="addRole.market" placeholder="请选择所属地区" style="width: 240px" clearable>
<el-option v-for="item in addRoleMarket" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
<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"
@ -1521,15 +1491,16 @@ onMounted(async function () {
<!-- 編輯角色彈窗 -->
<el-dialog v-model="permissionEditRoleVisible" title="编辑角色" width="800px" :close-on-click-modal="false">
<el-dialog v-model="permissionEditRoleVisible" title="编辑角色" width="800px" :close-on-click-modal="false">
<template #footer>
<el-form ref="Ref" :rules="Rolerules" :model="permissionEditRoleObj" label-width="auto"
style="max-width: 600px; align-items: center">
<el-form-item prop="roleName" label="角色名称:" required>
<el-input v-model="permissionEditRoleObj.roleName" placeholder="请输入角色名称" style="width: 220px" />
</el-form-item>
<el-form-item prop="parentName" label="上级角色:">
<el-input v-model="permissionEditRoleObj.parentName" placeholder="无上级角色" disabled style="width: 220px">
<el-form-item prop="parentName" label="上级角色:" >
<el-input v-model="permissionEditRoleObj.parentName" placeholder="无上级角色" disabled
style="width: 220px">
<el-option v-for="item in permissionList" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-input>
@ -1539,8 +1510,8 @@ onMounted(async function () {
</el-form-item>
<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' }"
:default-checked-keys="permissionEditRoleObj.checkedKeys" @check="handleEditRolePermissionCheck">
:props="{ label: 'menuName', children: 'children' }" :default-checked-keys="permissionEditRoleObj.checkedKeys"
@check="handleEditRolePermissionCheck">
<template #default="{ node, data }">
<span>{{ node.label }}</span>
</template>

Loading…
Cancel
Save