index.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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: uni.getStorageSync('user'),
  10. },
  11. // getters
  12. getters: {
  13. // »ñÈ¡tokenÖµ
  14. getJwt: state => {
  15. return state.jwt;
  16. },
  17. getUser: 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('user',state.user);
  38. uni.setStorageSync('jwt', state.jwt);
  39. } catch (e) {
  40. // error
  41. }
  42. },
  43. logout(state) {
  44. state.hasLogin = false
  45. state.user = {};
  46. state.jwt = '';
  47. uni.removeStorage({
  48. key: 'jwt',
  49. success: function(res) {}
  50. });
  51. },
  52. setUser(state, user) {
  53. state.user = 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/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