permission.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
  2. import {hasPermission} from "@/directives/permission/hasPermi";
  3. import pinyin from "pinyin";
  4. const { t } = useI18n() // 国际化
  5. /**
  6. * 字符权限校验
  7. * @param {Array} value 校验值
  8. * @returns {Boolean}
  9. */
  10. export function checkPermi(permission: string[]) {
  11. return hasPermission(permission)
  12. }
  13. /**
  14. * 角色权限校验
  15. * @param {string[]} value 校验值
  16. * @returns {Boolean}
  17. */
  18. export function checkRole(value: string[]) {
  19. if (value && value instanceof Array && value.length > 0) {
  20. const { wsCache } = useCache()
  21. const permissionRoles = value
  22. const super_admin = 'super_admin'
  23. const userInfo = wsCache.get(CACHE_KEY.USER)
  24. const roles = userInfo?.roles || []
  25. const hasRole = roles.some((role: string) => {
  26. return super_admin === role || permissionRoles.includes(role)
  27. })
  28. return !!hasRole
  29. } else {
  30. console.error(t('permission.hasRole'))
  31. return false
  32. }
  33. }
  34. export function generatePinyinCode(input:string) {
  35. let pinyinCode = '';
  36. for (const char of input) {
  37. if (/[\u4e00-\u9fa5]/.test(char)) {
  38. const pinyinArray = pinyin(char, { style: pinyin.STYLE_FIRST_LETTER });
  39. pinyinCode += pinyinArray[0][0];
  40. } else if (/[a-zA-Z]/.test(char)) {
  41. pinyinCode += char;
  42. }
  43. }
  44. return pinyinCode;
  45. }