| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- import verify from "./verify.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) => {
- if (!verify.isLandline(phone) || !verify.isMobile(phone)) {
- uni.showToast({
- title:"联系方式不正确",
- icon:"none"
- })
- return
- }
- uni.showModal({
- title: '提示',
- content: `确定要拨打电话:${phone}吗?`,
- success: function(res) {
- if (res.confirm) {
- uni.makePhoneCall({
- phoneNumber: phone //仅为示例
- });
- }
- }
- });
- }
- //四舍五入保留2位小数(不够位数,则用0替补)
- util.keepTwoDecimalFull = num => {
- var result = parseFloat(num)
- if (isNaN(result)) {
- return false
- }
- result = Math.round(num * 100) / 100
- var s_x = result.toString()
- var pos_decimal = s_x.indexOf('.')
- if (pos_decimal < 0) {
- pos_decimal = s_x.length
- s_x += '.'
- }
- while (s_x.length <= pos_decimal + 2) {
- s_x += '0'
- }
- return s_x
- }
- /**
- * 数组去重
- * @param {Array} arr 源数组
- *
- * @return {Array} newArr 去重后的数组
- */
- util.uniqueArray = (arr) => {
- return [...new Set(arr)]
- }
- /**
- * 获取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
- }
- /**
- * 对象键复制
- */
- 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
- }
- }
- /**
- * 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);
- }
- export default util
|