123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302 |
- import {
- API_URL
- } from '@/env'
- import router from '@/common/router'
- export default {
- /**
- * 跳转再封装,不支持复杂传参。
- */
- routerTo(path, params = {}, isTabbar) {
- let objParams = params;
- // 是否跳转外部链接
- if (~path.indexOf('http')) {
- // #ifdef H5
- window.location = path;
- // #endif
- // #ifndef H5
- router.push({
- path: '/pages/public/webview',
- query: {
- 'webviewPath': path
- }
- })
- // #endif
- return false
- }
- // 判断是否有参数
- if (path.indexOf('?') !== -1) {
- let index = path.lastIndexOf('?');
- let query = path.substring(index + 1, path.length);
- let arr = query.split('&')
- path = path.slice(0, index);
- arr.forEach(item => {
- let mArr = []
- let obj = {}
- mArr = item.split('=');
- obj[mArr[0]] = mArr[1];
- objParams = {
- ...objParams,
- ...obj
- }
- })
- }
- // 判断是否是tabbar
- if (isTabbar) {
- router.replaceAll({
- path: path,
- query: objParams
- })
- } else {
- router.push({
- path: path,
- query: objParams
- })
- }
- },
- /**
- * fn:检测图片协议,主要用于检测海报图片协议。
- * param(imgPath): 图片地址。
- */
- checkImgHttp(imgPath) {
- let newPath = '';
- let pathArr = imgPath.split('://');
- // #ifdef H5
- let ishttps = 'https:' == window.location.protocol ? true : false;
- ishttps ? (pathArr[0] = 'https') : (pathArr[0] = 'http');
- // #endif
- // #ifdef MP-WEIXIN
- pathArr[0] = 'https'
- // #endif
- newPath = pathArr.join('://');
- return newPath;
- },
- // 打电话
- callPhone(phoneNumber = '') {
- let num = phoneNumber.toString()
- uni.makePhoneCall({
- phoneNumber: num,
- fail(err) {
- console.log('makePhoneCall出错', err)
- },
- });
- },
- // 图片处理-选择图片
- chooseImage(count = 1) {
- return new Promise((resolve, reject) => {
- uni.chooseImage({
- count: count, //默认9
- sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
- sourceType: ['album'], //从相册选择
- success: res => {
- resolve(res.tempFilePaths);
- }
- });
- }).catch(e => {
- reject(e)
- })
- },
- // 图片处理-上传图片
- uploadImage(api, url) {
- let config_url = API_URL;
- uni.showLoading({
- title: '上传中'
- });
- return new Promise((resolve, reject) => {
- uni.uploadFile({
- url: config_url + api,
- filePath: url,
- name: 'file',
- success: res => {
- res = JSON.parse(res.data);
- if (res.code === 1) {
- uni.hideLoading()
- uni.showToast({
- title: '上传成功',
- icon: 'none'
- });
- resolve(res.data)
- } else {
- uni.hideLoading()
- uni.showModal({
- title: '上传失败',
- content: res.msg
- });
- }
- }
- });
- }).catch(e => {
- reject(e)
- })
- },
- // 图片处理-预览图片
- previewImage(urls = [], current = 0) {
- uni.previewImage({
- urls: urls,
- current: current,
- indicator: 'default',
- loop: true,
- fail(err) {
- console.log('previewImage出错', urls, err)
- },
- })
- },
- // 图片处理-获取图片信息
- getImageInfo(src = '') {
- return new Promise((resolve, reject) => {
- uni.getImageInfo({
- src: src,
- success: (image) => {
- resolve(image)
- },
- fail(err) {
- console.log('getImageInfo出错', src, err)
- },
- })
- }).catch(e => {
- reject(e)
- })
- },
- /**
- * 格式化时间
- */
- //时间格式化 天时分秒
- 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 < 10 ? '0' + d : d
- format.h = h < 10 ? '0' + h : h
- format.m = m < 10 ? '0' + m : m
- format.s = s < 10 ? '0' + s : s
- }
- return format
- },
- //时间格式化(格式化最大为小时)
- formatToHours(t) {
- let format = {
- d: '00',
- h: '00',
- m: '00',
- s: '00',
- }
- if (t > 0) {
- let h = Math.floor(t / 3600)
- let m = Math.floor((t / 60) % 60)
- let s = Math.floor(t % 60)
- format.h = h < 10 ? '0' + h : h
- format.m = m < 10 ? '0' + m : m
- format.s = s < 10 ? '0' + s : s
- }
- return format
- },
- // 年月日
- timestamp(timestamp) {
- let date = new Date(timestamp * 1000); //根据时间戳生成的时间对象
- let y = date.getFullYear();
- let m = date.getMonth() + 1;
- let d = date.getDate();
- m = m < 10 ? '0' + m : m;
- d = d < 10 ? '0' + d : d
- let dateText = y + "-" + m + "-" + d
- return dateText
- },
- // 年月日,时分秒
- // "YYYY-mm-dd HH:MM"
- dateFormat(fmt, date) {
- let ret;
- const opt = {
- "Y+": date.getFullYear().toString(), // 年
- "m+": (date.getMonth() + 1).toString(), // 月
- "d+": date.getDate().toString(), // 日
- "H+": date.getHours().toString(), // 时
- "M+": date.getMinutes().toString(), // 分
- "S+": date.getSeconds().toString() // 秒
- // 有其他格式化字符需求可以继续添加,必须转化成字符串
- };
- for (let k in opt) {
- ret = new RegExp("(" + k + ")").exec(fmt);
- if (ret) {
- fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
- };
- };
- return fmt;
- },
- /**
- * @fn 时间间隔格式化
- * @param {*} startTime 开始时间的时间戳
- * @param {*} endTime 结束时间的时间戳
- * @return {string} str 返回时间字符串
- */
- getTimeInterval(startTime, endTime) {
- let runTime = parseInt((endTime - startTime) / 1000);
- let year = Math.floor(runTime / 86400 / 365);
- runTime = runTime % (86400 * 365);
- let month = Math.floor(runTime / 86400 / 30);
- runTime = runTime % (86400 * 30);
- let day = Math.floor(runTime / 86400);
- runTime = runTime % 86400;
- let hour = Math.floor(runTime / 3600);
- runTime = runTime % 3600;
- let minute = Math.floor(runTime / 60);
- runTime = runTime % 60;
- let second = runTime;
- let str = '';
- if (year > 0) {
- str = year + '年';
- }
- if (year <= 0 && month > 0) {
- str = month + '月';
- }
- if (year <= 0 && month <= 0 && day > 0) {
- str = day + '天';
- }
- if (year <= 0 && month <= 0 && day <= 0 && hour > 0) {
- str = hour + '小时';
- }
- if (year <= 0 && month <= 0 && day <= 0 && hour <= 0 && minute > 0) {
- str = minute + '分钟';
- }
- if (year <= 0 && month <= 0 && day <= 0 && hour <= 0 && minute <= 0 && second > 0) {
- str += second + '秒';
- }
- str += '前';
- return str;
- },
- /**提示框
- *title(标题)
- *icon(图标): success,loading,none
- *duration(延时): 0为不关闭, 毫秒数
- *options(其它参数)
- */
- msg(title, duration=2000, mask=false, icon='none'){
- //统一提示方便全局修改
- if(Boolean(title) === false){
- return;
- }
- uni.showToast({
- title,
- duration,
- mask,
- icon
- });
- }
- }
|