You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

326 lines
8.1 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import Taro from "@tarojs/taro";
import dayjs from "dayjs";
export const goOpenSetting = () => {
//去设置页的弹框
return new Promise((reslove, reject) => {
Taro.showModal({
title: "提示",
content: "请点击授权地址",
success(res) {
if (res.confirm) {
Taro.openSetting();
}
},
});
});
};
export const goOpenSettingPhotos = () => {
//去设置页的弹框
return new Promise((reslove, reject) => {
Taro.showModal({
title: "提示",
content: "请点击打开权限",
success(res) {
if (res.confirm) {
Taro.openSetting();
}
},
});
});
};
export const authorize = (scope) => {
return new Promise((reslove, reject) => {
Taro.authorize({
scope: scope,
success(res) {
console.log("authorize授权状态");
reslove(res);
},
fail(err) {
reject(err);
},
});
});
};
export const back = (delta) => {
Taro.navigateBack({
delta,
});
};
export const msg = (title, mask, icon) => {
Taro.showToast({
title,
mask,
icon: icon || "none",
duration: 2000,
});
};
export const go = (url) => {
Taro.navigateTo({
url,
});
};
// jumpType 0轮播图跳转 1消息列表跳转
export const goJump = (data, jumpType = 0) => {
// 跳转类型0无跳转、1跳转内部链接、3跳转外部链接、4跳转小程序、5导向视频号、6导向视频号直播间',
/**
* `link` '跳转链接(跳转外部链接、跳转内部链接)',
`link_params` '跳转链接参数(跳转内部链接)',
`redirect_appid` '外链小程序appid跳转小程序',
`redirect_url` '外链小程序url跳转小程序',
`video_no` '视频号(导向视频号、导向视频号直播间)',
`feed_id` '视频号feedId导向视频号',
*/
let { type } = data;
if (type === 0) {
return;
}
jupmFun(type, data);
// if (jumpType === 0) {
// let { type } = data;
// if (type === 0) {
// return;
// }
// jupmFun(type, data);
// } else if (jumpType === 1) {
// let { messageType } = data;
// if (messageType === 0) {
// return;
// }
// jupmFun(messageType, data);
// }
};
const jupmFun = (type, data) => {
try {
switch (type) {
case 1: // 跳转内部链接
let tabbar = [
"/pages/index/index",
"/pages/activity/activity",
"/pages/detect/detect",
"/pages/shop/shop",
"/pages/user/user",
];
if (tabbar.includes(data.link)) {
// tabbar页不能带参数
Taro.setStorageSync(data.link + "-jupm-params", data.linkParams);
Taro.switchTab({
url: data.link,
});
} else {
if (data.linkParams) {
Taro.navigateTo({
url: data.link + "?" + data.linkParams,
});
} else {
Taro.navigateTo({
url: data.link,
});
}
}
break;
case 3: // 跳转外部链接
if (data.linkParams) {
Taro.navigateTo({
url:
"/pages/webViewPage/webViewPage?url=" +
data.link +
"?" +
data.linkParams,
});
} else {
Taro.navigateTo({
url: "/pages/webViewPage/webViewPage?url=" + data.link,
});
}
break;
case 4: // 跳转小程序
Taro.navigateToMiniProgram({
appId: data.redirectAppid,
path: data.redirectUrl,
success: (res) => {
// 打开成功
console.log("跳转小程序success", res);
},
fail: (res) => {
console.log("跳转小程序fail", res);
msg("跳转失败:" + res.errMsg);
},
});
break;
case 5: // 跳转视频号
Taro.openChannelsActivity({
finderUserName: data.videoNo,
// feedId: data.feedId,
success: (res) => {
// 打开成功
console.log("跳转视频号success", res);
},
fail: (res) => {
console.log("跳转视频号fail", res);
msg("跳转失败:" + res.errMsg);
},
});
break;
case 6: // 跳转视频号直播间
Taro.getChannelsLiveInfo({
finderUserName: data.videoNo,
success: (res) => {
// 打开成功
console.log("获取直播间信息success", res);
if (res.status === 3) {
Taro.showToast({
title: "直播已结束",
mask: true,
icon: icon || "none",
duration: 2000,
});
return;
}
Taro.openChannelsLive({
finderUserName: data.videoNo,
feedId: res.feedId,
success: (res) => {
// 打开成功
console.log("打开直播间success", res);
},
fail: (res) => {
console.log("打开直播间fail", res);
},
});
},
fail: (res) => {
console.log("获取直播间信息fail", res);
},
});
break;
}
} catch (error) {
console.log("error", error);
}
};
export const loading = (title) => {
Taro.showToast({
title,
mask: true,
icon: "loading",
});
};
// 加载中显示隐藏搭配使用不能和toast一起用
export const showLoading = (title) => {
Taro.showLoading({
title,
mask: true,
});
};
export const hideLoading = (title) => {
Taro.hideLoading();
};
export const showModal = (data) => {
const {
t1 = "提示",
t2 = "",
btn1show = true,
btn1text = "取消",
btn2text = "确定",
inputshow = false,
inputtext = "请输入",
} = data;
return new Promise((reslove, reject) => {
Taro.showModal({
title: t1,
content: t2,
showCancel: btn1show,
cancelText: btn1text,
confirmText: btn2text,
editable: inputshow,
placeholderText: inputtext,
success(res) {
if (res.confirm || res.content) {
reslove(res);
} else {
reject(res);
}
},
});
});
};
export const requestPayment = (data) => {
//拉起微信支付
return new Promise((reslove, reject) => {
Taro.requestPayment({
timeStamp: data.timeStamp,
nonceStr: data.nonceStr,
package: data.package,
signType: data.signType,
paySign: data.paySign,
success(res) {
reslove(res);
},
fail(res) {
reject(res);
},
complete() {
Taro.hideLoading();
},
});
});
};
// 存
const originSetStorageSync = Taro.setStorageSync;
export const setStorageSync = function (key, data, expires) {
// 如果没有传第三个有效期参数,就还是用原来的方法
if (!expires) return originSetStorageSync(key, data);
if (typeof expires !== "number") {
console.error("expires is not a number");
return originSetStorageSync(key, data);
}
originSetStorageSync(key, { data, expires: expires });
};
// 取
const originGetStorageSymc = Taro.getStorageSync;
export const getStorageSync = function (key) {
const data = originGetStorageSymc(key);
// 如果data不是个对象就说明是没加有效期的直接返回
if (typeof data !== "object" || (typeof data === "object" && !data.expires)) {
return data;
}
const now = new Date().getTime();
// console.log(key, data);
//
// console.log("now", now, dayjs(now).format("YYYY-MM-DD hh:mm:ss"));
// console.log(
// "expires",
// data.expires,
// dayjs(data.expires).format("YYYY-MM-DD hh:mm:ss")
// );
// console.log("now < data.expires", now < data.expires);
if (now < data.expires) {
//用当前时间和存储的时间对比
return data.data; // 未过期返回data
} else {
// 已过期,移除缓存,返回空
Taro.removeStorageSync(key);
return "";
}
};