Accept Merge Request #21604: (uat -> master)

Merge Request: answer_session_id

Created By: @赵英杰-深圳维码
Accepted By: @赵英杰-深圳维码
URL: https://yldc.coding.yili.com/p/ylst/d/ylst-survey-web/git/merge/21604?initial=true
This commit is contained in:
赵英杰-深圳维码
2024-05-17 11:33:07 +08:00
committed by Coding
4 changed files with 44 additions and 3 deletions

View File

@@ -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'

View File

@@ -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: {},
}
}

View File

@@ -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;
}
}

View File

@@ -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({