Browse Source

Merge branch 'develop' of http://39.106.31.193:9211/mengff/jihe-hs into develop

wangqin
qingzhengli 8 months ago
parent
commit
793a049c12
  1. 8
      ruoyi-ui/package.json
  2. 10
      ruoyi-ui/src/assets/styles/JiHeExpressway.scss
  3. 21
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/InfoBoard/index.vue
  4. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js
  5. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/index.vue
  6. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/coordinateSchedulingRecords/index.vue
  7. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/index.vue
  8. 14
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/typeAnalysis/assets/charts.js
  9. 323
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/typeAnalysis/index.vue
  10. 16
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/index.vue
  11. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/components/flowstate/index.vue

8
ruoyi-ui/package.json

@ -74,6 +74,7 @@
"less-loader": "^7.2.1",
"lodash": "^4.17.21",
"mathjs": "^11.7.0",
"mitt": "^3.0.1",
"moment": "^2.29.1",
"mpegts.js": "^1.7.3",
"normalize.css": "7.0.0",
@ -104,11 +105,10 @@
"vue-slick-carousel": "^1.0.6",
"vue-splitpane": "1.0.4",
"vue-video-player": "^5.0.2",
"vuedraggable": "2.24.3",
"vuedraggable": "^2.24.3",
"vuescroll": "^4.18.1",
"vuex": "3.6.0",
"zrender": "^5.4.4",
"mitt": "^3.0.1"
"zrender": "^5.4.4"
},
"devDependencies": {
"@vue/cli-plugin-babel": "4.4.6",
@ -154,4 +154,4 @@
"> 1%",
"last 2 versions"
]
}
}

10
ruoyi-ui/src/assets/styles/JiHeExpressway.scss

@ -277,4 +277,14 @@
.el-time-spinner__item.active{ color: #fff !important;}
}
.el-picker-panel{
.today div a,.today div span{
color: #ff0 !important;
font-weight: bold !important;
}
.current div a.cell {
// background-color: #000 !important;
}
}
}

21
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/InfoBoard/index.vue

@ -61,20 +61,20 @@
<el-tabs v-model="activeTab" @tab-click="tabClickFn">
<el-tab-pane label="详情信息" name="first">
<div class="show_bottom_tab_box">
<div class="deviceInfo">
<div class="deviceInfo_l">设备名称</div>
<div class="deviceInfo title">
<div class="deviceInfo_l">设备名称:</div>
<div class="deviceInfo_r">
{{ selectedDevice.deviceName }}
</div>
</div>
<div class="deviceInfo">
<div class="deviceInfo_l">设备桩号</div>
<div class="deviceInfo_l">设备桩号:</div>
<div class="deviceInfo_r">
{{ selectedDevice.stakeMark }}
</div>
</div>
<div class="deviceInfo">
<div class="deviceInfo_l">屏幕像素</div>
<div class="deviceInfo_l">屏幕像素:</div>
<div class="deviceInfo_r">
{{
JSON.parse(selectedDevice.otherConfig).screenSize
@ -82,6 +82,12 @@
px
</div>
</div>
<div class="deviceInfo">
<div class="deviceInfo_l">设备状态</div>
<div class="deviceInfo_r">
{{ selectedDevice.deviceState == 1 ? "在线" : "离线" }}
</div>
</div>
<!-- <div class="deviceInfo" v-for="item in tabDataInfoList" :key="item.id">
<div class="deviceInfo_l">{{ item.tit }}: </div>
<div class="deviceInfo_r" :style="{ 'color': item.col }"> {{ item.txt }}</div>
@ -763,11 +769,12 @@ export default {
}
.deviceInfo {
width: 50%;
width: 33.333%;
padding: 10px 0;
display: flex;
// flex-wrap: wrap;
align-items: stretch;
align-items: center;
&.title{ width: 100%;}
}
.show_bottom_tab_box {
@ -780,7 +787,7 @@ export default {
.deviceInfo_l {
color: #3de8ff;
font-size: 14px;
width: 70px;
width: 60px;
display: flex;
flex-direction: row;
align-items: center;

2
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js

@ -430,7 +430,7 @@ export function getContent(data) {
align-items: center;
padding-bottom: 9px;
align-self: center;
">
" onmouseover="this.parentNode.style.zIndex=13;" onmouseout="this.parentNode.style.zIndex=12;">
${data.length}
</div>
`;

4
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/index.vue

@ -341,7 +341,9 @@ export default {
},
uploadFile() {
uploadFile({ url: "/business/shifts/importEquipment" });
uploadFile({ url: "/business/shifts/importEquipment" }).then(() => {
this.getData();
})
},
},
};

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/coordinateSchedulingRecords/index.vue

@ -19,7 +19,7 @@
<!-- 分页 -->
<div class="footer">
<Pagination :total="90" />
<Pagination :total="90" layout="total, sizes, prev, pager, next"/>
</div>
</div>
</template>

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/index.vue

@ -231,7 +231,7 @@ export default {
if (this.activeName == '-1') {
url = '/business/warning/export'
} else {
url = '/dc/system/event/export';
url = '/dc/system/event/export?eventState=' + this.searchData.eventState;
}
let loadingInstance = Loading.service({
fullscreen: true,

14
ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/typeAnalysis/assets/charts.js

@ -14,13 +14,18 @@ window.colorList = [
"#FFDD69",
"#F6A73C",
"#7390FD",
"#2967EA",
"#1DA7FF",
"#219f73",
"#7cedd5",
];
window.colorList1 = ["#61D8FF", "#FFB905", "#6AE0BC"];
// window.colorList1 = ["#61D8FF", "#FFB905", "#6AE0BC"];
var options = {
color: colorList,
legend: {
show: false,
width: "500px",
height: "160px",
orient: "vertical",
@ -87,8 +92,10 @@ var options = {
{
name: "",
type: "pie",
// radius: "70%",
// center: ["30%", "50%"],
radius: "70%",
center: ["30%", "50%"],
center: ["40%", "50%"],
clockwise: false,
// roseType: "area",
startAngle1: 180,
@ -133,7 +140,8 @@ var options = {
hoverAnimation: false,
emphasis: { scale: false },
clockwise: false,
center: ["30%", "50%"],
// center: ["30%", "50%"],
center: ["40%", "50%"],
// roseType: "area",
label: {
show: false,

323
ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/typeAnalysis/index.vue

@ -3,6 +3,21 @@
<WgtTitle :title="'感知事件类型分析'"></WgtTitle>
<div class="board fl-1">
<div class="charts keep-ratio" id="typeAnalysis"></div>
<div class="legend-box">
<el-carousel height="200px" direction="vertical">
<el-carousel-item
v-for="(item, index) in dataList"
:key="index"
class="legend-item"
>
<div v-for="(items, index) in item" class="legend-items">
<span class="legend-name">{{ items.name }}</span>
<span class="legend-num">{{ items.value }} </span>
<span class="legend-percert">{{ items.percert }}%</span>
</div>
</el-carousel-item>
</el-carousel>
</div>
</div>
</div>
</template>
@ -13,33 +28,33 @@ import * as echarts from "echarts";
import chartsStatistics from "./assets/charts";
import { getWarningTypeDay } from "../../../../../../../api/event/perceiveEvent";
const drawRoundRect = (ctx, x, y, width, height, radius, gr) => {
// ctx, x, y, , ,
ctx.beginPath();
ctx.fillStyle = gr;
ctx.arc(x + radius, y + radius, radius, Math.PI, (Math.PI * 3) / 2);
ctx.lineTo(width - radius + x, y);
ctx.arc(
width - radius + x,
radius + y,
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();
};
// const drawRoundRect = (ctx, x, y, width, height, radius, gr) => {
// // ctx, x, y, , ,
// ctx.beginPath();
// ctx.fillStyle = gr;
// ctx.arc(x + radius, y + radius, radius, Math.PI, (Math.PI * 3) / 2);
// ctx.lineTo(width - radius + x, y);
// ctx.arc(
// width - radius + x,
// radius + y,
// 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: "TypeAnalysis",
@ -47,9 +62,9 @@ export default {
WgtTitle,
},
data() {
return {};
return { dataList: [] };
},
created() { },
created() {},
methods: {},
mounted() {
setTimeout(() => {
@ -57,10 +72,8 @@ export default {
var myChart = echarts.init(document.getElementById("typeAnalysis"));
getWarningTypeDay().then((res) => {
console.log(res);
if (res.code == 200) {
let data = res.data;
console.log("===================22", data);
typeAnalysisData = [
{
name: "交通拥堵",
@ -123,15 +136,31 @@ export default {
value: 0,
},
];
let total = null;
data.forEach((item, index) => {
total += item.number;
});
data.forEach((item, index) => {
typeAnalysisData.forEach((r) => {
if (item.warningType == r.warningType) {
r.value += item.number;
r.value = item.number;
this.dataList.push({
name: r.name,
value: r.value,
percert:
total == 0 ? 0 : ((r.value / total) * 100).toFixed(2),
});
}
});
// drawRoundRect(context, 250, 8 + index * 28, 120, 24, 12, gr);
});
const list = this.dataList.reduce((acc, curr, index) => {
if (index % 6 === 0) acc.push([]);
acc[Math.floor(index / 6)].push(curr);
return acc;
}, []);
this.dataList = list;
chartsStatistics.legend.data = typeAnalysisData?.map((x) => x.name);
chartsStatistics.series[0].data = typeAnalysisData.map(
(item, index) => {
@ -158,29 +187,29 @@ export default {
myChart.setOption(chartsStatistics);
});
const domMap = document.getElementById("typeAnalysis");
let parentDiv = domMap.firstChild;
// canvas
let canvas = document.createElement("canvas");
canvas.width = parentDiv.offsetWidth;
canvas.height = parentDiv.offsetHeight;
parentDiv.appendChild(canvas);
const context = canvas.getContext("2d");
// const domMap = document.getElementById("typeAnalysis");
// let parentDiv = domMap.firstChild;
// // canvas
// let canvas = document.createElement("canvas");
// canvas.width = parentDiv.offsetWidth;
// canvas.height = parentDiv.offsetHeight;
// parentDiv.appendChild(canvas);
// const context = canvas.getContext("2d");
//
var gr = context.createLinearGradient(230, 0, 360, 0);
//
gr.addColorStop(1, "rgba(92,197,255,0)");
gr.addColorStop(0, "rgba(92,197,255,0.5)");
// //
// var gr = context.createLinearGradient(230, 0, 360, 0);
// //
// gr.addColorStop(1, "rgba(92,197,255,0)");
// gr.addColorStop(0, "rgba(92,197,255,0.5)");
context.lineWidth = 1; // 线
// context.lineWidth = 1; // 线
//
drawRoundRect(context, 228, 8, 280, 24, 12, gr);
drawRoundRect(context, 228, 36, 280, 24, 12, gr);
drawRoundRect(context, 228, 64, 280, 24, 12, gr);
drawRoundRect(context, 228, 92, 280, 24, 12, gr);
drawRoundRect(context, 228, 120, 280, 24, 12, gr);
// //
// drawRoundRect(context, 228, 8, 280, 24, 12, gr);
// drawRoundRect(context, 228, 36, 280, 24, 12, gr);
// drawRoundRect(context, 228, 64, 280, 24, 12, gr);
// drawRoundRect(context, 228, 92, 280, 24, 12, gr);
// drawRoundRect(context, 228, 120, 280, 24, 12, gr);
});
});
},
@ -191,23 +220,199 @@ export default {
.congestion {
.board {
padding: 0px 20px;
background: linear-gradient(180deg,
rgba(6, 66, 88, 0.2) 0%,
#06425888 100%);
background: linear-gradient(
180deg,
rgba(6, 66, 88, 0.2) 0%,
#06425888 100%
);
border-radius: 5px 5px 5px 5px;
opacity: 1;
border: 1px solid;
border-image: linear-gradient(360deg,
border-image: linear-gradient(
360deg,
rgba(55, 231, 255, 0.1),
rgba(55, 231, 255, 0)) 1 1;
rgba(55, 231, 255, 0)
)
1 1;
display: flex;
justify-content: center;
align-items: center;
.legend-box {
width: 60%;
margin: auto;
margin-top: 20px;
height: 185px;
overflow: hidden;
.legend-item {
width: 100%;
/**
单个动画循环样式 勿删
*/
// height: 30px;
// display: flex;
// justify-content: space-between;
// align-items: center;
// animation: 5s infinite roll;
// position: relative;
// &::before {
// // position: absolute;
// content: "";
// width: 8px;
// height: 8px;
// left: 0px;
// border-radius: 50%;
// background: #37e7ff;
// }
.legend-items {
width: 100%;
height: 24px;
display: flex;
justify-content: space-between;
align-items: center;
padding-left: 20px;
background: linear-gradient(to right, #327799 0%, #0d3443 60%);
border-top-left-radius: 25px;
border-bottom-left-radius: 25px;
margin-bottom: 5px;
&::before {
// position: absolute;
content: "";
width: 8px;
height: 8px;
left: 0px;
border-radius: 50%;
background: #37e7ff;
}
}
.legend-name {
width: 60px;
margin-left: 10px;
font-size: 12px;
}
.legend-num,
.legend-percert {
width: 50px;
display: flex;
justify-content: center;
align-items: center;
font-size: 12px;
color: #37e7ff;
font-weight: bold;
}
}
.legend-item:nth-child(1) {
.legend-items:nth-child(1) {
&::before {
background: #019aff;
}
}
.legend-items:nth-child(2) {
&::before {
background: #3cc3f0;
}
}
.legend-items:nth-child(3) {
&::before {
background: #51d5ad;
}
}
.legend-items:nth-child(4) {
&::before {
background: #ffdd69;
}
}
.legend-items:nth-child(5) {
&::before {
background: #f6a73c;
}
}
.legend-items:nth-child(6) {
&::before {
background: #7390fd;
}
}
}
.legend-item:nth-child(2) {
.legend-items:nth-child(1) {
&::before {
background: #2967ea;
}
}
.legend-items:nth-child(2) {
&::before {
background: #1da7ff;
}
}
.legend-items:nth-child(3) {
&::before {
background: #219f73;
}
}
.legend-items:nth-child(4) {
&::before {
background: #7cedd5;
}
}
}
/**
单个动画循环样式 勿删
*/
// .legend-item:nth-child(1) {
// &::before {
// background: #68f4dd;
// }
// }
// .legend-item:nth-child(2) {
// &::before {
// background: #1785c0;
// }
// }
// .legend-item:nth-child(3) {
// &::before {
// background: #476dbc;
// }
// }
// .legend-item:nth-child(4) {
// &::before {
// background: #b55233;
// }
// }
// .legend-item:nth-child(5) {
// &::before {
// background: #b0862c;
// }
// }
// .legend-item:nth-child(6) {
// &::before {
// background: #35ad6b;
// }
// }
// .legend-item:nth-child(7) {
// &::before {
// background: #219f73;
// }
// }
// .legend-item:nth-child(8) {
// &::before {
// background: #7cedd5;
// }
// }
// .legend-item:nth-child(9) {
// &::before {
// background: #68f4dd;
// }
// }
}
}
}
::v-deep .el-carousel__indicators--vertical {
display: none;
}
.charts {
height: 180px;
width: 100%;
width: 50%;
}
</style>

16
ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/index.vue

@ -2,7 +2,7 @@
<div class="congestion">
<div class="queryList">
<Card
v-for="(item, index) in dataList"
v-for="(item, index) in data"
:cardData="item"
:keyMap="keyMap"
:hasBtn="false"
@ -69,13 +69,13 @@ export default {
],
selectIndex: 0,
dataList: [],
// data: Array.from({ length: 10 }).map(() => ({
// name: "1",
// rote: "",
// arrdeass: "K59+256",
// time: "2024.01.04 13:00:00",
// start: "",
// })),
data: Array.from({ length: 10 }).map(() => ({
name: "气象监测器1",
rote: "济南方向",
arrdeass: "K59+256",
time: "2024.01.04 13:00:00",
start: "晴转多云",
})),
};
},

2
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/components/flowstate/index.vue

@ -67,7 +67,7 @@ export default {
.tag1 {
position: absolute;
margin-top: -174px;
margin-left: 80px;
margin-left: 120px;
font-size: 12px;
}

Loading…
Cancel
Save