From 6bd673610b45c8b7af056d296dde17585c886586 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 28 十月 2024 17:26:30 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
screen/src/views/LogisticsCenter.vue | 1696 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 1,696 insertions(+), 0 deletions(-)
diff --git a/screen/src/views/LogisticsCenter.vue b/screen/src/views/LogisticsCenter.vue
new file mode 100644
index 0000000..a1c768e
--- /dev/null
+++ b/screen/src/views/LogisticsCenter.vue
@@ -0,0 +1,1696 @@
+<template>
+ <v-scale-screen width="1920" height="960">
+ <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>
+ <div class="time_wrap">
+ <span class="date">{{ date }}</span>
+ <span class="week">{{ week }}</span>
+ <span class="time">{{ time }}</span>
+ </div>
+ </div>
+ <div class="main_content">
+ <div class="left_box">
+ <div class="com_header">
+ <div class="title">
+ <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
+ <div>璁㈠崟鍦ㄩ�旇窡韪�</div>
+ </div>
+ <img src="@/assets/images/title@2x.png" class="bg" alt="" />
+ </div>
+ <div class="left_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">
+ <div class="num" v-for="i in '200000'">
+ {{ 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>10.2%</span>
+ <span class="la" style="margin-left: 30px;margin-right: 10px;">绱鍑哄簱杞︽</span>
+ <span>3900</span>
+ </div>
+
+ </div>
+ </div>
+ <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 :style="{ background: colors[i] }" class="icon"></div>
+ <div class="text">{{ item.name }}</div>
+ <div class="num">{{ item.value }}</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="left_box_two">
+ <div class="second_title">
+ <div class="title">
+ <img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" />
+ <div>杩�7鏃ュ埌璐ф儏鍐�</div>
+ </div>
+ </div>
+ <div class="energy_wrap">
+ <div class="energyRef"></div>
+ </div>
+ </div>
+ <div class="left_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="search_wrap">
+ <img src="@/assets/images/LogisticsCenter/ic_search@2x.png" alt="">
+ <span>璁㈠崟鏌ヨ</span>
+ </div>
+ </div>
+ <div class="list_wrap">
+ <div class="header line">
+ <span class="item">杩愯緭杞﹁締</span>
+ <span class="item">鐘舵��</span>
+ <span class="item">浣嶇疆</span>
+ <span class="item">浠诲姟涓嬭揪鏃堕棿</span>
+ </div>
+ <div class="line" v-for="i in 5">
+ <span class="item">鐨朅23bbb</span>
+ <span class="item">11</span>
+ <span class="item">11</span>
+ <span class="item">11</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="center_box">
+ <div class="center_box_one">
+ <div class="header_wrap">
+ <div class="left">
+ <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
+ <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>
+ <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="num"><span>1000</span>涓囨敮</div>
+ <div class="unit">杞︽锛�10</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"><span class="today">1000</span>涓囨敮</div>
+ <div class="unit">杞︽锛�10</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="finish">1000</span>涓囨敮</div>
+ <div class="unit">杞︽锛�10</div>
+ </div>
+ </div>
+ </div>
+ <div class="footer">
+ <span>鍗犲嚭搴撹兘鍔�</span>
+ <span class="num">80%</span>
+ </div>
+ </div>
+ <div class="center_box_two">
+ <div class="echart_map" ref="mapEchart" id="echart_map"></div>
+ </div>
+ </div>
+ <div class="right_box">
+ <div class="com_header">
+ <div class="title">
+ <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
+ <div>浠撳偍涓�搴撳埗</div>
+ </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">
+ <div class="num" v-for="i in '200000'">
+ {{ 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>10.2%</span>
+ <span class="la" style="margin-left: 30px;margin-right: 10px;">绱鍑哄簱杞︽</span>
+ <span>3900</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">30%</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="tab active">7澶�</div>
+ <div class="separate"></div>
+ <div class="tab">30澶�</div>
+ <div class="separate"></div>
+ <div class="tab">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>
+ <div class="echart5_wrap">
+ <div class="echart5" id="echart5"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </v-scale-screen>
+</template>
+
+<script setup>
+import { ref, onMounted, nextTick } from 'vue'
+import VScaleScreen from 'v-scale-screen'
+import Percent from '@/components/percent.vue'
+import dayjs from 'dayjs'
+import * as echarts from 'echarts'
+import chinaJSON from '@/assets/china.json'
+
+const weekMap = ['鏄熸湡鏃�', '鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�',]
+const date = ref(dayjs().format('YYYY.MM.DD'))
+const week = ref(weekMap[new Date().getDay()])
+const time = ref(dayjs().format('HH:mm:ss'))
+setInterval(() => {
+ date.value = dayjs().format('YYYY-MM-DD')
+ week.value = weekMap[new Date().getDay()]
+ time.value = dayjs().format('HH:mm:ss')
+
+}, 1000)
+
+const colors = ['#0193FE', '#FFB642']
+const StockOutData = ref([])
+const getStockOut = () => {
+ let arr = []
+ arr.push({ name: '鐪佸唴', value: 20 })
+ arr.push({ name: '鐪佸', value: 30 })
+ arr.sort((a, b) => b.value - a.value)
+ StockOutData.value = arr
+
+ initEchart1()
+}
+const initEchart1 = () => {
+ const myChart = echarts.init(document.getElementById('echart1'))
+ const option = {
+ tooltip: {
+ trigger: 'item'
+ },
+ series: [
+ {
+ type: 'pie',
+ radius: ['72%', '96%'],
+ label: {
+ show: false,
+ position: 'center'
+ },
+ color: colors,
+ labelLine: {
+ show: false
+ },
+ data: StockOutData.value
+ }
+ ]
+ }
+ myChart.setOption(option)
+ window.addEventListener('resize', function () { // 鎵ц
+ myChart.resize()
+ })
+}
+const initEchart2 = () => {
+ const myChart = echarts.init(document.getElementById('echart1'))
+ const option = {
+ series: [
+ {
+ type: 'pie',
+ radius: ['86%', '100%'],
+ label: {
+ show: false,
+ position: 'center'
+ },
+ padAngle: 5,
+ itemStyle: {
+ borderRadius: 10
+ },
+ color: colors,
+ labelLine: {
+ show: false
+ },
+ data: [
+ { value: 1048, name: 'Search Engine' },
+ { value: 735, name: 'Direct' },
+ { value: 580, name: 'Email' }
+ ]
+ }
+ ]
+ }
+ myChart.setOption(option)
+ window.addEventListener('resize', function () { // 鎵ц
+ myChart.resize()
+ })
+}
+const initEchart3 = () => {
+ const myChart = echarts.init(document.getElementById('echart3'))
+ const option = {
+ tooltip: {
+ trigger: 'item'
+ },
+ series: [
+ {
+ type: 'pie',
+ radius: ['80%', '96%'],
+ label: {
+ show: false,
+ position: 'center'
+ },
+ color: ['#72ecc5', '#19373a'],
+ labelLine: {
+ show: false
+ },
+ data: StockOutData.value
+ }
+ ]
+ }
+ myChart.setOption(option)
+ window.addEventListener('resize', function () { // 鎵ц
+ myChart.resize()
+ })
+}
+const initEchart4 = () => {
+ // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥
+ const myChart = echarts.init(document.getElementById('echart4'))
+ // 缁樺埗鍥捐〃
+ myChart.setOption({
+ tooltip: {
+ trigger: 'axis',
+ axisPointer: {
+ type: 'line'
+ },
+ formatter: function (params) {
+ setTimeout(() => {
+ console.log('params', params)
+ })
+ 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: [1, 2, 3, 4, 5, 5]
+ },
+ 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: [10, 2, 30, 4, 4, 30].map(i => {
+ return {
+ name: i,
+ value: i,
+ }
+ }),
+ 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: 6,
+ itemStyle: {
+ color: "#4190f4",
+ borderColor: "rgba(255,255,255,.3)",
+ borderWidth: 6,
+ },
+ smooth: true
+ },
+ {
+ name: '鎬诲嚭搴撻噺',
+ data: [30, 2, 10, 4, 4, 20].map(i => {
+ return {
+ name: i,
+ value: i,
+ }
+ }),
+ 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: 6,
+ itemStyle: {
+ color: "#F3BD00",
+ borderColor: "rgba(255,255,255,.3)",
+ borderWidth: 6,
+ },
+ smooth: true
+ }
+ ]
+ })
+
+ window.addEventListener('resize', function () {//鎵ц
+ myChart.resize()
+ })
+}
+const initEchart5 = () => {
+ // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥
+ const myChart = echarts.init(document.getElementById('echart5'))
+ // 缁樺埗鍥捐〃
+ myChart.setOption({
+ legend: {
+ itemGap: 12,
+ // icon: 'circle',
+ right: '12px',
+ top: '0',
+ data: ['鎬诲簱瀛�', '褰撳墠搴撳瓨', '搴撳瓨鍒╃敤鐜�'],
+ itemWidth: 20,
+ itemHeight: 10,
+ textStyle: {
+ color: '#fff',
+ borderColor: '#fff'
+ },
+ },
+ grid: {
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ top: '16%',
+ 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: ['鍚堣偉', '婊佸窞', '鑺滄箹', '铓屽煚', '闃滈槼'],
+ }],
+ yAxis: [
+ {
+ nameTextStyle: {
+ color: '#869CC9',
+ },
+ offset: 0,
+ name: '涓囨敮',
+ 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: '%',
+ min: 0,
+ max: 100,
+ // interval: 5,
+ axisLabel: {
+ formatter: '{value}%'
+ },
+ splitLine: false
+ }
+ ],
+ series: [
+ {
+ name: '鎬诲簱瀛�',
+ type: 'bar',
+ barWidth: 8,
+ barGap: '60%',
+ label: {
+ show: false,
+ position: 'top',
+ color: '#fff',
+ },
+ itemStyle: {
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+ {
+ offset: 0,
+ color: '#5bc7d5'
+ },
+ {
+ offset: 1,
+ color: '#1a3f55'
+ }
+ ], false),
+ lineStyle: {
+ width: 1,
+ type: 'solid'
+ },
+ barBorderRadius: [30, 30, 0, 0],
+ },
+ data: [900, 438, 485, 631, 689]
+ },
+ {
+ name: '褰撳墠搴撳瓨',
+ type: 'bar',
+ barWidth: 8,
+ label: {
+ show: false,
+ position: 'top',
+ color: '#fff',
+ },
+ itemStyle: {
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+ {
+ offset: 0,
+ color: '#edaf3d'
+ },
+ {
+ offset: 1,
+ color: '#323522'
+ }
+ ], false),
+ lineStyle: {
+ width: 1,
+ type: 'solid'
+ },
+ barBorderRadius: [30, 30, 0, 0],
+ },
+ data: [438, 485, 631, 689, 900]
+ },
+ {
+ name: '搴撳瓨鍒╃敤鐜�',
+ type: 'line',
+ smooth: true,
+ showAllSymbol: true,
+ symbol: 'none',
+ lineStyle: {
+ color: "#3d87e5"
+ },
+ label: {
+ show: false,
+ position: 'top',
+ color: '#fff',
+ },
+ data: [485, 631, 389, 224, 287]
+ }
+ ]
+ })
+
+ window.addEventListener('resize', function () {//鎵ц
+ myChart.resize()
+ })
+}
+
+const mapEchart = ref()
+const initMap = () => {
+ var myChart = echarts.init(mapEchart.value)
+ echarts.registerMap('china', chinaJSON)
+ var points = [
+ // 鐐瑰潗鏍�
+ { value: [110.81, 33.40], itemStyle: { color: '#c1bb1f' }, name: '11', 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: '22', total: 5, bj: 0, yj: 0, yx: 5, tj: 0, dw: 0 },
+ { value: [106.44, 29.50], itemStyle: { color: '#3eef1d' }, name: '33', total: 10, bj: 0, yj: 0, yx: 10, tj: 0, dw: 0 },
+ { value: [112.85, 38.95], itemStyle: { color: '#3eef1d' }, name: '44', total: 8, bj: 0, yj: 0, yx: 8, tj: 0, dw: 0 },
+ { value: [82.78, 43.27], itemStyle: { color: '#3eef1d' }, name: '55', 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' } }
+ ]
+ const option = {
+ backgroundColor: 'transparent', // 璁剧疆鑳屾櫙鑹查�忔槑
+ // 蹇呴』璁剧疆
+ tooltip: {
+ show: false
+ },
+ // 鍦板浘闃村奖閰嶇疆
+ geo: {
+ map: 'china',
+ // 杩欓噷蹇呴』瀹氫箟锛屼笉鐒跺悗闈eries閲岄潰涓嶇敓鏁�
+ tooltip: {
+ show: false
+ },
+ label: {
+ show: false
+ },
+ zoom: 1.5,
+ silent: true, // 涓嶅搷搴旈紶鏍囨椂闂�
+ show: true,
+ roam: false, // 鍦板浘缂╂斁鍜屽钩绉�
+ aspectScale: 0.75, // scale 鍦板浘鐨勯暱瀹芥瘮
+ itemStyle: {
+ borderColor: '#2d5f9c',
+ borderWidth: 1,
+ areaColor: '#2d5f9c',
+ shadowColor: 'rgba(1,34,73,0.48)',
+ shadowBlur: 10,
+ shadowOffsetX: -10, //
+ shadowOffsetY: 10
+ },
+ select: {
+ disabled: true
+ },
+ emphasis: {
+ disabled: true,
+ areaColor: '#00F1FF'
+ },
+ // 鍦板浘鍖哄煙鐨勫杈瑰舰 鍥惧舰鏍峰紡 闃村奖鏁堟灉
+ // z鍊煎皬鐨勫浘褰細琚珃鍊煎ぇ鐨勫浘褰㈣鐩�
+ top: '30.2%',
+ left: 'center',
+ // 鍘婚櫎鍗楁捣璇稿矝闃村奖 series map閲岄潰娌℃湁姝ゅ睘鎬�
+ regions: [{
+ name: '鍗楁捣璇稿矝',
+ selected: false,
+ emphasis: {
+ disabled: true
+ },
+ itemStyle: {
+ areaColor: '#00000000',
+ borderColor: '#00000000'
+ }
+ }],
+ z: 1
+ },
+ series: [
+ // 鍦板浘閰嶇疆
+ {
+ type: 'map',
+ map: 'china',
+ zoom: 1.5,
+ 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, // 寮�鍚珮浜�
+ label: {
+ align: 'center',
+ color: '#04CFF5'
+ },
+ itemStyle: {
+ color: '#ffffff',
+ areaColor: '#3c87b2'// 闃村奖鏁堟灉 榧犳爣绉诲姩涓婂幓鐨勯鑹�
+ }
+ },
+ z: 2
+ },
+ // 鐐�
+ {
+ name: 'companyPoint',
+ type: 'effectScatter',
+ coordinateSystem: 'geo',
+ showEffectOn: 'render',
+ // zlevel: 2, // zlevel鐢ㄤ簬 Canvas 鍒嗗眰 鐩稿悓鐨勭粯鍒跺湪鍚屼竴涓猚anvas涓�
+ rippleEffect: {
+ number: 5, // 娉㈢汗鏁伴噺
+ period: 4, // 鍔ㄧ敾鍛ㄦ湡 鏁板�艰秺澶э紝娉㈠姩瓒婃參
+ scale: 3.5, // 鍔ㄧ敾涓尝绾圭殑鏈�澶х缉鏀炬瘮渚�
+ brushType: 'stroke' // 娉㈢汗鐨勭粯鍒舵柟寮� stroke fill
+ },
+ label: {
+ show: false,
+ position: 'right',
+ formatter: '{b}',
+ color: '#97e9e1',
+ fontSize: 14
+ },
+ symbol: 'circle',
+ symbolSize: 8,
+ data: points,
+ tooltip: {
+ show: true,
+ backgroundColor: 'rgba(0,0,0,0)',
+ padding: 0,
+ borderWidth: 0,
+ extraCssText: 'box-shadow: 0 0 0 rgba(0, 0, 0, 0);', // 鍘婚櫎box-shadow闃村奖
+ formatter: (params) => {
+ return `<div class="map-tip-box">
+ <div class="company-name">${params.name}</div>
+ <div class="monitor-total">鐩戞祴鎬绘暟锛�${params.data.total}鍙�</div>
+ <div class="item-state-con">
+ <span class="dot bj"></span>
+ <span class="item-state-num">
+ <span class="num">${params.data.bj}鍙�</span>
+ <span class="text">鎶ヨ</span>
+ </span>
+ </div>
+ <div class="item-state-con">
+ <span class="dot yj"></span>
+ <span class="item-state-num">
+ <span class="num">${params.data.yj}鍙�</span>
+ <span class="text">棰勮</span>
+ </span>
+ </div>
+ <div class="item-state-con">
+ <span class="dot yx"></span>
+ <span class="item-state-num">
+ <span class="num">${params.data.yx}鍙�</span>
+ <span class="text">杩愯</span>
+ </span>
+ </div>
+ <div class="item-state-con">
+ <span class="dot tj"></span>
+ <span class="item-state-num">
+ <span class="num">${params.data.tj}鍙�</span>
+ <span class="text">鍋滄満</span>
+ </span>
+ </div>
+ <div class="item-state-con">
+ <span class="dot dw"></span>
+ <span class="item-state-num">
+ <span class="num">${params.data.dw}鍙�</span>
+ <span class="text">鏂綉</span>
+ </span>
+ </div>
+ </div>`
+ }
+ },
+ z: 4
+ },
+ // 鍦板浘绾跨殑鍔ㄧ敾鏁堟灉
+ {
+ 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 = () => {
+ var myChart = echarts.init(document.querySelector('.energyRef'))
+ // 缁樺埗鍥捐〃
+ myChart.setOption({
+ tooltip: {
+ trigger: 'axis',
+ axisPointer: {
+ // Use axis to trigger tooltip
+ type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow'
+ }
+ },
+ legend: {
+ itemGap: 24,
+ // icon: 'circle',
+ right: '12px',
+ top: '16px',
+ itemWidth: 28,
+ itemHeight: 14,
+ textStyle: {
+ color: '#fff',
+ borderColor: '#fff'
+ },
+ },
+ grid: {
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ top: '15%',
+ containLabel: true
+ },
+ xAxis: {
+ type: 'value',
+ splitLine: {
+ show: true,
+ lineStyle: {
+ //杩欓噷杈撳叆绾挎潯鐨勬牱寮�
+ color: 'rgba(255,255,255,0.14)'
+ },
+ splitNumber: 4
+ }
+ },
+ yAxis: {
+ axisTick: {
+ show: false,
+ },
+ type: 'category',
+ axisLine: {
+ show: false
+ },
+ data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+ },
+ series: [
+ {
+ name: '鍦ㄩ��',
+ type: 'bar',
+ stack: 'total',
+ barWidth: 14,
+ label: {
+ show: true
+ },
+ emphasis: {
+ focus: 'series'
+ },
+ data: [320, 302, 301, 334, 390, 330, 320],
+ itemStyle: {
+ normal: {
+ color: {
+ type: 'linear',
+ x: 0,
+ y: 0,
+ x2: 1,
+ y2: 0,
+ colorStops: [{
+ offset: 0,
+ color: '#204d75'
+ }, {
+ offset: 1,
+ color: '#2f6eae'
+ }]
+ }
+ }
+ },
+ },
+ {
+ name: '鍒拌揣',
+ type: 'bar',
+ barWidth: 14,
+ stack: 'total',
+ label: {
+ show: true
+ },
+ itemStyle: {
+ normal: {
+ color: {
+ type: 'linear',
+ x: 0,
+ y: 0,
+ x2: 1,
+ y2: 0,
+ colorStops: [{
+ offset: 0,
+ color: '#3e8593'
+ }, {
+ offset: 1,
+ color: '#5cc2d2'
+ }]
+ }
+ }
+ },
+ emphasis: {
+ focus: 'series'
+ },
+ data: [120, 132, 101, 134, 90, 230, 210]
+ }
+ ]
+ })
+ window.addEventListener('resize', function () {//鎵ц
+ myChart.resize()
+ })
+}
+
+
+onMounted(() => {
+ initEnergy()
+ initMap()
+ getStockOut()
+ initEchart2()
+ initEchart3()
+ initEchart4()
+ initEchart5()
+})
+
+
+</script>
+
+<style>
+.map-tip-box{
+ background-color: #1f3b57;
+ color: #fff;
+}
+</style>
+<style lang="scss" scoped>
+div {
+ box-sizing: border-box;
+}
+.main_content {
+ display: flex;
+ padding: 20px 25px 0;
+
+ .left_box {
+ width: 440px;
+
+ .left_box_one {
+ margin-top: 20px;
+ padding: 0px 10px 30px 20px;
+ border: 1px solid;
+
+ .content_wrap {
+ display: flex;
+ justify-content: space-between;
+
+ .num_wrap {
+ width: 272px;
+
+ .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;
+ }
+ }
+ }
+
+ .echart_wrap {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ height: 48px;
+
+ .echart1 {
+ width: 46px;
+ height: 46px;
+ margin-right: 8px;
+ }
+
+ .list {
+ flex: 1;
+ font-size: 13px;
+
+ .item {
+ display: flex;
+ align-items: center;
+ margin: 8px 0;
+
+ .icon {
+ width: 10px;
+ height: 10px;
+ border-radius: 50%;
+ margin-right: 4px;
+ background: linear-gradient(270deg, #29aeff 0%, #207ff7 100%);
+ }
+
+ .text {
+ margin-right: 6px;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ .left_box_two {
+ margin-bottom: 20px;
+ position: relative;
+
+ .second_title {
+ position: absolute;
+ top: 14px;
+ left: 20px;
+ }
+
+ .energy_wrap {
+ width: 100%;
+ height: 300px;
+
+ .energyRef {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ }
+
+ .left_box_three {
+ width: 440px;
+ padding: 0 15px;
+ border: 1px solid;
+
+ .second_title {
+ margin-bottom: 10px;
+ }
+
+ .list_wrap {
+ .line {
+ display: flex;
+ height: 40px;
+ align-items: center;
+ font-size: 14px;
+ color: #D2E0FF;
+
+ &:nth-of-type(2n) {
+ background: rgba(134, 156, 201, 0.05);
+ }
+
+ .item {
+ flex: 1;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+ }
+
+ .header {
+ font-weight: 500;
+ color: #01D9FE;
+ }
+ }
+ }
+ }
+
+ .center_box {
+ flex: 1;
+ padding: 0 20px;
+ margin: 0 40px;
+ display: flex;
+ flex-direction: column;
+
+ .center_box_one {
+ background: rgba(255, 255, 255, 0.02);
+ height: 230px;
+ border-top: 2px solid #306ba1;
+ padding-top: 20px;
+
+ .header_wrap {
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 28px;
+ font-weight: bold;
+ font-size: 18px;
+ background-image: -webkit-linear-gradient(top,
+ #ffffff 0%,
+ #c8ddff 66%,
+ #85b4ff 72%,
+ #74a9ff 100%);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+
+ .left {
+ display: flex;
+ align-items: center;
+
+ img {
+ width: 16px;
+ margin-right: 6px;
+ }
+ }
+
+ .right {
+ display: flex;
+ align-items: center;
+ cursor: pointer;
+
+ .posi {
+ width: 16px;
+ margin-right: 8px;
+ }
+
+ .icon {
+ width: 14px;
+ margin-left: 2px;
+ }
+ }
+ }
+
+ .static_wrap {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin: 30px 0 14px;
+
+ .item {
+ display: flex;
+
+ img {
+ width: 68px;
+ height: 71px;
+ margin-right: 15px;
+ }
+
+ .content {
+ font-size: 15px;
+
+ .num {
+ font-size: 12px;
+ color: #D2E0FF;
+
+ span {
+ font-weight: bold;
+ font-size: 30px;
+ margin-right: 5px;
+ font-weight: 600;
+ background-image: -webkit-linear-gradient(top,
+ #01D9FE 0%,
+ #01D9FE 60%,
+ #fff 100%);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ }
+
+ .today {
+ background-image: -webkit-linear-gradient(top,
+ #fff 0%,
+ #20FFC5 50%,
+ #20FFC5 100%);
+ }
+
+ .finish {
+ background-image: -webkit-linear-gradient(top,
+ #fff 0%,
+ #FFB120 50%,
+ #FFB120 100%);
+ }
+ }
+
+ .unit {
+ font-size: 13px;
+ color: #D2E0FF;
+ margin-top: 2px;
+ }
+ }
+ }
+ }
+
+ .footer {
+ font-weight: 500;
+ font-size: 16px;
+ display: flex;
+ align-items: center;
+
+ .num {
+ font-weight: bold;
+ font-size: 24px;
+ color: #01D9FE;
+ margin-left: 8px;
+ }
+ }
+ }
+
+ .center_box_two {
+ width: 100%;
+ flex: 1;
+
+ /* border: 1px solid; */
+ .echart_map {
+ width: 100%;
+ height: 100%;
+ border: 1px solid;
+ /* transform: scale(.2); */
+ }
+ }
+ }
+
+ .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;
+
+ .echart5_wrap {
+ height: 240px;
+ width: 410px;
+
+ .echart5 {
+ height: 240px;
+ width: 410px;
+ }
+ }
+ }
+ }
+}
+
+.main_header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ height: 90px;
+ position: relative;
+ padding: 0px 40px 16px;
+ font-weight: 600;
+ font-size: 36px;
+
+ .title {
+ background-image: -webkit-linear-gradient(top,
+ #ffffff 0%,
+ #c8ddff 70%,
+ #85b4ff 80%,
+ #74a9ff 100%);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ }
+
+ .time_wrap {
+ font-size: 26px;
+ font-weight: 600;
+ background-image: -webkit-linear-gradient(top,
+ #ffffff 0%,
+ #c8ddff 50%,
+ #85b4ff 80%,
+ #74a9ff 100%);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ display: flex;
+ align-items: center;
+
+ .time {
+ width: 130px;
+ display: flex;
+ justify-content: flex-end;
+ font-size: 30px;
+ }
+
+ .week {
+ margin-left: 20px;
+ }
+ }
+
+ .main_header_bg {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ z-index: -1;
+ }
+}
+
+.com_header {
+ height: 40px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 0 15px 0 13px;
+ position: relative;
+
+ .title {
+ display: flex;
+ align-items: center;
+ font-weight: bold;
+ font-size: 18px;
+ background-image: -webkit-linear-gradient(top,
+ #ffffff 0%,
+ #c8ddff 66%,
+ #85b4ff 72%,
+ #74a9ff 100%);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+
+ .icon {
+ width: 16px;
+ height: 16px;
+ margin-right: 14px;
+ }
+ }
+
+ .tabs {
+ display: flex;
+ align-items: center;
+ font-size: 14px;
+ color: #d2e0ff;
+
+ .separate {
+ width: 1px;
+ height: 14px;
+ background-color: #d2e0ff;
+ margin: 0 6px;
+ }
+
+ .active {
+ color: #0094eb;
+ }
+ }
+}
+
+.second_title {
+ height: 24px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ position: relative;
+ font-size: 16px;
+ margin-bottom: 20px;
+
+ .title {
+ display: flex;
+ align-items: center;
+ font-weight: 500;
+ font-size: 16px;
+ color: #FFFFFF;
+
+ .icon {
+ width: 16px;
+ height: 16px;
+ margin-right: 10px;
+ }
+ }
+
+ .num_wrap {
+ font-weight: 400;
+ font-size: 14px;
+ color: #D2E0FF;
+ display: flex;
+ align-items: center;
+
+ .val {
+ font-weight: bold;
+ font-size: 16px;
+ color: #FFFFFF;
+ }
+ }
+
+ .search_wrap {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 14px;
+ color: #869CC9;
+ width: 96px;
+ height: 28px;
+ border-radius: 14px;
+ border: 1px solid #869CC9;
+
+ img {
+ width: 14px;
+ height: 14px;
+ margin-right: 3px;
+ }
+ }
+
+ .tabs {
+ display: flex;
+ align-items: center;
+ font-size: 14px;
+ color: #d2e0ff;
+
+ .separate {
+ width: 1px;
+ height: 14px;
+ background-color: #d2e0ff;
+ margin: 0 6px;
+ }
+
+ .active {
+ color: #0094eb;
+ }
+ }
+}
+
+.main_app {
+ width: 1920px;
+ height: 960px;
+ /* width: 100%;
+ height: 100vh; */
+ background: #0b2539;
+ color: #FFFFFF;
+ position: relative;
+ z-index: -2;
+ font-size: 14px;
+
+ .main_bg {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ z-index: -1;
+ }
+}
+
+.bg {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ z-index: -1;
+}
+</style>
\ No newline at end of file
--
Gitblit v1.9.3