From c3aaf28f7316cce12eec007a9f85a96cbcddeec2 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 07 五月 2025 10:34:20 +0800
Subject: [PATCH] 最新版本541200007
---
screen/src/views/LogisticsCenter.vue | 610 ++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 494 insertions(+), 116 deletions(-)
diff --git a/screen/src/views/LogisticsCenter.vue b/screen/src/views/LogisticsCenter.vue
index 1359e22..ff1b012 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>
@@ -25,7 +25,15 @@
<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>
@@ -37,27 +45,40 @@
</div>
<div class="content_wrap">
<div class="num_wrap">
- <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 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" 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>
@@ -114,7 +135,7 @@
<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>
@@ -133,6 +154,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>1銆佸綋鍓嶈鍗曢噺锛氭埅鑷崇洰鍓嶆湭閰嶈浇鐨勮鍗曢噺</div>
+ <div>2銆佸綋鍓嶄换鍔¢噺锛氭墍鏈夊凡涓嬭揪杩愯緭涓旀湭鍑哄簱鐨勪换鍔¢噺锛氭埅姝㈢洰鍓嶅凡閰嶈浇鏈嚭搴�+鏃犻渶閰嶈浇鐨勪换鍔�(鍚屽煄浠诲姟閲�)</div>
+ <div>3銆佷粖鏃ュ嚭搴撻噺锛氫粖鏃ュ疄闄呭嚭搴撻噺锛氫互鐢靛瓙閿佷笂閿佷负鍑�</div>
+ <div>4銆佸墿浣欎换鍔¢噺锛氭暟鎹悓褰撳墠浠诲姟閲忥紙寮圭獥鍒嗗埆灞曠ず鍚屽簱鍜岃繍杈撲换鍔¢噺</div>
+ </div>
+ </div>
</div>
<div class="right">
<img @click="showPro = !showPro" src="@/assets/images/LogisticsCenter/position.png" class="posi" alt="">
@@ -147,15 +179,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>
@@ -163,16 +198,27 @@
<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>
- <div class="item">
- <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="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>
@@ -189,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>
@@ -278,7 +358,7 @@
<div class="side">
鍏ㄧ渷锛�
<span>{{ data5.currentNum }}</span>
- <span class="unit">涓囨敮 | </span>
+ <span class="unit">绠� | </span>
<span v-if="data5.totalNum">{{ ((data5.currentNum / data5.totalNum) * 100).toFixed(1) }}%</span>
</div>
</div>
@@ -295,7 +375,7 @@
<div class="side">
鍏ㄧ渷锛�
<span>{{ data6.currentNum }}</span>
- <span class="unit">涓囨敮 | </span>
+ <span class="unit">绠� | </span>
<span v-if="data6.totalNum">{{ ((data6.currentNum / data6.totalNum) * 100).toFixed(1) }}%</span>
</div>
</div>
@@ -313,7 +393,7 @@
鍏ㄧ渷锛�
<span>{{ data7.currentNum }}</span>
<span class="unit">杈� | </span>
- <span v-if="data7.totalNum">{{ ((data7.currentNum / data7.totalNum) * 100).toFixed(1) }}%</span>
+ <span v-if="data7.totalNum">{{ (data7.useRate * 100).toFixed(1) }}%</span>
</div>
</div>
<div class="echart5_wrap">
@@ -326,10 +406,14 @@
<div class="modal_wrap" v-if="showModal">
<div class="title_head">
<div class="left">
- <img src="@/assets/images/energy_ef/chuku_ic_car@2x.png" alt="">
+ <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">
@@ -355,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>
@@ -427,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'
@@ -465,7 +550,7 @@
time.value = dayjs().format('HH:mm:ss')
}, 1000)
-//
+//
const mapList = ref([])
const mapEchart = ref()
const initMap = () => {
@@ -481,51 +566,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: '鍗楁捣璇稿矝', 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.yearNum
+ 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)
+
+ }
}
})
})
@@ -535,10 +629,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: '#3561a4' },
+ { 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,
@@ -639,20 +737,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>`
@@ -682,6 +787,7 @@
mapList.value = temp.map(item => {
item.value = item.monthNum
item.name = item.provinceName
+ item.code = item.provinceCode
return item
})
initMap()
@@ -710,6 +816,39 @@
borderColor: '#fff'
},
},
+ dataZoom: [
+ {
+ type: 'slider', // 婊戝姩鏉$被鍨�
+ orient: 'vertical',
+ left: 'left',
+ start: 0, // 璧峰浣嶇疆锛堢櫨鍒嗘瘮锛�
+ end: 40, // 缁撴潫浣嶇疆锛堢櫨鍒嗘瘮锛夛紝鎺у埗鍒濆鏄剧ず鑼冨洿
+ width: 1,
+ backgroundColor: '#04141d', // 婊戝姩鏉¤儗鏅壊
+ // dataBackground: 'none',
+ dataBackground: {
+ areaStyle: { opacity: 0 }, // 璁剧疆鑳屾櫙閫忔槑
+ lineStyle: { opacity: 0 } // 璁剧疆鑳屾櫙閫忔槑
+ },
+ borderColor: '#04141e', // 杈规棰滆壊
+ moveOnMouseWheel: true,
+ // showDetail: false, // 闅愯棌閫変腑鑼冨洿鐨勬枃瀛�
+ },
+ {
+ type: 'inside', // 鐢ㄤ簬鐩戝惉婊氳疆浜嬩欢
+ orient: 'vertical',
+ start: 0,
+ end: 40,
+ minSpan: 40,
+ dataBackground: {
+ areaStyle: { opacity: 0 } // 璁剧疆鑳屾櫙閫忔槑
+ },
+ maxSpan: 40,
+ zoomLock: true, // 閿佸畾缂╂斁锛堜粎鍏佽骞崇Щ锛�
+ moveOnMouseWheel: true, // 鍚敤婊氳疆骞崇Щ
+ // zoomOnMouseWheel: false // 绂佺敤婊氳疆缂╂斁
+ }
+ ],
grid: {
left: '3%',
right: '4%',
@@ -904,6 +1043,21 @@
showModal.value = true
kzorderInfo({ contractNumber: item.contractNumber }).then(res => {
modalInfo.value = res.data
+ // const apiKey = 'd9a554b1808ce10a12a932ed9b0db1d0'
+ const apiKey = '3916a7b434e7f13ae1a0af64e88ec0a3'
+ if (modalInfo.value.gisList && modalInfo.value.gisList.length > 0) {
+ const gisInfo = modalInfo.value.gisList[0]
+ if (gisInfo && gisInfo.gisList && gisInfo.gisList.length > 0) {
+ const adsInfo = gisInfo.gisList[gisInfo.gisList.length - 1]
+ const location = adsInfo.lon1 + ',' + adsInfo.lat1
+ axios.get(`https://restapi.amap.com/v3/geocode/regeo?key=${apiKey}&location=${location}`).then(res => {
+ console.log('res', res.data)
+ if (res.data.status == 1) {
+ modalInfo.value.position = res.data.regeocode.formatted_address
+ }
+ })
+ }
+ }
modalLoading.value = false
nextTick(() => {
@@ -969,7 +1123,7 @@
image: fahuoImg, // 鍥炬爣鍥剧墖URL
imageSize: new AMap.Size(28, 32), // 鍥炬爣瀹為檯澶у皬
}),
- title: '鏍囪鐐�1', // 榧犳爣鎮仠鏃舵樉绀虹殑鏍囬
+ title: obj.deliveryEnterprise, // 榧犳爣鎮仠鏃舵樉绀虹殑鏍囬
})
map.add(marker1)
const marker2 = new AMap.Marker({
@@ -979,7 +1133,7 @@
image: shouImg, // 鍥炬爣鍥剧墖URL
imageSize: new AMap.Size(28, 32), // 鍥炬爣瀹為檯澶у皬
}),
- title: '鏍囪鐐�1', // 榧犳爣鎮仠鏃舵樉绀虹殑鏍囬
+ title: obj.receiveEnterprise, // 榧犳爣鎮仠鏃舵樉绀虹殑鏍囬
})
map.add(marker2)
// 缁樺埗杞ㄨ抗
@@ -1012,8 +1166,8 @@
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
})
@@ -1053,6 +1207,15 @@
label: {
show: false,
position: 'center'
+ },
+ emphasis: {
+ // 璁剧疆鎮诞鏃舵牱寮忎负绌�
+ scale: false, // 鍏抽棴鏀惧ぇ鏁堟灉
+ itemStyle: {
+ shadowBlur: 0, // 闃村奖妯$硦搴︿负 0
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0)',
+ },
},
color: colors,
labelLine: {
@@ -1108,7 +1271,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) + '%'
@@ -1153,7 +1316,7 @@
// icon: 'circle',
right: '12%',
top: '0%',
- data: ['鎬诲簱瀛�', '褰撳墠搴撳瓨', '搴撳瓨鍒╃敤鐜�'],
+ data: ['鎬诲簱瀹�', '褰撳墠搴撳瓨', '搴撳瓨鍒╃敤鐜�'],
itemWidth: 20,
itemHeight: 10,
textStyle: {
@@ -1174,7 +1337,7 @@
// 閬嶅巻鎮诞鏃剁殑鎵�鏈夌偣锛屽畾鍒跺寲鏄剧ず鍐呭
let result = `<div style="width: 160px">${params[0].name}</div>`
params.forEach((item) => {
- if (item.seriesName === '鎬诲簱瀛�') {
+ 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>
@@ -1189,7 +1352,7 @@
} 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: #5a6fc0;margin-right: 4px;"></div><div>${item.seriesName}</div></div>
+ <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>`
}
@@ -1219,7 +1382,7 @@
nameTextStyle: {
color: '#869CC9',
},
- name: '涓囨敮',
+ name: '绠�',
nameGap: 16,
type: 'value',
axisLabel: {
@@ -1255,7 +1418,7 @@
],
series: [
{
- name: '鎬诲簱瀛�',
+ name: '鎬诲簱瀹�',
type: 'bar',
barWidth: 10,
barGap: '60%',
@@ -1421,7 +1584,7 @@
}],
yAxis: [
{
- name: '涓囨敮',
+ name: '绠�',
nameGap: 16,
type: 'value',
axisLabel: {
@@ -1559,7 +1722,7 @@
// icon: 'circle',
right: '10%',
top: '0%',
- data: ['鎬昏繍鍔涜祫婧�', '褰撴棩鎻愭姤杩愬姏', '杞﹁締鍒╃敤鐜�'],
+ data: ['褰撴棩鍙敤杩愬姏', '褰撴棩鎻愭姤杩愬姏', '杞﹁締鍒╃敤鐜�'],
itemWidth: 20,
itemHeight: 10,
textStyle: {
@@ -1573,7 +1736,7 @@
// 閬嶅巻鎮诞鏃剁殑鎵�鏈夌偣锛屽畾鍒跺寲鏄剧ず鍐呭
let result = `<div style="width: 160px">${params[0].name}</div>`
params.forEach((item) => {
- if (item.seriesName === '鎬昏繍鍔涜祫婧�') {
+ 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>
@@ -1665,7 +1828,7 @@
],
series: [
{
- name: '鎬昏繍鍔涜祫婧�',
+ name: '褰撴棩鍙敤杩愬姏',
type: 'bar',
barWidth: 10,
barGap: '60%',
@@ -1692,7 +1855,7 @@
},
barBorderRadius: [30, 30, 0, 0],
},
- data: data7.value.detailList.map(i => i.totalNum)
+ data: data7.value.detailList.map(i => (i.totalNum - i.zaituNum))
},
{
name: '褰撴棩鎻愭姤杩愬姏',
@@ -1800,7 +1963,7 @@
initialSlide: 0,
direction: 'vertical', //绔栫洿鏂瑰悜
slidesPerView: 5,
- autoplay: autoplayFlag(transportTask.value, 5, 4000),
+ autoplay: autoplayFlag(transportTask.value, 5, 6000),
observer: true, //淇敼swiper鑷繁鎴栧瓙鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper
})
}
@@ -1883,6 +2046,7 @@
margin-top: 20px;
padding: 0px 10px 30px 20px;
position: relative;
+ height: 160px;
.content_wrap {
display: flex;
@@ -2090,6 +2254,9 @@
.left {
display: flex;
align-items: center;
+ position: relative;
+
+
img {
width: 16px;
@@ -2138,8 +2305,37 @@
.static_wrap {
display: flex;
justify-content: space-between;
- align-items: center;
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;
@@ -2230,6 +2426,7 @@
.tag {
position: absolute;
+ z-index: 99999;
bottom: -30px;
right: 0;
transform: translate(50%, 0);
@@ -2242,7 +2439,7 @@
align-items: center;
justify-content: center;
min-width: 76px;
- border: 1px solid #fff;
+ border: 1px solid #FECE01;
.icon {
position: absolute;
@@ -2257,8 +2454,17 @@
}
}
+ .tooltip_wrap {
+ .tooltip {
+ z-index: 9999999999;
+ top: 34px;
+ transform: translate(70px, -42%);
+ }
+ }
+
.tag1 {
background-color: #28F0CC;
+ border: 1px solid #28F0CC;
.icon {
background-color: #28F0CC;
@@ -2284,16 +2490,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;
}
@@ -2388,6 +2630,118 @@
}
}
}
+
+ .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: 420px;
+ height: 148px;
+ background: rgba(0, 30, 63, 0.6);
+ border: 1px solid #003F82;
+ backdrop-filter: blur(3px);
+ padding: 10px;
+ font-size: 13px;
+ color: #ebf1fb;
+ 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: #e9f0ff;
+ line-height: 19px;
+ font-weight: 400;
+ border-radius: 6px;
+
+ div {
+ margin-bottom: 3px;
+ }
+
+
+ .title {
+ color: #e2ebfd;
+ }
+ }
+}
+
+.triangle {
+ width: 12px;
+ height: 12px;
+ position: absolute;
+ top: 36%;
+ transform: translate(-50%, -50%);
+ left: -6px;
+ transform: rotate(45deg);
+ border-left: 1px solid #003F82;
+ border-bottom: 1px solid #003F82;
+ background: rgba(0, 30, 63, 0.6);
+ /* backdrop-filter: blur(3px); */
}
.main_header {
@@ -2521,11 +2875,23 @@
}
}
+ .stock {
+ display: flex;
+ align-items: center;
+ color: #dd5d2a;
+ margin-bottom: 8px;
+
+ img {
+ margin-right: 6px;
+ width: 14px;
+ }
+ }
+
.title_head {
display: flex;
align-items: center;
justify-content: space-between;
- margin-bottom: 20px;
+ margin-bottom: 8px;
.left {
display: flex;
@@ -2549,12 +2915,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;
@@ -2569,10 +2935,16 @@
background-color: #fff;
border-radius: 50%;
margin-right: 4px;
+ margin-top: 7px;
}
.la {
color: #01D9FE;
+ width: 70px;
+ }
+
+ .val {
+ flex: 1;
}
}
}
@@ -2732,6 +3104,12 @@
font-weight: 500;
font-size: 16px;
color: #FFFFFF;
+ position: relative;
+
+ .hover_wrap {
+ left: 175px;
+ height: 80px;
+ }
.icon {
width: 16px;
@@ -2854,4 +3232,4 @@
object-fit: cover;
z-index: -1;
}
-</style>
\ No newline at end of file
+</style>
--
Gitblit v1.9.3