From d50a7bc02d89e14beeab83a28f0d3677dbd9f0ef Mon Sep 17 00:00:00 2001 From: zhangxiao <898441624@qq.com> Date: 星期五, 30 八月 2024 14:31:50 +0800 Subject: [PATCH] fix: 修改bug --- src/views/sessionManager/index.vue | 266 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 221 insertions(+), 45 deletions(-) diff --git a/src/views/sessionManager/index.vue b/src/views/sessionManager/index.vue index d140f21..4845075 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; @@ -643,7 +766,6 @@ }; const selectFileCallback = (data) => { - console.log(data, 'selectFileCallback'); uploaditemList.value = [...uploaditemList.value, ...data]; }; @@ -657,6 +779,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 () => { @@ -729,6 +864,7 @@ // 鍙戦�� const sentClick = () => { sendMessage('click'); + uploaditemList.value = []; }; // 閲嶆柊鐢熸垚 const reGenerate = () => { @@ -1089,6 +1225,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; @@ -1232,6 +1395,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