From 5e4bed2d67b26eeb7eab4d176bfabe3f527836e4 Mon Sep 17 00:00:00 2001 From: yj <2077506045@qq.com> Date: 星期五, 19 七月 2024 13:48:29 +0800 Subject: [PATCH] 修复答题刷新与CAQ分片2从第2题开始bug --- dist-20240704.zip | 0 src/store/modules/user.js | 45 +++++++++-- src/layout/index.vue | 20 ++-- src/views/exam/paper/intelligence.vue | 4 src/views/exam/paper/exercise.vue | 24 ++++-- src/utils/request.js | 2 src/views/exam/paper/finish.vue | 2 src/views/exam/paper/job.vue | 2 dist-20240705.zip | 0 src/views/exam/paper/career_interests.vue | 5 - src/views/exam/paper/guide.vue | 56 +++++++++---- src/views/demography/index.vue | 17 ++-- src/views/exam/paper/personality.vue | 11 +- src/views/demography/langOption.vue | 7 - src/views/demography/login.vue | 13 +- 15 files changed, 128 insertions(+), 80 deletions(-) diff --git a/dist-20240704.zip b/dist-20240704.zip new file mode 100644 index 0000000..30ec4be --- /dev/null +++ b/dist-20240704.zip Binary files differ diff --git a/dist-20240705.zip b/dist-20240705.zip new file mode 100644 index 0000000..36c97e8 --- /dev/null +++ b/dist-20240705.zip Binary files differ diff --git a/src/layout/index.vue b/src/layout/index.vue index 8e5475e..0805f89 100644 --- a/src/layout/index.vue +++ b/src/layout/index.vue @@ -49,12 +49,10 @@ } }, created () { - console.log('鐜鍙橀噺锛�') - console.log(process.env) }, watch: { logo: function (val) { - let sessionLogoUrl = sessionStorage.getItem('logoUrl') + let sessionLogoUrl = localStorage.getItem('logoUrl') if (this.productType === 'API_Fan') { this.logoUrl = require('@/assets/logo-apifan.png') } else if (val === 'none') { @@ -66,18 +64,18 @@ } else if (sessionLogoUrl !== null) { this.logoUrl = sessionLogoUrl } - sessionStorage.setItem('logoUrl', this.logoUrl) - sessionStorage.setItem('backgroundColor', this.backgroundColor) + localStorage.setItem('logoUrl', this.logoUrl) + localStorage.setItem('backgroundColor', this.backgroundColor) } }, mounted () { - let sessionLogoUrl = sessionStorage.getItem('logoUrl') - let sessionBackgroundColor = sessionStorage.getItem('backgroundColor') + let sessionLogoUrl = localStorage.getItem('logoUrl') + let sessionBackgroundColor = localStorage.getItem('backgroundColor') if (sessionLogoUrl !== null) { this.logoUrl = sessionLogoUrl this.backgroundColor = sessionBackgroundColor } - sessionStorage.setItem('backgroundColor', this.backgroundColor) + localStorage.setItem('backgroundColor', this.backgroundColor) window.addEventListener('beforeunload', this.handleBeforeUnload) }, beforeDestroy () { @@ -85,7 +83,7 @@ }, methods: { handleBeforeUnload: function () { - sessionStorage.setItem('logoUrl', this.logoUrl) + localStorage.setItem('logoUrl', this.logoUrl) }, logout: function () { window.opener = null @@ -116,7 +114,7 @@ // logoUrl: function () { // console.log('this.logo') // console.log(this.logo) - // let sessionLogoUrl = this.setLogo(sessionStorage.getItem('logoUrl')) + // let sessionLogoUrl = this.setLogo(localStorage.getItem('logoUrl')) // if (this.productType === 'API_Fan') { // return require('@/assets/logo-apifan.png') // } else if (this.logo === 'none') { @@ -124,7 +122,7 @@ // } else if (this.logo === null && sessionLogoUrl !== null) { // return sessionLogoUrl // } else { - // sessionStorage.setItem('logoUrl', this.logo) + // localStorage.setItem('logoUrl', this.logo) // return this.logo // } // }, diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 9bef01a..34247b6 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -1,5 +1,6 @@ import Cookies from 'js-cookie' import userApi from '@/api/user' +import examPaperApi from '@/api/examPaper' // initial state const state = { userName: Cookies.get('studentUserName'), @@ -8,7 +9,9 @@ logo: null, messageCount: 0, memberToken: Cookies.get('memberTocken'), - langType: 'English', + // langType: localStorage.getItem('langType') || 'English', + langType: Cookies.get('langType') || 'English', + formDo: localStorage.getItem('formDo') && JSON.parse(localStorage.getItem('formDo')), langFlag: true, memberId: null } @@ -43,22 +46,48 @@ 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) { + // 濡傛灉涓嶅寘鍚玤uide鍒欓噸鏂拌幏鍙� + 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 - if(paraLangType == 'Chinese'){ - Cookies.set('language', 'zh', { expires: 30 }) - } else { - Cookies.set('language', 'en', { expires: 30 }) - } + 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' - console.log(language) } else { state.langType = 'English' - console.log(language) } }, setLangFlag (state, paraLangFlag) { diff --git a/src/utils/request.js b/src/utils/request.js index b2b4ee7..340de8a 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -2,8 +2,6 @@ import vue from 'vue' const request = function (loadtip, query) { - console.log(query.baseURL) - console.log(query.url) let loading if (loadtip) { loading = vue.prototype.$loading({ diff --git a/src/views/demography/index.vue b/src/views/demography/index.vue index 99fe45b..812865f 100644 --- a/src/views/demography/index.vue +++ b/src/views/demography/index.vue @@ -107,21 +107,18 @@ paramsInfo: {}, parasInfos: [], parasInfoIds: {}, - formDo: {}, + // formDo: {}, submitDisable: false, isStart: this.$route.query.isStart === 'true' } }, created () { - const langType = localStorage.getItem('langType') - if (langType) { + const langType = this.$route.query.langType + if (langType && (langType === 'Chinese' || langType === 'English' || langType === 'Thai')) { this.setLangType(langType) - } else { - localStorage.setItem('langType', this.langType) } }, beforeDestroy () { - localStorage.removeItem('langType') }, beforeUpdate () { }, @@ -152,13 +149,14 @@ demographyApi.submitDemography(_this.memberToken, _this.langType, _this.parasInfos).then(function (result) { if (result && result.code === 1) { examPaperApi.select(_this.memberToken, _this.langType).then(re => { - _this.formDo = re.response + _this.setFormDo(re.response) _this.setDoUrl(re.response.questionTemplateId) if (_this.isStart) { _this.$router.push({ path: '/exam/' + _this.doUrl }) return } - _this.$router.push({ path: '/guide/index', query: { formDo: _this.formDo } }); + // _this.$router.push({ path: '/guide/index', query: { formDo: _this.formDo } }) + _this.$router.push({ path: '/guide/index' }) }).catch(e => { _this.$message.error(_this.$t('noquestionMsg')) }) @@ -205,7 +203,8 @@ }, ...mapMutations('user', ['setMemberTocken']), ...mapMutations('exam', ['setDoUrl']), - ...mapMutations('user', ['setLangType']) + ...mapMutations('user', ['setLangType']), + ...mapMutations('user', ['setFormDo']) }, computed: { ...mapState('user', { memberToken: state => state.memberToken }), diff --git a/src/views/demography/langOption.vue b/src/views/demography/langOption.vue index 25a9f98..63f8457 100644 --- a/src/views/demography/langOption.vue +++ b/src/views/demography/langOption.vue @@ -32,7 +32,7 @@ return { langTypes: [], langSelectValue: this.$route.query.langSelectValue, - fromDo: this.$route.query.fromDo, + // fromDo: this.$route.query.fromDo, langWelcome: this.$t('langWelcomeChinese'), langOption: this.$t('langOptionChinese'), timer: null, @@ -41,7 +41,6 @@ } }, created: function () { - let _this = this window.clearInterval(this.timer) _this.getLangType() @@ -78,7 +77,7 @@ submitLangOption: function () { let _this = this _this.setLangType(_this.langSelectValue) - _this.$router.push({ path: '/demography/fill/index', query: { demographyMenber: _this.memberToken, isStart: false } }) + _this.$router.push({ path: '/demography/fill/index', query: { demographyMenber: _this.memberToken, isStart: false, langType: _this.langSelectValue } }) window.clearInterval(this.timer) }, getLangAndRportTemplateId () { @@ -92,7 +91,6 @@ demographyApi.queryLangList(_this.memberToken, _this.reportTemplateId).then(function (result) { if (result && result.code === 1) { _this.langTypes = result.response - console.log("longTypes", _this.langTypes) } } ).catch(e => { @@ -111,6 +109,7 @@ _this.$message.error(_this.$t('noquestionMsg')) }) } + }, ...mapMutations('user', ['setMemberTocken']), ...mapMutations('user', ['setLangType']), diff --git a/src/views/demography/login.vue b/src/views/demography/login.vue index 38b8c51..f5d909d 100644 --- a/src/views/demography/login.vue +++ b/src/views/demography/login.vue @@ -17,14 +17,13 @@ paramsInfo: {}, parasInfos: [], parasInfoIds: {}, - formDo: {}, + // formDo: {}, reportTemplateType: null, statusInfo: { '2': this.$t('statusInfo2'), '3': this.$t('statusInfo3'), '4': this.$t('statusInfo4') } } }, created () { // 娓呴櫎鏈湴瀛樺偍鐨勮瑷�閫夐」 - localStorage.removeItem('langType') let _this = this _this.getLangType() // 璁板綍鐧婚檰鏃ュ織 @@ -38,7 +37,6 @@ } else { _this.setLogo(re.response.logoUrl) } - console.log(re.response) _this.setProductType(re.response.productType) if (re.response.finish === 1) { _this.$router.push({ path: '/exam/finish', query: { name: '', content: _this.$t('finishMsg'), tokenId: _this.paraMemberToken } }) @@ -67,7 +65,7 @@ if (_this.doUrl === 'career_interests' || _this.doUrl === 'job') { _this.$i18n.locale = 'zh' _this.setLangType('Chinese') - _this.$router.push({ path: '/demography/fill/index', query: { demographyMenber: _this.memberToken, isStart: false } }) + _this.$router.push({ path: '/demography/fill/index', query: { demographyMenber: _this.memberToken, isStart: false, langType: 'Chinese' } }) return } @@ -97,13 +95,15 @@ let answered = re.response.examItemOrderAndContentList if (answered === null) { examPaperApi.select(_this.memberToken, _this.langType).then(re => { - _this.formDo = re.response + _this.setFormDo(re.response) _this.setDoUrl(re.response.questionTemplateId) - _this.$router.push({ path: '/guide/index', query: { formDo: _this.formDo } }) + // _this.$router.push({ path: '/guide/index', query: { formDo: _this.formDo } }) + _this.$router.push({ path: '/guide/index' }) }).catch(e => { _this.$message.error(_this.$t('noquestionMsg')) }) } else { + // 鍚﹀垯娓呴櫎fromDo _this.$router.push({ path: '/exam/' + _this.doUrl }) } }).catch(e => { @@ -119,6 +119,7 @@ ...mapMutations('user', ['setLangType']), ...mapMutations('user', ['getLangType']), ...mapMutations('user', ['setLogo']), + ...mapMutations('user', ['setFormDo']), ...mapMutations('exam', ['setProductType']) }, diff --git a/src/views/exam/paper/career_interests.vue b/src/views/exam/paper/career_interests.vue index 3a79cce..9b8e622 100644 --- a/src/views/exam/paper/career_interests.vue +++ b/src/views/exam/paper/career_interests.vue @@ -108,7 +108,7 @@ _this.ismobile = /ipad|iphone|midp|rv:1.2.3.4|ucweb|android|windows ce|windows mobile/.test(navigator.userAgent.toLowerCase()) // 澶氳瑷� _this.setLangFlag(false) - _this.form = this.$route.query.formDo + _this.form = undefined if (_this.form !== {} && _this.form !== undefined) { _this.formLoading = true _this.remainTime = _this.form.suggestTime * 60 @@ -127,7 +127,6 @@ // 灞曠ず鎸囧璇� if (_this.form.parts[0].signals.length !== 0) { - console.log('棣栭鎻愮ず璇�') _this.showNextGuide(_this.form.parts[0].signals[0], false) } } else { @@ -198,7 +197,6 @@ ).catch(e => { }) } - console.log(' _this.partOrder:'+_this.partOrder) }, mounted () { }, @@ -397,7 +395,6 @@ } this.answer.answerItems[_this.order].readOnly = true let answerSubmit = _this.getSubmitAnswerValue(nowPartOrder) - console.log(answerSubmit) // 宸茬粡绛斿埌浜嗘渶鍚庝竴棰樹簡,涓嶇敤鑷姩璺冲埌涓嬩竴棰� if (this.order + 1 > this.problemLength) { this.submitDisable = false diff --git a/src/views/exam/paper/exercise.vue b/src/views/exam/paper/exercise.vue index 6ac470e..cb533f3 100644 --- a/src/views/exam/paper/exercise.vue +++ b/src/views/exam/paper/exercise.vue @@ -1,6 +1,6 @@ <template> - <div> - <el-container class="app-item-contain"> + <div v-loading.fullscreen.lock="!formDo"> + <el-container class="app-item-contain" v-if="formDo"> <el-main style="padding-top: 3%;"> <el-form :model="form" ref="form" label-width="100%"> <el-row :key="index" v-for="(titleItem,index) in titleItems"> @@ -59,10 +59,10 @@ components: { QuestionEdit }, data () { return { - formDo: this.$route.query.formDo, - memberName: this.$route.query.formDo.memberName, + // formDo: this.$route.query.formDo, + memberName: '', form: { - name: this.$route.query.formDo.name + name: '' }, itemOrder: 1, itemSize: 3, @@ -81,6 +81,7 @@ } }, created: function () { + this.getFormDo() this.initQuestion() }, mounted () { @@ -88,10 +89,15 @@ beforeDestroy () { }, watch: { + 'formDo': function (newVal, oldVal) { + this.initQuestion() + } }, methods: { // 鍒濆鍖栭鐩� initQuestion () { + this.memberName = this.formDo.memberName + this.form.name = this.formDo.name this.titleItems = [ { questionItems: [] @@ -138,15 +144,17 @@ doExam () { let _this = this examPaperApi.updateTestMemberStatus(_this.memberToken).then(re => { - _this.$router.push({ path: '/exam/' + _this.doUrl, query: { formDo: _this.$route.query.formDo } }) + _this.$router.push({ path: '/exam/' + _this.doUrl, query: { formDo: _this.formDo } }) }).catch(re => { _this.$message.error(re.message + ' 鏇存柊鐘舵�佸け璐�') }) - } + }, + ...mapMutations('user', ['getFormDo']) }, computed: { ...mapState('exam', { doUrl: state => state.doUrl }), - ...mapState('user', { memberToken: state => state.memberToken }) + ...mapState('user', { memberToken: state => state.memberToken }), + ...mapState('user', { formDo: state => state.formDo }) } } </script> diff --git a/src/views/exam/paper/finish.vue b/src/views/exam/paper/finish.vue index b485457..b0ff0d9 100644 --- a/src/views/exam/paper/finish.vue +++ b/src/views/exam/paper/finish.vue @@ -44,9 +44,7 @@ _this.downDisable = true // 璁剧疆涓嬭浇璺緞 _this.downUrl = '/api/exam/paper/download?fileName=' + re.msg + '&delete=false' - console.log(re) } else { - console.log(re) } }) diff --git a/src/views/exam/paper/guide.vue b/src/views/exam/paper/guide.vue index 6ab4db6..8b60709 100644 --- a/src/views/exam/paper/guide.vue +++ b/src/views/exam/paper/guide.vue @@ -1,11 +1,12 @@ <template> - <div> - <el-container class="app-item-contain"> + <div v-loading.fullscreen.lock="!formDo"> + <el-container class="app-item-contain" v-if="formDo"> <el-header class="align-center" style="height: 50px;padding: 1%;margin-top: 4%"> <H2 v-html="$t('guide')" v-if="formDo.questionTemplateId !== 'job' || formDo.questionTemplateId !== 'values'"></H2> </el-header> <el-main style="padding-top:0%"> - <div v-html="formDo.guide"></div> + <div v-html="formDo.guide"> + </div> <el-row class="do-align-center"> <el-button v-if="formDo.questionTemplateId !== 'personality'" @click="doExam" type="primary" round>{{$t('startDo')}}</el-button> <el-button v-if="formDo.questionTemplateId === 'job'" @click="openExplain" type="danger" round>{{$t('openJobDesc')}}</el-button> @@ -17,27 +18,27 @@ </template> <script> -import { mapState } from 'vuex' +import { mapState, mapMutations } from 'vuex' import examPaperApi from '@/api/examPaper' export default { data () { return { - formDo: this.$route.query.formDo + // formDo: this.$route.query.formDo, + loading: false } }, created () { + this.getFormDo() }, mounted () { - // 鏇挎崲APIFan鎸囧璇腑鐨勫彉閲� - if (this.formDo.productType === 'API_Fan') { - let guide = this.formDo.guide - guide = guide.replace('%%fullName%%', this.formDo.memberName) - guide = guide.replace('%%company%%', this.formDo.reportCompany) - this.formDo.guide = guide - } + // this.swapGuide() }, beforeDestroy () { - window.clearInterval(this.timer) + }, + watch: { + 'formDo': function (newVal, oldVal) { + this.loading = false + } }, methods: { doExam: function () { @@ -45,9 +46,11 @@ examPaperApi.updateTestMemberStatus(_this.memberToken).then(re => { // LAQ鐗规畩澶勭悊 if (_this.formDo.name.indexOf('LAQ') !== -1) { - _this.$router.push({ path: '/exam/' + _this.formDo.questionTemplateId, query: { formDo: _this.$route.query.formDo } }) + // _this.$router.push({ path: '/exam/' + _this.formDo.questionTemplateId, query: { formDo: _this.formDo } }) + _this.$router.push({ path: '/exam/' + _this.formDo.questionTemplateId }) } else { - _this.$router.push({ path: '/exam/' + _this.doUrl, query: { formDo: _this.$route.query.formDo } }) + // _this.$router.push({ path: '/exam/' + _this.doUrl, query: { formDo: _this.formDo } }) + _this.$router.push({ path: '/exam/' + _this.doUrl }) } }).catch(re => { _this.$message.error(re.message + ' 鏇存柊鐘舵�佸け璐�') @@ -61,12 +64,29 @@ // 鎵撳紑缁冧範椤甸潰 openExercise: function () { let _this = this - _this.$router.push({ path: '/exam/exercise', query: { formDo: _this.$route.query.formDo } }) - } + // _this.$router.push({ path: '/exam/exercise', query: { formDo: _this.formDo } }) + _this.$router.push({ path: '/exam/exercise' }) + }, + + // 鏇挎崲guide鐨勫�� + swapGuide: function () { + // 鏇挎崲APIFan鎸囧璇腑鐨勫彉閲� + if (this.formDo.productType === 'API_Fan') { + let guide = this.formDo.guide + guide = guide.replace('%%fullName%%', this.formDo.memberName) + guide = guide.replace('%%company%%', this.formDo.reportCompany) + this.formDo.guide = guide + } + }, + + ...mapMutations('user', ['getLangType']), + ...mapMutations('user', ['getFormDo']) }, computed: { ...mapState('exam', { doUrl: state => state.doUrl }), - ...mapState('user', { memberToken: state => state.memberToken }) + ...mapState('user', { memberToken: state => state.memberToken }), + ...mapState('user', { langType: state => state.langType }), + ...mapState('user', { formDo: state => state.formDo }) } } </script> diff --git a/src/views/exam/paper/intelligence.vue b/src/views/exam/paper/intelligence.vue index 0ec0938..478a1ad 100644 --- a/src/views/exam/paper/intelligence.vue +++ b/src/views/exam/paper/intelligence.vue @@ -413,10 +413,10 @@ }, nextQuestion: function (nowPartOrder) { let _this = this - let num = ++_this.order + let num = _this.order + 1 // 璺冲埌娌℃湁绛旂殑棰樼洰鐨勬 while (_this.isContentNotEmpty(num) && num !== _this.answer.answerItems.length - 1) { - num = ++_this.order + num = _this.order + 1 this.getEmptySubjct(num) } this.determineWhetherIntelligenceTitle() diff --git a/src/views/exam/paper/job.vue b/src/views/exam/paper/job.vue index 98b0fe8..2f13c62 100644 --- a/src/views/exam/paper/job.vue +++ b/src/views/exam/paper/job.vue @@ -105,7 +105,7 @@ let _this = this // 澶氳瑷� _this.setLangFlag(false) - _this.form = this.$route.query.formDo + _this.form = undefined if (_this.form !== {} && _this.form !== undefined) { _this.formLoading = true _this.remainTime = _this.form.suggestTime * 60 diff --git a/src/views/exam/paper/personality.vue b/src/views/exam/paper/personality.vue index 9c28327..a2d8e4a 100644 --- a/src/views/exam/paper/personality.vue +++ b/src/views/exam/paper/personality.vue @@ -103,12 +103,13 @@ } }, created: function () { + // this.getFormDo() let _this = this _this.ismobile = /ipad|iphone|midp|rv:1.2.3.4|ucweb|android|windows ce|windows mobile/.test(navigator.userAgent.toLowerCase()) // 澶氳瑷� _this.setLangFlag(false) - _this.form = this.$route.query.formDo - if (_this.form !== {} && _this.form !== undefined) { + _this.form = undefined + if (_this.form && _this.form !== {} && _this.form !== undefined) { _this.formLoading = true _this.remainTime = _this.form.suggestTime * 60 _this.problemLength = _this.form.titleItems[0].questionItems.length - 1 @@ -187,7 +188,6 @@ ).catch(e => { }) } - }, mounted () { }, @@ -510,7 +510,6 @@ if (re.code === 1) { // 鐗规畩澶勭悊 LAQ娴嬭瘯鍖� MAQ+CAQ if (_this.form.name.indexOf('LAQ') !== -1) { - console.log('绛斿畬棰�,鐪嬬湅瑕佷笉瑕佸幓CAQ1') examPaperApi.select(_this.memberToken, _this.langType).then(re => { _this.form = re.response _this.$router.push({ path: '/guide/index', query: { formDo: _this.form } }) @@ -578,7 +577,8 @@ return _this.form.titleItems[0].questionItems[_this.order].partOrder !== _this.form.titleItems[0].questionItems[_this.order - 1].partOrder }, ...mapMutations('user', ['setLangType']), - ...mapMutations('user', ['setLangFlag']) + ...mapMutations('user', ['setLangFlag']), + ...mapMutations('user', ['getFormDo']) }, computed: { ...mapGetters('enumItem', ['enumFormat']), @@ -586,6 +586,7 @@ ...mapState('user', { memberToken: state => state.memberToken }), ...mapState('user', { langType: state => state.langType }), ...mapState('user', { langFlag: state => state.langFlag }), + ...mapState('user', { formDo: state => state.formDo }), ...mapState('exam', { doUrl: state => state.doUrl }) } } -- Gitblit v1.9.1