add pdf base64

This commit is contained in:
2026-04-28 12:25:48 +08:00
parent 02e63dd25a
commit 0050127cfd

View File

@@ -618,11 +618,11 @@
<script setup>
import { apiApi, apiKeysApi, consoleApi, formConfigApi, productApi, subscriptionApi } from '@/api'
import { useUserStore } from '@/stores/user'
import { ElMessage } from 'element-plus'
import { marked } from 'marked'
import { computed, nextTick, onMounted, reactive, ref, watch } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { useUserStore } from '@/stores/user'
import CodeDisplay from '@/components/common/CodeDisplay.vue'
@@ -951,6 +951,11 @@ const isBase64ImageOnlyField = (field) => {
return getFieldValidationText(field).includes('Base64图片')
}
/** PDF 专用 Base64 字段(与后端 validBase64PDF仅 PDF、≤500KB */
const isBase64PDFField = (field) => {
return getFieldValidationText(field).includes('仅PDF')
}
const isBase64UploadField = (field) => {
if (field?.type !== 'textarea') return false
const validationText = getFieldValidationText(field)
@@ -958,6 +963,9 @@ const isBase64UploadField = (field) => {
}
const getUploadAcceptByField = (field) => {
if (isBase64PDFField(field)) {
return 'application/pdf,.pdf'
}
if (isBase64ImageOnlyField(field)) {
return 'image/jpeg,image/jpg,image/png,image/bmp'
}
@@ -965,6 +973,9 @@ const getUploadAcceptByField = (field) => {
}
const getUploadButtonTextByField = (field) => {
if (isBase64PDFField(field)) {
return '上传 PDF 授权书'
}
return isBase64ImageOnlyField(field) ? '上传图片JPG/BMP/PNG' : '上传文件JPG/BMP/PNG/PDF'
}
@@ -973,18 +984,27 @@ const handleImageUpload = (file, fieldName, field) => {
const fileObj = file.raw || file
// 验证文件类型
const allowedTypes = isBase64ImageOnlyField(field)
? ['image/jpeg', 'image/jpg', 'image/png', 'image/bmp']
: ['image/jpeg', 'image/jpg', 'image/png', 'image/bmp', 'application/pdf']
let allowedTypes
let typeErrMsg
if (isBase64PDFField(field)) {
allowedTypes = ['application/pdf']
typeErrMsg = '仅支持 PDF 文件'
} else if (isBase64ImageOnlyField(field)) {
allowedTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/bmp']
typeErrMsg = '只支持 JPG、BMP、PNG 格式的图片'
} else {
allowedTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/bmp', 'application/pdf']
typeErrMsg = '只支持 JPG、BMP、PNG、PDF 格式的文件'
}
if (!allowedTypes.includes(fileObj.type)) {
ElMessage.error(isBase64ImageOnlyField(field) ? '只支持 JPG、BMP、PNG 格式的图片' : '只支持 JPG、BMP、PNG、PDF 格式的文件')
ElMessage.error(typeErrMsg)
return false
}
// 验证文件大小(限制为5MB
const maxSize = 5 * 1024 * 1024 // 5MB
// PDF 授权书与后端 huibo decode 一致 ≤500KB其它 Base64 上传仍为 5MB
const maxSize = isBase64PDFField(field) ? 500 * 1024 : 5 * 1024 * 1024
if (fileObj.size > maxSize) {
ElMessage.error('文件大小不能超过 5MB')
ElMessage.error(isBase64PDFField(field) ? 'PDF 大小不能超过 500KB' : '文件大小不能超过 5MB')
return false
}