|
@@ -15,7 +15,7 @@
|
|
|
<section class="s1">
|
|
|
<div class="s-title">
|
|
|
<h2>设备概况</h2>
|
|
|
- <span class="tag">万达广场</span>
|
|
|
+ <span class="tag">丰乐社区</span>
|
|
|
</div>
|
|
|
<div class="s1-title">总计设备数量 <span>200台</span></div>
|
|
|
<div class="e-con">
|
|
@@ -42,16 +42,16 @@
|
|
|
<section class="s2">
|
|
|
<div class="s-title">
|
|
|
<h2>设备趋势</h2>
|
|
|
- <span class="tag">万达广场</span>
|
|
|
+ <span class="tag">丰乐社区</span>
|
|
|
</div>
|
|
|
<div class="s2-con">
|
|
|
<div class="s2-left">
|
|
|
<div class="sl-title">设备报警时间</div>
|
|
|
<div class="sl-sub" style="color:#fe2a2a">1分钟前</div>
|
|
|
<div class="sl-title">区域负责人值班电话</div>
|
|
|
- <div class="sl-sub">1341779846</div>
|
|
|
- <div class="sl-title">蓬江区消防大队值班电话</div>
|
|
|
- <div class="sl-sub">0750-8699139</div>
|
|
|
+ <div class="sl-sub">13417787373</div>
|
|
|
+ <div class="sl-title">丰乐社区消防大队值班电话</div>
|
|
|
+ <div class="sl-sub">0750-8555199</div>
|
|
|
</div>
|
|
|
<div class="s2-right" id="s2-e"</div>
|
|
|
</div>
|
|
@@ -64,7 +64,7 @@
|
|
|
<span class="tag">丰乐社区</span>
|
|
|
</div>
|
|
|
<div class="s3-select">
|
|
|
- <div>烟雾探测器</div>
|
|
|
+ <div>井盖传感器</div>
|
|
|
<div>
|
|
|
<select value="0" name="全部" id="select">
|
|
|
<option value="0">全部</option>
|
|
@@ -80,7 +80,7 @@
|
|
|
<div class="t-header">
|
|
|
<span>更新时间</span>
|
|
|
<span>状态</span>
|
|
|
- <span>温度</span>
|
|
|
+ <span>信号强度</span>
|
|
|
<span>电量</span>
|
|
|
<span>详情</span>
|
|
|
</div>
|
|
@@ -94,7 +94,7 @@
|
|
|
<section class="s4">
|
|
|
<div class="s-title">
|
|
|
<h2>设备详情</h2>
|
|
|
- <span class="tag">AGE67ioj-49</span>
|
|
|
+ <span class="tag">AGE86ioj-35</span>
|
|
|
</div>
|
|
|
<div class="s4-con">
|
|
|
<div class="s4-left" id="map"></div>
|
|
@@ -112,15 +112,16 @@
|
|
|
<script>
|
|
|
let equipment = [{
|
|
|
time:"19.03.27 21.23.27",
|
|
|
- status:'正常',
|
|
|
- temperature:"15℃",
|
|
|
+ status:'掀翻',
|
|
|
+ temperature:"强",
|
|
|
quantity:'99%',
|
|
|
- id:0,
|
|
|
+ id:1,
|
|
|
detail:{
|
|
|
name:"AGE67ioj-49",
|
|
|
lanlat:[113.0842709541, 22.5944937320],
|
|
|
xinghao:"AllRange1",
|
|
|
- status:"正常",
|
|
|
+ status:"掀翻",
|
|
|
+ color:'#fe2a2a',
|
|
|
update:"1分钟前",
|
|
|
xinhao:"强",
|
|
|
quantity:'99%',
|
|
@@ -128,15 +129,16 @@
|
|
|
}
|
|
|
},{
|
|
|
time:"19.03.27 21.23.27",
|
|
|
- status:'掀翻',
|
|
|
- temperature:"15℃",
|
|
|
+ status:'抬起',
|
|
|
+ temperature:"强",
|
|
|
quantity:'99%',
|
|
|
- id:1,
|
|
|
+ id:2,
|
|
|
detail:{
|
|
|
name:"AGE67ioj-49",
|
|
|
lanlat:[113.0842709541, 22.5944937320],
|
|
|
xinghao:"AllRange1",
|
|
|
- status:"掀翻",
|
|
|
+ status:"抬起",
|
|
|
+ color:'#04cd0d',
|
|
|
update:"1分钟前",
|
|
|
xinhao:"强",
|
|
|
quantity:'99%',
|
|
@@ -144,15 +146,16 @@
|
|
|
}
|
|
|
},{
|
|
|
time:"19.03.27 21.23.27",
|
|
|
- status:'抬起',
|
|
|
- temperature:"15℃",
|
|
|
+ status:'水浸',
|
|
|
+ temperature:"强",
|
|
|
quantity:'99%',
|
|
|
- id:2,
|
|
|
+ id:3,
|
|
|
detail:{
|
|
|
name:"AGE67ioj-49",
|
|
|
lanlat:[113.0842709541, 22.5944937320],
|
|
|
xinghao:"AllRange1",
|
|
|
- status:"抬起",
|
|
|
+ status:"水浸",
|
|
|
+ color:'#fdca3a',
|
|
|
update:"1分钟前",
|
|
|
xinhao:"强",
|
|
|
quantity:'99%',
|
|
@@ -160,21 +163,36 @@
|
|
|
}
|
|
|
},{
|
|
|
time:"19.03.27 21.23.27",
|
|
|
- status:'水浸',
|
|
|
- temperature:"15℃",
|
|
|
+ status:'正常',
|
|
|
+ temperature:"弱",
|
|
|
quantity:'99%',
|
|
|
- id:3,
|
|
|
+ id:0,
|
|
|
detail:{
|
|
|
name:"AGE67ioj-49",
|
|
|
lanlat:[113.0842709541, 22.5944937320],
|
|
|
xinghao:"AllRange1",
|
|
|
- status:"水浸",
|
|
|
+ color:'#479eff',
|
|
|
+ status:"正常",
|
|
|
update:"1分钟前",
|
|
|
- xinhao:"强",
|
|
|
+ xinhao:"弱",
|
|
|
quantity:'99%',
|
|
|
position:"丰乐社区沂水街南段东城街路口"
|
|
|
}
|
|
|
}];
|
|
|
+ let fixStatus={
|
|
|
+ 0:'正常',
|
|
|
+ 1:'掀翻',
|
|
|
+ 2:'水浸',
|
|
|
+ 3:'抬起',
|
|
|
+ }
|
|
|
+
|
|
|
+ let fixColor={
|
|
|
+ 0:'#479eff',
|
|
|
+ 1:'#fe2a2a',
|
|
|
+ 2:'#fdca3a',
|
|
|
+ 3:'#04cd0d',
|
|
|
+ }
|
|
|
+ console.log(fixStatus[111]);
|
|
|
|
|
|
(function() {
|
|
|
let c1 = "#fe2a2a";
|
|
@@ -354,7 +372,7 @@
|
|
|
]
|
|
|
};
|
|
|
|
|
|
- let option = {
|
|
|
+ let option = {
|
|
|
title: {
|
|
|
textStyle:{
|
|
|
color:'#fff'
|
|
@@ -435,115 +453,192 @@
|
|
|
con3Chart.setOption(con3);
|
|
|
con4Chart.setOption(con4);
|
|
|
var map = new AMap.Map('map', {
|
|
|
- resizeEnable: true,
|
|
|
- zoom:14,
|
|
|
- center: [113.0842709541, 22.5944937320]
|
|
|
- });
|
|
|
- })();
|
|
|
-
|
|
|
- let htmlTemp = ""
|
|
|
-
|
|
|
- equipment.forEach((item,idx)=>{
|
|
|
- htmlTemp+=`<div class="t-body ${idx===0?'active':''}" data-detail="${item.id}">
|
|
|
- <span>${item.time}</span>
|
|
|
- <span>${item.status}</span>
|
|
|
- <span>${item.temperature}</span>
|
|
|
- <span>${item.quantity}</span>
|
|
|
- <span>...</span>
|
|
|
- </div>`
|
|
|
- })
|
|
|
-
|
|
|
- let firstItem = equipment[0].detail
|
|
|
-
|
|
|
- let htmlItem = getItemHtml(firstItem)
|
|
|
-
|
|
|
- $('.s4-right').html(htmlItem)
|
|
|
-
|
|
|
- $('.t-main').html(htmlTemp)
|
|
|
-
|
|
|
- $("#select").change(function(e){
|
|
|
- htmlTemp = ""
|
|
|
- let val = $("#select").find("option:selected").text();
|
|
|
- console.log(val);
|
|
|
- if (val!=="全部") {
|
|
|
- equipment.forEach(item=>{
|
|
|
- if (item.status === val) {
|
|
|
- htmlTemp+=`<div class="t-body" data-detail="${item.id}">
|
|
|
- <span>${item.time}</span>
|
|
|
- <span>${item.status}</span>
|
|
|
- <span>${item.temperature}</span>
|
|
|
- <span>${item.quantity}</span>
|
|
|
- <span>...</span>
|
|
|
- </div>`
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
- else{
|
|
|
- equipment.forEach(item=>{
|
|
|
- htmlTemp+=`<div class="t-body" data-detail="${item.id}">
|
|
|
- <span>${item.time}</span>
|
|
|
- <span>${item.status}</span>
|
|
|
- <span>${item.temperature}</span>
|
|
|
- <span>${item.quantity}</span>
|
|
|
- <span>...</span>
|
|
|
- </div>`
|
|
|
- })
|
|
|
- }
|
|
|
- $('.t-main').html(htmlTemp)
|
|
|
- });
|
|
|
+ resizeEnable: true,
|
|
|
+ zoom:14,
|
|
|
+ center: [113.0842709541, 22.5944937320]
|
|
|
+ });
|
|
|
|
|
|
- $('.t-main').on("click",".t-body",function (e) {
|
|
|
- let that = $(this)
|
|
|
- let id = that.data('detail')
|
|
|
- $('.t-main .t-body').removeClass('active')
|
|
|
- that.addClass('active')
|
|
|
- equipment.forEach(item=>{
|
|
|
- if (item.id === id) {
|
|
|
- let html = getItemHtml(item.detail)
|
|
|
- $('.s4-right').html(html)
|
|
|
- }
|
|
|
- })
|
|
|
- })
|
|
|
+ let arr = Array.from(document.querySelectorAll(".s1 .card")).concat(
|
|
|
+ Array.from(document.querySelectorAll(".s2 .card"))
|
|
|
+ );
|
|
|
+ arr.forEach((dom, index) => {
|
|
|
+ dom.addEventListener("click", e => {
|
|
|
+ console.log("equipmentClickHandle", index);
|
|
|
+ window.equipmentClickHandle && window.equipmentClickHandle(index);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ })();
|
|
|
|
|
|
+
|
|
|
|
|
|
function getItemHtml(item) {
|
|
|
return `<div class="s4-item">
|
|
|
- <div class="s4i-l">设备型号</div>
|
|
|
- <div class="s4i-r">${item.xinghao}</div>
|
|
|
- </div>
|
|
|
- <div class="s4-item">
|
|
|
<div class="s4i-l">设备状态</div>
|
|
|
- <div class="s4i-r" style="color:#fe2a2a;">${item.status}</div>
|
|
|
+ <div class="s4i-r" style="color:${item.color};">${item.status}</div>
|
|
|
</div>
|
|
|
<div class="s4-item">
|
|
|
<div class="s4i-l">更新时间</div>
|
|
|
<div class="s4i-r">${item.update}</div>
|
|
|
</div>
|
|
|
<div class="s4-item">
|
|
|
- <div class="s4i-l">信号强度</div>
|
|
|
- <div class="s4i-r">${item.xinhao}</div>
|
|
|
- </div>
|
|
|
- <div class="s4-item">
|
|
|
- <div class="s4i-l">设备电量</div>
|
|
|
- <div class="s4i-r">${item.quantity}</div>
|
|
|
- </div>
|
|
|
- <div class="s4-item">
|
|
|
<div class="s4i-l">设备位置</div>
|
|
|
<div class="s4i-r">${item.position}</div>
|
|
|
</div>`
|
|
|
+ }
|
|
|
+
|
|
|
+ let arr = []
|
|
|
+ function getDeviceList(fn) {
|
|
|
+ $.ajax({
|
|
|
+ url: "http://139.159.231.141:8182/api/device/list",
|
|
|
+ type: "get",
|
|
|
+ success: function(data) {
|
|
|
+ let callback = JSON.parse(data)
|
|
|
+ fn(callback)
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ getDeviceList(function (data) {
|
|
|
+ arr = data.data.filter(item=>item.deviceType === "JG")
|
|
|
+ update(arr)
|
|
|
+ })
|
|
|
+
|
|
|
+ function update(arr) {
|
|
|
+ arr = arr.map(item=>{
|
|
|
+ let status = fixStatus[item.status]
|
|
|
+ let color = fixColor[item.status]
|
|
|
+ console.log(status);
|
|
|
+ return {
|
|
|
+ time:item.updateTime,
|
|
|
+ status:item.status,
|
|
|
+ id:item.id,
|
|
|
+ detail:{
|
|
|
+ name:item.deviceId,
|
|
|
+ lanlat:[item.longitude, item.latitude],
|
|
|
+ color:color,
|
|
|
+ status:status,
|
|
|
+ update:item.updateTime,
|
|
|
+ position:item.address
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ let htmlTemp = ""
|
|
|
+ arr.forEach((item,idx)=>{
|
|
|
+ htmlTemp+=`<div class="t-body ${idx===0?'active':''}" data-detail="${item.id}">
|
|
|
+ <span>${item.time}</span>
|
|
|
+ <span>${fixStatus[item.status]}</span>
|
|
|
+ <span>强</span>
|
|
|
+ <span>66%</span>
|
|
|
+ <span>...</span>
|
|
|
+ </div>`
|
|
|
+ })
|
|
|
+
|
|
|
+ let firstItem = arr[0].detail
|
|
|
+
|
|
|
+ let htmlItem = getItemHtml(firstItem)
|
|
|
+
|
|
|
+ $('.s4-right').html(htmlItem)
|
|
|
+
|
|
|
+ $('.t-main').html(htmlTemp)
|
|
|
+
|
|
|
+ $("#select").unbind('change').change(function(e){
|
|
|
+ htmlTemp = ""
|
|
|
+ let val = $("#select").find("option:selected").text();
|
|
|
+ console.log(val);
|
|
|
+ if (val!=="全部") {
|
|
|
+ arr.forEach(item=>{
|
|
|
+ if (fixStatus[item.status] === val) {
|
|
|
+ htmlTemp+=`<div class="t-body" data-detail="${item.id}">
|
|
|
+ <span>${item.time}</span>
|
|
|
+ <span>${fixStatus[item.status]}</span>
|
|
|
+ <span>强</span>
|
|
|
+ <span>66%</span>
|
|
|
+ <span>...</span>
|
|
|
+ </div>`
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ arr.forEach(item=>{
|
|
|
+ htmlTemp+=`<div class="t-body" data-detail="${item.id}">
|
|
|
+ <span>${item.time}</span>
|
|
|
+ <span>${fixStatus[item.status]}</span>
|
|
|
+ <span>强</span>
|
|
|
+ <span>66%</span>
|
|
|
+ <span>...</span>
|
|
|
+ </div>`
|
|
|
+ })
|
|
|
+ }
|
|
|
+ $('.t-main').html(htmlTemp)
|
|
|
+ });
|
|
|
+
|
|
|
+ $('.t-main').unbind('click').on("click",".t-body",function (e) {
|
|
|
+ let that = $(this)
|
|
|
+ let id = that.data('detail')
|
|
|
+ $('.t-main .t-body').removeClass('active')
|
|
|
+ that.addClass('active')
|
|
|
+ arr.forEach(item=>{
|
|
|
+ if (item.id === id) {
|
|
|
+ let html = getItemHtml(item.detail)
|
|
|
+ $('.s4-right').html(html)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
|
|
|
}
|
|
|
|
|
|
+ // 建立连接对象(还未发起连接)
|
|
|
+ if (socket) {
|
|
|
+ socket = null
|
|
|
+ }
|
|
|
+ var socket = new SockJS("http://139.159.231.141:8182/webSocketServer");
|
|
|
+
|
|
|
+ // 获取 STOMP 子协议的客户端对象
|
|
|
+ var stompClient = Stomp.over(socket);
|
|
|
|
|
|
- let arr = Array.from(document.querySelectorAll(".s1 .card")).concat(
|
|
|
- Array.from(document.querySelectorAll(".s2 .card"))
|
|
|
+ // 向服务器发起websocket连接并发送CONNECT帧
|
|
|
+ stompClient.connect(
|
|
|
+ {},
|
|
|
+ function connectCallback(frame) {
|
|
|
+
|
|
|
+ subscribe1()
|
|
|
+ console.log('连接成功');
|
|
|
+
|
|
|
+ },
|
|
|
+ function errorCallBack(error) {
|
|
|
+
|
|
|
+ }
|
|
|
);
|
|
|
- arr.forEach((dom, index) => {
|
|
|
- dom.addEventListener("click", e => {
|
|
|
- console.log("equipmentClickHandle", index);
|
|
|
- window.equipmentClickHandle && window.equipmentClickHandle(index);
|
|
|
+
|
|
|
+ //订阅消息
|
|
|
+ function subscribe1() {
|
|
|
+ stompClient.subscribe("/topic/device", function(response) {
|
|
|
+ // setMessageInnerHTML("已成功订阅/topic/device");
|
|
|
+ var returnData = JSON.parse(response.body);
|
|
|
+ let {id,status} = returnData
|
|
|
+ arr = arr.map(item=> {
|
|
|
+ if (item.id === id) {
|
|
|
+ switch (status) {
|
|
|
+ case 'ERC52':
|
|
|
+ item.status = 2
|
|
|
+ break;
|
|
|
+ case 'ERC51':
|
|
|
+ item.status = 1
|
|
|
+ break;
|
|
|
+ case 'ERC50':
|
|
|
+ item.status = 3
|
|
|
+
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ item.status = 0
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return item
|
|
|
+ })
|
|
|
+ update(arr)
|
|
|
});
|
|
|
- });
|
|
|
+ }
|
|
|
</script>
|
|
|
</body>
|
|
|
</html>
|