更新
This commit is contained in:
1 parent
012f8edf8b
commit
36ff960fbd
33 files changed
+1644
-344
No files matched your search
@@ -64,6 +64,12 @@
|
||||
<FaIcon name="chevron-right" color="#94a3b8" :size="12" />
|
||||
<view class="alt-line" />
|
||||
</view>
|
||||
|
||||
<!-- 返回门户:不登录也能先用免登录功能 -->
|
||||
<view class="back-portal" @tap="goPortal">
|
||||
<FaIcon name="chevron-left" color="#94a3b8" :size="12" />
|
||||
<text class="back-portal-text">返回门户,先使用免登录功能</text>
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<!-- ============ 账号密码登录(独立视图) ============ -->
|
||||
@@ -133,6 +139,12 @@
|
||||
<view class="back-row">
|
||||
<text class="tip-text">没有账号?请联系企业管理员开通</text>
|
||||
</view>
|
||||
|
||||
<!-- 返回门户:不登录也能先用免登录功能 -->
|
||||
<view class="back-portal" @tap="goPortal">
|
||||
<FaIcon name="chevron-left" color="#94a3b8" :size="12" />
|
||||
<text class="back-portal-text">返回门户,先使用免登录功能</text>
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<!-- ============ 选择企业(一人多企业) ============ -->
|
||||
@@ -221,6 +233,8 @@ import {
|
||||
getToken
|
||||
} from '@/utils/auth.js'
|
||||
import { showGeetest4 } from '@/utils/geetest.js'
|
||||
import { getGuestToken, clearGuestToken } from '@/utils/guest.js'
|
||||
import { guestMerge } from '@/api/guest.js'
|
||||
import FaIcon from '@/components/FaIcon.vue'
|
||||
|
||||
/** 运行端检测:h5 / apk(app-plus) / mp-weixin,决定登录方式优先级 */
|
||||
@@ -286,10 +300,10 @@ const brandPadTop = computed(() => {
|
||||
return `${statusBarHeight.value + uni.upx2px(88)}px`
|
||||
})
|
||||
|
||||
/** 是否存在可返回的上级视图(账号密码视图仅在小程序端可退回主视图) */
|
||||
/** 是否显示可返回的上级箭头(账号视图无论能否退回主视图都可见:退不了就回门户) */
|
||||
const canGoBack = computed(() => {
|
||||
if (step.value === 'tenant') return true
|
||||
if (step.value === 'account') return showMiniLogin.value
|
||||
if (step.value === 'account') return true
|
||||
return false
|
||||
})
|
||||
|
||||
@@ -308,13 +322,30 @@ function goMain() {
|
||||
errorMsg.value = ''
|
||||
}
|
||||
|
||||
/** 顶部导航返回 */
|
||||
/** 顶部导航返回:登录内部层级优先逐级退;无可退上级时返回门户(免登录页) */
|
||||
function onNavBack() {
|
||||
if (step.value === 'tenant') {
|
||||
backToAccount()
|
||||
return
|
||||
}
|
||||
goMain()
|
||||
if (step.value === 'account' && showMiniLogin.value) {
|
||||
goMain()
|
||||
return
|
||||
}
|
||||
// 无登录内部上级 → 返回门户,继续用免登录功能
|
||||
goPortal()
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回门户首页(nav)。
|
||||
* 多数从 nav 点「需登录」模块进来,直接 navigateBack 回上一页(保留游客宫格);
|
||||
* 若是被 401 兑回登录页等无栈场景,回落到 reLaunch nav 以游客态重载。
|
||||
*/
|
||||
function goPortal() {
|
||||
if (submitting.value) return
|
||||
const pages = (typeof getCurrentPages === 'function' && getCurrentPages()) || []
|
||||
if (pages.length > 1) uni.navigateBack()
|
||||
else uni.reLaunch({ url: '/pages/nav/nav' })
|
||||
}
|
||||
|
||||
onMounted(async () => {
|
||||
@@ -508,6 +539,17 @@ async function finishLogin(tokens, tenantList, tid, fallbackAccount = '') {
|
||||
// 微信端:登录成功后静默绑定 openid,认证中/无手机号能力时一键登录靠它认人
|
||||
await silentBindMiniapp()
|
||||
|
||||
// 游客数据转正:持游客令牌(手机号授权)时静默并入账号;
|
||||
// 失败不阻断跳转(令牌保留,下次登录自动重试;令牌失效则由 401 自动清理)
|
||||
if (getGuestToken()) {
|
||||
try {
|
||||
await guestMerge()
|
||||
clearGuestToken()
|
||||
} catch (e) {
|
||||
console.warn('[login] guest merge failed:', e)
|
||||
}
|
||||
}
|
||||
|
||||
uni.hideLoading()
|
||||
uni.showToast({ title: '登录成功', icon: 'success' })
|
||||
setTimeout(() => {
|
||||
@@ -1082,6 +1124,25 @@ function goForget() {
|
||||
margin-top: 32rpx;
|
||||
}
|
||||
|
||||
/* 返回门户:不登录也能先浏览免登录模块 */
|
||||
.back-portal {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 6rpx;
|
||||
margin-top: 28rpx;
|
||||
padding: 8rpx 0;
|
||||
}
|
||||
|
||||
.back-portal:active {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.back-portal-text {
|
||||
font-size: 24rpx;
|
||||
color: $color-text-muted;
|
||||
}
|
||||
|
||||
.link {
|
||||
font-size: 26rpx;
|
||||
color: $color-primary;
|
||||
|
||||
Reference in new issue
Block a user