自用uni-app前端工具类,还是蛮好用的
判断是开发环境还是运行环境
代码语言:javascript复制// 在main.js中判断是生产环境还是开发环境,根据不同的环境配置请求的url
let development = process.env.NODE_ENV == 'development' ? true : false;
if (development){
uni.setStorageSync("serverurl","http://192.168.0.99:801/"); //开发模式
}else{
uni.setStorageSync("serverurl","https://www.sn58.cn/"); //编译模式
}
代码语言:javascript复制const root ='http://127.0.0.1:801/' //API根路径
//简化uni.request
const get = (url, data = '', method = 'GET') => {
return new Promise(resolve => {
uni.request({
url: root url,
method: method,
data: data,
success(res) {
resolve(res.data)
},
fail(res) {
console.log(res.data)
}
})
})
}
//获取上一页实例
const prePage = () => {
let pages = getCurrentPages();
let prePage = pages[pages.length - 2];
// #ifdef H5
return prePage;
// #endif
return prePage.$vm;
}
//简化uni.showtoast
const msg = (title, duration = 1500, mask = false, icon = 'none') => {
//统一提示方便全局修改
if (Boolean(title) === false) {
return;
}
uni.showToast({
title,
duration,
mask,
icon
});
}
//简化uni.loading
const showLoading = (title, mask = true, icon = 'none') => {
//统一提示方便全局修改
uni.showLoading({
title: title,
mask:true
})
}
//简化uni.showmodel
const msgbox = (content,title="均维软件") => {
//统一提示方便全局修改
if (Boolean(title) === false) {
return;
}
uni.showModal({
title: title,
content: content,
showCancel:false
})
}
//简化uni.navigateTo
const jump=(url)=>{
uni.navigateTo({
url:url
})
}
//判断是否登录,否则跳转到登录页
const isLogin = (hasLogin) => {
if (!hasLogin) {
uni.showModal({
content: '请先登陆',
confirmText: '去登陆',
success(res) {
res.confirm && uni.navigateTo({
url: '/pages/login/login/login'
})
}
})
return;
}
}
//格式化时间
const formatTime = (timeStamp) => {
let currentTime = Date.parse(new Date()) / 1000;
if (timeStamp > currentTime) {
let time = timeStamp - currentTime;
let day = parseInt(time / 86400);
time = time % 86400;
let hour = parseInt(time / 3600);
time = time % 3600;
let minute = parseInt(time / 60);
time = time % 60;
let second = time;
return {
day,
hour,
minute,
second
}
}else{console.log('error')}
}
const rad=e=> {
let PI = Math.PI;
return e * PI / 180
}
const getDistance=(lat1, lng1, lat2, lng2)=> {
let radLat1 = rad(lat1);
let radLat2 = rad(lat2);
let a = radLat1 - radLat2;
let b = rad(lng1) - rad(lng2);
let 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;
// EARTH_RADIUS;
s = Math.round(s * 10000) / 10000;
return s;
};
const msgarray=(objarray,valField,isback=true,title="均维软件")=> {
if (Boolean(title) === false) {
//return;
}
if (objarray.length==0) {
uni.showModal({
title: title,
//cancelText: "返回上一页", // 取消按钮的文字
// confirmText: "关闭", // 确认按钮的文字
cancelText:"返回上页",
content: "没有数据",
showCancel:isback,
success:function(res){
console.log(res);
if (!res.confirm){
//uni.$emit("isok",true);
uni.navigateBack()
}
}
})
return;
}
let arr =[]
console.log(objarray)
objarray.forEach((row,index)=>{
if(row[valField]!='[]'){
arr.push(index 1 "." row[valField])
}
})
if (arr.length==0) {
uni.showModal({
title: title,
//cancelText: "返回上一页", // 取消按钮的文字
// confirmText: "关闭", // 确认按钮的文字
cancelText:"返回上页",
content: "没有数据",
showCancel:isback,
success:function(res){
console.log(res);
if (!res.confirm){
//uni.$emit("isok",true);
uni.navigateBack()
}
}
})
return;
}
//return arr.join()
var content=arr.join("n").replace("rr","n") //微信摸拟器不会换行,真机会换行
uni.showModal({
title: title,
//cancelText: "返回上一页", // 取消按钮的文字
// confirmText: "关闭", // 确认按钮的文字
cancelText:"返回上页",
content:content,
showCancel:isback,
success:function(res){
console.log(res);
if (!res.confirm){
//uni.$emit("isok",true);
uni.navigateBack()
}
}
})
}
/**
* 获取 近**天,前天,昨天,今天,明天,后天,未来**天等通用方法
* ..............and so on
* -15 ----- 近15天
* -7 ----- 近7天
* -3 ----- 近3天
* -2 ----- 前天
* -1 ----- 昨天
* 0 ------------------------- 今天
* 1 ----- 明天
* 2 ----- 后天
* 3 ----- 未来3天
* 7 ----- 未来7天
* 15 ----- 未来15天
* ..............and so on
* @param {Object} count
*/
const timeFormat=(count=0)=> {
// 实例化开始日期
const startDate = new Date();
// 以毫秒设置 Date 对象
if(count > 2){
startDate.setTime(startDate.getTime()); // 大于2,设置起始时间为今天
}else if(count < -2){
startDate.setTime(startDate.getTime() (24 * 60 * 60 * 1000) * (count 1));
}else{
startDate.setTime(startDate.getTime() (24 * 60 * 60 * 1000) * count);
}
// 获取开始年份
const startY = startDate.getFullYear();
// 获取开始月份
const startM = startDate.getMonth() 1 < 10 ? '0' (startDate.getMonth() 1) : startDate.getMonth() 1;
// 获取开始日
const startD = startDate.getDate() < 10 ? '0' startDate.getDate() : startDate.getDate();
// 拼接 最终开始时间
const startTime = `${startY}-${startM}-${startD} 00:00:00`;
// 实例化结束日期
const endDate = new Date();
// 以毫秒设置 Date 对象
if(count > 2){
endDate.setTime(endDate.getTime() (24 * 60 * 60 * 1000) * (count - 1));
}else if(count < -2){
endDate.setTime(endDate.getTime()); // 小于-2,设置结束时间为今天
}else{
endDate.setTime(endDate.getTime() (24 * 60 * 60 * 1000) * count);
}
// 获取结束年份
const endY = endDate.getFullYear();
// 获取结束月份
const endM = endDate.getMonth() 1 < 10 ? '0' (endDate.getMonth() 1) : endDate.getMonth() 1;
// 获取结束日
const endD = endDate.getDate() < 10 ? '0' endDate.getDate() : endDate.getDate();
// 拼接 最终结束时间
const endTime = `${endY}-${endM}-${endD} 23:59:59`;
// 返回 开始 至 结束 日期 数组
return [startTime, endTime];
}
/**
* 获取 近**天,前天,昨天,今天,明天,后天,未来**天等通用方法
* ..............and so on
* -15 ----- 近15天
* -7 ----- 近7天
* -3 ----- 近3天
* -2 ----- 前天
* -1 ----- 昨天
* 0 ------------------------- 今天
* 1 ----- 明天
* 2 ----- 后天
* 3 ----- 未来3天
* 7 ----- 未来7天
* 15 ----- 未来15天
* ..............and so on
* @param {Object} count
*/
const dateFormat=(count=0)=> {
// 实例化开始日期
const startDate = new Date();
// 以毫秒设置 Date 对象
if(count > 2){
startDate.setTime(startDate.getTime()); // 大于2,设置起始时间为今天
}else if(count < -2){
startDate.setTime(startDate.getTime() (24 * 60 * 60 * 1000) * (count 1));
}else{
startDate.setTime(startDate.getTime() (24 * 60 * 60 * 1000) * count);
}
// 获取开始年份
const startY = startDate.getFullYear();
// 获取开始月份
const startM = startDate.getMonth() 1 < 10 ? '0' (startDate.getMonth() 1) : startDate.getMonth() 1;
// 获取开始日
const startD = startDate.getDate() < 10 ? '0' startDate.getDate() : startDate.getDate();
// 拼接 最终开始时间
const startTime = `${startY}-${startM}-${startD}`;
// 实例化结束日期
const endDate = new Date();
// 以毫秒设置 Date 对象
if(count > 2){
endDate.setTime(endDate.getTime() (24 * 60 * 60 * 1000) * (count - 1));
}else if(count < -2){
endDate.setTime(endDate.getTime()); // 小于-2,设置结束时间为今天
}else{
endDate.setTime(endDate.getTime() (24 * 60 * 60 * 1000) * count);
}
// 获取结束年份
const endY = endDate.getFullYear();
// 获取结束月份
const endM = endDate.getMonth() 1 < 10 ? '0' (endDate.getMonth() 1) : endDate.getMonth() 1;
// 获取结束日
const endD = endDate.getDate() < 10 ? '0' endDate.getDate() : endDate.getDate();
// 拼接 最终结束时间
const endTime = `${endY}-${endM}-${endD}`;
// 返回 开始 至 结束 日期 数组
return [startTime, endTime];
}
export default {
root,
get,
prePage,
msg,
msgbox,
jump,
isLogin,
formatTime,
getDistance,
msgarray,
timeFormat,
dateFormat
}