diff --git a/public/css/sichuanTibet.css b/public/css/sichuanTibet.css index 356af84..b287e49 100644 --- a/public/css/sichuanTibet.css +++ b/public/css/sichuanTibet.css @@ -376,7 +376,7 @@ body::-webkit-scrollbar{ position: absolute; top: 880px; padding: 10px 40px; - background: url("../images/ai/branch_btn_bgd.png") no-repeat center/100% 100%; + background: url("../images/branch_btn_bgd.png") no-repeat center/100% 100%; color: #c8d7fe; cursor: pointer; z-index: 999; @@ -1057,7 +1057,7 @@ body::-webkit-scrollbar{ .sf-equipment-overview-bgd{ height: 240px; width: 400px; - background: url("../images/ai/tower_crane.png") no-repeat center/100% 100%; + background: url("../images/tower_crane.png") no-repeat center/100% 100%; position: relative; margin: auto; } @@ -1098,7 +1098,7 @@ body::-webkit-scrollbar{ .sf-hook{ width: 16px; height: 30px; - background: url("../images/ai/drag_hook.png") no-repeat center/100% 100%; + background: url("../images/drag_hook.png") no-repeat center/100% 100%; } .circular{ position: absolute; @@ -1106,12 +1106,12 @@ body::-webkit-scrollbar{ height: 120px; bottom: 15px; right: 15px; - background: url("../images/ai/circular.png") no-repeat center/100% 100%; + background: url("../images/circular.png") no-repeat center/100% 100%; } .needle{ width: 100%; height: 100%; - background: url("../images/ai/needle.png") no-repeat center/100% 100%; + background: url("../images/needle.png") no-repeat center/100% 100%; transform:rotate(0deg); } .dot-track{ diff --git a/public/images/data/excavation-01.jpg b/public/images/data/excavation-01.jpg new file mode 100644 index 0000000..38b5c0f Binary files /dev/null and b/public/images/data/excavation-01.jpg differ diff --git a/public/index.html b/public/index.html index d6e7a6b..6209fc1 100644 --- a/public/index.html +++ b/public/index.html @@ -9,7 +9,7 @@ - + diff --git a/src/components/classify-bar.js b/src/components/classify-bar.js index 339b64c..b84e552 100644 --- a/src/components/classify-bar.js +++ b/src/components/classify-bar.js @@ -40,7 +40,9 @@ Vue.component("classify-bar", { //然后异步执行echarts的初始化函数 newPromise.then(() => { - + if(data.length==0){ + return; + } var max = data[0].total var nameData = []; var totalData = [] diff --git a/src/components/header.vue b/src/components/header.vue index 18231f3..37b0433 100644 --- a/src/components/header.vue +++ b/src/components/header.vue @@ -27,10 +27,7 @@ - - +
质量管理
@@ -134,6 +131,7 @@ \ No newline at end of file +
+ + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/src/pages/quality/standardCuringRoom.vue b/src/pages/quality/standardCuringRoom.vue index 06af90d..8461c14 100644 --- a/src/pages/quality/standardCuringRoom.vue +++ b/src/pages/quality/standardCuringRoom.vue @@ -1,26 +1,44 @@ - - \ No newline at end of file +
+ + + + + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/src/pages/safe/distributionBox.vue b/src/pages/safe/distributionBox.vue index 9a02b55..be99bfb 100644 --- a/src/pages/safe/distributionBox.vue +++ b/src/pages/safe/distributionBox.vue @@ -1,26 +1,45 @@ - - \ No newline at end of file +
+ + + + + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/src/pages/safe/dumbwaiter.vue b/src/pages/safe/dumbwaiter.vue index 6d95bcf..95b3308 100644 --- a/src/pages/safe/dumbwaiter.vue +++ b/src/pages/safe/dumbwaiter.vue @@ -1,26 +1,36 @@ - - \ No newline at end of file +
+ + + + + + + + +
+ + + + \ No newline at end of file diff --git a/src/pages/safe/excavation.vue b/src/pages/safe/excavation.vue index e0d7c8f..b8809ec 100644 --- a/src/pages/safe/excavation.vue +++ b/src/pages/safe/excavation.vue @@ -1,26 +1,456 @@ - - \ No newline at end of file + automaticRollType() { + var height = $(".glr-login-number-max").innerHeight() + if ($("#afootOverflowType").scrollTop() == height * this.warningType.length - $("#afootOverflowType").innerHeight()) { + this.warningTypeIndex = 0 + } else { + this.warningTypeIndex = this.warningTypeIndex + 1 + } + $("#afootOverflowType").animate({ scrollTop: (height * this.warningTypeIndex) + 'px' }) + + if ($("#afootOverflowTypePJ").scrollTop() == height * this.warningType.length - $("#afootOverflowTypePJ").innerHeight()) { + this.warningTypeIndex = 0 + } else { + this.warningTypeIndex = this.warningTypeIndex + 1 + } + $("#afootOverflowTypePJ").animate({ scrollTop: (height * this.warningTypeIndex) + 'px' }) + }, + legendScreen(type) { + var data = this.forBitMappedImageData + data.map(x => { + if (x.sensorType == type) { + if (x.state == true) { + x.state = false + } else { + x.state = true + } + } + return x + }) + + var legendData = this.legendArrData + legendData.map(y => { + if (y.type == type) { + if (y.class == 'sjk-icon-legend-right-icon') { + y.class = 'sjk-icon-legend-right-icon sjk-legend-filter' + } else { + y.class = 'sjk-icon-legend-right-icon' + } + } + return y + }) + this.forBitMappedImageData = data + this.legendArrData = legendData + }, + //点击点位事件 + onClickSpot(type, id, isBase, status, it) { + this.deviceId = id + var posX = 0, posY = 0; + var event = event || window.event; + if (event.pageX || event.pageY) { + posX = event.pageX; + posY = event.pageY; + } else if (event.clientX || event.clientY) { + posX = event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft; + posY = event.clientY + document.documentElement.scrollTop + document.body.scrollTop; + } + var position = {} + + if (type == 'CollWeiyiPoint') { + position = { + top: posY - 110, + left: posX + 30 + } + } else if (type == 'CollQingxiePoint') { + position = { + top: posY - 110, + left: posX + 30 + } + } + this.popupPosition = position + if (isBase) { + this.popupShow = true + if (type == "CollWeiyiPoint") { + this.pointPositionName = `沉降监测-${it.pointName}` + } + if (type == "CollQingxiePoint") { + this.pointPositionName = `倾斜监测-${it.pointName}` + } + this.popupArrData = []; + } + + }, + onClickSpotPJ(type, projectId, id, it) { + this.deviceId = id + var posX = 0, posY = 0; + var event = event || window.event; + if (event.pageX || event.pageY) { + posX = event.pageX; + posY = event.pageY; + } else if (event.clientX || event.clientY) { + posX = event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft; + posY = event.clientY + document.documentElement.scrollTop + document.body.scrollTop; + } + var position = {} + + if (type == 'CollWeiyiPoint') { + position = { + top: posY - 110, + left: posX + 30 + } + } else if (type == 'CollQingxiePoint') { + position = { + top: posY - 110, + left: posX + 30 + } + } + + this.pointPositionName = `爬架-倾斜监测-${it.pointName}`; + this.popupPosition = position + this.popupShow = true; + this.popupArrData = []; + + }, + // 监听点击弹窗以外的区域 + clickOutside(event) { + const current = document.getElementById("clickPopup"); + if (current) { + if (!current.contains(event.target)) { + if (event.target._prevClass != 'icon-img') { + this.popupShow = false + } + } + } + }, + + //点击点位类型 + onClickPoint(n) { + this.btnNav = n + if (n == 1) { + this.sensorType = 'CollWeiyiPoint' + } else if (n == 2) { + this.sensorType = 'CollQingxiePoint' + } else if (n == 3) { + this.sensorType = 'YingLi' + } + + }, + + }, +}; + + + diff --git a/src/pages/safe/personnelPosition.vue b/src/pages/safe/personnelPosition.vue index cb75cba..0828e2d 100644 --- a/src/pages/safe/personnelPosition.vue +++ b/src/pages/safe/personnelPosition.vue @@ -1,5 +1,5 @@ @@ -7,7 +7,7 @@ \ No newline at end of file + + \ No newline at end of file diff --git a/src/pages/safe/towerCrane.vue b/src/pages/safe/towerCrane.vue index 8eb8c07..5d44f7d 100644 --- a/src/pages/safe/towerCrane.vue +++ b/src/pages/safe/towerCrane.vue @@ -41,12 +41,13 @@ - +
监控列表
-
-
+
+
@@ -68,7 +69,8 @@
设备状态: - {{ it.state == 0 ? '离线' : '在线' }} + {{ it.state == 0 ? '离线' : '在线' + }}
@@ -110,108 +112,204 @@ - - - - -
-
吊重次数(10次)
-
-
-
-
-
本月
-
5
-
-
-
累计
-
500
+ + + + +
+
吊重次数(10次)
+
+
+
+
+
本月
+
5
+
+
+
累计
+
500
+
+
+
+ + +
+
超载次数(10次)
+
+
+
+
+
本月
+
5
+
+
+
累计
+
500
+
+
+
+ + + +
+
超载率(10%)
+
+
+
+
+
本月
+
10%
+
+
+
累计
+
12%
+
+
+
+ + + +
+
告警次数(10次)
+
+
+
+
+
本月
+
5
+
+
+
累计
+
500
+
+
+
+ +
+
+
+
+ + +
+
+ +
+ + + +
+
+ +
+
+
+
- - -
-
超载次数(10次)
-
-
-
-
-
本月
-
5
-
-
-
累计
-
500
-
-
-
- - - -
-
超载率(10%)
-
-
-
-
-
本月
-
10%
-
-
-
累计
-
12%
-
-
-
- - - -
-
告警次数(10次)
-
-
-
-
-
本月
-
5
-
-
-
累计
-
500
-
-
-
- -
- -
- -
- - 222222222 +
+
+
+
正在发生
+
塔机监测
+
+
+
+
暂无预警数据
+
+
{{ item.warn_name }}
+
+
+ +
+
+
{{ item.towerName }}发生{{ item.warn_context }} +
+
{{ item.warn_time }}
+
+
+
项目:{{ item.project_abbreviation }}
+
+
+
+
+
+
+
力矩曲线
+
+
+ +
+
+
+
- +
-
- {{ it.title }} - - - - - - +
+ {{ it.title }} + + + + + + + + + + + + + + + + + + +
- 报警:{{ it.data1}} - 报警:{{ it.data2}} + 报警:{{ it.data1 }} + 报警:{{ it.data2 + }} {{ it.scale1 }} {{ it.scale2 }}
@@ -220,7 +318,7 @@ - +
@@ -231,27 +329,39 @@ import '@/components/module/module-one-2-1' import '@/components/module/module-one-3-1' import '@/components/staff-survey-chart' +import '@/components/tower-crane-value-1' +import '@/components/tower-crane-value-2' +import '@/components/safe-curve-chart' export default { //塔吊 name: 'JhbigscreenTowerCrane', - data() { return { + index: 0, data1: [], devList: [], selDev: {}, - devBottomInfo:[] + devBottomInfo: [], + direction: 'right', + comName: 'tower-crane-value-1', + warningData: [], + momentData: {}, + forIndex:0, + warningInterval:undefined, }; }, mounted() { - this.devBottomInfo=[{title:"幅度",data1:59,data2:58,scale1:'0',scale2:'0m'}, - {title:"风速",data1:59,data2:58,scale1:'0',scale2:'0m'}, - {title:"吊重",data1:13.8,data2:10.8,scale1:'0',scale2:'0m'}, - {title:"倾角",data1:59,data2:5,scale1:'0',scale2:'0m'}, - {title:"转角",data1:59,data2:58,scale1:'0',scale2:'0m'}, - {title:"高度",data1:59,data2:58,scale1:'0',scale2:'0m'}, - ]; + //正在发生 定时器 + this.warningInterval = setInterval(this.safeAutomaticRoll,10000); + 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]}'); + this.devBottomInfo = [{ title: "幅度", data1: 59, data2: 58, scale1: '0', scale2: '0m' }, + { title: "风速", data1: 59, data2: 58, scale1: '0', scale2: '0m' }, + { title: "吊重", data1: 13.8, data2: 10.8, scale1: '0', scale2: '0m' }, + { title: "倾角", data1: 59, data2: 5, scale1: '0', scale2: '0m' }, + { title: "转角", data1: 59, data2: 58, scale1: '0', scale2: '0m' }, + { title: "高度", data1: 59, data2: 58, scale1: '0', scale2: '0m' }, + ]; this.data1 = [ { text: "在线数量", value: 1 }, { text: "离线数量", value: 2 }, @@ -263,32 +373,149 @@ export default { driverTel: "1338899090,133889902", safer: "张九", saferTel: "13388664433", + buttress: "21.4/35.9", + power: "80", selected: true, + postArmLength: 10, + downHeight: 10, + torqueData: 10, + overload: 10, + enterTime: "2024-02-02 14:00", + ampData: 10,//幅度 + foreArmLength: 0,//臂长 + heightData: 0,//当前高度 + angleData: 0,//角度 }, { name: "xxxxxx2#塔机", state: 0, + buttress: "21.4/35.9", + power: "80", driver: "张大三,张小山", driverTel: "1338899090,133889902", safer: "张九", saferTel: "13388664433", selected: false, + postArmLength: 20, + downHeight: 20, + torqueData: 20, + overload: 20, + enterTime: "2024-02-02 14:00", + ampData: 20,//幅度 + foreArmLength: 20,//臂长 + heightData: 20,//当前高度 + angleData: 20,//角度 }, { name: "xxxxxx3#塔机", state: 1, + buttress: "21.4/35.9", + power: "80", driver: "张大三,张小山", driverTel: "1338899090,133889902", safer: "张九", saferTel: "13388664433", selected: false, + postArmLength: 30, + downHeight: 30, + torqueData: 30, + overload: 30, + enterTime: "2024-02-02 14:00", + ampData: 30,//幅度 + foreArmLength: 30,//臂长 + heightData: 30,//当前高度 + angleData: 30,//角度 }]; this.selDev = this.devList[0]; + this.warningData = [{ + warn_name: "预警A", + images: ['images/831.jpg'], + towerName: 'XXXX塔机', + warn_context: '告警内容', + warn_time: '24-02-02 14:00', + project_abbreviation: 'xxx项目' + }, { + warn_name: "预警A", + images: ['images/831.jpg'], + towerName: 'XXXX塔机', + warn_context: '告警内容', + warn_time: '24-02-02 14:00', + project_abbreviation: 'xxx项目' + }, { + warn_name: "预警A", + images: ['images/831.jpg'], + towerName: 'XXXX塔机', + warn_context: '告警内容', + warn_time: '24-02-02 14:00', + project_abbreviation: 'xxx项目' + },] }, methods: { - calcTop(d){ - let tmp=100-(d.data2*100.0/d.data1); - return `top:calc(20px + ${tmp>78?78:tmp}%)`; - } + calcTop(d) { + let tmp = 100 - (d.data2 * 100.0 / d.data1); + return `top:calc(20px + ${tmp > 78 ? 78 : tmp}%)`; + }, + safeTowerLeft() { + this.direction = 'left' + this.automaticRoll() + }, + safeTowerRight() { + //切换动画 + this.direction = 'right' + this.automaticRoll() + }, + automaticRoll() { + //切换动画 + if (this.direction == 'right') { + if (this.index == this.devList.length - 1) { + this.index = 0 + } else { + this.index = this.index + 1 + } + } else { + if (this.index == 0) { + this.index = this.devList.length - 1 + } else { + this.index = this.index - 1 + } + } + this.selDev = this.devList[this.index]; + if (this.comName == 'tower-crane-value-1') { + this.comName = 'tower-crane-value-2' + } else { + this.comName = 'tower-crane-value-1' + } + + var height = $(".list-for").innerHeight() + $("#listMin").animate({ scrollTop: (height * this.index) + 'px' }) + }, + onTowerCraneList(n) { + this.index = n + this.selDev = this.devList[this.index]; + + //切换动画 + this.direction = 'right' + if (this.comName == 'tower-crane-value-1') { + this.comName = 'tower-crane-value-2' + } else { + this.comName = 'tower-crane-value-1' + } + }, + safeAutomaticRoll() { + var height = $(".safe-afoot-overflow").innerHeight() + console.log(height) + if (this.forIndex == this.warningData.length) { + this.forIndex = 0 + } else { + this.forIndex = this.forIndex + 1 + } + $("#afootOverflow").animate({ scrollTop: (height * this.forIndex) + 'px' }) + }, + warningListMinMouseover() { + clearInterval(this.warningInterval); + }, + warningListMinMouseout() { + this.warningInterval = setInterval(this.safeAutomaticRoll, 10000); + }, }, }; @@ -297,27 +524,34 @@ export default { .my-svg-icon-blue, .my-svg-icon-green { - width: 28px; - height: 28px; + width: 28px !important; + height: 28px !important; position: relative; top: -10px; } .my-svg-icon-green * { - fill: #63F8BC; + fill: #63F8BC !important; } .my-svg-icon-blue { - fill: #002d8d; + fill: #002d8d !important; } .drv-list { padding: 0px 12px; - max-height: calc(100vh - 280px); + max-height: calc(100% - 55px); overflow-y: auto; .drv-item { border-bottom: dotted 1px #429fff; + cursor: pointer; + + &.active { + .item-content { + background-color: #42a1ff60; + } + } &:first-child { .item-content { @@ -364,6 +598,14 @@ export default { margin-left: 4px; color: #79bbe3; } + + &.is-offline { + color: burlywood; + } + + &.is-online { + color: #63F8BC; + } } } } @@ -379,12 +621,13 @@ export default { } .data-row2 { + margin-top: 10px; display: grid; grid-template-columns: 50% 50%; .data-row2-col { text-align: center; - line-height: 30px; + line-height: 40px; .s-text { color: #497deb; @@ -396,9 +639,6 @@ export default { } } } - .dev-info{ - height: calc(100vh - 323px); - } .dev-info-list { height: 280px; @@ -408,66 +648,111 @@ export default { border-image: linear-gradient(to bottom, #f7f1f100, #3473c3d4); border-image-slice: 1; height: 100%; - .row-1{ + + .row-1 { position: relative; - .sp-title{ + + .sp-title { position: relative; - left:12px; - color:#ccd7e5d4; - font-size:12px; + left: 12px; + color: #ccd7e5d4; + font-size: 12px; } - svg.icon{ - position:absolute; + + svg.icon { + position: absolute; right: 12px; - fill:#9c1ef1 !important; - width:20px !important; + fill: #9c1ef1 !important; + width: 20px !important; height: 20px !important; - *{ - fill:#9c1ef1 !important; + + * { + fill: #9c1ef1 !important; } } } - .row-scale{ + + .row-scale { height: calc(100% - 24px); position: relative; text-align: center; - .row-scale-ctx{ + + .row-scale-ctx { height: 100%; display: inline-block; width: 30%; - .scale-item{ + + .scale-item { margin: 22% 0px; height: 4%; background: #002d8d94; border-radius: 5%; } } - .sp-sc{ + + .sp-sc { position: absolute; - bottom:2px; - left:50%; + bottom: 2px; + left: 50%; font-size: 12px; color: #72b5f9; } - .sp-sc1{ - margin-left:calc(-15% - 20px); + + .sp-sc1 { + margin-left: calc(-15% - 20px); } - .sp-sc2{ - margin-left:calc(15% + 10px); + + .sp-sc2 { + margin-left: calc(15% + 10px); } - .sp-data{ + + .sp-data { text-align: right; - margin-left:calc(-15% - 50px); + margin-left: calc(-15% - 50px); } - .sp-data1{ - top:10px; + + .sp-data1 { + top: 10px; } - + } } + padding:12px; height: 100%; } } + + .left-enter { + left: -100%; + transform: translateX(-100%); + } + + .left-leave-to { + left: 0; + transform: translateX(100%); + position: absolute; + } + + .left-enter-active, + .left-leave-active { + transition: all 1s ease; + } + + .right-enter { + left: 100%; + transform: translateX(100%); + } + + .right-leave-to { + left: 0; + transform: translateX(-100%); + position: absolute; + } + + .right-enter-active, + .right-leave-active { + transition: all 1s ease; + } } diff --git a/src/router/index.js b/src/router/index.js index 4a9d2b9..09854e5 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -6,80 +6,95 @@ Vue.use(VueRouter) const routes = [ { path: '/', - name: 'index', + name: 'index', + meta:{nav:1,}, component: () => import(/* webpackChunkName: "index" */ '../pages/index.vue') }, { path: '/detail', name: 'detail', + meta:{nav:2,}, component: () => import(/* webpackChunkName: "detail" */ '../pages/projectDetail.vue') }, { path: '/progress', name: 'progress', + meta:{nav:5,}, component: () => import(/* webpackChunkName: "progress" */ '../pages/projectProgress.vue') } , { path: '/quality', name: 'quality', + meta:{nav:4,}, component: () => import(/* webpackChunkName: "quality" */ '../pages/projectQuality.vue') } , { path: '/concreteStrength', name: 'concreteStrength', + meta:{nav:42,}, component: () => import(/* webpackChunkName: "concreteStrength" */ '../pages/quality/concreteStrength.vue') } , { path: '/standardCuringRoom', name: 'standardCuringRoom', + meta:{nav:41,}, component: () => import(/* webpackChunkName: "standardCuringRoom" */ '../pages/quality/standardCuringRoom.vue') } , { path: '/safety', name: 'safety', + meta:{nav:3,}, component: () => import(/* webpackChunkName: "safety" */ '../pages/projectSafety.vue') } , { path: '/distributionBox', name: 'distributionBox', + meta:{nav:33,}, component: () => import(/* webpackChunkName: "distributionBox" */ '../pages/safe/distributionBox.vue') } , { path: '/dumbwaiter', name: 'dumbwaiter', + meta:{nav:34,}, component: () => import(/* webpackChunkName: "dumbwaiter" */ '../pages/safe/dumbwaiter.vue') } , { path: '/excavation', - name: 'excavation', + name: 'excavation', + meta:{nav:32,}, component: () => import(/* webpackChunkName: "excavation" */ '../pages/safe/excavation.vue') } , { path: '/towerCrane', name: 'towerCrane', + meta:{nav:31,}, component: () => import(/* webpackChunkName: "towerCrane" */ '../pages/safe/towerCrane.vue') } , { path: '/video', name: 'video', + meta:{nav:61,}, component: () => import(/* webpackChunkName: "video" */ '../pages/projectVideo.vue') }, { path: '/aiVideo', name: 'aiVideo', + meta:{nav:62,}, component: () => import(/* webpackChunkName: "video" */ '../pages/toAIVideoProject.vue') }, { path: '/engin', name: 'engin', + meta:{nav:7,}, component: () => import(/* webpackChunkName: "video" */ '../pages/projectEngin.vue') }, { path: '/photography', name: 'photography', + meta:{nav:63,}, component: () => import(/* webpackChunkName: "video" */ '../pages/photography.vue') } ] @@ -88,5 +103,7 @@ const router = new VueRouter({ base: process.env.BASE_URL, routes }) - +export { + routes +} export default router