feat:工程车作业管控及人员行为AI智能识别预警系统首页 新疆天山钢铁新能源装载机监控项目 登陆

This commit is contained in:
xuyoubin 2023-12-26 17:31:28 +08:00
parent 1943306ac6
commit 8f8df39b2d
20 changed files with 343 additions and 55 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 909 KiB

View File

@ -98,6 +98,11 @@ export default {
this.title = '工程设备新能源电池溯源' this.title = '工程设备新能源电池溯源'
document.title = '工程设备新能源电池溯源' document.title = '工程设备新能源电池溯源'
break; break;
case '9340':
//
this.title = '新疆天山钢铁新能源监控'
document.title = '新疆天山钢铁新能源监控'
break;
// case '9320': // case '9320':
// // AI // // AI
// this.title = 'AI' // this.title = 'AI'

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -5,23 +5,12 @@
<div class="top-warper"> <div class="top-warper">
<div <div
v-for="(item, index) in topList" v-for="(item, index) in topList"
class="top-warper-item" :class="['top-warper-item','top-img-'+(index+1).toString()]"
:style="{ backgroundColor: item.color }"
:key="index" :key="index"
> >
<div>{{ item.name }}</div> <div>{{ item.name }}</div>
<div <div style="font-weight:600;font-size:20px;font-family: 'TITLEFONT';margin-top:10px;">{{ item.val }}</div>
style="
display: flex;
width: 100%;
margin-top:20px;
align-items: center;
justify-content: space-between;
"
>
<div style="font-weight:600;font-size:20px;">{{ item.val }}</div>
<div :class="['top-card-icon', 'top-icon-' + (index + 1).toString()]"></div>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -71,37 +60,30 @@ export default {
{ {
name: "车辆总数", name: "车辆总数",
val: "326", val: "326",
color: "#e9f1ff",
}, },
{ {
name: "在线总数", name: "在线总数",
val: "260", val: "260",
color: "#f0faff",
}, },
{ {
name: "工地总数", name: "工地总数",
val: "34", val: "34",
color: "#e9f1ff",
}, },
{ {
name: "油耗", name: "油耗",
val: "153", val: "153",
color: "#f0faff",
}, },
{ {
name: "报警统计", name: "报警统计",
val: "15", val: "15",
color: "#e9f1ff",
}, },
{ {
name: "故障总量", name: "故障总量",
val: "30", val: "30",
color: "#f0faff",
}, },
{ {
name: "维修总量", name: "维修总量",
val: "26", val: "26",
color: "#e9f1ff",
}, },
], ],
}; };
@ -172,10 +154,11 @@ export default {
}, },
], ],
grid: { grid: {
width: "80%", width: "82%",
height: "auto", height: "auto",
left: "15%", left: "15%",
// bottom:'15%' top:'5%',
bottom:'10%'
}, },
}) })
); );
@ -277,6 +260,7 @@ export default {
width: "80%", width: "80%",
height: "auto", height: "auto",
left: "10%", left: "10%",
top:'5%',
bottom: "20%", bottom: "20%",
}, },
}) })
@ -340,9 +324,9 @@ export default {
}, },
], ],
grid: { grid: {
width: "80%", width: "90%",
height: "auto", height: "auto",
left: "15%", top:'10%',
bottom: "20%", bottom: "20%",
}, },
}) })
@ -357,6 +341,9 @@ export default {
axisLine: { axisLine: {
show: true, show: true,
}, },
axisLabel:{
interval:0
},
data: [ data: [
"牵引工具", "牵引工具",
"紧固工具", "紧固工具",
@ -395,13 +382,12 @@ export default {
normal: { normal: {
color: function (params) { color: function (params) {
var arr = [ var arr = [
"#418fe2", "#23d96e",
"#d5adff", "#d5adff",
"#39d8f9", "#39d8f9",
"#689fff", "#689fff",
"#fdd67c", "#fdd67c",
]; ];
console.log(params,99);
return arr[params.dataIndex]; return arr[params.dataIndex];
}, },
label: { label: {
@ -418,15 +404,14 @@ export default {
}, },
], ],
grid: { grid: {
width: "80%", width: "90%",
height: "auto", height: "auto",
left: "15%", top:'10%',
bottom: "20%", bottom: "10%",
}, },
}) })
); );
}, },
initMap() { initMap() {
AMapLoader.load({ AMapLoader.load({
key: "e49669059fa36494531a82ed982f395c", // WebKey load key: "e49669059fa36494531a82ed982f395c", // WebKey load
@ -435,7 +420,7 @@ export default {
}) })
.then((AMap) => { .then((AMap) => {
this.map = new AMap.Map("map", { this.map = new AMap.Map("map", {
zoom: 15, // zoom: 16, //
center: [106.503005,29.515668], // center: [106.503005,29.515668], //
}); });
this.map.on("click", (e) => { this.map.on("click", (e) => {
@ -446,22 +431,35 @@ export default {
const marks=[ const marks=[
{ {
locaton:[106.49925434121705,29.516762649621796], locaton:[106.49925434121705,29.516762649621796],
name:'新世纪百货', name:'张建波',
device:'AI摄像头-CAM90801' device:'川A56578',
phone:'18715351234',
type:'渣土车'
}, },
{ {
locaton:[106.50233888158418, 29.51453123556404], locaton:[106.50233888158418, 29.51453123556404],
name:'五洲小区东区彩虹广场', name:'管春鹏',
device:'AI摄像头-CAM90802' device:'川A66666',
phone:'15615312983',
type:'推土车'
}, },
{ {
locaton:[106.50438272485353,29.518270460128708], locaton:[106.50438272485353,29.518270460128708],
name:'虹桥小区', name:'张志扬',
device:'AI摄像头-CAM90804' device:'川A99999',
} phone:'16615371234',
type:'破石车'
},
{
locaton:[106.50738272485353,29.518570460128708],
name:'孙留住',
device:'川A32621',
phone:'18515371234',
type:'渣土车'
},
] ]
marks.forEach((item, index) => { marks.forEach((item, index) => {
this.addMapMarker(item.locaton, 'car2', { name: item.name, device: item.device }) this.addMapMarker(item.locaton, 'car2', { name: item.name, device: item.device,type:item.type,phone: item.phone})
}); });
}) })
.catch((e) => { .catch((e) => {
@ -469,7 +467,7 @@ export default {
}); });
}, },
// //
addMapMarker(sourceData = [], type = "sxt", info = {}) { addMapMarker(sourceData = [], type = "car2", info = {}) {
const marker = new AMap.Marker({ const marker = new AMap.Marker({
position: new AMap.LngLat(sourceData[0], sourceData[1]), position: new AMap.LngLat(sourceData[0], sourceData[1]),
offset: new AMap.Pixel(-30, -52), offset: new AMap.Pixel(-30, -52),
@ -487,12 +485,16 @@ export default {
// //
showInfoWindow(lng, lat, sourceInfo) { showInfoWindow(lng, lat, sourceInfo) {
let content = ` let content = `
<div style="padding: 6px;background-color: #52bcff;border-radius: 10px;color:#fff;"> <div style="padding: 6px;background-color: #39c5ff;border-radius: 10px;color:#fff;">
<div> <div>
<div style="padding: 4px;fontweigth:500">车牌${sourceInfo.device}</div> <div style="padding: 4px;fontweigth:500">车牌${sourceInfo.device}</div>
<div style="padding: 4px;margin:5px 0">司机${sourceInfo.name}</div> <div style="padding: 4px;margin:5px 0">司机${sourceInfo.name}</div>
<div style="padding: 4px;margin:5px 0">联系方式${sourceInfo.name}</div> <div style="padding: 4px;margin:5px 0">联系方式${sourceInfo.phone}</div>
<div style="padding: 4px;margin:5px 0">车辆类型${sourceInfo.name}</div> <div style="padding: 4px;margin:5px 0">车辆类型${sourceInfo.type}</div>
<div style='display:flex;justify-content: space-between;align-items: center;'>
<div style="width:47%;height:2rem;padding:2px; background-image:url('/images/icon.png');color:#008DFF; background-size:100% 100%; line-height:2rem;text-align:center;">查看轨迹</div>
<div style="width:47%;height:2rem;padding:2px; background-image:url('/images/icon.png');color:#008DFF; background-size:100% 100%; line-height:2rem;text-align:center;">一键呼叫</div>
</div>
</div> </div>
</div> </div>
`; `;
@ -514,7 +516,6 @@ export default {
.box { .box {
width: 100%; width: 100%;
padding: 10px 15px; padding: 10px 15px;
height: calc(100% - 84px) !important;
background: #f1f1f1; background: #f1f1f1;
} }
.box-title { .box-title {
@ -527,15 +528,11 @@ export default {
grid-gap: 20px; grid-gap: 20px;
.top-warper-item { .top-warper-item {
padding: 15px; padding: 15px;
background-size: 100% 100%;
display: flex; display: flex;
width: 100%; width: 100%;
flex-direction: column; flex-direction: column;
align-items: center;
.top-card-icon{
width: 2rem;
height: 2rem;
background-size: 100% 100%;
}
} }
} }
// //
@ -568,7 +565,7 @@ export default {
} }
} }
.center { .center {
width: 43%; width: 41%;
height: 600px; height: 600px;
#map{ #map{
width: 100%; width: 100%;
@ -598,8 +595,8 @@ export default {
} }
} }
} }
@for $i from 1 through 7{ @for $i from 1 through 7 {
.top-icon-#{$i} { .top-img-#{$i} {
background-image: url(./assets/top#{$i}.png); background-image: url(./assets/top#{$i}.png);
} }
} }

View File

@ -30,6 +30,7 @@ import constructionHome from './constructionSiteData/analysis/index.vue'
import waterHome from './waterHome/index.vue' import waterHome from './waterHome/index.vue'
import battery from './battery/index.vue' import battery from './battery/index.vue'
import hlsnHome from './hlsnManage/home/index.vue' import hlsnHome from './hlsnManage/home/index.vue'
import engineer from './engineeringVehicle/home/index.vue'
export default { export default {
components: { components: {
HomePage, HomePage,
@ -44,7 +45,8 @@ export default {
constructionHome, constructionHome,
waterHome, waterHome,
battery, battery,
hlsnHome hlsnHome,
engineer
}, },
data() { data() {
return { return {

View File

@ -214,6 +214,11 @@ export default {
loginDom.style.backgroundImage = 'url(/images/xinnengyuan-bg.png)' loginDom.style.backgroundImage = 'url(/images/xinnengyuan-bg.png)'
this.redirect = '/index' this.redirect = '/index'
break; break;
case '9340':
document.title = '新疆天山钢铁新能源监控'
loginDom.style.backgroundImage = 'url(/images/xinjiang-bg.png)'
this.redirect = '/index'
break;
// case '9350': // case '9350':
// document.title = 'AI' // document.title = 'AI'
// loginDom.style.backgroundImage = 'url(/images/zuoye.png)' // loginDom.style.backgroundImage = 'url(/images/zuoye.png)'

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@ -0,0 +1,279 @@
<template>
<div class="box">
<!-- 系统入口 -->
<div class="top">
<div class="box-title">系统入口</div>
<div class="top-item">
<div
:style="{
textAlign: 'center',
height: '70px',
lineHeight: '70px',
boxShadow: '2px 2px 2px #ccc',
color: '#fff',
background: item.color,
}"
v-for="(item, index) in topList"
:key="index"
>
<div>{{ item.name }}</div>
</div>
</div>
</div>
<!-- 设备统计 -->
<div class="statistics">
<div class="box-title">设备统计</div>
<div class="statistics-warper">
<div
class="statistics-item"
v-for="(item, index) in statisticsList"
:key="index"
>
<div style="margin-bottom: 10px">{{ item.name }}</div>
<div
style="
display: flex;
width: 100%;
justify-content: space-between;
align-items: center;
"
>
<div style="font-family: 'TITLEFONT'; font-size: 20px">
{{ item.value }}
</div>
<div
:class="['top-icon-warper', 'top-icon-' + (index + 1).toString()]"
></div>
</div>
</div>
</div>
</div>
<!-- 设备运行统计 -->
<div class="device">
<div class="box-title">设备运行统计</div>
<div>
<div id="chart1"></div>
</div>
</div>
<!-- 设备报警 -->
<div class="footer"></div>
</div>
</template>
<script>
import {
generateBaseOptions,
generatePieOptions,
initChartStatic,
} from "@/utils/bigscreenTool/index.js";
export default {
data() {
return {
topList: [
{
name: "新能源转载机接口对接",
color: "#73bfdd",
path: "",
},
{
name: "新能源装载机监控",
color: "#90cb75",
path: "",
},
{
name: "工程设备统一监控",
color: "#ed6666",
path: "",
},
{
name: "工程数据可视化",
color: "#f9c758",
path: "",
},
],
statisticsList: [
{
name: "设备总数",
value: "32",
color: "#ed6666",
},
{
name: "已监控设备",
value: "28",
color: "#2ac2d3",
},
{
name: "未监控设备",
value: "4",
color: "#f7b400",
},
{
name: "正常运行设备",
value: "19",
color: "#73bfdd",
},
{
name: "正常停机设备",
value: "10",
color: "#90cb75",
},
{
name: "维修保养设备",
value: "3",
color: "#ffd662",
},
],
};
},
mounted() {
this.initChart1();
this.initChart2();
},
methods: {
initChart1() {
let xAxisData = [];
for (let i = 0; i <= 24; i++) {
xAxisData.push(i);
}
console.log(xAxisData, 98);
initChartStatic(
"chart1",
generateBaseOptions({
xAxis: {
data: xAxisData,
axisTick: {
alignWithLabel: true,
},
axisLine: {
show: true,
lineStyle: {
color: "#25252545",
},
},
},
legend: { show: false },
yAxis: {
type: "value",
splitLine: {
//线
show: true, //
lineStyle: {
//线
color: "#0735a2", //线
width: 1, //线
type: "dashed", //线
},
},
splitArea: {
//
show: true, //
},
},
color: ["", "#"],
series: [
{
name: "设备停机数量",
data: [
160, 100, 90, 100, 90, 70, 80, 100, 90, 70, 90, 60, 80, 60, 90,
110, 60, 70, 80, 60, 120, 130, 140, 150, 160,
],
type: "line",
smooth: false,
showSymbol: false, //
lineStyle: {
color: "#cdb1b1",
},
},
{
name: "设备运行数量",
data: [
0, 90, 100, 110, 110, 130, 120, 150, 110, 130, 100, 110, 110,
130, 150, 140, 100, 100, 110, 100, 90, 100, 110, 80, 0,
],
type: "line",
showSymbol: false, //
smooth: false,
lineStyle: {
color: "#23d96e",
},
},
],
grid:{
left:'3%',
top:'5%',
bottom:'10%'
}
})
);
},
initChart2() {},
},
};
</script>
<style lang="scss" scoped>
@font-face {
font-family: "TITLEFONT";
src: url(../../../assets/biaoti.ttf);
}
.box {
width: 100%;
height: 100vh;
background: #f1f1f1;
padding: 10px 15px;
}
.box-title {
font-family: "TITLEFONT";
margin-bottom: 15px;
}
//
.top {
width: 100%;
background: #fff;
padding: 15px;
.top-item {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-column-gap: 50px;
}
}
//
.statistics {
width: 100%;
background: #fff;
padding: 15px;
margin-top: 20px;
.statistics-warper {
display: grid;
grid-template-columns: repeat(6, 1fr);
grid-column-gap: 20px;
.statistics-item {
display: flex;
padding: 15px;
flex-direction: column;
align-items: center;
box-shadow: 2px 2px 2px #ccc;
border: 1px solid #000;
.top-icon-warper {
width: 2rem;
height: 2rem;
background-size: 100% 100%;
}
}
}
}
//
.device {
width: 100%;
padding: 15px;
margin-top: 20px;
background: #fff;
#chart1 {
width: 100%;
height: calc(300px - 2rem);
}
}
@for $i from 1 through 6 {
.top-icon-#{$i} {
background-image: url(./assets/top#{$i}.png);
}
}
</style>