From fb3136514444c11c63d499a360fa5cb5f6815923 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Fri, 28 Mar 2025 11:27:00 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/components/CommonDateTime.vue                            |   62 +++----
 src/views/Home/components/HomeLeft/HomeLeft.vue              |   97 +++++------
 src/views/Home/components/HomeLeft/OverviewNext.vue          |  278 ++++++++++++++++++----------------
 src/views/Home/components/HomeLeft/InspectionRaskDetails.vue |   30 ++-
 4 files changed, 233 insertions(+), 234 deletions(-)

diff --git a/src/components/CommonDateTime.vue b/src/components/CommonDateTime.vue
index efd1c5a..4e6fdc0 100644
--- a/src/components/CommonDateTime.vue
+++ b/src/components/CommonDateTime.vue
@@ -5,16 +5,10 @@
       type="daterange"
       range-separator="-"
       start-placeholder="开始日期"
-      end-placeholder="结束日期"
-    >
+      end-placeholder="结束日期">
     </el-date-picker>
     <div class="time-card">
-      <div
-        class="card-item"
-        :class="item == checked ? 'active' : ''"
-        v-for="item in timeList"
-        @click="timeClick(item)"
-      >
+      <div class="card-item" :class="item==checked?'active':''" v-for="item in timeList" @click="timeClick(item)">
         {{ item }}
       </div>
     </div>
@@ -23,37 +17,32 @@
 
 <script setup>
 const newTime = ref([]);
-let timeList = ['今日', '本周', '本月', '本年'];
+let timeList = ['今日','本周','本月','本年' ];
 
 let checked = ref('今日');
-let timeClick = item => {
+let timeClick = (item) => {
   checked.value = item;
-};
+}
 </script>
 
 <style scoped lang="scss">
 .common-date-time {
   position: relative;
-  display: flex;
+  top: 19px;
+  display: flex ;
   justify-content: space-between;
-
   :deep(.el-date-editor) {
-    box-shadow: none;
-    width: 0;
-    flex: 1;
-    margin-right: 4px;
-
-    background: rgba(0, 15, 34, 0.5);
+    background: rgba(0,15,34,0.5);
     border-radius: 0px 0px 0px 0px;
-    border: 1px solid #306fca;
+    border: 1px solid #306FCA;
     height: 28px;
 
     .el-input__wrapper {
       background-color: transparent;
-      box-shadow: 0 0 0 1px #0070ff;
+      box-shadow: 0 0 0 1px #0070FF;
 
       &.is-focus {
-        box-shadow: 0 0 0 1px #0070ff;
+        box-shadow: 0 0 0 1px #0070FF;
       }
     }
 
@@ -61,35 +50,34 @@
       background-color: transparent;
       color: #fff;
       height: 28px;
-
       &::placeholder {
         color: rgba(255, 255, 255, 0.6);
       }
     }
   }
-
   .time-card {
-    text-align: center;
-    background: linear-gradient(270deg, #195bad 0%, rgba(25, 91, 173, 0) 100%);
-    border: 1px solid #306fca;
-    font-family: Source Han Sans CN, Source Han Sans CN, serif;
+    width: 156px;
+    height: 28px;
+    background: linear-gradient( 270deg, #195BAD 0%, rgba(25,91,173,0) 100%);
+    border-radius: 0px 0px 0px 0px;
+    border: 1px solid #306FCA;
+    font-family: Source Han Sans CN, Source Han Sans CN;
     font-weight: 400;
     font-size: 14px;
-    color: #ffffff;
+    color: #FFFFFF;
     display: flex;
-    height: 28px;
-
     .card-item {
-      width: 39px;
-      height: 100%;
-      line-height: 26px;
+      width: 40px;
+      height: 28px;
+      line-height: 28px;
+      text-align: center;
       cursor: pointer;
     }
-
     .active {
-      background: linear-gradient(270deg, #19ad8d 0%, rgba(25, 173, 141, 0) 100%);
-      box-shadow: inset 0px 0px 8px 0px rgba(0, 255, 200, 0.6);
+      background: linear-gradient( 270deg, #19AD8D 0%, rgba(25,173,141,0) 100%);
+      box-shadow: inset 0px 0px 8px 0px rgba(0,255,200,0.6);
       border-radius: 0px 0px 0px 0px;
+      border: 1px solid #30CAA9;
     }
   }
 }
diff --git a/src/views/Home/components/HomeLeft/HomeLeft.vue b/src/views/Home/components/HomeLeft/HomeLeft.vue
index e762cc0..764ad27 100644
--- a/src/views/Home/components/HomeLeft/HomeLeft.vue
+++ b/src/views/Home/components/HomeLeft/HomeLeft.vue
@@ -1,65 +1,60 @@
 <template>
-    <div class="home-left">
-        <!--时间 天气-->
-        <div class="time-weather">
-            <div class="time">2025.03.04 15:30:00</div>
-            <div class="line"></div>
-            <div class="weather">
-                <img src="@/assets/images/tq.png" alt="">
-                <span class="tq">阴天</span>
-                <span class="qk">适合飞行</span>
-            </div>
-        </div>
-        <!--机巢概况-->
-        <common-title style="margin-left: 14px;"></common-title>
-        <overview-next></overview-next>
-        <!--巡检任务情况-->
-        <common-title title="巡检任务情况" style="margin-left: 14px;"></common-title>
-        <inspection-rask-details></inspection-rask-details>
+  <div class="home-left">
+    <!--时间 天气-->
+    <div class="time-weather">
+      <div class="time">2025.03.04 15:30:00</div>
+      <div class="line"></div>
+      <div class="weather">
+        <img src="@/assets/images/tq.png" alt="" />
+        <span class="tq">阴天</span>
+        <span class="qk">适合飞行</span>
+      </div>
     </div>
+    <!--机巢概况-->
+    <overview-next></overview-next>
+    <!--巡检任务情况-->
+    <inspection-rask-details></inspection-rask-details>
+  </div>
 </template>
 
 <script setup>
-import CommonTitle from '@/components/CommonTitle.vue';
 import OverviewNext from './OverviewNext.vue';
 import InspectionRaskDetails from './InspectionRaskDetails.vue';
-
-
 </script>
 
 <style scoped lang="scss">
 .home-left {
-    position: absolute;
-    top: 88px;
-    color: #E7F5FF;
-    .time-weather {
-        margin-left: 45px;
-        width: 260px;
-        font-size: 14px;
-        height: 36px;
-        line-height: 36px;
-        display: flex;
-        justify-content: space-between;
-        align-items: center;
-        .line {
-            border: 1px solid #FFFFFF;
-            height: 10px;
-            opacity: 0.5;
-        }
-        .weather {
-            img {
-                width: 20px;
-                height: 20px;
-            }
-            .tq {
-                margin: 0 5px;
-                color: #E7F5FF;
-            }
-            .qk {
-                margin-left: 5px;
-                color: #04F043;
-           }
-        }
+  position: absolute;
+  top: 88px;
+  color: #e7f5ff;
+  .time-weather {
+    margin-left: 45px;
+    width: 310px;
+    font-size: 14px;
+    height: 36px;
+    line-height: 36px;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    .line {
+      border: 1px solid #ffffff;
+      height: 10px;
+      opacity: 0.5;
     }
+    .weather {
+      img {
+        width: 20px;
+        height: 20px;
+      }
+      .tq {
+        margin: 0 5px;
+        color: #e7f5ff;
+      }
+      .qk {
+        margin-left: 5px;
+        color: #04f043;
+      }
+    }
+  }
 }
 </style>
diff --git a/src/views/Home/components/HomeLeft/InspectionRaskDetails.vue b/src/views/Home/components/HomeLeft/InspectionRaskDetails.vue
index f43deec..00eafb0 100644
--- a/src/views/Home/components/HomeLeft/InspectionRaskDetails.vue
+++ b/src/views/Home/components/HomeLeft/InspectionRaskDetails.vue
@@ -1,5 +1,11 @@
 <!-- 巡检任务详情 -->
 <template>
+  <common-title
+    title="巡检任务情况"
+    :style="{ marginLeft: pxToRem(14) }"
+    @details="detailsFun"
+  >
+  </common-title>
   <div class="inspection-rask-details">
     <div class="inspection-num">
       <div class="total">
@@ -20,6 +26,8 @@
 
 <script setup>
 import * as echarts from 'echarts';
+import { pxToRem } from '@/utils/rem';
+import CommonTitle from '@/components/CommonTitle.vue';
 import CommonDateTime from '@/components/CommonDateTime.vue';
 
 const list = ref([
@@ -29,6 +37,10 @@
   { name: '已执行', value: 10, color: '#8EFFAC' },
   { name: '执行失败', value: 10, color: '#FF8E8E' },
 ]);
+
+const detailsFun = () => {
+  console.log('details');
+};
 
 const chartRef = ref(null);
 
@@ -151,36 +163,33 @@
   width: 390px;
   height: 414px;
   background: linear-gradient(
-    270deg,
-    rgba(31, 62, 122, 0) 0%,
-    rgba(31, 62, 122, 0.35) 21%,
-    #1f3e7a 100%
+      270deg,
+      rgba(31, 62, 122, 0) 0%,
+      rgba(31, 62, 122, 0.35) 21%,
+      #1f3e7a 100%
   );
   border-radius: 0px 0px 0px 0px;
   opacity: 0.85;
-
   .inspection-num {
     background: url('@/assets/images/inspection-num.png') no-repeat center / 100% 100%;
     width: 360px;
     height: 118px;
     position: relative;
-
     .total {
       position: absolute;
       left: 34px;
-      top: 34px;
+      top: 44px;
       font-weight: 500;
       font-size: 14px;
       color: #ffffff;
       font-family: Source Han Sans CN, Source Han Sans CN;
-
+      line-height: 19px;
       .value {
         font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
         margin-left: 8px;
         font-size: 26px;
       }
     }
-
     .status {
       position: absolute;
       top: 8px;
@@ -192,14 +201,12 @@
       justify-content: flex-start;
       line-height: 22px;
       padding: 0 10px 10px 0;
-
       .name {
         font-family: Source Han Sans CN, Source Han Sans CN;
         font-weight: 400;
         font-size: 14px;
         color: #ffffff;
       }
-
       .value {
         font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
         font-weight: 400;
@@ -207,7 +214,6 @@
       }
     }
   }
-
   .chart-container {
     width: 100%;
     height: 200px;
diff --git a/src/views/Home/components/HomeLeft/OverviewNext.vue b/src/views/Home/components/HomeLeft/OverviewNext.vue
index 207713b..af377ca 100644
--- a/src/views/Home/components/HomeLeft/OverviewNext.vue
+++ b/src/views/Home/components/HomeLeft/OverviewNext.vue
@@ -1,46 +1,46 @@
 <!-- 机巢概况 -->
 <template>
-    <div class="overview-next">
-        <div class="next-num">
-            <div class="total">
-                <div class="value">88</div>
-                <div class="name">机巢总数</div>
-            </div>
-            <div class="status">
-               <div v-for="item in list">
-                    <div :style="{ color: item.color }" class="value">{{ item.value }}</div>
-                    <div class="name">{{ item.name }}</div>
-               </div>
-            </div>
+  <common-title :style="{ marginLeft: pxToRem(14) }" @details="detailsFun"></common-title>
+  <div class="overview-next">
+    <div class="next-num">
+      <div class="total">
+        <div class="value">88</div>
+        <div class="name">机巢总数</div>
+      </div>
+      <div class="status">
+        <div v-for="item in list">
+          <div :style="{ color: item.color }" class="value">{{ item.value }}</div>
+          <div class="name">{{ item.name }}</div>
         </div>
-        <div class="search-box">
-            <el-input
-                v-model="searchText"
-                placeholder="请输入搜索内容"
-                class="input-with-select">
-                <template #append>
-                    <el-button :icon="Search" />
-                </template>
-            </el-input>
-        </div>
-        <div class="table-list">
-            <div class="table-header">
-                <div class="name">机巢名称</div>
-                <div class="status">机巢状态</div>
-            </div>
-            <div class="table-item" v-for="item in tableList">
-                <div class="name">
-                    <img class="yjzx-img" width="10" height="10" src="@/assets/images/table-zx.png" alt="">
-                    <img width="13" height="15"  src="@/assets/images/table-icon.png" alt="">
-                    {{item.name}}
-                </div>
-                <div class="status">{{ item.status }}</div>
-            </div>
-        </div>
+      </div>
     </div>
+    <div class="search-box">
+      <el-input v-model="searchText" placeholder="请输入搜索内容" class="input-with-select">
+        <template #append>
+          <el-button :icon="Search" />
+        </template>
+      </el-input>
+    </div>
+    <div class="table-list">
+      <div class="table-header">
+        <div class="name">机巢名称</div>
+        <div class="status">机巢状态</div>
+      </div>
+      <div class="table-item" v-for="item in tableList">
+        <div class="name">
+          <img class="yjzx-img" width="10" height="10" src="@/assets/images/table-zx.png" alt="" />
+          <img width="13" height="15" src="@/assets/images/table-icon.png" alt="" />
+          {{ item.name }}
+        </div>
+        <div class="status">{{ item.status }}</div>
+      </div>
+    </div>
+  </div>
 </template>
 <script setup>
+import { pxToRem } from '@/utils/rem';
 import { Search } from '@element-plus/icons-vue';
+import CommonTitle from '@/components/CommonTitle.vue';
 
 const list = ref([
   { name: '执行中', value: 89, color: '#FFA768' },
@@ -55,109 +55,119 @@
   { name: '小兰工业园3号', status: '预计执行' },
   { name: '小兰工业园3号', status: '预计执行' },
 ]);
+
+const detailsFun = () => {
+  console.log('details');
+};
 </script>
 <style scoped lang="scss">
 .overview-next {
-    font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
-    margin-left: 29px;
-    padding: 16px 16px;
-    width: 390px;
-    height: 414px;
-    background: linear-gradient( 270deg, rgba(31,62,122,0) 0%, rgba(31,62,122,0.35) 21%, #1F3E7A 100%);
-    border-radius: 0px 0px 0px 0px;
-    opacity: 0.85;
-    .next-num {
-        width: 358px;
-        height: 92px;
-        background: url(@/assets/images/next-num.png) no-repeat center / 100% 100%;;
-        position: relative;
-        .total {
-            position: absolute;
-            left: 22px;
-            top: 18px;
-            font-weight: 500;
-            font-size: 14px;
-            color: #FFFFFF;
-            font-family: Source Han Sans CN, Source Han Sans CN;
-            .value {
-                font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
-                margin-left: 8px;
-                font-size: 26px;
-            }
-        }
-        .status {
-            position: absolute;
-            top: 16px;
-            right: 30px;
-            width: 200px;
-            display: flex;
-            justify-content: space-between;
-            line-height: 30px;
-            .name {
-                font-family: Source Han Sans CN, Source Han Sans CN;
-                font-weight: 400;
-                font-size: 14px;
-                color: #FFFFFF;
-            }
-            .value {
-                font-weight: 400;
-                font-size: 26px;
-
-            }
-        }
+  font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
+  margin-left: 29px;
+  padding: 16px 16px;
+  width: 390px;
+  height: 414px;
+  background: linear-gradient(
+    270deg,
+    rgba(31, 62, 122, 0) 0%,
+    rgba(31, 62, 122, 0.35) 21%,
+    #1f3e7a 100%
+  );
+  border-radius: 0px 0px 0px 0px;
+  opacity: 0.85;
+  .next-num {
+    width: 358px;
+    height: 92px;
+    background: url(@/assets/images/next-num.png) no-repeat center / 100% 100%;
+    position: relative;
+    .total {
+      position: absolute;
+      left: 22px;
+      top: 28px;
+      font-weight: 500;
+      font-size: 14px;
+      color: #ffffff;
+      font-family: Source Han Sans CN, Source Han Sans CN;
+      line-height: 19px;
+      .value {
+        font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
+        margin-left: 8px;
+        font-size: 26px;
+      }
     }
-    .search-box {
-        margin-top: 19px;
-        margin-right: 16px;
-        :deep(.el-input__wrapper) {
-            background-color: rgba(0, 112, 255, 0.1);
-            background: rgba(0,15,34,0.5);
-            box-shadow: 0 0 0 1px #0070FF inset;
-        }
-
-        :deep(.el-input-group__append) {
-            background: rgba(0,112,255,0.38);
-            .el-button {
-                background-color: transparent;
-                border: 1px solid #0070FF;
-                border-left: none;
-                color: #fff;
-            }
-        }
-
-        :deep(.el-input__inner) {
-            color: #fff;
-            &::placeholder {
-                color: rgba(255, 255, 255, 0.6);
-            }
-        }
-    }
-    .table-list {
+    .status {
+      position: absolute;
+      top: 16px;
+      right: 30px;
+      width: 200px;
+      display: flex;
+      justify-content: space-between;
+      line-height: 30px;
+      .name {
         font-family: Source Han Sans CN, Source Han Sans CN;
-        margin: 16px;
-        font-weight: 500;
-        font-size: 16px;
-        .table-header, .table-item {
-            display: flex;
-            justify-content: space-between;
-            height: 36px;
-            line-height: 36px;
-            padding: 0 20px;
-        }
-        .table-item {
-            position: relative;
-            .yjzx-img {
-                position: absolute;
-                top: 14px;
-                left: 10px;
-            }
-            .status {
-                color: #6FC3FF;
-            }
-            .atcive {
-                color: #04F020;
-            }
-        }
+        font-weight: 400;
+        font-size: 14px;
+        color: #ffffff;
+      }
+      .value {
+        font-weight: 400;
+        font-size: 26px;
+      }
     }
+  }
+  .search-box {
+    margin-top: 19px;
+    margin-right: 16px;
+    :deep(.el-input__wrapper) {
+      background-color: rgba(0, 112, 255, 0.1);
+      background: rgba(0, 15, 34, 0.5);
+      box-shadow: 0 0 0 1px #0070ff inset;
+    }
+
+    :deep(.el-input-group__append) {
+      background: rgba(0, 112, 255, 0.38);
+      .el-button {
+        background-color: transparent;
+        border: 1px solid #0070ff;
+        border-left: none;
+        color: #fff;
+      }
+    }
+
+    :deep(.el-input__inner) {
+      color: #fff;
+      &::placeholder {
+        color: rgba(255, 255, 255, 0.6);
+      }
+    }
+  }
+  .table-list {
+    font-family: Source Han Sans CN, Source Han Sans CN;
+    margin: 16px;
+    font-weight: 500;
+    font-size: 16px;
+    .table-header,
+    .table-item {
+      display: flex;
+      justify-content: space-between;
+      height: 36px;
+      line-height: 36px;
+      padding: 0 20px;
+    }
+    .table-item {
+      position: relative;
+      .yjzx-img {
+        position: absolute;
+        top: 14px;
+        left: 10px;
+      }
+      .status {
+        color: #6fc3ff;
+      }
+      .atcive {
+        color: #04f020;
+      }
+    }
+  }
 }
 </style>

--
Gitblit v1.9.3