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