猫妈狗爸伴宠师小程序前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
2.2 KiB

  1. import storage from '@/utils/storage'
  2. import constant from '@/utils/constant'
  3. import {
  4. getInfo,
  5. login,
  6. logout
  7. } from '@/api/login'
  8. import {
  9. getIsLogin,
  10. getToken,
  11. removeToken,
  12. setIsLogin,
  13. setToken
  14. } from '@/utils/auth'
  15. import {
  16. currentUrl
  17. } from '@/utils/getUrl'
  18. import {
  19. wxLogin
  20. } from "../../api/system/user";
  21. import {
  22. getbaseInfo
  23. } from "@/api/home.js"
  24. const baseUrl = currentUrl
  25. const user = {
  26. state: {
  27. accessToken: uni.getStorageSync("token") || "",
  28. userInfo: uni.getStorageSync("baseInfo") ? JSON.parse(uni.getStorageSync("baseInfo")) : {}
  29. },
  30. mutations: {
  31. // 设置token
  32. setAccessToken(state, token) {
  33. state.accessToken = token;
  34. },
  35. // 设置用户信息
  36. setUserInfo(state, userInfo) {
  37. state.userInfo = userInfo;
  38. }
  39. },
  40. actions: {
  41. login(context, loading) {
  42. let success = function(){}
  43. let error = function(){}
  44. let promise = new Promise((s, e) => {
  45. success = s
  46. error = e
  47. })
  48. uni.login({
  49. success: (res) => {
  50. const code = res.code
  51. if(loading){
  52. uni.showLoading({
  53. mask : true
  54. });
  55. }
  56. wxLogin({
  57. code
  58. }).then(res => {
  59. if (res.code === 200) {
  60. uni.setStorageSync("token", res.data.token)
  61. uni.setStorageSync("baseInfo", JSON.stringify(res.data.userInfo))
  62. context.commit('setAccessToken', res.data.token);
  63. context.commit('setUserInfo', res.data.userInfo);
  64. setIsLogin(true);
  65. uni.hideLoading();
  66. success(res)
  67. if (!res.data.userInfo.userName || !res.data.userInfo.userImage || !
  68. res.data.userInfo.userTelephone) {
  69. uni.navigateTo({
  70. url: "/pages/login/wxUserInfo"
  71. })
  72. } else {
  73. uni.navigateBack(-1)
  74. }
  75. }
  76. })
  77. }
  78. })
  79. return promise
  80. },
  81. // 已登录的情况下调用接口获取用户信息,保证用户信息的实时更新
  82. async getUserInfo({
  83. commit,
  84. state
  85. }) {
  86. if (getIsLogin() && state.userInfo.userId) {
  87. const response = await getbaseInfo(state.userInfo.userId);
  88. if (response.code == 200) {
  89. commit("setUserInfo", response.data);
  90. uni.setStorageSync("baseInfo", JSON.stringify(response.data))
  91. }
  92. }
  93. }
  94. }
  95. }
  96. export default user