fix: 修复兑换中心偶尔无法打开问题

This commit is contained in:
Gsh
2025-12-24 23:36:37 +08:00
parent 96a21210b5
commit 639c683144
3 changed files with 30 additions and 18 deletions

View File

@@ -398,19 +398,25 @@ function goToActivation() {
<!-- 激活码引导页 --> <!-- 激活码引导页 -->
<div v-if="activeTab === 'activation'" class="activation-guide-container"> <div v-if="activeTab === 'activation'" class="activation-guide-container">
<div class="activation-content"> <div class="activation-content">
<div class="guide-icon">🎁</div> <div class="guide-icon">
<h3 class="guide-title">激活码兑换</h3> 🎁
<p class="guide-desc">如果您持有意心AI的会员激活码或Token兑换码<br>请点击下方按钮前往控制台进行兑换</p> </div>
<el-button <h3 class="guide-title">
type="primary" 激活码兑换
size="large" </h3>
class="redeem-jump-btn" <p class="guide-desc">
round 如果您持有意心AI的会员激活码或Token兑换码<br>请点击下方按钮前往控制台进行兑换
</p>
<el-button
type="primary"
size="large"
class="redeem-jump-btn"
round
@click="goToActivation" @click="goToActivation"
> >
前往兑换中心 前往兑换中心
</el-button> </el-button>
<div class="guide-tips"> <div class="guide-tips">
<p>💡 兑换成功后权益将立即生效</p> <p>💡 兑换成功后权益将立即生效</p>
</div> </div>
@@ -864,31 +870,31 @@ function goToActivation() {
min-height: 400px; min-height: 400px;
background: linear-gradient(to bottom, #fff, #fdfdfd); background: linear-gradient(to bottom, #fff, #fdfdfd);
border-radius: 8px; border-radius: 8px;
.activation-content { .activation-content {
text-align: center; text-align: center;
max-width: 400px; max-width: 400px;
.guide-icon { .guide-icon {
font-size: 64px; font-size: 64px;
margin-bottom: 24px; margin-bottom: 24px;
animation: float-icon 3s ease-in-out infinite; animation: float-icon 3s ease-in-out infinite;
} }
.guide-title { .guide-title {
font-size: 24px; font-size: 24px;
font-weight: 800; font-weight: 800;
color: #2c3e50; color: #2c3e50;
margin-bottom: 16px; margin-bottom: 16px;
} }
.guide-desc { .guide-desc {
color: #606266; color: #606266;
line-height: 1.6; line-height: 1.6;
margin-bottom: 32px; margin-bottom: 32px;
font-size: 15px; font-size: 15px;
} }
.redeem-jump-btn { .redeem-jump-btn {
width: 200px; width: 200px;
height: 48px; height: 48px;
@@ -899,13 +905,13 @@ function goToActivation() {
border: none; border: none;
box-shadow: 0 4px 12px rgba(255, 117, 140, 0.3); box-shadow: 0 4px 12px rgba(255, 117, 140, 0.3);
transition: all 0.3s; transition: all 0.3s;
&:hover { &:hover {
transform: translateY(-2px); transform: translateY(-2px);
box-shadow: 0 6px 16px rgba(255, 117, 140, 0.4); box-shadow: 0 6px 16px rgba(255, 117, 140, 0.4);
} }
} }
.guide-tips { .guide-tips {
margin-top: 24px; margin-top: 24px;
font-size: 13px; font-size: 13px;

View File

@@ -86,7 +86,6 @@ const navItems = [
// { name: 'userInfo', label: '用户信息', icon: 'User' }, // { name: 'userInfo', label: '用户信息', icon: 'User' },
{ name: 'apiKey', label: 'API密钥', icon: 'Key' }, { name: 'apiKey', label: 'API密钥', icon: 'Key' },
{ name: 'rechargeLog', label: '充值记录', icon: 'Document' }, { name: 'rechargeLog', label: '充值记录', icon: 'Document' },
{ name: 'usageStatistics', label: '用量统计', icon: 'Histogram' }, { name: 'usageStatistics', label: '用量统计', icon: 'Histogram' },
{ name: 'premiumService', label: '尊享服务', icon: 'ColdDrink' }, { name: 'premiumService', label: '尊享服务', icon: 'ColdDrink' },
@@ -105,6 +104,10 @@ function handleConfirm(activeNav: string) {
// 导航切换 // 导航切换
function handleNavChange(nav: string) { function handleNavChange(nav: string) {
activeNav.value = nav; activeNav.value = nav;
// 同步更新 store 中的 tab 状态,防止下次通过 store 打开同一 tab 时因值未变而不触发 watch
if (userStore.userCenterActiveTab !== nav) {
userStore.userCenterActiveTab = nav;
}
} }
// 联系售后 // 联系售后
@@ -307,6 +310,9 @@ watch(() => guideTourStore.shouldStartUserCenterTour, (shouldStart) => {
// ============ 监听 Store 状态,控制用户中心弹窗 (新增) ============ // ============ 监听 Store 状态,控制用户中心弹窗 (新增) ============
watch(() => userStore.isUserCenterVisible, (val) => { watch(() => userStore.isUserCenterVisible, (val) => {
dialogVisible.value = val; dialogVisible.value = val;
if (val && userStore.userCenterActiveTab) {
activeNav.value = userStore.userCenterActiveTab;
}
}); });
watch(() => userStore.userCenterActiveTab, (val) => { watch(() => userStore.userCenterActiveTab, (val) => {

View File

@@ -52,8 +52,8 @@ export const useUserStore = defineStore(
// 新增:打开用户中心方法 // 新增:打开用户中心方法
const openUserCenter = (tab: string = 'user') => { const openUserCenter = (tab: string = 'user') => {
userCenterActiveTab.value = tab;
isUserCenterVisible.value = true; isUserCenterVisible.value = true;
userCenterActiveTab.value = tab;
}; };
// 新增:关闭用户中心方法 // 新增:关闭用户中心方法