From d6c71dc292cf3eebdfd85091e4d9d16fe0181aba Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Fri, 23 Jan 2026 09:31:01 +0800 Subject: [PATCH] =?UTF-8?q?2026-01-23=201=E3=80=81=E6=94=B6=E8=B4=A7?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E4=BB=BB=E5=8A=A1=E9=80=9A=E7=9F=A5=E3=80=81?= =?UTF-8?q?=E6=8B=A3=E8=B4=A7=E5=87=BA=E5=BA=93=E4=BB=BB=E5=8A=A1=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E9=A1=B5=E9=9D=A2=E5=9C=A8=E3=80=90=E4=B8=8B=E8=BE=BE?= =?UTF-8?q?=E3=80=91=E6=97=B6=EF=BC=8C=E8=A6=81=E6=A0=A1=E9=AA=8C=E4=B8=8B?= =?UTF-8?q?=E6=96=B9=E6=98=8E=E7=BB=86=E5=BF=85=E9=A1=BB=E6=9C=89=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=EF=BC=8C=E4=B8=94=E6=89=80=E6=9C=89=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E7=9A=84=E4=BB=93=E5=BA=93=E3=80=81=E5=85=B3=E8=81=94=E5=8D=95?= =?UTF-8?q?=E5=8F=B7=E3=80=81=E5=85=B3=E8=81=94=E5=8D=95=E8=A1=8C=E5=8F=B7?= =?UTF-8?q?=E5=BF=85=E5=A1=AB=202=E3=80=81=E9=A2=86=E6=96=99=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2=E5=9C=A8=E3=80=90?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E3=80=91=E3=80=90=E4=B8=8B=E8=BE=BE=E3=80=91?= =?UTF-8?q?=E6=97=B6=E9=83=BD=E8=A6=81=E6=A0=A1=E9=AA=8C=E4=B8=8B=E6=96=B9?= =?UTF-8?q?=E6=9D=90=E6=96=99=E6=98=8E=E7=BB=86=E7=9A=84=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E5=BF=85=E5=A1=AB=203=E3=80=81=E8=B0=83=E6=95=B4=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E9=A2=84=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/filePreview.js | 414 +++++++++++++++++- .../soIssueNotify/searchIssureNotify.vue | 24 +- src/views/modules/qc/inboundNotification.vue | 21 + src/views/modules/qc/outboundNotification.vue | 21 + 4 files changed, 461 insertions(+), 19 deletions(-) diff --git a/src/utils/filePreview.js b/src/utils/filePreview.js index 5153959..2fd67b2 100644 --- a/src/utils/filePreview.js +++ b/src/utils/filePreview.js @@ -1,15 +1,16 @@ /** * 文件预览工具类 - * 支持图片、视频、PDF、TXT、Excel、Word、PPT等格式的预览 + * 支持图片、视频、音频、PDF、TXT、Excel、Word、PPT等格式的预览 */ import XLSX from 'xlsx' // 文件类型分类 const FILE_TYPES = { - image: ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'], - video: ['mp4', 'avi', 'mov', 'wmv', 'flv', 'webm'], + image: ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'ico'], + video: ['mp4', 'avi', 'mov', 'wmv', 'flv', 'webm', 'mkv', 'ogg'], + audio: ['mp3', 'wav', 'ogg', 'flac', 'aac', 'm4a', 'wma'], pdf: ['pdf'], - txt: ['txt', 'log', 'json', 'xml', 'csv'], + txt: ['txt', 'log', 'json', 'xml', 'csv', 'html', 'htm', 'css', 'js'], excel: ['xls', 'xlsx'], word: ['doc', 'docx'], ppt: ['ppt', 'pptx'] @@ -40,12 +41,14 @@ export function getFileType(fileName) { export function getMimeType(suffix) { const mimeMap = { // 图片 - jpg: 'image/jpeg', jpeg: 'image/jpeg', png: 'image/png', gif: 'image/gif', bmp: 'image/bmp', webp: 'image/webp', + jpg: 'image/jpeg', jpeg: 'image/jpeg', png: 'image/png', gif: 'image/gif', bmp: 'image/bmp', webp: 'image/webp', svg: 'image/svg+xml', ico: 'image/x-icon', // 视频 - mp4: 'video/mp4', avi: 'video/x-msvideo', mov: 'video/quicktime', wmv: 'video/x-ms-wmv', flv: 'video/x-flv', webm: 'video/webm', + mp4: 'video/mp4', avi: 'video/x-msvideo', mov: 'video/quicktime', wmv: 'video/x-ms-wmv', flv: 'video/x-flv', webm: 'video/webm', mkv: 'video/x-matroska', ogg: 'video/ogg', + // 音频 + mp3: 'audio/mpeg', wav: 'audio/wav', flac: 'audio/flac', aac: 'audio/aac', m4a: 'audio/mp4', wma: 'audio/x-ms-wma', // 文档 pdf: 'application/pdf', - txt: 'text/plain', log: 'text/plain', json: 'application/json', xml: 'application/xml', csv: 'text/csv', + txt: 'text/plain', log: 'text/plain', json: 'application/json', xml: 'application/xml', csv: 'text/csv', html: 'text/html', htm: 'text/html', css: 'text/css', js: 'application/javascript', // Office xls: 'application/vnd.ms-excel', xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', @@ -71,6 +74,345 @@ export function blobToArrayBuffer(blob) { }) } +/** + * 预览图片文件 + * @param {Blob} blobData - 文件数据 + * @param {String} fileName - 文件名 + */ +export function previewImage(blobData, fileName) { + try { + const fileURL = URL.createObjectURL(blobData) + const previewWindow = window.open('', '_blank') + if (!previewWindow) { + // 如果弹窗被阻止,尝试直接打开 + window.open(fileURL, '_blank') + return true + } + + previewWindow.document.write(` + + +
+ +