| | |
| | | <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> |
| | | <link rel="stylesheet" href="../static/css/jquery.upload.css" media="all"/> |
| | | <link rel="stylesheet" href="../../static/css/jquery.upload.css" media="all"/> |
| | | <style> |
| | | #formAdvForm { |
| | | background-color: #f3f3f3; |
| | |
| | | margin-bottom: 5px !important; |
| | | background: #c8d1dabd; |
| | | } |
| | | .sensor-label { |
| | | .issue-label { |
| | | display: inline-block; |
| | | float: left; |
| | | font-size: 16px; |
| | |
| | | float: left; |
| | | font-weight: bold; |
| | | text-shadow: 0 1px 0 rgb(0 0 0 / 20%); |
| | | padding: .3em .6em; |
| | | padding: .3em 1em; |
| | | font-size: 85%; |
| | | height: 30px; |
| | | line-height: 30px; |
| | |
| | | .online-fail { |
| | | background-color: #d9534f; |
| | | } |
| | | |
| | | </style> |
| | | <!-- 正文开始 --> |
| | | <form class="layui-form" id="formAdvForm" lay-filter="formAdvForm"> |
| | | <div class="layui-fluid" style="padding-bottom: 75px;"> |
| | | <!-- 定位 --> |
| | | <!-- <div class="layui-card">--> |
| | | <!-- <div class="layui-card-header">定位</div>--> |
| | | <!-- <div class="layui-card-body">--> |
| | | <!-- <div class="upload-box clear">--> |
| | | <!-- <div id="map" style="width: 100%; height: 200px"></div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- 图片 --> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-header">图片</div> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 视频 --> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-header">视频</div> |
| | | <div class="layui-card-body"> |
| | | <div class="upload-box clear"> |
| | | <div id="issueVideo"></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 基本信息 --> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-header">基本信息</div> |
| | | <div class="layui-card-body"> |
| | | |
| | | <div class="layui-form-item layui-row"> |
| | | <input name="id" type="hidden" /> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">设备编号:</label> |
| | | <label class="layui-form-label">故障编号:</label> |
| | | <div class="layui-input-block"> |
| | | <input name="uuid" placeholder="请输入设备编号" class="layui-input"/> |
| | | <input name="uuid" placeholder="未知" class="layui-input" disabled /> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">所属项目:</label> |
| | | <div class="layui-input-block"> |
| | | <input name="hostId$" placeholder="请输入所属项目" class="layui-input"/> |
| | | <input name="hostId$" placeholder="请输入所属项目" class="layui-input" disabled/> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">ccid:</label> |
| | | <label class="layui-form-label">故障类型:</label> |
| | | <div class="layui-input-block"> |
| | | <input name="sim" placeholder="请输入sim卡号" class="layui-input"/> |
| | | <input name="issueType$" placeholder="未知" class="layui-input" disabled /> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">系统状态:</label> |
| | | <label class="layui-form-label">巡检人员:</label> |
| | | <div class="layui-input-block"> |
| | | <select name="status"> |
| | | <option value="1">启用</option> |
| | | <option value="0">禁用</option> |
| | | <input name="discoverer" placeholder="未知" class="layui-input" disabled /> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">联系方式:</label> |
| | | <div class="layui-input-block"> |
| | | <input name="tel" placeholder="未知" class="layui-input" disabled /> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">发生日期:</label> |
| | | <div class="layui-input-block"> |
| | | <input name="startTime$" placeholder="请选择时间" class="layui-input icon-date" autocomplete="off" disabled/> |
| | | </div> |
| | | </div> |
| | | <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;"> |
| | | <legend style="font-size: 13px">请补充</legend> |
| | | </fieldset> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">解决人员:</label> |
| | | <div class="layui-input-block"> |
| | | <input name="dealer" placeholder="请输入..." class="layui-input" /> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="layui-inline layui-col-md4">--> |
| | | <!-- <label class="layui-form-label">更新日期:</label>--> |
| | | <!-- <div class="layui-input-block">--> |
| | | <!-- <input id="lastTime" name="lastTime$" placeholder="请选择时间" class="layui-input icon-date" autocomplete="off"/>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">流程:</label> |
| | | <div class="layui-input-block"> |
| | | <select name="settle"> |
| | | <option value="2">提交</option> |
| | | <option value="3">已读</option> |
| | | <option value="4">作业</option> |
| | | <option value="5">完成</option> |
| | | <option value="6">取消</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">添加时间:</label> |
| | | <label class="layui-form-label">处理日期:</label> |
| | | <div class="layui-input-block"> |
| | | <input id="formAdvDateSel1" name="createTime$" placeholder="请选择日期" |
| | | class="layui-input icon-date" autocomplete="off"/> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label ">添加人员:</label> |
| | | <div class="layui-input-block"> |
| | | <input name="createBy$" placeholder="请输入添加人员" class="layui-input"/> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md12"> |
| | | <label class="layui-form-label ">地理位置:</label> |
| | | <div class="layui-input-block"> |
| | | <input name="locationMore" placeholder="未知" class="layui-input" disabled/> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md12"> |
| | | <label class="layui-form-label ">具体描述:</label> |
| | | <div class="layui-input-block"> |
| | | <input name="desc" placeholder="暂无" class="layui-input"/> |
| | | <input id="endTime" name="endTime$" placeholder="请选择时间" class="layui-input icon-date" autocomplete="off"/> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | <!-- 设备参数 --> |
| | | <!-- 巡检明细 --> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-header">设备参数</div> |
| | | <div class="layui-card-header">巡检明细</div> |
| | | <div class="layui-card-body"> |
| | | |
| | | <div class="layui-form-item layui-row"> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">主题-topic:</label> |
| | | <div class="layui-inline layui-col-md12"> |
| | | <label class="layui-form-label">问题概述:</label> |
| | | <div class="layui-input-block"> |
| | | <input name="topic" placeholder="请输入主题" class="layui-input"/> |
| | | <textarea name="title" placeholder="未知" class="layui-textarea" disabled></textarea> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">地址-ip:</label> |
| | | <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;"> |
| | | <legend style="font-size: 13px">请补充</legend> |
| | | </fieldset> |
| | | <div class="layui-inline layui-col-md12"> |
| | | <label class="layui-form-label">故障原因:</label> |
| | | <div class="layui-input-block"> |
| | | <input name="ip" placeholder="请输入ip地址" class="layui-input"/> |
| | | <textarea name="reason" placeholder="请输入..." class="layui-textarea"></textarea> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">端口-port:</label> |
| | | <div class="layui-inline layui-col-md12"> |
| | | <label class="layui-form-label">解决办法:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="number" name="port" placeholder="请输入端口" class="layui-input" |
| | | lay-verType="tips" lay-verify="number" required/> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">信号值:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="number" name="signal" placeholder="请输入信号值" class="layui-input" |
| | | lay-verType="tips" lay-verify="number" required/> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">电池电量:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="number" name="battery" placeholder="请输入电量" class="layui-input" |
| | | lay-verType="tips" lay-verify="number" required/> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">环境温度-℃:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="number" name="tempe" placeholder="请输入温度" class="layui-input" |
| | | lay-verType="tips" lay-verify="number" required/> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">充电状态:</label> |
| | | <div class="layui-input-block"> |
| | | <select name="charge"> |
| | | <option value="1">充电中</option> |
| | | <option value="0">不在充电</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">倾斜角度-°:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="number" name="tiltZ" placeholder="倾斜角度" class="layui-input" |
| | | lay-verType="tips" lay-verify="number" required/> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">破损状态:</label> |
| | | <div class="layui-input-block"> |
| | | <select name="worn"> |
| | | <option value="1">已破损</option> |
| | | <option value="0">未破损</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">水位情况:</label> |
| | | <div class="layui-input-block"> |
| | | <select name="overflow"> |
| | | <option value="0">水位正常</option> |
| | | <option value="1">水位超标</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">光伏功能:</label> |
| | | <div class="layui-input-block"> |
| | | <select name="agc"> |
| | | <option value="1">有</option> |
| | | <option value="0">没有</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">形状:</label> |
| | | <div class="layui-input-block"> |
| | | <select name="shape"> |
| | | <option value="1">圆形</option> |
| | | <option value="2">长方形</option> |
| | | <option value="3">正方形</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline layui-col-md4"> |
| | | <label class="layui-form-label">尺寸:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="number" name="size" placeholder="请输入尺寸" class="layui-input"/> |
| | | <textarea name="deal" placeholder="请输入..." class="layui-textarea"></textarea> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 报文日志 --> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-header">报文日志</div> |
| | | <div class="layui-card-body"> |
| | | <table id="sensorLogTable" lay-filter="sensorLogTable"></table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div> |
| | | <span class="online-info">在线,可以进行远程操作</span> |
| | | <div class="cool-divider"></div> |
| | | <span class="sensor-label"></span> |
| | | <span class="issue-label"></span> |
| | | </div> |
| | | <button class="layui-btn" lay-filter="refresh" lay-submit><i class="layui-icon"></i> 刷新 </button> |
| | | <button class="layui-btn layui-btn-normal" lay-filter="save" lay-submit><i class="layui-icon"></i> 保存 </button> |
| | | </div> |
| | | |
| | | </form> |
| | | <!--<script type="text/javascript" src="../static/js/tools/jquery.upload.min.js" charset="utf-8"></script>--> |
| | | <script type="text/javascript" src="../static/js/upload/jquery.upload.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/upload/jquery.upload.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=24c671d7d8365d7eaff888498538452f"></script> |
| | | <script> |
| | | var map; |
| | | var issueId = top.issueByDetl; |
| | | $('.layui-layer-close').hide(); |
| | | layui.config({ |
| | | base: baseUrl + "/static/layui/lay/modules/" |
| | | }).extend({ |
| | | notice: 'notice/notice', |
| | | }).use(['form', 'table', 'laydate', 'notice'], function () { |
| | | }).use(['form', 'table', 'laydate', 'notice', 'Player'], function () { |
| | | var $ = layui.jquery; |
| | | var form = layui.form; |
| | | var table = layui.table; |
| | | var laydate = layui.laydate; |
| | | var notice = layui.notice; |
| | | var Player = layui.Player; |
| | | |
| | | form.render('select'); |
| | | |
| | |
| | | success: function (res) { |
| | | notice.destroy(); |
| | | if (res.code === 200) { |
| | | var issue = res.data; |
| | | top.sensorByDetl = null; |
| | | // 地图 |
| | | // map = new AMap.Map('map', { |
| | | // resizeEnable: true, |
| | | // zoom: 13, |
| | | // center: [sensor.lon, sensor.lat] |
| | | // }); |
| | | // marker = new AMap.Marker({ |
| | | // icon: "https://dz-admin.oss-cn-hangzhou.aliyuncs.com/other/marker.png", |
| | | // position:[sensor.lon, sensor.lat] |
| | | // }); |
| | | // marker.setMap(map); |
| | | // 设备唯一码 |
| | | $('.sensor-label').text(issue.uuid); |
| | | let issue = res.data; |
| | | top.issueByDetl = null; |
| | | // 编码 |
| | | $('.issue-label').text(issue.uuid); |
| | | // 设备明细 |
| | | form.val('formAdvForm', issue); |
| | | // 日志表格 |
| | | initLogTable(issue.id); |
| | | // 图片 |
| | | initImgs(sensor.id, issue.imgArr); |
| | | // 在线情况 |
| | | $('.online-info').attr("class", sensor.online?"online-info online-success":"online-info online-fail"); |
| | | $('.online-info').text(sensor.online?"在线,可以进行远程操作":"离线,不能进行远程操作"); |
| | | initImgs(issue.id, issue.imgArr); |
| | | // 视频 |
| | | if (!isEmpty(issue.videoArr) && issue.videoArr.length > 0) { |
| | | initVideo(issue.videoArr); |
| | | } |
| | | $('.online-info').attr("class", issue.online?"online-info online-success":"online-info online-fail"); |
| | | $('.online-info').text(issue.settle$); |
| | | layDateRender(); |
| | | } else if (res.code === 403) { |
| | | top.location.href = baseUrl + "/"; |
| | | } else { |
| | |
| | | }) |
| | | } |
| | | |
| | | /* 渲染表格 */ |
| | | var LogTb; |
| | | function initLogTable(sensorId){ |
| | | if (sensorId == null) { |
| | | return false; |
| | | } |
| | | if (typeof LogTb === "undefined") { |
| | | LogTb = table.render({ |
| | | elem: '#sensorLogTable', |
| | | headers: {token: localStorage.getItem('token')}, |
| | | url: baseUrl+'/sensorLog/list/auth', |
| | | where: {sensor_id: sensorId}, |
| | | page: true, |
| | | limit: 10, |
| | | limits: [10, 30, 50, 100, 200, 500], |
| | | cols: [[ |
| | | {type: 'numbers', title: '#'} |
| | | // ,{field: 'id', align: 'center',title: 'ID'} |
| | | // ,{field: 'hostId$', align: 'center',title: '授权商户', templet: '#hostTpl', width: 140} |
| | | // ,{field: 'sensorId$', align: 'center',title: '设备编号'} |
| | | // ,{field: 'senserType$', align: 'center',title: '设备类型'} |
| | | ,{field: 'data', align: 'center',title: '报文'} |
| | | ,{field: 'createTime$', align: 'center',title: '时间', minWidth: 200, width: 200} |
| | | // ,{field: 'memo', align: 'center',title: '备注'} |
| | | ]], |
| | | request: { |
| | | pageName: 'curr', |
| | | pageSize: 'limit' |
| | | }, |
| | | parseData: function (res) { |
| | | return { |
| | | 'code': res.code, |
| | | 'msg': res.msg, |
| | | 'count': res.data.total, |
| | | 'data': res.data.records |
| | | } |
| | | }, |
| | | response: { |
| | | statusCode: 200 |
| | | }, |
| | | done: function(res, curr, count) { |
| | | $('#sensorLogTable').next().find('.layui-table-body').find("table" ).find("tbody").children("tr").on('dblclick', function(){ |
| | | var id = JSON.stringify($('#sensorLogTable').next().find('.layui-table-body').find("table").find("tbody").find(".layui-table-hover").data('index')); |
| | | layer.open({ |
| | | type: 1, |
| | | shade: false, |
| | | area: '500px', |
| | | title: false, |
| | | content: "<div style='color: #ffffff;font-size: 18px;overflow: hidden;" + |
| | | "background-color: #5FB878;padding: 15px 10px;word-break:break-all;'>" + res.data[id].data + "</div>" |
| | | }); |
| | | }) |
| | | } |
| | | }); |
| | | } else { |
| | | LogTb.reload(); |
| | | } |
| | | } |
| | | |
| | | /* 渲染图片 */ |
| | | function initImgs(sensorId, imgArr) { |
| | |
| | | // https://gitee.com/gouguoyin/ajax-image-upload?_from=gitee_search#http://www.gouguoyin.cn/ajax-image-upload |
| | | $(".image-box").ajaxImageUpload({ |
| | | fileInput : 'file', |
| | | postUrl : baseUrl + '/sensor/upload.action', //上传的服务器地址 |
| | | postUrl : baseUrl + '/issue/upload.action', //上传的服务器地址 |
| | | width : 180, |
| | | height : 180, |
| | | imageUrl: imgArr, |
| | | postData : { sensorId: sensorId }, |
| | | postData : { issueId: issueId }, |
| | | maxNum: 5, //允许上传图片数量 |
| | | allowZoom : true, //允许放大 |
| | | maxSize : 3, //允许上传图片的最大尺寸,单位M |
| | |
| | | }, |
| | | delete : function (src) { |
| | | $.ajax({ |
| | | url: baseUrl + "/sensor/remove.action", |
| | | url: baseUrl + "/issue/remove.action", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | method: 'POST', |
| | | data: { |
| | | sensorId: sensorId, |
| | | issueId: issueId, |
| | | src: src |
| | | }, |
| | | // async: false, |
| | |
| | | }); |
| | | } |
| | | |
| | | /* 渲染视频 */ |
| | | function initVideo(videoSrc) { |
| | | new Player({ |
| | | id: 'issueVideo', |
| | | url: videoSrc[0], // 视频地址 |
| | | // poster: 'https://imgcache.qq.com/open_proj/proj_qcloud_v2/gateway/solution/general-video/css/img/scene/1.png', // 封面 |
| | | fluid: true, // 宽度100% |
| | | playbackRate: [0.5, 1, 1.5, 2], // 开启倍速播放 |
| | | pip: false, // 开启画中画 |
| | | lang: 'zh-cn', |
| | | success: function () { |
| | | } |
| | | }); |
| | | $('#issueVideo').css("width", "30%").css("padding-top", "20%"); |
| | | } |
| | | |
| | | /* 渲染laydate */ |
| | | laydate.render({ |
| | | elem: '#createTime\\$', |
| | | type: 'datetime' |
| | | }); |
| | | function layDateRender() { |
| | | laydate.render({ |
| | | elem: '#endTime', |
| | | type: 'datetime' |
| | | }); |
| | | |
| | | laydate.render({ |
| | | elem: '#lastTime', |
| | | type: 'datetime' |
| | | }); |
| | | } |
| | | layDateRender(); |
| | | |
| | | |
| | | /* 监听表单提交 */ |
| | | form.on('submit(refresh)', function (data) { |
| | | init(); |
| | | return false; |
| | | }); |
| | | form.on('submit(save)', function (elem) { |
| | | let data = elem.field; |
| | | notice.msg('正在拼命修改数据......', {icon: 4, position: "topRight"}); |
| | | $.ajax({ |
| | | url: baseUrl + "/issue/process/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | contentType: 'application/json;charset=UTF-8', |
| | | method: 'POST', |
| | | data: JSON.stringify({ |
| | | id: Number(data.id), |
| | | uuid: data.uuid, |
| | | dealer: data.dealer, |
| | | settle: Number(data.settle), |
| | | endTime: top.strToDate(data.endTime$), |
| | | // lastTime: data.lastTime, |
| | | reason: data.reason, |
| | | deal: data.deal, |
| | | }), |
| | | success: function (res) { |
| | | notice.destroy(); |
| | | if (res.code === 200) { |
| | | notice.success({title: '消息通知', message: res.msg}); |
| | | $('.layui-layer-close').click(); |
| | | } else if (res.code === 403) { |
| | | top.location.href = baseUrl + "/"; |
| | | } else { |
| | | notice.error({title: '消息通知', message: res.msg}); |
| | | } |
| | | } |
| | | }) |
| | | return false; |
| | | }); |
| | | |
| | | }); |
| | | </script> |