diff --git a/src/store/constance/constance.common.js b/src/store/constance/constance.common.js index d97fadc5..1abde0ed 100644 --- a/src/store/constance/constance.common.js +++ b/src/store/constance/constance.common.js @@ -38,3 +38,4 @@ export const DELETET_HEME_INFO_HEADIMGURL = 'DELETET_HEME_INFO_HEADIMGURL' export const GUIDE_SELECT_NEED = 'GUIDE_SELECT_NEED' export const GUIDE_OTHER_NEED = 'GUIDE_OTHER_NEED' +export const ANSWER_SESSION_ID = 'ANSWER_SESSION_ID' diff --git a/src/store/modules/answer.js b/src/store/modules/answer.js index c9191227..a35e65fa 100644 --- a/src/store/modules/answer.js +++ b/src/store/modules/answer.js @@ -2,6 +2,7 @@ import { GUIDE_OTHER_NEED, GUIDE_SELECT_NEED, + ANSWER_SESSION_ID, } from "../constance/constance.common"; /** @@ -16,18 +17,21 @@ export default { guideSelectNeed: true, guideOtherNeed: true }, - + getters: {}, mutations: { - + [GUIDE_OTHER_NEED](state) { state.guideOtherNeed = false; }, [GUIDE_SELECT_NEED](state) { state.guideSelectNeed = false; }, + [ANSWER_SESSION_ID](state, sessionid) { + state.answerSessionId= sessionid; + }, }, actions: {}, -} \ No newline at end of file +} diff --git a/src/views/Answer/api.js b/src/views/Answer/api.js index e74a4a1f..84256ad2 100644 --- a/src/views/Answer/api.js +++ b/src/views/Answer/api.js @@ -6,6 +6,10 @@ export default class AnswerApi { method: "GET", url: `/answer/surveys/${params.id}`, params: {...params.data,time:Date.now()}, + headers: { + "Cache-Control": "no-cache", + "answer-session-id": AnswerApi.getLocalStorageWithExpiration('answer-session-id'), + }, }); } @@ -24,6 +28,9 @@ export default class AnswerApi { method: "POST", url: `/answer/surveys/${params.id}`, data: params.data, + headers: { + "answer-session-id": AnswerApi.getLocalStorageWithExpiration('answer-session-id'), + }, }); } @@ -42,6 +49,9 @@ export default class AnswerApi { method: "PATCH", url: `/answer/surveys/${params.id}/password`, data: params.data, + headers: { + "answer-session-id": AnswerApi.getLocalStorageWithExpiration('answer-session-id'),//store.state.answer.answerSessionId, + }, }); } @@ -54,5 +64,17 @@ export default class AnswerApi { url: `/console/survey_word_export/${sn}?${params}`, }) } + + // 获取localStorage数据,并检查过期时间 + static getLocalStorageWithExpiration(key) { + const item = JSON.parse(localStorage.getItem(key)); + + if (!item || new Date().getTime() > item.expirationDate) { + // 数据过期,删除数据 + localStorage.removeItem(key); + return null; + } + return item.value; + } } diff --git a/src/views/Answer/components/js/answer.js b/src/views/Answer/components/js/answer.js index 44cb8c98..4123b7fc 100644 --- a/src/views/Answer/components/js/answer.js +++ b/src/views/Answer/components/js/answer.js @@ -8,6 +8,7 @@ import Password from "../../questions/Password/Index.vue"; import LangTranslate from "../LangTranslate.vue"; import { getLanguage } from "../../components/js/language"; +import {useStore} from "vuex"; export default defineComponent({ components: { QuestionsPc, QuestionsMob, PfeButton, QLast, Password, LangTranslate }, @@ -19,6 +20,7 @@ export default defineComponent({ }, }, setup() { + const store = useStore(); const loading = ref(true); const visible = ref(false); const l = ref({}); @@ -77,6 +79,18 @@ export default defineComponent({ }, }); + //将作答session_id存入store + if (data.answer) { + // console.log("sss",data.answer.session_id); + store.commit('answer/ANSWER_SESSION_ID', data.answer.session_id); + const expirationDate = new Date().getTime() + 24 * 3600000; //有效期设置24小时 + const value = data.answer.session_id; + const oldSessionId = JSON.parse(localStorage.getItem('answer-session-id') || '{}') + if (!oldSessionId.value || oldSessionId.value === 'null' || oldSessionId.expirationDate < Date.now()) { + localStorage.setItem("answer-session-id", JSON.stringify({ value, expirationDate })); + } + } + // 专门为 正式环境中 这两个问卷写的功能,talr 用于测试环境进行测试 if (data.action?.code === 20017 && (['8a0pqWaB', 'w4oR35Ak'].includes(proxy.$route.query.sn) || proxy.$route.query['talr'])) { proxy.$router.push({