fix: 流量保留两位小数

This commit is contained in:
sexygoat
2026-05-08 14:54:36 +08:00
parent f8bfc3ad69
commit b54d8f5b32
14 changed files with 379 additions and 96 deletions

View File

@@ -2,7 +2,8 @@
import { ref, computed, onMounted } from 'vue'
import { getAssetDetail, getAssetPackages, getCurrentPackage, getAssetHistory, stopAsset, startAsset, getAssetRealtimeStatus } from '@/api/assets'
import type { AssetType, CardInfo, DeviceInfo, AssetPackage, HistoryRecord } from '@/api/assets'
import { formatDataSize, formatTime } from '@/utils/format'
import { formatTime } from '@/utils/format'
import { formatPackageDataSize, formatPackagePrice, getPackageRemainMb, getPackageTotalMb, getPackageUsagePercent, getPackageUsedMb } from '../package-display'
// 资产类型
const assetType = ref<AssetType>('card')
@@ -67,25 +68,6 @@ function getPackageStatusColor(status?: number) {
return status !== undefined ? map[status] || { bg: '#f5f5f5', text: '#999' } : { bg: '#f5f5f5', text: '#999' }
}
function getPackageUsedMb(pkg: AssetPackage) {
return Number(pkg.enable_virtual_data ? pkg.virtual_used_mb : pkg.real_used_mb) || 0
}
function getPackageTotalMb(pkg: AssetPackage) {
return Number(pkg.real_total_mb) || 0
}
function getPackageRemainMb(pkg: AssetPackage) {
return Math.max(0, getPackageTotalMb(pkg) - (Number(pkg.real_used_mb) || 0))
}
function getPackageUsagePercent(pkg: AssetPackage) {
const total = getPackageTotalMb(pkg)
if (total <= 0)
return 0
return Math.min(100, (getPackageUsedMb(pkg) / total) * 100)
}
function getPackageTypeText(type?: AssetPackage['package_type']) {
const map: Record<string, string> = {
formal: '正式套餐',
@@ -94,12 +76,6 @@ function getPackageTypeText(type?: AssetPackage['package_type']) {
return type ? map[type] || type : '-'
}
function formatPackagePrice(amount?: number) {
if (amount === undefined || amount === null)
return '-'
return `¥${(amount / 100).toFixed(2)}`
}
// 页面加载
onMounted(() => {
// 从路由参数获取 assetType 和 assetIdentifier
@@ -548,15 +524,15 @@ function viewWallet() {
<view class="grid grid-cols-3 gap-2 mb-3">
<view class="bg-[#f5f5f5] rounded-8px p-2 text-center">
<text class="text-10px text-[#999] block mb-1">总量</text>
<text class="text-12px font-600 text-[#212121]">{{ formatDataSize(getPackageTotalMb(currentPackage)) }}</text>
<text class="text-12px font-600 text-[#212121]">{{ formatPackageDataSize(getPackageTotalMb(currentPackage)) }}</text>
</view>
<view class="bg-[#f5f5f5] rounded-8px p-2 text-center">
<text class="text-10px text-[#999] block mb-1">已使用</text>
<text class="text-12px font-600 text-[var(--brand-primary)]">{{ formatDataSize(getPackageUsedMb(currentPackage)) }}</text>
<text class="text-12px font-600 text-[var(--brand-primary)]">{{ formatPackageDataSize(getPackageUsedMb(currentPackage)) }}</text>
</view>
<view class="bg-[#f5f5f5] rounded-8px p-2 text-center">
<text class="text-10px text-[#999] block mb-1">剩余</text>
<text class="text-12px font-600 text-[#2e7d32]">{{ formatDataSize(getPackageRemainMb(currentPackage)) }}</text>
<text class="text-12px font-600 text-[#2e7d32]">{{ formatPackageDataSize(getPackageRemainMb(currentPackage)) }}</text>
</view>
</view>
@@ -564,8 +540,8 @@ function viewWallet() {
<view class="flex items-center justify-between mb-1">
<text class="text-11px text-[#666]">已使用</text>
<text class="text-11px font-600 text-[#212121]">
{{ formatDataSize(getPackageUsedMb(currentPackage)) }} /
{{ formatDataSize(getPackageTotalMb(currentPackage)) }}
{{ formatPackageDataSize(getPackageUsedMb(currentPackage)) }} /
{{ formatPackageDataSize(getPackageTotalMb(currentPackage)) }}
</text>
</view>
<view class="h-4px bg-[#e0e0e0] rounded-full overflow-hidden">
@@ -652,12 +628,20 @@ function viewWallet() {
</view>
<view class="flex items-center justify-between mb-1">
<text class="text-12px text-[#666]">
已用: {{ formatDataSize(getPackageUsedMb(pkg)) }} / {{ formatDataSize(getPackageTotalMb(pkg)) }}
已用: {{ formatPackageDataSize(getPackageUsedMb(pkg)) }} / {{ formatPackageDataSize(getPackageTotalMb(pkg)) }}
</text>
<text class="text-11px text-[#999]">
优先级: {{ pkg.priority || '-' }}
</text>
</view>
<view class="flex items-center justify-between mb-1 text-12px">
<text class="text-[#666]">剩余</text>
<text class="text-[#212121]">{{ formatPackageDataSize(getPackageRemainMb(pkg)) }}</text>
</view>
<view class="flex items-center justify-between mb-1 text-12px">
<text class="text-[#666]">金额</text>
<text class="text-[#212121]">{{ formatPackagePrice(pkg.paid_amount) }}</text>
</view>
<text class="text-11px text-[#999]">
{{ pkg.activated_at || '-' }} ~ {{ pkg.expires_at || '-' }}
</text>