api
tj
2025-05-29 05d1310a6ec27656712c0c5e5e57b3365d3faf56
store/index.js
@@ -1,229 +0,0 @@
// store/index.js
import { createStore } from 'vuex'
import http from '../plugins/http'
import storage from '../plugins/storage.js'
import message from '../plugins/message.js'
const store = createStore({
  state() {
    return {
      hasLogin: false,
      isUniverifyLogin: false,
      loginProvider: '',
      openid: null,
      testvuex: false,
      colorIndex: 0,
      colorList: ['#FF0000', '#00FF00', '#0000FF'],
      noMatchLeftWindow: true,
      active: 'componentPage',
      leftWinActive: '/pages/component/view/view',
      activeOpen: '',
      menu: [],
      appMenu: [],
      univerifyErrorMsg: '',
      currentInfo: {},
      cache_address: {},
      sign: {
        enterprise: 0,
        info: 0,
        flower: 0,
        shopping: 0,
        follow: 0,
        delivery: 0,
        order: 0,
        shopnum: 0,
        coupon: 0,
        cache_topay: 0,
      },
      cache: {
        coupon: {},
        goods: [],
        cache_coupon_select_cancel: 0,
      },
      defaultaddress: {},
      addressDesc: '',
    }
  },
  mutations: {
    updateLogin(state, provider) {
      state.hasLogin = !!provider
      if (!state.hasLogin) {
        state.currentInfo = {}
        storage.removeItem('token')
      }
    },
    login(state, provider) {
      state.hasLogin = true
      state.loginProvider = provider
    },
    logout(state) {
      state.hasLogin = false
      state.openid = null
      state.currentInfo = {}
      state.appMenu = []
      storage.removeItem('token')
      storage.removeItem('appMenu')
      message.showToast('退出登录成功')
    },
    setOpenid(state, openid) {
      state.openid = openid
    },
    setDefaultAddress(state, defaultaddress) {
      state.defaultaddress = defaultaddress
    },
    setAddressDesc(state, addressDesc) {
      state.addressDesc = addressDesc
      storage.setItem('defaultaddress', addressDesc || '')
    },
    setTestTrue(state) {
      state.testvuex = true
    },
    setTestFalse(state) {
      state.testvuex = false
    },
    setColorIndex(state, index) {
      state.colorIndex = index
    },
    setActive(state, tabPage) {
      state.active = tabPage
    },
    setActiveOpen(state, activeOpen) {
      state.activeOpen = activeOpen
    },
    setMenu(state, menu) {
      state.menu = menu
    },
    setUniverifyLogin(state, payload) {
      state.isUniverifyLogin = !!payload
    },
    setUniverifyErrorMsg(state, payload = '') {
      state.univerifyErrorMsg = payload
    }
  },
  getters: {
    currentColor(state) {
      return state.colorList[state.colorIndex]
    }
  },
  actions: {
    async sign_add({ state }, key) {
      state.sign[key] = 1
    },
    async sign_clear({ state }, key) {
      state.sign[key] = 0
    },
    async cache_coupon_select({ state }, dto) {
      state.cache.coupon = dto || {}
    },
    async cache_coupon_select_cancel({ state }, val) {
      state.cache.cache_coupon_select_cancel = val || 0
    },
    async cache_goods_select({ state }, goods) {
      state.cache.goods = goods || []
    },
    async logout({ commit }) {
      commit('logout')
    },
    async getUserOpenId({ state, commit }) {
      if (state.openid) return state.openid
      return new Promise((resolve, reject) => {
        uni.login({
          success(data) {
            commit('login')
            setTimeout(() => {
              const openid = '123456789'
              commit('setOpenid', openid)
              resolve(openid)
            }, 1000)
          },
          fail(err) {
            reject(err)
          }
        })
      })
    },
    async getCurrentInfo({ commit, state }) {
      const currentInfo = await http.request('get', '/api/current/user', {})
      if (currentInfo && currentInfo.code === 0) {
        state.currentInfo = currentInfo.data || {}
        state.type = currentInfo.data.type || ''
        state.spacecode = currentInfo.data.spacecode || ''
        commit('updateLogin', true)
      } else {
        commit('updateLogin', false)
      }
    },
    async getSwitchSubAccount({ commit, state }, payload) {
      const currentInfo = await http.request('get', '/api/supplierSub/getSwitchById', {
        params: {
          id: payload.id,
          type: payload.type
        }
      })
      if (currentInfo && currentInfo.code === 0) {
        state.currentInfo = currentInfo.data || {}
        state.type = currentInfo.data.type || ''
        state.spacecode = currentInfo.data.spacecode || ''
        commit('updateLogin', true)
      } else {
        commit('updateLogin', false)
      }
      return currentInfo
    },
    async getAppMenu({ state }) {
      const menu = await http.request('get', '/api/app/menu/permission/menu', {})
      storage.setItem('appMenu', [])
      if (menu && menu.code === 0) {
        const appMenu = menu.data || []
        storage.setItem('appMenu', appMenu)
      }
    },
    async getAppMenuSupplier({ state }) {
      const menu = await http.request('get', '/api/app/menu/supplier/permission/menu', {})
      storage.setItem('appMenu', [])
      if (menu && menu.code === 0) {
        const appMenu = menu.data || []
        storage.setItem('appMenu', appMenu)
      }
    },
    async getAppMenuPartner({ state }) {
      const menu = await http.request('get', '/api/app/menu/partner/permission/menu', {})
      storage.setItem('appMenu', [])
      if (menu && menu.code === 0) {
        const appMenu = menu.data || []
        storage.setItem('appMenu', appMenu)
      }
    },
    async loginwx({ dispatch, state }, data) {
      const resp = await http.request('post', '/api/login/wechat', {
        data: {
          code: data.code,
          imgurl: data.imgurl || '',
          nickname: data.nickname || '',
          inviter: data.inviter || '',
          phoneNumber: data.phoneNumber || '',
          purePhoneNumber: data.purePhoneNumber || '',
        }
      })
      if (resp && resp.code === 0) {
        state.isBind = true
        storage.setItem('token', resp.data.access_token || '')
        state.hasLogin = true
        if (data.inviter) {
          storage.removeItem('inviter')
          storage.removeItem('inviterTime')
          storage.removeItem('inviterName')
        }
        await dispatch('getCurrentInfo')
      } else {
        message.showToast('登录失败: ' + (resp && resp.msg))
        storage.removeItem('openid')
        storage.removeItem('tel')
        storage.removeItem('token')
      }
      return resp
    }
  }
})
export default store