index.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. import request from '@/common/request'
  4. Vue.use(Vuex)
  5. const store = new Vuex.Store({
  6. state: {
  7. hasLogin: false,
  8. jwt: uni.getStorageSync('jwt'),
  9. user: {}
  10. },
  11. // getters
  12. getters: {
  13. // »ñÈ¡tokenÖµ
  14. getJwt: state => {
  15. return state.jwt;
  16. },
  17. getusers: state => {
  18. return state.user
  19. },
  20. // ÑéÖ¤ÊÇ·ñÓÐtoken
  21. verifyJwt: state => {
  22. if (state.jwt) {
  23. state.hasLogin = true;
  24. return true
  25. }
  26. return false;
  27. }
  28. },
  29. mutations: {
  30. setJwt(state, jwt) {
  31. state.jwt = jwt;
  32. uni.setStorageSync('jwt', state.jwt);
  33. },
  34. login(state) {
  35. state.hasLogin = true;
  36. try {
  37. uni.setStorageSync('jwt', state.jwt);
  38. } catch (e) {
  39. // error
  40. }
  41. },
  42. logout(state) {
  43. state.hasLogin = false
  44. state.user = {};
  45. state.jwt = '';
  46. uni.removeStorage({
  47. key: 'jwt',
  48. success: function(res) {}
  49. });
  50. },
  51. setUser(state, user) {
  52. state.user = user
  53. uni.setStorageSync('user', state.user);
  54. }
  55. },
  56. actions: {
  57. // lazy loading openid
  58. getUser: async function({
  59. commit,
  60. state
  61. }, refresh) {
  62. return await new Promise((resolve, reject) => {
  63. if (refresh != true && state.user && Object.keys(state.user).length > 0) {
  64. resolve(state.user)
  65. } else {
  66. request.get("/api/v1/user/userInfo", {}, false).then(data => {
  67. if (data.code == 200) {
  68. commit('setUser', data.data)
  69. resolve(data.data)
  70. } else {
  71. resolve(null)
  72. }
  73. }).catch((err) => {
  74. console.info(err)
  75. reject(err);
  76. });
  77. }
  78. })
  79. }
  80. }
  81. })
  82. export default store