2022-11-15 10:03:13 +00:00
|
|
|
|
const tools = {
|
|
|
|
|
timer:'',
|
|
|
|
|
/**
|
|
|
|
|
* @description 埋点倒计时
|
|
|
|
|
*/
|
|
|
|
|
daoTime(){
|
|
|
|
|
let daoTime = uni.getStorageSync('daoTime')
|
|
|
|
|
if(daoTime==''){//初次判断倒计时是否为空
|
|
|
|
|
uni.setStorageSync('daoTime',60)//设置倒计时
|
|
|
|
|
daoTime = uni.getStorageSync('daoTime')
|
|
|
|
|
this.timer = setInterval(()=>{
|
|
|
|
|
uni.setStorageSync('daoTime',daoTime--)//设置倒计时
|
|
|
|
|
if(uni.getStorageSync('daoTime')<=0 || uni.getStorageSync('maiList').length==5){
|
|
|
|
|
uni.removeStorageSync('daoTime')//清空倒计时
|
|
|
|
|
clearInterval(this.timer)//关闭倒计时
|
|
|
|
|
// console.log('上/报,埋点');
|
|
|
|
|
uni.removeStorageSync('maiList')//清空上报参数
|
|
|
|
|
this.daoTime()//重新倒计时
|
|
|
|
|
}
|
|
|
|
|
},1000)
|
|
|
|
|
} else {//继续当前倒计时倒计
|
|
|
|
|
this.timer = setInterval(()=>{
|
|
|
|
|
uni.setStorageSync('daoTime',daoTime--)//设置倒计时
|
|
|
|
|
if(uni.getStorageSync('daoTime')<=0 || uni.getStorageSync('maiList').length==5){
|
|
|
|
|
uni.removeStorageSync('daoTime')//清空倒计时
|
|
|
|
|
clearInterval(this.timer)//关闭倒计时
|
|
|
|
|
// console.log('上报,埋点');
|
|
|
|
|
uni.removeStorageSync('maiList')//清空上报参数
|
|
|
|
|
this.daoTime()//重新倒计时
|
|
|
|
|
}
|
|
|
|
|
},1000)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 关闭倒计时
|
|
|
|
|
*/
|
|
|
|
|
closeTimer(){
|
|
|
|
|
clearInterval(this.timer)
|
|
|
|
|
console.log('倒计时清空了');
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @description 获取字符串中的数字
|
|
|
|
|
*/
|
|
|
|
|
obtainCount(str) {
|
|
|
|
|
return parseInt(str.replace(/[^0-9]/ig,""))
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 获取微信扫码后的结果,并解析
|
|
|
|
|
*/
|
|
|
|
|
unescapeEv(op) {
|
|
|
|
|
let str = unescape(op.q);
|
|
|
|
|
return str;
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 手机号验证
|
|
|
|
|
*/
|
|
|
|
|
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}$/;
|
|
|
|
|
return !reg_tel.test(phone);
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 电子邮箱验证
|
|
|
|
|
*/
|
|
|
|
|
isEmail(email){
|
|
|
|
|
let reg_email = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
|
|
|
|
|
return !reg_email.test(email);
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 身份证验证
|
|
|
|
|
*/
|
|
|
|
|
isIdentity(identity) {
|
|
|
|
|
let reg_identity = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
|
|
|
|
|
return !reg_identity.test(identity);
|
|
|
|
|
},
|
2023-01-12 11:47:46 +00:00
|
|
|
|
|
2022-11-15 10:03:13 +00:00
|
|
|
|
/**
|
|
|
|
|
* @description 手机号中间四位用"****"带替
|
|
|
|
|
*/
|
|
|
|
|
hideMPhone(phone){
|
|
|
|
|
return `${phone.substr(0, 3)}****${phone.substr(7)}`
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 手机号中间加字符
|
|
|
|
|
*/
|
|
|
|
|
phoneAddChat(phone,startNum=3,endNum=7,character=' '){
|
|
|
|
|
let phoneStr = phone;
|
|
|
|
|
phoneStr = phoneStr.replace(/\s*/g, "");
|
|
|
|
|
var phoneArr = [];
|
|
|
|
|
for(var i = 0; i < phoneStr.length; i++){
|
|
|
|
|
if (i==startNum||i==endNum){
|
|
|
|
|
phoneArr.push(`${character}` + phoneStr.charAt(i));
|
|
|
|
|
} else {
|
|
|
|
|
phoneArr.push(phoneStr.charAt(i));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
phone = phoneArr.join("");
|
|
|
|
|
return phone;
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 昵称从第一个字开始,后面的都用"*"代替
|
|
|
|
|
*/
|
|
|
|
|
hideName(name,num){
|
|
|
|
|
return `${name.substr(0, 1)}****${name.substr(name.length-1)}`
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 金额转换各三位数使用英文","隔开
|
|
|
|
|
*/
|
|
|
|
|
changeNum(num){
|
|
|
|
|
if (num) {
|
|
|
|
|
// 针对整数部分进行格式化处理,这是此方法的核心,也是稍难理解的一个地方,逆向的来思考或者采用简单的事例来实现就容易多了
|
|
|
|
|
/*
|
|
|
|
|
也可以这样想象,现在有一串数字字符串在你面前,如果让你给他家千分位的逗号的话,你是怎么来思考和操作的?
|
|
|
|
|
字符串长度为0/1/2/3时都不用添加
|
|
|
|
|
字符串长度大于3的时候,从右往左数,有三位字符就加一个逗号,然后继续往前数,直到不到往前数少于三位字符为止
|
|
|
|
|
*/
|
|
|
|
|
num = num+''; // 数字转换为字符串,数字是没有.length属性的
|
|
|
|
|
for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) {
|
|
|
|
|
num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3))
|
|
|
|
|
}
|
|
|
|
|
// 将数据(符号、整数部分、小数部分)整体组合返回
|
|
|
|
|
return num;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 整数添加.00,小数就不添加
|
|
|
|
|
*/
|
|
|
|
|
addXiaoShu(num){
|
|
|
|
|
// console.log(num,'添加小数点后两位小数');
|
|
|
|
|
let str = num.toString();
|
|
|
|
|
str = str*1;
|
|
|
|
|
str = str.toFixed(2);
|
|
|
|
|
str = str+'';
|
|
|
|
|
return str.includes('.') ? str : str = num + '.00';
|
|
|
|
|
},
|
|
|
|
|
// type:+加、-减、*乘、/除
|
|
|
|
|
// len:小数后保留几位
|
|
|
|
|
/**
|
|
|
|
|
* @description 数字换算解决失精度问题
|
|
|
|
|
*/
|
|
|
|
|
operationEv(num1,num2,type,len=0){
|
|
|
|
|
// 将数字转化成字符串
|
|
|
|
|
num1 = num1.toString();
|
|
|
|
|
num2 = num2.toString();
|
|
|
|
|
// 获取小数点的位置
|
|
|
|
|
var index1 = num1.indexOf(".");
|
|
|
|
|
var index2 = num2.indexOf(".");
|
|
|
|
|
// 如果小数点存在,那么就再获取各自的小数位数
|
|
|
|
|
var ws1 = 0;
|
|
|
|
|
var ws2 = 0;
|
|
|
|
|
if(index1 != -1){
|
|
|
|
|
ws1 = num1.split(".")[1].length;
|
|
|
|
|
}
|
|
|
|
|
if(index2 != -1){
|
|
|
|
|
ws2 = num2.split(".")[1].length;
|
|
|
|
|
}
|
|
|
|
|
// 看谁的小数位数大,谁的小数位数小
|
|
|
|
|
var bigger = (ws1 > ws2) ? ws1 : ws2;
|
|
|
|
|
var smaller = (ws1 < ws2) ? ws1 : ws2;
|
|
|
|
|
// 计算得到需要补齐的0的个数
|
|
|
|
|
var zerosCount = bigger - smaller;
|
|
|
|
|
// 好了,现在不管三七二十,全部去除小数点
|
|
|
|
|
num1 = num1.replace(".","");
|
|
|
|
|
num2 = num2.replace(".","");
|
|
|
|
|
// 比较num1和num2谁大,比较方法就是看谁是smaller,是smaller的一方就补0
|
|
|
|
|
if(ws1 == smaller){
|
|
|
|
|
for (var i = 0; i < zerosCount; i++) {
|
|
|
|
|
num1 += "0";
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
for (var i = 0; i < zerosCount; i++) {
|
|
|
|
|
num2 += "0";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 开始计算
|
|
|
|
|
var sum = "";
|
|
|
|
|
if(type=="+"){
|
|
|
|
|
// 加
|
|
|
|
|
sum = parseInt(num1) + parseInt(num2);
|
|
|
|
|
}
|
|
|
|
|
if(type=="-"){
|
|
|
|
|
// 减
|
|
|
|
|
sum = parseInt(num1) - parseInt(num2);
|
|
|
|
|
}
|
|
|
|
|
if(type=="*"){
|
|
|
|
|
// 乘
|
|
|
|
|
sum = parseInt(num1) * parseInt(num2);
|
|
|
|
|
}
|
|
|
|
|
if(type=="/"){
|
|
|
|
|
// 除
|
|
|
|
|
sum = parseInt(num1) / parseInt(num2);
|
|
|
|
|
}
|
|
|
|
|
// 根据较大的小数位数计算倍数
|
|
|
|
|
var beishu = 1;
|
|
|
|
|
for (var i = 0; i < bigger; i++) {
|
|
|
|
|
beishu = beishu*10;
|
|
|
|
|
}
|
|
|
|
|
sum = sum/beishu;
|
|
|
|
|
if(type=="*"){
|
|
|
|
|
switch (bigger){
|
|
|
|
|
case 1:
|
|
|
|
|
sum = sum / 10;
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
sum = sum / 100;
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
sum = sum / 1000;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(type=="/"){
|
|
|
|
|
switch (bigger){
|
|
|
|
|
case 1:
|
|
|
|
|
sum = sum * 10;
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
sum = sum * 100;
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
sum = sum * 1000;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
len!=0 ? sum = sum.toFixed(len) : '';
|
|
|
|
|
return sum;
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 金额输入框验证
|
|
|
|
|
*/
|
|
|
|
|
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
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 文本提示
|
|
|
|
|
*/
|
|
|
|
|
showToast: function(msg, icon='none',time) {
|
|
|
|
|
// 弹框显示时间:默认2秒
|
|
|
|
|
var newTime = 2000
|
|
|
|
|
if (time) {newTime = time;}
|
|
|
|
|
return uni.showToast({
|
|
|
|
|
title: msg,
|
|
|
|
|
icon: icon,
|
|
|
|
|
duration:newTime
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @description 富文本处理
|
|
|
|
|
*/
|
|
|
|
|
escape2Html(str) {
|
|
|
|
|
var arrEntities = { 'lt': '<', 'gt': '>', 'nbsp': ' ', 'amp': '&', 'quot': '"' };
|
|
|
|
|
return str.replace(/&(lt|gt|nbsp|amp|quot|src);/ig, function (all, t) {
|
|
|
|
|
return arrEntities[t];
|
|
|
|
|
})
|
|
|
|
|
.replace('<section', '<div')
|
|
|
|
|
.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, (match, p1) => {
|
|
|
|
|
return `<img mode="widthFix" style="max-width:100%!important;height:auto" src='${p1.indexOf('http') > -1 ? p1 : 'https://building.scdxtc.cn' + p1}' />`
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 检查网络状态
|
|
|
|
|
*/
|
|
|
|
|
networkStatus(){
|
|
|
|
|
uni.getNetworkType({
|
|
|
|
|
success: (res)=> {
|
|
|
|
|
console.log('当前网络状态:',res.networkType);//none:当前无网络连接
|
|
|
|
|
if(res.networkType=='none'){
|
|
|
|
|
uni.setStorageSync('isNet',false)
|
|
|
|
|
} else {
|
|
|
|
|
uni.setStorageSync('isNet',true);
|
|
|
|
|
// 微信小程序原生API性能优化
|
|
|
|
|
// #ifdef MP-WEIXIN
|
|
|
|
|
// 连网下,检测小程序是否有更新
|
|
|
|
|
this.checkUpdate();
|
|
|
|
|
// #endif
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description app、小程序的检测版本并更新
|
|
|
|
|
*/
|
|
|
|
|
checkUpdate(){
|
|
|
|
|
// 检测app
|
|
|
|
|
// #ifdef APP-PLUS
|
|
|
|
|
|
|
|
|
|
// #endif
|
|
|
|
|
//检测小程序
|
|
|
|
|
// #ifdef MP-WEIXIN
|
|
|
|
|
var self = this;
|
|
|
|
|
// 获取小程序更新机制兼容
|
|
|
|
|
if (wx.canIUse('getUpdateManager')) {
|
|
|
|
|
const updateManager = wx.getUpdateManager();//1. 检查小程序是否有新版本发布
|
|
|
|
|
updateManager.onCheckForUpdate(function(res) {// 请求完新版本信息的回调
|
|
|
|
|
if (res.hasUpdate) {
|
|
|
|
|
//检测到新版本,需要更新,给出提示
|
|
|
|
|
wx.showModal({
|
|
|
|
|
title: '更新提示',
|
|
|
|
|
content: '检测到新版本,是否下载新版本并重启小程序?',
|
|
|
|
|
success: function(res) {
|
|
|
|
|
if (res.confirm) {
|
|
|
|
|
//2. 用户确定下载更新小程序,小程序下载及更新静默进行
|
|
|
|
|
self.downLoadAndUpdate(updateManager)
|
|
|
|
|
// 清除所有缓存
|
|
|
|
|
uni.clearStorage();
|
|
|
|
|
uni.clearStorageSync();
|
|
|
|
|
} else if (res.cancel) {
|
|
|
|
|
//用户点击取消按钮的处理,如果需要强制更新,则给出二次弹窗,如果不需要,则这里的代码都可以删掉了
|
|
|
|
|
wx.showModal({
|
|
|
|
|
title: '温馨提示~',
|
|
|
|
|
content: '本次版本更新涉及到新的功能添加,旧版本无法正常访问的哦~',
|
|
|
|
|
showCancel:false,//隐藏取消按钮
|
|
|
|
|
confirmText:"确定更新",//只保留确定更新按钮
|
|
|
|
|
success: function(res) {
|
|
|
|
|
if (res.confirm) {
|
|
|
|
|
//下载新版本,并重新应用
|
|
|
|
|
self.downLoadAndUpdate(updateManager)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
} else { // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
|
|
|
|
|
wx.showModal({
|
|
|
|
|
title: '提示',
|
|
|
|
|
content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
// #endif
|
|
|
|
|
},
|
|
|
|
|
// 下载小程序新版本并重启应用
|
|
|
|
|
downLoadAndUpdate(updateManager){
|
|
|
|
|
var self = this;
|
|
|
|
|
wx.showLoading(); //静默下载更新小程序新版本
|
|
|
|
|
updateManager.onUpdateReady(function () {
|
|
|
|
|
wx.hideLoading(); //新的版本已经下载好,调用 applyUpdate 应用新版本并重启
|
|
|
|
|
updateManager.applyUpdate();
|
|
|
|
|
// 清除缓存
|
|
|
|
|
uni.clearStorageSync();
|
|
|
|
|
uni.clearStorage();
|
|
|
|
|
})
|
|
|
|
|
updateManager.onUpdateFailed(function () { // 新的版本下载失败
|
|
|
|
|
wx.showModal({
|
|
|
|
|
title: '已经有新版本了哟~',
|
|
|
|
|
content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~',
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 文本复制
|
|
|
|
|
*/
|
|
|
|
|
clickCopy(data){
|
|
|
|
|
uni.setClipboardData({
|
|
|
|
|
data: data,
|
|
|
|
|
success: ()=> {
|
|
|
|
|
uni.showToast({title: '复制成功',duration: 2000,icon: 'none'});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
authTimer:null,
|
|
|
|
|
/**
|
|
|
|
|
* @description 判断是否授权,没授权,前往登录页面授权
|
|
|
|
|
*/
|
|
|
|
|
judgeAuth(){
|
|
|
|
|
let auth = false;
|
|
|
|
|
clearTimeout(this.authTimer);
|
|
|
|
|
if(!uni.getStorageSync('token') || uni.getStorageSync('is_active')==0) {
|
|
|
|
|
this.showToast('请授权登录');
|
|
|
|
|
this.authTimer = setTimeout(()=>{
|
|
|
|
|
uni.reLaunch({url:'/pages/login/login'});
|
|
|
|
|
},2000)
|
|
|
|
|
} else {
|
|
|
|
|
auth = true;
|
|
|
|
|
}
|
|
|
|
|
return auth;
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 判断当前环境:清空日志输出
|
|
|
|
|
*/
|
|
|
|
|
currentContext(){
|
|
|
|
|
// #ifdef APP-PLUS
|
|
|
|
|
if(uni.getSystemInfoSync().platform != "devtools"){//devtools:开发版 值域为:ios、android、mac(3.1.10+)、windows(3.1.10+)、linux(3.1.10+)
|
|
|
|
|
// console.log = () =>{}
|
|
|
|
|
}
|
|
|
|
|
// #endif
|
|
|
|
|
// 微信小程序原生API性能优化
|
|
|
|
|
// #ifdef MP-WEIXIN
|
|
|
|
|
let hInfo = wx.getAccountInfoSync();
|
|
|
|
|
// console.log(hInfo.envVersion);//develop:开发版 trial:体验版 release:正式版
|
|
|
|
|
if(hInfo.miniProgram.envVersion == "release"){
|
|
|
|
|
// 清除所有输出日志
|
|
|
|
|
console.log = () =>{};
|
|
|
|
|
// 开启埋点倒计时
|
|
|
|
|
// this.daoTime();
|
|
|
|
|
}
|
|
|
|
|
// #endif
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 禁止小程序使用右上角分享
|
|
|
|
|
*/
|
|
|
|
|
disableShareEv(){
|
|
|
|
|
// #ifdef MP-WEIXIN
|
|
|
|
|
wx.hideShareMenu({
|
|
|
|
|
menus: ['shareAppMessage', 'shareTimeline']
|
|
|
|
|
})
|
|
|
|
|
// #endif
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 获取当前页面完整url
|
|
|
|
|
*/
|
|
|
|
|
obtainPagePath(){
|
|
|
|
|
let pages = getCurrentPages();
|
|
|
|
|
// 获取纯页面路径
|
|
|
|
|
let route = pages[pages.length - 1].route;
|
|
|
|
|
uni.setStorageSync('url',route);
|
|
|
|
|
// 获取当前页面url,带参数
|
|
|
|
|
let routeParam = pages[pages.length - 1].$page.fullPath;
|
|
|
|
|
// console.log(routeParam.options,'获取当前url参数');
|
|
|
|
|
uni.setStorageSync('page-path-options',routeParam);
|
|
|
|
|
console.log(uni.getStorageSync('page-path-options'),'当前页面完整路径');
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 拨打电话
|
|
|
|
|
* @param {Number} phone
|
|
|
|
|
*/
|
|
|
|
|
countCustomer(phone){
|
|
|
|
|
const res = uni.getSystemInfoSync();
|
|
|
|
|
let phoneList = [];
|
|
|
|
|
if(phone!==''){
|
|
|
|
|
phoneList.push(phone);
|
|
|
|
|
}
|
|
|
|
|
uni.showActionSheet({
|
|
|
|
|
itemList:phoneList,
|
|
|
|
|
itemColor:'#1981ff',
|
|
|
|
|
success: (res) => {
|
|
|
|
|
uni.makePhoneCall({
|
|
|
|
|
phoneNumber:phoneList[res.tapIndex]
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 图片选择
|
|
|
|
|
* @param {Number} count
|
|
|
|
|
*/
|
|
|
|
|
uploadImg(count=1) {
|
|
|
|
|
let imgArr = [];
|
|
|
|
|
uni.chooseImage({
|
|
|
|
|
count:count,
|
|
|
|
|
sizeType:['compressed'],
|
|
|
|
|
sourceType:['album','camera'],
|
|
|
|
|
success: (res) => {
|
|
|
|
|
let files = res.tempFilePaths
|
|
|
|
|
console.log(files);
|
|
|
|
|
files.forEach(item=>{
|
|
|
|
|
imgArr.push(item);
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
return imgArr;
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 打开小程序获取用户信息权限
|
|
|
|
|
*/
|
|
|
|
|
wxOpenSet() {
|
|
|
|
|
// #ifdef MP-WEIXIN
|
|
|
|
|
// 用户信息
|
|
|
|
|
uni.authorize({
|
|
|
|
|
scope:'scope.userInfo',
|
|
|
|
|
success: (res) => {},
|
|
|
|
|
fail: (res) => {
|
|
|
|
|
uni.showModal({
|
|
|
|
|
content:'检测到您没打开获取信息功能权限,是否去设置打开?',
|
|
|
|
|
confirmText: "确认",
|
|
|
|
|
cancelText:'取消',
|
|
|
|
|
success: (res) => {
|
|
|
|
|
if(res.confirm){
|
|
|
|
|
uni.openSetting({
|
|
|
|
|
success: (res) => {
|
|
|
|
|
console.log(res);
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}else{
|
|
|
|
|
console.log('取消');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
// #endif
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 传入目的地的经纬度、地点名称、详细地址,打开地图导航到达目的地
|
|
|
|
|
*/
|
|
|
|
|
goFlag:true,
|
|
|
|
|
goThere(latitude=30.656693,longitude=104.136425,address="四川省成都市成华区双店路B口"){
|
|
|
|
|
if(this.goFlag){
|
|
|
|
|
this.goFlag = false;
|
|
|
|
|
// #ifdef MP-WEIXIN
|
|
|
|
|
wx.getLocation({//获取当前经纬度
|
|
|
|
|
type: 'wgs84', //返回可以用于wx.openLocation的经纬度,官方提示bug: iOS 6.3.30 type 参数不生效,只会返回 wgs84 类型的坐标信息
|
|
|
|
|
success: (res)=> {
|
|
|
|
|
wx.openLocation({//使用微信内置地图查看位置。
|
|
|
|
|
latitude: parseFloat(latitude),//要去的纬度-地址
|
|
|
|
|
longitude: parseFloat(longitude),//要去的经度-地址
|
|
|
|
|
address: address,
|
|
|
|
|
fail:err=>{
|
|
|
|
|
tools.showToast('地址信息错误');
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
// #endif
|
|
|
|
|
|
|
|
|
|
// #ifdef APP-PLUS || H5
|
|
|
|
|
uni.openLocation({
|
|
|
|
|
latitude: parseFloat(latitude),
|
|
|
|
|
longitude: parseFloat(longitude),
|
|
|
|
|
address:address,
|
|
|
|
|
success:()=> {
|
|
|
|
|
console.log('success');
|
|
|
|
|
},
|
|
|
|
|
fail:err=>{
|
|
|
|
|
console.log(err)
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
// #endif
|
|
|
|
|
setTimeout(()=>{
|
|
|
|
|
this.goFlag = true;
|
|
|
|
|
},2000)
|
|
|
|
|
} else {
|
|
|
|
|
tools.showToast('请勿多次点击');
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 保存图片
|
|
|
|
|
* @param {String} src
|
|
|
|
|
*/
|
|
|
|
|
saveImg(src) {
|
|
|
|
|
// #ifdef APP-PLUS
|
|
|
|
|
uni.saveImageToPhotosAlbum({
|
|
|
|
|
filePath: src,
|
|
|
|
|
success:(resimg)=> {}
|
|
|
|
|
});
|
|
|
|
|
// #endif
|
|
|
|
|
// #ifdef MP-WEIXIN
|
|
|
|
|
let exist = src.slice(0,4);
|
|
|
|
|
if(exist=='http') {
|
|
|
|
|
uni.downloadFile({
|
|
|
|
|
url: src,
|
|
|
|
|
success: (res) => {
|
|
|
|
|
uni.saveImageToPhotosAlbum({
|
|
|
|
|
filePath: res.tempFilePath,
|
|
|
|
|
success: ()=> {
|
|
|
|
|
uni.showToast({title:'保存成功',icon:'error'})
|
|
|
|
|
},
|
|
|
|
|
fail: () => {
|
|
|
|
|
uni.showToast({title:'保存失败',icon:'error'})
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
wx.saveFile({
|
|
|
|
|
tempFilePath: src,
|
|
|
|
|
success:(wximg)=> {}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
// #endif
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @description 把base64转换成图片
|
|
|
|
|
* @param {String} data
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
getBase64ImageUrl(data) {
|
|
|
|
|
/// 获取到base64Data
|
|
|
|
|
var base64Data = data;
|
|
|
|
|
/// 通过微信小程序自带方法将base64转为二进制去除特殊符号,再转回base64
|
|
|
|
|
base64Data = wx.arrayBufferToBase64(wx.base64ToArrayBuffer(base64Data));
|
|
|
|
|
/// 拼接请求头,data格式可以为image/png或者image/jpeg等,看需求
|
|
|
|
|
const base64ImgUrl = "data:image/png;base64," + base64Data;
|
|
|
|
|
/// 刷新数据
|
|
|
|
|
return base64ImgUrl;
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
tools
|
|
|
|
|
}
|