import fetch from '../common/httpRequest' // #ifndef VUE3 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const store = new Vuex.Store({ // #endif // #ifdef VUE3 import { createStore } from 'vuex' const store = createStore({ // #endif state: { // 用户令牌 项目调用接口用 token: uni.getStorageSync("hiver_token") || "", // 是否登录 项目中改为真实登录信息判断,如token isLogin: uni.getStorageSync("hiver_token") ? true : false, // app版本 version: "1.0.0", // 用户ID userId: "", // 用户名 username: "", // 手机号 mobile: "", // 登录后跳转的页面路径 + 页面参数 returnUrl: "", // 当前是否有网络连接 networkConnected: true, // 在线状态 isOnline: true, // 用户昵称 nickname: "", // 头像 avatar: "", // 类型 0 店主 1 店长 2 店员 3 物流 4 普通用户 5 Vip用户(预留) type: 0, // 描述 description: "这家伙很懒…", // 当前店铺 0为默认店铺 否则为商铺ID shopIndex: 0, // 商铺名称 shopName: "", // 商铺所属区域 region: "", // 当前设备 platform: "" }, mutations: { // login(state, payload) { // if (payload) { // state.token = payload.token // } // state.isLogin = true // }, logout(state) { state.userId = "" state.token = "" state.isLogin = false state.username = "" state.mobile = "" state.returnUrl = "" state.isOnline = false state.nickname = "" state.avatar = "" state.type = 0 state.description = "这家伙很懒…" state.shopIndex = 0 state.shopName = "" state.platform = "" uni.setStorageSync("hiver_token", "") }, setReturnUrl(state, returnUrl) { state.returnUrl = returnUrl }, networkChange(state, payload) { state.networkConnected = payload.isConnected }, setOnline(state, payload) { state.isOnline = state.isOnline }, setUserInfo(state, payload) { state.userId = payload.userId state.username = payload.username state.mobile = payload.mobile state.nickname = payload.nickname state.avatar = payload.avatar state.type = payload.type state.description = payload.description }, setShopIndex(state, payload) { state.shopIndex = payload.shopIndex || payload.id state.shopName = payload.shopName state.region = payload.region }, setPlatform(state, payload) { state.platform = payload.platform } }, actions: { getOnlineStatus: async function ({ commit, state }) { return await new Promise((resolve, reject) => { // #ifndef MP-WEIXIN resolve(true) // #endif // #ifdef MP-WEIXIN if (state.isOnline) { resolve(state.isOnline) } else { fetch.request("/app/common/userInfo", "GET", {}, false, true, true).then(( res) => { if (res.code == 200 && res.result != null && res .result != undefined && res.result.user != null && res.result.user != undefined) { commit('setOnline', { isOnline: true }) // 更新基础信息 resolve(true) } else { commit('setOnline', { isOnline: false }) // 要求重新登录 resolve(false) } }).catch((res) => { reject(false) }) } // #endif }) }, getUserInfo: async function ({ commit, state }) { return await new Promise((resolve, reject) => { fetch.request("/app/common/userInfo", "GET", {}, false, true, true).then(( res) => { if (res.code == 200 && res.result != null && res .result != undefined && res.result.user != null && res.result.user != undefined) { commit('setUserInfo', { userId: res.result.user.id, username: res.result.user.username, mobile: res.result.user.mobile, nickname: res.result.user.nickname, avatar: res.result.user.avatar, type: res.result.user.type, description: res.result.user.description }) if (res.result.shops != null && res.result.shops != undefined && res.result.shops.length > 0) { commit('setShopIndex', { shopIndex: res.result.shops[0].id, shopName: res.result.shops[0].shopName, region: res.result.shops[0].region }) } // 更新基础信息 resolve(res.result.user.type) } else { commit('logout') // 要求重新登录 uni.redirectTo({ url: '/package2/login/login' }); resolve(false) } }).catch((res) => { reject(false) }) }) } } }) export default store