Browse Source

金币消耗导出

lihuilin/feature-20250715112412-金币二期
zhangyongQINGHU 2 weeks ago
parent
commit
74b96e43d6
  1. 165
      src/views/permissions/permission.vue

165
src/views/permissions/permission.vue

@ -64,10 +64,18 @@ const addRole = ref({
parentId: null,
checkedKeys: [],
grade: '',
market:''
market: ''
})
//
const permissionSelect = ref()
//
const permissionEditObj = ref({
checkedKeys: [],
machineIds: [],
machineId: ''
})
const addMachineIdInput = function () {
if (addAdmin.value.machineIds.length >= 1) {
ElMessage.warning('设备数量已达上限')
@ -75,9 +83,17 @@ const addMachineIdInput = function () {
}
addAdmin.value.machineIds.push('')
}
const UseraddMachineIdInput = function () {
if (!permissionEditObj.value.machineIds) {
permissionEditObj.value.machineIds = [];
}
if (permissionEditObj.value.machineIds.length >= 1) {
ElMessage.warning('设备数量已达上限')
return
}
permissionEditObj.value.machineIds.push('')
}
//
const permissionEditObj = ref({})
//
const delObj = ref({})
//
@ -313,6 +329,7 @@ const getRoles = async function () {
//
const openUserEditVisible = function () {
getRoles()
userEditVisible.value = true
}
//
@ -327,33 +344,113 @@ const permissionEditInit = async function (row) {
permissionEditObj.value.account = row.account
permissionEditObj.value.name = row.name
permissionEditObj.value.market = row.market
// market
if (typeof row.market === 'string' && row.market) {
permissionEditObj.value.market = row.market.split(',');
} else {
//
permissionEditObj.value.market = [];
}
permissionEditObj.value.postiton = row.postiton
permissionEditObj.value.roleId = row.roleId
const result = await request({
url: '/role/selectFather',
data: row.roleId
data: {
id: row.roleId
}
})
console.log('初始查上级权限', result)
permissionEditObj.value.parentId = result.data?.fatherId
permissionEditObj.value.parentName = result.data?.fatherName
getUserLists(row.roleId)
//permissionEditObj.value.permission = row.permission
//permissionEditObj.value.permission = row.permission
permissionEditObj.value.roleName = row.roleName
console.log('编辑用户权限', permissionEditObj.value)
openUserEditVisible()
}
const collectIds = (tree) => {
let ids = [];
tree.forEach((node) => {
ids.push(node.id);
if (node.children && node.children.length > 0) {
ids = ids.concat(collectIds(node.children));
}
});
return ids;
};
//
const parentRoleTip = ref('');
//,
const getUserLists = async function (selectedRoleId) {
try {
console.log('selectedRoleId', selectedRoleId);
permissionEditObj.value.parentId = null;
permissionEditObj.value.parentName = '';
permissionEditObj.value.checkedKeys = [];
parentRoleTip.value = '';
const parentRes = await request({
url: '/role/selectFather',
data: { id: selectedRoleId } // ID
});
console.log('parentRes', parentRes)
const parentId = parentRes.data.fatherId;
const parentName = parentRes.data.parentName;
permissionEditObj.value.parentId = parentId;
permissionEditObj.value.parentName = parentName;
if (parentId == null) {
//
parentRoleTip.value = '该角色无上级角色';
}
let roleId = permissionEditObj.value.parentId
if (permissionEditObj.value.parentId === null || permissionEditObj.value.parentId === undefined) {
roleId = 2
}
const res = await API({
url: '/menu/tree',
data: { id: roleId }
})
data.value = res.data
permissionEditObj.value.checkedKeys = collectIds(res.data) || [];
console.log('看看data', data.value)
console.log('看checkedKeys', permissionEditObj.value.checkedKeys)
console.log('parentID:', permissionEditObj.value.parentId, 'roleId:', roleId)
} catch (error) {
console.log('请求失败', error)
}
}
//
const permissionEdit = async function () {
const { name: userName, roleName: oldRole, roleId: newRoleId } = permissionEditObj.value;
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
}
);
closeUserEditVisible();
const result = await request({
url: '/permission/updateAdminRole',
data: permissionEditObj.value
})
console.log('请求成功3', result)
ElMessage.success('编辑用户权限成功')
get()
closeUserEditVisible()
});
await ElMessageBox.alert(
`用户${userName}的权限角色已更改为【${newRole}`,
'成功',
{
confirmButtonText: '确定',
type: 'success' // success
}
);
get();
} catch (error) {
console.log('编辑用户权限失败', error)
ElMessage.error('编辑用户权限失败')
@ -420,7 +517,7 @@ const handleAddRole = async function () {
"menuIds": addRole.value.checkedKeys,
"priority": addRole.value.grade,
"fatherId": addRole.value.parentName,
"market":addRole.value.market
"market": addRole.value.market
}
})
console.log('成功了,看看addRole', addRole.value)
@ -555,7 +652,7 @@ const handleCheckChange = (checkedNodes, { checkedKeys }) => {
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
}}</span>
</template>
</el-table-column>
@ -733,32 +830,50 @@ const handleCheckChange = (checkedNodes, { checkedKeys }) => {
<!-- 这是编辑用户权限弹窗 -->
<el-dialog v-model="userEditVisible" title="编辑用户权限" width="800px" :close-on-click-modal="false">
<el-form ref="Ref" :model="permissionEditObj" label-width="auto" style="max-width: 600px; align-items: center">
<el-form-item prop="account" label="用户账号:" required clearable>
<el-form-item prop="account" label="用户账号:" clearable>
<el-input v-model="permissionEditObj.account" placeholder="请输入OA号" style="width: 220px" disabled />
</el-form-item>
<el-form-item prop="name" label="用户名称:" required>
<el-form-item prop="name" label="用户名称:">
<el-input v-model="permissionEditObj.name" placeholder="请输入用户名" style="width: 220px" disabled />
</el-form-item>
<el-form-item prop="market" label="所属地区:" required clearable>
<el-form-item prop="market" label="所属地区:" clearable>
<el-select multiple v-model="permissionEditObj.market" placeholder="请选择所属地区" style="width: 440px" clearable>
<el-option v-for="item in market" :key="item" :label="item" :value="item" :disabled="includeHq(item)" />
</el-select>
</el-form-item>
<el-form-item prop="postiton" label="职位:" required>
<el-form-item prop="postiton" label="职位:">
<el-input v-model="permissionEditObj.postiton" placeholder="请输入职位" style="width: 220px" clearable />
</el-form-item>
<el-form-item prop="roleName" label="角色名称:" required>
<el-input v-model="permissionEditObj.roleName" placeholder="请输入用户名" style="width: 220px" />
</el-form-item>
<el-form-item prop="parentName" label="上级角色:" required>
<el-select v-model="permissionEditObj.parentName" placeholder="请选择上级角色" style="width: 220px">
<el-form-item prop="roleName" label="角色名称:">
<el-select v-model="permissionEditObj.roleId" placeholder="请选择角色" style="width: 220px" @change="getUserLists">
<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="permissionSelect" label="权限列表:" required>
<el-tree multiple v-model="permissionEditObj.permissionSelect" :data="data" :render-after-expand="false"
show-checkbox style="width: 700px" />
<el-form-item prop="parentName" label="上级角色:">
<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 :data="data" :disabled="true" show-checkbox node-key="id"
:props="{ label: 'menuName', children: 'children' }" :default-checked-keys="permissionEditObj.checkedKeys">
</el-tree>
</el-form-item>
<el-form-item prop="machineId" label="机器码:">
<div style="display: flex; align-items: center; flex-wrap: wrap;">
<el-input v-model="permissionEditObj.machineId" placeholder="请输入机器码" style="width: 220px; margin-right: 10px;"
clearable />
<el-button type="primary" @click="UseraddMachineIdInput">添加</el-button>
<!-- 动态添加的机器码输入框 -->
<div v-for="(item, index) in permissionEditObj.machineIds" :key="index" style="margin-left: 10px;">
<el-input v-model="permissionEditObj.machineIds[index]" placeholder="请输入机器码"
style="width: 180px; margin-right: 10px;" />
</div>
</div>
</el-form-item>
</el-form>
<div>

Loading…
Cancel
Save