58 lines
1.3 KiB
Vue
58 lines
1.3 KiB
Vue
import { defineStore } from 'pinia'
|
||
import { ref } from 'vue'
|
||
import { queryDepByOrgCodeApi } from '@/api/system/department'
|
||
|
||
const initState = {
|
||
token: '',
|
||
userid: '',
|
||
username: '',
|
||
realname: '',
|
||
avatar: '',
|
||
tenantId: 0,
|
||
phone: '',
|
||
email: '',
|
||
// sex: 1,
|
||
post: '',
|
||
orgCode: '',
|
||
workNo: '',
|
||
// 本地存储时间
|
||
localStorageTime: 0,
|
||
}
|
||
|
||
export const useUserStore = defineStore(
|
||
'user',
|
||
() => {
|
||
const userInfo = ref<IUserInfo>({ ...initState })
|
||
const setUserInfo = (val : IUserInfo) => {
|
||
userInfo.value = val
|
||
if (val.orgCode) {
|
||
queryDepByOrgCodeApi(val.orgCode).then((res : any) => {
|
||
userInfo.value.department = res.result; // 假设 API 返回 { result: "部门名称" }
|
||
})
|
||
}
|
||
}
|
||
const clearUserInfo = () => {
|
||
userInfo.value = { ...initState }
|
||
}
|
||
const editUserInfo = (options) => {
|
||
userInfo.value = { ...userInfo.value, ...options }
|
||
}
|
||
// 一般没有reset需求,不需要的可以删除
|
||
const reset = () => {
|
||
userInfo.value = { ...initState }
|
||
}
|
||
const isLogined = computed(() => !!userInfo.value.token)
|
||
return {
|
||
userInfo,
|
||
setUserInfo,
|
||
clearUserInfo,
|
||
isLogined,
|
||
editUserInfo,
|
||
reset,
|
||
}
|
||
},
|
||
{
|
||
// 如果需要持久化就写 true, 不需要持久化就写 false(或者去掉这个配置项)
|
||
persist: true,
|
||
},
|
||
) |