This commit is contained in:
@@ -59,9 +59,12 @@ export interface AssetResolveResponse {
|
||||
realname_policy?: string // 实名认证策略 (none:无需实名, before_order:先实名后充值/购买, after_order:先充值/购买后实名)
|
||||
network_status?: NetworkStatus // 网络状态:0 停机 / 1 开机(仅 card)
|
||||
current_package: string // 当前套餐名称(无则空)
|
||||
package_total_mb: number // 当前套餐总虚流量 MB
|
||||
package_used_mb: number // 已用虚流量 MB
|
||||
package_remain_mb: number // 剩余虚流量 MB
|
||||
current_package_usage_id: number | null // 当前主套餐对应的套餐使用记录 ID,无主套餐时为 null
|
||||
real_total_mb: number // 真流量总量
|
||||
real_used_mb: number // 真流量已用
|
||||
virtual_total_mb: number // 业务停机阈值(展示用)
|
||||
virtual_used_mb: number // 展示已用量
|
||||
reduction_pct: number // 展示增幅比例(小数,如 0.428571)
|
||||
device_protect_status?: DeviceProtectStatus // 保护期状态:none / stop / start(仅 device)
|
||||
activated_at: string // 激活时间
|
||||
created_at: string // 创建时间
|
||||
@@ -140,9 +143,6 @@ export interface DeviceGatewayInfo {
|
||||
wan_ip?: string // 基站分配 IPv4
|
||||
lan_ip?: string // 局域网网关 IP
|
||||
mac_address?: string // MAC 地址
|
||||
daily_usage?: string // 日使用流量(字节)
|
||||
dl_stats?: string // 本次开机下载(字节)
|
||||
ul_stats?: string // 本次开机上传(字节)
|
||||
limit_speed?: number // 限速(KB/s),0=不限
|
||||
current_iccid?: string // 当前使用卡 ICCID
|
||||
max_clients?: number // 最大连接客户端数
|
||||
@@ -202,12 +202,12 @@ export interface AssetPackageUsageRecord {
|
||||
usage_type?: UsageType // 使用类型:single_card/device
|
||||
status?: PackageUsageStatus // 0 待生效 / 1 生效中 / 2 已用完 / 3 已过期 / 4 已失效
|
||||
status_name?: string // 状态中文名
|
||||
data_limit_mb?: number // 真流量总量 MB
|
||||
virtual_limit_mb?: number // 虚流量总量 MB(已按 virtual_ratio 换算)
|
||||
data_usage_mb?: number // 已用真流量 MB
|
||||
virtual_used_mb?: number // 已用虚流量 MB
|
||||
virtual_remain_mb?: number // 剩余虚流量 MB
|
||||
real_total_mb?: number // 真流量总量(百分比以此为基准)
|
||||
real_used_mb?: number // 真流量已用
|
||||
virtual_total_mb?: number // 业务停机阈值
|
||||
virtual_used_mb?: number // 展示已用量
|
||||
virtual_ratio?: number // 虚流量比例(real/virtual)
|
||||
reduction_pct?: number // 展示增幅比例(小数,如 0.428571)
|
||||
enable_virtual_data?: boolean // 是否启用虚流量
|
||||
paid_amount?: number // 实际支付金额(分)
|
||||
package_price?: number // 套餐价格(分)
|
||||
|
||||
@@ -330,17 +330,6 @@
|
||||
{{ deviceRealtime.imsi || '-' }}
|
||||
</ElDescriptionsItem>
|
||||
|
||||
<!-- 流量信息 -->
|
||||
<ElDescriptionsItem label="今日流量">
|
||||
{{ formatDataSize(Number(deviceRealtime.daily_usage || 0) / (1024 * 1024)) }}
|
||||
</ElDescriptionsItem>
|
||||
<ElDescriptionsItem label="本次下载">
|
||||
{{ formatDataSize(Number(deviceRealtime.dl_stats || 0) / (1024 * 1024)) }}
|
||||
</ElDescriptionsItem>
|
||||
<ElDescriptionsItem label="本次上传">
|
||||
{{ formatDataSize(Number(deviceRealtime.ul_stats || 0) / (1024 * 1024)) }}
|
||||
</ElDescriptionsItem>
|
||||
|
||||
<!-- 设备配置 -->
|
||||
<ElDescriptionsItem label="限速">
|
||||
{{ deviceRealtime.limit_speed ? `${deviceRealtime.limit_speed} KB/s` : '不限速' }}
|
||||
@@ -538,9 +527,6 @@
|
||||
mac_address?: string
|
||||
imei?: string
|
||||
imsi?: string
|
||||
daily_usage?: string
|
||||
dl_stats?: string
|
||||
ul_stats?: string
|
||||
limit_speed?: number
|
||||
software_version?: string
|
||||
switch_mode?: string
|
||||
|
||||
@@ -42,20 +42,20 @@
|
||||
<span class="stat-item">
|
||||
<span class="stat-label">已使用</span>
|
||||
<span class="stat-value">{{
|
||||
formatDataSize(currentPackage.data_usage_mb || 0)
|
||||
formatDataSize(currentPackage.real_used_mb || 0)
|
||||
}}</span>
|
||||
</span>
|
||||
<span class="stat-item">
|
||||
<span class="stat-label">总量</span>
|
||||
<span class="stat-value">{{
|
||||
formatDataSize(currentPackage.data_limit_mb || 0)
|
||||
formatDataSize(currentPackage.real_total_mb || 0)
|
||||
}}</span>
|
||||
</span>
|
||||
<span class="stat-item">
|
||||
<span class="stat-label">剩余</span>
|
||||
<span class="stat-value">{{
|
||||
formatDataSize(
|
||||
(currentPackage.data_limit_mb || 0) - (currentPackage.data_usage_mb || 0)
|
||||
(currentPackage.real_total_mb || 0) - (currentPackage.real_used_mb || 0)
|
||||
)
|
||||
}}</span>
|
||||
</span>
|
||||
@@ -63,15 +63,15 @@
|
||||
<ElProgress
|
||||
:percentage="
|
||||
getUsageProgress(
|
||||
currentPackage.data_usage_mb || 0,
|
||||
currentPackage.data_limit_mb || 0
|
||||
currentPackage.real_used_mb || 0,
|
||||
currentPackage.real_total_mb || 0
|
||||
)
|
||||
"
|
||||
:color="
|
||||
getProgressColorByPercentage(
|
||||
getUsageProgress(
|
||||
currentPackage.data_usage_mb || 0,
|
||||
currentPackage.data_limit_mb || 0
|
||||
currentPackage.real_used_mb || 0,
|
||||
currentPackage.real_total_mb || 0
|
||||
)
|
||||
)
|
||||
"
|
||||
@@ -85,36 +85,28 @@
|
||||
<span class="stat-item">
|
||||
<span class="stat-label">已使用</span>
|
||||
<span class="stat-value">{{
|
||||
formatDataSize(currentPackage.virtual_data_used || 0)
|
||||
formatDataSize(currentPackage.virtual_used_mb || 0)
|
||||
}}</span>
|
||||
</span>
|
||||
<span class="stat-item">
|
||||
<span class="stat-label">总量</span>
|
||||
<span class="stat-label">停机阈值</span>
|
||||
<span class="stat-value">{{
|
||||
formatDataSize(currentPackage.virtual_limit_mb || 0)
|
||||
}}</span>
|
||||
</span>
|
||||
<span class="stat-item">
|
||||
<span class="stat-label">剩余</span>
|
||||
<span class="stat-value">{{
|
||||
formatDataSize(
|
||||
(currentPackage.virtual_limit_mb || 0) - (currentPackage.virtual_data_used || 0)
|
||||
)
|
||||
formatDataSize(currentPackage.virtual_total_mb || 0)
|
||||
}}</span>
|
||||
</span>
|
||||
</div>
|
||||
<ElProgress
|
||||
:percentage="
|
||||
getUsageProgress(
|
||||
currentPackage.virtual_data_used || 0,
|
||||
currentPackage.virtual_limit_mb || 0
|
||||
currentPackage.virtual_used_mb || 0,
|
||||
currentPackage.virtual_total_mb || 0
|
||||
)
|
||||
"
|
||||
:color="
|
||||
getProgressColorByPercentage(
|
||||
getUsageProgress(
|
||||
currentPackage.virtual_data_used || 0,
|
||||
currentPackage.virtual_limit_mb || 0
|
||||
currentPackage.virtual_used_mb || 0,
|
||||
currentPackage.virtual_total_mb || 0
|
||||
)
|
||||
)
|
||||
"
|
||||
@@ -133,8 +125,8 @@
|
||||
{{
|
||||
formatDataSize(
|
||||
currentPackage.enable_virtual_data
|
||||
? currentPackage.virtual_data_used || 0
|
||||
: currentPackage.data_usage_mb || 0
|
||||
? currentPackage.virtual_used_mb || 0
|
||||
: currentPackage.real_used_mb || 0
|
||||
)
|
||||
}}
|
||||
</span>
|
||||
@@ -142,7 +134,7 @@
|
||||
<div class="flow-stat-item">
|
||||
<span class="flow-stat-label">总量</span>
|
||||
<span class="flow-stat-value">
|
||||
{{ formatDataSize(currentPackage.data_limit_mb || 0) }}
|
||||
{{ formatDataSize(currentPackage.real_total_mb || 0) }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="flow-stat-item">
|
||||
@@ -150,7 +142,7 @@
|
||||
<span class="flow-stat-value">
|
||||
{{
|
||||
formatDataSize(
|
||||
(currentPackage.data_limit_mb || 0) - (currentPackage.data_usage_mb || 0)
|
||||
(currentPackage.real_total_mb || 0) - (currentPackage.real_used_mb || 0)
|
||||
)
|
||||
}}
|
||||
</span>
|
||||
@@ -161,18 +153,18 @@
|
||||
:percentage="
|
||||
getUsageProgress(
|
||||
currentPackage.enable_virtual_data
|
||||
? currentPackage.virtual_data_used || 0
|
||||
: currentPackage.data_usage_mb || 0,
|
||||
currentPackage.data_limit_mb || 0
|
||||
? currentPackage.virtual_used_mb || 0
|
||||
: currentPackage.real_used_mb || 0,
|
||||
currentPackage.real_total_mb || 0
|
||||
)
|
||||
"
|
||||
:color="
|
||||
getProgressColorByPercentage(
|
||||
getUsageProgress(
|
||||
currentPackage.enable_virtual_data
|
||||
? currentPackage.virtual_data_used || 0
|
||||
: currentPackage.data_usage_mb || 0,
|
||||
currentPackage.data_limit_mb || 0
|
||||
? currentPackage.virtual_used_mb || 0
|
||||
: currentPackage.real_used_mb || 0,
|
||||
currentPackage.real_total_mb || 0
|
||||
)
|
||||
)
|
||||
"
|
||||
|
||||
@@ -61,16 +61,16 @@
|
||||
<template v-if="isAdminOrPlatform">
|
||||
<div class="progress-text">
|
||||
<span class="used"
|
||||
>已使用真流量: {{ formatDataSize(scope.row.data_usage_mb || 0) }}</span
|
||||
>已使用真流量: {{ formatDataSize(scope.row.real_used_mb || 0) }}</span
|
||||
>
|
||||
<span class="total"
|
||||
>真流量总量: {{ formatDataSize(scope.row.data_limit_mb || 0) }}</span
|
||||
>真流量总量: {{ formatDataSize(scope.row.real_total_mb || 0) }}</span
|
||||
>
|
||||
<span class="remaining"
|
||||
>真流量剩余:
|
||||
{{
|
||||
formatDataSize(
|
||||
(scope.row.data_limit_mb || 0) - (scope.row.data_usage_mb || 0)
|
||||
(scope.row.real_total_mb || 0) - (scope.row.real_used_mb || 0)
|
||||
)
|
||||
}}</span
|
||||
>
|
||||
@@ -78,11 +78,11 @@
|
||||
<ElProgress
|
||||
style="margin-top: 4px"
|
||||
:percentage="
|
||||
getUsageProgress(scope.row.data_usage_mb || 0, scope.row.data_limit_mb || 0)
|
||||
getUsageProgress(scope.row.real_used_mb || 0, scope.row.real_total_mb || 0)
|
||||
"
|
||||
:color="
|
||||
getProgressColorByPercentage(
|
||||
getUsageProgress(scope.row.data_usage_mb || 0, scope.row.data_limit_mb || 0)
|
||||
getUsageProgress(scope.row.real_used_mb || 0, scope.row.real_total_mb || 0)
|
||||
)
|
||||
"
|
||||
/>
|
||||
@@ -91,15 +91,7 @@
|
||||
>已使用虚流量: {{ formatDataSize(scope.row.virtual_used_mb || 0) }}</span
|
||||
>
|
||||
<span class="total"
|
||||
>虚流量总量: {{ formatDataSize(scope.row.virtual_limit_mb || 0) }}</span
|
||||
>
|
||||
<span class="remaining"
|
||||
>虚流量剩余:
|
||||
{{
|
||||
formatDataSize(
|
||||
(scope.row.virtual_limit_mb || 0) - (scope.row.virtual_used_mb || 0)
|
||||
)
|
||||
}}</span
|
||||
>停机阈值: {{ formatDataSize(scope.row.virtual_total_mb || 0) }}</span
|
||||
>
|
||||
</div>
|
||||
<ElProgress
|
||||
@@ -107,14 +99,14 @@
|
||||
:percentage="
|
||||
getUsageProgress(
|
||||
scope.row.virtual_used_mb || 0,
|
||||
scope.row.virtual_limit_mb || 0
|
||||
scope.row.virtual_total_mb || 0
|
||||
)
|
||||
"
|
||||
:color="
|
||||
getProgressColorByPercentage(
|
||||
getUsageProgress(
|
||||
scope.row.virtual_used_mb || 0,
|
||||
scope.row.virtual_limit_mb || 0
|
||||
scope.row.virtual_total_mb || 0
|
||||
)
|
||||
)
|
||||
"
|
||||
@@ -128,18 +120,18 @@
|
||||
formatDataSize(
|
||||
scope.row.enable_virtual_data
|
||||
? scope.row.virtual_used_mb || 0
|
||||
: scope.row.data_usage_mb || 0
|
||||
: scope.row.real_used_mb || 0
|
||||
)
|
||||
}}</span
|
||||
>
|
||||
<span class="total"
|
||||
>总量: {{ formatDataSize(scope.row.data_limit_mb || 0) }}</span
|
||||
>总量: {{ formatDataSize(scope.row.real_total_mb || 0) }}</span
|
||||
>
|
||||
<span class="remaining"
|
||||
>剩余:
|
||||
{{
|
||||
formatDataSize(
|
||||
(scope.row.data_limit_mb || 0) - (scope.row.data_usage_mb || 0)
|
||||
(scope.row.real_total_mb || 0) - (scope.row.real_used_mb || 0)
|
||||
)
|
||||
}}</span
|
||||
>
|
||||
@@ -150,8 +142,8 @@
|
||||
getUsageProgress(
|
||||
scope.row.enable_virtual_data
|
||||
? scope.row.virtual_used_mb || 0
|
||||
: scope.row.data_usage_mb || 0,
|
||||
scope.row.data_limit_mb || 0
|
||||
: scope.row.real_used_mb || 0,
|
||||
scope.row.real_total_mb || 0
|
||||
)
|
||||
"
|
||||
:color="
|
||||
@@ -159,8 +151,8 @@
|
||||
getUsageProgress(
|
||||
scope.row.enable_virtual_data
|
||||
? scope.row.virtual_used_mb || 0
|
||||
: scope.row.data_usage_mb || 0,
|
||||
scope.row.data_limit_mb || 0
|
||||
: scope.row.real_used_mb || 0,
|
||||
scope.row.real_total_mb || 0
|
||||
)
|
||||
)
|
||||
"
|
||||
|
||||
@@ -105,12 +105,12 @@ export function useAssetInfo() {
|
||||
// 流量/套餐信息
|
||||
current_package: data.current_package || '',
|
||||
packageSeries: data.series_name || '-',
|
||||
packageTotalFlow: formatDataSize(data.package_total_mb || 0),
|
||||
usedFlow: formatDataSize(data.package_used_mb || 0),
|
||||
remainFlow: formatDataSize((data.package_total_mb || 0) - (data.package_used_mb || 0)),
|
||||
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.package_total_mb > 0
|
||||
? `${((data.package_used_mb / data.package_total_mb) * 100).toFixed(2)}%`
|
||||
data.real_total_mb > 0
|
||||
? `${((data.real_used_mb / data.real_total_mb) * 100).toFixed(2)}%`
|
||||
: '0.00%',
|
||||
packageList: [] // 套餐列表需要单独调用API获取
|
||||
}
|
||||
@@ -191,25 +191,20 @@ export function useAssetInfo() {
|
||||
order_no: pkg.order_no || '',
|
||||
package_name: pkg.package_name || '',
|
||||
paid_amount: pkg.paid_amount || 0,
|
||||
package_total_data: pkg.data_limit_mb || 0,
|
||||
real_data_used: pkg.data_usage_mb || 0,
|
||||
real_data_remaining: (pkg.data_limit_mb || 0) - (pkg.data_usage_mb || 0),
|
||||
real_data_total: pkg.data_limit_mb || 0,
|
||||
virtual_data_used: pkg.virtual_used_mb || 0,
|
||||
virtual_data_remaining: pkg.virtual_remain_mb || 0,
|
||||
virtual_data_total: pkg.virtual_limit_mb || 0,
|
||||
real_total_mb: pkg.real_total_mb || 0,
|
||||
real_used_mb: pkg.real_used_mb || 0,
|
||||
real_remaining_mb: (pkg.real_total_mb || 0) - (pkg.real_used_mb || 0),
|
||||
virtual_total_mb: pkg.virtual_total_mb || 0,
|
||||
virtual_used_mb: pkg.virtual_used_mb || 0,
|
||||
virtual_remaining_mb: (pkg.virtual_total_mb || 0) - (pkg.virtual_used_mb || 0),
|
||||
reduction_pct: pkg.reduction_pct || 0,
|
||||
start_time: pkg.activated_at || '',
|
||||
expire_time: pkg.expires_at || '',
|
||||
status: pkg.status || 0,
|
||||
status_name: pkg.status_name,
|
||||
duration_days: undefined,
|
||||
virtual_ratio: pkg.virtual_ratio,
|
||||
package_type: pkg.package_type,
|
||||
enable_virtual_data: pkg.enable_virtual_data,
|
||||
data_limit_mb: pkg.data_limit_mb,
|
||||
virtual_limit_mb: pkg.virtual_limit_mb,
|
||||
virtual_remain_mb: pkg.virtual_remain_mb,
|
||||
data_usage_mb: pkg.data_usage_mb,
|
||||
created_at: pkg.created_at || ''
|
||||
}
|
||||
|
||||
@@ -217,18 +212,18 @@ export function useAssetInfo() {
|
||||
const useVirtual = pkg.enable_virtual_data
|
||||
cardInfo.value.current_package = pkg.package_name
|
||||
cardInfo.value.packageTotalFlow = formatDataSize(
|
||||
useVirtual ? pkg.virtual_limit_mb || 0 : pkg.data_limit_mb || 0
|
||||
useVirtual ? pkg.virtual_total_mb || 0 : pkg.real_total_mb || 0
|
||||
)
|
||||
cardInfo.value.usedFlow = formatDataSize(
|
||||
useVirtual ? pkg.virtual_used_mb || 0 : pkg.data_usage_mb || 0
|
||||
useVirtual ? pkg.virtual_used_mb || 0 : pkg.real_used_mb || 0
|
||||
)
|
||||
cardInfo.value.remainFlow = formatDataSize(
|
||||
useVirtual
|
||||
? pkg.virtual_remain_mb || 0
|
||||
: (pkg.data_limit_mb || 0) - (pkg.data_usage_mb || 0)
|
||||
? (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_limit_mb || 0 : pkg.data_limit_mb || 0
|
||||
const usedMb = useVirtual ? pkg.virtual_used_mb || 0 : pkg.data_usage_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%'
|
||||
} else {
|
||||
|
||||
@@ -76,25 +76,20 @@ export interface PackageInfo {
|
||||
package_id: number
|
||||
package_name: string
|
||||
package_price: number
|
||||
package_total_data: number
|
||||
real_data_used: number
|
||||
real_data_remaining: number
|
||||
real_data_total: number
|
||||
virtual_data_used: number
|
||||
virtual_data_remaining: number
|
||||
virtual_data_total: number
|
||||
real_total_mb: number
|
||||
real_used_mb: number
|
||||
real_remaining_mb: number
|
||||
virtual_total_mb: number
|
||||
virtual_used_mb: number
|
||||
virtual_remaining_mb: number
|
||||
start_time: string
|
||||
expire_time: string
|
||||
status: number
|
||||
status_name?: string
|
||||
duration_days?: number
|
||||
virtual_ratio?: number // 虚流量比例
|
||||
reduction_pct?: number // 展示增幅比例
|
||||
package_type?: string // 套餐类型: formal(正式套餐)/ addon(加油包)
|
||||
enable_virtual_data?: boolean // 是否启用虚流量
|
||||
data_limit_mb?: number // 总量
|
||||
virtual_limit_mb?: number // 虚流量上限
|
||||
virtual_remain_mb?: number // 虚流量剩余
|
||||
data_usage_mb?: number // 已用流量
|
||||
order_no?: string // 订单号
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user