From 457cc6cf166d3b6c22be4f78c1db8802a7fbb4c7 Mon Sep 17 00:00:00 2001
From: wujingjing <gersonwu@qq.com>
Date: 星期一, 07 四月 2025 17:53:19 +0800
Subject: [PATCH] DigitalHuman

---
 src/views/project/ch/home/component/waterRight/top.vue |  189 +++++++++++++++++------------------------------
 1 files changed, 68 insertions(+), 121 deletions(-)

diff --git a/src/views/project/ch/home/component/waterRight/top.vue b/src/views/project/ch/home/component/waterRight/top.vue
index 0e707fc..d226212 100644
--- a/src/views/project/ch/home/component/waterRight/top.vue
+++ b/src/views/project/ch/home/component/waterRight/top.vue
@@ -1,72 +1,90 @@
 <template>
-	<div class="flex items-center">
-		<img src="/static/images/logo/logo-mini.svg" alt="logo" class="layout-logo-medium-img" />
-		<p class="set-waterTitle"><strong>WI 姘村姟鏅鸿兘涓撳</strong>鏅烘収姘村姟鍔╂墜</p>
+	<div class="flex items-center mb-8">
+		<img src="/static/images/logo/logoWithNoName.png" alt="logo" class="layout-logo-medium-img" />
+		<p class="set-waterTitle"><strong>WI姘村姟鏅鸿兘骞冲彴</strong>鏅烘収姘村姟鏁版嵁鎸栨帢鑰�</p>
 	</div>
-	<div class="flex items-center pc-roleList">
-		<div v-for="(item, index) in state.roleList" :key="index" class="flex items-center pl-6" @click="handleClick(item)">
-			<el-tooltip :content="item.Content" placement="top" effect="light" popper-class="my-pop">
-				<div class="modelItem cursor-pointer flex items-center" :class="{ modelItemActive: item.ID === state.activeRole }">
-					<img :src="item.Icon" alt="icon" class="set-icon box-border" />
-					<span>{{ item.Title }}</span>
-				</div>
-			</el-tooltip>
-		</div>
-		<div class="flex items-center cursor-pointer pl-5">
-			<div class="modelItem cursor-pointer flex items-center">
-				<img src="/static/images/wave/More.png" alt="icon" class="set-icon-more box-border" />
-				<span>鏇村</span>
-			</div>
-		</div>
-	</div>
-	<PlayBar v-model="inputValue" @send-click="sendClick" />
+	<!-- <div class="flex items-center pc-roleList"></div> -->
+	<PlayBar style="width: 760px" v-model="inputValue" @send-click="sendClick" :is-home="true" />
 </template>
 
 <script setup lang="ts">
-import { reactive, ref } from 'vue';
+import { ElMessage } from 'element-plus';
+import { ref } from 'vue';
+import { GetLLMList, setHistoryGroupTitle } from '/@/api/ai/chat';
 import PlayBar from '/@/components/chat/components/playBar/PlayBar.vue';
 import router from '/@/router';
+import { activeChatRoom, activeLLMId } from '/@/stores/chatRoom';
+import { handleNormalAuth } from '/@/utils/request';
+
 const emits = defineEmits(['sendClick']);
 const inputValue = ref('');
 
-const sendClick = () => {
-	if(!inputValue.value) return;
+const sendClick = async (cb) => {
+	if (!inputValue.value.trim()) return;
+
+	if (!handleNormalAuth()) {
+		return;
+	}
+
+	const res = await setHistoryGroupTitle({
+		history_group_id: activeChatRoom.value.id,
+		title: inputValue.value,
+	});
+	if (!res.json_ok) {
+		return ElMessage.error('淇敼鑱婂ぉ瀹ゅ悕绉板け璐�');
+	}
+
+	activeChatRoom.value.title = inputValue.value;
+	activeChatRoom.value.isInitial = false;
 	router.push({
 		name: 'AskAnswer',
-		state: {
-			inputValue: inputValue.value,
+		query: {
+			id: activeChatRoom.value.id,
 		},
 	});
 };
-let state = reactive({
-	roleList: [
-		{
-			ID: 1,
-			Icon: '/static/images/wave/Glm.jpg',
-			Title: '姘村姟GLM',
-			Content: '浣跨敤鏈�涓哄箍娉涚殑鐭ュ悕AI妯″瀷锛屽搷搴旈�熷害蹇紝鏅鸿兘鍖栫▼搴﹂珮锛屾搮闀垮棰嗗煙闂瑙e喅锛屽寘鎷垱浣溿�佺炕璇戙�佸璇鐧剧鐭ヨ瘑銆佹暟瀛﹂棶棰樼瓑銆�',
+
+const llmList = ref([]);
+const iconList = ['/static/images/wave/Glm.jpg', '/static/images/wave/Glm.jpg', '/static/images/wave/Glm.jpg'];
+const getLLMList = async () => {
+	const res = await GetLLMList();
+
+	const resData = (res?.llm_list || []) as any[];
+	llmList.value = resData.map((item, index) => ({
+		get logicId() {
+			return this.logicModel.id;
 		},
-		{
-			ID: 2,
-			Icon: '/static/images/wave/Glm.jpg',
-			Title: '姘村姟-3.5',
-			Content:
-				'鐩墠涓氱晫鏈�寮哄ぇ鐨勬ā鍨嬶紝鍦ㄩ渶瑕侀珮绾ф帹鐞嗐�佹繁搴︽寚浠ょ悊瑙e拰鏇村叿鍒涢�犲姏鐨勪换鍔′腑锛岃〃鐜版瘮鍏朵粬妯″瀷鏇村己锛屼緥濡傚鏉傜殑鏂囨湰鍜岄�昏緫鍒嗘瀽銆佸鏉傜殑鏁板闂绛夈��',
+		get logicTitle() {
+			return this.logicModel.title;
 		},
-		{
-			ID: 3,
-			Icon: '/static/images/wave/Glm.jpg',
-			Title: '姘村姟-4.0',
-			Content:
-				'鐩墠涓氱晫鏈�寮哄ぇ鐨勬ā鍨嬶紝鍦ㄩ渶瑕侀珮绾ф帹鐞嗐�佹繁搴︽寚浠ょ悊瑙e拰鏇村叿鍒涢�犲姏鐨勪换鍔′腑锛岃〃鐜版瘮鍏朵粬妯″瀷鏇村己锛屼緥濡傚鏉傜殑鏂囨湰鍜岄�昏緫鍒嗘瀽銆佸鏉傜殑鏁板闂绛夈��',
+		icon: iconList[index],
+		logicModel: {
+			...item,
 		},
-	],
-	activeRole: 0,
-	inputAnswer: '',
-});
-const handleClick = (item) => {
-	state.activeRole = item.id;
+	}));
+	const first = llmList.value?.[0];
+	first && setLLm(first.logicId);
 };
+
+const setLLm = async (llmId: string) => {
+	// const res = await SetLLM({
+	// 	llm: llmId,
+	// });
+	activeLLMId.value = llmId;
+
+	return true;
+};
+const handleClick = (item) => {
+	setLLm(item.logicId);
+};
+
+const updateChatInput = (val) => {
+	inputValue.value = val;
+};
+
+defineExpose({
+	updateChatInput,
+});
 </script>
 <style scoped lang="scss">
 .set-waterTitle {
@@ -117,77 +135,6 @@
 	background-color: #1c86ff;
 	border-color: #1c86ff;
 	color: #fff;
-}
-.playInput {
-	align-items: flex-start;
-	width: 760px;
-	position: relative;
-	padding: 4px 4px 4px 12px;
-
-	display: flex;
-	-webkit-box-align: end;
-	-ms-flex-align: end;
-	align-items: flex-end;
-	-webkit-box-sizing: border-box;
-	box-sizing: border-box;
-	border-radius: 22px;
-	border: 1px solid #00000030;
-	-webkit-box-shadow: 0 0 0 1px transparent, 0 3px 16px 0 #dee0f3;
-	box-shadow: 0 0 0 1px transparent, 0 3px 16px 0 #dee0f3;
-	-webkit-transition: border-color 0.1s ease-in-out, -webkit-box-shadow 0.1s ease-in-out;
-	transition: border-color 0.1s ease-in-out, -webkit-box-shadow 0.1s ease-in-out;
-	-o-transition: border-color 0.1s ease-in-out, box-shadow 0.1s ease-in-out;
-	transition: border-color 0.1s ease-in-out, box-shadow 0.1s ease-in-out;
-	transition: border-color 0.1s ease-in-out, box-shadow 0.1s ease-in-out, -webkit-box-shadow 0.1s ease-in-out;
-	background-color: #fff;
-	.assembly {
-		position: relative;
-		align-self: flex-end;
-		margin-right: 12px;
-		.label {
-			height: 38px;
-		}
-	}
-	.set-input {
-		position: relative;
-		vertical-align: bottom;
-		font-size: 14px;
-		display: inline-block;
-		width: 100%;
-		.set-inputAnswer {
-			min-height: 36px;
-			height: 36px;
-			padding: 3px 0;
-			line-height: 20px;
-			border: none;
-			background-color: transparent;
-			color: #333;
-			font-size: 15px;
-		}
-		:deep(.el-input__wrapper) {
-			box-shadow: unset;
-		}
-	}
-	.upload_img {
-		.imgbox {
-			height: 38px;
-			.set-img-icon {
-				width: 38px;
-				height: 38px;
-				border-radius: 5px;
-				transition: background-color 0.1s ease-in-out;
-			}
-			.send {
-				width: 36px;
-				height: 36px;
-				border-radius: 50%;
-				background-color: #2c1e1d;
-				img {
-					margin: 4px 0 0 -2px;
-				}
-			}
-		}
-	}
 }
 </style>
 <style lang="scss">

--
Gitblit v1.9.3