import api from "@/api/index.js"; const tabBarList = [ "/pages/index/index", "/pages/cat/cat", "/pages/shoppingCart/index", "/pages/my/my", ]; function isInWeChatBrowser() { let isWeChat = false; /* #ifdef H5 */ let ua = window.navigator.userAgent.toLowerCase(); if (ua.includes("micromessenger")) { return true } else { // api.common.wechatH5().then((res) => { // const appid = res.data.appid // let redirect_uri = window.location.href; // redirect_uri = encodeURIComponent(redirect_uri); // // 构建微信授权链接,包含应用的appid、重定向地址等参数 // const wxAuthUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`; // // 通过重定向将用户导向微信授权页面 // window.location.href = wxAuthUrl; // }) } /* #endif */ return isWeChat; } function isInAliBrowser() { let isAli = false; /* #ifdef H5 */ let ua = window.navigator.userAgent.toLowerCase(); if (ua.indexOf('alipayclient') > -1 || ua.indexOf('aliapp') > -1) { return true } else { // api.common.wechatH5().then((res) => { // const appid = res.data.appid // let redirect_uri = window.location.href; // redirect_uri = encodeURIComponent(redirect_uri); // // 构建微信授权链接,包含应用的appid、重定向地址等参数 // const wxAuthUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`; // // 通过重定向将用户导向微信授权页面 // window.location.href = wxAuthUrl; // }) } /* #endif */ return isAli; } export default { isInWeChatBrowser, isInAliBrowser, // 跳转页面 toUrl(url, type) { if (tabBarList.some(item => { return url.includes(item) })) { uni.switchTab({ url: url, }); return; } if (type == "redirectTo") { uni.redirectTo({ url, }); } else if (type == "reLaunch") { uni.reLaunch({ url, }); } else { uni.navigateTo({ url, }); } }, // 后退页面 backTo(num = 1) { const current = getCurrentPages(); if (current.length <= 1) { this.toUrl("/pages/home/home"); } else { uni.navigateBack({ delta: num, }); } }, /** * @des 复制 */ copy(data, toast = "内容已复制") { uni.setClipboardData({ data, success: () => { uni.$u.toast(toast); }, }); }, getRouterInfo() { let routes = getCurrentPages(); // 获取当前打开过的页面路由数组 let curRoute = routes[routes.length - 1].route // 获取当前页面路由,也就是最后一个打开的页面路由 let curParam = routes[routes.length - 1].options; //获取路由参数 const params = Object.entries(curParam).reduce((param, [key, val], index) => { if (index === 0) { return param + key + '=' + val } return param += '&' + key + '=' + val }, "?") return [curRoute, params] }, loginOut() { // 获取当前路由信息 const [curRoute, curRouteParam] = this.getRouterInfo(); // 如果当前路由不包含 'login/login' if (!("/" + curRoute + curRouteParam).includes('login/login')) { // 如果当前路由参数不为 "?" if (curRouteParam != "?") { // 将当前页面信息存储到本地缓存中 uni.setStorageSync("backPage", "/" + curRoute + curRouteParam); } else { // 将当前页面信息存储到本地缓存中 uni.setStorageSync("backPage", "/" + curRoute); } } // 移除本地缓存中的 token 和 user_info uni.removeStorageSync("token"); uni.removeStorageSync("user_info"); // 如果当前路由不包含 'login/login' if (!curRoute.includes('login/login')) { // 跳转到登录页面 this.toUrl("/subPackages/login/login/index", "redirectTo"); } }, kmUnit(m) { var v; if (typeof m === 'number' && !isNaN(m)) { if (m >= 1000) { v = (m / 1000).toFixed(2) + ' km' } else { v = m.toFixed(2) + ' m' } } else { v = '0 m' } return v; }, objectToQueryString(obj) { var params = ''; for (var key in obj) { if (obj.hasOwnProperty(key)) { if (params !== '') { params += '&'; } params += encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]); } } return '?' + params; }, oneValues(url) { var name, value; var str = url; //取得整个地址栏 var num = str.indexOf("?"); str = str.substr(num + 1); //取得所有参数 stringvar.substr(start [, length ] let obj = {}; var arr = str.split("&"); //各个参数放到数组里 for (var i = 0; i < arr.length; i++) { num = arr[i].indexOf("="); if (num > 0) { name = arr[i].substring(0, num); value = arr[i].substr(num + 1); obj[name] = value; } } return obj; }, httpToHttps(url) { return url.replace(/^http:\/\//i, 'https://'); }, };