Files
fe-student/src/store/index.js
2023-03-05 04:26:37 +08:00

90 lines
3.4 KiB
JavaScript

import {createStore} from "vuex";
import {PROJECT_PROCESS, ROUTER_PROCESS} from "@/api/api";
import {request} from "@/api/request";
import {TASK_TYPES} from "@/api/CONST";
export default createStore({
state: {
userInfo: {},
projectInfo: {},
routerInfo: {}
},
getters: {},
mutations: {
SET_USER(state, userInfo) {
state.userInfo = userInfo;
},
SET_PROJECT_INFO(state, info) {
state.projectInfo = info;
},
INIT_PROJECT_INFO(state) {
if (state.projectInfo.status === -1) {
state.projectInfo.stageProcessList.forEach((t) => {
t.statusName = "已结束";
t.taskProcessList?.forEach((s) => s.statusName = "已结束");
});
return;
}
if (state.projectInfo.unlockMode === 1) {
state.projectInfo.stageProcessList.forEach((t) => {
t.statusName = "进行中";
t.taskProcessList?.forEach((s) => s.statusName = (s.status === 1) ? "已完成" : TASK_TYPES.toName[s.type]);
t.taskProcessList?.every((s) => s.status === 1) && (t.statusName = "已完成");
});
return;
}
state.projectInfo.stageProcessList?.some((t) => {
t.statusName = "已完成";
const stageState = t.taskProcessList?.some((s) => {
s.unlock = true;
s.statusName = "已完成";
s.status === 2 ? (s.statusName = "进行中") : (!s.status && (s.statusName = TASK_TYPES.toName[s.type]));
return state.projectInfo.unlockMode === 2 ? s.status !== 1 : (s.status !== 1 && s.flag);
});
stageState && (t.statusName = "进行中");
return stageState;
});
},
SET_ROUTER_INFO(state, info) {
state.routerInfo = info;
},
INIT_ROUTER_INFO(state) {
// state.routerInfo.unlockMode 1自由模式 2闯关模式 3 闯关模式 必修 flag true
if (state.routerInfo.status === -1) {
state.routerInfo.statusName = "已结束";
state.routerInfo.taskBoList.forEach((t) => t.statusName = "已结束");
return;
}
state.routerInfo.statusName = "进行中";
if (state.routerInfo.unlockMode === 1) {
state.routerInfo.taskBoList?.forEach((s) => s.statusName = (s.status === 1) ? "已完成" : TASK_TYPES.toName[s.type]);
state.routerInfo.taskBoList?.every((s) => s.status === 1) && (state.routerInfo.statusName = "已完成");
return;
}
state.routerInfo.statusName = "已完成";
state.routerInfo.taskBoList?.some((s) => {
s.unlock = true;
s.statusName = "已完成";
s.status === 2 ? (s.statusName = "进行中") : (!s.status && (s.statusName = TASK_TYPES.toName[s.type]));
// s.status !== 1 && (s.statusName = TASK_TYPES.toName[s.type]);
return state.routerInfo.unlockMode === 2 ? s.status !== 1 : (s.status !== 1 && s.flag);
}) && (state.routerInfo.statusName = "进行中");
},
},
actions: {
getProjectInfo(content, { projectId }) {
request(PROJECT_PROCESS, { projectId, type: 1 }).then(res => {
content.commit("SET_PROJECT_INFO", res.data);
content.commit("INIT_PROJECT_INFO");
});
},
getRouterInfo(content, { routerId, chapterId }) {
request(ROUTER_PROCESS, chapterId ? { routerId, type: 2, chapterId } : { routerId, type: 2 }).then(res => {
content.commit("SET_ROUTER_INFO", res.data);
content.commit("INIT_ROUTER_INFO");
});
},
},
modules: {}
});