import { createStore } from "vuex"; import { PROJECT_PROCESS, ROUTER_PROCESS, PROFESSIONAL_STUDENT_DETAIL } from "@/api/api"; import { request } from "@/api/request"; import { growthRequest } from "@/api/growthRequest"; import { TASK_TYPES } from "@/api/CONST"; export default createStore({ state: { userInfo: {}, projectInfo: {}, projectError: {}, routerInfo: {}, growthInfo: {} }, getters: {}, mutations: { SET_USER(state, userInfo) { state.userInfo = userInfo; }, SET_PROJECT_INFO(state, info) { state.projectInfo = info; }, SET_GROWTH_INFO(state, info) { state.growthInfo = info; }, SET_PROJECT_ERROR(state, error) { state.projectError = error; }, 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) => { if (t.studyModel == 1) { state.projectInfo.stageProcessList?.forEach((t1) => { t1.statusName = "已完成"; const stageState = t1.taskProcessList?.some((s) => { s.unlock = true; s.statusName = "已完成"; s.status !== 1 && (s.statusName = TASK_TYPES.toName[s.type]) return state.projectInfo.unlockMode === 1 ? s.status !== 1 : (s.status !== 1 && s.flag) }); stageState && (t1.statusName = "进行中"); return stageState; }); } else { t.statusName = "进行中"; t.taskProcessList?.forEach((s) => s.statusName = (s.status === 1) ? "已完成" : s.status === 2 ? (s.statusName = "进行中") : TASK_TYPES.toName[s.type]); t.taskProcessList?.every((s) => s.status === 1) && (t.statusName = "已完成"); } }); return; } state.projectInfo.stageProcessList.forEach((item, i) => { if (item.studyModel == 1) { state.projectInfo.stageProcessList?.some((t) => { t.statusName = "已完成"; const stageState = t.taskProcessList?.some((s) => { s.unlock = true; s.statusName = "已完成"; s.status !== 1 && (s.statusName = s.status == 2 ? '进行中' : TASK_TYPES.toName[s.type]) return state.projectInfo.unlockMode === 2 ? s.status !== 1 : (s.status !== 1 && s.flag) }); stageState && (t.statusName = "进行中"); return stageState; }); } else { if (i == 0) { item.statusName = "进行中"; item.taskProcessList?.forEach((s) => s.statusName = (s.status === 1) ? "已完成" : s.status === 2 ? (s.statusName = "进行中") : TASK_TYPES.toName[s.type]); item.taskProcessList?.every((s) => s.status === 1) && (item.statusName = "已完成"); } if (i > 0) { if (state.projectInfo.stageProcessList[i - 1].statusName == "已完成") { item.statusName = "进行中"; item.taskProcessList?.forEach((s) => s.statusName = (s.status === 1) ? "已完成" : s.status === 2 ? (s.statusName = "进行中") : TASK_TYPES.toName[s.type]); item.taskProcessList?.every((s) => s.status === 1) && (item.statusName = "已完成"); } else { item.statusName = "未解锁"; } } } }) }, 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) ? "已完成" : s.status === 2 ? (s.statusName = "进行中") : 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("SET_PROJECT_ERROR", res); content.commit("INIT_PROJECT_INFO"); }); }, getGrowthInfo(content, { routerId }) { growthRequest(PROFESSIONAL_STUDENT_DETAIL(routerId)).then(res => { content.commit("SET_GROWTH_INFO", res.data); }) }, 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: {} });