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