文件上传大小限制相关
This commit is contained in:
@@ -130,7 +130,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<div class="name">{{ file.name || file.fileName || '未知文件' }}</div>
|
<div class="name">{{ file.name || '未知文件' }}</div>
|
||||||
<div class="size">{{ file.size ? formatFileSize(file.size) : '' }}</div>
|
<div class="size">{{ file.size ? formatFileSize(file.size) : '' }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, computed } from 'vue'
|
import { ref, computed } from 'vue'
|
||||||
import { FILE_DOWNLOAD_URL } from '@/config'
|
import { FILE_DOWNLOAD_URL, FILE_MAX_SIZE } from '@/config'
|
||||||
import { fileAPI } from '@/api/file/file'
|
import { fileAPI } from '@/api/file/file'
|
||||||
import type { TbSysFileDTO } from '@/types/file/file'
|
import type { TbSysFileDTO } from '@/types/file/file'
|
||||||
import { ElButton, ElDialog } from 'element-plus'
|
import { ElButton, ElDialog } from 'element-plus'
|
||||||
@@ -179,7 +179,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|||||||
coverImg: '',
|
coverImg: '',
|
||||||
fileList: () => [],
|
fileList: () => [],
|
||||||
accept: '',
|
accept: '',
|
||||||
maxSize: 10 * 1024 * 1024,
|
maxSize: FILE_MAX_SIZE,
|
||||||
maxCount: 10,
|
maxCount: 10,
|
||||||
title: '文件上传',
|
title: '文件上传',
|
||||||
buttonText: '上传文件',
|
buttonText: '上传文件',
|
||||||
@@ -226,7 +226,7 @@ const currentFileList = computed(() => {
|
|||||||
// 判断已上传文件是否为图片
|
// 判断已上传文件是否为图片
|
||||||
const isUploadedImageFile = (file: InternalFile): boolean => {
|
const isUploadedImageFile = (file: InternalFile): boolean => {
|
||||||
if (file.localPreviewUrl) return true // 有本地预览说明是图片
|
if (file.localPreviewUrl) return true // 有本地预览说明是图片
|
||||||
const mimeType = file.mimeType || file.extension || ''
|
const mimeType = file.mimeType || ''
|
||||||
return mimeType.includes('image') || /\.(jpg|jpeg|png|gif|webp|bmp)$/i.test(file.name || '')
|
return mimeType.includes('image') || /\.(jpg|jpeg|png|gif|webp|bmp)$/i.test(file.name || '')
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,7 +240,7 @@ const getUploadedFileUrl = (file: InternalFile): string => {
|
|||||||
|
|
||||||
// 获取已上传文件的类型图标
|
// 获取已上传文件的类型图标
|
||||||
const getUploadedFileTypeIcon = (file: InternalFile): string => {
|
const getUploadedFileTypeIcon = (file: InternalFile): string => {
|
||||||
const ext = file.extension || file.name?.split('.').pop() || ''
|
const ext = file.type || file.name?.split('.').pop() || ''
|
||||||
const iconMap: Record<string, string> = {
|
const iconMap: Record<string, string> = {
|
||||||
pdf: '📄',
|
pdf: '📄',
|
||||||
doc: '📝',
|
doc: '📝',
|
||||||
|
|||||||
@@ -205,6 +205,9 @@ export const FILE_DOWNLOAD_URL = config.file.downloadUrl;
|
|||||||
export const PUBLIC_IMG_PATH = config.publicImgPath;
|
export const PUBLIC_IMG_PATH = config.publicImgPath;
|
||||||
export const PUBLIC_WEB_PATH = config.publicWebPath;
|
export const PUBLIC_WEB_PATH = config.publicWebPath;
|
||||||
|
|
||||||
|
// 文件上传大小限制(100MB)
|
||||||
|
export const FILE_MAX_SIZE = 100 * 1024 * 1024;
|
||||||
|
|
||||||
// 导出完整配置对象
|
// 导出完整配置对象
|
||||||
export const APP_CONFIG = {
|
export const APP_CONFIG = {
|
||||||
// 应用标题
|
// 应用标题
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
v-for="engineer in availableEngineers"
|
v-for="engineer in availableEngineers"
|
||||||
:key="engineer.userId"
|
:key="engineer.userId"
|
||||||
:label="`${engineer.username} (${engineer.statusName || '未知状态'})`"
|
:label="`${engineer.username} (${engineer.statusName || '未知状态'})`"
|
||||||
:value="engineer.userId"
|
:value="engineer.userId!"
|
||||||
>
|
>
|
||||||
<div style="display: flex; justify-content: space-between; align-items: center;">
|
<div style="display: flex; justify-content: space-between; align-items: center;">
|
||||||
<span>{{ engineer.username }}</span>
|
<span>{{ engineer.username }}</span>
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
ref="fileUploadRef"
|
ref="fileUploadRef"
|
||||||
mode="content"
|
mode="content"
|
||||||
:max-count="5"
|
:max-count="5"
|
||||||
:max-size="10 * 1024 * 1024"
|
:max-size="FILE_MAX_SIZE"
|
||||||
accept="image/*,.pdf,.doc,.docx,.xls,.xlsx"
|
accept="image/*,.pdf,.doc,.docx,.xls,.xlsx"
|
||||||
:auto-upload="false"
|
:auto-upload="false"
|
||||||
:custom-upload="handleFilesUpload"
|
:custom-upload="handleFilesUpload"
|
||||||
@@ -65,12 +65,13 @@
|
|||||||
import { ref, computed, watch } from 'vue'
|
import { ref, computed, watch } from 'vue'
|
||||||
import { ElDialog, ElButton, ElInput, ElSelect, ElOption, ElMessage } from 'element-plus'
|
import { ElDialog, ElButton, ElInput, ElSelect, ElOption, ElMessage } from 'element-plus'
|
||||||
import { FileUpload } from 'shared/components'
|
import { FileUpload } from 'shared/components'
|
||||||
import { fileAPI } from 'shared/api'
|
import { fileAPI } from 'shared/api/file'
|
||||||
import { workcaseAPI } from '@/api/workcase'
|
import { workcaseAPI } from '@/api/workcase'
|
||||||
import { workcaseChatAPI } from '@/api/workcase/workcaseChat'
|
import { workcaseChatAPI } from '@/api/workcase/workcaseChat'
|
||||||
import type { TbWorkcaseProcessDTO } from '@/types/workcase/workcase'
|
import type { TbWorkcaseProcessDTO } from '@/types/workcase/workcase'
|
||||||
import type { CustomerServiceVO } from '@/types/workcase/customer'
|
import type { CustomerServiceVO } from '@/types/workcase/customer'
|
||||||
import type { TbSysFileDTO } from 'shared/types'
|
import type { TbSysFileDTO } from 'shared/types'
|
||||||
|
import { FILE_MAX_SIZE } from '@/config'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
/** 是否显示弹窗 */
|
/** 是否显示弹窗 */
|
||||||
|
|||||||
@@ -216,6 +216,9 @@ export const FILE_UPLOAD_URL = config.file.uploadUrl;
|
|||||||
export const PUBLIC_IMG_PATH = config.publicImgPath;
|
export const PUBLIC_IMG_PATH = config.publicImgPath;
|
||||||
export const PUBLIC_WEB_PATH = config.publicWebPath;
|
export const PUBLIC_WEB_PATH = config.publicWebPath;
|
||||||
|
|
||||||
|
// 文件上传大小限制(100MB)
|
||||||
|
export const FILE_MAX_SIZE = 100 * 1024 * 1024;
|
||||||
|
|
||||||
// 导出完整配置对象
|
// 导出完整配置对象
|
||||||
export const APP_CONFIG = {
|
export const APP_CONFIG = {
|
||||||
// 应用标题
|
// 应用标题
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
:title="'上传文档到:' + currentKnowledgeName"
|
:title="'上传文档到:' + currentKnowledgeName"
|
||||||
button-text="上传文档"
|
button-text="上传文档"
|
||||||
accept=".pdf,.doc,.docx,.txt,.md"
|
accept=".pdf,.doc,.docx,.txt,.md"
|
||||||
:max-size="50 * 1024 * 1024"
|
:max-size="FILE_MAX_SIZE"
|
||||||
:max-count="10"
|
:max-count="10"
|
||||||
:custom-upload="customKnowledgeUpload"
|
:custom-upload="customKnowledgeUpload"
|
||||||
@upload-error="handleUploadError"
|
@upload-error="handleUploadError"
|
||||||
@@ -110,7 +110,7 @@ import { ElMessage, ElMessageBox } from 'element-plus'
|
|||||||
import { aiKnowledgeAPI } from 'shared/api/ai'
|
import { aiKnowledgeAPI } from 'shared/api/ai'
|
||||||
import { FileUpload, FileHistory } from 'shared/components'
|
import { FileUpload, FileHistory } from 'shared/components'
|
||||||
import DocumentSegment from 'shared/components/ai/knowledge/DocumentSegment.vue'
|
import DocumentSegment from 'shared/components/ai/knowledge/DocumentSegment.vue'
|
||||||
import { FILE_DOWNLOAD_URL } from '@/config/index'
|
import { FILE_DOWNLOAD_URL, FILE_MAX_SIZE } from '@/config/index'
|
||||||
import type { TbKnowledge } from 'shared/types'
|
import type { TbKnowledge } from 'shared/types'
|
||||||
|
|
||||||
// Tab 配置
|
// Tab 配置
|
||||||
|
|||||||
@@ -280,7 +280,7 @@ import type {
|
|||||||
DifyFileInfo,
|
DifyFileInfo,
|
||||||
TbSysFileDTO
|
TbSysFileDTO
|
||||||
} from 'shared/types'
|
} from 'shared/types'
|
||||||
import { AGENT_ID, FILE_DOWNLOAD_URL } from '@/config'
|
import { AGENT_ID, FILE_DOWNLOAD_URL, FILE_MAX_SIZE } from '@/config'
|
||||||
|
|
||||||
// 用户信息(TODO: 从实际用户store获取)
|
// 用户信息(TODO: 从实际用户store获取)
|
||||||
const userId = computed(()=>{
|
const userId = computed(()=>{
|
||||||
@@ -737,10 +737,9 @@ const uploadFile = async (file: File) => {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 文件大小限制 10MB
|
// 文件大小限制
|
||||||
const maxSize = 10 * 1024 * 1024
|
if (file.size > FILE_MAX_SIZE) {
|
||||||
if (file.size > maxSize) {
|
console.error(`文件大小超过${FILE_MAX_SIZE / 1024 / 1024}MB限制`)
|
||||||
console.error('文件大小超过10MB限制')
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -782,7 +781,7 @@ const loadMessagesFilesInfo = async (messageList: TbChatMessage[]) => {
|
|||||||
messageList.forEach(msg => {
|
messageList.forEach(msg => {
|
||||||
if (msg.files) {
|
if (msg.files) {
|
||||||
const filesArray = Array.isArray(msg.files) ? msg.files : [msg.files]
|
const filesArray = Array.isArray(msg.files) ? msg.files : [msg.files]
|
||||||
filesArray.forEach(id => {
|
filesArray.forEach((id: string) => {
|
||||||
if (id && !fileInfoCache.value.has(id)) {
|
if (id && !fileInfoCache.value.has(id)) {
|
||||||
fileIds.push(id)
|
fileIds.push(id)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -256,7 +256,7 @@
|
|||||||
ref="processFileUploadRef"
|
ref="processFileUploadRef"
|
||||||
mode="content"
|
mode="content"
|
||||||
:max-count="5"
|
:max-count="5"
|
||||||
:max-size="10 * 1024 * 1024"
|
:max-size="FILE_MAX_SIZE"
|
||||||
accept="image/*,.pdf,.doc,.docx,.xls,.xlsx"
|
accept="image/*,.pdf,.doc,.docx,.xls,.xlsx"
|
||||||
v-model:file-list="processUploadedFiles"
|
v-model:file-list="processUploadedFiles"
|
||||||
@upload-success="handleProcessUploadSuccess"
|
@upload-success="handleProcessUploadSuccess"
|
||||||
@@ -292,7 +292,7 @@ import { workcaseAPI } from '@/api/workcase'
|
|||||||
import { fileAPI } from 'shared/api/file'
|
import { fileAPI } from 'shared/api/file'
|
||||||
import { FileUpload } from 'shared/components'
|
import { FileUpload } from 'shared/components'
|
||||||
import { WorkcaseAssign } from '@/components'
|
import { WorkcaseAssign } from '@/components'
|
||||||
import { FILE_DOWNLOAD_URL } from '@/config'
|
import { FILE_DOWNLOAD_URL, FILE_MAX_SIZE } from '@/config'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
mode?: 'view' | 'edit' | 'create'
|
mode?: 'view' | 'edit' | 'create'
|
||||||
|
|||||||
Reference in New Issue
Block a user