vuex切换成pinia
parent
2456256f3a
commit
01a159d4a7
@ -1,10 +0,0 @@
|
|||||||
import { GetterTree } from "vuex"
|
|
||||||
|
|
||||||
const getters:GetterTree<any,any> = {
|
|
||||||
token: state => state.user.token,
|
|
||||||
avatar: state => state.user.avatar,
|
|
||||||
name: state => state.user.name,
|
|
||||||
roles: state => state.user.roles,
|
|
||||||
permissions: state => state.user.permissions
|
|
||||||
}
|
|
||||||
export default getters
|
|
||||||
@ -1,12 +1,4 @@
|
|||||||
import user from '@/store/modules/user'
|
import { createPinia } from "pinia"
|
||||||
import dict from '@/store/modules/dict'
|
|
||||||
import getters from './getters'
|
const store = createPinia()
|
||||||
import { createStore } from "vuex";
|
export default store
|
||||||
const store = createStore<any>({
|
|
||||||
modules: {
|
|
||||||
user,
|
|
||||||
dict
|
|
||||||
},
|
|
||||||
getters
|
|
||||||
});
|
|
||||||
export default store;
|
|
||||||
@ -1,99 +1,80 @@
|
|||||||
import config from '@/config'
|
|
||||||
import storage from '@/utils/storage'
|
|
||||||
import constant from '@/utils/constant'
|
|
||||||
import { login, logout, getInfo } from '@/api/login'
|
import { login, logout, getInfo } from '@/api/login'
|
||||||
import { getToken, setToken, removeToken } from '@/utils/auth'
|
import { getToken, setToken, removeToken } from '@/utils/auth'
|
||||||
import { UserState, UserForm } from '@/types/store'
|
import defAva from '@/static/images/profile.jpg'
|
||||||
import { Module } from 'vuex'
|
import { defineStore } from 'pinia'
|
||||||
|
|
||||||
const baseUrl = config.baseUrl
|
export interface LoginForm {
|
||||||
|
username: string
|
||||||
|
password: string
|
||||||
|
code: string
|
||||||
|
uuid: string
|
||||||
|
}
|
||||||
|
|
||||||
const user: Module<UserState, UserState> = {
|
|
||||||
state: {
|
|
||||||
token: getToken(),
|
|
||||||
name: storage.get(constant.name),
|
|
||||||
avatar: storage.get(constant.avatar),
|
|
||||||
roles: storage.get(constant.roles),
|
|
||||||
permissions: storage.get(constant.permissions)
|
|
||||||
},
|
|
||||||
mutations: {
|
|
||||||
SET_TOKEN: (state, token: string) => {
|
|
||||||
state.token = token
|
|
||||||
},
|
|
||||||
SET_NAME: (state, name: string) => {
|
|
||||||
state.name = name
|
|
||||||
storage.set(constant.name, name)
|
|
||||||
},
|
|
||||||
SET_AVATAR: (state, avatar: string) => {
|
|
||||||
state.avatar = avatar
|
|
||||||
storage.set(constant.avatar, avatar)
|
|
||||||
},
|
|
||||||
SET_ROLES: (state, roles: Array<string>) => {
|
|
||||||
state.roles = roles
|
|
||||||
storage.set(constant.roles, roles)
|
|
||||||
},
|
|
||||||
SET_PERMISSIONS: (state, permissions: Array<string>) => {
|
|
||||||
state.permissions = permissions
|
|
||||||
storage.set(constant.permissions, permissions)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
actions: {
|
const useUserStore = defineStore(
|
||||||
// 登录
|
'user',
|
||||||
Login({ commit }, userInfo: UserForm) {
|
{
|
||||||
const username = userInfo.username
|
state: () => ({
|
||||||
const password = userInfo.password
|
token: getToken(),
|
||||||
const code = userInfo.code
|
name: '',
|
||||||
const uuid = userInfo.uuid
|
avatar: '',
|
||||||
return new Promise((resolve, reject) => {
|
roles: Array(),
|
||||||
login(username, password, code, uuid).then((res: any) => {
|
permissions: []
|
||||||
setToken(res.token)
|
}),
|
||||||
commit('SET_TOKEN', res.token)
|
actions: {
|
||||||
resolve(res)
|
// 登录
|
||||||
}).catch(error => {
|
login(userInfo: LoginForm) {
|
||||||
reject(error)
|
const username = userInfo.username.trim()
|
||||||
|
const password = userInfo.password
|
||||||
|
const code = userInfo.code
|
||||||
|
const uuid = userInfo.uuid
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
login(username, password, code, uuid).then((res:any) => {
|
||||||
|
setToken(res.token)
|
||||||
|
this.token = res.token
|
||||||
|
resolve(null)
|
||||||
|
}).catch(error => {
|
||||||
|
reject(error)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
},
|
||||||
},
|
// 获取用户信息
|
||||||
|
getInfo() {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
getInfo().then((res:any) => {
|
||||||
|
const user = res.user
|
||||||
|
// @ts-ignore
|
||||||
|
const avatar = (user.avatar == "" || user.avatar == null) ? defAva : import.meta.env.VITE_APP_BASE_API + user.avatar;
|
||||||
|
|
||||||
// 获取用户信息
|
if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
|
||||||
GetInfo({ commit, state }) {
|
this.roles = res.roles
|
||||||
return new Promise((resolve, reject) => {
|
this.permissions = res.permissions
|
||||||
getInfo().then((res: any) => {
|
} else {
|
||||||
const user = res.user
|
this.roles = ['ROLE_DEFAULT']
|
||||||
const avatar = (user == null || user.avatar == "" || user.avatar == null) ? "@/static/images/profile.jpg" : baseUrl + user.avatar
|
}
|
||||||
const username = (user == null || user.userName == "" || user.userName == null) ? "" : user.userName
|
this.name = user.userName
|
||||||
if (res.roles && res.roles.length > 0) {
|
this.avatar = avatar;
|
||||||
commit('SET_ROLES', res.roles)
|
resolve(res)
|
||||||
commit('SET_PERMISSIONS', res.permissions)
|
}).catch(error => {
|
||||||
} else {
|
reject(error)
|
||||||
commit('SET_ROLES', ['ROLE_DEFAULT'])
|
})
|
||||||
}
|
|
||||||
commit('SET_NAME', username)
|
|
||||||
commit('SET_AVATAR', avatar)
|
|
||||||
resolve(res)
|
|
||||||
}).catch(error => {
|
|
||||||
reject(error)
|
|
||||||
})
|
})
|
||||||
})
|
},
|
||||||
},
|
// 退出系统
|
||||||
|
logOut() {
|
||||||
// 退出系统
|
return new Promise((resolve, reject) => {
|
||||||
LogOut({ commit, state }) {
|
logout().then(() => {
|
||||||
return new Promise((resolve, reject) => {
|
this.token = ''
|
||||||
logout().then((res) => {
|
this.roles = []
|
||||||
commit('SET_TOKEN', '')
|
this.permissions = []
|
||||||
commit('SET_ROLES', [])
|
removeToken()
|
||||||
commit('SET_PERMISSIONS', [])
|
resolve(null)
|
||||||
removeToken()
|
}).catch(error => {
|
||||||
storage.clean()
|
reject(error)
|
||||||
resolve(res)
|
})
|
||||||
}).catch(error => {
|
|
||||||
reject(error)
|
|
||||||
})
|
})
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
}
|
|
||||||
|
|
||||||
export default user
|
export default useUserStore
|
||||||
|
|||||||
@ -1,19 +0,0 @@
|
|||||||
|
|
||||||
export interface UserState {
|
|
||||||
token: string,
|
|
||||||
name: string,
|
|
||||||
avatar: string,
|
|
||||||
roles: Array<string>
|
|
||||||
permissions: Array<string>
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface UserForm {
|
|
||||||
username: string
|
|
||||||
password: string
|
|
||||||
code: string
|
|
||||||
uuid: string
|
|
||||||
}
|
|
||||||
|
|
||||||
export type dictType = { key: string; value: string };
|
|
||||||
export type dictStateType = { dict: Array<dictType> };
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue