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
|