From 659347e492d9d4c84e869e0cbbb1281063dd9307 Mon Sep 17 00:00:00 2001
From: liudong <liudong>
Date: 星期一, 19 八月 2024 15:40:31 +0800
Subject: [PATCH] 文档上传修改
---
src/views/sessionManager/index.vue | 219 ++++++++++++++++++++++++++++++++++++------------------
1 files changed, 145 insertions(+), 74 deletions(-)
diff --git a/src/views/sessionManager/index.vue b/src/views/sessionManager/index.vue
index 767e528..3c71541 100644
--- a/src/views/sessionManager/index.vue
+++ b/src/views/sessionManager/index.vue
@@ -80,7 +80,7 @@
<span class="action" v-if="index != 0" @click="copy(sessionDetail.content)">
<icon-copy /> 澶嶅埗
</span>
- <span class="action" v-if="index != 0 && index == sessionDetailList.length - 1" @click="reGenerate()">
+ <span class="action" v-if="index != 0 && index == sessionDetailList.length - 1" @click="reGenerate()">
<icon-refresh /> 閲嶆柊鐢熸垚
</span>
</template>
@@ -107,8 +107,9 @@
<template #actions>
<div class="action"
@click="stopChat"
- style="background: var(--color-bg-2);color: var(--color-primary-light-4);" v-if="displayedText != ''">
- <icon-record-stop />
+ style="background: var(--color-bg-2);color: var(--color-primary-light-4);"
+ v-if="displayedText != ''">
+ <icon-record-stop />
鍋滄鐢熸垚
</div>
</template>
@@ -120,7 +121,7 @@
<div class="chartStart v-else" @click="stopChat">閲嶆柊鐢熸垚</div> -->
</a-scrollbar>
- <div class="chat_bottom" >
+ <div class="chat_bottom">
<div class="center-bottom">
<!-- <a-textarea
v-model="inputMsg"
@@ -148,19 +149,6 @@
maxRows: 5,
}"
/>
- <div style="margin-left: 20px">
- <a-upload
- ref="uploadRef"
- :file-list="uploadList"
- :disabled="loading1"
- multiple
- :custom-request="customRequest"
- style="font-size: 24px;">
- <template #upload-button>
- <icon-attachment style="color: #0960bd"/>
- </template>
- </a-upload>
- </div>
<div class="btn-send">
<a-button
@@ -169,8 +157,51 @@
type="text"
style="border-radius: 24px"
:loading="loading"
- ><icon-send size="32" style="color: #0960bd"/>
+ >
+ <icon-send size="32" style="color: #0960bd" />
</a-button>
+ </div>
+ </div>
+ <!-- <div style="margin-top: 0px">-->
+ <!-- <a-upload-->
+ <!-- ref="uploadRef"-->
+ <!-- :file-list="uploadList"-->
+ <!-- :limit="1"-->
+ <!-- multiple-->
+ <!-- :custom-request="customRequest"-->
+ <!-- style="font-size: 24px;margin-bottom: 10px;position: relative;width: 200px">-->
+ <!-- <template #upload-button>-->
+ <!-- <icon-attachment style="color: #0960bd;position: absolute;top:-50px;left: 20px;z-index: 10000"/>-->
+ <!-- </template>-->
+ <!-- </a-upload>-->
+ <!-- </div>-->
+ <spa style="position: absolute;top:96px;left: 10px;z-index: 10000;cursor: pointer">
+ <icon-attachment size="28" @click="selectFile" style="color: #0960bd;" />
+ <input
+ ref="fileInput"
+ type="file"
+ style="display: none;"
+ @change="onFileSelected"
+ />
+ </spa>
+ <div class="uploadFileList">
+ <div class="files" v-for="(item,index) in uploaditemList" :key="index"
+ style="position: relative;width: 200px;margin-top: 10px;">
+ <a-comment
+ :author="item.name"
+ :content="item.size +''"
+ style="background: var(--color-bg-2);padding:10px;border-radius: 10px"
+ >
+ <template #avatar>
+ <a-button type="text" :loading="onFileSelectedLoading" v-if="onFileSelectedLoading"></a-button>
+ <a-avatar v-if="!onFileSelectedLoading">
+ <icon-file style="color: #0960bd" />
+ </a-avatar>
+ </template>
+ </a-comment>
+ <icon-close-circle-fill size="18px"
+ @click="deleteFile(item)"
+ style="position: absolute;right: -4px;top: -4px;color: red;cursor: pointer"/>
</div>
</div>
</div>
@@ -239,17 +270,17 @@
import { queryCanvasList } from "@/api/Agent";
import { getAgentSessionDetailsApi } from "@/api/agentSession";
import useClipboard from "vue-clipboard3";
+
const sessionDetailList = ref([]); //鏍规嵁浼氳瘽id鍑烘潵鐨勪細璇濊鎯�
const sessionList = ref([]); //浼氳瘽鍒楄〃
const modalObj = reactive({ add: false });
const dialogId = ref("");
const chatDis = ref(false);
const loading = ref(false);
-const loading1= ref(false);
const agentType = ref("1");
const agentTitle = ref("鏈懡鍚嶄細璇�");
let chatObj = reactive({});
-const isStopChat = ref(false)
+const isStopChat = ref(false);
const currIndex = ref(0);
const displayedText = ref(""); // 姝e湪鏄剧ず鐨勬枃瀛�
let timer: number | null = null;
@@ -264,48 +295,81 @@
const selectValue = ref("");
const sectionList = ref({});
const uploadList = ref([]);
+const uploaditemList = ref([]);
const uploadRef = ref();
const files = ref([]);
+const file = ref('');
+const fileInput = ref(null);
+
+const selectFile = () => {
+ fileInput.value.click();
+};
+
+
+let onFileSelectedLoading = ref(false);
+const onFileSelected = (event) => {
+ const file = event.target.files[0];
+ uploaditemList.value = [{
+ name: file.name,
+ size: file.size,
+ }];
+ if (file) {
+ onFileSelectedLoading.value = true;
+ const formData = new FormData();
+ formData.append("file", file);
+ formData.append("conversation_id", activeSessionId.value);
+ uploadWithoutKb(formData).then((res) => {
+ // console.log(res);
+ if (res.code == 200) {
+ console.log(res);
+ console.log(uploaditemList.value);
+ onFileSelectedLoading.value = false;
+ fileInput.value.value = "";
+ uploaditemList.value = [];
+ Message.success("涓婁紶鎴愬姛");
+ } else {
+ Message.error("涓婁紶澶辫触");
+ }
+ });
+ }
+};
+
+const deleteFile = (item) => {
+ console.log(uploaditemList.value);
+ uploaditemList.value = [];
+};
const { toClipboard } = useClipboard();
const copy = async (text) => {
await toClipboard(text); //鍙傛暟涓鸿澶嶅埗鐨勬枃鏈�
-}
+};
const onChange = (fileList) => {
// files.value = fileList;
};
-const submitOne = (e) => {
- e.stopPropagation();
- console.log(files.value);
- uploadRef.value.submit(files.value.find((x) => x.status === 'init'));
-};
// 涓婁紶鏂囦欢
-const customRequest = async(option) => {
- loading1.value=true;
- const {onProgress, onError, onSuccess, fileItem, name} = option
-
- const { code, data } = await getSessionDetailsApi(activeSessionId.value);
- if (code === 200) {
- console.log(data, "璇︽儏");
- if (fileItem.file) {
- const formData = new FormData();
- formData.append('file', fileItem.file);
- formData.append('conversation_id', data.id);
- uploadWithoutKb(formData).then((res) => {
+const customRequest = async (option) => {
+ const { onProgress, onError, onSuccess, fileItem, name } = option;
+ fileItem.status = "ready";
+ if (fileItem.file) {
+ const formData = new FormData();
+ formData.append("file", fileItem.file);
+ formData.append("conversation_id", activeSessionId.value);
+ uploadWithoutKb(formData).then((res) => {
+ // console.log(res);
+ if (res.code == 200) {
console.log(res);
- uploadList.value = [];
- if (res.code == 200) {
- console.log(res);
- loading1.value=false;
- }
- });
- }
+ console.log(uploadList.value);
+ fileItem.status = "done";
+ // uploadList.value = [];
+ } else {
+ fileItem.status = "error";
+ }
+ });
}
-}
-
+};
const DialogList = async () => {
@@ -385,10 +449,10 @@
});
console.log(dialogObj.type, "dialogObj");
if (dialogObj.type == 1) {
- agentType.value = '1';
+ agentType.value = "1";
querySessionList();
} else {
- agentType.value = '2';
+ agentType.value = "2";
queryAgentSessionList();
}
@@ -401,8 +465,8 @@
};
// 閲嶆柊鐢熸垚
const reGenerate = () => {
- let inputContent = sessionDetailList.value[sessionDetailList.value.length-2].content
- startChat(inputContent)
+ let inputContent = sessionDetailList.value[sessionDetailList.value.length - 2].content;
+ startChat(inputContent);
};
const sendMessage = async (event) => {
@@ -427,7 +491,7 @@
if (inputMsg.value) {
- startChat(inputMsg.value)
+ startChat(inputMsg.value);
inputMsg.value = "";
} else {
@@ -437,7 +501,7 @@
}
};
-const startChat = async(valMsg)=>{
+const startChat = async (valMsg) => {
chatDis.value = true;
loading.value = true;
sessionDetailList.value.push({
@@ -497,33 +561,33 @@
// querySessionList();
chatDis.value = false;
loading.value = false;
-}
+};
-const stopChat=async()=>{
+const stopChat = async () => {
// const { code, data } = await stopChatApi(activeSessionId.value);
// if (code === 200) {
// Message.success("宸插仠姝�");
// queryNewSessionDetail(activeSessionId.value);
// }
isStopChat.value = true;
- console.log('stopChat');
- console.log(displayedText.value, 'displayedText');
- console.log(sessionDetailList.value, 'sessionDetailList');
- let inputText = sessionDetailList.value[sessionDetailList.value.length-2].content
+ console.log("stopChat");
+ console.log(displayedText.value, "displayedText");
+ console.log(sessionDetailList.value, "sessionDetailList");
+ let inputText = sessionDetailList.value[sessionDetailList.value.length - 2].content;
// 鏁扮粍鍚堝苟
let lastArr = [{
content: inputText,
role: "user"
- },{
+ }, {
content: displayedText.value,
role: "assistant"
- }]
- sessionDetailList.value = sessionDetailList.value.splice(0, sessionDetailList.value.length-2).concat(lastArr);
- console.log(sessionDetailList.value, 'sessionDetailList2');
- console.log(chatObj, 'chatObj瀵硅薄');
+ }];
+ sessionDetailList.value = sessionDetailList.value.splice(0, sessionDetailList.value.length - 2).concat(lastArr);
+ console.log(sessionDetailList.value, "sessionDetailList2");
+ console.log(chatObj, "chatObj瀵硅薄");
chatObj.message = chatObj.message.concat(lastArr);
- // clearTimeout(timer!);
- // timer = null;
+ // clearTimeout(timer!);
+ // timer = null;
// const { code, data } = await addSessionApi(chatObj);
// if (data) {
// //鍋滄瀹氭椂鍣�
@@ -534,7 +598,7 @@
// }
-}
+};
const queryNewSessionDetail = async (id) => {
activeSessionId.value = id;
@@ -798,15 +862,17 @@
}
.chat_bottom {
- display: flex;
- align-items: center;
+ //display: flex;
+ //align-items: center;
width: 78%;
margin: 0 auto;
+ position: relative;
+
.center-bottom {
- // position: absolute;
- // width: 90%;
- // bottom: 20px;
- // left: 5%;
+ //position: absolute;
+ //width: 100%;
+ //bottom: 20px;
+ //left: 5%;
background: #fff;
border: 1px solid #00000014;
border-radius: 24px;
@@ -823,7 +889,7 @@
.btn-send {
position: absolute !important;
right: 10px;
- top: 110px;
+ top: 90px;
z-index: 10;
}
@@ -948,7 +1014,12 @@
transition: all 0.1s ease;
font-size: 12px;
}
+
.action:hover {
background: var(--color-fill-3);
}
+
+:deep(.arco-upload-list-item-operation) {
+ //display: none;
+}
</style>
--
Gitblit v1.8.0