This commit is contained in:
@@ -39,12 +39,23 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, computed, watch } from 'vue';
|
||||
import { assetApi } from '@/api/index.js';
|
||||
import { useUserStore } from '@/store/index.js';
|
||||
import {
|
||||
ref,
|
||||
computed,
|
||||
watch
|
||||
} from 'vue';
|
||||
import {
|
||||
assetApi
|
||||
} from '@/api/index.js';
|
||||
import {
|
||||
useUserStore
|
||||
} from '@/store/index.js';
|
||||
|
||||
const props = defineProps({
|
||||
identifier: { type: String, default: '' }
|
||||
identifier: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
});
|
||||
|
||||
const emit = defineEmits(['packageLoaded']);
|
||||
@@ -59,7 +70,10 @@
|
||||
// 格式化流量数据(MB 转 GB)
|
||||
const formatTraffic = (mb) => {
|
||||
if (!mb || mb === 0) {
|
||||
return { value: '0.00', unit: 'MB' };
|
||||
return {
|
||||
value: '0.00',
|
||||
unit: 'MB'
|
||||
};
|
||||
}
|
||||
|
||||
if (mb >= 1024) {
|
||||
@@ -102,24 +116,19 @@
|
||||
if (!identifier) return;
|
||||
|
||||
try {
|
||||
const data = await assetApi.getPackageHistory(identifier, 1, 10, { status: 1 });
|
||||
const data = await assetApi.getInfo(identifier);
|
||||
|
||||
if (data.items && data.items.length > 0) {
|
||||
// 只有一个生效中的套餐
|
||||
const activePackage = data.items[0];
|
||||
|
||||
if (activePackage.enable_virtual_data) {
|
||||
usedMB.value = activePackage.virtual_used_mb || 0;
|
||||
if (data.current_package_usage_id) {
|
||||
if (data.enable_virtual_data) {
|
||||
usedMB.value = data.virtual_used_mb || 0;
|
||||
totalMB.value = data.virtual_total_mb || 0;
|
||||
} else {
|
||||
usedMB.value = activePackage.data_usage_mb || 0;
|
||||
usedMB.value = data.real_used_mb || 0;
|
||||
totalMB.value = data.real_total_mb || 0;
|
||||
}
|
||||
totalMB.value = activePackage.data_limit_mb || 0;
|
||||
remainMB.value = totalMB.value - usedMB.value;
|
||||
|
||||
// 将套餐信息(包括到期时间)传递给父组件
|
||||
emit('packageLoaded', activePackage);
|
||||
remainMB.value = Math.max(totalMB.value - usedMB.value, 0);
|
||||
emit('packageLoaded', data);
|
||||
} else {
|
||||
// 没有生效中的套餐
|
||||
usedMB.value = 0;
|
||||
totalMB.value = 0;
|
||||
remainMB.value = 0;
|
||||
@@ -135,7 +144,9 @@ if (activePackage.enable_virtual_data) {
|
||||
if (newVal) {
|
||||
loadPackageData();
|
||||
}
|
||||
}, { immediate: true });
|
||||
}, {
|
||||
immediate: true
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@@ -144,14 +155,23 @@ if (activePackage.enable_virtual_data) {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
gap: 4rpx;
|
||||
.title { font-size: 35rpx; font-weight: 700; margin-right: 5rpx; }
|
||||
|
||||
.title {
|
||||
font-size: 35rpx;
|
||||
font-weight: 700;
|
||||
margin-right: 5rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.traffic-stats {
|
||||
background: var(--gray-100);
|
||||
border-radius: var(--radius-small);
|
||||
padding: 20rpx;
|
||||
margin-top: 16rpx;
|
||||
.stat-item { flex: 1; }
|
||||
|
||||
.stat-item {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
@@ -111,33 +111,28 @@
|
||||
// 获取已使用流量
|
||||
const getUsedFlow = (item) => {
|
||||
if (item.enable_virtual_data) {
|
||||
// 启用虚流量,显示已用虚流量
|
||||
return formatMB(item.virtual_used_mb || 0);
|
||||
} else {
|
||||
// 未启用虚流量,显示已用真流量
|
||||
return formatMB(item.data_usage_mb || 0);
|
||||
return formatMB(item.real_used_mb || 0);
|
||||
}
|
||||
};
|
||||
|
||||
// 获取总流量
|
||||
const getTotalFlow = (item) => {
|
||||
if (item.enable_virtual_data) {
|
||||
// 启用虚流量,显示虚流量总量
|
||||
return formatMB(item.virtual_limit_mb || 0);
|
||||
return formatMB(item.virtual_total_mb || 0);
|
||||
} else {
|
||||
// 未启用虚流量,显示真流量总量
|
||||
return formatMB(item.data_limit_mb || 0);
|
||||
return formatMB(item.real_total_mb || 0);
|
||||
}
|
||||
};
|
||||
|
||||
// 获取剩余流量
|
||||
const getRemainFlow = (item) => {
|
||||
if (item.enable_virtual_data) {
|
||||
// 启用虚流量,显示剩余虚流量
|
||||
return formatMB(item.virtual_remain_mb || 0);
|
||||
const remain = (item.virtual_total_mb || 0) - (item.virtual_used_mb || 0);
|
||||
return formatMB(remain);
|
||||
} else {
|
||||
// 未启用虚流量,计算剩余真流量
|
||||
const remain = (item.data_limit_mb || 0) - (item.data_usage_mb || 0);
|
||||
const remain = (item.real_total_mb || 0) - (item.real_used_mb || 0);
|
||||
return formatMB(remain);
|
||||
}
|
||||
};
|
||||
@@ -147,13 +142,11 @@
|
||||
let used, total;
|
||||
|
||||
if (item.enable_virtual_data) {
|
||||
// 启用虚流量
|
||||
used = item.virtual_used_mb || 0;
|
||||
total = item.virtual_limit_mb || 0;
|
||||
total = item.virtual_total_mb || 0;
|
||||
} else {
|
||||
// 未启用虚流量
|
||||
used = item.data_usage_mb || 0;
|
||||
total = item.data_limit_mb || 0;
|
||||
used = item.real_used_mb || 0;
|
||||
total = item.real_total_mb || 0;
|
||||
}
|
||||
|
||||
if (!total) return 0;
|
||||
|
||||
Reference in New Issue
Block a user