From b56f68636cfdbdb95ddf61ead7170f56e5ccbbd4 Mon Sep 17 00:00:00 2001 From: sexygoat <1538832180@qq.com> Date: Thu, 16 Apr 2026 17:11:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=99=BB=E5=BD=95=E6=89=AB=E4=B8=80?= =?UTF-8?q?=E6=89=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/login/login.vue | 75 +++++++++++++++++++++++++++++++++++++++++- static/scan-code.png | Bin 0 -> 2989 bytes 2 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 static/scan-code.png diff --git a/pages/login/login.vue b/pages/login/login.vue index bf7b4e7..d498ec4 100644 --- a/pages/login/login.vue +++ b/pages/login/login.vue @@ -42,7 +42,12 @@ - 登录 + 立即登录 + + + @@ -72,6 +77,8 @@ if (token) { uni.reLaunch({ url: '/pages/index/index' }); } + handleWechatCallback(); + getPathDeviceId(); }); const identifier = ref(''); @@ -118,6 +125,46 @@ doLogin(); }; + const handleScanLogin = () => { + // #ifdef H5 + if (typeof wx === 'undefined' || !wx.scanQRCode) { + uni.showToast({ title: '请在微信中打开', icon: 'none' }); + return; + } + wx.scanQRCode({ + needResult: 1, + scanType: ['qrCode', 'barCode'], + success: (res) => { + const result = res.resultStr; + if (result && result.includes('device_id')) { + const match = result.match(/device_id[=]([^&]*)/); + if (match && match[1]) { + identifier.value = match[1]; + handleLogin(); + } + } else { + uni.showToast({ title: '无效的二维码', icon: 'none' }); + } + }, + fail: () => { + uni.showToast({ title: '扫码失败', icon: 'none' }); + } + }); + // #endif + // #ifndef H5 + uni.showToast({ title: '请在微信中打开', icon: 'none' }); + // #endif + }; + + const getPathDeviceId = () => { + const params = new URLSearchParams(window.location.search); + const deviceId = params.get('device_id'); + if (deviceId) { + identifier.value = deviceId; + handleLogin(); + } + }; + const doLogin = async () => { loading.value = true; try { @@ -341,6 +388,32 @@ box-shadow: 0 2rpx 8rpx rgba(10, 132, 255, 0.2); } + .btn-scan { + width: 100%; + height: 88rpx; + background: var(--bg-primary); + border: 2rpx solid var(--primary); + border-radius: var(--radius-medium); + font-size: 30rpx; + font-weight: 500; + color: var(--primary); + display: flex; + align-items: center; + justify-content: center; + gap: 12rpx; + margin-top: 24rpx; + transition: all 0.3s ease; + } + + .btn-scan:active { + background: rgba(10, 132, 255, 0.05); + } + + .scan-icon { + width: 40rpx; + height: 40rpx; + } + .loading { display: flex; align-items: center; diff --git a/static/scan-code.png b/static/scan-code.png new file mode 100644 index 0000000000000000000000000000000000000000..5d818245a76a0a90602ef1ae98d1e80fcc526076 GIT binary patch literal 2989 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 Y12s)s!?K;eTtY@rR>$nfY%^c@e@b94`Tzg` literal 0 HcmV?d00001