From 73837d517dceee9cf1a8a9f101442d6eaf6420d7 Mon Sep 17 00:00:00 2001 From: Frost-ZX Date: Sun, 23 Feb 2025 21:33:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=B7=A5=E5=85=B7=E7=AE=B1/=E4=BA=8C?= =?UTF-8?q?=E7=BB=B4=E7=A0=81=E8=A7=A3=E6=9E=90=E5=92=8C=E7=94=9F=E6=88=90?= =?UTF-8?q?):=20=E6=94=AF=E6=8C=81=E8=AF=BB=E5=8F=96=E5=89=AA=E8=B4=B4?= =?UTF-8?q?=E6=9D=BF=E4=B8=AD=E7=9A=84=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Conversion/QrcodeReaderAndGenerator.vue | 98 ++++++++++++++++--- 1 file changed, 86 insertions(+), 12 deletions(-) diff --git a/src/views/ToolboxView/Conversion/QrcodeReaderAndGenerator.vue b/src/views/ToolboxView/Conversion/QrcodeReaderAndGenerator.vue index e489651..e5d9860 100644 --- a/src/views/ToolboxView/Conversion/QrcodeReaderAndGenerator.vue +++ b/src/views/ToolboxView/Conversion/QrcodeReaderAndGenerator.vue @@ -4,12 +4,19 @@ { + + console.debug('剪贴板内容', items); + + let imageItem = null; + let imageType = ''; + + for (let i = 0; i < items.length; i++) { + + let item = items[i]; + let types = item.types; + + for (let j = 0; j < types.length; j++) { + let type = types[j]; + if (type.startsWith('image/')) { + imageItem = item; + imageType = type; + break; + } + } + + if (imageItem) { + break; + } + + } + + if (imageItem) { + return imageItem.getType(imageType); + } else { + return null; + } + + }).then((blob) => { + + if (blob) { + return handleParseQrCode(blob); + } else { + $message.warning('未在剪贴板中找到图片'); + return false; + } + + }).catch((error) => { + console.error('读取剪贴板失败:'); + console.error(error); + $message.error('读取剪贴板失败,可能是没有权限。'); + return false; + }); + +} + /** - * @description 处理选择图片 - * @type { import('naive-ui').UploadOnChange } + * @description 处理解析二维码图片 + * @param {File} file */ -function handleSelectQrImage(options) { - - let file = options.file.file; - +function handleParseQrCode(file) { return readQrCodeImage(file).then((result) => { let { error, image, textList } = result; @@ -278,6 +343,7 @@ function handleSelectQrImage(options) { $message.error(error); readerData.dataURL = ''; readerData.results = []; + return false; } else { if (textList.length === 0) { $message.warning('未识别到有效的二维码'); @@ -286,10 +352,18 @@ function handleSelectQrImage(options) { } readerData.dataURL = image; readerData.results = textList; + return true; } }); +} +/** + * @description 处理选择图片 + * @type { import('naive-ui').UploadOnChange } + */ +function handleSelectQrImage(options) { + return handleParseQrCode(options.file.file); }