From e3f2647015d5e87c7e15c94567ace3ed65165f3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=A8=9C?= Date: Fri, 14 Mar 2025 17:13:44 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E8=B5=84=E4=BA=A7=E5=BA=93=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=AF=BC=E5=85=A5=E6=95=B0=E9=87=8F=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Upload/index.vue | 81 +++++++++++++++++---------------- src/lang/package/en.ts | 1 + src/lang/package/zh-cn.ts | 1 + src/styles/upload.scss | 4 +- 4 files changed, 48 insertions(+), 39 deletions(-) diff --git a/src/components/Upload/index.vue b/src/components/Upload/index.vue index 2ae8302..e350f00 100644 --- a/src/components/Upload/index.vue +++ b/src/components/Upload/index.vue @@ -3,21 +3,31 @@
- + {{ $t("btnText.chooseFile") }} - - {{ $t("btnText.delete") }} + + {{ $t("btnText.batchDelete") }}
-
{{ $t("dialogTipText.continueAdd") }}
+
+
{{ $t("dialogTipText.continueAdd") }}
+
{{ fileTableList.data.length }} / {{ props.maxFileNum }}
+
{ multipleSelection.value = val; - let allFileSizes = 0; - val.forEach((item) => { - allFileSizes += item.file.size as number; - }); - btnDisabled.value = - isMaxMemoryOut(allFileSizes, props.maxSize) || - val.length > props.maxFileNum || - !val.length; selectedFiles = val.map((item) => { return { id: item.id, @@ -218,6 +220,8 @@ const handleSelectionChange = (val: TableRow[]) => { }; const hasFiles = computed(() => fileTableList.data.length > 0); + +let allFileSizes = 0; // 所有文件大小 const handleChange = (file: UploadFile) => { const item: TableRow = { id: file.uid, @@ -225,20 +229,16 @@ const handleChange = (file: UploadFile) => { size: bytesToSize(file.size as number), file: file, }; + allFileSizes += file.size as number; + btnDisabled.value = isMaxMemoryOut(allFileSizes, props.maxSize); fileTableList.data.push(item); - selectedFiles.push({ - id: item.id, - name: item.name, - file: item.file, - percent: 0, - }); - // 异步更新选中状态 - nextTick(() => { - const row = fileTableList.data.find((val) => item.id === val.id); - if (row) { - fileTableRef.value.toggleRowSelection(row, true); - } - }); +}; + +// 超出文件数量限制时的处理 +const handleExceed = () => { + ElMessage.warning( + `超出文件数量限制,最多只能上传 ${props.maxFileNum} 个文件!` + ); }; const handleProgress = (e: UploadProgressEvent) => { @@ -287,13 +287,17 @@ watch( immediate: true, } ); - +const batchDelete = () => { + if (!selectedFiles.length) { + ElMessage.warning(`请先选择文件再进行批量删除操作!`); + return; + } + selectedFiles.forEach((item) => item && deleteFile(item)); +}; const deleteFile = (row?: any) => { if (row) { const idx = fileTableList.data.findIndex((item: any) => item.id === row.id); fileTableList.data.splice(idx, 1); - } else if (selectedFiles.length > 0) { - selectedFiles.forEach((item) => item && deleteFile(item)); } }; @@ -330,10 +334,10 @@ const handleLimitSize = (selectedFileData) => { return flag; }; - +// 提交资产库 .zip const uploadFiles = () => { if (props.singleFileLimit) { - if (handleLimitSize(selectedFiles)) { + if (handleLimitSize(fileTableList.data)) { ElMessage({ showClose: true, message: t("dialogTipText.singleFileSize"), @@ -346,8 +350,8 @@ const uploadFiles = () => { } props?.handleImportLoading(true); let uploadFileNumber = 0; - props.handInitTaskList(selectedFiles).then((res: any) => { - uploadingList.value = selectedFiles.map((item) => { + props.handInitTaskList(fileTableList.data).then((res: any) => { + uploadingList.value = fileTableList.data.map((item) => { return { id: item.id, name: item.name, @@ -374,7 +378,7 @@ const uploadFiles = () => { }, onSuccess: (response: any) => { uploadFileNumber += 1; - if (uploadFileNumber === selectedFiles.length) { + if (uploadFileNumber === fileTableList.data.length) { props.handleQueryTaskList(); } }, @@ -404,14 +408,15 @@ const uploadFiles = () => { }), ]; uploadingList.value.length && handleToggleUploadNotify(); + props.handleCancelVisible(); + fileTableList.data = []; }); - props.handleCancelVisible(); - fileTableList.data = []; }; +// 资产库内提交文件 .pdf .ms .docx...... const uploadKnowledgeFile = () => { if (props.singleFileLimit) { - if (handleLimitSize(selectedFiles)) { + if (handleLimitSize(fileTableList.data)) { ElMessage({ showClose: true, message: t("dialogTipText.singleFileSize"), @@ -424,7 +429,7 @@ const uploadKnowledgeFile = () => { } props?.handleImportLoading(true); let uploadFileNumber = 0; - uploadingList.value = selectedFiles.map((item) => { + uploadingList.value = fileTableList.data.map((item) => { return { id: item.id, name: item.name, @@ -452,7 +457,7 @@ const uploadKnowledgeFile = () => { uploadingList.value.length && handleToggleUploadNotify(); }, onSuccess: (response: any) => { - props.handleQueryTaskList(selectedFiles); + props.handleQueryTaskList(fileTableList.data); uploadFileNumber += 1; item.percent = 100; item.uploadStatus = "success"; diff --git a/src/lang/package/en.ts b/src/lang/package/en.ts index 04e4da2..86a59f6 100644 --- a/src/lang/package/en.ts +++ b/src/lang/package/en.ts @@ -138,6 +138,7 @@ export default { export: "Export", edit: "Edit", delete: "Delete", + batchDelete: "Batch Delete", retry: "Retry", restart: "Restart", clearAll: "Clear all", diff --git a/src/lang/package/zh-cn.ts b/src/lang/package/zh-cn.ts index 262688e..97f5c62 100644 --- a/src/lang/package/zh-cn.ts +++ b/src/lang/package/zh-cn.ts @@ -143,6 +143,7 @@ export default { export: "导出", edit: "编辑", delete: "删除", + batchDelete: "批量删除", retry: "重试", restart: "重启", clearAll: "全部清空", diff --git a/src/styles/upload.scss b/src/styles/upload.scss index 4818025..673e672 100644 --- a/src/styles/upload.scss +++ b/src/styles/upload.scss @@ -15,7 +15,7 @@ .delFileBtn { height: 24px; - padding: 4px 20px; + padding: 4px 10px; font-size: 12px; span { @@ -28,6 +28,8 @@ margin: 8px 0; font-size: var(--o-font-size-info); line-height: var(--o-line-height-info); + display: flex; + justify-content: space-between; } &.has-files { -- Gitee From 4233473db92d6a25a00d052d7d3284f8bce8d6da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=A8=9C?= Date: Fri, 14 Mar 2025 17:21:11 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=80=BB=E5=A4=A7?= =?UTF-8?q?=E5=B0=8F=E9=87=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Upload/index.vue | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/Upload/index.vue b/src/components/Upload/index.vue index e350f00..c377b2c 100644 --- a/src/components/Upload/index.vue +++ b/src/components/Upload/index.vue @@ -410,6 +410,7 @@ const uploadFiles = () => { uploadingList.value.length && handleToggleUploadNotify(); props.handleCancelVisible(); fileTableList.data = []; + allFileSizes=0; }); }; @@ -468,6 +469,7 @@ const uploadKnowledgeFile = () => { uploadingList.value.length && handleToggleUploadNotify(); props.handleCancelVisible(); fileTableList.data = []; + allFileSizes=0; }; const handleToggleUploadNotify = () => { -- Gitee From ce99829ae3a67332e498bda6ea6e2d3b6c85bc0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=A8=9C?= Date: Fri, 14 Mar 2025 18:30:26 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=A7=E5=B0=8F=E6=AF=94=E4=BE=8B&=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=80=BB=E6=96=87=E4=BB=B6=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Upload/index.vue | 67 ++++++++++++++++++++++----------- src/styles/upload.scss | 20 ++++++++-- 2 files changed, 62 insertions(+), 25 deletions(-) diff --git a/src/components/Upload/index.vue b/src/components/Upload/index.vue index c377b2c..c10064c 100644 --- a/src/components/Upload/index.vue +++ b/src/components/Upload/index.vue @@ -3,22 +3,29 @@
- - {{ $t("btnText.chooseFile") }} - - - {{ $t("btnText.batchDelete") }} - -
-
-
{{ $t("dialogTipText.continueAdd") }}
-
{{ fileTableList.data.length }} / {{ props.maxFileNum }}
+
+ + {{ $t("btnText.chooseFile") }} + + + {{ $t("btnText.batchDelete") }} + +
+
+
+ 文件数:{{ fileTableList.data.length }}/{{ props.maxFileNum }} +
+
+ 文件大小:{{ allFileSizesInfo }}/{{ props.maxSize }}MB +
+
+
{{ $t("dialogTipText.continueAdd") }}
([]); const uploadingList = ref>([]); const showTaskList = ref(true); +let allFileSizes = ref(0); // 所有文件大小 + +let allFileSizesInfo=computed(()=>{ + // 字节转MB:1 MB = 1024 * 1024 bytes + if (allFileSizes.value <= 0) return 0; + const mbValue = allFileSizes.value / (1024 * 1024); + + // 保留2位小数并转为数字类型 + return Number(mbValue.toFixed(2)); +}) // 表格实例引用 const fileTableRef = ref(); @@ -221,7 +238,15 @@ const handleSelectionChange = (val: TableRow[]) => { const hasFiles = computed(() => fileTableList.data.length > 0); -let allFileSizes = 0; // 所有文件大小 +const changeAllSizes=(file:any,type?:string)=>{ + if(type==='add'){ + allFileSizes.value += file.size as number; + }else{ + allFileSizes.value -= file.size as number; + } + btnDisabled.value = isMaxMemoryOut(allFileSizes.value, props.maxSize); +} + const handleChange = (file: UploadFile) => { const item: TableRow = { id: file.uid, @@ -229,8 +254,7 @@ const handleChange = (file: UploadFile) => { size: bytesToSize(file.size as number), file: file, }; - allFileSizes += file.size as number; - btnDisabled.value = isMaxMemoryOut(allFileSizes, props.maxSize); + changeAllSizes(file,'add'); fileTableList.data.push(item); }; @@ -298,6 +322,7 @@ const deleteFile = (row?: any) => { if (row) { const idx = fileTableList.data.findIndex((item: any) => item.id === row.id); fileTableList.data.splice(idx, 1); + changeAllSizes(row.file,'del'); } }; @@ -350,7 +375,7 @@ const uploadFiles = () => { } props?.handleImportLoading(true); let uploadFileNumber = 0; - props.handInitTaskList(fileTableList.data).then((res: any) => { + props.handInitTaskList(fileTableList.data).then((res: any) => { uploadingList.value = fileTableList.data.map((item) => { return { id: item.id, @@ -410,7 +435,7 @@ const uploadFiles = () => { uploadingList.value.length && handleToggleUploadNotify(); props.handleCancelVisible(); fileTableList.data = []; - allFileSizes=0; + allFileSizes.value = 0; }); }; @@ -469,7 +494,7 @@ const uploadKnowledgeFile = () => { uploadingList.value.length && handleToggleUploadNotify(); props.handleCancelVisible(); fileTableList.data = []; - allFileSizes=0; + allFileSizes.value = 0; }; const handleToggleUploadNotify = () => { diff --git a/src/styles/upload.scss b/src/styles/upload.scss index 673e672..798ad49 100644 --- a/src/styles/upload.scss +++ b/src/styles/upload.scss @@ -6,6 +6,7 @@ .upload-to-list { .list-action { display: flex; + justify-content: space-between; .file-ops { height: 24px; @@ -22,14 +23,22 @@ min-width: unset !important; } } + + .list-action-tip { + width: 60%; + font-size: var(--o-font-size-info); + display: flex; + justify-content: end; + &>:first-child{ + margin-right: 15px; + } + } } .list-tip { margin: 8px 0; font-size: var(--o-font-size-info); line-height: var(--o-line-height-info); - display: flex; - justify-content: space-between; } &.has-files { @@ -163,7 +172,7 @@ height: 24px; } - + .upload-tip { + +.upload-tip { margin-top: 24px; } } @@ -173,13 +182,16 @@ height: 184px; cursor: default; background-color: var(--o-bg-color-base); + .cell { font-size: 12px !important; } + .el-table { ::-webkit-scrollbar { width: 4px !important; } + .el-scrollbar__bar.is-vertical { width: 4px !important; } @@ -222,4 +234,4 @@ .el-progress__text { font-weight: 600 !important; } -} +} \ No newline at end of file -- Gitee From 8783e0c687f77e944d22ff85aceb2d2a7a0d23fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=A8=9C?= Date: Mon, 17 Mar 2025 10:24:19 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E5=92=8C=E5=A4=A7=E5=B0=8F=E6=8F=90=E7=A4=BA=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Upload/index.vue | 46 +++++++++++++++++++++---------- src/lang/package/en.ts | 2 ++ src/lang/package/zh-cn.ts | 2 ++ src/views/knowledgeFile/index.vue | 2 +- 4 files changed, 37 insertions(+), 15 deletions(-) diff --git a/src/components/Upload/index.vue b/src/components/Upload/index.vue index c10064c..9b5a8ae 100644 --- a/src/components/Upload/index.vue +++ b/src/components/Upload/index.vue @@ -18,10 +18,14 @@
- 文件数:{{ fileTableList.data.length }}/{{ props.maxFileNum }} + {{ $t("dialogTipText.fileNums") }}:{{ + fileTableList.data.length + }}/{{ props.maxFileNum }}
- 文件大小:{{ allFileSizesInfo }}/{{ props.maxSize }}MB + {{ $t("dialogTipText.fileSizes") }}:{{ allFileSizesInfo }}/{{ + maxFileSizesInfo + }}
@@ -213,14 +217,28 @@ const uploadingList = ref>([]); const showTaskList = ref(true); let allFileSizes = ref(0); // 所有文件大小 -let allFileSizesInfo=computed(()=>{ +let allFileSizesInfo = computed(() => { // 字节转MB:1 MB = 1024 * 1024 bytes if (allFileSizes.value <= 0) return 0; - const mbValue = allFileSizes.value / (1024 * 1024); - - // 保留2位小数并转为数字类型 - return Number(mbValue.toFixed(2)); -}) + if (allFileSizes.value < 1024) { + return allFileSizes.value + "B"; + } else if (allFileSizes.value / 1024 < 1024) { + return (allFileSizes.value / 1024).toFixed(0) + "KB"; + } else if (allFileSizes.value / 1024 / 1024 < 1024) { + return (allFileSizes.value / 1024 / 1024).toFixed(0) + "MB"; + } else { + return (allFileSizes.value / 1024 / 1024 / 1024).toFixed(0) + "GB"; + } +}); + +let maxFileSizesInfo = computed(() => { + if (props.maxSize <= 0) return 0; + if (props.maxSize < 1) { + return (props.maxSize * 1024).toFixed(0) + "MB"; + } else { + return props.maxSize + "GB"; + } +}); // 表格实例引用 const fileTableRef = ref(); @@ -238,14 +256,14 @@ const handleSelectionChange = (val: TableRow[]) => { const hasFiles = computed(() => fileTableList.data.length > 0); -const changeAllSizes=(file:any,type?:string)=>{ - if(type==='add'){ +const changeAllSizes = (file: any, type?: string) => { + if (type === "add") { allFileSizes.value += file.size as number; - }else{ + } else { allFileSizes.value -= file.size as number; } btnDisabled.value = isMaxMemoryOut(allFileSizes.value, props.maxSize); -} +}; const handleChange = (file: UploadFile) => { const item: TableRow = { @@ -254,7 +272,7 @@ const handleChange = (file: UploadFile) => { size: bytesToSize(file.size as number), file: file, }; - changeAllSizes(file,'add'); + changeAllSizes(file, "add"); fileTableList.data.push(item); }; @@ -322,7 +340,7 @@ const deleteFile = (row?: any) => { if (row) { const idx = fileTableList.data.findIndex((item: any) => item.id === row.id); fileTableList.data.splice(idx, 1); - changeAllSizes(row.file,'del'); + changeAllSizes(row.file, "del"); } }; diff --git a/src/lang/package/en.ts b/src/lang/package/en.ts index 86a59f6..053f724 100644 --- a/src/lang/package/en.ts +++ b/src/lang/package/en.ts @@ -184,6 +184,8 @@ export default { fileName: "File name", fileSize: "Size", singleFileSize: "The size of a file cannot exceed 20 MB.", + fileNums: "File Number", + fileSizes: "File Size", }, formTipText: { analyticTip: diff --git a/src/lang/package/zh-cn.ts b/src/lang/package/zh-cn.ts index 97f5c62..1062fd7 100644 --- a/src/lang/package/zh-cn.ts +++ b/src/lang/package/zh-cn.ts @@ -188,6 +188,8 @@ export default { fileName: "文件名", fileSize: "大小", singleFileSize: "单个文件大小不能超过20MB", + fileNums: "文件数", + fileSizes: "文件大小", }, formTipText: { analyticTip: diff --git a/src/views/knowledgeFile/index.vue b/src/views/knowledgeFile/index.vue index d576452..cd78c36 100644 --- a/src/views/knowledgeFile/index.vue +++ b/src/views/knowledgeFile/index.vue @@ -558,7 +558,7 @@ :tipText="$t('dialogTipText.fileAllFormat')" accept=".md,.xlsx,.pdf,.doc,.docx,.txt,.pptx,.html" :maxFileNum="128" - :maxSize="0.5" + :maxSize="0.488" :handleUploadMyFile="handleUploadMyFile" :handleQueryTaskList="handleQueryTaskList" :handleCancelVisible="handleCancelVisible" -- Gitee From 7357f1f99f8bd57e7c4e5ef992bbe5d9baba81b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=A8=9C?= Date: Thu, 20 Mar 2025 16:39:59 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E5=86=85=E5=AE=B9=E9=A2=84=E8=A7=88?= =?UTF-8?q?=E9=AB=98=E4=BA=AE=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/knowledgeFileSection/index.vue | 3 +-- vite.config.ts | 5 +++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/views/knowledgeFileSection/index.vue b/src/views/knowledgeFileSection/index.vue index 99ce277..0306474 100644 --- a/src/views/knowledgeFileSection/index.vue +++ b/src/views/knowledgeFileSection/index.vue @@ -238,8 +238,7 @@ - {{ itemText }} -
+
diff --git a/vite.config.ts b/vite.config.ts index 3337c7e..2c6ec92 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -60,10 +60,11 @@ export default defineConfig(({ mode }: ConfigEnv): UserConfig => { open: true, proxy: { "/witchaind/api": { - target: "http://116.63.144.61:9988", + target: "https://euler-copilot-master.test.osinfra.cn/witchaind", changeOrigin: true, ws: false, - rewrite: (path) => path.replace(new RegExp("^" + "/witchaind/api"), ""), + secure: false, + rewrite: (path) => path.replace(/^\/witchaind\/api/, "/api") }, }, }, -- Gitee