Jelajahi Sumber

feat: add kwl tool support across components

1. 新增工具类型831的映射配置,对应lang.ssKwlTitle
2. 为KwDetail.vue初始化展开how-to引导面板
3. 扩展frame元素匹配规则,包含831类型工具
4. 补充对应工具的样式类type-kwl
lsc 4 hari lalu
induk
melakukan
d832503eb4

+ 1 - 1
src/components/CollapsibleToolbar/cocolearnCom/KwlDetail.vue

@@ -315,7 +315,7 @@ const formData = reactive({
   reflection: '',
   taskDescription: '',
   taskUrl: [] as string[],
-  showHowTo: false,
+  showHowTo: true,
   kplaceholder: lang.ssKwlKDefault,
   wplaceholder: lang.ssKwlWDefault,
   lplaceholder: lang.ssKwlLDefault,

+ 1 - 0
src/components/CollapsibleToolbar/componets/aiChat.vue

@@ -576,6 +576,7 @@ const sendAction = async (action: string) => {
       77: lang.ssEnglishSpeakingTool,
       78: lang.ssVote,
       79: lang.ssPhoto,
+      831: lang.ssKwlTitle,
     }
     return typeMap[type || 0] || lang.ssUnknown
   }

+ 3 - 1
src/components/CollapsibleToolbar/index.vue

@@ -292,6 +292,7 @@ const getTypeLabel = (type?: number) => {
     [ARTICLE_READING_TOOL_TYPE]: lang.ssArticleReadingTool,
     78: lang.ssVote,
     79: lang.ssPhoto,
+    831: lang.ssKwlTitle,
   }
   return typeMap[type || 0] || lang.ssUnknown
 }
@@ -304,7 +305,8 @@ const getTypeClass = (type?: number) => {
     73: 'type-h5',
     74: 'type-video',
     75: 'type-bilibili',
-    76: 'type-app-center'
+    76: 'type-app-center',
+    831: 'type-kwl'
   }
   return classMap[type || 0] || 'type-default'
 }

+ 4 - 2
src/components/CollapsibleToolbar/index2.vue

@@ -1197,7 +1197,7 @@ const addContent = (data: ContentItem, type: number) => {
   // contentList.value.push(data)
   if (type === 2) {
     const elements = currentSlide.value?.elements || []
-    const frameElement = elements.find((el: any) => el.type === 'frame' && (el.toolType === 45 || el.toolType === 15 || el.toolType === 78 || el.toolType === 79))
+    const frameElement = elements.find((el: any) => el.type === 'frame' && (el.toolType === 45 || el.toolType === 15 || el.toolType === 78 || el.toolType === 79 || el.toolType === 831))
     if (frameElement) {
       slidesStore.updateElement({
         id: frameElement.id,
@@ -1261,6 +1261,7 @@ const getTypeLabel = (type?: number) => {
     [ARTICLE_READING_TOOL_TYPE]: lang.ssArticleReadingTool,
     78: lang.ssVote,
     79: lang.ssPhoto,
+    831: lang.ssKwlTitle,
   }
   return typeMap[type || 0] || lang.ssUnknown
 }
@@ -1273,7 +1274,8 @@ const getTypeClass = (type?: number) => {
     73: 'type-h5',
     74: 'type-video',
     75: 'type-bilibili',
-    76: 'type-app-center'
+    76: 'type-app-center',
+    831: 'type-kwl'
   }
   return classMap[type || 0] || 'type-default'
 }

+ 3 - 1
src/components/CollapsibleToolbar/index22.vue

@@ -982,6 +982,7 @@ const getTypeLabel = (type?: number) => {
     [ARTICLE_READING_TOOL_TYPE]: lang.ssArticleReadingTool,
     78: lang.ssVote,
     79: lang.ssPhoto,
+    831: lang.ssKwlTitle,
   }
   return typeMap[type || 0] || lang.ssUnknown
 }
@@ -994,7 +995,8 @@ const getTypeClass = (type?: number) => {
     73: 'type-h5',
     74: 'type-video',
     75: 'type-bilibili',
-    76: 'type-app-center'
+    76: 'type-app-center',
+    831: 'type-kwl'
   }
   return classMap[type || 0] || 'type-default'
 }

+ 3 - 1
src/views/Editor/CanvasTool/WebpageInput.vue

@@ -110,6 +110,7 @@ const getTypeLabel = (type: number) => {
     77: lang.ssEnglishSpeakingTool,
     78: lang.ssVote,
     79: lang.ssPhoto,
+    831: lang.ssKwlTitle,
   }
   return typeMap[type] || lang.ssUnknown
 }
@@ -123,7 +124,8 @@ const getTypeClass = (type: number) => {
     73: 'type-h5',
     74: 'type-video',
     75: 'type-bilibili',
-    76: 'type-app-center'
+    76: 'type-app-center',
+    831: 'type-kwl',
   }
   return classMap[type] || 'type-default'
 }

+ 1 - 0
src/views/Editor/CanvasTool/index2.vue

@@ -356,6 +356,7 @@ const getTypeLabel = (type: number) => {
     [ARTICLE_READING_TOOL_TYPE]: lang.ssArticleReadingTool,
     78: lang.ssVote,
     79: lang.ssPhoto,
+    831: lang.ssKwlTitle,
   }
   return typeMap[type] || lang.ssUnknown
 }

+ 1 - 0
src/views/components/element/FrameElement/BaseFrameElement.vue

@@ -189,6 +189,7 @@ const getTypeLabel = (type: number): string => {
     78: 'ssVote',
     79: 'ssPhoto',
     [ARTICLE_READING_TOOL_TYPE]: 'ssArticleReadingTool',
+    831: 'ssKwlTitle',
   }
   const key = typeMap[type]
   return (key ? lang[key] : lang.ssUnknown) as string