user.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import { ref } from 'vue'
  2. import { defineStore } from 'pinia'
  3. import { setToken, getToken, removeToken } from '@/utils/auth'
  4. import { loginWithMessage, logout } from '@/api/login'
  5. import { useAppStore } from '@/stores/app'
  6. import { useRouter } from "vue-router";
  7. export const useUserStore = defineStore('user', () => {
  8. const userId = ref(localStorage.getItem('userid'))
  9. const nickname = ref(localStorage.getItem('account'))
  10. const orgName = ref(localStorage.getItem('orgNm'))
  11. const avatar = ref('')
  12. const roles = ref(localStorage.getItem('allNode'))
  13. const router = useRouter();
  14. const token = ref(getToken())
  15. function setUserInfo(data) {
  16. userId.value = data.userId
  17. }
  18. function Login(phone, captcha, smsCode) {
  19. return new Promise((resolve, reject) => {
  20. loginWithMessage(phone, captcha, smsCode)
  21. .then((res) => {
  22. let userid = res.data.guid;
  23. let loginName = res.data.persName;
  24. let guid = res.data.orgId;
  25. let orgNm = res.data.orgNm;
  26. let isAdmin = res.data.permission;
  27. let allNode = JSON.stringify(res.data.allNode);//当前用户所在组信息
  28. let allOrg = JSON.stringify(res.data.allOrg);
  29. let persType = res.data.persType;
  30. let accessToken = res.accessToken; //token是否过期
  31. localStorage.setItem('userid', userid);
  32. localStorage.setItem('account', loginName);
  33. localStorage.setItem('guid', guid);
  34. localStorage.setItem('orgNm', orgNm);
  35. localStorage.setItem('isAdmin', isAdmin);
  36. localStorage.setItem('persType', persType);
  37. localStorage.setItem('accessToken', accessToken);
  38. let orgId = res.data.orgId;
  39. localStorage.setItem('orgId', orgId);
  40. localStorage.setItem('allOrg', allOrg);
  41. localStorage.setItem("currentOrgId", res.data.defaultOrg.orgId); //省级当前的机构id
  42. localStorage.setItem("currentRlcode", res.data.defaultOrg.rlcode); //省级当前的行政区划编码
  43. localStorage.setItem("currentOrgNm", res.data.defaultOrg.orgNm); //省级当前的机构名称
  44. localStorage.setItem('allNode', allNode);
  45. userId.value = userid;
  46. nickname.value = loginName;
  47. orgName.value = orgNm;
  48. setToken(res.accessToken);
  49. token.value = res.accessToken;
  50. const appStore = useAppStore()
  51. appStore.setCurrentOrgId(res.data.defaultOrg.orgId)
  52. resolve();
  53. })
  54. .catch((error) => {
  55. reject(error);
  56. });
  57. });
  58. }
  59. // 查询用户信息
  60. // function getInfo() {
  61. // return new Promise((resolve, reject) => {
  62. // getInfo()
  63. // .then((res) => {
  64. // const user = res.user;
  65. // const avatar =
  66. // user.avatar == ""
  67. // ? require("@/assets/images/default-user-img.jpg")
  68. // : process.env.VUE_APP_BASE_API + user.avatar;
  69. // if (res.roles && res.roles.length > 0) {
  70. // // 验证返回的roles是否是一个非空数组
  71. // commit("SET_ROLES", res.roles);
  72. // commit("SET_PERMISSIONS", res.permissions);
  73. // } else {
  74. // commit("SET_ROLES", ["ROLE_DEFAULT"]);
  75. // }
  76. // commit("SET_USER_ID", user.userId);
  77. // commit("SET_NAME", user.userName);
  78. // commit("SET_NICKNAME", user.nickName);
  79. // commit("SET_AVATAR", avatar);
  80. // resolve(res);
  81. // })
  82. // .catch((error) => {
  83. // reject(error);
  84. // });
  85. // });
  86. // }
  87. // 退出系统
  88. function LogOut() {
  89. return new Promise((resolve, reject) => {
  90. logout().then(() => {
  91. router.push("/login");
  92. localStorage.clear()
  93. token.value = ""
  94. removeToken();
  95. resolve();
  96. })
  97. .catch((error) => {
  98. reject(error);
  99. });
  100. });
  101. }
  102. return { userId, nickname, orgName, setUserInfo, Login, LogOut }
  103. })