yyl
10 months ago
11 changed files with 974 additions and 549 deletions
@ -1,391 +1,176 @@ |
|||
var res = [ |
|||
{ value: 50, name: '情报板发布' }, |
|||
{ value: 1, name: '' }, |
|||
{ value: 20, name: '微博发布' }, |
|||
{ value: 1, name: '' }, |
|||
{ value: 30, name: '服务网站' }, |
|||
{ value: 1, name: '' }, |
|||
]; |
|||
// var res = this.evaluatedCountList;
|
|||
var data1 = [], data2 = [], data3 = [], legendData = []; |
|||
var curIndex = 0; |
|||
var index = 0; |
|||
let angle = 0; //角度,用来做简单的动画效果的
|
|||
|
|||
for (var i = 0; i < res.length; i++) { |
|||
|
|||
data1.push({ |
|||
value: res[i].value, |
|||
name: res[i].name, |
|||
}) |
|||
data2.push({ |
|||
value: res[i].value, |
|||
name: res[i].name, |
|||
itemStyle: { |
|||
opacity: 0.4, |
|||
}, |
|||
}) |
|||
|
|||
data3.push({ |
|||
value: res[i].value, |
|||
name: res[i].name, |
|||
itemStyle: { |
|||
opacity: 0.1, |
|||
}, |
|||
}) |
|||
if ( res[i].name != "" ) |
|||
legendData.push(res[i].name); |
|||
} |
|||
|
|||
var options = { |
|||
color: ['#5CC5FF', 'transparent', '#54EFD5', 'transparent', '#FD9666', 'transparent', '#5C8CFE', 'transparent', '#51D5AD', 'transparent'], |
|||
title: [ |
|||
{ |
|||
text:'999', |
|||
top: '25%', |
|||
textAlign: 'center', |
|||
left: '50%', |
|||
textStyle: { |
|||
color: '#ffffff', |
|||
fontSize: 30, |
|||
fontFamily: 'SourceHanSansCN', |
|||
}, |
|||
}, |
|||
{ |
|||
text: '总数', |
|||
top: '38%', |
|||
textAlign: 'center', |
|||
left: '50%', |
|||
import * as echarts from "echarts"; |
|||
var options = { |
|||
tooltip: { |
|||
showContent: true, |
|||
trigger: 'axis', |
|||
backgroundColor: 'rgba(8,36,68,.7)', |
|||
color: '#fff', |
|||
textStyle: { |
|||
color: 'rgba(242, 252, 253, 0.84)', |
|||
fontSize: 16, |
|||
fontFamily: 'SourceHanSansCN', |
|||
}, |
|||
color: '#fff', |
|||
}, |
|||
], |
|||
grid: { |
|||
top: '3%', |
|||
left: '6%', |
|||
right: '6%', |
|||
bottom: '3%', |
|||
containLabel: true |
|||
}, |
|||
tooltip: { |
|||
trigger: 'item', |
|||
formatter: '{b} : {c}:{d}' |
|||
}, |
|||
legend: { |
|||
orient: '', |
|||
left: '10%', |
|||
top: '68%', |
|||
top: '5%', |
|||
right: '10', |
|||
icon: 'circle', |
|||
itemWidth: 10, |
|||
itemHeight: 10, |
|||
icon:"circle", |
|||
textStyle: { |
|||
color: "#ffffff", |
|||
fontSize: 14, |
|||
lineHeight: 22, |
|||
rich: { |
|||
text: { |
|||
marginLeft:32, |
|||
fontSize: 14, |
|||
}, |
|||
number: { |
|||
fontSize: 14, |
|||
color: "#37E7FF", |
|||
marginLeft:32, |
|||
fontWeight: 'bold' |
|||
}, |
|||
unit: { |
|||
fontSize: 14, |
|||
} |
|||
} |
|||
color: '#fff', |
|||
fontSize: 12, |
|||
}, |
|||
data: legendData, |
|||
formatter(name) { |
|||
if ( name == "" ) return ""; |
|||
const newData = res; |
|||
let tarValue = 0; |
|||
let total = 0; |
|||
for (let i = 0; i < newData.length; i++) { |
|||
total += newData[i].value; |
|||
if (newData[i].name === name) { |
|||
tarValue = newData[i].value; |
|||
} |
|||
} |
|||
var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2); |
|||
const arr = name + ' ' + tarValue; |
|||
return `{text|${name}} {number|${percert}%}`;; |
|||
}, |
|||
grid: { |
|||
left: '30%', |
|||
right: '20%', |
|||
top: '10%', |
|||
bottom: '10%', |
|||
// width: 250,
|
|||
}, |
|||
series: [ |
|||
/** 饼图上刻度 */ |
|||
xAxis: [ |
|||
{ |
|||
type: 'gauge', |
|||
center: ['50%', '35%'], |
|||
radius: '40%', // 错位调整此处
|
|||
startAngle: 0, |
|||
endAngle: 360, |
|||
splitNumber: 52, |
|||
axisLine: { show: false }, |
|||
splitLine: { |
|||
// length: 39,
|
|||
length: '2', |
|||
lineStyle: { |
|||
width: 5, |
|||
color: '#5CC5FF' |
|||
} |
|||
show: false, |
|||
}, |
|||
axisTick: { show: false }, |
|||
axisLabel: { show: false } |
|||
type: 'value', |
|||
show: false, |
|||
}, |
|||
/** 绘制外部圆弧-2-开始圆点 <left-top> */ |
|||
], |
|||
yAxis: [ |
|||
{ |
|||
type: 'custom', |
|||
coordinateSystem: 'none', |
|||
renderItem: (params, api) => { |
|||
let x0 = api.getWidth() / 2; |
|||
let y0 = api.getHeight() / 2 - 59; |
|||
let r = Math.min(api.getWidth(), api.getHeight()) / 2 * 0.50; |
|||
return { |
|||
type: 'circle', |
|||
shape: { |
|||
/** 角度175° 外弧2开始角度 */ |
|||
cx: x0 + r * Math.cos((350 + -angle) * Math.PI / 180), |
|||
cy: y0 + r * Math.sin((350 + -angle) * Math.PI / 180), |
|||
r: 4 |
|||
}, |
|||
style: { |
|||
fill: '#5BC4FF', |
|||
stroke: '#5BC4FF' |
|||
}, |
|||
silent: true |
|||
} |
|||
}, |
|||
data: [0] |
|||
splitLine: { |
|||
show: false, |
|||
}, |
|||
{ |
|||
type: 'custom', |
|||
coordinateSystem: 'none', |
|||
renderItem: (params, api) => { |
|||
return { |
|||
type: 'arc', |
|||
shape: { |
|||
cx: api.getWidth() / 2, |
|||
cy: api.getHeight() / 2 - 59, |
|||
r: Math.min(api.getWidth(), api.getHeight()) / 2 * 0.50, |
|||
startAngle: (350 + -angle) * Math.PI / 180, |
|||
endAngle: (120 + -angle) * Math.PI / 180 |
|||
axisLine: { |
|||
//y轴
|
|||
show: false, |
|||
}, |
|||
style: { |
|||
fill: 'transparent', |
|||
stroke: '#5BC4FF66', |
|||
lineWidth: 2.6 |
|||
type: 'category', |
|||
axisTick: { |
|||
show: false, |
|||
}, |
|||
silent: true |
|||
} |
|||
inverse: true, |
|||
data: [ |
|||
'大学城收费站', |
|||
'大学城收费站', |
|||
'大学城收费站', |
|||
'大学城收费站', |
|||
'大学城收费站', |
|||
], |
|||
axisLabel: { |
|||
color: '#fff', |
|||
fontSize: 14, |
|||
margin:20, |
|||
}, |
|||
data: [0] |
|||
}, |
|||
{ |
|||
type: 'custom', |
|||
coordinateSystem: 'none', |
|||
renderItem: (params, api) => { |
|||
let x0 = api.getWidth() / 2; |
|||
let y0 = api.getHeight() / 2 - 59; |
|||
let r = Math.min(api.getWidth(), api.getHeight()) / 2 * 0.50; |
|||
return { |
|||
type: 'circle', |
|||
shape: { |
|||
/** 角度175° 外弧2开始角度 */ |
|||
cx: x0 + r * Math.cos((150 + -angle) * Math.PI / 180), |
|||
cy: y0 + r * Math.sin((150 + -angle) * Math.PI / 180), |
|||
r: 4 |
|||
}, |
|||
style: { |
|||
fill: '#5BC4FF', |
|||
stroke: '#5BC4FF' |
|||
type: 'category', |
|||
inverse: true, |
|||
axisTick: 'none', |
|||
axisLine: 'none', |
|||
show: true, |
|||
axisLabel: { |
|||
textStyle: { |
|||
color: '#A7D6F4', |
|||
fontSize: '14', |
|||
}, |
|||
silent: true |
|||
} |
|||
}, |
|||
data: [0] |
|||
// data: value,
|
|||
data: [900, 380, 360, 340, 320], |
|||
}, |
|||
], |
|||
series: [ |
|||
{ |
|||
type: 'custom', |
|||
coordinateSystem: 'none', |
|||
renderItem: (params, api) => { |
|||
return { |
|||
type: 'arc', |
|||
shape: { |
|||
cx: api.getWidth() / 2, |
|||
cy: api.getHeight() / 2 - 59, |
|||
r: Math.min(api.getWidth(), api.getHeight()) / 2 * 0.50, |
|||
startAngle: (150 + -angle) * Math.PI / 180, |
|||
endAngle: (-30 + -angle) * Math.PI / 180 |
|||
}, |
|||
style: { |
|||
fill: 'transparent', |
|||
stroke: '#5BC4FF66', |
|||
lineWidth: 2.6 |
|||
}, |
|||
silent: true |
|||
} |
|||
}, |
|||
data: [0] |
|||
name: '收费站限行(次)', |
|||
type: 'bar', |
|||
barGap: '120%', |
|||
barWidth: 10, // 柱子宽度
|
|||
showBackground: true, |
|||
MaxSize: 0, |
|||
backgroundStyle: { |
|||
color: '#0BA7DA32', |
|||
}, |
|||
label: { |
|||
show: false, |
|||
// color: '#A7D6F4',
|
|||
// fontSize: 14,
|
|||
// distance: 20, // 距离
|
|||
// formatter: '{c} ', // 这里是数据展示的时候显示的数据
|
|||
// align: "center",
|
|||
// position: [290, 0]
|
|||
}, // 柱子上方的数值
|
|||
itemStyle: { |
|||
barBorderRadius: [0, 4, 4, 0], // 圆角(左上、右上、右下、左下)
|
|||
color: new echarts.graphic.LinearGradient( |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
[ |
|||
{ |
|||
type: 'custom', |
|||
coordinateSystem: 'none', |
|||
renderItem: (params, api) => { |
|||
let x0 = api.getWidth() / 2; |
|||
let y0 = api.getHeight() / 2 - 59; |
|||
let r = Math.min(api.getWidth(), api.getHeight()) / 2 * 0.56; |
|||
return { |
|||
type: 'circle', |
|||
shape: { |
|||
/** 角度175° 外弧2开始角度 */ |
|||
cx: x0 + r * Math.cos((590 + -angle) * Math.PI / 180), |
|||
cy: y0 + r * Math.sin((590 + -angle) * Math.PI / 180), |
|||
r: 4 |
|||
}, |
|||
style: { |
|||
fill: '#5BC4FF', |
|||
stroke: '#5BC4FF' |
|||
}, |
|||
silent: true |
|||
} |
|||
}, |
|||
data: [0] |
|||
offset: 0, |
|||
color: '#48d0ca', |
|||
}, |
|||
{ |
|||
type: 'custom', |
|||
coordinateSystem: 'none', |
|||
renderItem: (params, api) => { |
|||
return { |
|||
type: 'arc', |
|||
shape: { |
|||
cx: api.getWidth() / 2, |
|||
cy: api.getHeight() / 2 - 59, |
|||
r: Math.min(api.getWidth(), api.getHeight()) / 2 * 0.56, |
|||
startAngle: (590 + -angle) * Math.PI / 180, |
|||
endAngle: (350 + -angle) * Math.PI / 180 |
|||
}, |
|||
style: { |
|||
fill: 'transparent', |
|||
stroke: '#5BC4FF66', |
|||
lineWidth: 2.6 |
|||
}, |
|||
silent: true |
|||
} |
|||
}, |
|||
data: [0] |
|||
offset: 0.5, |
|||
color: '#61D8FF', |
|||
}, |
|||
{ |
|||
type: 'custom', |
|||
coordinateSystem: 'none', |
|||
renderItem: (params, api) => { |
|||
let x0 = api.getWidth() / 2; |
|||
let y0 = api.getHeight() / 2 - 59; |
|||
let r = Math.min(api.getWidth(), api.getHeight()) / 2 * 0.56; |
|||
return { |
|||
type: 'circle', |
|||
shape: { |
|||
/** 角度175° 外弧2开始角度 */ |
|||
cx: x0 + r * Math.cos((90 + -angle) * Math.PI / 180), |
|||
cy: y0 + r * Math.sin((90 + -angle) * Math.PI / 180), |
|||
r: 4 |
|||
}, |
|||
style: { |
|||
fill: '#5BC4FF', |
|||
stroke: '#5BC4FF' |
|||
offset: 1, |
|||
color: '#61D8FF00', |
|||
}, |
|||
silent: true |
|||
} |
|||
], |
|||
false |
|||
), // 渐变
|
|||
}, |
|||
data: [0] |
|||
data: [900, 380, 360, 340, 320], |
|||
}, |
|||
{ |
|||
type: 'custom', |
|||
coordinateSystem: 'none', |
|||
renderItem: (params, api) => { |
|||
return { |
|||
type: 'arc', |
|||
shape: { |
|||
cx: api.getWidth() / 2, |
|||
cy: api.getHeight() / 2 - 59, |
|||
r: Math.min(api.getWidth(), api.getHeight()) / 2 * 0.56, |
|||
startAngle: (90 + -angle) * Math.PI / 180, |
|||
endAngle: (160 + -angle) * Math.PI / 180 |
|||
}, |
|||
style: { |
|||
fill: 'transparent', |
|||
stroke: '#5BC4FF66', |
|||
lineWidth: 2.6 |
|||
name: '收费站封闭(次)', |
|||
type: 'bar', |
|||
barWidth: 10, // 柱子宽度
|
|||
showBackground: true, |
|||
MaxSize: 0, |
|||
backgroundStyle: { |
|||
color: '#0BA7DA32', |
|||
}, |
|||
silent: true |
|||
} |
|||
}, |
|||
data: [0] |
|||
}, |
|||
{ |
|||
type: 'pie', |
|||
radius: ['45%', '39%'], |
|||
center: ['50%', '35%'], |
|||
z: 10, |
|||
label: { |
|||
show: false, |
|||
position: 'center', |
|||
formatter: (params) => { |
|||
return params.name + "\r\n" + params.value |
|||
}, |
|||
rich: { |
|||
total: { |
|||
fontSize: 16, |
|||
color: '#04F5FE', |
|||
}, |
|||
efficiency: { |
|||
fontSize: 12, |
|||
color: '#00FD6D', |
|||
}, |
|||
}, |
|||
color: '#FFFFFF', |
|||
fontSize: 12, |
|||
lineHeight: 16, |
|||
}, |
|||
data: data1, |
|||
labelLine: { |
|||
show: false, |
|||
}, |
|||
// color: '#A7D6F4',
|
|||
// fontSize: 14,
|
|||
// distance: 20, // 距离
|
|||
// formatter: '{c} ', // 这里是数据展示的时候显示的数据
|
|||
// align: "center",
|
|||
position: ['100%', 0] |
|||
}, // 柱子上方的数值
|
|||
itemStyle: { |
|||
normal: { |
|||
borderWidth: 6, |
|||
shadowBlur: 10, |
|||
borderRadius: 50, // 圆角
|
|||
} |
|||
} |
|||
barBorderRadius: [0, 4, 4, 0], // 圆角(左上、右上、右下、左下)
|
|||
color: new echarts.graphic.LinearGradient( |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
[ |
|||
{ |
|||
offset: 0, |
|||
color: '#FF6969', |
|||
}, |
|||
{ |
|||
type: 'pie', |
|||
radius: ['25%', '39%'], |
|||
center: ['50%', '35%'], |
|||
label: { |
|||
show: false, |
|||
offset: 0.5, |
|||
color: '#FF696955', |
|||
}, |
|||
data: data2, |
|||
labelLine: { |
|||
show: false, |
|||
{ |
|||
offset: 1, |
|||
color: '#FFB90410', |
|||
}, |
|||
itemStyle: { |
|||
normal: { |
|||
borderWidth: 6, |
|||
shadowBlur: 10, |
|||
borderRadius: 0, // 圆角
|
|||
} |
|||
} |
|||
], |
|||
false |
|||
), // 渐变
|
|||
}, |
|||
data: [900, 380, 360, 340, 320, 300, 280, 260, 400, 380, 360, 340, 320, 300, 280, 260], |
|||
}, |
|||
], |
|||
}; |
|||
|
|||
}; |
|||
|
|||
export default options |
|||
export default options; |
@ -1,180 +1,317 @@ |
|||
import * as echarts from "echarts"; |
|||
|
|||
/* 数据 */ |
|||
let nameList = ["00:00", "02:00", "04:00", "06:00", "08:00", "10:00", "12:00", "14:00", "16:00", "18:00", "20:00", "22:00"]; // 类别
|
|||
let valueList = [800, 520, 650, 950, 420, 600, 450, 720, 303, 503 , 203 ,703 , 903 ]; // 人数
|
|||
var yList = [ "1000","800","轻度拥堵","基本畅通","畅通"] |
|||
/* 数据整合 */ |
|||
let dataList = []; |
|||
nameList.map((item, index) => { |
|||
if (index === 4) { |
|||
dataList.push({ |
|||
name: item, |
|||
value: valueList[index], |
|||
itemStyle: { |
|||
color: { |
|||
type: 'linear', |
|||
x: 0, |
|||
y: 0, |
|||
x2: 0, |
|||
y2: 1, |
|||
colorStops: [{ |
|||
offset: 0, color: '#FFB904' // 0% 处的颜色
|
|||
}, { |
|||
offset: 1, color: '#FF6969' // 100% 处的颜色
|
|||
}], |
|||
global: false // 缺省为 false
|
|||
}, |
|||
borderRadius: 6 |
|||
}, |
|||
label: { show: false } |
|||
}) |
|||
} else { |
|||
dataList.push({ |
|||
name: item, |
|||
value: valueList[index], |
|||
itemStyle:{ |
|||
borderRadius: 6 |
|||
} |
|||
}) |
|||
} |
|||
}) |
|||
|
|||
var options = { |
|||
legend: { |
|||
// orient: 'vertical',
|
|||
icon: "circle", |
|||
itemHeight: 8, |
|||
itemWidth: 8, |
|||
top: "5%", |
|||
x: "right", |
|||
let xData = [ |
|||
"大学城-长清", |
|||
"长清-孝里", |
|||
"孝里-平阴北", |
|||
"平阴北-平阴", |
|||
"平阴-平阴南", |
|||
"平阴南-东平", |
|||
"东平-梁山东", |
|||
"梁山东-梁山", |
|||
"梁山-嘉祥西", |
|||
"梁山东-梁山", |
|||
]; |
|||
let data1 = [200, 530, 920, 400, 600, 700, 300, 800, 900, 120]; |
|||
let data2= [120, 340, 750, 600, 400, 700, 900, 200, 540, 320]; |
|||
let data3 = [200, 530, 920, 400, 600, 700, 300, 800, 900, 120]; |
|||
let options = { |
|||
tooltip: { |
|||
show:false, |
|||
trigger: "axis", |
|||
axisPointer: { |
|||
// 坐标轴指示器,坐标轴触发有效
|
|||
type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
|
|||
}, |
|||
textStyle: { |
|||
color: "#fff", |
|||
fontSize: 14, |
|||
}, |
|||
backgroundColor: "rgba(3, 31, 71, .0)", //设置背景颜色
|
|||
borderColor: "rgba(3, 31, 71, .0)", |
|||
formatter: "健康监测<br>{b1}:{c1}人", |
|||
}, |
|||
grid: { |
|||
top: '20%',//上边距
|
|||
right: '0',//右边距
|
|||
left: '0',//左边距
|
|||
bottom: "10%",//下边距
|
|||
left: "2%", |
|||
right: "4%", |
|||
top: "10%", |
|||
bottom: "5%", |
|||
containLabel: true, |
|||
}, |
|||
xAxis: { |
|||
type: 'category', |
|||
data: nameList, |
|||
data: xData, |
|||
show: true, |
|||
axisTick: { |
|||
show: false //隐藏X轴刻度
|
|||
show: false, |
|||
lineStyle: { |
|||
color: "#fff", |
|||
}, |
|||
}, |
|||
axisLine: { |
|||
lineStyle: { |
|||
color: "rgba(49, 217, 255, 0.8)" |
|||
} |
|||
color: "#1C82C5", |
|||
}, |
|||
axisLabel: { |
|||
show: true, |
|||
color: '#B6E6FF', |
|||
fontSize:8, |
|||
fontFamily: 'Source Han Sans CN-Regular', |
|||
}, |
|||
}, |
|||
yAxis: [{ |
|||
type: 'value', |
|||
name: "", |
|||
max: 1000, |
|||
min:0, |
|||
splitNumber:5, |
|||
nameTextStyle: { |
|||
color: '#B6E6FF', |
|||
fontSize: 13, |
|||
fontFamily: 'Source Han Sans CN-Regular', |
|||
align: "left", |
|||
verticalAlign: "center", |
|||
}, |
|||
axisLabel: { |
|||
fontSize: 13, |
|||
color: '#B6E6FF', |
|||
fontFamily: 'HarmonyOS Sans-Regular', |
|||
// formatter:function(value,index){
|
|||
// return yList[index]
|
|||
// }
|
|||
interval: 0, |
|||
align: "center", |
|||
rotate: "1", |
|||
margin: "20", |
|||
textStyle: { |
|||
fontSize: 12, |
|||
color: "#50A2C1", |
|||
}, |
|||
}, |
|||
}, |
|||
yAxis: [ |
|||
{ |
|||
min: 0, |
|||
axisLine: { |
|||
show: false, |
|||
lineStyle: { |
|||
color: "#1C82C5", |
|||
}, |
|||
axisTick: { |
|||
show: false |
|||
}, |
|||
splitLine: { |
|||
show: true, |
|||
lineStyle: { |
|||
color: 'rgba(49, 217, 255, 0.5)', |
|||
color: "rgba(28, 130, 197, .3)", |
|||
type: "solid", |
|||
}, |
|||
}, |
|||
axisLabel: { |
|||
color: "#DEEBFF", |
|||
textStyle: { |
|||
fontSize: 12, |
|||
}, |
|||
}, |
|||
axisTick: { |
|||
show: false, |
|||
}, |
|||
}, |
|||
], |
|||
legend: { |
|||
// orient: 'vertical',
|
|||
icon: "circle", |
|||
itemHeight: 6, |
|||
itemWidth: 6, |
|||
top: "5%", |
|||
right: "10%", |
|||
textStyle: { |
|||
color: "#fff", |
|||
}, |
|||
|
|||
data:[ |
|||
{ |
|||
name:"交通特征", |
|||
itemStyle:{ |
|||
color:'#51BFA4', |
|||
}, |
|||
}, |
|||
{ |
|||
name:"饱和度", |
|||
itemStyle:{ |
|||
color:'#08BAF4', |
|||
}, |
|||
}, |
|||
{ |
|||
name:"拥挤度", |
|||
itemStyle:{ |
|||
color:'#E2BA74', |
|||
}, |
|||
} |
|||
], |
|||
}, |
|||
}], |
|||
series: [ |
|||
{ |
|||
name: '感知事件', |
|||
type: 'line', |
|||
symbol: 'circle', |
|||
symbolSize: 0, |
|||
smooth: true, |
|||
areaStyle: { |
|||
width: 4, |
|||
opacity: 0.25, |
|||
color: { |
|||
type: 'linear', |
|||
x: 0, |
|||
y: 0, |
|||
x2: 0, |
|||
y2: 1, |
|||
colorStops: [ |
|||
{ offset: 0.389, color: "#32BB8A99" }, |
|||
{ offset: 1, color: "#32BB8A00" }, |
|||
name: "饱和度", |
|||
type: "bar", |
|||
barWidth: "10px", |
|||
selectedMode:false, |
|||
select:{ |
|||
itemStyle:{ |
|||
|
|||
opacity: 1, |
|||
color: function (params) { |
|||
var a = params; |
|||
|
|||
return new echarts.graphic.LinearGradient( |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
[ |
|||
{ |
|||
offset: 0, |
|||
color: "#1AC5FD", // 0% 处的颜色
|
|||
}, |
|||
{ |
|||
offset: 1, |
|||
color: "#003B4E", // 100% 处的颜色
|
|||
}, |
|||
], |
|||
global: false, |
|||
false |
|||
); |
|||
}, |
|||
}, |
|||
}, |
|||
// yAxisIndex: 1, // 与第二个 y 轴关联
|
|||
itemStyle: { |
|||
color: '#32BB8A', |
|||
barBorderRadius: [10, 10, 10, 10], // 圆角(左上、右上、右下、左下)
|
|||
// lenged文本
|
|||
opacity: 1, |
|||
color: function (params) { |
|||
var a = params.name; |
|||
console.log("==========a=============",a); |
|||
return new echarts.graphic.LinearGradient( |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
[ |
|||
{ |
|||
offset: 0, |
|||
color: "#00A3FF", // 0% 处的颜色
|
|||
}, |
|||
lineStyle: { |
|||
width:2, |
|||
{ |
|||
offset: 1, |
|||
color: "#00A3FF00", // 100% 处的颜色
|
|||
}, |
|||
|
|||
data: [1000, 800, 520, 600, 900, 700, 700,1000, 800, 520, 600, 900, 700, 700], // 折线图的数据
|
|||
], |
|||
false |
|||
); |
|||
}, |
|||
}, |
|||
data: data2, |
|||
}, |
|||
// 下半截柱状图linear-gradient(180deg, #61D8FF 0%, #003B4E 100%); linear-gradient(180deg, #06D7B1 0%, #003B4E 100%)
|
|||
{ |
|||
name: '交通事件', |
|||
type: 'line', |
|||
symbol: 'circle', |
|||
symbolSize: 0, |
|||
name: "交通特征", |
|||
type: "bar", |
|||
barWidth: "10px", |
|||
barGap: "120%", |
|||
selectedMode:false, |
|||
select:{ |
|||
itemStyle:{ |
|||
opacity: 1, |
|||
color: function (params) { |
|||
var a = params; |
|||
|
|||
// yAxisIndex: 1, // 与第二个 y 轴关联
|
|||
return new echarts.graphic.LinearGradient( |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
[ |
|||
{ |
|||
offset: 0, |
|||
color: "#00E4BB53", // 0% 处的颜色
|
|||
}, |
|||
{ |
|||
offset: 1, |
|||
color: "#00E4BB53", // 100% 处的颜色
|
|||
}, |
|||
], |
|||
false |
|||
); |
|||
}, |
|||
}, |
|||
}, |
|||
itemStyle: { |
|||
color: '#E2BA74', |
|||
// lenged文本
|
|||
barBorderRadius: [10, 10, 10, 10], // 圆角(左上、右上、右下、左下)
|
|||
opacity: 1, |
|||
color: function (params) { |
|||
var a = params.name; |
|||
console.log("==========a=============",a); |
|||
return new echarts.graphic.LinearGradient( |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
[ |
|||
{ |
|||
offset: 0, |
|||
color: "#01D2EE", // 0% 处的颜色
|
|||
}, |
|||
{ |
|||
offset: 1, |
|||
color: "#01D2EE00", // 100% 处的颜色
|
|||
}, |
|||
], |
|||
false |
|||
); |
|||
}, |
|||
}, |
|||
data: data1, |
|||
}, |
|||
// 进度条的小圆圈
|
|||
{ |
|||
name: "拥挤度", |
|||
type: "bar", |
|||
barWidth: "10px", |
|||
selectedMode:false, |
|||
select:{ |
|||
itemStyle:{ |
|||
opacity: 1, |
|||
color: function (params) { |
|||
var a = params; |
|||
|
|||
return new echarts.graphic.LinearGradient( |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
[ |
|||
{ |
|||
offset: 0, |
|||
color: "#1AC5FD", // 0% 处的颜色
|
|||
}, |
|||
{ |
|||
offset: 1, |
|||
color: "#003B4E", // 100% 处的颜色
|
|||
}, |
|||
lineStyle: { |
|||
width: 2, |
|||
}, |
|||
smooth: true, |
|||
areaStyle: { |
|||
width: 4, |
|||
opacity: 0.25, |
|||
color: { |
|||
type: 'linear', |
|||
x: 0, |
|||
y: 0, |
|||
x2: 0, |
|||
y2: 1, |
|||
colorStops: [ |
|||
{ offset: 0.389, color: "##E2BA7490" }, |
|||
{ offset: 1, color: "##E2BA7400" }, |
|||
], |
|||
global: false, |
|||
false |
|||
); |
|||
}, |
|||
}, |
|||
}, |
|||
data: [600, 700, 900, 400, 500, 800, 600,600, 700, 900, 400, 500, 800, 600], // 折线图的数据
|
|||
itemStyle: { |
|||
barBorderRadius: [10, 10, 10, 10], // 圆角(左上、右上、右下、左下)
|
|||
// lenged文本
|
|||
opacity:1, |
|||
color: function (params) { |
|||
var a = params.name; |
|||
console.log("==========a=============",a); |
|||
return new echarts.graphic.LinearGradient( |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
[ |
|||
{ |
|||
offset: 0, |
|||
color: "#32BB8A", // 0% 处的颜色
|
|||
}, |
|||
] |
|||
} |
|||
{ |
|||
offset: 1, |
|||
color: "#32BB8A00", // 100% 处的颜色
|
|||
}, |
|||
], |
|||
false |
|||
); |
|||
}, |
|||
}, |
|||
data: data2, |
|||
}, |
|||
{ |
|||
name: '路段里程数', |
|||
stack: '我不叠加',//添加stack属性,相同的stack值的数据类型将会叠加不并列,值为自定义值
|
|||
type: 'line',//换为line 实现折线与柱状图
|
|||
data: data3, |
|||
color:"#E2BA74" |
|||
} |
|||
], |
|||
}; |
|||
|
|||
|
|||
export default options; |
|||
export default options; |
@ -0,0 +1,157 @@ |
|||
let zData = ["侧翻", "撞障碍物", "自燃", "追尾", "撞护栏", "货物洒落"]; |
|||
let lc = [450, 500, 250, 340,450, 500]; |
|||
let lc2 = [400, 550, 200, 140,400, 550]; |
|||
let options = { |
|||
|
|||
tooltip: { |
|||
show: true, |
|||
trigger: "axis", |
|||
backgroundColor: "rgba(17,95,182,0.5)", //设置背景颜色
|
|||
textStyle: { |
|||
color: "#fff", |
|||
}, |
|||
formatter: "{b}:{c}人", |
|||
}, |
|||
grid: { |
|||
right: "4%", |
|||
top: "12%", |
|||
left: "2%", |
|||
bottom: "0%", |
|||
containLabel: true, |
|||
}, |
|||
xAxis: { |
|||
type: "category", |
|||
boundaryGap: true, |
|||
data: zData, |
|||
axisLabel: { |
|||
interval: 0, |
|||
textStyle: { |
|||
color: "rgba(255, 255, 255, 0.80)", |
|||
fontSize: 16 |
|||
}, |
|||
}, |
|||
axisTick: { |
|||
//坐标轴刻度相关设置。
|
|||
show: false, |
|||
}, |
|||
axisLine: { |
|||
//坐标轴轴线相关设置
|
|||
lineStyle: { |
|||
color: "#fff", |
|||
}, |
|||
}, |
|||
splitLine: { |
|||
//坐标轴在 grid 区域中的分隔线。
|
|||
show: false, |
|||
}, |
|||
}, |
|||
yAxis: [ |
|||
{ |
|||
type: "value", |
|||
splitNumber: 6, |
|||
axisLabel: { |
|||
show: true, |
|||
textStyle: { |
|||
color: "rgba(255, 255, 255, 0.90)", |
|||
fontSize: 16 |
|||
}, |
|||
}, |
|||
axisLine: { |
|||
show: false, |
|||
}, |
|||
axisTick: { |
|||
show: false, |
|||
}, |
|||
splitLine: { |
|||
show: true, |
|||
lineStyle: { |
|||
color: "rgba(255, 255, 255, 0.40)", |
|||
}, |
|||
}, |
|||
}, |
|||
], |
|||
series: [ |
|||
{ |
|||
name: "从业人员", |
|||
type: "pictorialBar", |
|||
stack: "数量", |
|||
label: { |
|||
normal: { |
|||
show: false, |
|||
position: "top", |
|||
textStyle: { |
|||
color: "#FFFFFF", |
|||
fontSize: 16, |
|||
}, |
|||
}, |
|||
}, |
|||
itemStyle: { |
|||
normal: { |
|||
color: { |
|||
type: "linear", |
|||
x: 0, |
|||
y: 0, |
|||
x2: 0, |
|||
y2: 1, |
|||
colorStops: [ |
|||
{ |
|||
offset: 0, |
|||
color: "#0085FF", // 0% 处的颜色
|
|||
}, |
|||
{ |
|||
offset: 1, |
|||
color: "#0085FF00", // 100% 处的颜色
|
|||
}, |
|||
], |
|||
globalCoord: false, // 缺省为 false
|
|||
} |
|||
}, |
|||
}, |
|||
symbol: "path://M48 0 L49 17 C52 72 68 125 96 173 H0 C25 125 41 73 46 19 L48 0Z", |
|||
data: lc, |
|||
}, |
|||
{ |
|||
name: "去年同期数量", |
|||
type: "pictorialBar", |
|||
stack: "else", |
|||
barGap: "10%", |
|||
boundaryGap:"100%", |
|||
label: { |
|||
normal: { |
|||
show: false, |
|||
position: "top", |
|||
textStyle: { |
|||
color: "#FFFFFF", |
|||
fontSize: 16, |
|||
}, |
|||
}, |
|||
}, |
|||
itemStyle: { |
|||
normal: { |
|||
color: { |
|||
type: "linear", |
|||
x: 0, |
|||
y: 0, |
|||
x2: 0, |
|||
y2: 1, |
|||
colorStops: [ |
|||
{ |
|||
offset: 0, |
|||
color: "#01D2EE", // 0% 处的颜色
|
|||
}, |
|||
{ |
|||
offset: 1, |
|||
color: "rgba(0, 194, 255,0)", // 100% 处的颜色
|
|||
}, |
|||
], |
|||
globalCoord: false, // 缺省为 false
|
|||
} |
|||
}, |
|||
}, |
|||
symbol: "path://M48 0 L49 17 C52 72 68 125 96 173 H0 C25 125 41 73 46 19 L48 0Z", |
|||
data: lc2, |
|||
}, |
|||
], |
|||
}; |
|||
|
|||
export default options; |
@ -0,0 +1,144 @@ |
|||
const sxnja = [ |
|||
400,400,400 |
|||
]; |
|||
const sxnja2 = [ |
|||
700,700,700 |
|||
]; |
|||
|
|||
const minNumber = 90; |
|||
const minArray = []; |
|||
sxnja.map((value) => { |
|||
minArray.push(parseFloat((value - minNumber).toFixed(2))) |
|||
}) |
|||
console.log(minArray) |
|||
let xaxisData = [ |
|||
'客车', |
|||
'货车', |
|||
'专项车', |
|||
]; |
|||
|
|||
var options = { |
|||
title: { |
|||
text: '单位/%', |
|||
top: '4%', |
|||
left: '3%', |
|||
textStyle: { |
|||
fontSize: '10px', |
|||
fontWeight: 300, |
|||
color: '#B5C5D4', |
|||
opacity: 0.8 |
|||
} |
|||
}, |
|||
tooltip: { |
|||
valueFormatter: function (value) { |
|||
return (value + minNumber).toFixed(2) + ' %'; |
|||
} |
|||
}, |
|||
legend: { |
|||
// orient: 'vertical',
|
|||
icon: "circle", |
|||
itemHeight: 6, |
|||
itemWidth: 6, |
|||
top: "5%", |
|||
right: "0%", |
|||
textStyle: { |
|||
fontSize:10, |
|||
color: "#fff", |
|||
}, |
|||
}, |
|||
grid: { |
|||
left: '1%', |
|||
right: '0%', |
|||
top: '16%', |
|||
bottom: '0%', |
|||
containLabel: true |
|||
}, |
|||
xAxis: { |
|||
type: 'category', |
|||
data: xaxisData, |
|||
axisLine: { |
|||
show: true, |
|||
lineStyle: { |
|||
width: 1, |
|||
color: '#545454' |
|||
} |
|||
}, |
|||
axisTick: { |
|||
show: false |
|||
}, |
|||
axisLabel: { |
|||
color: '#B5C5D4', |
|||
fontSize: '10px', |
|||
interval: 0 |
|||
} |
|||
}, |
|||
yAxis: [ |
|||
{ |
|||
// type: 'value',
|
|||
// min: function (value) {
|
|||
// return value.min*0.9;
|
|||
// },
|
|||
type: 'value', |
|||
min: 0, |
|||
max:900, |
|||
splitNumber: 9, |
|||
// max: yAxisMax,
|
|||
axisLine: { |
|||
show: false, |
|||
lineStyle: { |
|||
width: 1, |
|||
color: '#545454' |
|||
} |
|||
}, |
|||
splitLine: { |
|||
show: true, |
|||
lineStyle: { |
|||
color: '#B2C2D3', |
|||
opacity: 0.3, |
|||
type: 'dotted' |
|||
} |
|||
}, |
|||
axisTick: { |
|||
show: false |
|||
}, |
|||
axisLabel: { |
|||
color: '#B5C5D4', |
|||
fontSize: '12px', |
|||
formatter: (value) => { |
|||
return value + minNumber |
|||
} |
|||
} |
|||
} |
|||
], |
|||
series: [ |
|||
{ |
|||
name: '事件数量(起)', |
|||
data: minArray, |
|||
type: 'pictorialBar', |
|||
symbol: 'roundRect', |
|||
symbolRepeat: true, |
|||
symbolSize: [12, 5], |
|||
// symbolOffset: symbolOffset,
|
|||
// barWidth:'40%',
|
|||
itemStyle: { |
|||
color: '#20E7FF' |
|||
} |
|||
}, |
|||
{ |
|||
barGap: "10%", |
|||
name: '平均处置时长(分钟)', |
|||
data: sxnja2 , |
|||
type: 'pictorialBar', |
|||
symbol: 'roundRect', |
|||
symbolRepeat: true, |
|||
symbolSize: [12, 5], |
|||
// symbolOffset: symbolOffset,
|
|||
// barWidth:'40%',
|
|||
itemStyle: { |
|||
color: '#20FFC9' |
|||
} |
|||
} |
|||
] |
|||
}; |
|||
|
|||
export default options; |
After Width: | Height: | Size: 403 KiB |
@ -0,0 +1,157 @@ |
|||
<template> |
|||
<div class='TrafficFlow'> |
|||
|
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
|
|||
|
|||
export default { |
|||
name: 'maintainQuery', |
|||
components: { |
|||
}, |
|||
data(){ |
|||
return { |
|||
|
|||
} |
|||
}, |
|||
methods:{ |
|||
changeTabs(){ |
|||
|
|||
} |
|||
} |
|||
|
|||
} |
|||
</script> |
|||
|
|||
<style lang='scss' scoped> |
|||
|
|||
::v-deep .el-tabs__item{ |
|||
display: inline-flex; |
|||
justify-content: center; |
|||
font-size: 16px; |
|||
font-family: PingFang SC, PingFang SC; |
|||
font-weight: 500; |
|||
color: #FFFFFF; |
|||
min-width:128px; |
|||
position: relative; |
|||
left:10px; |
|||
} |
|||
|
|||
::v-deep .el-tabs__active-bar { |
|||
min-width:128px; |
|||
} |
|||
|
|||
::v-deep .el-tabs__nav-wrap::after { |
|||
background-color: #133242; |
|||
opacity: 0.1; |
|||
} |
|||
|
|||
.footTabs { |
|||
display: inline; |
|||
width:100%; |
|||
|
|||
} |
|||
|
|||
.TrafficFlow { |
|||
width: 100%; |
|||
height: 100%; |
|||
position: relative; |
|||
z-index: 6; |
|||
color: white; |
|||
padding-top: 15px; |
|||
background-image: url('./assets/online_bj.jpg'); |
|||
background-size: 100% 100%; |
|||
|
|||
.header-shot{ |
|||
width: 98%; |
|||
margin: auto; |
|||
margin-top: 15px; |
|||
height:160px; |
|||
|
|||
} |
|||
|
|||
.content { |
|||
width: 100%; |
|||
margin: auto; |
|||
display: flex; |
|||
flex: 1; |
|||
pointer-events: none; |
|||
margin-top: 0px; |
|||
|
|||
>div { |
|||
pointer-events: auto; |
|||
} |
|||
|
|||
.content-l { |
|||
width: calc(32.2%); |
|||
margin-right:20px; |
|||
display: inline-flex; |
|||
flex-direction: column; |
|||
|
|||
>div { |
|||
margin-bottom:15px; |
|||
} |
|||
} |
|||
|
|||
.content-r { |
|||
width: calc(33%); |
|||
display: inline-flex; |
|||
} |
|||
|
|||
.content-rm { |
|||
width: calc(33%); |
|||
margin-right:10px; |
|||
} |
|||
|
|||
.content-mi { |
|||
width: calc(50%); |
|||
|
|||
margin-right:20px; |
|||
} |
|||
|
|||
.content-mi:last-child { |
|||
margin-right:10px; |
|||
} |
|||
|
|||
|
|||
.content-m { |
|||
display: inline-flex; |
|||
width: 66%; |
|||
margin-right:20px; |
|||
} |
|||
|
|||
|
|||
} |
|||
|
|||
.foot{ |
|||
width: 98%; |
|||
margin: auto; |
|||
display: flex; |
|||
justify-content: space-between; |
|||
flex: 1; |
|||
pointer-events: none; |
|||
margin-top: 8px; |
|||
>div { |
|||
pointer-events: auto; |
|||
} |
|||
|
|||
.foot-w { |
|||
width:100%; |
|||
|
|||
} |
|||
|
|||
.foot-l { |
|||
width: 726px; |
|||
} |
|||
.foot-m { |
|||
width: 613px; |
|||
} |
|||
.foot-r { |
|||
width: 493px; |
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
|
Loading…
Reference in new issue