/**
 * 提示工具类
*/
export class TipsUtils {
	/**
	*轻提示
	* @param text - 提示内容
	*/
	static tips_toast(text : string) {
		uni.showToast({
			icon: "none",
			title: text,
			duration: 2000,
		});
	}
	/**
	 * 强提示
	 * @param text - 提示内容
	 * @param showCancel - 是否显示取消按钮
	 */
	static tips_alert(text : string,showCancel:boolean) {
		return new Promise((resolve,reject)=>{
			uni.showModal({
				title: '提示',
				content: text,
				showCancel: showCancel,
				confirmText: '确定',
				confirmColor:'#9BB051',
				success(res) {
					resolve(res)
				},
				fail(err) {
					reject(err)
				}
			});
		})
	}
}

/**
 * 验证工具类
 */
export class ValidateUtils {
	/**
	 * 验证手机号格式
	 * @param phone - 手机号字符串
	 * @returns 是否有效
	 */
	static validatePhone(phone : string) : boolean {
		return /^1[3-9]\d{9}$/.test(phone);
	}

	/**
	 * 验证邮箱格式
	 * @param email - 邮箱字符串
	 * @returns 是否有效
	 */
	static validateEmail(email : string) : boolean {
		return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
	}

	/**
	 * 验证身份证号格式
	 * @param idCard - 身份证号字符串
	 * @returns 是否有效
	 */
	static validateIdCard(idCard : string) : boolean {
		return /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/.test(idCard);
	}
}

/**
 * 路由工具类
 */
 export class RouterUtils {
	 /**
	 * 返回上一页
	 */
	 static back() {
		 uni.navigateBack();
	 }
	 
	 /**
	 * 跳转到指定页面
	 * @param path - 页面路径
	 */
	 static to_page(path:string){
		 uni.navigateTo({
		 	url:path
		 })
	 }
 }
 
/**
 * 日期时间格式化工具
 * @param date - 日期对象或时间戳
 * @param format - 格式字符串，默认：'YYYY-MM-DD HH:mm:ss'
 * @returns 格式化后的日期字符串
 */
export const formatDate = (date : Date | number, format : string = 'YYYY-MM-DD HH:mm:ss') : string => {
	let d : Date = typeof date === 'number' ? new Date(date) : date;

	const padZero = (num : number) : string => num.toString().padStart(2, '0');

	const replacements : Record<string, string> = {
		'YYYY': d.getFullYear().toString(),
		'MM': padZero(d.getMonth() + 1),
		'DD': padZero(d.getDate()),
		'HH': padZero(d.getHours()),
		'mm': padZero(d.getMinutes()),
		'ss': padZero(d.getSeconds()),
		'SSS': padZero(d.getMilliseconds()).padStart(3, '0')
	};

	return format.replace(/YYYY|MM|DD|HH|mm|ss|SSS/g, match => replacements[match]);
};

/**
 * 生成随机颜色
 * @returns 十六进制颜色字符串
 */
export const randomColor = () : string => {
	return `#${Math.floor(Math.random() * 0xffffff).toString(16).padStart(6, '0')}`;
};