user.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import {
  2. defineStore
  3. } from 'pinia';
  4. import {
  5. logout,
  6. getCurrentUser
  7. } from '@/api/common.js'
  8. import store from '../index'
  9. import permission from '@/libs/permission'
  10. export const useUserStore = defineStore({
  11. id: ' user',
  12. state: () => ({
  13. token: "",
  14. userInfo: {},
  15. menuList: [],
  16. }),
  17. getters: {
  18. getToken() {
  19. return this.token
  20. },
  21. },
  22. actions: {
  23. setToken(token) {
  24. this.token = token
  25. uni.setStorageSync('token', token)
  26. },
  27. setCid(cid) {
  28. this.cid = cid
  29. uni.setStorageSync('cid', cid)
  30. },
  31. setUserInfo(userInfo) {
  32. this.userInfo = userInfo
  33. uni.setStorageSync('userInfo', userInfo)
  34. },
  35. setMenuList(menuList) {
  36. this.menuList = menuList
  37. uni.setStorageSync('menuList', menuList)
  38. },
  39. getCurrentUser() {
  40. return new Promise((resolve, reject) => {
  41. getCurrentUser().then(res => {
  42. const userInfo = res.data.userInfo || {}
  43. const permissionList = res.data.permissionList || []
  44. const sysConfigInfo = res.data.sysConfigInfo || {}
  45. const sysVersion = sysConfigInfo.sysVersion || ''
  46. const copyright = sysConfigInfo.copyright || ''
  47. uni.setStorageSync('sysVersion', sysVersion)
  48. uni.setStorageSync('permissionList', permissionList)
  49. permission && permission.updatePermissionList()
  50. uni.setStorageSync('sysConfigInfo', sysConfigInfo)
  51. uni.setStorageSync('copyright', copyright)
  52. this.setUserInfo(userInfo)
  53. this.setMenuList(res.data.menuList)
  54. let menuList = res.data.menuList
  55. if (!menuList.length && !userInfo.workflowEnabled) {
  56. uni.showToast({
  57. title: '您的权限不足,请联系管理员',
  58. icon: 'none'
  59. })
  60. uni.removeStorageSync('token')
  61. reject()
  62. setTimeout(() => {
  63. uni.reLaunch({
  64. url: '/pages/login/index'
  65. })
  66. }, 500)
  67. return
  68. }
  69. resolve(userInfo)
  70. }).catch(error => {
  71. reject(error)
  72. })
  73. })
  74. },
  75. logout() {
  76. return new Promise((resolve, reject) => {
  77. logout().then(() => {
  78. this.setToken('')
  79. this.setCid('')
  80. this.setUserInfo({})
  81. this.resetToken()
  82. resolve()
  83. }).catch(error => {
  84. reject(error)
  85. })
  86. })
  87. },
  88. resetToken() {
  89. uni.removeStorageSync('token')
  90. uni.removeStorageSync('cid')
  91. uni.removeStorageSync('userInfo')
  92. uni.removeStorageSync('permissionList')
  93. uni.removeStorageSync('sysVersion')
  94. uni.removeStorageSync('dynamicModelExtra')
  95. }
  96. },
  97. });
  98. export function useUserStoreWithOut() {
  99. return useUserStore(store);
  100. }