import Decimal from 'decimal.js'

/**
 * 格式化金额格式
 * 返回的是字符串23,245.12保留2位小数
 * @param num
 * @returns {string}
 */
export function toMoney(num) {
	num = num.toFixed(2)
	num = parseFloat(num)
	num = num.toLocaleString('zh', {
		minimumFractionDigits: 2,
		useGrouping: true
	})
	return num
}

/**
 * 格式化金额格式
 * 返回的是字符串23,245.12保留2位小数
 * @param num
 * @returns {string}
 */
export function toDoller(val) {
	return new Decimal(val).div(100).toNumber();
}

/**
 * 格式化金额格式
 * 返回的是字符串23,245.12保留2位小数
 * @param num
 * @returns {string}
 */
export function toCent(val) {
	return new Decimal(val).mul(100).toNumber();
}

export function moneyFormat(val) {
	return toMoney(toDoller(val));
}

/**
 * 日期格式化
 */

/**
 * 日期格式化
 */
export function dateFormat(date, format = 'yyyy-MM-dd') {
	if(typeof(date) === 'string'){
		date = date.replace(/\-/g, "/")
	}
	format = format || 'yyyy-MM-dd hh:mm:ss';
	date = new Date(date);
	if (date !== 'Invalid Date') {
		let o = {
			"M+": date.getMonth() + 1, //month
			"d+": date.getDate(), //day
			"h+": date.getHours(), //hour
			"m+": date.getMinutes(), //minute
			"s+": date.getSeconds(), //second
			"q+": Math.floor((date.getMonth() + 3) / 3), //quarter
			"S": date.getMilliseconds() //millisecond
		}
		if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
			(date.getFullYear() + "").substr(4 - RegExp.$1.length));
		for (let k in o)
			if (new RegExp("(" + k + ")").test(format))
				format = format.replace(RegExp.$1,
					RegExp.$1.length === 1 ? o[k] :
					("00" + o[k]).substr(("" + o[k]).length));
		return format;
	}
	return '';
}

export function stringFilterNum(val,num) {
	return val.substring(0, num) + '**' + val.substring(7)
}

export function phoneFilter(val) {
	return val.substring(0, 3) + '****' + val.substring(7)
}

export function idNumberFilter(val) {
	return val.substring(0, 3) + '************' + val.substring(14)
}

export function bankCardFilter(val) {
	return val.substring(0, 4) + ' **** **** ' + val.substring(val.length - 4)
}

export function moneyComdify(val){
	var n = (val/100).toFixed(2);
	var re = /\d{1,3}(?=(\d{3})+$)/g;
	var num = n.replace(/^(\d+)((\.\d+)?)$/,function(s,s1,s2){return s1.replace(re,"$&,")+s2;});
	return num;
}

