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