Browse Source

feat: 将AI生成课程功能移至CreateCourseDialog组件

该功能原本在Editor/index3.vue中,现在移至CreateCourseDialog.vue组件中,通过useCreateElement和useSlideHandler hooks实现动态创建幻灯片和框架元素,并根据页面条件设置不同的frame元素ID,最后将generateAICourse方法挂载到window对象上以供调用。
lsc 19 hours ago
parent
commit
a27dd8d8f1

+ 26 - 0
src/components/CreateCourseDialog.vue

@@ -201,6 +201,32 @@ const handleParsingClose = () => {
     emit('close')
   }
 }
+
+const { createFrameElement } = useCreateElement()
+const { createSlide } = useSlideHandler()
+const generateAICourse = (json: CocostudioExportPayload) => {
+  console.log(json)
+  setTitle2(json.title)
+  parentWindow.courseSettings?.(json.subject, json.grade)
+  for (const page of json.pages) {
+    createSlide()
+
+    if ( page.includes('45') && page.includes('workPage.html')) {
+      createFrameElement(page, 45)
+    }
+    else if ( page.includes('15') && page.includes('workPage.html')) {
+      createFrameElement(page, 15)
+    }
+    else if ( page.includes('78') && page.includes('workPage.html')) {
+      createFrameElement(page, 78)
+    }
+    else {
+      createFrameElement(page, 85)
+    }
+  }
+}
+
+Object.assign(window, { generateAICourse })
 </script>
 
 <style lang="scss" scoped>

+ 0 - 24
src/views/Editor/index3.vue

@@ -453,30 +453,6 @@ interface CocostudioExportPayload {
 import useCreateElement from '@/hooks/useCreateElement'
 import useSlideHandler from '@/hooks/useSlideHandler'
 
-const { createFrameElement } = useCreateElement()
-const { createSlide } = useSlideHandler()
-const generateAICourse = (json: CocostudioExportPayload) => {
-  console.log(json)
-  setTitle2(json.title)
-  parentWindow.courseSettings?.(json.subject, json.grade)
-  for (const page of json.pages) {
-    createSlide()
-
-    if ( page.includes('45') && page.includes('workPage.html')) {
-      createFrameElement(page, 45)
-    }
-    else if ( page.includes('15') && page.includes('workPage.html')) {
-      createFrameElement(page, 15)
-    }
-    else if ( page.includes('78') && page.includes('workPage.html')) {
-      createFrameElement(page, 78)
-    }
-    else {
-      createFrameElement(page, 85)
-    }
-  }
-}
-
 Object.assign(window, { getCourseDetail, setTitle, setPPTSlide, getPPTSlide })
 
 onMounted(() => {

+ 1 - 1
src/views/components/element/VideoElement/VideoPlayer/index.vue

@@ -160,7 +160,7 @@ const props = withDefaults(defineProps<{
 // 以视频文件名(URL 最后一段)做精确匹配,兼容带编码的中文字符
 const VIDEO_POSTER_MAP: Record<string, string> = {
   '10月18日_1080p1792724012018.mp4': 'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Snipaste_2026-10-31_12-55-061793422736232.png',
-  'video_1791624823714_1791624823762_web4801792658106925.mp4': 'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Snipaste_2026-10-31_12-55-431793422736226.png',
+  'video_1793446649315_1793446649372.mp4': 'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Snipaste_2026-11-02_09-47-081793584064497.png',
   'video_1791624823715_1791624823748_web4801792658106941.mp4': 'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Snipaste_2026-10-31_12-56-011793422736221.png',
   'video_1791624823715_1791624823764_web4801792658106945.mp4': 'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/Snipaste_2026-10-31_12-56-201793422736191.png',
 }