From 03f08aa637bd2be47efd4ae2a4535dcb30d84013 Mon Sep 17 00:00:00 2001 From: lihuilin Date: Fri, 18 Jul 2025 09:26:27 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=A4=E7=BC=96=E8=BE=91=E5=9D=87=E5=B7=B2?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/permissions/permission.vue | 379 +++++++++++++++++++---------------- 1 file changed, 201 insertions(+), 178 deletions(-) diff --git a/src/views/permissions/permission.vue b/src/views/permissions/permission.vue index 4338871..5be3f6d 100644 --- a/src/views/permissions/permission.vue +++ b/src/views/permissions/permission.vue @@ -10,18 +10,29 @@ import request from '@/util/http' import API from '@/util/http' // 客户明细表格 什么表格??????? const tableData = ref([]) +const roleData = ref([]) const total = ref(100) +const checkTab = ref('admin') // 搜索admin const admin = ref({ account: '', market: '', postiton: '' }) +// 角色搜索 +const role = ref({ + name:'' +}) // 搜索对象 const getObj = ref({ pageNum: 1, pageSize: 10 }) +// 角色搜索对象 +const getRoleObj = ref({ + pageNum: 1, + pageSize: 10 +}) // 新增用户权限弹窗 const userAddVisible = ref(false) // 编辑用户权限弹窗 @@ -50,7 +61,7 @@ const addAdmin = ref({ // 新增角色对象 const addRole = ref({ roleName: '', - parentName: '', + parentId: null, checkedKeys: [], grade: '' }) @@ -68,16 +79,8 @@ const addMachineIdInput = function () { const permissionEditObj = ref({}) // 删除权限对象 const delObj = ref({}) -// 各角色权限列表 -const lists = [ - { name: '管理员', value: '1', permissions: ['2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20'] }, - { name: '总部财务', value: '2', permissions: ['2', '3', '4', '5', '6', '7', '8', '9'] }, - { name: '总部客服', value: '3', permissions: ['2', '3', '4', '5', '6', '7', '8'] }, - { name: '地区负责人', value: '4', permissions: ['2', '3', '4', '5', '6'] }, - { name: '地区财务', value: '5', permissions: ['2', '3', '4', '5'] }, - { name: '客服专员', value: '6', permissions: ['2', '3'] } -] - +// 删除角色对象 +const delRoleObj = ref({}) const get = async function (val) { try { if (typeof val === 'number') { @@ -100,6 +103,48 @@ const get = async function (val) { console.log('请求失败', error) } } +const getRoleList = async function (val) { + try { + if (typeof val === 'number') { + getObj.value.pageNum = val + } + console.log('搜索参数', getObj.value, role.value) + const result = await request({ + url: '/role/selectBy', + data: { + ...getRoleObj.value, + roleVo: { + roleName: role.value.name + } + } + }) + roleData.value = result.data.list + console.log('roleData', roleData.value) + total.value = result.data.total + } catch (error) { + console.log('请求失败', error) + } +} +// 试试D老师的方法 +const formatPermissions = (tree) => { + if (!tree || tree.length === 0) return ''; + + return tree.map(menu => { + const mainMenu = menu.menuName; + const subMenus = menu.children?.map(child => child.menuName) || []; + + // 如果有子菜单,显示前2个子菜单名称 + if (subMenus.length > 0) { + const maxSub = Math.min(2, subMenus.length); + const subText = subMenus.slice(0, maxSub).join('、'); + const moreText = subMenus.length > maxSub ? '...' : ''; + return `${mainMenu}+${subText}${moreText}`; + } + + // 没有子菜单时只显示主菜单 + return mainMenu; + }).join('+'); +}; const trimJwCode = () => { if (admin.value.account) { admin.value.account = admin.value.account.replace(/\s/g, ''); @@ -141,6 +186,7 @@ const getStore = async function () { // 打开新增用户权限弹窗 const openUserAddVisible = function () { + getRoles() userAddVisible.value = true addAdmin.value = { account: '', @@ -157,6 +203,8 @@ const openUserAddVisible = function () { // 新增角色弹窗 const openPermissionAddVisible = function () { permissionAddVisible.value = true + getRoles() + getLists() } // 关闭新增用户权限弹窗,并刷新表单 const closeUserAddVisible = function () { @@ -246,32 +294,21 @@ const throttledPermissionAdd = _.throttle(permissionAdd, 5000, { trailing: false }) // 权限类别 -const permissionList = [ - { - label: '管理员', - value: '1' - }, - { - label: '总部财务', - value: '2' - }, - { - label: '总部客服', - value: '3' - }, - { - label: '地区负责人', - value: '4' - }, - { - label: '地区财务', - value: '5' - }, - { - label: '客服专员', - value: '6' +const permissionList = ref([]) +const getRoles = async function () { + try { + const res = await API({ url: '/role/selectAll' }) + permissionList.value = res.data.map(item => ({ + label: item.roleName, + value: item.id + })) + + console.log('权限列表:', permissionList.value) + } catch (error) { + console.error('获取权限列表失败:', error) } -] +} + // 打开编辑用户权限弹窗 const openUserEditVisible = function () { @@ -339,6 +376,29 @@ const delConfirm = async function () { ElMessage.error('删除权限失败') } } +// 删除角色初始化 +const delRole = function (row) { + delRoleObj.value = {} + console.log(row, '删除初始化') + delRoleObj.value.id = row.id +} +// 删除角色 +const delRoleConfirm = async function () { + try { + const result = await request({ + url: '/role/delete', + data: delRoleObj.value + }) + console.log('看看删除角色对象', delRoleObj.value) + console.log('请求成功2', result) + ElMessage.success('删除权限成功') + delRoleObj.value = {} + getRoleList() + } catch (error) { + console.log('删除权限失败', error) + ElMessage.error('删除权限失败') + } +} const handleAddRole = async function () { try { const res = await API({ @@ -386,6 +446,7 @@ onMounted(async function () { await get() await getArea() await getStore() + await getRoleList() }) const handlePageSizeChange = function (val) { getObj.value.pageSize = val @@ -396,155 +457,47 @@ const handleCurrentChange = function (val) { get() } -const data = [ - { - value: '2', - label: '工作台' - }, - { - value: '3', - label: '财务审核', - children: [ - { - value: '11', - label: '充值审核' - }, - { - value: '13', - label: '退款审核' - }, { - value: '12',//14 - label: '审核操作' - } - ] - }, - { - value: '4', - label: '汇率管理' - }, { - value: '5', - label: '充值管理', - children: [ - { - value: '17', - label: '新增充值' - }, - { - value: '18', - label: '金币充值明细' - } - ] - }, { - value: '6', - label: '消耗管理', - children: [ - { - value: '19', - label: '新增消耗' - }, - { - value: '20', - label: '金币消耗明细' - } - ] - }, { - value: '7', - label: '退款管理', - children: [ - { - value: '21', - label: '新增退款' - }, - { - value: '22', - label: '金币退款明细' - } - ] - }, { - value: '8', - label: '客户账户明细', - children: [ - { - value: '23', - label: '客户金币明细' - }, - { - value: '24', - label: '客户金币余额' - } - ] - }, { - value: '9', - label: '权限管理' - }, { - value: '100', - label: '地区数据', - children: [ - { - value: '101', - label: '总部' - }, - { - value: '102', - label: '香港' - }, - { - value: '103', - label: '新加坡' - }, - { - value: '104', - label: '马来西亚' - }, - { - value: '105', - label: '越南' - }, - { - value: '106', - label: '韩国' - } - ] - } -] -const filteredData = ref([...data]) - -watch(() => addRole.value.parentName, (newValue) => { - if (newValue) { - const selectedRole = lists.find(role => role.value === newValue) - if (selectedRole) { - const allowedPermissions = selectedRole.permissions - filteredData.value = filterPermissions(data, allowedPermissions) - } else { - filteredData.value = data +const data = ref([]) +const getLists = async function () { + try { + let roleId = addRole.value.parentId + if (addRole.value.parentId === null || addRole.value.parentId === undefined) { + roleId = 2 } - } else { - filteredData.value = data + const res = await API({ + url: '/menu/tree', + data: { id: roleId } + }) + data.value = res.data + console.log('看看data', data.value) + console.log('parentID:', addRole.value.parentId, 'roleId:', roleId) + } catch (error) { + console.log('请求失败', error) } -}) - -const filterPermissions = (permissions, allowedPermissions) => { - return permissions.filter(permission => { - if (allowedPermissions.includes(permission.value)) { - if (permission.children) { - permission.children = filterPermissions(permission.children, allowedPermissions) - } - return true - } - return false - }) } + const includeHq = computed(() => { const i = addAdmin.value.market.includes('总部') return (item) => i && item != '总部' }) const handleCheckChange = (checkedNodes, { checkedKeys }) => { addRole.value.checkedKeys = checkedKeys; -}; +}