From fb10b727600b30129e49f2af25b24f71e9bda06a Mon Sep 17 00:00:00 2001 From: sexygoat <1538832180@qq.com> Date: Tue, 28 Apr 2026 11:14:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=89=8B=E5=8A=A8=E8=A7=A6=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/types/api/asset.ts | 1 + src/types/auto-imports.d.ts | 1 + .../components/AssetSearchCard.vue | 6 +- .../components/BasicInfoCard.vue | 4 + .../components/PackageListCard.vue | 4 +- .../composables/useAssetInfo.ts | 13 +- .../asset-information/index.vue | 13 +- .../enterprise-cards/index.vue | 11 +- .../manual-trigger/index.vue | 614 ++++++++++++------ 9 files changed, 462 insertions(+), 205 deletions(-) diff --git a/src/types/api/asset.ts b/src/types/api/asset.ts index 2ed54bb..ba5c34b 100644 --- a/src/types/api/asset.ts +++ b/src/types/api/asset.ts @@ -169,6 +169,7 @@ export interface AssetRealtimeStatusResponse { real_name_status?: RealNameStatus // 实名状态(仅 card) realname_policy?: string // 实名认证策略(仅 card) current_month_usage_mb?: number // 本月已用流量 MB(仅 card) + last_gateway_reading_mb?: number // 运营商周期月内已用流量 MB(仅 card) last_sync_time?: string // 最后同步时间(仅 card) // ===== 设备专属字段 ===== diff --git a/src/types/auto-imports.d.ts b/src/types/auto-imports.d.ts index fe197da..927b2e5 100644 --- a/src/types/auto-imports.d.ts +++ b/src/types/auto-imports.d.ts @@ -7,6 +7,7 @@ export {} declare global { const EffectScope: typeof import('vue')['EffectScope'] + const ElButton: typeof import('element-plus/es')['ElButton'] const ElMessageBox: typeof import('element-plus/es')['ElMessageBox'] const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate'] const asyncComputed: typeof import('@vueuse/core')['asyncComputed'] diff --git a/src/views/asset-management/asset-information/components/AssetSearchCard.vue b/src/views/asset-management/asset-information/components/AssetSearchCard.vue index 6238674..8e1d467 100644 --- a/src/views/asset-management/asset-information/components/AssetSearchCard.vue +++ b/src/views/asset-management/asset-information/components/AssetSearchCard.vue @@ -33,7 +33,7 @@
- 刷新 + 刷新
@@ -54,10 +54,12 @@ // Props interface Props { hasCardInfo?: boolean + refreshDisabled?: boolean } withDefaults(defineProps(), { - hasCardInfo: false + hasCardInfo: false, + refreshDisabled: false }) // Emits diff --git a/src/views/asset-management/asset-information/components/BasicInfoCard.vue b/src/views/asset-management/asset-information/components/BasicInfoCard.vue index bd3890a..a5e1ad2 100644 --- a/src/views/asset-management/asset-information/components/BasicInfoCard.vue +++ b/src/views/asset-management/asset-information/components/BasicInfoCard.vue @@ -53,6 +53,9 @@ {{ formatDataSize(cardInfo?.current_month_usage_mb || 0) }} + {{ + formatDataSize(cardInfo?.last_gateway_reading_mb || 0) + }} {{ cardInfo?.real_name_at ? formatDateTime(cardInfo.real_name_at) : '-' }} @@ -480,6 +483,7 @@ real_name_status?: number network_status?: number current_month_usage_mb?: number + last_gateway_reading_mb?: number device_type?: string device_name?: string device_model?: string diff --git a/src/views/asset-management/asset-information/components/PackageListCard.vue b/src/views/asset-management/asset-information/components/PackageListCard.vue index 505c61e..9e58e7a 100644 --- a/src/views/asset-management/asset-information/components/PackageListCard.vue +++ b/src/views/asset-management/asset-information/components/PackageListCard.vue @@ -4,7 +4,9 @@
套餐列表
- 套餐充值 + 套餐充值
diff --git a/src/views/asset-management/asset-information/composables/useAssetInfo.ts b/src/views/asset-management/asset-information/composables/useAssetInfo.ts index c2a7787..ef8d2a9 100644 --- a/src/views/asset-management/asset-information/composables/useAssetInfo.ts +++ b/src/views/asset-management/asset-information/composables/useAssetInfo.ts @@ -276,6 +276,9 @@ export function useAssetInfo() { if (data.current_month_usage_mb !== undefined) { cardInfo.value.current_month_usage_mb = data.current_month_usage_mb } + if (data.last_gateway_reading_mb !== undefined) { + cardInfo.value.last_gateway_reading_mb = data.last_gateway_reading_mb + } } else if (assetType === 'device') { // 设备的实时状态 if (data.device_protect_status !== undefined) { @@ -353,8 +356,9 @@ export function useAssetInfo() { * 刷新资产数据(调用refresh接口后重新加载) * @param identifier - 资产标识符 * @param assetType - 资产类型(card/device) + * @returns true if refresh was successful, false if rate limited (429) */ - const refreshAsset = async (identifier: string, assetType: string) => { + const refreshAsset = async (identifier: string, assetType: string): Promise => { try { await AssetService.refreshAsset(identifier) ElMessage.success('刷新成功') @@ -363,8 +367,15 @@ export function useAssetInfo() { if (identifier) { await loadRealtimeStatus(identifier, assetType) } + return true } catch (error: any) { console.log(error) + // Check if it's a 429 rate limit error + if (error?.response?.status === 429) { + ElMessage.warning('操作过于频繁,请30秒后再试') + return false + } + return false } } diff --git a/src/views/asset-management/asset-information/index.vue b/src/views/asset-management/asset-information/index.vue index a18d7b7..f5371e9 100644 --- a/src/views/asset-management/asset-information/index.vue +++ b/src/views/asset-management/asset-information/index.vue @@ -4,6 +4,7 @@ @@ -266,6 +267,9 @@ await updatePollingStatus(val) }) + // ========== 刷新按钮状态 ========== + const refreshDisabled = ref(false) + // ========== 事件处理 ========== /** @@ -301,7 +305,14 @@ */ const handleRefresh = async () => { if (!cardInfo.value) return - await refreshAsset(cardInfo.value.identifier, cardInfo.value.asset_type) + const success = await refreshAsset(cardInfo.value.identifier, cardInfo.value.asset_type) + if (!success) { + // 如果刷新失败(429错误),禁用刷新按钮30秒 + refreshDisabled.value = true + setTimeout(() => { + refreshDisabled.value = false + }, 30000) + } } /** diff --git a/src/views/asset-management/enterprise-cards/index.vue b/src/views/asset-management/enterprise-cards/index.vue index a976c71..7284813 100644 --- a/src/views/asset-management/enterprise-cards/index.vue +++ b/src/views/asset-management/enterprise-cards/index.vue @@ -78,7 +78,7 @@ v-model:filter="cardSearchForm" :items="cardSearchFormItems" label-width="120" - :show-expand="false" + show-expand @reset="handleCardSearchReset" @search="handleCardSearch" > @@ -107,6 +107,7 @@ :pageSize="cardPagination.pageSize" :total="cardPagination.total" :marginTop="10" + height="40vh" @size-change="handleCardPageSizeChange" @current-change="handleCardPageChange" @selection-change="handleAvailableCardsSelectionChange" @@ -710,14 +711,14 @@ label: '自然月累计流量(MB)', width: 180, formatter: (row: EnterpriseCardItem) => - ((row as any).current_month_usage_mb)?.toLocaleString() || '0' + (row as any).current_month_usage_mb?.toLocaleString() || '0' }, { prop: 'last_month_total_mb', label: '上月流量总量(MB)', width: 150, formatter: (row: EnterpriseCardItem) => - ((row as any).last_month_total_mb)?.toLocaleString() || '0' + (row as any).last_month_total_mb?.toLocaleString() || '0' }, { prop: 'data_usage_mb', @@ -737,7 +738,9 @@ label: '最后实名检查时间', width: 180, formatter: (row: EnterpriseCardItem) => - (row as any).last_real_name_check_at ? formatDateTime((row as any).last_real_name_check_at) : '-' + (row as any).last_real_name_check_at + ? formatDateTime((row as any).last_real_name_check_at) + : '-' }, { prop: 'enable_polling', diff --git a/src/views/polling-management/manual-trigger/index.vue b/src/views/polling-management/manual-trigger/index.vue index b407cd1..a96fbf8 100644 --- a/src/views/polling-management/manual-trigger/index.vue +++ b/src/views/polling-management/manual-trigger/index.vue @@ -53,28 +53,28 @@ :pageSize="pagination.page_size" :total="pagination.total" :marginTop="10" - :row-class-name="getRowClassName" + :actions="getActions" @size-change="handleSizeChange" @current-change="handleCurrentChange" - @row-contextmenu="handleRowContextMenu" - @cell-mouse-enter="handleCellMouseEnter" - @cell-mouse-leave="handleCellMouseLeave" > - - - - - - @@ -85,91 +85,64 @@ :close-on-click-modal="false" @close="handleBatchDialogClose" > - - - - - - - - - -
- -
- 已选择 {{ selectedBatchCards.length }} 张卡 - - 最多选择1000张卡 - -
- - - - - - - - - - +
+ - +
+ 已选择 {{ selectedBatchCards.length }} 张卡 + + + + + + + +
+ + + +
@@ -351,8 +324,21 @@