|
@@ -1,68 +1,83 @@
|
|
<!-- -->
|
|
<!-- -->
|
|
<template>
|
|
<template>
|
|
- <div class="Big-Book-prev-Textdes" v-if="curQue">
|
|
|
|
- <p v-if="curQue.con" v-html="curQue.con"></p>
|
|
|
|
- <p v-if="curQue.con" v-html="curQue.english"></p>
|
|
|
|
|
|
+ <div class="Big-Book-prev-Textdes NNPE-single" v-if="curQue">
|
|
|
|
+ <div class="stem-box">
|
|
|
|
+ <b v-if="curQue.topicNumber">{{curQue.topicNumber}}.</b>
|
|
|
|
+ <p v-if="curQue.title" v-html="curQue.title" :class="[/^[\u4e00-\u9fa5]/.test(curQue.title)?'hasCn':'']"></p>
|
|
|
|
+ <Audio
|
|
|
|
+ :mp3="
|
|
|
|
+ curQue.topic.mp3_list.length > 0 ? curQue.topic.mp3_list[0].url : ''"
|
|
|
|
+ class="audio-play"
|
|
|
|
+ />
|
|
|
|
+ <div v-for="(itemss,indexss) in curQue.topic.img_list" :key="indexss">
|
|
|
|
+ <el-image
|
|
|
|
+ :src="itemss.url"
|
|
|
|
+ fit="scale-down"
|
|
|
|
+ class="img_url"
|
|
|
|
+ >
|
|
|
|
+ <div slot="placeholder" class="image-slot">
|
|
|
|
+ <img src="../../../assets/common/icon-imgloading.png" />
|
|
|
|
+ </div>
|
|
|
|
+ </el-image>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
<ul v-if="curQue.option">
|
|
<ul v-if="curQue.option">
|
|
- <li v-for="(item, index) in curQue.option" :key="item.id">
|
|
|
|
- <template v-if="curQue.type == 'single'">
|
|
|
|
|
|
+ <li v-for="(item, index) in curQue.option" :key="index" :class="['option'+curQue.numberList.con,single===index?'active':'']">
|
|
<el-radio
|
|
<el-radio
|
|
- v-model="item.isAnswer"
|
|
|
|
|
|
+ v-model="single"
|
|
:label="index"
|
|
:label="index"
|
|
style="margin-right: 0"
|
|
style="margin-right: 0"
|
|
>
|
|
>
|
|
- {{ item.con }}
|
|
|
|
|
|
+ <span v-if="item.number">{{item.number}}.</span>
|
|
|
|
+ <p :class="[/^[\u4e00-\u9fa5]/.test(item.con)?'hasCn':'']">{{ item.con }}</p>
|
|
</el-radio>
|
|
</el-radio>
|
|
- </template>
|
|
|
|
- <template v-if="curQue.type == 'checkbox'">
|
|
|
|
- <el-checkbox v-model="item.isAnswer" :label="index">
|
|
|
|
|
|
+ <!-- <template v-if="curQue.type == 'checkbox'">
|
|
|
|
+ <el-checkbox v-model="single" :label="index">
|
|
{{ item.con }}
|
|
{{ item.con }}
|
|
</el-checkbox>
|
|
</el-checkbox>
|
|
- </template>
|
|
|
|
- <ul v-if="item.img_list && item.img_list.length > 0" class="imglist">
|
|
|
|
- <li v-for="it in item.img_list" :key="it.id">
|
|
|
|
- <img :src="it.url" class="img" />
|
|
|
|
- </li>
|
|
|
|
- </ul>
|
|
|
|
- <ul v-if="item.mp3_list && item.mp3_list.length > 0" class="audioList">
|
|
|
|
- <li
|
|
|
|
- v-for="(it, itindex) in item.mp3_list"
|
|
|
|
- :key="it.id + itindex"
|
|
|
|
- @click="playAudio(it, index)"
|
|
|
|
- >
|
|
|
|
- <img src="../../../assets/adult/Dialogue-audio.png" alt="" />
|
|
|
|
- <span>3s</span>
|
|
|
|
- <audio
|
|
|
|
- :id="it.name + itindex"
|
|
|
|
- v-if="item.mp3_list.length > 0"
|
|
|
|
- :src="it.url"
|
|
|
|
- ></audio>
|
|
|
|
- </li>
|
|
|
|
- </ul>
|
|
|
|
|
|
+ </template> -->
|
|
</li>
|
|
</li>
|
|
</ul>
|
|
</ul>
|
|
-
|
|
|
|
|
|
+ <Soundrecord @handleWav="handleWav" type="normal" class="luyin-box" v-if="curQue.IsRecord"/>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
|
+import Soundrecord from "../preview/Soundrecord.vue"; // 录音模板
|
|
|
|
+import Audio from "../preview/components/AudioRed.vue"; // 音频播放
|
|
export default {
|
|
export default {
|
|
- components: {},
|
|
|
|
|
|
+ components: {Soundrecord, Audio},
|
|
props: ["curQue"],
|
|
props: ["curQue"],
|
|
data() {
|
|
data() {
|
|
- return {};
|
|
|
|
|
|
+ return {
|
|
|
|
+ single:''
|
|
|
|
+ };
|
|
},
|
|
},
|
|
computed: {},
|
|
computed: {},
|
|
watch: {},
|
|
watch: {},
|
|
//方法集合
|
|
//方法集合
|
|
methods: {
|
|
methods: {
|
|
- playAudio(item, index) {
|
|
|
|
- let audio = document.getElementById(`${item.name}${index}`);
|
|
|
|
- audio.play();
|
|
|
|
|
|
+ // 处理数据
|
|
|
|
+ handleData(){
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ handleWav(data) {
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ //判断是不是汉语
|
|
|
|
+ checkCh(str) {
|
|
|
|
+ var RegExp = new RegExp("[\\u4E00-\\u9FFF]", "g");
|
|
|
|
+ return RegExp.test(str);
|
|
|
|
+ },
|
|
|
|
+ checkEn(str) {
|
|
|
|
+ var RegExp = /^[a-zA-Z]+$/;
|
|
|
|
+ return RegExp.test(str);
|
|
},
|
|
},
|
|
},
|
|
},
|
|
//生命周期 - 创建完成(可以访问当前this实例)
|
|
//生命周期 - 创建完成(可以访问当前this实例)
|
|
- created() {},
|
|
|
|
|
|
+ created() {
|
|
|
|
+ this.handleData()
|
|
|
|
+ },
|
|
//生命周期 - 挂载完成(可以访问DOM元素)
|
|
//生命周期 - 挂载完成(可以访问DOM元素)
|
|
mounted() {},
|
|
mounted() {},
|
|
beforeCreate() {}, //生命周期 - 创建之前
|
|
beforeCreate() {}, //生命周期 - 创建之前
|
|
@@ -79,38 +94,99 @@ export default {
|
|
ul {
|
|
ul {
|
|
list-style: none;
|
|
list-style: none;
|
|
margin: 0;
|
|
margin: 0;
|
|
- li {
|
|
|
|
- margin-bottom: 10px;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-.imglist {
|
|
|
|
display: flex;
|
|
display: flex;
|
|
- img {
|
|
|
|
- margin-left: 2px;
|
|
|
|
|
|
+ justify-content: start;
|
|
|
|
+ flex-flow: wrap;
|
|
|
|
+ li {
|
|
|
|
+ padding: 8px 16px;
|
|
|
|
+ border-radius: 4px;
|
|
|
|
+ &:hover,&.active{
|
|
|
|
+ background: #fff;
|
|
|
|
+ }
|
|
|
|
+ &.option1{
|
|
|
|
+ width: 100%;
|
|
|
|
+ }
|
|
|
|
+ &.option2{
|
|
|
|
+ width: 50%;
|
|
|
|
+ }
|
|
|
|
+ &.option3{
|
|
|
|
+ width: 33.33%;
|
|
|
|
+ }
|
|
|
|
+ &.option4{
|
|
|
|
+ width: 25%;
|
|
|
|
+ }
|
|
|
|
+ .el-radio{
|
|
|
|
+ width: 100%;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-.audioList {
|
|
|
|
- display: flex;
|
|
|
|
- > li {
|
|
|
|
- width: 144px;
|
|
|
|
- height: 40px;
|
|
|
|
- background: #ffffff;
|
|
|
|
|
|
+.Big-Book-prev-Textdes{
|
|
|
|
+ width: 100%;
|
|
|
|
+ background: #F7F7F7;
|
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
- box-sizing: border-box;
|
|
|
|
- border-radius: 4px;
|
|
|
|
- display: flex;
|
|
|
|
- justify-content: space-between;
|
|
|
|
- align-items: center;
|
|
|
|
- padding: 0 8px;
|
|
|
|
- img {
|
|
|
|
- width: 24px;
|
|
|
|
- height: 24px;
|
|
|
|
|
|
+ padding: 24px;
|
|
|
|
+ border-radius: 8px;
|
|
|
|
+ .stem-box{
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: flex-start;
|
|
|
|
+ justify-content: flex-start;
|
|
|
|
+ margin-bottom: 8px;
|
|
|
|
+ .audio-play{
|
|
|
|
+ width: 24px;
|
|
|
|
+ margin-left: 4px;
|
|
|
|
+ }
|
|
|
|
+ b{
|
|
|
|
+ font-size: 16px;
|
|
|
|
+ font-weight: normal;
|
|
|
|
+ line-height: 24px;
|
|
|
|
+ }
|
|
|
|
+ p{
|
|
|
|
+ margin: 0 0 16px 0;
|
|
|
|
+ color: #000000;
|
|
|
|
+ font-size: 16px;
|
|
|
|
+ line-height: 150%;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ .hasCn{
|
|
|
|
+ font-family: 'FZJCGFKTK';
|
|
}
|
|
}
|
|
- cursor: pointer;
|
|
|
|
- margin-right: 10px;
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
-.img {
|
|
|
|
- width: 200px;
|
|
|
|
|
|
+</style>
|
|
|
|
+<style lang="scss">
|
|
|
|
+.NNPE-single{
|
|
|
|
+ .el-radio{
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: flex-start;
|
|
|
|
+ }
|
|
|
|
+ .el-radio__label{
|
|
|
|
+ color: #000;
|
|
|
|
+ font-size: 16px;
|
|
|
|
+ line-height: 150%;
|
|
|
|
+ font-weight: normal;
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: flex-start;
|
|
|
|
+ }
|
|
|
|
+ .el-radio__input.is-checked+.el-radio__label{
|
|
|
|
+ color: #000;
|
|
|
|
+ }
|
|
|
|
+ .el-radio__inner::after{
|
|
|
|
+ width: 8px;
|
|
|
|
+ height: 8px;
|
|
|
|
+ }
|
|
|
|
+ .el-radio__label{
|
|
|
|
+ span{
|
|
|
|
+ font-family: 'FZJCGFKTK';
|
|
|
|
+ margin-right: 4px;
|
|
|
|
+ }
|
|
|
|
+ p{
|
|
|
|
+ margin: 0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ .el-radio__inner{
|
|
|
|
+ width: 16px;
|
|
|
|
+ height: 16px;
|
|
|
|
+ margin-top: 4px;
|
|
|
|
+ margin-right: 2px;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
</style>
|
|
</style>
|