| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535 |
- const formatTime = date => {
- const year = date.getFullYear();
- const month = date.getMonth() + 1;
- const day = date.getDate();
- const hour = date.getHours();
- const minute = date.getMinutes();
- const second = date.getSeconds();
- var t1 = [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(
- ':');
- var t2 = [year, month, day].map(formatNumber).join('-');
- var t3 = [year, month, day].map(formatNumber).join('-');
- var time = {
- t1: t1,
- t2: t2,
- t3: t3
- };
- return time;
- };
- /**
- * 获取上一个月
- *
- * @date 格式为yyyy-mm-dd的日期,如:2014-01-25
- */
- const getPreMonth = date => {
- var arr = date.split('-');
- var year = arr[0]; //获取当前日期的年份
- var month = arr[1]; //获取当前日期的月份
- var day = arr[2]; //获取当前日期的日
- var days = new Date(year, month, 0);
- days = days.getDate(); //获取当前日期中月的天数
- var year2 = year;
- var month2 = parseInt(month) - 1;
- if (month2 == 0) {
- //如果是1月份,则取上一年的12月份
- year2 = parseInt(year2) - 1;
- month2 = 12;
- }
- var day2 = day;
- var days2 = new Date(year2, month2, 0);
- days2 = days2.getDate();
- if (day2 > days2) {
- //如果原来日期大于上一月的日期,则取当月的最大日期。比如3月的30日,在2月中没有30
- day2 = days2;
- }
- if (month2 < 10) {
- month2 = '0' + month2; //月份填补成2位。
- }
- var t1 = year + '-' + month;
- var t2 = year2 + '-' + month2;
- var time = {
- t1: t1,
- t2: t2
- };
- return time;
- };
- const formatNumber = n => {
- n = n.toString();
- return n[1] ? n : '0' + n;
- };
- const formatTimes = t => {
- let second = t % 60;
- let minute = parseInt(t / 60 % 60);
- let hour = parseInt(t / 60 / 60);
- return formatNumber(hour) + ':' + formatNumber(minute) + ":" + formatNumber(second);
- };
- const formatDayTimes = t => {
- let second = t % 60;
- let minute = parseInt(t / 60 % 60);
- let hour = parseInt(t / 60 / 60 % 24);
- let day = parseInt(t / 60 / 60 / 24);
- return formatNumber(day) + '天' + formatNumber(hour) + ':' + formatNumber(minute) + ":" + formatNumber(second);
- };
- /**
- * 判断此对象是否是Object类型
- * @param {Object} obj
- */
- function isObject(obj) {
- return Object.prototype.toString.call(obj) === '[object Object]';
- }
- ;
- /**
- * 判断此类型是否是Array类型
- * @param {Array} arr
- */
- function isArray(arr) {
- return Object.prototype.toString.call(arr) === '[object Array]';
- }
- ;
- /**
- * 深度比较两个对象是否相同
- * @param {Object} oldData
- * @param {Object} newData
- */
- function equalsObj(oldData, newData) {
- // 类型为基本类型时,如果相同,则返回true
- if (oldData === newData) return true;
- if (isObject(oldData) && isObject(newData) && Object.keys(oldData).length === Object.keys(newData).length) {
- // 类型为对象并且元素个数相同
- // 遍历所有对象中所有属性,判断元素是否相同
- for (const key in oldData) {
- if (oldData.hasOwnProperty(key)) {
- if (!equalsObj(oldData[key], newData[key])) // 对象中具有不相同属性 返回false
- return false;
- }
- }
- } else if (isArray(oldData) && isArray(oldData) && oldData.length === newData.length) {
- // 类型为数组并且数组长度相同
- for (let i = 0, length = oldData.length; i < length; i++) {
- if (!equalsObj(oldData[i], newData[i])) // 如果数组元素中具有不相同元素,返回false
- return false;
- }
- } else {
- // 其它类型,均返回false
- return false;
- } // 走到这里,说明数组或者对象中所有元素都相同,返回true
- return true;
- }
- ; //时间戳转化
- function transTime(date) {
- var date = new Date(parseInt(date) * 1000);
- var year = date.getFullYear();
- var month = date.getMonth() + 1;
- var day = date.getDate();
- var hour = date.getHours();
- var minute = date.getMinutes();
- var second = date.getSeconds();
- return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':');
- }
- ; // 节流
- function throttle(fn, gapTime) {
- if (gapTime == null || gapTime == undefined) {
- gapTime = 1500;
- }
- let _lastTime = null; // 返回新的函数
- return function() {
- let _nowTime = +new Date();
- if (_nowTime - _lastTime > gapTime || !_lastTime) {
- fn.apply(this, arguments); //将this和参数传给原函数
- _lastTime = _nowTime;
- }
- };
- };
- const isMobile = (value) => {
- var reg = /^1[3|4|5|6|7|8|9][0-9]{9}$/; //验证规则
- var flag = reg.test(value);
- if (!flag) {
- return false
- } else {
- return true
- }
- }
- const convertUrlObj=(data)=> {
- var _result = [];
- for (var key in data) {
- var value = data[key];
- if (value.constructor == Array) {
- value.forEach(function(_value) {
- _result.push(key + "=" + _value);
- });
- } else {
- _result.push(key + '=' + value);
- }
- }
- console.log('Obj==',_result.join('&'))
- return _result.join('&');
- }
-
- // 隐藏手机号中间四位
- function styleHintText(tel) {
- if (tel) {
- var reg = /^(\d{6})\d{8}(\d{4})$/;
- tel = tel.replace(reg, "$1********$2");
- }
- return tel;
- }
-
- function getDateDiff(dateTimeStamp){
- var minute = 1000 * 60;
- var hour = minute * 60;
- var day = hour * 24;
- var halfamonth = day * 15;
- var month = day * 30;
- var now = new Date().getTime();
- var diffValue = now - dateTimeStamp;
- if(diffValue < 0){return;}
- var monthC =diffValue/month;
- var weekC =diffValue/(7*day);
- var dayC =diffValue/day;
- var hourC =diffValue/hour;
- var minC =diffValue/minute;
- if(monthC>=1){
- result="" + parseInt(monthC) + "月前";
- }
- else if(weekC>=1){
- result="" + parseInt(weekC) + "周前";
- }
- else if(dayC>=1){
- result=""+ parseInt(dayC) +"天前";
- }
- else if(hourC>=1){
- result=""+ parseInt(hourC) +"小时前";
- }
- else if(minC>=1){
- result=""+ parseInt(minC) +"分钟前";
- }else
- result="刚刚";
- return result;
- }
- function formatNumbers(num) {
- if (num >= 1e4) {
- return parseInt(num / 1e4).toFixed(0) + 'w+'
- } else if (num >= 999) {
- return '999+'
- } else if (num >= 99) {
- return '99+'
- } else {
- return num
- }
- }
- // 金钱
- function toDecimal(x) {
- var f = Math.round(x * 100) / 100;
- var s = f.toString();
- var rs = s.indexOf('.');
- if (rs < 0) {
- rs = s.length;
- s += '.';
- }
- while (s.length <= rs + 2) {
- s += '0';
- }
- return s;
- }
- // 时间字符串返回时分
- function captureTime(time,isTime){
- var fullTime = time; // 日期字符串
- // console.log(fullTime + '----');
- var timeArr = fullTime.replace(" ", ":").replace(/\:/g, "-").split("-");
- var nian = timeArr[0];
- var yue = timeArr[1];
- var ri = timeArr[2];
- var shi = timeArr[3];
- var fen = timeArr[4];
- var miao = timeArr[5];
- // console.log(nian + '-' + yue + '-' + ri + ' ' + shi + ':' + fen + ':' + miao);
- var str = shi + ':' + fen;
- var date =nian + '-' + yue + '-' + ri;
- // var str = yue + '-' + ri + ' ' + shi + ':' + fen;
- // console.log(str);
- if(isTime){
- return str
- }else{
- return date
- }
- }
- function isAuth(fun) {
- if (!uni.saveImageToPhotosAlbum) {
- uni.showModal({
- title: '提示',
- content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
- });
- return;
- } //可以通过 wx.getSetting 先查询一下用户是否授权了 "scope.writePhotosAlbum" 这个 scope
- // #ifndef H5
- uni.getSetting({
- success(res) {
- if (!res.authSetting['scope.writePhotosAlbum']) {
- // 接口调用询问
- uni.authorize({
- scope: 'scope.writePhotosAlbum',
- success() {
- // console.log("2-授权《保存图片》权限成功");
- fun(true);
- },
- fail() {
- wx.showModal({
- title: '提示',
- content: '用户拒绝授权访问本地相册导致图片无法保存!如需继续操作,请点击确定前往开启授权',
- success: function(res) {
- if (res.confirm) {
- //点击确定后前往授权设置页面
- wx.openSetting();
- }
- }
- });
- fun(false);
- }
- });
- } else {
- // 拒绝授权
- fun(true);
- }
- },
- fail(res) {
- fun(false);
- }
- });
- // #endif
- }
- /**
- * 安卓环境
- */
- function isAndroidSys() {
- return uni.getSystemInfoSync().platform == 'android';
- }
- /**
- * ios环境
- */
- function isIosSys() {
- return uni.getSystemInfoSync().platform == 'ios';
- }
- async function isAuthWritePhotosAlbum(fun) {
- console.log('isAuthWritePhotosAlbum>>>>');
- var result = await permission.requestAndroidPermission('android.permission.READ_EXTERNAL_STORAGE');
- console.log('数据>>>>', result);
- if (result == 1) {
- // strStatus = "已获得授权"
- fun(true);
- } else if (result == 0) {
- // strStatus = "未获得授权"
- fun(false);
- } else {
- gotoAppPermissionSetting();
- fun(false);
- // strStatus = "被永久拒绝权限"
- }
- }
- function gotoAppPermissionSetting() {
- permission.gotoAppPermissionSetting()
- }
- /**
- * 保存图片到相册
- * @param {Object} tempFilePath
- */
- function saveImageToPhotosAlbum(tempFilePath, suc) {
- uni.saveImageToPhotosAlbum({
- filePath: tempFilePath,
- success(res) {
- uni.showToast({
- title: '图片保存成功',
- icon: 'none'
- });
- if (suc) {
- suc(true);
- }
- }
- // fail(res) {
- // uni.showModal({
- // title: '提示',
- // content: '检测到您没有授权访问相册权限,是否去设置打开?',
- // confirmText: '去打开',
- // cancelText: '取消',
- // success: (res) => {
- // if (res.confirm) {
- // // #ifdef APP-PLUS
- // gotoAppPermissionSetting();
- // // #endif
- // //#ifndef APP-PLUS
- // wx.openSetting();
- // // #endif
- // } else {
- // uni.showToast({
- // title: '图片保存失败',
- // icon: 'none'
- // });
- // }
- // }
- // });
- // }
- });
- }
- /**
- * 保存图片
- * @param {Object} tempFilePath
- */
- function saveImage(tempFilePath, suc) {
- let that = this;
- // #ifdef APP-PLUS
- if (isIosSys()) {
- saveImageToPhotosAlbum(tempFilePath, suc);
- } else {
- isAuthWritePhotosAlbum(success => {
- if (success) {
- saveImageToPhotosAlbum(tempFilePath, suc);
- }
- });
- }
- // #endif
- // #ifndef APP-PLUS
- isAuth(success => {
- if (success) {
- uni.saveImageToPhotosAlbum({
- filePath: tempFilePath,
- success(res) {
- uni.showToast({
- title: '图片保存成功',
- icon: 'none',
- success() {
- // suc(true);
- }
- });
- }
- });
- }
- });
- // #endif
- }
- function getAge(birthYearMonthDay) {
- birthYearMonthDay = birthYearMonthDay.replace(/-/g, '/')
- const birthDate = new Date(birthYearMonthDay);
- const momentDate = new Date();
- momentDate.setHours(0, 0, 0, 0);
- const thisYearBirthDate = new Date(
- momentDate.getFullYear(),
- birthDate.getMonth(),
- birthDate.getDate()
- );
- const aDate = thisYearBirthDate - birthDate;
- const bDate = momentDate - birthDate;
- let tempAge = momentDate.getFullYear() - birthDate.getFullYear();
- let age = null;
- if (bDate < aDate) {
- tempAge = tempAge - 1;
- age = tempAge < 0 ? 0 : tempAge;
- } else {
- age = tempAge;
- }
- return age;
- }
- function monthDayDiff(birthYearMonthDay) {
- let flag = [1, 3, 5, 7, 8, 10, 12, 4, 6, 9, 11, 2];
- let start = new Date(birthYearMonthDay.replace(/-/g, '/'));
- let end = new Date();
- let year = end.getFullYear() - start.getFullYear();
- let month = end.getMonth() - start.getMonth();
- let day = end.getDate() - start.getDate();
- if (month < 0) {
- year--;
- month = end.getMonth() + (12 - start.getMonth());
- }
- if (day < 0) {
- month--;
- let index = flag.findIndex((temp) => {
- return temp === start.getMonth() + 1
- });
- let monthLength;
- if (index <= 6) {
- monthLength = 31;
- } else if (index > 6 && index <= 10) {
- monthLength = 30;
- } else {
- monthLength = 28;
- }
- day = end.getDate() + (monthLength - start.getDate());
- }
- if(year>0){
- return `${year}年`;
- }else if(month>0){
- return `${month}月`;
- }else if(day>0){
- return `${day}天`;
- }else{
- return '0天'
- }
- }
- module.exports = {
- formatTime: formatTime,
- formatTimes: formatTimes,
- formatDayTimes: formatDayTimes,
- equalsObj: equalsObj,
- isObject: isObject,
- isArray: isArray,
- transTime: transTime,
- throttle: throttle,
- getPreMonth: getPreMonth,
- isMobile:isMobile,
- convertUrlObj:convertUrlObj,
- getDateDiff: getDateDiff,
- styleHintText:styleHintText,
- formatNumbers: formatNumbers,
- toDecimal: toDecimal,
- captureTime: captureTime,
- saveImage: saveImage,
- getAge:getAge,
- monthDayDiff:monthDayDiff
- };
|