Browse Source

权限编辑,重置密码,分页,新增角色等问题修复

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

146
src/views/permissions/permission.vue

@ -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>
Loading…
Cancel
Save