7月29号

This commit is contained in:
lcj
2026-07-29 13:53:24 +08:00
parent ee0825c1e6
commit cdb23eea01
13 changed files with 102 additions and 55 deletions
+46 -14
View File
@@ -85,17 +85,19 @@
<!-- 入园码二维码 -->
<view class="qrcode-section" v-if="!showFaceModal && !isLeaving">
<text class="qrcode-title">入园码</text>
<view class="qrcode-box">
<image
<view>为确保信息安全,现入园核销只能使用人脸核销。</view>
<!-- <view class="qrcode-box"> -->
<!-- 为确保信息安全,现入园核销只能使用人脸核销。 -->
<!-- <image
class="qrcode-img"
:src="userInfoData?.qrCode || '/static/qr-demo.png'"
mode="aspectFit"
/>
</view>
<view class="qrcode-countdown">
/> -->
<!-- </view> -->
<!-- <view class="qrcode-countdown">
<view class="countdown-icon" />
<text class="countdown-text">{{ countdown }}秒后自动刷新</text>
</view>
</view> -->
</view>
<!-- 持卡人信息(页面底部) -->
@@ -152,8 +154,8 @@
<!-- 人脸绑定提醒弹窗 -->
<ConfirmModal
v-model="showFaceModal"
title="系统安全升级提醒"
:content="'为保障您的旅游卡信息安全、规范入园使用,平台已启动人脸核验升级。\n根据规则要求,使用旅游卡前需完成人脸绑定,核验仅用于身份核实,人脸信息严格保密,不会挪作他用。\n请立即完成人脸绑定,方可继续使用全部功能。'"
:title="faceModalTitle"
:content="faceModalContent"
confirmText="前往人脸绑定"
@confirm="onFaceModalConfirm"
/>
@@ -167,15 +169,18 @@ import { useUserStore } from '../../store/user'
import { getUserCardList, getQrAndUserInfo } from '../../api/card'
import type { UserCardListItem, QrAndUserInfoResult } from '../../api/types'
import ConfirmModal from '../../components/confirm-modal.vue'
import { post } from '../../api/request'
const userStore = useUserStore()
const notLoggedIn = ref(false)
const loading = ref(false)
const loading = ref(true)
const loaded = ref(false)
const userCards = ref<UserCardListItem[]>([])
const userInfoData = ref<QrAndUserInfoResult | null>(null)
const showFaceModal = ref(false)
const faceModalTitle = ref('系统安全升级提醒')
const faceModalContent = ref('为保障您的旅游卡信息安全、规范入园使用,平台已启动人脸核验升级。\n根据规则要求,使用旅游卡前需完成人脸绑定,核验仅用于身份核实,人脸信息严格保密,不会挪作他用。\n请立即完成人脸绑定,方可继续使用全部功能。')
const isLeaving = ref(false)
const hasCard = computed(() => userCards.value.length > 0)
@@ -189,6 +194,7 @@ async function fetchCards() {
const mobile = uni.getStorageSync('phone') as string
if (!mobile) {
loaded.value = true
loading.value = false
return
}
loading.value = true
@@ -199,6 +205,8 @@ async function fetchCards() {
const firstCard = userCards.value[0]
if (firstCard?.needFaceImgFlag) {
faceModalTitle.value = '系统安全升级提醒'
faceModalContent.value = '为保障您的旅游卡信息安全、规范入园使用,平台已启动人脸核验升级。\n根据规则要求,使用旅游卡前需完成人脸绑定,核验仅用于身份核实,人脸信息严格保密,不会挪作他用。\n请立即完成人脸绑定,方可继续使用全部功能。'
showFaceModal.value = true
}
@@ -226,6 +234,8 @@ async function refreshNeedFace() {
if (current) {
fetchUserInfo(current)
if (current.needFaceImgFlag) {
faceModalTitle.value = '系统安全升级提醒'
faceModalContent.value = '为保障您的旅游卡信息安全、规范入园使用,平台已启动人脸核验升级。\n根据规则要求,使用旅游卡前需完成人脸绑定,核验仅用于身份核实,人脸信息严格保密,不会挪作他用。\n请立即完成人脸绑定,方可继续使用全部功能。'
showFaceModal.value = true
}
}
@@ -259,6 +269,8 @@ function onCardChange(e: any) {
if (card) {
fetchUserInfo(card)
if (card.needFaceImgFlag) {
faceModalTitle.value = '系统安全升级提醒'
faceModalContent.value = '为保障您的旅游卡信息安全、规范入园使用,平台已启动人脸核验升级。\n根据规则要求,使用旅游卡前需完成人脸绑定,核验仅用于身份核实,人脸信息严格保密,不会挪作他用。\n请立即完成人脸绑定,方可继续使用全部功能。'
showFaceModal.value = true
}
}
@@ -344,17 +356,37 @@ function onFeatureClick(item: { label: string }) {
return
}
if (item.label === '我要预约') {
const url = currentCard.value?.thirdId
? `/packages/content/pages/scenic-list?cardModelId=${currentCard.value.thirdId}`
: '/packages/content/pages/scenic-list'
uni.navigateTo({ url })
const card = currentCard.value
if (!card) {
uni.showToast({ title: '请先选择一张旅游卡', icon: 'none' })
return
}
post<any>('/mp-api/mpCard/checkFaceBind', { cardModelId: card.cardModelId, cardNumber: card.cardNo })
.then((res) => {
if (res?.needBindFace) {
faceModalTitle.value = '系统安全升级提醒'
faceModalContent.value = '为保障您的旅游卡信息安全、规范入园使用,平台已启动人脸核验升级。\n根据规则要求,使用旅游卡前需完成人脸绑定,核验仅用于身份核实,人脸信息严格保密,不会挪作他用。\n请立即完成人脸绑定,方可继续使用全部功能。'
showFaceModal.value = true
} else {
const url = card.thirdId
? `/packages/content/pages/scenic-list?cardModelId=${card.thirdId}`
: '/packages/content/pages/scenic-list'
uni.navigateTo({ url })
}
})
.catch(() => {
const url = card.thirdId
? `/packages/content/pages/scenic-list?cardModelId=${card.thirdId}`
: '/packages/content/pages/scenic-list'
uni.navigateTo({ url })
})
return
}
if (item.label === '使用说明') {
uni.navigateTo({ url: '/packages/content/pages/usage-guide' })
return
}
if (item.label === '使用记录') {
if (item.label === '预约/使用记录') {
uni.navigateTo({ url: '/packages/user/pages/reserve/list' })
return
}