|
|
|
@ -141,7 +141,7 @@ import { |
|
|
|
getWithDepartmentsList} from '@/app/api/departments' |
|
|
|
import type {FormInstance} from 'element-plus' |
|
|
|
import {addRole, editRole, getRoleInfo} from '@/app/api/sys' |
|
|
|
import {getAuthMenus} from '@/app/api/auth' |
|
|
|
import {getAuthMenus, getUniappMenus, getRoleUniappMenus, setRoleUniappMenus} from '@/app/api/auth' |
|
|
|
import {useDictionary} from '@/app/api/dict' |
|
|
|
import {debounce} from '@/utils/common' |
|
|
|
|
|
|
|
@ -163,16 +163,9 @@ getAuthMenus({is_button: 0}).then((res) => { |
|
|
|
// 获取移动端菜单(UniApp菜单权限) |
|
|
|
const getMobileMenus = async () => { |
|
|
|
try { |
|
|
|
// 使用专门的UniApp权限接口 |
|
|
|
const response = await fetch('http://localhost:20080/adminapi/uniapp_auth/menus', { |
|
|
|
headers: { |
|
|
|
'Content-Type': 'application/json', |
|
|
|
'token': localStorage.getItem('token') || '' |
|
|
|
} |
|
|
|
}) |
|
|
|
const result = await response.json() |
|
|
|
if (result.code === 1) { |
|
|
|
mobileMenus.value = result.data.map(item => ({ |
|
|
|
const res = await getUniappMenus() |
|
|
|
if (res.data) { |
|
|
|
mobileMenus.value = res.data.map(item => ({ |
|
|
|
menu_key: item.menu_key, |
|
|
|
menu_name: item.menu_name, |
|
|
|
id: item.id, |
|
|
|
@ -195,10 +188,12 @@ const selectAllPC = ref(false) |
|
|
|
const checkStrictlyPC = ref(false) |
|
|
|
const treeRefPC: Record<string, any> | null = ref(null) |
|
|
|
watch(selectAllPC, () => { |
|
|
|
if (selectAllPC.value) { |
|
|
|
treeRefPC.value.setCheckedNodes(toRaw(menus.value)) |
|
|
|
} else { |
|
|
|
treeRefPC.value.setCheckedNodes([]) |
|
|
|
if (treeRefPC.value) { |
|
|
|
if (selectAllPC.value) { |
|
|
|
treeRefPC.value.setCheckedNodes(toRaw(menus.value)) |
|
|
|
} else { |
|
|
|
treeRefPC.value.setCheckedNodes([]) |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
@ -207,10 +202,12 @@ const selectAllMobile = ref(false) |
|
|
|
const checkStrictlyMobile = ref(false) |
|
|
|
const treeRefMobile: Record<string, any> | null = ref(null) |
|
|
|
watch(selectAllMobile, () => { |
|
|
|
if (selectAllMobile.value) { |
|
|
|
treeRefMobile.value.setCheckedNodes(toRaw(mobileMenus.value)) |
|
|
|
} else { |
|
|
|
treeRefMobile.value.setCheckedNodes([]) |
|
|
|
if (treeRefMobile.value) { |
|
|
|
if (selectAllMobile.value) { |
|
|
|
treeRefMobile.value.setCheckedNodes(toRaw(mobileMenus.value)) |
|
|
|
} else { |
|
|
|
treeRefMobile.value.setCheckedNodes([]) |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
@ -230,7 +227,9 @@ getRolekeyDictList() |
|
|
|
|
|
|
|
// PC端权限处理函数 |
|
|
|
const handleCheckChangePC = debounce((e) => { |
|
|
|
formData.rules = treeRefPC.value.getCheckedKeys() |
|
|
|
if (treeRefPC.value) { |
|
|
|
formData.rules = treeRefPC.value.getCheckedKeys() |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
const menuActionPC = () => { |
|
|
|
@ -245,7 +244,9 @@ const menuActionPC = () => { |
|
|
|
|
|
|
|
// 移动端权限处理函数 |
|
|
|
const handleCheckChangeMobile = debounce((e) => { |
|
|
|
formData.mobile_rules = treeRefMobile.value.getCheckedKeys() |
|
|
|
if (treeRefMobile.value) { |
|
|
|
formData.mobile_rules = treeRefMobile.value.getCheckedKeys() |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
const menuActionMobile = () => { |
|
|
|
@ -260,36 +261,52 @@ const menuActionMobile = () => { |
|
|
|
|
|
|
|
// PC端全部展开 |
|
|
|
const unFoldAllPC = (data: any) => { |
|
|
|
Object.keys(data).forEach((key: string | any) => { |
|
|
|
treeRefPC.value.store.nodesMap[data[key].menu_key].expanded = true |
|
|
|
if (data[key].children && data[key].children.length > 0) |
|
|
|
unFoldAllPC(data[key].children) |
|
|
|
}) |
|
|
|
if (treeRefPC.value && treeRefPC.value.store) { |
|
|
|
Object.keys(data).forEach((key: string | any) => { |
|
|
|
if (treeRefPC.value.store.nodesMap[data[key].menu_key]) { |
|
|
|
treeRefPC.value.store.nodesMap[data[key].menu_key].expanded = true |
|
|
|
} |
|
|
|
if (data[key].children && data[key].children.length > 0) |
|
|
|
unFoldAllPC(data[key].children) |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
// PC端全部折叠 |
|
|
|
const collapseAllPC = (data: any) => { |
|
|
|
Object.keys(data).forEach((key: string | any) => { |
|
|
|
treeRefPC.value.store.nodesMap[data[key].menu_key].expanded = false |
|
|
|
if (data[key].children && data[key].children.length > 0) |
|
|
|
collapseAllPC(data[key].children) |
|
|
|
}) |
|
|
|
if (treeRefPC.value && treeRefPC.value.store) { |
|
|
|
Object.keys(data).forEach((key: string | any) => { |
|
|
|
if (treeRefPC.value.store.nodesMap[data[key].menu_key]) { |
|
|
|
treeRefPC.value.store.nodesMap[data[key].menu_key].expanded = false |
|
|
|
} |
|
|
|
if (data[key].children && data[key].children.length > 0) |
|
|
|
collapseAllPC(data[key].children) |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 移动端全部展开 |
|
|
|
const unFoldAllMobile = (data: any) => { |
|
|
|
Object.keys(data).forEach((key: string | any) => { |
|
|
|
treeRefMobile.value.store.nodesMap[data[key].menu_key].expanded = true |
|
|
|
if (data[key].children && data[key].children.length > 0) |
|
|
|
unFoldAllMobile(data[key].children) |
|
|
|
}) |
|
|
|
if (treeRefMobile.value && treeRefMobile.value.store) { |
|
|
|
Object.keys(data).forEach((key: string | any) => { |
|
|
|
if (treeRefMobile.value.store.nodesMap[data[key].menu_key]) { |
|
|
|
treeRefMobile.value.store.nodesMap[data[key].menu_key].expanded = true |
|
|
|
} |
|
|
|
if (data[key].children && data[key].children.length > 0) |
|
|
|
unFoldAllMobile(data[key].children) |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
// 移动端全部折叠 |
|
|
|
const collapseAllMobile = (data: any) => { |
|
|
|
Object.keys(data).forEach((key: string | any) => { |
|
|
|
treeRefMobile.value.store.nodesMap[data[key].menu_key].expanded = false |
|
|
|
if (data[key].children && data[key].children.length > 0) |
|
|
|
collapseAllMobile(data[key].children) |
|
|
|
}) |
|
|
|
if (treeRefMobile.value && treeRefMobile.value.store) { |
|
|
|
Object.keys(data).forEach((key: string | any) => { |
|
|
|
if (treeRefMobile.value.store.nodesMap[data[key].menu_key]) { |
|
|
|
treeRefMobile.value.store.nodesMap[data[key].menu_key].expanded = false |
|
|
|
} |
|
|
|
if (data[key].children && data[key].children.length > 0) |
|
|
|
collapseAllMobile(data[key].children) |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
/** |
|
|
|
* 表单数据 |
|
|
|
@ -342,7 +359,9 @@ const confirm = async (formEl: FormInstance | undefined) => { |
|
|
|
const data = Object.assign({}, formData) |
|
|
|
|
|
|
|
// PC端权限处理 |
|
|
|
data.rules = data.rules.concat(treeRefPC.value.getHalfCheckedKeys()) |
|
|
|
if (treeRefPC.value) { |
|
|
|
data.rules = data.rules.concat(treeRefPC.value.getHalfCheckedKeys()) |
|
|
|
} |
|
|
|
|
|
|
|
// 移动端权限处理 |
|
|
|
if (treeRefMobile.value) { |
|
|
|
@ -351,20 +370,7 @@ const confirm = async (formEl: FormInstance | undefined) => { |
|
|
|
// 调用UniApp权限设置API |
|
|
|
if (data.role_id && data.mobile_rules.length >= 0) { |
|
|
|
try { |
|
|
|
const mobileResponse = await fetch(`http://localhost:20080/adminapi/uniapp_auth/set_role_menus/${data.role_id}`, { |
|
|
|
method: 'POST', |
|
|
|
headers: { |
|
|
|
'Content-Type': 'application/json', |
|
|
|
'token': localStorage.getItem('token') || '' |
|
|
|
}, |
|
|
|
body: JSON.stringify({ |
|
|
|
menu_ids: data.mobile_rules |
|
|
|
}) |
|
|
|
}) |
|
|
|
const mobileResult = await mobileResponse.json() |
|
|
|
if (mobileResult.code !== 1) { |
|
|
|
console.error('移动端权限设置失败:', mobileResult.msg) |
|
|
|
} |
|
|
|
await setRoleUniappMenus(data.role_id, data.mobile_rules) |
|
|
|
} catch (error) { |
|
|
|
console.error('设置移动端权限失败:', error) |
|
|
|
} |
|
|
|
@ -399,15 +405,9 @@ const setFormData = async (row: any = null) => { |
|
|
|
// 获取移动端权限数据 |
|
|
|
let mobileRulesData = [] |
|
|
|
try { |
|
|
|
const mobileResponse = await fetch(`http://localhost:20080/adminapi/uniapp_auth/role_menus/${row.role_id}`, { |
|
|
|
headers: { |
|
|
|
'Content-Type': 'application/json', |
|
|
|
'token': localStorage.getItem('token') || '' |
|
|
|
} |
|
|
|
}) |
|
|
|
const mobileResult = await mobileResponse.json() |
|
|
|
if (mobileResult.code === 1) { |
|
|
|
mobileRulesData = mobileResult.data.map(item => item.menu_key) |
|
|
|
const mobileRes = await getRoleUniappMenus(row.role_id) |
|
|
|
if (mobileRes.data) { |
|
|
|
mobileRulesData = mobileRes.data.map(item => item.menu_key) |
|
|
|
} |
|
|
|
} catch (error) { |
|
|
|
console.error('获取移动端权限失败:', error) |
|
|
|
|