import {
|
config
|
} from "@/common/config.js"
|
/**
|
* 跳转到指定页面
|
* url=跳转的url
|
* skip = 条转方式,1保留当前页面,跳转到应用内的某个页面(默认)
|
* 2关闭所有页面,打开到应用内的某个页面
|
*/
|
function go(dataset) {
|
var url = dataset.url;
|
|
if ("/" + getPageInfo("route") == url) {
|
return;
|
}
|
|
var skip = dataset.skip;
|
if (skip == undefined) {
|
skip = 1
|
}
|
if (skip == 1) {
|
wx.navigateTo({
|
url: url,
|
})
|
}
|
if (skip == 2) {
|
wx.reLaunch({
|
url: url,
|
})
|
}
|
if (skip == 3) {
|
wx.redirectTo({
|
url: url,
|
})
|
}
|
}
|
/**
|
* 页面后退
|
* {page:页面路径} 返回到指定路径
|
* {page:1} 返回到上一层
|
*/
|
function retreat(e) {
|
if (e.page == undefined) {
|
e.page = 1
|
}
|
if (!isNaN(e.page)) {
|
uni.navigateBack({
|
delta: e.page
|
})
|
return;
|
} else {
|
console.log(111)
|
if (e.page.indexOf('index') > 1 || e.page.indexOf('sort') > 1 || e.page.indexOf('shop') > 1 || e.page.indexOf(
|
'cart') > 1 || e.page.indexOf('person') > 1) {
|
uni.switchTab({
|
url: "/" + e.page
|
})
|
} else {
|
// 添加参数
|
if (!!e.argu) {
|
var options = JSON.parse(e.argu);
|
let argu = "?"
|
for (var key in options) {
|
argu += key + '=' + options[key] + '&'
|
}
|
|
uni.redirectTo({
|
url: "/" + e.page + argu
|
})
|
} else {
|
uni.redirectTo({
|
url: "/" + e.page
|
})
|
}
|
|
}
|
return;
|
}
|
}
|
|
/**
|
* 获取当前页面信息
|
* -- route:页面路径
|
*/
|
|
function getPageInfo(key) {
|
var pages = getCurrentPages(); //获取加载的页面信息(结果是个数组)
|
|
return pages[pages.length - 1][key];
|
}
|
|
function checkPhone(phone) {
|
/**
|
* 电话号码正则
|
* @param {String} phone - 电话号码
|
* @return {Boolean} 是否通过
|
*/
|
if (!(/^(?:(?:\+|00)86)?1[3-9]\d{9}$/.test(phone))) {
|
return false;
|
}
|
return true;
|
}
|
|
function checkIdCard(idCard) {
|
/**
|
* 身份证正则
|
* @param {String} idCard - 身份证号码
|
* @return {Boolean} 是否通过
|
*/
|
if (!(/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(idCard))) {
|
return false;
|
}
|
return true;
|
}
|
|
function isPerfectInfo(app) {
|
/**
|
* 判断是否完善个人信息
|
* @return {Boolean}
|
*/
|
if (app.globalData.isPerfectInfo) {
|
return true;
|
} else {
|
wx.showModal({
|
title: '提示',
|
content: '您尚未完善个人信息,请点击确定按钮完善个人信息',
|
success(res) {
|
if (res.confirm) {
|
// 跳转完善个人信息页
|
go({
|
url: '/pages/perfectInfo/perfectInfo',
|
skip: 1
|
})
|
} else if (res.cancel) {}
|
}
|
})
|
return false;
|
}
|
}
|
|
function accMul(arg1, arg2) {
|
/**
|
* 乘法
|
*/
|
let m = 0,
|
s1 = arg1.toString(),
|
s2 = arg2.toString();
|
try {
|
m += s1.split(".")[1].length
|
} catch (e) {}
|
try {
|
m += s2.split(".")[1].length
|
} catch (e) {}
|
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
|
}
|
|
function isTimeOut(date) {
|
/**
|
* 判断传入的日期是否大于当前日期
|
*/
|
var nowDate = new Date().getTime();
|
var checkDate = new Date(date).getTime();
|
if (nowDate < checkDate) {
|
return false;
|
}
|
return true;
|
}
|
/**
|
* 后台返回日期截取
|
*/
|
function splitDate(date) {
|
var arr = date.split(' ')[0];
|
var str = arr.split('-')[0] + '.' + arr.split('-')[1] + '.' + arr.split('-')[2];
|
return str;
|
}
|
|
|
/**
|
* 日期格式化
|
* @param {Object} date
|
* @param {Object} fmt
|
*/
|
function dateFormat(date, fmt) {
|
if (!date) {
|
return
|
}
|
if (!fmt) {
|
fmt = 'yyyy-MM-dd hh:mm'
|
}
|
if (!(date instanceof Date)) {
|
date = new Date(date.replace(/-/g, '/'))
|
}
|
|
if (/(y+)/.test(fmt)) {
|
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
|
}
|
|
let o = {
|
'M+': date.getMonth() + 1,
|
'd+': date.getDate(),
|
'h+': date.getHours(),
|
'm+': date.getMinutes(),
|
's+': date.getSeconds()
|
};
|
|
for (let k in o) {
|
if (new RegExp(`(${k})`).test(fmt)) {
|
let str = o[k] + '';
|
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : ('00' + str).substr(str.length));
|
}
|
}
|
return fmt;
|
}
|
|
function isBlank(str) {
|
if (str === undefined || str === 'undefined' || str === null || str === 'null' || str === '' || str === '{}' ||
|
str === {} || str === '[]' || str === [] || str === 'null' || str
|
.length == 0) {
|
return true
|
} else {
|
return false
|
}
|
}
|
|
function GetQueryString(path, name) {
|
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
|
var idx = path.indexOf("?");
|
if (idx === -1) {
|
return null
|
}
|
var r = path.substring(idx + 1).match(reg); //获取url中"?"符后的字符串并正则匹配
|
var context = "";
|
if (r != null)
|
context = decodeURIComponent(r[2]);
|
reg = null;
|
r = null;
|
return context == null || context == "" || context == "undefined" ? "" : context;
|
}
|
/**
|
* param 将要转为URL参数字符串的对象
|
* key URL参数字符串的前缀
|
* encode true/false 是否进行URL编码,默认为true
|
* idx ,循环第几次,用&拼接
|
* return URL参数字符串
|
*/
|
function urlEncode(param, idx, key, encode) {
|
if (param == null) return '';
|
var paramStr = '';
|
var t = typeof(param);
|
if (t == 'string' || t == 'number' || t == 'boolean') {
|
var one_is = idx < 3 ? '?' : '&';
|
paramStr += one_is + key + '=' + ((encode == null || encode) ? encodeURIComponent(param) : param);
|
} else {
|
for (var i in param) {
|
var k = key == null ? i : key + (param instanceof Array ? '[' + i + ']' : '.' + i);
|
idx++
|
paramStr += urlEncode(param[i], idx, k, encode);
|
}
|
}
|
return paramStr;
|
};
|
/**
|
* 加密手机号
|
*/
|
function encodePhone(phone) {
|
var str = phone.substring(0, 3) + "****" + phone.substring(7);
|
return str;
|
}
|
|
function json2str(json) {
|
return encodeURIComponent(JSON.stringify(json))
|
}
|
/**
|
* 获取距离
|
*/
|
function getDistance(dis) {
|
var s = 0;
|
dis = dis - 0;
|
if (dis < 100) s = '<100m';
|
if (dis < 1000 && dis > 100) s = dis.toFixed(1) + 'm';
|
if (dis > 1000) s = (dis / 1000).toFixed(2) + 'km';
|
if (dis > 100000) s = '>100km';
|
return s;
|
}
|
/**
|
* 百分比整数位置
|
*/
|
function getPercentage(salesPercentage) {
|
if (salesPercentage == null) {
|
salesPercentage = '0.0';
|
}
|
return salesPercentage.substring(0, salesPercentage.indexOf("."));
|
}
|
|
function checkNav(url) {
|
// var checkList = ['/h5Redirect/h5Redirect', '/vip/vip']
|
var checkList = ['/vip/vip']
|
return checkList.some(function(item) {
|
return url.indexOf(item) != -1
|
})
|
}
|
|
/**
|
* 获取星星数
|
*/
|
function getStar(score) {
|
if (score > 80) {
|
return 5;
|
} else if (score > 60) {
|
return 4;
|
} else if (score > 40) {
|
return 3;
|
} else if (score > 20) {
|
return 2;
|
} else {
|
return 1;
|
}
|
}
|
|
function getArrayImgPath(jsonArray, url) {
|
if (!jsonArray) {
|
return "";
|
}
|
var json = JSON.parse(jsonArray)[0];
|
var baseUrl = url || config.ftpUrl
|
// var result = 'https://scstq.183.sc.cn/f-static' + json.path;//邮政
|
var result = baseUrl + json.path; //金明源
|
return result;
|
}
|
|
function getImgPath(jsonstr, url) {
|
//if (jsonstr != null && jsonstr != 'null') {
|
// }
|
// var result = 'https://scstq.183.sc.cn/f-static' + jsonstr.path;//邮政
|
var baseUrl = url || config.ftpUrl
|
var result = baseUrl + jsonstr.path;
|
return result;
|
}
|
|
function fenToYuan(amount) {
|
if (!amount) {
|
return "0";
|
}
|
amount = amount.toString();
|
if (amount.length == 1) {
|
return parseFloat("0.0" + amount);
|
} else if (amount.length == 2) {
|
return parseFloat("0." + amount);
|
} else {
|
return parseFloat(amount.substring(0, amount.length - 2) + "." + amount.substring(amount.length - 2));
|
}
|
}
|
|
function requestPayment(data, sucessUrl, failUrl) {
|
// 微信支付
|
// #ifdef MP-WEIXIN
|
uni.requestPayment({
|
appId: data.appId,
|
timeStamp: data.timeStamp,
|
nonceStr: data.nonceStr,
|
package: data.package,
|
signType: data.signType,
|
paySign: data.paySign,
|
success: function(res) {
|
if (res.errMsg.charCodeAt('ok') > -1) {
|
uni.redirectTo({
|
url: sucessUrl
|
});
|
} else {
|
uni.redirectTo({
|
url: failUrl
|
});
|
}
|
},
|
fail: function(res) {
|
uni.redirectTo({
|
url: failUrl
|
});
|
}
|
});
|
// #endif
|
// #ifdef H5
|
WeixinJSBridge.invoke(
|
'getBrandWCPayRequest', {
|
"appId": data.appId, //公众号ID,由商户传入
|
"timeStamp": data.timeStamp, //时间戳,自1970年以来的秒数
|
"nonceStr": data.nonceStr, //随机串
|
"package": data.package,
|
"signType": data.signType, //微信签名方式:
|
"paySign": data.paySign //微信签名
|
},
|
(res) => {
|
if (res.err_msg == "get_brand_wcpay_request:ok") {
|
// 使用以上方式判断前端返回,微信团队郑重提示:
|
uni.redirectTo({
|
url: sucessUrl
|
});
|
} else {
|
uni.redirectTo({
|
url: failUrl
|
});
|
}
|
});
|
// #endif
|
}
|
|
/* 跳转确认支付页 */
|
function toConfirmPay(url, type = 'redirectTo') {
|
// #ifdef MP-WEIXIN
|
uni[type]({
|
url
|
})
|
// #endif
|
// #ifdef H5
|
|
let redirect_uri = encodeURIComponent(config.webURL + url)
|
window.location.href = config.authCallBackUrl + redirect_uri
|
// #endif
|
}
|
|
function toH5Auth() {
|
// #ifdef H5
|
let redirect_uri = encodeURIComponent(`${config.webURL}/pages/login/login`)
|
const pages = getCurrentPages()
|
let prevRoute = pages[pages.length - 1]
|
uni.setStorageSync('prevPage', JSON.stringify({
|
page: prevRoute.$page.fullPath.replace('/', ''),
|
}))
|
if (isWxOrAli() == 2) {
|
window.location.href =
|
`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${config.wx_appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect`
|
} else if (isWxOrAli() == 5) {
|
window.location.href =
|
`https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=${config.ali_appid}&scope=auth_base&redirect_uri=${redirect_uri}&state=STATE`
|
} else {
|
uni.showModal({
|
title: '提示',
|
content: '请在微信内打开网页',
|
success: () => {
|
|
}
|
})
|
}
|
// #endif
|
}
|
// 判断微信、支付宝 2微信 5支付宝 3其他
|
function isWxOrAli() {
|
var ua = window.navigator.userAgent.toLowerCase();
|
//判断是不是微信
|
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
|
return 2;
|
}
|
//判断是不是支付宝
|
if (ua.match(/AlipayClient/i) == 'alipayclient') {
|
return 5;
|
}
|
return 3;
|
}
|
/**
|
* @description 计算角度
|
* @param arg1 角度
|
* @param 数量
|
*/
|
function accDiv(arg1, arg2) {
|
let t = 0
|
arg1 = arg1 ? arg1.toString() : '0'
|
arg2 = arg2 ? arg2.toString() : '0'
|
if (arg2.includes('.')) {
|
t = arg2.split('.')[1].length
|
}
|
if (arg1.includes('.')) {
|
t -= arg1.split('.')[1].length
|
}
|
const r1 = Number(arg1.replace('.', ''))
|
const r2 = Number(arg2.replace('.', ''))
|
return this.accMul((r1 / r2), Math.pow(10, t))
|
}
|
|
function getApplyPayWay(applyPayWayStr) {
|
let payWay = {
|
'1': '微信',
|
'2': '支付宝',
|
'3': '快捷支付'
|
}
|
if (!applyPayWayStr) {
|
return '不限'
|
}
|
let arr = applyPayWayStr.split(',')
|
if (arr.length === 3) {
|
return '不限'
|
}
|
return arr.map(i => payWay[i]).join('、')
|
}
|
//转化成小程序模板语言 这一步非常重要 不然无法正确调用
|
module.exports = {
|
go: go,
|
getPageInfo: getPageInfo,
|
splitDate: splitDate,
|
retreat: retreat,
|
json2str,
|
encodePhone,
|
checkIdCard,
|
checkPhone,
|
isPerfectInfo,
|
accMul,
|
isTimeOut,
|
dateFormat,
|
isBlank,
|
GetQueryString,
|
urlEncode,
|
getDistance,
|
getPercentage,
|
checkNav,
|
getStar,
|
getArrayImgPath,
|
getImgPath,
|
fenToYuan,
|
toH5Auth,
|
isWxOrAli,
|
toConfirmPay,
|
requestPayment,
|
getApplyPayWay,
|
accDiv,
|
};
|