Procházet zdrojové kódy

优化新增课程选择全部内容
AI生成课新增诗词类型

liyanbo před 1 měsícem
rodič
revize
3dcc04cf4e

+ 4 - 3
src/views/bjdx/course/CourseForm.vue

@@ -24,9 +24,9 @@
           v-model="formData.courseType"
           :data="courseTypeTree"
           :props="{...defaultProps,
-            label: (node) => `${node.ctTypeNode === '0' || node.ctTypeNode === undefined ? node.ctType : node.ctTypeSort + '、' + node.ctType}`,
+            label: (node) => `${node.ctTypeNode === '0' || node.ctTypeNode === '-1' || node.ctTypeNode === undefined ? node.ctType : node.ctTypeSort + '、' + node.ctType}`,
             // 根据 ctTypeNode 字段判断是否禁用选项
-            disabled: (node) => node.ctTypeNode === '0',
+            disabled: (node) => node.ctTypeNode === '0' || node.ctTypeNode === '-1',
             // 明确指定 value 字段为 id
             value: 'id'
             }"
@@ -505,11 +505,12 @@ const resetForm = () => {
 }
 /** 获得课程-类型树 */
 const getCourseTypeTree = async (filterCtTypeNode) => {
+
   courseTypeTree.value = []
   const data = await CourseTypeApi.getCourseTypeSimpleList()
   let filteredData = data
   if (filterCtTypeNode !== undefined) {
-    filteredData = data.filter(item => item.ctTypeNode === '0' || item.ctTypeNode === filterCtTypeNode)
+    filteredData = data.filter(item => item.ctTypeNode === '0' || item.ctTypeNode === '-1' || item.ctTypeNode === filterCtTypeNode)
   }
   const root: Tree = { id: 0, ctType: '课程类型', ctTypeNode: '0', children: [] }
   root.children = handleTree(filteredData, 'id', 'ctParentId')

+ 49 - 8
src/views/bjdx/course/aiGenerate/aiGengrate.vue

@@ -241,7 +241,7 @@
                     v-for="(dialogue, dialogueIndex) in section.dialogues"
                     :key="dialogueIndex"
                     class="dialogue-item"
-                    :class="dialogue.type"
+                    :class="[dialogue.type, { 'hidden': dialogue.type === 'user' }]"
                   >
                     <div class="dialogue-header">
                       <div class="dialogue-type-tag" :class="dialogue.type">
@@ -540,11 +540,8 @@
                     <button class="add-dialogue-btn digital" @click="addDialogue(sectionIndex)"
                       >+ 添加对话</button
                     >
-                    <button class="add-dialogue-btn user" @click="addUserReply(sectionIndex)"
-                      >+ 添加用户回复</button
-                    >
-                    <button class="add-dialogue-btn quest" @click="addQuestDialogue(sectionIndex)"
-                      >+ 添加提问</button
+                    <button class="add-dialogue-btn quest-user" @click="addQuestWithUserReply(sectionIndex)"
+                      >+ 添加提问与回复</button
                     >
                     <button class="add-dialogue-btn poem" @click="addPoemDialogue(sectionIndex)"
                       >+ 添加诗词</button
@@ -621,7 +618,7 @@
 
                     <div class="preview-dialogues">
                       <div
-                        v-for="(dialogue, dialogueIndex) in section.dialogues"
+                        v-for="(dialogue, dialogueIndex) in section.dialogues.filter(d => d.type !== 'user')"
                         :key="dialogueIndex"
                         class="preview-dialogue"
                         :class="dialogue.type"
@@ -1165,9 +1162,37 @@ const addPoemDialogue = (sectionIndex) => {
   })
 }
 
+// 步骤2:添加提问与用户回复
+const addQuestWithUserReply = (sectionIndex) => {
+  // 添加提问类型对话
+  scriptData.sections[sectionIndex].dialogues.push({
+    type: 'quest',
+    content: '',
+    roleName: '',
+    voiceoverUrl: '',
+    generatingVoiceover: false
+  })
+  // 添加用户回复类型对话
+  scriptData.sections[sectionIndex].dialogues.push({
+    type: 'user',
+    content: '',
+    roleName: '',
+    voiceoverUrl: '',
+    generatingVoiceover: false
+  })
+}
+
 // 步骤2:删除对话
 const removeDialogue = (sectionIndex, dialogueIndex) => {
-  scriptData.sections[sectionIndex].dialogues.splice(dialogueIndex, 1)
+  const dialogues = scriptData.sections[sectionIndex].dialogues
+  const dialogue = dialogues[dialogueIndex]
+  
+  // 如果是提问类型,同时删除后面的用户回复
+  if (dialogue.type === 'quest' && dialogueIndex < dialogues.length - 1 && dialogues[dialogueIndex + 1].type === 'user') {
+    dialogues.splice(dialogueIndex, 2)
+  } else {
+    dialogues.splice(dialogueIndex, 1)
+  }
 }
 
 // 步骤2:删除环节
@@ -1721,6 +1746,11 @@ onUnmounted(() => {
   color: white;
 }
 
+/* 隐藏用户回复卡片 */
+.dialogue-item.hidden {
+  display: none;
+}
+
 .dialogue-type-tag.digital {
   background-color: #409eff;
 }
@@ -1841,6 +1871,11 @@ onUnmounted(() => {
   color: white;
 }
 
+.add-dialogue-btn.quest-user {
+  background-color: #e6a23c;
+  color: white;
+}
+
 .add-dialogue-btn.user:hover {
   background-color: #67c23a;
   border-color: #67c23a;
@@ -1853,6 +1888,12 @@ onUnmounted(() => {
   color: white;
 }
 
+.add-dialogue-btn.quest-user:hover {
+  background-color: #cf9236;
+  border-color: #cf9236;
+  color: white;
+}
+
 .add-dialogue-btn.poem:hover {
   background-color: #73767a;
   border-color: #73767a;