fix: 过期时间
All checks were successful
构建并部署前端到生产环境 / build-and-deploy (push) Successful in 53s

This commit is contained in:
sexygoat
2026-05-06 10:16:06 +08:00
parent 52c36dfc9b
commit 9fadbd297b
3 changed files with 37 additions and 13 deletions

View File

@@ -3,7 +3,7 @@
<view class="card-header">
<view class="title">功能菜单</view>
<!-- <view class="header-actions">
<button class="btn-apple btn-primary" @tap="$emit('sync')">运营数据同步</button>
<button class="btn-apple btn-primary" @tap="$emit('sync')">运营数据同步</button>
</view> -->
</view>
<view class="function-grid">
@@ -82,9 +82,9 @@
<view class="function-item interactive card-interactive" @tap="$emit('enter', 'wallet')" role="button"
tabindex="0">
<view class="function-icon">
<image src="/static/wallet.png" mode="aspectFit" alt="我的钱包"></image>
<image src="/static/wallet.png" mode="aspectFit" alt="钱包"></image>
</view>
<view class="function-name">我的钱包</view>
<view class="function-name">{{ walletText }}</view>
</view>
<view class="function-item interactive card-interactive" v-if="isDevice" @tap="$emit('enter', 'recover')"
role="button" tabindex="0">
@@ -114,6 +114,8 @@
</template>
<script setup>
import { computed } from 'vue';
const props = defineProps({
realNameStatus: {
type: String,
@@ -126,17 +128,21 @@
isDevice: {
type: Boolean,
default: true
},
walletBalance: {
type: [Number, String],
default: 0
}
});
const emit = defineEmits(['enter', 'sync']);
const walletText = computed(() => '钱包(¥:' + (props.walletBalance ?? 0) + '');
const handleBindPhone = () => {
if (props.alreadyBindPhone) {
// 已绑定,不可点击
return;
}
// 未绑定,可以点击进入绑定页面
emit('enter', 'bind');
};
</script>

View File

@@ -8,6 +8,7 @@
<view class="flex-row-g20">
<view class="title">{{ currentCardNo || '-' }}</view>
</view>
<view class="caption">套餐名称{{ deviceInfo.packageName || '-' }}</view>
<view class="caption">套餐到期时间{{ deviceInfo.expireDate || '-' }}</view>
</view>
<view v-if="isDevice" class="tag-apple" :class="onlineStatus === '在线' ? 'tag-success' : 'tag-warning'">
@@ -30,14 +31,12 @@
currentCardNo: { type: String, default: '' },
deviceInfo: { type: Object, default: () => ({}) },
onlineStatus: { type: String, default: '离线' },
networkStatus: { type: String, default: '离线' },
networkStatus: { type: [String, Number], default: '离线' },
isDevice: { type: Boolean, default: true }
});
// 默认头像
const defaultAvatar = 'https://img1.baidu.com/it/u=2462918877,1866131262&fm=253&fmt=auto&app=138&f=JPEG?w=506&h=500';
// 用户头像,优先使用 store 中的头像,否则使用默认头像
const avatarUrl = computed(() => {
return userStore.state.userInfo.avatar || defaultAvatar;
});
@@ -46,14 +45,23 @@
<style scoped lang="scss">
.user-info-card {
color: var(--text-primary);
.user-avatar {
width: 80rpx;
height: 80rpx;
border-radius: var(--radius-medium);
overflow: hidden;
border: 2rpx solid var(--border-light);
image { width: 100%; height: 100%; object-fit: cover; }
image {
width: 100%;
height: 100%;
object-fit: cover;
}
}
.user-details {
flex: 1;
}
.user-details { flex: 1; }
}
</style>

View File

@@ -9,7 +9,7 @@
<!-- <VoiceCard v-if="!userInfo.isDevice" :voiceStats="voiceStats" :dateRangeText="dateRangeText"
@openDatePicker="openDateRangePicker" /> -->
<TrafficCard :identifier="currentCardNo" @packageLoaded="handlePackageLoaded" />
<TrafficCard :identifier="currentCardNo" />
<!-- <WhitelistCard v-if="!userInfo.isDevice" :whitelistData="whitelistData" @refresh="refreshWhitelist"
@add="showAddWhitelistDialog" @showSms="showSmsCodeDialog" /> -->
@@ -17,7 +17,7 @@
<WifiCard v-if="userInfo.isDevice" :deviceInfo="deviceInfo" @modify="modifyWifi" @copy="copy" />
<FunctionCard :realNameStatus="realNameStatus" :alreadyBindPhone="alreadyBindPhone"
:isDevice="userInfo.isDevice" @enter="enterDetail" @sync="onSync">
:isDevice="userInfo.isDevice" :walletBalance="deviceInfo.walletBalance" @enter="enterDetail" @sync="onSync">
<!-- 修改WIFI弹窗 -->
<up-popup :show="showModifyWifi" mode="center" @close="showModifyWifi=false">
<view class="wifi-popup">
@@ -147,7 +147,9 @@
connect: 0,
network_status: 1,
status: 1,
packageName: '-',
expireDate: '-',
walletBalance: 0,
currentIccid: '-',
category: '-',
phone: '-',
@@ -206,6 +208,11 @@
let smsCodePhone = ref('');
let smsCode = ref('');
const formatDate = (dateStr) => {
if (!dateStr) return '-';
return dateStr.split('T')[0] || '-';
};
const loadAssetInfo = async () => {
const identifier = userStore.state.identifier;
if (!identifier) return;
@@ -222,6 +229,9 @@
deviceInfo.imei = data.imei || '-';
deviceInfo.asset_type = data.asset_type || 'device';
deviceInfo.bound_phone = data.bound_phone || '';
deviceInfo.packageName = data.current_package || '-';
deviceInfo.expireDate = formatDate(data.current_package_expires_at);
deviceInfo.walletBalance = data.wallet_balance ?? 0;
isRealName.value = data.real_name_status === 1;
realNameStatus.value = data.real_name_status === 1 ? '已实名' : '未实名';
boundPhone.value = data.bound_phone || '';