| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- import simpleCache from './cache.js'
- import dateTime from './dateTime.js'
- //工具类
- let util = {}
- //预览图片
- // this.$util.preview('http://....png')
- // this.$util.preview('../../test.png')
- // this.$util.preview(['http://....png', '../../test.png'])
- util.preview = async (src) => {
- const urls = typeof src === 'string' ? [src] : src
- const filePath = async src => src.match(/^http/) ? src : (await uni.compressImage({
- src,
- quality: 100
- }))[1].tempFilePath
- for (let i = 0; i < urls.length; i++) {
- urls[i] = await filePath(urls[i])
- }
- uni.previewImage({
- urls
- })
- },
- //复制
- util.copy = content => {
- uni.setClipboardData({
- data: content
- });
- }
- util.formatHtml = (str) => {
- return decodeURIComponent(str).replace(/<[^>]+>/g, "");
- }
- util.dealAccountNo = account => {
- if (account.startsWith('1')) {
- if (account.length >= 17) {
- account = account.substring(0, 4) + " **** **** " + account.substring(account.length - 4);
- }
- }
- if (account.startsWith('6')) {
- if (account.length >= 16) {
- account = account.substring(0, 4) + " **** **** " + account.substring(account.length - 4);
- }
- }
- return account
- },
- util.calculateDistance = (lat1, lng1, lat2, lng2) => {
- console.log(lat1, lng1, lat2, lng2)
- var radLat1 = lat1 * Math.PI / 180.0;
- var radLat2 = lat2 * Math.PI / 180.0;
- var a = radLat1 - radLat2;
- var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
- var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
- Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
- s = s * 6378.137;
- s = Math.round(s * 10000) / 10; //单位米
- return s
- },
- util.showModal = (content, title = '提示') => {
- return new Promise((resolve, reject) => {
- uni.showModal({
- title: title,
- content: content,
- success: (res) => {
- resolve(res)
- }
- });
- })
- }
- //拨打电话
- util.callPhone = (phone) => {
- uni.showModal({
- title: '提示',
- content: `确定要拨打电话:${phone}吗?`,
- success: function(res) {
- if (res.confirm) {
- uni.makePhoneCall({
- phoneNumber: phone //仅为示例
- });
- }
- }
- });
- }
- /**
- * 获取url参数
- */
- util.getUrlParams = (p) => {
- let url = decodeURIComponent(p);
- let param = {};
- // 把参数按&拆分成数组
- let index = url.indexOf("?");
- let query = url.substring(index + 1, index.length);
- var param_arr = query.split("&");
- for (var i = 0; i < param_arr.length; i++) {
- var pair = param_arr[i].split("=");
- param[pair[0]] = pair[1];
- }
- return param
- }
- /**
- * 数组去重
- * @param {Array} arr 源数组
- *
- * @return {Array} newArr 去重后的数组
- */
- util.uniqueArray = (arr) => {
- return [...new Set(arr)]
- }
- /**
- * 对象键复制
- */
- util.objectCopy = (target, source) => {
- Object.keys(target).forEach(key => {
- target[key] = source[key]
- })
- }
- util.objectKeyIsEmpty = (obj) => {
- let empty = false;
- for (const key in obj) {
- if (obj.hasOwnProperty(key)) {
- if (obj[key] === null || obj[key] === '') {
- empty = true;
- } else {
- empty = false;
- break;
- }
- }
- }
- return empty;
- }
- //获取某一个页面上下文 context
- util.getPageCtx = (idx = 0) => {
- let pages = getCurrentPages()
- if (pages.length > 0) {
- return pages[pages.length - 1 - idx] || {}
- }
- return {}
- }
- //获取当前页面路由
- util.getCurrentRoute = () => {
- let page = util.getPageCtx()
- if (page.route) {
- return page.route
- }
- return ''
- }
- //回到上一页刷新页面
- util.isReloadAndBack = () => {
- let prePage = util.getPageCtx(1)
- prePage.setData({
- "reload": true
- })
- uni.navigateBack({
- delta: 1
- })
- }
- //onshow方法通过刷新mescroll数据
- util.reload = (mescroll) => {
- let page = util.getPageCtx()
- if (page.data.reload) {
- mescroll.resetUpScroll();
- page.data.reload = false
- }
- }
- /**
- * 携带参数
- * data:{}
- */
- util.backWithParams = (data) => {
- let prePage = util.getPageCtx(1)
- prePage.setData(data)
- uni.navigateBack({
- delta: 1
- })
- }
- /**
- * 获取参数
- * paramsName:参数名
- */
- util.getBackParams = (paramsName) => {
- let page = util.getPageCtx()
- if (page.data[paramsName]) {
- return page.data[paramsName]
- }
- return null
- }
- /**
- * vue中加载script
- */
- util.loadScriptFunc = (url, callback) => {
- callback = typeof callback === 'function' ? callback : function() {};
- var head = document.getElementsByTagName('head')[0];
- var script = document.createElement('script');
- script.type = 'text/javascript';
- script.src = url;
- script.onreadystatechange = function() {
- if (this.readyState == "loaded" || this.readyState == "complete") {
- callback();
- }
- }
- script.onload = callback;
- head.appendChild(script);
- }
- util.loadScript = (src) => {
- var script = document.createElement('script');
- script.src = src;
- document.body.appendChild(script);
- }
- // 判断公众号截取code
- util.getUrlParam = (name) => {
- let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
- let r = window.location.search.substr(1).match(reg);
- if (r != null) {
- return unescape(r[2]);
- }
- return null;
- }
- //手机号脱敏
- util.handlePhone = (phone) => {
- return phone.toString().substr(0, 3) + '****' + phone.toString().substr(7, phone.length)
- }
- /**
- * 正则匹配手机号码是否正确
- * phone 手机号码
- * return 是否属于三大运营商号段范围
- * https://www.qqzeng.com/article/phone.html
- */
- util.isPhone = (phone) => {
- let regExp = new RegExp("^((13[0-9])|(14[5-9])|(15([0-3]|[5-9]))|(16[6-7])|(17[1-8])|(18[0-9])|(19[1|3])|(19[5|6])|(19[8|9]))\\d{8}$").test(phone);
- return regExp
- }
- export default util
|