From 5d86f5314d96b532878ad5b99e2ed174d9bc2230 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期五, 24 一月 2025 18:00:54 +0800
Subject: [PATCH] ll
---
screen/src/views/LogisticsCenter.vue | 270 +++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 207 insertions(+), 63 deletions(-)
diff --git a/screen/src/views/LogisticsCenter.vue b/screen/src/views/LogisticsCenter.vue
index 195f64b..917161d 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">璋冩嫧鍑哄簱閲忥細{{ StockOutData.currentProvinceNum || 0 }}绠�</div>
- <div class="title">鍏朵粬鍑哄簱閲忥細{{ StockOutData.currentOtherNum || 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'
@@ -966,6 +1010,20 @@
showModal.value = true
kzorderInfo({ contractNumber: item.contractNumber }).then(res => {
modalInfo.value = res.data
+ const apiKey = 'd9a554b1808ce10a12a932ed9b0db1d0'
+ 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(() => {
@@ -1031,7 +1089,7 @@
image: fahuoImg, // 鍥炬爣鍥剧墖URL
imageSize: new AMap.Size(28, 32), // 鍥炬爣瀹為檯澶у皬
}),
- title: '鏍囪鐐�1', // 榧犳爣鎮仠鏃舵樉绀虹殑鏍囬
+ title: obj.deliveryEnterprise, // 榧犳爣鎮仠鏃舵樉绀虹殑鏍囬
})
map.add(marker1)
const marker2 = new AMap.Marker({
@@ -1041,7 +1099,7 @@
image: shouImg, // 鍥炬爣鍥剧墖URL
imageSize: new AMap.Size(28, 32), // 鍥炬爣瀹為檯澶у皬
}),
- title: '鏍囪鐐�1', // 榧犳爣鎮仠鏃舵樉绀虹殑鏍囬
+ title: obj.receiveEnterprise, // 榧犳爣鎮仠鏃舵樉绀虹殑鏍囬
})
map.add(marker2)
// 缁樺埗杞ㄨ抗
@@ -1179,7 +1237,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 +2012,7 @@
margin-top: 20px;
padding: 0px 10px 30px 20px;
position: relative;
+ height: 160px;
.content_wrap {
display: flex;
@@ -2214,6 +2273,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 +2392,7 @@
.tag {
position: absolute;
+ z-index: 99999;
bottom: -30px;
right: 0;
transform: translate(50%, 0);
@@ -2327,6 +2417,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 +2456,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 +2613,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 +2668,7 @@
.hover_wrap {
display: none;
-
+
position: absolute;
left: 108%;
z-index: 999;
@@ -2546,7 +2680,7 @@
backdrop-filter: blur(3px);
padding: 10px;
font-size: 15px;
- color: #e2ebfd;
+ color: #e9f0ff;
line-height: 19px;
font-weight: 400;
border-radius: 6px;
@@ -2555,24 +2689,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 {
- font-weight: 600;
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 {
@@ -2705,16 +2840,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;
@@ -2743,12 +2881,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;
@@ -2763,10 +2901,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