This commit is contained in:
@@ -8,6 +8,13 @@ import { ElMessage } from 'element-plus'
|
||||
import { AssetService } from '@/api/modules'
|
||||
import type { AssetWalletResponse, DeviceGatewayInfo, AssetPackageUsageRecord } from '@/types/api'
|
||||
|
||||
type TrafficDisplaySource = {
|
||||
real_total_mb?: number | null
|
||||
real_used_mb?: number | null
|
||||
virtual_used_mb?: number | null
|
||||
enable_virtual_data?: boolean | null
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化数据大小(MB -> GB/MB)
|
||||
*/
|
||||
@@ -18,6 +25,20 @@ const formatDataSize = (mb: number) => {
|
||||
return `${mb.toFixed(2)}MB`
|
||||
}
|
||||
|
||||
const getDisplayedTotalMb = (traffic?: TrafficDisplaySource | null) => traffic?.real_total_mb || 0
|
||||
|
||||
const getDisplayedUsedMb = (traffic?: TrafficDisplaySource | null) =>
|
||||
traffic?.enable_virtual_data ? traffic?.virtual_used_mb || 0 : traffic?.real_used_mb || 0
|
||||
|
||||
const getDisplayedRemainingMb = (traffic?: TrafficDisplaySource | null) =>
|
||||
getDisplayedTotalMb(traffic) - getDisplayedUsedMb(traffic)
|
||||
|
||||
const getDisplayedUsagePercentage = (traffic?: TrafficDisplaySource | null) => {
|
||||
const totalMb = getDisplayedTotalMb(traffic)
|
||||
const usedMb = getDisplayedUsedMb(traffic)
|
||||
return totalMb > 0 ? `${((usedMb / totalMb) * 100).toFixed(2)}%` : '0.00%'
|
||||
}
|
||||
|
||||
export function useAssetInfo() {
|
||||
// 状态管理
|
||||
const loading = ref(false)
|
||||
@@ -105,13 +126,10 @@ export function useAssetInfo() {
|
||||
// 流量/套餐信息
|
||||
current_package: data.current_package || '',
|
||||
packageSeries: data.series_name || '-',
|
||||
packageTotalFlow: formatDataSize(data.real_total_mb || 0),
|
||||
usedFlow: formatDataSize(data.real_used_mb || 0),
|
||||
remainFlow: formatDataSize((data.real_total_mb || 0) - (data.real_used_mb || 0)),
|
||||
usedFlowPercentage:
|
||||
data.real_total_mb > 0
|
||||
? `${((data.real_used_mb / data.real_total_mb) * 100).toFixed(2)}%`
|
||||
: '0.00%',
|
||||
packageTotalFlow: formatDataSize(getDisplayedTotalMb(data)),
|
||||
usedFlow: formatDataSize(getDisplayedUsedMb(data)),
|
||||
remainFlow: formatDataSize(getDisplayedRemainingMb(data)),
|
||||
usedFlowPercentage: getDisplayedUsagePercentage(data),
|
||||
packageList: [] // 套餐列表需要单独调用API获取
|
||||
}
|
||||
|
||||
@@ -209,23 +227,11 @@ export function useAssetInfo() {
|
||||
}
|
||||
|
||||
// 同时更新 cardInfo 中的流量显示信息(根据是否启用虚流量选择数据源)
|
||||
const useVirtual = pkg.enable_virtual_data
|
||||
cardInfo.value.current_package = pkg.package_name
|
||||
cardInfo.value.packageTotalFlow = formatDataSize(
|
||||
useVirtual ? pkg.virtual_total_mb || 0 : pkg.real_total_mb || 0
|
||||
)
|
||||
cardInfo.value.usedFlow = formatDataSize(
|
||||
useVirtual ? pkg.virtual_used_mb || 0 : pkg.real_used_mb || 0
|
||||
)
|
||||
cardInfo.value.remainFlow = formatDataSize(
|
||||
useVirtual
|
||||
? (pkg.virtual_total_mb || 0) - (pkg.virtual_used_mb || 0)
|
||||
: (pkg.real_total_mb || 0) - (pkg.real_used_mb || 0)
|
||||
)
|
||||
const totalMb = useVirtual ? pkg.virtual_total_mb || 0 : pkg.real_total_mb || 0
|
||||
const usedMb = useVirtual ? pkg.virtual_used_mb || 0 : pkg.real_used_mb || 0
|
||||
cardInfo.value.usedFlowPercentage =
|
||||
totalMb > 0 ? `${((usedMb / totalMb) * 100).toFixed(2)}%` : '0.00%'
|
||||
cardInfo.value.packageTotalFlow = formatDataSize(getDisplayedTotalMb(pkg))
|
||||
cardInfo.value.usedFlow = formatDataSize(getDisplayedUsedMb(pkg))
|
||||
cardInfo.value.remainFlow = formatDataSize(getDisplayedRemainingMb(pkg))
|
||||
cardInfo.value.usedFlowPercentage = getDisplayedUsagePercentage(pkg)
|
||||
} else {
|
||||
// code 为 0 但 data 为空,表示暂无当前生效套餐(正常情况)
|
||||
currentPackage.value = null
|
||||
|
||||
Reference in New Issue
Block a user