From 8e6b518811a52e8c2d783ff6bb7d263783954eac Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期二, 31 十二月 2024 12:58:41 +0800 Subject: [PATCH] 拆分 messageList 组件 --- src/views/project/ch/home/Home.vue | 105 ++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 72 insertions(+), 33 deletions(-) diff --git a/src/views/project/ch/home/Home.vue b/src/views/project/ch/home/Home.vue index cc2ad21..997260d 100644 --- a/src/views/project/ch/home/Home.vue +++ b/src/views/project/ch/home/Home.vue @@ -8,14 +8,8 @@ <div class="flex items-center h-full"> <div class="flex items-center flex-column" style="overflow: unset !important"> <waterTop ref="topRef" /> - <waterCenter - @advanceExampleClick="advanceExampleClick" - :isShowAdvanceExample="state.isShowAdvanceExample" - ref="waterCenterRef" - @updateChatInput="updateChatInput" - :exampleList="exampleList" - /> - <waterBottom @tagListClick="tagListClick" /> + <waterCenter @advanceExampleClick="advanceExampleClick" ref="waterCenterRef" @updateChatInput="updateChatInput" /> + <waterBottom @tagListClick="selectTagClick" ref="bottomRef" /> </div> <CustomDrawer v-model:isShow="state.isShowAdvanceExample" ref="customDrawerRef" @updateChatInput="updateChatInput" /> @@ -34,19 +28,51 @@ </template> <script setup lang="ts"> -import { onMounted, reactive, ref } from 'vue'; +import { driver } from 'driver.js'; +import 'driver.js/dist/driver.css'; +import { nextTick, onMounted, onUnmounted, reactive, ref, watch } from 'vue'; import waterBottom from './component/waterRight/bottom.vue'; import waterCenter from './component/waterRight/center.vue'; import waterTop from './component/waterRight/top.vue'; -import { getSelectSample, getUserTemplateList } from '/@/api/ai/chat'; import CustomDrawer from '/@/components/drawer/CustomDrawer.vue'; +import { activeGroupType, userInfo } from '/@/stores/chatRoom'; +import emitter from '/@/utils/mitt'; +import { accessSessionKey } from '/@/utils/request'; +import { Local } from '/@/utils/storage'; let state = reactive({ isShowAdvanceExample: false, }); +// 寮曞姝ラ + +const driverObj = driver({ + showProgress: true, + allowClose: true, + disableActiveInteraction: true, + nextBtnText: '涓嬩竴姝�', + prevBtnText: '涓婁竴姝�', + doneBtnText: '瀹屾垚', + steps: [ + { + element: '.set-next-group-type', + popover: { + title: '1.璇烽�夋嫨涓诲満鏅�', + description: '榛樿涓轰笟鍔″満鏅�', + popoverClass: 'driverjs-theme', + }, + }, + { element: '.pc-scenes', popover: { title: '2.璇烽�夋嫨娆″満鏅�', description: '榛樿涓哄畼缃戝伐鍗�' } }, + { element: '.pc-prompts', popover: { title: '3.璇烽�夋嫨鎻愰棶绀轰緥', description: '閫夊叾涓竴涓渚�' } }, + { element: '.playInput', popover: { title: '4.杈撳叆鎻愰棶鍐呭', description: '鐐瑰嚮鍙戦�佸紑濮嬪璇�' } }, + { element: '.retract_icon', popover: { title: '5.鏇村鎻愰棶绀轰緥', description: '灞曞紑鍚庡彲鏌ョ湅鏇村妗堜緥' } }, + ], + onCloseClick: () => { + driverObj.destroy(); + }, +}); const topRef = ref(null); const waterCenterRef = ref(null); +const bottomRef = ref(null); const customDrawerRef = ref(null); -const exampleList = ref([]); const updateChatInput = (val) => { topRef.value.updateChatInput(val); }; @@ -57,37 +83,43 @@ } }; //鑾峰彇妯$増鍒楄〃 -const getSelectListSample = async () => { - const res1 = getSelectSample({}); - const res2 = getUserTemplateList(); - const [sampleListPromise, templateListPromise] = await Promise.allSettled([res1, res2]); - const samples = (sampleListPromise as any).value?.samples ?? []; - const templateSamples = ((templateListPromise as any).value?.templates ?? []).map((item) => ({ - group_id: item.template_group, - sample_id: item.template_id, - sample_title: item.template_title, - sample_question: item.template_value, - //#region ====================== template 鐗规湁瀛楁 ====================== - template_create_time: item.create_time, - template_type: item.template_type, - isTemplate: true, - //#endregion - })); - exampleList.value = samples.concat(templateSamples).map((item) => ({ ...item, Icon: '/static/images/wave/ChatImg.png' })); -}; -const tagListClick = (tag) => { - isFinishPromise?.then(() => { +const selectTagClick = (tag) => { + nextTick(() => { waterCenterRef.value.tagListClick(tag); }); }; let isFinishPromise = null; +const showGuide = (isHome) => { + if (!!Local.get(accessSessionKey) && userInfo.isNew && isHome) { + userInfo.set({ + ...userInfo.get(), + web_login: true, + }); + isFinishPromise?.then(() => { + driverObj.drive(); + }); + } +}; onMounted(() => { isFinishPromise = new Promise(async (resolve) => { - await getSelectListSample(); resolve(true); }); + emitter.on('isShowHomePage', showGuide); }); + +onUnmounted(() => { + emitter.off('isShowHomePage', showGuide); +}); +watch( + () => activeGroupType.value, + (val) => { + setTimeout(() => { + bottomRef.value.getMainSectionList(); + }, 300); + }, + { immediate: true } +); </script> <style scoped lang="scss"> .pc-chat_room { @@ -159,7 +191,6 @@ .homeBox { font-size: 14px; line-height: 18px; - overflow-y: auto; } .declare { position: absolute; @@ -174,4 +205,12 @@ } } } +:not(body):has(> .driver-active-element) { + overflow: unset !important; +} +</style> +<style> +.driver-popover.driverjs-theme { + inset: 191.422px auto auto 357.828px !important; +} </style> -- Gitblit v1.9.3