From 6e2557b3ae3e1b43bc01a5122f5fd4aa9b83d755 Mon Sep 17 00:00:00 2001 From: gerson <1405270578@qq.com> Date: 星期日, 09 二月 2025 18:51:33 +0800 Subject: [PATCH] 整理绘制 --- src/components/chat/chatComponents/summaryCom/SummaryCom.vue | 97 ++++++++++++++++++++++++++++++++++++------------ 1 files changed, 72 insertions(+), 25 deletions(-) diff --git a/src/components/chat/chatComponents/summaryCom/SummaryCom.vue b/src/components/chat/chatComponents/summaryCom/SummaryCom.vue index 6cb6a2f..a113139 100644 --- a/src/components/chat/chatComponents/summaryCom/SummaryCom.vue +++ b/src/components/chat/chatComponents/summaryCom/SummaryCom.vue @@ -1,22 +1,48 @@ <template> <div class="w-full space-y-3"> - <template v-if="parsedData && parsedData.length > 0"> - <template v-for="(item, index) in parsedData" :key="item.id"> - <el-button v-if="showReportIndex.includes(index) && conclusion.length > 0" @click="showAgentReport(index)">鎶ュ憡</el-button> + <div class="w-full space-y-3" v-if="parsedData && parsedData.length > 0"> + <div v-for="(item, index) in parsedData" :key="index"> + <!-- <el-button type="primary" v-if="showReportIndex.includes(index) && conclusion.length > 0" @click="showAgentReport(index)">鎶ュ憡</el-button> --> <component ref="componentRef" :id="item.id" :is="summaryAnswerTypeMapCom[item.type]" :data="item" :originData="originData" + :reportIndex="reportIndex" :summaryIndex="index" chartHeight="20rem" :tableLimitHeight="tableLimitHeight" + :historyId="historyId" @updateQuery="(res) => updateRecordSet(index, res)" + :disabled="isTalking || isSharePage" ></component> - </template> - </template> - <ReportDlg v-model="infoDlgIsShow" :report="report" :agentKey="agentKey"></ReportDlg> + + <div class="flex flex-col" v-if="showReportIndex.includes(index) && conclusion?.length > 0"> + <div class="flex items-center mb-3"> + <span class="mr-2">鍒嗘瀽璇勪及锛�</span> + <div + @click="toggleReport(item)" + class="cursor-pointer border border-gray-300 border-solid w-fit px-2 flex items-center space-x-2 rounded-lg hover:bg-gray-100 active:bg-gray-200" + > + <span> + {{ toggleReportLabel(item) }} + </span> + <span class="ywifont" :class="{ 'ywicon-unfold': !item.reportIsShow, 'ywicon-fold': item.reportIsShow }"></span> + </div> + </div> + + <!-- 杩囩▼杈撳嚭 --> + <div v-show="item.reportIsShow" class="max-h-[2/3vh] markdown-it" v-html="md.render(getReport(index))"></div> + </div> + </div> + </div> + <el-empty v-else :image-size="200" class="!py-3"> + <!-- <template #description> + <span > 鏆傛棤鏁版嵁 </span> + </template> --> + </el-empty> + <!-- <ReportDlg v-model="infoDlgIsShow" :report="report" :agentKey="agentKey"></ReportDlg> --> </div> </template> @@ -27,9 +53,11 @@ // import AmisPageTest from './components/amisPage/AmisPageTest.vue'; import ReportDlg from './ReportDlg.vue'; +import { md } from '../../libs/markdown'; +import { isSharePage } from '/@/stores/chatRoom'; +import service from '/@/utils/request'; const props = defineProps(chatComProps); const tableLimitHeight = document.body.clientHeight * 0.7; - const parsedData = computed<any[]>(() => { const newData = (props.data ?? []).map((item) => { if (item.type === SummaryAnswerType.RecordSet && item.chart === 'table') { @@ -42,16 +70,19 @@ // 闇�瑕佸睍绀� report 鐨� 绱㈠紩 const showReportIndex = computed(() => { - const agentKeySet = new Set(); - const indexList = []; + const agentKeyMap = new Map<string, number>(); parsedData.value.forEach((value, index) => { if (value?.agent_key) { - if (!agentKeySet.has(value.agent_key)) { - agentKeySet.add(value.agent_key); - indexList.push(index); - } + // 鍙栨渶鍚庝竴娆′綔涓虹粨璁� + agentKeyMap.set(value.agent_key, index); + // if (!agentKeySet.has(value.agent_key)) { + // agentKeySet.add(value.agent_key); + // indexList.push(index); + // } } }); + const indexList = Array.from(agentKeyMap.values()); + return indexList; }); @@ -62,19 +93,35 @@ item?.updateAll(triggerIndex, res); } }; -const infoDlgIsShow = ref(false); -const report = ref(null); -const agentKey = ref(''); - -const conclusion = computed(() => props.originData?.content?.origin?.conclusion ?? []); -const showAgentReport = (agentStartIndex) => { - const agent = parsedData.value[agentStartIndex]; - agentKey.value = agent.agent_key; - const foundReport = conclusion.value.find((item) => item.agent_key === agentKey.value); - report.value = foundReport?.report; - - infoDlgIsShow.value = true; +const getReport = (agentEndIndex) => { + const agent = parsedData.value[agentEndIndex]; + const agentKey = agent.agent_key; + // debugger; + const foundReport = props.conclusion.find((item) => item.agent_key === agentKey); + const report = foundReport?.report ?? ''; + return report; }; + +const toggleReportLabel = (item) => (item.reportIsShow ? '鏀惰捣' : '灞曞紑'); +const toggleReport = (item) => { + item.reportIsShow = !item.reportIsShow; +}; +// const infoDlgIsShow = ref(false); +// const report = ref(null); + +// const agentKey = ref(''); + +// const conclusion = computed(() => props.originData?.content?.origin?.conclusion ?? []); +// const showAgentReport = (agentStartIndex) => { +// const agent = parsedData.value[agentStartIndex]; +// agentKey.value = agent.agent_key; +// const foundReport = conclusion.value.find((item) => item.agent_key === agentKey.value); +// report.value = foundReport?.report; + +// infoDlgIsShow.value = true; +// }; + + </script> <style scoped lang="scss"></style> -- Gitblit v1.9.3