"use strict"; const common_vendor = require("../../common/vendor.js"); const api_user = require("../../api/user.js"); const common_config = require("../../common/config.js"); const common_assets = require("../../common/assets.js"); const _sfc_main = { data() { return { cameraContext: null, devicePosition: "front", interviewStarted: true, showEndModal: false, currentQuestionIndex: 0, currentStep: 1, stepTexts: ["测试准备", "回答问题", "测试结束"], progressWidth: 50, remainingTime: "00:27", selectedOption: null, selectedOptions: [], showResult: false, isAnswerCorrect: false, questions: [], // 改为空数组,将通过API获取 interviewId: null, // 存储当前面试ID useVideo: false, timerInterval: null, score: 0, totalQuestions: 0, interviewCompleted: false, digitalHumanUrl: "", // 数字人URL loading: true, // 添加加载状态 loadError: false, // 添加加载错误状态 errorMessage: "", // 添加错误消息 answers: [], // 存储用户的所有答案 currentQuestionDetail: null, // 当前题目详情 isSubmitting: false, // 是否正在提交答案 openQuestionAnswer: "", // 存储开放问题的答案 currentAnswer: null, // 存储当前答案以便提交 questionStartTime: null, // 存储问题开始时间 mode: "normal", // 相机模式 currentScrollId: "question-0", // 当前滚动到的问题ID questionGroups: [], // 存储分组后的题目 currentGroupIndex: 0, // 当前显示的组索引 showContinueButton: false, // 是否显示继续按钮 scrollToBottom: false, // 新增:是否需要滚动到底部 scrollTop: 0, // 控制 scroll-view 的滚动位置 _clickTimer: null, _isClicking: false, showPromptModal: false, // 添加新的数据属性 personDetectionSocket: null, // WebSocket对象 personDetectionInterval: null, // 定时器对象 showCameraWarning: false, // 添加新的数据属性 showPageWarning: false // 添加新的数据属性 }; }, computed: { currentQuestion() { console.log(this.questions[this.currentQuestionIndex]); return this.questions[this.currentQuestionIndex]; } }, onLoad(options) { if (options && options.id) { this.interviewId = options.id; this.fetchInterviewData(); } else { this.fetchInterviewList(); } }, onReady() { this.cameraContext = common_vendor.index.createCameraContext(); if (this.useVideo) { this.aiVideoContext = common_vendor.index.createVideoContext("aiInterviewer"); } this.initDigitalHuman(); }, mounted() { common_vendor.index.onUserCaptureScreen(() => { console.log("User captured screen"); this.screenCaptureCount++; if (this.screenCaptureCount === 1) { common_vendor.index.showModal({ title: "Warning", content: "检测到屏幕截图。如果你再次捕捉屏幕,你的面试将无效.", showCancel: false, confirmText: "OK" }); } else if (this.screenCaptureCount >= 2) { common_vendor.index.showModal({ title: "Interview Invalid", content: "由于多次屏幕截图,您的面试已无效。请联系招聘人员寻求帮助.", showCancel: false, confirmText: "OK", success: () => { this.invalidateInterview(); } }); } }); }, beforeDestroy() { this.cleanupPersonDetectionWebSocket(); }, methods: { initPersonDetectionWebSocket() { if (this.personDetectionSocket) { this.cleanupPersonDetectionWebSocket(); } try { this.personDetectionSocket = common_vendor.index.connectSocket({ url: `${common_config.personDetectionWsUrl}/ws/interview-room/room_${common_vendor.index.getStorageSync("appId")}/${common_vendor.index.getStorageSync("appId")}/`, success: () => { console.log("WebSocket connection initiated"); }, fail: (error) => { console.error("WebSocket connection failed:", error); } }); this.personDetectionSocket.onOpen(() => { console.log("WebSocket connection opened"); this.startPersonDetectionInterval(); }); this.personDetectionSocket.onError((error) => { console.error("WebSocket error:", error); this.cleanupPersonDetectionWebSocket(); }); this.personDetectionSocket.onClose(() => { console.log("WebSocket connection closed"); this.cleanupPersonDetectionWebSocket(); }); this.personDetectionSocket.onMessage((res2) => { try { const data = JSON.parse(res2.data); console.log(data); if (data.type === "person_detection_result") { this.handlePersonDetectionResult(data); } } catch (error) { console.error("Error parsing WebSocket message:", error); } }); } catch (error) { console.error("Error initializing WebSocket:", error); this.cleanupPersonDetectionWebSocket(); } }, startPersonDetectionInterval() { if (this.personDetectionInterval) { clearInterval(this.personDetectionInterval); } this.personDetectionInterval = setInterval(() => { if (this.personDetectionSocket && this.cameraContext) { this.cameraContext.takePhoto({ quality: "low", success: (res2) => { const tempFilePath = res2.tempImagePath; common_vendor.index.getFileSystemManager().readFile({ filePath: tempFilePath, encoding: "base64", success: (res3) => { const base64Image = res3.data; this.personDetectionSocket.send({ data: JSON.stringify({ type: "person_detection", image_data: base64Image }) }); }, fail: (error) => { console.error("Error reading image file:", error); } }); }, fail: (error) => { console.error("Error taking photo:", error); } }); } }, 3e3); }, cleanupPersonDetectionWebSocket() { if (this.personDetectionInterval) { clearInterval(this.personDetectionInterval); this.personDetectionInterval = null; } if (this.personDetectionSocket) { try { this.personDetectionSocket.close(); } catch (error) { console.error("Error closing WebSocket:", error); } this.personDetectionSocket = null; } }, handlePersonDetectionResult(data) { console.log(data.data.detection.has_person); console.log(data.data.identity.status); if (data.data.identity.status !== "identity_verified") { this.showPageWarning = true; common_vendor.index.showToast({ title: data.data.identity.message, icon: "none", duration: 3e3 }); common_vendor.index.vibrateLong({ success: function() { console.log("Vibration successful"); }, fail: function(err) { console.error("Vibration failed:", err); } }); setTimeout(() => { this.showPageWarning = false; }, 3e3); } }, // 添加作废面试的方法 invalidateInterview() { if (this.isRecording) { this.stopRecordingAnswer(); } if (this.recordingTimer) { clearInterval(this.recordingTimer); } this.isRecording = false; this.showStopRecordingButton = false; this.showStartRecordingButton = false; setTimeout(() => { common_vendor.index.switchTab({ url: "/pages/index/index" }); }, 500); const systemInfo = common_vendor.index.getSystemInfoSync(); const isMiniProgram = systemInfo.uniPlatform && systemInfo.uniPlatform.startsWith("mp-"); if (isMiniProgram) { this.initPersonDetectionWebSocket(); } }, // 获取面试列表 async fetchInterviewList() { try { this.loading = true; const res2 = await api_user.getQuestions({ position_id: JSON.parse(common_vendor.index.getStorageSync("selectedJob")).id, page: 1, limit: 999, tenant_id: JSON.parse(common_vendor.index.getStorageSync("userInfo")).tenant_id || 1 }); console.log(res2.items); this.interviewId = res2.items; this.fetchInterviewData(res2.items); } catch (error) { console.error("获取面试列表失败:", error); this.handleLoadError("获取面试列表失败"); } }, // 获取面试详情数据 async fetchInterviewData(data) { try { this.loading = true; if (data && Array.isArray(data)) { const formattedQuestions = data.filter((q) => q.question_form !== 0).map((q, index) => ({ id: q.id || index + 1, text: q.question || "未知问题", options: q.options || [], correctAnswer: q.correctAnswer || 0, isImportant: q.is_system || false, explanation: q.explanation || "", questionType: q.question_form, questionTypeName: q.question_form_name || "单选题", is_required_correct: q.is_required_correct || false, correctAnswers: q.correct_answers || [], difficulty: q.difficulty || 1, difficultyName: q.difficulty_name || "初级", imageUrl: q.question_image_url || "", // 添加图片URL字段 category: q.category || 0 // 添加 category 字段 })); this.processQuestionGroups(formattedQuestions); } else { this.processInterviewData(res); } console.log(this.questions); this.totalQuestions = this.questions.length; } catch (error) { console.error("获取面试详情失败:", error); this.handleLoadError("获取面试详情失败"); } finally { this.loading = false; } }, // 处理面试数据 processInterviewData(data) { this.questions = []; if (data && data.question_form !== 0) { const formattedQuestion = { id: data.id || 1, text: data.question || "未知问题", options: data.options || [], correctAnswer: data.correctAnswer || 0, isImportant: data.is_system || false, explanation: data.explanation || "", questionType: data.question_form, // 1-单选题,2-多选题,3-看图答题 questionTypeName: data.question_form_name || "单选题", is_required_correct: data.is_required_correct || false, correctAnswers: data.correct_answers || [], difficulty: data.difficulty || 1, difficultyName: data.difficulty_name || "初级", imageUrl: data.question_image_url || "" // 添加图片URL字段 }; this.questions.push(formattedQuestion); this.totalQuestions = this.questions.length; } else { this.handleLoadError("没有可用的选择题"); } }, // 处理加载错误 handleLoadError(message) { this.loadError = true; this.loading = false; this.errorMessage = message || "加载失败"; common_vendor.index.showToast({ title: message || "加载失败", icon: "none", duration: 2e3 }); }, startTimer() { if (this.questions.length === 0) return; this.questionStartTime = /* @__PURE__ */ new Date(); let seconds = 60; this.remainingTime = `01:00`; this.timerInterval = setInterval(() => { seconds--; if (seconds <= 0) { clearInterval(this.timerInterval); if (!this.showResult) { this.checkAnswer(); setTimeout(() => { if (this.currentQuestionIndex < this.questions.length - 1) { this.goToNextQuestion(); } else { common_vendor.index.navigateTo({ url: "/pages/interview-question/interview-question" }); } }, 1500); } } const min = Math.floor(seconds / 60).toString().padStart(2, "0"); const sec = (seconds % 60).toString().padStart(2, "0"); this.remainingTime = `${min}:${sec}`; }, 1e3); }, resetTimer() { clearInterval(this.timerInterval); }, selectOption(index) { if (this.currentQuestionIndex === this.questions.length - 1 && this.showContinueButton) { common_vendor.index.showToast({ title: "该题目已完成,请继续下一部分", icon: "none", duration: 2e3 }); return; } if (this.showResult) return; console.log("selectOption", index); if (this.currentQuestion.questionType === 2) { const optionIndex = this.selectedOptions.indexOf(index); if (optionIndex > -1) { this.selectedOptions.splice(optionIndex, 1); } else { this.selectedOptions.push(index); } } else if (this.currentQuestion.questionType === 1 || this.currentQuestion.questionType === 3 || this.currentQuestion.questionType === 4) { this.selectedOption = index; this.playAiSpeaking(); setTimeout(() => { this.checkAnswer(); this.saveAnswer(); this.submitCurrentAnswer().then(() => { setTimeout(() => { this.goToNextQuestion(); }, 800); }).catch((error) => { console.error("提交答案失败:", error); setTimeout(() => { this.goToNextQuestion(); }, 1e3); }); }, 500); } else { this.selectedOption = index; const answer = { questionId: this.currentQuestion.id, questionType: this.currentQuestion.questionType, answer: index }; const existingIndex = this.answers.findIndex((a) => a.questionId === answer.questionId); if (existingIndex > -1) { this.answers[existingIndex] = answer; } else { this.answers.push(answer); } this.playAiSpeaking(); setTimeout(() => { this.checkAnswer(); this.saveAnswer(); this.submitCurrentAnswer().then(() => { setTimeout(() => { this.goToNextQuestion(); }, 800); }).catch((error) => { console.error("提交答案失败:", error); setTimeout(() => { this.goToNextQuestion(); }, 1e3); }); }, 500); } }, checkAnswer() { if (this.showResult) return; clearInterval(this.timerInterval); if (!this.currentQuestion) { console.error("当前问题不存在"); return; } if (this.currentQuestion.questionType === 0) { this.isAnswerCorrect = true; } else if (this.currentQuestion.questionType === 2) { const sortedSelected = [...this.selectedOptions].sort(); const sortedCorrect = [...this.currentQuestion.correctAnswers].sort(); if (sortedSelected.length !== sortedCorrect.length) { this.isAnswerCorrect = false; } else { this.isAnswerCorrect = sortedSelected.every((value, index) => value === sortedCorrect[index]); } } else { this.isAnswerCorrect = this.selectedOption === this.currentQuestion.correctAnswer; } this.showResult = true; this.saveAnswer(); if (this.currentQuestionIndex === this.questions.length - 1) { this.$nextTick(() => { this.$forceUpdate(); }); } }, // 修改 nextQuestion 方法,只处理多选题 nextQuestion() { if (this.currentQuestion.questionType !== 2) return; this.checkAnswer(); this.saveAnswer(); this.submitCurrentAnswer().then(() => { setTimeout(() => { if (this.currentQuestionIndex >= this.questions.length - 1) { if (this.currentGroupIndex < this.questionGroups.length - 1) { this.showContinueButton = true; setTimeout(() => { this.scrollTop = 0; this.$nextTick(() => { setTimeout(() => { this.scrollTop = 1e4; }, 100); }); }, 200); } else { common_vendor.index.navigateTo({ url: "/pages/interview-question/interview-question" }); } } else { this.goToNextQuestion(); } }, 500); }).catch((error) => { console.error("提交答案失败:", error); setTimeout(() => { if (this.currentQuestionIndex >= this.questions.length - 1) { if (this.currentGroupIndex < this.questionGroups.length - 1) { this.showContinueButton = true; setTimeout(() => { this.scrollTop = 1e4; }, 200); } else { common_vendor.index.navigateTo({ url: "/pages/interview-question/interview-question" }); } } else { this.goToNextQuestion(); } }, 1e3); }); }, toggleSettings() { common_vendor.index.showToast({ title: "设置功能开发中", icon: "none" }); }, back(target) { if (this.timerInterval) { clearInterval(this.timerInterval); } if (target) { common_vendor.index.navigateTo({ url: target }); return; } }, error(e) { console.error(e.detail); common_vendor.index.showToast({ title: "相机启动失败,请检查权限设置", icon: "none" }); }, playAiSpeaking() { if (this.useVideo && this.aiVideoContext) { this.aiVideoContext.play(); } if (this.digitalHumanUrl) { const speakText = this.currentQuestion ? this.currentQuestion.text : ""; this.interactWithDigitalHuman(speakText); } }, pauseAiSpeaking() { if (this.useVideo && this.aiVideoContext) { this.aiVideoContext.pause(); } }, // 修改 restartTest 方法,添加可选的跳转目标 restartTest(target) { this.currentQuestionIndex = 0; this.score = 0; this.showEndModal = false; this.showResult = false; this.selectedOption = null; this.selectedOptions = []; this.resetTimer(); if (target) { common_vendor.index.navigateTo({ url: target }); } }, // 在methods中添加测试方法 testEndScreen() { this.interviewCompleted = true; this.showEndModal = false; }, // 初始化数字人 initDigitalHuman() { this.digitalHumanUrl = ""; }, // 与数字人交互的方法 interactWithDigitalHuman(message) { const webview = this.$mp.page.$getAppWebview().children()[0]; if (webview) { webview.evalJS(`receiveMessage('${message}')`); } }, // 添加 navigateToInterview 方法 navigateToInterview() { this.showEndModal = false; common_vendor.index.navigateTo({ url: "/pages/interview/interview", success: () => { console.log("成功跳转到interview页面"); }, fail: (err) => { console.error("跳转失败:", err); common_vendor.index.showToast({ title: "跳转失败,请手动返回首页", icon: "none" }); } }); }, // 添加 handleCameraError 方法 handleCameraError(e) { console.error("相机错误:", e.detail); common_vendor.index.showToast({ title: "相机启动失败,请检查权限设置", icon: "none" }); }, // 修改 isOptionSelected 方法 isOptionSelected(question, qIndex, optionIndex) { const answer = this.answers.find((a) => a.questionId === question.id); if (qIndex === this.currentQuestionIndex) { if (question.questionType === 1 || question.questionType === 3 || question.questionType === 4) { return this.selectedOption === optionIndex; } else if (question.questionType === 2) { return this.selectedOptions.includes(optionIndex); } } else if (answer) { if (question.questionType === 1 || question.questionType === 3 || question.questionType === 4) { return answer.answer === optionIndex; } else if (question.questionType === 2 && Array.isArray(answer.answer)) { return answer.answer.includes(optionIndex); } } return false; }, // 修改 handleOptionClick 方法 handleOptionClick(qIndex, index) { if (qIndex < this.currentQuestionIndex) { common_vendor.index.showToast({ title: "该题目已完成,无法修改", icon: "none", duration: 2e3 }); return; } if (qIndex === this.questions.length - 1 && this.showContinueButton) { common_vendor.index.showToast({ title: "该题目已完成,请继续下一部分", icon: "none", duration: 2e3 }); return; } if (qIndex > this.currentQuestionIndex) { const firstUnansweredIndex = this.currentQuestionIndex; common_vendor.index.showToast({ title: `请先完成第 ${firstUnansweredIndex + 1} 题`, icon: "none", duration: 2e3 }); this.currentScrollId = "question-" + firstUnansweredIndex; return; } if (this._isClicking) { return; } this._isClicking = true; if (this._clickTimer) { clearTimeout(this._clickTimer); } try { this.selectOption(index); this._clickTimer = setTimeout(() => { this._isClicking = false; }, 1e3); } catch (error) { console.error("处理选项点击失败:", error); common_vendor.index.showToast({ title: "操作失败,请重试", icon: "none" }); this._isClicking = false; } }, // 处理题目分组 processQuestionGroups(questions) { const group1 = []; const group2 = []; questions.forEach((q) => { if (q.category === 5) { group1.push(q); } else { group2.push(q); } }); this.questionGroups = [group2, group1].filter((group) => group.length > 0); this.questions = this.questionGroups[0] || []; }, // 处理继续按钮点击 handleContinue() { if (this.currentGroupIndex < this.questionGroups.length - 1) { if (this.currentGroupIndex === 0) { this.showPromptModal = true; } else { this.proceedToNextGroup(); } } else { common_vendor.index.navigateTo({ url: "/pages/interview-question/interview-question" }); } }, // 添加新的方法处理弹窗确认 handlePromptConfirm() { this.showPromptModal = false; this.proceedToNextGroup(); }, // 添加新的方法处理组切换逻辑 proceedToNextGroup() { this.currentGroupIndex++; this.questions = this.questionGroups[this.currentGroupIndex]; this.currentQuestionIndex = 0; this.showContinueButton = false; this.currentScrollId = "question-0"; this.scrollTop = 0; this.selectedOption = null; this.selectedOptions = []; this.showResult = false; }, // 保存当前题目的答案 saveAnswer() { let answer; if (this.currentQuestion.questionType === 0) { answer = { questionId: this.currentQuestion.id, questionType: this.currentQuestion.questionType, answer: this.openQuestionAnswer, answerDuration: this.getAnswerDuration() // 添加答题时长 }; } else if (this.currentQuestion.questionType === 1 || this.currentQuestion.questionType === 3 || this.currentQuestion.questionType === 4) { answer = { questionId: this.currentQuestion.id, questionType: this.currentQuestion.questionType, answer: this.selectedOption, answerDuration: this.getAnswerDuration() // 添加答题时长 }; } else { answer = { questionId: this.currentQuestion.id, questionType: this.currentQuestion.questionType, answer: this.selectedOptions, answerDuration: this.getAnswerDuration() // 添加答题时长 }; } const existingIndex = this.answers.findIndex((a) => a.questionId === answer.questionId); if (existingIndex > -1) { this.answers[existingIndex] = answer; } else { this.answers.push(answer); } this.currentAnswer = answer; console.log("已保存答案:", this.answers); }, // 获取答题时长(秒) getAnswerDuration() { const remainingTimeArr = this.remainingTime.split(":"); const remainingSeconds = parseInt(remainingTimeArr[0]) * 60 + parseInt(remainingTimeArr[1]); return 30 - remainingSeconds; }, // 提交当前答案 async submitCurrentAnswer() { if (!this.currentAnswer || this.isSubmitting) return; try { this.isSubmitting = true; common_vendor.index.showLoading({ title: "正在提交答案..." }); let answerContent = ""; let answerOptions = []; if (this.currentAnswer.questionType === 0) { answerContent = this.currentAnswer.answer; answerOptions = []; } else if (this.currentAnswer.questionType === 1 || this.currentAnswer.questionType === 3 || this.currentAnswer.questionType === 4) { const selectedIndex = this.currentAnswer.answer; const selectedOption = this.currentQuestion.options[selectedIndex]; console.log("selectedOption", selectedOption); const optionId = selectedOption.id ? selectedOption.id : selectedIndex; answerContent = optionId.toString(); answerOptions = [optionId]; } else if (this.currentAnswer.questionType === 2) { const selectedIndices = this.currentAnswer.answer; const selectedOptionIds = selectedIndices.map((index) => { const option = this.currentQuestion.options[index]; return option.id ? option.id : index; }); answerOptions = selectedOptionIds; } const submitData = { position_id: JSON.parse(common_vendor.index.getStorageSync("selectedJob")).id, applicant_id: JSON.parse(common_vendor.index.getStorageSync("userInfo")).id, job_position_question_id: this.currentAnswer.questionId, // answer_content: answerContent, answer_options: answerOptions, answer_duration: this.currentAnswer.answerDuration || 0, tenant_id: JSON.parse(common_vendor.index.getStorageSync("userInfo")).tenant_id || 1 }; console.log("提交数据:", submitData); const res2 = await this.$http.post(`${common_config.apiBaseUrl}/api/job/submit_answer`, submitData); console.log("提交答案响应:", res2); return res2; } catch (error) { console.error("提交答案失败:", error); common_vendor.index.showToast({ title: "提交答案失败,请重试", icon: "none" }); throw error; } finally { common_vendor.index.hideLoading(); this.isSubmitting = false; } }, // 修改 goToNextQuestion 方法 async goToNextQuestion() { if (this.currentQuestionIndex >= this.questions.length - 1) { this.showContinueButton = true; setTimeout(() => { this.scrollTop = 0; this.$nextTick(() => { setTimeout(() => { this.scrollTop = 1e4; }, 100); }); }, 200); return; } this.currentQuestionIndex++; this.currentScrollId = "question-" + this.currentQuestionIndex; this.showResult = false; this.selectedOption = null; this.selectedOptions = []; this.openQuestionAnswer = ""; if (this.questions[this.currentQuestionIndex]) { this.progressWidth = (this.currentQuestionIndex + 1) / this.questions.length * 100; this.resetTimer(); this.playAiSpeaking(); setTimeout(() => { this.pauseAiSpeaking(); }, 2e3); } } }, // 添加生命周期钩子,确保在组件销毁时清除计时器 beforeDestroy() { if (this.timerInterval) { clearInterval(this.timerInterval); } } }; if (!Array) { const _component_uni_load_more = common_vendor.resolveComponent("uni-load-more"); _component_uni_load_more(); } function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return common_vendor.e({ a: !$data.digitalHumanUrl }, !$data.digitalHumanUrl ? { b: $data.mode, c: common_vendor.o((...args) => $options.handleCameraError && $options.handleCameraError(...args)) } : $data.digitalHumanUrl ? { e: $data.digitalHumanUrl } : { f: common_assets._imports_0 }, { d: $data.digitalHumanUrl, g: $data.showPageWarning ? 1 : "", h: common_vendor.f($data.questions, (question, qIndex, i0) => { return common_vendor.e({ a: common_vendor.t(qIndex + 1), b: common_vendor.t(question.questionTypeName), c: common_vendor.t(question.text), d: question.is_required_correct }, question.is_required_correct ? {} : {}, { e: question.questionType === 3 && question.imageUrl }, question.questionType === 3 && question.imageUrl ? { f: question.imageUrl } : {}, { g: question.questionType !== 0 }, question.questionType !== 0 ? { h: common_vendor.f(question.options, (option, index, i1) => { return { a: common_vendor.t(option.option_text || (typeof option === "string" ? option : JSON.stringify(option))), b: index, c: $options.isOptionSelected(question, qIndex, index) ? 1 : "", d: common_vendor.o(($event) => $options.handleOptionClick(qIndex, index), index) }; }), i: qIndex !== $data.currentQuestionIndex ? 1 : "" } : {}, { j: qIndex === $data.currentQuestionIndex && question.questionType === 2 }, qIndex === $data.currentQuestionIndex && question.questionType === 2 ? { k: common_vendor.t("下一题"), l: common_vendor.o(($event) => $options.nextQuestion(), question.id), m: $data.selectedOptions.length === 0 } : {}, { n: question.id, o: "question-" + qIndex }); }), i: common_vendor.t($data.questions.length), j: $data.showContinueButton }, $data.showContinueButton ? { k: common_vendor.t($data.currentGroupIndex < $data.questionGroups.length - 1 ? "继续下一部分" : "完成测试"), l: common_vendor.o((...args) => $options.handleContinue && $options.handleContinue(...args)) } : {}, { m: $data.currentScrollId, n: $data.scrollTop, o: $data.showEndModal }, $data.showEndModal ? { p: common_vendor.o((...args) => $options.navigateToInterview && $options.navigateToInterview(...args)) } : {}, { q: $data.interviewCompleted }, $data.interviewCompleted ? { r: common_assets._imports_0, s: common_vendor.o((...args) => $options.back && $options.back(...args)) } : {}, { t: $data.loading }, $data.loading ? { v: common_vendor.p({ status: "loading", contentText: { contentdown: "加载中..." } }) } : {}, { w: !$data.loading && $data.loadError }, !$data.loading && $data.loadError ? { x: common_vendor.o((...args) => $options.fetchInterviewData && $options.fetchInterviewData(...args)) } : {}, { y: $data.showPromptModal }, $data.showPromptModal ? { z: common_vendor.o((...args) => $options.handlePromptConfirm && $options.handlePromptConfirm(...args)) } : {}); } const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]); wx.createPage(MiniProgramPage);