user.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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. roleKey: localStorage.getItem('roleKey'),
  19. })
  20. watch(
  21. () => user.value.token,
  22. () => localStorage.setItem('token', user.value.token)
  23. )
  24. watch(
  25. () => user.value.roleKey,
  26. () => localStorage.setItem('roleKey', user.value.roleKey)
  27. )
  28. watch(
  29. () => user.value.info,
  30. () => localStorage.setItem('info', JSON.stringify(user.value.info))
  31. )
  32. watch(
  33. () => user.value.permission,
  34. () => localStorage.setItem('permission', JSON.stringify(user.value.permission))
  35. )
  36. watch(
  37. () => user.value.roleKeyList,
  38. () => localStorage.setItem('roleKeyList', JSON.stringify(user.value.roleKeyList))
  39. )
  40. export const setPermission = async (val,permissions) => {
  41. let power = []
  42. if (val !== void 0){
  43. power = permissions&&permissions.map(element => element.replace('dept','organization'));
  44. let pubPermission = ['home', 'vrmodel', 'camera', 'teaching', 'dispatch'].map(key => ({
  45. children: [
  46. { resourceKey: key + ':select' },
  47. { resourceKey: key + ':update' },
  48. { resourceKey: key + ':delete' },
  49. { resourceKey: key + ':add' }
  50. ],
  51. resourceKey: key
  52. }))
  53. if (val === 'admin' || val==="admin-dept" || val==="admin-super" ) {
  54. pubPermission[pubPermission.length - 1].children.push(
  55. { resourceKey: 'dispatch:setting' }
  56. )
  57. pubPermission[pubPermission.length - 2].children.push(
  58. { resourceKey: 'teaching:setting' }
  59. )
  60. pubPermission.push({children: [
  61. { resourceKey: 'user:select' },
  62. { resourceKey: 'user:update' },
  63. { resourceKey: 'user:delete' },
  64. { resourceKey: 'user:add' }
  65. ],
  66. resourceKey: 'user'
  67. })
  68. }
  69. val = pubPermission.map(item => ({
  70. ...item,
  71. viewName: keyViewMap[item.resourceKey] || item.resourceKey
  72. }))
  73. } else {
  74. val = []
  75. }
  76. user.value.permission = val
  77. user.value.roleKeyList = power
  78. }
  79. export const setToken = val => {
  80. user.value.token = val
  81. }
  82. export const setInfo = val => {
  83. user.value.info = val
  84. }
  85. export const setRoleKey = val => {
  86. user.value.roleKey = val
  87. }
  88. export default user