store.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import Vue from "vue";
  2. import Vuex from "vuex";
  3. Vue.use(Vuex);
  4. const examHomeModule = {
  5. namespaced: true,
  6. state: { faceCheckModalOpen: false },
  7. mutations: {
  8. toggleFaceCheckModal(state, open) {
  9. if (open === undefined) {
  10. state.faceCheckModalOpen = !state.faceCheckModalOpen;
  11. } else {
  12. state.faceCheckModalOpen = open;
  13. }
  14. }
  15. },
  16. actions: {},
  17. getters: {}
  18. };
  19. const examingHomeModule = {
  20. namespaced: true,
  21. state: {
  22. exam: null,
  23. paperStruct: null,
  24. examQuestionList: null,
  25. questionFilterType: "ALL",
  26. snapNow: false,
  27. shouldSubmitPaper: false
  28. },
  29. mutations: {
  30. toggleSnapNow(state) {
  31. state.snapNow = !state.snapNow;
  32. },
  33. updateExamState(state, payload) {
  34. state = Object.assign(state, payload);
  35. },
  36. updateExamResult(state, payload) {
  37. state = Object.assign(state, { examResult: payload });
  38. },
  39. updateQuestionFilter(state, type) {
  40. state.questionFilterType = type;
  41. },
  42. updateExamQuestion(
  43. state,
  44. { order, studentAnswer, isSign, audioPlayTimes }
  45. ) {
  46. const examQuestionList = state.examQuestionList.map(eq => {
  47. // console.log(eq.order, order);
  48. if (eq.order == order) {
  49. return Object.assign(
  50. {},
  51. eq,
  52. { dirty: true },
  53. studentAnswer !== undefined && { studentAnswer },
  54. audioPlayTimes !== undefined && { audioPlayTimes },
  55. isSign !== undefined && { isSign }
  56. );
  57. }
  58. return eq;
  59. });
  60. state = Object.assign(state, { examQuestionList });
  61. },
  62. resetExamQuestionDirty(state) {
  63. const examQuestionList = state.examQuestionList.map(eq => {
  64. return Object.assign({}, eq, { dirty: false });
  65. });
  66. state = Object.assign(state, { examQuestionList });
  67. },
  68. setShouldSubmitPaper(state) {
  69. state.shouldSubmitPaper = !state.shouldSubmitPaper;
  70. }
  71. },
  72. actions: {},
  73. getters: {}
  74. };
  75. const userStr = window.localStorage.getItem("user-for-reload");
  76. const initUser = userStr ? JSON.parse(userStr) : {};
  77. export default new Vuex.Store({
  78. state: {
  79. user: initUser
  80. },
  81. mutations: {
  82. updateUser(state, payload) {
  83. state = Object.assign(state, { user: payload });
  84. }
  85. },
  86. actions: {},
  87. modules: {
  88. examHomeModule,
  89. examingHomeModule
  90. }
  91. });