feat: 管仲远程视频监控管理项目 首页
BIN
god-ui/src/views/constructionSiteData/analysis/assets/top1.png
Normal file
After Width: | Height: | Size: 8.4 KiB |
BIN
god-ui/src/views/constructionSiteData/analysis/assets/top2.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
god-ui/src/views/constructionSiteData/analysis/assets/top3.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
god-ui/src/views/constructionSiteData/analysis/assets/top4.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
god-ui/src/views/constructionSiteData/analysis/assets/top5.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
god-ui/src/views/constructionSiteData/analysis/assets/top6.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
god-ui/src/views/constructionSiteData/analysis/assets/top7.png
Normal file
After Width: | Height: | Size: 6.0 KiB |
@ -11,10 +11,12 @@
|
|||||||
class="grid-basic-top-item"
|
class="grid-basic-top-item"
|
||||||
v-for="(item, index) in topLeftList"
|
v-for="(item, index) in topLeftList"
|
||||||
:key="index"
|
:key="index"
|
||||||
:style="{ color: item.color }"
|
|
||||||
>
|
>
|
||||||
<div>{{ item.msg }}</div>
|
<div :class="['top-icon-wrapper', item.icon]"></div>
|
||||||
<div>{{ item.number }}</div>
|
<div class="top-text-wrapper">
|
||||||
|
<div class="top-text-msg">{{ item.msg }}</div>
|
||||||
|
<div class="top-text-number">{{ item.number }}</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -32,8 +34,11 @@
|
|||||||
v-for="(item, index) in topRightList"
|
v-for="(item, index) in topRightList"
|
||||||
:key="index"
|
:key="index"
|
||||||
>
|
>
|
||||||
<div>{{ item.msg }}</div>
|
<div :class="['top-icon-wrapper', item.icon]"></div>
|
||||||
<div>{{ item.number }}</div>
|
<div class="top-text-wrapper">
|
||||||
|
<div class="top-text-msg">{{ item.msg }}</div>
|
||||||
|
<div class="top-text-number">{{ item.number }}</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -129,35 +134,42 @@ export default {
|
|||||||
msg: "已接入",
|
msg: "已接入",
|
||||||
number: 10,
|
number: 10,
|
||||||
color: "blue",
|
color: "blue",
|
||||||
|
icon: 'icon-1'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
msg: "在线",
|
msg: "在线",
|
||||||
number: 2,
|
number: 2,
|
||||||
color: "#7ece51",
|
color: "#7ece51",
|
||||||
|
icon: 'icon-2'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
msg: "离线",
|
msg: "离线",
|
||||||
number: 8,
|
number: 8,
|
||||||
color: "#ccc",
|
color: "#ccc",
|
||||||
|
icon: 'icon-3'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
msg: "维护",
|
msg: "维护",
|
||||||
number: 1,
|
number: 1,
|
||||||
color: "#edca5f",
|
color: "#edca5f",
|
||||||
|
icon: 'icon-4'
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
topRightList: [
|
topRightList: [
|
||||||
{
|
{
|
||||||
msg: "累计",
|
msg: "累计",
|
||||||
number: 27,
|
number: 27,
|
||||||
|
icon: 'icon-5'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
msg: "已处理",
|
msg: "已处理",
|
||||||
number: 26,
|
number: 26,
|
||||||
|
icon: 'icon-6'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
msg: "未处理",
|
msg: "未处理",
|
||||||
number: 1,
|
number: 1,
|
||||||
|
icon: 'icon-7'
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
ProjectFunctionsList: [
|
ProjectFunctionsList: [
|
||||||
@ -209,6 +221,15 @@ export default {
|
|||||||
this.initChart3();
|
this.initChart3();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
getxAxisData(length = 7) {
|
||||||
|
const baseDate = new Date(), series = [];
|
||||||
|
for (let i = 0; i < length; i++) {
|
||||||
|
const middleDate = new Date();
|
||||||
|
middleDate.setTime(baseDate.getTime() - i * 1000 * 60 * 60 * 24)
|
||||||
|
series.unshift(`${middleDate.getMonth() + 1}-${middleDate.getDate()}`)
|
||||||
|
}
|
||||||
|
return series
|
||||||
|
},
|
||||||
initChart1() {
|
initChart1() {
|
||||||
initChartStatic(
|
initChartStatic(
|
||||||
"chart1",
|
"chart1",
|
||||||
@ -282,7 +303,106 @@ export default {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
initChart2() {
|
initChart2() {
|
||||||
|
initChartStatic('chart2', generateBaseOptions({
|
||||||
|
color: [
|
||||||
|
'#37A2DA',
|
||||||
|
'#9FE6B8',
|
||||||
|
'#FFDB5C',
|
||||||
|
'#ff9f7f',
|
||||||
|
'#fb7293',
|
||||||
|
'#E062AE',
|
||||||
|
'#32C5E9',
|
||||||
|
'#67E0E3',
|
||||||
|
'#E690D1',
|
||||||
|
'#e7bcf3',
|
||||||
|
'#9d96f5',
|
||||||
|
'#8378EA',
|
||||||
|
'#96BFFF'
|
||||||
|
],
|
||||||
|
xAxis: {
|
||||||
|
data: this.getxAxisData(15),
|
||||||
|
axisLine: {
|
||||||
|
show: true,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#25252545'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
textStyle: {
|
||||||
|
color: '#252525A0',
|
||||||
|
fontSize: 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
name: '',
|
||||||
|
max: 30,
|
||||||
|
splitLine: {
|
||||||
|
// 坐标轴在grid区域中的分割线
|
||||||
|
show: true,
|
||||||
|
lineStyle: {
|
||||||
|
type: 'dashed',
|
||||||
|
color: '#25252545'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: true,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#25252545'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '重要区域工作人员检测',
|
||||||
|
data: [2, 8, 11, 9, 7, 1, 3, 6, 14, 10, 9, 7, 11, 10, 5],
|
||||||
|
type: 'line',
|
||||||
|
smooth: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '安全帽佩戴检测',
|
||||||
|
data: [15, 20, 18, 17, 11, 10, 8, 10, 9, 21, 19, 8, 11, 24, 20],
|
||||||
|
type: 'line',
|
||||||
|
smooth: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '周遭入侵检测',
|
||||||
|
data: [16, 17, 2, 29, 11, 10, 8, 15, 18, 7, 6, 10, 11, 10, 9],
|
||||||
|
type: 'line',
|
||||||
|
smooth: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '反光衣穿戴检测',
|
||||||
|
data: [1, 15, 11, 8, 10, 11, 15, 21, 9, 19, 15, 2, 8, 19, 16],
|
||||||
|
type: 'line',
|
||||||
|
smooth: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '裸土覆盖检测',
|
||||||
|
data: [11, 20, 18, 9, 11, 16, 9, 24, 15, 7, 23, 16, 8, 11, 10],
|
||||||
|
type: 'line',
|
||||||
|
smooth: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '人员聚集检测',
|
||||||
|
data: [18, 16, 21, 7, 11, 16, 8, 9, 1, 17, 11, 9, 22, 23, 9],
|
||||||
|
type: 'line',
|
||||||
|
smooth: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '高支模检测',
|
||||||
|
data: [1, 2, 1, 4, 3, 6, 2, 3, 4, 6, 8, 9, 1, 4, 2],
|
||||||
|
type: 'line',
|
||||||
|
smooth: true
|
||||||
|
},
|
||||||
|
],
|
||||||
|
grid: {
|
||||||
|
left: '4%',
|
||||||
|
top: '14%',
|
||||||
|
right: '2%',
|
||||||
|
bottom: '11%'
|
||||||
|
}
|
||||||
|
}))
|
||||||
},
|
},
|
||||||
initChart3() {
|
initChart3() {
|
||||||
initChartStatic(
|
initChartStatic(
|
||||||
@ -339,6 +459,12 @@ export default {
|
|||||||
colorBy: "data",
|
colorBy: "data",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
grid: {
|
||||||
|
left: '4%',
|
||||||
|
top: '14%',
|
||||||
|
right: '2%',
|
||||||
|
bottom: '11%'
|
||||||
|
}
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@ -351,7 +477,7 @@ export default {
|
|||||||
src: url(../../../assets/biaoti.ttf);
|
src: url(../../../assets/biaoti.ttf);
|
||||||
}
|
}
|
||||||
.shadow-wrapper {
|
.shadow-wrapper {
|
||||||
box-shadow: 2px 2px 2px #25252525, -2px -2px 2px #14141414;
|
box-shadow: 2px 2px 4px #25252525, -2px -2px 3px #14141414;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
}
|
}
|
||||||
.construction-wrapper {
|
.construction-wrapper {
|
||||||
@ -367,8 +493,10 @@ export default {
|
|||||||
background-color: white;
|
background-color: white;
|
||||||
.grid-basic-top-title {
|
.grid-basic-top-title {
|
||||||
font-family: "ConstrctionTitle";
|
font-family: "ConstrctionTitle";
|
||||||
color: #252525a2;
|
color: #252525c2;
|
||||||
padding: 0.4rem 0;
|
padding: 0.4rem 0;
|
||||||
|
padding-top: 0;
|
||||||
|
font-size: 1.3rem;
|
||||||
}
|
}
|
||||||
.grid-basic-top-container {
|
.grid-basic-top-container {
|
||||||
display: grid;
|
display: grid;
|
||||||
@ -378,6 +506,26 @@ export default {
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
box-shadow: 2px 2px 2px #14141414, -2px -2px 2px #08080808;
|
||||||
|
padding: 1rem;
|
||||||
|
.top-icon-wrapper {
|
||||||
|
width: 3rem;
|
||||||
|
height: 3rem;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
.top-text-wrapper {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
width: calc(100% - 7rem);
|
||||||
|
.top-text-msg {
|
||||||
|
font-size: .9rem;
|
||||||
|
}
|
||||||
|
.top-text-number {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
font-family: "ConstrctionTitle";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -387,11 +535,12 @@ export default {
|
|||||||
background-color: white;
|
background-color: white;
|
||||||
.grid-basic-main-title {
|
.grid-basic-main-title {
|
||||||
font-family: "ConstrctionTitle";
|
font-family: "ConstrctionTitle";
|
||||||
color: #252525a2;
|
color: #252525b7;
|
||||||
padding: 0.4rem 0;
|
padding: 0.4rem 0;
|
||||||
|
padding-top: 0;
|
||||||
|
font-size: 1.3rem;
|
||||||
}
|
}
|
||||||
.grid-basic-main-container {
|
.grid-basic-main-container {
|
||||||
border: 1px solid red;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -401,14 +550,18 @@ export default {
|
|||||||
.project-func-wrapper {
|
.project-func-wrapper {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(4, 1fr);
|
grid-template-columns: repeat(4, 1fr);
|
||||||
gap: 12px;
|
gap: 2rem;
|
||||||
.project-func-item {
|
.project-func-item {
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
border: 1px solid #25252525;
|
border: 1px solid #25252525;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 0.6rem 1.4rem;
|
padding: 0.6rem 2rem;
|
||||||
|
box-shadow: 2px 2px 2px #14141414, -2px -2px 2px #08080808;
|
||||||
|
span:nth-child(2) {
|
||||||
|
font-family: "ConstrctionTitle";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.project-func-item-last {
|
.project-func-item-last {
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
@ -423,4 +576,10 @@ export default {
|
|||||||
#chart3 {
|
#chart3 {
|
||||||
min-height: 250px;
|
min-height: 250px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@for $i from 1 through 7 {
|
||||||
|
.icon-#{$i} {
|
||||||
|
background-image: url(./assets/top#{$i}.png);
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|