import Vue from 'vue' import Global from '@/utils/global.js' import { storage } from '@/utils/storage.js' const global = new Global() const utils = { date: { // 获取指定时间 getDateStr(num = 0) { var dd = new Date(); dd.setDate(dd.getDate() + num); var y = dd.getFullYear(); var m = dd.getMonth() + 1; if (m < 10) { m = '0' + m; } var d = dd.getDate(); if (d < 10) { d = '0' + d; } return y + "-" + m + "-" + d; }, getDateDiff(dateStr) { let publishTime = this.getDateTimeStamp(dateStr) / 1000 let d_seconds = '' let d_minutes = '' let d_hours = '' let d_days = '' let timeNow = parseInt(new Date().getTime() / 1000) let d = '' let date = new Date(publishTime * 1000) let Y = date.getFullYear() let M = date.getMonth() + 1 let D = date.getDate() let H = date.getHours() let m = date.getMinutes() let s = date.getSeconds() //小于10的在前面补0 if (M < 10) { M = '0' + M } if (D < 10) { D = '0' + D } if (H < 10) { H = '0' + H } if (m < 10) { m = '0' + m } if (s < 10) { s = '0' + s } d = timeNow - publishTime d_days = parseInt(d / 86400) d_hours = parseInt(d / 3600) d_minutes = parseInt(d / 60) d_seconds = parseInt(d) if (d_days > 0 && d_days < 3) { return d_days + '天前' } else if (d_days <= 0 && d_hours > 0) { return d_hours + '小时前' } else if (d_hours <= 0 && d_minutes > 0) { return d_minutes + '分钟前' } else if (d_seconds < 60) { if (d_seconds <= 0) { return '刚刚' } else { return d_seconds + '秒前' } } else if (d_days >= 3 && d_days < 30) { return M + '-' + D + ' ' + H + ':' + m } else if (d_days >= 30) { return Y + '-' + M + '-' + D + ' ' + H + ':' + m } }, getDateTimeStamp(dateStr) { // 如果时间格式为2020/07/09 21:43:19.000 需要去掉.000 不然ios和firefox会有问题 return Date.parse(dateStr.replace(/-/gi, "/")) }, // 时间格式化 2021-01-01 timenow() { let d = new Date(), str = ''; let m = d.getMonth() + 1 > 10 ? d.getMonth() + 1 : '0' + (d.getMonth() + 1) str += d.getFullYear() + '-'; str += m + '-'; str += d.getDate(); return str; }, }, validate(rules, obj) { let disabled = false let message = {} let arr = Object.entries(rules).map(([key, item]) => { let newObj = {} if (Array.isArray(item)) { newObj = { val: obj[key], valid: item } } else { newObj = { ...item, val: obj[key] } } return newObj }) for (let i = 0; i < arr.length; i++) { let item = arr[i] let type = Object.prototype.toString.call(item.val) let flag = type === '[object Object]' ? Object.keys(item.val).length : type === '[object Array]' ? item .val.length : item.val if (!flag) { disabled = true message = item['valid'] ? item['valid'][0].message : item.message return { disabled, message } } if (item.valid && Array.isArray(item.valid)) { let newObj = item.valid.find(val => val.validator && typeof val.validator === 'function') disabled = !newObj.validator('', item.val) if (disabled) { message = item['valid'][1].message return { disabled, message } } } } return { disabled, message } }, // 获取dom getDomInfo(id, that) { return new Promise(resolve => { let query = that ? uni.createSelectorQuery().in(that) : uni.createSelectorQuery() let dom = query.select(id) dom.boundingClientRect((data) => { resolve(data) }).exec() }) }, phoneVeri(phoneNum) { let reg = /^1(?:3\d|4[4-9]|5[0-35-9]|6[67]|7[013-8]|8\d|9\d)\d{8}$/ return reg.test(phoneNum) }, loginModal(content = '您还未登录,登录后方可进行后续操作') { uni.showModal({ content, confirmColor: global.themeColor, confirmText: '去登录', success: e => { if (e.confirm) { // 获取分享id let shareId = storage.getStorage('shareId'); storage.clearStorage() let routes = getCurrentPages() let curRoute = routes[routes.length - 1].route //获取当前页面路由 let curParam = routes[routes.length - 1].options; //获取路由参数 let arr = Object.keys(curParam).length ? Object.entries(curParam).map(([key, val]) => `${key}=${val}`) : [] let params = arr.join('&') if(shareId) { uni.navigateTo({ url: `/pages/login/login?params=${encodeURIComponent(params)}&route=${encodeURIComponent(curRoute)}&shareId=${shareId}` }) }else { uni.navigateTo({ url: `/pages/login/login?params=${encodeURIComponent(params)}&route=${encodeURIComponent(curRoute)}` }) } } }, }) } } export default utils