feat:无ISBN上传ISBN规则处理-13位直接返回/10位转13位/空或无法识别生成678随机

This commit is contained in:
97694732@qq.com 2026-06-23 17:06:56 +08:00
parent 247d582af8
commit 4c9d0bae02

View File

@ -3352,10 +3352,45 @@ export default {
}
},
// ISBN - ISBN13(678)
// ISBN - ISBN
getNoIsbnIsbnValue() {
if (this.noIsbnIsbn) return this.noIsbnIsbn
var raw = (this.noIsbnIsbn || '').replace(/[^0-9]/g, '')
// 1. 13978/979
if (raw.length === 13 && (raw.indexOf('978') === 0 || raw.indexOf('979') === 0)) {
return raw
}
// 2. 10 13
if (raw.length === 10) {
return this.convertIsbn10To13(raw)
}
// 3.
if (this.noIsbnUnifyIsbn) return this.noIsbnUnifyIsbn
// 4. 67813
return this.generateRandomIsbn()
},
// 10ISBN13
convertIsbn10To13(isbn10) {
var prefix = '978'
var first9 = isbn10.substring(0, 9)
var base12 = prefix + first9
// 13
var sum = 0
for (var i = 0; i < 12; i++) {
var weight = (i % 2 === 0) ? 1 : 3
sum += parseInt(base12[i], 10) * weight
}
var remainder = sum % 10
var checkDigit = remainder === 0 ? 0 : 10 - remainder
return base12 + checkDigit
},
// 67813ISBN
generateRandomIsbn() {
var rand = ''
for (var i = 0; i < 10; i++) {
rand += Math.floor(Math.random() * 10)