From 7298d5354963a88643a543b51b90192dc9fc934c Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 11 九月 2025 18:43:14 +0800
Subject: [PATCH] 最新版本541200007

---
 screen/src/views/LogisticsCenter.vue |  302 ++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 241 insertions(+), 61 deletions(-)

diff --git a/screen/src/views/LogisticsCenter.vue b/screen/src/views/LogisticsCenter.vue
index 39a0f91..54ad031 100644
--- a/screen/src/views/LogisticsCenter.vue
+++ b/screen/src/views/LogisticsCenter.vue
@@ -4,7 +4,7 @@
       <img src="@/assets/images/LogisticsCenter/bg@2x.png" class="main_bg" alt="" />
       <div class="main_header">
         <img src="@/assets/images/maintitle.gif" class="main_header_bg" alt="" />
-        <div class="title">瀹夊窘涓儫鎴愬搧闆嗘帶澶у睆</div>
+        <div class="title">瀹夊窘涓儫鏁版櫤鎴愬搧绠℃帶</div>
         <div class="time_wrap">
           <span class="date">{{ date }}</span>
           <span class="week">{{ week }}</span>
@@ -45,7 +45,6 @@
             </div>
             <div class="content_wrap">
               <div class="num_wrap">
-
                 <div class="question1">
                   <div class="hover_con">
                     <div class="num_list" v-if="StockOutData.currentNum || StockOutData.currentNum == 0">
@@ -56,27 +55,30 @@
                     </div>
                     <div class="hover_wrap">
                       <div class="triangle"></div>
-                      <div class="title" v-if="StockOutData.currentProvinceNum || StockOutData.currentProvinceNum == 0">璋冩嫧鍑哄簱閲忥細{{ StockOutData.currentProvinceNum.toFixed(0) }}绠�</div>
-                      <div class="title" v-if="StockOutData.currentOtherNum || StockOutData.currentOtherNum == 0">鍏朵粬鍑哄簱閲忥細{{ StockOutData.currentOtherNum.toFixed(0) }}绠�</div>
+                      <div class="title" v-if="StockOutData.currentProvinceNum || StockOutData.currentProvinceNum == 0">
+                        璋冩嫧鍑哄簱閲忥細{{ StockOutData.currentProvinceNum.toFixed(0) }}绠�</div>
+                      <div class="title" v-if="StockOutData.currentOtherNum || StockOutData.currentOtherNum == 0">
+                        鍏朵粬鍑哄簱閲忥細{{ StockOutData.currentOtherNum.toFixed(0) }}绠�</div>
                     </div>
                   </div>
 
                 </div>
-                <div class="content">
+                <div class="content" v-if="false">
                   <div class="unit_wrap">
                     <span class="la">鍚屾瘮</span>
-                    <template v-if="StockOutData.currentNum && StockOutData.lastNum">
-                      <img v-if="StockOutData.currentNum >= StockOutData.lastNum" src="@/assets/images/ic_up.png"
+                    <template v-if="StockOutData.sameOutNum">
+                      <img v-if="StockOutData.currentOutNum >= StockOutData.sameOutNum" src="@/assets/images/ic_up.png"
                         class="icon" alt="">
                       <img v-else src="@/assets/images/ic_down.webp" class="icon" alt="">
                     </template>
-                    <span v-if="StockOutData.lastNum && StockOutData.currentNum">{{ Math.abs((((StockOutData.currentNum
+                    <span v-if="StockOutData.sameOutNum">{{ Math.abs((((StockOutData.currentOutNum
                       -
-                      StockOutData.lastNum) /
-                      StockOutData.lastNum)
+                      StockOutData.sameOutNum) /
+                      StockOutData.sameOutNum)
                       * 100).toFixed(2)) }}%</span>
                     <span v-else style="margin-left: 6px;">-</span>
-                    <span class="la" style="margin-left: 30px;margin-right: 10px;">绱鍑哄簱杞︽</span>
+                    <span v-if="StockOutData.totalCarNum" class="la"
+                      style="margin-left: 30px;margin-right: 10px;">绱鍑哄簱杞︽</span>
                     <span>{{ StockOutData.totalCarNum || '' }}</span>
                   </div>
 
@@ -157,10 +159,10 @@
                   <div class="hover_wrap">
                     <div class="triangle"></div>
                     <div class="title">鍑哄簱鑳藉姏缁熻璇存槑锛�</div>
-                    <div>褰撳墠璁㈠崟閲忥細鎴嚦鏄ㄦ棩鏈畬鎴愯鍗�+褰撴棩涓嬭揪鐨勮鍗曟暟閲忥紱</div>
-                    <div>褰撴棩浠诲姟閲忥細鎴嚦鏄ㄦ棩宸查厤杞芥湭鍑哄簱+褰撴棩宸查厤杞芥湭鍑哄簱鏁伴噺+鏃犻渶閰嶈浇鐨勪换鍔★紱</div>
-                    <div>浠婃棩鍑哄簱閲忥細褰撴棩鎸夊疄闄呭嚭搴撻噺锛堜互鐢靛瓙閿佷笂閿佷负鍑嗭級</div>
-                    <div>鍓╀綑浠诲姟閲忥細褰撴棩浠诲姟閲�-浠婃棩鍑哄簱閲�</div>
+                    <div>1銆佸綋鍓嶈鍗曢噺锛氭埅鑷崇洰鍓嶆湭閰嶈浇鐨勮鍗曢噺</div>
+                    <div>2銆佸綋鍓嶄换鍔¢噺锛氭墍鏈夊凡涓嬭揪杩愯緭涓旀湭鍑哄簱鐨勪换鍔¢噺锛氭埅姝㈢洰鍓嶅凡閰嶈浇鏈嚭搴�+鏃犻渶閰嶈浇鐨勪换鍔�(鍚屽煄浠诲姟閲�)</div>
+                    <div>3銆佷粖鏃ュ嚭搴撻噺锛氫粖鏃ュ疄闄呭嚭搴撻噺锛氫互鐢靛瓙閿佷笂閿佷负鍑�</div>
+                    <div>4銆佸墿浣欎换鍔¢噺锛氭暟鎹悓褰撳墠浠诲姟閲忥紙寮圭獥鍒嗗埆灞曠ず鍚屽簱鍜岃繍杈撲换鍔¢噺</div>
                   </div>
                 </div>
               </div>
@@ -202,14 +204,21 @@
                   <div class="unit">杞︽锛歿{ cneterData.crrentOutCarNum }}</div>
                 </div>
               </div>
-              <div class="item">
-                <img src="@/assets/images/LogisticsCenter/ic_jinriweichu@2x.png" alt="">
-                <div class="content">
-                  <div class="name">鍓╀綑浠诲姟閲�</div>
-                  <div class="num"><span v-if="cneterData.crrentRestNum || cneterData.crrentRestNum == 0"
-                      class="today">{{
-                        cneterData.crrentRestNum }}</span>绠�</div>
-                  <div class="unit">杞︽锛歿{ cneterData.crrentRestCarNum }}</div>
+              <div class="tooltip_wrap">
+                <div class="item">
+                  <img src="@/assets/images/LogisticsCenter/ic_jinriweichu@2x.png" alt="">
+                  <div class="content">
+                    <div class="name">鍓╀綑浠诲姟閲�</div>
+                    <div class="num"><span v-if="cneterData.crrentRestNum || cneterData.crrentRestNum == 0"
+                        class="today">{{
+                          cneterData.crrentRestNum }}</span>绠�</div>
+                    <div class="unit">杞︽锛歿{ cneterData.crrentRestCarNum }}</div>
+                  </div>
+                </div>
+                <div class="tooltip">
+                  <div class="triangle"></div>
+                  <div>杩愯緭浠诲姟閲忥細{{ cneterData.needTransportOrderNum }}绠�</div>
+                  <div>鍚屽煄鍏卞簱浠诲姟閲忥細{{ cneterData.noNeedTransportOrderNum }}绠�</div>
                 </div>
               </div>
             </div>
@@ -226,36 +235,70 @@
                   </div> -->
                   <div :style="{ width: cneterData.level3 }"
                     :class="{ box23: cneterData.crrentOutNum >= cneterData.hoursAbility }" class="box">
-                    <div v-if="cneterData.crrentOutNum < cneterData.hoursAbility" class="tag">
-                      <div class="icon"></div>
-                      <span>浠婃棩鍑哄簱</span>
+                    <div class="tooltip_wrap">
+                      <div v-if="cneterData.crrentOutNum < cneterData.hoursAbility" class="tag">
+                        <div class="icon"></div>
+                        <span>浠婃棩鍑哄簱</span>
+                      </div>
+                      <div class="tooltip">
+                        <div class="triangle"></div>浠婃棩鍑哄簱閲忥細{{ cneterData.crrentOutNum }}绠�
+                      </div>
                     </div>
                   </div>
                   <div :style="{ width: cneterData.level2 }" class="box box1">
-                    <div v-if="cneterData.hoursAbility >= cneterData.currentPlanNum" class="tag tag1">
-                      <div class="icon"></div>
-                      <span>褰撳墠浠诲姟</span>
+                    <div class="tooltip_wrap">
+                      <div v-if="cneterData.hoursAbility >= cneterData.currentPlanNum" class="tag tag1">
+                        <div class="icon"></div>
+                        <span>褰撳墠浠诲姟</span>
+                      </div>
+                      <div class="tooltip">
+                        <div class="triangle"></div>褰撳墠浠诲姟閲忥細{{ cneterData.currentPlanNum }}绠�
+                      </div>
                     </div>
                   </div>
                 </div>
                 <div class="side">
                   <div v-if="cneterData.crrentOutNum >= cneterData.hoursAbility" :style="{ width: cneterData.level33 }"
                     class="box box22">
-                    <div class="tag">
-                      <div class="icon"></div>
-                      <span>浠婃棩鍑哄簱</span>
+                    <div class="tooltip_wrap">
+                      <div class="tag">
+                        <div class="icon"></div>
+                        <span>浠婃棩鍑哄簱</span>
+                      </div>
+                      <div class="tooltip">
+                        <div class="triangle"></div>浠婃棩鍑哄簱閲忥細{{ cneterData.crrentOutNum }}绠�
+                      </div>
                     </div>
                   </div>
                   <div v-if="cneterData.hoursAbility <= cneterData.currentPlanNum"
                     :style="{ width: cneterData.level22 }" class="box box1 box11">
-                    <div class="tag tag1">
-                      <div class="icon"></div>
-                      <span>褰撳墠浠诲姟</span>
+                    <div class="tooltip_wrap">
+                      <div class="tag tag1">
+                        <div class="icon"></div>
+                        <span>褰撳墠浠诲姟</span>
+                      </div>
+                      <div class="tooltip">
+                        <div class="triangle"></div>褰撳墠浠诲姟閲忥細{{ cneterData.currentPlanNum }}绠�
+                      </div>
                     </div>
                   </div>
                   <!-- <div class="box"></div> -->
-                  <div class="scale" style="left: -12px;">8h</div>
-                  <div class="scale scale1">鏈�澶�</div>
+                  <div class="scale" style="left: -12px;">
+                    <div class="tooltip_wrap">
+                      <span>8h</span>
+                      <div class="tooltip">
+                        <div class="triangle"></div>8灏忔椂鍑哄簱鑳藉姏锛歿{ cneterData.hoursAbility }}绠�
+                      </div>
+                    </div>
+                  </div>
+                  <div class="scale scale1">
+                    <div class="tooltip_wrap">
+                      <span>鏈�澶�</span>
+                      <div class="tooltip">
+                        <div class="triangle"></div>鏈�澶у嚭搴撹兘鍔涳細{{ cneterData.maxAbility }}绠�
+                      </div>
+                    </div>
+                  </div>
                 </div>
               </div>
             </div>
@@ -396,7 +439,7 @@
           <div class="item">
             <div class="dian"></div>
             <div class="la">杞﹁締浣嶇疆锛�</div>
-            <div class="val">{{ modalInfo.aa || '-' }}</div>
+            <div class="val">{{ modalInfo.position || '-' }}</div>
           </div>
           <div class="item">
             <div class="dian"></div>
@@ -468,6 +511,7 @@
 import VScaleScreen from 'v-scale-screen'
 import Percent from '@/components/percent.vue'
 import dayjs from 'dayjs'
+import axios from "axios"
 import * as echarts from 'echarts'
 import 'swiper/css/swiper.min.css'
 import Swiper from 'swiper'
@@ -482,6 +526,7 @@
 import {
   getStoreOperationList,
   getStorecenterData,
+  getStorecenterDataNew,
   getStoreenergyDataList,
   getStorelastMonthOil,
   getStoreTaskList,
@@ -772,6 +817,39 @@
         borderColor: '#fff'
       },
     },
+    dataZoom: [
+      {
+        type: 'slider', // 婊戝姩鏉$被鍨�
+        orient: 'vertical',
+        left: 'left',
+        start: 0,       // 璧峰浣嶇疆锛堢櫨鍒嗘瘮锛�
+        end: 40,        // 缁撴潫浣嶇疆锛堢櫨鍒嗘瘮锛夛紝鎺у埗鍒濆鏄剧ず鑼冨洿
+        width: 1,
+        backgroundColor: '#04141d', // 婊戝姩鏉¤儗鏅壊
+        // dataBackground: 'none',
+        dataBackground: {
+          areaStyle: { opacity: 0 }, // 璁剧疆鑳屾櫙閫忔槑
+          lineStyle: { opacity: 0 } // 璁剧疆鑳屾櫙閫忔槑
+        },
+        borderColor: '#04141e', // 杈规棰滆壊
+        moveOnMouseWheel: true,
+        // showDetail: false, // 闅愯棌閫変腑鑼冨洿鐨勬枃瀛�
+      },
+      {
+        type: 'inside',     // 鐢ㄤ簬鐩戝惉婊氳疆浜嬩欢
+        orient: 'vertical',
+        start: 0,
+        end: 40,
+        minSpan: 40,
+        dataBackground: {
+          areaStyle: { opacity: 0 } // 璁剧疆鑳屾櫙閫忔槑
+        },
+        maxSpan: 40,
+        zoomLock: true,     // 閿佸畾缂╂斁锛堜粎鍏佽骞崇Щ锛�
+        moveOnMouseWheel: true, // 鍚敤婊氳疆骞崇Щ
+        // zoomOnMouseWheel: false // 绂佺敤婊氳疆缂╂斁
+      }
+    ],
     grid: {
       left: '3%',
       right: '4%',
@@ -966,6 +1044,21 @@
   showModal.value = true
   kzorderInfo({ contractNumber: item.contractNumber }).then(res => {
     modalInfo.value = res.data
+    // const apiKey = 'd9a554b1808ce10a12a932ed9b0db1d0'
+    const apiKey = '3916a7b434e7f13ae1a0af64e88ec0a3'
+    if (modalInfo.value.gisList && modalInfo.value.gisList.length > 0) {
+      const gisInfo = modalInfo.value.gisList[0]
+      if (gisInfo && gisInfo.gisList && gisInfo.gisList.length > 0) {
+        const adsInfo = gisInfo.gisList[gisInfo.gisList.length - 1]
+        const location = adsInfo.lon1 + ',' + adsInfo.lat1
+        axios.get(`https://restapi.amap.com/v3/geocode/regeo?key=${apiKey}&location=${location}`).then(res => {
+          console.log('res', res.data)
+          if (res.data.status == 1) {
+            modalInfo.value.position = res.data.regeocode.formatted_address
+          }
+        })
+      }
+    }
 
     modalLoading.value = false
     nextTick(() => {
@@ -1170,7 +1263,7 @@
 }
 //  footer
 const getData3 = () => {
-  getStorecenterData({
+  getStorecenterDataNew({
     factoryCode: activeCity.value.code
   }).then(res => {
     const obj = res.data || {}
@@ -1179,7 +1272,7 @@
     // 8灏忔椂 璁″垝 浠婃棩
     // obj.hoursAbility = 6000
     // obj.maxAbility = 8000
-    // obj.currentPlanNum = 5000
+    // obj.currentPlanNum = 22000
     // obj.crrentOutNum = 7000
 
     obj.level1 = ((obj.hoursAbility / obj.maxAbility) * 100).toFixed(2) + '%'
@@ -1954,6 +2047,7 @@
       margin-top: 20px;
       padding: 0px 10px 30px 20px;
       position: relative;
+      height: 160px;
 
       .content_wrap {
         display: flex;
@@ -2214,6 +2308,36 @@
         justify-content: space-between;
         margin: 30px 0 14px;
 
+        .tooltip_wrap {
+          position: relative;
+
+          &:hover {
+            .tooltip {
+              display: block;
+            }
+          }
+
+          .tooltip {
+            display: none;
+            background: rgba(0, 30, 63, 0.6);
+            border: 1px solid #003F82;
+            backdrop-filter: blur(3px);
+            padding: 10px;
+            font-size: 15px;
+            color: #fff;
+            line-height: 19px;
+            font-weight: 400;
+            border-radius: 6px;
+            width: 230px;
+            position: absolute;
+            line-height: 24px;
+            left: 100%;
+            top: 50%;
+            transform: translate(20px, -42%);
+            z-index: 999999999999999;
+          }
+        }
+
         .item {
           display: flex;
 
@@ -2303,6 +2427,7 @@
 
             .tag {
               position: absolute;
+              z-index: 99999;
               bottom: -30px;
               right: 0;
               transform: translate(50%, 0);
@@ -2327,6 +2452,14 @@
                 transform: rotate(45deg) translate(-50%, 0);
                 background: #FECE01;
                 z-index: -1;
+              }
+            }
+
+            .tooltip_wrap {
+              .tooltip {
+                z-index: 9999999999;
+                top: 34px;
+                transform: translate(70px, -42%);
               }
             }
 
@@ -2358,16 +2491,52 @@
             background: linear-gradient(270deg, #f4b34a 0%, #FFEA70 100%);
           }
 
+          .tooltip_wrap {
+            /* position: relative; */
+
+            &:hover {
+              .tooltip {
+                display: block;
+              }
+            }
+
+            .tooltip {
+              display: none;
+              background: #071b32;
+              border: 1px solid #003F82;
+              /* backdrop-filter: blur(3px); */
+              padding: 10px;
+              font-size: 15px;
+              color: #fff;
+              line-height: 19px;
+              font-weight: 400;
+              border-radius: 6px;
+              width: 200px;
+              position: absolute;
+              z-index: 99999999;
+              left: 100%;
+              top: 50%;
+              transform: translate(30px, -42%);
+            }
+          }
+
           .scale {
             position: absolute;
             top: -24px;
             left: 0;
             font-size: 16px;
             color: #D2E0FF;
+
+            .tooltip_wrap {
+              .tooltip {
+                width: 240px;
+                transform: translate(20px, -50%);
+              }
+            }
           }
 
           .scale1 {
-            left: 84%;
+            left: 92%;
             min-width: 36px;
           }
 
@@ -2479,14 +2648,14 @@
       left: 130px;
       z-index: 999;
       top: -5px;
-      width: 407px;
+      width: 420px;
       height: 148px;
       background: rgba(0, 30, 63, 0.6);
       border: 1px solid #003F82;
       backdrop-filter: blur(3px);
       padding: 10px;
       font-size: 13px;
-      color: #e2ebfd;
+      color: #ebf1fb;
       line-height: 19px;
       font-weight: 400;
       border-radius: 6px;
@@ -2534,7 +2703,7 @@
 
   .hover_wrap {
     display: none;
-    
+
     position: absolute;
     left: 108%;
     z-index: 999;
@@ -2546,7 +2715,7 @@
     backdrop-filter: blur(3px);
     padding: 10px;
     font-size: 15px;
-    color: #e2ebfd;
+    color: #e9f0ff;
     line-height: 19px;
     font-weight: 400;
     border-radius: 6px;
@@ -2555,23 +2724,25 @@
       margin-bottom: 3px;
     }
 
-    .triangle {
-      width: 12px;
-      height: 12px;
-      position: absolute;
-      top: 10px;
-      left: -6px;
-      transform: rotate(45deg);
-      border-left: 1px solid #003F82;
-      border-bottom: 1px solid #003F82;
-      background: rgba(0, 30, 63, 0.6);
-      /* backdrop-filter: blur(3px); */
-    }
 
     .title {
       color: #e2ebfd;
     }
   }
+}
+
+.triangle {
+  width: 12px;
+  height: 12px;
+  position: absolute;
+  top: 36%;
+  transform: translate(-50%, -50%);
+  left: -6px;
+  transform: rotate(45deg);
+  border-left: 1px solid #003F82;
+  border-bottom: 1px solid #003F82;
+  background: rgba(0, 30, 63, 0.6);
+  /* backdrop-filter: blur(3px); */
 }
 
 .main_header {
@@ -2704,16 +2875,19 @@
       top: -32px !important;
     }
   }
-  .stock{
+
+  .stock {
     display: flex;
     align-items: center;
     color: #dd5d2a;
     margin-bottom: 8px;
-    img{
+
+    img {
       margin-right: 6px;
       width: 14px;
     }
   }
+
   .title_head {
     display: flex;
     align-items: center;
@@ -2742,12 +2916,12 @@
     flex-wrap: wrap;
     background-color: #0d2845;
     border-radius: 4px;
-    padding: 10px 20px 0;
+    padding: 10px 20px 0px;
     margin-bottom: 16px;
 
     .item {
       display: flex;
-      align-items: center;
+      /* align-items: center; */
       font-size: 13px;
       width: 55%;
       margin-bottom: 8px;
@@ -2762,10 +2936,16 @@
         background-color: #fff;
         border-radius: 50%;
         margin-right: 4px;
+        margin-top: 7px;
       }
 
       .la {
         color: #01D9FE;
+        width: 70px;
+      }
+
+      .val {
+        flex: 1;
       }
     }
   }

--
Gitblit v1.9.3