|
|
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 "";
|
|
|
}
|
|
|
};
|