From b7a6fbe73a9d4b2a3ca664c2b4462a0aa5719977 Mon Sep 17 00:00:00 2001 From: "97694732@qq.com" Date: Mon, 15 Jun 2026 11:32:57 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=B9=A6=E5=8F=B7=E5=8E=BB=E6=8E=89?= =?UTF-8?q?=E5=88=86=E9=9A=94=E7=AC=A6=E6=A3=80=E6=B5=8B10=E4=BD=8D?= =?UTF-8?q?=E5=90=8E=E5=86=8D=E8=BD=AC=E6=8D=A2ISBN-13?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/upload/upload.vue | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/pages/upload/upload.vue b/pages/upload/upload.vue index cf8e308..f0cb4e7 100644 --- a/pages/upload/upload.vue +++ b/pages/upload/upload.vue @@ -1241,10 +1241,11 @@ export default { }, noIsbnUnifyIsbn(val) { // 10位书号(ISBN-10)自动转为13位ISBN填入ISBN字段 - var result = this.convertIsbn10To13(val) - if (result && result !== val.replace(/[-\s]/g, '')) { + // 去掉分隔符(-、空格)后检测是否为10位ISBN + var clean = (val || '').replace(/[-\s]/g, '') + if (clean.length === 10 && /^\d{9}[\dXx]$/i.test(clean)) { if (!this.noIsbnIsbn) { - this.noIsbnIsbn = result + this.noIsbnIsbn = this.convertIsbn10To13(clean) } } } @@ -1260,16 +1261,11 @@ export default { }, methods: { - // ISBN-10 转 ISBN-13(自动转换) - convertIsbn10To13(isbn) { - if (!isbn) return isbn - // 去掉连字符和空格 - var clean = isbn.replace(/[-\s]/g, '') - // 只处理10位纯数字(可能有X结尾) - var match = clean.match(/^(\d{9})([\dXx])$/) - if (!match) return isbn + // ISBN-10 转 ISBN-13 + convertIsbn10To13(clean) { + if (!clean || clean.length !== 10) return '' // 前9位 + 前缀978 - var digits = '978' + match[1] + var digits = '978' + clean.slice(0, 9) // 计算ISBN-13校验码 var sum = 0 for (var i = 0; i < 12; i++) {