mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-student.git
synced 2025-12-11 11:56:48 +08:00
90 lines
3.4 KiB
JavaScript
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: {}
|
|
});
|