hengmei-two/jsFile/tools.js

412 lines
14 KiB
JavaScript
Raw Normal View History

2022-03-04 08:48:40 +00:00
import {buriedPoint,reportBuriedPoint,checkQuan} from './publicAPI.js';
2021-08-19 06:40:59 +00:00
const tools = {
timer:'',
// 埋点倒计时
daoTime(){
let daoTime = uni.getStorageSync('daoTime')
if(daoTime==''){//初次判断倒计时是否为空
2022-01-25 09:51:01 +00:00
uni.setStorageSync('daoTime',60)//设置倒计时
2021-08-19 06:40:59 +00:00
daoTime = uni.getStorageSync('daoTime')
this.timer = setInterval(()=>{
uni.setStorageSync('daoTime',daoTime--)//设置倒计时
// console.log('埋点倒计时初次:',daoTime);
// console.log('埋点长度初次:',uni.getStorageSync('maiList').length);
2022-01-25 09:51:01 +00:00
if(uni.getStorageSync('daoTime')<=0 || uni.getStorageSync('maiList').length==5){
2021-08-19 06:40:59 +00:00
uni.removeStorageSync('daoTime')//清空倒计时
clearInterval(this.timer)//关闭倒计时
2021-08-20 01:25:43 +00:00
// console.log('上/报,埋点');
2021-12-02 09:31:26 +00:00
reportBuriedPoint(uni.getStorageSync('maiList'))//上报事件
2021-08-19 06:40:59 +00:00
uni.removeStorageSync('maiList')//清空上报参数
this.daoTime()//重新倒计时
}
2021-12-02 09:31:26 +00:00
},1000)
2021-08-19 06:40:59 +00:00
} else {//继续当前倒计时倒计
this.timer = setInterval(()=>{
uni.setStorageSync('daoTime',daoTime--)//设置倒计时
// console.log('埋点倒计时:',daoTime);
// console.log('埋点长度:',uni.getStorageSync('maiList').length);
2022-01-25 09:51:01 +00:00
if(uni.getStorageSync('daoTime')<=0 || uni.getStorageSync('maiList').length==5){
2021-08-19 06:40:59 +00:00
uni.removeStorageSync('daoTime')//清空倒计时
clearInterval(this.timer)//关闭倒计时
// console.log('上报,埋点');
2021-12-02 09:31:26 +00:00
reportBuriedPoint(uni.getStorageSync('maiList'))//上报事件
2021-08-19 06:40:59 +00:00
uni.removeStorageSync('maiList')//清空上报参数
this.daoTime()//重新倒计时
}
},1000)
}
},
2022-03-04 08:48:40 +00:00
// 关闭埋点倒计时
2022-02-17 03:49:34 +00:00
closeTimer(){
2022-03-04 08:48:40 +00:00
clearInterval(this.timer);
2022-02-17 03:49:34 +00:00
console.log('倒计时清空了');
},
// 设置埋点数据事件
maiDian(data){
let maiList = uni.getStorageSync('maiList')
// console.log(maiList);
if(maiList==''){
maiList = [data]
} else maiList.push(data)
uni.setStorageSync('maiList',maiList)
},
// 种植埋点
plantPoint(num, id=''){
console.log(num,id,67);
let maiOjb = {
e: num, //内容访问
c: id * 1,
t: new Date().getTime() //当前时间戳
}
this.maiDian(maiOjb);
},
// 立即执行埋点上报
reportImmediately() {
reportBuriedPoint(uni.getStorageSync('maiList'))//上报事件
},
2021-11-02 10:23:53 +00:00
// 查券
checkQuan(){
checkQuan();
},
2021-08-19 06:40:59 +00:00
networkStatus(){//检查网络状态
uni.getNetworkType({
success: function (res) {
console.log('当前网络状态:',res.networkType);//none当前无网络连接
if(res.networkType=='none'){
2021-08-22 08:53:12 +00:00
uni.setStorageSync('isNet',false)
} else {
uni.setStorageSync('isNet',true)
2021-08-19 06:40:59 +00:00
}
}
});
},
buriedPointAll(){//查询埋点类型事件
buriedPoint()
},
weekDate(){//获取未来七天星期几,几号
let date = new Date()
let year = date.getFullYear()
let month = date.getMonth()+1
let day = date.getDate()
let nth = date.getDay()//星期几
// console.log(year,month,day);
let xingq = ['周一','周二','周三','周四','周五','周六','周日']
},
// 手机号验证
isPhone:function(phone){
// 手机号正则表达式
let reg_tel = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
if(!reg_tel.test(phone)){
return true
}
return false
},
// 手机号中间四位用"****"带替
hideMPhone(phone){
return `${phone.substr(0, 3)}****${phone.substr(7)}`
},
2022-03-04 08:48:40 +00:00
// 显示中文第一个字,其余的使用"*"代替
2021-08-19 06:40:59 +00:00
hideName(name,num){
2022-03-04 08:48:40 +00:00
return `${name.substr(0, 1)}****${name.substr(name.length-1)}` || ''
2021-08-19 06:40:59 +00:00
},
2021-10-22 03:07:32 +00:00
// 整数添加.00,小数就不添加
addXiaoShu(num){
let str = num.toString();
2022-03-04 08:48:40 +00:00
if(str.length > 9){
str = str*1;
str = str.toFixed(2);
str = str+'';
}
return str.includes('.') ? str*1 : str = num + '.00';
2021-10-22 03:07:32 +00:00
},
2021-08-19 06:40:59 +00:00
// 时间戳===>日期
timestampToTime(timestamp) {
var date = timestamp.toString().length==13 ? new Date(timestamp*1) : new Date(timestamp * 1000);//时间戳为10位需*1000时间戳为13位的话不需乘1000
var Y = date.getFullYear();
var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1);
var D = date.getDate() < 10 ? '0'+date.getDate() : date.getDate();
var h = date.getHours() < 10 ? '0'+date.getHours() : date.getHours();
var m = date.getMinutes() < 10 ? '0'+date.getMinutes() : date.getMinutes();
var s = date.getSeconds() < 10 ? '0'+date.getSeconds() : date.getSeconds();
return Y + '-' + M + '-' + D + ' ' + h + ':' + m + ':' +s;
},
// 日期===>时间戳
timeToTimestamp(time){
var date = new Date(time);
var timestamp = date.getTime();//精确到毫秒
return timestamp
// var date = new Date('2014-04-23 18:55:49:123');
// 有三种方式获取
// var time1 = date.getTime();//精确到毫秒
// var time2 = date.valueOf();//精确到毫秒
// var time3 = Date.parse(date);//只能精确到秒毫秒用000替代
// console.log(time1);//1398250549123
// console.log(time2);//1398250549123
// console.log(time3);//1398250549000
},
// 随机数生成
randomStr(){
var strData = "";
//如果觉得12个数太少也可以多放点将i<4修改即可
for(var i=0;i<4;i++){
var num = random(0,9); //数字
var upper = String.fromCharCode(random(65,90)); //大写字母
var lower = String.fromCharCode(random(97,122)); //小写字母
strData = strData+num+upper+lower; //将所有结果放进strData中
}
var str = "";
for (var i = 0; i < 4; i++) {
str += strData[random(0,strData.length-1)]; //在strData里面随机抽取四个数
}
return str;
},
// 金额输入框验证
checkPrice(number,zong){
let reg = /^[0-9]*$/;//数字正则表达式
let newObj = {}
zong = parseInt(zong).toString()//取小数点左边的整数
if(!reg.test(number)){//不是数字时
newObj = {
len:zong.length,//动态设置长度
val:zong//动态设置值正整数的总金额
}
} else {//是数字时
newObj = {
len:zong.length,
val:number//动态设置当前输入的值
}
if(number*1 > zong*1){//输入的金额大于总金额
newObj.val = zong//赋值总金额
}
}
return newObj
},
// 提示方法
showToast: function(msg, icon,time) {
// 弹框图标none默认无图标、loading、success
var newIncon = 'none';
if (icon) {newIncon = icon;}
// 弹框显示时间默认2秒
var newTime = 2000
if (time) {newTime = time;}
return uni.showToast({
title: msg,
icon: newIncon,
duration:newTime
})
},
2022-03-04 08:48:40 +00:00
// 格式化时间
formatTime: function(mss) {
2021-08-19 06:40:59 +00:00
// let dangTime = Math.round(new Date()/1000)//获取当前时间戳
var hours = parseInt((mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = parseInt((mss % (1000 * 60 * 60)) / (1000 * 60));
var seconds = (mss % (1000 * 60)) / 1000;
hours = hours < 10 ? ('0' + hours) : hours;
minutes = minutes < 10 ? ('0' + minutes) : minutes;
seconds = seconds < 10 && seconds >= 1 ? ('0' + seconds) : seconds;
return hours + ' : ' + minutes + ' : ' + seconds;
},
2022-03-04 08:48:40 +00:00
// 富文本转换
escape2Html(str) {
2021-08-19 06:40:59 +00:00
var arrEntities = { 'lt': '<', 'gt': '>', 'nbsp': ' ', 'amp': '&', 'quot': '"' };
2022-03-04 08:48:40 +00:00
return str.replace(/&(lt|gt|nbsp|amp|quot|src);/ig, function (all, t) {
return arrEntities[t];
})
.replace('<section', '<div')
2022-03-25 11:26:07 +00:00
.replace(/\<img/g, '<img @tap="pre" style="max-width:100%!important;height:auto;" ')
2022-03-04 08:48:40 +00:00
.replace(/src=\"/g,'src="https://oss.hmzfyy.cn');
2022-03-25 11:26:07 +00:00
// 去除图片间隙 vertical-align:middle;
2021-08-19 06:40:59 +00:00
},
updaX(){//检测小程序版本以及更新小程序
// 获取小程序的运行环境、版本号、appId 注意:线上小程序版本号仅支持在正式版小程序中获取,开发版和体验版中无法获取。
const accountInfo = wx.getAccountInfoSync();//使用详情https://developers.weixin.qq.com/miniprogram/dev/api/open-api/account-info/wx.getAccountInfoSync.html
var version = accountInfo.miniProgram.version
console.log(version);
// 检测小程序的更新
const updateManager = wx.getUpdateManager()//以下使用详情https://developers.weixin.qq.com/miniprogram/dev/api/base/update/UpdateManager.html#%E7%A4%BA%E4%BE%8B%E4%BB%A3%E7%A0%81
updateManager.onCheckForUpdate(function (res) {
// 请求完新版本信息的回调
// console.log('检测是否有更新:',res.hasUpdate)
})
updateManager.onUpdateReady(function (res) {
wx.showModal({
title: '恒美植发客服代表提醒您',
content: '新版本已经准备就绪,是否重启应用',
success(res) {
if (res.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate()
}
}
})
})
updateManager.onUpdateFailed(function (res) {
// 新版本下载失败
// console.log('新版本下载失败:',res);
})
},
2022-03-04 08:48:40 +00:00
// 判断是否授权,没授权,前往登录页面授权
judgeAuth(){
let auth = true;
2022-03-21 01:44:07 +00:00
if(uni.getStorageSync('phone_active')==0 || uni.getStorageSync('is_active')==0) {
2022-03-04 08:48:40 +00:00
uni.navigateTo({url:'/pages/login/login'});
auth = false
} else {
2021-08-22 08:53:12 +00:00
auth = true
}
return auth
},
2022-03-04 08:48:40 +00:00
// 复制内容
2021-10-22 03:07:32 +00:00
clickCopy(data){
uni.setClipboardData({
data: data,
success: function() {
uni.showToast({
title: '复制成功',
duration: 2000,
icon: 'none'
});
}
});
2021-11-02 10:23:53 +00:00
},
2022-03-04 08:48:40 +00:00
// 订单开启倒计时
dayTime(endTime,startTime=''){
2021-11-02 10:23:53 +00:00
let totalSecond = '';
// 本地倒计时
// if(startTime=='') totalSecond = Math.floor((new Date(endTime).getTime() - new Date().getTime())/1000);
2021-11-04 07:41:53 +00:00
// 解决苹果手机问题
let date = endTime;
date = endTime.replace(/-/g,'/')
2021-11-02 10:23:53 +00:00
// 服务器倒计时
2021-11-04 07:41:53 +00:00
if(startTime!='') totalSecond = Math.floor((new Date(date).getTime() - startTime)/1000);
2021-11-02 10:23:53 +00:00
// 总秒数
let second = totalSecond;
// 天数
let day = Math.floor(second / 3600 / 24);
let dayStr = day.toString();
if(dayStr.length == 1) dayStr = '0' + dayStr;
// 小时
let hr = Math.floor((second - day * 3600 * 24) / 3600);
let hrStr = hr.toString();
if(hrStr.length == 1) hrStr = '0' + hrStr;
// 分钟
let min = Math.floor((second - day * 3600 * 24 - hr * 3600) / 60);
let minStr = min.toString();
if(minStr.length == 1) minStr = '0' + minStr;
// 秒
let sec = second - day * 3600 * 24 - hr * 3600 - min * 60;
let secStr = sec.toString();
if(secStr.length == 1) secStr = '0' + secStr;
let newTime = '';
if(dayStr==0) {
newTime = hrStr +'时'+ minStr +'分'+ secStr +'秒';
} else {
newTime = dayStr +'天'+ hrStr +'时'+ minStr +'分'+ secStr +'秒';
}
return newTime;
},
2022-03-04 08:48:40 +00:00
isVedio(){//是否显示视频相关内容
2021-12-20 08:02:27 +00:00
uni.request({
2022-02-17 03:49:34 +00:00
url: `${uni.getStorageSync('hostapi')}index/base-config`,
2021-12-20 08:02:27 +00:00
method: 'get',
header: {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
},
success: res => {
if(res.data.code==0){
2022-03-04 08:48:40 +00:00
res.data.data.v==0 ? uni.setStorageSync('isVedio',false) : uni.setStorageSync('isVedio',true);
2022-03-27 08:18:43 +00:00
let appletImg = 'https://oss.hmzfyy.cn' + res.data.data.logo;
uni.setStorageSync('appletImg',appletImg);
2021-12-20 08:02:27 +00:00
}
}
})
2022-03-04 08:48:40 +00:00
},
// 判断当前环境
currentContext(){
// #ifdef APP-PLUS
if(uni.getSystemInfoSync().platform != "devtools"){//devtools开发版 值域为ios、android、mac3.1.10+、windows3.1.10+、linux3.1.10+
console.log = () =>{}
}
// #endif
// 微信小程序原生API性能优化
// #ifdef MP-WEIXIN
let hInfo = wx.getAccountInfoSync();
// console.log(hInfo.envVersion);//develop:开发版 trial体验版 release正式版
// if(hInfo.miniProgram.envVersion == "develop"){
2022-03-04 08:48:40 +00:00
if(hInfo.miniProgram.envVersion == "develop" || hInfo.miniProgram.envVersion == "trial"){
// (开发版,体验版)-配置全局域名
uni.setStorageSync('hostapi','https://hengmei.scdxtc.cn/api/');
2022-03-25 11:26:07 +00:00
// uni.setStorageSync('hostapi','https://hm.hmzfyy.cn/api/');
2022-07-14 07:02:18 +00:00
// 开启埋点倒计时
2022-07-22 10:39:41 +00:00
// this.daoTime();//开启埋点倒计时
} else {
2022-03-04 08:48:40 +00:00
// 清除所有输出日志
console.log = () =>{};
// 正式版-配置全局域名
uni.setStorageSync('hostapi','https://hm.hmzfyy.cn/api/');
// 开启埋点倒计时
this.daoTime();//开启埋点倒计时
}
// #endif
},
timeToken:null,
// 开启一个半小时刷新token
refreshToken(){
console.log('开启了一个半小时刷新token');
clearInterval(this.timeToken);
// 调用登录事件
this.loginEv();
this.timeToken = setInterval(()=>{
console.log('进入了一个半小时刷新token');
// 调用登录事件
this.loginEv();
},600000*9)
},
2022-03-04 08:48:40 +00:00
// 登录事件
loginEv(){
2022-03-04 08:48:40 +00:00
uni.login({
provider: 'weixin',
success: (res)=> {
var params = {code:res.code}
uni.request({
url: `${uni.getStorageSync('hostapi')}user/login`,
method: 'post',
data: params,
success: res => {
if(res.data.data.token!=''){
uni.setStorageSync('token',res.data.data.token); // 缓存token
uni.setStorageSync('openid',res.data.data.openid)//缓存openid
2022-03-04 08:48:40 +00:00
uni.setStorageSync('expire',res.data.data.expire); // 缓存失效时间(时间戳格式)
uni.setStorageSync('phone_active',res.data.data.phone_active); // 是否绑定手机号
2022-03-21 01:44:07 +00:00
uni.setStorageSync('is_active',res.data.data.is_active)//是否第一次授权
uni.setStorageSync('invite_code',res.data.data.invite_code)//缓存用户邀请码
2022-03-04 08:48:40 +00:00
}
}
})
},
});
},
// 禁止小程序使用分享
disableShareEv(){
wx.hideShareMenu({
menus: ['shareAppMessage', 'shareTimeline']
})
2021-12-20 08:02:27 +00:00
}
2021-08-19 06:40:59 +00:00
}
export default {
tools
}