feat: 新增运营商停机原因
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 4m44s
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 4m44s
This commit is contained in:
@@ -6,7 +6,12 @@
|
||||
import { ref } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { AssetService } from '@/api/modules'
|
||||
import type { AssetWalletResponse, DeviceGatewayInfo, AssetPackageUsageRecord } from '@/types/api'
|
||||
import type {
|
||||
AssetBoundCard,
|
||||
AssetWalletResponse,
|
||||
DeviceGatewayInfo,
|
||||
AssetPackageUsageRecord
|
||||
} from '@/types/api'
|
||||
|
||||
type TrafficDisplaySource = {
|
||||
real_total_mb?: number | null
|
||||
@@ -39,6 +44,23 @@ const getDisplayedUsagePercentage = (traffic?: TrafficDisplaySource | null) => {
|
||||
return totalMb > 0 ? `${((usedMb / totalMb) * 100).toFixed(2)}%` : '0.00%'
|
||||
}
|
||||
|
||||
const mergeAssetBoundCards = (
|
||||
existingCards: AssetBoundCard[] = [],
|
||||
realtimeCards: AssetBoundCard[] = []
|
||||
): AssetBoundCard[] =>
|
||||
realtimeCards.map((realtimeCard) => {
|
||||
const existingCard = existingCards.find((card) => card.iccid === realtimeCard.iccid)
|
||||
if (!existingCard) return realtimeCard
|
||||
|
||||
const mergedCard = { ...existingCard } as unknown as Record<string, unknown>
|
||||
for (const [key, value] of Object.entries(realtimeCard)) {
|
||||
if (value !== null && value !== undefined) {
|
||||
mergedCard[key] = value
|
||||
}
|
||||
}
|
||||
return mergedCard as unknown as AssetBoundCard
|
||||
})
|
||||
|
||||
export function useAssetInfo() {
|
||||
// 状态管理
|
||||
const loading = ref(false)
|
||||
@@ -99,6 +121,7 @@ export function useAssetInfo() {
|
||||
carrier_name: data.carrier_name || '',
|
||||
supplier: data.supplier || '',
|
||||
network_status: data.network_status,
|
||||
gateway_extend: data.gateway_extend ?? '',
|
||||
bound_device_id: data.bound_device_id,
|
||||
bound_device_no: data.bound_device_no || '',
|
||||
bound_device_name: data.bound_device_name || '',
|
||||
@@ -293,18 +316,7 @@ export function useAssetInfo() {
|
||||
if (data.cards && data.cards.length > 0) {
|
||||
// 合并实时卡数据与原始卡数据,保留 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
|
||||
})
|
||||
cardInfo.value.cards = mergeAssetBoundCards(cardInfo.value.cards || [], data.cards)
|
||||
}
|
||||
if (data.online_status !== undefined) {
|
||||
cardInfo.value.online_status = data.online_status
|
||||
|
||||
Reference in New Issue
Block a user