From 1476d27514874e9c95002451a81878bd9bec8382 Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期六, 14 十二月 2024 15:36:53 +0800 Subject: [PATCH] 多轮对话 --- src/components/chat/hooks/useScrollLoad.ts | 25 ++++++++++++++++++++----- 1 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/components/chat/hooks/useScrollLoad.ts b/src/components/chat/hooks/useScrollLoad.ts index 4a8b0ec..63be29d 100644 --- a/src/components/chat/hooks/useScrollLoad.ts +++ b/src/components/chat/hooks/useScrollLoad.ts @@ -1,7 +1,7 @@ import moment from 'moment'; import { Ref, ShallowRef, computed, nextTick, onBeforeUnmount, ref, unref } from 'vue'; import { LOAD_CHAT_LIMIT } from '../constants'; -import { AnswerType, ChatContent, ChatMessage, RoleEnum, StepEnum, StepItem } from '../model/types'; +import { AnswerType, ChatContent, ChatMessage, MultiChatType, RoleEnum, StepEnum, StepItem } from '../model/types'; import { GetHistoryAnswer, QueryHistoryDetail, getShareChatJsonByPost } from '/@/api/ai/chat'; import router from '/@/router'; import { isSharePage } from '/@/stores/chatRoom'; @@ -22,14 +22,29 @@ return { status: StepEnum.Success, title: processItem.value, - }; + } as StepItem; }; export const convertProcessToStep = (process: any[]) => { - const stepList = (process ?? []).map<StepItem>((item) => { - return convertProcessItem(item); - }); + const stepList = (process ?? []).reduce((preVal, curVal) => { + if (curVal.mode === 'question') { + const last = preVal.at(-1); + if (!last.subStep) { + last.subStep = []; + } + const sub = { + data: curVal.value, + type: MultiChatType.Select, + }; + last.subStep.push(sub); + } else { + const cur = convertProcessItem(curVal); + preVal.push(cur); + } + return preVal; + }, []); return stepList; }; + /** * 婊氬姩鍔犺浇鏁版嵁 * @returns -- Gitblit v1.9.3