From 74cdd0f00c6e6640871f35d8dd951a858ddcefa2 Mon Sep 17 00:00:00 2001 From: yangyin <18723093654@163.com> Date: 星期日, 07 七月 2024 11:44:41 +0800 Subject: [PATCH] fix:提交代码 --- src/views/project/ch/home/component/waterRight/top.vue | 190 ++++++++++++++++++++++++++++++---------------- 1 files changed, 123 insertions(+), 67 deletions(-) diff --git a/src/views/project/ch/home/component/waterRight/top.vue b/src/views/project/ch/home/component/waterRight/top.vue index d923391..b771ebd 100644 --- a/src/views/project/ch/home/component/waterRight/top.vue +++ b/src/views/project/ch/home/component/waterRight/top.vue @@ -1,90 +1,123 @@ <template> - <div class="flex items-center flex-column mt-20"> - <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>姘村姟 AI</strong>姹囪仛鍏ㄧ悆 AI 绮鹃珦</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 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> + <div class="flex items-center pc-roleList"> + <div v-for="(item, index) in llmList" :key="item.logicId" class="flex items-center pl-6" @click="handleClick(item)"> + <div class="modelItem cursor-pointer flex items-center" :class="{ modelItemActive: item.logicId === activeLLMId }"> + <img :src="item.icon" alt="icon" class="set-icon box-border" /> + <span>{{ item.logicTitle }}</span> </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 box-border" /> - <span>鏇村</span> + <!-- <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> - </div> + </el-tooltip> --> </div> - <div class="playInput hl_input"> - <div class="assembly flex"> - <el-button title="鎻掍欢鑿滃崟" class="label flex items-center cursor-pointer" link> - <img src="/static/images/wave/PlugIn.png" class="set-icon box-border" /> - </el-button> - </div> - <div class="set-input"> - <el-input v-model="state.inputAnswer" placeholder="鍦ㄨ繖閲岃緭鍏ユ偍鐨勯棶棰樺紑濮嬪拰AI瀵硅瘽" class="set-inputAnswer" /> - </div> - <div class="h100 flex items-center"> - <div class="upload_img"> - <div class="cursor-pointer flex items-center"> - <el-button title="AI鐪嬪浘" class="set-button" link> - <el-icon style="font-size: 24px !important"> - <ele-Picture /> - </el-icon> - </el-button> - <el-button title="AI鐪嬪浘" class="set-button" link> - <el-icon style="font-size: 24px !important"> - <ele-Headset /> - </el-icon> - </el-button> - <el-button title="AI鐪嬪浘" class="set-button" link> - <el-icon style="font-size: 24px !important" color="#409efc"> - <ele-Position /> - </el-icon> - </el-button> - </div> - </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" /> </template> <script setup lang="ts"> -import { reactive } from 'vue'; +import { onMounted, reactive, ref } from 'vue'; +import { GetLLMList, SetLLM } from '/@/api/ai/chat'; +import PlayBar from '/@/components/chat/components/playBar/PlayBar.vue'; +import router from '/@/router'; +import { activeChatRoom, activeLLMId, activeSectionAId } from '/@/stores/chatRoom'; +import emitter from '/@/utils/mitt'; +import { ElMessage } from 'element-plus'; +const emits = defineEmits(['sendClick']); +const inputValue = ref(''); + +const sendClick = () => { + if (!inputValue.value) return; + if (!activeSectionAId.value) { + ElMessage.warning('璇烽�夋嫨搴旂敤鍦烘櫙'); + return; + } + activeChatRoom.value.title = inputValue.value; + activeChatRoom.value.isInitial = false; + router.push({ + name: 'AskAnswer', + query: { + id: activeChatRoom.value.id, + }, + }); +}; let state = reactive({ roleList: [ { - id: 1, - icon: '/static/images/wave/Glm.jpg', - title: '姘村姟GLM', - content: '浣跨敤鏈�涓哄箍娉涚殑鐭ュ悕AI妯″瀷锛屽搷搴旈�熷害蹇紝鏅鸿兘鍖栫▼搴﹂珮锛屾搮闀垮棰嗗煙闂瑙e喅锛屽寘鎷垱浣溿�佺炕璇戙�佸璇鐧剧鐭ヨ瘑銆佹暟瀛﹂棶棰樼瓑銆�', + ID: 1, + Icon: '/static/images/wave/Glm.jpg', + Title: '姘村姟GLM', + Content: '浣跨敤鏈�涓哄箍娉涚殑鐭ュ悕AI妯″瀷锛屽搷搴旈�熷害蹇紝鏅鸿兘鍖栫▼搴﹂珮锛屾搮闀垮棰嗗煙闂瑙e喅锛屽寘鎷垱浣溿�佺炕璇戙�佸璇鐧剧鐭ヨ瘑銆佹暟瀛﹂棶棰樼瓑銆�', }, { - id: 2, - icon: '/static/images/wave/Glm.jpg', - title: '姘村姟-3.5', - content: + ID: 2, + Icon: '/static/images/wave/Glm.jpg', + Title: '姘村姟-3.5', + Content: '鐩墠涓氱晫鏈�寮哄ぇ鐨勬ā鍨嬶紝鍦ㄩ渶瑕侀珮绾ф帹鐞嗐�佹繁搴︽寚浠ょ悊瑙e拰鏇村叿鍒涢�犲姏鐨勪换鍔′腑锛岃〃鐜版瘮鍏朵粬妯″瀷鏇村己锛屼緥濡傚鏉傜殑鏂囨湰鍜岄�昏緫鍒嗘瀽銆佸鏉傜殑鏁板闂绛夈��', }, { - id: 3, - icon: '/static/images/wave/Glm.jpg', - title: '姘村姟-4.0', - content: + ID: 3, + Icon: '/static/images/wave/Glm.jpg', + Title: '姘村姟-4.0', + Content: '鐩墠涓氱晫鏈�寮哄ぇ鐨勬ā鍨嬶紝鍦ㄩ渶瑕侀珮绾ф帹鐞嗐�佹繁搴︽寚浠ょ悊瑙e拰鏇村叿鍒涢�犲姏鐨勪换鍔′腑锛岃〃鐜版瘮鍏朵粬妯″瀷鏇村己锛屼緥濡傚鏉傜殑鏂囨湰鍜岄�昏緫鍒嗘瀽銆佸鏉傜殑鏁板闂绛夈��', }, ], activeRole: 0, - inputAnswer: '', }); -const handleClick = (item) => { - state.activeRole = item.id; + +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; + }, + get logicTitle() { + return this.logicModel.title; + }, + icon: iconList[index], + logicModel: { + ...item, + }, + })); + 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); +}; + +onMounted(() => { + getLLMList(); + emitter.on('updateChatInput', (value) => { + inputValue.value = value; + }); +}); </script> <style scoped lang="scss"> .set-waterTitle { @@ -118,6 +151,11 @@ .set-icon { width: 20px; height: 20px; + position: relative; + } + .set-icon-more { + width: 16px; + height: 16px; position: relative; } span { @@ -177,11 +215,29 @@ color: #333; font-size: 15px; } + :deep(.el-input__wrapper) { + box-shadow: unset; + } } -} -.set-button { - :deep(.el-button .is-link) { - height: unset !important; + .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> -- Gitblit v1.9.3