fix(operator): fix operator edit issue
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 5m51s

This commit is contained in:
sexygoat
2026-04-10 16:54:53 +08:00
parent 8b30341d50
commit 90ae585651
10 changed files with 556 additions and 426 deletions

View File

@@ -59,6 +59,7 @@ export function useAssetInfo() {
series_id: data.series_id,
series_name: data.series_name,
real_name_status: data.real_name_status,
real_name_at: data.real_name_at,
activated_at: data.activated_at,
created_at: data.created_at,
updated_at: data.updated_at,
@@ -196,22 +197,32 @@ export function useAssetInfo() {
status_name: pkg.status_name,
duration_days: undefined, // API 没有返回时长
virtual_ratio: pkg.virtual_ratio, // 虚流量比例
package_type: pkg.package_type // 套餐类型
package_type: pkg.package_type, // 套餐类型
enable_virtual_data: pkg.enable_virtual_data // 是否启用虚流量
}
// 同时更新 cardInfo 中的流量显示信息
// 同时更新 cardInfo 中的流量显示信息(根据是否启用虚流量选择数据源)
const useVirtual = pkg.enable_virtual_data
cardInfo.value.current_package = pkg.package_name
cardInfo.value.packageTotalFlow = formatDataSize(pkg.virtual_limit_mb || 0)
cardInfo.value.usedFlow = formatDataSize(pkg.virtual_used_mb || 0)
cardInfo.value.remainFlow = formatDataSize(pkg.virtual_remain_mb || 0)
cardInfo.value.packageTotalFlow = formatDataSize(
useVirtual ? pkg.virtual_limit_mb || 0 : pkg.data_limit_mb || 0
)
cardInfo.value.usedFlow = formatDataSize(
useVirtual ? pkg.virtual_used_mb || 0 : pkg.data_usage_mb || 0
)
cardInfo.value.remainFlow = formatDataSize(
useVirtual
? pkg.virtual_remain_mb || 0
: (pkg.data_limit_mb || 0) - (pkg.data_usage_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
cardInfo.value.usedFlowPercentage =
(pkg.virtual_limit_mb || 0) > 0
? `${(((pkg.virtual_used_mb || 0) / (pkg.virtual_limit_mb || 1)) * 100).toFixed(2)}%`
: '0.00%'
totalMb > 0 ? `${((usedMb / totalMb) * 100).toFixed(2)}%` : '0.00%'
} else {
// code 为 0 但 data 为空,表示暂无当前生效套餐(正常情况)
currentPackage.value = null
currentPackageErrorMsg.value = '暂无当前生效套餐'
currentPackageErrorMsg.value = ''
}
} else {
// 接口返回 code 不为 0,保存错误信息
@@ -222,7 +233,7 @@ export function useAssetInfo() {
// 404表示无当前生效套餐,这是正常情况
currentPackage.value = null
if (error?.response?.status === 404) {
currentPackageErrorMsg.value = '暂无当前生效套餐'
currentPackageErrorMsg.value = ''
} else {
console.error('获取当前套餐失败:', error)
currentPackageErrorMsg.value = error?.message || '获取当前套餐失败'
@@ -263,7 +274,20 @@ export function useAssetInfo() {
cardInfo.value.device_protect_status = data.device_protect_status
}
if (data.cards && data.cards.length > 0) {
cardInfo.value.cards = data.cards
// 合并实时卡数据与原始卡数据,保留 real_name_at 等静态字段
// 仅用实时接口中非 null/undefined 的字段覆盖,避免清掉 resolve 接口返回的静态数据
const existingCards: any[] = cardInfo.value.cards || []
cardInfo.value.cards = data.cards.map((realtimeCard: any) => {
const existing = existingCards.find((c: any) => c.iccid === realtimeCard.iccid)
if (!existing) return realtimeCard
const merged = { ...existing }
for (const [key, value] of Object.entries(realtimeCard)) {
if (value !== null && value !== undefined) {
merged[key] = value
}
}
return merged
})
}
if (data.online_status !== undefined) {
cardInfo.value.online_status = data.online_status