《《 验证码倒计时 》》
//参数分别为 当前实例对象,需要倒计时的秒数,
//倒计时拼接秒数的提示文字以及开启倒计时之前的显示文字
export const getVerifyCode =(vm, time, showTxt , btnText) =>{
let timer = null;
let count = time;
if(!showTxt){
showTxt = '重新获取'
}
if(!btnText) {
btnText = '获取验证码'
}
vm.verifyCodeText = ${count}秒后${showTxt};
vm.verifyCodeDisabled = true;
timer = setInterval(() => {
count--;
if (count <= 0) {
clearInterval(timer);
vm.verifyCodeText = btnText;
vm.verifyCodeDisabled = false;
} else {
vm.verifyCodeText = ${count}秒后${showTxt};
}
}, 1000);
}
//调用: import { getVerifyCode } from "@/utils/utils" html:<view @click="sendNote" class="send-btn">{{ verifyCodeText }} data:{ return { verifyCodeText: "获取验证码" } } method:{ async sendNote(){ if(this.verifyCodeText !== '获取验证码') { return } const noteForm = { mobile: this.form.mobile, captcha: this.form.captcha, type: this.form.type, userType: this.form.userType } //接口请求 const getNoteRes = await getNoteApi(noteForm); if(getNoteRes == 1) { this.refs.uToast.show({ type:'success', message:'短信已发送,请注意查收!' }) //调用工具函数 getVerifyCode(this,60) } else { this.refs.uToast.show({ type:'error', message:getNoteRes }) } }, }
《《 生成随机数 》》 export const createRandomNum = (sum = 5) => { const nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; let randomStr = ""; for (let i = 0; i < sum; i++) { const index = Math.floor(Math.random() * nums.length); randomStr += nums[index]; } return randomStr; }
调用: const random = createRandomNum();
《《 js生成唯一的id 》》 // 方式1:基于时间戳和随机数 这种方法可以确保唯一性,但 ID 相对较长,不适用于某些场景 const uniqueId = 'id-' + new Date().getTime().toString(36) + '-' + Math.random().toString(36).substr(2, 9); console.log(uniqueId);
// 方式2:基于性能计数器 可以确保唯一性,但需要浏览器支持性能 API const uniqueId = 'id-' + window.performance.now().toString().replace('.', ''); console.log(uniqueId);
《《 日期相关的工具函数 》》 日期格式化 年月日 export function dateFormat2(date) { let format = 'yyyy-MM-dd'; if (date != 'Invalid Date') { var 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.length)); for (var k in o) if (new RegExp("(" + k + ")").test(format)) format = format.replace(RegExp.1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); return format; } return '';
} 获取当前年月日 时分秒 星期几 export const getDate = (type) =>{ var date = new Date(); var sign2 = ":"; var year = date.getFullYear() // 年 var month = date.getMonth() + 1; // 月 var day = date.getDate(); // 日 var hour = date.getHours(); // 时 var minutes = date.getMinutes(); // 分 var seconds = date.getSeconds() //秒 var weekArr = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天']; var week = weekArr[date.getDay()]; // 给一位数的数据前面加 “0” if (month >= 1 && month <= 9) { month = "0" + month; } if (day >= 0 && day <= 9) { day = "0" + day; } if (hour >= 0 && hour <= 9) { hour = "0" + hour; } if (minutes >= 0 && minutes <= 9) { minutes = "0" + minutes; } if (seconds >= 0 && seconds <= 9) { seconds = "0" + seconds; }
switch (type) {
case 1:
return year
break;
case 2:
return year + "-" + month
break;
case 3:
return year + "-" + month + "-" + day;
break;
case 4:
return year + "-" + month + "-" + day + " " + hour + sign2 + minutes + sign2 + seconds;
break;
default:
break;
}
} 获取当前月的1号 getDate() { var myDate = new Date(); var tYear = myDate.getFullYear(); var tMonth = myDate.getMonth(); tMonth = this.doHandleZero(tMonth + 1);// 月份要加1
return tYear + "-" + tMonth + "-01";
}, 获取当前日期往前或者往后任意天数的开始日期 getDateStr(AddDayCount) { // 计算初始日期 AddDayCount参数表示当前日期往前或往后的天数 var dd = new Date(); dd.setDate(dd.getDate()+AddDayCount); //获取AddDayCount天后的日期 var y = dd.getFullYear(); var m = (dd.getMonth()+1)<10? "0" +(dd.getMonth()+1):(dd.getMonth()+1); //获取当前月份的日期,不足10补0 var d = dd.getDate()<10? "0" +dd.getDate():dd.getDate(); //获取当前几号,不足10补0 return y + "-" + m + "-" + d; }, //调用 -15表示往前15天 正数则表示往后 this.GetDateStr(-15)
// 如果当前日期换成指定日期 //fillEndTime为指定日期 如:2022-02-21 getDateStr(fillEndTime,AddDayCount) { var dd = new Date(fillEndTime); dd.setDate(dd.getDate() + AddDayCount); //获取AddDayCount天后的日期 var y = dd.getFullYear(); var m = dd.getMonth() + 1 < 10 ? "0" + (dd.getMonth() + 1) : dd.getMonth() + 1; //获取当前月份的日期,不足10补0 var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate(); //获取当前几号,不足10补0 return y + "-" + m + "-" + d; },
计算两个日期相差天数 //方法1 getDaysBetween(dateString1, dateString2) { // 计算两个日期相差天数 var startDate = Date.parse(dateString1); var endDate = Date.parse(dateString2); if (startDate > endDate) { return 0; } if (startDate == endDate) { return 1; } var days = (endDate - startDate) / (1 * 24 * 60 * 60 * 1000); return days; } //方法2 function jisuan() { // let start = "2024-04-10 10:36:00" // let end = "2024-04-12 14:36:00" let date = ["2024-04-9 10:30:00","2024-04-10 10:30:00"]
let start = date[0]
let end = date[1]
let startDate = new Date(start);
let endDate = new Date(end);
let startDateD = start.split(' ')[0]
let endDateD = end.split(' ')[0]
let daysBetween;
let duration;
if(startDateD == endDateD) {
daysBetween = 0
}else {
daysBetween = Math.ceil((endDate - startDate) / (1000 * 60 * 60 * 24));
}
console.log('daysBetween',daysBetween);
let hoursBetween = Math.ceil((endDate - startDate) / (1000 * 60 * 60) % 24 > 2?(endDate - startDate) / (1000 * 60 * 60) % 24 - 2 : (endDate - startDate) / (1000 * 60 * 60) % 24);
console.log('hoursBetween',hoursBetween);
if(daysBetween == 0) {
duration = hoursBetween + '小时'
}else if(hoursBetween == 0) {
duration = daysBetween + '天'
}else {
duration = daysBetween + '天' + hoursBetween + '小时'
}
console.log('duration',duration); // 1天2小时
}
根据指定日期(或者当前日期)获取当前一周的日期 // 获取当前一周的日期 //data为传入的指定日期 为空则按照当前日期计算 export function getWeekDataList(data) { //根据日期获取本周周一~周日的年-月-日 var weekList = []; var date = data?new Date(data):new Date(); //判断本日期是否为周日,获取本周一日期 if(date.getDay()=="0"){ date.setDate(date.getDate() -6); }else { date.setDate(date.getDate() - date.getDay() + 1); } var myDate=date.getDate(); var myMonth=date.getMonth() + 1; if(date.getDate()<10){ myDate= '0'+ myDate; } if(date.getMonth() + 1<10){ myMonth='0'+myMonth; } weekList.push(date.getFullYear() + "-" + myMonth+ "-" + myDate); // 获取周二以后日期 for(var i=0;i<6;i++) { date.setDate(date.getDate() + 1); myDate=date.getDate(); myMonth=date.getMonth() + 1; if(date.getDate()<10){ myDate= '0'+ myDate; } if(date.getMonth() + 1<10){ myMonth='0'+myMonth; } weekList.push(date.getFullYear() + "-" + myMonth+ "-" +myDate); } return weekList; // console.log(weekList) } 《《 金额处理千分位展示 》》 export const toDieThousands = (num) => { let newNum = num if (num) { //转为数字类型 const numNum = Number(newNum.toString()) //正则修改千分位 newNum = numNum.toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") } return newNum }