From 04f37dbc48f29b48ba65e8ad259240937f0e4e0a Mon Sep 17 00:00:00 2001 From: zhangxiao <898441624@qq.com> Date: 星期四, 22 八月 2024 11:07:38 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/web/flow_web --- src/views/sessionManager/components/historySession.vue | 185 +++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 167 insertions(+), 18 deletions(-) diff --git a/src/views/sessionManager/components/historySession.vue b/src/views/sessionManager/components/historySession.vue index 63ed439..58e0bb1 100644 --- a/src/views/sessionManager/components/historySession.vue +++ b/src/views/sessionManager/components/historySession.vue @@ -8,7 +8,7 @@ top: 10px; left: -40px; font-size: 30px; - z-index: 9999; + z-index: 99; cursor: pointer" @click="emit('changeAgentType','1')" > @@ -18,12 +18,15 @@ </a-button> <a-scrollbar + ref="scrollRef" class="left-list" style=" - height: calc(100vh - 100px); - overflow-y: auto; + height: calc(100vh - 160px); + overflow-y: scroll; overflow-x: hidden; " + v-if="isReached" + @scroll="handleScroll" > <div class="historyTitle___F_iam">鍘嗗彶浼氳瘽</div> @@ -47,22 +50,30 @@ class="item historyCenter-box" v-for="session in sessionList" @click="querySessionDetail(session)" + @mouseenter="handleMouseEnter(session)" + @mouseleave="handleMouseLeave(session)" > <div class="text" > <img :style="{ width: '16px' }" alt="dessert" - :src="session.avatar || imgSrc" + :src="session.icon ? httpUrl + session.icon : imgSrc" /> {{ session.name }} </div> <div class="time" - >{{ - moment(new Date(session.create_time)).format( - 'YYYY-MM-DD HH:mm:ss' - ) - }} + > + <span v-show="session.showtype == 1" style="font-size: 14px"> + {{ + moment(new Date(session.create_time)).format( + 'YYYY-MM-DD HH:mm:ss' + ) + }} + </span> </div> + <a-button type="text" @click.stop="deleteSession(session)" style="color: red;position: absolute;right: 10px;top: 10px;" v-show="session.showtype == 2"> + <icon-delete style="font-size: 14px" /> + </a-button> </div> </div> </a-scrollbar> @@ -77,7 +88,7 @@ import { useAppStore, useUserStore } from "@/store"; import { computed, nextTick, onMounted, watch, reactive, ref, onBeforeMount, onBeforeUnmount } from "vue"; -import { Message } from "@arco-design/web-vue"; +import { Message, Modal } from "@arco-design/web-vue"; import EventBus from '@/utils/EventBus'; import moment from "moment"; import { @@ -85,11 +96,15 @@ chatApi, getDialogListApi, getSessionDetailsApi, - sessionListApi + deleteSessionApi, + sessionListApiPage } from "@/api/session"; + import { queryCanvasList } from "@/api/Agent"; const emit = defineEmits(["querySessionDetail","changeAgentType"]); import logo from "@/assets/images/model.png"; +import { deleteKnow } from "@/api/kbList"; +import { getAgentSessionDetailsApi } from "@/api/agentSession"; const sessionList = ref([]); //浼氳瘽鍒楄〃 const activeSessionId = ref(""); const fieldNames = { value: "id", label: "name" }; @@ -100,7 +115,18 @@ const searchValue = ref(""); const selectValue = ref(""); const sectionList = ref({}); +const scrollRef = ref(null); +const httpUrl = localStorage.getItem('httpUrl'); const imgSrc = ref(logo); +let scrollTopVal = ref(0); +let queryPage = reactive({ + page: 1, + page_size: 50 +}) +let total = ref(0); +let sessionScrollList = ref([]); +let isReached = ref(true); + const DialogList = async () => { const { code, data } = await getDialogListApi(); if (code === 200) { @@ -150,10 +176,22 @@ // 鏌ヨ浼氳瘽鍒楄〃 const querySessionList = async (id) => { - const { code, data } = await sessionListApi(id); + const { code, data } = await sessionListApiPage({ + dialog_id: id, + ...queryPage + }); if (code === 200) { - sessionList.value = data; - + sessionList.value = data.map((item) => { + return { + ...item, + showtype: 1 + } + }); + isReached.value = false; + setTimeout(()=>{ + isReached.value = true; + },100) + // total.value = sessionList.value.length; } else { @@ -161,22 +199,132 @@ } }; +//鏍规嵁浼氳瘽id鍒犻櫎浼氳瘽 +const deleteSession = async (session) => { + Modal.confirm({ + title: '鎻愮ず淇℃伅', + content: '纭鍒犻櫎鍚�', + okText: '纭畾', + cancelText: '鍙栨秷', + hideTitle: true, + onOk: async () => { + const { code } = await deleteSessionApi([session.id]); + if (code === 200) { + Message.success('鍒犻櫎鎴愬姛'); + querySessionList(''); + } + }, + onCancel: () => {}, + }); +}; const querySessionDetail = async (session) => { console.log(session, 'session'); - emit('changeAgentType','1'); - emit('querySessionDetail',session); + // 鏌ヨ鍘嗗彶璁板綍 app_type 1:鏅鸿兘浣� 2:agent + if (session.app_type == '1') { + // 鐢熸垚鏅鸿兘浣撴柊鐨勫璇� + emit('changeAgentType','1'); + emit('querySessionDetail',session); + } else if (session.app_type == '2'){ + // agent瀵硅薄鏁版嵁灏佽 + // const { code, data } = await getAgentSessionDetailsApi(session.dialog_id); + // if (code == 0) { + // console.log(data,'浼氳瘽璇︽儏'); + // // let sessionObj = { + // // id: session.app_id, + // // dsl: data.dsl, + // // title: session.name, + // // } + // } + EventBus.emit("queryAgentSessionDetail",session); + emit('changeAgentType','2'); + } } + + +const handleMouseEnter = (session) => { + session.showtype = 2; +}; + +const handleMouseLeave = (session) => { + session.showtype = 1; +}; + + +const handleScroll = async (e: any) => { + scrollTopVal.value = e.target.scrollTop; + let offsetHeight = e.target.offsetHeight; + let scrollHeight = e.target.scrollHeight; + + if (scrollTopVal.value + offsetHeight >= scrollHeight-1) { + console.log(scrollTopVal.value); + // console.log(offsetHeight); + // console.log(scrollHeight); + //婊氬姩鏉″埌杈惧簳閮� + // if (sessionList.value.length < total.value) { + // //鏁版嵁涓哄姞杞藉畬锛岀户缁祴鍊� + // // queryPage.page++ + // + // + // + // } + queryPage.page++ + const { code, data } = await sessionListApiPage({ + dialog_id: '', + ...queryPage + }); + if (code === 200) { + sessionScrollList.value = data.map((item) => { + return { + ...item, + showtype: 1 + } + }); + // total.value = sessionList.value.length; + sessionList.value = [...sessionList.value,...sessionScrollList.value]; + isReached.value = false; + setTimeout(()=>{ + isReached.value = true; + nextTick(()=>{ + scrollRef.value.scrollTop(scrollTopVal.value); + // console.log(scrollRef.value.$el.scrollTop,'scrollTopVal'); + // console.log(scrollTopVal.value,'scrollTopVal'); + }) + },100) + + + } else { + Message.warning("鏌ヨ澶辫触"); + } + + } +} + + + onBeforeMount(()=>{ - DialogList() + // DialogList() + querySessionList(''); }) onMounted(() => { EventBus.on("history", () => { emit('changeAgentType','3'); - DialogList() + // DialogList() + queryPage.page = 1; + querySessionList(''); }); + // 娣诲姞婊氬姩浜嬩欢鐩戝惉鍣� + scrollRef.value.$el.addEventListener('scroll', handleScroll); + + // 娓呯悊鍑芥暟 + return () => { + scrollRef.value.$el.removeEventListener('scroll', handleScroll); + }; + + + }) onBeforeUnmount(() => { EventBus.off("history"); @@ -218,6 +366,7 @@ width: 100%; margin-top: 30px; .historyCenter-box{ + position: relative; display: flex; width: 70%; margin-left: 15%; -- Gitblit v1.8.0