project/utils/system.js

244 lines
5.7 KiB
JavaScript
Raw Normal View History

2024-07-14 15:48:34 +08:00
import regular from './regular.js'
import clientJs from './client.js'
const system = {
/**
* 打开线上文件
* @param {String} fileUrl 文件路径
*/
openFile(fileUrl, fileName) {
if (!fileUrl) {
return
}
// 图片预览
if (regular.isPicture(fileUrl)) {
uni.previewImage({
urls: [fileUrl]
})
return
}
// #ifdef APP-PLUS
// console.log(fileUrl);
// let dtask = plus.downloader.createDownload(fileUrl,{
// filename: fileName
// },function(d, status) {//d为下载的文件对象;status下载状态
// console.log('d',status)
// if (status == 200) {//下载成功
// console.log("下载成功",)
// console.log(d);
// //d.filename是文件在保存在本地的相对路径使用下面的API可转为平台绝对路径
// let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
// console.log(fileSaveUrl);
// // plus.runtime.openURL(d.filename)
// plus.runtime.openFile(fileSaveUrl); //选择软件打开文件
// // plus.runtime.openFile(d.filename, {}, function(e) { //调用第三方应用打开文件
// // plus.runtime.launchApplication({
// // pname: d.filename
// // }, function(e) {
// // plus.nativeUI.confirm('检查到您未安装\' 文件查看器\' 是否需要下载安装?',
// // function(i) {
// // if (i.index == 0) {
// // document.location.href = PDFAPPUrl
// // return;
// // }
// // });
// // });
// // });
// } else {//下载失败
// console.log("下载失败")
// plus.downloader.clear(); //清除下载任务
// }
// }
// );
// dtask.start();//启用
plus.runtime.openURL(fileUrl)
// #endif
// #ifdef H5
// 尝试打开手机系统浏览器,不行跳转页面访问
try {
// 原生APP通过系统浏览器访问
if (!clientJs.openPhoneBrowser(fileUrl)) {
window.location.href = fileUrl
}
} catch (e) {
window.open(fileUrl)
}
// #endif
// #ifdef MP
uni.setClipboardData({
data: fileUrl
});
uni.showModal({
content: '附件链接已复制',
showCancel: false
});
// #endif
},
/**
* 函数异步操作
* @param {Object} func 待转异步执行函数
*/
promisic(func) {
return function(params = {}) {
return new Promise((resolve, reject) => {
const args = Object.assign(params, {
success(res) {
resolve(res);
},
fail(error) {
reject(error);
}
});
func(args);
});
};
},
/**
* 去除字符串中h5标签
*/
delHtmlTag(content) {
if (!content) {
return null
}
return content.replace(/<[^>]+>/g, "");
},
/**
* 文本截取超过指定长度显示省略号
*/
subWithEl(content, maxLength = 30) {
if (!content || content.length <= maxLength) {
return content
} else {
return content.substring(0, maxLength) + "...";
}
},
/**
* 判断文本内容是否为空
*/
isEmpty(content) {
return !content || String(content).trim().length == 0
},
/**
* px转rpx
* @param {Object} pxNumber
*/
px2rpx(pxNumber) {
const {
screenWidth
} = wx.getSystemInfoSync();
const rpxNumber = (750 / screenWidth) * pxNumber;
return parseInt(rpxNumber);
},
/**
* 返回上一层并且刷新页面
* 注意需要现在onLoad里定义initData方法
* @param {Object} op 返回页面传参op为一个对象
*/
refreshBack(op) {
var pages = getCurrentPages(); // 当前页面
var beforePage = pages[pages.length - 2]; // 前一个页面
// console.log(that.appointmentId);
uni.navigateBack({
delta: 1,
success: function() {
// 执行前一个页面的刷新 initData是我自己定义的方法
beforePage.$vm.initData(op);
}
});
},
/**
* 秒数转化为时秒00:0000
*/
getTime(time) {
// 转换为时分秒
// let h = parseInt(time / 60 / 60 % 24)
// h = h < 10 ? '0' + h : h
// let m = parseInt(time / 60 % 60)
// m = m < 10 ? '0' + m : m
// let s = parseInt(time % 60)
// s = s < 10 ? '0' + s : s
// // 作为返回值返回
// return h+'时'+m+"分"+s + '秒'
// return m +"分"+s + '秒'
var secondTime = parseInt(time); // 秒
var minuteTime = 0; // 分
var hourTime = 0; // 小时
if (secondTime >= 60) {
minuteTime = parseInt(secondTime / 60);
secondTime = parseInt(secondTime % 60);
}
var result = "" + (parseInt(secondTime) < 10 ? "0" + parseInt(secondTime) : parseInt(secondTime)) + '秒';
if (minuteTime > 0) {
result = "" + (parseInt(minuteTime) < 10 ? "0" + parseInt(minuteTime) : parseInt(minuteTime)) + "分" +
result;
}
if (hourTime > 0) {
result = "" + (parseInt(hourTime) < 10 ? "0" + parseInt(hourTime) : parseInt(hourTime)) + ":" + result;
}
return result
},
/**
* 解析特殊符号
**/
escapeHtml(str) {
var arrEntities = {
'lt': '<',
'gt': '>',
'nbsp': ' ',
'amp': '&',
'quot': '"'
};
return str.replace(/&(lt|gt|nbsp|amp|quot);/ig, function(all, t) {
return arrEntities[t];
});
},
/**
* 防抖函数(立即执行版本)
*/
debounce(fn, delay) {
// 存储定时标识符,以便清除定时器
let timer = null
return function _debounce() {
if (timer) clearTimeout(timer)
timer = setTimeout(() => {
fn()
}, delay)
}
},
};
// #ifdef H5
(function() {
var u = navigator.userAgent,
w = window.innerWidth;
if (!u.match(/AppleWebKit.*Mobile.*/) || u.indexOf('iPad') > -1) {
window.innerWidth = 750 * (w / 1920);
window.onload = function() {
window.innerWidth = w;
}
}
})();
// #endif
module.exports = system;