耀实惠小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

191 lines
4.7 KiB

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