From 4f9044ae2a9f2db03bbb916bc5f6dfd12916361d Mon Sep 17 00:00:00 2001
From: 李 <344137771@qq.com>
Date: Wed, 03 Jun 2026 16:10:01 +0800
Subject: [PATCH] 1

---
 src/views/cryptos/financialManagement/fundHome.vue |  321 +++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 224 insertions(+), 97 deletions(-)

diff --git a/src/views/cryptos/financialManagement/fundHome.vue b/src/views/cryptos/financialManagement/fundHome.vue
index d8331e9..b2eb9f4 100644
--- a/src/views/cryptos/financialManagement/fundHome.vue
+++ b/src/views/cryptos/financialManagement/fundHome.vue
@@ -1,68 +1,59 @@
 <template>
-  <div id="fundHome">
-    <div class="fundHome">
-      <assets-head :title="$t('基金理财')"></assets-head>
-      <div class="box-border px-8 mt-10">
-        <div class="flex justify-between text-grey relative">
-          <div class="flex flex-col">
-            <span class="text-grey text-30">{{ $t('托管金额') }}(USDT)</span>
-            <span class="text-66 mt-5 font-bold textColor">{{ statiscis.amount_sum }}</span>
-          </div>
-        </div>
-        <div class="flex mt-11 justify-between text-26 mb-2">
-          <div class="flex flex-col ">
-            <div class="text-grey text-26">{{ $t('预计日收益') }}(USDT)</div>
-            <div class="mt-4 mb-2  text-36 textColor">{{ statiscis.today_profit }}</div>
-          </div>
-          <div class="flex flex-col">
-            <div class="text-grey text-26">{{ $t('累计收益') }}(USDT)</div>
-            <div class="mt-4 mb-2 text-36 textColor">{{ statiscis.aready_profit }}</div>
-          </div>
-          <div class="flex flex-col">
-            <div class="text-grey text-26">{{ $t('托管订单') }}(USDT)</div>
-            <div class="mt-4 mb-2 text-36 textColor">{{ statiscis.order_sum }}</div>
-          </div>
+  <div id="fundHome" class="fund-home-page">
+    <!-- 头部:左侧标题 AI理财,右侧图标跳转托管订单 -->
+    <div class="page-header">
+      <h1 class="header-title">{{ $t('AI理财') }}</h1>
+      <div class="header-right" @click="$router.push('/cryptos/fund-orders')">
+        <div class="order-icon">
+          <span class="line"></span>
+          <span class="line"></span>
+          <span class="line"></span>
         </div>
       </div>
-      <div class="flex justify-between box-border px-8 mt-10">
-        <div @click="$router.push('/cryptos/funds?tab=3&index=0&type=cryptos')"
-          class="greyBg textColor w-96 py-3 rounded-md text-center text-28 mr-5 active">{{ $t('托管订单') }}
-        </div>
-        <div @click="$router.push('/cryptos/fund-rule')"
-          class="greyBg text-grey w-96 py-3 rounded-md text-center text-28">
-          {{ $t('规则') }}</div>
-      </div>
-      <div class="px-8 mt-10 pb-20">
-        <div v-for="(item, index) in list" :key="index"
-          class="card flex justify-between items-center relative rounded-md borderColor financialBackground ">
-          <div class="title absolute px-4 py-2 text-26 text-white bg-green top-0 left-22">{{ $t('日收益率')
-          }} <span class="ml-2">{{ item.daily_rate }}%</span></div>
-          <div class="flex justify-center items-center">
-            <img class="w-32 h-32 mr-5" :src="item.img" alt="">
-            <div class="flex flex-col items-start">
-              <span class="text-36 font-semibold textColor">
-                <template v-if="$i18n.locale === 'CN'">
-                  {{ item.name_cn }}
-                </template>
-                <template v-else-if="$i18n.locale === 'zh-CN'">
-                  {{ item.name }}
-                </template>
-                <template v-else>
-                  {{ item.name_en }}
-                </template>
-              </span>
-              <span class="text-26 mt-6 mb-4 textColor">{{ $t('限额') }} {{ item.investment_min + ' ~ ' +
-                item.investment_max }}
-                USDT</span>
-              <span class="text-26 textColor">{{ $t('周期') }} {{ item.cycle }} {{ $t('天') }}</span>
-            </div>
+    </div>
+
+    <!-- 轮播图:简体/繁体用原图,其他语言用 _e 图 -->
+    <div class="banner-swipe">
+      <van-swipe class="banner-swipe__wrap" :autoplay="4000" indicator-color="#92D1FF">
+        <van-swipe-item>
+          <img :src="bannerImgs[0]" alt="" class="banner-img" />
+        </van-swipe-item>
+        <van-swipe-item>
+          <img :src="bannerImgs[1]" alt="" class="banner-img" />
+        </van-swipe-item>
+        <van-swipe-item>
+          <img :src="bannerImgs[2]" alt="" class="banner-img" />
+        </van-swipe-item>
+      </van-swipe>
+    </div>
+
+    <!-- 理财产品卡片列表 -->
+    <div class="product-list">
+      <div v-for="(item, index) in list" :key="index" class="product-card">
+        <div class="card-top">
+          <div class="card-title-row">
+            <img class="product-icon" :src="item.img" alt="" />
+            <span class="product-name textColor">
+              <template v-if="$i18n.locale === 'CN'">{{ item.name_cn }}</template>
+              <template v-else-if="$i18n.locale === 'zh-CN'">{{ item.name }}</template>
+              <template v-else>{{ item.name_en }}</template>
+            </span>
           </div>
-          <div @click="$router.push({
-            path: '/cryptos/fund-buy',
-            query: {
-              ...item
-            }
-          })" class="active py-4 px-8 text-30 font-semibold rounded-md">{{ $t('立即买入') }}</div>
+          <div class="cycle-tag">{{ item.cycle }}{{ $t('天') }}</div>
+        </div>
+
+        <div class="card-body">
+          <div class="info-row">
+            <span class="label textColor1">{{ $t('收益率') }}</span>
+            <span class="value textColor">{{ item.daily_rate }}%</span>
+          </div>
+          <div class="info-row">
+            <span class="label textColor1">{{ $t('认购价格') }}</span>
+            <span class="value textColor">{{ item.investment_min }}-{{ item.investment_max }} USD</span>
+          </div>
+        </div>
+        <div class="join-btn" @click="$router.push({ path: '/cryptos/fund-buy', query: { ...item } })">
+          {{ $t('立即参与') }}
         </div>
       </div>
     </div>
@@ -70,79 +61,215 @@
 </template>
 
 <script>
-import assetsHead from '@/components/Transform/assets-head/index.vue';
+import { Swipe, SwipeItem } from 'vant'
 import { financeStatics, getfinacialProductsList } from "@/service/financialManagement.api.js";
+import banner1 from '@/assets/image/fund/banner1.jpg'
+import banner2 from '@/assets/image/fund/banner2.jpg'
+import banner3 from '@/assets/image/fund/banner3.jpg'
+import banner1E from '@/assets/image/fund/banner1_e.jpg'
+import banner2E from '@/assets/image/fund/banner2_e.jpg'
+import banner3E from '@/assets/image/fund/banner3_e.jpg'
 
 export default {
   name: "fundHome",
   components: {
-    assetsHead,
+    [Swipe.name]: Swipe,
+    [SwipeItem.name]: SwipeItem
   },
   data() {
     return {
       statiscis: {},
-      list: []
+      list: [],
+      bannerImgsZh: [banner1, banner2, banner3],
+      bannerImgsEn: [banner1E, banner2E, banner3E]
     }
   },
-  methods: {
+  computed: {
+    // 简体中文(zh-CN)或繁体(CN)用原图,其他语言用 _e 图
+    bannerImgs() {
+      const locale = this.$i18n?.locale || ''
+      const isZh = locale === 'zh-CN' || locale === 'CN'
+      return isZh ? this.bannerImgsZh : this.bannerImgsEn
+    }
   },
   activated() {
     getfinacialProductsList().then(res => {
-      //console.log('理财列表', res)
-      this.list = res
+      this.list = res || []
     })
     financeStatics().then(res => {
-      //console.log('理财统计', res)
-      this.statiscis = res
+      this.statiscis = res || {}
     })
   },
   created() {
     getfinacialProductsList().then(res => {
-      //console.log('理财列表',res)
-      this.list = res
+      this.list = res || []
     })
     financeStatics().then(res => {
-      //console.log('理财统计',res)
-      this.statiscis = res
+      this.statiscis = res || {}
     })
   }
 }
 </script>
 
 <style lang="scss" scoped>
-#fundHome {
+@import '@/assets/css/variable.scss';
 
-  .fundHome {
-    width: 100%;
-    box-sizing: border-box;
-  }
+.fund-home-page {
+  min-height: 100vh;
+  background: $main_background;
+  padding-bottom: 4rem;
+  box-sizing: border-box;
+}
 
-  .active {
+.page-header {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  height: 8.8rem;
+  padding: 0 2.4rem;
+  background: #fff;
+  box-sizing: border-box;
+
+  .header-title {
+    font-size: 3.4rem;
+    font-weight: 700;
     color: $text_color;
-
-    // @include themify() {
-    //   background: themed("btn_main") !important;
-    // }
-
-    // @include themify() {
-    //   border-color: themed("btn_main") !important;
-    // }
-
+    margin: 0;
   }
 
-  .title {
-    border-radius: 0 0 8px 8px;
+  .header-right {
+    width: 4rem;
+    height: 4rem;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    cursor: pointer;
   }
 
-  .card {
-    padding: 80px 22px 22px 22px;
-    margin-bottom: 32px;
+  .order-icon {
+    width: 3.2rem;
+    height: 3.2rem;
+    border: 0.15rem solid $text_color1;
+    border-radius: 0.6rem;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+    gap: 0.35rem;
+
+    .line {
+      display: block;
+      width: 1.6rem;
+      height: 0.12rem;
+      background: $text_color1;
+      border-radius: 0.06rem;
+    }
+  }
+}
+
+.banner-swipe {
+  margin: 2rem 2.4rem;
+  border-radius: 1.2rem;
+  overflow: hidden;
+}
+
+.banner-swipe__wrap {
+  border-radius: 1.2rem;
+}
+
+.banner-swipe__wrap :deep(.van-swipe-item) {
+  width: 100%;
+}
+
+.banner-img {
+  width: 100%;
+  height: auto;
+  display: block;
+  object-fit: cover;
+}
+
+.product-list {
+  padding: 0 2.4rem 4rem;
+}
+
+.product-card {
+  background: #fff;
+  border-radius: 1.2rem;
+  padding: 2.2rem 2rem 2rem;
+  margin-bottom: 2rem;
+  box-shadow: 0rem .8rem 3.2rem 0rem rgba(0, 0, 0, .16);
+  border: 0.1rem solid $border_color;
+  box-sizing: border-box;
+}
+
+.card-top {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  margin-bottom: 2rem;
+}
+
+.card-title-row {
+  display: flex;
+  align-items: center;
+  gap: 1rem;
+}
+
+.product-icon {
+  width: 4rem;
+  height: 4rem;
+  border-radius: 0.8rem;
+  object-fit: cover;
+}
+
+.product-name {
+  font-size: 2.4rem;
+  font-weight: 600;
+}
+
+.cycle-tag {
+  background: #0cc38d;
+  color: #fff;
+  font-size: 1.4rem;
+  padding: 0.6rem 4rem;
+  border-radius: .8rem;
+}
+
+.card-body {
+  margin-bottom: 2rem;
+  border-top: solid 1px #f3f3f3;
+  margin-top: 2.4rem;
+  padding-top: 2.4rem;
+}
+
+.info-row {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  padding: 1rem 0;
+  font-size: 2.2rem;
+
+  .label {
+    color: $text_color1;
   }
 
-  .active {
-    color: $white;
-    background: $btn_main;
-    border-color: $btn_main;
+  .value {
+    color: $text_color;
   }
 }
+
+.join-btn {
+  width: 100%;
+  height: 6rem;
+  line-height: 6rem;
+  text-align: center;
+  background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
+  color: #fff;
+  font-size: 2.2rem;
+  font-weight: 500;
+  border-radius: 1rem;
+  cursor: pointer;
+  border: none;
+  box-sizing: border-box;
+}
 </style>

--
Gitblit v1.9.3