litian
2024-11-22 020d40734a2062300d8b1651a1688fc987590c0a
src/views/examination/components/list.vue
@@ -7,12 +7,21 @@
      v-show="item.infoList.length"
    >
      <p class="catalogName" :style="{ color: primaryColor }">
        <span class="catalogName-box" >
        <span v-if="nindex == 0">一、</span>
        <span v-if="nindex == 1">二、</span>
        <span v-if="nindex == 2">三、</span>
        <span v-if="nindex == 3">四、</span>
        <span v-if="nindex == 4">五、</span>
        <span>{{ item.catalogName }}</span>
        </span>
        <img
          :src="item.isCollect ? isHeart : heart"
          alt=""
          class="collect-png"
          @click="handleCollect(nindex)"
          v-if="item.type == 'material'"
        />
      </p>
      <ul>
        <li v-for="(value, index) in item.infoList" :key="value.id" :id="'listItem-' + value.id">
@@ -46,7 +55,7 @@
              ></el-image>
              <!-- 文字加图片 -->
              <p class="stemTxtAndImage titleText" v-else-if="value.stemStyle == 'TxtAndImage'">
                <span> {{ 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)]"
@@ -56,16 +65,20 @@
              <!-- 填空题题干 -->
              <p class="titleText" v-if="value.questionType == 'completion'">
                <span v-for="(itemText, indexText) in value.stem" :key="indexText">
                  <span v-if="typeof itemText == 'string'" v-html="itemText"></span>
                  <span style="display: flex;align-items: center;" v-if="typeof itemText == 'string'" v-html="itemText"></span>
                  <!-- &nbsp; -->
                  <input
                  <!-- <input
                    v-else
                    type="text"
                    class="input"
                    v-model.trim="value.userAnswer[itemText.num]"
                    :disabled="value.isComplete"
                    :style="{ backgroundColor: inputBc }"
                  />
                  /> -->
                  <math-field v-else @input="onChangeInput($event,nindex,index,indexText)" class="mathField" :menuItems="[]">
                    {{ value.userAnswer[itemText.num] }}
                    </math-field
                  >
                  <!-- &nbsp; -->
                </span>
              </p>
@@ -77,14 +90,14 @@
                v-cloak
              ></p>
            </div>
            <!-- 收藏 -->
            <img
              :src="value.isCollect ? isHeart : heart"
              alt=""
              class="collect-png"
              @click="handleCollect(nindex, index)"
              v-if="!(hideCollect && value.questionType == 'shortAnswer')"
              v-if="item.type != 'material'"
            />
            <!-- 收藏 -->
          </div>
          <div class="questionContent">
            <!-- 单选 -->
@@ -202,7 +215,7 @@
            <el-input
              :disabled="value.isComplete"
              style="width: 94%; margin: 0 auto"
              v-else-if="value.questionType == 'shortAnswer'"
              v-else-if="value.questionType == 'shortAnswer' ||value.questionType =='formula'"
              type="textarea"
              :rows="6"
              placeholder="请输入内容"
@@ -217,7 +230,9 @@
                  value.questionType == 'completion')
              "
            >
              <el-button @click="onChangeRadio(nindex,index)" style="margin-top: 10px">查看解析</el-button>
              <el-button @click="onChangeRadio(nindex, index)" style="margin-top: 10px"
                >查看解析</el-button
              >
            </div>
            <!-- 提交后解析 -->
            <div class="analysis" v-if="value.isComplete">
@@ -241,7 +256,6 @@
                    <span class="errorBox" >{{
                      arrayToString(value.userAnswer) ? arrayToString(value.userAnswer) : '-'
                    }}</span>
                  </p>
                </li>
                <li>
@@ -269,11 +283,11 @@
                      <div class="headerConent sitgBox">
                        <p v-if="!value.isUnfold" class="al-cn">
                          <span class="analysisColor">展开解析</span>
                          <img :src="openIcon" alt="" class="analysis-icon">
                          <img :src="openIcon" alt="" class="analysis-icon" />
                        </p>
                        <p v-else>
                          <span class="analysisColor">收起解析</span>
                          <img :src="closeIcon" alt="" class="analysis-icon">
                          <img :src="closeIcon" alt="" class="analysis-icon" />
                        </p>
                      </div>
                    </div>
@@ -290,11 +304,11 @@
                    <div class="headerBox">
                      <p v-if="!value.isUnfold"  class="al-cn">
                        <span class="analysisColor">展开答案与解析</span>
                        <img :src="openIcon" alt="" class="analysis-icon">
                        <img :src="openIcon" alt="" class="analysis-icon" />
                      </p>
                      <p v-else  class="al-cn">
                        <span class="analysisColor">收起答案与解析</span>
                        <img :src="closeIcon" alt="" class="analysis-icon">
                        <img :src="closeIcon" alt="" class="analysis-icon" />
                      </p>
                    </div>
                  </template>
@@ -334,7 +348,7 @@
import openIcon from '@/assets/images/examination/open.png'
import closeIcon from '@/assets/images/examination/close.png'
const props = defineProps({ cardList: Array, collectList: Array })
const emits = defineEmits([ 'onChangeRadio','setCollect'])
const emits = defineEmits(['onChangeRadio', 'setCollect','onChangeInput'])
// const presentId = ref<Number>(props.collectList[0])
onMounted(() => {
  // if (props.collectList) presentId.value = props.collectList[0]
@@ -378,11 +392,18 @@
const onChangeRadio = (num:number,number:number) => {
  emits('onChangeRadio', num,number)
}
const onChangeInput = (event: any,index:number,cindex:number,dindex:number) => {
  emits('onChangeInput',event.target.value,index,cindex,dindex)
}
</script>
<style lang="less" scoped>
.catalogName {
  display: flex;
  margin-top: 40px;
  .catalogName-box {
    width: 94%;
  }
}
.collect-png {
  cursor: pointer;
@@ -454,7 +475,6 @@
    display: flex;
    align-items: flex-start;
    span {
      height: 24px;
      line-height: 24px;
      text-align: center;
      font-size: 16px;
@@ -462,6 +482,9 @@
      font-weight: bold;
    }
    .titleText {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      padding: 0 10px 10px 10px;
      min-width: 90%;
      font-size: 14px;
@@ -542,8 +565,8 @@
  width: 100%;
  padding: 0 20px;
  font-size: 14px;
  background-color: #E0F2FF ;
  color: #3B93FE;
  background-color: #e0f2ff;
  color: #3b93fe;
  .checkAnalysis {
    cursor: pointer;
    height: 100%;
@@ -554,7 +577,7 @@
/deep/ .el-collapse-item__content {
  width: 100%;
  padding: 0 20px;
  background-color: #E0F2FF;
  background-color: #e0f2ff;
  font-size: 14px;
  color: #333;
}
@@ -595,7 +618,8 @@
.mark {
  font-size: 14px;
  color: #fff;
  .mark-error,.mark-correct {
  .mark-error,
  .mark-correct {
    white-space: nowrap;
    min-height: 20px;
    line-height: 18px;
@@ -606,7 +630,7 @@
    background-color: #1fbc1f;
  }
  .mark-error {
    background-color: #FF5E5E;
    background-color: #ff5e5e;
  }
}
.headerConent {
@@ -618,7 +642,7 @@
        height: 9px;
      }
      .correct {
        color: #70B503;
    color: #70b503;
        width: 200px;
        text-align: left;
      }
@@ -626,7 +650,7 @@
        text-align: left;
        margin-left: 40px;
        width: 200px;
        color: #FF5E5E;
    color: #ff5e5e;
      }
    }
.difficulty {
@@ -648,6 +672,11 @@
  background-color: red;
}
.primary-text-color {
  color: #3B93FE;
  color: #3b93fe;
}
.mathField {
  min-width: 200px;
  max-width: 518px;
  margin-top: 10px;
}
</style>