jinxia.mo 1 месяц назад
Родитель
Сommit
ddd3f7f21a

+ 68 - 27
back-ui/src/views/learn/questions/index.vue

@@ -1,12 +1,16 @@
 <template>
     <div class="app-container">
         <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+            <el-form-item label="ID" prop="题目ID">
+                <el-input v-model="queryParams.id" placeholder="请输入题目ID" clearable
+                          @keyup.enter="handleQuery"/>
+            </el-form-item>
             <el-form-item label="题干" prop="title">
                 <el-input v-model="queryParams.title" placeholder="请输入题干关键词" clearable
                           @keyup.enter="handleQuery"/>
             </el-form-item>
-            <el-form-item label="型" prop="qtpye">
-                <!-- <el-input v-model="queryParams.qtpye" placeholder="请输入型" clearable @keyup.enter="handleQuery" /> -->
+            <el-form-item label="型" prop="qtpye">
+                <!-- <el-input v-model="queryParams.qtpye" placeholder="请输入型" clearable @keyup.enter="handleQuery" /> -->
                 <!-- <dict-tag :options="question_type" :value="queryParams.qtpye"/> -->
                 <el-select v-model="queryParams.typeId" clearable @change="handleQuery" style="width: 172px">
                     <el-option v-for="q in question_type" :label="q.label" :value="q.value"/>
@@ -22,9 +26,9 @@
                                 :render-after-expand="false" style="" :props="{ label: 'name', children: 'children' }"
                                 placeholder="请选择知识点" class="w-[172px]!" @change="handleQuery"/>
             </el-form-item>
-            <el-form-item label="难度" prop="diff">
+            <!-- <el-form-item label="难度" prop="diff">
                 <el-input v-model="queryParams.diff" placeholder="请输入难度" clearable @keyup.enter="handleQuery"/>
-            </el-form-item>
+            </el-form-item> -->
             <!-- <el-form-item label="相似度" prop="similarity">
               <el-input v-model="queryParams.similarity" placeholder="请输入试题在题库中的相似度" clearable @keyup.enter="handleQuery" />
             </el-form-item> -->
@@ -39,9 +43,14 @@
             <el-form-item label="来源" prop="source">
                 <el-input v-model="queryParams.source" placeholder="请输入来源" clearable @keyup.enter="handleQuery"/>
             </el-form-item>
-            <el-form-item label="试题来源" prop="fromSite">
+            <!-- <el-form-item label="试题来源" prop="fromSite">
                 <el-input v-model="queryParams.fromSite" placeholder="请输入试题来源" clearable
                           @keyup.enter="handleQuery"/>
+            </el-form-item> -->
+            <el-form-item label="包含子题" prop="isSubType">
+                <el-select v-model="queryParams.isSubType" placeholder="请选择包含子题" clearable style="width: 172px">
+                    <el-option v-for="item in bool_values" :key="item.value" :label="item.label" :value="item.value" />
+                </el-select>
             </el-form-item>
             <el-form-item>
                 <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
@@ -79,33 +88,40 @@
 
         <el-table v-loading="loading" :data="questionsList" @selection-change="handleSelectionChange">
             <el-table-column type="selection" width="55" align="center" fixed="left"/>
-            <!-- <el-table-column label="id" align="center" prop="id" fixed="left" /> -->
-            <el-table-column label="试题-题干" align="left" prop="title" min-width="450" header-align="center"
+            <el-table-column label="ID" align="center" prop="id" fixed="left" />
+            <el-table-column label="试题-题干" align="left" prop="title" min-width="350" header-align="center"
                              show-overflow-tooltip fixed="left"/>
-            <el-table-column label="类型" align="center" prop="qtpye"/>
-            <el-table-column label="学科Id" align="center" prop="subjectId"/>
+            <el-table-column label="题型" align="center" prop="qtpye"/>
+            <el-table-column label="学科" align="center" prop="subjectId">
+                <template #default="scope">
+                    <span v-if="scope.row.subjectId">
+                        {{ getSubjectName(scope.row.subjectId) }}
+                    </span>
+                    <span v-else>-</span>
+                </template>
+            </el-table-column>
             <el-table-column label="知识点" align="center" prop="knowledgeId"/>
             <el-table-column label="选项A" align="center" prop="optionA" show-overflow-tooltip/>
             <el-table-column label="选项B" align="center" prop="optionB" show-overflow-tooltip/>
             <el-table-column label="选项C" align="center" prop="optionC" show-overflow-tooltip/>
             <el-table-column label="选项D" align="center" prop="optionD" show-overflow-tooltip/>
             <el-table-column label="选项E" align="center" prop="optionE" show-overflow-tooltip/>
-            <el-table-column label="选项D" align="center" prop="optionF" show-overflow-tooltip/>
-            <el-table-column label="选项E" align="center" prop="optionG" show-overflow-tooltip/>
+            <el-table-column label="选项F" align="center" prop="optionF" show-overflow-tooltip/>
+            <el-table-column label="选项G" align="center" prop="optionG" show-overflow-tooltip/>
             <el-table-column label="标准答案" align="center" prop="answer1" show-overflow-tooltip/>
             <el-table-column label="答案2" align="center" prop="answer2" show-overflow-tooltip/>
-            <el-table-column label="试卷Id" align="center" prop="paperId"/>
-            <el-table-column label="难易度" align="center" prop="diff"/>
-            <el-table-column label="相似度" align="center" prop="similarity"/>
+            <!-- <el-table-column label="试卷Id" align="center" prop="paperId"/> -->
+            <!-- <el-table-column label="难易度" align="center" prop="diff"/> -->
+            <!-- <el-table-column label="相似度" align="center" prop="similarity"/> -->
             <el-table-column label="试题解析" align="center" prop="parse" min-width="250" show-overflow-tooltip/>
             <!-- <el-table-column label="knowId" align="center" prop="knowId" /> -->
-            <el-table-column label="年级ID" align="center" prop="gradeId"/>
+            <!-- <el-table-column label="年级ID" align="center" prop="gradeId"/> -->
             <!-- <el-table-column label="knowledges" align="center" prop="knowledges" /> -->
-            <el-table-column label="试题区域" align="center" prop="area"/>
+            <!-- <el-table-column label="试题区域" align="center" prop="area"/> -->
             <el-table-column label="试题年份" align="center" prop="year"/>
-            <el-table-column label="试题类型" align="center" prop="paperTpye"/>
+            <!-- <el-table-column label="试题类型" align="center" prop="paperTpye"/> -->
             <el-table-column label="来源" align="center" prop="source"/>
-            <el-table-column label="试题来源" align="center" prop="fromSite"/>
+            <!-- <el-table-column label="试题来源" align="center" prop="fromSite"/> -->
             <el-table-column label="图片水印" align="center" prop="isSub"/>
             <el-table-column label="常规题" align="center" prop="isNormal"/>
             <el-table-column label="匹配知识点" align="center" prop="isKonw" min-width="120"/>
@@ -113,17 +129,25 @@
             <!-- <el-table-column label="试题题干的md5值" align="center" prop="md5" /> -->
             <el-table-column label="是否唯一" align="center" prop="isunique"/>
             <!-- <el-table-column label="md52" align="center" prop="md52" /> -->
-            <el-table-column label="分" align="center" prop="score"/>
+            <el-table-column label="分" align="center" prop="score"/>
             <el-table-column label="选项" align="center" prop="options"/>
             <!-- <el-table-column label="number" align="center" prop="number" /> -->
             <!-- <el-table-column label="paperTypeTitle" align="center" prop="paperTypeTitle" /> -->
             <el-table-column label="选项" align="center" prop="options0"/>
-            <el-table-column label="试题-材料题题干" align="center" prop="title0" min-width="130"/>
-            <el-table-column label="试题-材料题题干" align="center" prop="title1" min-width="130"/>
+            <el-table-column label="试题-材料题题干" align="center" prop="title0" min-width="130" show-overflow-tooltip/>
+            <el-table-column label="试题-材料题题干" align="center" prop="title1" min-width="130" show-overflow-tooltip/>
             <el-table-column label="试题解析" align="left" prop="parse0" header-align="center" show-overflow-tooltip/>
             <el-table-column label="answer0" align="center" prop="answer0"/>
-            <el-table-column label="是否更新" align="center" prop="isUpdate"/>
-            <el-table-column label="子题类型" align="center" prop="isSubType"/>
+            <el-table-column label="是否更新" align="center" prop="isUpdate">
+                <template #default="scope">
+                    <dict-tag :options="bool_values" :value="scope.row.isUpdate" />
+                </template>
+            </el-table-column>
+            <el-table-column label="包含子题" align="center" prop="isSubType">
+                <template #default="scope">
+                    <dict-tag :options="bool_values" :value="scope.row.isSubType" />
+                </template>
+            </el-table-column>
             <el-table-column label="操作" align="center" class-name="small-padding fixed-width" min-width="140"
                              fixed="right">
                 <template #default="scope">
@@ -143,6 +167,9 @@
         <!-- 添加或修改试题对话框 -->
         <el-dialog :title="title" v-model="open" width="700px" append-to-body>
             <el-form ref="questionsRef" :model="form" :rules="rules" label-width="140px">
+                <el-form-item label="题型" prop="qtpye">
+                    <el-input v-model="form.qtpye" type="text" placeholder="请输入内容"/>
+                </el-form-item>
                 <el-form-item label="试题-题干" prop="title">
                     <el-input v-model="form.title" type="textarea" placeholder="请输入内容"/>
                 </el-form-item>
@@ -179,8 +206,10 @@
                         <el-option v-for="q in question_type" :label="q.label" :value="q.value"/>
                     </el-select>
                 </el-form-item>
-                <el-form-item label="学科Id" prop="subjectId">
-                    <el-input v-model="form.subjectId" placeholder="请输入学科Id"/>
+                <el-form-item label="学科" prop="subjectId">
+                    <el-select v-model="form.subjectId" placeholder="请选择学科">
+                        <el-option v-for="s in subjectList" :label="s.subjectName" :value="s.subjectId"/>
+                    </el-select>
                 </el-form-item>
                 <!-- <el-form-item label="${comment}" prop="paperId">
                   <el-input v-model="form.paperId" placeholder="请输入${comment}" />
@@ -245,8 +274,8 @@
                 <!-- <el-form-item label="${comment}" prop="md52">
                   <el-input v-model="form.md52" placeholder="请输入${comment}" />
                 </el-form-item> -->
-                <el-form-item label="分" prop="score">
-                    <el-input v-model="form.score" placeholder="请输入分"/>
+                <el-form-item label="分" prop="score">
+                    <el-input v-model="form.score" placeholder="请输入分"/>
                 </el-form-item>
                 <el-form-item label="选项" prop="options">
                     <el-input v-model="form.options" type="textarea" placeholder="请输入内容"/>
@@ -307,10 +336,12 @@ import {listQuestions, getQuestions, delQuestions, addQuestions, updateQuestions
 import {listKnowledgeTree} from "@/api/learn/knowledgeTree"
 import {listAllSubject} from "@/api/dz/subject"
 import {ElMessage} from "element-plus";
+import DictTag from '@/components/DictTag/index.vue'
 
 const {proxy} = getCurrentInstance()
 const {question_type} = proxy.useDict('question_type')
 const {paper_type} = proxy.useDict('paper_type')
+const {bool_values} = proxy.useDict('bool_values')
 const questionsList = ref([])
 const open = ref(false)
 const loading = ref(true)
@@ -334,6 +365,7 @@ const data = reactive({
     queryParams: {
         pageNum: 1,
         pageSize: 10,
+        id: null,
         title: null,
         optionA: null,
         optionB: null,
@@ -408,6 +440,15 @@ function getSubjectList() {
     })
 }
 
+/** 根据学科ID获取学科名称 */
+function getSubjectName(subjectId) {
+    if (!subjectId || !subjectList.value || subjectList.value.length === 0) {
+        return '-'
+    }
+    const subject = subjectList.value.find(s => s.subjectId === subjectId)
+    return subject ? subject.subjectName : '-'
+}
+
 // 取消按钮
 function cancel() {
     open.value = false

+ 1 - 1
ie-system/src/main/resources/mapper/learn/LearnQuestionsMapper.xml

@@ -59,7 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectLearnQuestionsList" parameterType="LearnQuestions" resultMap="LearnQuestionsResult">
         <include refid="selectLearnQuestionsVo"/>
         <where>
-            <if test="id != null"> and id &gt; #{id}</if>
+            <if test="id != null"> and id = #{id}</if>
             <if test="title != null  and title != ''"> and title like concat('%', #{title}, '%')</if>
             <if test="optionA != null  and optionA != ''"> and option_a = #{optionA}</if>
             <if test="optionB != null  and optionB != ''"> and option_b = #{optionB}</if>