刘朋
8 months ago
31 changed files with 1377 additions and 406 deletions
Before Width: | Height: | Size: 2.9 MiB After Width: | Height: | Size: 9.5 MiB |
@ -1,46 +1,270 @@ |
|||||
<template> |
<template> |
||||
<div class="Eventfiltering"> |
<div class="Eventfiltering"> |
||||
<div class="Eventfiltering-left" id="trafficIncidentsCharts"></div> |
<InputSearch |
||||
<div class="Eventfiltering-right"></div> |
class="search-box" |
||||
|
:formList="searchFormList" |
||||
|
@handleSearch="handleSearch" |
||||
|
/> |
||||
|
<div class="Eventfiltering-content"> |
||||
|
<div class="Eventfiltering-left" ref="trafficIncidents"></div> |
||||
|
<div class="Eventfiltering-right" ref="trafficIncidentsPie"></div> |
||||
|
</div> |
||||
</div> |
</div> |
||||
</template> |
</template> |
||||
|
|
||||
<script> |
<script> |
||||
// import trafficIncidentsCharts from "./trafficIncidentsCharts.js"; |
import InputSearch from "@screen/components/InputSearch/index.vue"; |
||||
// import * as echarts from "echarts"; |
import trafficIncidentsCharts1 from "./trafficIncidentsCharts.js"; |
||||
|
import trafficIncidentsChartsPie1 from "./trafficIncidentsChartsPie.js"; |
||||
// export default { |
import { nonAutomaticWarningFacility } from "@/api/manualWarning/index.js"; |
||||
// name: "Eventfiltering", |
import * as echarts from "echarts"; |
||||
// components: { trafficIncidentsCharts }, |
import moment from "moment"; |
||||
// data() { |
const drawRoundRect = (ctx, x, y, width, height, radius, gr) => { |
||||
// return {}; |
// ctx, 矩形距离x坐标位置, 矩形距离y坐标的位置, 矩形的宽, 矩形的长,圆角角度 |
||||
// }, |
ctx.beginPath(); |
||||
// mounted() { |
ctx.fillStyle = gr; |
||||
// var trafficIncidentsCharts = echarts.init( |
ctx.arc(x + radius, y + radius, radius, Math.PI, (Math.PI * 3) / 2); |
||||
// document.getElementById("trafficIncidentsCharts") |
ctx.lineTo(width - radius + x, y); |
||||
// ); |
ctx.arc( |
||||
// trafficIncidentsCharts.setOption(trafficIncidentsCharts); |
width - radius + x, |
||||
// }, |
radius + y, |
||||
// methods: {}, |
radius, |
||||
// }; |
(Math.PI * 3) / 2, |
||||
|
Math.PI * 2 |
||||
|
); |
||||
|
ctx.lineTo(width + x, height + y - radius); |
||||
|
ctx.arc( |
||||
|
width - radius + x, |
||||
|
height - radius + y, |
||||
|
radius, |
||||
|
0, |
||||
|
(Math.PI * 1) / 2 |
||||
|
); |
||||
|
ctx.lineTo(radius + x, height + y); |
||||
|
ctx.arc(radius + x, height - radius + y, radius, (Math.PI * 1) / 2, Math.PI); |
||||
|
ctx.closePath(); |
||||
|
//ctx.stroke(); |
||||
|
ctx.fill(); |
||||
|
}; |
||||
|
|
||||
|
export default { |
||||
|
name: "Sitefiltering", |
||||
|
components: { |
||||
|
InputSearch, |
||||
|
}, |
||||
|
props: { |
||||
|
name: { |
||||
|
type: String, |
||||
|
}, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
// loading: false, |
||||
|
trafficIncidents: null, |
||||
|
trafficIncidentsPie: null, |
||||
|
formData: { |
||||
|
type: "day", |
||||
|
warningTime: "", |
||||
|
}, |
||||
|
searchFormList: [ |
||||
|
{ |
||||
|
label: "事件类型:", |
||||
|
key: "type", |
||||
|
type: "select", |
||||
|
default: "day", |
||||
|
options: { |
||||
|
clearable: true, |
||||
|
options: [ |
||||
|
{ |
||||
|
key: "day", |
||||
|
label: "天", |
||||
|
}, |
||||
|
{ |
||||
|
key: "month", |
||||
|
label: "月", |
||||
|
}, |
||||
|
{ |
||||
|
key: "year", |
||||
|
label: "年", |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
label: "日期:", |
||||
|
key: "warningTime", |
||||
|
required: true, |
||||
|
type: "datePicker", |
||||
|
options: { |
||||
|
valueFormat: "yyyy-MM-dd", |
||||
|
}, |
||||
|
visible: (data) => { |
||||
|
if (data.type == "day") { |
||||
|
return true; |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
label: "日期:", |
||||
|
key: "warningTime", |
||||
|
required: true, |
||||
|
type: "datePicker", |
||||
|
options: { |
||||
|
type: "month", |
||||
|
valueFormat: "yyyy-MM-dd", |
||||
|
}, |
||||
|
visible: (data) => { |
||||
|
if (data.type == "month") { |
||||
|
return true; |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
label: "日期:", |
||||
|
key: "warningTime", |
||||
|
required: true, |
||||
|
type: "datePicker", |
||||
|
options: { |
||||
|
type: "year", |
||||
|
valueFormat: "yyyy-MM-dd", |
||||
|
}, |
||||
|
visible: (data) => { |
||||
|
if (data.type == "year") { |
||||
|
return true; |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
}; |
||||
|
}, |
||||
|
|
||||
|
watch: { |
||||
|
name: { |
||||
|
handler(newValue, oldValue) { |
||||
|
console.log("newValue", newValue); |
||||
|
if (newValue == "second") { |
||||
|
this.getWarningCharts(); |
||||
|
} |
||||
|
}, |
||||
|
deep: true, |
||||
|
}, |
||||
|
}, |
||||
|
|
||||
|
mounted() {}, |
||||
|
methods: { |
||||
|
getWarningCharts() { |
||||
|
setTimeout(() => { |
||||
|
this.$nextTick(async () => { |
||||
|
(this.formData.warningTime = |
||||
|
moment(new Date()).format("YYYY-MM-DD") + " 00:00:01"), |
||||
|
(this.trafficIncidents = echarts.init(this.$refs.trafficIncidents)); |
||||
|
this.trafficIncidents.setOption(trafficIncidentsCharts1); |
||||
|
this.trafficIncidentsPie = echarts.init( |
||||
|
this.$refs.trafficIncidentsPie |
||||
|
); |
||||
|
this.trafficIncidentsPie.setOption(trafficIncidentsChartsPie1); |
||||
|
|
||||
|
const domMap = this.$refs.trafficIncidentsPie; |
||||
|
let parentDiv = domMap.firstElementChild; |
||||
|
// // 创建canvas; |
||||
|
let canvas = document.createElement("canvas"); |
||||
|
canvas.width = parentDiv.offsetWidth; |
||||
|
canvas.height = parentDiv.offsetHeight; |
||||
|
parentDiv.appendChild(canvas); |
||||
|
const context = canvas.getContext("2d"); |
||||
|
|
||||
|
// // 填充渐变颜色 |
||||
|
let gr = context.createLinearGradient(280, 0, 580, 0); |
||||
|
gr.addColorStop(1, "rgba(92,197,255,0)"); |
||||
|
gr.addColorStop(0, "rgba(92,197,255,0.5)"); |
||||
|
context.lineWidth = 1; // 设置线段宽度 |
||||
|
drawRoundRect(context, 430, 134, 280, 24, 12, gr); |
||||
|
drawRoundRect(context, 430, 168, 280, 24, 10, gr); |
||||
|
drawRoundRect(context, 430, 202, 280, 24, 10, gr); |
||||
|
drawRoundRect(context, 430, 236, 280, 24, 10, gr); |
||||
|
drawRoundRect(context, 430, 270, 280, 24, 10, gr); |
||||
|
drawRoundRect(context, 430, 304, 280, 24, 10, gr); |
||||
|
drawRoundRect(context, 430, 338, 280, 24, 10, gr); |
||||
|
drawRoundRect(context, 430, 372, 280, 24, 10, gr); |
||||
|
drawRoundRect(context, 430, 406, 280, 24, 10, gr); |
||||
|
drawRoundRect(context, 430, 440, 280, 24, 10, gr); |
||||
|
// drawRoundRect(context, 430, 474, 280, 24, 10, gr); |
||||
|
await this.getNonAutomaticWarningFacility(this.formData); |
||||
|
}); |
||||
|
}); |
||||
|
}, |
||||
|
getNonAutomaticWarningFacility(data) { |
||||
|
return nonAutomaticWarningFacility(data).then((res) => { |
||||
|
let newData = res.data; |
||||
|
let seriesData = []; |
||||
|
let xData = []; |
||||
|
let pieData = []; |
||||
|
let total = null; |
||||
|
newData.forEach((item) => { |
||||
|
seriesData.push(item.number); |
||||
|
xData.push(item.facilityName); |
||||
|
pieData.push({ |
||||
|
value: item.number, |
||||
|
name: item.facilityName, |
||||
|
}); |
||||
|
total += item.number; |
||||
|
}); |
||||
|
trafficIncidentsCharts1.series[0].data = seriesData; |
||||
|
trafficIncidentsCharts1.xAxis.data = xData; |
||||
|
|
||||
|
trafficIncidentsChartsPie1.legend.formatter = function (name) { |
||||
|
let tarValue = 0; |
||||
|
for (let i = 0; i < newData.length; i++) { |
||||
|
if (newData[i].facilityName === name) { |
||||
|
tarValue = newData[i].number; |
||||
|
} |
||||
|
} |
||||
|
var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2); |
||||
|
return `{text|${name}} {number|${tarValue} 起 } {number|${percert}%}`; |
||||
|
}; |
||||
|
|
||||
|
trafficIncidentsChartsPie1.title[0].text = total; |
||||
|
trafficIncidentsChartsPie1.series[2].data = pieData; |
||||
|
trafficIncidentsChartsPie1.legend.data = xData; |
||||
|
this.trafficIncidents.setOption(trafficIncidentsCharts1); |
||||
|
this.trafficIncidentsPie.setOption(trafficIncidentsChartsPie1); |
||||
|
}); |
||||
|
}, |
||||
|
handleSearch(value) { |
||||
|
value.warningTime = value.warningTime + " 00:00:01"; |
||||
|
this.formData = { ...value }; |
||||
|
this.getNonAutomaticWarningFacility(this.formData); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
</script> |
</script> |
||||
|
|
||||
<style lang="scss" scoped> |
<style lang="scss" scoped> |
||||
.Eventfiltering { |
.Eventfiltering { |
||||
width: 99%; |
width: 99%; |
||||
height: 100%; |
height: 94%; |
||||
margin: auto; |
margin: auto; |
||||
display: flex; |
|
||||
justify-content: space-between; |
.search-box { |
||||
} |
width: 402px !important; |
||||
.Eventfiltering-left { |
float: right; |
||||
width: 60%; |
} |
||||
height: 100%; |
|
||||
background-color: #fff; |
.Eventfiltering-content { |
||||
} |
width: 100%; |
||||
.Eventfiltering-right { |
height: 96%; |
||||
width: 40%; |
display: flex; |
||||
height: 100%; |
justify-content: space-between; |
||||
background-color: #fff; |
|
||||
|
.Eventfiltering-left { |
||||
|
width: 63%; |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
.Eventfiltering-right { |
||||
|
width: 34%; |
||||
|
height: 100%; |
||||
|
} |
||||
|
} |
||||
} |
} |
||||
</style> |
</style> |
||||
|
@ -0,0 +1,95 @@ |
|||||
|
var options = { |
||||
|
title: { |
||||
|
// text: '单位/%',
|
||||
|
top: "0%", |
||||
|
left: "0%", |
||||
|
textStyle: { |
||||
|
fontSize: "10px", |
||||
|
fontWeight: 300, |
||||
|
color: "#B5C5D4", |
||||
|
opacity: 0.8, |
||||
|
}, |
||||
|
}, |
||||
|
tooltip: { |
||||
|
valueFormatter: function (value) { |
||||
|
return value + " 起"; |
||||
|
}, |
||||
|
}, |
||||
|
grid: { |
||||
|
left: "50px", |
||||
|
right: "0%", |
||||
|
top: "50px", |
||||
|
bottom: "5%", |
||||
|
containLabel: true, |
||||
|
}, |
||||
|
xAxis: { |
||||
|
type: "category", |
||||
|
data: [], |
||||
|
axisLine: { |
||||
|
lineStyle: { |
||||
|
color: "rgba(49, 217, 255, 0.8)", |
||||
|
}, |
||||
|
}, |
||||
|
axisTick: { |
||||
|
show: false, |
||||
|
}, |
||||
|
axisLabel: { |
||||
|
color: "#fff", |
||||
|
fontSize: "18px", |
||||
|
}, |
||||
|
}, |
||||
|
yAxis: [ |
||||
|
{ |
||||
|
// type: 'value',
|
||||
|
// min: function (value) {
|
||||
|
// return value.min*0.9;
|
||||
|
// },
|
||||
|
name: "交通事件(起)", |
||||
|
nameTextStyle: { |
||||
|
color: "#fff", |
||||
|
fontSize: 18, |
||||
|
align: "center", |
||||
|
}, |
||||
|
type: "value", |
||||
|
axisLine: { |
||||
|
show: false, |
||||
|
lineStyle: { |
||||
|
width: 1, |
||||
|
color: "#545454", |
||||
|
}, |
||||
|
}, |
||||
|
splitLine: { |
||||
|
lineStyle: { |
||||
|
color: "rgba(49, 217, 255, 0.5)", |
||||
|
}, |
||||
|
}, |
||||
|
axisTick: { |
||||
|
show: false, |
||||
|
}, |
||||
|
axisLabel: { |
||||
|
color: "#fff", |
||||
|
fontSize: "18px", |
||||
|
formatter: (value) => { |
||||
|
return value; |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
series: [ |
||||
|
{ |
||||
|
// name: '审限内结案率',
|
||||
|
data: [5, 10, 20, 30], |
||||
|
type: "pictorialBar", |
||||
|
symbol: "roundRect", |
||||
|
symbolRepeat: true, |
||||
|
symbolSize: [13, 4], |
||||
|
// symbolOffset: symbolOffset,
|
||||
|
// barWidth:'40%',
|
||||
|
itemStyle: { |
||||
|
color: "#20E7FF", |
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
}; |
||||
|
|
||||
|
export default options; |
@ -0,0 +1,232 @@ |
|||||
|
let colors = [ |
||||
|
"#4278F8", |
||||
|
"#5372C4", |
||||
|
"#0046FF", |
||||
|
"#FB9434", |
||||
|
"#854101", |
||||
|
"#05E599", |
||||
|
"#219F73", |
||||
|
"#7CEDD5", |
||||
|
"#854101", |
||||
|
"#05E599", |
||||
|
"#219F73", |
||||
|
"#7CEDD5", |
||||
|
]; |
||||
|
var legendData = []; |
||||
|
|
||||
|
var options = { |
||||
|
title: [ |
||||
|
{ |
||||
|
text: "999", |
||||
|
top: "36%", |
||||
|
textAlign: "center", |
||||
|
left: "29%", |
||||
|
textStyle: { |
||||
|
color: "#ffffff", |
||||
|
fontSize: 30, |
||||
|
fontFamily: "SourceHanSansCN", |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
text: "总数", |
||||
|
top: "32%", |
||||
|
textAlign: "center", |
||||
|
left: "29%", |
||||
|
textStyle: { |
||||
|
color: "rgba(242, 252, 253, 0.84)", |
||||
|
fontSize: 16, |
||||
|
fontFamily: "SourceHanSansCN", |
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
grid: { |
||||
|
top: "38%", |
||||
|
left: "6%", |
||||
|
right: "6%", |
||||
|
bottom: "3%", |
||||
|
containLabel: true, |
||||
|
}, |
||||
|
tooltip: { |
||||
|
show: true, |
||||
|
valueFormatter: function (value) { |
||||
|
return value + " 起"; |
||||
|
}, |
||||
|
}, |
||||
|
legend: { |
||||
|
show: true, |
||||
|
width: "300px", |
||||
|
height: "520px", |
||||
|
orient: "vertical", |
||||
|
icon: "circle", |
||||
|
top: "15%", |
||||
|
left: "70%", |
||||
|
itemWidth: 10, |
||||
|
itemHeight: 10, |
||||
|
textStyle: { |
||||
|
color: "#ffffff", |
||||
|
fontSize: 14, |
||||
|
lineHeight: 24, |
||||
|
rich: { |
||||
|
text: { |
||||
|
width: 100, |
||||
|
marginLeft: 32, |
||||
|
fontSize: 14, |
||||
|
}, |
||||
|
number: { |
||||
|
fontSize: 14, |
||||
|
color: "#37E7FF", |
||||
|
marginLeft: 32, |
||||
|
fontWeight: "bold", |
||||
|
}, |
||||
|
unit: { |
||||
|
fontSize: 14, |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
data: legendData, |
||||
|
// pageIconColor: "#fff",
|
||||
|
// pageIconSize: 10,
|
||||
|
// pageTextStyle: {
|
||||
|
// color: "#fff",
|
||||
|
// },
|
||||
|
// type: "scroll",
|
||||
|
// pageButtonPosition: "end",
|
||||
|
}, |
||||
|
series: [ |
||||
|
/** 饼图上刻度 */ |
||||
|
{ |
||||
|
type: "gauge", |
||||
|
center: ["30%", "35%"], |
||||
|
radius: "43%", // 错位调整此处
|
||||
|
startAngle: 0, |
||||
|
endAngle: 360, |
||||
|
splitNumber: 52, |
||||
|
axisLine: { show: false }, |
||||
|
splitLine: { |
||||
|
// length: 39,
|
||||
|
length: "2", |
||||
|
lineStyle: { |
||||
|
width: 5, |
||||
|
color: "#5CC5FF", |
||||
|
}, |
||||
|
}, |
||||
|
axisTick: { show: false }, |
||||
|
axisLabel: { show: false }, |
||||
|
}, |
||||
|
{ |
||||
|
name: "总数", |
||||
|
tooltip: false, |
||||
|
type: "gauge", |
||||
|
radius: "30%", |
||||
|
center: ["30%", "35%"], |
||||
|
startAngle: 0, |
||||
|
endAngle: 360, |
||||
|
axisLine: { |
||||
|
lineStyle: { |
||||
|
color: [[1, "#0AFFE950"]], |
||||
|
width: 1, |
||||
|
}, |
||||
|
}, |
||||
|
axisTick: { |
||||
|
show: false, |
||||
|
}, |
||||
|
splitLine: { |
||||
|
show: false, |
||||
|
}, |
||||
|
axisLabel: { |
||||
|
show: false, |
||||
|
}, |
||||
|
detail: { |
||||
|
show: false, |
||||
|
}, |
||||
|
pointer: { |
||||
|
show: false, |
||||
|
}, |
||||
|
progress: { |
||||
|
show: true, |
||||
|
width: 80, |
||||
|
itemStyle: { |
||||
|
color: { |
||||
|
type: "radial", |
||||
|
x: 0.5, |
||||
|
y: 0.5, |
||||
|
r: 0.5, |
||||
|
colorStops: [ |
||||
|
{ |
||||
|
offset: 0, |
||||
|
color: "rgb(0, 224, 205, 0)", |
||||
|
}, |
||||
|
{ |
||||
|
offset: 0.7, |
||||
|
color: "rgba(0, 224, 205, 0)", |
||||
|
}, |
||||
|
{ |
||||
|
offset: 1, |
||||
|
color: "rgba(10, 255, 233, 0.5)", |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
data: [ |
||||
|
{ |
||||
|
value: 100, |
||||
|
}, |
||||
|
], |
||||
|
tooltip: { |
||||
|
backgroundColor: "rgba(50,50,50,0)", |
||||
|
formatter: " ", |
||||
|
borderWidth: 0, |
||||
|
textStyle: { |
||||
|
textShadowColor: "rgba(50,50,50,0)", |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
type: "pie", |
||||
|
radius: ["40%", "50%"], |
||||
|
center: ["30%", "35%"], |
||||
|
z: 10, |
||||
|
label: { |
||||
|
show: false, |
||||
|
}, |
||||
|
data: [], |
||||
|
labelLine: { |
||||
|
show: false, |
||||
|
}, |
||||
|
itemStyle: { |
||||
|
normal: { |
||||
|
borderRadius: "5", |
||||
|
borderWidth: 2, |
||||
|
borderType: "solid", |
||||
|
borderCap: "round", |
||||
|
borderJoin: "round", |
||||
|
borderColor: "#064258", |
||||
|
borderMiterLimit: "20", |
||||
|
color: function (params) { |
||||
|
return { |
||||
|
type: "linear", |
||||
|
x: 0, |
||||
|
y: 0, |
||||
|
x2: 1, |
||||
|
y2: 1, |
||||
|
colorStops: [ |
||||
|
{ |
||||
|
offset: 0, |
||||
|
color: colors[params.dataIndex], // 0% 处的颜色
|
||||
|
}, |
||||
|
{ |
||||
|
offset: 1, |
||||
|
color: colors[params.dataIndex], // 100% 处的颜色
|
||||
|
}, |
||||
|
], |
||||
|
globalCoord: false, // 缺省为 false
|
||||
|
}; |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
}; |
||||
|
|
||||
|
export default options; |
@ -1,46 +1,203 @@ |
|||||
<template> |
<template> |
||||
<div class="Eventfiltering"> |
<div class="Eventfiltering"> |
||||
<div class="Eventfiltering-left" id="trafficIncidentsCharts"></div> |
<InputSearch |
||||
<div class="Eventfiltering-right"></div> |
class="search-box" |
||||
|
:formList="searchFormList" |
||||
|
@handleSearch="handleSearch" |
||||
|
/> |
||||
|
<div class="Eventfiltering-content"> |
||||
|
<div class="Eventfiltering-left" ref="trafficIncidents"></div> |
||||
|
</div> |
||||
</div> |
</div> |
||||
</template> |
</template> |
||||
|
|
||||
<script> |
<script> |
||||
// import trafficIncidentsCharts from "./trafficIncidentsCharts.js"; |
import InputSearch from "@screen/components/InputSearch/index.vue"; |
||||
// import * as echarts from "echarts"; |
import trafficIncidentsCharts2 from "./trafficIncidentsCharts.js"; |
||||
|
import { nonAutomaticWarningTimeType } from "@/api/manualWarning/index.js"; |
||||
// export default { |
import * as echarts from "echarts"; |
||||
// name: "Eventfiltering", |
import moment from "moment"; |
||||
// components: { trafficIncidentsCharts }, |
|
||||
// data() { |
export default { |
||||
// return {}; |
name: "Sitefiltering", |
||||
// }, |
components: { |
||||
// mounted() { |
InputSearch, |
||||
// var trafficIncidentsCharts = echarts.init( |
}, |
||||
// document.getElementById("trafficIncidentsCharts") |
props: { |
||||
// ); |
name: { |
||||
// trafficIncidentsCharts.setOption(trafficIncidentsCharts); |
type: String, |
||||
// }, |
}, |
||||
// methods: {}, |
}, |
||||
// }; |
data() { |
||||
|
return { |
||||
|
trafficIncidents: null, |
||||
|
formData: { |
||||
|
type: "day", |
||||
|
warningTime: "", |
||||
|
}, |
||||
|
searchFormList: [ |
||||
|
{ |
||||
|
label: "事件类型:", |
||||
|
key: "type", |
||||
|
type: "select", |
||||
|
default: "day", |
||||
|
options: { |
||||
|
clearable: true, |
||||
|
options: [ |
||||
|
{ |
||||
|
key: "day", |
||||
|
label: "天", |
||||
|
}, |
||||
|
{ |
||||
|
key: "month", |
||||
|
label: "月", |
||||
|
}, |
||||
|
{ |
||||
|
key: "year", |
||||
|
label: "年", |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
label: "日期:", |
||||
|
key: "warningTime", |
||||
|
required: true, |
||||
|
type: "datePicker", |
||||
|
options: { |
||||
|
valueFormat: "yyyy-MM-dd", |
||||
|
}, |
||||
|
visible: (data) => { |
||||
|
if (data.type == "day") { |
||||
|
return true; |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
label: "日期:", |
||||
|
key: "warningTime", |
||||
|
required: true, |
||||
|
type: "datePicker", |
||||
|
options: { |
||||
|
type: "month", |
||||
|
valueFormat: "yyyy-MM-dd", |
||||
|
}, |
||||
|
visible: (data) => { |
||||
|
if (data.type == "month") { |
||||
|
return true; |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
label: "日期:", |
||||
|
key: "warningTime", |
||||
|
required: true, |
||||
|
type: "datePicker", |
||||
|
options: { |
||||
|
type: "year", |
||||
|
valueFormat: "yyyy-MM-dd", |
||||
|
}, |
||||
|
visible: (data) => { |
||||
|
if (data.type == "year") { |
||||
|
return true; |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
}; |
||||
|
}, |
||||
|
watch: { |
||||
|
name: { |
||||
|
handler(newValue, oldValue) { |
||||
|
console.log("newValue", newValue); |
||||
|
if (newValue == "third") { |
||||
|
this.getWarningCharts(); |
||||
|
} |
||||
|
}, |
||||
|
deep: true, |
||||
|
}, |
||||
|
}, |
||||
|
mounted() {}, |
||||
|
methods: { |
||||
|
getWarningCharts() { |
||||
|
setTimeout(() => { |
||||
|
this.$nextTick(async () => { |
||||
|
(this.formData.warningTime = |
||||
|
moment(new Date()).format("YYYY-MM-DD") + " 00:00:01"), |
||||
|
(this.trafficIncidents = echarts.init(this.$refs.trafficIncidents)); |
||||
|
this.trafficIncidents.setOption(trafficIncidentsCharts2); |
||||
|
await this.getNonAutomaticWarningTimeType(this.formData); |
||||
|
}); |
||||
|
}); |
||||
|
}, |
||||
|
getNonAutomaticWarningTimeType(data) { |
||||
|
console.log("data", data); |
||||
|
return nonAutomaticWarningTimeType(data).then((res) => { |
||||
|
let newData = res.data; |
||||
|
let seriesData = []; |
||||
|
let xData = []; |
||||
|
let pieData = []; |
||||
|
let total = null; |
||||
|
|
||||
|
newData.forEach((item) => { |
||||
|
seriesData.push(item.number); |
||||
|
total += item.number; |
||||
|
|
||||
|
if (data.type === "day") { |
||||
|
xData.push(item.time); |
||||
|
pieData.push({ |
||||
|
value: item.number, |
||||
|
name: item.time, |
||||
|
}); |
||||
|
} else if (data.type === "month") { |
||||
|
xData.push(item.day); |
||||
|
pieData.push({ |
||||
|
value: item.number, |
||||
|
name: item.day, |
||||
|
}); |
||||
|
} else { |
||||
|
xData.push(item.month); |
||||
|
pieData.push({ |
||||
|
value: item.number, |
||||
|
name: item.month, |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
trafficIncidentsCharts2.series[0].data = pieData; |
||||
|
trafficIncidentsCharts2.xAxis.data = xData; |
||||
|
this.trafficIncidents.setOption(trafficIncidentsCharts2); |
||||
|
}); |
||||
|
}, |
||||
|
handleSearch(value) { |
||||
|
value.warningTime = value.warningTime + " 00:00:01"; |
||||
|
this.formData = { ...value }; |
||||
|
this.getNonAutomaticWarningTimeType(this.formData); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
</script> |
</script> |
||||
|
|
||||
<style lang="scss" scoped> |
<style lang="scss" scoped> |
||||
.Eventfiltering { |
.Eventfiltering { |
||||
width: 99%; |
width: 99%; |
||||
height: 100%; |
height: 94%; |
||||
margin: auto; |
margin: auto; |
||||
display: flex; |
|
||||
justify-content: space-between; |
.search-box { |
||||
} |
width: 402px !important; |
||||
.Eventfiltering-left { |
float: right; |
||||
width: 60%; |
} |
||||
height: 100%; |
|
||||
background-color: #fff; |
.Eventfiltering-content { |
||||
} |
width: 100%; |
||||
.Eventfiltering-right { |
height: 96%; |
||||
width: 40%; |
display: flex; |
||||
height: 100%; |
justify-content: space-between; |
||||
background-color: #fff; |
|
||||
|
.Eventfiltering-left { |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
} |
||||
|
} |
||||
} |
} |
||||
</style> |
</style> |
||||
|
@ -0,0 +1,95 @@ |
|||||
|
var options = { |
||||
|
title: { |
||||
|
// text: '单位/%',
|
||||
|
top: "0%", |
||||
|
left: "0%", |
||||
|
textStyle: { |
||||
|
fontSize: "10px", |
||||
|
fontWeight: 300, |
||||
|
color: "#B5C5D4", |
||||
|
opacity: 0.8, |
||||
|
}, |
||||
|
}, |
||||
|
tooltip: { |
||||
|
valueFormatter: function (value) { |
||||
|
return value + " 起"; |
||||
|
}, |
||||
|
}, |
||||
|
grid: { |
||||
|
left: "50px", |
||||
|
right: "0%", |
||||
|
top: "50px", |
||||
|
bottom: "5%", |
||||
|
containLabel: true, |
||||
|
}, |
||||
|
xAxis: { |
||||
|
type: "category", |
||||
|
data: [], |
||||
|
axisLine: { |
||||
|
lineStyle: { |
||||
|
color: "rgba(49, 217, 255, 0.8)", |
||||
|
}, |
||||
|
}, |
||||
|
axisTick: { |
||||
|
show: false, |
||||
|
}, |
||||
|
axisLabel: { |
||||
|
color: "#fff", |
||||
|
fontSize: "18px", |
||||
|
}, |
||||
|
}, |
||||
|
yAxis: [ |
||||
|
{ |
||||
|
// type: 'value',
|
||||
|
// min: function (value) {
|
||||
|
// return value.min*0.9;
|
||||
|
// },
|
||||
|
name: "交通事件(起)", |
||||
|
nameTextStyle: { |
||||
|
color: "#fff", |
||||
|
fontSize: 18, |
||||
|
align: "center", |
||||
|
}, |
||||
|
type: "value", |
||||
|
axisLine: { |
||||
|
show: false, |
||||
|
lineStyle: { |
||||
|
width: 1, |
||||
|
color: "#545454", |
||||
|
}, |
||||
|
}, |
||||
|
splitLine: { |
||||
|
lineStyle: { |
||||
|
color: "rgba(49, 217, 255, 0.5)", |
||||
|
}, |
||||
|
}, |
||||
|
axisTick: { |
||||
|
show: false, |
||||
|
}, |
||||
|
axisLabel: { |
||||
|
color: "#fff", |
||||
|
fontSize: "18px", |
||||
|
formatter: (value) => { |
||||
|
return value; |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
series: [ |
||||
|
{ |
||||
|
// name: '审限内结案率',
|
||||
|
data: [5, 10, 20, 30], |
||||
|
type: "pictorialBar", |
||||
|
symbol: "roundRect", |
||||
|
symbolRepeat: true, |
||||
|
symbolSize: [13, 4], |
||||
|
// symbolOffset: symbolOffset,
|
||||
|
// barWidth:'40%',
|
||||
|
itemStyle: { |
||||
|
color: "#20E7FF", |
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
}; |
||||
|
|
||||
|
export default options; |
Loading…
Reference in new issue