61 lines
1.5 KiB
TypeScript
61 lines
1.5 KiB
TypeScript
import { useUserStore } from '@/store/modules/user'
|
|
|
|
/**
|
|
* 检查权限
|
|
* @param permission
|
|
* @returns
|
|
*/
|
|
export function checkAuth(permission: string) {
|
|
const userStore = useUserStore()
|
|
const userButtons = userStore.getUserInfo.buttons
|
|
// 超级管理员
|
|
if (userButtons?.includes('*')) {
|
|
return true
|
|
}
|
|
|
|
// 如果按钮为空或未定义,移除元素
|
|
if (!userButtons?.length) {
|
|
return false
|
|
}
|
|
|
|
const hasPermission = userButtons.some((item) => item === permission)
|
|
|
|
// 如果没有权限,移除元素
|
|
if (hasPermission) {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
/**
|
|
* 下载文件
|
|
* @param res 响应数据
|
|
* @param downName 下载文件名
|
|
*/
|
|
export function downloadFile(res: any, downName: string = '') {
|
|
const aLink = document.createElement('a')
|
|
let fileName = downName
|
|
let blob = res //第三方请求返回blob对象
|
|
|
|
//通过后端接口返回
|
|
if (res.headers && res.data) {
|
|
blob = new Blob([res.data], {
|
|
type: res.headers['content-type'].replace(';charset=utf8', '')
|
|
})
|
|
if (!downName) {
|
|
const contentDisposition = decodeURI(res.headers['content-disposition'])
|
|
const result = contentDisposition.match(/filename="(.+)/gi)
|
|
fileName = result?.[0].replace(/filename="(.+)/gi, '') || ''
|
|
fileName = fileName.replace('"', '')
|
|
}
|
|
}
|
|
|
|
aLink.href = URL.createObjectURL(blob)
|
|
// 设置下载文件名称
|
|
aLink.setAttribute('download', fileName)
|
|
document.body.appendChild(aLink)
|
|
aLink.click()
|
|
document.body.removeChild(aLink)
|
|
URL.revokeObjectURL(aLink.href)
|
|
}
|