Merge branch 'yueyixin'

This commit is contained in:
2026-05-22 10:36:32 +08:00
commit f7e4e408b0
5 changed files with 59 additions and 18 deletions

View File

@ -11,4 +11,4 @@ VITE_REQUEST_TIMEOUT = 10000
VITE_DEBUG = true VITE_DEBUG = true
# 交易mqtt # 交易mqtt
VITE_MQTT_TRANSACTION_HOST=ws://43.198.76.61:8083/mqtt VITE_MQTT_TRANSACTION_HOST=wss://43.198.76.61:8084/mqtt

View File

@ -11,4 +11,4 @@ VITE_REQUEST_TIMEOUT = 10000
VITE_DEBUG = false VITE_DEBUG = false
# 交易mqtt # 交易mqtt
VITE_MQTT_TRANSACTION_HOST=ws://43.198.76.61:8083/mqtt VITE_MQTT_TRANSACTION_HOST=wss://43.198.76.61:8084/mqtt

View File

@ -102,7 +102,7 @@ let dynamicRoutesReady = false
router.beforeEach(async (to, _from) => { router.beforeEach(async (to, _from) => {
const userStore = useUserStore() const userStore = useUserStore()
const isLoggedIn = !!userStore.token const isLoggedIn = !!userStore.token
const isRealNameVerified = userStore.userInfo?.real_check === 3 const isRealNameVerified = userStore.userInfo?.real_check !== 1
console.log('dynamicRoutesReady', userStore.userInfo) console.log('dynamicRoutesReady', userStore.userInfo)
console.log('isLoggedIn', isLoggedIn) console.log('isLoggedIn', isLoggedIn)
@ -129,27 +129,40 @@ router.beforeEach(async (to, _from) => {
} }
} }
// 3. 已登录但未完成实名认证 → 跳转到实名认证页面 // 3. 白名单页面(实名认证、活体认证、登录/注册相关页面)
// 白名单:实名认证页面、活体认证页面、登录/注册页 // 这些页面即使未实名认证也可以访问
const authPages = ['/realName', '/livenessVerification', '/user/login', '/user/register', '/user/forgot-password'] const whiteList = [
const isAuthPage = authPages.some(path => to.path.startsWith(path)) '/realName',
'/livenessVerification',
if (isLoggedIn && !isRealNameVerified && !isAuthPage) { '/user/login',
// 已登录但未认证,访问非认证页面时重定向到实名认证 '/user/register',
return '/realName' '/user/forgot-password',
]
const isWhiteListPage = whiteList.some((path) => to.path === path)
// 4. 已登录但未完成实名认证 → 只能访问白名单页面
if (isLoggedIn && !isRealNameVerified && !isWhiteListPage) {
// 未实名认证访问非白名单页面 → 跳转到登录页
return '/user/login'
} }
// 4. 已登录访问登录/注册页 → 首页(如果已认证)或实名认证页(如果未认证) // 5. 已登录访问登录页(从认证页面退出)→ 允许
if (isLoggedIn && !isRealNameVerified && to.path === '/user/login') {
// 未认证用户主动跳转到登录页(用于退出登录),允许放行
return true
}
// 6. 已登录访问登录/注册页 → 首页(如果已认证)或实名认证页(如果未认证)
if (isLoggedIn && to.meta.isAuthPage) { if (isLoggedIn && to.meta.isAuthPage) {
return isRealNameVerified ? '/' : '/realName' return isRealNameVerified ? '/' : '/realName'
} }
// 5. 已完成认证的用户访问实名认证或活体认证页 → 首页 // 7. 已完成认证的用户访问实名认证或活体认证页 → 首页
if (isLoggedIn && isRealNameVerified && (to.path === '/realName' || to.path === '/livenessVerification')) { if (isLoggedIn && isRealNameVerified && isWhiteListPage && (to.path === '/realName' || to.path === '/livenessVerification')) {
return '/' return '/'
} }
// 6. 其他情况正常放行 // 8. 其他情况正常放行
return true return true
}) })

View File

@ -214,5 +214,6 @@ export const useUserStore = defineStore('user', () => {
sendCode, sendCode,
switchAccount, switchAccount,
updateUserInfo, updateUserInfo,
clearUserInfo,
} }
}) })

View File

@ -218,6 +218,7 @@ import {
Close, Close,
} from '@element-plus/icons-vue' } from '@element-plus/icons-vue'
import { uploadCard } from '@/api/modules/livenessVerification' import { uploadCard } from '@/api/modules/livenessVerification'
import { useUserStore } from '@/stores/modules/user'
/* ==================== 类型定义 ==================== */ /* ==================== 类型定义 ==================== */
@ -529,6 +530,11 @@ const handleSubmit = async (): Promise<void> => {
/** 返回上一页 */ /** 返回上一页 */
const goBack = (): void => { const goBack = (): void => {
const userStore = useUserStore()
// real_check === 1 real_check !== 1
const isRealNameVerified = userStore.userInfo?.real_check !== 1
console.log('real_check value:', userStore.userInfo?.real_check, 'isRealNameVerified:', isRealNameVerified)
if (form.frontImage || form.backImage) { if (form.frontImage || form.backImage) {
ElMessageBox.confirm('退出将丢失已上传的照片,是否继续?', '提示', { ElMessageBox.confirm('退出将丢失已上传的照片,是否继续?', '提示', {
confirmButtonText: '退出', confirmButtonText: '退出',
@ -539,11 +545,28 @@ const goBack = (): void => {
// URL // URL
if (form.frontPreview) URL.revokeObjectURL(form.frontPreview) if (form.frontPreview) URL.revokeObjectURL(form.frontPreview)
if (form.backPreview) URL.revokeObjectURL(form.backPreview) if (form.backPreview) URL.revokeObjectURL(form.backPreview)
router.back()
if (isRealNameVerified) {
console.log('已认证用户可以返回上一页')
//
router.back()
} else {
//
console.log('未实名验证只能去登录页')
router.push('/user/login')
}
}) })
.catch(() => {}) .catch(() => { })
} else { } else {
router.back() if (isRealNameVerified) {
console.log('已认证用户可以返回上一页')
//
router.back()
} else {
//
console.log('未实名验证只能去登录页')
router.push('/user/login')
}
} }
} }
</script> </script>
@ -646,6 +669,7 @@ const goBack = (): void => {
background: var(--el-color-primary); background: var(--el-color-primary);
color: #fff; color: #fff;
} }
span { span {
color: var(--el-color-primary); color: var(--el-color-primary);
font-weight: 500; font-weight: 500;
@ -823,11 +847,13 @@ const goBack = (): void => {
} }
@keyframes pulse { @keyframes pulse {
0%, 0%,
100% { 100% {
transform: scale(1); transform: scale(1);
opacity: 1; opacity: 1;
} }
50% { 50% {
transform: scale(1.1); transform: scale(1.1);
opacity: 0.6; opacity: 0.6;
@ -997,6 +1023,7 @@ const goBack = (): void => {
from { from {
transform: rotate(0deg); transform: rotate(0deg);
} }
to { to {
transform: rotate(360deg); transform: rotate(360deg);
} }