user.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import { ref, watch } from 'vue'
  2. import { keyViewMap } from '@/constant/view'
  3. // import { userperInfo } from '@/request/config'
  4. // import axios from 'axios'
  5. const strToJson = (str, def) => {
  6. try {
  7. str = JSON.parse(str)
  8. } catch {
  9. str = def
  10. }
  11. return str || def
  12. }
  13. const user = ref({
  14. token: localStorage.getItem('token'),
  15. info: strToJson(localStorage.getItem('info'), {}),
  16. permission: strToJson(localStorage.getItem('permission'), []),
  17. roleKeyList:strToJson(localStorage.getItem('roleKeyList'), [])
  18. })
  19. watch(
  20. () => user.value.token,
  21. () => localStorage.setItem('token', user.value.token)
  22. )
  23. watch(
  24. () => user.value.info,
  25. () => localStorage.setItem('info', JSON.stringify(user.value.info))
  26. )
  27. watch(
  28. () => user.value.permission,
  29. () => localStorage.setItem('permission', JSON.stringify(user.value.permission))
  30. )
  31. watch(
  32. () => user.value.roleKeyList,
  33. () => localStorage.setItem('roleKeyList', JSON.stringify(user.value.roleKeyList))
  34. )
  35. export const setPermission = async (val,permissions) => {
  36. let power = []
  37. if (val !== void 0){
  38. power = permissions&&permissions.map(element => element.replace('dept','dispatch'));
  39. let pubPermission = ['home', 'vrmodel', 'camera', 'teaching', 'dispatch'].map(key => ({
  40. children: [
  41. { resourceKey: key + ':select' },
  42. { resourceKey: key + ':update' },
  43. { resourceKey: key + ':delete' },
  44. { resourceKey: key + ':add' }
  45. ],
  46. resourceKey: key
  47. }))
  48. if (val === 'admin' || val==="admin-dept") {
  49. pubPermission[pubPermission.length - 1].children.push(
  50. { resourceKey: 'dispatch:setting' }
  51. )
  52. pubPermission[pubPermission.length - 2].children.push(
  53. { resourceKey: 'teaching:setting' }
  54. )
  55. pubPermission.push({children: [
  56. { resourceKey: 'user:select' },
  57. { resourceKey: 'user:update' },
  58. { resourceKey: 'user:delete' },
  59. { resourceKey: 'user:add' }
  60. ],
  61. resourceKey: 'user'
  62. })
  63. }
  64. val = pubPermission.map(item => ({
  65. ...item,
  66. viewName: keyViewMap[item.resourceKey] || item.resourceKey
  67. }))
  68. } else {
  69. val = []
  70. }
  71. user.value.permission = val
  72. user.value.roleKeyList = power
  73. }
  74. export const setToken = val => {
  75. user.value.token = val
  76. }
  77. export const setInfo = val => {
  78. user.value.info = val
  79. }
  80. export const setRoleKey = val => {
  81. user.value.roleKey = val
  82. }
  83. export default user