feat: 添加收益模块,包含总收益概览、收益趋势和收益来源,更新相关组件和路由

This commit is contained in:
2025-12-27 19:55:45 +07:00
parent 0ffd8566c8
commit 4a3de581d8
23 changed files with 458 additions and 72 deletions

View File

@@ -2,6 +2,13 @@
import { calendarOutline, listOutline, timeOutline, walletOutline } from "ionicons/icons";
const { t } = useI18n();
const router = useRouter();
const { vibrate } = useHaptics();
function navigateToTotal() {
vibrate();
router.push("/income/total");
}
</script>
<template>
@@ -10,26 +17,29 @@ const { t } = useI18n();
{{ t("asset.revenue.myRevenue") }}
</ion-label>
<div class="grid grid-cols-4 mt-5">
<div class="col-span-1 flex-col-center gap-2">
<ion-icon :icon="walletOutline" />
<div
class="col-span-1 flex flex-col items-center gap-2 cursor-pointer transition-opacity active:opacity-70"
@click="navigateToTotal"
>
<ion-icon :icon="walletOutline" class="text-2xl text-primary" />
<div class="text-xs">
{{ t("asset.revenue.totalRevenue") }}
</div>
</div>
<div class="col-span-1 flex-col-center gap-2">
<ion-icon :icon="calendarOutline" />
<div class="col-span-1 flex flex-col items-center gap-2 cursor-pointer transition-opacity active:opacity-70">
<ion-icon :icon="calendarOutline" class="text-2xl text-primary" />
<div class="text-xs">
{{ t("asset.revenue.monthlyRevenue") }}
</div>
</div>
<div class="col-span-1 flex-col-center gap-2">
<ion-icon :icon="timeOutline" />
<div class="col-span-1 flex flex-col items-center gap-2 cursor-pointer transition-opacity active:opacity-70">
<ion-icon :icon="timeOutline" class="text-2xl text-primary" />
<div class="text-xs">
{{ t("asset.revenue.pendingRevenue") }}
</div>
</div>
<div class="col-span-1 flex-col-center gap-2">
<ion-icon :icon="listOutline" />
<div class="col-span-1 flex flex-col items-center gap-2 cursor-pointer transition-opacity active:opacity-70">
<ion-icon :icon="listOutline" class="text-2xl text-primary" />
<div class="text-xs">
{{ t("asset.revenue.revenueDetails") }}
</div>
@@ -37,10 +47,3 @@ const { t } = useI18n();
</div>
</div>
</template>
<style lang='css' scoped>
ion-icon {
font-size: 1.5rem;
color: var(--ion-color-primary);
}
</style>

View File

@@ -39,7 +39,7 @@ async function handleScan() {
</script>
<template>
<IonPage>
<ion-page>
<ion-header class="ion-no-border">
<ion-toolbar class="ui-toolbar">
<div slot="end">
@@ -55,7 +55,7 @@ async function handleScan() {
</div>
</ion-toolbar>
</ion-header>
<IonContent :fullscreen="true" class="ion-padding">
<ion-content :fullscreen="true" class="ion-padding">
<ion-refresher slot="fixed" @ion-refresh="handleRefresh($event)">
<ion-refresher-content />
</ion-refresher>
@@ -68,8 +68,8 @@ async function handleScan() {
<MyRevenue />
<TradeSettings />
</div>
</IonContent>
</IonPage>
</ion-content>
</ion-page>
</template>
<style scoped></style>