[测评系统]--前端(用户答题页面)
yj
2024-07-19 5e4bed2d67b26eeb7eab4d176bfabe3f527836e4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import Cookies from 'js-cookie'
import userApi from '@/api/user'
import examPaperApi from '@/api/examPaper'
// initial state
const state = {
  userName: Cookies.get('studentUserName'),
  userInfo: Cookies.get('studentUserInfo'),
  imagePath: Cookies.get('studentImagePath'),
  logo: null,
  messageCount: 0,
  memberToken: Cookies.get('memberTocken'),
  // langType: localStorage.getItem('langType') || 'English',
  langType: Cookies.get('langType') || 'English',
  formDo: localStorage.getItem('formDo') && JSON.parse(localStorage.getItem('formDo')),
  langFlag: true,
  memberId: null
}
 
// actions
const actions = {
  initUserInfo ({ commit }) {
    userApi.getCurrentUser().then(re => {
      commit('setUserInfo', re.response)
    })
  },
  getUserMessageInfo ({ commit }) {
    userApi.getMessageCount().then(re => {
      commit('setMessageCount', re.response)
    })
  }
}
 
// mutations
const mutations = {
  setLogo (state, logo) {
    state.logo = logo
  },
  setUserName (state, userName) {
    state.userName = userName
    Cookies.set('studentUserName', userName, { expires: 30 })
  },
  setMemberTocken (state, paraMemberToken) {
    state.memberToken = paraMemberToken
    Cookies.set('memberTocken', paraMemberToken, { expires: 30 })
  },
  setMemberId (state, memberId) {
    state.memberId = memberId
  },
 
  setFormDo (state, formDo) {
    if (formDo) {
      localStorage.setItem('formDo', JSON.stringify(formDo), { expires: 30 })
    } else {
      localStorage.setItem('formDo', formDo, { expires: 30 })
    }
    state.formDo = formDo
  },
  getFormDo (state) {
    // 如果不包含guide则重新获取
    if (!state.formDo || !Object.hasOwn(state.formDo, 'guide')) {
      state.formDo = localStorage.getItem('formDo') && JSON.parse(localStorage.getItem('formDo'))
      if (state.formDo && Object.hasOwn(state.formDo, 'guide')) {
        return
      }
      if (!state.memberToken || !state.langType) {
        return
      }
      examPaperApi.select(state.memberToken, state.langType).then(re => {
        state.formDo = re.response
        localStorage.setItem('formDo', JSON.stringify(state.formDo), { expires: 30 })
      }).catch(e => {
        console.error('获取formDo失败', e)
      })
    }
  },
  setLangType (state, paraLangType) {
    state.langType = paraLangType
    Cookies.set('langType', paraLangType, { expires: 30 })
    if (paraLangType === 'Chinese') {
      Cookies.set('language', 'zh', { expires: 30 })
    } else {
      Cookies.set('language', 'en', { expires: 30 })
    }
  },
  getLangType () {
    let language = (navigator.language || navigator.browserLanguage).toLowerCase()
    if (language === 'zh-cn') {
      state.langType = 'Chinese'
    } else {
      state.langType = 'English'
    }
  },
  setLangFlag (state, paraLangFlag) {
    state.langFlag = paraLangFlag
  },
  setUserInfo: (state, userInfo) => {
    state.userInfo = userInfo
    Cookies.set('studentUserInfo', userInfo, { expires: 30 })
  },
  setImagePath: (state, imagePath) => {
    state.imagePath = imagePath
    Cookies.set('studentImagePath', imagePath, { expires: 30 })
  },
  setMessageCount: (state, messageCount) => {
    state.messageCount = messageCount
  },
  messageCountSubtract: (state, num) => {
    state.messageCount = state.messageCount - num
  },
  clearLogin (state) {
    Cookies.remove('studentUserName')
    Cookies.remove('studentUserInfo')
    Cookies.remove('studentImagePath')
  }
}
 
export default {
  namespaced: true,
  state,
  mutations,
  actions
}