/**
* 判斷身份證號(hào)碼
*/
export function cardid (code) {
? let list = []
? let result = true
? let msg = ''
? var city = {
? ? 11: '北京',
? ? 12: '天津',
? ? 13: '河北',
? ? 14: '山西',
? ? 15: '內(nèi)蒙古',
? ? 21: '遼寧',
? ? 22: '吉林',
? ? 23: '黑龍江 ',
? ? 31: '上海',
? ? 32: '江蘇',
? ? 33: '浙江',
? ? 34: '安徽',
? ? 35: '福建',
? ? 36: '江西',
? ? 37: '山東',
? ? 41: '河南',
? ? 42: '湖北 ',
? ? 43: '湖南',
? ? 44: '廣東',
? ? 45: '廣西',
? ? 46: '海南',
? ? 50: '重慶',
? ? 51: '四川',
? ? 52: '貴州',
? ? 53: '云南',
? ? 54: '西藏 ',
? ? 61: '陜西',
? ? 62: '甘肅',
? ? 63: '青海',
? ? 64: '寧夏',
? ? 65: '新疆',
? ? 71: '臺(tái)灣',
? ? 81: '香港',
? ? 82: '澳門',
? ? 91: '國(guó)外 '
? }
? if (!validatenull(code)) {
? ? if (code.length == 18) {
? ? ? if (!code || !/(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(code)) {
? ? ? ? msg = '證件號(hào)碼格式錯(cuò)誤'
? ? ? } else if (!city[code.substr(0, 2)]) {
? ? ? ? msg = '地址編碼錯(cuò)誤'
? ? ? } else {
? ? ? ? // 18位身份證需要驗(yàn)證最后一位校驗(yàn)位
? ? ? ? code = code.split('')
? ? ? ? // ∑(ai×Wi)(mod 11)
? ? ? ? // 加權(quán)因子
? ? ? ? var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
? ? ? ? // 校驗(yàn)位
? ? ? ? var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2, 'x']
? ? ? ? var sum = 0
? ? ? ? var ai = 0
? ? ? ? var wi = 0
? ? ? ? for (var i = 0; i < 17; i++) {
? ? ? ? ? ai = code[i]
? ? ? ? ? wi = factor[i]
? ? ? ? ? sum += ai * wi
? ? ? ? }
? ? ? ? if (parity[sum % 11] != code[17]) {
? ? ? ? ? msg = '證件號(hào)碼校驗(yàn)位錯(cuò)誤'
? ? ? ? } else {
? ? ? ? ? result = false
? ? ? ? }
? ? ? }
? ? } else {
? ? ? msg = '證件號(hào)碼長(zhǎng)度不為18位'
? ? }
? } else {
? ? msg = '證件號(hào)碼不能為空'
? }
? list.push(result)
? list.push(msg)
? return list
}