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