index.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. // ��֤�Ƿ���token
  18. verifyJwt: state => {
  19. if (state.jwt) {
  20. state.hasLogin = true;
  21. return true
  22. }
  23. return false;
  24. }
  25. },
  26. mutations: {
  27. setJwt(state, jwt) {
  28. state.jwt = jwt;
  29. uni.setStorageSync('jwt', state.jwt);
  30. },
  31. login(state) {
  32. state.hasLogin = true;
  33. try {
  34. uni.setStorageSync('jwt', state.jwt);
  35. } catch (e) {
  36. // error
  37. }
  38. },
  39. logout(state) {
  40. state.hasLogin = false
  41. state.user = {};
  42. state.jwt = '';
  43. uni.removeStorage({
  44. key: 'jwt',
  45. success: function(res) {}
  46. });
  47. },
  48. setUser(state, user) {
  49. state.user = user
  50. }
  51. },
  52. actions: {
  53. // lazy loading openid
  54. getUser: async function({
  55. commit,
  56. state
  57. }, refresh) {
  58. return await new Promise((resolve, reject) => {
  59. if (refresh != true && state.user && Object.keys(state.user).length > 0) {
  60. resolve(state.user)
  61. } else {
  62. request.get("/api/user/userInfo", {}, false).then(data => {
  63. if (data.code == 200) {
  64. commit('setUser', data.data)
  65. resolve(data.data)
  66. } else {
  67. resolve(null)
  68. }
  69. }).catch((err) => {
  70. console.info(err)
  71. reject(err);
  72. });
  73. }
  74. })
  75. }
  76. }
  77. })
  78. export default store