# Conflicts:
#	yanzhu-bigscreen/src/components/header.vue
dev_xd
姜玉琦 2025-04-20 13:33:24 +08:00
commit 1fda12bdff
483 changed files with 7014 additions and 20664 deletions

View File

@ -3,95 +3,78 @@
<el-row>
<el-col :span="8">
<div class="head-title-tab">
<div :class="nav == 1 ? 'head-nav active' : 'head-nav'" @click="doNav(1)"></div>
<div :class="nav == 1 ? 'head-nav active' : 'head-nav'" @click="doNav(1)" v-if="1==2"></div>
<div :class="nav == 2 ? 'head-nav active' : 'head-nav'" @click="doNav(2)"></div>
<div :class="(nav >= 300 && nav < 400) || nav == 3 ? 'head-nav active' : 'head-nav'"
style="position: relative;" class="has-submenu">
<div :class="(nav >= 300 && nav < 400) || nav == 3 ? 'head-nav active' : 'head-nav'" style="position: relative;" class="has-submenu">
<div @click="doNav(3)"></div>
<div class="header-btn-list">
<div class="header-btn-list-arrow"></div>
<div class="header-btn-list-item" style="">
<div class="header-btn-list-item" style>
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
<button type="button" :class="nav == 301 ? 'active' : ''" class="sub-btn"
@click="doNav(301)">安全隐患排查</button>
<button type="button" :class="nav == 302 ? 'active' : ''" class="sub-btn"
@click="doNav(302)">教育培训</button>
<button type="button" :class="nav == 303 ? 'active' : ''" class="sub-btn"
@click="doNav(303)">基坑监测</button>
<button type="button" :class="nav == 304 ? 'active' : ''" class="sub-btn"
@click="doNav(304)">塔基监测</button>
<button type="button" :class="nav == 301 ? 'active' : ''" class="sub-btn" @click="doNav(301)"></button>
<button type="button" :class="nav == 302 ? 'active' : ''" class="sub-btn" @click="doNav(302)"></button>
<button type="button" :class="nav == 303 ? 'active' : ''" class="sub-btn" @click="doNav(303)"></button>
<button type="button" :class="nav == 304 ? 'active' : ''" class="sub-btn" @click="doNav(304)"></button>
</div>
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
<button type="button" :class="nav == 305 ? 'active' : ''" class="sub-btn"
@click="doNav(305)">高支模监测</button>
<button type="button" :class="nav == 306 ? 'active' : ''" class="sub-btn"
@click="doNav(306)">配电箱监测</button>
<button type="button" :class="nav == 307 ? 'active' : ''" class="sub-btn"
@click="doNav(307)">爬架监测</button>
<button type="button" :class="nav == 308 ? 'active' : ''" class="sub-btn"
@click="doNav(308)">施工电梯监测</button>
<button type="button" :class="nav == 305 ? 'active' : ''" class="sub-btn" @click="doNav(305)"></button>
<button type="button" :class="nav == 306 ? 'active' : ''" class="sub-btn" @click="doNav(306)"></button>
<button type="button" :class="nav == 307 ? 'active' : ''" class="sub-btn" @click="doNav(307)"></button>
<button type="button" :class="nav == 308 ? 'active' : ''" class="sub-btn" @click="doNav(308)"></button>
</div>
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
<<<<<<< HEAD
<button type="button" :class="nav == 309 ? 'active' : ''" class="sub-btn"
@click="doNav(309)">视频监控</button>
<button type="button" :class="nav == 310 ? 'active' : ''" class="sub-btn"
@click="doNav(310)">AI预警</button>
<button type="button" :class="nav == 311 ? 'active' : ''" class="sub-btn"
@click="doNav(311)">标准化管理</button>
=======
<button type="button" :class="nav == 309 ? 'active' : ''" class="sub-btn" @click="doNav(309)"></button>
<button type="button" :class="nav == 310 ? 'active' : ''" class="sub-btn" @click="doNav(310)">AI</button>
<button type="button" :class="nav == 311 ? 'active' : ''" class="sub-btn" @click="doNav(311)"></button>
>>>>>>> 73fd57044f093b7a1819035a572efe8a70a36234
</div>
</div>
</div>
</div>
<div :class="(nav >= 400 && nav < 500) || nav == 4 ? 'head-nav active' : 'head-nav'"
style="position: relative;" class="has-submenu">
<div :class="(nav >= 400 && nav < 500) || nav == 4 ? 'head-nav active' : 'head-nav'" style="position: relative;" class="has-submenu">
<div @click="doNav(4)"></div>
<div class="header-btn-list">
<div class="header-btn-list-arrow"></div>
<div class="header-btn-list-item" style="">
<div class="header-btn-list-item" style>
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
<button type="button" :class="nav == 401 ? 'active' : ''" class="sub-btn"
@click="doNav(401)">质量隐患排查</button>
<button type="button" :class="nav == 402 ? 'active' : ''" class="sub-btn"
@click="doNav(402)">材料取样复试</button>
<button type="button" :class="nav == 403 ? 'active' : ''" class="sub-btn"
@click="doNav(403)">举牌验收</button>
<button type="button" :class="nav == 404 ? 'active' : ''" class="sub-btn"
@click="doNav(404)">标养室监测</button>
<button type="button" :class="nav == 401 ? 'active' : ''" class="sub-btn" @click="doNav(401)"></button>
<button type="button" :class="nav == 402 ? 'active' : ''" class="sub-btn" @click="doNav(402)"></button>
<button type="button" :class="nav == 403 ? 'active' : ''" class="sub-btn" @click="doNav(403)"></button>
<button type="button" :class="nav == 404 ? 'active' : ''" class="sub-btn" @click="doNav(404)"></button>
</div>
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
<button type="button" :class="nav == 405 ? 'active' : ''" class="sub-btn"
@click="doNav(405)">标准化管理</button>
<button type="button" :class="nav == 406 ? 'active' : ''" class="sub-btn"
@click="doNav(406)">混泥土监测</button>
<button type="button" :class="nav == 407 ? 'active' : ''" class="sub-btn"
@click="doNav(407)">爬架监测</button>
<button type="button" :class="nav == 408 ? 'active' : ''" class="sub-btn"
@click="doNav(408)">施工电梯监测</button>
<button type="button" :class="nav == 405 ? 'active' : ''" class="sub-btn" @click="doNav(405)"></button>
<button type="button" :class="nav == 406 ? 'active' : ''" class="sub-btn" @click="doNav(406)"></button>
<button type="button" :class="nav == 407 ? 'active' : ''" class="sub-btn" @click="doNav(407)"></button>
<button type="button" :class="nav == 408 ? 'active' : ''" class="sub-btn" @click="doNav(408)"></button>
</div>
</div>
</div>
</div>
<div :class="(nav >= 500 && nav < 600) || nav == 5 ? 'head-nav active' : 'head-nav'"
style="position: relative;" class="has-submenu">
<div :class="(nav >= 500 && nav < 600) || nav == 5 ? 'head-nav active' : 'head-nav'" style="position: relative;" class="has-submenu">
<div @click="doNav(5)"></div>
<div class="header-btn-list">
<div class="header-btn-list-arrow"></div>
<div class="header-btn-list-item" style="">
<div class="header-btn-list-item" style>
<div class="header-btn-list-padding menu-row1" style="text-align: left;">
<button type="button" :class="nav == 5 ? 'active' : ''" class="sub-btn"
@click="doNav(5)">进度管理</button>
<button type="button" :class="nav == 501 ? 'active' : ''" class="sub-btn"
@click="doNav(501)">延时摄影</button>
<button type="button" :class="nav == 5 ? 'active' : ''" class="sub-btn" @click="doNav(5)"></button>
<button type="button" :class="nav == 501 ? 'active' : ''" class="sub-btn" @click="doNav(501)"></button>
</div>
</div>
</div>
</div>
</div>
</el-col>
<el-col :span="8" class="header-center">
<img class="prj-logo" :src="selProject.setting.orgLogo"
v-if="selProject && selProject.setting && selProject.setting.orgLogo" />
<img class="prj-logo" :src="selProject.setting.orgLogo" v-if="selProject && selProject.setting && selProject.setting.orgLogo" />
{{ selProject?.setting?.orgName || '数字建安施工管理平台' }}
</el-col>
<el-col :span="8">
@ -99,31 +82,43 @@
<div :class="nav == 6 ? 'head-nav active' : 'head-nav'" @click="doNav(6)">绿</div>
</div>
<div class="header-title-user-info" style="display:inline-block;float:right;">
<el-select v-model="selProjectId" popper-class="header-sel-project-pop"
style="width: 150px;margin-right: 20px;height:30px;line-height: 30px;"
@change="doProjectSelect">
<el-option v-for="it in projects" :key="it.id" :label="it.projectName"
:value="it.id"></el-option>
<el-select v-model="selProjectId" popper-class="header-sel-project-pop" style="width: 150px;margin-right: 20px;height:30px;line-height: 30px;" @change="doProjectSelect">
<el-option v-for="it in projects" :key="it.id" :label="it.projectName" :value="it.id"></el-option>
</el-select>
<span class="command" @click="doLogout">{{ nickName }}
<span class="command" @click="doLogout">
{{ nickName }}
<i class="el-icon-switch-button"></i>
</span>
</div>
<i class="set-fullscreen set-font-size"
style="margin-left: 16px;position: absolute;top: 0px;right: 24px;" @click="toggleFullScreen">
<svg class="icon" v-if="!isFullScreen"
<i class="set-fullscreen set-font-size" style="margin-left: 16px;position: absolute;top: 0px;right: 24px;" @click="toggleFullScreen">
<svg
class="icon"
v-if="!isFullScreen"
style="width: 20px; vertical-align: middle;fill: currentColor;overflow: hidden;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3304">
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="3304"
>
<path
d="M145.066667 85.333333h153.6c25.6 0 42.666667-17.066667 42.666666-42.666666S324.266667 0 298.666667 0H34.133333C25.6 0 17.066667 8.533333 8.533333 17.066667 0 25.6 0 34.133333 0 42.666667v256c0 25.6 17.066667 42.666667 42.666667 42.666666s42.666667-17.066667 42.666666-42.666666V145.066667l230.4 230.4c17.066667 17.066667 42.666667 17.066667 59.733334 0 17.066667-17.066667 17.066667-42.666667 0-59.733334L145.066667 85.333333z m170.666666 563.2L162.133333 802.133333l-76.8 76.8V725.333333C85.333333 699.733333 68.266667 682.666667 42.666667 682.666667s-42.666667 17.066667-42.666667 42.666666v256c0 25.6 17.066667 42.666667 42.666667 42.666667h256c25.6 0 42.666667-17.066667 42.666666-42.666667s-17.066667-42.666667-42.666666-42.666666H145.066667l76.8-76.8 153.6-153.6c17.066667-17.066667 17.066667-42.666667 0-59.733334-17.066667-17.066667-42.666667-17.066667-59.733334 0z m665.6 34.133334c-25.6 0-42.666667 17.066667-42.666666 42.666666v153.6l-76.8-76.8-153.6-153.6c-17.066667-17.066667-42.666667-17.066667-59.733334 0-17.066667 17.066667-17.066667 42.666667 0 59.733334l153.6 153.6 76.8 76.8H725.333333c-25.6 0-42.666667 17.066667-42.666666 42.666666s17.066667 42.666667 42.666666 42.666667h256c25.6 0 42.666667-17.066667 42.666667-42.666667v-256c0-25.6-17.066667-42.666667-42.666667-42.666666z m0-682.666667h-256c-25.6 0-42.666667 17.066667-42.666666 42.666667s17.066667 42.666667 42.666666 42.666666h153.6l-76.8 76.8-153.6 153.6c-17.066667 17.066667-17.066667 42.666667 0 59.733334 17.066667 17.066667 42.666667 17.066667 59.733334 0l153.6-153.6 76.8-76.8v153.6c0 25.6 17.066667 42.666667 42.666666 42.666666s42.666667-17.066667 42.666667-42.666666v-256c0-25.6-17.066667-42.666667-42.666667-42.666667z"
fill="" p-id="3305"></path>
fill
p-id="3305"
/>
</svg>
<svg class="icon" v-else
<svg
class="icon"
v-else
style="width: 24px; vertical-align: middle;fill: currentColor;overflow: hidden;"
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3952">
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="3952"
>
<path
d="M384 597.333333h-256c-25.6 0-42.666667 17.066667-42.666667 42.666667s17.066667 42.666667 42.666667 42.666667h153.6L17.066667 947.2c-17.066667 17.066667-17.066667 42.666667 0 59.733333 17.066667 17.066667 42.666667 17.066667 59.733333 0L341.333333 742.4v153.6c0 25.6 17.066667 42.666667 42.666667 42.666667s42.666667-17.066667 42.666667-42.666667v-256c0-25.6-17.066667-42.666667-42.666667-42.666667z m358.4 85.333334h153.6c25.6 0 42.666667-17.066667 42.666667-42.666667s-17.066667-42.666667-42.666667-42.666667h-256c-25.6 0-42.666667 17.066667-42.666667 42.666667v256c0 25.6 17.066667 42.666667 42.666667 42.666667s42.666667-17.066667 42.666667-42.666667V742.4l264.533333 264.533333c17.066667 17.066667 42.666667 17.066667 59.733333 0 17.066667-17.066667 17.066667-42.666667 0-59.733333L742.4 682.666667zM640 426.666667h256c25.6 0 42.666667-17.066667 42.666667-42.666667s-17.066667-42.666667-42.666667-42.666667H742.4L1006.933333 76.8c17.066667-17.066667 17.066667-42.666667 0-59.733333-17.066667-17.066667-42.666667-17.066667-59.733333 0L682.666667 281.6V128c0-25.6-17.066667-42.666667-42.666667-42.666667s-42.666667 17.066667-42.666667 42.666667v256c0 25.6 17.066667 42.666667 42.666667 42.666667z m-256-341.333334c-25.6 0-42.666667 17.066667-42.666667 42.666667v153.6L76.8 8.533333C59.733333 0 25.6 0 8.533333 8.533333 0 25.6 0 59.733333 8.533333 76.8L281.6 341.333333H128c-25.6 0-42.666667 17.066667-42.666667 42.666667s17.066667 42.666667 42.666667 42.666667h256c25.6 0 42.666667-17.066667 42.666667-42.666667v-256c0-25.6-17.066667-42.666667-42.666667-42.666667z"
p-id="3953"></path>
p-id="3953"
/>
</svg>
</i>
</el-col>
@ -144,103 +139,110 @@ export default {
},
computed: {
nickName() {
return this.$store.getters.nickName;
return this.$store.getters.nickName
},
curNav() {
return this.$store.getters.nav;
}
return this.$store.getters.nav
},
},
watch: {
curNav(n, o) {
this.nav = this.$store.getters.nav;
}
this.nav = this.$store.getters.nav
},
},
mounted() {
window.xapp = this;
this.$api.project.findMyProjectList().then(d => {
this.projects = d.rows || [];
window.xapp = this
this.$api.project.findMyProjectList().then((d) => {
this.projects = d.rows || []
if (this.projects.length > 0) {
let id = localStorage.getItem("selProj") || this.projects[0].id
this.selProjectId = +id;
this.doProjectSelect();
let id = localStorage.getItem('selProj') || this.projects[0].id
this.selProjectId = +id
this.doProjectSelect()
}
});
})
},
methods: {
toggleFullScreen() {
let el = document.body;
this.$toggleFullScreen(el);
let el = document.body
this.$toggleFullScreen(el)
setTimeout(() => {
this.isFullScreen = document.fullscreenElement == el;
}, 400);
this.isFullScreen = document.fullscreenElement == el
}, 400)
},
doProjectSelect() {
let tmps = this.projects.filter(d => d.id == this.selProjectId);
let tmps = this.projects.filter((d) => d.id == this.selProjectId)
if (tmps.length > 0) {
this.$store.dispatch('SetSelProject', tmps[0]);
this.selProject = tmps[0];
this.$store.dispatch('SetSelProject', tmps[0])
this.selProject = tmps[0]
} else {
this.$store.dispatch('SetSelProject', null);
this.selProject = null;
this.$store.dispatch('SetSelProject', null)
this.selProject = null
}
localStorage.setItem("selProj", this.selProjectId);
localStorage.setItem('selProj', this.selProjectId)
},
doNav(n) {
if (this.nav == n) {
return;
return
}
this.nav = n;
this.nav = n
switch (n) {
case 1:
this.$router.push("/index");
break;
this.$router.push('/index')
break
case 2:
this.$router.push("/detail");
break;
this.$router.push('/detail')
break
case 3:
this.$router.push("/prjSafety");
break;
this.$router.push('/prjSafety')
break
case 309:
this.$router.push("/videoMonitor");
break;
this.$router.push('/videoMonitor')
break
case 301:
this.$router.push("/safetyCheck");
break;
this.$router.push('/safetyCheck')
break
case 304:
this.$router.push("/towerCrane");
break;
this.$router.push('/towerCrane')
break
case 306:
<<<<<<< HEAD
this.$router.push("/powerIot");
break;
case 310:
this.$router.push("/aiWarning");
break;
=======
this.$router.push('/powerIot')
break
>>>>>>> 73fd57044f093b7a1819035a572efe8a70a36234
case 4:
this.$router.push("/prjQuality");
break;
this.$router.push('/prjQuality')
break
case 5:
this.$router.push("/prjProgress");
break;
this.$router.push('/prjProgress')
break
case 6:
this.$router.push("/greenCarbon");
break;
this.$router.push('/greenCarbon')
break
case 501:
this.$router.push("/photography");
break;
this.$router.push('/photography')
break
}
},
doLogout() {
this.$confirm('确定注销并退出系统吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$store.dispatch('LogOut').then(() => {
location.href = window.XDBSAPP;
type: 'warning',
})
.then(() => {
this.$store.dispatch('LogOut').then(() => {
location.href = window.XDBSAPP
})
})
}).catch(() => { });
}
}
.catch(() => {})
},
},
}
</script>
@ -307,10 +309,8 @@ export default {
}
}
}
}
}
}
}
}
@ -373,8 +373,6 @@ export default {
}
@media (min-width: 2561px) {
.header-center {
font-size: 52px !important;
margin-top: 10px;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,21 +1,21 @@
<template>
<div class="index-page main-page">
</div>
<div class="index-page main-page"></div>
</template>
<script>
export default {
data() {
return {
selProject: null
selProject: null,
}
},
mounted() {
this.$store.dispatch('ChangeNav', 1);
this.$bus.$on('projectChange', prj => {
this.selProject = prj;
});
}
window.location.href = '#/detail'
this.$store.dispatch('ChangeNav', 1)
this.$bus.$on('projectChange', (prj) => {
this.selProject = prj
})
},
}
</script>

View File

@ -12,7 +12,7 @@
<div class="dept-info" v-else>
<img class="dept-img" src="images/company_3.png" />
<div class="dept-row">
<div class="dept-name">{{ deptType1.deptName }}</div>
<div class="dept-name" :title="deptType1.deptName">{{ deptType1.deptName }}</div>
<div class="dept-leader-phone" :title="(deptType1.leader || '') + ' ' + (deptType1.phone || '')">
<span class="dept-leader">{{ deptType1.leader }}</span>
<span class="dept-phone">{{ deptType1.phone }}</span>
@ -26,7 +26,7 @@
<div class="dept-info" v-else>
<img class="dept-img" src="images/company_2.png" />
<div class="dept-row">
<div class="dept-name">{{ deptType2.deptName }}</div>
<div class="dept-name" :title="deptType2.deptName">{{ deptType2.deptName }}</div>
<div class="dept-leader-phone" :title="(deptType2.leader || '') + ' ' + (deptType2.phone || '')">
<span class="dept-leader">{{ deptType2.leader }}</span>
<span class="dept-phone">{{ deptType2.phone }}</span>
@ -56,7 +56,7 @@
<div class="dept-info" v-else>
<img class="dept-img" src="images/company_11.png" />
<div class="dept-row">
<div class="dept-name">{{ deptType4.deptName }}</div>
<div class="dept-name" :title="deptType4.deptName">{{ deptType4.deptName }}</div>
<div class="dept-leader-phone" :title="(deptType4.leader || '') + ' ' + (deptType4.phone || '')">
<span class="dept-leader">{{ deptType4.leader }}</span>
<span class="dept-phone">{{ deptType4.phone }}</span>
@ -72,7 +72,7 @@
<div class="dept-info" v-else>
<img class="dept-img" src="images/company_12.png" />
<div class="dept-row">
<div class="dept-name">{{ deptType5.deptName }}</div>
<div class="dept-name" :title="deptType5.deptName">{{ deptType5.deptName }}</div>
<div class="dept-leader-phone" :title="(deptType5.leader || '') + ' ' + (deptType5.phone || '')">
<span class="dept-leader">{{ deptType5.leader }}</span>
<span class="dept-phone">{{ deptType5.phone }}</span>
@ -87,7 +87,7 @@
<div class="dept-info" v-else>
<img class="dept-img" src="images/company_10.png" />
<div class="dept-row">
<div class="dept-name">{{ deptType6.deptName }}</div>
<div class="dept-name" :title="deptType6.deptName">{{ deptType6.deptName }}</div>
<div class="dept-leader-phone" :title="(deptType6.leader || '') + ' ' + (deptType6.phone || '')">
<span class="dept-leader">{{ deptType6.leader }}</span>
<span class="dept-phone">{{ deptType6.phone }}</span>
@ -820,6 +820,9 @@ export default {
.dept-name {
color: #50a2eb;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.dept-leader-phone {
@ -904,7 +907,7 @@ export default {
.prj-img-nav {
position: absolute;
z-index: 999;
left: calc(50% - 100px);
.prj-img-nav-item {
display: inline-block;
line-height: 30px;

View File

@ -1,8 +1,6 @@
<template>
<MyDialog v-if="show" v-model="show" width="60vw" height="75vh" class="safety-check-dialog">
<template slot="title">
{{ title }}
</template>
<template slot="title">{{ title }}</template>
<div class="head-title-tab" style="padding: 10px 0px;">
<div :class="nav == 6 ? 'head-nav active' : 'head-nav'" @click="doNav(6)">{{ counts[0] }}</div>
<div :class="nav == 3 ? 'head-nav active' : 'head-nav'" @click="doNav(3)">{{ counts[1] }}</div>
@ -12,20 +10,17 @@
</div>
<div class="scroll data-list" :key="dataKey">
<div v-if="rows.length == 0" style="text-align: center;" class="div-no-data">
<img src="images/nodata.png" style="width: 120px;">
<img src="images/nodata.png" style="width: 120px;" />
<div style="text-align: center;font-size: 12px;color:#888;">暂无数据</div>
</div>
<div v-for="(it, idx) in rows" :key="idx" class="data-item">
<div class="left-image">
<div class="left-header">
<span class="sp-nav" :class="it.imgSel == 0 ? 'active' : ''" @click="it.imgSel = 0">整改前</span>
<span class="sp-nav" :class="it.imgSel == 1 ? 'active' : ''" v-if="it.checkState == 4"
@click="it.imgSel = 1">整改后</span>
<span class="sp-nav" :class="it.imgSel == 1 ? 'active' : ''" v-if="it.checkState == 4" @click="it.imgSel = 1"></span>
</div>
<el-image class="img-sm" fit="scale-down" :src="it.smarkUrl" v-if="it.imgSel == 0"
:preview-src-list="[it.smarkUrl]"></el-image>
<el-image class="img-sm" fit="scale-down" :src="it.marksPicture" v-if="it.imgSel == 1"
:preview-src-list="[it.marksPicture]"></el-image>
<el-image class="img-sm" fit="scale-down" :src="it.smarkUrl" v-if="it.imgSel == 0" :preview-src-list="[it.smarkUrl]"></el-image>
<el-image class="img-sm" fit="scale-down" :src="it.marksPicture" v-if="it.imgSel == 1" :preview-src-list="[it.marksPicture]"></el-image>
</div>
<div class="right-data">
<el-col :span="12">
@ -63,8 +58,15 @@
</div>
</div>
</div>
<el-pagination v-if="rows.length > 0" layout="total,prev, pager, next" @current-change="handleCurrentChange"
:total="total" :page-size="pageSize" :current-page.sync="pageNum" class="bg-pagination"></el-pagination>
<el-pagination
v-if="rows.length > 0"
layout="total,prev, pager, next"
@current-change="handleCurrentChange"
:total="total"
:page-size="pageSize"
:current-page.sync="pageNum"
class="bg-pagination"
></el-pagination>
</MyDialog>
</template>
@ -73,7 +75,7 @@ export default {
data() {
return {
show: false,
title: "安全隐患排查",
title: '安全隐患排查',
prjInfo: {},
nav: 6,
problemType: null,
@ -88,39 +90,39 @@ export default {
},
methods: {
handleCurrentChange(n) {
this.pageNum = n;
this.loadData();
this.pageNum = n
this.loadData()
},
getDict(n) {
let tmps = this.dangerTypeDict.filter(d => d.value == n);
return tmps.length > 0 ? tmps[0].label : '';
let tmps = this.dangerTypeDict.filter((d) => d.value == n)
return tmps.length > 0 ? tmps[0].label : ''
},
doNav(n) {
this.nav = n;
this.loadData();
this.nav = n
this.loadData()
},
showDialog(prj, n, dangerTypeDict) {
this.dangerTypeDict = dangerTypeDict;
this.problemType = n == 0 ? null : n;
this.prjInfo = prj;
this.title = ["安全隐患排查", "日常巡检", "周检", "月检", "转型检查"][n];
this.pageNum = 0;
this.show = true;
this.getCount(n);
this.loadData();
this.dangerTypeDict = dangerTypeDict
this.problemType = n == 0 ? null : n
this.prjInfo = prj
this.title = ['安全隐患排查', '日常巡检', '周检', '月检', '专项检查'][n]
this.pageNum = 0
this.show = true
this.getCount(n)
this.loadData()
},
getCount(n) {
let postData = {
projectId: this.prjInfo.id,
comId: this.prjInfo.comId,
infoType: 0
};
if (n > 0) {
postData.problemType = n;
infoType: 0,
}
this.$api.safety.listCountForBG(postData).then(d => {
this.counts = d.data.filter(it => it.projectName != 'a').map(it => it.id)
});
if (n > 0) {
postData.problemType = n
}
this.$api.safety.listCountForBG(postData).then((d) => {
this.counts = d.data.filter((it) => it.projectName != 'a').map((it) => it.id)
})
},
loadData() {
let postData = {
@ -130,19 +132,18 @@ export default {
pageNum: this.pageNum,
pageSize: this.pageSize,
problemType: this.problemType,
projectName: this.nav
};
this.$api.safety.listForBG(postData).then(d => {
this.total = d.total;
this.rows = (d.rows || []).map(it => {
it.imgSel = 0;
return it;
});
this.dataKey++;
});
}
}
projectName: this.nav,
}
this.$api.safety.listForBG(postData).then((d) => {
this.total = d.total
this.rows = (d.rows || []).map((it) => {
it.imgSel = 0
return it
})
this.dataKey++
})
},
},
}
</script>
@ -189,16 +190,14 @@ export default {
line-height: 30px;
text-align: center;
background: #fff;
color: #5B84EB;
color: #5b84eb;
cursor: pointer;
&.active {
color: #fff;
background: #5B84EB;
background: #5b84eb;
}
}
}
.el-image {
@ -213,12 +212,11 @@ export default {
line-height: 30px;
.sp-label {
color: #8BFFD2;
color: #8bffd2;
}
}
}
}
}
@media (min-width: 1921px) and (max-width: 2560px) {
@ -241,14 +239,11 @@ export default {
max-height: calc(75vh - 180px);
.data-item {
.right-data {
font-size: 18px;
.sp-label {
color: #8BFFD2;
color: #8bffd2;
}
}
}
@ -276,14 +271,11 @@ export default {
max-height: calc(75vh - 180px);
.data-item {
.right-data {
font-size: 24px;
.sp-label {
color: #8BFFD2;
color: #8bffd2;
}
}
}

View File

@ -1,11 +1,9 @@
<template>
<div class="project-safety-check main-page">
<div class="project-safety-check main-page">
<el-col :span="6" class="h100">
<module-one-1-1 label="安全隐患排查" class="chart1-module">
<el-col :span="12" v-for="(it, idx) in chart1Data" :key="idx">
<div
class="equipment-list-min equipment-list-min_div quality-target-index-min quality-target-index-min_div">
<div class="equipment-list-min equipment-list-min_div quality-target-index-min quality-target-index-min_div">
<div class="czz-number-img czz-number-img-blue">
<svg-icon icon-class="notesearch"></svg-icon>
</div>
@ -14,7 +12,8 @@
<span>{{ it.name }}</span>
</div>
<div class="equipment-list-data equipment-list-data_div_bottom">
<span class="sp-data">{{ it.value || 0 }}</span><span class="sp-unit"></span>
<span class="sp-data">{{ it.value || 0 }}</span>
<span class="sp-unit"></span>
</div>
</div>
</div>
@ -24,12 +23,13 @@
<img src="images/icon2001.png" class="img-openwin" @click="showDlg(1)" />
<div class="div-item-chart">
<div class="data-item-chart">
<div class="total-info">{{ item1Data.total }}<br />
<div class="total-info">
{{ item1Data.total }}
<br />
<span class="sp-label">问题总数</span>
</div>
<div class="chart-gif chart-overview-gif"></div>
<my-chart :key="itemChartKey1" id="project-safety-check-item1" width="100%" height="100%"
:render="o => renderDataItem(1)"></my-chart>
<my-chart :key="itemChartKey1" id="project-safety-check-item1" width="100%" height="100%" :render="o => renderDataItem(1)"></my-chart>
</div>
<div class="div-item-info" :key="itemChartKey1">
<div v-for="(it, idx) in item1Data.infos" :key="idx" :class="'item-info'">
@ -44,8 +44,7 @@
<div class="glr-title">最新提交</div>
<div class="div-item-list scroll">
<div v-for="(it, idx) in item1Data.items" :key="idx" class="list-item">
<el-image class="img-sm" fit="scale-down" :src="it.smarkUrl"
:preview-src-list="[it.smarkUrl]"></el-image>
<el-image class="img-sm" fit="scale-down" :src="it.smarkUrl" :preview-src-list="[it.smarkUrl]"></el-image>
<div class="list-item-info">
<div class="item-row">
<span class="sp-label">提交人:</span>
@ -80,8 +79,7 @@
<el-col :span="18" class="h100">
<module-one-1-3 label="隐患类别统计">
<img src="images/icon2001.png" class="img-openwin" @click="showDlg(0)" />
<my-chart :key="chartKey2" id="project-safety-check-chart2" width="100%" height="100%"
:render="renderChart2"></my-chart>
<my-chart :key="chartKey2" id="project-safety-check-chart2" width="100%" height="100%" :render="renderChart2"></my-chart>
</module-one-1-3>
<el-row class="el-right">
<el-col :span="8">
@ -89,12 +87,13 @@
<img src="images/icon2001.png" class="img-openwin" @click="showDlg(2)" />
<div class="div-item-chart">
<div class="data-item-chart">
<div class="total-info">{{ item2Data.total }}<br />
<div class="total-info">
{{ item2Data.total }}
<br />
<span class="sp-label">问题总数</span>
</div>
<div class="chart-gif chart-overview-gif"></div>
<my-chart :key="itemChartKey1" id="project-safety-check-item2" width="100%"
height="100%" :render="o => renderDataItem(2)"></my-chart>
<my-chart :key="itemChartKey1" id="project-safety-check-item2" width="100%" height="100%" :render="o => renderDataItem(2)"></my-chart>
</div>
<div class="div-item-info" :key="itemChartKey1">
<div v-for="(it, idx) in item2Data.infos" :key="idx" :class="'item-info'">
@ -104,14 +103,12 @@
<span class="sp-percent led-number" v-if="idx > 0">{{ it.percent }}%</span>
</div>
</div>
</div>
<div class="div-item-data">
<div class="glr-title">最新提交</div>
<div class="div-item-list scroll">
<div v-for="(it, idx) in item2Data.items" :key="idx" class="list-item">
<el-image class="img-sm" fit="scale-down" :src="it.smarkUrl"
:preview-src-list="[it.smarkUrl]"></el-image>
<el-image class="img-sm" fit="scale-down" :src="it.smarkUrl" :preview-src-list="[it.smarkUrl]"></el-image>
<div class="list-item-info">
<div class="item-row">
<span class="sp-label">提交人:</span>
@ -148,12 +145,13 @@
<img src="images/icon2001.png" class="img-openwin" @click="showDlg(3)" />
<div class="div-item-chart">
<div class="data-item-chart">
<div class="total-info">{{ item3Data.total }}<br />
<div class="total-info">
{{ item3Data.total }}
<br />
<span class="sp-label">问题总数</span>
</div>
<div class="chart-gif chart-overview-gif"></div>
<my-chart :key="itemChartKey1" id="project-safety-check-item3" width="100%"
height="100%" :render="o => renderDataItem(3)"></my-chart>
<my-chart :key="itemChartKey1" id="project-safety-check-item3" width="100%" height="100%" :render="o => renderDataItem(3)"></my-chart>
</div>
<div class="div-item-info" :key="itemChartKey1">
<div v-for="(it, idx) in item3Data.infos" :key="idx" :class="'item-info'">
@ -163,14 +161,12 @@
<span class="sp-percent led-number" v-if="idx > 0">{{ it.percent }}%</span>
</div>
</div>
</div>
<div class="div-item-data">
<div class="glr-title">最新提交</div>
<div class="div-item-list scroll">
<div v-for="(it, idx) in item3Data.items" :key="idx" class="list-item">
<el-image class="img-sm" fit="scale-down" :src="it.smarkUrl"
:preview-src-list="[it.smarkUrl]"></el-image>
<el-image class="img-sm" fit="scale-down" :src="it.smarkUrl" :preview-src-list="[it.smarkUrl]"></el-image>
<div class="list-item-info">
<div class="item-row">
<span class="sp-label">提交人:</span>
@ -203,16 +199,17 @@
</module-one-2-1>
</el-col>
<el-col :span="8">
<module-one-2-1 label="转型检查">
<module-one-2-1 label="专项检查">
<img src="images/icon2001.png" class="img-openwin" @click="showDlg(4)" />
<div class="div-item-chart">
<div class="data-item-chart">
<div class="total-info">{{ item4Data.total }}<br />
<div class="total-info">
{{ item4Data.total }}
<br />
<span class="sp-label">问题总数</span>
</div>
<div class="chart-gif chart-overview-gif"></div>
<my-chart :key="itemChartKey1" id="project-safety-check-item4" width="100%"
height="100%" :render="o => renderDataItem(3)"></my-chart>
<my-chart :key="itemChartKey1" id="project-safety-check-item4" width="100%" height="100%" :render="o => renderDataItem(3)"></my-chart>
</div>
<div class="div-item-info" :key="itemChartKey1">
<div v-for="(it, idx) in item4Data.infos" :key="idx" :class="'item-info'">
@ -222,14 +219,12 @@
<span class="sp-percent led-number" v-if="idx > 0">{{ it.percent }}%</span>
</div>
</div>
</div>
<div class="div-item-data">
<div class="glr-title">最新提交</div>
<div class="div-item-list scroll">
<div v-for="(it, idx) in item4Data.items" :key="idx" class="list-item">
<el-image class="img-sm" fit="scale-down" :src="it.smarkUrl"
:preview-src-list="[it.smarkUrl]"></el-image>
<el-image class="img-sm" fit="scale-down" :src="it.smarkUrl" :preview-src-list="[it.smarkUrl]"></el-image>
<div class="list-item-info">
<div class="item-row">
<span class="sp-label">提交人:</span>
@ -281,17 +276,17 @@ export default {
dpi: '',
selProject: null,
legendOpt1: {
icon: "rect",
icon: 'rect',
textStyle: {
color: "#c3dbfd",
color: '#c3dbfd',
fontSize: 14,
rich: {
name: {
color: "#c3dbfd",
color: '#c3dbfd',
padding: [0, 20, 0, 0],
},
percent: {
color: "#4676FD"
color: '#4676FD',
},
},
},
@ -322,42 +317,42 @@ export default {
datas: [],
infos: [],
items: [],
}
},
}
},
mounted() {
window.safetyApp = this;
this.$store.dispatch('ChangeNav', 301);
this.$bus.$on('projectChange', prj => {
this.selProject = prj;
this.init();
});
this.selProject = this.$store.getters.selProject;
this.init();
this.dpi = this.$dpi();
window.addEventListener("resize", () => {
window.safetyApp = this
this.$store.dispatch('ChangeNav', 301)
this.$bus.$on('projectChange', (prj) => {
this.selProject = prj
this.init()
})
this.selProject = this.$store.getters.selProject
this.init()
this.dpi = this.$dpi()
window.addEventListener('resize', () => {
if (this.dpi != this.$dpi()) {
this.dpi = this.$dpi();
this.chartKey++;
this.chartKey2++;
this.dpi = this.$dpi()
this.chartKey++
this.chartKey2++
}
});
this.$api.dict("ssp_proble_sub_type").then((d) => {
this.dangerTypeDict = d || [];
});
})
this.$api.dict('ssp_proble_sub_type').then((d) => {
this.dangerTypeDict = d || []
})
},
methods: {
showDlg(n) {
this.$refs.dlg.showDialog(this.selProject, n, this.dangerTypeDict);
this.$refs.dlg.showDialog(this.selProject, n, this.dangerTypeDict)
},
init() {
if (!this.selProject) {
return;
return
}
let postData = {
projectId: this.selProject.id,
comId: this.selProject.comId
};
comId: this.selProject.comId,
}
let ajaxs = [
this.$api.safety.groupByProblemType(postData),
this.$api.safety.groupByDangerType(postData),
@ -369,119 +364,122 @@ export default {
this.$api.safety.listForBG({ ...postData, problemType: 3, infoType: 0, pageNum: 1, pageSize: 5 }),
this.$api.safety.listCountForBG({ ...postData, problemType: 4, infoType: 0 }),
this.$api.safety.listForBG({ ...postData, problemType: 4, infoType: 0, pageNum: 1, pageSize: 5 }),
];
this.$api.http.all(ajaxs).then(res => {
this.chart1Data = (res[0].data || []).map(it => {
]
this.$api.http.all(ajaxs).then((res) => {
this.chart1Data = (res[0].data || []).map((it) => {
return {
id: it.nickedInfo,
value: it.id,
name: it.problemType,
data: it
data: it,
}
});
this.chart2Data = (res[1].data || []).map(it => {
})
this.chart2Data = (res[1].data || []).map((it) => {
return {
id: it.nickedInfo,
name: it.dangerType,
value1: it.id,
value2: it.comId,
}
});
this.showChart1();//
this.showChart2();//
})
this.showChart1() //
this.showChart2() //
this.makeItemData(this.item1Data, res[2].data)
this.item1Data.items = res[3].rows;
this.item1Data.items = res[3].rows
this.makeItemData(this.item2Data, res[4].data)
this.item2Data.items = res[5].rows;
this.item2Data.items = res[5].rows
this.makeItemData(this.item3Data, res[6].data)
this.item3Data.items = res[7].rows;
this.item3Data.items = res[7].rows
this.makeItemData(this.item4Data, res[8].data)
this.item4Data.items = res[9].rows;
this.itemChartKey1++;
});
},
showChart1(n) {
this.item4Data.items = res[9].rows
this.itemChartKey1++
})
},
showChart1(n) {},
showChart2() {
this.chartKey2++;
this.chartKey2++
},
getStatus(s) {
let checkStates = [{ value: "0", label: '待整改' }, { value: "1", label: '待复检' },
{ value: "3", label: '复检驳回' },
{ value: "4", label: '复检通过' }];
let objs = checkStates.filter(it => it.value == s);
return objs.length > 0 ? objs[0].label : '';
let checkStates = [
{ value: '0', label: '待整改' },
{ value: '1', label: '待复检' },
{ value: '3', label: '复检驳回' },
{ value: '4', label: '复检通过' },
]
let objs = checkStates.filter((it) => it.value == s)
return objs.length > 0 ? objs[0].label : ''
},
makeItemData(item, res) {
let labels = ['问题总数', '待整改', '待复检', '复检驳回', '整改完成', '超时整改'];
item.total = res[0].id;
let total = res[0].id;
item.datas = [];
let labels = ['问题总数', '待整改', '待复检', '复检驳回', '整改完成', '超时整改']
item.total = res[0].id
let total = res[0].id
item.datas = []
for (let i = 1; i < 5; i++) {
item.datas.push({
name: labels[i],
value: res[i].id
});
value: res[i].id,
})
}
item.infos = [];
item.infos = []
for (let i = 0; i < res.length; i++) {
item.infos.push({
name: labels[i],
value: res[i].id,
type: res[i].projectName,
percent: total == 0 ? 0 : (res[i].id / total * 100.0).toFixed(1)
});
percent: total == 0 ? 0 : ((res[i].id / total) * 100.0).toFixed(1),
})
}
},
renderDataItem(n) {
let is1K = this.$dpi() == "1K";
let is2K = this.$dpi() == "2K";
let objs = this._data['item' + n + 'Data'];
let is1K = this.$dpi() == '1K'
let is2K = this.$dpi() == '2K'
let objs = this._data['item' + n + 'Data']
let option = {
color: ["#71BCC4", "#EEBE47", "#5EA85D", "#5B84EB", "#E76168"],
color: ['#71BCC4', '#EEBE47', '#5EA85D', '#5B84EB', '#E76168'],
series: [
{
type: 'pie',
radius: ['40%', '70%'],
padAngle: 1,
itemStyle: {
borderRadius: 5
}, emphasis: {
borderRadius: 5,
},
emphasis: {
label: {
show: false,
}
},
},
label: {
show: false
show: false,
},
labelLine: {
show: false
show: false,
},
data: objs.datas
}
]
};
return option;
data: objs.datas,
},
],
}
return option
},
renderChart2(opt) {
let is1K = this.$dpi() == "1K";
let is2K = this.$dpi() == "2K";
let is1K = this.$dpi() == '1K'
let is2K = this.$dpi() == '2K'
let option = {
grid: {
left: "5%",
right: "5%",
bottom: "0%",
top: "15%",
left: '5%',
right: '5%',
bottom: '0%',
top: '15%',
containLabel: true,
},
tooltip: {
trigger: "axis",
valueFormatter: (v) => { return v },
trigger: 'axis',
valueFormatter: (v) => {
return v
},
textStyle: {
fontSize: is1K ? 12 : is2K ? 14 : 24
fontSize: is1K ? 12 : is2K ? 14 : 24,
},
},
legend: {
@ -491,89 +489,89 @@ export default {
itemHeight: is1K ? 14 : is2K ? 20 : 20,
itemGap: is1K ? 20 : is2K ? 30 : 40,
textStyle: {
color: "#fff",
color: '#fff',
fontSize: is1K ? 14 : is2K ? 20 : 30,
}
},
},
xAxis: [
{
type: "category",
data: this.chart2Data.map(it => it.name.replace(/[“”]/g, "'")),
type: 'category',
data: this.chart2Data.map((it) => it.name.replace(/[“”]/g, "'")),
axisLabel: {
width: is1K ? 60 : is2K ? 140 : 220,
rotate: 15,
margin: 15,
rotate: 10,
fontSize: is1K ? 12 : is2K ? 14 : 22,
overflow: "break",
color: "#a2c8f9"
overflow: 'break',
color: '#a2c8f9',
},
splitLine: {
lineStyle: {
opacity: 0.1
}
}
opacity: 0.1,
},
},
},
],
yAxis: [
{
type: "value",
type: 'value',
minInterval: 1,
axisLabel: {
formatter: '{value}',
color: "#2ec2b3",
fontSize: is1K ? 12 : is2K ? 14 : 24
color: '#2ec2b3',
fontSize: is1K ? 12 : is2K ? 14 : 24,
},
splitLine: {
lineStyle: {
opacity: 0.1
}
opacity: 0.1,
},
},
},
],
series: [
{
name: '问题数',
type: "bar",
type: 'bar',
barGap: '0%',
barWidth: '20%',
label: {
show: true,
position: "top",
color: "#4DAAFC",
fontSize: is1K ? 12 : is2K ? 14 : 24
position: 'top',
color: '#4DAAFC',
fontSize: is1K ? 12 : is2K ? 14 : 24,
},
lineStyle: {
color: "#7ddff2",
color: '#7ddff2',
},
itemStyle: {
normal: { areaStyle: { type: "default", color: "#7ddff2", opacity: 0.1 } },
normal: { areaStyle: { type: 'default', color: '#7ddff2', opacity: 0.1 } },
},
data: this.chart2Data.map(it => it.value1),
data: this.chart2Data.map((it) => it.value1),
},
{
name: '待改数',
type: "bar",
type: 'bar',
barGap: '0%',
barWidth: '20%',
label: {
show: true,
position: "top",
color: "#4DAAFC",
fontSize: is1K ? 12 : is2K ? 14 : 24
position: 'top',
color: '#4DAAFC',
fontSize: is1K ? 12 : is2K ? 14 : 24,
},
lineStyle: {
color: "#006594",
color: '#006594',
},
itemStyle: {
normal: { areaStyle: { type: "default", color: "#006594", opacity: 0.1 } },
normal: { areaStyle: { type: 'default', color: '#006594', opacity: 0.1 } },
},
data: this.chart2Data.map(it => it.value2),
}
data: this.chart2Data.map((it) => it.value2),
},
],
};
return option;
}
}
}
return option
},
},
}
</script>
@ -693,19 +691,19 @@ export default {
top: 4px;
&.is-b {
background-color: #71BCC4;
background-color: #71bcc4;
}
&.is-c {
background-color: #EEBE47;
background-color: #eebe47;
}
&.is-d {
background-color: #5EA85D;
background-color: #5ea85d;
}
&.is-e {
background-color: #5B84EB;
background-color: #5b84eb;
}
}
@ -725,7 +723,7 @@ export default {
.sp-percent {
margin-left: 8px;
color: #5B84EB;
color: #5b84eb;
}
}
}
@ -763,7 +761,7 @@ export default {
line-height: 24px;
.sp-label {
color: #8BFFD2;
color: #8bffd2;
}
}
}
@ -933,8 +931,6 @@ export default {
}
}
}
}
.div-item-chart {
@ -1032,6 +1028,5 @@ export default {
}
}
}
}
</style>

View File

@ -1,5 +1,5 @@
<template>
<div class="project-tower-crane main-page">
<div class="project-tower-crane main-page">
<el-col :span="6" class="h100">
<module-one-3-1 label="设备概况" class="h100">
<el-row class="tower-total">
@ -11,8 +11,8 @@
<div class="equipment-list-data">
<p class="p-label">塔机总数</p>
<div>
<span class="span-num led-number">{{ towerTotalNum }}</span><span
class="span-unit"></span>
<span class="span-num led-number">{{ towerTotalNum }}</span>
<span class="span-unit"></span>
</div>
</div>
</div>
@ -25,8 +25,8 @@
<div class="equipment-list-data">
<p class="p-label">监控总数</p>
<div>
<span class="span-num led-number">{{ towerTotalNum }}</span><span
class="span-unit"></span>
<span class="span-num led-number">{{ towerTotalNum }}</span>
<span class="span-unit"></span>
</div>
</div>
</div>
@ -34,8 +34,7 @@
</el-row>
<el-row style="height: 160px; overflow: hidden" :key="chart1Key">
<staff-survey-chart :height="chart1Height" :unit="'个'" :data="towerConfigView"
width="100%"></staff-survey-chart>
<staff-survey-chart :height="chart1Height" :unit="'个'" :data="towerConfigView" width="100%"></staff-survey-chart>
</el-row>
<el-row class="left-data-list">
@ -43,8 +42,7 @@
<div :class="'active'">监控列表</div>
</div>
<div class="drv-list scroll" id="listMin">
<div v-for="(it, idx) in towerConfigList" :key="idx" class="drv-item list-for"
:class="index == idx ? 'active' : ''" @click="onTowerCraneList(idx)">
<div v-for="(it, idx) in towerConfigList" :key="idx" class="drv-item list-for" :class="index == idx ? 'active' : ''" @click="onTowerCraneList(idx)">
<div class="item-content">
<div class="dev-row1">
<div class="survey_content">
@ -64,10 +62,11 @@
</div>
<div class="data-row">
<span class="sp-label">设备状态:</span>
<span class="sp-value"
:class="it.online == 2 ? 'is-offline' : 'is-online'">{{
it.online == 2 ? "离线" : "在线"
}}</span>
<span class="sp-value" :class="it.online == 2 ? 'is-offline' : 'is-online'">
{{
it.online == 2 ? "离线" : "在线"
}}
</span>
</div>
</div>
</div>
@ -108,7 +107,6 @@
</module-one-3-1>
</el-col>
<el-col :span="18" class="h100">
<el-row class="main-content">
<el-col :span="16" class="h100">
<el-row class="total-data">
@ -148,23 +146,17 @@
<el-col :span="6">
<div class="warning-info-title" style="padding-left: 20px; position: relative; z-index: 9">
<div :class="'active'">
超载率({{ getRoudValue(towerConfigStat.b0, towerConfigStat.a0) }})
</div>
<div :class="'active'">超载率({{ getRoudValue(towerConfigStat.b0, towerConfigStat.a0) }})</div>
<div class="title-bg"></div>
</div>
<div class="data-row2">
<div class="data-row2-col">
<div class="s-text">本月</div>
<div class="s-number">
{{ getRoudValue(towerConfigStat.b1, towerConfigStat.a1) }}
</div>
<div class="s-number">{{ getRoudValue(towerConfigStat.b1, towerConfigStat.a1) }}</div>
</div>
<div class="data-row2-col">
<div class="s-text">累计</div>
<div class="s-number">
{{ getRoudValue(towerConfigStat.b0, towerConfigStat.a0) }}
</div>
<div class="s-number">{{ getRoudValue(towerConfigStat.b0, towerConfigStat.a0) }}</div>
</div>
</div>
</el-col>
@ -191,24 +183,32 @@
<div class="safe-tower-crane-min" style="position: relative">
<el-row class="row-crane-min">
<el-col :span="2">
<div class="safe-tower-left" v-if="towerConfigList.length > 1"
@click="safeTowerLeft"></div>
<div class="safe-tower-left" v-if="towerConfigList.length > 1" @click="safeTowerLeft"></div>
</el-col>
<el-col :span="20">
<div class="safe-tower-content-max">
<transition :name="direction">
<component :is="comName" :value="selDev" :width="360" :height="200"
:top="55" :left="85" :tHeight="runData.height" :tLoad="runData.load"
:tRotation="runData.rotation" :tRange="runData.range"
:tLeanAngleX="runData.leanAngleX" :tLeanAngleY="runData.leanAngleY"
<component
:is="comName"
:value="selDev"
:width="360"
:height="200"
:top="55"
:left="85"
:tHeight="runData.height"
:tLoad="runData.load"
:tRotation="runData.rotation"
:tRange="runData.range"
:tLeanAngleX="runData.leanAngleX"
:tLeanAngleY="runData.leanAngleY"
:tLoadPercent="runData.loadPercent"
:tMomentPercent="runData.momentPercent"></component>
:tMomentPercent="runData.momentPercent"
></component>
</transition>
</div>
</el-col>
<el-col :span="2">
<div class="safe-tower-right" v-if="towerConfigList.length > 1"
@click="safeTowerRight"></div>
<div class="safe-tower-right" v-if="towerConfigList.length > 1" @click="safeTowerRight"></div>
</el-col>
</el-row>
</div>
@ -224,25 +224,16 @@
</div>
<div class="afoot-content safe-afoot-content">
<div class="afoot-overflow safe-afoot-overflow" id="afootOverflow">
<div v-if="warningData.length == 0" class="not-data">
暂无预警数据
</div>
<div v-if="warningData.length == 0" class="not-data"></div>
<div v-if="warningData.length > 0" class="quality-table special-table scroll"
style="padding:0px;" :key="tbHeight">
<el-table :data="warningData" class="mytable"
style="width: 100%;background: transparent;" :height="tbHeight"
ref="fbsubordinateUnit">
<div v-if="warningData.length > 0" class="quality-table special-table scroll" style="padding:0px;" :key="tbHeight">
<el-table :data="warningData" class="mytable" style="width: 100%;background: transparent;" :height="tbHeight" ref="fbsubordinateUnit">
<el-table-column prop="createTime" label="发送时间"></el-table-column>
<el-table-column label="预警类型">
<template slot-scope="scope">
<div class="tag-group">
<template v-for="(item, idx) in dicts">
<el-tag :key="idx"
v-if="dic(item.value, scope.row.warnings)" type="danger"
effect="dark">
{{ item.label }}
</el-tag>
<el-tag :key="idx" v-if="dic(item.value, scope.row.warnings)" type="danger" effect="dark">{{ item.label }}</el-tag>
</template>
</div>
</template>
@ -257,8 +248,7 @@
<div class="analyse-text">力矩曲线</div>
</div>
<div class="safe-moment">
<my-chart :key="itemChartKey1" id="project-tower-crane-item2" width="100%" height="100%"
:render="o => renderDataItem2(o)"></my-chart>
<my-chart :key="itemChartKey1" id="project-tower-crane-item2" width="100%" height="100%" :render="o => renderDataItem2(o)"></my-chart>
</div>
</div>
</div>
@ -282,8 +272,10 @@
<div v-for="i in 10" :key="i" class="scale-item"></div>
</div>
<span class="sp-data1 sp-data sp-sc">报警:{{ it.data1 }}</span>
<span class="sp-data2 sp-data sp-sc" v-if="it.data2 >= 5" :style="calcTop(it)">:{{
it.data2 }}</span>
<span class="sp-data2 sp-data sp-sc" v-if="it.data2 >= 5" :style="calcTop(it)">
报警:{{
it.data2 }}
</span>
<span class="sp-sc2 sp-sc">{{ it.scale2 }}</span>
</div>
</div>
@ -294,9 +286,9 @@
</template>
<script>
import debounce from "lodash.debounce";
import "@/components/tower-crane-value-1";
import "@/components/tower-crane-value-2";
import debounce from 'lodash.debounce'
import '@/components/tower-crane-value-1'
import '@/components/tower-crane-value-2'
export default {
data() {
return {
@ -311,29 +303,29 @@ export default {
towerConfigList: [],
towerConfigStat: { a0: 0, b0: 0, c0: 0, a1: 0, b1: 0, c1: 0 },
runData: {
height: "0",
range: "0",
rotation: "0",
load: "0",
windSpeed: "0",
leanAngleX: "0",
leanAngleY: "0",
loadPercent: "0",
momentPercent: "0",
windSpeedPercent: "0",
height: '0',
range: '0',
rotation: '0',
load: '0',
windSpeed: '0',
leanAngleX: '0',
leanAngleY: '0',
loadPercent: '0',
momentPercent: '0',
windSpeedPercent: '0',
warnings: null,
},
selDev: {},
devBottomInfo: [
{ title: "幅度", data1: 0, data2: 0, scale1: "0", scale2: "0m" },
{ title: "风速", data1: 0, data2: 0, scale1: "0", scale2: "0m" },
{ title: "吊重", data1: 0, data2: 0, scale1: "0", scale2: "0m" },
{ title: "倾角", data1: 0, data2: 0, scale1: "0", scale2: "0m" },
{ title: "转角", data1: 0, data2: 0, scale1: "0", scale2: "0m" },
{ title: "高度", data1: 0, data2: 0, scale1: "0", scale2: "0m" },
{ title: '幅度', data1: 0, data2: 0, scale1: '0', scale2: '0m' },
{ title: '风速', data1: 0, data2: 0, scale1: '0', scale2: '0m' },
{ title: '吊重', data1: 0, data2: 0, scale1: '0', scale2: '0m' },
{ title: '倾角', data1: 0, data2: 0, scale1: '0', scale2: '0m' },
{ title: '转角', data1: 0, data2: 0, scale1: '0', scale2: '0m' },
{ title: '高度', data1: 0, data2: 0, scale1: '0', scale2: '0m' },
],
direction: "right",
comName: "tower-crane-value-1",
direction: 'right',
comName: 'tower-crane-value-1',
warningData: [],
momentData: {},
forIndex: 0,
@ -347,287 +339,289 @@ export default {
}
},
mounted() {
window.safetyApp = this;
this.$store.dispatch('ChangeNav', 304);
this.$bus.$on('projectChange', prj => {
this.selProject = prj;
this.init();
});
this.selProject = this.$store.getters.selProject;
this.init();
this.dpi = this.$dpi();
this.resize();
window.addEventListener("resize", () => {
window.safetyApp = this
this.$store.dispatch('ChangeNav', 304)
this.$bus.$on('projectChange', (prj) => {
this.selProject = prj
this.init()
})
this.selProject = this.$store.getters.selProject
this.init()
this.dpi = this.$dpi()
this.resize()
window.addEventListener('resize', () => {
if (this.dpi != this.$dpi()) {
this.dpi = this.$dpi();
this.resize();
this.dpi = this.$dpi()
this.resize()
}
});
this.$api.dict("ssp_proble_sub_type").then((d) => {
this.dangerTypeDict = d || [];
});
})
this.$api.dict('ssp_proble_sub_type').then((d) => {
this.dangerTypeDict = d || []
})
this.momentData = JSON.parse(
'{"point":[[null,null]],"dataX":[15,20,25,30,35,40,45,50,55,60],"dataY":[3,3,3,3,2.59,2.2,1.9,1.66,1.46,1.3]}'
);
)
},
created() {
this.$api.dict("device_tower_warning").then((d) => {
this.dicts = d || [];
console.log("---->", this.dicts);
});
this.$api.dict('device_tower_warning').then((d) => {
this.dicts = d || []
console.log('---->', this.dicts)
})
},
methods: {
resize() {
this.chart1Key++;
this.itemChartKey1++;
let is1K = this.$dpi() == "1K";
let is2K = this.$dpi() == "2K";
this.tbHeight = is1K ? 290 : is2K ? 410 : 770;
this.chart1Key++
this.itemChartKey1++
let is1K = this.$dpi() == '1K'
let is2K = this.$dpi() == '2K'
this.tbHeight = is1K ? 290 : is2K ? 410 : 770
},
init() {
if (!this.selProject) {
return;
return
}
this.initTowerConfigView();
this.initTowerConfigList();
this.initTowerConfigView()
this.initTowerConfigList()
},
getRoudValue(a, b) {
if (a > 0) {
return (parseFloat(a / b) * 100).toFixed(1) + "%";
return (parseFloat(a / b) * 100).toFixed(1) + '%'
} else {
return "0%";
return '0%'
}
},
initTowerConfigView() {
let postData = {
comId: this.selProject.comId,
projectId: this.selProject.id,
};
}
this.$api.tower.findTowerConfigGroupOnline(postData).then((d) => {
let list = [];
let total = 0;
let list = []
let total = 0
if (d.data && d.data.length > 0) {
d.data.forEach((datum) => {
total += datum.total;
total += datum.total
if (datum.online == 1) {
list.push({ text: "在线数量", value: datum.total });
list.push({ text: '在线数量', value: datum.total })
if (d.data.length == 1) {
list.push({ text: "离线数量", value: 0 });
list.push({ text: '离线数量', value: 0 })
}
} else {
list.push({ text: "离线数量", value: datum.total });
list.push({ text: '离线数量', value: datum.total })
}
});
})
}
this.towerTotalNum = total;
this.towerConfigView = list;
});
this.towerTotalNum = total
this.towerConfigView = list
})
},
initTowerConfigList() {
let postData = {
comdId: this.selProject.comId,
projectId: this.selProject.id,
};
}
this.$api.tower.findTowerConfigListByProjectId(postData).then((d) => {
this.towerConfigList = d.data || [];
this.towerConfigList = d.data || []
if (d.data.length > 0) {
this.initSelDev(this.index);
this.initSelDev(this.index)
} else {
this.runData.height = "0";
this.runData.range = "0";
this.runData.rotation = "0";
this.runData.load = "0";
this.runData.windSpeed = "0";
this.runData.leanAngleX = "0";
this.runData.leanAngleY = "0";
this.runData.loadPercent = "0";
this.runData.momentPercent = "0";
this.runData.windSpeedPercent = "0";
this.runData.warnings = null;
this.devBottomInfo[0].data1 = 0;
this.devBottomInfo[1].data1 = 0;
this.devBottomInfo[2].data1 = 0;
this.devBottomInfo[3].data1 = 0;
this.devBottomInfo[4].data1 = 0;
this.devBottomInfo[5].data1 = 0;
this.devBottomInfo[0].data2 = 0;
this.devBottomInfo[1].data2 = 0;
this.devBottomInfo[2].data2 = 0;
this.devBottomInfo[3].data2 = 0;
this.devBottomInfo[4].data2 = 0;
this.devBottomInfo[5].data2 = 0;
this.towerConfigStat.a0 = 0;
this.towerConfigStat.b0 = 0;
this.towerConfigStat.c0 = 0;
this.towerConfigStat.a1 = 0;
this.towerConfigStat.b1 = 0;
this.towerConfigStat.c1 = 0;
this.warningData = [];
this.selDev = { deviceName: "未找到设备", frontBrachium: 0, afterBrachium: 0 };
this.runData.height = '0'
this.runData.range = '0'
this.runData.rotation = '0'
this.runData.load = '0'
this.runData.windSpeed = '0'
this.runData.leanAngleX = '0'
this.runData.leanAngleY = '0'
this.runData.loadPercent = '0'
this.runData.momentPercent = '0'
this.runData.windSpeedPercent = '0'
this.runData.warnings = null
this.devBottomInfo[0].data1 = 0
this.devBottomInfo[1].data1 = 0
this.devBottomInfo[2].data1 = 0
this.devBottomInfo[3].data1 = 0
this.devBottomInfo[4].data1 = 0
this.devBottomInfo[5].data1 = 0
this.devBottomInfo[0].data2 = 0
this.devBottomInfo[1].data2 = 0
this.devBottomInfo[2].data2 = 0
this.devBottomInfo[3].data2 = 0
this.devBottomInfo[4].data2 = 0
this.devBottomInfo[5].data2 = 0
this.towerConfigStat.a0 = 0
this.towerConfigStat.b0 = 0
this.towerConfigStat.c0 = 0
this.towerConfigStat.a1 = 0
this.towerConfigStat.b1 = 0
this.towerConfigStat.c1 = 0
this.warningData = []
this.selDev = { deviceName: '未找到设备', frontBrachium: 0, afterBrachium: 0 }
}
});
})
},
dic(ds, value) {
if (value.split(",").indexOf(ds) > -1) {
return true;
if (value.split(',').indexOf(ds) > -1) {
return true
} else {
return false
}
},
initSelDev(n) {
this.selDev = this.towerConfigList[this.index];
this.initLimitData();
this.initRunData();
this.selDev = this.towerConfigList[this.index]
this.initLimitData()
this.initRunData()
//
clearInterval(this.warningInterval);
this.warningInterval = setInterval(this.initRunData, 60000);
this.initCountData();
clearInterval(this.countvwInterval);
this.countvwInterval = setInterval(this.initCountData, 60000);
clearInterval(this.warningInterval)
this.warningInterval = setInterval(this.initRunData, 60000)
this.initCountData()
clearInterval(this.countvwInterval)
this.countvwInterval = setInterval(this.initCountData, 60000)
},
initCountData() {
this.$api.tower.findTowerStatisticsView(this.selDev.deviceSn).then((d) => {
this.towerConfigStat = d.data || [];
});
this.towerConfigStat = d.data || []
})
},
initLimitData() {
this.$api.tower.selectDevTowerDataLimitList(this.selDev.deviceSn).then((d) => {
this.devBottomInfo[0].data2 = d.data[0].rangeLimitStart;
this.devBottomInfo[1].data2 = d.data[0].windSpeedWarning;
this.devBottomInfo[2].data2 = d.data[0].loadWarning;
this.devBottomInfo[3].data2 = d.data[0].leanWarning;
this.devBottomInfo[4].data2 = d.data[0].rotationLimitStart;
this.devBottomInfo[5].data2 = d.data[0].highLimitWarning;
});
if (d.length > 0) {
this.devBottomInfo[0].data2 = d.data[0].rangeLimitStart
this.devBottomInfo[1].data2 = d.data[0].windSpeedWarning
this.devBottomInfo[2].data2 = d.data[0].loadWarning
this.devBottomInfo[3].data2 = d.data[0].leanWarning
this.devBottomInfo[4].data2 = d.data[0].rotationLimitStart
this.devBottomInfo[5].data2 = d.data[0].highLimitWarning
}
})
},
initRunData() {
this.$api.tower.selectDevTowerDataRunList(this.selDev.deviceSn).then((d) => {
if (d.data.length > 0) {
this.runData.height = d.data[0].height;
this.runData.range = d.data[0].range;
this.runData.rotation = d.data[0].rotation;
this.runData.load = d.data[0].load;
this.runData.windSpeed = d.data[0].windSpeed;
this.runData.leanAngleX = d.data[0].leanAngleX;
this.runData.leanAngleY = d.data[0].leanAngleY;
this.runData.loadPercent = d.data[0].loadPercent;
this.runData.momentPercent = d.data[0].momentPercent;
this.runData.windSpeedPercent = d.data[0].windSpeedPercent;
this.runData.warnings = d.data[0].warnings;
this.devBottomInfo[0].data1 = d.data[0].range;
this.devBottomInfo[1].data1 = d.data[0].windSpeed;
this.devBottomInfo[2].data1 = d.data[0].load;
this.devBottomInfo[3].data1 = d.data[0].leanAnglePercent
? d.data[0].leanAnglePercent
: 0;
this.devBottomInfo[4].data1 = d.data[0].rotation;
this.devBottomInfo[5].data1 = d.data[0].height;
this.runData.height = d.data[0].height
this.runData.range = d.data[0].range
this.runData.rotation = d.data[0].rotation
this.runData.load = d.data[0].load
this.runData.windSpeed = d.data[0].windSpeed
this.runData.leanAngleX = d.data[0].leanAngleX
this.runData.leanAngleY = d.data[0].leanAngleY
this.runData.loadPercent = d.data[0].loadPercent
this.runData.momentPercent = d.data[0].momentPercent
this.runData.windSpeedPercent = d.data[0].windSpeedPercent
this.runData.warnings = d.data[0].warnings
this.devBottomInfo[0].data1 = d.data[0].range
this.devBottomInfo[1].data1 = d.data[0].windSpeed
this.devBottomInfo[2].data1 = d.data[0].load
this.devBottomInfo[3].data1 = d.data[0].leanAnglePercent ? d.data[0].leanAnglePercent : 0
this.devBottomInfo[4].data1 = d.data[0].rotation
this.devBottomInfo[5].data1 = d.data[0].height
}
this.warningData = d.data || [];
});
this.warningData = d.data || []
})
},
calcTop(d) {
let tmp = 100 - (d.data2 * 100.0) / d.data1;
return `top:calc(20px + ${tmp > 78 ? 78 : tmp}%)`;
let tmp = 100 - (d.data2 * 100.0) / d.data1
return `top:calc(20px + ${tmp > 78 ? 78 : tmp}%)`
},
getRoudValue(a, b) {
if (a > 0) {
return (parseFloat(a / b) * 100).toFixed(1) + "%";
return (parseFloat(a / b) * 100).toFixed(1) + '%'
} else {
return "0%";
return '0%'
}
},
safeTowerLeft() {
this.direction = "left";
this.automaticRoll();
this.direction = 'left'
this.automaticRoll()
},
safeTowerRight() {
//
this.direction = "right";
this.automaticRoll();
this.direction = 'right'
this.automaticRoll()
},
automaticRoll() {
//
if (this.direction == "right") {
if (this.direction == 'right') {
if (this.index == this.towerConfigList.length - 1) {
this.index = 0;
this.index = 0
} else {
this.index = this.index + 1;
this.index = this.index + 1
}
} else {
if (this.index == 0) {
this.index = this.towerConfigList.length - 1;
this.index = this.towerConfigList.length - 1
} else {
this.index = this.index - 1;
this.index = this.index - 1
}
}
this.selDev = this.towerConfigList[this.index];
var height = $(".list-for").innerHeight();
$("#listMin").animate({ scrollTop: height * this.index + "px" });
this.selDev = this.towerConfigList[this.index]
var height = $('.list-for').innerHeight()
$('#listMin').animate({ scrollTop: height * this.index + 'px' })
},
onTowerCraneList(n) {
this.index = n;
this.selDev = this.towerConfigList[this.index];
this.initLimitData();
this.initCountData();
this.index = n
this.selDev = this.towerConfigList[this.index]
this.initLimitData()
this.initCountData()
//
this.direction = "right";
this.direction = 'right'
},
safeAutomaticRoll() {
var height = $(".safe-afoot-overflow").innerHeight();
console.log(height);
var height = $('.safe-afoot-overflow').innerHeight()
console.log(height)
if (this.forIndex == this.warningData.length) {
this.forIndex = 0;
this.forIndex = 0
} else {
this.forIndex = this.forIndex + 1;
this.forIndex = this.forIndex + 1
}
$("#afootOverflow").animate({ scrollTop: height * this.forIndex + "px" });
$('#afootOverflow').animate({ scrollTop: height * this.forIndex + 'px' })
},
warningListMinMouseover() {
clearInterval(this.warningInterval);
clearInterval(this.warningInterval)
},
warningListMinMouseout() {
this.warningInterval = setInterval(this.safeAutomaticRoll, 10000);
this.warningInterval = setInterval(this.safeAutomaticRoll, 10000)
},
renderDataItem2(o) {
let data = this.momentData;
let data = this.momentData
var color = '#20bc00'
var Xmax = Math.max.apply(null, data.dataX);
var Ymax = Math.max.apply(null, data.dataY);
let is1K = this.$dpi() == "1K";
let is2K = this.$dpi() == "2K";
var Xmax = Math.max.apply(null, data.dataX)
var Ymax = Math.max.apply(null, data.dataY)
let is1K = this.$dpi() == '1K'
let is2K = this.$dpi() == '2K'
let option = {
tooltip: {
position: "top",
position: 'top',
formatter: function (params) {
var fd = params.data[0];
var fd = params.data[0]
var dz = params.data[1]
res = '<div style="padding: 5px 10px;">' +
'<div style="padding-bottom: 5px;">幅度:<span>' + fd + '</span> m</div>' +
'<div>吊重:<span>' + dz + '</span> t</div>' +
res =
'<div style="padding: 5px 10px;">' +
'<div style="padding-bottom: 5px;">幅度:<span>' +
fd +
'</span> m</div>' +
'<div>吊重:<span>' +
dz +
'</span> t</div>' +
'</div>'
return res
},
},
grid: {
top: "20%",
right: "15%",
left: "4%",
bottom: "5%",
containLabel: true
top: '20%',
right: '15%',
left: '4%',
bottom: '5%',
containLabel: true,
},
xAxis: [
{
type: "value",
type: 'value',
name: '幅度/m',
max: 60,
nameTextStyle: {
color: "#c5d9fc",
fontSize: is1K ? 12 : is2K ? 14 : 24
color: '#c5d9fc',
fontSize: is1K ? 12 : is2K ? 14 : 24,
},
splitLine: {
//线
@ -637,32 +631,31 @@ export default {
axisLabel: {
//
textStyle: {
color: "#c5d9fc",
color: '#c5d9fc',
margin: 20,
fontSize: 30
fontSize: 30,
},
},
},
{
type: "category",
type: 'category',
boundaryGap: false,
position: "bottom",
position: 'bottom',
axisLine: {
//线x
show: true,
lineStyle: {
color: "#194e92",
type: "dashed",
color: '#194e92',
type: 'dashed',
},
},
axisLabel: {
show: false,
//
textStyle: {
color: "#c5d9fc",
color: '#c5d9fc',
margin: 20,
fontSize: 30
fontSize: 30,
},
},
data: data.dataX,
@ -672,11 +665,11 @@ export default {
{
name: '吊重/t',
nameTextStyle: {
color: "#c5d9fc",
fontSize: is1K ? 12 : is2K ? 14 : 24
color: '#c5d9fc',
fontSize: is1K ? 12 : is2K ? 14 : 24,
},
max: Ymax + 1,
type: "value",
type: 'value',
splitNumber: 7,
splitLine: {
show: false,
@ -685,15 +678,15 @@ export default {
//线x
show: true,
lineStyle: {
color: "#194e92",
type: "dashed",
color: '#194e92',
type: 'dashed',
},
},
axisLabel: {
margin: 20,
textStyle: {
color: "#c5d9fc",
fontSize: is1K ? 12 : is2K ? 14 : 18
color: '#c5d9fc',
fontSize: is1K ? 12 : is2K ? 14 : 18,
},
},
axisTick: { show: false },
@ -701,33 +694,33 @@ export default {
],
series: [
{
name: "吊重",
type: "effectScatter",
rippleEffect: { //
color: 'purple', // ,
name: '吊重',
type: 'effectScatter',
rippleEffect: {
//
color: 'purple', // ,
brushType: 'fill', // ,线,'stroke' 'fill'
period: 2, //
scale: '3', //
period: 2, //
scale: '3', //
},
xAxisIndex: 0,
yAxisIndex: 0,
symbolSize: 15, //
symbolSize: 15, //
itemStyle: {
color: color,
},
data: data.point,
},
{
type: "line",
symbol: "none",
type: 'line',
symbol: 'none',
smooth: true,
xAxisIndex: 1,
yAxisIndex: 0,
lineStyle: {
normal: {
width: 3,
color: "#5968db", // 线
color: '#5968db', // 线
},
},
areaStyle: {
@ -740,22 +733,22 @@ export default {
0,
1,
[
{ offset: 0, color: "rgb(25,43,115,0.9)" },
{ offset: 0.7, color: "rgba(25,43,115, 0)" },
{ offset: 0, color: 'rgb(25,43,115,0.9)' },
{ offset: 0.7, color: 'rgba(25,43,115, 0)' },
],
false
),
shadowColor: "rgba(25,43,115, 1)", //
shadowColor: 'rgba(25,43,115, 1)', //
},
},
data: data.dataY,
},
],
};
return option;
}
}
}
return option
},
},
}
</script>
@ -779,13 +772,13 @@ export default {
&.czz-number-img-blue {
.svg-icon {
fill: #1e90ff
fill: #1e90ff;
}
}
&.czz-number-img-green {
.svg-icon {
fill: ForestGreen
fill: ForestGreen;
}
}
}
@ -847,7 +840,6 @@ export default {
}
}
}
}
.dev-row2 {
@ -1062,7 +1054,6 @@ export default {
width: 50px;
height: 50px;
}
}
.p-label {
@ -1137,7 +1128,6 @@ export default {
margin-left: 4px;
}
}
}
}
}
@ -1175,7 +1165,6 @@ export default {
}
.safe-tower-content-data {
.safe-tower-icon {
transform: scale(1.5);
position: relative;
@ -1188,10 +1177,7 @@ export default {
padding: 30px 5px;
}
}
}
}
.analyse-map {
@ -1294,7 +1280,6 @@ export default {
width: 80px;
height: 80px;
}
}
.p-label {
@ -1369,7 +1354,6 @@ export default {
margin-left: 4px;
}
}
}
}
}
@ -1407,7 +1391,6 @@ export default {
}
.safe-tower-content-data {
.safe-tower-icon {
transform: scale(2.5);
position: relative;
@ -1420,7 +1403,6 @@ export default {
padding: 60px 5px;
}
}
}
}
@ -1506,6 +1488,5 @@ export default {
}
}
}
}
</style>

View File

@ -1,225 +1,221 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="/favicon.ico">
<title>数字建安施工</title>
<script type="text/javascript"
src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=6zAD8CIavtzWnkGg0a7roush5maGMIPn"></script>
<link href="Engine/Widgets/widgets.css" rel="stylesheet" />
<script src="./gis/BIMGISEngine.js"></script>
<!--
<script src="Engine/Cesium.js"></script>
<script src="Engine/BIMGISEngine.js"></script>
<script src="Engine/BIMGISEngine.js"></script>
<script src="ServerEngine/BIMGISEngine.js"></script>
-->
<script src="./gis/config.js"></script>
<!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
<style>
html,
body,
#app {
height: 100%;
margin: 0px;
padding: 0px;
}
.chromeframe {
margin: 0.2em 0;
background: #ccc;
color: #000;
padding: 0.2em 0;
}
#loader-wrapper {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 999999;
}
#loader {
display: block;
position: relative;
left: 50%;
top: 50%;
width: 150px;
height: 150px;
margin: -75px 0 0 -75px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #FFF;
-webkit-animation: spin 2s linear infinite;
-ms-animation: spin 2s linear infinite;
-moz-animation: spin 2s linear infinite;
-o-animation: spin 2s linear infinite;
animation: spin 2s linear infinite;
z-index: 1001;
}
#loader:before {
content: "";
position: absolute;
top: 5px;
left: 5px;
right: 5px;
bottom: 5px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #FFF;
-webkit-animation: spin 3s linear infinite;
-moz-animation: spin 3s linear infinite;
-o-animation: spin 3s linear infinite;
-ms-animation: spin 3s linear infinite;
animation: spin 3s linear infinite;
}
#loader:after {
content: "";
position: absolute;
top: 15px;
left: 15px;
right: 15px;
bottom: 15px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #FFF;
-moz-animation: spin 1.5s linear infinite;
-o-animation: spin 1.5s linear infinite;
-ms-animation: spin 1.5s linear infinite;
-webkit-animation: spin 1.5s linear infinite;
animation: spin 1.5s linear infinite;
}
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg);
transform: rotate(0deg);
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="renderer" content="webkit" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
/>
<link rel="icon" href="/favicon.ico" />
<title>数字建安施工</title>
<script
type="text/javascript"
src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=6zAD8CIavtzWnkGg0a7roush5maGMIPn"
></script>
<script src="./static/BIMGISEngine.js"></script>
<script src="./gis/config.js"></script>
<!--[if lt IE 11
]><script>
window.location.href = "/html/ie.html";
</script><!
[endif]-->
<style>
html,
body,
#app {
height: 100%;
margin: 0px;
padding: 0px;
}
.chromeframe {
margin: 0.2em 0;
background: #ccc;
color: #000;
padding: 0.2em 0;
}
#loader-wrapper {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 999999;
}
100% {
-webkit-transform: rotate(360deg);
-ms-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes spin {
0% {
-webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg);
transform: rotate(0deg);
#loader {
display: block;
position: relative;
left: 50%;
top: 50%;
width: 150px;
height: 150px;
margin: -75px 0 0 -75px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #fff;
-webkit-animation: spin 2s linear infinite;
-ms-animation: spin 2s linear infinite;
-moz-animation: spin 2s linear infinite;
-o-animation: spin 2s linear infinite;
animation: spin 2s linear infinite;
z-index: 1001;
}
100% {
-webkit-transform: rotate(360deg);
-ms-transform: rotate(360deg);
transform: rotate(360deg);
#loader:before {
content: "";
position: absolute;
top: 5px;
left: 5px;
right: 5px;
bottom: 5px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #fff;
-webkit-animation: spin 3s linear infinite;
-moz-animation: spin 3s linear infinite;
-o-animation: spin 3s linear infinite;
-ms-animation: spin 3s linear infinite;
animation: spin 3s linear infinite;
}
}
#loader:after {
content: "";
position: absolute;
top: 15px;
left: 15px;
right: 15px;
bottom: 15px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #fff;
-moz-animation: spin 1.5s linear infinite;
-o-animation: spin 1.5s linear infinite;
-ms-animation: spin 1.5s linear infinite;
-webkit-animation: spin 1.5s linear infinite;
animation: spin 1.5s linear infinite;
}
#loader-wrapper .loader-section {
position: fixed;
top: 0;
width: 51%;
height: 100%;
background: #7171C6;
z-index: 1000;
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg);
transform: rotate(0deg);
}
#loader-wrapper .loader-section.section-left {
left: 0;
}
100% {
-webkit-transform: rotate(360deg);
-ms-transform: rotate(360deg);
transform: rotate(360deg);
}
}
#loader-wrapper .loader-section.section-right {
right: 0;
}
@keyframes spin {
0% {
-webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
-ms-transform: rotate(360deg);
transform: rotate(360deg);
}
}
.loaded #loader-wrapper .loader-section.section-left {
-webkit-transform: translateX(-100%);
-ms-transform: translateX(-100%);
transform: translateX(-100%);
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
#loader-wrapper .loader-section {
position: fixed;
top: 0;
width: 51%;
height: 100%;
background: #7171c6;
z-index: 1000;
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
.loaded #loader-wrapper .loader-section.section-right {
-webkit-transform: translateX(100%);
-ms-transform: translateX(100%);
transform: translateX(100%);
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
#loader-wrapper .loader-section.section-left {
left: 0;
}
.loaded #loader {
opacity: 0;
-webkit-transition: all 0.3s ease-out;
transition: all 0.3s ease-out;
}
#loader-wrapper .loader-section.section-right {
right: 0;
}
.loaded #loader-wrapper {
visibility: hidden;
-webkit-transform: translateY(-100%);
-ms-transform: translateY(-100%);
transform: translateY(-100%);
-webkit-transition: all 0.3s 1s ease-out;
transition: all 0.3s 1s ease-out;
}
.loaded #loader-wrapper .loader-section.section-left {
-webkit-transform: translateX(-100%);
-ms-transform: translateX(-100%);
transform: translateX(-100%);
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
}
.no-js #loader-wrapper {
display: none;
}
.loaded #loader-wrapper .loader-section.section-right {
-webkit-transform: translateX(100%);
-ms-transform: translateX(100%);
transform: translateX(100%);
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
}
.no-js h1 {
color: #222222;
}
.loaded #loader {
opacity: 0;
-webkit-transition: all 0.3s ease-out;
transition: all 0.3s ease-out;
}
#loader-wrapper .load_title {
font-family: 'Open Sans';
color: #FFF;
font-size: 19px;
width: 100%;
text-align: center;
z-index: 9999999999999;
position: absolute;
top: 60%;
opacity: 1;
line-height: 30px;
}
.loaded #loader-wrapper {
visibility: hidden;
-webkit-transform: translateY(-100%);
-ms-transform: translateY(-100%);
transform: translateY(-100%);
-webkit-transition: all 0.3s 1s ease-out;
transition: all 0.3s 1s ease-out;
}
#loader-wrapper .load_title span {
font-weight: normal;
font-style: italic;
font-size: 13px;
color: #FFF;
opacity: 0.5;
}
</style>
</head>
.no-js #loader-wrapper {
display: none;
}
<body>
<div id="app">
<div id="loader-wrapper">
<div id="loader"></div>
<div class="loader-section section-left"></div>
<div class="loader-section section-right"></div>
<div class="load_title">正在加载系统资源,请耐心等待</div>
.no-js h1 {
color: #222222;
}
#loader-wrapper .load_title {
font-family: "Open Sans";
color: #fff;
font-size: 19px;
width: 100%;
text-align: center;
z-index: 9999999999999;
position: absolute;
top: 60%;
opacity: 1;
line-height: 30px;
}
#loader-wrapper .load_title span {
font-weight: normal;
font-style: italic;
font-size: 13px;
color: #fff;
opacity: 0.5;
}
</style>
</head>
<body>
<div id="app">
<div id="loader-wrapper">
<div id="loader"></div>
<div class="loader-section section-left"></div>
<div class="loader-section section-right"></div>
<div class="load_title">正在加载系统资源,请耐心等待</div>
</div>
</div>
</div>
<script type="module" src="/src/main.js"></script>
</body>
</html>
<script type="module" src="/src/main.js"></script>
</body>
</html>

View File

@ -21,6 +21,7 @@
"@rollup/plugin-commonjs": "^28.0.0",
"@vueup/vue-quill": "1.2.0",
"@vueuse/core": "10.11.0",
"ant-design-vue": "^4.2.6",
"axios": "0.28.1",
"bpmn-js": "^11.4.1",
"diagram-js": "^11.9.1",
@ -34,7 +35,9 @@
"jsencrypt": "3.3.2",
"nprogress": "0.2.0",
"pinia": "2.1.7",
"qs": "^6.14.0",
"ruoyi": "file:",
"spark-md5": "^3.0.2",
"vkbeautify": "^0.99.3",
"vue": "3.4.31",
"vue-cropper": "1.1.1",
@ -42,8 +45,10 @@
},
"devDependencies": {
"@vitejs/plugin-vue": "5.0.5",
"less": "^4.3.0",
"sass": "1.77.5",
"unplugin-auto-import": "0.17.6",
"unplugin-vue-components": "^28.5.0",
"unplugin-vue-setup-extend-plus": "1.0.1",
"vite": "5.3.2",
"vite-plugin-compression": "0.5.1",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 709 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 413 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 498 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 975 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Some files were not shown because too many files have changed in this diff Show More