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 dict from '@/store/modules/dict'
|
||||
import getters from './getters'
|
||||
import { createStore } from "vuex";
|
||||
const store = createStore<any>({
|
||||
modules: {
|
||||
user,
|
||||
dict
|
||||
},
|
||||
getters
|
||||
});
|
||||
export default store;
|
||||
import { createPinia } from "pinia"
|
||||
|
||||
const store = createPinia()
|
||||
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 { getToken, setToken, removeToken } from '@/utils/auth'
|
||||
import { UserState, UserForm } from '@/types/store'
|
||||
import { Module } from 'vuex'
|
||||
import defAva from '@/static/images/profile.jpg'
|
||||
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)
|
||||
}
|
||||
},
|
||||
|
||||
const useUserStore = defineStore(
|
||||
'user',
|
||||
{
|
||||
state: () => ({
|
||||
token: getToken(),
|
||||
name: '',
|
||||
avatar: '',
|
||||
roles: Array(),
|
||||
permissions: []
|
||||
}),
|
||||
actions: {
|
||||
// 登录
|
||||
Login({ commit }, userInfo: UserForm) {
|
||||
const username = userInfo.username
|
||||
login(userInfo: LoginForm) {
|
||||
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) => {
|
||||
login(username, password, code, uuid).then((res:any) => {
|
||||
setToken(res.token)
|
||||
commit('SET_TOKEN', res.token)
|
||||
resolve(res)
|
||||
this.token = res.token
|
||||
resolve(null)
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 获取用户信息
|
||||
GetInfo({ commit, state }) {
|
||||
getInfo() {
|
||||
return new Promise((resolve, reject) => {
|
||||
getInfo().then((res: any) => {
|
||||
getInfo().then((res:any) => {
|
||||
const user = res.user
|
||||
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
|
||||
if (res.roles && res.roles.length > 0) {
|
||||
commit('SET_ROLES', res.roles)
|
||||
commit('SET_PERMISSIONS', res.permissions)
|
||||
// @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是否是一个非空数组
|
||||
this.roles = res.roles
|
||||
this.permissions = res.permissions
|
||||
} else {
|
||||
commit('SET_ROLES', ['ROLE_DEFAULT'])
|
||||
this.roles = ['ROLE_DEFAULT']
|
||||
}
|
||||
commit('SET_NAME', username)
|
||||
commit('SET_AVATAR', avatar)
|
||||
this.name = user.userName
|
||||
this.avatar = avatar;
|
||||
resolve(res)
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 退出系统
|
||||
LogOut({ commit, state }) {
|
||||
logOut() {
|
||||
return new Promise((resolve, reject) => {
|
||||
logout().then((res) => {
|
||||
commit('SET_TOKEN', '')
|
||||
commit('SET_ROLES', [])
|
||||
commit('SET_PERMISSIONS', [])
|
||||
logout().then(() => {
|
||||
this.token = ''
|
||||
this.roles = []
|
||||
this.permissions = []
|
||||
removeToken()
|
||||
storage.clean()
|
||||
resolve(res)
|
||||
resolve(null)
|
||||
}).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