fix:首页仪表盘中英显示和充值联动
This commit is contained in:
27
src/store/modules/billing/billing.ts
Normal file
27
src/store/modules/billing/billing.ts
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
import { defineStore } from 'pinia';
|
||||||
|
|
||||||
|
interface BillingState {
|
||||||
|
balance: number;
|
||||||
|
usedAmount: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const useBillingStore = defineStore('billing', {
|
||||||
|
state: (): BillingState => ({
|
||||||
|
balance: 23,
|
||||||
|
usedAmount: 77,
|
||||||
|
}),
|
||||||
|
|
||||||
|
actions: {
|
||||||
|
updateBalance(newBalance: number) {
|
||||||
|
this.balance = Number(newBalance.toFixed(2));
|
||||||
|
},
|
||||||
|
updateUsedAmount(newUsedAmount: number) {
|
||||||
|
this.usedAmount = Number(newUsedAmount.toFixed(2));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
getters: {
|
||||||
|
getBalance: (state): number => state.balance,
|
||||||
|
getUsedAmount: (state): number => state.usedAmount
|
||||||
|
}
|
||||||
|
});
|
||||||
@@ -3,7 +3,11 @@ import { computed, watch, ref } from 'vue';
|
|||||||
import { useEcharts } from '@/hooks/common/echarts';
|
import { useEcharts } from '@/hooks/common/echarts';
|
||||||
import { useAppStore } from '@/store/modules/app';
|
import { useAppStore } from '@/store/modules/app';
|
||||||
import type { ECOption } from '@/hooks/common/echarts';
|
import type { ECOption } from '@/hooks/common/echarts';
|
||||||
|
import { useBillingStore } from '@/store/modules/billing/billing';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
|
const { t } = useI18n();
|
||||||
|
const billingStore = useBillingStore();
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'HeaderBanner'
|
name: 'HeaderBanner'
|
||||||
});
|
});
|
||||||
@@ -24,30 +28,30 @@ interface GaugeData {
|
|||||||
const baseData = ref([
|
const baseData = ref([
|
||||||
{
|
{
|
||||||
id: 0,
|
id: 0,
|
||||||
title: '剩余话费',
|
title: t('page.headerbanner.Remainingcredit'),
|
||||||
value: 23,
|
value: 23,
|
||||||
max: 100,
|
max: 100,
|
||||||
unit: '元',
|
unit: '元',
|
||||||
description: '本月话费',
|
description: t('page.headerbanner.monthphonebill'),
|
||||||
subTitle: '已用: 77元'
|
subTitle: t('page.headerbanner.Used')+'77元'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 1,
|
id: 1,
|
||||||
title: '剩余流量',
|
title: t('page.headerbanner.Flowremaining'),
|
||||||
value: 890,
|
value: 890,
|
||||||
max: 1024,
|
max: 1024,
|
||||||
unit: 'MB',
|
unit: 'MB',
|
||||||
description: '本月流量',
|
description: t('page.headerbanner.monthflowr'),
|
||||||
subTitle: '已用: 134MB'
|
subTitle: t('page.headerbanner.Used')+'134MB'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 2,
|
id: 2,
|
||||||
title: '流量速率',
|
title: t('page.headerbanner.Trafficrate'),
|
||||||
value: 3,
|
value: 3,
|
||||||
max: 10,
|
max: 10,
|
||||||
unit: 'MB/s',
|
unit: 'MB/s',
|
||||||
description: '当前速度',
|
description: t('page.headerbanner.Currentspeed'),
|
||||||
subTitle: '峰值: 8MB/s'
|
subTitle: t('page.headerbanner.maxspeed')+'8MB/s'
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -192,10 +196,14 @@ function updateBillingData() {
|
|||||||
// 更新话费数据
|
// 更新话费数据
|
||||||
const remainingBill = Number((Math.random() * 50).toFixed(2)); // 0-50元
|
const remainingBill = Number((Math.random() * 50).toFixed(2)); // 0-50元
|
||||||
const usedBill = Number((100 - remainingBill).toFixed(2));
|
const usedBill = Number((100 - remainingBill).toFixed(2));
|
||||||
|
// 更新 store 中的数据
|
||||||
|
billingStore.updateBalance(remainingBill);
|
||||||
|
billingStore.updateUsedAmount(usedBill);
|
||||||
|
|
||||||
baseData.value[0] = {
|
baseData.value[0] = {
|
||||||
...baseData.value[0],
|
...baseData.value[0],
|
||||||
value: remainingBill,
|
value: remainingBill,
|
||||||
subTitle: `已用: ${usedBill}元`
|
subTitle: t('page.headerbanner.Used')+`: ${usedBill}元`
|
||||||
};
|
};
|
||||||
|
|
||||||
// 更新流量数据
|
// 更新流量数据
|
||||||
@@ -204,7 +212,7 @@ function updateBillingData() {
|
|||||||
baseData.value[1] = {
|
baseData.value[1] = {
|
||||||
...baseData.value[1],
|
...baseData.value[1],
|
||||||
value: remainingData,
|
value: remainingData,
|
||||||
subTitle: `已用: ${usedData}MB`
|
subTitle: t('page.headerbanner.Used')+`: ${usedData}MB`
|
||||||
};
|
};
|
||||||
|
|
||||||
// 更新图表
|
// 更新图表
|
||||||
@@ -240,7 +248,7 @@ function resetPeakSpeed() {
|
|||||||
baseData.value[2] = {
|
baseData.value[2] = {
|
||||||
...baseData.value[2],
|
...baseData.value[2],
|
||||||
value: 0, // 同时也将当前值重置为 0
|
value: 0, // 同时也将当前值重置为 0
|
||||||
subTitle: `峰值: ${peakSpeed.value.toFixed(2)}MB/s`
|
subTitle: t('page.headerbanner.maxspeed')+`: ${peakSpeed.value.toFixed(2)}MB/s`
|
||||||
};
|
};
|
||||||
// 更新图表
|
// 更新图表
|
||||||
updateGauge3(opts => updateGaugeData(opts, baseData.value[2]));
|
updateGauge3(opts => updateGaugeData(opts, baseData.value[2]));
|
||||||
@@ -270,7 +278,7 @@ function mockDataUpdate() {
|
|||||||
baseData.value[2] = {
|
baseData.value[2] = {
|
||||||
...baseData.value[2],
|
...baseData.value[2],
|
||||||
value: Number(speedValue.toFixed(2)),
|
value: Number(speedValue.toFixed(2)),
|
||||||
subTitle: `峰值: ${peakSpeed.value.toFixed(2)}MB/s`
|
subTitle: t('page.headerbanner.maxspeed')+`: ${peakSpeed.value.toFixed(2)}MB/s`
|
||||||
};
|
};
|
||||||
|
|
||||||
// 更新图表
|
// 更新图表
|
||||||
|
|||||||
Reference in New Issue
Block a user