From 3d3620b81b9c2ae8e8f41ef542f0e5fa8ae43c00 Mon Sep 17 00:00:00 2001 From: liukangdong <898885815@qq.com> Date: 星期四, 06 三月 2025 10:53:27 +0800 Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit --- screen/src/views/LogisticsEfficiency.vue | 187 +++++++++++++++++++++++++++++++++++----------- 1 files changed, 141 insertions(+), 46 deletions(-) diff --git a/screen/src/views/LogisticsEfficiency.vue b/screen/src/views/LogisticsEfficiency.vue index fa890af..0af62b6 100644 --- a/screen/src/views/LogisticsEfficiency.vue +++ b/screen/src/views/LogisticsEfficiency.vue @@ -31,7 +31,8 @@ <div class="num" v-if="data1.monthOutTotal || data1.yearOutTotal">{{ activeTab1 == 0 ? data1.monthOutTotal.toLocaleString() : data1.yearOutTotal.toLocaleString() }}</div> <div class="unit_wrap"> - <span style="color: #869CC9;">{{ activeTab1 == 0 ? '鍚屾瘮' : '鐜瘮' }}</span> + <!-- <span style="color: #869CC9;">{{ activeTab1 == 0 ? '鍚屾瘮' : '鐜瘮' }}</span> --> + <span style="color: #869CC9;">鐜瘮</span> <template v-if="activeTab1 == 0 && data1.monthLastOutTotal"> <img v-if="data1.monthOutTotal > data1.monthLastOutTotal" src="@/assets/images/ic_up.png" class="icon" alt=""> @@ -101,7 +102,7 @@ </div> <div class="one-swiper list_temp"> <div class="swiper-wrapper"> - <div class="line swiper-slide one-swiper-slide" @click="showModal = true" v-for="item in dataList3"> + <div @click="taskClick(item)" class="line swiper-slide one-swiper-slide" v-for="item in dataList3"> <span class="item flag"><span :class="{ flag_bg: item.type == 1 || item.type == 3 }">{{ item.type == 1 || item.type == 3 ? '鍑�' : '鍏�' }}</span></span> @@ -144,9 +145,15 @@ <img src="@/assets/images/energy_ef/ic_wanchengrenwu@2x.png" alt=""> <div class="content"> <div class="name">褰撴棩瀹屾垚浠诲姟鎬婚噺</div> - <div class="num"><span v-if="data1.currentOutDoneNum || data1.currentInDoneNum" class="today">{{ activeTab4 == 0 ? data1.currentOutDoneNum : - data1.currentInDoneNum - }}</span>涓囨敮</div> + <div class="num"> + <span v-if="data1.currentOutDoneNum || data1.currentInDoneNum" class="today">{{ + activeTab4 == + 0 ? data1.currentOutDoneNum : + data1.currentInDoneNum + }}</span> + <span v-else>0</span> + 涓囨敮 + </div> </div> </div> <div class="item"> @@ -154,8 +161,11 @@ <div class="content"> <div class="name">宸插畬鎴愭瘮渚�</div> <div class="num"> - <span v-if="activeTab4 == 0 && data1.currentOutNum" class="finish">{{ ((data1.currentOutDoneNum / data1.currentOutNum) * 100).toFixed(1) }}%</span> - <span v-if="activeTab4 == 1 && data1.currentInNum" class="finish">{{ ((data1.currentInDoneNum / data1.currentInNum) * 100).toFixed(1) }}%</span> + <span v-if="activeTab4 == 0 && data1.currentOutNum" class="finish">{{ ((data1.currentOutDoneNum / + data1.currentOutNum) * 100).toFixed(1) }}</span> + <span v-if="activeTab4 == 1 && data1.currentInNum" class="finish">{{ ((data1.currentInDoneNum / + data1.currentInNum) * 100).toFixed(1) }}</span> + % </div> </div> </div> @@ -185,13 +195,19 @@ <span>杞﹁締鎶ヨ</span> </div> <div v-if="isShowCarW" class="war_list"> - <div class="line" v-for="item in data7.eventList"> + <div class="line" v-for="item in eventList"> <div class="id_card">{{ item.carCode }}</div> <div class="title">{{ item.title }}</div> <div v-if="item.time">{{ item.time.slice(11) }}</div> </div> </div> </div> + <div @click="openCloudAddr" class="monitoring"> + <img src="@/assets/images/ic_jiankong@2x.png" class="icon" alt=""> + <div>杞﹁締鐩戞帶骞冲彴</div> + <img class="top" src="@/assets/images/SecurityControl/ar_open@2x.png" alt=""> + </div> + </div> </div> <div class="right_box"> @@ -274,7 +290,8 @@ </div> <div class="list two-swiper"> <div class="swiper-wrapper"> - <div class="item two-swiper-slide swiper-slide" v-for="item in data6.stockList"> + <div :class="{ orange: item.num < 200 }" class="item two-swiper-slide swiper-slide" + v-for="item in data6.stockList"> <div class="la">{{ item.name }}</div> <div class="val">{{ item.num }}涓囨敮</div> </div> @@ -317,7 +334,7 @@ <div class="icon_wrap"> <img v-if="i != 0" class="dian" src="@/assets/images/ic_dangqian@2x.png" alt=""> <img v-else src="@/assets/images/ic_jindu@2x.png" class="dian_ac" alt=""> - <div class="line"></div> + <div v-if="i != activeCar.logList.length - 1" class="line"></div> </div> <div class="content"> <div class="status" :class="{ ac: i == 0 }">{{ statusMapD[item.objType] }}</div> @@ -373,7 +390,9 @@ wltotalInList, wltransportMeasure, carsListPost, - getCarsJobDetails + getCarsJobDetails, + getJobDetailsById, + carsEventListP } from '@/api' import 'swiper/css/swiper.min.css' import Swiper from 'swiper' @@ -431,7 +450,9 @@ }, axisLabel: { color: '#869CC9' - // fontSize: 24, + }, + nameTextStyle: { + color: '#869CC9' // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂� }, axisTick: { show: false, @@ -442,31 +463,7 @@ yAxis: [ { type: 'value', - name: '涓�', - min: 0, - axisLabel: { - show: true, - color: "#869CC9", - }, - splitLine: { - show: true, - lineStyle: { - width: 1, - color: "rgba(49,105,129,0.4)", - type: 'dashed' - } - }, - // interval: 5, - axisLabel: { - formatter: '{value}' - } - }, - { - type: 'value', name: '涓囨敮', - nameTextStyle: { - color: '#869CC9', - }, offset: 0, type: 'value', axisLine: { @@ -481,8 +478,32 @@ } }, axisLabel: { - formatter: '{value}' - } + color: '#869CC9' + }, + nameTextStyle: { + color: '#869CC9', + padding: [0, 0, 0, 12] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂� + }, + }, + { + type: 'value', + name: '涓�', + min: 0, + axisLabel: { + color: '#869CC9' + }, + nameTextStyle: { + color: '#869CC9', + padding: [0, 0, 0, -18] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂� + }, + splitLine: { + show: false, + lineStyle: { + width: 1, + color: "rgba(49,105,129,0.4)", + type: 'dashed' + } + }, }, ], series: [ @@ -496,7 +517,7 @@ position: 'top', color: '#fff', }, - yAxisIndex: 1, + yAxisIndex: 0, itemStyle: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { @@ -520,7 +541,7 @@ name: '浠诲姟瀹屾垚閲�', type: 'bar', barWidth: 10, - yAxisIndex: 1, + yAxisIndex: 0, label: { show: false, position: 'top', @@ -550,7 +571,7 @@ type: 'line', smooth: false, showAllSymbol: true, - yAxisIndex: 0, + yAxisIndex: 1, symbol: 'none', lineStyle: { color: "#1a43bc" @@ -580,7 +601,19 @@ show: false, position: 'center' }, - padAngle: 5, + tooltip: { + trigger: 'none' + }, + emphasis: { + // 璁剧疆鎮诞鏃舵牱寮忎负绌� + scale: false, // 鍏抽棴鏀惧ぇ鏁堟灉 + itemStyle: { + shadowBlur: 0, // 闃村奖妯$硦搴︿负 0 + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0)', + }, + }, + padAngle: 3, itemStyle: { borderRadius: 10 }, @@ -797,6 +830,7 @@ myChart.on('click', function (params) { const item = params.data getCarsJobDetails({ carCode: item.code }).then(res => { + // getCarsJobDetails({ id: item.id }).then(res => { // getCarsJobDetails({ carCode: '鐨朅E5277' }).then(res => { showModal.value = true activeCar.value = { ...res.data, carCode: item.code } @@ -816,6 +850,18 @@ const closeModal = () => { showModal.value = false activeCar.value = {} +} +const taskClick = (item) => { + // getCarsJobDetails({ carCode: item.carCodeFront }).then(res => { + getJobDetailsById({ id: item.id }).then(res => { + // getCarsJobDetails({ carCode: '鐨朅E5277' }).then(res => { + showModal.value = true + activeCar.value = { ...res.data, carCode: item.carCodeFront } + }) +} + +const openCloudAddr = () => { + window.open('https://vms.hikvisionauto.com:8040/', '_blank') } @@ -906,11 +952,15 @@ const isShowCarW = ref(false) const data7 = ref({}) +const eventList = ref([]) const getData7 = () => { carsListPost().then(res => { const result = res.data || {} data7.value = result initMap() + }) + carsEventListP().then(res => { + eventList.value = res.data || [] }) } @@ -943,10 +993,18 @@ getData1() getData2() getData3() - // getData4() getData5() getData6() getData7() + + setInterval(() => { + getData1() + getData2() + getData3() + getData5() + getData6() + getData7() + }, 1000 * 60 * 10) setTimeout(() => { loopFn1() @@ -1088,6 +1146,7 @@ align-items: center; padding: 0 10px; font-size: 12px; + cursor: pointer; &:nth-of-type(2n) { background: rgba(27, 64, 97, 0.52); @@ -1277,13 +1336,13 @@ bottom: 0; border-top: 1px solid #5ecbce; border-bottom: 1px solid #5ecbce; + background: rgba(0, 30, 63, 0.4); + /* backdrop-filter: blur(5px); */ .head { display: flex; width: 280px; height: 57px; - background: rgba(0, 30, 63, 0.4); - backdrop-filter: blur(5px); display: flex; align-items: center; padding-left: 10px; @@ -1300,6 +1359,8 @@ .war_list { max-height: 300px; overflow: auto; + padding-left: 10px; + padding-bottom: 12px; .line { font-size: 13px; @@ -1320,6 +1381,35 @@ flex: 4; } } + } + } + + .monitoring { + position: absolute; + cursor: pointer; + bottom: 10px; + left: 0; + display: flex; + align-items: center; + justify-content: center; + font-weight: 500; + font-size: 15px; + width: 156px; + height: 40px; + background: linear-gradient(180deg, rgba(0, 148, 235, 0.68) 0%, rgba(0, 148, 235, 0) 100%); + border-radius: 2px; + border: 1px solid; + border-image: linear-gradient(180deg, rgba(177, 210, 255, 0.64), rgba(0, 171, 255, 0.7)) 1 1; + + .icon { + width: 16px; + height: 16px; + margin-right: 10px; + } + + .top { + width: 7px; + margin-left: 6px; } } } @@ -1487,6 +1577,7 @@ height: 36px !important; display: flex; align-items: center; + font-size: 14px; &:nth-of-type(2n+1) { background: rgba(0, 152, 255, 0.13); @@ -1500,6 +1591,10 @@ .val { flex: 2; } + } + + .orange { + color: #FF5728; } } } @@ -1821,7 +1916,7 @@ line-height: 36px; border-bottom: 1px solid rgba(255, 255, 255, 0.16); margin-bottom: 10px; - + padding-right: 10px; .code { font-weight: 500; font-size: 14px; -- Gitblit v1.9.3