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 }