user.ts 951 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import {defineStore} from "pinia";
  2. import type {LoginUser, User} from "../type";
  3. import {computed, reactive} from "vue";
  4. export const useLoginUserStore = defineStore('loginUser', ()=>{
  5. //state
  6. const loginUser = reactive<LoginUser>({
  7. isLogin: false,
  8. user:{
  9. id:"",
  10. name:"未登录",
  11. role:"guest"
  12. }
  13. })
  14. //getters
  15. const userId = computed(()=>{
  16. return loginUser.user?.id
  17. })
  18. //actions
  19. function updateUser(user:User):void {
  20. loginUser.user = {...user}
  21. }
  22. function loginSuccess(user:User):void {
  23. updateUser(user)
  24. loginUser.isLogin = true;
  25. }
  26. function logoutUser():void {
  27. loginUser.isLogin = false;
  28. }
  29. return{
  30. //States
  31. loginUser,
  32. //Getters
  33. userId,
  34. //Actions
  35. updateUser,
  36. loginSuccess,
  37. logoutUser,
  38. }
  39. },{
  40. // ✅ 启用持久化
  41. persist: true
  42. })