<!-- 第三方url --> <template> <div> <web-view :src="link" @message="getMessage" @error="handleError" @load="handleLoad" ></web-view> </div> </template> <script> let forUrlAddKey = require("mayi-front-tools/forUrlAddKey").default; let getUrlKey = require("mayi-front-tools/getUrlKey").default; let removeUrlKey = require("mayi-front-tools/removeUrlKey").default; import { serialize, getQueryVariable, DFSImg } from "@/utils/index"; import login from "@/api/login"; import indexApi from "@/api/index"; export default { data() { return { link: "", shareShopName: "", //分享名称 shareLogoUrl: "", //分享图片url newWindowHref: "", //分享页面url }; }, async onLoad(options) { console.log(options, "第三方页面"); /** * scene=sso 第三方需要登录的页面 * login=1 jwt需要登录(临时方案) */ if (options.scene) { //扫码 let data = await this.getParams(options.scene); if (data.sso) { let link = data.link; if(getUrlKey(decodeURIComponent(link), "getMixId") == '1') {//第三方跳转加mixid link = forUrlAddKey(decodeURIComponent(link),{mixid: this.$store.state.mixid}) } if (!wx.getStorageSync("sessionid")) { wx.redirectTo({ url: `../login/main?scene=sso&back=${link}`, }); } else { this.getSsoBcakUrl(decodeURIComponent(link)); } } } else if (options.link) { let link = options.link; if(getUrlKey(decodeURIComponent(link), "getMixId") == '1') {//第三方跳转加mixid link = forUrlAddKey(decodeURIComponent(link),{mixid: this.$store.state.mixid}) } if (getUrlKey(decodeURIComponent(link), "scene") == "sso") { if (!wx.getStorageSync("sessionid")) { wx.redirectTo({ url: `../login/main?scene=sso&back=${link}`, }); } else { this.getSsoBcakUrl(decodeURIComponent(link)); } } else if (getUrlKey(decodeURIComponent(link), "login") != "1") { this.setLink(decodeURIComponent(link)); } else { if (wx.getStorageSync("sessionid")) { this.setLink( forUrlAddKey(decodeURIComponent(link), { token: wx.getStorageSync("sessionid"), jwt: 1, }) ); } else { let url = `/pages/login/main?scene=sso&back=${link}`; wx.navigateTo({ url, }); } } } }, async onShareAppMessage(res) { let url = ""; console.log(this.newWindowHref + "this.newWindowHref"); //分享路径 if (this.newWindowHref) { url = this.newWindowHref; } else { url = res.webViewUrl; } url = removeUrlKey(url, ["token"]); //分享页面去掉登录态 if (url.indexOf("sessionid") > -1) { url = url.split("?")[0] + "?mixid=" + this.shopId; }else if(url.indexOf('getMixId') > -1) {//分享链接需要带mixid url = forUrlAddKey(url,{mixid: this.shopId}) } this.shareUrl = url; console.log(this.shareUrl, "index12"); console.log( `/pages/index/main?link=${encodeURIComponent(this.shareUrl)}`, "测试直播分享相关" ); return { title: this.shareShopName, // 默认是小程序的名称 path: `/pages/wxArticle/main?link=${encodeURIComponent(this.shareUrl)}`, // 默认是当前页面 imageUrl: this.shareLogoUrl, success: function (res) { // 转发成功之后的回调 if (res.errMsg == "shareAppMessage:ok") { console.log(res, "分享成功"); } }, fail: function () { // 转发失败之后的回调 if (res.errMsg == "shareAppMessage:fail cancel") { // 用户取消转发 console.log(res, "分享失败"); } else if (res.errMsg == "shareAppMessage:fail") { // 转发失败,其中 detail message 为详细失败信息 } }, complete: function () { // 转发结束之后的回调(转发成不成功都会执行) }, }; }, methods: { setLink(data) { this.link = data; console.log(this.link,89999999) }, getSsoBcakUrl(link) { let op = { callbackUrl: link, email: "", fromAppid: "VsEOuDJqBnGNyXZJWCQS", // mobilephone: '15821335747',hgFTLLhgnBmeOyCkcbyv // toAppid: 'hgFTLLhgnBmeOyCkcbyv', toAppid: getUrlKey(link, "toAppid"), //道可 wxAvatarUrl: this.$store.state.userInfo.avatarUrl, }; login.getSsoBcakUrl(op).then((res) => { if (res.data.code == "200") { this.setLink(res.data.data); } else { wx.showToast({ title: res.data.msg, icon: "none" }); } }); }, getParams(options) { return new Promise((resolve, reject) => { indexApi .getShareSceneRecord(options) .then((res) => { if (res.data.code == "200") { let scene = JSON.parse(res.data.data.scene); resolve(scene); } }) .catch((err) => {}); }); }, //加载成功 handleLoad() { console.log("网页加载成功"); }, //右上角分享时触发 getMessage(res) { let len = res.target.data.length - 1; console.log(res, "h5消息", res.target.data[len]); this.shareShopName = res.target.data[len].shareShopName || ""; if (res.target.data[len].shareLogoUrl) { this.shareLogoUrl = DFSImg(res.target.data[len].shareLogoUrl, 500, 400); } this.newWindowHref = res.target.data[len].shareImgUrl; // + '&fromVisitorOpenId=' + wx.getStorageSync("openid") console.log( "分享信息:", this.shareLogoUrl, this.shareShopName, 1111111, res ); }, handleError(data) { wx.showLoading({ title: "网页加载失败 请右上角刷新", }); }, }, }; </script>