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.
143 lines
3.5 KiB
143 lines
3.5 KiB
// +----------------------------------------------------------------------
|
|
|
|
import { getUserInfo } from "@/api/user.js";
|
|
import { diyProductApi } from "@/api/store.js"
|
|
import {
|
|
LOGIN_STATUS,
|
|
NON_WIFI_AUTOPLAY,
|
|
UID,
|
|
USER_INFO,
|
|
STORE_NUM
|
|
} from '@/config/cache';
|
|
import Cache from '@/utils/cache';
|
|
|
|
const state = {
|
|
token: Cache.get(LOGIN_STATUS) || false,
|
|
backgroundColor: "#fff",
|
|
userInfo: Cache.get(USER_INFO) || {},
|
|
uid: Cache.get(UID) || 0,
|
|
homeActive: false,
|
|
phoneStatus: true,
|
|
pageFooter: uni.getStorageSync('pageFoot') || {},
|
|
autoplay: Cache.get(NON_WIFI_AUTOPLAY) || false,
|
|
// 商品详情可视化数据
|
|
diyProduct: {
|
|
navList: [0, 1, 2, 3, 4], // 顶部菜单内容
|
|
openShare: 1, //是否开启分享
|
|
pictureConfig: 0, //轮播图模式 0 固定方图 1 高度自适应
|
|
swiperDot: 1, //是否展示轮播指示点
|
|
showPrice: [0, 1], //是否显示付费会员价和等级会员
|
|
isOpen: [0, 1, 2], //是否展示 0 原价 1 累计销量 2 库存
|
|
showSvip: 1, //是否展示付费会员卡片
|
|
showRank: 1, // 是否展示 排行榜卡片
|
|
showService: [0, 1, 2, 3], //服务区卡片 0 营销活动入口 1 sku选择 2 服务保障 3 参数
|
|
showReply: 1, //是否展示评论区
|
|
replyNum: 3, //评论数量
|
|
showMatch: 1, //是否展示搭配购
|
|
matchNum: 3, //搭配套餐数量
|
|
showRecommend: 1, //是否展示推荐商品
|
|
recommendNum: 12, //推荐商品数量
|
|
menuList: [0, 1, 2], //底部左侧菜单
|
|
showCart: 1 //是否显示购物车
|
|
},
|
|
// 商品分类可视化数据
|
|
diyCategory: {
|
|
level: 2,
|
|
index: 0
|
|
},
|
|
productVideoStatus: true,
|
|
nearbyStore: 0,
|
|
storeNum: Cache.get(STORE_NUM) || 0 ,//1是平台,0是门店
|
|
};
|
|
|
|
const mutations = {
|
|
SETPHONESTATUS(state, val) {
|
|
state.phoneStatus = val;
|
|
},
|
|
LOGIN(state, opt) {
|
|
state.token = opt.token;
|
|
Cache.set(LOGIN_STATUS, opt.token, opt.time);
|
|
},
|
|
SETUID(state, val) {
|
|
state.uid = val;
|
|
Cache.set(UID, val);
|
|
},
|
|
UPDATE_LOGIN(state, token) {
|
|
state.token = token;
|
|
},
|
|
LOGOUT(state) {
|
|
Cache.clear(LOGIN_STATUS);
|
|
Cache.clear(UID);
|
|
Cache.clear(USER_INFO);
|
|
Cache.clear('newcomerGift');
|
|
state.token = undefined;
|
|
state.uid = undefined
|
|
state.userInfo = {}
|
|
},
|
|
BACKGROUND_COLOR(state, color) {
|
|
state.color = color;
|
|
document.body.style.backgroundColor = color;
|
|
},
|
|
UPDATE_USERINFO(state, userInfo) {
|
|
state.userInfo = userInfo;
|
|
Cache.set(USER_INFO, userInfo);
|
|
},
|
|
OPEN_HOME(state) {
|
|
state.homeActive = true;
|
|
},
|
|
CLOSE_HOME(state) {
|
|
state.homeActive = false;
|
|
},
|
|
FOOT_UPLOAD(state, data) {
|
|
state.pageFooter = data
|
|
},
|
|
SET_AUTOPLAY(state, data) {
|
|
state.autoplay = data
|
|
Cache.set(NON_WIFI_AUTOPLAY, data)
|
|
},
|
|
SET_PRODUCT_DIY(state, data){
|
|
state.diyProduct = data.product_detail;
|
|
state.diyCategory = data.product_category;
|
|
state.productVideoStatus = data.product_video_status;
|
|
},
|
|
SET_NEARBY(state,data){
|
|
state.nearbyStore = data
|
|
},
|
|
SET_STORE(state,data){
|
|
Cache.set(STORE_NUM, data);
|
|
state.storeNum = data
|
|
}
|
|
};
|
|
|
|
const actions = {
|
|
USERINFO({
|
|
state,
|
|
commit
|
|
}, force) {
|
|
if (state.userInfo !== null && !force)
|
|
return Promise.resolve(state.userInfo);
|
|
else
|
|
return new Promise(reslove => {
|
|
getUserInfo().then(res => {
|
|
commit("UPDATE_USERINFO", res.data);
|
|
Cache.set(USER_INFO, res.data);
|
|
reslove(res.data);
|
|
});
|
|
}).catch(() => {
|
|
|
|
});
|
|
},
|
|
// div商品详情
|
|
async getDiyProduct({commit}) {
|
|
let result = await diyProductApi();
|
|
if(result.status == 200){
|
|
commit("SET_PRODUCT_DIY",result.data);
|
|
}
|
|
},
|
|
};
|
|
|
|
export default {
|
|
state,
|
|
mutations,
|
|
actions
|
|
};
|
|
|