index.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. Vue.use(Vuex)
  4. const store = new Vuex.Store({
  5. state: {
  6. hasLogin: false,
  7. loginProvider: "",
  8. openid: null,
  9. testvuex:false,
  10. colorIndex: 0,
  11. colorList: ['#FF0000','#00FF00','#0000FF'],
  12. cateId: 0
  13. },
  14. mutations: {
  15. login(state, provider) {
  16. state.hasLogin = true;
  17. state.loginProvider = provider;
  18. },
  19. logout(state) {
  20. state.hasLogin = false
  21. state.openid = null
  22. },
  23. setOpenid(state, openid) {
  24. state.openid = openid
  25. },
  26. setTestTrue(state){
  27. state.testvuex = true
  28. },
  29. setTestFalse(state){
  30. state.testvuex = false
  31. },
  32. setColorIndex(state,index){
  33. state.colorIndex = index
  34. },
  35. changeCateId(state,id) {
  36. state.cateId = id
  37. }
  38. },
  39. getters:{
  40. currentColor(state){
  41. return state.colorList[state.colorIndex]
  42. },
  43. cateId(state){
  44. return state.cateId
  45. }
  46. },
  47. actions: {
  48. // lazy loading openid
  49. getUserOpenId: async function ({
  50. commit,
  51. state
  52. }) {
  53. return await new Promise((resolve, reject) => {
  54. if (state.openid) {
  55. resolve(state.openid)
  56. } else {
  57. uni.login({
  58. success: (data) => {
  59. commit('login')
  60. setTimeout(function () { //模拟异步请求服务器获取 openid
  61. const openid = '123456789'
  62. console.log('uni.request mock openid[' + openid + ']');
  63. commit('setOpenid', openid)
  64. resolve(openid)
  65. }, 1000)
  66. },
  67. fail: (err) => {
  68. console.log('uni.login 接口调用失败,将无法正常使用开放接口等服务', err)
  69. reject(err)
  70. }
  71. })
  72. }
  73. })
  74. }
  75. }
  76. })
  77. export default store