From 349c48e168b9f2580334422228acde7d1b21bede Mon Sep 17 00:00:00 2001
From: 李凌 <344137771@qq.com>
Date: Fri, 05 Jun 2026 11:19:15 +0800
Subject: [PATCH] 1
---
src/components/Transform/assetsCenter/overview.vue | 414 +++++++++++++++++++++++++++++++++++------------------------
1 files changed, 246 insertions(+), 168 deletions(-)
diff --git a/src/components/Transform/assetsCenter/overview.vue b/src/components/Transform/assetsCenter/overview.vue
index d9b9cc2..4c792e3 100644
--- a/src/components/Transform/assetsCenter/overview.vue
+++ b/src/components/Transform/assetsCenter/overview.vue
@@ -1,86 +1,97 @@
<template>
- <div class="box-border">
- <div class="pl-33 pr-33 total_wrap">
- <div class="flex justify-between text-grey relative">
- <div class="flex">
- <span class="text-grey font-30">{{ $t('总资产') }}(USDT)</span>
- <div @click.stop="changeEyes">
- <img :src="handleImage('../../../assets/image/assets-center/eye-open.png')" class="w-32 h-18"
- v-show="!eyetel" />
- <img :src="handleImage('../../../assets/image/assets-center/eye-close.png')" class="w-32 h-18"
- v-show="eyetel" />
+ <div class="funds-overview">
+ <!-- 总资产卡片 -->
+ <div class="balance-hero">
+ <div class="balance-hero-top">
+ <div class="balance-label">
+ <span>{{ $t('总资产') }}(USDT)</span>
+ <div class="eye-btn" @click.stop="changeEyes">
+ <img :src="handleImage('../../../assets/image/assets-center/eye-open.png')" v-show="!eyetel" />
+ <img :src="handleImage('../../../assets/image/assets-center/eye-close.png')" v-show="eyetel" />
</div>
</div>
- <div class="right-clock" @click="goRouter('/cryptos/exchangeHistory')">
- <img :src="handleImage('../../../assets/image/assets-center/Subtract.png')" class="w-34 h-40" />
+ <div class="history-btn" @click="goRouter('/cryptos/exchangeHistory')">
+ <img :src="handleImage('../../../assets/image/assets-center/Subtract.png')" />
</div>
</div>
- <div class="font-700 font-66 mt-18 textColor" v-if="!eyetel">{{ funds.total || '--' }}
- <span class="font-40 text-grey">≈{{ currency.currency_symbol }}{{ funds.total ? (funds.total *
- currency.rate).toFixed(2) : ' --' }}</span>
+ <div class="balance-amount" v-if="!eyetel">{{ funds.total || '--' }}</div>
+ <div class="balance-amount" v-else>********</div>
+ <div class="balance-fiat" v-if="!eyetel">
+ ≈{{ currency.currency_symbol }}{{ funds.total ? (funds.total * currency.rate).toFixed(2) : ' --' }}
</div>
- <div class="font-70 font-66 mt-18 textColor" v-else>********</div>
+ <div class="balance-fiat" v-else>≈{{ currency.currency_symbol }} ********</div>
</div>
- <div class="pl-33 pr-33 btn-box flex justify-between">
- <div class="text-white font-25 textColor tabBackground" @click="goRouter('/cryptos/recharge/rechargeList')">
- <div class="word-wrap">
- <img :src="handleImage(`../../../assets/theme/dark/image/assets/up.png`)" alt="">
- <span> {{ $t('充币') }}</span>
+
+ <!-- 快捷操作 -->
+ <div class="quick-actions">
+ <div class="action-item" @click="goRouter('/cryptos/recharge/rechargeList')">
+ <div class="action-icon deposit">
+ <img :src="handleImage(`../../../assets/theme/${THEME}/image/assets/up.png`)" alt="" />
</div>
+ <span>{{ $t('充币') }}</span>
</div>
- <div class="text-white font-25 textColor tabBackground" @click="withdrawBtn">
- <div class="word-wrap">
- <img :src="handleImage(`../../../assets/theme/dark/image/assets/down.png`)" alt="">
- <span>{{ $t('提币') }}</span>
+ <div class="action-item" @click="withdrawBtn">
+ <div class="action-icon withdraw">
+ <img :src="handleImage(`../../../assets/theme/${THEME}/image/assets/down.png`)" alt="" />
</div>
+ <span>{{ $t('提币') }}</span>
</div>
- <div class="text-white font-25 textColor tabBackground" @click="goRouter('/cryptos/exchangePage')">
- <div class="word-wrap">
- <img :src="handleImage(`../../../assets/theme/dark/image/assets/l_r.png`)" alt="">
- <span>{{ $t('闪兑') }}</span>
+ <div class="action-item" @click="goRouter('/cryptos/exchangePage')">
+ <div class="action-icon swap">
+ <img :src="handleImage(`../../../assets/theme/${THEME}/image/assets/l_r.png`)" alt="" />
</div>
+ <span>{{ $t('闪兑') }}</span>
+ </div>
+ <div class="action-item" @click="goRouter('/my/transfer')">
+ <div class="action-icon transfer">
+ <img :src="handleImage('../../../assets/imgs/assets/huazhuan.png')" alt="" />
+ </div>
+ <span>{{ $t('划转') }}</span>
</div>
</div>
- <!-- <div class="divider-line"></div>-->
- <div class="pl-30 pr-30">
- <div class="assets-content-title font-35 titleColor">{{ $t('投资组合') }}</div>
- <div class="assets-list font-30 flex justify-between" v-for="(item, index) in list" :key="index">
- <div class="items-center">
- <img :src="handleImage('../../../assets/image/assets-center/funds/' + item.icon + '.png')" class="w-44 h-44" />
- <div class="text-grey symbol-name font-30 textColor2">{{ $t(item.text) }}</div>
+
+ <!-- 账户分布 -->
+ <div class="section-header">
+ <span class="section-title">{{ $t('投资组合') }}</span>
+ </div>
+ <div class="portfolio-list">
+ <div class="portfolio-card" v-for="(item, index) in list" :key="index">
+ <div class="portfolio-left">
+ <div class="portfolio-icon">
+ <img :src="handleImage('../../../assets/image/assets-center/funds/' + item.icon + '.png')" />
+ </div>
+ <span class="portfolio-name">{{ $t(item.text) }}</span>
</div>
- <div class="flex-col font-30 text-right" v-if="!eyetel">
- <div class="textColor">{{ funds[item.key] || '--' }} USDT</div>
- <div class="text-grey font-30 font-400 mb-0">≈{{ currency.currency_symbol }} {{ funds[item.key] ?
- (funds[item.key]
- * currency.rate).toFixed(2) : ' --' }}</div>
+ <div class="portfolio-right" v-if="!eyetel">
+ <div class="portfolio-value">{{ funds[item.key] || '--' }} USDT</div>
+ <div class="portfolio-fiat">
+ ≈{{ currency.currency_symbol }} {{ funds[item.key] ? (funds[item.key] * currency.rate).toFixed(2) : ' --' }}
+ </div>
</div>
- <div class="flex-col font-30 text-right" v-if="eyetel">
- <div class="textColor">******** USDT</div>
- <div class="text-grey">≈{{ currency.currency_symbol }} ********</div>
+ <div class="portfolio-right" v-else>
+ <div class="portfolio-value">********</div>
+ <div class="portfolio-fiat">≈{{ currency.currency_symbol }} ********</div>
</div>
</div>
</div>
</div>
</template>
+
<script>
-import { _getWallet } from '@/service/fund.api';
-import { Dialog } from 'vant';
-import { mapGetters } from "vuex";
+import { Dialog } from 'vant'
+import { mapGetters } from 'vuex'
import { THEME } from '@/config/theme'
+
export default {
name: 'AssetsPage',
components: {
- [Dialog.name]: Dialog,
+ [Dialog.name]: Dialog
},
props: ['funds'],
data() {
return {
THEME,
- // total:"",
- // status:"", //身份认证状态 0已申请未审核,1审核中,2审核通过,3审核未通过
- eyetel: false,
- active: 0,
+ eyetel: false
}
},
computed: {
@@ -91,159 +102,226 @@
{ id: 2, text: this.$t('合约账户 (U本位)'), icon: 'contract_u', key: 'money_contract' },
{ id: 3, text: this.$t('交割合约账户'), icon: 'contract_d', key: 'money_futures' },
{ id: 4, text: this.$t('理财账户'), icon: 'invest', key: 'money_finance' },
- { id: 5, text: this.$t('矿机资产'), icon: 'mining', key: 'money_miner' },
+ { id: 5, text: this.$t('矿机资产'), icon: 'mining', key: 'money_miner' }
]
- },
- },
- mounted() {
- // this.getData();
- // this.getList();
+ }
},
methods: {
handleImage(url) {
return new URL(url, import.meta.url).href
},
- onClickLeft() {
- this.$router.go(-1);
- },
goRouter(parmas) {
if (parmas === '/cryptos/exchangeHistory') {
this.$router.push({ path: parmas, query: { type: 0 } })
} else {
- this.$router.push(parmas);
+ this.$router.push(parmas)
}
- },
- getList() {
- _getWallet().then((data) => {
- this.list = data.extends;
- });
},
changeEyes() {
- this.eyetel = !this.eyetel;
+ this.eyetel = !this.eyetel
},
- beforeClose(action, done) {
- if (action === 'confirm') {
- setTimeout(done, 1000);
- } else {
- done();
- }
- },
- //跳转提币页面
withdrawBtn() {
- //身份已认证,直接跳转,未认证则提示跳身份认证页
- // if(this.funds.status==2) {
- // this.$router.push({
- // path:'/cryptos/withdraw/withdrawPage'
- // });
- // }else{
- // Dialog.confirm({
- // confirmButtonText:this.$t('确定'),
- // cancelButtonText:this.$t('取消'),
- // title: this.$t('提示'),
- // message: this.$t('请进行身份KYC认证'),
- // beforeClose: (action, done) => {
- // if (action === 'confirm') {
- // done();
- // this.$router.push({
- // path:'/authentication'
- // });
- // } else {
- // done();
- // }
- // },
- // });
- // }
- this.$router.push({
- path: '/cryptos/withdraw/withdrawPage'
- });
- },
-
- },
-
+ this.$router.push({ path: '/cryptos/withdraw/withdrawPage' })
+ }
+ }
}
</script>
<style lang="scss" scoped>
-@import "@/assets/init.scss";
+@import '@/assets/init.scss';
-#cryptos {
- .right-clock {
- position: absolute;
- top: 0;
- right: -3px;
+.funds-overview {
+ padding-top: 16px;
+ padding-bottom: 40px;
+}
+
+.balance-hero {
+ padding: 36px 32px;
+ border-radius: 24px;
+ background: linear-gradient(135deg, #1a6dff 0%, #004aee 55%, #0035b8 100%);
+ color: #fff;
+ box-shadow: 0 16px 40px rgba(0, 74, 238, 0.28);
+ margin-bottom: 28px;
+}
+
+.balance-hero-top {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 16px;
+}
+
+.balance-label {
+ display: flex;
+ align-items: center;
+ gap: 16px;
+ font-size: 26px;
+ opacity: 0.9;
+}
+
+.eye-btn img {
+ width: 36px;
+ height: 22px;
+}
+
+.history-btn img {
+ width: 36px;
+ height: 42px;
+ opacity: 0.85;
+}
+
+.balance-amount {
+ font-size: 64px;
+ font-weight: 700;
+ line-height: 1.15;
+ word-break: break-all;
+}
+
+.balance-fiat {
+ margin-top: 10px;
+ font-size: 28px;
+ opacity: 0.85;
+}
+
+.quick-actions {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ gap: 16px;
+ margin-bottom: 36px;
+}
+
+.action-item {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 10px;
+ padding: 20px 8px;
+ border-radius: 20px;
+ @include themify() {
+ background: themed('cont_background');
}
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04);
- .total_wrap {
- margin-top: 44px;
- }
-
- .asset-title-box {
- margin: 40px 0;
- }
-
- .btn-box {
- margin-top: 44px;
- }
-
- .btn-box>div {
- width: 234px;
- padding: 20px 15px;
- box-sizing: border-box;
- text-align: center;
- border-radius: 8.8px;
- font-size: 26.5px;
- display: flex;
- justify-content: center;
- align-items: center;
-
- .word-wrap {
- display: flex;
- align-items: center;
- justify-content: center;
-
- img {
- width: 40px;
- height: 40px;
- margin-right: 22px;
- }
-
- span {
- font-size: 26.5px;
- }
+ span {
+ font-size: 24px;
+ @include themify() {
+ color: themed('text_color');
}
}
+}
- .mr60 {
- margin-right: 60px;
+.action-icon {
+ width: 80px;
+ height: 80px;
+ border-radius: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ img {
+ width: 40px;
+ height: 40px;
}
- .divider-line {
- border-bottom: 1px solid $border-grey;
- padding-bottom: 80px;
+ &.deposit {
+ background: rgba(26, 109, 255, 0.12);
}
- .assets-content-title {
- margin-top: 60px;
- margin-bottom: 55px;
+ &.withdraw {
+ background: rgba(230, 84, 97, 0.12);
}
- .assets-list {
- margin-bottom: 35px;
+ &.swap {
+ background: rgba(46, 189, 133, 0.12);
}
- .assets-list>div {
- display: flex;
+ &.transfer {
+ background: rgba(255, 152, 0, 0.12);
}
+}
- .assets-list>div:nth-child(2) div:nth-child(1) {
- margin-bottom: 16px;
- font-size: 30px;
- font-weight: 700;
+.section-header {
+ margin-bottom: 20px;
+}
+
+.section-title {
+ font-size: 32px;
+ font-weight: 600;
+ @include themify() {
+ color: themed('text_color');
}
+}
- .symbol-name {
- margin-left: 17px;
- //margin-top:10px;
+.portfolio-list {
+ display: flex;
+ flex-direction: column;
+ gap: 16px;
+}
+
+.portfolio-card {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 28px 24px;
+ border-radius: 20px;
+ @include themify() {
+ background: themed('cont_background');
+ }
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04);
+}
+
+.portfolio-left {
+ display: flex;
+ align-items: center;
+ gap: 20px;
+ flex: 1;
+ min-width: 0;
+}
+
+.portfolio-icon {
+ width: 72px;
+ height: 72px;
+ border-radius: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: rgba(0, 74, 238, 0.08);
+ flex-shrink: 0;
+
+ img {
+ width: 44px;
+ height: 44px;
+ }
+}
+
+.portfolio-name {
+ font-size: 28px;
+ line-height: 1.3;
+ @include themify() {
+ color: themed('text_color');
+ }
+}
+
+.portfolio-right {
+ text-align: right;
+ flex-shrink: 0;
+ margin-left: 16px;
+}
+
+.portfolio-value {
+ font-size: 30px;
+ font-weight: 600;
+ @include themify() {
+ color: themed('text_color');
+ }
+}
+
+.portfolio-fiat {
+ margin-top: 6px;
+ font-size: 24px;
+ @include themify() {
+ color: themed('text_color1');
}
}
</style>
--
Gitblit v1.9.3