From 9cb99d3e0db2c59f334d1f670ae74ead12717b2d Mon Sep 17 00:00:00 2001
From: admin <344137771@qq.com>
Date: Sun, 11 Jan 2026 15:46:22 +0800
Subject: [PATCH] 1

---
 src/page/home/home.vue |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 50 insertions(+), 2 deletions(-)

diff --git a/src/page/home/home.vue b/src/page/home/home.vue
index fa6d8fd..1f325fc 100644
--- a/src/page/home/home.vue
+++ b/src/page/home/home.vue
@@ -60,7 +60,12 @@
 			<img src="@/assets/img/b1.png"  style="width: 100%;height: 170px;border-radius: 14px;" />
 	  </div> -->
       <div style="margin: 0 10px;margin-top: 30px;margin-bottom: 30px;">
-        <img src="@/assets/img/banner-home.png" style="width: 100%;height: 170px;border-radius: 14px;" />
+        <van-swipe class="banner-swipe" :autoplay="3000" indicator-color="white" v-if="bannerList && bannerList.length > 0">
+          <van-swipe-item v-for="(item, index) in bannerList" :key="index">
+            <img :src="item.bannerUrl" style="width: 100%;height: 4.5rem;border-radius: 14px;object-fit: cover;" @click="handleBannerClick(item)" />
+          </van-swipe-item>
+        </van-swipe>
+        <img v-else src="@/assets/img/banner-home.png" style="width: 100%;height: 170px;border-radius: 14px;" />
       </div>
     </div>
     <div style="width: 100%; height: 40px;"></div>
@@ -281,7 +286,8 @@
       show: false,
       secret: "",
       unreadCount: 0,
-      messageTimer: null
+      messageTimer: null,
+      bannerList: []
     };
   },
   computed: {
@@ -292,6 +298,7 @@
   mounted() {
     this.getNewsList(1);
     this.stockgetZdfNumber();
+    this.getSiteBannerList();
     this.kLineChart = init("Zline");
     this.kLineChart.setStyleOptions({
       candle: {
@@ -568,6 +575,28 @@
           elAlertText: data.msg
         });
       }
+    },
+    async getSiteBannerList() {
+      try {
+        let data = await api.getSiteBanner();
+        if (data.status === 0 && data.data) {
+          let list = Array.isArray(data.data) ? data.data : [];
+          // 按照 isOrder 从小到大排序
+          this.bannerList = list.sort((a, b) => {
+            const orderA = a.isOrder || 0;
+            const orderB = b.isOrder || 0;
+            return orderA - orderB;
+          });
+        }
+      } catch (error) {
+        console.error('获取轮播图失败:', error);
+        this.bannerList = [];
+      }
+    },
+    handleBannerClick(item) {
+      if (item.targetUrl || item.linkUrl) {
+        window.open(item.targetUrl || item.linkUrl, '_blank');
+      }
     }
   }
 };
@@ -719,6 +748,25 @@
       }
     }
   }
+
+  .banner-swipe {
+    width: 100%;
+    height: 4.5rem;
+    border-radius: 14px;
+    overflow: hidden;
+
+    .van-swipe-item {
+      width: 100%;
+      height: 100%;
+
+      img {
+        width: 100%;
+        height: 100%;
+        object-fit: cover;
+        cursor: pointer;
+      }
+    }
+  }
 }
 
 .dang {

--
Gitblit v1.9.3