<!DOCTYPE html>
|
<html>
|
<head>
|
<meta charset="utf-8"/>
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
<title>工作台</title>
|
<link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
|
<link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
|
<style>
|
/** 应用快捷块样式 */
|
.console-app-group {
|
padding: 16px;
|
border-radius: 4px;
|
text-align: center;
|
background-color: #fff;
|
cursor: pointer;
|
display: block;
|
}
|
|
.console-app-group .console-app-icon {
|
width: 32px;
|
height: 32px;
|
line-height: 32px;
|
margin-bottom: 6px;
|
display: inline-block;
|
-webkit-box-sizing: border-box;
|
-moz-box-sizing: border-box;
|
box-sizing: border-box;
|
font-size: 32px;
|
color: #69c0ff;
|
}
|
|
.console-app-group:hover {
|
box-shadow: 0 0 15px rgba(0, 0, 0, .08);
|
}
|
|
/** //应用快捷块样式 */
|
|
/** 小组成员 */
|
.console-user-group {
|
position: relative;
|
padding: 10px 0 10px 40px;
|
}
|
|
.console-user-group .console-user-group-head {
|
width: 32px;
|
height: 32px;
|
position: absolute;
|
top: 50%;
|
left: 12px;
|
margin-top: -10px;
|
border-radius: 50%;
|
font-size: 18px;
|
font-weight: bolder;
|
}
|
|
.console-user-group .layui-badge {
|
position: absolute;
|
top: 50%;
|
right: 8px;
|
margin-top: -10px;
|
}
|
|
.console-user-group .console-user-group-name {
|
line-height: 1.2;
|
}
|
|
.console-user-group .console-user-group-desc {
|
color: #8c8c8c;
|
line-height: 1;
|
font-size: 12px;
|
margin-top: 5px;
|
}
|
|
/** 卡片轮播图样式 */
|
.admin-carousel .layui-carousel-ind {
|
position: absolute;
|
top: -41px;
|
text-align: right;
|
}
|
|
.admin-carousel .layui-carousel-ind ul {
|
background: 0 0;
|
}
|
|
.admin-carousel .layui-carousel-ind li {
|
background-color: #e2e2e2;
|
}
|
|
.admin-carousel .layui-carousel-ind li.layui-this {
|
background-color: #999;
|
}
|
|
/** 广告位轮播图 */
|
.admin-news .layui-carousel-ind {
|
height: 45px;
|
}
|
|
.admin-news a {
|
display: block;
|
line-height: 70px;
|
text-align: center;
|
}
|
|
/** 最新动态时间线 */
|
.layui-timeline-dynamic .layui-timeline-item {
|
padding-bottom: 0;
|
}
|
|
.layui-timeline-dynamic .layui-timeline-item:before {
|
top: 16px;
|
}
|
|
.layui-timeline-dynamic .layui-timeline-axis {
|
width: 9px;
|
height: 9px;
|
left: 1px;
|
top: 7px;
|
background-color: #cbd0db;
|
}
|
|
.layui-timeline-dynamic .layui-timeline-axis.active {
|
background-color: #0c64eb;
|
box-shadow: 0 0 0 2px rgba(12, 100, 235, .3);
|
}
|
|
.dynamic-card-body {
|
box-sizing: border-box;
|
overflow: hidden;
|
}
|
|
.dynamic-card-body:hover {
|
overflow-y: auto;
|
padding-right: 9px;
|
}
|
|
/** 优先级徽章 */
|
.layui-badge-priority {
|
padding: 2px;
|
border-radius: 20%;
|
width: 30px;
|
height: 30px;
|
line-height: 18px;
|
border-width: 2px;
|
font-weight: 600;
|
}
|
</style>
|
</head>
|
<body>
|
<!-- 正文开始 -->
|
<div class="layui-fluid ew-console-wrapper">
|
<!-- 卡片 -->
|
<div class="layui-row layui-col-space15">
|
<div class="layui-col-xs12 layui-col-sm6 layui-col-md3">
|
<div class="layui-card">
|
<div class="layui-card-header">
|
报文量<span class="layui-badge layui-badge-green pull-right">日</span>
|
</div>
|
<div class="layui-card-body">
|
<p class="lay-big-font" id="logQtyDay">0</p>
|
<p>总报文量<span class="pull-right"><span id="logQty">0</span></span></p>
|
</div>
|
</div>
|
</div>
|
<div class="layui-col-xs12 layui-col-sm6 layui-col-md3">
|
<div class="layui-card">
|
<div class="layui-card-header">
|
终端数量<span class="layui-badge layui-badge-blue pull-right">总</span>
|
</div>
|
<div class="layui-card-body">
|
<p class="lay-big-font"><span style="line-height: 1;" id="sensorQty">0</span></p>
|
<p>在线设备<span class="pull-right"><span id="sensorOnlineQty"></span> </span></p>
|
</div>
|
</div>
|
</div>
|
<div class="layui-col-xs12 layui-col-sm6 layui-col-md3">
|
<div class="layui-card">
|
<div class="layui-card-header">
|
指令下发量<span class="layui-badge layui-badge-red pull-right">月</span>
|
</div>
|
<div class="layui-card-body">
|
<p class="lay-big-font"><span id="commandQtyMonth">0</span></p>
|
<p>总下发量<span class="pull-right"><span id="commandQty">0</span></span></p>
|
</div>
|
</div>
|
</div>
|
<div class="layui-col-xs12 layui-col-sm6 layui-col-md3">
|
<div class="layui-card">
|
<div class="layui-card-header">
|
系统用户
|
<span class="icon-text pull-right" lay-tips="系统运行中......" lay-direction="4" lay-offset="5px,5px">
|
<i class="layui-icon layui-icon-loading-1 layui-anim layui-anim-rotate layui-anim-loop"></i>
|
</span>
|
</div>
|
<div class="layui-card-body">
|
<p class="lay-big-font"><span id="usersQty">0</span> <span style="font-size: 24px;line-height: 1;">位</span></p>
|
<p>操作次数<span class="pull-right"><span id="optQty">0</span> 次</span></p>
|
</div>
|
</div>
|
</div>
|
</div>
|
<!-- 快捷方式 -->
|
<div class="layui-row layui-col-space15">
|
<div class="layui-col-sm6" style="padding-bottom: 0;">
|
<div class="layui-row layui-col-space15">
|
<div class="layui-col-xs6 layui-col-sm3">
|
<a class="console-app-group" ew-href="sensor/sensor.html?resourceId=30529" lay-text="斑马线终端">
|
<i class="console-app-icon layui-icon layui-icon-align-center" style="color: #ff9c6e;"></i>
|
<div class="console-app-name">斑马线</div>
|
</a>
|
</div>
|
<div class="layui-col-xs6 layui-col-sm3">
|
<div class="console-app-group" ew-href="sensor2/sensor2.html?resourceId=30553" lay-text="井盖终端">
|
<i class="console-app-icon layui-icon layui-icon-circle" style="color: #95de64;"></i>
|
<div class="console-app-name">井盖</div>
|
</div>
|
</div>
|
<div class="layui-col-xs6 layui-col-sm3">
|
<div class="console-app-group" ew-href="sensor3/sensor3.html?resourceId=30556" lay-text="护栏终端">
|
<i class="console-app-icon layui-icon layui-icon-table" style="color: #5cdbd3;font-size: 30px;"></i>
|
<div class="console-app-name">护栏</div>
|
</div>
|
</div>
|
<div class="layui-col-xs6 layui-col-sm3">
|
<div class="console-app-group" ew-href="sensor4/sensor4.html?resourceId=30559" lay-text="消防终端">
|
<i class="console-app-icon layui-icon layui-icon-fire" style="color: #b37feb;font-size: 30px;"></i>
|
<div class="console-app-name">消防</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
<div class="layui-col-sm6" style="padding-bottom: 0;">
|
<div class="layui-row layui-col-space15">
|
<div class="layui-col-xs6 layui-col-sm3">
|
<div class="console-app-group" ew-href="sensor5/sensor5.html?resourceId=30562" lay-text="气体检测终端">
|
<i class="console-app-icon layui-icon layui-icon-transfer" style="color: #ffd666;font-size: 34px;"></i>
|
<div class="console-app-name">气体</div>
|
</div>
|
</div>
|
<!-- <div class="layui-col-xs6 layui-col-sm3">-->
|
<!-- <div class="console-app-group" lay-href="allo/allo.html?resourceId=20402" lay-text="货位信息">-->
|
<!-- <i class="console-app-icon layui-icon layui-icon-templeate-1" style="color: #5cdbd3;font-size: 36px;"></i>-->
|
<!-- <div class="console-app-name">货位</div>-->
|
<!-- </div>-->
|
<!-- </div>-->
|
<div class="layui-col-xs6 layui-col-sm3">
|
<div class="console-app-group" ew-href="alarmVal/alarmVal.html?resourceId=30644" lay-text="报警阈值">
|
<i class="console-app-icon layui-icon layui-icon-notice"
|
style="color: #ff85c0;font-size: 28px;"></i>
|
<div class="console-app-name">报警</div>
|
</div>
|
</div>
|
<div class="layui-col-xs6 layui-col-sm3">
|
<div class="console-app-group" ew-href="user/user.html?resourceId=4" lay-text="系统用户">
|
<i class="console-app-icon layui-icon layui-icon-group" style="font-size: 26px;padding-top: 3px;margin-right: 6px;"></i>
|
<div class="console-app-name">用户</div>
|
</div>
|
</div>
|
<div class="layui-col-xs6 layui-col-sm3">
|
<div class="console-app-group" ew-href="detail.html?resourceId=8" lay-text="基本资料">
|
<i class="console-app-icon layui-icon layui-icon-slider" style="color: #ffc069;"></i>
|
<div class="console-app-name">设置</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
<!-- 主体 -->
|
<div class="layui-row layui-col-space15">
|
<!-- 图表 -->
|
<!-- <div class="layui-col-md8 layui-col-sm6">-->
|
<!-- <div class="layui-card">-->
|
<!-- <div class="layui-card-body">-->
|
<!-- <div id="charts" style="width: 100%;height: 600px;"></div>-->
|
<!-- </div>-->
|
<!-- </div>-->
|
<!-- </div>-->
|
<!-- 地图 -->
|
<div class="layui-col-md8 layui-col-sm6">
|
<div class="layui-card">
|
<!-- <div class="layui-card-header">设备地图</div>-->
|
<div class="layui-card-body" style="position: relative">
|
<!-- 导航 -->
|
<div class="dropdown-menu dropdown-hover" style="position: absolute;top: 22px;left: 30px;z-index: 999">
|
<button id="map-selector-btn" class="layui-btn icon-btn layui-btn-primary">
|
地图监控 <i class="layui-icon layui-icon-drop"></i></button>
|
<ul class="dropdown-menu-nav">
|
<div class="dropdown-anchor"></div>
|
<li ew-href="sensor/loca.html?resourceId=30601"><a><i class="layui-icon layui-icon-align-center"></i>斑马线地图</a></li>
|
<li ew-href="sensor/loca.html?resourceId=30603"><a><i class="layui-icon layui-icon-circle"></i>井盖地图</a></li>
|
<li ew-href="sensor/loca.html?resourceId=30605"><a><i class="layui-icon layui-icon-table"></i>护栏地图</a></li>
|
<li ew-href="sensor/loca.html?resourceId=30607"><a><i class="layui-icon layui-icon-fire"></i>消防地图</a></li>
|
<li ew-href="sensor/loca.html?resourceId=30609"><a><i class="layui-icon layui-icon-transfer"></i>气体地图</a></li>
|
</ul>
|
</div>
|
<!-- 重置地图 -->
|
<button id="map-reset" class="layui-btn layui-btn-primary" style="position: absolute;top: 22px;right: 30px;z-index: 999;">
|
<i class="layui-icon layui-icon-refresh-1" style="font-weight: bolder"></i>
|
</button>
|
<!-- 地图 -->
|
<div id="map" style="width: 100%;height: 600px;"></div>
|
</div>
|
</div>
|
</div>
|
<!-- 介绍 -->
|
<div class="layui-col-md4 layui-col-sm6">
|
<div class="layui-card">
|
<div class="layui-card-header">版本信息</div>
|
<div class="layui-card-body">
|
<table class="layui-table layui-text">
|
<colgroup>
|
<col width="90">
|
<col>
|
</colgroup>
|
<tbody>
|
<tr>
|
<td>系统简称</td>
|
<td>中扬立库运维</td>
|
</tr>
|
<tr>
|
<td>版本号</td>
|
<td>Version 1.0.0</td>
|
</tr>
|
<tr>
|
<td>优点特色</td>
|
<td>易上手 / 操作效率高 / 数据及时 / 简约</td>
|
</tr>
|
<!-- <tr>-->
|
<!-- <td>制作方</td>-->
|
<!-- <td><a href="http://www.zoneyung.com" target="_blank">浙江中扬立库技术有限公司</a></td>-->
|
<!-- </tr>-->
|
</tbody>
|
</table>
|
</div>
|
</div>
|
<div class="layui-card">
|
<div class="layui-card-header">友情链接</div>
|
<div class="layui-card-body">
|
<div class="layui-carousel admin-carousel admin-news" id="workplaceNewsCarousel">
|
<div carousel-item>
|
<div>
|
<a id="toDataV" target="_blank"
|
style="cursor: pointer; color:#fff;background-color: #009fde;background-image: linear-gradient(to right,#009fde,#00beff);">
|
高德地图 - 坐标拾取系统</a>
|
</div>
|
</div>
|
|
</div>
|
</div>
|
</div>
|
<div class="layui-card">
|
<div class="layui-card-header">
|
设备报警
|
<button ew-href="alarm/alarm.html?resourceId=30612" lay-text="报警记录" class="layui-btn layui-btn-primary layui-btn-xs" style="float: right; margin: 11px 5px 0 0">
|
报警记录</button>
|
</div>
|
<div class="layui-card-body" id="warnList">
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
<!-- js部分 -->
|
<script src="https://webapi.amap.com/maps?v=2.0&key=24c671d7d8365d7eaff888498538452f&plugin=AMap.Scale,AMap.ToolBar"></script>
|
<script src="https://webapi.amap.com/loca?v=2.0.0&key=24c671d7d8365d7eaff888498538452f"></script>
|
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
|
<script type="text/javascript" src="../../static/js/echarts/echarts.min.js" charset="utf-8"></script>
|
<script type="text/javascript" src="../../static/js/echarts/echarts-gl.min.js" charset="utf-8"></script>
|
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
|
<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
|
<script type="text/javascript" src="../../static/js/common.js"></script>
|
<script>
|
// 图表
|
// var chartDom = document.getElementById('charts');
|
// var myChart = echarts.init(chartDom);
|
// var option;
|
// function getCharts() {
|
// $.ajax({
|
// url: baseUrl + "/views/home/charts.json",
|
// headers: {'token': localStorage.getItem('token')},
|
// method: 'GET',
|
// success: function (data) {
|
// var symbolSize = 3;
|
// option = {
|
// title: {
|
// left: 'center',
|
// text: 'Large Area Chart'
|
// },
|
// grid3D: {},
|
// xAxis3D: {
|
// type: 'category'
|
// },
|
// yAxis3D: {},
|
// zAxis3D: {},
|
// dataset: {
|
// dimensions: [
|
// 'Income',
|
// 'Life Expectancy',
|
// 'Population',
|
// 'Country',
|
// { name: 'Year', type: 'ordinal' }
|
// ],
|
// source: data
|
// },
|
// series: [
|
// {
|
// type: 'scatter3D',
|
// symbolSize: symbolSize,
|
// encode: {
|
// x: 'Country',
|
// y: 'Life Expectancy',
|
// z: 'Income',
|
// tooltip: [0, 1, 2, 3, 4]
|
// }
|
// }
|
// ]
|
// };
|
// myChart.setOption(option);
|
// }
|
// });
|
// }
|
// getCharts();
|
// option && myChart.setOption(option);
|
|
// 地图 -----------------------------------------------------------------
|
var map = new AMap.Map('map', {
|
zoom: 4.85,
|
pitch: 40,
|
viewMode: '3D',
|
center: [105.202202,32.699006],
|
// mapStyle: 'amap://styles/8108947b4fec714c52ef08aa183a2237',
|
// mapStyle: 'amap://styles/4fd4357cc9f7c46f0c227c9763f67a2d',
|
mapStyle: 'amap://styles/7f20373ddc5b2456e7095fce1dab4aba',
|
// mapStyle: 'amap://styles/dd57f58da78602dc3871efc29b2ba43d',
|
});
|
|
var loca = new Loca.Container({
|
map,
|
});
|
|
var geo;
|
var iconLayer = new Loca.IconLayer({
|
zIndex: 10,
|
opacity: 1,
|
});
|
function getMapData() {
|
$.ajax({
|
url: baseUrl + "/sensor/map/auth",
|
headers: {'token': localStorage.getItem('token')},
|
method: 'GET',
|
success: function (res) {
|
if (res.code === 200) {
|
geo = new Loca.GeoJSONSource({
|
data: res.data,
|
});
|
iconLayer.setSource(geo);
|
iconLayer.setStyle({
|
unit: 'px',
|
icon: (index, feature) => {
|
let data = feature.properties.rawData;
|
return trafficIcons[data.type % Object.keys(trafficIcons).length];
|
},
|
iconSize: [20,20],
|
rotation: 0,
|
})
|
loca.add(iconLayer);
|
} else if (res.code === 403) {
|
top.location.href = baseUrl + "/";
|
} else {
|
layer.msg(res.msg, {icon: 2})
|
}
|
}
|
})
|
}
|
getMapData();
|
|
|
// 拾取
|
map.on('click', (e) => {
|
const feat = iconLayer.queryFeature(e.pixel.toArray());
|
if (feat) {
|
map.setZoomAndCenter(19, new AMap.LngLat(feat.properties.rawData.lng, feat.properties.rawData.lat));
|
iconLayer.setStyle({
|
unit: 'px',
|
icon: (index, feature) => {
|
let data = feature.properties.rawData;
|
return trafficIcons[data.type % Object.keys(trafficIcons).length];
|
},
|
iconSize: (i, feature) => {
|
if (feature === feat) {
|
return [40, 40];
|
}
|
return [20, 20];
|
},
|
});
|
top.sensorByMap = feat.properties.rawData.sensorId;
|
layer.open({
|
type: 2
|
,id: 'LAY_adminPopupR'
|
,area: '700px'
|
// ,url: 'sensor_detl.html'
|
,anim: -1
|
,title: false
|
,closeBtn: false
|
,offset: 'r'
|
,shade: 0.1
|
,shadeClose: true
|
,window: 'top'
|
,skin: 'layui-anim layui-anim-rl layui-layer-adminRight0'
|
,content: '../sensor_detl.html'
|
});
|
}
|
});
|
|
// --------------------------------------
|
|
// https://www.highcharts.com.cn/demo/highcharts/3d-area-multiple
|
// https://echarts.apache.org/examples/zh/editor.html?c=scatter3D-dataset&gl=1&version=5.2.1
|
layui.config({
|
base: baseUrl + "/static/layui/lay/modules/"
|
}).extend({
|
dropdown: 'dropdown/dropdown'
|
}).use(['layer', 'carousel', 'element', 'admin', 'dropdown'], function () {
|
var element = layui.element;
|
var $ = layui.jquery;
|
var layer = layui.layer;
|
var carousel = layui.carousel;
|
var device = layui.device();
|
var admin = layui.admin;
|
|
// 数据中心
|
$('#toDataV').click(function () {
|
window.open("https://lbs.amap.com/tools/picker");
|
})
|
|
getHeaderData();
|
getBodyData();
|
|
setInterval(function () {
|
getHeaderData();
|
getBodyData();
|
}, 3000)
|
|
// 渲染轮播
|
carousel.render({
|
elem: '#workplaceNewsCarousel',
|
width: '100%',
|
height: '70px',
|
arrow: 'none',
|
autoplay: true,
|
trigger: device.ios || device.android ? 'click' : 'hover',
|
anim: 'fade'
|
});
|
|
// 头部
|
function getHeaderData() {
|
$.ajax({
|
url: baseUrl + "/console/header/auth",
|
headers: {'token': localStorage.getItem('token')},
|
method: 'GET',
|
success: function (res) {
|
if (res.code === 200) {
|
var result = res.data;
|
$('#logQtyDay').text(result.logQtyDay);
|
$('#logQty').text(result.logQty);
|
|
$('#sensorQty').text(result.sensorQty);
|
$('#sensorOnlineQty').text(result.sensorOnlineQty);
|
|
$('#commandQty').text(result.commandQty);
|
$('#commandQtyMonth').text(result.commandQtyMonth);
|
|
$('#usersQty').text(result.usersQty);
|
$('#deptQty').text(result.deptQty);
|
$('#optQty').text(result.optQty);
|
} else if (res.code === 403) {
|
top.location.href = baseUrl + "/";
|
} else {
|
layer.msg(res.msg, {icon: 2})
|
}
|
}
|
})
|
}
|
|
// 主体
|
function getBodyData() {
|
$.ajax({
|
url: baseUrl + "/console/body/auth",
|
headers: {'token': localStorage.getItem('token')},
|
method: 'GET',
|
success: function (res) {
|
if (res.code === 200) {
|
// 安全库存
|
var tpl = $('#safeQuaTpl').html();
|
var template = Handlebars.compile(tpl);
|
var html = template(res.data);
|
$('#warnList').html(html);
|
} else if (res.code === 403) {
|
top.location.href = baseUrl + "/";
|
} else {
|
layer.msg(res.msg, {icon: 2})
|
}
|
}
|
})
|
}
|
|
});
|
|
// 地图重置
|
document.getElementById("map-reset").addEventListener("click", function () {
|
map.setZoomAndCenter(4.85, new AMap.LngLat(105.202202, 32.699006));
|
map.setRotation(0);
|
map.setPitch(40);
|
iconLayer.setStyle({
|
unit: 'px',
|
icon: (index, feature) => {
|
let data = feature.properties.rawData;
|
return trafficIcons[data.type % Object.keys(trafficIcons).length];
|
},
|
iconSize: [20,20],
|
rotation: 0,
|
})
|
})
|
|
</script>
|
<script type="text/template" id="safeQuaTpl">
|
{{#each warnList}}
|
<div class="console-user-group">
|
<div class="console-user-group-head">{{no}}</div>
|
<div class="console-user-group-name">{{sensorType}}</div>
|
<div class="console-user-group-desc">{{UUID}}</div>
|
<span class="layui-badge layui-badge-red" style="letter-spacing: 1px">报警:{{msg}}</span>
|
</div>
|
{{/each}}
|
</script>
|
</body>
|
</html>
|