import Vue from "vue"; import Vuex from "vuex"; Vue.use(Vuex); const examHomeModule = { namespaced: true, state: { faceCheckModalOpen: false }, mutations: { toggleFaceCheckModal(state, open) { if (open === undefined) { state.faceCheckModalOpen = !state.faceCheckModalOpen; } else { state.faceCheckModalOpen = open; } } }, actions: {}, getters: {} }; const examingHomeModule = { namespaced: true, state: { exam: null, paperStruct: null, examQuestionList: null, questionFilterType: "ALL", snapNow: false, shouldSubmitPaper: false }, mutations: { toggleSnapNow(state) { state.snapNow = !state.snapNow; }, updateExamState(state, payload) { state = Object.assign(state, payload); }, updateExamResult(state, payload) { state = Object.assign(state, { examResult: payload }); }, updateQuestionFilter(state, type) { state.questionFilterType = type; }, updateExamQuestion( state, { order, studentAnswer, isSign, audioPlayTimes } ) { const examQuestionList = state.examQuestionList.map(eq => { // console.log(eq.order, order); if (eq.order == order) { return Object.assign( {}, eq, { dirty: true }, studentAnswer !== undefined && { studentAnswer }, audioPlayTimes !== undefined && { audioPlayTimes }, isSign !== undefined && { isSign } ); } return eq; }); state = Object.assign(state, { examQuestionList }); }, resetExamQuestionDirty(state) { const examQuestionList = state.examQuestionList.map(eq => { return Object.assign({}, eq, { dirty: false }); }); state = Object.assign(state, { examQuestionList }); }, setShouldSubmitPaper(state) { state.shouldSubmitPaper = !state.shouldSubmitPaper; } }, actions: {}, getters: {} }; const userStr = window.localStorage.getItem("user-for-reload"); const initUser = userStr ? JSON.parse(userStr) : {}; export default new Vuex.Store({ state: { user: initUser }, mutations: { updateUser(state, payload) { state = Object.assign(state, { user: payload }); } }, actions: {}, modules: { examHomeModule, examingHomeModule } });