From d38f3d8c0642d5d58a3baeff5d80abafaa702f9f Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期一, 13 一月 2025 13:43:11 +0800
Subject: [PATCH] ll

---
 screen/src/views/LogisticsCenter.vue |  963 +++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 671 insertions(+), 292 deletions(-)

diff --git a/screen/src/views/LogisticsCenter.vue b/screen/src/views/LogisticsCenter.vue
index 4635785..195f64b 100644
--- a/screen/src/views/LogisticsCenter.vue
+++ b/screen/src/views/LogisticsCenter.vue
@@ -3,8 +3,8 @@
     <div class="main_app">
       <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>
+        <img src="@/assets/images/maintitle.gif" class="main_header_bg" alt="" />
+        <div class="title">瀹夊窘涓儫鎴愬搧闆嗘帶澶у睆</div>
         <div class="time_wrap">
           <span class="date">{{ date }}</span>
           <span class="week">{{ week }}</span>
@@ -21,10 +21,19 @@
             <img src="@/assets/images/title@2x.png" class="bg" alt="" />
           </div>
           <div class="left_box_one">
+            <Loading v-if="loading1" />
             <div class="second_title">
               <div class="title">
                 <img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" />
-                <div>绱鍑哄簱閲�</div>
+                <div>绱鍑哄簱閲�(绠�)</div>
+                <div class="question">
+                  <img src="@/assets/images/ic_question@2x.png" style="margin-left: 6px;" class="icon" alt="">
+                  <div class="hover_wrap">
+                    <div class="triangle"></div>
+                    <div class="title">绱鍑哄簱閲忕粺璁¤鏄庯細</div>
+                    <div>绱鍑哄簱閲忥細鎵�鏈夌墿娴佸嚭搴撲綔涓氭暟鎹紙鍖呭惈鑱旇惀鍔犲伐锛堝洖杩愩�佽惤鍦伴攢鍞級銆佸墠缃簱绉诲簱(鎴愰兘/涓存矀)绛夋墍鏈夊嚭搴撲綔涓氭暟鎹級</div>
+                  </div>
+                </div>
               </div>
               <div class="tabs">
                 <div class="tab" :class="{ active: activeTab1 == 1 }" @click="tab1Click(1)">鏈懆</div>
@@ -36,11 +45,22 @@
             </div>
             <div class="content_wrap">
               <div class="num_wrap">
-                <div class="num_list" v-if="StockOutData.currentNum">
-                  <div class="num" v-for="i in StockOutData.currentNum + ''">
-                    {{ i }}
-                    <img class="bg" src="@/assets/images/LogisticsCenter/bg_number@2x.png" alt="">
+
+                <div class="question1">
+                  <div class="hover_con">
+                    <div class="num_list" v-if="StockOutData.currentNum || StockOutData.currentNum == 0">
+                      <div class="num" v-for="i in StockOutData.currentNum + ''">
+                        {{ i }}
+                        <img class="bg" src="@/assets/images/LogisticsCenter/bg_number@2x.png" alt="">
+                      </div>
+                    </div>
+                    <div class="hover_wrap">
+                      <div class="triangle"></div>
+                      <div class="title">璋冩嫧鍑哄簱閲忥細{{ StockOutData.currentProvinceNum || 0 }}绠�</div>
+                      <div class="title">鍏朵粬鍑哄簱閲忥細{{ StockOutData.currentOtherNum || 0 }}绠�</div>
+                    </div>
                   </div>
+
                 </div>
                 <div class="content">
                   <div class="unit_wrap">
@@ -89,7 +109,7 @@
             <div class="second_title">
               <div class="title">
                 <img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" />
-                <div>褰撳墠杩愯緭浠诲姟</div>
+                <div>褰撳墠璁㈠崟浠诲姟</div>
               </div>
               <div class="search_wrap">
                 <img src="@/assets/images/LogisticsCenter/ic_search@2x.png" alt="">
@@ -100,9 +120,9 @@
             </div>
             <div class="list_wrap">
               <div class="header line">
-                <span class="item">杩愯緭杞﹁締</span>
-                <span class="item status">鐘舵��</span>
-                <span class="item">浣嶇疆</span>
+                <span class="item">鍚堝悓鍙�</span>
+                <span class="item status">璁㈠崟鐘舵��</span>
+                <span class="item">鐩殑鍦�</span>
                 <span class="item">浠诲姟涓嬭揪鏃堕棿</span>
               </div>
               <div class="one-swiper list">
@@ -113,11 +133,16 @@
                     <span class="item">{{ item.contractNumber }}</span>
                     <span class="item status">{{ item.statusDesc }}</span>
                     <span class="item">{{ item.receiveEnterprise }}</span>
-                    <span class="item">{{ item.transportDate }}</span>
+                    <span class="item">{{ item.createDate || '-' }}</span>
                   </div>
                 </div>
               </div>
-
+              <template v-if="isLoadingTask || transportTask.length == 0">
+                <Loading v-if="isLoadingTask" />
+                <div class="empty" v-else>
+                  <img src="@/assets/images/default_nodata.png" alt="">
+                </div>
+              </template>
             </div>
           </div>
         </div>
@@ -127,6 +152,17 @@
               <div class="left">
                 <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
                 <span>鍑哄簱鑳藉姏</span>
+                <div class="question">
+                  <img src="@/assets/images/ic_question@2x.png" style="margin-left: 4px;" class="icon" alt="">
+                  <div class="hover_wrap">
+                    <div class="triangle"></div>
+                    <div class="title">鍑哄簱鑳藉姏缁熻璇存槑锛�</div>
+                    <div>褰撳墠璁㈠崟閲忥細鎴嚦鏄ㄦ棩鏈畬鎴愯鍗�+褰撴棩涓嬭揪鐨勮鍗曟暟閲忥紱</div>
+                    <div>褰撴棩浠诲姟閲忥細鎴嚦鏄ㄦ棩宸查厤杞芥湭鍑哄簱+褰撴棩宸查厤杞芥湭鍑哄簱鏁伴噺+鏃犻渶閰嶈浇鐨勪换鍔★紱</div>
+                    <div>浠婃棩鍑哄簱閲忥細褰撴棩鎸夊疄闄呭嚭搴撻噺锛堜互鐢靛瓙閿佷笂閿佷负鍑嗭級</div>
+                    <div>鍓╀綑浠诲姟閲忥細褰撴棩浠诲姟閲�-浠婃棩鍑哄簱閲�</div>
+                  </div>
+                </div>
               </div>
               <div class="right">
                 <img @click="showPro = !showPro" src="@/assets/images/LogisticsCenter/position.png" class="posi" alt="">
@@ -141,15 +177,18 @@
               <div class="item">
                 <img src="@/assets/images/LogisticsCenter/ic_jinrijihua@2x.png" alt="">
                 <div class="content">
-                  <div class="name">褰撴棩璁㈠崟閲�</div>
-                  <div class="num"><span class="blue">{{ cneterData.currentOrderNum }}</span>涓囨敮</div>
+                  <div class="name">褰撳墠璁㈠崟閲�</div>
+                  <div class="num"><span class="blue"
+                      v-if="cneterData.currentOrderNum || cneterData.currentOrderNum == 0">{{
+                        cneterData.currentOrderNum }}</span>绠�</div>
                 </div>
               </div>
               <div class="item">
                 <img src="@/assets/images/LogisticsCenter/ic_jinrijihua@2.png" alt="">
                 <div class="content">
-                  <div class="name">褰撴棩璁″垝閲�</div>
-                  <div class="num"><span>{{ cneterData.currentPlanNum }}</span>涓囨敮</div>
+                  <div class="name">褰撳墠浠诲姟閲�</div>
+                  <div class="num"><span v-if="cneterData.currentPlanNum || cneterData.currentPlanNum == 0">{{
+                    cneterData.currentPlanNum }}</span>绠�</div>
                   <div class="unit">杞︽锛歿{ cneterData.currentPlanCarNum }}</div>
                 </div>
               </div>
@@ -157,7 +196,9 @@
                 <img src="@/assets/images/LogisticsCenter/ic_jinrichuku@2x.png" alt="">
                 <div class="content">
                   <div class="name">浠婃棩鍑哄簱閲�</div>
-                  <div class="num"><span class="finish">{{ cneterData.crrentOutNum }}</span>涓囨敮</div>
+                  <div class="num"><span v-if="cneterData.crrentOutNum || cneterData.crrentOutNum == 0"
+                      class="finish">{{
+                        cneterData.crrentOutNum }}</span>绠�</div>
                   <div class="unit">杞︽锛歿{ cneterData.crrentOutCarNum }}</div>
                 </div>
               </div>
@@ -165,14 +206,16 @@
                 <img src="@/assets/images/LogisticsCenter/ic_jinriweichu@2x.png" alt="">
                 <div class="content">
                   <div class="name">鍓╀綑浠诲姟閲�</div>
-                  <div class="num"><span class="today">{{ cneterData.crrentRestNum }}</span>涓囨敮</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>
             <div class="footer">
               <div class="wrap">
-                <div class="content">
+                <div class="content" :style='{ width: cneterData.level1 }'>
                   <div class="scale">0</div>
                   <!-- <div class="node">
                     <div>8h</div>
@@ -181,40 +224,57 @@
                       <div class="icon icon2"></div>
                     </div>
                   </div> -->
-                  <div class="box">
+                  <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>
+                  </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>
+                  </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>
                   </div>
-                  <div class="box box1">
+                  <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>
+                      <span>褰撳墠浠诲姟</span>
                     </div>
                   </div>
-                </div>
-                <!-- <div class="side">
-                  <div class="box"></div>
+                  <!-- <div class="box"></div> -->
                   <div class="scale" style="left: -12px;">8h</div>
                   <div class="scale scale1">鏈�澶�</div>
-                </div> -->
+                </div>
               </div>
             </div>
           </div>
           <div class="center_box_two">
             <div class="echart_map" ref="mapEchart" id="echart_map"></div>
-            <div v-if="showModal1" @click="showModal1 = false" class="modal1">
-              <div class="list">
+            <div v-if="showModal1" class="modal1">
+              <div class="content">
                 <div class="head line">
                   <div class="item">杞︾墝鍙�</div>
-                  <div class="item contract">鍚堝悓鍙�</div>
-                  <div class="item">鐩殑鍦�</div>
+                  <div class="item">鍚堝悓鍙�</div>
+                  <div class="item addr">鐩殑鍦�</div>
                 </div>
-                <div class="line" v-for="item in active1List">
-                  <div class="item">{{ item.platNumber }}</div>
-                  <div class="item contract">{{ item.contractNumber }}</div>
-                  <div class="item">{{ item.repertotyName }}</div>
+                <div class="list">
+                  <div class="line" v-for="item in active1List">
+                    <div class="item">{{ item.platNumber }}</div>
+                    <div class="item">{{ item.contractNumber }}</div>
+                    <div class="item addr">{{ item.repertotyName }}</div>
+                  </div>
                 </div>
               </div>
             </div>
@@ -254,8 +314,8 @@
               </div>
               <div class="side">
                 鍏ㄧ渷锛�
-                <span>{{ data5.totalNum }}</span>
-                <span class="unit">涓囨敮 | </span>
+                <span>{{ data5.currentNum }}</span>
+                <span class="unit">绠� | </span>
                 <span v-if="data5.totalNum">{{ ((data5.currentNum / data5.totalNum) * 100).toFixed(1) }}%</span>
               </div>
             </div>
@@ -269,7 +329,12 @@
                 <img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" />
                 <div>鍑哄簱鑳藉姏鍒╃敤鐜�</div>
               </div>
-              <div class="side">鍏ㄧ渷锛�<span>100<span class="unit">涓囨敮 |</span> 40.6%</span></div>
+              <div class="side">
+                鍏ㄧ渷锛�
+                <span>{{ data6.currentNum }}</span>
+                <span class="unit">绠� | </span>
+                <span v-if="data6.totalNum">{{ ((data6.currentNum / data6.totalNum) * 100).toFixed(1) }}%</span>
+              </div>
             </div>
             <div class="echart5_wrap">
               <div class="echart5" id="echart6"></div>
@@ -279,9 +344,14 @@
             <div class="second_title">
               <div class="title">
                 <img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" />
-                <div>杩愮敤璧勬簮鍒╃敤鐜�</div>
+                <div>杩愬姏璧勬簮鍒╃敤鐜�</div>
               </div>
-              <div class="side">鍏ㄧ渷锛�<span>100<span class="unit">涓囨敮 |</span> 40.6%</span></div>
+              <div class="side">
+                鍏ㄧ渷锛�
+                <span>{{ data7.currentNum }}</span>
+                <span class="unit">杈� | </span>
+                <span v-if="data7.totalNum">{{ (data7.useRate * 100).toFixed(1) }}%</span>
+              </div>
             </div>
             <div class="echart5_wrap">
               <div class="echart5" id="echart7"></div>
@@ -292,8 +362,15 @@
       <!--  -->
       <div class="modal_wrap" v-if="showModal">
         <div class="title_head">
-          <img src="@/assets/images/energy_ef/chuku_ic_car@2x.png" alt="">
-          <span>鍚堝悓鍙凤細{{ modalInfo.contractNumber }}</span>
+          <div class="left">
+            <img src="@/assets/images/LogisticsCenter/ic_hetong.png" alt="">
+            <span>鍚堝悓鍙凤細{{ modalInfo.contractNumber }}</span>
+          </div>
+          <div class="tit_status">{{ modalInfo.orderStatusDesc }}</div>
+        </div>
+        <div v-if="modalInfo.overStock && modalInfo.overStock == 1" class="stock">
+          <img src="@/assets/images/LogisticsCenter/ic_tips@2x.png" alt="">
+          <span>鍥犲簱瀛樹笉瓒筹紝璁㈠崟鏆傛椂鏃犳硶閰嶈浇</span>
         </div>
         <div class="info">
           <div class="item">
@@ -334,7 +411,8 @@
           </div>
           <div id="map-container" ref="mapContainer"></div>
           <div class="fu_list">
-            <div class="fu_item" v-for="item, i in modalInfo.cicleStatusList">
+            <div class="fu_item" v-for="item, k in modalInfo.cicleStatusList">
+              <view v-if="k != modalInfo.cicleStatusList.length - 1" class="separate"></view>
               <div class="item_title">
                 <div class="icon">
                   <img v-if="item.key == 0 && k != 0" src="@/assets/images/LogisticsCenter/ic_dingdan@2x.png"
@@ -369,7 +447,7 @@
                   <div v-else class="icon_wrap"></div>
                   <div class="text" :class="{ placeholder3: k == 0 && i == 0 }">
                     {{ ite.orderStatusDes }}
-                    <text v-if="ite.tel">锛屽彂璐т粨搴撶數璇濓細</text>
+                    <text v-if="ite.tel">,鍙戣揣浠撳簱鐢佃瘽锛�</text>
                     <text v-if="ite.tel" class="primaryColor">{{ ite.tel }}</text>
                   </div>
                 </div>
@@ -378,8 +456,9 @@
             </div>
           </div>
         </div>
+        <Loading v-if="modalLoading" />
       </div>
-      <div class="modal_mask" v-if="showModal" @click="showModal = false"></div>
+      <div class="modal_mask" v-if="showModal || showModal1" @click="closeModal"></div>
     </div>
   </v-scale-screen>
 </template>
@@ -396,9 +475,12 @@
 import chinaJSON from '@/assets/china.json'
 import fahuoImg from '@/assets/images/LogisticsCenter/ic_fahuodi@2x.png'
 import shouImg from '@/assets/images/LogisticsCenter/ic_huowu@2x.png'
+// import Loading from 'vue-loading-overlay'
+// import 'vue-loading-overlay/dist/css/index.css'
+import Loading from '@/components/Loading.vue'
+
 import {
   getStoreOperationList,
-  getStorearriveGoodsList,
   getStorecenterData,
   getStoreenergyDataList,
   getStorelastMonthOil,
@@ -424,68 +506,7 @@
   time.value = dayjs().format('HH:mm:ss')
 
 }, 1000)
-
-const initEchart2 = () => {
-  const myChart = echarts.init(document.getElementById('echart1'))
-  const option = {
-    series: [
-      {
-        type: 'pie',
-        radius: ['86%', '100%'],
-        label: {
-          show: false,
-          position: 'center'
-        },
-        padAngle: 5,
-        itemStyle: {
-          borderRadius: 10
-        },
-        color: colors,
-        labelLine: {
-          show: false
-        },
-        data: [
-          { value: 1048, name: 'Search Engine' },
-          { value: 735, name: 'Direct' },
-          { value: 580, name: 'Email' }
-        ]
-      }
-    ]
-  }
-  myChart.setOption(option)
-  window.addEventListener('resize', function () { // 鎵ц
-    myChart.resize()
-  })
-}
-const initEchart3 = () => {
-  const myChart = echarts.init(document.getElementById('echart3'))
-  const option = {
-    tooltip: {
-      trigger: 'item'
-    },
-    series: [
-      {
-        type: 'pie',
-        radius: ['80%', '96%'],
-        label: {
-          show: false,
-          position: 'center'
-        },
-        color: ['#72ecc5', '#19373a'],
-        labelLine: {
-          show: false
-        },
-        data: [3, 7]
-      }
-    ]
-  }
-  myChart.setOption(option)
-  window.addEventListener('resize', function () { // 鎵ц
-    myChart.resize()
-  })
-}
-
-// 
+//
 const mapList = ref([])
 const mapEchart = ref()
 const initMap = () => {
@@ -501,50 +522,60 @@
     { value: [103.9526, 30.7617, 1901], itemStyle: { color: '#fff' }, name: '鍥涘窛', total: 18, bj: 0, yj: 0, yx: 18, tj: 0, dw: 0 }
   ]
   const mapData = [
-    { name: '鍖椾含甯�', value: 0 },
-    { name: '澶╂触甯�', value: 0 },
-    { name: '涓婃捣甯�', value: 0 },
-    { name: '閲嶅簡甯�', value: 0 },
-    { name: '娌冲寳鐪�', value: 0 },
-    { name: '娌冲崡鐪�', value: 0 },
-    { name: '浜戝崡鐪�', value: 0 },
-    { name: '杈藉畞鐪�', value: 0 },
-    { name: '榛戦緳姹熺渷', value: 0 },
-    { name: '婀栧崡鐪�', value: 0 },
-    { name: '瀹夊窘鐪�', value: 0 },
-    { name: '灞变笢鐪�', value: 0 },
-    { name: '鏂扮枂缁村惥灏旇嚜娌诲尯', value: 0 },
-    { name: '姹熻嫃鐪�', value: 0 },
-    { name: '娴欐睙鐪�', value: 0 },
-    { name: '姹熻タ鐪�', value: 0 },
-    { name: '婀栧寳鐪�', value: 0 },
-    { name: '骞胯タ澹棌鑷不鍖�', value: 0 },
-    { name: '鐢樿們鐪�', value: 0 },
-    { name: '灞辫タ鐪�', value: 0 },
-    { name: '鍐呰挋鍙よ嚜娌诲尯', value: 0 },
-    { name: '闄曡タ鐪�', value: 0 },
-    { name: '鍚夋灄鐪�', value: 0 },
-    { name: '绂忓缓鐪�', value: 0 },
-    { name: '璐靛窞鐪�', value: 0 },
-    { name: '骞夸笢鐪�', value: 0 },
-    { name: '闈掓捣鐪�', value: 0 },
-    { name: '瑗胯棌鑷不鍖�', value: 0 },
-    { name: '瀹佸鍥炴棌鑷不鍖�', value: 0 },
-    { name: '鍥涘窛鐪�', value: 0 },
-    { name: '瀹佸鐪�', value: 0 },
-    { name: '娴峰崡鐪�', value: 0 },
-    { name: '鍙版咕鐪�', value: 0 },
-    { name: '棣欐腐鐗瑰埆琛屾斂鍖�', value: 0 },
-    { name: '婢抽棬鐗瑰埆琛屾斂鍖�', value: 0 },
+    { name: '鍖椾含甯�', code: '110000', value: 0 },
+    { name: '澶╂触甯�', code: '120000', value: 0 },
+    { name: '涓婃捣甯�', code: '310000', value: 0 },
+    { name: '閲嶅簡甯�', code: '500000', value: 0 },
+    { name: '娌冲寳鐪�', code: '130000', value: 0 },
+    { name: '娌冲崡鐪�', code: '410000', value: 0 },
+    { name: '浜戝崡鐪�', code: '530000', value: 0 },
+    { name: '杈藉畞鐪�', code: '210000', value: 0 },
+    { name: '榛戦緳姹熺渷', code: '230000', value: 0 },
+    { name: '婀栧崡鐪�', code: '430000', value: 0 },
+    { name: '瀹夊窘鐪�', code: '340000', value: 0 },
+    { name: '灞变笢鐪�', code: '370000', value: 0 },
+    { name: '鏂扮枂缁村惥灏旇嚜娌诲尯', code: '650000', value: 0 },
+    { name: '姹熻嫃鐪�', code: '320000', value: 0 },
+    { name: '娴欐睙鐪�', code: '330000', value: 0 },
+    { name: '姹熻タ鐪�', code: '360000', value: 0 },
+    { name: '婀栧寳鐪�', code: '420000', value: 0 },
+    { name: '骞胯タ澹棌鑷不鍖�', code: '450000', value: 0 },
+    { name: '鐢樿們鐪�', code: '620000', value: 0 },
+    { name: '灞辫タ鐪�', code: '140000', value: 0 },
+    { name: '鍐呰挋鍙よ嚜娌诲尯', code: '150000', value: 0 },
+    { name: '闄曡タ鐪�', code: '610000', value: 0 },
+    { name: '鍚夋灄鐪�', code: '220000', value: 0 },
+    { name: '绂忓缓鐪�', code: '350000', value: 0 },
+    { name: '璐靛窞鐪�', code: '520000', value: 0 },
+    { name: '骞夸笢鐪�', code: '440000', value: 0 },
+    { name: '闈掓捣鐪�', code: '630000', value: 0 },
+    { name: '瑗胯棌鑷不鍖�', code: '540000', value: 0 },
+    { name: '瀹佸鍥炴棌鑷不鍖�', code: '640000', value: 0 },
+    { name: '鍥涘窛鐪�', code: '510000', value: 0 },
+    { name: '瀹佸鐪�', code: '640000', value: 0 },
+    { name: '娴峰崡鐪�', code: '460000', value: 0 },
+    { name: '鍙版咕鐪�', code: '710000', value: 0 },
+    { name: '棣欐腐鐗瑰埆琛屾斂鍖�', code: '810000', value: 0 },
+    { name: '婢抽棬鐗瑰埆琛屾斂鍖�', code: '820003', value: 0 },
+    { name: '鍗楁捣璇稿矝', code: '', value: 0 },
   ]
+  let totalNum = 0
+  mapList.value.forEach(i => {
+    totalNum += i.yearNum
+  })
   mapData.forEach(item => {
     item.monthNum = 0
     item.yearNum = 0
     mapList.value.forEach(ite => {
-      if (item.name == ite.name) {
-        item.value = ite.value
+      if (item.code == ite.code) {
+        item.value = 0
         item.monthNum = ite.monthNum
         item.yearNum = ite.yearNum
+        if (totalNum > 0) {
+          item.rate = ((ite.yearNum / totalNum) * 100).toFixed(2)
+          item.value = (ite.yearNum / totalNum).toFixed(4)
+
+        }
       }
     })
   })
@@ -554,10 +585,14 @@
     visualMap: {
       type: 'piecewise',
       pieces: [
-        { min: 100000, max: 99999999999, label: '鍑哄簱閲�10w浠ヤ笂', color: '#be6f2b' },
-        { min: 50000, max: 100000, label: '鍑哄簱閲�5-10w', color: '#c39332' },
-        { min: 20000, max: 50000, label: '鍑哄簱閲�2-5w', color: '#5ecbaf' },
-        { min: -1, max: 20000, label: '鍑哄簱閲�2w浠ヤ笅', color: '#325a9b' },
+        { min: 0.05, max: 99999999999, label: '璋冩嫧閲忓崰姣�5%浠ヤ笂', color: '#be6f2b' },
+        { min: 0.02, max: 0.05, label: '璋冩嫧閲忓崰姣�2%~5%', color: '#c39332' },
+        { min: 0.01, max: 0.02, label: '璋冩嫧閲忓崰姣�1%~2%', color: '#5ecbaf' },
+        { min: -1, max: 0.01, label: '璋冩嫧閲忓崰姣�1%浠ヤ笅', color: '#3561a4' },
+        // { min: 100000, max: 99999999999, label: '鍑哄簱閲�10w浠ヤ笂', color: '#be6f2b' },
+        // { min: 50000, max: 100000, label: '鍑哄簱閲�5-10w', color: '#c39332' },
+        // { min: 20000, max: 50000, label: '鍑哄簱閲�2-5w', color: '#5ecbaf' },
+        // { min: -1, max: 20000, label: '鍑哄簱閲�2w浠ヤ笅', color: '#3561a4' },
       ],
       itemWidth: 22,
       itemHeight: 22,
@@ -595,8 +630,8 @@
       center: [105.194115019531, 36.582111640625], // 鍦板浘涓績浣嶇疆锛� 姝ゅ鐨勭含搴︿笌涓嬮潰鐨刢enter鐩稿樊1搴︽槸褰㈡垚闃村奖鐨勮窛绂伙紝鍙嚜宸遍殢鎰忚皟鏁�
       itemStyle: {
         areaColor: '#152e4a', //鍦板浘闃村奖鐨勯鑹�
-        borderColor: '#f7f7f7', // 鐪佷唤杈规棰滆壊
-        borderWidth: 0.1, // 鐪佷唤杈规瀹藉害
+        borderColor: '#779dc8', // 鐪佷唤杈规棰滆壊
+        borderWidth: 0.5, // 鐪佷唤杈规瀹藉害
         // shadowBlur: 5, // 鐪佷唤杈规鑱氱劍
       },
       emphasis: {
@@ -637,11 +672,12 @@
           },
           itemStyle: {
             show: true,
-            color: '#00114F', // 楂樹寒鏂囧瓧棰滆壊
+            color: '#fff', // 楂樹寒鏂囧瓧棰滆壊
             borderColor: '#a4d0ec', // 楂樹寒杈规棰滆壊
-            areaColor: '#63d5c1', //楂樹寒鍖哄煙棰滆壊
+            areaColor: '#0056FF', //楂樹寒鍖哄煙棰滆壊
           },
         },
+        selectedMode: false,
         label: {
           // 鍦板浘鏍囨敞
           show: false,
@@ -657,20 +693,27 @@
             return `<div class="map-tip-box">
                         <div class="item-state-con title">
                           <div class="icon"></div>
-                          <span>${params.data.name}</span>  
+                          <span>${params.data.name}</span>
                         </div>
                         <div class="item-state-con">
                           <span class="dot bj"></span>
                           <span class="item-state-num">
-                            <span class="text">鏈湀鍑哄簱閲忥細</span>
-                            <span class="num">${params.data.monthNum}涓囨敮</span>
+                            <span class="text">鏈湀璋冩嫧閲忥細</span>
+                            <span class="num">${params.data.monthNum}绠�</span>
                           </span>
                         </div>
-                         <div class="item-state-con">
+                        <div class="item-state-con">
                           <span class="dot yj"></span>
                           <span class="item-state-num">
-                           <span class="text">鏈勾鍑哄簱閲忥細</span>
-                            <span class="num">${params.data.yearNum}涓囨敮</span>
+                           <span class="text">鏈勾璋冩嫧閲忥細</span>
+                            <span class="num">${params.data.yearNum}绠�</span>
+                          </span>
+                        </div>
+                        <div class="item-state-con">
+                          <span class="dot yj"></span>
+                          <span class="item-state-num">
+                           <span class="text">璋冩嫧閲忓崰姣旓細</span>
+                            <span class="num">${params.data.rate || 0}%</span>
                           </span>
                         </div>
                        </div>`
@@ -700,6 +743,7 @@
     mapList.value = temp.map(item => {
       item.value = item.monthNum
       item.name = item.provinceName
+      item.code = item.provinceCode
       return item
     })
     initMap()
@@ -737,6 +781,9 @@
     },
     xAxis: {
       type: 'value',
+      axisLabel: {
+        color: '#D2E0FF'
+      },
       splitLine: {
         show: true,
         lineStyle: {
@@ -749,6 +796,9 @@
     yAxis: {
       axisTick: {
         show: false,
+      },
+      axisLabel: {
+        color: '#D2E0FF'
       },
       type: 'category',
       axisLine: {
@@ -766,7 +816,7 @@
           show: true,
           textStyle: {
             color: '#000000',
-            fontSize: 10
+            fontSize: 12
           }
         },
         emphasis: {
@@ -802,7 +852,11 @@
         stack: 'total',
         barWidth: 14,
         label: {
-          show: true
+          show: true,
+          textStyle: {
+            color: '#000000',
+            fontSize: 12
+          }
         },
         emphasis: {
           focus: 'series'
@@ -837,7 +891,11 @@
         barWidth: 14,
         stack: 'total',
         label: {
-          show: true
+          show: true,
+          textStyle: {
+            color: '#000000',
+            fontSize: 12
+          }
         },
         textStyle: {
           color: '#000000',
@@ -853,13 +911,13 @@
               y2: 0,
               colorStops: [{
                 offset: 0,
-                color: '#71f3ce'
+                color: '#73f7d1'
               }, {
                 offset: 1,
-                color: '#4da999'
+                color: '#58beaa'
               }]
             }
-          }
+          },
         },
         emphasis: {
           focus: 'series'
@@ -885,7 +943,7 @@
 
 const dataList1 = ref([])
 const getData1 = () => {
-  getStorearriveGoodsList({
+  arriveGoodsList({
     factoryCode: activeCity.value.code
   }).then(res => {
     dataList1.value = res.data || []
@@ -896,24 +954,31 @@
 const transportTask = ref([])
 const taskCode = ref('')
 const showModal = ref(false)
+const modalLoading = ref(false)
 const modalInfo = ref({})
 const modalTab = ref(0)
 const pager = ref({
   page: 0,
-  rows: 10
+  rows: 50
 })
-const modalTabClick = (val) => {
-  modalTab.value = val
-}
 const taskClick = (item) => {
+  modalLoading.value = true
+  showModal.value = true
   kzorderInfo({ contractNumber: item.contractNumber }).then(res => {
     modalInfo.value = res.data
-    showModal.value = true
-    console.log('modalInfo.value', modalInfo.value)
+
+    modalLoading.value = false
     nextTick(() => {
       initGdMap()
     })
+  }, () => {
+    modalLoading.value = false
   })
+}
+const closeModal = () => {
+  showModal.value = false
+  showModal1.value = false
+  modalInfo.value = {}
 }
 
 
@@ -996,8 +1061,9 @@
   })
   map.add(polyline)
 }
+const isLoadingTask = ref(false)
 const getData2 = () => {
-
+  isLoadingTask.value = true
   getStoreTaskList({
     pager: pager.value,
     parameters: {
@@ -1005,13 +1071,18 @@
       facrotyCodeList: activeCity.value.code ? [activeCity.value.code] : []
     }
   }).then(res => {
+    isLoadingTask.value = false
     let temp = res.data.rows || []
     transportTask.value = temp.map(item => {
-      if (item.transportDate) {
-        item.transportDate = item.transportDate.slice(5, 16)
+      if (item.createDate) {
+        item.createDate = item.createDate.slice(5, 16)
       }
       return item
     })
+    console.log('isLoadingTask', isLoadingTask.value)
+
+  }, () => {
+    isLoadingTask.value = false
   })
 }
 
@@ -1020,7 +1091,7 @@
 const cityList = ref()
 const getCity = () => {
   kzfactoryList().then(res => {
-    cityList.value = res.data
+    cityList.value = [{ name: '鍏ㄧ渷', code: '' }, ...res.data]
   })
 }
 const activeCity = ref({ name: '鍏ㄧ渷', code: '' })
@@ -1045,6 +1116,15 @@
           show: false,
           position: 'center'
         },
+        emphasis: {
+          // 璁剧疆鎮诞鏃舵牱寮忎负绌�
+          scale: false, // 鍏抽棴鏀惧ぇ鏁堟灉
+          itemStyle: {
+            shadowBlur: 0, // 闃村奖妯$硦搴︿负 0
+            shadowOffsetX: 0,
+            shadowColor: 'rgba(0, 0, 0, 0)',
+          },
+        },
         color: colors,
         labelLine: {
           show: false
@@ -1060,9 +1140,12 @@
 }
 
 const activeTab1 = ref(0)
+const loading1 = ref(false)
 const StockOutData = ref({})
 const getStockOut = () => {
+  loading1.value = true
   kztotalOutQtyNum({ type: activeTab1.value, factoryCode: activeCity.value.code }).then(res => {
+    loading1.value = false
     if (res.code == 200) {
       let obj = res.data
       obj.currentNum = (obj.currentOutNum + obj.currentInNum).toFixed(0) * 1
@@ -1077,15 +1160,54 @@
       initEchart1()
     }
 
+  }, () => {
+    loading1.value = false
   })
 }
 const tab1Click = (val) => {
   activeTab1.value = val
   getStockOut()
 }
+//  footer
 const getData3 = () => {
-  getStorecenterData().then(res => {
-    cneterData.value = res.data || {}
+  getStorecenterData({
+    factoryCode: activeCity.value.code
+  }).then(res => {
+    const obj = res.data || {}
+    console.log('obj', obj)
+
+    // 8灏忔椂 璁″垝 浠婃棩
+    // obj.hoursAbility = 6000
+    // obj.maxAbility = 8000
+    // obj.currentPlanNum = 5000
+    // obj.crrentOutNum = 7000
+
+    obj.level1 = ((obj.hoursAbility / obj.maxAbility) * 100).toFixed(2) + '%'
+    if (obj.currentPlanNum >= obj.hoursAbility) {
+      obj.level2 = '100%'
+      obj.level22 = (((obj.currentPlanNum - obj.hoursAbility) / (obj.maxAbility - obj.hoursAbility)) * 100).toFixed(2)
+      obj.level22 = obj.level22 > 100 ? '100%' : obj.level22 + '%'
+    } else {
+      obj.level2 = ((obj.currentPlanNum / obj.hoursAbility) * 100).toFixed(2) + '%'
+      obj.level22 = 0
+    }
+    if (obj.crrentOutNum >= obj.hoursAbility) {
+      obj.level3 = '100%'
+      obj.level33 = (((obj.crrentOutNum - obj.hoursAbility) / (obj.maxAbility - obj.hoursAbility)) * 100).toFixed(2)
+      obj.level33 = obj.level33 > 100 ? '100%' : obj.level33 + '%'
+    } else {
+      obj.level3 = ((obj.crrentOutNum / obj.hoursAbility) * 100).toFixed(2) + '%'
+      obj.level33 = 0
+    }
+
+    // console.log('obj1', obj.level1);
+    // console.log('obj2', obj.level2);
+    // console.log('obj22', obj.level22);
+    // console.log('obj3', obj.level3);
+    // console.log('obj33', obj.level33);
+
+    cneterData.value = obj
+
   })
 }
 
@@ -1100,9 +1222,9 @@
     legend: {
       itemGap: 12,
       // icon: 'circle',
-      right: '16%',
+      right: '12%',
       top: '0%',
-      data: ['鎬诲簱瀛�', '褰撳墠搴撳瓨', '搴撳瓨鍒╃敤鐜�'],
+      data: ['鎬诲簱瀹�', '褰撳墠搴撳瓨', '搴撳瓨鍒╃敤鐜�'],
       itemWidth: 20,
       itemHeight: 10,
       textStyle: {
@@ -1118,7 +1240,33 @@
       containLabel: true
     },
     tooltip: {
-      trigger: 'axis'
+      trigger: 'axis',
+      formatter: function (params) {
+        // 閬嶅巻鎮诞鏃剁殑鎵�鏈夌偣锛屽畾鍒跺寲鏄剧ず鍐呭
+        let result = `<div style="width: 160px">${params[0].name}</div>`
+        params.forEach((item) => {
+          if (item.seriesName === '鎬诲簱瀹�') {
+            result += `
+            <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;">
+              <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #5e9bca;margin-right: 4px;"></div><div>${item.seriesName}</div></div>
+              <div><strong>${item.value}</strong></div>
+            </div>`
+          } else if (item.seriesName === '褰撳墠搴撳瓨') {
+            result += `
+            <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;">
+              <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px;  border-radius: 50%;background-color: #e2a44f;margin-right: 4px;"></div><div>${item.seriesName}</div></div>
+              <div><strong>${item.value}</strong></div>
+            </div>`
+          } else if (item.seriesName === '搴撳瓨鍒╃敤鐜�') {
+            result += `
+            <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;">
+              <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #b2bcd1;margin-right: 4px;"></div><div>${item.seriesName}</div></div>
+              <div><strong>${item.value}%</strong></div>
+            </div>`
+          }
+        })
+        return result
+      }
     },
     xAxis: [{
       nameGap: 5,
@@ -1131,7 +1279,6 @@
       },
       axisLabel: {
         color: '#869CC9'
-        // fontSize: 24,
       },
       axisTick: {
         show: false,
@@ -1143,11 +1290,10 @@
         nameTextStyle: {
           color: '#869CC9',
         },
-        name: '涓囨敮',
+        name: '绠�',
         nameGap: 16,
         type: 'value',
         axisLabel: {
-          show: true,
           color: "#869CC9",
         },
         axisLine: {
@@ -1167,17 +1313,20 @@
         name: '%',
         nameGap: 16,
         min: 0,
-        max: 100,
-        interval: 25,
+        // max: 100,
         axisLabel: {
-          formatter: '{value}'
+          color: "#869CC9",
+        },
+        nameTextStyle: {
+          color: '#869CC9',
+          padding: [0, 0, 0, 12]
         },
         splitLine: false
       }
     ],
     series: [
       {
-        name: '鎬诲簱瀛�',
+        name: '鎬诲簱瀹�',
         type: 'bar',
         barWidth: 10,
         barGap: '60%',
@@ -1249,11 +1398,14 @@
           color: "#9eabc2"
         },
         yAxisIndex: 1,
+        tooltip: {
+          show: true,
+          formatter: '{c}' + '%',
+        },
         label: {
           show: false,
           position: 'top',
           color: '#fff',
-          // formatter: '{c}' + '%',
         },
         data: data5.value.detailList.map(i => i.useRate)
       }
@@ -1274,7 +1426,7 @@
       // icon: 'circle',
       right: '10%',
       top: '0',
-      data: ['鍑哄簱鑳藉姏', '褰撴棩鍑哄簱閲�', '搴撳瓨鍒╃敤鐜�'],
+      data: ['鍑哄簱鑳藉姏', '褰撴棩鍑哄簱閲�', '鍑哄簱鍒╃敤鐜�'],
       itemWidth: 20,
       itemHeight: 10,
       textStyle: {
@@ -1282,15 +1434,41 @@
         borderColor: '#fff'
       },
     },
+    tooltip: {
+      trigger: 'axis',
+      formatter: function (params) {
+        // 閬嶅巻鎮诞鏃剁殑鎵�鏈夌偣锛屽畾鍒跺寲鏄剧ず鍐呭
+        let result = `<div style="width: 160px">${params[0].name}</div>`
+        params.forEach((item) => {
+          if (item.seriesName === '鍑哄簱鑳藉姏') {
+            result += `
+            <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;">
+              <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #487af3;margin-right: 4px;"></div><div>${item.seriesName}</div></div>
+              <div><strong>${item.value}</strong></div>
+            </div>`
+          } else if (item.seriesName === '褰撴棩鍑哄簱閲�') {
+            result += `
+            <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;">
+              <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px;  border-radius: 50%;background-color: #e2a44f;margin-right: 4px;"></div><div>${item.seriesName}</div></div>
+              <div><strong>${item.value}</strong></div>
+            </div>`
+          } else if (item.seriesName === '鍑哄簱鍒╃敤鐜�') {
+            result += `
+            <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;">
+              <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #b0bcd3;margin-right: 4px;"></div><div>${item.seriesName}</div></div>
+              <div><strong>${item.value}%</strong></div>
+            </div>`
+          }
+        })
+        return result
+      }
+    },
     grid: {
       left: '3%',
       right: '0%',
       bottom: '3%',
       top: '18%',
       containLabel: true
-    },
-    tooltip: {
-      trigger: 'axis'
     },
     xAxis: [{
       nameGap: 5,
@@ -1302,8 +1480,10 @@
         },
       },
       axisLabel: {
-        color: '#869CC9'
-        // fontSize: 24,
+        color: "#869CC9",
+      },
+      nameTextStyle: {
+        color: '#869CC9',
       },
       axisTick: {
         show: false,
@@ -1312,15 +1492,15 @@
     }],
     yAxis: [
       {
-        nameTextStyle: {
-          color: '#869CC9',
-        },
-        name: '涓囨敮',
+        name: '绠�',
         nameGap: 16,
         type: 'value',
         axisLabel: {
-          show: true,
           color: "#869CC9",
+        },
+        nameTextStyle: {
+          color: '#869CC9',
+          padding: [0, 0, 0, 12]
         },
         axisLine: {
           show: true,
@@ -1339,10 +1519,12 @@
         name: '%',
         nameGap: 16,
         min: 0,
-        max: 100,
-        interval: 25,
         axisLabel: {
-          formatter: '{value}'
+          color: "#869CC9",
+        },
+        nameTextStyle: {
+          color: '#869CC9',
+          padding: [0, 0, 0, 12]
         },
         splitLine: false
       }
@@ -1415,7 +1597,7 @@
         barGap: '-100%' // 璁剧疆鏌卞瓙瀹屽叏閲嶅彔
       },
       {
-        name: '搴撳瓨鍒╃敤鐜�',
+        name: '鍑哄簱鍒╃敤鐜�',
         type: 'line',
         smooth: false,
         showAllSymbol: true,
@@ -1428,7 +1610,6 @@
           show: false,
           position: 'top',
           color: '#fff',
-          // formatter: '{c}' + '%',
         },
         data: data6.value.detailList.map(i => i.useRate)
       }
@@ -1447,9 +1628,9 @@
     legend: {
       itemGap: 12,
       // icon: 'circle',
-      right: '16%',
+      right: '10%',
       top: '0%',
-      data: ['鎬诲簱瀛�', '褰撳墠搴撳瓨', '搴撳瓨鍒╃敤鐜�'],
+      data: ['褰撴棩鍙敤杩愬姏', '褰撴棩鎻愭姤杩愬姏', '杞﹁締鍒╃敤鐜�'],
       itemWidth: 20,
       itemHeight: 10,
       textStyle: {
@@ -1457,15 +1638,41 @@
         borderColor: '#fff'
       },
     },
+    tooltip: {
+      trigger: 'axis',
+      formatter: function (params) {
+        // 閬嶅巻鎮诞鏃剁殑鎵�鏈夌偣锛屽畾鍒跺寲鏄剧ず鍐呭
+        let result = `<div style="width: 160px">${params[0].name}</div>`
+        params.forEach((item) => {
+          if (item.seriesName === '褰撴棩鍙敤杩愬姏') {
+            result += `
+            <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;">
+              <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #88d9cc;margin-right: 4px;"></div><div>${item.seriesName}</div></div>
+              <div><strong>${item.value}</strong></div>
+            </div>`
+          } else if (item.seriesName === '褰撴棩鎻愭姤杩愬姏') {
+            result += `
+            <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;">
+              <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px;  border-radius: 50%;background-color: #e2a44f;margin-right: 4px;"></div><div>${item.seriesName}</div></div>
+              <div><strong>${item.value}</strong></div>
+            </div>`
+          } else if (item.seriesName === '杞﹁締鍒╃敤鐜�') {
+            result += `
+            <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;">
+              <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #b0bcd3;margin-right: 4px;"></div><div>${item.seriesName}</div></div>
+              <div><strong>${item.value}%</strong></div>
+            </div>`
+          }
+        })
+        return result
+      }
+    },
     grid: {
       left: '3%',
       right: '0%',
       bottom: '3%',
       top: '18%',
       containLabel: true
-    },
-    tooltip: {
-      trigger: 'axis'
     },
     xAxis: [{
       nameGap: 5,
@@ -1477,8 +1684,11 @@
         },
       },
       axisLabel: {
-        color: '#869CC9'
-        // fontSize: 24,
+        color: "#869CC9",
+      },
+      nameTextStyle: {
+        color: '#869CC9',
+        padding: [0, 0, 0, 12]
       },
       axisTick: {
         show: false,
@@ -1490,7 +1700,7 @@
         nameTextStyle: {
           color: '#869CC9',
         },
-        name: '涓囨敮',
+        name: '杈�',
         nameGap: 16,
         type: 'value',
         axisLabel: {
@@ -1514,17 +1724,19 @@
         name: '%',
         nameGap: 16,
         min: 0,
-        max: 100,
-        interval: 25,
         axisLabel: {
-          formatter: '{value}'
+          color: "#869CC9",
+        },
+        nameTextStyle: {
+          color: '#869CC9',
+          padding: [0, 0, 0, 12]
         },
         splitLine: false
       }
     ],
     series: [
       {
-        name: '鎬诲簱瀛�',
+        name: '褰撴棩鍙敤杩愬姏',
         type: 'bar',
         barWidth: 10,
         barGap: '60%',
@@ -1538,11 +1750,11 @@
           color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
             {
               offset: 0,
-              color: '#2e6bf3'
+              color: '#73f0c6'
             },
             {
               offset: 1,
-              color: '#5fcbab'
+              color: '#3f8ca6'
             }
           ], false),
           lineStyle: {
@@ -1551,10 +1763,10 @@
           },
           barBorderRadius: [30, 30, 0, 0],
         },
-        data: data7.value.detailList.map(i => i.totalNum)
+        data: data7.value.detailList.map(i => (i.totalNum - i.zaituNum))
       },
       {
-        name: '褰撳墠搴撳瓨',
+        name: '褰撴棩鎻愭姤杩愬姏',
         type: 'bar',
         barWidth: 10,
         label: {
@@ -1567,15 +1779,15 @@
           color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
             {
               offset: 0,
-              color: '#eda13a'
+              color: '#ed7e32'
             },
             {
               offset: 0.6,
-              color: '#dfb44e'
+              color: '#e99b5c'
             },
             {
               offset: 1,
-              color: '#ccc16c'
+              color: '#e7a774'
             }
           ], false),
           lineStyle: {
@@ -1587,7 +1799,7 @@
         data: data7.value.detailList.map(i => i.currentNum)
       },
       {
-        name: '搴撳瓨鍒╃敤鐜�',
+        name: '杞﹁締鍒╃敤鐜�',
         type: 'line',
         smooth: false,
         showAllSymbol: true,
@@ -1600,7 +1812,6 @@
           show: false,
           position: 'top',
           color: '#fff',
-          // formatter: '{c}' + '%',
         },
         data: data7.value.detailList.map(i => i.useRate)
       }
@@ -1615,21 +1826,29 @@
   kzinventoryUseRate().then(res => {
     data5.value = res.data
     data5.value.detailList.forEach(item => {
-      item.useRate = item.useRate * 100
+      if (item.useRate) {
+        item.useRate = (item.useRate * 100).toFixed(1)
+      }
+
     })
     initEchart5()
   })
   outAbilityUseRate().then(res => {
     data6.value = res.data
     data6.value.detailList.forEach(item => {
-      item.useRate = item.useRate * 100
+      if (item.useRate) {
+        item.useRate = (item.useRate * 100).toFixed(1)
+      }
     })
     initEchart6()
   })
   tranportAbilityUseRate().then(res => {
     data7.value = res.data
     data7.value.detailList.forEach(item => {
-      item.useRate = item.useRate * 100
+      // item.useRate = item.useRate * 100
+      if (item.useRate) {
+        item.useRate = (item.useRate * 100).toFixed(1)
+      }
     })
     initEchart7()
   })
@@ -1652,7 +1871,7 @@
     initialSlide: 0,
     direction: 'vertical', //绔栫洿鏂瑰悜
     slidesPerView: 5,
-    autoplay: autoplayFlag(transportTask.value, 5, 4000),
+    autoplay: autoplayFlag(transportTask.value, 5, 6000),
     observer: true, //淇敼swiper鑷繁鎴栧瓙鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper
   })
 }
@@ -1669,6 +1888,11 @@
   getCity()
   changeCity()
   getData5()
+  setInterval(() => {
+    getCity()
+    changeCity()
+    getData5()
+  }, 1000 * 60 * 10)
   setTimeout(() => {
     loopFn1()
   }, 12000)
@@ -1729,6 +1953,7 @@
     .left_box_one {
       margin-top: 20px;
       padding: 0px 10px 30px 20px;
+      position: relative;
 
       .content_wrap {
         display: flex;
@@ -1848,9 +2073,22 @@
       }
 
       .list_wrap {
+        position: relative;
+
         .list {
           height: 200px;
           overflow: hidden;
+        }
+
+        .empty {
+          display: flex;
+          justify-content: center;
+          align-items: center;
+          height: 200px;
+
+          img {
+            width: 144px;
+          }
         }
 
         .line {
@@ -1873,7 +2111,7 @@
           }
 
           .status {
-            flex: 5;
+            flex: 3.2;
           }
         }
 
@@ -1923,6 +2161,9 @@
         .left {
           display: flex;
           align-items: center;
+          position: relative;
+
+
 
           img {
             width: 16px;
@@ -1971,7 +2212,6 @@
       .static_wrap {
         display: flex;
         justify-content: space-between;
-        align-items: center;
         margin: 30px 0 14px;
 
         .item {
@@ -2041,47 +2281,18 @@
           height: 76px;
 
           .content {
-            flex: 5;
+            width: 80%;
             height: 16px;
             background: rgba(255, 255, 255, 0.13);
             border-radius: 8px;
-            margin-right: 4px;
+            margin-right: 6px;
             display: flex;
             position: relative;
 
-            .node {
-              position: absolute;
-              left: 69%;
-              top: -20px;
-              width: 22px;
-              height: 70px;
-              z-index: 999;
-              overflow: hidden;
-
-              .node_icon {
-                background-color: #051623;
-                height: 16px;
-
-                .icon {
-                  background-color: #25333f;
-                  height: 16px;
-                  width: 16px;
-                  position: absolute;
-                  top: 20px;
-                  right: -8px;
-                  border-radius: 50%;
-                  overflow: hidden;
-                }
-
-                .icon2 {
-                  right: 12px;
-                }
-              }
-            }
           }
 
           .box {
-            width: 40%;
+            width: 80%;
             height: 16px;
             background: linear-gradient(270deg, #FF9F02 0%, #FFEA70 100%);
             border-radius: 8px;
@@ -2102,6 +2313,9 @@
               border-radius: 12px;
               display: flex;
               align-items: center;
+              justify-content: center;
+              min-width: 76px;
+              border: 1px solid #FECE01;
 
               .icon {
                 position: absolute;
@@ -2118,6 +2332,7 @@
 
             .tag1 {
               background-color: #28F0CC;
+              border: 1px solid #28F0CC;
 
               .icon {
                 background-color: #28F0CC;
@@ -2126,9 +2341,21 @@
           }
 
           .box1 {
-            width: 70%;
+            width: 10%;
             z-index: 9;
-            background: linear-gradient(270deg, #15FDC8 0%, #006BFF 100%);
+            background: linear-gradient(270deg, #68dfd3 0%, #006BFF 100%);
+          }
+
+          .box11 {
+            background: linear-gradient(270deg, #75f8cc 0%, #68dfd3 100%);
+          }
+
+          .box22 {
+            background: linear-gradient(270deg, #f2a43b 0%, #ecbb61 100%);
+          }
+
+          .box23 {
+            background: linear-gradient(270deg, #f4b34a 0%, #FFEA70 100%);
           }
 
           .scale {
@@ -2141,10 +2368,11 @@
 
           .scale1 {
             left: 84%;
+            min-width: 36px;
           }
 
           .side {
-            flex: 2;
+            flex: 1;
             height: 16px;
             background: rgba(255, 255, 255, 0.13);
             border-radius: 8px;
@@ -2167,7 +2395,7 @@
 
       .modal1 {
         width: 500px;
-        height: 224px;
+        height: 192px;
         background: rgba(0, 86, 255, 0.1);
         backdrop-filter: blur(5px);
         padding: 12px 30px;
@@ -2175,10 +2403,13 @@
         top: 36px;
         left: 12px;
         border: 1px solid #4ba7f7;
+        z-index: 999999;
 
-        .list {
-          height: 192px;
-          overflow: auto;
+        .content {
+          .list {
+            height: 128px;
+            overflow: auto;
+          }
 
           .line {
             display: flex;
@@ -2192,7 +2423,14 @@
             }
 
             .item {
-              flex: 2;
+              flex: 3;
+            }
+
+            .addr {
+              flex: 5;
+              display: flex;
+              flex-wrap: nowrap;
+              overflow: hidden;
             }
           }
 
@@ -2222,6 +2460,117 @@
           width: 410px;
         }
       }
+    }
+  }
+
+  .question {
+    display: flex;
+    align-items: center;
+
+    &:hover {
+      .hover_wrap {
+        display: block;
+      }
+    }
+
+    .hover_wrap {
+      display: none;
+      position: absolute;
+      left: 130px;
+      z-index: 999;
+      top: -5px;
+      width: 407px;
+      height: 148px;
+      background: rgba(0, 30, 63, 0.6);
+      border: 1px solid #003F82;
+      backdrop-filter: blur(3px);
+      padding: 10px;
+      font-size: 13px;
+      color: #e2ebfd;
+      line-height: 19px;
+      font-weight: 400;
+      border-radius: 6px;
+
+      div {
+        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 {
+        font-weight: bold;
+        font-size: 14px;
+        color: #e2ebfd;
+      }
+    }
+  }
+}
+
+.question1 {
+  display: flex;
+  align-items: center;
+
+  .hover_con {
+    position: relative;
+
+    &:hover {
+      .hover_wrap {
+        display: block;
+      }
+    }
+  }
+
+
+  .hover_wrap {
+    display: none;
+    
+    position: absolute;
+    left: 108%;
+    z-index: 999;
+    top: -5px;
+    width: 212px;
+    height: 62px;
+    background: rgba(0, 30, 63, 0.6);
+    border: 1px solid #003F82;
+    backdrop-filter: blur(3px);
+    padding: 10px;
+    font-size: 15px;
+    color: #e2ebfd;
+    line-height: 19px;
+    font-weight: 400;
+    border-radius: 6px;
+
+    div {
+      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 {
+      font-weight: 600;
+      color: #e2ebfd;
     }
   }
 }
@@ -2333,7 +2682,7 @@
   width: 600px;
   height: 556px;
   background: rgba(0, 30, 63, 0.5);
-  border: 1px solid #c6eef7;
+  /* border: 1px solid #c6eef7; */
   backdrop-filter: blur(5px);
   position: fixed;
   top: 20%;
@@ -2343,24 +2692,45 @@
   padding: 24px;
 
   #map-container {
-    width: 300px;
-    height: 180px;
+    width: 260px;
+    height: 320px;
     position: absolute;
-    top: 220px;
-    right: 10px;
+    top: 190px;
+    right: 20px;
     z-index: 999999;
-    :deep(.amap-markers){
+    border-radius: 2px;
+
+    :deep(.amap-markers) {
       left: -12px !important;
       top: -32px !important;
     }
   }
-
+  .stock{
+    display: flex;
+    align-items: center;
+    color: #dd5d2a;
+    margin-bottom: 8px;
+    img{
+      margin-right: 6px;
+      width: 14px;
+    }
+  }
   .title_head {
     display: flex;
     align-items: center;
-    font-weight: bold;
-    font-size: 17px;
-    margin-bottom: 20px;
+    justify-content: space-between;
+    margin-bottom: 8px;
+
+    .left {
+      display: flex;
+      align-items: center;
+      font-weight: bold;
+      font-size: 17px;
+    }
+
+    .tit_status {
+      color: #af8832;
+    }
 
     img {
       width: 20px;
@@ -2417,11 +2787,13 @@
 
     .fu_list {
       height: 310px;
+      width: 290px;
       margin-top: 20px;
       overflow: auto;
 
-
       .fu_item {
+        position: relative;
+
         .item_title {
           margin-bottom: 6px;
 
@@ -2438,12 +2810,13 @@
       }
 
       .separate {
-        height: calc(100% - 125px);
-        width: 1px;
-        border: 1px dashed #CCCCCC;
+        height: calc(100% - 8px);
+        /* width: 1px; */
+        border: 1px dashed #576783;
+        /* border: 1px dashed red; */
         position: absolute;
-        left: 26px;
-        top: 51px;
+        left: 10px;
+        top: 20px;
         z-index: -1;
       }
 
@@ -2498,6 +2871,8 @@
 
         .text {
           color: #b1bfdc;
+          margin-bottom: 6px;
+          width: 100%;
         }
 
         .icon {
@@ -2510,7 +2885,6 @@
         .h2 {
           display: flex;
           align-items: center;
-          height: 24px;
         }
 
         .h1 {}
@@ -2518,7 +2892,6 @@
         .time {
           padding-left: 39px;
           font-size: 12px;
-          margin-top: 3px;
         }
       }
     }
@@ -2534,7 +2907,7 @@
   top: 0;
   left: 0;
   z-index: 9999;
-  background-color: rgba(0, 0, 0, 0.1);
+  /* background-color: rgba(0, 0, 0, 0.0); */
   /* background-color: red; */
 }
 
@@ -2553,6 +2926,12 @@
     font-weight: 500;
     font-size: 16px;
     color: #FFFFFF;
+    position: relative;
+
+    .hover_wrap {
+      left: 175px;
+      height: 80px;
+    }
 
     .icon {
       width: 16px;
@@ -2675,4 +3054,4 @@
   object-fit: cover;
   z-index: -1;
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3