From 7b0d7cfb998b584516df9bd34b9ec030b3f4e4cf Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期五, 20 十二月 2024 13:51:44 +0800
Subject: [PATCH] ll
---
screen/src/views/LogisticsCenter.vue | 1301 +++++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 1,043 insertions(+), 258 deletions(-)
diff --git a/screen/src/views/LogisticsCenter.vue b/screen/src/views/LogisticsCenter.vue
index 101762b..cd1d5e6 100644
--- a/screen/src/views/LogisticsCenter.vue
+++ b/screen/src/views/LogisticsCenter.vue
@@ -3,8 +3,8 @@
<div class="main_app">
<img src="@/assets/images/LogisticsCenter/bg@2x.png" class="main_bg" alt="" />
<div class="main_header">
- <img src="@/assets/images/maintitle@2x.png" class="main_header_bg" alt="" />
- <div class="title">瀹夊窘涓儫鐗╂祦涓績杩愯澶у睆</div>
+ <!-- <img src="@/assets/images/maintitle.gif" class="main_header_bg" alt="" /> -->
+ <div class="title">鍏ㄧ渷鐗╂祦鍦ㄩ��</div>
<div class="time_wrap">
<span class="date">{{ date }}</span>
<span class="week">{{ week }}</span>
@@ -25,6 +25,13 @@
<div class="title">
<img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" />
<div>鏈勾绱鍑哄簱閲�</div>
+ </div>
+ <div class="tabs">
+ <div class="tab" :class="{ active: activeTab1 == 0 }" @click="tab1Click(0)">鏈懆</div>
+ <div class="separate"></div>
+ <div class="tab" :class="{ active: activeTab1 == 1 }" @click="tab1Click(1)">鏈湀</div>
+ <div class="separate"></div>
+ <div class="tab" :class="{ active: activeTab1 == 2 }" @click="tab1Click(2)">鏈勾</div>
</div>
</div>
<div class="content_wrap">
@@ -78,7 +85,8 @@
</div>
<div class="search_wrap">
<img src="@/assets/images/LogisticsCenter/ic_search@2x.png" alt="">
- <input class="input" type="text" @blur="getData2" v-model="taskCode">
+ <input class="input" type="text" placeholder="璁㈠崟鏌ヨ" @keyup.enter="getData2" @blur="getData2"
+ v-model="taskCode">
<!-- <span>璁㈠崟鏌ヨ</span> -->
</div>
</div>
@@ -89,12 +97,18 @@
<span class="item">浣嶇疆</span>
<span class="item">浠诲姟涓嬭揪鏃堕棿</span>
</div>
- <div class="line" 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>
+ <div class="one-swiper list">
+ <div class="swiper-wrapper">
+ <div 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>
+ </div>
+ </div>
</div>
+
</div>
</div>
</div>
@@ -106,22 +120,26 @@
<span>鍑哄簱鑳藉姏</span>
</div>
<div class="right">
- <img src="@/assets/images/LogisticsCenter/position.png" class="posi" alt="">
- <span>鍏ㄧ渷</span>
- <img src="@/assets/images/LogisticsCenter/bottom.png" class="icon" alt="">
- </div>
- <div class="select_op">
- <div class="line">鍚堣偉浠�</div>
- <div class="line">鍚堣偉浠�</div>
- <div class="line">鍚堣偉浠�</div>
- <div class="line">鍚堣偉浠�</div>
+ <img @click="showPro = !showPro" src="@/assets/images/LogisticsCenter/position.png" class="posi" alt="">
+ <span @click="showPro = !showPro">{{ activeCity.name }}</span>
+ <img @click="showPro = !showPro" src="@/assets/images/LogisticsCenter/bottom.png" class="icon" alt="">
+ <div v-if="showPro" class="select_op">
+ <div class="line" @click="cityClick(item)" v-for="item in cityList">{{ item.name }}</div>
+ </div>
</div>
</div>
<div class="static_wrap">
<div class="item">
<img src="@/assets/images/LogisticsCenter/ic_jinrijihua@2x.png" alt="">
<div class="content">
- <div class="name">浠婃棩璁″垝閲�</div>
+ <div class="name">褰撴棩璁㈠崟閲�</div>
+ <div class="num"><span class="blue">{{ cneterData.outPlanTotal }}</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>
@@ -130,15 +148,18 @@
<img src="@/assets/images/LogisticsCenter/ic_jinrichuku@2x.png" alt="">
<div class="content">
<div class="name">浠婃棩鍑哄簱閲�</div>
- <div class="num"><span class="today">{{ cneterData.outTotal }}</span>涓囨敮</div>
- <div class="unit">杞︽锛歿{ cneterData.outTimes }}</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>
</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="finish">{{
+ <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
-
@@ -147,12 +168,50 @@
</div>
</div>
<div class="footer">
- <span>鍗犲嚭搴撹兘鍔�</span>
- <span class="num">80%</span>
+ <div class="wrap">
+ <div class="content">
+ <div class="scale">0</div>
+ <div class="box">
+ <div class="tag">
+ <div class="icon"></div>
+ <span>浠婃棩鍑哄簱</span>
+ </div>
+ </div>
+ <div class="box box1">
+ <div class="tag tag1">
+ <div class="icon"></div>
+ <span>褰撴棩璁″垝</span>
+ </div>
+ </div>
+ </div>
+ <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 class="center_box_two">
<div class="echart_map" ref="mapEchart" id="echart_map"></div>
+ <div class="list">
+ <div class="item">
+ <div class="icon"></div>
+ <div class="text">鍑哄簱閲�10w浠ヤ笂</div>
+ </div>
+ <div class="item">
+ <div class="icon icon2"></div>
+ <div class="text">鍑哄簱閲�5-10w</div>
+ </div>
+ <div class="item">
+ <div class="icon icon3"></div>
+ <div class="text">鍑哄簱閲�2-5w</div>
+ </div>
+ <div class="item">
+ <div class="icon icon4"></div>
+ <div class="text">鍑哄簱閲�2w浠ヤ笅</div>
+ </div>
+ </div>
</div>
</div>
<div class="right_box">
@@ -163,74 +222,113 @@
</div>
<img src="@/assets/images/title@2x.png" class="bg" alt="" />
</div>
- <div class="right_box_one">
- <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="content_wrap">
- <div class="num_wrap">
- <div class="num_list" v-if="cneterData.yearInTotal">
- <div class="num" v-for="i in cneterData.yearInTotal + ''">
- {{ i }}
- <img class="bg" src="@/assets/images/LogisticsCenter/bg_number@2x.png" alt="">
- </div>
- </div>
- <div class="content">
- <div class="unit_wrap">
- <span class="la">鍚屾瘮</span>
- <img src="@/assets/images/ic_up.png" class="icon" alt="">
- <span>{{ cneterData.yearInTotalOnYear }}%</span>
- <span class="la" style="margin-left: 30px;margin-right: 10px;">绱鍑哄簱杞︽</span>
- <span>{{ cneterData.yearInTimes }}</span>
- </div>
-
- </div>
- </div>
- <div class="static_wrap">
- <div class="echart_wrap">
- <div class="echart3" id="echart3"></div>
- <div class="pie_text">
- <!-- <div class="fs30">{{ cneterData.PlanTotal }}%</div> -->
- </div>
- </div>
- <div class="text">璁″垝瀹屾垚閲�</div>
- </div>
- </div>
- </div>
- <div class="right_box_two">
- <div class="second_title">
- <div class="title">
- <img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" />
- <div>杩涢攢瀛樿繍钀�</div>
- </div>
- <div class="tabs">
- <div :class="{ active: activeTabs == 0 }" class="tab" @click="tabsClick4(0)">7澶�</div>
- <div class="separate"></div>
- <div :class="{ active: activeTabs == 1 }" class="tab" @click="tabsClick4(1)">30澶�</div>
- <div class="separate"></div>
- <div :class="{ active: activeTabs == 2 }" class="tab" @click="tabsClick4(2)">1骞�</div>
- </div>
- </div>
- <div class="echart4_wrap">
- <div class="echart4" id="echart4"></div>
- </div>
- </div>
<div class="right_box_three">
<div class="second_title">
<div class="title">
<img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" />
<div>搴撳瓨鍒╃敤鐜�</div>
</div>
+ <div class="side">鍏ㄧ渷锛�<span>100<span class="unit">涓囨敮 |</span> 40.6%</span></div>
</div>
<div class="echart5_wrap">
<div class="echart5" id="echart5"></div>
</div>
</div>
+ <div class="right_box_three">
+ <div class="second_title">
+ <div class="title">
+ <img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" />
+ <div>鍑哄簱鑳藉姏鍒╃敤鐜�</div>
+ </div>
+ <div class="side">鍏ㄧ渷锛�<span>100<span class="unit">涓囨敮 |</span> 40.6%</span></div>
+ </div>
+ <div class="echart5_wrap">
+ <div class="echart5" id="echart6"></div>
+ </div>
+ </div>
+ <div class="right_box_three">
+ <div class="second_title">
+ <div class="title">
+ <img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" />
+ <div>杩愮敤璧勬簮鍒╃敤鐜�</div>
+ </div>
+ <div class="side">鍏ㄧ渷锛�<span>100<span class="unit">涓囨敮 |</span> 40.6%</span></div>
+ </div>
+ <div class="echart5_wrap">
+ <div class="echart5" id="echart7"></div>
+ </div>
+ </div>
</div>
</div>
+ <!-- -->
+ <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>
+ </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>
+ <div class="item">
+ <div class="dian"></div>
+ <div class="la">鎬昏繍杈撻噺锛�</div>
+ <div class="val">22涓囨敮</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>
+ <div class="item">
+ <div class="la">棰勮鍒拌揪锛�</div>
+ <div class="val">2024-12-04 14:00</div>
+ </div>
+ <div class="item">
+ <div class="la">鍒拌揣鍦扮偣锛�</div>
+ <div class="val">姹熼棬鐑熻崏鐗╂祦閰嶉�佷腑蹇�</div>
+ </div>
+ <div class="item">
+ <div class="la">杩愯緭閲忥細</div>
+ <div class="val">300涓囨敮</div>
+ </div>
+ </div>
+ <div class="tab1">
+ <div class="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>
+ </div>
+ </div>
+ </div>
+ <div class="modal_mask" v-if="showModal" @click="showModal = false"></div>
</div>
</v-scale-screen>
</template>
@@ -241,6 +339,8 @@
import Percent from '@/components/percent.vue'
import dayjs from 'dayjs'
import * as echarts from 'echarts'
+import 'swiper/css/swiper.min.css'
+import Swiper from 'swiper'
import chinaJSON from '@/assets/china.json'
import {
getStoreOperationList,
@@ -312,7 +412,7 @@
labelLine: {
show: false
},
- data: StockOutData.value
+ data: [3, 7]
}
]
}
@@ -328,19 +428,19 @@
echarts.registerMap('china', chinaJSON)
var points = [
// 鐐瑰潗鏍�
- { value: [110.81, 33.40], itemStyle: { color: '#c1bb1f' }, name: '鍖椾含', total: 0, bj: 0, yj: 0, yx: 0, tj: 0, dw: 0 },
- { value: [116.55, 40.01], itemStyle: { color: '#3eef1d' }, name: '鍖椾含', total: 0, bj: 0, yj: 0, yx: 0, tj: 0, dw: 0 },
- { value: [113.11, 28.40], itemStyle: { color: '#3eef1d' }, name: '鍖椾含', total: 5, bj: 0, yj: 0, yx: 5, tj: 0, dw: 0 },
- { value: [106.44, 29.50], itemStyle: { color: '#3eef1d' }, name: '鍖椾含', total: 10, bj: 0, yj: 0, yx: 10, tj: 0, dw: 0 },
- { value: [112.85, 38.95], itemStyle: { color: '#3eef1d' }, name: '鍖椾含', total: 8, bj: 0, yj: 0, yx: 8, tj: 0, dw: 0 },
- { value: [82.78, 43.27], itemStyle: { color: '#3eef1d' }, name: '鍖椾含', total: 18, bj: 0, yj: 0, yx: 18, tj: 0, dw: 0 }
+ { 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 }
]
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: '#3eef1d' } },
- { name: '33', coords: [[106.44, 29.50], [116.55, 40.01]], lineStyle: { color: '#3eef1d' } },
- { name: '44', coords: [[112.85, 38.95], [116.55, 40.01]], lineStyle: { color: '#3eef1d' } },
- { name: '55', coords: [[82.78, 43.27], [116.55, 40.01]], lineStyle: { color: '#3eef1d' } }
+ { 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 option = {
backgroundColor: 'transparent', // 璁剧疆鑳屾櫙鑹查�忔槑
@@ -460,6 +560,7 @@
},
label: {
show: false,
+ triggerOn: 'click',
position: 'right',
formatter: '{b}',
color: '#97e9e1',
@@ -470,6 +571,7 @@
data: points,
tooltip: {
show: true,
+ triggerOn: 'click',
backgroundColor: 'rgba(0,0,0,0)',
padding: 0,
borderWidth: 0,
@@ -554,7 +656,7 @@
left: '3%',
right: '4%',
bottom: '3%',
- top: '15%',
+ top: '16%',
containLabel: true
},
xAxis: {
@@ -580,12 +682,16 @@
},
series: [
{
- name: '鍦ㄩ��',
+ name: '鏈惎杩�',
type: 'bar',
stack: 'total',
barWidth: 14,
label: {
- show: true
+ show: true,
+ textStyle: {
+ color: '#000000',
+ fontSize: 10
+ }
},
emphasis: {
focus: 'series'
@@ -601,10 +707,49 @@
y2: 0,
colorStops: [{
offset: 0,
- color: '#204d75'
+ color: '#fadf74'
+ },
+ {
+ offset: 0.3,
+ color: '#f7cd5e'
}, {
offset: 1,
- color: '#2f6eae'
+ color: '#eea33b'
+ }]
+ }
+ }
+ },
+ },
+ {
+ name: '鍦ㄩ��',
+ type: 'bar',
+ stack: 'total',
+ barWidth: 14,
+ label: {
+ show: true
+ },
+ emphasis: {
+ focus: 'series'
+ },
+ textStyle: {
+ color: '#000000',
+ fontSize: 10
+ },
+ data: list.map(i => i.inTransitNum),
+ itemStyle: {
+ normal: {
+ color: {
+ type: 'linear',
+ x: 0,
+ y: 0,
+ x2: 1,
+ y2: 0,
+ colorStops: [{
+ offset: 0,
+ color: '#60d1f9'
+ }, {
+ offset: 1,
+ color: '#4eacf7'
}]
}
}
@@ -618,6 +763,10 @@
label: {
show: true
},
+ textStyle: {
+ color: '#000000',
+ fontSize: 10
+ },
itemStyle: {
normal: {
color: {
@@ -628,10 +777,10 @@
y2: 0,
colorStops: [{
offset: 0,
- color: '#3e8593'
+ color: '#71f3ce'
}, {
offset: 1,
- color: '#5cc2d2'
+ color: '#4da999'
}]
}
}
@@ -642,6 +791,9 @@
data: list.map(i => i.arriveNum)
}
]
+ })
+ myChart.on('click', function (params) {
+ console.log(params.name)
})
window.addEventListener('resize', function () {//鎵ц
myChart.resize()
@@ -655,10 +807,20 @@
const transportTask = ref([])
const taskCode = ref('')
+const showModal = ref(false)
+const modalInfo = ref({})
+const modalTab = ref(0)
+const modalTabClick = (val) => {
+ modalTab.value = val
+}
+const taskClick = (item) => {
+ modalInfo.value = item
+ showModal.value = true
+}
const getData2 = () => {
getStoreTaskList({ code: taskCode.value }).then(res => {
let temp = res.data || []
- temp = temp.splice(0, 5)
+ // temp = temp.splice(0, 5)
transportTask.value = temp.map(item => {
item.taskDate = item.taskDate.slice(5, 16)
return item
@@ -667,8 +829,26 @@
}
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 colors = ['#0193FE', '#FFB642']
const StockOutData = ref([])
+const cityClick = (item) => {
+ activeCity.value = item
+ showPro.value = false
+ cneterData.value = {}
+ setTimeout(() => {
+ getData3()
+ }, 400)
+}
const initEchart1 = () => {
const myChart = echarts.init(document.getElementById('echart1'))
const option = {
@@ -703,6 +883,10 @@
arr.sort((a, b) => b.value - a.value)
StockOutData.value = arr
initEchart1()
+}
+const tab1Click = () => {
+ activeTab1.value = val
+
}
const getData3 = () => {
getStorecenterData().then(res => {
@@ -955,7 +1139,7 @@
getStoreOperationList({ queryType: activeTabs.value }).then(res => {
console.log('res', res)
dataList4.value = res.data || []
- initEchart4()
+ // initEchart4()
})
}
@@ -968,8 +1152,8 @@
legend: {
itemGap: 12,
// icon: 'circle',
- right: '12px',
- top: '0',
+ right: '16%',
+ top: '1%',
data: ['鎬诲簱瀛�', '褰撳墠搴撳瓨', '搴撳瓨鍒╃敤鐜�'],
itemWidth: 20,
itemHeight: 10,
@@ -982,7 +1166,7 @@
left: '3%',
right: '0%',
bottom: '3%',
- top: '24%',
+ top: '18%',
containLabel: true
},
tooltip: {
@@ -1011,8 +1195,8 @@
nameTextStyle: {
color: '#869CC9',
},
- offset: 0,
name: '涓囨敮',
+ nameGap: 24,
type: 'value',
axisLabel: {
show: true,
@@ -1033,9 +1217,10 @@
{
type: 'value',
name: '%',
+ nameGap: 24,
min: 0,
max: 100,
- // interval: 5,
+ interval: 25,
axisLabel: {
formatter: '{value}'
},
@@ -1046,22 +1231,23 @@
{
name: '鎬诲簱瀛�',
type: 'bar',
- barWidth: 8,
+ barWidth: 10,
barGap: '60%',
label: {
show: false,
position: 'top',
color: '#fff',
},
+ yAxisIndex: 0,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
- color: '#5bc7d5'
+ color: '#2e6bf3'
},
{
offset: 1,
- color: '#1a3f55'
+ color: '#5fcbab'
}
], false),
lineStyle: {
@@ -1075,21 +1261,26 @@
{
name: '褰撳墠搴撳瓨',
type: 'bar',
- barWidth: 8,
+ barWidth: 10,
label: {
show: false,
position: 'top',
color: '#fff',
},
+ yAxisIndex: 0,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
- color: '#edaf3d'
+ color: '#eda13a'
+ },
+ {
+ offset: 0.6,
+ color: '#dfb44e'
},
{
offset: 1,
- color: '#323522'
+ color: '#ccc16c'
}
], false),
lineStyle: {
@@ -1103,16 +1294,365 @@
{
name: '搴撳瓨鍒╃敤鐜�',
type: 'line',
- smooth: true,
+ smooth: false,
showAllSymbol: true,
symbol: 'none',
lineStyle: {
- color: "#3d87e5"
+ color: "#9eabc2"
},
+ yAxisIndex: 1,
label: {
show: false,
position: 'top',
color: '#fff',
+ // formatter: '{c}' + '%',
+ },
+ data: dataList5.value.map(i => i.stockRataNum)
+ }
+ ]
+ })
+
+ window.addEventListener('resize', function () {//鎵ц
+ myChart.resize()
+ })
+}
+const initEchart6 = () => {
+ // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥
+ const myChart = echarts.init(document.getElementById('echart6'))
+ // 缁樺埗鍥捐〃
+ myChart.setOption({
+ legend: {
+ itemGap: 12,
+ // icon: 'circle',
+ right: '16%',
+ top: '1%',
+ data: ['鍑哄簱鑳藉姏', '褰撴棩鍑哄簱閲�', '搴撳瓨鍒╃敤鐜�'],
+ itemWidth: 20,
+ itemHeight: 10,
+ textStyle: {
+ color: '#fff',
+ borderColor: '#fff'
+ },
+ },
+ grid: {
+ left: '3%',
+ right: '0%',
+ bottom: '3%',
+ top: '18%',
+ containLabel: true
+ },
+ tooltip: {
+ trigger: 'axis'
+ },
+ xAxis: [{
+ nameGap: 5,
+ type: 'category',
+ axisLine: {
+ show: true,
+ lineStyle: {
+ color: '#999'
+ },
+ },
+ axisLabel: {
+ color: '#869CC9'
+ // fontSize: 24,
+ },
+ axisTick: {
+ show: false,
+ },
+ data: dataList5.value.map(i => i.placeName),
+ }],
+ yAxis: [
+ {
+ nameTextStyle: {
+ color: '#869CC9',
+ },
+ name: '涓囨敮',
+ nameGap: 24,
+ type: 'value',
+ axisLabel: {
+ show: true,
+ color: "#869CC9",
+ },
+ axisLine: {
+ show: true,
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ width: 1,
+ color: "rgba(49,105,129,0.4)",
+ type: 'dashed'
+ }
+ },
+ },
+ {
+ type: 'value',
+ name: '%',
+ nameGap: 24,
+ min: 0,
+ max: 100,
+ interval: 25,
+ axisLabel: {
+ formatter: '{value}'
+ },
+ splitLine: false
+ }
+ ],
+ series: [
+ {
+ name: '鍑哄簱鑳藉姏',
+ type: 'bar',
+ barWidth: 10,
+ barGap: '60%',
+ label: {
+ show: false,
+ position: 'top',
+ color: '#fff',
+ },
+ yAxisIndex: 0,
+ itemStyle: {
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+ {
+ offset: 0,
+ color: '#2e6bf3'
+ },
+ {
+ offset: 1,
+ color: '#5fcbab'
+ }
+ ], false),
+ lineStyle: {
+ width: 1,
+ type: 'solid'
+ },
+ barBorderRadius: [30, 30, 0, 0],
+ },
+ data: dataList5.value.map(i => i.totalStockNum),
+ barGap: '-100%' // 璁剧疆鏌卞瓙瀹屽叏閲嶅彔
+
+ },
+ {
+ name: '褰撴棩鍑哄簱閲�',
+ type: 'bar',
+ barWidth: 10,
+ label: {
+ show: false,
+ position: 'top',
+ color: '#fff',
+ },
+ yAxisIndex: 0,
+ itemStyle: {
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+ {
+ offset: 0,
+ color: '#eda13a'
+ },
+ {
+ offset: 0.6,
+ color: '#dfb44e'
+ },
+ {
+ offset: 1,
+ color: '#ccc16c'
+ }
+ ], false),
+ lineStyle: {
+ width: 1,
+ type: 'solid'
+ },
+ barBorderRadius: [30, 30, 0, 0],
+ },
+ data: dataList5.value.map(i => i.nowStockNum),
+ barGap: '-100%' // 璁剧疆鏌卞瓙瀹屽叏閲嶅彔
+ },
+ {
+ name: '搴撳瓨鍒╃敤鐜�',
+ type: 'line',
+ smooth: false,
+ showAllSymbol: true,
+ symbol: 'none',
+ lineStyle: {
+ color: "#9eabc2"
+ },
+ yAxisIndex: 1,
+ label: {
+ show: false,
+ position: 'top',
+ color: '#fff',
+ // formatter: '{c}' + '%',
+ },
+ data: dataList5.value.map(i => i.stockRataNum)
+ }
+ ]
+ })
+
+ window.addEventListener('resize', function () {//鎵ц
+ myChart.resize()
+ })
+}
+const initEchart7 = () => {
+ // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥
+ const myChart = echarts.init(document.getElementById('echart7'))
+ // 缁樺埗鍥捐〃
+ myChart.setOption({
+ legend: {
+ itemGap: 12,
+ // icon: 'circle',
+ right: '16%',
+ top: '1%',
+ data: ['鎬诲簱瀛�', '褰撳墠搴撳瓨', '搴撳瓨鍒╃敤鐜�'],
+ itemWidth: 20,
+ itemHeight: 10,
+ textStyle: {
+ color: '#fff',
+ borderColor: '#fff'
+ },
+ },
+ grid: {
+ left: '3%',
+ right: '0%',
+ bottom: '3%',
+ top: '18%',
+ containLabel: true
+ },
+ tooltip: {
+ trigger: 'axis'
+ },
+ xAxis: [{
+ nameGap: 5,
+ type: 'category',
+ axisLine: {
+ show: true,
+ lineStyle: {
+ color: '#999'
+ },
+ },
+ axisLabel: {
+ color: '#869CC9'
+ // fontSize: 24,
+ },
+ axisTick: {
+ show: false,
+ },
+ data: dataList5.value.map(i => i.placeName),
+ }],
+ yAxis: [
+ {
+ nameTextStyle: {
+ color: '#869CC9',
+ },
+ name: '涓囨敮',
+ nameGap: 24,
+ type: 'value',
+ axisLabel: {
+ show: true,
+ color: "#869CC9",
+ },
+ axisLine: {
+ show: true,
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ width: 1,
+ color: "rgba(49,105,129,0.4)",
+ type: 'dashed'
+ }
+ },
+ },
+ {
+ type: 'value',
+ name: '%',
+ nameGap: 24,
+ min: 0,
+ max: 100,
+ interval: 25,
+ axisLabel: {
+ formatter: '{value}'
+ },
+ splitLine: false
+ }
+ ],
+ series: [
+ {
+ name: '鎬诲簱瀛�',
+ type: 'bar',
+ barWidth: 10,
+ barGap: '60%',
+ label: {
+ show: false,
+ position: 'top',
+ color: '#fff',
+ },
+ yAxisIndex: 0,
+ itemStyle: {
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+ {
+ offset: 0,
+ color: '#2e6bf3'
+ },
+ {
+ offset: 1,
+ color: '#5fcbab'
+ }
+ ], false),
+ lineStyle: {
+ width: 1,
+ type: 'solid'
+ },
+ barBorderRadius: [30, 30, 0, 0],
+ },
+ data: dataList5.value.map(i => i.totalStockNum)
+ },
+ {
+ name: '褰撳墠搴撳瓨',
+ type: 'bar',
+ barWidth: 10,
+ label: {
+ show: false,
+ position: 'top',
+ color: '#fff',
+ },
+ yAxisIndex: 0,
+ itemStyle: {
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+ {
+ offset: 0,
+ color: '#eda13a'
+ },
+ {
+ offset: 0.6,
+ color: '#dfb44e'
+ },
+ {
+ offset: 1,
+ color: '#ccc16c'
+ }
+ ], false),
+ lineStyle: {
+ width: 1,
+ type: 'solid'
+ },
+ barBorderRadius: [30, 30, 0, 0],
+ },
+ data: dataList5.value.map(i => i.nowStockNum)
+ },
+ {
+ name: '搴撳瓨鍒╃敤鐜�',
+ type: 'line',
+ smooth: false,
+ showAllSymbol: true,
+ symbol: 'none',
+ lineStyle: {
+ color: "#9eabc2"
+ },
+ yAxisIndex: 1,
+ label: {
+ show: false,
+ position: 'top',
+ color: '#fff',
+ // formatter: '{c}' + '%',
},
data: dataList5.value.map(i => i.stockRataNum)
}
@@ -1128,6 +1668,25 @@
console.log('res', res)
dataList5.value = res.data || []
initEchart5()
+ initEchart6()
+ initEchart7()
+ })
+}
+
+const autoplayFlag = (list = [], leng = 4, time = 2000) => {
+ if (list.length > leng) {
+ return { delay: time, disableOnInteraction: false }
+ } else {
+ return false
+ }
+}
+const loopFn1 = () => {
+ var newSwiper1 = new Swiper('.one-swiper', {
+ initialSlide: 0,
+ direction: 'vertical', //绔栫洿鏂瑰悜
+ slidesPerView: 5,
+ autoplay: autoplayFlag(transportTask.value, 5, 4000),
+ observer: true, //淇敼swiper鑷繁鎴栧瓙鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper
})
}
@@ -1147,6 +1706,9 @@
// initEchart3()
// initEchart4()
// initEchart5()
+ setTimeout(() => {
+ loopFn1()
+ }, 12000)
})
@@ -1162,6 +1724,7 @@
color: #D2E0FF;
font-size: 12px;
border: 1px solid #D2E0FF;
+
.icon {
width: 12px;
height: 14px;
@@ -1187,6 +1750,10 @@
<style lang="scss" scoped>
div {
box-sizing: border-box;
+}
+
+.swiper-wrapper {
+ display: block !important;
}
.main_content {
@@ -1314,12 +1881,18 @@
}
.list_wrap {
+ .list {
+ height: 200px;
+ overflow: hidden;
+ }
+
.line {
display: flex;
height: 40px;
align-items: center;
font-size: 14px;
color: #D2E0FF;
+ cursor: pointer;
&:nth-of-type(2n) {
background: rgba(134, 156, 201, 0.05);
@@ -1362,18 +1935,14 @@
font-weight: bold;
font-size: 18px;
position: relative;
- &:hover{
- .select_op{
- display: block;
- }
- }
- background-image: -webkit-linear-gradient(top,
- #ffffff 0%,
- #c8ddff 66%,
- #85b4ff 72%,
- #74a9ff 100%);
+
+ /* background-image: -webkit-linear-gradient(top,
+ #ffffff 0%,
+ #c8ddff 66%,
+ #85b4ff 72%,
+ #74a9ff 100%);
-webkit-background-clip: text;
- -webkit-text-fill-color: transparent;
+ -webkit-text-fill-color: transparent; */
.left {
display: flex;
@@ -1389,6 +1958,7 @@
display: flex;
align-items: center;
cursor: pointer;
+ position: relative;
.posi {
width: 16px;
@@ -1400,19 +1970,22 @@
margin-left: 2px;
}
}
- .select_op{
+
+ .select_op {
position: absolute;
top: 26px;
- right: 0px;
+ right: -10px;
width: 90px;
- z-index: 11;
- display: none;
- background: radial-gradient( 64% 83% at 50% 50%, rgba(19,88,173,0.8) 0%, rgba(5,18,32,0.86) 100%);
- .line{
+ z-index: 1199999;
+ background: radial-gradient(64% 83% at 50% 50%, rgba(19, 88, 173, 0.8) 0%, rgba(5, 18, 32, 0.86) 100%);
+ color: #fff;
+
+ .line {
display: flex;
justify-content: center;
align-items: center;
height: 36px;
+ font-size: 18px;
cursor: pointer;
color: #fff;
}
@@ -1454,17 +2027,24 @@
-webkit-text-fill-color: transparent;
}
+ .blue {
+ background-image: -webkit-linear-gradient(top,
+ #fff 0%,
+ #65a1fa 30%,
+ #3a84f6 100%);
+ }
+
.today {
background-image: -webkit-linear-gradient(top,
#fff 0%,
- #20FFC5 50%,
+ #20FFC5 30%,
#20FFC5 100%);
}
.finish {
background-image: -webkit-linear-gradient(top,
#fff 0%,
- #FFB120 50%,
+ #FFB120 30%,
#FFB120 100%);
}
}
@@ -1479,16 +2059,91 @@
}
.footer {
- font-weight: 500;
- font-size: 16px;
- display: flex;
- align-items: center;
+ .wrap {
+ display: flex;
+ align-items: center;
+ height: 76px;
- .num {
- font-weight: bold;
- font-size: 24px;
- color: #01D9FE;
- margin-left: 8px;
+ .content {
+ flex: 5;
+ height: 16px;
+ background: rgba(255, 255, 255, 0.13);
+ border-radius: 8px;
+ margin-right: 4px;
+ display: flex;
+ position: relative;
+ }
+
+ .box {
+ width: 40%;
+ height: 16px;
+ background: linear-gradient(270deg, #FF9F02 0%, #FFEA70 100%);
+ border-radius: 8px;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 99;
+
+ .tag {
+ position: absolute;
+ bottom: -30px;
+ right: 0;
+ transform: translate(50%, 0);
+ height: 20px;
+ background: #FECE01;
+ color: #000000;
+ padding: 0 6px;
+ border-radius: 12px;
+ display: flex;
+ align-items: center;
+
+ .icon {
+ position: absolute;
+ top: 1px;
+ left: 50%;
+ /* transform: translate(-50%,0); */
+ width: 10px;
+ height: 10px;
+ transform: rotate(45deg) translate(-50%, 0);
+ background: #FECE01;
+ z-index: -1;
+ }
+ }
+
+ .tag1 {
+ background-color: #28F0CC;
+
+ .icon {
+ background-color: #28F0CC;
+ }
+ }
+ }
+
+ .box1 {
+ width: 70%;
+ z-index: 9;
+ background: linear-gradient(270deg, #15FDC8 0%, #006BFF 100%);
+ }
+
+ .scale {
+ position: absolute;
+ top: -24px;
+ left: 0;
+ font-size: 16px;
+ color: #D2E0FF;
+ }
+
+ .scale1 {
+ left: 84%;
+ }
+
+ .side {
+ flex: 2;
+ height: 16px;
+ background: rgba(255, 255, 255, 0.13);
+ border-radius: 8px;
+ position: relative;
+ }
}
}
}
@@ -1496,12 +2151,42 @@
.center_box_two {
width: 100%;
flex: 1;
+ position: relative;
- /* border: 1px solid; */
.echart_map {
width: 100%;
height: 100%;
/* transform: scale(.2); */
+ }
+
+ .list {
+ position: absolute;
+ left: 24px;
+ bottom: 10px;
+
+ .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;
+ }
+
+ }
}
}
}
@@ -1509,129 +2194,15 @@
.right_box {
width: 440px;
- .right_box_one {
- margin-top: 20px;
- padding: 0px 10px 30px 20px;
- border: 1px solid;
-
- .content_wrap {
- display: flex;
- justify-content: space-between;
-
- .num_wrap {
- width: 280px;
-
- .num_list {
- display: flex;
- margin-bottom: 20px;
-
- .num {
- width: 30px;
- height: 46px;
- display: flex;
- justify-content: center;
- align-items: center;
- position: relative;
- font-weight: 600;
- font-size: 32px;
- margin-right: 5px;
- }
- }
-
- .content {
- display: flex;
- color: #D2E0FF;
-
- .la {
- color: #869CC9;
- }
-
- .unit_wrap {
- display: flex;
- align-items: center;
- }
-
- .icon {
- width: 10px;
- height: 12px;
- margin-right: 6px;
- margin-left: 4px;
- }
- }
- }
-
- .static_wrap {
- flex: 1;
-
- .echart_wrap {
- width: 54px;
- height: 54px;
- position: relative;
- margin-bottom: 12px;
-
- .echart3 {
- width: 54px;
- height: 54px;
- }
-
- .pie_text {
- width: 38px;
- height: 38px;
- border: 1px dashed rgba(210, 224, 255, 0.48);
- border-radius: 50%;
- position: absolute;
-
- left: 50%;
- top: 50%;
- transform: translate(-50%, -50%);
- z-index: 999;
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- font-size: 12px;
-
- .fs30 {
- font-weight: 600;
- font-size: 14px;
- color: #28F0C4;
- }
- }
-
- }
-
- .text {
- font-size: 13px;
- color: #869CC9;
- }
- }
- }
- }
-
- .right_box_two {
- border: 1px solid;
- padding: 10px 15px;
-
- .echart4_wrap {
- width: 410px;
- height: 216px;
-
- .echart4 {
- width: 410px;
- height: 216px;
- }
- }
- }
-
.right_box_three {
- border: 1px solid;
+ margin-top: 20px;
.echart5_wrap {
- height: 240px;
+ height: 192px;
width: 410px;
.echart5 {
- height: 240px;
+ height: 192px;
width: 410px;
}
}
@@ -1742,6 +2313,198 @@
}
}
+.modal_wrap {
+ width: 600px;
+ height: 556px;
+ background: rgba(0, 30, 63, 0.5);
+ border: 1px solid #c6eef7;
+ backdrop-filter: blur(5px);
+ position: fixed;
+ top: 20%;
+ left: 50%;
+ transform: translate(-50%, 0);
+ z-index: 999;
+ padding: 24px;
+
+ .title_head {
+ display: flex;
+ align-items: center;
+ font-weight: bold;
+ font-size: 17px;
+ margin-bottom: 20px;
+
+ img {
+ width: 20px;
+ margin-right: 4px;
+ }
+ }
+
+ .info {
+ display: flex;
+ flex-wrap: wrap;
+
+ .item {
+ display: flex;
+ align-items: center;
+ font-size: 13px;
+ width: 55%;
+ margin-bottom: 8px;
+
+ &:nth-of-type(2n+1) {
+ width: 45%;
+ }
+
+ .dian {
+ width: 4px;
+ height: 4px;
+ background-color: #fff;
+ border-radius: 50%;
+ margin-right: 4px;
+ }
+
+ .la {
+ color: #01D9FE;
+ }
+ }
+ }
+
+ .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 {
+ display: flex;
+ align-items: center;
+ font-style: 16px;
+ font-weight: 600;
+ margin-bottom: 20px;
+
+ img {
+ width: 24px;
+ margin-right: 4px;
+ }
+ }
+
+ .item {
+ display: flex;
+ margin-left: 6px;
+
+ &:nth-last-child(1) {
+ .content {
+ .time {
+ padding-bottom: 0;
+ }
+ }
+ }
+
+ .icon_wrap {
+ width: 24px;
+ margin-right: 10px;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+
+ .dian {
+ width: 12px;
+ height: 12px;
+ }
+
+ .dian_ac {
+ width: 24px;
+ height: 24px;
+ }
+
+ .line {
+ width: 1px;
+ height: 100%;
+ border: 1px dashed #8a9bc5;
+ }
+ }
+
+ .content {
+ font-size: 13px;
+ color: #D2E0FF;
+
+ .status {
+ font-weight: 500;
+ font-size: 14px;
+ margin-bottom: 5px;
+ color: #fff;
+ }
+
+ .text {
+ margin-bottom: 4px;
+ }
+
+ .time {
+ font-size: 12px;
+ padding-bottom: 12px;
+ }
+ }
+ }
+ }
+
+}
+
+.modal_mask {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ z-index: 99;
+ background-color: rgba(0, 0, 0, 0.1);
+ /* background-color: red; */
+}
+
.second_title {
height: 24px;
display: flex;
@@ -1803,6 +2566,28 @@
}
}
+ .side {
+ font-size: 14px;
+ color: #D2E0FF;
+
+ span {
+ font-size: 16px;
+ font-weight: 600;
+ color: #3981ea;
+ background-image: -webkit-linear-gradient(top,
+ #fff 0%,
+ #65a5ff 30%,
+ #2c66b9 100%);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+
+ .unit {
+ font-weight: 400;
+ font-size: 12px;
+ }
+ }
+ }
+
.tabs {
display: flex;
align-items: center;
--
Gitblit v1.9.3