feat:完善功能
This commit is contained in:
@@ -1,5 +1,4 @@
|
|||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import qs from 'qs'
|
|
||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
|
|
||||||
|
|||||||
BIN
src/assets/images/arrow-down-1.png
Normal file
BIN
src/assets/images/arrow-down-1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 474 B |
@@ -49,8 +49,7 @@
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.box-4-content {
|
.box-4-content {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-top: vh(10);
|
margin: vh(10);
|
||||||
margin-left: vw(10);
|
|
||||||
width: vw(300);
|
width: vw(300);
|
||||||
height: vh(1060);
|
height: vh(1060);
|
||||||
background-image: url('@/assets/images/bg-1.png');
|
background-image: url('@/assets/images/bg-1.png');
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<li
|
<li
|
||||||
class="nav-left-item"
|
class="nav-left-item"
|
||||||
:style="{
|
:style="{
|
||||||
backgroundImage: `url(${current == index && !isSkip ? title2Select : title2})`
|
backgroundImage: `url(${current === index && !isSkip ? title2Select : title2})`
|
||||||
}"
|
}"
|
||||||
v-for="(item, index) in navLeft"
|
v-for="(item, index) in navLeft"
|
||||||
:key="index"
|
:key="index"
|
||||||
@@ -12,6 +12,24 @@
|
|||||||
>
|
>
|
||||||
{{ item.name }}
|
{{ item.name }}
|
||||||
</li>
|
</li>
|
||||||
|
<el-dropdown v-if="navLeft.length > 3" trigger="click" @command="handleCommand">
|
||||||
|
<li
|
||||||
|
class="nav-left-item"
|
||||||
|
:style="{
|
||||||
|
backgroundImage: `url(${title2})`
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
{{ otherScenic || '其他景区' }}
|
||||||
|
<img class="icon" src="@/assets/images/arrow-down-1.png" />
|
||||||
|
</li>
|
||||||
|
<template #dropdown>
|
||||||
|
<el-dropdown-menu>
|
||||||
|
<el-dropdown-item v-for="(item, index) in navLeft" :key="index" :command="item">
|
||||||
|
<span class="label"> {{ item.name }}</span>
|
||||||
|
</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</template>
|
||||||
|
</el-dropdown>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
@@ -44,8 +62,8 @@
|
|||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
import title2 from '@/assets/images/title-2.png'
|
import title2 from '@/assets/images/title-2.png'
|
||||||
import title2Select from '@/assets/images/title-2-select.png'
|
import title2Select from '@/assets/images/title-2-select.png'
|
||||||
|
|
||||||
import { getWeatherApi } from '@/api/home'
|
import { getWeatherApi } from '@/api/home'
|
||||||
|
import { getSpotApi } from '@/api/sentiment'
|
||||||
|
|
||||||
const emit = defineEmits(['change'])
|
const emit = defineEmits(['change'])
|
||||||
|
|
||||||
@@ -59,6 +77,7 @@
|
|||||||
let isSkip = ref(true)
|
let isSkip = ref(true)
|
||||||
let isBack = ref(false)
|
let isBack = ref(false)
|
||||||
let current = ref(0)
|
let current = ref(0)
|
||||||
|
let otherScenic = ref('')
|
||||||
|
|
||||||
// 补零
|
// 补零
|
||||||
const fillZero = (value) => {
|
const fillZero = (value) => {
|
||||||
@@ -79,31 +98,37 @@
|
|||||||
minute
|
minute
|
||||||
)}:${fillZero(second)}`
|
)}:${fillZero(second)}`
|
||||||
}
|
}
|
||||||
|
const handleCommand = (e) => {
|
||||||
|
console.log(e, '=========')
|
||||||
|
title.value = e.name
|
||||||
|
otherScenic.value = e.name
|
||||||
|
current.value = ''
|
||||||
|
}
|
||||||
// 返回上一页
|
// 返回上一页
|
||||||
const handleBack = () => {
|
const handleBack = () => {
|
||||||
router.go(-1)
|
router.go(-1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 点击导航
|
// 点击导航
|
||||||
const handleNav = (item, index) => {
|
const handleNav = (item, index) => {
|
||||||
if (isSkip.value) {
|
if (isSkip.value) {
|
||||||
router.push(item.path)
|
router.push(item.path)
|
||||||
} else {
|
} else {
|
||||||
emit('on-change', index)
|
if (current.value === index) return
|
||||||
|
otherScenic.value = ''
|
||||||
|
current.value = index
|
||||||
|
title.value = item.name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取天气数据
|
// 获取天气数据
|
||||||
const getWeather = async () => {
|
const getWeather = async () => {
|
||||||
let res = await getWeatherApi()
|
let res = await getWeatherApi()
|
||||||
weatherData.value = res.data
|
weatherData.value = res.data
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置当前路由导航栏
|
// 设置当前路由导航栏
|
||||||
const setNav = () => {
|
const setNav = async () => {
|
||||||
switch (router.currentRoute.value.path) {
|
switch (router.currentRoute.value.path) {
|
||||||
case '/home':
|
case '/home':
|
||||||
|
isSkip.value = true
|
||||||
title.value = '奉节县旅游指挥调度中心'
|
title.value = '奉节县旅游指挥调度中心'
|
||||||
navLeft.value = [
|
navLeft.value = [
|
||||||
{ name: '安全', path: '/monitor' },
|
{ name: '安全', path: '/monitor' },
|
||||||
@@ -118,10 +143,17 @@
|
|||||||
]
|
]
|
||||||
break
|
break
|
||||||
case '/scenic':
|
case '/scenic':
|
||||||
title.value = '景区'
|
isSkip.value = false
|
||||||
navLeft.value = []
|
|
||||||
navRight.value = []
|
|
||||||
isBack.value = true
|
isBack.value = true
|
||||||
|
let res = await getSpotApi()
|
||||||
|
navLeft.value = res.data.map((item) => {
|
||||||
|
return {
|
||||||
|
name: item.ssname,
|
||||||
|
id: item.id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
title.value = navLeft.value[current.value].name
|
||||||
|
navRight.value = []
|
||||||
break
|
break
|
||||||
case '/sentiment':
|
case '/sentiment':
|
||||||
title.value = '舆情检测'
|
title.value = '舆情检测'
|
||||||
@@ -249,6 +281,7 @@
|
|||||||
font-size: vw(48);
|
font-size: vw(48);
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
color: transparent;
|
color: transparent;
|
||||||
|
letter-spacing: vw(10);
|
||||||
-webkit-background-clip: text;
|
-webkit-background-clip: text;
|
||||||
background-clip: text;
|
background-clip: text;
|
||||||
-webkit-text-fill-color: transparent;
|
-webkit-text-fill-color: transparent;
|
||||||
@@ -271,6 +304,10 @@
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
color: rgba(208, 236, 255, 0.9);
|
color: rgba(208, 236, 255, 0.9);
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
|
.icon {
|
||||||
|
width: vw(18);
|
||||||
|
height: vw(18);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.nav-right {
|
.nav-right {
|
||||||
|
|||||||
@@ -97,7 +97,7 @@
|
|||||||
<countup class="value" :end-val="500" />
|
<countup class="value" :end-val="500" />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="label">车库总数</div>
|
<div class="label">总车位数</div>
|
||||||
<countup class="value" :end-val="500" />
|
<countup class="value" :end-val="500" />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -344,7 +344,7 @@
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: vw(20);
|
right: vw(20);
|
||||||
bottom: vh(20);
|
bottom: vw(20);
|
||||||
width: vw(50);
|
width: vw(50);
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
}
|
}
|
||||||
@@ -375,7 +375,7 @@
|
|||||||
}
|
}
|
||||||
.icon {
|
.icon {
|
||||||
width: vw(26);
|
width: vw(26);
|
||||||
height: vh(28);
|
height: vw(28);
|
||||||
margin-right: vw(4);
|
margin-right: vw(4);
|
||||||
}
|
}
|
||||||
.text {
|
.text {
|
||||||
|
|||||||
@@ -2,28 +2,28 @@
|
|||||||
<div class="traffic-box-1">
|
<div class="traffic-box-1">
|
||||||
<div class="title-num">
|
<div class="title-num">
|
||||||
<div class="item-box">
|
<div class="item-box">
|
||||||
<div class="item-t flex">
|
<div class="item-t flex"> <img src="@/assets/images/t-icon-1.png" alt="" />总路段 </div>
|
||||||
<img src="@/assets/images/t-icon-1.png" alt="">总路段
|
<div class="item-num"
|
||||||
|
><span><countup endVal="88895" /> </span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-num"><span><countup endVal="88895" /></span> </div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="item-box">
|
<div class="item-box">
|
||||||
<div class="item-t flex">
|
<div class="item-t flex"> <img src="@/assets/images/t-icon-1.png" alt="" />总路段 </div>
|
||||||
<img src="@/assets/images/t-icon-1.png" alt="">总路段
|
<div class="item-num"
|
||||||
|
><span><countup endVal="88895" /> </span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-num"><span><countup endVal="88895" /></span></div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="item-box">
|
<div class="item-box">
|
||||||
<div class="item-t flex">
|
<div class="item-t flex"> <img src="@/assets/images/t-icon-1.png" alt="" />总路段 </div>
|
||||||
<img src="@/assets/images/t-icon-1.png" alt="">总路段
|
<div class="item-num"
|
||||||
|
><span><countup endVal="88895" /></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-num"><span><countup endVal="88895" /></span></div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="item-box">
|
<div class="item-box">
|
||||||
<div class="item-t flex">
|
<div class="item-t flex"> <img src="@/assets/images/t-icon-1.png" alt="" />总路段 </div>
|
||||||
<img src="@/assets/images/t-icon-1.png" alt="">总路段
|
<div class="item-num"
|
||||||
|
><span><countup endVal="88895" /></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-num"><span><countup endVal="88895" /></span></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="list-item">
|
<div class="list-item">
|
||||||
@@ -33,7 +33,6 @@
|
|||||||
<v-chart class="chart" :option="option1" autoresize />
|
<v-chart class="chart" :option="option1" autoresize />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -43,10 +42,10 @@
|
|||||||
import * as echarts from 'echarts'
|
import * as echarts from 'echarts'
|
||||||
import { fitChartSize } from '@/utils/dataUtil'
|
import { fitChartSize } from '@/utils/dataUtil'
|
||||||
import Map from '@/components/Map/marker.vue'
|
import Map from '@/components/Map/marker.vue'
|
||||||
import VChart, { THEME_KEY } from 'vue-echarts';
|
import VChart, { THEME_KEY } from 'vue-echarts'
|
||||||
import { ref, provide } from 'vue';
|
import { ref, provide } from 'vue'
|
||||||
|
|
||||||
provide(THEME_KEY, 'dark');
|
provide(THEME_KEY, 'dark')
|
||||||
const option1 = ref({
|
const option1 = ref({
|
||||||
backgroundColor: 'transparent',
|
backgroundColor: 'transparent',
|
||||||
tooltip: {
|
tooltip: {
|
||||||
@@ -65,7 +64,7 @@
|
|||||||
show: true,
|
show: true,
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
borderColor: '#fff',
|
borderColor: '#fff',
|
||||||
width:5,
|
width: 5
|
||||||
},
|
},
|
||||||
textStyle: {
|
textStyle: {
|
||||||
color: '#fff',
|
color: '#fff',
|
||||||
@@ -76,29 +75,29 @@
|
|||||||
width: '100%',
|
width: '100%',
|
||||||
borderWidth: 0.5,
|
borderWidth: 0.5,
|
||||||
height: 5,
|
height: 5,
|
||||||
backgroundColor: '1',
|
backgroundColor: '1'
|
||||||
},
|
},
|
||||||
a: {
|
a: {
|
||||||
width: fitChartSize(75),
|
width: fitChartSize(75),
|
||||||
align: 'left',
|
align: 'left',
|
||||||
fontSize:fitChartSize(16),
|
fontSize: fitChartSize(16)
|
||||||
// backgroundColor:'1'
|
// backgroundColor:'1'
|
||||||
// color:'1',
|
// color:'1',
|
||||||
// borderColor:'#eee',
|
// borderColor:'#eee',
|
||||||
// borderWidth:2
|
// borderWidth:2
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
formatter: (e) => {
|
formatter: (e) => {
|
||||||
let ratio = 0
|
let ratio = 0
|
||||||
let value = 0
|
let value = 0
|
||||||
if (option1.value.series[0].data.length > 0) {
|
if (option1.value.series[0].data.length > 0) {
|
||||||
option1.value.series[0].data.forEach(item => {
|
option1.value.series[0].data.forEach((item) => {
|
||||||
if (e == item.name) {
|
if (e == item.name) {
|
||||||
ratio = (item.value*100/3799).toFixed(0)
|
ratio = ((item.value * 100) / 3799).toFixed(0)
|
||||||
value = item.value
|
value = item.value
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
// return `${e} ${ratio}%
|
// return `${e} ${ratio}%
|
||||||
let arr = ['{a|' + e + '}', '{b|' + ratio + '%}']
|
let arr = ['{a|' + e + '}', '{b|' + ratio + '%}']
|
||||||
@@ -106,7 +105,6 @@
|
|||||||
},
|
},
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
// color:'#fff'
|
// color:'#fff'
|
||||||
|
|
||||||
},
|
},
|
||||||
backgroundColor: 'rgba(0,77,136,0.6)'
|
backgroundColor: 'rgba(0,77,136,0.6)'
|
||||||
},
|
},
|
||||||
@@ -129,7 +127,7 @@
|
|||||||
label: {
|
label: {
|
||||||
show: false,
|
show: false,
|
||||||
position: 'center',
|
position: 'center',
|
||||||
fontWeight: 'bold',
|
fontWeight: 'bold'
|
||||||
// formatter: function (o) {
|
// formatter: function (o) {
|
||||||
// let data = o.data.value
|
// let data = o.data.value
|
||||||
// return `{value|${data}}` + '\n' + `{name|整改率}`
|
// return `{value|${data}}` + '\n' + `{name|整改率}`
|
||||||
@@ -183,19 +181,18 @@
|
|||||||
{ value: 135, name: '异常状况4' },
|
{ value: 135, name: '异常状况4' },
|
||||||
{ value: 100, name: '异常状况5' },
|
{ value: 100, name: '异常状况5' },
|
||||||
{ value: 777, name: '异常状况6' },
|
{ value: 777, name: '异常状况6' },
|
||||||
{ value: 888, name: '其他' },
|
{ value: 888, name: '其他' }
|
||||||
]
|
]
|
||||||
|
}
|
||||||
},
|
]
|
||||||
],
|
})
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.traffic-box-1 {
|
.traffic-box-1 {
|
||||||
width: vw(815);
|
width: vw(815);
|
||||||
height: vh(975);
|
height: vh(975);
|
||||||
background: linear-gradient( 321deg, #0B2F64 0%, #062B57 100%);
|
background: linear-gradient(321deg, #0b2f64 0%, #062b57 100%);
|
||||||
border-radius: 0px 0px 0px 0px;
|
border-radius: 0px 0px 0px 0px;
|
||||||
margin-top: vh(100);
|
margin-top: vh(100);
|
||||||
position: relative;
|
position: relative;
|
||||||
@@ -208,10 +205,9 @@
|
|||||||
.item-li {
|
.item-li {
|
||||||
width: vw(388);
|
width: vw(388);
|
||||||
height: vh(420);
|
height: vh(420);
|
||||||
background: radial-gradient( 70% at 99% 50%, #0A4190 0%, rgba(0,77,136,0.6) 100%);
|
background-image: url('@/assets/images/bg-3.png');
|
||||||
border-radius: 0px 0px 0px 0px;
|
background-size: 100% 100%;
|
||||||
border: 1px solid;
|
|
||||||
border-image: linear-gradient(180deg, rgba(0, 150, 255, 1), rgba(0, 90, 153, 0)) 1 1;
|
|
||||||
.title-3 {
|
.title-3 {
|
||||||
margin-left: vw(10);
|
margin-left: vw(10);
|
||||||
position: relative;
|
position: relative;
|
||||||
@@ -260,7 +256,6 @@
|
|||||||
width: vw(8);
|
width: vw(8);
|
||||||
height: vh(8);
|
height: vh(8);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
.item-num {
|
.item-num {
|
||||||
width: vw(134);
|
width: vw(134);
|
||||||
@@ -269,7 +264,7 @@
|
|||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: vw(24);
|
font-size: vw(24);
|
||||||
color: #02F9FA;
|
color: #02f9fa;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
text-transform: none;
|
text-transform: none;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<!-- 1 -->
|
<!-- 1 -->
|
||||||
<div class="work-2-flex">
|
<div class="work-2-flex">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="title"> <span>最新工单</span> </div>
|
<div class="title"> <span>今日工单</span> </div>
|
||||||
</div>
|
</div>
|
||||||
<div class="hd-list">
|
<div class="hd-list">
|
||||||
<img class="h-icon" src="@/assets/images/work-icon-1.png" alt="" />
|
<img class="h-icon" src="@/assets/images/work-icon-1.png" alt="" />
|
||||||
@@ -30,7 +30,6 @@
|
|||||||
<div class="check-label">
|
<div class="check-label">
|
||||||
<span class="active">全部</span>
|
<span class="active">全部</span>
|
||||||
<span>已完成总数</span>
|
<span>已完成总数</span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<v-chart class="line-chart" :option="optionLine" autoresize />
|
<v-chart class="line-chart" :option="optionLine" autoresize />
|
||||||
</div>
|
</div>
|
||||||
@@ -43,25 +42,34 @@
|
|||||||
<div class="p-item">
|
<div class="p-item">
|
||||||
<span>普通</span>
|
<span>普通</span>
|
||||||
<div class="box-1">
|
<div class="box-1">
|
||||||
<el-progress :percentage="50"
|
<el-progress
|
||||||
|
:percentage="50"
|
||||||
stroke-linecap="square"
|
stroke-linecap="square"
|
||||||
:stroke-width="fitChartSize(15)" color="#2380FB"></el-progress>
|
:stroke-width="fitChartSize(15)"
|
||||||
|
color="#2380FB"
|
||||||
|
></el-progress>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="p-item">
|
<div class="p-item">
|
||||||
<span>普通</span>
|
<span>普通</span>
|
||||||
<div class="box-1">
|
<div class="box-1">
|
||||||
<el-progress :percentage="50"
|
<el-progress
|
||||||
|
:percentage="50"
|
||||||
stroke-linecap="square"
|
stroke-linecap="square"
|
||||||
:stroke-width="fitChartSize(15)" color="#D9011B"></el-progress>
|
:stroke-width="fitChartSize(15)"
|
||||||
|
color="#D9011B"
|
||||||
|
></el-progress>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="p-item">
|
<div class="p-item">
|
||||||
<span>普通</span>
|
<span>普通</span>
|
||||||
<div class="box-1">
|
<div class="box-1">
|
||||||
<el-progress :percentage="50"
|
<el-progress
|
||||||
|
:percentage="50"
|
||||||
stroke-linecap="square"
|
stroke-linecap="square"
|
||||||
:stroke-width="fitChartSize(15)" color="#FEAE00"></el-progress>
|
:stroke-width="fitChartSize(15)"
|
||||||
|
color="#FEAE00"
|
||||||
|
></el-progress>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -70,7 +78,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="work-2-flex">
|
<div class="work-2-flex">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="title"> <span>最新工单</span> </div>
|
<div class="title"> <span>不同景区工单占比</span> </div>
|
||||||
</div>
|
</div>
|
||||||
<div class="chart-box flex">
|
<div class="chart-box flex">
|
||||||
<div class="lt-chart">
|
<div class="lt-chart">
|
||||||
@@ -109,11 +117,11 @@
|
|||||||
import * as echarts from 'echarts'
|
import * as echarts from 'echarts'
|
||||||
import { fitChartSize } from '@/utils/dataUtil'
|
import { fitChartSize } from '@/utils/dataUtil'
|
||||||
import Map from '@/components/Map/marker.vue'
|
import Map from '@/components/Map/marker.vue'
|
||||||
import VChart, { THEME_KEY } from 'vue-echarts';
|
import VChart, { THEME_KEY } from 'vue-echarts'
|
||||||
import { ref, provide } from 'vue';
|
import { ref, provide } from 'vue'
|
||||||
|
|
||||||
provide(THEME_KEY, 'dark');
|
provide(THEME_KEY, 'dark')
|
||||||
const customColor = ref('#2380FB');
|
const customColor = ref('#2380FB')
|
||||||
const option1 = ref({
|
const option1 = ref({
|
||||||
backgroundColor: 'transparent',
|
backgroundColor: 'transparent',
|
||||||
tooltip: {
|
tooltip: {
|
||||||
@@ -132,7 +140,7 @@
|
|||||||
show: true,
|
show: true,
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
borderColor: '#fff',
|
borderColor: '#fff',
|
||||||
width:5,
|
width: 5
|
||||||
},
|
},
|
||||||
textStyle: {
|
textStyle: {
|
||||||
color: '#fff',
|
color: '#fff',
|
||||||
@@ -143,29 +151,29 @@
|
|||||||
width: '100%',
|
width: '100%',
|
||||||
borderWidth: 0.5,
|
borderWidth: 0.5,
|
||||||
height: 5,
|
height: 5,
|
||||||
backgroundColor: '1',
|
backgroundColor: '1'
|
||||||
},
|
},
|
||||||
a: {
|
a: {
|
||||||
width: fitChartSize(200),
|
width: fitChartSize(200),
|
||||||
align: 'left',
|
align: 'left',
|
||||||
fontSize:fitChartSize(16),
|
fontSize: fitChartSize(16)
|
||||||
// backgroundColor:'1'
|
// backgroundColor:'1'
|
||||||
// color:'1',
|
// color:'1',
|
||||||
// borderColor:'#eee',
|
// borderColor:'#eee',
|
||||||
// borderWidth:2
|
// borderWidth:2
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
formatter: (e) => {
|
formatter: (e) => {
|
||||||
let ratio = 0
|
let ratio = 0
|
||||||
let value = 0
|
let value = 0
|
||||||
if (option1.value.series[0].data.length > 0) {
|
if (option1.value.series[0].data.length > 0) {
|
||||||
option1.value.series[0].data.forEach(item => {
|
option1.value.series[0].data.forEach((item) => {
|
||||||
if (e == item.name) {
|
if (e == item.name) {
|
||||||
ratio = (item.value*100/3799).toFixed(0)
|
ratio = ((item.value * 100) / 3799).toFixed(0)
|
||||||
value = item.value
|
value = item.value
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
// return `${e} ${ratio}%
|
// return `${e} ${ratio}%
|
||||||
let arr = ['{a|' + e + '}', '{b|' + ratio + '%}']
|
let arr = ['{a|' + e + '}', '{b|' + ratio + '%}']
|
||||||
@@ -173,7 +181,6 @@
|
|||||||
},
|
},
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
// color:'#fff'
|
// color:'#fff'
|
||||||
|
|
||||||
},
|
},
|
||||||
backgroundColor: 'rgba(0,77,136,0.6)'
|
backgroundColor: 'rgba(0,77,136,0.6)'
|
||||||
},
|
},
|
||||||
@@ -196,7 +203,7 @@
|
|||||||
label: {
|
label: {
|
||||||
show: false,
|
show: false,
|
||||||
position: 'center',
|
position: 'center',
|
||||||
fontWeight: 'bold',
|
fontWeight: 'bold'
|
||||||
// formatter: function (o) {
|
// formatter: function (o) {
|
||||||
// let data = o.data.value
|
// let data = o.data.value
|
||||||
// return `{value|${data}}` + '\n' + `{name|整改率}`
|
// return `{value|${data}}` + '\n' + `{name|整改率}`
|
||||||
@@ -250,11 +257,10 @@
|
|||||||
{ value: 135, name: '异常状况4' },
|
{ value: 135, name: '异常状况4' },
|
||||||
{ value: 100, name: '异常状况5' },
|
{ value: 100, name: '异常状况5' },
|
||||||
{ value: 777, name: '异常状况6' },
|
{ value: 777, name: '异常状况6' },
|
||||||
{ value: 888, name: '其他' },
|
{ value: 888, name: '其他' }
|
||||||
|
]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
},
|
|
||||||
],
|
|
||||||
})
|
})
|
||||||
const option2 = ref({
|
const option2 = ref({
|
||||||
backgroundColor: 'transparent',
|
backgroundColor: 'transparent',
|
||||||
@@ -274,7 +280,7 @@
|
|||||||
show: true,
|
show: true,
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
borderColor: '#fff',
|
borderColor: '#fff',
|
||||||
width:5,
|
width: 5
|
||||||
},
|
},
|
||||||
textStyle: {
|
textStyle: {
|
||||||
color: '#fff',
|
color: '#fff',
|
||||||
@@ -285,29 +291,29 @@
|
|||||||
width: '100%',
|
width: '100%',
|
||||||
borderWidth: 0.5,
|
borderWidth: 0.5,
|
||||||
height: 5,
|
height: 5,
|
||||||
backgroundColor: '1',
|
backgroundColor: '1'
|
||||||
},
|
},
|
||||||
a: {
|
a: {
|
||||||
width: fitChartSize(100),
|
width: fitChartSize(100),
|
||||||
align: 'left',
|
align: 'left',
|
||||||
fontSize:fitChartSize(16),
|
fontSize: fitChartSize(16)
|
||||||
// backgroundColor:'1'
|
// backgroundColor:'1'
|
||||||
// color:'1',
|
// color:'1',
|
||||||
// borderColor:'#eee',
|
// borderColor:'#eee',
|
||||||
// borderWidth:2
|
// borderWidth:2
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
formatter: (e) => {
|
formatter: (e) => {
|
||||||
let ratio = 0
|
let ratio = 0
|
||||||
let value = 0
|
let value = 0
|
||||||
if (option1.value.series[0].data.length > 0) {
|
if (option1.value.series[0].data.length > 0) {
|
||||||
option1.value.series[0].data.forEach(item => {
|
option1.value.series[0].data.forEach((item) => {
|
||||||
if (e == item.name) {
|
if (e == item.name) {
|
||||||
ratio = (item.value*100/3799).toFixed(0)
|
ratio = ((item.value * 100) / 3799).toFixed(0)
|
||||||
value = item.value
|
value = item.value
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
// return `${e} ${ratio}%
|
// return `${e} ${ratio}%
|
||||||
let arr = ['{a|' + e + '}', '{b|' + ratio + '%}']
|
let arr = ['{a|' + e + '}', '{b|' + ratio + '%}']
|
||||||
@@ -315,7 +321,6 @@
|
|||||||
},
|
},
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
// color:'#fff'
|
// color:'#fff'
|
||||||
|
|
||||||
},
|
},
|
||||||
backgroundColor: 'rgba(0,77,136,0.6)'
|
backgroundColor: 'rgba(0,77,136,0.6)'
|
||||||
},
|
},
|
||||||
@@ -338,7 +343,7 @@
|
|||||||
label: {
|
label: {
|
||||||
show: false,
|
show: false,
|
||||||
position: 'center',
|
position: 'center',
|
||||||
fontWeight: 'bold',
|
fontWeight: 'bold'
|
||||||
// formatter: function (o) {
|
// formatter: function (o) {
|
||||||
// let data = o.data.value
|
// let data = o.data.value
|
||||||
// return `{value|${data}}` + '\n' + `{name|整改率}`
|
// return `{value|${data}}` + '\n' + `{name|整改率}`
|
||||||
@@ -392,11 +397,10 @@
|
|||||||
{ value: 135, name: '异常状况4' },
|
{ value: 135, name: '异常状况4' },
|
||||||
{ value: 100, name: '异常状况5' },
|
{ value: 100, name: '异常状况5' },
|
||||||
{ value: 777, name: '异常状况6' },
|
{ value: 777, name: '异常状况6' },
|
||||||
{ value: 888, name: '其他' },
|
{ value: 888, name: '其他' }
|
||||||
|
]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
},
|
|
||||||
],
|
|
||||||
})
|
})
|
||||||
const optionLine = ref({
|
const optionLine = ref({
|
||||||
backgroundColor: 'transparent',
|
backgroundColor: 'transparent',
|
||||||
@@ -405,7 +409,7 @@
|
|||||||
top: '20',
|
top: '20',
|
||||||
bottom: '0',
|
bottom: '0',
|
||||||
left: '4%',
|
left: '4%',
|
||||||
containLabel: true,
|
containLabel: true
|
||||||
},
|
},
|
||||||
xAxis: {
|
xAxis: {
|
||||||
nameLocation: 'middle',
|
nameLocation: 'middle',
|
||||||
@@ -414,16 +418,27 @@
|
|||||||
axisLabel: {
|
axisLabel: {
|
||||||
fontSize: 10,
|
fontSize: 10,
|
||||||
interval: 0, // 显示所有标签
|
interval: 0, // 显示所有标签
|
||||||
rotate: 0, // 旋转标签45度
|
rotate: 0 // 旋转标签45度
|
||||||
},
|
},
|
||||||
data: ['10:00', '10:00', '10:00', '10:00', '10:00', '10:00', '10:00', '10:00', '10:00', '10:00'],
|
data: [
|
||||||
|
'10:00',
|
||||||
|
'10:00',
|
||||||
|
'10:00',
|
||||||
|
'10:00',
|
||||||
|
'10:00',
|
||||||
|
'10:00',
|
||||||
|
'10:00',
|
||||||
|
'10:00',
|
||||||
|
'10:00',
|
||||||
|
'10:00'
|
||||||
|
],
|
||||||
axisTisk: {
|
axisTisk: {
|
||||||
show: true,
|
show: true,
|
||||||
// 设置刻度长度
|
// 设置刻度长度
|
||||||
length: 1,
|
length: 1,
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
type: 'dashed', // 设置为虚线
|
type: 'dashed', // 设置为虚线
|
||||||
width:0,
|
width: 0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
axisLine: {
|
axisLine: {
|
||||||
@@ -439,7 +454,7 @@
|
|||||||
interval: 1000,
|
interval: 1000,
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
fontSize: fitChartSize(12), // 设置Y轴刻度字体大小
|
fontSize: fitChartSize(12), // 设置Y轴刻度字体大小
|
||||||
color: '#eee',
|
color: '#eee'
|
||||||
},
|
},
|
||||||
splitLine: {
|
splitLine: {
|
||||||
show: true,
|
show: true,
|
||||||
@@ -456,7 +471,7 @@
|
|||||||
type: 'line',
|
type: 'line',
|
||||||
smooth: true,
|
smooth: true,
|
||||||
label: {
|
label: {
|
||||||
show:false,//隐藏坐标点
|
show: false //隐藏坐标点
|
||||||
},
|
},
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: 'transparent'
|
color: 'transparent'
|
||||||
@@ -491,13 +506,12 @@
|
|||||||
{
|
{
|
||||||
offset: 1,
|
offset: 1,
|
||||||
color: '#009DFF'
|
color: '#009DFF'
|
||||||
},
|
}
|
||||||
]),
|
]),
|
||||||
width:2,
|
width: 2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -525,20 +539,20 @@
|
|||||||
span {
|
span {
|
||||||
min-width: vw(55);
|
min-width: vw(55);
|
||||||
padding: vw(5);
|
padding: vw(5);
|
||||||
background: linear-gradient( 270deg, rgba(8,41,86,0.16) 0%, #0B61B4 100%);
|
background: linear-gradient(270deg, rgba(8, 41, 86, 0.16) 0%, #0b61b4 100%);
|
||||||
border-radius: vw(50);
|
border-radius: vw(50);
|
||||||
// border: 1px solid rgba(0,114,220,0.3);
|
// border: 1px solid rgba(0,114,220,0.3);
|
||||||
margin-left: vw(5);
|
margin-left: vw(5);
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-size: vw(13);
|
font-size: vw(13);
|
||||||
color: #0084FF;
|
color: #0084ff;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
text-transform: none;
|
text-transform: none;
|
||||||
}
|
}
|
||||||
.active {
|
.active {
|
||||||
background: linear-gradient( 270deg, #37D8FC 0%, #0084FF 100%);
|
background: linear-gradient(270deg, #37d8fc 0%, #0084ff 100%);
|
||||||
border-radius: vw(50);
|
border-radius: vw(50);
|
||||||
border: 1px solid rgba(0, 114, 220, 0.3);
|
border: 1px solid rgba(0, 114, 220, 0.3);
|
||||||
color: #fff;
|
color: #fff;
|
||||||
@@ -553,7 +567,7 @@
|
|||||||
position: relative;
|
position: relative;
|
||||||
z-index: 99;
|
z-index: 99;
|
||||||
.work-2-flex {
|
.work-2-flex {
|
||||||
background: linear-gradient( 321deg, #0B2F64 0%, #062B57 100%);
|
background: linear-gradient(321deg, #0b2f64 0%, #062b57 100%);
|
||||||
height: vh(490);
|
height: vh(490);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
@@ -566,10 +580,8 @@
|
|||||||
width: vw(740);
|
width: vw(740);
|
||||||
min-height: vw(336);
|
min-height: vw(336);
|
||||||
padding: vw(20);
|
padding: vw(20);
|
||||||
background: radial-gradient( 70% at 99% 50%, #0A4190 0%, rgba(0,77,136,0.6) 100%);
|
background-image: url('@/assets/images/bg-3.png');
|
||||||
border-radius: 0px 0px 0px 0px;
|
background-size: 100% 100%;
|
||||||
border: 1px solid;
|
|
||||||
border-image: linear-gradient(180deg, rgba(0, 150, 255, 1), rgba(0, 90, 153, 0)) 1 1;
|
|
||||||
.box-press {
|
.box-press {
|
||||||
padding: vw(30);
|
padding: vw(30);
|
||||||
padding-top: vh(40);
|
padding-top: vh(40);
|
||||||
@@ -581,7 +593,7 @@
|
|||||||
span {
|
span {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: vw(14);
|
font-size: vw(14);
|
||||||
color: #FFFFFF;
|
color: #ffffff;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
text-transform: none;
|
text-transform: none;
|
||||||
@@ -603,10 +615,9 @@
|
|||||||
.chart-des {
|
.chart-des {
|
||||||
width: vw(224);
|
width: vw(224);
|
||||||
height: vh(312);
|
height: vh(312);
|
||||||
background:#0A4190;
|
background: #0a4190;
|
||||||
.t-item:nth-child(odd) {
|
.t-item:nth-child(odd) {
|
||||||
background: rgba(0, 150, 255, 0.3);
|
background: rgba(0, 150, 255, 0.3);
|
||||||
|
|
||||||
}
|
}
|
||||||
.t-item:nth-child(even) {
|
.t-item:nth-child(even) {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
@@ -626,7 +637,7 @@
|
|||||||
p {
|
p {
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-size: vw(15);
|
font-size: vw(15);
|
||||||
color: #FFFFFF;
|
color: #ffffff;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
text-transform: none;
|
text-transform: none;
|
||||||
@@ -639,16 +650,16 @@
|
|||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
}
|
}
|
||||||
.bgColor1 {
|
.bgColor1 {
|
||||||
background:#D9011B;
|
background: #d9011b;
|
||||||
}
|
}
|
||||||
.bgColor2 {
|
.bgColor2 {
|
||||||
background:#FEAE00;
|
background: #feae00;
|
||||||
}
|
}
|
||||||
.bgColor3 {
|
.bgColor3 {
|
||||||
background:#2380FB;
|
background: #2380fb;
|
||||||
}
|
}
|
||||||
.bgColor4 {
|
.bgColor4 {
|
||||||
background:#495C77;
|
background: #495c77;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.t-des {
|
.t-des {
|
||||||
@@ -656,7 +667,7 @@
|
|||||||
padding: vw(10);
|
padding: vw(10);
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-size: vw(13);
|
font-size: vw(13);
|
||||||
color: #02F9FA;
|
color: #02f9fa;
|
||||||
display: flex;
|
display: flex;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
@@ -702,7 +713,7 @@
|
|||||||
top: 50%;
|
top: 50%;
|
||||||
transform: translateY(-50%);
|
transform: translateY(-50%);
|
||||||
width: vw(74);
|
width: vw(74);
|
||||||
height:vh(74);
|
height: auto;
|
||||||
}
|
}
|
||||||
.item {
|
.item {
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -725,7 +736,7 @@
|
|||||||
margin-left: vw(5);
|
margin-left: vw(5);
|
||||||
}
|
}
|
||||||
.color1 {
|
.color1 {
|
||||||
color:#02F9FA;
|
color: #02f9fa;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.item1 {
|
.item1 {
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
<div class="work-box-1">
|
<div class="work-box-1">
|
||||||
<!-- 最新工单 -->
|
<!-- 最新工单 -->
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="title"> <span>最新工单</span> </div>
|
<div class="title"> <span>消息情况</span> </div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<div class="list">
|
<div class="list">
|
||||||
@@ -54,9 +54,9 @@
|
|||||||
import * as echarts from 'echarts'
|
import * as echarts from 'echarts'
|
||||||
import { fitChartSize } from '@/utils/dataUtil'
|
import { fitChartSize } from '@/utils/dataUtil'
|
||||||
import Map from '@/components/Map/marker.vue'
|
import Map from '@/components/Map/marker.vue'
|
||||||
import VChart, { THEME_KEY } from 'vue-echarts';
|
import VChart, { THEME_KEY } from 'vue-echarts'
|
||||||
import { ref, provide } from 'vue';
|
import { ref, provide } from 'vue'
|
||||||
provide(THEME_KEY, 'dark');
|
provide(THEME_KEY, 'dark')
|
||||||
const option = ref({
|
const option = ref({
|
||||||
backgroundColor: 'transparent',
|
backgroundColor: 'transparent',
|
||||||
title: [
|
title: [
|
||||||
@@ -194,7 +194,7 @@
|
|||||||
.work-box-3 {
|
.work-box-3 {
|
||||||
width: vw(813);
|
width: vw(813);
|
||||||
height: vh(380);
|
height: vh(380);
|
||||||
background: linear-gradient( 321deg, #0B2F64 0%, #062B57 100%);
|
background: linear-gradient(321deg, #0b2f64 0%, #062b57 100%);
|
||||||
border-radius: 0px 0px 0px 0px;
|
border-radius: 0px 0px 0px 0px;
|
||||||
margin-top: vh(100);
|
margin-top: vh(100);
|
||||||
margin-left: vw(10);
|
margin-left: vw(10);
|
||||||
@@ -204,7 +204,7 @@
|
|||||||
width: vw(815);
|
width: vw(815);
|
||||||
height: vh(588);
|
height: vh(588);
|
||||||
// margin-top:vh(100);
|
// margin-top:vh(100);
|
||||||
background: linear-gradient( 321deg, #0B2F64 0%, #062B57 100%);
|
background: linear-gradient(321deg, #0b2f64 0%, #062b57 100%);
|
||||||
border-radius: 0px 0px 0px 0px;
|
border-radius: 0px 0px 0px 0px;
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 99;
|
z-index: 99;
|
||||||
@@ -227,7 +227,6 @@
|
|||||||
overflow: auto;
|
overflow: auto;
|
||||||
.li:nth-child(odd) {
|
.li:nth-child(odd) {
|
||||||
background: rgba(3, 78, 153, 0.3);
|
background: rgba(3, 78, 153, 0.3);
|
||||||
|
|
||||||
}
|
}
|
||||||
.li:nth-child(even) {
|
.li:nth-child(even) {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
@@ -249,13 +248,13 @@
|
|||||||
margin-right: vw(10);
|
margin-right: vw(10);
|
||||||
}
|
}
|
||||||
.label1 {
|
.label1 {
|
||||||
background: #2380FB;
|
background: #2380fb;
|
||||||
}
|
}
|
||||||
.label2 {
|
.label2 {
|
||||||
background: #FEAE00;
|
background: #feae00;
|
||||||
}
|
}
|
||||||
.label3 {
|
.label3 {
|
||||||
background: #D9011B;
|
background: #d9011b;
|
||||||
}
|
}
|
||||||
.time {
|
.time {
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@@ -270,7 +269,7 @@
|
|||||||
p {
|
p {
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-size: vw(15);
|
font-size: vw(15);
|
||||||
color: #FFFFFF;
|
color: #ffffff;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
text-transform: none;
|
text-transform: none;
|
||||||
@@ -311,7 +310,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.work-2-flex {
|
.work-2-flex {
|
||||||
background: linear-gradient( 321deg, #0B2F64 0%, #062B57 100%);
|
background: linear-gradient(321deg, #0b2f64 0%, #062b57 100%);
|
||||||
height: vh(380);
|
height: vh(380);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
.chart-box {
|
.chart-box {
|
||||||
@@ -392,7 +391,7 @@
|
|||||||
margin-left: vw(5);
|
margin-left: vw(5);
|
||||||
}
|
}
|
||||||
.color1 {
|
.color1 {
|
||||||
color:#02F9FA;
|
color: #02f9fa;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.item1 {
|
.item1 {
|
||||||
|
|||||||
Reference in New Issue
Block a user