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
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
|
|
});
|
|
|