123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- import {
- API_URL
- } from '@/env'
- import {
- router
- } from '@/common/router'
- // #ifdef H5
- import $wxsdk from '@/common/utils/sdk-h5-weixin';
- // #endif
- export default {
- /**
- * 跳转再封装,主要是为了兼容外链。
- * @param {String} path - 跳转路径
- * @param {isTabbar} isTabbar - 是否是底部导航
- */
- routerTo(path, isTabbar) {
- if (path) {
- // 是否跳转外部链接
- if (~path.indexOf('http') || ~path.indexOf('www')) {
- // #ifdef H5
- window.location = path;
- // #endif
- // #ifndef H5
- router.push({
- path: '/pages/public/webview',
- query: {
- 'webviewPath': path
- }
- })
- // #endif
- return false
- }
- if (isTabbar) {
- router.replaceAll(path)
- } else {
- path.includes('/pages/index') && !path.includes('/pages/index/view') ? router.replaceAll(path) : router
- .push(path)
- }
- } else {
- console.log(`%cerr:没有填写跳转路径`, 'color:green;background:yellow');
- }
- },
- /**
- * 导航-打开位置
- * @param {Number} longitude - 经度
- * @param {Number} latitude - 纬度
- * @param {String} address - 地理位置
- */
- openLocation(longitude, latitude, address) {
- uni.openLocation({
- longitude: parseFloat(longitude),
- latitude: parseFloat(latitude),
- address: address
- })
- },
- /**
- * 图片处理-预览图片
- * @param {Array} urls - 图片列表
- * @param {Number} current - 首个预览下标
- */
- previewImage(urls = [], current = 0) {
- uni.previewImage({
- urls: urls,
- current: current,
- indicator: 'default',
- loop: true,
- fail(err) {
- console.log('previewImage出错', urls, err)
- },
- })
- },
- /**
- * 数据分组
- * @param {Array} oArr - 原数组列表
- * @param {Number} length - 单个数组长度
- * @return {Array} arr - 分组后的新数组
- */
- splitData(oArr = [], length = 1) {
- let arr = [];
- let minArr = [];
- oArr.forEach(c => {
- if (minArr.length === length) {
- minArr = [];
- }
- if (minArr.length === 0) {
- arr.push(minArr);
- }
- minArr.push(c);
- });
- return arr;
- },
- /**
- * 获取指定日期
- * @param {Date} date - 传入的时间Date对象
- * @return {Object} days - 添加的天数,可以是正数、负数或零
- */
- getDaysToDate(date, days) {
- console.log(date)
- if (!(date instanceof Date)) {
- throw new Error('第一个参数必须是Date对象');
- }
- if (typeof days !== 'number') {
- throw new Error('第二个参数必须是数字');
- }
- const newDate = new Date(date)
- newDate.setDate(date.getDate() + days)
- console.log(newDate)
- return newDate;
- },
- /**
- * 剩余时间格式化
- * @param {Number} t - 剩余多少秒
- * @return {Object} format - 格式后的天时分秒对象
- */
- format(t) {
- let format = {
- d: '00',
- h: '00',
- m: '00',
- s: '00'
- };
- if (t > 0) {
- let d = Math.floor(t / 86400);
- let h = Math.floor((t / 3600) % 24);
- let m = Math.floor((t / 60) % 60);
- let s = Math.floor(t % 60);
- format.d = d
- format.h = h
- format.m = m
- format.s = s
- }
- return format;
- },
- /**
- * 打电话
- * @param {String<Number>} phoneNumber - 数字字符串
- */
- callPhone(phoneNumber = '') {
- let num = phoneNumber.toString()
- uni.makePhoneCall({
- phoneNumber: num,
- fail(err) {
- console.log('makePhoneCall出错', err)
- },
- });
- },
- /**
- * 微信头像
- * @param {String} url -图片地址
- */
- checkMPUrl(url) {
- // #ifdef MP
- if (
- url.substring(0, 4) === 'http' &&
- url.substring(0, 5) !== 'https' &&
- url.substring(0, 12) !== 'http://store' &&
- url.substring(0, 10) !== 'http://tmp' &&
- url.substring(0, 10) !== 'http://usr'
- ) {
- url = 'https' + url.substring(4, url.length);
- }
- // #endif
- return url;
- },
- /**
- * 中间部分*
- */
- hiddenText(str, frontLen, endLen) {
- //str:要进行隐藏的变量 frontLen: 前面需要保留几位 endLen: 后面需要保留几位
- var len = str.length - frontLen - endLen;
- var xing = "";
- for (var i = 0; i < len; i++) {
- xing += "*";
- }
- return (
- str.substring(0, frontLen) + xing + str.substring(str.length - endLen)
- )
- },
- amountCN(n) {
- const fraction = ['角', '分']
- const digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
- const unit = [
- ['元', '万', '亿'],
- ['', '拾', '佰', '仟']
- ]
- const head = n < 0 ? '欠' : ''
- n = Math.abs(n)
- let s = ''
- for (let i = 0; i < fraction.length; i++) {
- s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '')
- }
- s = s || '整'
- n = Math.floor(n)
- // eslint-disable-next-line no-redeclare
- for (let i = 0; i < unit[0].length && n > 0; i++) {
- let p = ''
- for (let j = 0; j < unit[1].length && n > 0; j++) {
- p = digit[n % 10] + unit[1][j] + p
- n = Math.floor(n / 10)
- }
- s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s
- }
- return (
- head +
- s
- .replace(/(零.)*零元/, '元')
- .replace(/(零.)+/g, '零')
- .replace(/^整$/, '零元整')
- )
- },
- // 分享复制
- shareCopy(page) {
- // #ifdef H5
- const url = location.href.split('/pages')[0];
- uni.setClipboardData({
- data: url + page,
- showToast: false,
- success() {
- uni.showToast({
- mask: true,
- title: '您已复制邀请链接,快去分享吧',
- icon: 'success'
- })
- // uni.showModal({
- // title: '温馨提示',
- // content: '您已复制邀请链接,快去分享吧',
- // showCancel: false
- // })
- },
- fail() {
- uni.$u.toast('复制失败,请重新点击')
- }
- })
- // #endif
- },
- // H5设置分享信息
- shareHandle(detail) {
- // #ifdef H5
- const url = location.href.split('/pages')[0];
- $wxsdk.updateShareInfo({
- title: detail.title,
- desc: detail.desc,
- link: url + detail.link,
- image: detail.image
- });
- // #endif
- },
- }
|