| | |
| | | <!--表单区域--> |
| | | <Left |
| | | ref="leftRef" |
| | | :is-generating="isGenerating" |
| | | @submit="submit" |
| | | @direct-generate="directGenerate" |
| | | :is-generating="isGenerating" |
| | | /> |
| | | <!--右边生成思维导图区域--> |
| | | <Right |
| | | ref="rightRef" |
| | | :mindmapResult="mindmapResult" |
| | | :generatedContent="generatedContent" |
| | | :isEnd="isEnd" |
| | | :isGenerating="isGenerating" |
| | | :isStart="isStart" |
| | |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | <script lang="ts" setup> |
| | | import Left from './components/Left.vue' |
| | | import Right from './components/Right.vue' |
| | | import { AiMindMapApi, AiMindMapGenerateReqVO } from '@/api/ai/mindmap' |
| | |
| | | const isEnd = ref(true) // 用来判断结束的时候渲染思维导图 |
| | | const message = useMessage() // 消息提示 |
| | | |
| | | const mindmapResult = ref('') // 生成思维导图结果 |
| | | const generatedContent = ref('') // 生成思维导图结果 |
| | | |
| | | const leftRef = ref<InstanceType<typeof Left>>() // 左边组件 |
| | | const rightRef = ref<InstanceType<typeof Right>>() // 右边组件 |
| | | |
| | | /** 使用已有内容直接生成 **/ |
| | | const directGenerate = (existPrompt: string) => { |
| | | isEnd.value = false // 先设置为false再设置为true,让子组建的watch能够监听到 |
| | | mindmapResult.value = existPrompt |
| | | isEnd.value = false // 先设置为 false 再设置为 true,让子组建的 watch 能够监听到 |
| | | generatedContent.value = existPrompt |
| | | isEnd.value = true |
| | | } |
| | | |
| | |
| | | isStart.value = true |
| | | isEnd.value = false |
| | | ctrl.value = new AbortController() // 请求控制赋值 |
| | | mindmapResult.value = '' // 清空生成数据 |
| | | generatedContent.value = '' // 清空生成数据 |
| | | AiMindMapApi.generateMindMap({ |
| | | data, |
| | | onMessage: async (res) => { |
| | |
| | | stopStream() |
| | | return |
| | | } |
| | | mindmapResult.value = mindmapResult.value + data |
| | | generatedContent.value = generatedContent.value + data |
| | | await nextTick() |
| | | rightRef.value?.scrollBottom() |
| | | }, |
| | | onClose() { |
| | | isEnd.value = true |
| | | leftRef.value?.setGeneratedContent(mindmapResult.value) |
| | | leftRef.value?.setGeneratedContent(generatedContent.value) |
| | | stopStream() |
| | | }, |
| | | onError(err) { |
| | |
| | | |
| | | /** 初始化 */ |
| | | onMounted(() => { |
| | | mindmapResult.value = MindMapContentExample |
| | | generatedContent.value = MindMapContentExample |
| | | }) |
| | | </script> |