From 56cdf07f8496685ba906ea75e7eb2faebb35371b Mon Sep 17 00:00:00 2001
From: 闫增涛 <1829501689@qq.com>
Date: 星期三, 06 十一月 2024 17:04:11 +0800
Subject: [PATCH] 加入富文本编辑器

---
 src/components/examinations/index.vue |  106 ++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 77 insertions(+), 29 deletions(-)

diff --git a/src/components/examinations/index.vue b/src/components/examinations/index.vue
index c8068ec..095c41d 100644
--- a/src/components/examinations/index.vue
+++ b/src/components/examinations/index.vue
@@ -12,7 +12,7 @@
         <span v-if="nindex == 2">涓夈��</span>
         <span v-if="nindex == 3">鍥涖��</span>
         <span v-if="nindex == 4">浜斻��</span>
-        <span v-html="item.catalogName" ></span>
+        <span v-html="item.catalogName"></span>
       </p>
       <el-image v-if="item.catalogImage" :src="item.catalogImage"></el-image>
       <ul>
@@ -33,17 +33,17 @@
               </span>
               <!-- 鍚姏杩涘害鏉� -->
               <!-- <answerAudioPlayer :audioUrl="value.src" v-show="item.name == '鍚姏棰�'" /> -->
-
               <!-- 浠呮枃瀛� -->
               <p
                 class="titleText text-fl"
                 v-if="
-                  value.stemStyle == 'Txt' && value.questionType != 'completion'
+                  value.stemStyle == 'Txt' &&
+                  value.questionType != 'completion' &&
+                  value.questionType != 'dropdown'
                 "
                 :id="value.id"
                 v-html="value.stem.stemTxt"
-              >
-              </p>
+              ></p>
               <!-- 浠呭浘鐗� -->
               <el-image
                 class="stemImg"
@@ -56,8 +56,7 @@
                 class="stemTxtAndImage titleText"
                 v-else-if="value.stemStyle == 'TxtAndImage'"
               >
-                <span v-html="value.stem.stemTxt">
-                </span>
+                <span v-html="value.stem.stemTxt"> </span>
                 <el-image
                   :src="getPublicImage(value.stem.stemImage, 150)"
                   :preview-src-list="[getPublicImage(value.stem.stemImage)]"
@@ -73,6 +72,7 @@
                   <span
                     v-if="typeof itemText == 'string'"
                     v-html="itemText"
+                    class="input-txt"
                   ></span>
                   <input
                     v-else
@@ -91,6 +91,32 @@
                 v-html="value.stem.stemTxt"
                 v-cloak
               ></p>
+              <!-- 涓嬫媺閫夋嫨棰� -->
+              <p class="titleText" v-if="value.questionType == 'dropdown'">
+                <span
+                  v-for="(itemText, indexText) in value.stem"
+                  :key="indexText + 'questionType'"
+                >
+                  <span
+                    v-if="typeof itemText == 'string'"
+                    v-html="itemText"
+                    class="input-txt"
+                  ></span>
+                  <el-select
+                    v-else
+                    v-model="value.userAnswer"
+                    :disabled="value.isComplete"
+                  >
+                    <el-option
+                      v-for="(citem, cindex) in value.option"
+                      :key="cindex + 'dropdown'"
+                      :label="citem"
+                      :value="citem"
+                    >
+                    </el-option>
+                  </el-select>
+                </span>
+              </p>
             </div>
             <img
               :src="value.isCollect ? isHeart : heart"
@@ -212,17 +238,16 @@
               </el-checkbox>
             </el-checkbox-group>
             <!-- 绠�绛� 缈昏瘧 -->
-            <!-- <TEditorVue
-            v-else-if="value.questionType == 'shortAnswer'"
-            :value="value.userAnswer"
-            :disabled="value.isComplete"
-            @getContent="
-              (val) => {
-                value.userAnswer = val.trim();
-                inputChange();
-              }
-            "
-          ></TEditorVue> -->
+            <TEditorVue
+              v-else-if="value.questionType == 'formula'"
+              :value="value.userAnswer"
+              :disabled="value.isComplete"
+              @getContent="
+                (val) => {
+                  value.userAnswer = val;
+                }
+              "
+            />
             <el-input
               :disabled="value.isComplete"
               style="width: 94%; margin: 0 auto"
@@ -249,9 +274,11 @@
             <div class="analysis" v-if="value.isComplete">
               <el-collapse
                 v-model="value.isUnfold"
-                @change="handleChange(value)"
                 accordion
-                v-if="value.questionType != 'shortAnswer'"
+                v-if="
+                  value.questionType != 'shortAnswer' ||
+                  value.questionType != 'formula'
+                "
               >
                 <el-collapse-item :name="value.id" class="objective">
                   <template #title>
@@ -350,8 +377,8 @@
                   ></div>
                   <div v-else>鏆傛棤鏁版嵁</div>
                 </el-collapse-item>
-                <!-- 涓昏棰� -->
               </el-collapse>
+              <!-- 涓昏棰� -->
               <el-collapse v-else v-model="value.isUnfold" accordion>
                 <el-collapse-item :name="value.id" class="objective">
                   <template #title>
@@ -487,8 +514,10 @@
 
 <script>
 import { Message } from "element-ui";
+import TEditorVue from "../teditor/index.vue";
 export default {
   name: "examination-option",
+  components: { TEditorVue },
   props: {
     cardList: {
       type: Array,
@@ -551,7 +580,6 @@
   watch: {
     cardList: {
       handler(newVal) {
-        // console.log('鏂板��',newVal);
         this.cardData = this.cardList;
         if (newVal && newVal.length) {
           this.loading = false;
@@ -566,6 +594,18 @@
     this.getErrorList();
   },
   methods: {
+    // 鑾峰彇涓嶅彈淇濇姢鐨勫浘鐗�
+    getPublicImage(md5, width, height) {
+      if (!md5) return;
+      if (md5.includes("http")) return md5;
+      let src = null;
+      if (md5) {
+        src = process.env.VUE_APP_API_URL + `/file/GetPreViewImage?md5=${md5}`;
+      }
+      if (width) src += `&width=${width}`;
+      if (height) src += `&height=${height}`;
+      return src;
+    },
     // 鏁扮粍杞负瀛楃涓叉柟娉�
     arrayToString(data) {
       // 妫�鏌ユ槸鍚︿负鏁扮粍
@@ -646,9 +686,9 @@
             }
           } else if (
             citem.questionType == "singleChoice" ||
-            citem.questionType == "judge"
+            citem.questionType == "judge" ||
+            citem.questionType == "dropdown"
           ) {
-            if (citem.id == "63825") console.log("i", item);
             citem.isRight = citem.answer == citem.userAnswer;
           } else if (citem.questionType == "shortAnswer") {
             // 绠�绛� 缈昏瘧
@@ -857,6 +897,11 @@
 };
 </script>
 
+<style lang="less">
+.titleText img {
+  max-width: 80%;
+}
+</style>
 
 <style lang="less" scoped>
 .catalogName {
@@ -1000,9 +1045,9 @@
       font-weight: bold;
     }
     .text-fl {
-      display:flex;
-      align-items:center;
-      flex-wrap:wrap;
+      display: flex;
+      align-items: center;
+      flex-wrap: wrap;
     }
     .titleText {
       text-align: left;
@@ -1010,11 +1055,14 @@
       font-size: 16px;
       line-height: 32px;
       color: #000;
-
+      .input-txt {
+        display: flex;
+        flex-wrap: wrap;
+        align-items: center;
+      }
       span {
         display: inline-block;
         font-size: 16px;
-        // line-height: 26px;
         color: #000;
         font-weight: 400;
         margin-top: 6px;

--
Gitblit v1.9.1