|
|
@ -12,6 +12,7 @@ import API from '@/util/http' |
|
|
|
const tableData = ref([]) |
|
|
|
const roleData = ref([]) |
|
|
|
const total = ref(100) |
|
|
|
const roleTotal = ref(100)//角色分页 |
|
|
|
const checkTab = ref('admin') |
|
|
|
// 搜索admin |
|
|
|
const admin = ref({ |
|
|
@ -55,7 +56,7 @@ const addAdmin = ref({ |
|
|
|
permission: '', |
|
|
|
postiton: '', |
|
|
|
machineIds: [''], // 动态添加的机器码输入框 |
|
|
|
machineId:'', |
|
|
|
machineId: '', |
|
|
|
remark: '' |
|
|
|
}) |
|
|
|
// 新增角色对象 |
|
|
@ -74,7 +75,8 @@ const permissionSelect = ref() |
|
|
|
const permissionEditObj = ref({ |
|
|
|
checkedKeys: [], |
|
|
|
machineIds: [''], |
|
|
|
machineId:'' |
|
|
|
machineId: '', |
|
|
|
password: '', |
|
|
|
}) |
|
|
|
const addMachineIdInput = function () { |
|
|
|
if (addAdmin.value.machineIds.length >= 2) { |
|
|
@ -134,7 +136,7 @@ const getRoleList = async function (val) { |
|
|
|
}) |
|
|
|
roleData.value = result.data.list |
|
|
|
console.log('roleData', roleData.value) |
|
|
|
total.value = result.data.total |
|
|
|
roleTotal.value = result.data.total |
|
|
|
} catch (error) { |
|
|
|
console.log('请求失败', error) |
|
|
|
} |
|
|
@ -169,6 +171,11 @@ const search = function () { |
|
|
|
getObj.value.pageNum = 1 |
|
|
|
get() |
|
|
|
} |
|
|
|
const searchRole = function () { |
|
|
|
trimJwCode(); |
|
|
|
getObj.value.pageNum = 1 |
|
|
|
getRoleList() |
|
|
|
} |
|
|
|
// 重置 |
|
|
|
const reset = function () { |
|
|
|
admin.value = {} |
|
|
@ -208,7 +215,7 @@ const openUserAddVisible = function () { |
|
|
|
market: '', |
|
|
|
permission: '', |
|
|
|
postiton: '', |
|
|
|
machineId:'', |
|
|
|
machineId: '', |
|
|
|
machineIds: [''], |
|
|
|
remark: '' |
|
|
|
}; |
|
|
@ -228,7 +235,7 @@ const closeUserAddVisible = function () { |
|
|
|
market: '', |
|
|
|
permission: '', |
|
|
|
postiton: '', |
|
|
|
machineId:'', |
|
|
|
machineId: '', |
|
|
|
machineIds: [''], |
|
|
|
remark: '' |
|
|
|
}; |
|
|
@ -239,6 +246,7 @@ const closeUserAddVisible = function () { |
|
|
|
const closePermissionAddVisible = function () { |
|
|
|
permissionAddVisible.value = false |
|
|
|
Ref.value.resetFields(); |
|
|
|
getRoleList() |
|
|
|
} |
|
|
|
// 新增用户权限初始化 |
|
|
|
const userAddInit = function () { |
|
|
@ -338,8 +346,10 @@ const permissionEditInit = async function (row) { |
|
|
|
permissionEditObj.value = {} |
|
|
|
permissionEditObj.value.id = row.id |
|
|
|
permissionEditObj.value.account = row.account |
|
|
|
permissionEditObj.value.name = row.name |
|
|
|
permissionEditObj.value.adminName = row.name |
|
|
|
permissionEditObj.value.remark = row.remark |
|
|
|
permissionEditObj.value.market = row.market |
|
|
|
permissionEditObj.value.password = '' |
|
|
|
// 将字符串形式的 market 转换为数组 |
|
|
|
if (typeof row.market === 'string' && row.market) { |
|
|
|
permissionEditObj.value.market = row.market.split(','); |
|
|
@ -358,6 +368,8 @@ const permissionEditInit = async function (row) { |
|
|
|
console.log('初始查上级权限', result) |
|
|
|
permissionEditObj.value.parentId = result.data?.fatherId |
|
|
|
permissionEditObj.value.parentName = result.data?.fatherName |
|
|
|
console.log('get前', permissionEditObj.value.roleId); |
|
|
|
|
|
|
|
getUserLists(row.roleId) |
|
|
|
|
|
|
|
let machineIdsRef = await request({ |
|
|
@ -370,8 +382,8 @@ const permissionEditInit = async function (row) { |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
if (machineIdsRef.data.list[0].machineIds.length==0) { |
|
|
|
|
|
|
|
if (machineIdsRef.data.list[0].machineIds == null || machineIdsRef.data.list[0].machineIds.length == 0) { |
|
|
|
permissionEditObj.value.machineIds = [''] |
|
|
|
} else { |
|
|
|
permissionEditObj.value.machineIds = machineIdsRef.data.list[0].machineIds |
|
|
@ -381,7 +393,7 @@ const permissionEditInit = async function (row) { |
|
|
|
|
|
|
|
permissionEditObj.value.roleName = row.roleName |
|
|
|
console.log('编辑用户权限', permissionEditObj.value) |
|
|
|
console.log('11111111111111', permissionEditObj.value.machineId) |
|
|
|
console.log('11111111111111', permissionEditObj.value.machineId) |
|
|
|
openUserEditVisible() |
|
|
|
} |
|
|
|
const collectIds = (tree) => { |
|
|
@ -407,6 +419,7 @@ function processTreeData(data) { |
|
|
|
//根据上级角色控制权限列表,选择角色调整上级角色 |
|
|
|
const getUserLists = async function (selectedRoleId) { |
|
|
|
try { |
|
|
|
console.log('permissionEditObj.value.roleId:', permissionEditObj.value.roleId) |
|
|
|
console.log('selectedRoleId', selectedRoleId); |
|
|
|
permissionEditObj.value.parentId = null; |
|
|
|
permissionEditObj.value.parentName = ''; |
|
|
@ -426,7 +439,7 @@ const getUserLists = async function (selectedRoleId) { |
|
|
|
parentRoleTip.value = '该角色无上级角色'; |
|
|
|
} |
|
|
|
|
|
|
|
let roleId = permissionEditObj.value.parentId |
|
|
|
let roleId = permissionEditObj.value.roleId |
|
|
|
if (permissionEditObj.value.parentId === null || permissionEditObj.value.parentId === undefined) { |
|
|
|
roleId = 2 |
|
|
|
} |
|
|
@ -439,13 +452,14 @@ const getUserLists = async function (selectedRoleId) { |
|
|
|
console.log('看看data', data.value) |
|
|
|
console.log('看checkedKeys', permissionEditObj.value.checkedKeys) |
|
|
|
console.log('parentID:', permissionEditObj.value.parentId, 'roleId:', roleId) |
|
|
|
console.log('permissionEditObj.value.roleId:', permissionEditObj.value.roleId) |
|
|
|
} catch (error) { |
|
|
|
console.log('请求失败', error) |
|
|
|
} |
|
|
|
} |
|
|
|
// 编辑用户权限提交 |
|
|
|
const permissionEdit = async function () { |
|
|
|
const { name: userName, roleName: oldRole, roleId: newRoleId } = permissionEditObj.value; |
|
|
|
const { adminName: userName, roleName: oldRole, roleId: newRoleId } = permissionEditObj.value; |
|
|
|
const newRole = permissionList.value.find(item => item.value === newRoleId)?.label || '未知角色'; |
|
|
|
try { |
|
|
|
await ElMessageBox.confirm( |
|
|
@ -460,13 +474,21 @@ const permissionEdit = async function () { |
|
|
|
); |
|
|
|
closeUserEditVisible(); |
|
|
|
const result = await request({ |
|
|
|
url: '/permission/updateAdminRole', |
|
|
|
url: '/permission/updateAdmin', |
|
|
|
data: { |
|
|
|
...permissionEditObj.value, |
|
|
|
machineIds: permissionEditObj.value.machineIds.length > 1 |
|
|
|
? permissionEditObj.value.machineIds[1] : [] // 适配之前的代码,后面要改 |
|
|
|
account: permissionEditObj.value.account,//OA号 |
|
|
|
adminName: permissionEditObj.value.adminName,//姓名 |
|
|
|
market: permissionEditObj.value.market,//地区 |
|
|
|
postiton: permissionEditObj.value.postiton,//职位 |
|
|
|
roleId: permissionEditObj.value.roleId,//角色id |
|
|
|
machineId: permissionEditObj.value.machineId,//机器码 |
|
|
|
machineIds: permissionEditObj.value.machineIds[1],//机器码 |
|
|
|
password: permissionEditObj.value.password,// |
|
|
|
remark: permissionEditObj.value.remark//备注 |
|
|
|
} |
|
|
|
}); |
|
|
|
console.log('编辑最后提交数据', permissionEditObj.value); |
|
|
|
|
|
|
|
await ElMessageBox.alert( |
|
|
|
`用户${userName}的权限角色已更改为【${newRole}】`, |
|
|
|
'成功', |
|
|
@ -536,18 +558,22 @@ const delRoleConfirm = async function () { |
|
|
|
const handleAddRole = async function () { |
|
|
|
try { |
|
|
|
const res = await API({ |
|
|
|
|
|
|
|
|
|
|
|
url: '/role/add', |
|
|
|
data: { |
|
|
|
"roleName": addRole.value.roleName, |
|
|
|
"menuIds": addRole.value.checkedKeys, |
|
|
|
"priority": addRole.value.grade, |
|
|
|
"fatherId": addRole.value.parentName, |
|
|
|
"fatherId": addRole.value.parentId, |
|
|
|
"market": addRole.value.market |
|
|
|
} |
|
|
|
}) |
|
|
|
console.log('成功了,看看addRole', addRole.value) |
|
|
|
closePermissionAddVisible() |
|
|
|
} catch (error) { |
|
|
|
console.log('请求失败', error) |
|
|
|
console.log('失败,看看addRole', addRole.value); |
|
|
|
} |
|
|
|
} |
|
|
|
// 禁用启用用户权限 |
|
|
@ -591,6 +617,16 @@ const handleCurrentChange = function (val) { |
|
|
|
getObj.value.pageNum = val |
|
|
|
get() |
|
|
|
} |
|
|
|
const handleRolePageSizeChange = (val) => { |
|
|
|
getRoleObj.value.pageSize = val |
|
|
|
getRoleList() // 调用角色管理的查询 |
|
|
|
} |
|
|
|
|
|
|
|
// 角色管理分页 - 当前页变化 |
|
|
|
const handleRoleCurrentChange = (val) => { |
|
|
|
getRoleObj.value.pageNum = val |
|
|
|
getRoleList() // 调用角色管理的查询 |
|
|
|
} |
|
|
|
|
|
|
|
const data = ref([]) |
|
|
|
const getLists = async function () { |
|
|
@ -618,6 +654,46 @@ const includeHq = computed(() => { |
|
|
|
const handleCheckChange = (checkedNodes, { checkedKeys }) => { |
|
|
|
addRole.value.checkedKeys = checkedKeys; |
|
|
|
} |
|
|
|
|
|
|
|
//点击角色权限菜单树点击展示逻辑 |
|
|
|
const menuTreeVisible = ref(false); |
|
|
|
const currentRoleMenuTree = ref([]); |
|
|
|
const currentRoleName = ref(''); |
|
|
|
const Rolecheckedkeys = ref([]) |
|
|
|
const showMenuTree = (treeData, roleName) => { |
|
|
|
currentRoleMenuTree.value = processTreeData(treeData) || []; |
|
|
|
console.log('currentRoleMenuTree.value', currentRoleMenuTree.value); |
|
|
|
Rolecheckedkeys.value = collectIds(treeData) |
|
|
|
console.log('Rolecheckedkeys', Rolecheckedkeys.value); |
|
|
|
|
|
|
|
currentRoleName.value = roleName || '权限详情'; |
|
|
|
menuTreeVisible.value = true; |
|
|
|
}; |
|
|
|
//用户密码重置 |
|
|
|
const resetPassword = async function (row) { |
|
|
|
try { |
|
|
|
|
|
|
|
await ElMessageBox.confirm( |
|
|
|
`确认重置该账号密码?`, |
|
|
|
'提示', |
|
|
|
{ |
|
|
|
confirmButtonText: '确认', |
|
|
|
cancelButtonText: '取消', |
|
|
|
type: "warning", |
|
|
|
lockScroll: false |
|
|
|
} |
|
|
|
); |
|
|
|
const res = await API({ |
|
|
|
url: '/admin/reset', |
|
|
|
data: { account: row.account } |
|
|
|
}) |
|
|
|
if(res.code==200){ |
|
|
|
ElMessage.success(res.data) |
|
|
|
} |
|
|
|
} catch (error) { |
|
|
|
ElMessage.error('请求失败', error) |
|
|
|
} |
|
|
|
} |
|
|
|
</script> |
|
|
|
|
|
|
|
<template> |
|
|
@ -688,9 +764,12 @@ const handleCheckChange = (checkedNodes, { checkedKeys }) => { |
|
|
|
<el-table-column prop="roleName" label="部门权限"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="remark" label="备注" /> |
|
|
|
<el-table-column prop="operation" label="操作" width="200px"> |
|
|
|
<el-table-column prop="operation" label="操作" width="280px"> |
|
|
|
<template #default="scope"> |
|
|
|
<el-button type="warning" text @click="permissionEditInit(scope.row)" |
|
|
|
<el-button type="warning" text @click="resetPassword(scope.row)"> |
|
|
|
重置密码 |
|
|
|
</el-button> |
|
|
|
<el-button type="primary" text @click="permissionEditInit(scope.row)" |
|
|
|
:disabled="scope.row.adminStatus === 0"> |
|
|
|
修改权限 |
|
|
|
</el-button> |
|
|
@ -739,13 +818,13 @@ const handleCheckChange = (checkedNodes, { checkedKeys }) => { |
|
|
|
<el-input v-model="role.name" style="width: 240px" placeholder="请输入角色名称" clearable /> |
|
|
|
<div class="head-card-btn"> |
|
|
|
<el-button type="success" @click="reset()">重置</el-button> |
|
|
|
<el-button type="primary" @click="search()">查询</el-button> |
|
|
|
<el-button type="primary" @click="searchRole()">查询</el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</el-card> |
|
|
|
|
|
|
|
<!-- 展示表单 --> |
|
|
|
<el-card> |
|
|
|
<!-- 展示表单 --> |
|
|
|
|
|
|
|
<div class="add-item"> |
|
|
|
<el-button style="color: #048efb; border: 1px solid #048efb" @click="permissionAddInit()">新增角色</el-button> |
|
|
|
</div> |
|
|
@ -764,14 +843,14 @@ const handleCheckChange = (checkedNodes, { checkedKeys }) => { |
|
|
|
<el-table-column prop="priority" label="优先级" /> |
|
|
|
<el-table-column label="权限范围" show-overflow-tooltip> |
|
|
|
<template #default="scope"> |
|
|
|
<div class="permission-cell"> |
|
|
|
<div class="permission-cell" @click="showMenuTree(scope.row.tree, scope.row.roleName)"> |
|
|
|
{{ formatPermissions(scope.row.tree) }} |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="operation" label="操作" width="200px"> |
|
|
|
<template #default="scope"> |
|
|
|
<el-popconfirm title="确定将此用户删除吗?" @confirm="delRoleConfirm"> |
|
|
|
<el-popconfirm title="确定将此角色删除吗?" @confirm="delRoleConfirm"> |
|
|
|
<template #reference> |
|
|
|
<el-button type="danger" text @click="delRole(scope.row)"> |
|
|
|
删除 |
|
|
@ -792,11 +871,20 @@ const handleCheckChange = (checkedNodes, { checkedKeys }) => { |
|
|
|
<!-- 分页 --> |
|
|
|
<div class="pagination" style="margin-top: 20px"> |
|
|
|
<el-pagination background :page-size="getObj.pageSize" :page-sizes="[5, 10, 20, 50, 100]" |
|
|
|
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handlePageSizeChange" |
|
|
|
@current-change="handleCurrentChange"></el-pagination> |
|
|
|
layout="total, sizes, prev, pager, next, jumper" :total="roleTotal" @size-change="handleRolePageSizeChange" |
|
|
|
@current-change="handleRoleCurrentChange"></el-pagination> |
|
|
|
</div> |
|
|
|
</el-card> |
|
|
|
</div> |
|
|
|
<!-- 角色菜单树展示 --> |
|
|
|
<el-dialog v-model="menuTreeVisible" :title='`权限详情:${currentRoleName}`' width="600px"> |
|
|
|
<el-tree :data="currentRoleMenuTree" node-key="id" :props="{ label: 'menuName', children: 'children' }" |
|
|
|
show-checkbox check-strictly :expand-on-click-node="false" |
|
|
|
:default-expanded-keys="currentRoleMenuTree.map(item => item.id)" :default-checked-keys="Rolecheckedkeys" /> |
|
|
|
<template #footer> |
|
|
|
<el-button @click="menuTreeVisible = false" type="primary">关闭</el-button> |
|
|
|
</template> |
|
|
|
</el-dialog> |
|
|
|
<!-- 新增用户权限 --> |
|
|
|
<el-dialog v-model="userAddVisible" title="新增用户权限" width="800px" :close-on-click-modal="false"> |
|
|
|
<template #footer> |
|
|
@ -857,7 +945,7 @@ const handleCheckChange = (checkedNodes, { checkedKeys }) => { |
|
|
|
<el-input v-model="permissionEditObj.account" placeholder="请输入OA号" style="width: 220px" disabled /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="name" label="用户名称:"> |
|
|
|
<el-input v-model="permissionEditObj.name" placeholder="请输入用户名" style="width: 220px" disabled /> |
|
|
|
<el-input v-model="permissionEditObj.adminName" placeholder="请输入用户名" style="width: 220px" disabled /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="market" label="所属地区:" clearable> |
|
|
|
<el-select multiple v-model="permissionEditObj.market" placeholder="请选择所属地区" style="width: 440px" clearable> |
|
|
@ -983,4 +1071,10 @@ const handleCheckChange = (checkedNodes, { checkedKeys }) => { |
|
|
|
flex-direction: column; |
|
|
|
align-items: center; |
|
|
|
} |
|
|
|
|
|
|
|
.permission-cell { |
|
|
|
cursor: pointer; |
|
|
|
color: #409eff; |
|
|
|
/* 蓝色文字,提示可点击 */ |
|
|
|
} |
|
|
|
</style> |