| | |
| | | </div> |
| | | <!-- 申请中--> |
| | | <div v-if="detailDemandStatus === '1' && !requesterProvider"> |
| | | <div class="detail-title">数据上传</div> |
| | | <div class="detail-title" :style="{ marginTop:pxToRem(10)}">数据上传</div> |
| | | <div class="upload-container"> |
| | | <el-upload |
| | | :http-request="handleHttpRequest" |
| | |
| | | </div> |
| | | <template #footer> |
| | | <template v-if="detailDemandStatus === '1' && !requesterProvider"> |
| | | <el-button color="#F2F3F5" :loading="submitting" :disabled="submitting" @click="rejectTheApplication">拒绝申请</el-button> |
| | | <el-button class="" color="#4C34FF" :loading="submitting" :disabled="submitting" @click="approvedByTheReview">审核通过</el-button> |
| | | <el-button color="#F2F3F5" :loading="submitting || uploading" :disabled="submitting || uploading" @click="rejectTheApplication">拒绝申请</el-button> |
| | | <el-button class="" color="#4C34FF" :loading="submitting || uploading" :disabled="submitting || uploading" @click="approvedByTheReview">审核通过</el-button> |
| | | </template> |
| | | <template v-if="detailDemandStatus === '2'"> |
| | | <el-button class="" color="#4C34FF" @click="downloadAllFiles">全部下载</el-button> |
| | |
| | | const uploadedFiles = ref([]) // 已上传文件列表 |
| | | const responseData = ref(null) |
| | | const submitting = ref(false) // 提交中状态 |
| | | const uploading = ref(false) // 文件上传中状态 |
| | | // 自定义上传请求函数 |
| | | const handleHttpRequest = async (options) => { |
| | | uploading.value = true |
| | | try { |
| | | // 创建FormData对象 |
| | | const formData = new FormData() |
| | |
| | | |
| | | // 调用导入的API函数 |
| | | const response = await putFileAttachApi(formData) |
| | | console.log('response',response) |
| | | if (response.data && response.data.success) { |
| | | // 调用上传成功的回调 |
| | | options.onSuccess(response) |
| | |
| | | // 调用上传失败的回调 |
| | | options.onError(error) |
| | | console.error('文件上传失败:', error) |
| | | } finally { |
| | | uploading.value = false |
| | | } |
| | | } |
| | | // 拒绝申请弹框控制 |
| | |
| | | const tableData = ref([]) // 附件表格数据 |
| | | // 文件移除 |
| | | const handleFileRemove = (file, fileList) => { |
| | | // 从已上传文件列表中移除对应文件 |
| | | if (file.response && file.response.attachId) { |
| | | uploadedFiles.value = uploadedFiles.value.filter(item => item.attachId !== file.response.attachId) |
| | | } |
| | | uploadedFiles.value = fileList |
| | | // 清空响应数据 |
| | | if (responseData.value && responseData.value.attachId === file.response?.attachId) { |
| | | responseData.value = null |
| | |
| | | } |
| | | |
| | | // 文件大小限制,这里限制为100MB |
| | | const maxSize = 100 * 1024 * 1024 // 100MB |
| | | if (file.size > maxSize) { |
| | | ElMessage.error('文件大小不能超过100MB') |
| | | return false |
| | | } |
| | | // const maxSize = 100 * 1024 * 1024 // 100MB |
| | | // if (file.size > maxSize) { |
| | | // ElMessage.error('文件大小不能超过100MB') |
| | | // return false |
| | | // } |
| | | |
| | | return true |
| | | } |
| | |
| | | // 添加更严格的检查,确保response不是undefined |
| | | if (response && response?.data && response?.data?.success) { |
| | | const fileData = response.data.data |
| | | console.log('成功数据', fileData) |
| | | responseData.value = fileData |
| | | // 添加到已上传文件列表 |
| | | uploadedFiles.value.push({ |
| | |
| | | } |
| | | } |
| | | |
| | | // 下载文件 |
| | | const downloadFile = file => { |
| | | if (file.link) { |
| | | // 创建一个隐藏的a标签来触发下载 |
| | | const a = document.createElement('a') |
| | | a.href = file.link |
| | | a.download = file.originalName || file.name |
| | | document.body.appendChild(a) |
| | | a.click() |
| | | document.body.removeChild(a) |
| | | } else { |
| | | ElMessage.warning('文件链接无效') |
| | | } |
| | | } |
| | | |
| | | // 从表格下载文件 |
| | | const downloadFileFromTable = file => { |
| | | if (file.fileUrl) { |
| | | // 创建一个隐藏的a标签来触发下载 |
| | | const a = document.createElement('a') |
| | | a.href = file.fileUrl |
| | | a.download = file.name || 'attachment' |
| | | a.download = file.fileOriginalName || '下载附件' |
| | | document.body.appendChild(a) |
| | | a.click() |
| | | document.body.removeChild(a) |
| | |
| | | if (file.fileUrl) { |
| | | const a = document.createElement('a') |
| | | a.href = file.fileUrl |
| | | a.download = file.name || `attachment_${index + 1}` |
| | | a.download = file.fileOriginalName || `下载附件_${index + 1}` |
| | | document.body.appendChild(a) |
| | | a.click() |
| | | document.body.removeChild(a) |
| | |
| | | |
| | | // 拒绝申请 |
| | | const rejectTheApplication = () => { |
| | | if (uploadedFiles.value.length === 0) { |
| | | return ElMessage.warning('请上传数据') |
| | | } |
| | | // if (uploadedFiles.value.length === 0) { |
| | | // return ElMessage.warning('请上传数据') |
| | | // } |
| | | // 打开拒绝申请弹框 |
| | | rejectionDialogVisible.value = true |
| | | } |
| | |
| | | const approvedByTheReview = () => { |
| | | if (uploadedFiles.value.length === 0) { |
| | | return ElMessage.warning('请上传数据') |
| | | } |
| | | } |
| | | // 从 uploadedFiles.value 中提取所有 attachId |
| | | const id = uploadedFiles.value.map(file => file.attachId) |
| | | submitting.value = true |
| | |
| | | :deep(.el-upload-list) { |
| | | margin-top: 10px; |
| | | } |
| | | |
| | | </style> |