/** * this util module is about to anonymize strings like phone, user name, account no and so on * @module angle-util/anonymizer */ export default { fixMobileNo (phone: number | string): string { if (typeof (phone) === 'number') { // change phone into string type at first phone = phone.toString() } if (phone) { if (phone.length === 11) { // valid mobile length let prefix = phone.substring(0, 3) let suffix = phone.substring(phone.length - 4) return `${prefix}****${suffix}` } else { return phone } } else { return '' } }, fixTelNo (tel: number | string): string { if (typeof (tel) === 'number') { tel = tel.toString() } // NOTE 保留前3,后4,其他位隐匿 if (tel) { if (tel.length >= 8) { let prefix = tel.substring(0, 3) let suffix = tel.substring(tel.length - 4) let anonyLength = tel.length - 7 return `${prefix}${'*'.repeat(anonyLength)}${suffix}` } else { return tel } } else { return '' } }, fixCardNo (cardNo: number | string): string { if (typeof (cardNo) === 'number') { cardNo = cardNo.toString() } // NOTE 隐匿倒数第5位至往前共9位内容 if (cardNo) { if (cardNo.length >= 16) { const prefix = cardNo.substring(0, cardNo.length - 13) const suffix = cardNo.substring(cardNo.length - 4) return `${prefix}*********${suffix}` } else { return cardNo } } else { return '' } }, fixCertNo (certNo: number | string): string { if (typeof (certNo) === 'number') { certNo = certNo.toString() } // NOTE 隐匿倒数第6位至往前共4位内容 if (certNo) { if (certNo.length >= 15) { const prefix = certNo.substring(0, certNo.length - 9) const suffix = certNo.substring(certNo.length - 5) return `${prefix}****${suffix}` } else { return certNo } } else { return '' } }, fixName (name: string, hideFirst = false): string { if (name) { if (hideFirst) { // 隐藏姓,显示名 let suffix = name.substring(1) return `*${suffix}` } else { // 隐藏除首尾的其他内容 if (name.length > 2) { let prefix = name[0] let suffix = name[name.length - 1] let anonyLength = name.length - 2 return `${prefix}${'*'.repeat(anonyLength)}${suffix}` } else if (name.length === 2) { return `${name[0]}*` } else { return name } } } else { return '' } } }