From 4fdf0c121815857cceecf0aeb57cacb046fed0d7 Mon Sep 17 00:00:00 2001
From: gerson <1405270578@qq.com>
Date: 星期六, 27 七月 2024 22:41:37 +0800
Subject: [PATCH] 关联查询

---
 src/components/chat/Chat.vue |   53 +++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 49 insertions(+), 4 deletions(-)

diff --git a/src/components/chat/Chat.vue b/src/components/chat/Chat.vue
index ff508e8..90e770b 100644
--- a/src/components/chat/Chat.vue
+++ b/src/components/chat/Chat.vue
@@ -43,9 +43,29 @@
 												</div>
 											</div>
 										</div>
-										<component v-else :is="answerTypeMapCom[item.content.type]" :data="item.content.values" :originData="item" />
+										<template v-else>
+											<component :is="answerTypeMapCom[item.content.type]" :data="item.content.values" :originData="item" />
+
+											<div
+												v-if="item.role === RoleEnum.assistant && item.content.origin?.ext_call_list"
+												class="flex font-bold items-center mt-6"
+											>
+												<div class="flex-0 mr-1.5">鍏宠仈鍔熻兘锛�</div>
+												<div class="flex-0 space-x-5 flex">
+													<div
+														v-for="callItem in item.content.origin?.ext_call_list"
+														:key="callItem.call_ext_id"
+														@click="relativeQueryClick(callItem)"
+														class="flex-0 cursor-pointer hover:underline"
+													>
+														{{ callItem.question }}
+													</div>
+												</div>
+											</div>
+										</template>
 									</div>
 
+									<!-- 鎿嶄綔 -->
 									<div v-if="item.role === RoleEnum.assistant" class="absolute flex items-center right-0 mr-4 mt-2 space-x-2">
 										<div
 											class="flex items-center justify-center size-[15px]"
@@ -147,7 +167,7 @@
 import { useScrollToBottom } from './hooks/useScrollToBottom';
 import type { ChatContent } from './model/types';
 import { AnswerState, AnswerType, RoleEnum, answerTypeMapCom, roleImageMap, type ChatMessage } from './model/types';
-import { GetHistoryAnswer, QueryHistoryDetail, QuestionAi } from '/@/api/ai/chat';
+import { GetHistoryAnswer, QueryHistoryDetail, QuestionAi, extCallQuery } from '/@/api/ai/chat';
 import PlayBar from '/@/components/chat/components/playBar/PlayBar.vue';
 import CustomDrawer from '/@/components/drawer/CustomDrawer.vue';
 import router from '/@/router';
@@ -286,7 +306,7 @@
 	});
 };
 
-const sendChatMessage = async (content: ChatContent = messageContent.value, cb?: any) => {
+const sendChatMessage = async (content: ChatContent = messageContent.value, cb?: any, isCallExtParams?: any) => {
 	if (!content?.values) return;
 	const isNewChat = messageList.value.length === 0;
 	if (isNewChat) {
@@ -315,8 +335,15 @@
 
 		// 鍑虹幇鍥炲锛岀疆绌哄嚭鐜扮瓑寰呭姩鐢�
 		messageList.value.push(assistantItem);
+		if (isCallExtParams) {
+			const extRes = await extCallQuery(isCallExtParams);
+			questionRes = extRes;
+			resMsgContent = parseContent(extRes);
 
-		resMsgContent = await questionAi(content.values);
+		} else {
+			resMsgContent = await questionAi(content.values);
+		}
+
 		if (isNewChat) {
 			const firstResCb = getRoomConfig(currentRouteId, 'firstResCb');
 			firstResCb?.(resMsgContent);
@@ -397,6 +424,24 @@
 	displayMessageList: computedMessageList,
 });
 
+//#region ====================== 鍏宠仈鏌ヨ ======================
+const relativeQueryClick = async (val) => {
+	sendChatMessage(
+		{
+			type: AnswerType.Text,
+			values: val.question,
+		},
+		undefined,
+		{
+			history_group_id: currentRouteId,
+			question: val.question,
+			call_ext_id: val.call_ext_id,
+			call_ext_args: val.agrs ? JSON.stringify(val.agrs) : null,
+		}
+	);
+};
+//#endregion
+
 const {
 	copyClick,
 	likeClick,

--
Gitblit v1.9.3