From abfe6985b2678445ea8da974b204d9fe2ffdb887 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期二, 24 十二月 2024 15:23:41 +0800
Subject: [PATCH] ll

---
 screen/src/views/LogisticsCenter.vue |  254 +++++++++++++++++++++++++++++++++-----------------
 1 files changed, 167 insertions(+), 87 deletions(-)

diff --git a/screen/src/views/LogisticsCenter.vue b/screen/src/views/LogisticsCenter.vue
index ff138cd..7b0303a 100644
--- a/screen/src/views/LogisticsCenter.vue
+++ b/screen/src/views/LogisticsCenter.vue
@@ -21,6 +21,7 @@
             <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="" />
@@ -36,7 +37,7 @@
             </div>
             <div class="content_wrap">
               <div class="num_wrap">
-                <div class="num_list" v-if="StockOutData.currentNum">
+                <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="">
@@ -89,7 +90,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="">
@@ -117,7 +118,12 @@
                   </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>
@@ -172,7 +178,7 @@
             </div>
             <div class="footer">
               <div class="wrap">
-                <div class="content" :style='{ width: cneterData.level1}'>
+                <div class="content" :style='{ width: cneterData.level1 }'>
                   <div class="scale">0</div>
                   <!-- <div class="node">
                     <div>8h</div>
@@ -181,13 +187,14 @@
                       <div class="icon icon2"></div>
                     </div>
                   </div> -->
-                  <div :style="{width: cneterData.level3}" :class="{box23: cneterData.crrentOutNum >= cneterData.hoursAbility}" 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 :style="{ width: cneterData.level2 }" class="box box1">
                     <div v-if="cneterData.hoursAbility >= cneterData.currentPlanNum" class="tag tag1">
                       <div class="icon"></div>
                       <span>褰撴棩璁″垝</span>
@@ -195,13 +202,15 @@
                   </div>
                 </div>
                 <div class="side">
-                  <div v-if="cneterData.crrentOutNum >= cneterData.hoursAbility" :style="{width: cneterData.level33}" class="box box22" >
+                  <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 v-if="cneterData.hoursAbility <= cneterData.currentPlanNum" :style="{width: cneterData.level22}" class="box box1 box11">
+                  <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>
@@ -220,13 +229,13 @@
               <div class="list">
                 <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="item">{{ item.contractNumber }}</div>
+                  <div class="item addr">{{ item.repertotyName }}</div>
                 </div>
               </div>
             </div>
@@ -266,7 +275,7 @@
               </div>
               <div class="side">
                 鍏ㄧ渷锛�
-                <span>{{ data5.totalNum }}</span>
+                <span>{{ data5.currentNum }}</span>
                 <span class="unit">涓囨敮 | </span>
                 <span v-if="data5.totalNum">{{ ((data5.currentNum / data5.totalNum) * 100).toFixed(1) }}%</span>
               </div>
@@ -281,7 +290,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>
@@ -293,7 +307,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>{{ data7.currentNum }}</span>
+                <span class="unit">杈� | </span>
+                <span v-if="data7.totalNum">{{ ((data7.currentNum / data7.totalNum) * 100).toFixed(1) }}%</span>
+              </div>
             </div>
             <div class="echart5_wrap">
               <div class="echart5" id="echart7"></div>
@@ -390,10 +409,10 @@
             </div>
           </div>
         </div>
+        <Loading v-if="modalLoading" />
       </div>
       <div class="modal_mask" v-if="showModal" @click="closeModal"></div>
     </div>
-    <!-- <Loading v-if="isLoading" /> -->
   </v-scale-screen>
 </template>
 
@@ -409,12 +428,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 'vue3-loading-spinner';
-// import 'vue3-loading-spinner/dist/style.css';
+// 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,
@@ -440,7 +459,6 @@
   time.value = dayjs().format('HH:mm:ss')
 
 }, 1000)
-const isLoading = ref(false);
 // 
 const mapList = ref([])
 const mapEchart = ref()
@@ -694,6 +712,9 @@
     },
     xAxis: {
       type: 'value',
+      axisLabel: {
+        color: '#D2E0FF'
+      },
       splitLine: {
         show: true,
         lineStyle: {
@@ -706,6 +727,9 @@
     yAxis: {
       axisTick: {
         show: false,
+      },
+      axisLabel: {
+        color: '#D2E0FF'
       },
       type: 'category',
       axisLine: {
@@ -842,7 +866,7 @@
 
 const dataList1 = ref([])
 const getData1 = () => {
-  getStorearriveGoodsList({
+  arriveGoodsList({
     factoryCode: activeCity.value.code
   }).then(res => {
     dataList1.value = res.data || []
@@ -853,23 +877,25 @@
 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 taskClick = (item) => {
-  isLoading.value = true
+  modalLoading.value = true
+  showModal.value = true
   kzorderInfo({ contractNumber: item.contractNumber }).then(res => {
     modalInfo.value = res.data
-    showModal.value = true
-    isLoading.value = false
+
+    modalLoading.value = false
     nextTick(() => {
       initGdMap()
     })
   }, () => {
-    isLoading.value = false
+    modalLoading.value = false
   })
 }
 const closeModal = () => {
@@ -957,8 +983,9 @@
   })
   map.add(polyline)
 }
+const isLoadingTask = ref(false)
 const getData2 = () => {
-
+  isLoadingTask.value = true
   getStoreTaskList({
     pager: pager.value,
     parameters: {
@@ -966,6 +993,7 @@
       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) {
@@ -973,6 +1001,10 @@
       }
       return item
     })
+    console.log('isLoadingTask', isLoadingTask.value)
+
+  }, () => {
+    isLoadingTask.value = false
   })
 }
 
@@ -981,7 +1013,7 @@
 const cityList = ref()
 const getCity = () => {
   kzfactoryList().then(res => {
-    cityList.value = res.data
+    cityList.value = [{ name: '鍏ㄧ渷', code: '' }, ...res.data]
   })
 }
 const activeCity = ref({ name: '鍏ㄧ渷', code: '' })
@@ -1021,9 +1053,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
@@ -1038,6 +1073,8 @@
       initEchart1()
     }
 
+  }, () => {
+    loading1.value = false
   })
 }
 const tab1Click = (val) => {
@@ -1050,38 +1087,38 @@
     factoryCode: activeCity.value.code
   }).then(res => {
     const obj = res.data || {}
-    console.log('obj', obj);
-    
+    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.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) + '%' 
+    } else {
+      obj.level2 = ((obj.currentPlanNum / obj.hoursAbility) * 100).toFixed(2) + '%'
       obj.level22 = 0
     }
-    if(obj.crrentOutNum >= obj.hoursAbility){
+    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) + '%' 
+    } 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);
-    
+
+    // 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
 
   })
@@ -1098,7 +1135,7 @@
     legend: {
       itemGap: 12,
       // icon: 'circle',
-      right: '16%',
+      right: '12%',
       top: '0%',
       data: ['鎬诲簱瀛�', '褰撳墠搴撳瓨', '搴撳瓨鍒╃敤鐜�'],
       itemWidth: 20,
@@ -1128,8 +1165,7 @@
         },
       },
       axisLabel: {
-        color: '#869CC9'
-        // fontSize: 24,
+        color: '#D2E0FF'
       },
       axisTick: {
         show: false,
@@ -1145,7 +1181,6 @@
         nameGap: 16,
         type: 'value',
         axisLabel: {
-          show: true,
           color: "#869CC9",
         },
         axisLine: {
@@ -1165,10 +1200,13 @@
         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
       }
@@ -1272,7 +1310,7 @@
       // icon: 'circle',
       right: '10%',
       top: '0',
-      data: ['鍑哄簱鑳藉姏', '褰撴棩鍑哄簱閲�', '搴撳瓨鍒╃敤鐜�'],
+      data: ['鍑哄簱鑳藉姏', '褰撴棩鍑哄簱閲�', '鍑哄簱鍒╃敤鐜�'],
       itemWidth: 20,
       itemHeight: 10,
       textStyle: {
@@ -1300,8 +1338,10 @@
         },
       },
       axisLabel: {
-        color: '#869CC9'
-        // fontSize: 24,
+        color: "#869CC9",
+      },
+      nameTextStyle: {
+        color: '#869CC9',
       },
       axisTick: {
         show: false,
@@ -1310,15 +1350,15 @@
     }],
     yAxis: [
       {
-        nameTextStyle: {
-          color: '#869CC9',
-        },
         name: '涓囨敮',
         nameGap: 16,
         type: 'value',
         axisLabel: {
-          show: true,
           color: "#869CC9",
+        },
+        nameTextStyle: {
+          color: '#869CC9',
+          padding: [0, 0, 0, 12]
         },
         axisLine: {
           show: true,
@@ -1337,10 +1377,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
       }
@@ -1413,7 +1455,7 @@
         barGap: '-100%' // 璁剧疆鏌卞瓙瀹屽叏閲嶅彔
       },
       {
-        name: '搴撳瓨鍒╃敤鐜�',
+        name: '鍑哄簱鍒╃敤鐜�',
         type: 'line',
         smooth: false,
         showAllSymbol: true,
@@ -1445,9 +1487,9 @@
     legend: {
       itemGap: 12,
       // icon: 'circle',
-      right: '16%',
+      right: '10%',
       top: '0%',
-      data: ['鎬诲簱瀛�', '褰撳墠搴撳瓨', '搴撳瓨鍒╃敤鐜�'],
+      data: ['鎬昏繍鍔涜祫婧�', '褰撴棩鎻愭姤杩愬姏', '杞﹁締鍒╃敤鐜�'],
       itemWidth: 20,
       itemHeight: 10,
       textStyle: {
@@ -1475,8 +1517,11 @@
         },
       },
       axisLabel: {
-        color: '#869CC9'
-        // fontSize: 24,
+        color: "#869CC9",
+      },
+      nameTextStyle: {
+        color: '#869CC9',
+        padding: [0, 0, 0, 12]
       },
       axisTick: {
         show: false,
@@ -1488,7 +1533,7 @@
         nameTextStyle: {
           color: '#869CC9',
         },
-        name: '涓囨敮',
+        name: '杈�',
         nameGap: 16,
         type: 'value',
         axisLabel: {
@@ -1512,17 +1557,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%',
@@ -1536,11 +1583,11 @@
           color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
             {
               offset: 0,
-              color: '#2e6bf3'
+              color: '#73f0c6'
             },
             {
               offset: 1,
-              color: '#5fcbab'
+              color: '#3f8ca6'
             }
           ], false),
           lineStyle: {
@@ -1552,7 +1599,7 @@
         data: data7.value.detailList.map(i => i.totalNum)
       },
       {
-        name: '褰撳墠搴撳瓨',
+        name: '褰撴棩鎻愭姤杩愬姏',
         type: 'bar',
         barWidth: 10,
         label: {
@@ -1565,15 +1612,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: {
@@ -1585,7 +1632,7 @@
         data: data7.value.detailList.map(i => i.currentNum)
       },
       {
-        name: '搴撳瓨鍒╃敤鐜�',
+        name: '杞﹁締鍒╃敤鐜�',
         type: 'line',
         smooth: false,
         showAllSymbol: true,
@@ -1613,21 +1660,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()
   })
@@ -1732,6 +1787,7 @@
     .left_box_one {
       margin-top: 20px;
       padding: 0px 10px 30px 20px;
+      position: relative;
 
       .content_wrap {
         display: flex;
@@ -1851,9 +1907,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 {
@@ -1876,7 +1945,7 @@
           }
 
           .status {
-            flex: 5;
+            flex: 3.2;
           }
         }
 
@@ -2079,6 +2148,7 @@
               justify-content: center;
               min-width: 76px;
               border: 1px solid #fff;
+
               .icon {
                 position: absolute;
                 top: 1px;
@@ -2106,13 +2176,16 @@
             z-index: 9;
             background: linear-gradient(270deg, #68dfd3 0%, #006BFF 100%);
           }
-          .box11{
-            background: linear-gradient(270deg,#75f8cc 0%, #68dfd3 100%);
+
+          .box11 {
+            background: linear-gradient(270deg, #75f8cc 0%, #68dfd3 100%);
           }
-          .box22{
+
+          .box22 {
             background: linear-gradient(270deg, #f2a43b 0%, #ecbb61 100%);
           }
-          .box23{
+
+          .box23 {
             background: linear-gradient(270deg, #f4b34a 0%, #FFEA70 100%);
           }
 
@@ -2178,7 +2251,14 @@
             }
 
             .item {
-              flex: 2;
+              flex: 3;
+            }
+
+            .addr {
+              flex: 5;
+              display: flex;
+              flex-wrap: nowrap;
+              overflow: hidden;
             }
           }
 

--
Gitblit v1.9.3