项目初始化
This commit is contained in:
57
web/src/stores/adminInfo.ts
Normal file
57
web/src/stores/adminInfo.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import { ADMIN_INFO } from '/@/stores/constant/cacheKey'
|
||||
import type { AdminInfo } from '/@/stores/interface'
|
||||
|
||||
export const useAdminInfo = defineStore('adminInfo', {
|
||||
state: (): AdminInfo => {
|
||||
return {
|
||||
id: 0,
|
||||
username: '',
|
||||
nickname: '',
|
||||
avatar: '',
|
||||
last_login_time: '',
|
||||
token: '',
|
||||
refresh_token: '',
|
||||
super: false,
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
/**
|
||||
* 状态批量填充
|
||||
* @param state 新状态数据
|
||||
* @param [exclude=true] 是否排除某些字段(忽略填充),默认值 true 排除 token 和 refresh_token,传递 false 则不排除,还可传递 string[] 指定排除字段列表
|
||||
*/
|
||||
dataFill(state: Partial<AdminInfo>, exclude: boolean | string[] = true) {
|
||||
if (exclude === true) {
|
||||
exclude = ['token', 'refresh_token']
|
||||
} else if (exclude === false) {
|
||||
exclude = []
|
||||
}
|
||||
|
||||
if (Array.isArray(exclude)) {
|
||||
exclude.forEach((item) => {
|
||||
delete state[item as keyof AdminInfo]
|
||||
})
|
||||
}
|
||||
|
||||
this.$patch(state)
|
||||
},
|
||||
removeToken() {
|
||||
this.token = ''
|
||||
this.refresh_token = ''
|
||||
},
|
||||
setToken(token: string, type: 'auth' | 'refresh') {
|
||||
const field = type == 'auth' ? 'token' : 'refresh_token'
|
||||
this[field] = token
|
||||
},
|
||||
getToken(type: 'auth' | 'refresh' = 'auth') {
|
||||
return type === 'auth' ? this.token : this.refresh_token
|
||||
},
|
||||
setSuper(val: boolean) {
|
||||
this.super = val
|
||||
},
|
||||
},
|
||||
persist: {
|
||||
key: ADMIN_INFO,
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user