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