index.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. }
  54. },
  55. actions: {
  56. // lazy loading openid
  57. getUser: async function({
  58. commit,
  59. state
  60. }, refresh) {
  61. return await new Promise((resolve, reject) => {
  62. if (refresh != true && state.user && Object.keys(state.user).length > 0) {
  63. resolve(state.user)
  64. } else {
  65. request.get("/api/v1/user/userInfo", {}, false).then(data => {
  66. if (data.code == 200) {
  67. commit('setUser', data.data)
  68. resolve(data.data)
  69. } else {
  70. resolve(null)
  71. }
  72. }).catch((err) => {
  73. console.info(err)
  74. reject(err);
  75. });
  76. }
  77. })
  78. }
  79. }
  80. })
  81. export default store