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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
| // src/stores/useUserStore.js
| import {
| loginByUsername,
| logout
| } from '@/api/user'
| import { defineStore } from 'pinia'
| import md5 from 'js-md5'
| import {
| ElMessage
| } from 'element-plus'
|
| export const useLogin = defineStore('login', {
| // 存储状态的地方,相当于 Vuex 的 state
| state: () => ({
| token: '',
| refreshToken: '',
| tenantId: '',
| userInfo: ''
| }),
|
| // 相当于 Vuex 的 getters,用于计算状态
| getters: {
|
| },
|
| // 相当于 Vuex 的 mutations 和 actions,用于同步或异步地修改状态
| actions: {
| //根据用户名登录
| LoginByUsername (userInfo = {}) {
| return new Promise((resolve, reject) => {
| loginByUsername(
| userInfo.tenantId,
| userInfo.deptId,
| userInfo.roleId,
| userInfo.username,
| md5(userInfo.password),
| userInfo.type,
| userInfo.key,
| userInfo.code
| )
| .then(res => {
| const data = res.data
| if (data.error_description) {
| ElMessage({
| message: data.error_description,
| type: 'error',
| })
| } else {
| this.SET_TOKEN(data.access_token)
| this.SET_REFRESH_TOKEN(data.refresh_token)
| this.SET_TENANT_ID(data.tenant_id)
| this.SET_USER_INFO(data)
| }
| resolve()
| })
| .catch(err => {
| reject(err)
| })
| })
| },
|
| SET_TOKEN (token) {
| this.token = token
| },
|
| SET_REFRESH_TOKEN (refreshToken) {
| this.refreshToken = refreshToken
| },
|
| SET_TENANT_ID (tenantId) {
| this.tenantId = tenantId
| },
|
| SET_USER_INFO (userInfo) {
| this.userInfo = userInfo
| },
|
| // 登出
| LogOut () {
| return new Promise((resolve, reject) => {
| logout()
| .then(() => {
| this.SET_TOKEN('')
| this.SET_REFRESH_TOKEN('')
| this.SET_TENANT_ID('')
| this.SET_USER_INFO('')
| resolve()
| })
| .catch((error) => {
| reject(error)
| })
| })
| },
| },
|
| persist: {
| enabled: true,
| strategies: [
| {
| key: 'token',
| paths: ['token'],
| storage: localStorage,
| },
| {
| key: 'refreshToken',
| paths: ['refreshToken'],
| storage: localStorage,
| },
| {
| key: 'tenantId',
| paths: ['tenantId'],
| storage: localStorage,
| },
| {
| key: 'userInfo',
| paths: ['userInfo'],
| storage: localStorage,
| },
| ]
| }
| })
|
|