|
|
@@ -16,15 +16,22 @@
|
|
|
<el-option v-for="q in question_type" :label="q.label" :value="q.value"/>
|
|
|
</el-select>
|
|
|
</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 label="科目" prop="subjectId">
|
|
|
- <el-select v-model="queryParams.subjectId" clearable @change="handleSubjectChange" style="width: 172px">
|
|
|
- <el-option v-for="s in subjectList" :label="s.subjectName" :value="s.subjectId"/>
|
|
|
+ <el-select v-model="queryParams.subjectId" clearable filterable @change="handleSubjectChange" style="width: 172px" placeholder="请选择科目">
|
|
|
+ <el-option v-for="s in subjectList" :label="getSubjectDisplayLabel(s)" :value="s.subjectId"/>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="知识点" prop="knowledgeId">
|
|
|
<el-tree-select node-key="id" v-model="queryParams.knowledgeId" :data="filteredKnowledgeTreeList" check-strictly
|
|
|
:render-after-expand="false" style="" :props="{ label: 'name', children: 'children' }"
|
|
|
- placeholder="请选择知识点" class="w-[172px]!" @change="handleQuery"/>
|
|
|
+ placeholder="请选择知识点" class="w-[172px]!" @change="handleQuery"
|
|
|
+ clearable
|
|
|
+ filterable/>
|
|
|
</el-form-item>
|
|
|
<!-- <el-form-item label="难度" prop="diff">
|
|
|
<el-input v-model="queryParams.diff" placeholder="请输入难度" clearable @keyup.enter="handleQuery"/>
|
|
|
@@ -47,11 +54,7 @@
|
|
|
<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>
|
|
|
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
|
|
@@ -98,7 +101,10 @@
|
|
|
<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">
|
|
|
+ <span v-if="scope.row.knowledgeTrees && scope.row.knowledgeTrees.length > 0">
|
|
|
+ {{ getSubjectIdsFromKnowledgeTrees(scope.row.knowledgeTrees) }}
|
|
|
+ </span>
|
|
|
+ <span v-else-if="scope.row.subjectId">
|
|
|
{{ scope.row.subjectId }}-{{ getSubjectName(scope.row.subjectId) }}
|
|
|
</span>
|
|
|
<span v-else>-</span>
|
|
|
@@ -620,6 +626,7 @@ 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 {exam_type} = proxy.useDict('exam_type')
|
|
|
const questionsList = ref([])
|
|
|
const open = ref(false)
|
|
|
const loading = ref(true)
|
|
|
@@ -862,6 +869,64 @@ function getSubjectName(subjectId) {
|
|
|
return subject ? subject.subjectName : '-'
|
|
|
}
|
|
|
|
|
|
+/** 从knowledgeTrees中获取所有subjectId并格式化显示 */
|
|
|
+function getSubjectIdsFromKnowledgeTrees(knowledgeTrees) {
|
|
|
+ if (!knowledgeTrees || knowledgeTrees.length === 0) {
|
|
|
+ return '-'
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取所有不同的subjectId
|
|
|
+ const subjectIds = [...new Set(knowledgeTrees
|
|
|
+ .map(kt => kt.subjectId)
|
|
|
+ .filter(id => id != null && id !== undefined)
|
|
|
+ )]
|
|
|
+
|
|
|
+ if (subjectIds.length === 0) {
|
|
|
+ return '-'
|
|
|
+ }
|
|
|
+
|
|
|
+ // 格式化显示:subjectId-科目名称
|
|
|
+ const subjectDisplays = subjectIds.map(subjectId => {
|
|
|
+ return `${subjectId}-${getSubjectName(subjectId)}`
|
|
|
+ })
|
|
|
+
|
|
|
+ return subjectDisplays.join(', ')
|
|
|
+}
|
|
|
+
|
|
|
+/** 获取科目显示标签(包含subjectName、locations、examTypes) */
|
|
|
+function getSubjectDisplayLabel(subject) {
|
|
|
+ if (!subject) return ''
|
|
|
+
|
|
|
+ const parts = []
|
|
|
+
|
|
|
+ // 添加科目名称
|
|
|
+ if (subject.subjectName) {
|
|
|
+ parts.push(subject.subjectName)
|
|
|
+ }
|
|
|
+ if (subject.subjectId) {
|
|
|
+ parts.push(subject.subjectId)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 添加适合省份
|
|
|
+ if (subject.locations) {
|
|
|
+ parts.push(subject.locations)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 添加适合类别(通过字典转换,支持多个值用逗号分隔)
|
|
|
+ if (subject.examTypes) {
|
|
|
+ const examTypeValues = subject.examTypes.split(',').map(v => v.trim()).filter(v => v)
|
|
|
+ const examTypeLabels = examTypeValues.map(value => {
|
|
|
+ const dictItem = exam_type.value?.find(item => item.value === value)
|
|
|
+ return dictItem ? dictItem.label : value
|
|
|
+ })
|
|
|
+ if (examTypeLabels.length > 0) {
|
|
|
+ parts.push(examTypeLabels.join(','))
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return parts.join('-')
|
|
|
+}
|
|
|
+
|
|
|
// 取消按钮
|
|
|
function cancel() {
|
|
|
open.value = false
|