You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

188 lines
7.2 KiB

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