Prechádzať zdrojové kódy

修复完善练习列表

dusenyao 1 rok pred
rodič
commit
a053dcae1d

+ 3 - 0
src/icons/svg/audio-stop.svg

@@ -0,0 +1,3 @@
+<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M1 0H13C13.5523 0 14 0.44772 14 1V13C14 13.5523 13.5523 14 13 14H1C0.44772 14 0 13.5523 0 13V1C0 0.44772 0.44772 0 1 0Z" fill="white"/>
+</svg>

+ 23 - 3
src/views/exercise_questions/create/components/common/AudioPlay.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="audio-wrapper">
     <span class="audio-play" @click="playAudio">
-      <SvgIcon size="20" icon-class="audio" />
+      <SvgIcon :size="audio.paused ? 20 : 14" :icon-class="iconClass" />
     </span>
     <audio ref="audio" :src="url" preload="metadata"></audio>
   </div>
@@ -20,9 +20,17 @@ export default {
   },
   data() {
     return {
-      url: ''
+      url: '',
+      audio: {
+        paused: true
+      }
     };
   },
+  computed: {
+    iconClass() {
+      return this.audio.paused ? 'audio' : 'audio-stop';
+    }
+  },
   watch: {
     fileId: {
       handler(val) {
@@ -34,9 +42,21 @@ export default {
       immediate: true
     }
   },
+  mounted() {
+    this.$refs.audio.addEventListener('ended', () => {
+      this.audio.paused = true;
+    });
+    this.$refs.audio.addEventListener('pause', () => {
+      this.audio.paused = true;
+    });
+    this.$refs.audio.addEventListener('play', () => {
+      this.audio.paused = false;
+    });
+  },
   methods: {
     playAudio() {
-      this.$refs.audio.play();
+      const audio = this.$refs.audio;
+      audio.paused ? audio.play() : audio.pause();
     }
   }
 };

+ 8 - 0
src/views/exercise_questions/create/components/create.vue

@@ -36,6 +36,7 @@
 <script>
 import { SaveQuestion } from '@/api/exercise';
 import { timeFormatConversion } from '@/utils/transform';
+import { scoreTypeList } from '@/views/exercise_questions/data/common';
 
 import SelectQuestion from './exercises/SelectQuestion.vue';
 
@@ -118,6 +119,13 @@ export default {
      */
     dataConversion() {
       const data = this.$refs.exercise[0].data;
+      if (data.setting.score_type === scoreTypeList[0].value) {
+        data.answer.score = data.setting.score;
+      }
+      if (data.setting.score_type === scoreTypeList[1].value) {
+        data.answer.item_score = data.setting.score;
+      }
+      console.log(data.answer);
       return {
         question_id: this.indexList[this.curIndex].id,
         type: data.type,

+ 17 - 4
src/views/home/personal_question/index.vue

@@ -38,11 +38,20 @@
 
       <template #search>
         <span class="search-name">搜索</span>
-        <el-input v-model="searchData.search_content" placeholder="全部" suffix-icon="el-icon-search" />
+        <el-input
+          v-model="searchData.search_content"
+          placeholder="全部"
+          suffix-icon="el-icon-search"
+          @keyup.enter.native="getPageList"
+        />
+
         <span class="search-name">创建者</span>
-        <el-input v-model="searchData.creator_name" placeholder="请输入内容" />
+        <el-input v-model="searchData.creator_name" placeholder="请输入内容" @keyup.enter.native="getPageList" />
+
         <span class="search-name">状态</span>
-        <el-input v-model="searchData.status" placeholder="请输入内容" />
+        <el-select v-model="searchData.status_list" multiple placeholder="全部" @change="getPageList">
+          <el-option v-for="{ label, value } in statusType" :key="value" :label="label" :value="value" />
+        </el-select>
       </template>
     </HomeCommon>
 
@@ -70,6 +79,10 @@ export default {
         creator_name: '',
         status_list: []
       },
+      statusType: [
+        { label: '未发布', value: 0 },
+        { label: '已发布', value: 1 }
+      ],
       statusList: [
         { name: '未发布', class: 'unpublished' },
         { name: '已发布', class: 'published' }
@@ -86,7 +99,7 @@ export default {
     },
     pageQueryExerciseList(data) {
       PageQueryExerciseList({ ...data, store_type: 1, ...this.searchData }).then(({ total_count, exercise_list }) => {
-        this.total = total_count;
+        this.total_count = total_count;
         this.exercise_list = exercise_list;
       });
     },

+ 7 - 2
src/views/home/public_question/index.vue

@@ -23,7 +23,12 @@
 
     <template #search>
       <span class="search-name">搜索</span>
-      <el-input v-model="searchData.search_content" placeholder="全部" suffix-icon="el-icon-search" />
+      <el-input
+        v-model="searchData.search_content"
+        placeholder="全部"
+        suffix-icon="el-icon-search"
+        @keyup.enter.native="getPageList"
+      />
 
       <span class="search-name">发布者</span>
       <el-select v-model="searchData.teacher_type" placeholder="全部" @change="getPageList">
@@ -31,7 +36,7 @@
       </el-select>
 
       <span class="search-name">标签</span>
-      <el-select v-model="searchData.label_list" multiple placeholder="全部">
+      <el-select v-model="searchData.label_list" multiple placeholder="全部" @change="getPageList">
         <el-option v-for="item in label_list" :key="item" :label="item" :value="item" />
       </el-select>
     </template>