Преглед изворни кода

AI生成课程:数字人数据补充

liyanbo пре 3 месеци
родитељ
комит
4de303b6a0
2 измењених фајлова са 40 додато и 10 уклоњено
  1. 13 9
      src/components/study/SelfDirectedLearning.vue
  2. 27 1
      src/views/AIPage/AIGeneralCourse.vue

+ 13 - 9
src/components/study/SelfDirectedLearning.vue

@@ -100,8 +100,17 @@ import {
 } from "@/api/questions.js";
 import {Message} from "@/utils/message/Message.js";
 
+// 定义props
+const props = defineProps({
+  // 数字人列表
+  scriptRoles: {
+    type: Array,
+    default: () => []
+  }
+})
+
 // 发送消息输入框
-const prompt = ref("给我一首李白的静夜思"); // prompt
+const prompt = ref(""); // prompt
 
 // 对话相关
 const activeConversationId = ref(null) // 选中的对话编号
@@ -129,11 +138,6 @@ const lessonList = ref([
   {id: '2', name: '知识讲解'},
   {id: '3', name: '课程总结'}
 ])
-// 数字人列表
-const digitalHumans = ref([
-  { id: 18, name: '李白', description: '你是诗仙李白' },
-  { id: 10, name: '小智', description: '你是智能机器人小智' }
-])
 //主讲人、助讲人
 const selectedMainTeacher = ref('李白')
 const selectedAssistants = ref(['小智'])
@@ -250,7 +254,7 @@ const generateScript = async () => {
   try {
     isGenerating.value = true
 
-    const role = digitalHumans.value.find((r) => r.name === selectedMainTeacher.value)
+    const role = props.scriptRoles.value.find((r) => r.name === selectedMainTeacher.value)
     let content =
         prompt.value +
         '(主讲人:' + role.name +
@@ -259,7 +263,7 @@ const generateScript = async () => {
     let zhujiang = []
 
     selectedAssistants.value.forEach((rName) => {
-      const assistantRole = digitalHumans.value.find((r) => r.name === rName)
+      const assistantRole = props.scriptRoles.value.find((r) => r.name === rName)
       zhujiang.push(assistantRole.name + '[' + assistantRole.description + ']')
     })
     content += zhujiang.join(',') + ')'
@@ -731,7 +735,7 @@ const generateVoiceover = async (lessonIndex, sectionIndex, dialogueIndex) => {
 
   dialogue.generatingVoiceover = true
 
-  let role = digitalHumans.value.find((r) => r.name === dialogue.roleName)
+  let role = props.scriptRoles.value.find((r) => r.name === dialogue.roleName)
   if (!role) {
     console.error('未找到角色:', dialogue.roleName)
     dialogue.generatingVoiceover = false

+ 27 - 1
src/views/AIPage/AIGeneralCourse.vue

@@ -119,7 +119,8 @@
 
       <div class="box-2">
         <!-- 自主学习组件,只在AI自主学习时显示 -->
-        <SelfDirectedLearning v-if="currentOpenedMenu === 'selfstudy'" @refreshData="refreshData" />
+        <SelfDirectedLearning v-if="currentOpenedMenu === 'selfstudy'"
+                              :scriptRoles="scriptRoles" @refreshData="refreshData" />
         
         <div
           class="small-box"
@@ -164,6 +165,7 @@ import { useRouter } from 'vue-router'
 import teachingImg from '@/assets/icon/teaching.png'
 // 导入自主学习组件
 import SelfDirectedLearning from '@/components/study/SelfDirectedLearning.vue'
+import DialogContent from "@/views/AIPage/aiGenerate/DialogContent.vue";
 
 const router = useRouter() // 获取当前路由对象
 // 下拉菜单选中项
@@ -176,6 +178,10 @@ const dropdownVisible = ref(false)
 const handleVisibleChange = (visible) => {
   dropdownVisible.value = visible
 }
+
+// 脚本角色数据
+const scriptRoles = ref([])
+
 // 课程数据管理
 const courseData = ref({
   general: [], // 通识课
@@ -358,6 +364,26 @@ const querySearch = (queryString, cb) => {
   cb(results)
 }
 
+/**
+ * 获取角色列表
+ * @returns {Promise<void>}
+ */
+const getRoleList = async () => {
+  try {
+    let grade = localStorage.getItem('selectedGrade')
+    grade = grade ? grade : '小学低年级'
+    // 获取小学低年级AI数据
+    const listAiRes = await teacherList({ category: grade + 'AI' })
+    const listRes = await teacherList({ category: grade })
+    const listAi = listAiRes.data.list || []
+    const list = listRes.data.list || []
+    listAi.push(...list)
+    scriptRoles.value = listAi
+  } catch (error) {
+    console.error('获取角色数据失败:', error)
+  }
+}
+
 // 搜索选择处理方法
 const handleSearchSelect = item => {
   goToAIExperience(item)