From d8136d2b9065977e2607453e8fbf2e0f6b7c0158 Mon Sep 17 00:00:00 2001
From: zuoxiao <zuoxiao>
Date: 星期五, 29 八月 2025 16:59:13 +0800
Subject: [PATCH] 更新监测页面,添加分页功能以提升用户体验;修改视频列表接口调用逻辑,优化数据处理;更新样式以增强可视化效果。

---
 app.json                                 |    2 
 pages/stationMonitor/stationMonitor.js   |   64 +++++++++++-
 utils/projectConfig.js                   |    4 
 pages/stationMonitor/stationMonitor.wxml |   35 ++++++
 pages/stationMonitor/stationMonitor.wxss |  161 +++++++++++++++++++++++++++++++
 5 files changed, 249 insertions(+), 17 deletions(-)

diff --git a/app.json b/app.json
index a29ee14..d88b19a 100644
--- a/app.json
+++ b/app.json
@@ -33,7 +33,7 @@
   "lazyCodeLoading": "requiredComponents",
   "plugins": {
     "ezplayer": {
-        "version": "1.0.13",
+        "version": "1.1.0",
         "provider": "wxf2b3a0262975d8c2"
     }
 }
diff --git a/pages/stationMonitor/stationMonitor.js b/pages/stationMonitor/stationMonitor.js
index bc5b271..518c246 100644
--- a/pages/stationMonitor/stationMonitor.js
+++ b/pages/stationMonitor/stationMonitor.js
@@ -35,7 +35,12 @@
       videoHeight: 400,
       buttonHeight: 72,
       fontSize: 26
-    }
+    },
+    // 鍒嗛〉鐩稿叧鏁版嵁
+    currentPage: 1,
+    pageSize: 4,
+    totalCount: 0,
+    totalPages: 0
   },
 
   /**
@@ -358,27 +363,42 @@
       return;
     }
 
+    // 閲嶇疆鍒嗛〉鐘舵�佸苟鑾峰彇绗竴椤垫暟鎹�
     this.setData({
-      isLoading: true
+      currentPage: 1,
+      totalCount: 0,
+      totalPages: 0
     });
 
     // 璋冪敤鐪熷疄鎺ュ彛鑾峰彇鎽勫儚澶村垪琛�
-    this.getVideoListFromApi();
+    this.getVideoListFromApi(1);
   },
 
   /**
    * 浠庢帴鍙h幏鍙栬棰戝垪琛�
    */
-  getVideoListFromApi() {
-    console.log('寮�濮嬭皟鐢� /wx/video/all 鎺ュ彛鑾峰彇瑙嗛鍒楄〃');
+  getVideoListFromApi(page = 1) {
+    console.log(`寮�濮嬭皟鐢� /wx/video/some 鎺ュ彛鑾峰彇瑙嗛鍒楄〃锛岄〉鐮侊細${page}`);
    
-    get({url:'/wx/video/all'} )
+    this.setData({
+      currentPage: page,
+      isLoading: true
+    });
+
+    get({
+      url: '/wx/video/some',
+      data: {
+        pageCurr: page,
+        pageSize: this.data.pageSize
+      }
+    })
       .then(response => {
         console.log('鎺ュ彛杩斿洖鏁版嵁:', response);
         
         if (response.success && response.code === '0001') {
-          // 澶勭悊杩斿洖鐨勬憚鍍忓ご鏁版嵁
-          const cameraList = response.content.map(item => {
+          // 澶勭悊杩斿洖鐨勬憚鍍忓ご鏁版嵁 - 鏂扮殑鏁版嵁缁撴瀯
+          const cameraData = response.content.obj || [];
+          const cameraList = cameraData.map(item => {
             // 鏍规嵁devNo鐢熸垚RTMP URL
             const channelNo = 1; // 榛樿閫氶亾鍙�
             const rtmpUrl = `rtmp://open.ys7.com/${item.devNo}/${channelNo}/live`;
@@ -403,8 +423,14 @@
             };
           });
 
+          // 浠庢柊鐨勬暟鎹粨鏋勪腑鑾峰彇鍒嗛〉淇℃伅
+          const totalCount = response.content.itemTotal || 0;
+          const totalPages = response.content.pageTotal || 0;
+
           this.setData({
             cameraList: cameraList,
+            totalCount: totalCount,
+            totalPages: totalPages,
             isLoading: false
           });
 
@@ -1373,6 +1399,28 @@
 
 
   /**
+   * 涓婁竴椤�
+   */
+  prevPage() {
+    if (this.data.currentPage <= 1) return;
+    
+    const newPage = this.data.currentPage - 1;
+    console.log(`鍒囨崲鍒颁笂涓�椤�: ${newPage}`);
+    this.getVideoListFromApi(newPage);
+  },
+
+  /**
+   * 涓嬩竴椤�
+   */
+  nextPage() {
+    if (this.data.currentPage >= this.data.totalPages) return;
+    
+    const newPage = this.data.currentPage + 1;
+    console.log(`鍒囨崲鍒颁笅涓�椤�: ${newPage}`);
+    this.getVideoListFromApi(newPage);
+  },
+
+  /**
    * 鎵嬪姩閲嶈瘯鑾峰彇鎾斁鍦板潃
    */
   retryGetHlsUrl(e) {
diff --git a/pages/stationMonitor/stationMonitor.wxml b/pages/stationMonitor/stationMonitor.wxml
index 250d87d..75a93fc 100644
--- a/pages/stationMonitor/stationMonitor.wxml
+++ b/pages/stationMonitor/stationMonitor.wxml
@@ -87,7 +87,7 @@
             </view>
             <view class="data-content">
               <text class="data-label">绱绾�(mW/m虏)</text>
-              <text class="data-value">{{currentWeatherStation.uv !== null && currentWeatherStation.uv !== undefined ? currentWeatherStation.uv : '--'}}</text>
+              <text class="data-value">{{currentWeatherStation.uv !== null && currentWeatherStation.uv !== undefined ? currentWeatherStation.uv : '--'}} mW</text>
             </view>
           </view>
 
@@ -98,7 +98,7 @@
             </view>
             <view class="data-content">
               <text class="data-label">鍏夌収寮哄害(lm/銕�)</text>
-              <text class="data-value">{{currentWeatherStation.light !== null && currentWeatherStation.light !== undefined ? currentWeatherStation.light : '--'}} lux</text>
+              <text class="data-value">{{currentWeatherStation.light !== null && currentWeatherStation.light !== undefined ? currentWeatherStation.light : '--'}} lm</text>
             </view>
           </view>
 
@@ -480,7 +480,8 @@
             <!-- 姝e父鎾斁鐘舵�� -->
             <view wx:elif="{{item.onLine && item.hslUrl}}" class="video-wrapper">
               <!-- 鐩存挱鎾斁鍣ㄧ粍浠� -->
-              <ezplayer class="video-wrapper-ezplayer" id="ezplayer-{{item.id}}" accessToken="{{item.accessToken}}" url="{{item.hslUrl}}" deviceSerial="{{item.deviceSerial}}" channelNo="1" plugins="capture,ptz,mirror" watermark="澶х" autoPlay="{{true}}" theme="{{ { showFullScreenBtn: true, showHdBtn: true, showTimeLine: true } }}" bind:handleError="handleError" bind:onControlEvent="onControlEvent" />
+              <ezplayer class="video-wrapper-ezplayer" id="ezplayer-{{item.id}}" accessToken="{{item.accessToken}}" url="{{item.hslUrl}}" 
+              deviceSerial="{{item.deviceSerial}}" channelNo="1" plugins="capture,ptz,mirror" watermark="澶х" autoPlay="{{true}}" theme="{{ { showFullScreenBtn: true, showHdBtn: true, showTimeLine: true } }}" bind:handleError="handleError" bind:onControlEvent="onControlEvent" />
             </view>
 
             <!-- 绂荤嚎鐘舵�佹樉绀� -->
@@ -500,6 +501,34 @@
         </view>
       </view>
 
+      <!-- 鍒嗛〉缁勪欢 -->
+      <view wx:if="{{cameraList.length > 0}}" class="pagination">
+        <view class="pagination-info">
+          <text class="pagination-text">鍏� {{totalCount}} 涓憚鍍忓ご锛屽綋鍓嶇 {{currentPage}} 椤�</text>
+        </view>
+        <view class="pagination-controls">
+          <!-- 涓婁竴椤垫寜閽� - 浣跨敤鍗犱綅闅愯棌 -->
+          <button class="pagination-btn prev-btn {{currentPage <= 1 ? 'hidden' : ''}}" 
+                  bind:tap="prevPage"
+                  disabled="{{currentPage <= 1}}">
+            <text class="btn-text">涓婁竴椤�</text>
+          </button>
+          
+          <view class="page-info">
+            <text class="page-number">{{currentPage}}</text>
+            <text class="page-separator">/</text>
+            <text class="total-pages">{{totalPages}}</text>
+          </view>
+          
+          <!-- 涓嬩竴椤垫寜閽� - 浣跨敤鍗犱綅闅愯棌 -->
+          <button class="pagination-btn next-btn {{currentPage >= totalPages ? 'hidden' : ''}}" 
+                  bind:tap="nextPage"
+                  disabled="{{currentPage >= totalPages}}">
+            <text class="btn-text">涓嬩竴椤�</text>
+          </button>
+        </view>
+      </view>
+
       <!-- 鏃犳暟鎹彁绀� -->
       <view wx:if="{{cameraList.length === 0}}" class="no-data">
         <image class="no-data-icon" src="/images/no-data.svg" />
diff --git a/pages/stationMonitor/stationMonitor.wxss b/pages/stationMonitor/stationMonitor.wxss
index 1a34923..941ae2a 100644
--- a/pages/stationMonitor/stationMonitor.wxss
+++ b/pages/stationMonitor/stationMonitor.wxss
@@ -700,16 +700,16 @@
   filter: brightness(0) invert(1);
 }
 
-/* 瑙嗛鎾斁鍣ㄥ鍣� */
+ /* 瑙嗛鎾斁鍣ㄥ鍣� */
 .video-wrapper {
   width: 100%;
-  height: 100%;
+  height: 400rpx;
 }
 
 .video-wrapper-ezplayer {
   width: 100%;
   height: 100%;
-}
+} 
 
 
 
@@ -1229,4 +1229,159 @@
     width: 32rpx;
     height: 32rpx;
   }
+}
+
+/* 鍒嗛〉缁勪欢鏍峰紡 */
+.pagination {
+  margin: 32rpx 24rpx;
+  padding: 24rpx;
+  background: #fff;
+  border-radius: 16rpx;
+  box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08);
+}
+
+.pagination-info {
+  text-align: center;
+  margin-bottom: 24rpx;
+}
+
+.pagination-text {
+  font-size: 28rpx;
+  color: #666;
+  font-weight: 500;
+}
+
+.pagination-controls {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  gap: 24rpx;
+}
+
+.pagination-btn {
+  min-width: 120rpx;
+  height: 72rpx;
+  border: none;
+  border-radius: 36rpx;
+  background: linear-gradient(135deg, #0052d9 0%, #1890ff 100%);
+  color: #fff;
+  font-size: 28rpx;
+  font-weight: 500;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  transition: all 0.3s ease;
+  box-shadow: 0 4rpx 12rpx rgba(0, 82, 217, 0.3);
+}
+
+.pagination-btn:active {
+  transform: translateY(2rpx);
+  box-shadow: 0 2rpx 8rpx rgba(0, 82, 217, 0.4);
+}
+
+.pagination-btn.prev-btn {
+  background: linear-gradient(135deg, #52c41a 0%, #73d13d 100%);
+  box-shadow: 0 4rpx 12rpx rgba(82, 196, 26, 0.3);
+}
+
+.pagination-btn.prev-btn:active {
+  box-shadow: 0 2rpx 8rpx rgba(82, 196, 26, 0.4);
+}
+
+.pagination-btn.next-btn {
+  background: linear-gradient(135deg, #fa8c16 0%, #ffa940 100%);
+  box-shadow: 0 4rpx 12rpx rgba(250, 140, 22, 0.3);
+}
+
+.pagination-btn.next-btn:active {
+  box-shadow: 0 2rpx 8rpx rgba(250, 140, 22, 0.4);
+}
+
+/* 鍗犱綅闅愯棌鏍峰紡 */
+.pagination-btn.hidden {
+  opacity: 0.3;
+  background: #ccc !important;
+  box-shadow: none !important;
+  cursor: not-allowed;
+  pointer-events: none;
+}
+
+.pagination-btn.hidden .btn-text {
+  color: #999;
+}
+
+/* 绂佺敤鐘舵�佹牱寮� */
+.pagination-btn:disabled {
+  opacity: 0.3;
+  background: #ccc !important;
+  box-shadow: none !important;
+  cursor: not-allowed;
+  pointer-events: none;
+}
+
+.pagination-btn:disabled .btn-text {
+  color: #999;
+}
+
+.btn-text {
+  color: #fff;
+  font-weight: 500;
+}
+
+.page-info {
+  display: flex;
+  align-items: center;
+  gap: 8rpx;
+  padding: 16rpx 24rpx;
+  background: #f8f9fa;
+  border-radius: 24rpx;
+  border: 2rpx solid #e9ecef;
+}
+
+.page-number {
+  font-size: 32rpx;
+  color: #0052d9;
+  font-weight: 700;
+}
+
+.page-separator {
+  font-size: 24rpx;
+  color: #999;
+  font-weight: 400;
+}
+
+.total-pages {
+  font-size: 28rpx;
+  color: #666;
+  font-weight: 500;
+}
+
+/* 鍒嗛〉缁勪欢鍝嶅簲寮忎紭鍖� */
+@media (max-width: 400px) {
+  .pagination {
+    margin: 24rpx 16rpx;
+    padding: 20rpx;
+  }
+  
+  .pagination-controls {
+    gap: 20rpx;
+  }
+  
+  .pagination-btn {
+    min-width: 100rpx;
+    height: 64rpx;
+    font-size: 26rpx;
+  }
+  
+  .page-info {
+    padding: 12rpx 20rpx;
+  }
+  
+  .page-number {
+    font-size: 28rpx;
+  }
+  
+  .total-pages {
+    font-size: 26rpx;
+  }
 }
\ No newline at end of file
diff --git a/utils/projectConfig.js b/utils/projectConfig.js
index 67c0f4c..c258661 100644
--- a/utils/projectConfig.js
+++ b/utils/projectConfig.js
@@ -25,7 +25,7 @@
   MQ: {
     tag: 'mq',
     displayName: '姘戝嫟椤圭洰',
-    operatorId: '2025033115305200006', // 缁熶竴ID鐢ㄤ簬operator鍜宑lientId
+    operatorId: '', // 缁熶竴ID鐢ㄤ簬operator鍜宑lientId
     needLogin: true, // 涓嶉渶瑕佺櫥褰�
     loginType: 'code', // 楠岃瘉鐮佺櫥褰�
     monitor:true,//鏄惁鍙互杩涘叆缁煎悎绔欑洃娴�
@@ -52,7 +52,7 @@
     operatorId: '', // 缁熶竴ID鐢ㄤ簬operator鍜宑lientId 2025041710412400006
     needLogin: true, // 闇�瑕佺櫥褰�
     loginType: 'code', // 璐﹀彿瀵嗙爜鐧诲綍
-    monitor:false,//鏄惁鍙互杩涘叆缁煎悎绔欑洃娴�
+    monitor:true,//鏄惁鍙互杩涘叆缁煎悎绔欑洃娴�
     serverId: '121',
     get serverUrl() {
       return SERVER_INFO.URL_121;

--
Gitblit v1.8.0