fix:书号去掉分隔符检测10位后再转换ISBN-13

This commit is contained in:
97694732@qq.com 2026-06-15 11:32:57 +08:00
parent 9e623e65ab
commit b7a6fbe73a

View File

@ -1241,10 +1241,11 @@ export default {
}, },
noIsbnUnifyIsbn(val) { noIsbnUnifyIsbn(val) {
// 10ISBN-1013ISBNISBN // 10ISBN-1013ISBNISBN
var result = this.convertIsbn10To13(val) // -10ISBN
if (result && result !== val.replace(/[-\s]/g, '')) { var clean = (val || '').replace(/[-\s]/g, '')
if (clean.length === 10 && /^\d{9}[\dXx]$/i.test(clean)) {
if (!this.noIsbnIsbn) { if (!this.noIsbnIsbn) {
this.noIsbnIsbn = result this.noIsbnIsbn = this.convertIsbn10To13(clean)
} }
} }
} }
@ -1260,16 +1261,11 @@ export default {
}, },
methods: { methods: {
// ISBN-10 ISBN-13 // ISBN-10 ISBN-13
convertIsbn10To13(isbn) { convertIsbn10To13(clean) {
if (!isbn) return isbn if (!clean || clean.length !== 10) return ''
//
var clean = isbn.replace(/[-\s]/g, '')
// 10X
var match = clean.match(/^(\d{9})([\dXx])$/)
if (!match) return isbn
// 9 + 978 // 9 + 978
var digits = '978' + match[1] var digits = '978' + clean.slice(0, 9)
// ISBN-13 // ISBN-13
var sum = 0 var sum = 0
for (var i = 0; i < 12; i++) { for (var i = 0; i < 12; i++) {