import request from "@/utils/request"; import { getDemoAnswerKey, getStudentDemoSession, isStudentDemo } from "@/utils/studentDemo"; const newProductSurveyStepOneAnswers = { "selling-point-1": "核心层", "selling-point-2": "有形层", "selling-point-3": "核心层", "selling-point-4": "核心层", "selling-point-5": "有形层", "selling-point-6": "有形层", "selling-point-7": "有形层", "selling-point-8": "延伸层", "selling-point-9": "延伸层", "selling-point-10": "延伸层", "selling-point-11": "有形层", }; function demoResult(taskKey) { try { return JSON.parse(sessionStorage.getItem(getDemoAnswerKey(taskKey)) || "null"); } catch (error) { return null; } } export function getStudentTrainingAnswer(taskKey, params) { if (isStudentDemo()) return Promise.resolve({ code: 200, data: demoResult(taskKey) }); return request({ url: `/api/student-training-answers/${taskKey}`, method: "get", params, }); } export function saveStudentTrainingAnswer(taskKey, data) { if (isStudentDemo()) { const answer = { ...data, teachingClassId: getStudentDemoSession()?.userInfo?.demoTeachingClassId }; sessionStorage.setItem(getDemoAnswerKey(taskKey), JSON.stringify(answer)); return Promise.resolve({ code: 200, data: answer }); } return request({ url: `/api/student-training-answers/${taskKey}`, method: "post", data, headers: { repeatSubmit: false }, }); } export function deleteStudentTrainingAnswer(taskKey, params) { if (isStudentDemo()) { sessionStorage.removeItem(getDemoAnswerKey(taskKey)); return Promise.resolve({ code: 200 }); } return request({ url: `/api/student-training-answers/${taskKey}`, method: "delete", params, }); } export function uploadStudentTrainingFile(data) { if (isStudentDemo()) return Promise.reject(new Error("演示模式不上传文件")); return request({ url: "/common/upload", method: "post", data, headers: { "Content-Type": "multipart/form-data", repeatSubmit: false, }, }); } export function checkNewProductSurveyStepOne(items) { if (isStudentDemo()) { const results = Array.isArray(items) ? items.map((item) => { const correct = newProductSurveyStepOneAnswers[item?.id] === item?.category; return { id: item?.id, correct, message: correct ? "分类正确" : "分类有误,请重新选择", }; }) : []; const correctCount = results.filter((item) => item.correct).length; return Promise.resolve({ code: 200, data: { items: results, correctCount, totalCount: results.length, allCorrect: results.length === Object.keys(newProductSurveyStepOneAnswers).length && correctCount === results.length, }, }); } return request({ url: "/api/student-training-answers/new-product-survey/step-1/check", method: "post", data: { items }, headers: { repeatSubmit: false }, }); } function validateNewProductSurveyStepTwoDemo(form) { const value = form || {}; const images = Array.isArray(value.images) ? value.images : []; if (!['京东', '天猫', '抖音电商'].includes(String(value.platform || '').trim())) { throw new Error('请选择调查平台'); } if (!String(value.scene || '').trim()) { throw new Error('请选择调查场景'); } if (value.scene === '其他场景' && !String(value.customScene || '').trim()) { throw new Error('请填写自定义调查场景'); } if (!String(value.keyword || '').trim()) { throw new Error('请填写搜索关键词'); } if (!String(value.productName || '').trim()) { throw new Error('请填写产品名称'); } if (images.length < 1 || images.length > 5 || images.some((image) => !String(image?.url || '').trim())) { throw new Error('请上传 1 至 5 张产品图片'); } return { valid: true, message: '校验通过' }; } export function checkNewProductSurveyStepTwo(form) { if (isStudentDemo()) { try { return Promise.resolve({ code: 200, data: validateNewProductSurveyStepTwoDemo(form) }); } catch (error) { return Promise.reject(error); } } return request({ url: '/api/student-training-answers/new-product-survey/step-2/validate', method: 'post', data: { ...form, imageUrls: (form?.images || []).map((image) => image?.url) }, headers: { repeatSubmit: false }, }); }