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.
 
 
 
 
 
 

124 lines
2.7 KiB

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex);
//变量
const state = {
//用户数据
userInfo: {},
//webView地址
webViewUrl: "",
loadingShow: false,
//微信场景参数
chatScenesInfo: {},
//登录弹窗状态
loginPopupShow: false,
//当前位置
currentAddress: {
areaName: "请选择",
areaId: ''
},
};
//缓存浏览器的数据名称
const cacheNameList = ["userInfo"];
let clearTime;
const mutations = {
//取出缓存数据(打开APP就取出)
setCacheData(state) {
for (let name of cacheNameList) {
// #ifndef H5
let data = uni.getStorageSync(name);
// #endif
// #ifdef H5
let data = sessionStorage.getItem(name) || localStorage.getItem(name);
// #endif
if (data) {
// #ifdef H5
try {
data = JSON.parse(data);
} catch (e) {
}
// #endif
state[name] = data;
}
}
},
//储存用户信息
setUserInfo(state, data) {
if (data) {
state.userInfo = Object.assign(state.userInfo,data);
// #ifdef H5
window.sessionStorage.setItem('userInfo', JSON.stringify(state.userInfo));
// #endif
// #ifndef H5
uni.setStorageSync('userInfo', state.userInfo);
// #endif
}
},
// 退出APP
emptyUserInfo(state) {
state.userInfo = {};
// #ifdef H5
window.sessionStorage.removeItem("userInfo");
// #endif
// #ifndef H5
uni.removeStorageSync("userInfo");
// #endif
},
//WebView地址
setWebViewUrl(state, data) {
if (data) {
state.webViewUrl = data;
// #ifdef H5
window.sessionStorage.setItem('webViewUrl', data);
// #endif
}
},
//数据加载状态
setLoadingShow(state, data) {
if(state.loadingShow){
clearTime && clearTimeout(clearTime);
clearTime = setTimeout(function(){
state.loadingShow = data;
},300);
} else {
state.loadingShow = data;
}
},
//微信场景参数
setChatScenesInfo(state, data) {
if (data) {
state.chatScenesInfo = data;
}
},
//登录弹窗状态
setLoginPopupShow(state, data) {
state.loginPopupShow = data;
},
//当前地址
setCurrentAddress(state, data) {
if (data) {
state.currentAddress = Object.assign(state.currentAddress, data);
let addressInfo = {
"provinceId": state.currentAddress.provinceId,
"provinceName": state.currentAddress.provinceName,
"cityId": state.currentAddress.cityId,
"cityName": state.currentAddress.cityName,
"areaId": state.currentAddress.areaId,
"areaName": state.currentAddress.areaName,
};
// #ifdef H5
window.sessionStorage.setItem('currentAddress', JSON.stringify(addressInfo));
// #endif
// #ifndef H5
uni.setStorageSync('currentAddress', addressInfo);
// #endif
}
}
};
//异步处理
const actions = {};
export default new Vuex.Store({
state,
mutations,
actions
});