import httpConfig from "@/common/http/config" export default { //时间格式化 formatDate (formats, timestamp) { var formats = formats || 'Y-M-D'; var myDate = timestamp ? new Date(timestamp) : new Date(); var year = myDate.getFullYear(); var month = formatDigit(myDate.getMonth() + 1); var day = formatDigit(myDate.getDate()); var hour = formatDigit(myDate.getHours()); var minute = formatDigit(myDate.getMinutes()); var second = formatDigit(myDate.getSeconds()); return formats.replace(/Y|M|D|h|m|s/g, function(matches) { return ({ Y: year, M: month, D: day, h: hour, m: minute, s: second })[matches]; }); // 小于10补0 function formatDigit (n) { return n.toString().replace(/^(\d)$/, '0$1'); } }, // 正则验证 checkStr(str,type) { switch (type){ case 'mobile': //电话 return /^1[3|4|5|6|7|8|9][0-9]\d{8}$/.test(str) case 'card': //身份证 return /^[\d]{6}(19|20)?[\d]{2}(0[1-9]|1[0-2])(0[1-9]|1[0-9]|2[0-9]|3[0-1])[0-9]{3}[xX\d]$/.test(str) case 'email': //邮箱 return /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(str) case 'qq': //qq return /^[1-9][0-9]{4,10}$/.test(str) case 'postcode': //邮编 return /^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}$/.test(str) case 'int': //整数 return /^-?\d+$/.test(str) case 'posint': //正整数 return /^\d+$/.test(str) case 'negint': //负整数 return /^-\d+$/.test(str) case 'num': //数字 return /^-?\d*\.?\d+$/.test(str) case 'posnum': //正数 return /^\d*\.?\d+$/.test(str) case 'negnum': //负数 return /^-\d*\.?\d+$/.test(str) case 'nposint': //非0正整数 return /^\+?[1-9][0-9]*$/.test(str) case 'nnegint': //非0负整数 return /^\-?[1-9][0-9]*$/.test(str) case 'price': //价格 return /(^[1-9]\d*(\.\d{1,2})?$)|(^0(\.\d{1,2})?$)/.test(str) case 'money': //金额(小数点2位) return /^\d*(?:\.\d{0,2})?$/.test(str); default: return true } }, // 当前日期加固定天数 getNumDay (num) { const currentDate = new Date(); currentDate.setDate(currentDate.getDate() + num); return currentDate.toISOString(); }, // 判断是否再有效期 isDateValid (startDate, endDate, date) { var currentDate = new Date(); if (date) currentDate = new Date(date); return currentDate > new Date(startDate + ' 00:00:00') && currentDate < new Date(endDate + ' 23:59:59'); }, // 判断指定日期是否小于今天 isDateLessThanToday (date, nowDate) { var currentDate = new Date(); if (nowDate) currentDate = new Date(nowDate); return currentDate < new Date(date + ' 23:59:59'); }, // 获取指定日期为周几 getDayOfWeek (dateString) { const days = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']; const date = new Date(dateString); return days[date.getDay()]; }, // 获取指定日期的三天 getDateList (dateStr) { const date = new Date(dateStr); let nextThreeDays = []; for (let i = 0; i < 3; i++) { const day = new Date(date); day.setDate(day.getDate() + i); nextThreeDays.push(day.toISOString().split('T')[0]); } return nextThreeDays; }, // 获取指定日期的上一天几下一天 getNewDate (str, isPurchaseDate, beforeDay) { const date = new Date(str); let day = ''; if (isPurchaseDate == '1') { let now = new Date(); day = new Date(now.setDate(now.getDate() + beforeDay)) } else day = new Date(); if (date.toISOString().split('T')[0] == day.toISOString().split('T')[0]) {// 选择的当天 return this.getDateList(date) } else {// 选择的之后日期 let arr = []; const res = new Date(date); let prev = new Date(res.setDate(res.getDate() - 1)); let next = new Date(res.setDate(res.getDate() + 2)); arr = [prev.toISOString().split('T')[0], date.toISOString().split('T')[0], next.toISOString().split('T')[0]] return arr; } }, // 截取年月日 splitDate (str) { let newstr = str.substr(0, 10); let arr = newstr.split('-'); return arr[0] + '年' + arr[1] + '月' + arr[2] + '日 ' + str.substr(11, str.length - 1); }, // 截取年月 splitDates (str) { let newstr = str.substr(0, 10); let arr = newstr.split('-'); return arr[0] + '年' + arr[1] + '月'; }, // 数组分类 resetArr (arr, key) { let tempArr = [];// 分类属性项 var newArr = []; arr.forEach((i, index) => { if (tempArr.indexOf(i[key]) === -1) { newArr.push({ time: i[key], data: [i] }); tempArr.push(i[key]); } else { newArr[tempArr.indexOf(i[key])].data.push(i) } }); return newArr; }, setImgUrl (image) { return image ? (httpConfig.url + image) : '' }, replaceImg (a) { let returnstr = a; if (a) { // a 为富文本的字符串内容,为了测试,只写了img标签 var b = /]*src=['"]([^'"]+)[^>]*>/g;// img 标签取src里面内容的正则 var s = a.match(b);// 取到所有img标签 放到数组 s里面 if (s) { for (var i = 0; i < s.length; i++) { var srcImg = s[i].replace(b, '$1');//取src面的内容 if (srcImg.slice(0, 4) == 'http' || srcImg.slice(0, 5) == 'https' || srcImg.slice(0, 10) == 'data:image') { //若src前4位置或者前5位是http、https则不做任何修改 } else { //修改富文本字符串内容 img标签src 相对路径改为绝对路径 let str = srcImg.substr(9, srcImg.length - 1); returnstr = returnstr.replace(new RegExp(srcImg, 'g'), httpConfig.url + str); } } } } console.log(returnstr) return returnstr; }, getDistance(lat1, lng1, lat2, lng2) { var radLat1 = toRadians(lat1); var radLat2 = toRadians(lat2); var deltaLat = radLat1 - radLat2; var deltaLng = toRadians(lng1) - toRadians(lng2); var dis = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(deltaLat / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(deltaLng / 2), 2))); let dd = (dis * 6378137).toFixed(0); if(+dd>1000){ return (dd/1000).toFixed(2)+'km'; }else{ return dd+'m'; } function toRadians(d) { return d * Math.PI / 180; } } }