Browse Source

更改路网-交通分析bug

wangqin
zhangzhang 1 year ago
parent
commit
16817e6c73
  1. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/changesIndicators/assets/charts3.js
  2. 135
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/changesIndicators/index.vue
  3. 188
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/congestionIndicator/index.vue
  4. 147
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/trafficIndicators/assets/charts.js
  5. 70
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/trafficIndicators/assets/charts2.js
  6. 16
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/trafficIndicators/index.vue
  7. 128
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/trafficIndicators/progressBar.vue
  8. 120
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/index.vue
  9. 307
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorQuery/index.vue

6
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/changesIndicators/assets/charts3.js

@ -34,9 +34,9 @@ let options = {
formatter: "健康监测<br>{b1}:{c1}人",
},
grid: {
left: "2%",
right: "4%",
top: "5%",
left: 0,
right: 0,
top: "13%",
bottom: "5%",
containLabel: true,
},

135
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/changesIndicators/index.vue

@ -2,19 +2,19 @@
<div class='congestion'>
<WgtTitle :title="'指标变化情况'"></WgtTitle>
<div class="board">
<div id="ChangesIndictors" class="keep-ratio" >
<div id="ChangesIndictors" class="keep-ratio">
</div>
</div>
</div>
</template>
</template>
<script>
import WgtTitle from '../../../../../widgets/title'
import * as echarts from "echarts";
import chartsStatistics from './assets/charts3';
<script>
import WgtTitle from '../../../../../widgets/title'
import * as echarts from "echarts";
import chartsStatistics from './assets/charts3';
export default {
export default {
name: 'ChangesIndictors',
components: {
WgtTitle
@ -25,51 +25,51 @@
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
@ -82,7 +82,7 @@
},
methods: {
selectItem(index){
selectItem(index) {
this.selectIndex = index;
},
},
@ -95,77 +95,76 @@
});
});
},
}
</script>
}
</script>
<style lang='scss' scoped>
<style lang='scss' scoped>
.showClass {
color: #00EBC1;
}
.showClass {
color:#00EBC1;
}
::v-deep .el-table .cell {
padding-left: 0px !important;
}
::v-deep .el-table .cell {
padding-left:0px !important;
}
::v-deep .el-table .el-table__header-wrapper th {
::v-deep .el-table .el-table__header-wrapper th {
background-color: #064258 !important;
color:#00D1FF;
color: #00D1FF;
border-color: #064258 !important;
border:0px !important;
font-size:12px !important;
}
border: 0px !important;
font-size: 12px !important;
}
::v-deep .el-table {
border:0px !important;
::v-deep .el-table {
border: 0px !important;
background-color: transparent;
font-size:12px !important;
}
font-size: 12px !important;
}
::v-deep .el-table__body-wrapper {
::v-deep .el-table__body-wrapper {
background-color: #064258;
color: #fff;
}
}
::v-deep .el-table tr:hover td {
::v-deep .el-table tr:hover td {
background: #1b2528 !important;
color:#00D1FF;
}
color: #00D1FF;
}
::v-deep .el-table tr:nth-child(odd) td{
background-color: #13272F ;
border:0px !important;
}
::v-deep .el-table tr:nth-child(even) td{
border:0px !important;
}
::v-deep .el-table tr:nth-child(odd) td {
background-color: #13272F;
border: 0px !important;
}
::v-deep .el-table tr:nth-child(even) td {
border: 0px !important;
}
::v-deep .el-table tr {
::v-deep .el-table tr {
background-color: #133242 !important;
border-collapse:0;
border:0px !important;
border-collapse: 0;
border: 0px !important;
background-color: transparent !important;
}
}
.congestion {
.congestion {
display: inline-flex;
width: 100%;
height: 310px;
flex-direction: column;
--keep-ratio: scaleX(1);
.board{
height: 280px;
.board {
height: 300px;
width: 100%;
padding: 0px 0px;
padding: 0px 20px;
border-radius: 5px 5px 5px 5px;
opacity: 1;
display: flex;
justify-content: space-between;
align-items: center;
flex-direction: row;
margin-top:20px;
background: linear-gradient(180deg, rgba(6,66,88,0) 0%, #064258 93%);
background: linear-gradient(180deg, rgba(6, 66, 88, 0) 0%, #064258 93%);
#ChangesIndictors {
display: inline-flex;
@ -173,11 +172,11 @@
width: 100%;
}
}
}
.charts {
height:180px;
width: 100%;
}
}
</style>
.charts {
height: 180px;
width: 100%;
}
</style>

188
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/congestionIndicator/index.vue

@ -2,27 +2,27 @@
<div class='congestion '>
<WgtTitle :title="'指标变化情况'"></WgtTitle>
<div class="board ">
<div class="textStr" >
<div class="textbar action" >
<div class="textStr">
<div class="textbar action">
拥挤度
</div>
<div class="textbar" >
<div class="textbar">
饱和度
</div>
<div class="textbar" >
<div class="textbar">
交通组成特征指数
</div>
</div>
<div class="bodySort" >
<div v-for="(it,index) in tableData" class="sortItem" >
<div class="bodySort">
<div v-for="(it, index) in tableData" class="sortItem">
<span class="barTitle">
TOP{{ index + 1 }}
</span>
<div class="text" >
<div class="text">
{{ it.name }}
</div>
<div class="lineHight" >
<div class="inner" :style="{width:it.num/count * 100 + '%'}" >
<div class="lineHight">
<div class="inner" :style="{ width: it.num / count * 100 + '%' }">
</div>
</div>
@ -33,47 +33,47 @@
</div>
</div>
</div>
</template>
</template>
<script>
import WgtTitle from '../../../../../widgets/title'
import * as echarts from "echarts";
<script>
import WgtTitle from '../../../../../widgets/title'
import * as echarts from "echarts";
export default {
export default {
name: 'CongestionIndicator',
components: {
WgtTitle
},
data() {
return {
count:2000,
count: 2000,
tableData: [{
name:"大学城-长清",
num:1036,
},{
name:"大学城-长清",
num:1036,
name: "大学城-长清",
num: 1036,
}, {
name: "大学城-长清",
num: 1036,
},
{
name:"大学城-长清",
num:1036,
name: "大学城-长清",
num: 1036,
},
{
name:"大学城-长清",
num:1036,
name: "大学城-长清",
num: 1036,
},
{
name:"大学城-长清",
num:1036,
name: "大学城-长清",
num: 1036,
},
{
name:"大学城-长清",
num:1036,
name: "大学城-长清",
num: 1036,
},
{
name:"大学城-长清",
num:1036,
name: "大学城-长清",
num: 1036,
}
]
}
@ -83,7 +83,7 @@
},
methods: {
selectItem(index){
selectItem(index) {
this.selectIndex = index;
},
},
@ -96,66 +96,66 @@
});
});
},
}
</script>
<style lang='scss' scoped>
}
</script>
.showClass {
color:#00EBC1;
}
<style lang='scss' scoped>
.showClass {
color: #00EBC1;
}
::v-deep .el-table .cell {
padding-left:0px !important;
}
::v-deep .el-table .cell {
padding-left: 0px !important;
}
::v-deep .el-table .el-table__header-wrapper th {
::v-deep .el-table .el-table__header-wrapper th {
background-color: #064258 !important;
color:#00D1FF;
color: #00D1FF;
border-color: #064258 !important;
border:0px !important;
font-size:12px !important;
}
border: 0px !important;
font-size: 12px !important;
}
::v-deep .el-table {
border:0px !important;
::v-deep .el-table {
border: 0px !important;
background-color: transparent;
font-size:12px !important;
}
font-size: 12px !important;
}
::v-deep .el-table__body-wrapper {
::v-deep .el-table__body-wrapper {
background-color: #064258;
color: #fff;
}
}
::v-deep .el-table tr:hover td {
::v-deep .el-table tr:hover td {
background: #1b2528 !important;
color:#00D1FF;
}
color: #00D1FF;
}
::v-deep .el-table tr:nth-child(odd) td{
background-color: #13272F ;
border:0px !important;
}
::v-deep .el-table tr:nth-child(even) td{
border:0px !important;
}
::v-deep .el-table tr:nth-child(odd) td {
background-color: #13272F;
border: 0px !important;
}
::v-deep .el-table tr:nth-child(even) td {
border: 0px !important;
}
::v-deep .el-table tr {
::v-deep .el-table tr {
background-color: #133242 !important;
border-collapse:0;
border:0px !important;
border-collapse: 0;
border: 0px !important;
background-color: transparent !important;
}
}
.congestion {
.congestion {
display: inline-flex;
width: 100%;
height: 310px;
// height: 310px;
flex-direction: column;
.board{
height: 280px;
.board {
height: 275px;
width: 100%;
padding: 0px 0px;
border-radius: 5px 5px 5px 5px;
@ -163,17 +163,17 @@
display: flex;
align-items: center;
flex-direction: column;
margin-top:20px;
margin-top: 20px;
background: linear-gradient(180deg, rgba(6,66,88,0) 0%, #064258 93%);
background: linear-gradient(180deg, rgba(6, 66, 88, 0) 0%, #064258 93%);
.bodySort {
position: relative;
display: inline-block;
width:100%;
height:100%;
width: 100%;
height: 100%;
overflow: auto;
padding:20px 10px;
padding: 5px 10px;
>div:first-child {
.barTitle {
@ -187,11 +187,11 @@
>div {
display: inline-flex;
width:95%;
width: 95%;
height: 41px;
background: #0D517460;
border-radius: 0px 0px 0px 0px;
margin:5px;
margin: 5px;
font-size: 14px;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
@ -213,7 +213,7 @@
opacity: 1;
justify-content: center;
align-items: center;
margin:0 10px;
margin: 0 10px;
}
.lineHight {
@ -222,16 +222,16 @@
background: linear-gradient(180deg, #0BA7DA10 0%, #4FD3FF10 100%);
border-radius: 6px 6px 6px 6px;
opacity: 1;
margin:0 15px;
margin: 0 15px;
> .inner {
>.inner {
display: inline-flex;
height:8px;
height: 8px;
background: linear-gradient(180deg, #0BA7DA 0%, #61D8FF 100%);
border-radius: 6px 6px 6px 6px;
opacity: 1;
position: relative;
top:-7px;
top: -7px;
}
}
}
@ -239,26 +239,26 @@
.textStr {
display: inline-flex;
width:100%;
height:45px;
width: 100%;
height: 45px;
flex-direction: row;
> div {
>div {
display: inline-flex;
min-width: 80px;
height: 26px;
background: linear-gradient(180deg, #005C7950 0%, #009BCC50 100%);
border-radius: 2px 2px 2px 2px;
opacity: 1;
color:#fff;
color: #fff;
font-size: 12px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #FFFFFF;
justify-content: center;
align-items: center;
margin-left:20px;
padding:0 15px;
margin-left: 20px;
padding: 0 15px;
cursor: pointer;
}
@ -267,11 +267,11 @@
}
}
}
}
.charts {
height:180px;
width: 100%;
}
}
</style>
.charts {
height: 180px;
width: 100%;
}
</style>

147
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/trafficIndicators/assets/charts.js

@ -1,8 +1,22 @@
/* 数据 */
let nameList = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]; // 类别
let valueList = [800, 520, 650, 950, 420, 600, 450, 720, 303, 503 , 203 ,703 , 903 ]; // 人数
var yList = [ "1000","800","轻度拥堵","基本畅通","畅通"]
let nameList = [
"1月",
"2月",
"3月",
"4月",
"5月",
"6月",
"7月",
"8月",
"9月",
"10月",
"11月",
"12月",
]; // 类别
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) => {
@ -12,32 +26,37 @@ nameList.map((item, index) => {
value: valueList[index],
itemStyle: {
color: {
type: 'linear',
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [{
offset: 0, color: '#FFB904' // 0% 处的颜色
}, {
offset: 1, color: '#FF6969' // 100% 处的颜色
}],
global: false // 缺省为 false
colorStops: [
{
offset: 0,
color: "#FFB904", // 0% 处的颜色
},
{
offset: 1,
color: "#FF6969", // 100% 处的颜色
},
borderRadius: 6
],
global: false, // 缺省为 false
},
label: { show: false }
})
borderRadius: 6,
},
label: { show: false },
});
} else {
dataList.push({
name: item,
value: valueList[index],
itemStyle:{
borderRadius: 6
}
})
itemStyle: {
borderRadius: 6,
},
});
}
})
});
var options = {
legend: {
@ -52,47 +71,48 @@ var options = {
},
},
grid: {
top: '25%',//上边距
right: '0',//右边距
left: '0',//左边距
bottom: "0%",//下边距
top: "25%", //上边距
right: "0", //右边距
left: "0", //左边距
bottom: "0%", //下边距
containLabel: true,
},
xAxis: {
type: 'category',
type: "category",
data: nameList,
axisTick: {
show: false //隐藏X轴刻度
show: false, //隐藏X轴刻度
},
axisLine: {
lineStyle: {
color: "rgba(49, 217, 255, 0.8)"
}
color: "rgba(49, 217, 255, 0.8)",
},
},
axisLabel: {
show: true,
color: '#B6E6FF',
fontSize:8,
fontFamily: 'Source Han Sans CN-Regular',
color: "#B6E6FF",
fontSize: 8,
fontFamily: "Source Han Sans CN-Regular",
},
},
yAxis: [{
type: 'value',
yAxis: [
{
type: "value",
name: "",
max: 1200,
min:0,
splitNumber:5,
min: 0,
splitNumber: 5,
nameTextStyle: {
color: '#B6E6FF',
color: "#B6E6FF",
fontSize: 13,
fontFamily: 'Source Han Sans CN-Regular',
fontFamily: "Source Han Sans CN-Regular",
align: "left",
verticalAlign: "center",
},
axisLabel: {
fontSize: 13,
color: '#B6E6FF',
fontFamily: 'HarmonyOS Sans-Regular',
color: "#B6E6FF",
fontFamily: "HarmonyOS Sans-Regular",
// formatter:function(value,index){
// return yList[index]
// }
@ -101,60 +121,67 @@ var options = {
show: false,
},
axisTick: {
show: false
show: false,
},
splitLine: {
lineStyle: {
color: 'rgba(49, 217, 255, 0.5)',
}
color: "rgba(49, 217, 255, 0.5)",
},
},
}],
},
],
series: [
{
name: '交通特征',
type: 'line',
symbol: 'circle',
name: "交通特征",
type: "line",
symbol: "circle",
symbolSize: 0,
// yAxisIndex: 1, // 与第二个 y 轴关联
itemStyle: {
color: '#32BB8A',
color: "#32BB8A",
},
lineStyle: {
width:2,
width: 2,
},
data: [1000, 800, 520, 600, 900, 700, 700,1000, 800, 520, 600, 900, 700, 700], // 折线图的数据
data: [
1000, 800, 520, 600, 900, 700, 700, 1000, 800, 520, 600, 900, 700, 700,
], // 折线图的数据
},
{
name: '饱和度',
type: 'line',
symbol: 'circle',
name: "饱和度",
type: "line",
symbol: "circle",
symbolSize: 0,
// yAxisIndex: 1, // 与第二个 y 轴关联
itemStyle: {
color: '#07A3FB',
color: "#07A3FB",
},
lineStyle: {
width: 2,
},
data: [600, 700, 900, 400, 500, 800, 600,600, 700, 900, 400, 500, 800, 600], // 折线图的数据
data: [
600, 700, 900, 400, 500, 800, 600, 600, 700, 900, 400, 500, 800, 600,
], // 折线图的数据
},
{
name: '拥挤度',
type: 'line',
symbol: 'circle',
name: "拥挤度",
type: "line",
symbol: "circle",
symbolSize: 0,
// yAxisIndex: 1, // 与第二个 y 轴关联
itemStyle: {
color: '#E2BA74',
color: "#E2BA74",
},
lineStyle: {
width: 2,
},
data: [850, 810, 712, 580, 480, 480, 780,850, 810, 712, 580, 480, 480, 780], // 折线图的数据
data: [
850, 810, 712, 580, 480, 480, 780, 850, 810, 712, 580, 480, 480, 780,
], // 折线图的数据
},
]
}
],
};
export default options;

70
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/trafficIndicators/assets/charts2.js

@ -11,44 +11,52 @@ function contains(arr, val) {
}
let list = [
{
name: '交通特征',
name: "交通特征",
max: 88,
},
{
name: '拥挤度',
name: "拥挤度",
max: 88,
},
{
name: '饱和度',
max:188,
name: "饱和度",
max: 188,
},
];
let data1 = [[80, 50, 55, 80, 50, 80, 48, 43]];
let data2 = [[60, 60, 65, 60, 70, 40, 80, 63]];
let options = {
tooltip: {
show: true,
trigger: 'item',
trigger: "item",
formatter: (data) => {
// console.log(data.seriesIndex);
var tip = '<h5 class="echarts-tip-h5">' + data.seriesName + '</h5>';
var tip = '<span class="echarts-tip-h5">' + data.seriesName + "</span>";
let tmpData = [];
if (data.seriesIndex === 0) {
tmpData = data1;
} else if (data.seriesIndex === 1) {
tmpData = data2;
}
console.log(tmpData)
console.log(tmpData);
data.value.forEach((item, index) => {
// console.log(list[index].name)
tip += '<div>';
tip += '<div>' + list[index].name + ': '+ tmpData[0][index] + '万</div>'
tip += '</div>';
tip += "<div>";
tip +=
"<div>" + list[index].name + ": " + tmpData[0][index] + "万</div>";
tip += "</div>";
});
return tip;
},
},
grid: {
top: "5%", //上边距
right: "0", //右边距
left: "0", //左边距
bottom: "0%", //下边距
padding: "50px",
containLabel: true,
},
// legend: {
// show: true,
// icon: 'circle',
@ -64,18 +72,18 @@ let options = {
radar: {
name: {
textStyle: {
color: '#fff',
color: "#fff",
fontSize: 16,
},
rich: {
a: {
fontSize: 16,
color: '#FFFFFF',
fontSize: 12,
color: "#FFFFFF",
padding: [0, 0, 8, 0],
},
b: {
fontSize: 18,
color: '#ACD3FF',
color: "#ACD3FF",
},
},
formatter: (a) => {
@ -83,14 +91,20 @@ let options = {
return `{a| ${a}}`;
},
},
center: ['50%', '50%'],
radius: '60%',
center: ["50%", "50%"],
radius: "60%",
startAngle: 90,
splitNumber: 5,
shape: 'circle',
shape: "circle",
splitArea: {
areaStyle: {
color: [ '#07A3FB99','#07A3FB8010', '#07A3FB30','#07A3FB60','#07A3FB80'],
color: [
"#07A3FB99",
"#07A3FB8010",
"#07A3FB30",
"#07A3FB60",
"#07A3FB80",
],
},
},
axisLabel: {
@ -102,16 +116,16 @@ let options = {
splitLine: {
show: true,
lineStyle: {
color: 'rgba(50, 72, 130, 0.4)',
color: "rgba(50, 72, 130, 0.4)",
},
},
indicator: list,
},
series: [
{
name: '数据1',
type: 'radar',
symbol: 'circle',
name: "数据1",
type: "radar",
symbol: "circle",
symbolSize: 3,
areaStyle: {
normal: {
@ -123,11 +137,11 @@ let options = {
[
{
offset: 0,
color: '#DC6A00',
color: "#DC6A00",
},
{
offset: 1,
color: '#099CCD',
color: "#099CCD",
},
],
false
@ -135,8 +149,8 @@ let options = {
},
},
itemStyle: {
color: 'rgba(245, 166, 35, 0.2)',
borderColor: 'rgba(235, 171, 86, 00)',
color: "rgba(245, 166, 35, 0.2)",
borderColor: "rgba(235, 171, 86, 00)",
borderWidth: 10,
},
data: data1,
@ -144,6 +158,4 @@ let options = {
],
};
export default options;

16
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/trafficIndicators/index.vue

@ -35,7 +35,7 @@
</div> -->
<ProgressBar :dataList="dataList" class="keep-ratio progressbar" :selectIndex="7" />
<div class="body">
<div style="width:70%">
<div class="body-l">
<div class="searchPanel_1">
<!-- <el-from ref="form"> -->
<RadioGroup :options="[{ key: '1', label: '菏泽' }, { key: '3', label: '济南' }]" v-model="direction"
@ -310,7 +310,7 @@ export default {
<style lang='scss' scoped>
.progressbar {
margin: 10px;
margin: 15px;
}
@ -332,9 +332,10 @@ export default {
flex-direction: column;
height: 100%;
width: 33%;
margin-right: 20px;
// margin-right: 20px;
border: 1px solid;
border-image: linear-gradient(360deg, rgba(55, 231, 255, 0.1), rgba(55, 231, 255, 0)) 1 1;
border: none;
// border-image: linear-gradient(360deg, rgba(55, 231, 255, 0.1), rgba(55, 231, 255, 0)) 1 1;
background: linear-gradient(180deg, rgba(6, 66, 88, 0) 0%, #064258 100%);
padding: 10px;
}
@ -394,7 +395,13 @@ export default {
justify-content: space-between;
align-items: center;
flex-direction: column;
--keep-ratio: scaleX(1);
.body-l {
width: 70%;
padding: 0 20px;
margin-right: 20px;
}
.searchPanel_1 {
position: absolute;
@ -406,6 +413,7 @@ export default {
margin-bottom: 10px;
z-index: 1000;
div {
white-space: nowrap;
margin-right: 4px;

128
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/trafficIndicators/progressBar.vue

@ -1,27 +1,28 @@
<template>
<div class='congestion'>
<div :style="{width: dataList.length * 300}" >
<div :class="selectIndex == index?selectLine < 1?'item action Abefore':'item action Aafter':selectIndex + selectLine == index?selectLine < 1?'item action Aafter':'item action Abefore':'item'" v-for="(item,index) in dataList" :key="index" >
<i class="after" @click="selectItem(index,-1)"></i>
<i class="before" @click="selectItem(index,+1)" ></i>
<div :style="{ width: dataList.length * 300 }">
<div :class="selectIndex == index ? selectLine < 1 ? 'item action Abefore' : 'item action Aafter' : selectIndex + selectLine == index ? selectLine < 1 ? 'item action Aafter' : 'item action Abefore' : 'item'"
v-for="(item, index) in dataList" :key="index">
<i class="after" @click="selectItem(index, -1)"></i>
<i class="before" @click="selectItem(index, +1)"></i>
<span></span>
<div>{{ item.title }}</div>
</div>
</div>
</div>
</template>
</template>
<script>
<script>
import { number } from 'echarts';
export default {
export default {
name: 'ProgressBar',
components: {
},
props:{
dataList:{
type:Array,
props: {
dataList: {
type: Array,
default: () => {
return []
}
@ -29,8 +30,8 @@ import { number } from 'echarts';
},
data() {
return {
selectIndex:0,
selectLine:-1,
selectIndex: 0,
selectLine: -1,
}
},
@ -38,7 +39,7 @@ import { number } from 'echarts';
},
methods: {
selectItem(index,num){
selectItem(index, num) {
this.selectIndex = index;
this.selectLine = num
}
@ -46,30 +47,30 @@ import { number } from 'echarts';
mounted() {
},
}
</script>
}
</script>
<style lang='scss' scoped>
.congestion {
<style lang='scss' scoped>
.congestion {
width: 100%;
height:35px;
height: 35px;
display: inline-flex;
flex-direction: row;
> div {
>div {
position: relative;
width: 100%;
height:35px;
height: 35px;
display: inline-flex;
flex-direction: row;
>.item .after {
position: absolute;
display: inline-flex;
left:0px;
top:-5px;
width:45px !important;
height:35px !important;
left: 0px;
top: -5px;
width: 45px !important;
height: 35px !important;
background-color: transparent;
cursor: pointer;
}
@ -78,20 +79,20 @@ import { number } from 'echarts';
content: "";
position: absolute;
display: inline-flex;
left:0px;
top:8px;
width:45px !important;
height:3px !important;
left: 0px;
top: 8px;
width: 45px !important;
height: 3px !important;
background-color: #C7C7C7;
}
>.item .before {
position: absolute;
display: inline-flex;
right:0px;
top:-5px;
width:45px;
height:35px;
right: 0px;
top: -5px;
width: 45px;
height: 35px;
background-color: transparent;
cursor: pointer;
}
@ -100,55 +101,55 @@ import { number } from 'echarts';
content: "";
position: absolute;
display: inline-flex;
left:0px;
top:8px;
width:45px !important;
height:3px !important;
left: 0px;
top: 8px;
width: 45px !important;
height: 3px !important;
background-color: #C7C7C7;
}
.item.action .after::after {
background-color: #72FDC9 ;
background-color: #72FDC9;
}
.item.action.Aafter .after::after{
.item.action.Aafter .after::after {
background-color: #C7C7C7 !important;
}
> .item.action.Aafter .before::after {
background-color: #72FDC9 ;
>.item.action.Aafter .before::after {
background-color: #72FDC9;
}
> .item.action.Abefore .after::after {
background-color: #72FDC9 ;
>.item.action.Abefore .after::after {
background-color: #72FDC9;
}
> .bef::before {
>.bef::before {
background-color: #72FDC9 !important;
}
> .aft::after {
>.aft::after {
background-color: #72FDC9 !important;
}
> .item.action span {
background-color: #72FDC9 ;
>.item.action span {
background-color: #72FDC9;
cursor: pointer;
}
> .item.action span::after {
border-color: #72FDC9 ;
>.item.action span::after {
border-color: #72FDC9;
}
> .action div {
color:#72FDC9 !important;
>.action div {
color: #72FDC9 !important;
}
>.item {
position: relative;
width: 180px;
height:35px;
height: 35px;
display: inline-flex;
flex-direction: column;
justify-items: center;
@ -156,40 +157,41 @@ import { number } from 'echarts';
>span {
position: absolute;
display:inline-flex;
display: inline-flex;
width: 9px;
height: 9px;
background: #C7C7C7;
border-radius: 50%;
opacity: 1;
left:53px;
left: 53px;
}
>div {
position: relative;
display:inline-flex;
width:100%;
display: inline-flex;
width: 100%;
align-items: center;
justify-content: center;
top: 5px;
margin-top:10px;
color:#C7C7C7;
margin-top: 10px;
font-size: 14px;
color: #C7C7C7;
}
>span::after {
content: "";
position: absolute;
display:inline-flex;
display: inline-flex;
width: 15px;
height: 15px;
border:1px solid #C7C7C7;
border: 1px solid #C7C7C7;
border-radius: 50%;
opacity: 1;
top:-3.5px;
left:-3px;
}
top: -3.5px;
left: -3px;
}
}
}
</style>
}
</style>

120
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/index.vue

@ -6,26 +6,26 @@
<Crowding class="content-l" />
<ComposeFeatures class="content-l" />
</section>
<section class="content" >
<section class="content">
<TrafficIndicators class="content-max" />
</section>
<section class="foot" >
<section class="foot">
<ChangesIndictors class="foot-l" />
<CongestionIndicator class="foot-r" />
</section>
</div>
</template>
<script>
import RoadIndicators from './components/roadIndicators';
import SaturationMax from './components/saturationMax';
import Crowding from './components/crowding';
import ComposeFeatures from './components/composeFeatures';
import TrafficIndicators from './components/trafficIndicators';
import ChangesIndictors from './components/changesIndicators';
import CongestionIndicator from './components/congestionIndicator';
export default {
</template>
<script>
import RoadIndicators from './components/roadIndicators';
import SaturationMax from './components/saturationMax';
import Crowding from './components/crowding';
import ComposeFeatures from './components/composeFeatures';
import TrafficIndicators from './components/trafficIndicators';
import ChangesIndictors from './components/changesIndicators';
import CongestionIndicator from './components/congestionIndicator';
export default {
name: 'IndicatorAnalysis',
components: {
RoadIndicators,
@ -36,78 +36,82 @@
ChangesIndictors,
CongestionIndicator,
},
data(){
data() {
return {
activeName:"first"
activeName: "first"
}
},
methods:{
changeTabs(){
methods: {
changeTabs() {
}
}
}
</script>
<style lang='scss' scoped>
}
</script>
::v-deep .el-tabs__item{
<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;
min-width: 128px;
position: relative;
left:10px;
}
left: 10px;
}
::v-deep .el-tabs__active-bar {
min-width:128px;
}
::v-deep .el-tabs__active-bar {
min-width: 128px;
}
::v-deep .el-tabs__nav-wrap::after {
::v-deep .el-tabs__nav-wrap::after {
background-color: #133242;
opacity: 0.1;
}
}
.footTabs {
display: inline;
width:99%;
.el-tabs__content {
height: 100%;
}
}
.footTabs {
display: inline;
width: 99%;
height: 100%;
}
.content {
.content {
width: 100%;
display: inline-flex;
justify-content: space-between;
pointer-events: none;
margin-top: 19px;
margin-left:19px;
margin-left: 19px;
>div {
pointer-events: auto;
}
.content-w {
width:66.5%;
width: 66.5%;
}
.content-max {
width:100%;
width: 100%;
}
.content-l {
width: 25%;
margin-left:0px;
margin-left: 0px;
}
}
}
.TrafficFlow {
.TrafficFlow {
width: 100%;
height: 100%;
position: relative;
@ -126,8 +130,8 @@
.content-l {
width: calc(50%);
min-width:460px;
margin-right:20px;
min-width: 460px;
margin-right: 20px;
}
@ -135,46 +139,52 @@
.content-m {
display: inline-flex;
flex-direction: column;
width: calc(100% / 4 );
margin-right:20px;
width: calc(100% / 4);
margin-right: 20px;
.content-m-t {
width:100%;
height:240px;
width: 100%;
height: 240px;
margin-bottom: 20px;
}
}
.content-r {
width: 30%;
}
}
.foot{
.foot {
width: 100%;
margin: auto;
display: flex;
flex: 1;
pointer-events: none;
margin-top: 8px;
margin-top: 19px;
>div {
pointer-events: auto;
}
.foot-w {
width:100%;
width: 100%;
}
.foot-l {
width: 67%;
width: 70%;
height: 330px;
}
.foot-m {
width: 613px;
}
.foot-r {
margin-left:20px;
margin-left: 20px;
width: 33%;
}
}
}
</style>
}
</style>

307
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorQuery/index.vue

@ -1,54 +1,37 @@
<template>
<div class='congestion'>
<div class="buttonbar" >
<div class="button" >
<div class="buttonbar">
<div class="button">
<i class="el-icon-refresh-right"></i>刷新
</div>
<div class="button" >
<div class="button">
<i class="el-icon-upload2"></i>导出Excal
</div>
</div>
<div class="board">
<div class="weaterMain" >
<el-table
:border="false"
:data="tableData"
height="790"
style="width: 100%">
<el-table-column
prop="nem"
label=""
width="30">
<div class="weaterMain">
<el-table :border="false" :data="tableData" style="width: 100%">
<el-table-column prop="nem" label="" width="30">
</el-table-column>
<el-table-column
prop="address"
label="桩号范围"
>
<el-table-column prop="address" label="桩号范围">
</el-table-column>
<el-table-column
prop="name"
label="能见度"
class-name="showClass"
>
<el-table-column prop="name" label="能见度" class-name="showClass">
<template slot-scope="scope">
<span class="showClass">{{scope.row.name}}</span>
<span class="showClass">{{ scope.row.name }}</span>
</template>
</el-table-column>
<el-table-column
prop="date"
label="发生时间"
>
<el-table-column prop="date" label="发生时间">
</el-table-column>
</el-table>
</div>
</div>
</div>
</template>
</template>
<script>
<script>
export default {
export default {
name: 'IndicatorQuery',
components: {
@ -59,159 +42,159 @@
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},,{
}, , {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},,{
}, , {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},,{
}, , {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},,{
}, , {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},,{
}, , {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},,{
}, , {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},,{
}, , {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},,{
}, , {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
},{
}, {
date: '2023-12-31 13:00:00',
name: '2640.78m',
address: 'K100+000-K110+000'
@ -224,7 +207,7 @@
},
methods: {
selectItem(index){
selectItem(index) {
this.selectIndex = index;
},
},
@ -236,59 +219,59 @@
});
});
},
}
</script>
}
</script>
<style lang='scss' scoped>
<style lang='scss' scoped>
.showClass {
color: #00EBC1;
}
.showClass {
color:#00EBC1;
}
::v-deep .el-table .cell {
padding-left:0px !important;
}
::v-deep .el-table .cell {
padding-left: 0px !important;
}
::v-deep .el-table .el-table__header-wrapper th {
::v-deep .el-table .el-table__header-wrapper th {
background-color: #064258 !important;
color:#00D1FF;
color: #00D1FF;
border-color: #064258 !important;
border:0px !important;
font-size:12px !important;
}
border: 0px !important;
font-size: 12px !important;
}
::v-deep .el-table {
border:0px !important;
::v-deep .el-table {
border: 0px !important;
background-color: transparent;
font-size:12px !important;
}
font-size: 12px !important;
}
::v-deep .el-table__body-wrapper {
::v-deep .el-table__body-wrapper {
background-color: #064258;
color: #fff;
}
}
::v-deep .el-table tr:hover td {
::v-deep .el-table tr:hover td {
background: #1b2528 !important;
color:#00D1FF;
}
color: #00D1FF;
}
::v-deep .el-table tr:nth-child(odd) td{
background-color: #13272F ;
border:0px !important;
}
::v-deep .el-table tr:nth-child(even) td{
border:0px !important;
}
::v-deep .el-table tr:nth-child(odd) td {
background-color: #13272F;
border: 0px !important;
}
::v-deep .el-table tr {
::v-deep .el-table tr:nth-child(even) td {
border: 0px !important;
}
::v-deep .el-table tr {
background-color: #133242 !important;
border-collapse:0;
border:0px !important;
border-collapse: 0;
border: 0px !important;
background-color: transparent !important;
}
}
.congestion {
.congestion {
display: inline-flex;
width: 100%;
height: 100%;
@ -297,28 +280,29 @@
.buttonbar {
display: inline-flex;
flex-direction: row;
padding-top:15px;
padding-top: 15px;
> .button {
>.button {
display: inline-flex;
min-width:90px;
height:28px;
min-width: 90px;
height: 28px;
background: linear-gradient(180deg, #005C79 0%, #009BCC 100%);
border-radius: 2px 2px 2px 2px;
justify-content: center;
align-items: center;
padding: 1px 10px;;
padding: 1px 10px;
;
opacity: 1;
font-size: 14px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #FFFFFF;
margin-left:15px;
margin-left: 15px;
}
}
.board{
.board {
height: 880px;
width: 100%;
padding: 0px 0px;
@ -328,28 +312,28 @@
justify-content: space-between;
align-items: center;
flex-direction: column;
margin-top:20px;
margin-top: 20px;
.warningList {
display: inline-flex;
flex-direction: column;
width:100%;
height:calc(100% - 40px);
width: 100%;
height: calc(100% - 40px);
>div {
display: inline-flex;
width:100%;
height:138px;
width: 100%;
height: 138px;
background: #133242;
border-radius: 2px 2px 2px 2px;
opacity: 1;
border: 1px solid;
border-image: linear-gradient(360deg, rgba(55, 231, 255, 1), rgba(55, 231, 255, 0)) 1 1;
overflow: hidden;
margin-top:20px;
padding:23px 29px;
margin-top: 20px;
padding: 23px 29px;
font-size: 14px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
@ -357,19 +341,19 @@
>.left-w {
display: inline-flex;
width:40%;
height:100%;
width: 40%;
height: 100%;
flex-direction: column;
.left-row {
margin:2px;
margin: 2px;
display: inline-flex;
width:100%;
height:30px;
width: 100%;
height: 30px;
flex-direction: row;
>.value {
color:#fff;
color: #fff;
}
.org {
@ -383,10 +367,10 @@
}
>.right-w {
margin-left:30px;
margin-left: 30px;
display: inline-flex;
width:100%;
height:100%;
width: 100%;
height: 100%;
flex-direction: column;
.right-row {
@ -394,7 +378,7 @@
}
.right-text {
color:#fff;
color: #fff;
}
}
@ -404,17 +388,19 @@
.weaterMain {
display: inline-flex;
flex-direction: row;
width:100%;
height: 100%;;
width: 100%;
height: 100%;
;
.buttons {
width:100%;
height:38px;
width: 100%;
height: 38px;
>div {
display: inline-flex;
width:10%;
height:35px;
width: 10%;
height: 35px;
justify-content: center;
align-items: center;
font-size: 12px;
@ -430,48 +416,49 @@
display: inline-flex;
width: 55px;
height: 36px;
background: linear-gradient(180deg, #6557D7 0%, rgba(101,87,216,0) 100%);
background: linear-gradient(180deg, #6557D7 0%, rgba(101, 87, 216, 0) 100%);
border-radius: 50%;
opacity: 1;
z-index:-1;
z-index: -1;
}
.redSel::after {
background: linear-gradient(180deg, #E73A14 0%, rgba(240,92,9,0) 100%);
background: linear-gradient(180deg, #E73A14 0%, rgba(240, 92, 9, 0) 100%);
}
.yelSel::after {
background: linear-gradient(180deg, #FFFA79 0%, rgba(255,208,137,0) 100%);
background: linear-gradient(180deg, #FFFA79 0%, rgba(255, 208, 137, 0) 100%);
}
.bluSel::after {
background: linear-gradient(180deg, #121ADE 0%, rgba(40,18,228,0) 100%);
background: linear-gradient(180deg, #121ADE 0%, rgba(40, 18, 228, 0) 100%);
}
.orgSel::after{
background: linear-gradient(180deg, #FFA623 0%, rgba(255,173,53,0) 100%);
.orgSel::after {
background: linear-gradient(180deg, #FFA623 0%, rgba(255, 173, 53, 0) 100%);
}
}
.weaterTitle::after {
content: "";
position: absolute;
top:0px;
left:0px;
width:100%;
height:2px;
background: linear-gradient(90deg, rgba(189,255,246,0) 0%, #BDFFF6 52%, rgba(189,255,246,0) 100%);
top: 0px;
left: 0px;
width: 100%;
height: 2px;
background: linear-gradient(90deg, rgba(189, 255, 246, 0) 0%, #BDFFF6 52%, rgba(189, 255, 246, 0) 100%);
border-radius: 0px 0px 0px 0px;
opacity: 1;
}
.weaterTitle::before {
content: "";
position: absolute;
top:38px;
left:0px;
width:100%;
height:2px;
background: linear-gradient(90deg, rgba(189,255,246,0) 0%, #BDFFF6 52%, rgba(189,255,246,0) 100%);
top: 38px;
left: 0px;
width: 100%;
height: 2px;
background: linear-gradient(90deg, rgba(189, 255, 246, 0) 0%, #BDFFF6 52%, rgba(189, 255, 246, 0) 100%);
border-radius: 0px 0px 0px 0px;
opacity: 1;
}
@ -481,7 +468,7 @@
display: inline-flex;
width: 277px;
height: 38px;
background: linear-gradient(269deg, rgba(55,231,255,0) 6%, rgba(55,231,255,0.6) 50%, rgba(55,231,255,0) 92%);
background: linear-gradient(269deg, rgba(55, 231, 255, 0) 6%, rgba(55, 231, 255, 0.6) 50%, rgba(55, 231, 255, 0) 92%);
border-radius: 0px 0px 0px 0px;
opacity: 1;
justify-content: center;
@ -509,11 +496,11 @@
}
}
}
.charts {
height:180px;
width: 100%;
}
}
</style>
.charts {
height: 180px;
width: 100%;
}
</style>
Loading…
Cancel
Save