From 04477a62f8966e9aabc31421bab138960eff323e Mon Sep 17 00:00:00 2001
From: hejianhao <15708179461@qq.com>
Date: 星期三, 26 三月 2025 15:57:29 +0800
Subject: [PATCH] 除地图外所有接口对接、样式调整

---
 src/components/RightPanel.vue |  159 ++++++++++++++++++++++++++++++++--------------------
 1 files changed, 98 insertions(+), 61 deletions(-)

diff --git a/src/components/RightPanel.vue b/src/components/RightPanel.vue
index 79b7b77..b29c026 100644
--- a/src/components/RightPanel.vue
+++ b/src/components/RightPanel.vue
@@ -3,18 +3,18 @@
     <div class="right-panel-top">
       <div class="data-card">
         <div class="data-header flex">
-          <div class="data-title">本月新增用户</div>
+          <div class="data-title">本月新增租户数</div>
           <div class="data-tabs">
-            <div class="tab-value">{{ newUsers }}<span class="unit">户</span></div>
+            <div class="tab-value">{{ staticsData.newTenantCount }}<span class="unit">户</span></div>
             <div class="tab-chart"></div>
           </div>
         </div>
       </div>
       <div class="data-card">
         <div class="data-header flex">
-          <div class="data-title">本季度交租率</div>
+          <div class="data-title">总计租户数</div>
           <div class="data-tabs">
-            <div class="tab-value">{{ quarterlyRate }}<span class="unit">元</span></div>
+            <div class="tab-value">{{ staticsData.totalTenantCount }}<span class="unit">户</span></div>
             <div class="tab-chart"></div>
           </div>
         </div>
@@ -23,18 +23,18 @@
     <div class="right-panel-top1">
       <div class="data-card">
         <div class="data-header flex">
-          <div class="data-title">本月新增用户</div>
+          <div class="data-title">本季度已交租金</div>
           <div class="data-tabs">
-            <div class="tab-value">{{ newUsers }}<span class="unit">万元</span></div>
+            <div class="tab-value">{{ staticsData.totalRentPaid }}<span class="unit">万元</span></div>
             <div class="tab-chart"></div>
           </div>
         </div>
       </div>
       <div class="data-card">
         <div class="data-header flex">
-          <div class="data-title">本季度交租率</div>
+          <div class="data-title">本季度应交租金</div>
           <div class="data-tabs">
-            <div class="tab-value">{{ quarterlyRate }}<span class="unit">万元</span></div>
+            <div class="tab-value">{{ staticsData.totalRentShould }}<span class="unit">万元</span></div>
             <div class="tab-chart"></div>
           </div>
         </div>
@@ -44,11 +44,18 @@
       <div class="status-title">实时租赁数据</div>
       <div class="status-items-container">
         <div class="status-items">
-          <div v-for="(item, index) in rentList" :key="index" class="status-item">
-            <span class="area-name">{{ item.area }}</span>
+          <div v-for="(item, index) in realTimeRentData" :key="'original-' + index" class="status-item">
+            <span class="area-name">{{ item.streetName }}</span>
+            <span class="area-name">{{ item.roomName }}</span>
             <div class="status-actions">
-              <span class="action-btn">启用中</span>
-              <span class="action-btn">合同签署</span>
+              <span class="action-btn" :style="{ backgroundColor: item.leaseStatus == 2 ? '#FFB822' : item.leaseStatus == 1 ? '#66BAF8' : '#FF6B6B' }">{{ ['待出租', '已出租', '维修中'][item.leaseStatus - 1] }}</span>
+            </div>
+          </div>
+          <div v-for="(item, index) in realTimeRentData" :key="'duplicate-' + index" class="status-item">
+            <span class="area-name">{{ item.streetName }}</span>
+            <span class="area-name">{{ item.roomName }}</span>
+            <div class="status-actions">
+              <span class="action-btn" :style="{ backgroundColor: item.leaseStatus == 2 ? '#FFB822' : item.leaseStatus == 1 ? '#66BAF8' : '#FF6B6B' }">{{ ['待出租', '已出租', '维修中'][item.leaseStatus - 1] }}</span>
             </div>
           </div>
         </div>
@@ -60,21 +67,18 @@
 <script>
 export default {
   name: 'RightPanel',
-  data() {
-    return {
-      newUsers: '877',
-      quarterlyRate: '4302',
-      rentList: [
-        { area: '新城大道', status: 'online' },
-        { area: '拉萨路', status: 'offline' },
-        { area: '新城大道', status: 'online' },
-        { area: '拉萨路', status: 'online' },
-        { area: '新城大道', status: 'offline' },
-        { area: '拉萨路', status: 'online' },
-        { area: '新城大道', status: 'offline' },
-        { area: '新城大道', status: 'online' }
-      ]
+  props: {
+    staticsData: {
+      type: Object,
+      default: () => { }
+    },
+    realTimeRentData: {
+      type: Array,
+      default: () => []
     }
+  },
+  data() {
+    return {}
   }
 }
 </script>
@@ -86,7 +90,7 @@
 }
 
 .right-panel {
-  width: 300px;
+  width: 400px;
   display: flex;
   position: fixed;
   top: 0;
@@ -96,6 +100,7 @@
   z-index: 1000;
   flex-direction: column;
   gap: 10px;
+  padding-right: 20px;
 }
 
 .data-card {
@@ -103,22 +108,34 @@
   border-radius: 8px;
   padding: 15px;
   height: 80px;
+  min-width: 0;
+  flex: 1;
+  display: flex;
+  align-items: center;
 }
 
 .data-header {
   display: flex;
   justify-content: space-between;
   align-items: center;
+  width: 100%;
+  height: 100%;
 }
 
 .data-title {
   font-size: 16px;
+  color: #fff;
+  white-space: nowrap;
+  margin-right: 10px;
 }
 
 .data-tabs {
   display: flex;
   align-items: center;
   gap: 10px;
+  flex: 1;
+  justify-content: flex-end;
+  min-width: 0;
 }
 
 .tab-value {
@@ -126,49 +143,52 @@
   font-family: 'DIN ', 'DIN', sans-serif;
   font-weight: bold;
   color: #fff;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  text-align: right;
+}
+
+.right-panel-top,
+.right-panel-top1 {
+  display: flex;
+  background: rgba(146, 146, 146, 0.5);
+  padding: 15px;
+  border-radius: 8px;
+  gap: 10px;
+  height: 110px;
 }
 
 .right-panel-top {
-  display: flex;
-  background: rgba(146, 146, 146, 0.5);
   margin-top: 50px;
-  padding-top: 10px;
-  padding-bottom: 30px;
-  border-radius: 2px;
-  margin-right: 20px;
   border-left: 4px solid #87F7C7;
 }
 
 .right-panel-top1 {
-  display: flex;
-  background: rgba(146, 146, 146, 0.5);
   margin-top: 10px;
-  padding-top: 10px;
-  padding-bottom: 30px;
-  border-radius: 2px;
-  margin-right: 20px;
   border-left: 4px solid #FFB822;
 }
 
 .status-list {
   background: rgba(146, 146, 146, 0.5);
-  border-radius: 2px;
-  margin-right: 20px;
+  border-radius: 8px;
   margin-top: 10px;
   padding: 15px;
-  height: 500px;
+  max-height: 500px;
   overflow: hidden;
+  flex: 1;
 }
 
 .status-title {
   font-size: 16px;
+  color: #fff;
+  margin-bottom: 15px;
 }
 
 .status-items {
   display: flex;
   flex-direction: column;
   gap: 10px;
-  height: calc(100% - 45px);
   animation: scrollUp 20s linear infinite;
 }
 
@@ -179,49 +199,66 @@
 .status-items-container {
   height: 100%;
   overflow: hidden;
+  position: relative;
+}
+
+.status-items-container::before,
+.status-items-container::after {
+  content: '';
+  position: absolute;
+  left: 0;
+  right: 0;
+  height: 10px;
+  z-index: 1;
+}
+
+.status-items-container::before {
+  top: 0;
+  background: linear-gradient(to bottom, rgba(0, 0, 0, 0.1) 0%, transparent 100%);
+}
+
+.status-items-container::after {
+  bottom: 0;
+  background: linear-gradient(to top, rgba(0, 0, 0, 0.1) 0%, transparent 100%);
 }
 
 @keyframes scrollUp {
   0% {
     transform: translateY(0);
   }
-
   100% {
     transform: translateY(-50%);
   }
 }
 
-.status-items::-webkit-scrollbar {
-  display: none;
-}
-
-.status-items {
-  -ms-overflow-style: none;
-  scrollbar-width: none;
-}
-
 .status-item {
-  display: flex;
-  justify-content: space-between;
+  display: grid;
+  grid-template-columns: minmax(80px, 1fr) minmax(80px, 1fr) 80px;  /* 设置最小宽度确保文字显示 */
+  gap: 10px;
   align-items: center;
   background: rgba(255, 255, 255, 0.05);
   border-radius: 4px;
+  padding: 10px;
+  margin-bottom: 8px;
 }
 
 .area-name {
-  font-size: 12px;
+  font-size: 14px;
+  color: #fff;
+  white-space: normal;  /* 允许文字换行 */
+  line-height: 1.2;  /* 添加适当的行高 */
 }
 
 .status-actions {
-  display: flex;
-  gap: 10px;
+  justify-self: end;
 }
 
 .action-btn {
-  padding: 2px 8px;
+  padding: 4px 12px;
   border-radius: 4px;
   font-size: 12px;
-  background: rgba(0, 255, 255, 0.2);
+  color: #fff;
+  white-space: nowrap;
 }
 
 .unit {
@@ -229,4 +266,4 @@
   margin-left: 4px;
   color: #fff;
 }
-</style> 
\ No newline at end of file
+</style>
\ No newline at end of file

--
Gitblit v1.7.1