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,
|
}
|
}
|