import Vue from "vue";
|
import Vuex from "vuex";
|
import tool from "@/assets/js/toolClass";
|
import {
|
tokenKey,
|
userInfoKey
|
} from "@/assets/js/config";
|
|
Vue.use(Vuex);
|
|
export default new Vuex.Store({
|
state: {
|
token: tool.getCookie(tokenKey),
|
userInfo: localStorage.getItem(userInfoKey) ?
|
JSON.parse(localStorage.getItem(userInfoKey)) : null,
|
//文旅图库商品
|
cartTourList: [],
|
crumbs: localStorage.getItem("crumbs") ?
|
JSON.parse(localStorage.getItem("crumbs")) : {
|
bookStore: {},
|
teachingResource: {},
|
learnPlatform: {},
|
personalCenter: {},
|
},
|
updateRightPop: 0,
|
headerSearchType: "bookCity",
|
electronicBookList: localStorage.getItem("electronicBookList") ?
|
JSON.parse(localStorage.getItem("electronicBookList")) : [], //电子样书列表
|
paperBookList: localStorage.getItem("paperBookList") ?
|
JSON.parse(localStorage.getItem("paperBookList")) : [], //纸质样书列表
|
bookStoreBrowseRecords: localStorage.getItem("bookStoreBrowseRecords") ?
|
JSON.parse(localStorage.getItem("bookStoreBrowseRecords")) : [], // 书城浏览记录
|
// 缓存组件名称列表
|
keepAliveList: [],
|
},
|
getters: {},
|
mutations: {
|
// 添加电子样书列表
|
appplyElectronicBook(state, val) {
|
state.electronicBookList.push(val);
|
localStorage.setItem(
|
"electronicBookList",
|
JSON.stringify(state.electronicBookList)
|
);
|
},
|
|
//添加纸质样式列表
|
appplyPaperBook(state, val) {
|
state.paperBookList.push(val);
|
localStorage.setItem(
|
"paperBookList",
|
JSON.stringify(state.paperBookList)
|
);
|
},
|
|
//删除电子样书列表
|
removeElectronicBook(state, val) {
|
state.electronicBookList.splice(val, 1);
|
localStorage.setItem(
|
"electronicBookList",
|
JSON.stringify(state.electronicBookList)
|
);
|
},
|
|
//删除纸质样式
|
removePaperBook(state, val) {
|
state.paperBookList.splice(val, 1);
|
localStorage.setItem(
|
"paperBookList",
|
JSON.stringify(state.paperBookList)
|
);
|
},
|
|
emptyBookList(state, val) {
|
if (val && val.type == "eBook") {
|
state.electronicBookList = val.list.filter((item) => !item.checked);
|
localStorage.setItem(
|
"electronicBookList",
|
JSON.stringify(state.electronicBookList)
|
);
|
} else if (val && val.type == "paperBook") {
|
state.paperBookList = val.list.filter((item) => !item.checked);
|
localStorage.setItem(
|
"paperBookList",
|
JSON.stringify(state.paperBookList)
|
);
|
} else {
|
state.paperBookList = [];
|
state.electronicBookList = [];
|
localStorage.removeItem("electronicBookList");
|
localStorage.removeItem("paperBookList");
|
}
|
},
|
|
changeLogin(state, val) {
|
if (val) {
|
state.token = val;
|
tool.setCookie(tokenKey, val);
|
} else {
|
state.token = null;
|
tool.delCookie(tokenKey);
|
}
|
},
|
changeUserInfo(state, val) {
|
if (val) {
|
// 默认头像
|
if (!val.icon) val.icon = require("@/assets/images/homeBg.png");
|
state.userInfo = JSON.parse(JSON.stringify(val));
|
localStorage.setItem(userInfoKey, JSON.stringify(val));
|
} else {
|
state.userInfo = val;
|
localStorage.setItem(userInfoKey, val);
|
}
|
},
|
//main.js改变vue中购物车
|
changeVuexCart(state, listObj) {
|
var listName = listObj.list;
|
if (listName == "cartTourList") {
|
state.cartTourList = listObj.newList;
|
}
|
},
|
// 面包屑
|
changeCrumbs(state, data) {
|
// 默认添加模块首页
|
switch (data.type) {
|
case "bookStore":
|
data.data.unshift({
|
name: "书城",
|
path: "/bookStore",
|
});
|
break;
|
case "teachingResource":
|
data.data.unshift({
|
name: "教学服务",
|
path: "/teachingResource",
|
});
|
break;
|
case "learnPlatform":
|
data.data.unshift({
|
name: "学习平台",
|
path: "/learnPlatform",
|
});
|
break;
|
case "personalCenter":
|
data.data.unshift({
|
name: "个人中心",
|
});
|
// path: "/personalCenter"
|
// 个人中心 详情页面 点击个人中心(面包屑)不跳转
|
break;
|
}
|
// 记录key
|
if (!state.crumbs[data.type] || !state.crumbs[data.type].keys) {
|
state.crumbs[data.type] = {
|
keys: []
|
};
|
}
|
state.crumbs[data.type].keys.push(data.cid);
|
state.crumbs[data.type][data.cid] = data.data;
|
// 只记录20条,删除旧记录
|
if (state.crumbs[data.type].keys.length > 20) {
|
let key = state.crumbs[data.type].keys[0];
|
delete state.crumbs[data.type][key];
|
state.crumbs[data.type].keys.splice(0, 1);
|
}
|
localStorage.setItem("crumbs", JSON.stringify(state.crumbs));
|
},
|
// 更改页面头部搜索框类型
|
changeHeaderSearchType(state, data) {
|
state.headerSearchType = data;
|
},
|
addBookStoreBrowseRecords(state, data) {
|
let oldIndex = state.bookStoreBrowseRecords.findIndex(
|
(item) => item.id == data.id
|
);
|
if (oldIndex != -1) {
|
state.bookStoreBrowseRecords.splice(oldIndex, 1);
|
}
|
state.bookStoreBrowseRecords.unshift(data);
|
if (state.bookStoreBrowseRecords.length > 4) {
|
state.bookStoreBrowseRecords.pop();
|
}
|
localStorage.setItem(
|
"bookStoreBrowseRecords",
|
JSON.stringify(state.bookStoreBrowseRecords)
|
);
|
},
|
// 更新右侧弹出框购物车的数量
|
updateRightPop(state) {
|
state.updateRightPop += 1;
|
},
|
// 添加缓存组件
|
addKeepAlive(state, val) {
|
state.keepAliveList.push(val);
|
},
|
// 移除缓存组件
|
delKeepAlive(state, val) {
|
if (state.keepAliveList.findIndex((item) => item == val) != -1) {
|
state.keepAliveList.splice(
|
state.keepAliveList.findIndex((item) => item == val),
|
1
|
);
|
}
|
},
|
},
|
actions: {
|
setUserInfo(context, val) {
|
context.commit("changeUserInfo", val);
|
},
|
setToken(context, val) {
|
context.commit("changeLogin", val);
|
},
|
setCrumbs(context, data) {
|
// 存储面包屑
|
if (!data.cid) {
|
data.cid = tool.uuid(8);
|
}
|
context.commit("changeCrumbs", data);
|
if (data.callback) data.callback(data.cid);
|
},
|
clearBook(context, val) {
|
context.commit("emptyBookList", val);
|
},
|
setBrowseRecords(context, val) {
|
if (val.moduleType == "bookStore") {
|
if (val.type == "add") {
|
context.commit("addBookStoreBrowseRecords", val.data);
|
}
|
}
|
},
|
},
|
modules: {},
|
});
|