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.

425 lines
8.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import config from '../config.js'
import other from './functions/other.js'
import location from './functions/location.js'
import device from './functions/device.js'
import pay from './functions/pay.js'
let common = {}
/**
* 项目主色
* 2021-03-01
*/
common.mainColor = function() {
return config.mainColor
}
/**
* 获取浏览器
* 2020-08-11
*/
common.userBroswer = function() {
// #ifdef H5
let user_agent = navigator.userAgent.toLowerCase()
if (user_agent.indexOf('micromessenger') > 0) {
return 'weixin'
} else if (user_agent.indexOf('alipay') > 0) {
return 'alipay'
} else {
return 'other'
}
// #endif
// #ifndef H5
return ''
// #endif
}
/**
* 获取环境
* 2020-08-11
*/
common.userAgent = function() {
// #ifdef H5
let user_agent = navigator.userAgent.toLowerCase()
if (user_agent.indexOf('micromessenger') > 0) {
if (config.weixinAuth) {
return 'weixin'
} else {
return 'h5'
}
} else if (user_agent.indexOf('alipay') > 0) {
if (config.alipayAuth) {
return 'h5_alipay'
} else {
return 'h5'
}
} else {
if (config.isTest) {
return config.testUserAgent
}
return 'h5'
}
// #endif
// #ifdef APP-PLUS
return 'app'
// #endif
// #ifdef MP-WEIXIN
return 'mp_weixin'
// #endif
// #ifdef MP-QQ
return 'mp_qq'
// #endif
// #ifdef MP-ALIPAY
return 'mp_alipay'
// #endif
// #ifdef MP-TOUTIAO
return 'mp_toutiao'
// #endif
return ''
}
/**
* 获取当前时间戳
* 2022-02-16
*/
common.curTimestamp = function() {
return Date.parse(new Date()) / 1000
}
/**
* 获取客户端平台值域为ios、android
* 2021-03-01
*/
common.platform = function() {
let info = uni.getSystemInfoSync()
return info.osName
}
/**
* 获取客户端平台值域为ios、android
* 2021-03-01
*/
common.isLogin = function() {
let user_id = uni.getStorageSync('user_id')
if (user_id == '' || user_id == 0) {
return false
} else {
return true
}
}
/**
* 解析URL 参数
* @param {string} name 参数名
* 2020-08-17
*/
common.getUrlParam = function(name) {
let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i')
let r = window.location.search.substr(1).match(reg)
if (r != null) {
return unescape(r[2])
}
return null
}
/**
* 模拟alert弹窗
* @param {string} content 内容
* 2020-08-17
*/
common.alert = function(content) {
return new Promise((resolve, reject) => {
uni.showModal({
title: '',
content: content,
showCancel: false,
success(res) {
resolve(res)
},
fail(res) {
reject(res)
}
});
})
}
/**
* 模拟confirm弹窗
* @param {string} content 内容
* @param {string} cancelText 取消文案
* @param {string} confirmText 确定文案
* 2020-08-17
*/
common.confirm = function(content, cancelText = "取消", confirmText = "确定") {
return new Promise((resolve, reject) => {
uni.showModal({
title: '',
content: content,
showCancel: true,
cancelText: cancelText,
confirmText: confirmText,
success(res) {
resolve(res)
},
fail(res) {
reject(res)
}
});
})
}
/**
* 提示
* @param {string} message 内容
* 2020-08-17
*/
common.toast = function(message) {
uni.showToast({
title: message,
icon: 'none',
mask: true
})
}
/**
* 设置页面标题
* @param {string} title 页面标题
* 2021-03-01
*/
common.setTitle = function(title = '') {
uni.setNavigationBarTitle({
title: title
})
}
/**
* 获取文件后缀,带'.'
* @param {string} filename 文件路径
* 2021-03-01
*/
common.getSuffix = function(filename) {
let pos = filename.lastIndexOf('.')
let suffix = ''
if (pos != -1) {
suffix = filename.substring(pos)
}
return suffix;
}
/**
* 获取随机字符串
* @param {number} length 字符串长度
* 2021-03-01
*/
common.getRandomStr = function(length = 32) {
let chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
let maxPos = chars.length;
let pwd = '';
for (let i = 0; i < length; i++) {
pwd += chars.charAt(Math.floor(Math.random() * maxPos));
}
return pwd;
}
/**
* 把一个数组按照一定长度分割成若干数组
* @param {array} array 数组
* @param {number} length 子数组的长度
* 2020-08-17
*/
common.arrayGroup = function(array, length) {
let index = 0;
let newArray = [];
while (index < array.length) {
newArray.push(array.slice(index, index += length));
}
return newArray;
}
/**
* 获取日期时间
* @param {number} number 几天之后
* 2021-03-01
*/
common.getDate = function(number = 0) {
let date = new Date();
date.setTime(date.getTime() + number * 24 * 60 * 60 * 1000);
return date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
}
/**
* 手机号中间4为加星
* @param {number} mobilePhone 手机号
* 2021-03-01
*/
common.mobilePhoneSafe = function(mobilePhone) {
return mobilePhone.substring(0, 3) + '****' + mobilePhone.substring(7, 11);
}
/**
* px转换为rpx
* @param {number} number px
* 2021-03-01
*/
common.px2rpx = function(number) {
const systemInfo = uni.getSystemInfoSync();
return number * (750 / systemInfo.screenWidth)
}
/**
* rpx转换为px
* @param {number} number rpx
* 2021-03-01
*/
common.rpx2px = function(number) {
const systemInfo = uni.getSystemInfoSync();
return number * (systemInfo.screenWidth / 750)
}
/**
* 倒计时 TODO
* @param {number} second 秒数
* @param {number} type 1--最大划分到秒 2最大划分到分钟 3--最大划分到小时 4--最大划分到天
* 2021-03-01
*/
common.timeSplit = function(second, type = 3) {
if (second < 0) {
return false
}
let obj = {}
if (type == 2) {
obj.minute = Math.floor(second / 60);
obj.second = second - obj.minute * 60;
obj.minute = obj.minute < 10 ? '0' + obj.minute : obj.minute
obj.second = obj.second < 10 ? '0' + obj.second : obj.second
} else if (type == 3) {
obj.hour = Math.floor(second / 3600);
obj.minute = Math.floor((second - obj.hour * 3600) / 60);
obj.second = second - obj.hour * 3600 - obj.minute * 60;
obj.hour = obj.hour < 10 ? '0' + obj.hour : obj.hour
obj.minute = obj.minute < 10 ? '0' + obj.minute : obj.minute
obj.second = obj.second < 10 ? '0' + obj.second : obj.second
}
return obj
}
/**
* 获取多张图片信息
* @param {array} images 图片
* callBack: 成功的回调函数
*/
common.getImagesInfo = function(images, callBack = function() {}, images_path = []) {
if (images.length > 0) {
var image = images.shift();
this.getImageInfo(image, (res) => {
images_path.push(res.path)
this.getImagesInfo(images, callBack, images_path)
});
} else {
var obj = {}
obj.path = images_path
callBack(obj)
}
}
/**
* 获取图片信息
* image: 图片
* callBack: 成功的回调函数
*/
common.getImageInfo = function(image, callBack = function() {}) {
uni.getImageInfo({
src: image,
success(res) {
callBack(res)
}
})
}
/**
* 监听首页退出应用
* urls tabbar页面路径
* 2021-12-29
*/
common.listenBackButtonQuitApp = function(urls = []) {
let user_agent = this.userAgent()
if (user_agent = 'app') {
let platform = this.platform()
if (platform == 'android') { //如果是android
//监听手机安卓返回键退出APP
let back_button_press = 0
plus.key.addEventListener('backbutton', () => {
//获取地址栏目中的url
var pages = getCurrentPages();
var page = pages[pages.length - 1];
var route = page.route;
if (urls.indexOf(route) > -1) {
back_button_press++
if (back_button_press > 1) {
plus.runtime.quit()
} else {
plus.nativeUI.toast('再按一次退出应用')
}
setTimeout(() => {
back_button_press = 0
}, 1000);
}
})
}
}
}
/**
* 重写当前页面路由以兼容微信公众号支付
* 2022-04-29
*/
common.curUrlReload = function() {
let url = window.location.href
if (!url.match(/\?#/)) {
console.log(window.location.href.split('#')[0] + '?' + window.location.hash)
window.location.replace(window.location.href.split('#')[0] + '?' + window.location.hash)
}
}
// 自定义tabBar设置索引
common.setTabBarIndex = other.setTabBarIndex
// 打开内置地图
common.openLocation = location.openLocation
// 获取当前的地理位置
common.getLocation = location.getLocation
// 拨打电话
common.callPhone = device.callPhone
// 请求支付
common.requestPayment = pay.requestPayment
export default common