import { ref, computed } from 'vue' import { getButtons } from '/src/api/work/index.js' // 权限相关的组合式函数 export function usePermission() { const permission = ref({}) // 从权限树中提取所有权限code function extractPermissionCodes(list) { let result = [] const newPermission = {} function traverse(items) { items.forEach(ele => { if (typeof ele === 'object') { const children = ele.children const code = ele.code if (children) { traverse(children) } else { result.push(code) } } }) } traverse(list) result.forEach(ele => { newPermission[ele] = true }) return newPermission } // 获取权限数据 const getButtonsApi = () => { return new Promise((resolve, reject) => { getButtons({ sysType: 1 }) .then(res => { const data = res.data.data permission.value = extractPermissionCodes(data) resolve(permission.value) }) .catch(reject) }) } return { permission, getButtonsApi, } }