2025-09-28
This commit is contained in:
104
util/common.js
104
util/common.js
@@ -6,15 +6,115 @@ export const validatePhone = (phone) => {
|
||||
|
||||
|
||||
export const getImageUrl = (imagePath) => {
|
||||
if (!imagePath ) return ''
|
||||
if (!imagePath) return ''
|
||||
if (imagePath.startsWith('http')) return imagePath
|
||||
|
||||
// const baseURL = "http://192.168.1.43:3000"
|
||||
// const baseURL = "https://www.zrbjr.com"
|
||||
const baseURL = "https://minio.zrbjr.com"
|
||||
|
||||
// 如果图片路径以/uploads开头,直接返回原路径
|
||||
if (imagePath.startsWith('/uploads')) {
|
||||
return `${imagePath}`
|
||||
return `${baseURL}/jurongquan${imagePath}`
|
||||
}
|
||||
|
||||
return fullUrl
|
||||
}
|
||||
|
||||
export const getUserInfo = () => {
|
||||
return uni.getStorageSync("user")
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证并脱敏电话号码
|
||||
* @param {string} phone - 需要验证和脱敏的电话号码
|
||||
* @returns {string|boolean} - 脱敏后的电话号码,无效则返回false
|
||||
*/
|
||||
export function maskPhoneNumber(phone) {
|
||||
// 检查是否为字符串
|
||||
if (typeof phone !== 'string') {
|
||||
return phone;
|
||||
}
|
||||
|
||||
// 移除所有非数字字符
|
||||
const cleaned = phone.replace(/\D/g, '');
|
||||
|
||||
// 验证常见的电话号码格式
|
||||
// 支持: 11位手机号(中国大陆)、带区号的固定电话
|
||||
const phoneRegex = /^(1[3-9]\d{9})$|^(\d{3,4}-\d{7,8})$|^(\d{3,4}\d{7,8})$/;
|
||||
|
||||
if (!phoneRegex.test(cleaned) && !phoneRegex.test(phone)) {
|
||||
return phone; // 不是有效的电话号码
|
||||
}
|
||||
|
||||
// 根据不同格式进行脱敏
|
||||
if (cleaned.length === 11) {
|
||||
// 手机号: 保留前3位和后4位,中间4位用*代替
|
||||
return cleaned.replace(/^(\d{3})(\d{4})(\d{4})$/, '$1****$3');
|
||||
} else if (phone.includes('-')) {
|
||||
// 带区号的固定电话: 区号不变,号码中间用*代替
|
||||
const [areaCode, number] = phone.split('-');
|
||||
if (number.length <= 4) {
|
||||
return `${areaCode}-****`;
|
||||
}
|
||||
return `${areaCode}-${number.substr(0, 2)}****${number.substr(-2)}`;
|
||||
} else {
|
||||
// 不带区号的固定电话
|
||||
if (cleaned.length <= 4) {
|
||||
return '****';
|
||||
}
|
||||
return `${cleaned.substr(0, 2)}****${cleaned.substr(-2)}`;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 姓名脱敏处理
|
||||
* @param {string} name - 需要脱敏的姓名
|
||||
* @returns {string} - 脱敏后的姓名
|
||||
*/
|
||||
export function maskName(name) {
|
||||
// 检查输入是否为有效字符串
|
||||
if (!name || typeof name !== 'string') {
|
||||
return '';
|
||||
}
|
||||
|
||||
// 去除前后空格
|
||||
const trimmedName = name.trim();
|
||||
|
||||
// 检查是否为英文姓名(包含空格)
|
||||
if (trimmedName.includes(' ')) {
|
||||
const parts = trimmedName.split(' ').filter(part => part);
|
||||
|
||||
// 处理英文名:名全显,姓只显首字母
|
||||
if (parts.length >= 2) {
|
||||
const firstName = parts.slice(0, -1).join(' ');
|
||||
const lastName = parts[parts.length - 1];
|
||||
return `${firstName} ${lastName.charAt(0)}*`;
|
||||
}
|
||||
}
|
||||
|
||||
// 处理中文姓名
|
||||
const length = trimmedName.length;
|
||||
|
||||
switch (length) {
|
||||
case 1:
|
||||
// 单字名,不脱敏
|
||||
return trimmedName;
|
||||
case 2:
|
||||
// 双字名,隐藏第二个字
|
||||
return `${trimmedName[0]}*`;
|
||||
case 3:
|
||||
// 三字名,隐藏中间字
|
||||
return `${trimmedName[0]}*${trimmedName[2]}`;
|
||||
case 4:
|
||||
// 四字名(如复姓),隐藏中间两个字
|
||||
return `${trimmedName[0]}**${trimmedName[3]}`;
|
||||
default:
|
||||
// 更长的姓名,显示首尾各两个字,中间用*代替
|
||||
if (length > 4) {
|
||||
return `${trimmedName.substr(0, 2)}${'*'.repeat(length - 4)}${trimmedName.substr(-2)}`;
|
||||
}
|
||||
}
|
||||
|
||||
return trimmedName;
|
||||
}
|
||||
Reference in New Issue
Block a user