From fbe39da5114ac1f9d9b7d7341e29ed39a3c73535 Mon Sep 17 00:00:00 2001 From: liukangdong <898885815@qq.com> Date: 星期一, 23 十二月 2024 18:05:06 +0800 Subject: [PATCH] ll --- screen/src/views/LogisticsCenter.vue | 1347 ++++++++++++++++++++++++++++++---------------------------- 1 files changed, 690 insertions(+), 657 deletions(-) diff --git a/screen/src/views/LogisticsCenter.vue b/screen/src/views/LogisticsCenter.vue index cd1d5e6..4635785 100644 --- a/screen/src/views/LogisticsCenter.vue +++ b/screen/src/views/LogisticsCenter.vue @@ -24,20 +24,20 @@ <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="tabs"> - <div class="tab" :class="{ active: activeTab1 == 0 }" @click="tab1Click(0)">鏈懆</div> + <div class="tab" :class="{ active: activeTab1 == 1 }" @click="tab1Click(1)">鏈懆</div> <div class="separate"></div> - <div class="tab" :class="{ active: activeTab1 == 1 }" @click="tab1Click(1)">鏈湀</div> + <div class="tab" :class="{ active: activeTab1 == 0 }" @click="tab1Click(0)">鏈湀</div> <div class="separate"></div> <div class="tab" :class="{ active: activeTab1 == 2 }" @click="tab1Click(2)">鏈勾</div> </div> </div> <div class="content_wrap"> <div class="num_wrap"> - <div class="num_list" v-if="cneterData.yearOutTotal"> - <div class="num" v-for="i in cneterData.yearOutTotal + ''"> + <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> @@ -45,11 +45,19 @@ <div class="content"> <div class="unit_wrap"> <span class="la">鍚屾瘮</span> - <img src="@/assets/images/ic_up.png" class="icon" alt=""> - <span v-if="cneterData.yearOutTotalOnYear || cneterData.yearOutTotalOnYear == 0">{{ - cneterData.yearOutTotalOnYear }} %</span> + <template v-if="StockOutData.currentNum && StockOutData.lastNum"> + <img v-if="StockOutData.currentNum >= StockOutData.lastNum" 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 + - + StockOutData.lastNum) / + StockOutData.lastNum) + * 100).toFixed(2)) }}%</span> + <span v-else style="margin-left: 6px;">-</span> <span class="la" style="margin-left: 30px;margin-right: 10px;">绱鍑哄簱杞︽</span> - <span>{{ cneterData.yearOutTimes || '' }}</span> + <span>{{ StockOutData.totalCarNum || '' }}</span> </div> </div> @@ -57,10 +65,10 @@ <div class="echart_wrap"> <div class="echart1" id="echart1"></div> <div class="list"> - <div class="item" v-for="item, i in StockOutData" :key="i"> + <div class="item" v-for="item, i in StockOutData.arr" :key="i"> <div :style="{ background: colors[i] }" class="icon"></div> <div class="text">{{ item.name }}</div> - <div class="num">{{ item.value }}</div> + <div class="num">{{ item.rate }}</div> </div> </div> </div> @@ -93,18 +101,19 @@ <div class="list_wrap"> <div class="header line"> <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"> <div class="swiper-wrapper"> - <div class="line one-swiper-slide swiper-slide item" @click="taskClick(item)" + <div :class="{ avtive: modalInfo.contractNumber == item.contractNumber }" + class="line one-swiper-slide swiper-slide item" @click="taskClick(item)" v-for="(item, i) in transportTask" :key="i"> - <span class="item">{{ item.carNo }}</span> - <span class="item">{{ item.statusStr }}</span> - <span class="item">{{ item.address }}</span> - <span class="item">{{ item.taskDate }}</span> + <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> </div> </div> </div> @@ -133,37 +142,31 @@ <img src="@/assets/images/LogisticsCenter/ic_jinrijihua@2x.png" alt=""> <div class="content"> <div class="name">褰撴棩璁㈠崟閲�</div> - <div class="num"><span class="blue">{{ cneterData.outPlanTotal }}</span>涓囨敮</div> + <div class="num"><span class="blue">{{ 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.outPlanTotal }}</span>涓囨敮</div> - <div class="unit">杞︽锛歿{ cneterData.outPlanTimes }}</div> + <div class="num"><span>{{ cneterData.currentPlanNum }}</span>涓囨敮</div> + <div class="unit">杞︽锛歿{ cneterData.currentPlanCarNum }}</div> </div> </div> <div class="item"> <img src="@/assets/images/LogisticsCenter/ic_jinrichuku@2x.png" alt=""> <div class="content"> <div class="name">浠婃棩鍑哄簱閲�</div> - <div class="num" v-if="cneterData.outPlanTotal && cneterData.outTotal"><span class="finish">{{ - cneterData.outPlanTotal - cneterData.outTotal }}</span>涓囨敮</div> - <div class="unit" v-if="cneterData.outPlanTotal && cneterData.outTotal">杞︽锛歿{ cneterData.outPlanTimes - - - cneterData.outTimes }}</div> + <div class="num"><span 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" v-if="cneterData.outPlanTotal && cneterData.outTotal"><span class="today">{{ - cneterData.outPlanTotal - cneterData.outTotal }}</span>涓囨敮</div> - <div class="unit" v-if="cneterData.outPlanTotal && cneterData.outTotal">杞︽锛歿{ cneterData.outPlanTimes - - - cneterData.outTimes }}</div> + <div class="num"><span class="today">{{ cneterData.crrentRestNum }}</span>涓囨敮</div> + <div class="unit">杞︽锛歿{ cneterData.crrentRestCarNum }}</div> </div> </div> </div> @@ -171,6 +174,13 @@ <div class="wrap"> <div class="content"> <div class="scale">0</div> + <!-- <div class="node"> + <div>8h</div> + <div class="node_icon"> + <div class="icon icon1"></div> + <div class="icon icon2"></div> + </div> + </div> --> <div class="box"> <div class="tag"> <div class="icon"></div> @@ -184,17 +194,31 @@ </div> </div> </div> - <div class="side"> + <!-- <div class="side"> <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 class="list"> + <div v-if="showModal1" @click="showModal1 = false" class="modal1"> + <div class="list"> + <div class="head line"> + <div class="item">杞︾墝鍙�</div> + <div class="item contract">鍚堝悓鍙�</div> + <div class="item">鐩殑鍦�</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> + </div> + </div> + <!-- <div class="list"> <div class="item"> <div class="icon"></div> <div class="text">鍑哄簱閲�10w浠ヤ笂</div> @@ -211,7 +235,7 @@ <div class="icon icon4"></div> <div class="text">鍑哄簱閲�2w浠ヤ笅</div> </div> - </div> + </div> --> </div> </div> <div class="right_box"> @@ -226,9 +250,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>{{ data5.totalNum }}</span> + <span class="unit">涓囨敮 | </span> + <span v-if="data5.totalNum">{{ ((data5.currentNum / data5.totalNum) * 100).toFixed(1) }}%</span> + </div> </div> <div class="echart5_wrap"> <div class="echart5" id="echart5"></div> @@ -264,66 +293,88 @@ <div class="modal_wrap" v-if="showModal"> <div class="title_head"> <img src="@/assets/images/energy_ef/chuku_ic_car@2x.png" alt=""> - <span>鐨朼222</span> + <span>鍚堝悓鍙凤細{{ modalInfo.contractNumber }}</span> </div> <div class="info"> <div class="item"> <div class="dian"></div> - <div class="la">杩愯緭鍗曞彿锛�</div> - <div class="val">471342</div> - </div> - <div class="item"> - <div class="dian"></div> <div class="la">鍙告満淇℃伅锛�</div> - <div class="val">瀛欐枃姝� 17493932936</div> + <div class="val">{{ modalInfo.driverName }} {{ modalInfo.driverTel }}</div> </div> <div class="item"> <div class="dian"></div> - <div class="la">鎬昏繍杈撻噺锛�</div> - <div class="val">22涓囨敮</div> + <div class="la">杞︾墝鍙凤細</div> + <div class="val">{{ modalInfo.plateName }}</div> </div> <div class="item"> <div class="dian"></div> - <div class="la">褰撳墠浣嶇疆锛�</div> - <div class="val">瀹夊窘鐪佸悎鑲ュ競鍖呮渤鍖虹箒鍗庡ぇ閬�123绫冲</div> - </div> - </div> - <div class="tabs"> - <div :class="{ active: modalTab == 0 }" @click="modalTabClick(0)" class="tab">鍚堝悓1:1231231</div> - <div :class="{ active: modalTab == 1 }" @click="modalTabClick(1)" class="tab">鍚堝悓2:1231231</div> - </div> - <div class="ht_info"> - <div class="item"> - <div class="la">鍙戣揣浠撳簱锛�</div> - <div class="val">鑺滄箹鎴愬搧</div> + <div class="la">鍙戣揣鍦扮偣锛�</div> + <div class="val">{{ modalInfo.deliveryEnterprise }}</div> </div> <div class="item"> - <div class="la">棰勮鍒拌揪锛�</div> - <div class="val">2024-12-04 14:00</div> - </div> - <div class="item"> + <div class="dian"></div> <div class="la">鍒拌揣鍦扮偣锛�</div> - <div class="val">姹熼棬鐑熻崏鐗╂祦閰嶉�佷腑蹇�</div> + <div class="val">{{ modalInfo.receiveEnterprise }}</div> </div> <div class="item"> - <div class="la">杩愯緭閲忥細</div> - <div class="val">300涓囨敮</div> + <div class="dian"></div> + <div class="la">杞﹁締浣嶇疆锛�</div> + <div class="val">{{ modalInfo.aa || '-' }}</div> + </div> + <div class="item"> + <div class="dian"></div> + <div class="la">棰勮鍒拌揪锛�</div> + <div class="val" v-if="modalInfo.plannedArrivedDate">{{ modalInfo.plannedArrivedDate.slice(0, 11) }}</div> </div> </div> - <div class="tab1"> - <div class="title"> + <div class="logistics_wrap"> + <div class="m_title"> <img src="@/assets/images/LogisticsCenter/ic_title@2x.png" alt=""> <span>鐗╂祦淇℃伅</span> </div> - <div class="item" v-for="item, i in 3"> - <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> - <div class="content"> - <div class="status">杞﹁締鍚繍-鐢靛瓙閿佹皵杩�</div> - <div class="time">2024-04-02 12:00</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="item_title"> + <div class="icon"> + <img v-if="item.key == 0 && k != 0" src="@/assets/images/LogisticsCenter/ic_dingdan@2x.png" + class="icon"></img> + <img v-if="item.key == 0 && k == 0" src="@/assets/images/LogisticsCenter/ic_dingdan_sel@2x.png" + class="icon"></img> + <img v-if="item.key == 1 && k != 0" src="@/assets/images/LogisticsCenter/ic_peizai@2x.png" + class="icon"></img> + <img v-if="item.key == 1 && k == 0" src="@/assets/images/LogisticsCenter/ic_peizai_sel@2x.png" + class="icon"></img> + <img v-if="item.key == 2 && k != 0" src="@/assets/images/LogisticsCenter/ic_cangku@2x.png" + class="icon"></img> + <img v-if="item.key == 2 && k == 0" src="@/assets/images/LogisticsCenter/ic_cangku_sel@2x.png" + class="icon"></img> + <img v-if="item.key == 3 && k != 0" src="@/assets/images/LogisticsCenter/ic_yunshu@2x.png" + class="icon"></img> + <img v-if="item.key == 3 && k == 0" src="@/assets/images/LogisticsCenter/ic_yunshu_sel@2x.png" + class="icon"></img> + <img v-if="item.key == 4 && k != 0" src="@/assets/images/LogisticsCenter/ic_daohuo@2x.png" + class="icon"></img> + <img v-if="item.key == 4 && k == 0" src="@/assets/images/LogisticsCenter/ic_daohuo_sel@2x.png" + class="icon"></img> + <img v-if="item.key == 5" src="@/assets/images/LogisticsCenter/ic_dangqian@2x.png" class="icon"></img> + </div> + <div>{{ item.name }}</div> + </div> + <div class="item" v-for="ite, i in item.secondList"> + <div class="h2" v-if="ite.orderStatusDes"> + <div class="icon_wrap" v-if="i != 0"> + <image src="@/static/driver/ic_mostarted.png" class="icon"></image> + </div> + <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" class="primaryColor">{{ ite.tel }}</text> + </div> + </div> + <div class="time">{{ ite.recordDate }}</div> + </div> </div> </div> </div> @@ -341,7 +392,10 @@ import * as echarts from 'echarts' import 'swiper/css/swiper.min.css' import Swiper from 'swiper' +import Map from '@/components/Map.vue' 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 { getStoreOperationList, getStorearriveGoodsList, @@ -349,6 +403,15 @@ getStoreenergyDataList, getStorelastMonthOil, getStoreTaskList, + + kztotalOutQtyNum, + kzorderInfo, + mapYearAndMonthOutList, + kzinventoryUseRate, + outAbilityUseRate, + tranportAbilityUseRate, + kzfactoryList, + arriveGoodsList } from '@/api' const weekMap = ['鏄熸湡鏃�', '鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�',] @@ -422,153 +485,167 @@ }) } +// +const mapList = ref([]) const mapEchart = ref() const initMap = () => { var myChart = echarts.init(mapEchart.value) echarts.registerMap('china', chinaJSON) var points = [ // 鐐瑰潗鏍� - { value: [117.1582, 36.8701], itemStyle: { color: '#6ae5e0' }, name: '灞变笢', total: 2, bj: 0, yj: 0, yx: 0, tj: 0, dw: 0 }, - { value: [117.29, 32.0581], itemStyle: { color: '#6ae5e0' }, name: '瀹夊窘', total: 2, bj: 0, yj: 0, yx: 0, tj: 0, dw: 0 }, - { value: [114.3896, 30.6628], itemStyle: { color: '#6ae5e0' }, name: '婀栧寳', total: 5, bj: 0, yj: 0, yx: 5, tj: 0, dw: 0 }, - { value: [119.5313, 29.8773], itemStyle: { color: '#6ae5e0' }, name: '娴欐睙', total: 10, bj: 0, yj: 0, yx: 10, tj: 0, dw: 0 }, - { value: [113.12244, 23.009505], itemStyle: { color: '#6ae5e0' }, name: '骞夸笢', total: 8, bj: 0, yj: 0, yx: 8, tj: 0, dw: 0 }, - { value: [103.9526, 30.7617], itemStyle: { color: '#6ae5e0' }, name: '鍥涘窛', total: 18, bj: 0, yj: 0, yx: 18, tj: 0, dw: 0 } + { value: [117.1582, 36.8701, 100], itemStyle: { color: '#6ae5e0' }, name: '灞变笢', total: 2, bj: 0, yj: 0, yx: 0, tj: 0, dw: 0 }, + { value: [117.29, 32.0581, 90], itemStyle: { color: '#6ae5e0' }, name: '瀹夊窘', total: 2, bj: 0, yj: 0, yx: 0, tj: 0, dw: 0 }, + { value: [114.3896, 30.6628, 1999], itemStyle: { color: '#6ae5e0' }, name: '婀栧寳', total: 5, bj: 0, yj: 0, yx: 5, tj: 0, dw: 0 }, + { value: [119.5313, 29.8773, 2], itemStyle: { color: '#6ae5e0' }, name: '娴欐睙', total: 10, bj: 0, yj: 0, yx: 10, tj: 0, dw: 0 }, + { value: [113.12244, 23.009505, 12], itemStyle: { color: '#6ae5e0' }, name: '骞夸笢', total: 8, bj: 0, yj: 0, yx: 8, tj: 0, dw: 0 }, + { value: [103.9526, 30.7617, 1901], itemStyle: { color: '#fff' }, name: '鍥涘窛', total: 18, bj: 0, yj: 0, yx: 18, tj: 0, dw: 0 } ] - var lineToLf = [ - { name: '11', coords: [[110.81, 33.40], [116.55, 40.01]], lineStyle: { color: '#c1bb1f' } }, - { name: '22', coords: [[113.11, 28.40], [116.55, 40.01]], lineStyle: { color: '#6ae5e0' } }, - { name: '33', coords: [[106.44, 29.50], [116.55, 40.01]], lineStyle: { color: '#6ae5e0' } }, - { name: '44', coords: [[112.85, 38.95], [116.55, 40.01]], lineStyle: { color: '#6ae5e0' } }, - { name: '55', coords: [[82.78, 43.27], [116.55, 40.01]], lineStyle: { color: '#6ae5e0' } } + 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 }, ] + mapData.forEach(item => { + item.monthNum = 0 + item.yearNum = 0 + mapList.value.forEach(ite => { + if (item.name == ite.name) { + item.value = ite.value + item.monthNum = ite.monthNum + item.yearNum = ite.yearNum + } + }) + }) + const option = { - backgroundColor: 'transparent', // 璁剧疆鑳屾櫙鑹查�忔槑 - // 蹇呴』璁剧疆 - tooltip: { - show: false + //鏁版嵁鍒嗘 + 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' }, + ], + itemWidth: 22, + itemHeight: 22, + textStyle: { + color: '#fff', // 鏂囨湰棰滆壊 + fontSize: 14, // 瀛椾綋澶у皬 + }, }, - // 鍦板浘闃村奖閰嶇疆 + // 鎮诞绐� + tooltip: { + trigger: 'item', + backgroundColor: 'rgba(0,0,0,0.8)', //璁剧疆鑳屾櫙鍥剧墖 rgba鏍煎紡 + color: '#fff', + borderWidth: '1', //杈规瀹藉害璁剧疆1 + borderColor: 'gray', //璁剧疆杈规棰滆壊 + textStyle: { + color: '#fff', //璁剧疆鏂囧瓧棰滆壊 + }, + extraCssText: 'width:120px;height:40px', // 璁剧疆鎻愮ず妗嗗楂樼瓑css鏍峰紡 + formatter: function (params) { + return `${params.name}: <br /> ${params.value || 0}杈哷 + }, + }, geo: { - map: 'china', - // 杩欓噷蹇呴』瀹氫箟锛屼笉鐒跺悗闈eries閲岄潰涓嶇敓鏁� - tooltip: { - show: false - }, + // 杩欎釜鏄噸鐐� 鈥斺�� 杩欓噷璁剧疆涓哄湴鍥剧殑闃村奖 + map: 'china', // 琛ㄧず涓浗鍦板浘 + roam: false, // 绂佹鎷栨嫿 label: { - show: false + // 鏍囧織淇℃伅 + show: false, // 鏄惁鏄剧ず瀵瑰簲鍦板悕 }, - zoom: 1.6, - silent: true, // 涓嶅搷搴旈紶鏍囨椂闂� - show: true, - roam: false, // 鍦板浘缂╂斁鍜屽钩绉� - aspectScale: 0.75, // scale 鍦板浘鐨勯暱瀹芥瘮 + silent: true, // 绂佹hover鏁堟灉 + zoom: 1.4, // 鍦板浘姣斾緥 + aspectScale: 0.9, // 姣斾緥 + center: [105.194115019531, 36.582111640625], // 鍦板浘涓績浣嶇疆锛� 姝ゅ鐨勭含搴︿笌涓嬮潰鐨刢enter鐩稿樊1搴︽槸褰㈡垚闃村奖鐨勮窛绂伙紝鍙嚜宸遍殢鎰忚皟鏁� itemStyle: { - borderColor: '#2d5f9c', - borderWidth: 1, - areaColor: '#2d5f9c', - shadowColor: 'rgba(1,34,73,0.48)', - shadowBlur: 10, - shadowOffsetX: -10, // - shadowOffsetY: 10 - }, - select: { - disabled: true + areaColor: '#152e4a', //鍦板浘闃村奖鐨勯鑹� + borderColor: '#f7f7f7', // 鐪佷唤杈规棰滆壊 + borderWidth: 0.1, // 鐪佷唤杈规瀹藉害 + // shadowBlur: 5, // 鐪佷唤杈规鑱氱劍 }, emphasis: { - disabled: true, - areaColor: '#00F1FF' + show: false, }, - // 鍦板浘鍖哄煙鐨勫杈瑰舰 鍥惧舰鏍峰紡 闃村奖鏁堟灉 - // z鍊煎皬鐨勫浘褰細琚珃鍊煎ぇ鐨勫浘褰㈣鐩� - top: '30.2%', - left: 'center', - // 鍘婚櫎鍗楁捣璇稿矝闃村奖 series map閲岄潰娌℃湁姝ゅ睘鎬� - regions: [{ - name: '鍗楁捣璇稿矝', - selected: false, - emphasis: { - disabled: true + //鍦板浘鐨勯槾褰变笉鏄剧ず鍗楁矙璇稿矝 + regions: [ + { + name: '鍗楁捣璇稿矝', + itemStyle: { + // 闅愯棌鍦板浘 + normal: { + opacity: 0, // 涓� 0 鏃朵笉缁樺埗璇ュ浘褰� + }, + emphasis: { + opacity: 0, + }, + }, + label: { + show: false, // 闅愯棌鏂囧瓧 + }, }, - itemStyle: { - areaColor: '#00000000', - borderColor: '#00000000' - } - }], - z: 1 + ], }, + //閰嶇疆灞炴�� series: [ - // 鍦板浘閰嶇疆 { type: 'map', map: 'china', - zoom: 1.6, - tooltip: { - show: false - }, - label: { - show: true, // 鏄剧ず鐪佷唤鍚嶇О - color: '#fff', - fontSize: 13, - shadowColor: '#fff', - shadowBlur: 10, - shadowOffsetX: 2, - shadowOffsetY: 2, - textBorderColor: '#fff', - // rotate: 90, - align: 'center' - }, - top: '28%', - left: 'center', - aspectScale: 0.75, - roam: false, // 鍦板浘缂╂斁鍜屽钩绉� - itemStyle: { - borderColor: '#4278a3', // 鐪佸垎鐣岀嚎棰滆壊 闃村奖鏁堟灉鐨� - borderWidth: 1, - areaColor: '#1d3f71', - opacity: 1 - }, - // 鍘婚櫎閫変腑鐘舵�� - select: { - disabled: true - }, - emphasis: { // 鑱氱劍鍚庨鑹� - disabled: false, // 寮�鍚珮浜� + zoom: 1.4, + aspectScale: 0.9, // 姣斾緥 + zlevel: 1, // 璁剧疆鍦板浘鐨勫眰绾э紝灏嗚鍦板浘涓婄Щ锛堢被浼紌-index锛� + emphasis: { + // 榧犳爣hover鏄惁鏄剧ず鍐呭锛屽彲鑷繁璋冭妭 label: { - align: 'center', - color: '#04CFF5' + show: true, + color: '#fff', }, itemStyle: { - color: '#ffffff', - areaColor: '#3c87b2'// 闃村奖鏁堟灉 榧犳爣绉诲姩涓婂幓鐨勯鑹� - } - }, - z: 2 - }, - // 鐐� - { - name: 'companyPoint', - type: 'effectScatter', - coordinateSystem: 'geo', - showEffectOn: 'render', - // zlevel: 2, // zlevel鐢ㄤ簬 Canvas 鍒嗗眰 鐩稿悓鐨勭粯鍒跺湪鍚屼竴涓猚anvas涓� - rippleEffect: { - number: 3, // 娉㈢汗鏁伴噺 - period: 10, // 鍔ㄧ敾鍛ㄦ湡 鏁板�艰秺澶э紝娉㈠姩瓒婃參 - scale: 3.5, // 鍔ㄧ敾涓尝绾圭殑鏈�澶х缉鏀炬瘮渚� - brushType: 'stroke' // 娉㈢汗鐨勭粯鍒舵柟寮� stroke fill + show: true, + color: '#00114F', // 楂樹寒鏂囧瓧棰滆壊 + borderColor: '#a4d0ec', // 楂樹寒杈规棰滆壊 + areaColor: '#63d5c1', //楂樹寒鍖哄煙棰滆壊 + }, }, label: { + // 鍦板浘鏍囨敞 show: false, - triggerOn: 'click', - position: 'right', - formatter: '{b}', - color: '#97e9e1', - fontSize: 14 }, - symbol: 'circle', - symbolSize: 8, - data: points, tooltip: { show: true, triggerOn: 'click', @@ -586,50 +663,49 @@ <span class="dot bj"></span> <span class="item-state-num"> <span class="text">鏈湀鍑哄簱閲忥細</span> - <span class="num">${params.data.total}涓囨敮</span> + <span class="num">${params.data.monthNum}涓囨敮</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.yx}涓囨敮</span> + <span class="text">鏈勾鍑哄簱閲忥細</span> + <span class="num">${params.data.yearNum}涓囨敮</span> </span> </div> </div>` } }, - z: 4 + itemStyle: { + borderColor: '#a4d0ec', // 鐪佷唤杈规棰滆壊 + borderWidth: 1, // 鐪佷唤杈规瀹藉害 + // shadowBlur: 5, // 鐪佷唤杈规鑱氱劍 + areaColor: '#3c5997', + }, + center: [105.194115019531, 35.582111640625], // 璁剧疆鍦板浘涓績 + data: mapData, }, - // 鍦板浘绾跨殑鍔ㄧ敾鏁堟灉 - // { - // name: 'arrowline', - // type: 'lines', - // // zlevel: 1, - // effect: { - // show: true, - // period: 3, // 绠ご鎸囧悜閫熷害锛屽�艰秺灏忛�熷害瓒婂揩 - // trailLength: 0.1, // 鐗规晥灏捐抗闀垮害[0,1]鍊艰秺澶э紝灏捐抗瓒婇暱閲� - // symbol: 'arrow', // 绠ご鍥炬爣 - // symbolSize: 6 // 鍥炬爣澶у皬 - // }, - // lineStyle: { - // color: '#1DE9B6', - // width: 2, // 绾挎潯瀹藉害 - // opacity: 0.1, // 灏捐抗绾挎潯閫忔槑搴� - // curveness: 0.2 // 灏捐抗绾挎潯鏇茬洿搴� - // }, - // data: lineToLf, - // z: 3 - // } - ] + ], } myChart.setOption(option) window.addEventListener('resize', function () {//鎵ц myChart.resize() }) } -const initEnergy = (list) => { +const getMap = () => { + mapYearAndMonthOutList({ + factoryCode: activeCity.value.code + }).then(res => { + const temp = res.data || [] + mapList.value = temp.map(item => { + item.value = item.monthNum + item.name = item.provinceName + return item + }) + initMap() + }) +} +const initEnergy = () => { var myChart = echarts.init(document.querySelector('.energyRef')) // 缁樺埗鍥捐〃 myChart.setOption({ @@ -678,7 +754,7 @@ axisLine: { show: false }, - data: list.map(i => i.dateStr) + data: dataList1.value.map(i => i.dateStr) }, series: [ { @@ -696,7 +772,7 @@ emphasis: { focus: 'series' }, - data: list.map(i => i.inTransitNum), + data: dataList1.value.map(i => i.waitNum), itemStyle: { normal: { color: { @@ -735,7 +811,7 @@ color: '#000000', fontSize: 10 }, - data: list.map(i => i.inTransitNum), + data: dataList1.value.map(i => i.ingNum), itemStyle: { normal: { color: { @@ -788,20 +864,32 @@ emphasis: { focus: 'series' }, - data: list.map(i => i.arriveNum) + data: dataList1.value.map(i => i.doneNum) } ] }) myChart.on('click', function (params) { - console.log(params.name) + // console.log(params.seriesName) + // console.log(params.name) + const item = dataList1.value.find(i => i.dateStr == params.name) + // console.log(params); + active1List.value = params.seriesName == '鍦ㄩ��' ? item.ingList : params.seriesName == '鍒拌揣' ? item.doneList : item.waitList + showModal1.value = true }) window.addEventListener('resize', function () {//鎵ц myChart.resize() }) } +const showModal1 = ref(false) +const active1List = ref([]) + +const dataList1 = ref([]) const getData1 = () => { - getStorearriveGoodsList().then(res => { - initEnergy(res.data || []) + getStorearriveGoodsList({ + factoryCode: activeCity.value.code + }).then(res => { + dataList1.value = res.data || [] + initEnergy() }) } @@ -810,19 +898,118 @@ const showModal = ref(false) const modalInfo = ref({}) const modalTab = ref(0) +const pager = ref({ + page: 0, + rows: 10 +}) const modalTabClick = (val) => { modalTab.value = val } const taskClick = (item) => { - modalInfo.value = item - showModal.value = true + kzorderInfo({ contractNumber: item.contractNumber }).then(res => { + modalInfo.value = res.data + showModal.value = true + console.log('modalInfo.value', modalInfo.value) + nextTick(() => { + initGdMap() + }) + }) +} + + +const mapContainer = ref(null) +function distance(obj) { + const lat1 = obj.deliveryLat + const lng1 = obj.deliveryLon + const lat2 = obj.receiveLat + const lng2 = obj.receiveLon + const radLat1 = rad(lat1) + const radLat2 = rad(lat2) + const a = radLat1 - radLat2 + const b = rad(lng1) - rad(lng2) + const Haversin = Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), + 2) + const radius = 6378137 // 鍦扮悆鍗婂緞 + return 2 * radius * Math.asin(Math.sqrt(Haversin)) +} +function rad(d) { + return d * Math.PI / 180.0 +} +const initGdMap = () => { + const obj = modalInfo.value + let scale = 5 + console.log((obj.deliveryLon + obj.receiveLon)) + const distancet = distance(obj) + if (distancet > 1200000) { + scale = 3 + } else if (distancet < 1200000 && distancet > 500000) { + scale = 4 + } else if (distancet < 500000) { + scale = 5 + } else { + scale = 5 + } + console.log('distancet', distancet) + + const map = new AMap.Map(mapContainer.value, { + zoom: scale, // 鍒濆缂╂斁绾у埆 + center: [(Number(obj.deliveryLon) + Number(obj.receiveLon)) / 2, (Number(obj.deliveryLat) + Number(obj.receiveLat)) / 2], // 鍒濆涓績鐐癸紙鍖椾含鍧愭爣锛� + }) + AMap.plugin(['AMap.ToolBar'], () => { + const toolbar = new AMap.ToolBar() + map.addControl(toolbar) + }) + const marker1 = new AMap.Marker({ + position: [obj.deliveryLon, obj.deliveryLat], // 鏍囪鐐�1鍧愭爣 + icon: new AMap.Icon({ + size: new AMap.Size(28, 32), // 鍥炬爣澶у皬 + image: fahuoImg, // 鍥炬爣鍥剧墖URL + imageSize: new AMap.Size(28, 32), // 鍥炬爣瀹為檯澶у皬 + }), + title: '鏍囪鐐�1', // 榧犳爣鎮仠鏃舵樉绀虹殑鏍囬 + }) + map.add(marker1) + const marker2 = new AMap.Marker({ + position: [obj.receiveLon, obj.receiveLat], // 鏍囪鐐�1鍧愭爣 + icon: new AMap.Icon({ + size: new AMap.Size(28, 32), // 鍥炬爣澶у皬 + image: shouImg, // 鍥炬爣鍥剧墖URL + imageSize: new AMap.Size(28, 32), // 鍥炬爣瀹為檯澶у皬 + }), + title: '鏍囪鐐�1', // 榧犳爣鎮仠鏃舵樉绀虹殑鏍囬 + }) + map.add(marker2) + // 缁樺埗杞ㄨ抗 + const polylineList = obj.gisList[0].gisList || [] + + const polyline = new AMap.Polyline({ + path: [ + polylineList.map(i => { + return [i.lon, i.lat] + }) + ], + strokeColor: 'red', // 绾跨殑棰滆壊 + strokeWeight: 3, // 绾跨殑瀹藉害 + strokeOpacity: 0.8, // 绾跨殑閫忔槑搴� + strokeStyle: 'solid', // 绾跨殑鏍峰紡 + lineJoin: 'round', // 鎶樼嚎鎷愮偣鐨勬牱寮� + }) + map.add(polyline) } const getData2 = () => { - getStoreTaskList({ code: taskCode.value }).then(res => { - let temp = res.data || [] - // temp = temp.splice(0, 5) + + getStoreTaskList({ + pager: pager.value, + parameters: { + contractNumber: taskCode.value, + facrotyCodeList: activeCity.value.code ? [activeCity.value.code] : [] + } + }).then(res => { + let temp = res.data.rows || [] transportTask.value = temp.map(item => { - item.taskDate = item.taskDate.slice(5, 16) + if (item.transportDate) { + item.transportDate = item.transportDate.slice(5, 16) + } return item }) }) @@ -830,27 +1017,22 @@ const cneterData = ref({}) const showPro = ref(false) -const cityList = ref([ - { name: '鍏ㄧ渷', id: 0 }, - { name: '鍚堣偉浠�', id: 1 }, - { name: '鑺滄箹浠�', id: 2 }, - { name: '婊佸窞浠�', id: 3 }, - { name: '铓屽煚浠�', id: 4 }, -]) -const activeCity = ref({ name: '鍏ㄧ渷', id: 0 }) -const activeTab1 = ref(0) +const cityList = ref() +const getCity = () => { + kzfactoryList().then(res => { + cityList.value = res.data + }) +} +const activeCity = ref({ name: '鍏ㄧ渷', code: '' }) const colors = ['#0193FE', '#FFB642'] -const StockOutData = ref([]) const cityClick = (item) => { activeCity.value = item showPro.value = false - cneterData.value = {} - setTimeout(() => { - getData3() - }, 400) + changeCity() } const initEchart1 = () => { const myChart = echarts.init(document.getElementById('echart1')) + const option = { tooltip: { trigger: 'item' @@ -867,7 +1049,7 @@ labelLine: { show: false }, - data: StockOutData.value + data: StockOutData.value.arr } ] } @@ -876,274 +1058,40 @@ myChart.resize() }) } -const getStockOut = () => { - let arr = [] - arr.push({ name: '鐪佸唴', value: (cneterData.value.yearProvinceRata * 100).toFixed(0) + '%' }) - arr.push({ name: '鐪佸', value: ((1 - cneterData.value.yearProvinceRata) * 100).toFixed(0) + '%' }) - arr.sort((a, b) => b.value - a.value) - StockOutData.value = arr - initEchart1() -} -const tab1Click = () => { - activeTab1.value = val +const activeTab1 = ref(0) +const StockOutData = ref({}) +const getStockOut = () => { + kztotalOutQtyNum({ type: activeTab1.value, factoryCode: activeCity.value.code }).then(res => { + if (res.code == 200) { + let obj = res.data + obj.currentNum = (obj.currentOutNum + obj.currentInNum).toFixed(0) * 1 + obj.lastNum = (obj.lastOutNum + obj.lastInNum).toFixed(0) * 1 + // obj.sameNum = (obj.sameOutNum + obj.sameInNum).toFixed(0) + let arr = [] + arr.push({ name: '鐪佸唴', value: obj.currentInNum, rate: obj.currentInNum == 0 && obj.currentOutNum == 0 ? 0 : (obj.currentInNum / (obj.currentInNum + obj.currentOutNum) * 100).toFixed(0) + '%' }) + arr.push({ name: '鐪佸', value: obj.currentOutNum, rate: obj.currentInNum == 0 && obj.currentOutNum == 0 ? 0 : (obj.currentOutNum / (obj.currentInNum + obj.currentOutNum) * 100).toFixed(0) + '%' }) + obj.arr = arr + + StockOutData.value = obj + initEchart1() + } + + }) +} +const tab1Click = (val) => { + activeTab1.value = val + getStockOut() } const getData3 = () => { getStorecenterData().then(res => { cneterData.value = res.data || {} - getStockOut() }) } -const activeTabs = ref(0) -const dataList4 = ref([]) -const initEchart4 = () => { - // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥 - const myChart = echarts.init(document.getElementById('echart4')) - // 缁樺埗鍥捐〃 - myChart.setOption({ - tooltip: { - trigger: 'axis', - backgroundColor: '#091123', - axisPointer: { - type: 'line' - }, - // formatter: function (params) { - // setTimeout(() => { - // }) - // return ` - // <div style="background-color: #091123;margin: -12px;padding: 14px;border: 2px solid rgba(1,217,254,0.5);color: #fff;"> - // <div>${params[0].name}鎬婚攢鍞(涓囧厓)</div> - // <div style="display: flex;align-items: center;"> - // <div style="width: 10px;height: 10px;border-radius: 50%;background-color: #ebbf40;"></div> - // <div style="margin: 0 4px 0 6px;">鎬婚攢鍞�</div> - // <span style="color: #ebbf40;">${params[0].value}</span> - // </div> - // </div> - // ` - // } - }, - xAxis: { - type: 'category', - boundaryGap: false, - data: dataList4.value.map(i => i.dateStr) - }, - yAxis: { - type: 'value', - name: '涓囨敮', - nameTextStyle: { - padding: [0, 0, 0, -16] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂� - }, - splitLine: { - show: true, - lineStyle: { - //杩欓噷杈撳叆绾挎潯鐨勬牱寮� - color: 'rgba(255,255,255,0.14)', - type: 'dashed', - }, - splitNumber: 4 - } - }, - legend: { - itemGap: 24, - icon: 'rect', - right: '12px', - top: '0', - itemWidth: 16, - itemHeight: 2, - textStyle: { - color: '#fff', - borderColor: '#fff' - }, - data: ['鎬诲叆搴撻噺', '鎬诲嚭搴撻噺', '搴撳瓨閲�'] - }, - grid: { - top: '18%', - left: '0%', - right: '2%', - bottom: '2%', - containLabel: true - }, - series: [ - { - name: '鎬诲叆搴撻噺', - data: dataList4.value.map(item => { - return { - name: item.dateStr, - value: item.totalInNum, - } - }), - type: 'line', - areaStyle: { - normal: { - color: { - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [ - { - offset: 0, - color: "#4191f6" // 0% 澶勭殑棰滆壊 - }, - { - offset: .4, - color: "#203d79" // 0% 澶勭殑棰滆壊 - }, - { - offset: 1, - color: "#1b1b12" // 100% 澶勭殑棰滆壊 - }], - globalCoord: false // 缂虹渷涓� false - } - } - }, - lineStyle: { // 绾挎潯鏍峰紡 - color: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: '#4191f6' // 0% 澶勭殑棰滆壊 - }, { - offset: 1, color: '#4191f6' // 100% 澶勭殑棰滆壊 - }], - }, - width: 1.5, // 绾挎潯绮楃粏 - }, - symbol: 'circle', - symbolSize: 4, - itemStyle: { - color: "#4190f4", - borderColor: "rgba(255,255,255,.3)", - borderWidth: 4, - }, - smooth: true - }, - { - name: '鎬诲嚭搴撻噺', - data: dataList4.value.map(item => { - return { - name: item.dateStr, - value: item.totalOutNum, - } - }), - type: 'line', - areaStyle: { - normal: { - color: { - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, - color: "rgba(192, 156, 53,.7)" // 0% 澶勭殑棰滆壊 - }, { - offset: 1, - color: "#1b1b12" // 100% 澶勭殑棰滆壊 - }], - globalCoord: false // 缂虹渷涓� false - } - } - }, - lineStyle: { // 绾挎潯鏍峰紡 - color: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: '#F3BD00' // 0% 澶勭殑棰滆壊 - }, { - offset: 1, color: '#F3BD00' // 100% 澶勭殑棰滆壊 - }], - }, - width: 2, // 绾挎潯绮楃粏 - }, - symbol: 'circle', - symbolSize: 4, - itemStyle: { - color: "#F3BD00", - borderColor: "rgba(255,255,255,.3)", - borderWidth: 4, - }, - smooth: true - }, - { - name: '搴撳瓨閲�', - data: dataList4.value.map(item => { - return { - name: item.dateStr, - value: item.stockNum, - } - }), - type: 'line', - areaStyle: { - normal: { - color: { - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, - color: "rgba(218, 233, 250)" // 0% 澶勭殑棰滆壊 - }, { - offset: 1, - color: "#1b1b12" // 100% 澶勭殑棰滆壊 - }], - globalCoord: false // 缂虹渷涓� false - } - } - }, - lineStyle: { // 绾挎潯鏍峰紡 - color: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: '#fff' // 0% 澶勭殑棰滆壊 - }, { - offset: 1, color: '#fff' // 100% 澶勭殑棰滆壊 - }], - }, - width: 2, // 绾挎潯绮楃粏 - }, - symbol: 'circle', - symbolSize: 4, - itemStyle: { - color: "#fff", - borderColor: "rgba(255,255,255,.3)", - borderWidth: 4, - }, - smooth: true - }, - ] - }) - - window.addEventListener('resize', function () {//鎵ц - myChart.resize() - }) -} -const tabsClick4 = (tab) => { - activeTabs.value = tab - getData4() -} -const getData4 = () => { // 杩涢攢瀛樿繍钀� - getStoreOperationList({ queryType: activeTabs.value }).then(res => { - console.log('res', res) - dataList4.value = res.data || [] - // initEchart4() - }) -} - -const dataList5 = ref([]) +const data5 = ref({}) +const data6 = ref({}) +const data7 = ref({}) const initEchart5 = () => { // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥 const myChart = echarts.init(document.getElementById('echart5')) @@ -1153,7 +1101,7 @@ itemGap: 12, // icon: 'circle', right: '16%', - top: '1%', + top: '0%', data: ['鎬诲簱瀛�', '褰撳墠搴撳瓨', '搴撳瓨鍒╃敤鐜�'], itemWidth: 20, itemHeight: 10, @@ -1188,7 +1136,7 @@ axisTick: { show: false, }, - data: dataList5.value.map(i => i.placeName), + data: data5.value.detailList.map(i => i.factoryName), }], yAxis: [ { @@ -1196,7 +1144,7 @@ color: '#869CC9', }, name: '涓囨敮', - nameGap: 24, + nameGap: 16, type: 'value', axisLabel: { show: true, @@ -1217,7 +1165,7 @@ { type: 'value', name: '%', - nameGap: 24, + nameGap: 16, min: 0, max: 100, interval: 25, @@ -1256,7 +1204,7 @@ }, barBorderRadius: [30, 30, 0, 0], }, - data: dataList5.value.map(i => i.totalStockNum) + data: data5.value.detailList.map(i => i.totalNum) }, { name: '褰撳墠搴撳瓨', @@ -1289,7 +1237,7 @@ }, barBorderRadius: [30, 30, 0, 0], }, - data: dataList5.value.map(i => i.nowStockNum) + data: data5.value.detailList.map(i => i.currentNum) }, { name: '搴撳瓨鍒╃敤鐜�', @@ -1307,7 +1255,7 @@ color: '#fff', // formatter: '{c}' + '%', }, - data: dataList5.value.map(i => i.stockRataNum) + data: data5.value.detailList.map(i => i.useRate) } ] }) @@ -1324,8 +1272,8 @@ legend: { itemGap: 12, // icon: 'circle', - right: '16%', - top: '1%', + right: '10%', + top: '0', data: ['鍑哄簱鑳藉姏', '褰撴棩鍑哄簱閲�', '搴撳瓨鍒╃敤鐜�'], itemWidth: 20, itemHeight: 10, @@ -1360,7 +1308,7 @@ axisTick: { show: false, }, - data: dataList5.value.map(i => i.placeName), + data: data6.value.detailList.map(i => i.factoryName), }], yAxis: [ { @@ -1368,7 +1316,7 @@ color: '#869CC9', }, name: '涓囨敮', - nameGap: 24, + nameGap: 16, type: 'value', axisLabel: { show: true, @@ -1389,7 +1337,7 @@ { type: 'value', name: '%', - nameGap: 24, + nameGap: 16, min: 0, max: 100, interval: 25, @@ -1403,7 +1351,7 @@ { name: '鍑哄簱鑳藉姏', type: 'bar', - barWidth: 10, + barWidth: 14, barGap: '60%', label: { show: false, @@ -1428,14 +1376,14 @@ }, barBorderRadius: [30, 30, 0, 0], }, - data: dataList5.value.map(i => i.totalStockNum), + data: data6.value.detailList.map(i => i.totalNum), barGap: '-100%' // 璁剧疆鏌卞瓙瀹屽叏閲嶅彔 }, { name: '褰撴棩鍑哄簱閲�', type: 'bar', - barWidth: 10, + barWidth: 14, label: { show: false, position: 'top', @@ -1463,7 +1411,7 @@ }, barBorderRadius: [30, 30, 0, 0], }, - data: dataList5.value.map(i => i.nowStockNum), + data: data6.value.detailList.map(i => i.currentNum), barGap: '-100%' // 璁剧疆鏌卞瓙瀹屽叏閲嶅彔 }, { @@ -1482,7 +1430,7 @@ color: '#fff', // formatter: '{c}' + '%', }, - data: dataList5.value.map(i => i.stockRataNum) + data: data6.value.detailList.map(i => i.useRate) } ] }) @@ -1500,7 +1448,7 @@ itemGap: 12, // icon: 'circle', right: '16%', - top: '1%', + top: '0%', data: ['鎬诲簱瀛�', '褰撳墠搴撳瓨', '搴撳瓨鍒╃敤鐜�'], itemWidth: 20, itemHeight: 10, @@ -1535,7 +1483,7 @@ axisTick: { show: false, }, - data: dataList5.value.map(i => i.placeName), + data: data7.value.detailList.map(i => i.factoryName), }], yAxis: [ { @@ -1543,7 +1491,7 @@ color: '#869CC9', }, name: '涓囨敮', - nameGap: 24, + nameGap: 16, type: 'value', axisLabel: { show: true, @@ -1564,7 +1512,7 @@ { type: 'value', name: '%', - nameGap: 24, + nameGap: 16, min: 0, max: 100, interval: 25, @@ -1603,7 +1551,7 @@ }, barBorderRadius: [30, 30, 0, 0], }, - data: dataList5.value.map(i => i.totalStockNum) + data: data7.value.detailList.map(i => i.totalNum) }, { name: '褰撳墠搴撳瓨', @@ -1636,7 +1584,7 @@ }, barBorderRadius: [30, 30, 0, 0], }, - data: dataList5.value.map(i => i.nowStockNum) + data: data7.value.detailList.map(i => i.currentNum) }, { name: '搴撳瓨鍒╃敤鐜�', @@ -1654,7 +1602,7 @@ color: '#fff', // formatter: '{c}' + '%', }, - data: dataList5.value.map(i => i.stockRataNum) + data: data7.value.detailList.map(i => i.useRate) } ] }) @@ -1664,14 +1612,33 @@ }) } const getData5 = () => { - getStoreenergyDataList({ queryType: activeTabs.value }).then(res => { - console.log('res', res) - dataList5.value = res.data || [] + kzinventoryUseRate().then(res => { + data5.value = res.data + data5.value.detailList.forEach(item => { + item.useRate = item.useRate * 100 + }) initEchart5() + }) + outAbilityUseRate().then(res => { + data6.value = res.data + data6.value.detailList.forEach(item => { + item.useRate = item.useRate * 100 + }) initEchart6() + }) + tranportAbilityUseRate().then(res => { + data7.value = res.data + data7.value.detailList.forEach(item => { + item.useRate = item.useRate * 100 + }) initEchart7() }) + + // initEchart6() + // initEchart7() + } + const autoplayFlag = (list = [], leng = 4, time = 2000) => { if (list.length > leng) { @@ -1690,22 +1657,18 @@ }) } -const initData = () => { +const changeCity = () => { getData1() + getStockOut() + getMap() getData2() getData3() - getData4() - getData5() } onMounted(() => { - initData() - - initMap() - // initEchart2() - // initEchart3() - // initEchart4() - // initEchart5() + getCity() + changeCity() + getData5() setTimeout(() => { loopFn1() }, 12000) @@ -1878,6 +1841,10 @@ .second_title { margin-bottom: 10px; + + input { + font-size: 12px; + } } .list_wrap { @@ -1905,6 +1872,15 @@ text-overflow: ellipsis; } + .status { + flex: 5; + } + } + + .avtive { + background: rgba(1, 171, 254, 0.2); + color: #01D9FE; + font-weight: 600; } .header { @@ -2072,6 +2048,36 @@ margin-right: 4px; 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 { @@ -2082,7 +2088,7 @@ position: absolute; top: 0; left: 0; - z-index: 99; + z-index: 9999; .tag { position: absolute; @@ -2159,34 +2165,44 @@ /* transform: scale(.2); */ } - .list { + .modal1 { + width: 500px; + height: 224px; + background: rgba(0, 86, 255, 0.1); + backdrop-filter: blur(5px); + padding: 12px 30px; position: absolute; - left: 24px; - bottom: 10px; + top: 36px; + left: 12px; + border: 1px solid #4ba7f7; - .item { - display: flex; - align-items: center; - font-size: 15px; - color: #D2E0FF; - margin-top: 20px; - .icon { - width: 22px; - height: 22px; - background: rgba(255, 125, 9, 0.8); - margin-right: 12px; - } - .icon2{ - background: rgba(254,175,1,0.8); - } - .icon3{ - background: rgba(9,250,205,0.8); - } - .icon4{ - background: #225BA1; + .list { + height: 192px; + overflow: auto; + + .line { + display: flex; + align-items: center; + height: 32px; + color: #fff; + font-size: 12px; + + &:nth-of-type(2n) { + background: rgba(134, 156, 201, 0.05); + } + + .item { + flex: 2; + } } + .head { + font-weight: 500; + font-size: 13px; + color: #01D9FE; + } } + } } } @@ -2323,8 +2339,21 @@ top: 20%; left: 50%; transform: translate(-50%, 0); - z-index: 999; + z-index: 99999; padding: 24px; + + #map-container { + width: 300px; + height: 180px; + position: absolute; + top: 220px; + right: 10px; + z-index: 999999; + :deep(.amap-markers){ + left: -12px !important; + top: -32px !important; + } + } .title_head { display: flex; @@ -2342,6 +2371,10 @@ .info { display: flex; flex-wrap: wrap; + background-color: #0d2845; + border-radius: 4px; + padding: 10px 20px 0; + margin-bottom: 16px; .item { display: flex; @@ -2368,59 +2401,8 @@ } } - .tabs { - display: flex; - border-bottom: 1px solid rgba(255, 255, 255, 0.16); - margin: 0 -24px; - margin-bottom: 20px; - padding-left: 12px; - - .tab { - color: #869CC9; - font-size: 14px; - margin-left: 12px; - height: 42px; - display: flex; - align-items: center; - justify-content: center; - border-bottom: 2px solid #06182e; - cursor: pointer; - } - - .active { - font-weight: 500; - font-size: 15px; - color: #00F2F3; - border-bottom: 2px solid #00F2F3; - } - } - - .ht_info { - display: flex; - flex-wrap: wrap; - padding: 10px 10px 0; - background-color: #0d2845; - margin-bottom: 20px; - - .item { - display: flex; - align-items: center; - font-size: 13px; - width: 55%; - margin-bottom: 8px; - - &:nth-of-type(2n+1) { - width: 45%; - } - - .la { - color: #01D9FE; - } - } - } - - .tab1 { - .title { + .logistics_wrap { + .m_title { display: flex; align-items: center; font-style: 16px; @@ -2433,64 +2415,115 @@ } } - .item { - display: flex; - margin-left: 6px; + .fu_list { + height: 310px; + margin-top: 20px; + overflow: auto; - &:nth-last-child(1) { - .content { - .time { - padding-bottom: 0; + + .fu_item { + .item_title { + margin-bottom: 6px; + + .icon { + width: 36px; + display: flex; + + img { + width: 20px; + height: 20px; + } } } } + .separate { + height: calc(100% - 125px); + width: 1px; + border: 1px dashed #CCCCCC; + position: absolute; + left: 26px; + top: 51px; + z-index: -1; + } + + .title { + font-weight: 500; + font-size: 16px; + color: #222222; + margin-bottom: 10px; + } + + .line { + display: flex; + margin-bottom: 12px; + + .label { + color: #becbe9; + margin-right: 20px; + } + + .val {} + } + + .item_title { + font-weight: 600; + font-size: 16px; + display: flex; + align-items: center; + display: flex; + + .icon {} + } + .icon_wrap { width: 24px; - margin-right: 10px; + margin-right: 15px; display: flex; - flex-direction: column; align-items: center; + justify-content: center; - .dian { - width: 12px; - height: 12px; - } - - .dian_ac { + .icon { width: 24px; height: 24px; - } - - .line { - width: 1px; - height: 100%; - border: 1px dashed #8a9bc5; + position: relative; + z-index: 2; } } - .content { - font-size: 13px; - color: #D2E0FF; - - .status { - font-weight: 500; - font-size: 14px; - margin-bottom: 5px; - color: #fff; - } + .item { + position: relative; + color: #b1bfdc; + margin-bottom: 15px; .text { - margin-bottom: 4px; + color: #b1bfdc; } + .icon { + width: 10px; + height: 10px; + position: relative; + z-index: 2; + } + + .h2 { + display: flex; + align-items: center; + height: 24px; + } + + .h1 {} + .time { + padding-left: 39px; font-size: 12px; - padding-bottom: 12px; + margin-top: 3px; } } } } + } @@ -2500,7 +2533,7 @@ height: 100%; top: 0; left: 0; - z-index: 99; + z-index: 9999; background-color: rgba(0, 0, 0, 0.1); /* background-color: red; */ } @@ -2548,7 +2581,7 @@ align-items: center; font-size: 14px; color: #869CC9; - width: 96px; + width: 110px; height: 28px; border-radius: 14px; border: 1px solid #869CC9; -- Gitblit v1.9.3