车间能级提升-智能设备管理系统
baoshiwei
2025-04-24 89a5fedfe041ebacb2d81ecae1023b206cd3f353
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import { defineStore } from 'pinia'
import { ref } from 'vue'
 
type AccessToken = null | string
const initState = {
  access_codes: [],
  access_menus: [],
  access_routes: [],
  access_token: null,
  is_access_checked: false,
  login_expired: false,
  refresh_token: null,
}
 
interface AccessInfo {
  /**
   * 权限码
   */
  access_codes: string[]
  /**
   * 可访问的菜单列表
   */
  access_menus: string[]
  /**
   * 可访问的路由列表
   */
  access_routes: string[]
  /**
   * 登录 accessToken
   */
  access_token: AccessToken
  /**
   * 是否已经检查过权限
   */
  is_access_checked: boolean
  /**
   * 登录是否过期
   */
  login_expired: boolean
  /**
   * 登录 accessToken
   */
  refresh_token: AccessToken
}
 
export const useAccessStore = defineStore(
  'accessInfo',
  () => {
    const accessInfo = ref<AccessInfo>({ ...initState })
 
    const setAccessInfo = (val: AccessInfo) => {
      accessInfo.value = val
    }
    const setAccessToken = (val: AccessToken) => {
      accessInfo.value.access_token = val
    }
 
    const clearAccessInfo = () => {
      accessInfo.value = { ...initState }
    }
    // 一般没有reset需求,不需要的可以删除
    const reset = () => {
      accessInfo.value = { ...initState }
    }
    const isLogined = computed(() => !!accessInfo.value.access_token)
 
    return {
      accessInfo,
      setAccessInfo,
      setAccessToken,
      clearAccessInfo,
      isLogined,
      reset,
    }
  },
  {
    persist: true,
  },
)