diff --git a/web-admin/src/views/pl/self-vehicle/index.vue b/web-admin/src/views/pl/self-vehicle/index.vue index 6bf1b385c..34e67d33b 100644 --- a/web-admin/src/views/pl/self-vehicle/index.vue +++ b/web-admin/src/views/pl/self-vehicle/index.vue @@ -61,6 +61,15 @@ filename="自有车列表.xlsx" /> + + 批量下载证书 ZIP + + previewListPhoto(raw) const handlePhotoDownload = (raw?: string | null) => downloadListPhoto(raw) @@ -650,6 +660,7 @@ const { handlePersonnelFormSaved } = usePlVehiclePersonnelQuickCreate({ onSelect: handlePersonnelSelect }) const selectedRows = ref([]) +const certZipLoading = ref(false) function buildListQueryParams(): Record { const params: Record = { @@ -1001,6 +1012,32 @@ function handleSelectionChange(rows: Vehicle[]) { selectedRows.value = rows } +async function handleBatchDownloadCertZip() { + if (!selectedRows.value.length || certZipLoading.value) return + certZipLoading.value = true + try { + const result = await buildAndSaveVehicleCertZip(selectedRows.value) + if (!result.zipName && result.okCount === 0 && result.failCount === 0) { + ElMessage.warning('无可下载附件') + return + } + if (!result.zipName && result.failCount > 0) { + ElMessage.error('下载失败,请稍后重试') + return + } + if (result.failCount > 0) { + ElMessage.warning(`已打包 ${result.okCount} 个文件,${result.failCount} 个失败`) + return + } + ElMessage.success(`下载成功(${result.okCount} 个文件)`) + } catch (e) { + console.error(e) + ElMessage.error('下载失败,请稍后重试') + } finally { + certZipLoading.value = false + } +} + function handleToolbarEdit() { if (selectedRows.value.length !== 1) { ElMessage.warning('请选择一条车辆记录')