From 5fbc4feb28dfc709652cbf8dc74c7f5751116d75 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期三, 04 二月 2026 18:00:26 +0800
Subject: [PATCH] 测试完成
---
src/views/outsideChainwtnew copy.vue | 849 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 849 insertions(+), 0 deletions(-)
diff --git a/src/views/outsideChainwtnew copy.vue b/src/views/outsideChainwtnew copy.vue
new file mode 100644
index 0000000..205e6d2
--- /dev/null
+++ b/src/views/outsideChainwtnew copy.vue
@@ -0,0 +1,849 @@
+<template>
+ <div class="questionnaire-optimized">
+ <div class="content-wrapper" v-if="!accomplish">
+ <div class="questionnaire-container">
+ <!-- 闂嵎鏍囬鍖哄煙 -->
+ <div class="questionnaire-header">
+ <h1 class="questionnaire-title">
+ {{ taskname ? taskname : "闂嵎" }}
+ </h1>
+ <div class="questionnaire-description">
+ {{
+ kcb
+ ? kcb
+ : "浜茬埍鐨勬偅鑰�-瀹跺睘锛屾垜浠槸鍖婚櫌鐨勫尰鎶や汉鍛橈紝涓轰簡鏇村ソ鍦颁簡瑙f偍鐨勫悍澶嶆儏鍐碉紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瀹屾垚杩欎唤闅忚闂嵎銆�"
+ }}
+ </div>
+ </div>
+
+ <el-divider class="custom-divider"></el-divider>
+
+ <!-- 闂嵎棰樼洰鍖哄煙 -->
+ <div class="questions-section">
+ <div
+ class="question-item"
+ v-for="(item, index) in visibleQuestions"
+ :key="item.id"
+ :class="{
+ 'has-warning':
+ item.prompt &&
+ item.scriptResult &&
+ (item.scriptType !== 2 || item.scriptResult.length > 0),
+ }"
+ >
+ <!-- 棰樼洰棰樺共 -->
+ <div class="question-stem">
+ <span class="question-number"
+ >{{ getVisibleQuestionIndex(index) }}.</span
+ >
+ <span class="question-text">{{ item.scriptContent }}</span>
+ <span class="question-type-tag">
+ {{
+ item.scriptType === 1
+ ? "[鍗曢�塢"
+ : item.scriptType === 2
+ ? "[澶氶�塢"
+ : "[闂瓟]"
+ }}
+ </span>
+ </div>
+
+ <!-- 鍗曢�夐鐩� -->
+ <div
+ class="question-options"
+ v-if="item.scriptType == 1 && !item.ishide"
+ >
+ <el-radio-group class="options-group" v-model="item.scriptResult">
+ <el-radio
+ v-for="(
+ option, optionIndex
+ ) in item.svyTaskTemplateTargetoptions"
+ :key="optionIndex"
+ :label="option.optioncontent"
+ :class="{
+ 'abnormal-option':
+ option.isabnormal &&
+ item.scriptResult == option.optioncontent,
+ }"
+ @click.native.prevent="
+ handleRadioToggle(
+ item,
+ index,
+ item.svyTaskTemplateTargetoptions,
+ option.optioncontent
+ )
+ "
+ class="option-radio"
+ >
+ <span class="option-text">{{ option.optioncontent }}</span>
+ </el-radio>
+ </el-radio-group>
+ </div>
+
+ <!-- 澶氶�夐鐩� -->
+ <div class="question-options" v-if="item.scriptType == 2">
+ <el-checkbox-group
+ class="options-group"
+ v-model="item.scriptResult"
+ >
+ <el-checkbox
+ v-for="(
+ option, optionIndex
+ ) in item.svyTaskTemplateTargetoptions"
+ :key="optionIndex"
+ :label="option.optioncontent"
+ :class="{
+ 'abnormal-option': option.isabnormal,
+ }"
+ @change="$forceUpdate()"
+ class="option-checkbox"
+ >
+ <span class="option-text">{{ option.optioncontent }}</span>
+ </el-checkbox>
+ </el-checkbox-group>
+ </div>
+
+ <!-- 濉┖棰樼洰 -->
+ <div class="question-input" v-if="item.scriptType == 4">
+ <el-input
+ type="textarea"
+ :rows="3"
+ placeholder="璇疯緭鍏ユ偍鐨勫洖绛�"
+ v-model="item.scriptResult"
+ clearable
+ class="answer-textarea"
+ ></el-input>
+ </div>
+
+ <!-- 鎻愮ず淇℃伅 -->
+ <div
+ class="question-warning"
+ v-show="
+ item.prompt &&
+ item.scriptResult &&
+ (item.scriptType !== 2 || item.scriptResult.length > 0)
+ "
+ >
+ <el-alert
+ :title="item.prompt"
+ type="warning"
+ :closable="false"
+ class="warning-alert"
+ ></el-alert>
+ </div>
+ </div>
+ </div>
+
+ <!-- 鎻愪氦鎸夐挳 -->
+ <div class="submit-section">
+ <el-button type="primary" @click="cache(true)" class="submit-button">
+ 鎻愪氦闂嵎
+ </el-button>
+ </div>
+ </div>
+ </div>
+
+ <!-- 瀹屾垚椤甸潰 -->
+ <div class="completion-page" v-else>
+ <div class="completion-content">
+ <div class="completion-icon">鉁�</div>
+ <h2 class="completion-title">鎰熻阿鎮ㄧ殑閰嶅悎!</h2>
+ <p class="completion-message">
+ {{
+ jsy
+ ? jsy
+ : "鐢熸椿涓婅鍔抽�哥粨鍚堬紝娉ㄦ剰浼戞伅鍜岃惀鍏伙紝閫傚綋閿荤偧锛屾垝鐑熼檺閰掞紝淇濇寔蹇冩儏鑸掔晠锛屽畾鏈熷璇娿�傞偅鏈鍥炶灏卞埌杩欓噷锛岀鎮ㄨ韩浣撳仴搴凤紒"
+ }}
+ </p>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import {
+ getExternalfollowup,
+ getCachequestionnaire,
+ Cachequestionnaire,
+ Submitaquestionnaire,
+ geturlinfo,
+} from "@/api/AiCentre/index";
+import JSEncrypt from "jsencrypt";
+export default {
+ data() {
+ return {
+ taskid: 355,
+ patid: 265823,
+ kcb: "",
+ excep: 0,
+ isabnormal: 0,
+ taskname: "",
+ questionList: [],
+ jsy: null,
+ dialogVisible: false,
+ Endornot: true,
+ accomplish: false,
+ // 鍓嶇鍏挜
+ publicKey:
+ "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKR0yHv0rbJWQE+Sc7/FwpW66qMd9qX2k6z+SDgkSdxWh/1GbBoAP7bDQQRF6vXmoKsD2ya42H6XRLSDXAoayuMCAwEAAQ== ",
+ // 鍚庣绉侀挜
+ privateKey:
+ " MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAtDOpbUQhcEoYy77agRhIHmAzs7H+KHJhN56gTTI9fWq23j77nI055MFV3oQQziIrNUTNaPpEQhZXBpI0+f9K9QIDAQABAkB3n0fcWfrcoMN/FU3VnrnZOEF6CzFNxkgU9P8y36QECWKZ9JhYQkNpKrMC9oXlN3VSaRigV7B+L/I/a0Rs1W+tAiEA4jx7xcXJ4y4BNwAmVHt6NNiEkzIwWnwC/0qsEu8NsOsCIQDL6MMn1D2uznC6OuOWpxDCkBh1JL1NzZTZeH2G+hj7nwIgKGAC9tjFnvWm4dn0/T7MIIJDpsFeP8fCAS2iZ/6hwuECIAS/eLvWr1EAsZNEh8QcQ8GkBU3E+ztyjAK8UX/xFt/VAiBf79/1tDErX4/DChecM8w3c3DhbBcjuE3fHZn7p6/UKg==",
+ formData: {
+ question1: "",
+ question2: "",
+ question3: "",
+ },
+ };
+ },
+ mounted() {
+ // window.addEventListener("beforeunload", this.cache);
+ },
+ beforeDestroy() {
+ // window.removeEventListener("beforeunload", this.cache);
+ },
+ created() {
+ this.geturlinfo();
+ },
+ computed: {
+ // 璁$畻灞炴�э細鑾峰彇鎵�鏈夊彲瑙佺殑棰樼洰
+ visibleQuestions() {
+ if (!Array.isArray(this.questionList)) {
+ return [];
+ }
+ return this.questionList.filter((question) => !question.ishide);
+ },
+ },
+ methods: {
+ // 瑙f瀽urlid
+ geturlinfo() {
+ // let url = window.location.href;
+ let url = this.$route.query.p;
+ console.log(url, "url");
+ // let url = 'http://218.108.11.22:8093/sf/003';
+ // let urlid = this.extractLastSegmentFromUrl(url);
+
+ geturlinfo(url).then((res) => {
+ if (res.code == 200) {
+ this.getQuestionnaire(
+ res.data.param1,
+ res.data.param2,
+ res.data.param3,
+ res.data.param5
+ );
+ }
+ });
+ },
+ // extractLastSegmentFromUrl(url) {
+ // // 鎵惧埌鏈�鍚庝竴涓�'/'鐨勪綅缃�
+ // const lastSlashIndex = url.lastIndexOf('/');
+ // // 濡傛灉鎵惧埌浜�'/'锛屾埅鍙栧叾鍚庣殑鎵�鏈夊瓧绗�
+ // if (lastSlashIndex !== -1) {
+ // return url.substring(lastSlashIndex + 1);
+ // }
+ // // 濡傛灉娌℃湁鎵惧埌'/'锛岃繑鍥炵┖瀛楃涓�
+ // return '';
+ // },
+
+ // 鑾峰彇鏁版嵁
+ getQuestionnaire(param1, param2, param3) {
+ this.taskid = decodeURIComponent(param1);
+ this.patid = decodeURIComponent(param2);
+ this.taskname = decodeURIComponent(param3);
+ // let taskid =
+ // "OFp7tn/B6x7IzKJetvGWHdSWBj7msRlnlj6am9dyuHTH6sEt4uBbVCUXs5kcF/e4O2W6vqHf2Bz9K3/evbYDmw==";
+ // let patid =
+ // "CVk0j8O86AeCqhV5WPsBBYDg9fec0wDoDlP9imYK4wDBNIkxywZzMJEGlPagOxnq6qr2WYZo0U8MUGWRGnq8ZA==";
+ // this.taskid = this.decrypt(taskid);
+ // this.patid = this.decrypt(patid);
+ // let taskids = this.encrypt(this.taskid);
+ // let patids = this.encrypt(this.patid);
+ // 鍏堝彇缂撳瓨
+ getCachequestionnaire({ param1: this.taskid, param2: this.patid }).then(
+ (res) => {
+ if (res.code == 200) {
+ this.questionList = res.data.result;
+ this.accomplish = res.data.submit;
+ if (this.questionList[0]) {
+ this.questionList.forEach((item) => {
+ if (item.scriptResult && item.scriptType != 2) {
+ item.scriptResult = JSON.parse(item.scriptResult);
+ } else if (item.scriptResult && item.scriptType == 2) {
+ item.scriptResult = item.scriptResult.split("&");
+ }
+ });
+ return;
+ } else {
+ this.getExternalfollowup();
+ }
+ } else {
+ this.getExternalfollowup();
+ }
+ }
+ );
+ },
+ // 鑾峰彇鏁版嵁
+ getExternalfollowup() {
+ getExternalfollowup({ param1: this.taskid, param2: this.patid }).then(
+ (res) => {
+ if (res.code == 200) {
+ this.questionList = res.data.script;
+ this.jsy = res.data.jsy;
+ this.kcb = res.data.kcb;
+ // 澶勭悊棰樼洰鏀堕泦缁撴灉鏍煎紡
+ this.questionList.forEach((item) => {
+ item.nextScriptno = Number(item.nextScriptno);
+ if (item.scriptType == 2) {
+ item.scriptResult = [];
+ }
+ });
+ }
+ }
+ );
+ },
+ // 鍔犲瘑鍑芥暟
+ encrypt(txt) {
+ const encryptor = new JSEncrypt();
+ encryptor.setPublicKey(this.publicKey); // 璁剧疆鍏挜
+ return encryptor.encrypt(txt); // 瀵规暟鎹繘琛屽姞瀵�
+ },
+ // 瑙e瘑鍑芥暟
+ decrypt(txt) {
+ const encryptor = new JSEncrypt();
+ encryptor.setPrivateKey(this.privateKey); // 璁剧疆绉侀挜
+ return encryptor.decrypt(txt); // 瀵规暟鎹繘琛岃В瀵�
+ },
+ // 鎻愪氦
+ submitForm() {
+ // 鎻愪氦琛ㄥ崟閫昏緫
+ let form = {
+ param1: this.taskid,
+ param2: this.patid,
+ excep: this.excep,
+ isabnormal: this.isabnormal,
+ serviceSubtaskDetailList: [],
+ };
+ console.log(form.isabnormal, "formisabnormal");
+
+ const arr = structuredClone(this.questionList);
+ // arr.forEach((item) => {
+ // item.asrtext = JSON.stringify(item.scriptResult);
+ // if (item.scriptType == 2 && item.scriptResult[0]) {
+ // item.scriptResult = item.scriptResult.join("&");
+ // }
+ // });
+ form.serviceSubtaskDetailList = arr;
+ Submitaquestionnaire(form).then((res) => {
+ if (res.code == 200) {
+ if (this.jsy) {
+ this.dialogVisible = true;
+ }
+ this.accomplish = true;
+ this.$modal.msgSuccess("鎻愪氦鎴愬姛");
+ }
+ });
+ },
+ // 缂撳瓨
+ cache(subm) {
+ console.log("杩涘叆缂撳瓨");
+ let form = {
+ param1: this.taskid,
+ param2: this.patid,
+ svyTaskTemplateScriptVOS: [],
+ };
+ const arr = structuredClone(this.questionList);
+ arr.forEach((item) => {
+ item.ishide = item.ishide ? 1 : 0;
+ });
+ arr.forEach((item, index) => {
+ if (item.scriptType == 1 && item.scriptResult) {
+ var obj = item.svyTaskTemplateTargetoptions.find(
+ (items) => items.optioncontent == item.scriptResult
+ );
+ console.log(item);
+
+ console.log(obj, "obj");
+ if (obj.sendTaskid) {
+ item.sendTaskname = obj.sendTaskname;
+ item.sendTaskid = obj.sendTaskid;
+ console.log(String(obj.sendTaskid).split(","));
+ item.sendTaskids = String(obj.sendTaskid).split(",");
+ }
+ if (obj) {
+ form.excep = obj.isabnormal;
+ form.isabnormal = obj.isabnormal;
+ if (this.isabnormal != 1 && obj.isabnormal) {
+ this.excep = obj.isabnormal;
+ this.isabnormal = obj.isabnormal;
+ }
+ console.log(obj.isabnormal);
+ }
+ }
+ });
+
+ arr.forEach((item) => {
+ if (item.scriptType == 2 && item.scriptResult[0]) {
+ item.scriptResult = item.scriptResult.join("&");
+ } else if (item.scriptType != 2 && item.scriptResult) {
+ item.scriptResult = JSON.stringify(item.scriptResult);
+ }
+ });
+ form.svyTaskTemplateScriptVOS = arr;
+ form.type = 2;
+ Cachequestionnaire(form).then((res) => {
+ if (res.code == 200) {
+ if (subm) {
+ this.submitForm();
+ }
+ }
+ });
+ },
+ // 鑾峰彇鍙棰樼洰鐨勬纭簭鍙凤紙瑙e喅璺抽鍚庡簭鍙蜂笉杩炵画鐨勯棶棰橈級
+ getVisibleQuestionIndex(index) {
+ return index + 1;
+ },
+ // 鏂板鐨勫垏鎹㈤�変腑/鍙栨秷閫変腑鏂规硶
+ handleRadioToggle(questionItem, index, options, optionValue) {
+ // 淇濆瓨褰撳墠鐘舵�佷互渚垮悗缁瘮杈�
+ const previousState = JSON.parse(JSON.stringify(this.questionList));
+
+ // 鍘熸湁鐨勫鐞嗛�昏緫
+ if (questionItem.scriptResult === optionValue) {
+ questionItem.scriptResult = "";
+ questionItem.isabnormal = 0;
+ questionItem.showAppendInput = false;
+ } else {
+ questionItem.scriptResult = optionValue;
+ this.handleOptionChange(optionValue, index, options, questionItem);
+ }
+
+ // 澶勭悊瀹屾垚鍚庯紝纭繚閲嶆柊璁$畻鍙棰樼洰鐨勫簭鍙�
+ this.$forceUpdate();
+ },
+
+ // 鍦╩ethods閮ㄥ垎锛屼慨鏀筯andleOptionChange鏂规硶:
+ handleOptionChange(selectedOption, questionIndex, options, a) {
+ console.log(selectedOption, questionIndex, options, a, "888");
+
+ if (document.activeElement) {
+ document.activeElement.blur();
+ }
+
+ // 鎵惧埌琚�変腑鐨勯�夐」瀵硅薄
+ const selectedOptionObj = options.find(
+ (item) => item.optioncontent == selectedOption
+ );
+ if (selectedOptionObj) {
+ this.questionList[questionIndex].nextScriptno =
+ selectedOptionObj.nextQuestion;
+ this.questionList[questionIndex].score = selectedOptionObj.score;
+ this.questionList[questionIndex].prompt = selectedOptionObj.prompt;
+ }
+ // 澶勭悊寮傚父鐘舵�侀珮浜�
+ this.questionList[questionIndex].isabnormal =
+ selectedOptionObj.isabnormal;
+ // 澶勭悊闄勫姞杈撳叆妗嗘樉绀�
+
+ this.questionList[questionIndex].showAppendInput =
+ selectedOptionObj.appendflag == 1;
+ console.log(this.questionList);
+
+ // if (!this.questionList[questionIndex].showAppendInput) {
+ // this.questionList[questionIndex].answerps = ""; // 娓呴櫎闄勫姞淇℃伅
+ // }
+ // 淇濆瓨褰撳墠棰樼洰涔嬪墠宸茬粡闅愯棌鐨勯鐩姸鎬�
+ const previouslyHiddenBeforeCurrent = this.questionList
+ .slice(0, questionIndex)
+ .map((item, index) => (item.ishide ? index : -1))
+ .filter((index) => index !== -1);
+
+ // 淇濆瓨涔嬪墠鍥爊extQuestion=0鑰岄殣钘忕殑棰樼洰鑼冨洿
+ const previouslyHiddenByEnd = this.questionList
+ .map((item, index) => (item.hiddenByEnd ? index : -1))
+ .filter((index) => index !== -1);
+
+ // 濡傛灉branchFlag涓�1锛屽鐞嗛鐩烦杞�
+ if (a.branchFlag == 1) {
+ if (selectedOptionObj.nextQuestion == 0) {
+ // 缁撴潫闂瓟 - 闅愯棌鍚庨潰鎵�鏈夐鐩苟鏍囪
+ this.questionList = this.questionList.map((item, index) => ({
+ ...item,
+ ishide: index > questionIndex,
+ hiddenByEnd: index > questionIndex, // 鏍囪杩欎簺棰樼洰鏄缁撴潫闂瓟闅愯棌鐨�
+ }));
+ } else {
+ // 姝e父璺宠浆閫昏緫
+ const nextQuestionIndex = selectedOptionObj.nextQuestion - 1;
+ console.log(nextQuestionIndex, 4);
+ console.log(selectedOptionObj);
+
+ this.questionList = this.questionList.map((item, index) => {
+ // 淇濈暀褰撳墠棰樼洰涔嬪墠鐨勯殣钘忕姸鎬�
+ if (index < questionIndex) {
+ return {
+ ...item,
+ ishide: previouslyHiddenBeforeCurrent.includes(index),
+ hiddenByEnd: false, // 娓呴櫎缁撴潫鏍囪
+ };
+ }
+
+ // 褰撳墠棰樼洰鎬绘槸鍙
+ if (index === questionIndex) {
+ return { ...item, ishide: 0, hiddenByEnd: false };
+ }
+
+ // 鏄剧ず鐩爣涓嬩竴棰�
+ if (index === nextQuestionIndex) {
+ return { ...item, ishide: 0, hiddenByEnd: false };
+ }
+
+ // 濡傛灉鏄箣鍓嶈缁撴潫闂瓟闅愯棌鐨勯鐩紝鐜板湪搴旇鎭㈠鏄剧ず
+ if (item.hiddenByEnd) {
+ return { ...item, ishide: 0, hiddenByEnd: false };
+ }
+
+ // 闅愯棌褰撳墠棰樺拰鐩爣棰樹箣闂寸殑棰樼洰
+ if (index > questionIndex && index < nextQuestionIndex) {
+ return { ...item, ishide: 1, hiddenByEnd: false };
+ }
+
+ // 鍏朵粬鎯呭喌淇濇寔鍘熺姸
+ return item;
+ });
+ }
+ } else {
+ // 濡傛灉娌℃湁璺宠浆锛屽彧闇�纭繚涓嬩竴棰樺彲瑙�
+ this.questionList = this.questionList.map((item, index) => ({
+ ...item,
+ ishide: index === questionIndex + 1 ? 0 : item.ishide,
+ hiddenByEnd: index === questionIndex + 1 ? false : item.hiddenByEnd,
+ }));
+ }
+
+ // 鍦ㄥ鐞嗗畬棰樼洰鏄剧ず/闅愯棌鍚庯紝寮哄埗鏇存柊瑙嗗浘浠ョ‘淇濆簭鍙锋纭�
+ this.$nextTick(() => {
+ this.$forceUpdate();
+ });
+ },
+ // 澶勭悊鍗曢�夐�夐」
+ // handleOptionChange(selectedvalue, index, arr) {
+ // // 鏌ユ壘閫変腑鐨勯�夐」瀵硅薄
+ // const selectedOption = arr.svyTaskTemplateTargetoptions.find(
+ // (option) => option.optioncontent == selectedvalue
+ // );
+ // if (selectedOption) {
+ // this.questionList[index].nextScriptno = selectedOption.nextQuestion;
+ // this.questionList[index].score = selectedOption.score;
+ // this.questionList[index].prompt = selectedOption.prompt;
+ // }
+ // },
+ // 澶勭悊澶氶�夐�夐」
+ // updateScore(selectedvalues, index, arr) {
+ // // 锟斤拷鍔犲垎鏁�
+ // let score = 0;
+ // selectedvalues.forEach((value) => {
+ // const selectedOption = arr.svyTaskTemplateTargetoptions.find(
+ // (option) => option.optioncontent == value
+ // );
+ // if (selectedOption) {
+ // score += Number(selectedOption.score);
+ // }
+ // });
+ // this.questionList[index].score = score;
+ // },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.questionnaire-optimized {
+ min-height: 100vh;
+ background: linear-gradient(135deg, #f5f7fa 0%, #e4edf5 100%);
+ padding: 20px 0;
+ font-family: "PingFang SC", "Microsoft YaHei", sans-serif;
+}
+
+.content-wrapper {
+ max-width: 800px;
+ margin: 0 auto;
+ padding: 0 15px;
+}
+
+.questionnaire-container {
+ background: #ffffff;
+ border-radius: 12px;
+ box-shadow: 0 5px 20px rgba(0, 0, 0, 0.08);
+ padding: 30px;
+ margin-bottom: 30px;
+}
+
+.questionnaire-header {
+ text-align: center;
+ margin-bottom: 25px;
+}
+
+.questionnaire-title {
+ color: #175997;
+ font-size: 28px;
+ font-weight: 700;
+ margin-bottom: 15px;
+ line-height: 1.3;
+}
+
+.questionnaire-description {
+ font-size: 18px;
+ color: #5a6c84;
+ line-height: 1.6;
+ max-width: 700px;
+ margin: 0 auto;
+}
+
+.custom-divider {
+ margin: 25px 0;
+ background-color: #eaeef2;
+}
+
+.questions-section {
+ margin-bottom: 40px;
+}
+
+.question-item {
+ margin-bottom: 35px;
+ padding: 20px;
+ border-radius: 8px;
+ border: 1px solid #eaeef2;
+ transition: all 0.3s ease;
+
+ &:hover {
+ border-color: #d1e0f0;
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
+ }
+
+ &.has-warning {
+ border-left: 4px solid #e6a23c;
+ }
+}
+
+.question-stem {
+ display: flex;
+ align-items: flex-start;
+ margin-bottom: 20px;
+ font-size: 18px;
+}
+
+.question-number {
+ font-weight: 600;
+ color: #175997;
+ margin-right: 8px;
+ min-width: 24px;
+}
+
+.question-text {
+ flex: 1;
+ line-height: 1.5;
+ color: #2c3e50;
+ font-weight: 500;
+}
+
+.question-type-tag {
+ color: #3ba2f7;
+ font-size: 14px;
+ margin-left: 10px;
+ font-weight: 500;
+}
+
+.question-options {
+ margin: 15px 0;
+}
+
+.options-group {
+ display: flex;
+ flex-direction: column;
+ gap: 12px;
+}
+
+.option-radio,
+.option-checkbox {
+ margin: 0;
+ padding: 12px 15px;
+ border-radius: 6px;
+ border: 1px solid #e0e0e0;
+ transition: all 0.2s;
+
+ &:hover {
+ border-color: #c0c4cc;
+ background-color: #f8fafc;
+ }
+}
+
+:deep(.option-radio .el-radio__label),
+:deep(.option-checkbox .el-checkbox__label) {
+ display: flex;
+ align-items: center;
+ font-size: 16px;
+}
+
+.option-text {
+ margin-right: 5px;
+}
+
+.abnormal-indicator {
+ color: #f56c6c;
+ font-weight: bold;
+}
+
+.abnormal-option {
+ :deep(.el-radio__inner) {
+ border-color: #f56c6c;
+ }
+
+ :deep(.el-checkbox__inner) {
+ border-color: #f56c6c;
+ }
+}
+
+.question-input {
+ margin: 15px 0;
+}
+
+.answer-textarea {
+ :deep(.el-textarea__inner) {
+ font-size: 16px;
+ line-height: 1.5;
+ }
+}
+
+.question-warning {
+ margin-top: 15px;
+}
+
+.warning-alert {
+ :deep(.el-alert__title) {
+ font-size: 15px;
+ line-height: 1.4;
+ }
+}
+
+.submit-section {
+ text-align: center;
+ padding: 20px 0 10px;
+}
+
+.submit-button {
+ width: 100%;
+ max-width: 300px;
+ height: 50px;
+ font-size: 18px;
+ font-weight: 500;
+ border-radius: 8px;
+ background: linear-gradient(135deg, #175997 0%, #2a77c9 100%);
+ border: none;
+ box-shadow: 0 4px 12px rgba(23, 89, 151, 0.3);
+ transition: all 0.3s;
+
+ &:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 6px 16px rgba(23, 89, 151, 0.4);
+ }
+
+ &:active {
+ transform: translateY(0);
+ }
+}
+
+.completion-page {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ min-height: 70vh;
+ padding: 20px;
+}
+
+.completion-content {
+ text-align: center;
+ max-width: 600px;
+ padding: 40px;
+ background: #ffffff;
+ border-radius: 12px;
+ box-shadow: 0 5px 20px rgba(0, 0, 0, 0.08);
+}
+
+.completion-icon {
+ font-size: 80px;
+ color: #52c41a;
+ margin-bottom: 20px;
+}
+
+.completion-title {
+ color: #175997;
+ font-size: 32px;
+ font-weight: 700;
+ margin-bottom: 20px;
+}
+
+.completion-message {
+ font-size: 18px;
+ color: #5a6c84;
+ line-height: 1.6;
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media (max-width: 768px) {
+ .content-wrapper {
+ padding: 0 10px;
+ }
+
+ .questionnaire-container {
+ padding: 20px 15px;
+ }
+
+ .questionnaire-title {
+ font-size: 24px;
+ }
+
+ .questionnaire-description {
+ font-size: 16px;
+ }
+
+ .question-stem {
+ font-size: 16px;
+ flex-direction: column;
+ align-items: flex-start;
+ }
+
+ .question-type-tag {
+ margin-left: 0;
+ margin-top: 5px;
+ }
+
+ .question-item {
+ padding: 15px;
+ }
+
+ .completion-content {
+ padding: 30px 20px;
+ }
+
+ .completion-title {
+ font-size: 28px;
+ }
+
+ .completion-message {
+ font-size: 16px;
+ }
+}
+
+@media (max-width: 480px) {
+ .questionnaire-title {
+ font-size: 22px;
+ }
+
+ .completion-title {
+ font-size: 24px;
+ }
+
+ .completion-icon {
+ font-size: 60px;
+ }
+}
+</style>
--
Gitblit v1.9.3