From 863b5f27a3c9c89551b67569fd4e74e3ea8fb8e2 Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期五, 14 三月 2025 16:24:01 +0800 Subject: [PATCH] openWechatLogin --- src/layout/component/login/Login.vue | 61 ++++++++++++++++++++++++++++-- 1 files changed, 56 insertions(+), 5 deletions(-) diff --git a/src/layout/component/login/Login.vue b/src/layout/component/login/Login.vue index 1211701..158ca09 100644 --- a/src/layout/component/login/Login.vue +++ b/src/layout/component/login/Login.vue @@ -5,7 +5,7 @@ <div class="sign_in"> <i class="ywifont ywicon-guanbi closes" @click="handleClose"></i> <h1><span>鐧诲綍 WI 姘村姟鏅鸿兘</span></h1> - <el-tabs v-model="state.activeLoginName" class="mt-[24px]" @tab-change="handleTabChange"> + <el-tabs v-model="state.activeLoginName" class="w-full mt-[24px]" @tab-change="handleTabChange"> <el-tab-pane label="璐︽埛瀵嗙爜鐧诲綍" name="accountUser"> <el-form ref="loginFormRef" @@ -45,11 +45,19 @@ </el-form> </el-tab-pane> <el-tab-pane label="寰俊鐧诲綍" name="wechat"> - <div id="wechat-login"></div> + <!-- <div id="wechat-login"></div> --> + <div id="wechat-login" class="flex justify-center items-center"> + <iframe + ref="wechatQrRef" + sandbox="allow-top-navigation allow-scripts" + style="width: 300px; height: 232px; overflow: hidden" + frameborder="0" + ></iframe> + </div> </el-tab-pane> </el-tabs> - <div class="mt-[24px]"> + <div class="mt-[24px]" v-if="state.activeLoginName !== 'wechat'"> <el-button type="primary" @click="onSubmit" class="set-login_btn">鐧诲綍</el-button> <!-- <el-button type="primary" @click="loginByWechat">寰俊鐧诲綍</el-button> --> @@ -78,13 +86,55 @@ const state = (new Date().getTime() / 1000).toString(); // JJJHHH 琛ㄧず锛冨彿 const url = `${SERVE_URL}JJJHHH/home?isWxLogin=Y`; + + const base64 = + 'LmltcG93ZXJCb3ggLnRpdGxlIHtkaXNwbGF5Om5vbmU7fQoKLmltcG93ZXJCb3ggLnN0YXR1cy5zdGF0dXNfYnJvd3NlciAgcDpudGgtb2YtdHlwZSgyKXsKICAgIGRpc3BsYXk6IG5vbmU7Cn0='; const obj = new window.WxLogin({ id: 'wechat-login', appid: 'wx4ea2dca37170074c', scope: 'snsapi_login', redirect_uri: encodeURIComponent(`http://apiv3.xpump.net/User/wxUserLoginCB.html?from=wi&url=${url}`), state: state, + href: `data:text/css;base64,${base64}`, }); +}; + +const wechatQrRef = ref<HTMLIFrameElement>(); + +const openWechatLogin = () => { + if (!wechatQrRef.value) return; + const url = `${SERVE_URL}JJJHHH/home?isWxLogin=Y`; + const appid = 'wx4ea2dca37170074c'; + const state = (new Date().getTime() / 1000).toString(); + const base64 = btoa(` + .impowerBox .title {display:none;} + + .impowerBox .status.status_browser p:nth-of-type(2){ + display: none; + } + + .impowerBox .qrcode { + width: 160px; + margin-top:0; + + } + .impowerBox .status{ + } + #tpl_for_iframe{ + height:100%; + overflow: hidden; + + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + } + + `); + const wechatAuthUrl = `https://open.weixin.qq.com/connect/qrconnect?appid=${appid}&redirect_uri=${encodeURIComponent( + `http://apiv3.xpump.net/User/wxUserLoginCB.html?from=wi&url=${url}` + )}&response_type=code&scope=snsapi_login&state=${state}&href=data:text/css;base64,${base64}#wechat_redirect`; + wechatQrRef.value.src = wechatAuthUrl; }; //鍒囨崲鐢ㄦ埛鐧诲綍椤甸潰 @@ -92,7 +142,8 @@ state.activeLoginName = item; switch (item) { case 'wechat': - getWechartQrCode(); + // getWechartQrCode(); + openWechatLogin(); break; case 'accountUser': break; @@ -106,7 +157,7 @@ (val) => { if (val && state.activeLoginName === 'wechat') { nextTick(() => { - getWechartQrCode(); + openWechatLogin(); }); } } -- Gitblit v1.9.3