fix: 套餐用量显示
Some checks failed
构建并部署前端到测试环境 / build-and-deploy (push) Has been cancelled

This commit is contained in:
luo
2026-07-23 11:52:25 +08:00
parent db7b3562da
commit e9c0e17d6a
3 changed files with 14 additions and 20 deletions

View File

@@ -86,10 +86,8 @@ declare module 'vue' {
ElAlert: typeof import('element-plus/es')['ElAlert'] ElAlert: typeof import('element-plus/es')['ElAlert']
ElAvatar: typeof import('element-plus/es')['ElAvatar'] ElAvatar: typeof import('element-plus/es')['ElAvatar']
ElButton: typeof import('element-plus/es')['ElButton'] ElButton: typeof import('element-plus/es')['ElButton']
ElCalendar: typeof import('element-plus/es')['ElCalendar']
ElCard: typeof import('element-plus/es')['ElCard'] ElCard: typeof import('element-plus/es')['ElCard']
ElCascader: typeof import('element-plus/es')['ElCascader'] ElCascader: typeof import('element-plus/es')['ElCascader']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCol: typeof import('element-plus/es')['ElCol'] ElCol: typeof import('element-plus/es')['ElCol']
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
@@ -112,9 +110,7 @@ declare module 'vue' {
ElOption: typeof import('element-plus/es')['ElOption'] ElOption: typeof import('element-plus/es')['ElOption']
ElPagination: typeof import('element-plus/es')['ElPagination'] ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopover: typeof import('element-plus/es')['ElPopover'] ElPopover: typeof import('element-plus/es')['ElPopover']
ElProgress: typeof import('element-plus/es')['ElProgress']
ElRadio: typeof import('element-plus/es')['ElRadio'] ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElRow: typeof import('element-plus/es')['ElRow'] ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
@@ -123,11 +119,7 @@ declare module 'vue' {
ElSwitch: typeof import('element-plus/es')['ElSwitch'] ElSwitch: typeof import('element-plus/es')['ElSwitch']
ElTable: typeof import('element-plus/es')['ElTable'] ElTable: typeof import('element-plus/es')['ElTable']
ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
ElTabPane: typeof import('element-plus/es')['ElTabPane']
ElTabs: typeof import('element-plus/es')['ElTabs']
ElTag: typeof import('element-plus/es')['ElTag'] ElTag: typeof import('element-plus/es')['ElTag']
ElTimeline: typeof import('element-plus/es')['ElTimeline']
ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
ElTooltip: typeof import('element-plus/es')['ElTooltip'] ElTooltip: typeof import('element-plus/es')['ElTooltip']
ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect'] ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
ElUpload: typeof import('element-plus/es')['ElUpload'] ElUpload: typeof import('element-plus/es')['ElUpload']

View File

@@ -36,7 +36,7 @@
<template v-if="isAdminOrPlatform"> <template v-if="isAdminOrPlatform">
<div class="flow-stats-container"> <div class="flow-stats-container">
<!-- 真流量 --> <!-- 真流量 -->
<div v-if="canViewCurrentPackageRealUsage" class="flow-stat-section"> <div v-if="canShowCurrentPackageRealUsage" class="flow-stat-section">
<div class="flow-stat-label">真流量使用</div> <div class="flow-stat-label">真流量使用</div>
<div class="flow-stat-row"> <div class="flow-stat-row">
<span class="stat-item"> <span class="stat-item">
@@ -303,13 +303,17 @@
const canViewCurrentPackageVirtualUsage = computed(() => const canViewCurrentPackageVirtualUsage = computed(() =>
hasAuth('asset_info:view_current_package_virtual_usage') hasAuth('asset_info:view_current_package_virtual_usage')
) )
const canShowCurrentPackageRealUsage = computed(
() =>
canViewCurrentPackageRealUsage.value || props.currentPackage?.enable_virtual_data === false
)
const canShowCurrentPackageVirtualUsage = computed( const canShowCurrentPackageVirtualUsage = computed(
() => () =>
canViewCurrentPackageVirtualUsage.value && props.currentPackage?.enable_virtual_data !== false canViewCurrentPackageVirtualUsage.value && props.currentPackage?.enable_virtual_data !== false
) )
const shouldShowTrafficCard = computed(() => { const shouldShowTrafficCard = computed(() => {
if (!isAdminOrPlatform.value) return true if (!isAdminOrPlatform.value) return true
return canViewCurrentPackageRealUsage.value || canShowCurrentPackageVirtualUsage.value return canShowCurrentPackageRealUsage.value || canShowCurrentPackageVirtualUsage.value
}) })
const descriptionsColumn = computed(() => { const descriptionsColumn = computed(() => {

View File

@@ -69,7 +69,7 @@
<template #default="scope"> <template #default="scope">
<div class="traffic-progress"> <div class="traffic-progress">
<template v-if="isAdminOrPlatform && shouldShowAdminTrafficBreakdown(scope.row)"> <template v-if="isAdminOrPlatform && shouldShowAdminTrafficBreakdown(scope.row)">
<div v-if="canViewCurrentPackageRealUsage" class="progress-text"> <div v-if="canShowPackageRealUsage(scope.row)" class="progress-text">
<span class="used" <span class="used"
>已使用真流量: {{ formatDataSize(scope.row.real_used_mb || 0) }}</span >已使用真流量: {{ formatDataSize(scope.row.real_used_mb || 0) }}</span
> >
@@ -88,7 +88,7 @@
>停机阈值: {{ formatDataSize(scope.row.virtual_total_mb || 0) }}</span >停机阈值: {{ formatDataSize(scope.row.virtual_total_mb || 0) }}</span
> >
</div> </div>
<div v-if="canViewCurrentPackageRealUsage" class="progress-wrapper"> <div v-if="canShowPackageRealUsage(scope.row)" class="progress-wrapper">
<div class="progress-track"> <div class="progress-track">
<ElProgress <ElProgress
style="margin-top: 4px" style="margin-top: 4px"
@@ -123,7 +123,7 @@
<div <div
v-if="canShowPackageVirtualUsage(scope.row)" v-if="canShowPackageVirtualUsage(scope.row)"
class="progress-text" class="progress-text"
:style="{ marginTop: canViewCurrentPackageRealUsage ? '8px' : '0' }" :style="{ marginTop: canShowPackageRealUsage(scope.row) ? '8px' : '0' }"
> >
<span class="used" <span class="used"
>已使用流量: {{ formatDataSize(scope.row.virtual_used_mb || 0) }}</span >已使用流量: {{ formatDataSize(scope.row.virtual_used_mb || 0) }}</span
@@ -300,12 +300,7 @@
width="30%" width="30%"
@closed="resetUsedDataForm" @closed="resetUsedDataForm"
> >
<ElForm <ElForm ref="usedDataFormRef" :model="usedDataForm" :rules="usedDataRules" label-width="90px">
ref="usedDataFormRef"
:model="usedDataForm"
:rules="usedDataRules"
label-width="90px"
>
<ElFormItem label="套餐名称"> <ElFormItem label="套餐名称">
<span>{{ selectedPackage?.package_name || '-' }}</span> <span>{{ selectedPackage?.package_name || '-' }}</span>
</ElFormItem> </ElFormItem>
@@ -595,12 +590,15 @@
// Props 使用 API 类型 // Props 使用 API 类型
type PackageInfo = AssetPackageUsageRecord type PackageInfo = AssetPackageUsageRecord
const canShowPackageRealUsage = (pkg: PackageInfo) =>
canViewCurrentPackageRealUsage.value || pkg.enable_virtual_data === false
const canShowPackageVirtualUsage = (pkg: PackageInfo) => const canShowPackageVirtualUsage = (pkg: PackageInfo) =>
canViewCurrentPackageVirtualUsage.value && pkg.enable_virtual_data !== false canViewCurrentPackageVirtualUsage.value && pkg.enable_virtual_data !== false
const shouldShowAdminTrafficBreakdown = (pkg: PackageInfo) => { const shouldShowAdminTrafficBreakdown = (pkg: PackageInfo) => {
if (!isAdminOrPlatform.value) return true if (!isAdminOrPlatform.value) return true
return canViewCurrentPackageRealUsage.value || canShowPackageVirtualUsage(pkg) return canShowPackageRealUsage(pkg) || canShowPackageVirtualUsage(pkg)
} }
interface Props { interface Props {