Kaynağa Gözat

1、课程配置试题的呈现方式改变

liyanbo 9 ay önce
ebeveyn
işleme
032ea0cc96

+ 6 - 1
src/api/bjdx/courseconfig/index.ts

@@ -8,7 +8,12 @@ export interface CourseConfigVO {
   ccTime: number // 课程暂停时长
   ccQuestId: number // 试题id
   questContent: string // 试题内容
-  ccAnswerJudge: string // 是否显示答案
+  ccAnswerJudge: string // 是否显示答案, // 选择的试题id
+  ccQuestSource: undefined // 问题呈现类型
+  ccQuestContent: undefined  // 问题内容
+  ccQuestOption: undefined  // 问题选项
+  ccAiAnswer: undefined  // AI答案
+  ccAnswer: undefined  // 答案
 }
 
 // 课程配置 API

+ 1 - 0
src/utils/dict.ts

@@ -250,4 +250,5 @@ export enum DICT_TYPE {
   COURSE_QUESTION_TYPE = 'bjdx_quest_type', // 试题类型
   COURSE_LABEL = 'bjdx_course_label', // 课程标签
   COURSE_COUTNET_TYPE = 'bjdx_course_content_type', // 课程内容类型
+  COURSE_QUEST_SHOW_TYPE = 'bjdx_course_quest_show_type', // 课程试题呈现类型
 }

+ 125 - 82
src/views/bjdx/courseconfig/CourseConfigForm.vue

@@ -23,102 +23,135 @@
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="是否显示答案" prop="ccAnswerJudge" required>
+          <el-form-item label="是否显示答案" prop="ccAnswerJudge" >
             <el-radio-group v-model="formData.ccAnswerJudge">
               <el-radio
                 v-for="dict in getStrDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
                 :key="dict.value"
                 :label="dict.value"
-                >{{ dict.label }}
+              >{{ dict.label }}
               </el-radio>
             </el-radio-group>
           </el-form-item>
         </el-col>
+        <el-col :span="24">
+          <br/>
+          <el-form-item label="问题呈现类型" prop="ccQuestSource" required>
+            <el-segmented v-model="formData.ccQuestSource" :options="getStrDictOptions(DICT_TYPE.COURSE_QUEST_SHOW_TYPE)" />
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="24" v-if="formData.ccQuestSource === '1'" required>
+          <el-form-item label="试题内容" prop="ccQuestContent">
+            <Editor v-model="formData.ccQuestContent" height="150px" />
+          </el-form-item>
+
+          <el-form-item label="试题选项" prop="ccQuestOption">
+            <el-input v-model="formData.ccQuestOption" placeholder="请输入试题选项( 示例:多个选项用英文,分割 )" />
+          </el-form-item>
+
+          <el-form-item label="答  案" prop="ccAnswer">
+            <el-input v-model="formData.ccAnswer" placeholder="请输入答案" />
+          </el-form-item>
+
+          <el-form-item label="Ai答案" prop="ccAiAnswer">
+            <el-input v-model="formData.ccAiAnswer" placeholder="请输入Ai答案" />
+          </el-form-item>
+        </el-col>
       </el-row>
-    </el-form>
 
-    <br/><br/>
+      <div v-if="formData.ccQuestSource === '2'">
+        <ContentWrap>
+          <!-- 搜索工作栏 -->
+          <el-form
+            class="-mb-15px"
+            :model="questQueryParams"
+            ref="queryFormRef"
+            :inline="true"
+            label-width="68px"
+          >
+            <el-form-item label="试题类型" prop="cqQuestType">
+              <el-select
+                v-model="questQueryParams.cqQuestType"
+                placeholder="请选择试题类型"
+                clearable
+                class="!w-240px"
+              >
+                <el-option
+                  v-for="dict in getStrDictOptions(DICT_TYPE.COURSE_QUESTION_TYPE)"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="试题内容" prop="cqQuestion">
+              <el-input
+                v-model="questQueryParams.cqQuestion"
+                placeholder="请输入试题内容"
+                clearable
+                @keyup.enter="loadQuestionList"
+                class="!w-240px"
+              />
+            </el-form-item>
+            <el-form-item>
+              <el-button @click="loadQuestionList"
+              ><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
+              >
+              <el-button @click="resetQuestionQuery"
+              ><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
+              >
+            </el-form-item>
+          </el-form>
+        </ContentWrap>
 
-    <ContentWrap>
-      <!-- 搜索工作栏 -->
-      <el-form
-        class="-mb-15px"
-        :model="questQueryParams"
-        ref="queryFormRef"
-        :inline="true"
-        label-width="68px"
-      >
-        <el-form-item label="试题类型" prop="cqQuestType">
-          <el-select
-            v-model="questQueryParams.cqQuestType"
-            placeholder="请选择试题类型"
-            clearable
-            class="!w-240px"
+        <!-- 列表 -->
+        <ContentWrap>
+          <el-table
+            v-loading="questionLoading"
+            :data="questionList"
+            :stripe="true"
+            :show-overflow-tooltip="true"
           >
-            <el-option
-              v-for="dict in getStrDictOptions(DICT_TYPE.COURSE_QUESTION_TYPE)"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="试题内容" prop="cqQuestion">
-          <el-input
-            v-model="questQueryParams.cqQuestion"
-            placeholder="请输入试题内容"
-            clearable
-            @keyup.enter="loadQuestionList"
-            class="!w-240px"
+            <el-table-column label="选择" width="80">
+              <template #default="scope">
+                <el-radio
+                  v-model="formData.ccQuestId"
+                  :label="scope.row.id"
+                  @change="handleQuestionSelect(scope.row)"
+                />
+              </template>
+            </el-table-column>
+            <el-table-column label="试题内容" align="center" prop="cqQuestion" >
+              <template #default="scope">
+                <div v-html="scope.row.cqQuestion"></div>
+              </template>
+            </el-table-column>
+            <el-table-column label="试题解析" align="center" prop="cqQuestAnalysis" >
+              <template #default="scope">
+                <div v-html="scope.row.cqQuestAnalysis"></div>
+              </template>
+            </el-table-column>
+            <el-table-column label="试题类型" align="center" prop="cqQuestType" >
+              <template #default="scope">
+                <dict-tag :type="DICT_TYPE.COURSE_QUESTION_TYPE" :value="scope.row.cqQuestType" />
+              </template>
+            </el-table-column>
+          </el-table>
+          <!-- 分页 -->
+          <Pagination
+            :total="questionTotal"
+            v-model:page="questQueryParams.pageNo"
+            v-model:limit="questQueryParams.pageSize"
+            @pagination="loadQuestionList"
           />
-        </el-form-item>
-        <el-form-item>
-          <el-button @click="loadQuestionList"
-            ><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
-          >
-          <el-button @click="resetQuestionQuery"
-            ><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
-          >
-        </el-form-item>
-      </el-form>
-    </ContentWrap>
-
-    <!-- 列表 -->
-    <ContentWrap>
-      <el-table
-        v-loading="questionLoading"
-        :data="questionList"
-        :stripe="true"
-        :show-overflow-tooltip="true"
-      >
-        <el-table-column label="选择" width="80">
-          <template #default="scope">
-            <el-radio
-              v-model="formData.ccQuestId"
-              :label="scope.row.id"
-              @change="handleQuestionSelect(scope.row)"
-            />
-          </template>
-        </el-table-column>
-        <el-table-column label="试题内容" align="center" prop="cqQuestion" />
-        <el-table-column label="试题解析" align="center" prop="cqQuestAnalysis" />
-        <el-table-column label="试题类型" align="center" prop="cqQuestType" >
-          <template #default="scope">
-              <dict-tag :type="DICT_TYPE.COURSE_QUESTION_TYPE" :value="scope.row.cqQuestType" />
-          </template>
-        </el-table-column>
-      </el-table>
-      <!-- 分页 -->
-      <Pagination
-        :total="questionTotal"
-        v-model:page="questQueryParams.pageNo"
-        v-model:limit="questQueryParams.pageSize"
-        @pagination="loadQuestionList"
-      />
-    </ContentWrap>
+        </ContentWrap>
+      </div>
+    </el-form>
 
     <!-- 底部按钮 -->
     <template #footer>
+      <el-button @click="submitForm" type="primary" :disabled="formLoading">同步内容</el-button>
       <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
@@ -147,11 +180,16 @@ const formData = ref({
   courseName: undefined, // 课程名称(显示用)
   ccTime: undefined, // 暂停时长(必填)
   ccAnswerJudge: undefined, // 是否显示答案(必填)
-  ccQuestId: undefined,
+  ccQuestId: undefined, // 选择的试题id
+  ccQuestSource: '0', // 问题呈现类型
+  ccQuestContent: undefined,  // 问题内容
+  ccQuestOption: undefined,  // 问题选项
+  ccAiAnswer: undefined,  // AI答案
+  ccAnswer: undefined,  // 答案
 })
 const formRules = reactive({
   ccTime: [{ required: true, message: t('common.required'), trigger: 'blur' }],
-  ccAnswerJudge: [{ required: true, message: t('common.required'), trigger: 'change' }]
+  ccQuestContent: [{ required: true, message: t('common.required'), trigger: 'change' }]
 })
 const formRef = ref()
 
@@ -258,7 +296,12 @@ const resetForm = () => {
     courseName: undefined,
     ccTime: undefined,
     ccAnswerJudge: undefined,
-    ccQuestId: []
+    ccQuestId: undefined, // 选择的试题id
+    ccQuestSource: '0', // 问题呈现类型
+    ccQuestContent: undefined,  // 问题内容
+    ccQuestOption: undefined,  // 问题选项
+    ccAiAnswer: undefined,  // AI答案
+    ccAnswer: undefined,  // 答案
   }
   formRef.value?.resetFields()
   selectedQuestIds.value = []

+ 10 - 2
src/views/bjdx/courseconfig/index.vue

@@ -81,11 +81,19 @@
       <el-table-column label="课程配置id" align="center" prop="id" />
       <el-table-column label="课程名称" align="center" prop="courseName" />
       <el-table-column label="课程暂停时长" align="center" prop="ccTime" />
-      <el-table-column label="试题内容" align="center" prop="questContent">
+      <el-table-column label="暂停类型" align="center" prop="ccQuestSource" >
         <template #default="scope">
-          <div v-html="scope.row.questContent"></div>
+          <dict-tag :type="DICT_TYPE.COURSE_QUEST_SHOW_TYPE" :value="scope.row.ccQuestSource" />
         </template>
       </el-table-column>
+      <el-table-column label="试题内容" align="center" prop="ccQuestContent">
+        <template #default="scope">
+          <div v-html="scope.row.ccQuestContent"></div>
+        </template>
+      </el-table-column>
+      <el-table-column label="试题选项" align="center" prop="ccQuestOption" />
+      <el-table-column label="试题答案" align="center" prop="ccAnswer" />
+      <el-table-column label="Ai答案" align="center" prop="ccAiAnswer" />
       <el-table-column label="是否显示答案" align="center" prop="ccAnswerJudge">
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.ccAnswerJudge" />