From 9202273261907c1f13f1217bda6d8629aefa25ca Mon Sep 17 00:00:00 2001
From: yinbangzhong <zhongbangyin@126.com>
Date: 星期四, 29 八月 2024 11:38:26 +0800
Subject: [PATCH] select role
---
src/views/sessionManager/index.vue | 264 ++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 220 insertions(+), 44 deletions(-)
diff --git a/src/views/sessionManager/index.vue b/src/views/sessionManager/index.vue
index 2d252ee..b90966c 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,46 +128,94 @@
backgroundColor:
theme === 'light' ? '#ffffff' : '#000000',
}"
- style="border: none; display: inline"
- v-for="(item, tipIndex) in tipMatch(sessionDetail)"
+ style="border: none"
+ v-for="(breakContent, breakIndex) in breakLine(
+ sessionDetail.content
+ )"
>
- <span v-if="tipIndex == 0">
- {{ sessionDetail.content.substring(0, item.index) }}
- <a-tooltip
- background-color="#3491FA"
- :content="
- getTipContent(messagenList.reference, index)
- "
+ <div
+ :class="{ chatItemAnswer: theme === 'light' }"
+ :style="{
+ 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"
+ v-for="(item, tipIndex) in tipMatch(breakContent)"
>
- <img
- style="width: 20px; height: 20px"
- :src="tipImage"
- />
- </a-tooltip>
- </span>
- <span v-else>
- {{
- sessionDetail.content.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>
+ <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>
+ <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>
+ </div>
+ </div>
+ <div v-else>
+ {{ breakContent }}
+ </div>
</div>
</a-card>
<a-card v-else>
- <div
+ <a-textarea
+ readonly
+ auto-size
+ :default-value="chartText(sessionDetail.content)"
:class="{ chatItemAnswer: theme === 'light' }"
:style="{
backgroundColor:
@@ -146,9 +223,20 @@
}"
style="border: none"
>
- {{ sessionDetail.content }}
- </div>
+ </a-textarea>
</a-card>
+ <!-- <div class="prompt">
+ <ul>
+ <li class="prompt-item" @click="copyText('43234')">
+ <span>
+ 344343klsdjkjksdjkjksdjk灏卞紑濮嬪ぇ瀹剁湅鏁版嵁搴撶櫥璁板崱鍙楁墦鍑诲嚡鎾掔櫥璁板崱鍙楁墦鍑诲嚡鎾掔櫥璁板崱鍙楁墦鍑诲嚡鎾掔殑43</span
+ >
+ <span style="margin-left: 20px">
+ <icon-right />
+ </span>
+ </li>
+ </ul>
+ </div> -->
</template>
<!-- <div>{{ sessionDetail.role === 'assistant' }}</div> -->
<template #actions>
@@ -191,6 +279,7 @@
>
<icon-refresh /> 閲嶆柊鐢熸垚
</span>
+ <!-- <span class="action"><icon-to-bottom />涓嬭浇 </span> -->
</template>
</a-comment>
<a-comment v-else-if="sessionDetail.role === 'last'">
@@ -284,12 +373,18 @@
display: flex;
justify-content: space-between;
"
+ class="uploadFileDis"
>
<updataFile
ref="fileInput"
:sessionId="activeSessionId"
@selectFileCallback="selectFileCallback"
></updataFile>
+ <!-- <uploadFile
+ ref="fileInput"
+ :sessionId="activeSessionId"
+ @selectFileCallback="selectFileCallback"
+ ></uploadFile> -->
<a-button
:disabled="chatDis"
@click="sentClick"
@@ -377,6 +472,11 @@
></smartAi>
</div>
</a-col>
+ <a-col :span="23" v-show="agentType == '5'">
+ <div class="center">
+ <seniorAgentSession :modalObj="agentObj"></seniorAgentSession>
+ </div>
+ </a-col>
</a-row>
<a-modal title=" " v-model:visible="fileVisible" :footer="false" fullscreen>
<!-- <docx previewSrc="http://192.168.20.116:1080/v1/document/get/405c3efa4d8c11ef97560242ac120006"></docx>-->
@@ -430,9 +530,11 @@
import chatMenu from '@/views/sessionManager/components/chatMenu.vue';
import AddSession from '@/views/sessionManager/components/addSession.vue';
import agentSession from '@/views/sessionManager/components/agentSession.vue';
+ import seniorAgentSession from '@/views/sessionManager/components/seniorAgentSession.vue';
import historySession from '@/views/sessionManager/components/historySession.vue';
import smartAi from '@/views/sessionManager/components/smartAi.vue';
import updataFile from '@/views/sessionManager/components/updataFile.vue';
+
import EventBus from '@/utils/EventBus';
import {
addSessionApi,
@@ -456,6 +558,8 @@
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 uploadFile from './components/uploadFile.vue';
// const url = ref('../../assets/session/PDF.png');
@@ -496,7 +600,7 @@
const uploadRef = ref();
const files = ref([]);
const file = ref('');
- const fileInput = ref(null);
+ const fileInput = ref();
const chatDataMeg = reactive({});
const visible = ref(false);
const fileVisible = ref(false);
@@ -539,13 +643,32 @@
}
};
- const tipMatch = (session: any): any[] => {
+ const breakLine = (message: string): string[] => {
+ //鎸塡n鍒嗗壊瀛楃涓�
+ let arr = message.split('\n');
+ 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;
- session.content.match(/##([0-9]+)\$\$/g)?.map((item) => {
- let i = session.content.indexOf(item);
- indexs.push({ index: i, item: item, preIndex: preTip });
+ 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,
+ });
preTip = i;
});
return indexs;
@@ -657,6 +780,19 @@
const { toClipboard } = useClipboard();
const copy = async (text) => {
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 () => {
@@ -1090,6 +1226,33 @@
}
}
}
+ .uploadFileDis {
+ :deep(.arco-upload-list-type-text) {
+ display: none;
+ }
+ }
+ .prompt {
+ ul {
+ margin: 0;
+ padding: 0;
+ display: flex;
+ }
+ ul > li {
+ list-style-type: none;
+ }
+ .prompt-item {
+ display: flex;
+ justify-content: space-between;
+ background-color: #fff;
+ cursor: pointer;
+ border-radius: 8px;
+ padding: 10px;
+ border: #e5e5e5;
+ &:hover {
+ background-color: #eee;
+ }
+ }
+ }
.card-btn-1 {
margin: 8px 15px;
@@ -1233,6 +1396,19 @@
color: #333;
margin-top: 4px;
}
+ :deep(.arco-card-body) {
+ padding: 0;
+ border-radius: 10px;
+ }
+ :deep(.arco-textarea) {
+ padding-top: 10px !important;
+ }
+ :deep(.arco-comment-inner-content) {
+ border-radius: 10px;
+ }
+ :deep(.arco-card-bordered) {
+ border-radius: 10px;
+ }
.icon-user-jpg {
border: 1px solid #d9d9d9;
--
Gitblit v1.8.0