From 8fc16c6f29bd098598a03e8306788d9b3d2a60ba Mon Sep 17 00:00:00 2001
From: yinbangzhong <zhongbangyin@126.com>
Date: 星期二, 27 八月 2024 16:04:41 +0800
Subject: [PATCH] agent
---
src/views/sessionManager/index.vue | 191 +++++++++++++++++++++++++++++++----------------
1 files changed, 125 insertions(+), 66 deletions(-)
diff --git a/src/views/sessionManager/index.vue b/src/views/sessionManager/index.vue
index a46713c..e0adb16 100644
--- a/src/views/sessionManager/index.vue
+++ b/src/views/sessionManager/index.vue
@@ -78,9 +78,38 @@
/>
</template>
<template #content>
- <div :class="{ chartUserText: theme === 'light' }"
- >{{ sessionDetail.content }}
+ <div :class="{ chartUserText: theme === 'light' }">
+ {{ sessionDetail.content }}
+ <!-- <a-input
+ :style="{ width: '100%' }"
+ v-model="sessionDetail.content"
+ v-if="isEdit"
+ />
+
+ <div v-else>
+ {{ sessionDetail.content }}
+ </div> -->
</div>
+ <!-- <div v-if="!isEdit">
+ <span
+ class="action"
+ v-if="index != 0"
+ @click="copy(sessionDetail.content)"
+ >
+ <icon-copy /> 澶嶅埗
+ </span>
+ <span class="action" @click="edit()">
+ <icon-pen /> 缂栬緫
+ </span>
+ </div>
+ <a-space v-else>
+ <a-button type="outline" size="mini" @click="cancelEdit(1)"
+ >鍙栨秷</a-button
+ >
+ <a-button type="primary" size="mini" @click="cancelEdit(2)"
+ >纭畾</a-button
+ >
+ </a-space> -->
</template>
</a-comment>
<a-comment v-else-if="sessionDetail.role === 'assistant'">
@@ -99,81 +128,82 @@
backgroundColor:
theme === 'light' ? '#ffffff' : '#000000',
}"
- style="border: none;"
- v-for="(breakContent, breakIndex) in breakLine(sessionDetail.content)"
+ style="border: none"
+ v-for="(breakContent, breakIndex) in breakLine(
+ sessionDetail.content
+ )"
>
<div
:class="{ chatItemAnswer: theme === 'light' }"
:style="{
- backgroundColor:
- theme === 'light' ? '#ffffff' : '#000000',
- }"
- style="border: none;"
- v-if="isExistTip(breakContent)">
+ backgroundColor:
+ theme === 'light' ? '#ffffff' : '#000000',
+ }"
+ style="border: none"
+ v-if="isExistTip(breakContent)"
+ >
<div
:class="{ chatItemAnswer: theme === 'light' }"
:style="{
- backgroundColor:
- theme === 'light' ? '#ffffff' : '#000000',
- }"
- style="border: none;"
+ backgroundColor:
+ theme === 'light' ? '#ffffff' : '#000000',
+ }"
+ style="border: none"
v-for="(item, tipIndex) in tipMatch(breakContent)"
>
- <span v-if="tipIndex == 0">
- {{ breakContent.substring(0, item.index) }}
- <a-tooltip
- background-color="#3491FA"
- :content="
- getTipContent(messagenList.reference, index)
- "
- >
- <img
- style="width: 20px; height: 20px"
- :src="tipImage"
- />
- </a-tooltip>
- </span>
- <span v-else-if ="tipIndex == item.len - 1">
- {{
+ <span v-if="tipIndex == 0">
+ {{ breakContent.substring(0, item.index) }}
+ <a-tooltip
+ background-color="#3491FA"
+ :content="
+ getTipContent(messagenList.reference, index)
+ "
+ >
+ <img
+ style="width: 20px; height: 20px"
+ :src="tipImage"
+ />
+ </a-tooltip>
+ </span>
+ <span v-else-if="tipIndex == item.len - 1">
+ {{
breakContent.substring(
item.preIndex + item.item.length,
item.index
)
}}
- <a-tooltip
- background-color="#3491FA"
- :content="
- getTipContent(messagenList.reference, index)
- "
- >
- <img
- style="width: 20px; height: 20px"
- :src="tipImage"
- />
- </a-tooltip>
- {{
- breakContent.substring(item.index+5)
- }}
- </span>
+ <a-tooltip
+ background-color="#3491FA"
+ :content="
+ getTipContent(messagenList.reference, index)
+ "
+ >
+ <img
+ style="width: 20px; height: 20px"
+ :src="tipImage"
+ />
+ </a-tooltip>
+ {{ breakContent.substring(item.index + 5) }}
+ </span>
<span v-else>
- {{
+ {{
breakContent.substring(
item.preIndex + item.item.length,
item.index
)
}}
- <a-tooltip
- background-color="#3491FA"
- :content="
- getTipContent(messagenList.reference, index)
- "
- >
- <img
- style="width: 20px; height: 20px"
- :src="tipImage"
- />
- </a-tooltip>
- </span>
+ <a-tooltip
+ background-color="#3491FA"
+ :content="
+ getTipContent(messagenList.reference, index)
+ "
+ >
+ <img
+ style="width: 20px; height: 20px"
+ :src="tipImage"
+ />
+ </a-tooltip>
+ </span>
</div>
</div>
<div v-else>
@@ -185,15 +215,18 @@
<a-textarea
readonly
auto-size
- v-model="sessionDetail.content"
+ :default-value="chartText(sessionDetail.content)"
:class="{ chatItemAnswer: theme === 'light' }"
:style="{
- backgroundColor:
- theme === 'light' ? '#ffffff' : '#000000',
- }"
+ backgroundColor:
+ theme === 'light' ? '#ffffff' : '#000000',
+ }"
style="border: none"
>
</a-textarea>
+ <!-- <div v-html="chartText(sessionDetail.content)">
+
+ </div> -->
</a-card>
</template>
<!-- <div>{{ sessionDetail.role === 'assistant' }}</div> -->
@@ -237,6 +270,7 @@
>
<icon-refresh /> 閲嶆柊鐢熸垚
</span>
+ <!-- <span class="action"><icon-to-bottom />涓嬭浇 </span> -->
</template>
</a-comment>
<a-comment v-else-if="sessionDetail.role === 'last'">
@@ -502,7 +536,7 @@
import docx from '@/views/dmx/knowledgeLib/components/docx.vue';
import excel from '@/views/dmx/knowledgeLib/components/excel.vue';
import txtPdf from '@/views/dmx/knowledgeLib/components/txtPdf.vue';
- import { is } from "immutable";
+ import { is } from 'immutable';
// const url = ref('../../assets/session/PDF.png');
@@ -589,17 +623,29 @@
const breakLine = (message: string): string[] => {
//鎸塡n鍒嗗壊瀛楃涓�
let arr = message.split('\n');
- return arr
- }
+ return arr;
+ };
+
+ const chartText = (message: string): string => {
+ //鍘婚櫎鎵�鏈夌殑#鍜�**
+ let arr = message.replace(/\*\*|\#\#\#/g, '');
+ return arr;
+ };
const tipMatch = (msg: string): any[] => {
//match session.content涓殑##[0-9]$$鐨勭储寮�
+
let indexs: any[] = [];
let preTip = 0;
- let matches=msg.match(/##([0-9]+)\$\$/g)
+ let matches = msg.match(/##([0-9]+)\$\$/g);
matches?.map((item) => {
let i = msg.indexOf(item);
- indexs.push({ index: i, item: item, preIndex: preTip, len: matches.length });
+ indexs.push({
+ index: i,
+ item: item,
+ preIndex: preTip,
+ len: matches.length,
+ });
preTip = i;
});
return indexs;
@@ -713,6 +759,19 @@
await toClipboard(text); //鍙傛暟涓鸿澶嶅埗鐨勬枃鏈�
};
+ const isEdit = ref(false);
+ const edit = () => {
+ isEdit.value = !isEdit.value;
+ };
+ const cancelEdit = (val) => {
+ if (val == 1) {
+ isEdit.value = !isEdit.value;
+ } else {
+ //缂栬緫淇濆瓨
+ isEdit.value = !isEdit.value;
+ }
+ };
+
const DialogList = async () => {
const { code, data } = await getDialogListApi();
if (code === 200) {
--
Gitblit v1.8.0