feat: 我的页微信一键登录就地完成(不跳登录页),H5 端走登录页入口——v1.2.0 未提审沿用同版本号

This commit is contained in:
2026-09-13 12:20:12 +08:00
parent 47d3ea8bfa
commit 15ab3f0b63
2 changed files with 56 additions and 2 deletions
+1
View File
@@ -3,6 +3,7 @@
## v1.2.0(2026-09-13)星图点亮体系重构
- **登录修复**:微信一键登录恢复(Docker 迁移环境变量补齐 + 容器网络修复);趋势页筛选按钮单行紧凑化、产品图标修复
- **我的页就地登录**:小程序端"微信一键登录"点击直接登录(首次协议确认一次),不再跳登录页;登录页保留为账号登录入口(H5 端按钮改为"登录/注册")
- **详情页修复**:正文按段落渲染,71 条知识不再"暂无内容"
- **读后检测**:AI 批量生成 36 道检测题,服务端判题,答对点亮星球(点亮进度/streak 入档案)
+55 -2
View File
@@ -124,9 +124,18 @@
<!-- 登录/退出 -->
<view class="action-row" v-if="!userStore.isLoggedIn">
<view class="action-btn primary" @click="goLogin">
<text>微信一键登录</text>
<!-- 小程序:就地微信一键登录,不跳登录页 -->
<!-- #ifdef MP-WEIXIN -->
<view class="action-btn primary" :class="{ disabled: loginLoading }" @click="wechatLogin">
<text>{{ loginLoading ? '登录中...' : '微信一键登录' }}</text>
</view>
<!-- #endif -->
<!-- H5:登录页是正常入口(邮箱/用户名登录) -->
<!-- #ifdef H5 -->
<view class="action-btn primary" @click="goLogin">
<text>登录 / 注册</text>
</view>
<!-- #endif -->
<view class="action-btn ghost" @click="goBrowse">
<text>暂不登录,先体验</text>
</view>
@@ -160,6 +169,7 @@ const collectedCount = ref(0)
const stats = ref(null)
const byDim = ref({})
const quotaInfo = ref(null)
const loginLoading = ref(false)
const versionText = VERSION
@@ -258,6 +268,49 @@ async function handleLogout() {
}
function goLogin() { uni.navigateTo({ url: '/pages/login/login' }) }
// 小程序端:我的页就地微信一键登录(登录页保留为账号登录入口)
// #ifdef MP-WEIXIN
async function wechatLogin() {
if (loginLoading.value) return
const agreed = uni.getStorageSync('wx_login_agreed')
if (!agreed) {
uni.showModal({
title: '用户协议',
content: '登录即表示同意《用户协议》与《隐私政策》',
confirmText: '同意并登录',
cancelText: '取消',
success: (res) => {
if (res.confirm) {
uni.setStorageSync('wx_login_agreed', '1')
doWechatLogin()
}
}
})
return
}
doWechatLogin()
}
async function doWechatLogin() {
loginLoading.value = true
try {
const loginRes = await new Promise((resolve, reject) => {
uni.login({ success: resolve, fail: reject })
})
if (!loginRes.code) throw new Error('no code')
await userStore.login(loginRes.code, {})
uni.showToast({ title: '登录成功', icon: 'success' })
// 登录后原地刷新档案数据,无需跳页
await userStore.fetchMe()
await Promise.all([loadStats(), loadCollected(), loadQuota()])
} catch (e) {
uni.showToast({ title: '登录失败,请重试', icon: 'none' })
} finally {
loginLoading.value = false
}
}
// #endif
function goBrowse() { uni.switchTab({ url: '/pages/index/index' }) }
function goChat() { uni.switchTab({ url: '/pages/chat/chat' }) }
function goFavorites() { uni.navigateTo({ url: '/pages/favorites/favorites' }) }