ming 4 лет назад
Сommit
dd3c659b9c
100 измененных файлов с 13605 добавлено и 0 удалено
  1. 213 0
      api/request.js
  2. 394 0
      auth-manage.html
  3. 292 0
      building-manage.html
  4. 244 0
      buildingFloor-manage.html
  5. 227 0
      buildingRoom-manage.html
  6. 858 0
      css/common.css
  7. 308 0
      css/index.css
  8. 502 0
      css/per-manage.css
  9. 118 0
      data/pie.json
  10. 284 0
      deviceCheck-channel.html
  11. 398 0
      deviceCheck.html
  12. 330 0
      deviceCommunicate.html
  13. 408 0
      deviceList.html
  14. 233 0
      deviceType.html
  15. 308 0
      eventDanger-manage.html
  16. 291 0
      eventEvent-manage.html
  17. 304 0
      eventWarning-manage.html
  18. BIN
      favicon.ico
  19. BIN
      font/DS-DIGIT.TTF
  20. 3 0
      font/iconfont/iconfont.css
  21. BIN
      font/iconfont/iconfont/iconfont.eot
  22. 28 0
      font/iconfont/iconfont/iconfont.svg
  23. BIN
      font/iconfont/iconfont/iconfont.ttf
  24. BIN
      font/iconfont/iconfont/iconfont.woff
  25. BIN
      images/accept.png
  26. BIN
      images/bg.jpg
  27. BIN
      images/bg.png
  28. BIN
      images/big-bg.png
  29. BIN
      images/big-bg.png.jpg
  30. BIN
      images/cancel.png
  31. BIN
      images/checked.gif
  32. BIN
      images/event-icon1.png
  33. BIN
      images/event-icon2.png
  34. BIN
      images/event-icon3.png
  35. BIN
      images/event-icon4.png
  36. BIN
      images/favicon.ico
  37. BIN
      images/footer-bg.png
  38. BIN
      images/head_bg.png
  39. BIN
      images/jt.png
  40. BIN
      images/lbx.png
  41. BIN
      images/line(1).png
  42. BIN
      images/line-bg.png
  43. BIN
      images/list-on.png
  44. BIN
      images/list.png
  45. BIN
      images/loading.gif
  46. 0 0
      images/loading.svg
  47. BIN
      images/login.png
  48. BIN
      images/loginSelected.png
  49. BIN
      images/logo-img.png
  50. BIN
      images/map.png
  51. BIN
      images/no-bg.png
  52. BIN
      images/page-first-disabled.gif
  53. BIN
      images/page-first.gif
  54. BIN
      images/page-last-disabled.gif
  55. BIN
      images/page-last.gif
  56. BIN
      images/page-next-disabled.gif
  57. BIN
      images/page-next.gif
  58. BIN
      images/page-prev-disabled (1).gif
  59. BIN
      images/page-prev-disabled.gif
  60. BIN
      images/page-prev.gif
  61. BIN
      images/pie-bar-bg.png
  62. 1 0
      images/preloader.svg
  63. BIN
      images/refresh.gif
  64. BIN
      images/right-bottom-bg.png
  65. BIN
      images/right-top-bg.png
  66. BIN
      images/store.png
  67. BIN
      images/timg.gif
  68. BIN
      images/tool-sprites.gif
  69. BIN
      images/trigger.gif
  70. BIN
      images/unchecked.gif
  71. BIN
      images/weather.png
  72. 182 0
      index.html
  73. 283 0
      js/auth-manage.js
  74. 275 0
      js/building-manage.js
  75. 251 0
      js/buildingFloor-manage.js
  76. 279 0
      js/buildingRoom-manage.js
  77. 595 0
      js/device-check.js
  78. 341 0
      js/device-communicate.js
  79. 476 0
      js/device-list.js
  80. 281 0
      js/device-type.js
  81. 301 0
      js/deviceCheck-channel.js
  82. 21 0
      js/echarts.min.js
  83. 272 0
      js/event-manage.js
  84. 240 0
      js/eventDanger-manage.js
  85. 245 0
      js/eventWarning-manage.js
  86. 43 0
      js/flexible.js
  87. 589 0
      js/index.js
  88. 1 0
      js/jquery.js
  89. 56 0
      js/main.js
  90. 280 0
      js/md5.js
  91. 230 0
      js/organization-department.js
  92. 341 0
      js/organization.js
  93. 634 0
      js/per-manage.js
  94. 431 0
      js/property.js
  95. 164 0
      js/security.js
  96. 332 0
      js/system-inform.js
  97. 24 0
      js/upload.js
  98. 469 0
      js/userAccount.js
  99. 167 0
      js/userLog.js
  100. 58 0
      js/util.js

+ 213 - 0
api/request.js

@@ -0,0 +1,213 @@
+//动态获取url
+//const BASEURL = getRequestPrefix();
+
+// 动态获取用户名密码
+// const LOGIN_NAME = sessionStorage.getItem('V_LOGINNAME');
+// const LOGIN_PASSWORD = sessionStorage.getItem('V_PASSWORD');
+
+
+//服务端url
+// const BASEURL = "http://101.133.214.75:8080/Device_Manager/";
+
+//本地调试url
+// const BASEURL = "http://127.0.0.1:8080/Device_Manager/";
+
+//最新测试url
+const BASEURL = "http://121.40.217.77:8080/Device_Manager/";
+
+//用户名、密码 
+const LOGIN_NAME = "admin";
+const LOGIN_PASSWORD = "e10adc3949ba59abbe56e057f20f883e";
+
+
+
+const UPLOAD_FILE = 'sys/uploadSysIcon'; //logo上传
+
+
+
+const COMPANY_LIST_ORG = "companyManagement/queryCompanyList"; //单位查询(组织机构)
+const COMPANY_ADD = "companyManagement/addCompany"; //单位新增(组织机构)
+const COMPANY_UPDATE = "companyManagement/updateCompany"; //单位更新(组织机构)
+const COMPANY_DELETE = "companyManagement/delCompany"; //单位删除(组织机构)
+
+const DEPARTMENT_LIST = "companyManagement/queryDepartment"; //部门查询(组织机构)
+const DEPARTMENT_ADD = "companyManagement/addDepartment"; //部门新增(组织机构)
+const DEPARTMENT_UPDATE = "companyManagement/updateDepartment"; //部门更新(组织机构)
+const DEPARTMENT_DELETE = "companyManagement/delDepartment"; //部门删除(组织机构)
+
+
+const COMPANY_LIST = "companyManagement/queryCompany"; //公司列表
+const USER_LIT = "user/queryUser"; //用户列表
+const USER_ROLE = "user/queryRole"; //角色查询
+const USER_ADD = "user/addUser"; //增加用户
+const USER_UPDATE = "user/updateUser"; //修改用户
+const USER_DELETE = "user/delUser"; //删除用户
+const USER_EXPORT = "user/exeportUser"; //用户导出
+
+
+const MENU_LIST = "menu/queryMenu"; //菜单查询
+const MENU_ADD = "menu/addMenu"; //菜单新增
+const MENU_UPDATE = "menu/updateMenu"; //菜单编辑          
+const ROLE_AUTH_UPDATA = "user/updateRoleMenu"; //角色权限编辑
+
+
+
+const SECURITY_LIST = "user/querySecurityMechanism"; //安全机制列表
+const SECURITY_UPDATE = "user/updateSecurityMechanism"; //安全机制更新
+
+const UNIT_LIST = "sys/querySys"; //系统信息查询
+const SYSTEM_ADD = "sys/addSys"; //系统信息新增
+const SYSTEM_UPDATE = "sys/updateSys"; //系统信息更新  
+
+
+const BUILDING_LIST = 'building/queryBuilds' //建筑管理列表查询  
+const BUILDING_MANAGE_ADD = "building/addBuild"; //建筑管理新增 
+const BUILD_MANAGE_UPDATE = "building/updateBuild"; //建筑信息更新  
+const BUILD_MANAGE_DELETE = "building/delBuild"; //建筑删除  
+
+
+const BUILDING_FLOOR_LIST = 'building/queryFloor' //楼层管理列表查询  
+const BUILDING_FLOOR_ADD = "building/addFloor"; //楼层管理新增 
+const BUILD_FLOOR_UPDATE = "building/updateFloor"; //楼层信息更新 
+const BUILD_FLOOR_DELETE = "building/delFloor"; //楼层删除 
+
+const BUILDING_ROOM_LIST = 'building/queryRoom' //房间管理列表查询  
+const BUILDING_ROMM_ADD = "building/addRoom"; //房间管理新增 
+const BUILD_ROOM_UPDATE = "building/updateRoom"; //房间信息更新 
+const BUILD_ROOM_DELETE = "building/delRoom"; //房间删除 
+
+
+const PROPERTY_LIST = 'facility/queryFacility' //资产管理列表查询  
+const PROPERTY_ADD = "facility/addFacility"; //资产管理新增 
+const PROPERTY_UPDATE = "facility/updateFacility"; //资产更新 
+const PROPERTY_DELETE = "facility/delFacility"; //资产删除 
+const PROPERTY_EXPORT = "facility/downloadFacilityExcl"; //资产导出 
+const FACILITY_TYPE_LIST = 'facility/queryFacilityType' //类别查询  
+
+
+
+
+const INDEX_LIST = 'iot/alarm/view/getFirstCount' //首页数据查询
+
+
+const DEVICE_TYPE_COMPANYLIST = 'iot/dropdownbox/getNameList' //单位下拉框(设备管理模块)
+
+
+const DEVICE_LIST_SEARCH = 'device/queryDeviceList' //设备列表查询
+const DEVICE_LIST_ADD = "device/deviceRegister"; //设备列表新增  (本地设备注册)
+const DEVICE_LIST_UPDATE = "device/deviceUpdate"; //设备列表修改   
+const DEVICE_LIST_DELETE = "device/delDevice"; //设备列表删除
+
+
+
+const DEVICE_TYPE_LIST = 'iot/devicetype/getDeviceTypeList' //设备类型查询
+const TYPE_LIST = "iot/devicetype/getDeviceTypeList1"; //设备类型下拉
+
+const DEVICE_TYPE_ADD = "iot/devicetype/appendDeviceType"; //设备类型新增
+const DEVICE_TYPE_UPDATE = "iot/devicetype/updateDeviceType"; //设备类型修改
+const DEVICE_TYPE_DELETE = "iot/devicetype/deleteDeviceType"; //设备类型删除
+
+const DEVICE_COMMUNICATE_LIST = 'iot/interface/getInterfaceList' //通信列表查询
+const DEVICE_COMMUNICATE_ADD = "iot/interface/appentInterface"; //通信新增
+const DEVICE_COMMUNICATE_UPDATE = "iot/interface/updateInterface"; //通信修改
+const DEVICE_COMMUNICATE_DELETE = "iot/interface/delInterface"; //通信删除
+
+const DEVICE_CHECK_LIST = 'iot/monitorobject/getMonitorObjectsList' //监测对象列表查询
+const DEVICE_CHECK_ADD = "iot/monitorobject/appendMonitorObjects"; //监测对象新增
+const DEVICE_CHECK_UPDATE = "iot/monitorobject/updateMonitorObjects"; //监测对象修改
+const DEVICE_CHECK_DELETE = "iot/monitorobject/deleteMonitorObjects"; //监测对象删除
+
+const BUILD_TREE_LIST = "building/queryBuild"; //建筑 楼层 房间 树结构
+const DEVICE_CHECK_DEVICE_LIST = "device/queryDeviceList"; //检测对象新增设备列表查询
+
+
+const DEVICE_CHECKCHANNEL_LIST = 'iot/device_object_passageway/getDeviceObjectPassagewayList' //设备检测对象通道表列表查询
+const DEVICE_CHECKCHANNEL_ADD = "iot/device_object_passageway/appendDeviceObjectPassageway"; //设备检测对象通道表新增
+const DEVICE_CHECKCHANNEL_UPDATE = "iot/device_object_passageway/updateDeviceObjectPassageway"; //设备检测对象通道表修改
+const DEVICE_CHECKCHANNEL_DELETE = "iot/device_object_passageway/deleteDeviceObjectPassageway"; //设备检测对象通道表删除
+
+const WORK_MANAGE_LIST = 'iot/work_order/getWorkOrderList' //工单管理列表查询
+const WORK_MANAGE_ADD = "iot/work_order/appendWorkOrder"; //工单管理新增
+const WORK_MANAGE_HANDLE = "iot/work_order/updateWorkOrder"; //工单管理处置
+
+const EVENT_MANAGE_LIST = 'iot/event_manage/getEventManageList' //事件管理列表查询
+const EVENT_MANAGE_ADD = "iot/event_manage/appendEventManage"; //事件管理新增
+const EVENT_MANAGE_HANDLE = "iot/event_manage/updateEventManage"; //事件管理处置
+
+const EVENT_DANGER_MANAGE_LIST = 'iot/alarm/view/getYHList1' //隐患管理列表查询
+const EVENT_DANGER_MANAGE_HANDLE = "iot/alarm/view/updateYh1"; //隐患管理处置
+
+const EVENT_WARNING_MANAGE_LIST = 'iot/alarm/view/getGJList1' //告警管理列表查询
+const EVENT_WARNING_MANAGE_HANDLE = "iot/alarm/view/updateGJ1"; //告警管理处置
+
+const LOG_MANAGE_LIST = 'iot/log/getLogList' //日志管理列表查询  
+const LOG_EXPORT = 'iot/log/getLogListExecl' //日志导出
+
+function ajaxRequest(path, method, data, success, error, type = 1) {
+
+    let url = path;
+
+    if (url.indexOf("http") == -1) {
+        url = BASEURL + path;
+    }
+
+    let loginUser = {
+        "V_LOGINNAME": LOGIN_NAME,
+        "V_PASSWORD": LOGIN_PASSWORD,
+    }
+
+    if (type == 1) {
+        data.queryJson = JSON.stringify(loginUser);
+    } else {
+
+        let paramJson = {};
+
+        for (key in loginUser) {
+            paramJson[key] = loginUser[key];
+        }
+
+        for (key in data) {
+            paramJson[key] = data[key];
+        }
+
+        data = {}
+        data.queryJson = JSON.stringify(paramJson);
+    }
+
+
+    $.ajax({
+        async: false, //同步
+        data: data,
+        url: url,
+        type: method, //请求方式 post get delete put
+        dataType: "json",
+        beforeSend: function(XMLHttpRequest) {
+            // $("#loading").html("<img src='images/loading.gif' />")
+            // handlePreloader();
+            // $(".loadingdata").append('<div class="preloader"></div>');
+
+        },
+        success: success,
+        error: error
+    });
+
+}
+
+
+function getUrl() {
+    return window.location.protocol + '//' + window.location.host
+}
+
+function getRequestPrefix() {
+    // 获取网络协议
+    var protocol = window.location.protocol;
+    // 获取主机名+端口号
+    var domainPort = window.location.host;
+    // 获取发布项目的名称
+    // 获取路径
+    var url = window.location.pathname;
+    var webApp = url.split('/')[1];
+    // http://127.0.0.1/demo
+    var urlPrefix = protocol + "//" + domainPort + "/" + webApp + "/";
+    return urlPrefix;
+}

+ 394 - 0
auth-manage.html

@@ -0,0 +1,394 @@
+<!DOCTYPE html>
+<html lang="zh">
+
+<head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>权限管理</title>
+    <link rel="shortcut icon" href="favicon.ico">
+    <link rel="stylesheet" href="layui/css/layui.css" />
+    <link rel="stylesheet" href="css/common.css" />
+    <link rel="stylesheet" href="css/per-manage.css" />
+    <script src="js/flexible.js"></script>
+</head>
+
+<body style="background-image:url(images/big-bg.png)">
+    <section class="mainbox ">
+        <div class="tit-box flex">
+            <h2 class="title flex2">系统管理
+
+            </h2>
+            <h2 class="title flex10">详细列表</h2>
+        </div>
+
+        <div class="content-box flex">
+
+            <div class="column column1 flex2">
+
+                <ul>
+                    <li><a href="per-manage.html">人员管理</a></li>
+                    <li class="selected"><a href="auth-manage.html">权限管理</a></li>
+                    <li><a href="organization.html">组织/机构</a></li>
+                    <li><a href="security.html">安全机制</a></li>
+                    <li><a href="system-inform.html">系统信息</a></li>
+                </ul>
+            </div>
+
+            <div class="column column2 flex2">
+
+                <div class="departlist-box">
+                    <div class="departtit">角色列表</div>
+                    <!-- <ul class="depart-opera">
+                        <li><a class="button add">新增</a></li>
+                        <li><a class="button" >编辑</a></li>
+                        <li><a class="button">删除</a></li>
+                    </ul> -->
+                    <div class="tree well">
+                        <ul id="roleTree">
+                            <li>
+                                <span class="maintree">
+                                    <img src="images/login.png" alt="">
+                                    超级管理员
+                                </span>
+                                <!-- <ul class="child-two">
+                                    <li>
+                                        <span><img src="images/login.png" alt=""> 永天集团</span>
+                                        <ul class="child-three">
+                                            <li>
+                                                <span><img src="images/login.png" alt="">
+                                                    物联网事业部 (1人)</span>
+                                            </li>
+                                            <li>
+                                                <span><img src="images/login.png" alt="">
+                                                    人事部 (1人)</span>
+                                            </li>
+                                            <li>
+                                                <span><img src="images/login.png" alt="">
+                                                    财务部 (3人)</span>
+                                            </li>
+                                </ul> -->
+                            </li>
+                            <li>
+                                <span class="maintree">
+                                    <img src="images/login.png" alt="">
+                                    普通用户
+                                </span>
+                            </li>
+                        </ul>
+                    </div>
+                </div>
+            </div>
+
+            <div class="column3 flex8">
+
+
+                <div class="memberbox">
+                    <div class="membertit">权限设置</div>
+                    <!-- <div class="member-choose">
+
+                        <span>菜单级别</span>
+                        <select name="" id="">
+                            <option value="">所有</option>
+                            <option value="">级别1</option>
+                            <option value="">级别2</option>
+                            <option value="">级别3</option>
+                        </select>
+                        <a class="button" href="">确定</a>
+                        <a class="button reset" href="">重置</a>
+                    </div>
+                    <div class="operatebox"></div> -->
+                    <ul class="member-operate">
+                        <a class="button updateAuth" style="display:none">+ 新增权限</a>
+
+                        <a class="button edit">修改</a>
+                        <a class="button add">+ 新增</a>
+                    </ul>
+
+
+                    <table class="pure-table" cellspacing="0px">
+                        <thead>
+                            <tr>
+                                <th>
+                                    <!-- <span class="checkall status"></span> -->
+                                </th>
+                                <th>菜单名称</th>
+                                <!-- <th>菜单URL</th> -->
+                                <th>菜单类型</th>
+                                <th>菜单排序</th>
+                                <th>是否为父节点</th>
+                            </tr>
+                        </thead>
+
+                        <tbody id="menuList">
+                            <!-- <tr>
+                                <td class="status"></td>
+                                <td>系统管理</td>
+                                <td>菜单URL</td>
+                                <td>菜单</td>
+                                <td>1</td>
+                                <td>是</td>
+                            </tr>
+
+                            <tr>
+                                <td class="status"></td>
+                                <td>用户管理</td>
+                                <td>菜单URL</td>
+                                <td>菜单</td>
+                                <td>2</td>
+                                <td>是</td>
+                            </tr>
+
+                            <tr>
+                                <td class="status"></td>
+                                <td>设备管理</td>
+                                <td>菜单URL</td>
+                                <td>菜单</td>
+                                <td>3</td>
+                                <td>是</td>
+                            </tr>
+                            <tr>
+                                <td class="status"></td>
+                                <td>事件管理</td>
+                                <td>菜单URL</td>
+                                <td>菜单</td>
+                                <td>4</td>
+                                <td>是</td>
+                            </tr>
+
+                            <tr>
+                                <td class="status"></td>
+                                <td>工单管理</td>
+                                <td>菜单URL</td>
+                                <td>菜单</td>
+                                <td>5</td>
+                                <td>是</td>
+                            </tr>
+
+                            <tr>
+                                <td class="status"></td>
+                                <td>消防物联网</td>
+                                <td>菜单URL</td>
+                                <td>菜单</td>
+                                <td>6</td>
+                                <td>是</td>
+                            </tr>
+
+                            <tr>
+                                <td class="status"></td>
+                                <td>运维管理</td>
+                                <td>菜单URL</td>
+                                <td>菜单</td>
+                                <td>7</td>
+                                <td>是</td>
+                            </tr> -->
+
+                        </tbody>
+                    </table>
+
+                    <!-- <div class="save-box" style="margin: 0.625rem 0;text-align:center;cursor: pointer;">
+                        <a class="button">保存</a>
+                    </div> -->
+
+                </div>
+            </div>
+        </div>
+
+    </section>
+
+    <!-- 新增菜单 -->
+    <div class="xcConfirm addMenuOut" style="display:none">
+        <div class="popBox">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">新增</span>
+            </div>
+            <form id="addMenuForm">
+                <div class="txtBox">
+
+                    <div>
+                        <span>是否为父节点:</span>
+                        <select name="parented" id="parented">
+                            <option value="0">否</option>
+
+                            <option value="1">是</option>
+                        </select>
+                    </div>
+
+                    <div id="parentIdDiv">
+                        <span>父级菜单:<i class="necessary">*</i></span>
+                        <select name="parentId" id="parentId">
+   
+                        </select>
+                    </div>
+
+                    <div>
+                        <span>菜单名称:<i class="necessary">*</i></span>
+                        <input name="name" type="text">
+                    </div>
+
+                    <div>
+                        <span>菜单URL:</span>
+                        <input name="url" type="text">
+                    </div>
+                    <div>
+                        <span>菜单配置:<i class="necessary">*</i></span>
+                        <textarea name="perms" id="" cols="15" rows="10"></textarea>
+                    </div>
+                    <div>
+                        <span>菜单类型:<i class="necessary">*</i></span>
+                        <select name="type" id="menuType">
+                            <option value="0">目录</option>
+                            <option value="1">菜单</option>
+                            <option value="2">按钮</option>
+                        </select>
+                    </div>
+
+                    <div>
+                        <span>菜单排序:</span>
+                        <input type="text" name="orderNum">
+                    </div>
+
+
+
+                </div>
+                <div class="btnArea">
+                    <div class="btnGroup">
+                        <a class="sgBtn ok" id="addMenu"><img src="images/accept.png" alt=""> 提交</a>
+                        <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                    </div>
+                </div>
+            </form>
+        </div>
+    </div>
+
+
+    <!-- 修改菜单 -->
+    <div class="xcConfirm editMenuOut" style="display:none">
+        <div class="popBox">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">修改</span>
+            </div>
+            <form id="editMenuForm">
+                <div class="txtBox">
+
+                    <div>
+                        <span>是否为父节点:</span>
+                        <select name="parented" id="parented2" disabled="disabled">
+                            <option value="0">否</option>
+                            <option value="1">是</option>
+                        </select>
+                    </div>
+
+                    <div id="parentIdDiv2">
+                        <span>父级菜单id:<i class="necessary">*</i></span>
+                        <select name="parentId" id="parentId2">
+   
+                        </select>
+                    </div>
+
+                    <div>
+                        <span>菜单名称:<i class="necessary">*</i></span>
+                        <input name="name" type="text">
+                    </div>
+
+                    <div>
+                        <span>菜单URL:</span>
+                        <input name="url" type="text">
+                    </div>
+                    <div>
+                        <span>菜单配置:<i class="necessary">*</i></span>
+                        <textarea name="perms" id="" cols="20" rows="10"></textarea>
+                    </div>
+                    <div>
+                        <span>菜单类型:<i class="necessary">*</i></span>
+                        <select name="type" id="menuType2">
+                            <option value="0">目录</option>
+                            <option value="1">菜单</option>
+                            <option value="2">按钮</option>
+                        </select>
+                    </div>
+
+                    <div>
+                        <span>菜单排序:</span>
+                        <input type="text" name="orderNum">
+                    </div>
+
+                    <div style="opacity:0">
+                        <span>menuId:</span>
+                        <input type="text" name="menuId">
+                    </div>
+
+
+
+                </div>
+                <div class="btnArea">
+                    <div class="btnGroup">
+                        <a class="sgBtn ok" id="dataUpdate"><img src="images/accept.png" alt=""> 提交</a>
+                        <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                    </div>
+                </div>
+            </form>
+        </div>
+    </div>
+
+
+    <!-- 新增权限 -->
+    <div class="xcConfirm addAuthOut" style="display:none">
+        <div class="popBox">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">新增</span>
+            </div>
+            <form id="addAuthForm">
+                <div class="txtBox">
+
+                    <!-- <div>
+                        <span>是否为父节点:</span>
+                        <select name="parented" id="parented">
+                            <option value="0">否</option>
+
+                            <option value="1">是</option>
+                        </select>
+                    </div> -->
+
+                    <div id="parentIdDiv">
+                        <span>父级菜单:<i class="necessary">*</i></span>
+                        <select name="menuIdList" id="menuIdList">
+   
+                        </select>
+                    </div>
+
+
+
+
+
+                </div>
+                <div class="btnArea">
+                    <div class="btnGroup">
+                        <a class="sgBtn ok" id="addAuth"><img src="images/accept.png" alt=""> 提交</a>
+                        <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                    </div>
+                </div>
+            </form>
+        </div>
+    </div>
+
+
+
+
+    <script src="js/jquery.js"></script>
+
+    <script src="layui/layui.js"></script>
+    <script src="js/valid.js"></script>
+
+    <script src="api/request.js"></script>
+    <script src="js/main.js"></script>
+    <script src="js/auth-manage.js"></script>
+    <script>
+    </script>
+
+
+</body>
+
+</html>

+ 292 - 0
building-manage.html

@@ -0,0 +1,292 @@
+<!DOCTYPE html>
+<html lang="zh">
+
+<head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>建筑管理(建筑管理)</title>
+    <link rel="shortcut icon" href="favicon.ico">
+    <link rel="stylesheet" href="layui/css/layui.css" />
+    <link rel="stylesheet" href="css/common.css" />
+    <link rel="stylesheet" href="css/per-manage.css" />
+
+    <script src="js/flexible.js"></script>
+</head>
+
+<body style="background-image:url(images/big-bg.png)">
+    <section class="mainbox ">
+        <div class="tit-box flex">
+            <h2 class="title flex2">建筑物管理
+
+            </h2>
+            <h2 class="title flex10">详细列表</h2>
+        </div>
+
+        <div class="content-box flex">
+
+            <div class="column column1 flex2">
+
+                <ul>
+                    <li class="selected"><a href="building-manage.html">建筑管理</a></li>
+                    <li><a href="buildingFloor-manage.html">楼层管理</a></li>
+                    <li><a href="buildingRoom-manage.html">房间管理</a></li>
+                </ul>
+            </div>
+
+            <div class="column3 flex10">
+                <div class="memberbox">
+                    <div class="membertit">建筑管理</div>
+                    <div class="member-choose">
+
+                        <span>建筑名称</span>
+                        <input type="text" id="buildName">
+
+                        <!-- <span>省</span>
+                        <select name="" id="">
+                            <option value="">所有</option>
+                           
+                        </select>
+                        <span>市</span>
+                        <select name="" id="">
+                            <option value="">所有</option>
+                           
+                        </select>
+                        <span>区县</span>
+                        <select name="" id="">
+                            <option value="">所有</option>
+                           
+                        </select> -->
+
+
+
+                        <a class="button" id="buttonClick">确定</a>
+                        <a class="button reset">重置</a>
+                    </div>
+                    <div class="operatebox"></div>
+                    <ul class="member-operate">
+                        <a class="button edit">修改</a>
+                        <a class="button add">+ 新增</a>
+                        <a class="button delete ">- 删除</a>
+                        <a class="button unshow">导出</a>
+
+                    </ul>
+
+
+                    <table class="pure-table " cellspacing="0px" id="test">
+                        <thead>
+                            <tr>
+                                <th style="width: 24px ">
+                                    <!-- <span class="checkall status"></span> -->
+                                </th>
+                                <th>建筑名称</th>
+                                <th>地理坐标</th>
+                                <th>省</th>
+                                <th>市</th>
+                                <th>区</th>
+                                <th>详细地址</th>
+
+                            </tr>
+                        </thead>
+
+                        <tbody id="dataList">
+                            <tr>
+                                <td class="status"></td>
+                                <td>虹泾总部</td>
+                                <td>121.245162,31.173141</td>
+                                <td>上海市</td>
+                                <td>上海市</td>
+                                <td>青浦区</td>
+                                <td>徐乐路208号</td>
+                                <td>3层</td>
+                                <!-- <td>1100平方米</td> -->
+                            </tr>
+
+                            <!-- <tr>
+                                <td class="status"></td>
+                                <td>虹泾总部</td>
+                                <td>121.245162,31.173141</td>
+                                <td>上海市</td>
+                                <td>上海市</td>
+                                <td>青浦区</td>
+                                <td>徐乐路208号</td>
+                                <td>3层</td>
+                                <td>1100平方米</td>
+                            </tr>
+
+                            <tr>
+                                <td class="status"></td>
+                                <td>虹泾总部</td>
+                                <td>121.245162,31.173141</td>
+                                <td>上海市</td>
+                                <td>上海市</td>
+                                <td>青浦区</td>
+                                <td>徐乐路208号</td>
+                                <td>3层</td>
+                                <td>1100平方米</td>
+                            </tr> -->
+
+                        </tbody>
+                    </table>
+                </div>
+
+
+                <div class="pager has-data flex">
+                    <div class="pager-left flex1 align-left">
+                        <ul>
+                            <li id="firstPageButton" class="pg-first disabled"></li>
+                            <li id="prevPageButton" class="pg-prev disabled"></li>
+                            <li class="pg-des">
+                                第 <input id="currentPage" type="text" size="1" value="1"> 页,共 <span id="totalPage">100</span> 页
+                            </li>
+                            <li id="nextPageButton" class="pg-next"></li>
+                            <li id="lastPageButton" class="pg-last"></li>
+                            <li class="pg-refresh">
+                                <a href="javascript:location.reload();"></a>
+                            </li>
+                        </ul>
+                    </div>
+                    <div class="pager-right  flex1 align-right">显示第 <span id="pageFrom"> 1 </span> 条到 <span id="pageTo">
+                            15 </span>条记录,总共 <span id="dataTotal">
+                            46 </span>条
+                    </div>
+
+
+                </div>
+                <div class="pager no-data" style="display:none;text-align:right">
+                    暂无数据
+
+
+                </div>
+
+
+            </div>
+        </div>
+
+    </section>
+
+    <!-- 新增 -->
+    <div class="xcConfirm addDataOut" style="display:none">
+        <div class="xc_layer"></div>
+        <div class="popBox">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">新增</span>
+            </div>
+            <form id="addDataForm">
+                <div class="txtBox">
+                    <div>
+                        <span>建筑名称:<i class="necessary">*</i></span>
+                        <input type="text" name="buildName">
+                    </div>
+                    <div>
+                        <span>建筑坐标:<i class="necessary">*</i></span>
+                        <input type="text" name="posistion">
+                    </div>
+                    <div>
+                        <span>省:<i class="necessary">*</i></span>
+                        <select name="addr1" id="province">
+                            <option value="">请选择</option>
+                        </select>
+                    </div>
+                    <div>
+                        <span>市:</span>
+                        <select name="addr2" id="city">
+                            <option value="">请选择</option>
+                        </select>
+                    </div>
+                    <div>
+                        <span>区、县:</span>
+                        <select name="addr3" id="town">
+                            <option value="">请选择</option>
+                        </select>
+                    </div>
+                    <div>
+                        <span>详细地址:<i class="necessary">*</i></span>
+                        <input type="text" name="address">
+                    </div>
+                </div>
+                <div class="btnArea">
+                    <div class="btnGroup">
+                        <a class="sgBtn ok" id="addData"><img src="images/accept.png" alt=""> 提交</a>
+                        <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                    </div>
+                </div>
+            </form>
+
+        </div>
+    </div>
+
+    <!-- 修改 -->
+    <div class="xcConfirm editDataOut" style="display:none">
+        <div class="xc_layer"></div>
+        <div class="popBox">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">修改</span>
+            </div>
+            <form id="editDataForm">
+                <div class="txtBox">
+                    <div>
+                        <span>建筑名称:<i class="necessary">*</i></span>
+                        <input type="text" name="buildName">
+                    </div>
+                    <div>
+                        <span>建筑坐标:<i class="necessary">*</i></span>
+                        <input type="text" name="posistion">
+                    </div>
+
+
+                    <div>
+                        <span>省:<i class="necessary">*</i></span>
+                        <select name="addr1" id="province2">
+                            <option value="">请选择</option>
+                        </select>
+                    </div>
+                    <div>
+                        <span>市:</span>
+                        <select name="addr2" id="city2">
+                            <option value="">请选择</option>
+                        </select>
+                    </div>
+                    <div>
+                        <span>区、县:</span>
+                        <select name="addr3" id="town2">
+                            <option value="">请选择</option>
+                        </select>
+                    </div>
+                    <div style="opacity:0">
+                        <span>建筑id:<i class="necessary">*</i></span>
+                        <input type="text" name="id">
+                    </div>
+                </div>
+                <div class="btnArea">
+                    <div class="btnGroup">
+                        <a class="sgBtn ok" id="dataUpdate"><img src="images/accept.png" alt=""> 提交</a>
+                        <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                    </div>
+                </div>
+            </form>
+
+        </div>
+    </div>
+
+
+
+    <script src="js/jquery.js"></script>
+    <script src="js/util.js"></script>
+    <script src="api/request.js"></script>
+
+    <script src="js/main.js"></script>
+    <script src="layui/layui.js"></script>
+    <script src="js/valid.js"></script>
+    <script src="js/valid.js"></script>
+    <script src="js/building-manage.js"></script>
+
+    <script src="plugin/threeLinkArea/area.js"></script>
+    <script src="plugin/threeLinkArea/select.js"></script>
+
+
+
+</body>
+
+</html>

+ 244 - 0
buildingFloor-manage.html

@@ -0,0 +1,244 @@
+<!DOCTYPE html>
+<html lang="zh">
+
+<head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>建筑管理(楼层管理)</title>
+    <link rel="shortcut icon" href="favicon.ico">
+    <link rel="stylesheet" href="layui/css/layui.css" />
+    <link rel="stylesheet" href="css/common.css" />
+    <link rel="stylesheet" href="css/per-manage.css" />
+
+    <script src="js/flexible.js"></script>
+
+</head>
+
+<body style="background-image:url(images/big-bg.png)">
+    <section class="mainbox ">
+        <div class="tit-box flex">
+            <h2 class="title flex2">建筑物管理
+
+            </h2>
+            <h2 class="title flex10">详细列表</h2>
+        </div>
+
+        <div class="content-box flex">
+
+            <div class="column column1 flex2">
+
+                <ul>
+                    <li><a href="building-manage.html">建筑管理</a></li>
+                    <li class="selected"><a href="buildingFloor-manage.html">楼层管理</a></li>
+                    <li><a href="buildingRoom-manage.html">房间管理</a></li>
+                </ul>
+            </div>
+
+            <div class="column3 flex10">
+                <div class="memberbox">
+                    <div class="membertit">楼层管理</div>
+                    <div class="member-choose">
+
+                        <!-- <span>楼层名称</span>
+                        <input type="text" id="business"> -->
+
+                        <span>楼层名称</span>
+                        <input type="text" id="floorName">
+
+
+                        <a class="button" id="buttonClick">确定</a>
+                        <a class="button reset">重置</a>
+                    </div>
+                    <div class="operatebox"></div>
+                    <ul class="member-operate">
+                        <a class="button edit">修改</a>
+                        <a class="button add">+ 新增</a>
+                        <a class="button delete ">- 删除</a>
+                        <a class="button unshow">导出</a>
+
+                    </ul>
+
+
+                    <table class="pure-table " cellspacing="0px" id="test">
+                        <thead>
+                            <tr>
+                                <th style="width: 24px ">
+                                    <!-- <span class="checkall status"></span> -->
+                                </th>
+                                <th>楼层名称</th>
+                                <th>创建人</th>
+                                <th>创建时间</th>
+                                <th>备注</th>
+
+                            </tr>
+                        </thead>
+
+                        <tbody id="dataList">
+                            <tr>
+                                <td class="status"></td>
+                                <td>二楼</td>
+                                <td>虹泾总部</td>
+                                <td>2020-09-14 12:15:23</td>
+                                <td>张三</td>
+                            </tr>
+
+                            <tr>
+                                <td class="status"></td>
+                                <td>二楼</td>
+                                <td>虹泾总部</td>
+                                <td>2020-09-14 12:15:23</td>
+                                <td>张三</td>
+                            </tr>
+
+                            <tr>
+                                <td class="status"></td>
+                                <td>二楼</td>
+                                <td>虹泾总部</td>
+                                <td>2020-09-14 12:15:23</td>
+                                <td>张三</td>
+                            </tr>
+
+                        </tbody>
+                    </table>
+                </div>
+
+                <div class="pager has-data flex">
+                    <div class="pager-left flex1 align-left">
+                        <ul>
+                            <li id="firstPageButton" class="pg-first disabled"></li>
+                            <li id="prevPageButton" class="pg-prev disabled"></li>
+                            <li class="pg-des">
+                                第 <input id="currentPage" type="text" size="1" value="1"> 页,共 <span id="totalPage">100</span> 页
+                            </li>
+                            <li id="nextPageButton" class="pg-next"></li>
+                            <li id="lastPageButton" class="pg-last"></li>
+                            <li class="pg-refresh">
+                                <a href="javascript:location.reload();"></a>
+                            </li>
+                        </ul>
+                    </div>
+                    <div class="pager-right  flex1 align-right">显示第 <span id="pageFrom"> 1 </span> 条到 <span id="pageTo">
+                            15 </span>条记录,总共 <span id="dataTotal">
+                            46 </span>条
+                    </div>
+
+
+                </div>
+                <div class="pager no-data" style="display:none;text-align:right">
+                    暂无数据
+
+
+                </div>
+
+
+            </div>
+        </div>
+
+    </section>
+
+    <!-- 新增 -->
+    <div class="xcConfirm addDataOut" style="display:none">
+        <div class="xc_layer"></div>
+        <div class="popBox">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">新增</span>
+            </div>
+            <form id="addDataForm">
+                <div class="txtBox">
+                    <div>
+                        <span>楼层名称:<i class="necessary">*</i></span>
+                        <input type="text" name="floorName">
+                    </div>
+                    <div>
+                        <span>所属建筑:<i class="necessary">*</i></span>
+                        <select id="buildId" name="buildId">
+                            <option value="">请选择</option>
+                        </select>
+                    </div>
+                    <div>
+                        <span>备注:<i class="necessary">*</i></span>
+                        <input type="text" name="remark">
+                    </div>
+                </div>
+                <div class="btnArea">
+                    <div class="btnGroup">
+                        <a class="sgBtn ok" id="addData"><img src="images/accept.png" alt=""> 提交</a>
+                        <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                    </div>
+                </div>
+            </form>
+
+        </div>
+    </div>
+
+    <!-- 修改 -->
+    <div class="xcConfirm editDataOut" style="display:none">
+        <div class="xc_layer"></div>
+        <div class="popBox">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">修改</span>
+            </div>
+            <form id="editDataForm">
+                <div class="txtBox">
+                    <div>
+                        <span>楼层名称:<i class="necessary">*</i></span>
+                        <input type="text" name="floorName">
+                    </div>
+                    <div>
+                        <span>所属建筑:<i class="necessary">*</i></span>
+                        <select id="buildId2" name="buildId">
+                            <option value="">请选择</option>
+                        </select>
+                    </div>
+                    <div>
+                        <span>备注:<i class="necessary">*</i></span>
+                        <input type="text" name="remark">
+                    </div>
+
+
+                    <div style="opacity:0">
+                        <span>楼层状态:<i class="necessary">*</i></span>
+                        <select name="status" id="">
+                            <option value="0">删除</option>
+                            <option value="1">未删除</option>
+                        </select>
+                    </div>
+
+                    <div style="opacity:0">
+                        <span>楼层id:<i class="necessary">*</i></span>
+                        <input type="hidden" name="floorId">
+                    </div>
+
+
+                </div>
+                <div class="btnArea">
+                    <div class="btnGroup">
+                        <a class="sgBtn ok" id="dataUpdate"><img src="images/accept.png" alt=""> 提交</a>
+                        <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                    </div>
+                </div>
+            </form>
+
+        </div>
+    </div>
+
+
+
+    <script src="js/jquery.js"></script>
+    <script src="js/util.js"></script>
+    <script src="api/request.js"></script>
+
+
+    <script src="js/main.js"></script>
+    <script src="layui/layui.js"></script>
+    <script src="js/valid.js"></script>
+    <script src="js/valid.js"></script>
+    <script src="js/buildingFloor-manage.js"></script>
+
+
+
+</body>
+
+</html>

+ 227 - 0
buildingRoom-manage.html

@@ -0,0 +1,227 @@
+<!DOCTYPE html>
+<html lang="zh">
+
+<head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>建筑管理(房间管理)</title>
+    <link rel="shortcut icon" href="favicon.ico">
+    <link rel="stylesheet" href="layui/css/layui.css" />
+    <link rel="stylesheet" href="css/common.css" />
+    <link rel="stylesheet" href="css/per-manage.css" />
+
+    <script src="js/flexible.js"></script>
+
+</head>
+
+<body style="background-image:url(images/big-bg.png)">
+    <section class="mainbox ">
+        <div class="tit-box flex">
+            <h2 class="title flex2">建筑物管理
+
+            </h2>
+            <h2 class="title flex10">详细列表</h2>
+        </div>
+
+        <div class="content-box flex">
+
+            <div class="column column1 flex2">
+
+                <ul>
+                    <li><a href="building-manage.html">建筑管理</a></li>
+                    <li><a href="buildingFloor-manage.html">楼层管理</a></li>
+                    <li class="selected"><a href="buildingRoom-manage.html">房间管理</a></li>
+                </ul>
+            </div>
+
+            <div class="column3 flex10">
+                <div class="memberbox">
+                    <div class="membertit">房间管理</div>
+                    <div class="member-choose">
+
+                        <span>房间名称</span>
+                        <input type="text" id="roomName">
+
+                        <span>所属楼层</span>
+                        <select name="floorIdSearch" id="floorIdSearch">
+                            <option value="">所有</option>
+                        </select>
+
+
+                        <a class="button" id="buttonClick">确定</a>
+                        <a class="button reset">重置</a>
+                    </div>
+                    <div class="operatebox"></div>
+                    <ul class="member-operate">
+                        <a class="button edit">修改</a>
+                        <a class="button add">+ 新增</a>
+                        <a class="button delete ">- 删除</a>
+                        <a class="button unshow">导出</a>
+
+                    </ul>
+
+
+                    <table class="pure-table " cellspacing="0px" id="test">
+                        <thead>
+                            <tr>
+                                <th style="width: 24px ">
+                                    <!-- <span class="checkall status"></span> -->
+                                </th>
+                                <th>房间名称</th>
+                                <!-- <th>所属楼层</th>
+                                <th>所属建筑</th>    -->
+
+                                <th>创建人</th>
+                                <th>创建时间</th>
+                                <th>备注</th>
+                            </tr>
+                        </thead>
+
+                        <tbody id="dataList">
+
+
+                        </tbody>
+                    </table>
+                </div>
+
+                <div class="pager has-data flex">
+                    <div class="pager-left flex1 align-left">
+                        <ul>
+                            <li id="firstPageButton" class="pg-first disabled"></li>
+                            <li id="prevPageButton" class="pg-prev disabled"></li>
+                            <li class="pg-des">
+                                第 <input id="currentPage" type="text" size="1" value="1"> 页,共 <span id="totalPage">100</span> 页
+                            </li>
+                            <li id="nextPageButton" class="pg-next"></li>
+                            <li id="lastPageButton" class="pg-last"></li>
+                            <li class="pg-refresh">
+                                <a href="javascript:location.reload();"></a>
+                            </li>
+                        </ul>
+                    </div>
+                    <div class="pager-right  flex1 align-right">显示第 <span id="pageFrom"> 1 </span> 条到 <span id="pageTo">
+                            15 </span>条记录,总共 <span id="dataTotal">
+                            46 </span>条
+                    </div>
+
+
+                </div>
+                <div class="pager no-data" style="display:none;text-align:right">
+                    暂无数据
+
+
+                </div>
+
+
+            </div>
+        </div>
+
+    </section>
+
+    <!-- 新增 -->
+    <div class="xcConfirm addDataOut" style="display:none">
+        <div class="xc_layer"></div>
+        <div class="popBox">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">新增</span>
+            </div>
+            <form id="addDataForm">
+                <div class="txtBox">
+                    <div>
+                        <span>房间名称:<i class="necessary">*</i></span>
+                        <input type="text" name="roomName">
+                    </div>
+                    <div>
+                        <span>所属楼层:<i class="necessary">*</i></span>
+                        <select name="floorId" id="floorId">
+                            <option value="">请选择</option>
+
+                        </select>
+                    </div>
+                    <div>
+                        <span>备注:<i class="necessary">*</i></span>
+                        <input type="text" name="remark">
+                    </div>
+
+
+                </div>
+                <div class="btnArea">
+                    <div class="btnGroup">
+                        <a class="sgBtn ok" id="addData"><img src="images/accept.png" alt=""> 提交</a>
+                        <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                    </div>
+                </div>
+            </form>
+
+        </div>
+    </div>
+
+    <!-- 修改 -->
+    <div class="xcConfirm editDataOut" style="display:none">
+        <div class="xc_layer"></div>
+        <div class="popBox">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">修改</span>
+            </div>
+            <form id="editDataForm">
+                <div class="txtBox">
+                    <div>
+                        <span>房间名称:<i class="necessary">*</i></span>
+                        <input type="text" name="roomName">
+                    </div>
+                    <div>
+                        <span>所属楼层:<i class="necessary">*</i></span>
+                        <select name="floorId" id="floorId2">
+                            <option value="">请选择</option>
+
+                        </select>
+                    </div>
+                    <div>
+                        <span>备注:<i class="necessary">*</i></span>
+                        <input type="text" name="remark">
+                    </div>
+                    <div style="opacity:0">
+                        <span>房间状态:<i class="necessary">*</i></span>
+                        <select name="status" id="">
+                            <option value="0">删除</option>
+                            <option value="1">未删除</option>
+                        </select>
+                    </div>
+
+                    <div style="opacity:0">
+                        <span>房间id:<i class="necessary">*</i></span>
+                        <input type="hidden" name="roomId">
+                    </div>
+
+
+                </div>
+                <div class="btnArea">
+                    <div class="btnGroup">
+                        <a class="sgBtn ok" id="dataUpdate"><img src="images/accept.png" alt=""> 提交</a>
+                        <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                    </div>
+                </div>
+            </form>
+
+        </div>
+    </div>
+
+
+
+    <script src="js/jquery.js"></script>
+    <script src="js/util.js"></script>
+    <script src="api/request.js"></script>
+
+
+    <script src="js/main.js"></script>
+    <script src="layui/layui.js"></script>
+    <script src="js/valid.js"></script>
+    <script src="js/buildingRoom-manage.js"></script>
+
+
+
+</body>
+
+</html>

+ 858 - 0
css/common.css

@@ -0,0 +1,858 @@
+* {
+    margin: 0;
+    padding: 0;
+    box-sizing: border-box
+}
+
+
+/* body, h1, h2, h3, h4, h5, h6, hr, p,blockquote, dl, dt, dd, ul, ol, li,pre,
+form, fieldset, legend, button, input, textarea,
+th, td,
+img{border:medium none;margin: 0;padding: 0;list-style-type: none;} */
+
+li {
+    list-style: none
+}
+
+a {
+    text-decoration: none;
+}
+
+input,
+select {
+    outline: none
+}
+
+table {
+    border-spacing: 0;
+}
+
+textarea {
+    resize: none;
+}
+
+.flex {
+    display: flex
+}
+
+.flex1 {
+    flex: 1
+}
+
+.flex2 {
+    flex: 1.94
+}
+
+.flex8 {
+    flex: 8
+}
+
+.flex10 {
+    flex: 10
+}
+
+.flex3 {
+    flex: 3
+}
+
+.flex9 {
+    flex: 9
+}
+
+.align-top {
+    vertical-align: top;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.align-right {
+    text-align: right;
+}
+
+.left {
+    float: left;
+}
+
+.right {
+    float: right;
+}
+
+@font-face {
+    font-family: electronicFont;
+    src: url(../font/DS-DIGIT.TTF)
+}
+
+body {
+    font-family: Arial, Helvetica, sans-serif;
+    margin: 0;
+    padding: 0;
+    background: url(../images/bg.png) no-repeat #000;
+    background-size: 100% 100%;
+    line-height: 1.15;
+    font-size: 0.175rem!important;
+    /* min-width:1280px;
+    min-height:700px;
+    height:100vh; */
+    /* background-size:contain; */
+}
+
+.color-green {
+    color: #37FF01!important
+}
+
+.color-blue {
+    color: #6F99FA!important
+}
+
+.color-red {
+    color: #FF5801!important
+}
+
+.color-yellow {
+    color: #EAF665!important
+}
+
+.color-orange {
+    color: #DE8C54!important
+}
+
+.unprocess {
+    color: #FF5801;
+}
+
+.processed {
+    color: #37FF01
+}
+
+.necessary {
+    color: red
+}
+
+.relative {
+    position: relative;
+}
+
+.unshow {
+    opacity: 0;
+    cursor: default!important;
+}
+
+a.button {
+    padding: 0 0.3125rem;
+    display: inline-block;
+    color: #1BE9FF;
+    border: 1px solid #31E9FF;
+    border-radius: 5px;
+    line-height: 0.35rem;
+    text-align: center;
+    background: #031252;
+    cursor: pointer;
+    font-size: 0.175rem
+}
+
+@media screen and (max-width:1024px) {
+    html {
+        font-size: 42px !important
+    }
+}
+
+@media screen and (min-width:1920) {
+    html {
+        font-size: 80px !important
+    }
+}
+
+
+/* loading */
+
+
+/* #loading {
+    position: absolute;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0;
+    display: flex;
+    text-align: center;
+    align-items: center;
+    justify-content: center
+}
+
+#loading img {
+    width: 1.25rem
+} */
+
+.loadingdata {
+    position: relative;
+    width: 100%;
+    height: 100%
+}
+
+.preloader {
+    position: absolute;
+    left: 0px;
+    top: 0px;
+    width: 100%;
+    height: 100%;
+    z-index: 999999999999999;
+    background-color: #fff;
+    background-position: center center;
+    background-repeat: no-repeat;
+    background-image: url(../images/preloader.svg);
+}
+
+
+/* 组件树插件 */
+
+.treebox {
+    height: 8.25rem;
+    overflow-y: auto;
+}
+
+.tree {
+    font-size: 0.175rem;
+    color: #fff;
+    min-height: 0.25rem;
+    /* margin: 0.275rem 0; */
+    /* margin-bottom: 0.25rem; */
+    position: relative
+    /* height:8.25rem; */
+    /* overflow-y:scroll */
+    /* border:1px solid pink; */
+    /* -webkit-border-radius:4px;
+    -moz-border-radius:4px;
+    border-radius:4px; */
+}
+
+.tree .maintree {
+    background: linear-gradient(#031648 0%, #08416b 100%);
+}
+
+li.parent_li ul li ul li {
+    display: none
+}
+
+.tree ul.child-two>li>span {
+    padding-left: 0.5rem
+}
+
+.tree ul.child-three>li>span {
+    padding-left: 0.8125rem
+}
+
+.tree li {
+    list-style-type: none;
+    line-height: 0.5rem;
+    margin: 0;
+    position: relative;
+    /* padding-inline-start: 40px; */
+}
+
+.treeDepartment.selected,
+.treeDepartment.selected img {
+    color: #0082FF
+}
+
+.treeCompany.selected,
+.treeCompany.selected img {
+    color: #0082FF
+}
+
+.treeRole.selected {
+    color: #0082FF
+}
+
+.tree li::before,
+.tree li::after {
+    content: '';
+    left: 0.3rem;
+    position: absolute;
+    right: auto;
+    z-index: 99999999
+}
+
+.tree ul.child-three>li::before,
+.tree ul.child-three>::after {
+    left: 0.6rem;
+}
+
+.tree li::before {
+    border-left: 1px dotted #999;
+    bottom: 0.625rem;
+    height: 100%;
+    top: -0.1125rem;
+    width: 1px
+}
+
+.tree li::after {
+    border-top: 1px dotted #999;
+    height: 0.25rem;
+    top: 0.275rem;
+    width: 0.1625rem
+}
+
+.tree li span {
+    background: #083C67;
+    margin-bottom: 2px;
+    /* -moz-border-radius:5px;
+    -webkit-border-radius:5px;
+    border-radius:5px; */
+    display: block;
+    padding: 0.0175rem 0.1rem;
+    text-decoration: none;
+}
+
+.tree li span img {
+    height: 0.225rem;
+    position: relative;
+    top: -1px;
+    margin-right: 0.0375rem
+}
+
+
+/* .tree li.parent_li>span {
+    cursor:pointer
+} */
+
+.tree li span {
+    cursor: pointer;
+}
+
+.tree>ul>li::before,
+.tree>ul>li::after {
+    border: 0
+}
+
+.tree li:last-child::before {
+    /* height: 0.4rem */
+}
+
+
+/* .tree li.parent_li>span:hover, .tree li.parent_li>span:hover+ul li span {
+    background:#eee;
+    border:1px solid #94a0b4;
+    color:#000
+} */
+
+
+/* 弹框 */
+
+.verticalAlign {
+    vertical-align: middle;
+    display: inline-block;
+    height: 100%;
+    margin-left: -1px;
+}
+
+
+/* .xcConfirm .popBox {
+
+	background-color: #002c59;
+	z-index: 2147000001;
+	width: 400px;
+	height: 299px;
+
+	border-radius: 5px;
+	font-weight: bold;
+	color: #fff;
+} */
+
+.popBox select {
+    /*Chrome和Firefox里面的边框是不一样的,所以复写了一下*/
+    border: solid 1px #000;
+    /*很关键:将默认的select选择框样式清除*/
+    appearance: none;
+    -moz-appearance: none;
+    -webkit-appearance: none;
+    /*在选择框的最右侧中间显示小箭头图片*/
+    background: url("../images/trigger.gif") no-repeat scroll right center transparent;
+    background-position: 176px -3px;
+    /*为下拉小箭头留出一点位置,避免被文字覆盖*/
+    padding-right: 14px;
+}
+
+.xcConfirm .popBox .ttBox {
+    padding: 5px;
+    cursor: move;
+    /* border: 1px solid pink */
+}
+
+.xcConfirm .popBox .ttBox .tt {
+    font-size: 14px;
+    display: block;
+}
+
+.xcConfirm .popBox .ttBox .clsBtn,
+.xcConfirm .popBox .ttBox .clsBtn2 {
+    display: block;
+    cursor: pointer;
+    width: 12px;
+    height: 12px;
+    position: absolute;
+    top: 4px;
+    right: 8px;
+    background: url(../images/tool-sprites.gif) no-repeat;
+}
+
+.xcConfirm .popBox .txtBox {
+    padding: 20px 60px 23px 20px;
+    /* background:pink; */
+}
+
+.txtBox span {
+    display: inline-block;
+    width: 114px;
+    font-weight: 400;
+    font-size: 14px;
+    vertical-align: top;
+}
+
+.txtBox span.choose-file {
+    display: inline-block;
+    position: absolute;
+    text-align: center;
+    width: 56px;
+    line-height: 20px;
+    background: #616F8C;
+    right: 0;
+    top: 0;
+    cursor: pointer;
+}
+
+.choose-file input {
+    width: 56px;
+    right: 0;
+    top: 0;
+    overflow: hidden;
+    position: absolute;
+    opacity: 0;
+    cursor: pointer;
+}
+
+.txtBox>div {
+    margin-bottom: 12px
+}
+
+.txtBox select,
+.txtBox input,
+.txtBox option {
+    width: 194px;
+    background-color: #34383f;
+    /* color:#fff; */
+    color: #aaa;
+    border: none;
+    line-height: 18px;
+    padding: 0 10px 0 5px;
+    font-size: 14px;
+}
+
+.txtBox textarea {
+    background-color: #34383f;
+    /* color:#fff; */
+    color: #aaa;
+    border: none;
+    padding: 5px;
+    width: 190px;
+    font-size: 14px;
+}
+
+.xcConfirm .popBox .txtBox .bigIcon {
+    float: left;
+    margin-right: 20px;
+    width: 48px;
+    height: 48px;
+    background-image: url(../img/icons.png);
+    background-repeat: no-repeat;
+    background-position: 48px 0;
+}
+
+.xcConfirm .popBox .txtBox p {
+    /* height: 84px;
+	margin-top: 16px;
+	line-height: 26px; */
+    overflow-x: hidden;
+    overflow-y: auto;
+}
+
+.xcConfirm .popBox .txtBox p input {
+    font-size: 18px;
+    margin-top: 6px;
+}
+
+.xcConfirm .popBox .btnArea {
+    position: absolute;
+    bottom: 0;
+    width: 100%;
+    text-align: right
+}
+
+.xcConfirm .popBox .btnGroup {
+    padding: 5px;
+    background: #1f2833;
+}
+
+.xcConfirm .popBox .btnGroup img {
+    position: absolute;
+    left: 5px;
+    top: 5px;
+}
+
+.xcConfirm .popBox .btnGroup .sgBtn {
+    margin-left: 10px;
+}
+
+.xcConfirm .popBox .sgBtn {
+    display: inline-block;
+    cursor: pointer;
+    width: 75px;
+    line-height: 20px;
+    text-align: center;
+    color: #FFFFFF;
+    border-radius: 5px;
+}
+
+.xcConfirm .popBox .sgBtn.ok,
+.xcConfirm .popBox .sgBtn.cancel,
+.xcConfirm .popBox .sgBtn.cancel2 {
+    position: relative;
+    background-image: -webkit-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+    color: #26c5ff;
+    border-radius: 3px;
+    padding: 2px;
+    font-size: 14px;
+}
+
+
+/* 分页样式 */
+
+.pager {
+    padding: 0 0.25rem;
+    color: #fff;
+    position: absolute;
+    left: 0;
+    bottom: 0;
+    width: 100%;
+}
+
+.pager-right {
+    font-family: tahoma, arial, verdana, sans-serif;
+    font-size: 0.175rem;
+}
+
+.pager-left li {
+    display: inline-block;
+    line-height: 22px;
+    text-align: center
+}
+
+.pager-left ul {
+    align-items: center;
+    display: flex;
+}
+
+.pager-left li:not(.pg-des) {
+    width: 22px;
+    height: 22px;
+    background-repeat: no-repeat;
+    background-position: center center;
+}
+
+.pager-left li:not(.pg-des):hover {
+    border: 1px solid rgb(5, 74, 143);
+    background-color: rgb(90, 143, 197);
+    cursor: pointer;
+}
+
+.pager-left li.disabled:hover {
+    border-color: rgba(0, 0, 0, 0);
+    background-color: rgba(0, 0, 0, 0);
+    cursor: default;
+}
+
+.pager-left li.pg-des {
+    margin: 0 7px;
+    padding: 0 18px;
+    line-height: 14px;
+    border-left: 1px solid #ccc;
+    border-right: 1px solid #ccc;
+    font-size: 14px;
+}
+
+.pg-des input {
+    color: #fff;
+    text-align: center;
+    background: #2f3c49;
+    margin: 0 5px;
+    outline: none;
+    border: none;
+    width: 40px;
+    font-size: 14px
+}
+
+.pg-first {
+    background: url(../images/page-first.gif);
+}
+
+.pg-first.disabled {
+    background: url(../images/page-first-disabled.gif);
+    pointer-events: none
+}
+
+.pg-prev {
+    background: url(../images/page-prev.gif);
+}
+
+.pg-prev.disabled {
+    background: url(../images/page-prev-disabled.gif);
+    pointer-events: none
+}
+
+.pg-next {
+    background: url(../images/page-next.gif);
+}
+
+.pg-next.disabled {
+    background: url(../images/page-next-disabled.gif);
+    pointer-events: none
+}
+
+.pg-last {
+    background: url(../images/page-last.gif);
+}
+
+.pg-last.disabled {
+    background: url(../images/page-last-disabled.gif);
+    pointer-events: none
+}
+
+.pg-refresh {
+    background: url(../images/refresh.gif);
+}
+
+.pg-refresh a {
+    display: inline-block;
+    width: 100%;
+    height: 100%
+}
+
+
+/* layer弹窗 */
+
+.layui-layer.layui-layer-page {
+    background-color: #002c59;
+    border-radius: 5px;
+    color: #fff;
+}
+
+.deviceCheckAdd-wrapper {
+    padding: 0 16px
+}
+
+
+/* 弹框标题 */
+
+.deviceCheckAdd .ttBox {
+    margin: 8px 0;
+    cursor: move;
+    /* border: 1px solid pink */
+}
+
+.deviceCheckAdd .ttBox .tt {
+    font-size: 14px;
+    display: block;
+}
+
+.deviceCheckAdd .ttBox .clsBtn {
+    display: block;
+    cursor: pointer;
+    width: 12px;
+    height: 12px;
+    position: absolute;
+    top: 4px;
+    right: 16px;
+    background: url(../images/tool-sprites.gif) no-repeat;
+}
+
+
+/* 弹框底部 */
+
+.deviceCheckAdd .btnArea {
+    position: absolute;
+    bottom: 0;
+    width: 100%;
+    text-align: right
+}
+
+.deviceCheckAdd .btnGroup {
+    padding: 5px;
+    background: #1f2833;
+}
+
+.deviceCheckAdd .btnGroup img {
+    position: absolute;
+    left: 5px;
+    top: 5px;
+}
+
+.deviceCheckAdd .btnGroup .sgBtn {
+    margin-left: 10px;
+}
+
+.deviceCheckAdd .sgBtn {
+    display: inline-block;
+    cursor: pointer;
+    width: 75px;
+    line-height: 20px;
+    text-align: center;
+    color: #FFFFFF;
+    border-radius: 5px;
+}
+
+.deviceCheckAdd .sgBtn.ok,
+.deviceCheckAdd .sgBtn.cancel {
+    position: relative;
+    background-image: -webkit-linear-gradient(top, #2a3142, #252c3b 48%, #13171f 52%, #171b25);
+    color: #26c5ff;
+    border-radius: 3px;
+    padding: 2px;
+    font-size: 14px;
+}
+
+
+/* 搜索区域 */
+
+.chooseArea {
+    margin: 22px 0;
+    /* border:1px solid pink */
+}
+
+.chooseArea span {
+    display: inline-block;
+    font-weight: 400;
+    width: 80px;
+    font-size: 14px;
+    margin-right: 10px;
+    text-align: right
+}
+
+.chooseArea select,
+.chooseArea input,
+.chooseArea option {
+    width: 201px;
+    background-color: #34383f;
+    color: #fff;
+    border: none;
+    line-height: 24px;
+    height: 24px;
+    padding: 0 10px 0 5px;
+    font-size: 14px
+}
+
+#test12 {
+    background: #44474A;
+    color: #fff;
+    /* height:414px; */
+    /* height:100px; */
+    overflow-y: scroll
+}
+
+.tree-tit {
+    width: 100%;
+    height: 30px;
+    line-height: 30px;
+    background: linear-gradient(#2f333f 0%, #353b4b 49%, #464d60 51%, #565e75 100%);
+    border: 1px solid #1f2933;
+    font-size: 14px;
+    padding-left: 7px
+}
+
+.layui-tree-icon .layui-icon {
+    color: #fff
+}
+
+.layui-tree-txt {
+    color: #fff;
+    font-size: 14px
+}
+
+.layui-form-checkbox i {
+    background: #b8b8b8;
+    border: 1px solid #ffffff;
+}
+
+.layui-form-checked[lay-skin="primary"] i {
+    border-color: #1BE9FE !important;
+    background-color: #1BE9FE;
+    color: #fff;
+}
+
+
+/* .layui-form-checkbox[lay-skin="primary"] i{
+    background: #b8b8b8;
+border: 1px solid #ffffff;
+
+} */
+
+
+/* .checkAdd-content{
+    margin:16px;
+    border:1px solid red;
+    height:300px
+
+} */
+
+
+/* 溢出滚动样式 */
+
+.departlist-box ::-webkit-scrollbar {
+    height: 5px !important;
+    width: 5px !important;
+}
+
+
+/*定义了滚动条滑块的样式*/
+
+.departlist-box ::-webkit-scrollbar-thumb {
+    border-radius: 0;
+    border-style: dashed;
+    background-color: #aaa;
+    border-color: #e2242400;
+    border-width: 1.5px;
+    background-clip: padding-box;
+}
+
+
+/*定义了轨道的样式*/
+
+.departlist-box ::-webkit-scrollbar-track {
+    /*滚动条里面轨道*/
+    -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0);
+    border-radius: 5px;
+    background: rgba(0, 0, 0, 0);
+}
+
+.disabled {
+    pointer-events: none
+}
+
+.pure-table-inner tr th:nth-child(2),
+.pure-table-inner tr td:nth-child(2) {
+    width: 2.5rem
+}
+
+.pure-table-inner tr th:nth-child(3),
+.pure-table-inner tr td:nth-child(3) {
+    width: 1.8rem
+}
+
+.pure-table-inner tr th:nth-child(4),
+.pure-table-inner tr td:nth-child(4) {
+    width: 2rem
+}
+
+.pure-table-inner tr th:nth-child(5),
+.pure-table-inner tr td:nth-child(5) {
+    width: 2rem
+}

+ 308 - 0
css/index.css

@@ -0,0 +1,308 @@
+        header {
+            position: relative;
+            height: 1.113rem;
+            background: linear-gradient(#0a0634 0, #204a9e 100%)
+        }
+        
+        header h1 {
+            font-size: .575rem;
+            color: #fff;
+            text-align: center;
+            line-height: 1.113rem;
+            font-weight: 400
+        }
+        
+        header .showTime {
+            position: absolute;
+            top: 0;
+            right: .375rem;
+            line-height: .9375rem;
+            font-size: .25rem;
+            color: rgba(255, 255, 255, .7)
+        }
+        
+        .mainbox {
+            min-width: 1024px;
+            max-width: 1920px;
+            padding: .287rem .287rem 0;
+            display: flex
+        }
+        
+        .mainbox .column {
+            flex: 3
+        }
+        
+        .mainbox .column:nth-child(2) {
+            flex: 6;
+            margin: 0 .575rem .1875rem;
+            overflow: hidden
+        }
+        
+        .panel {
+            position: relative;
+            background: rgba(255, 255, 255, .01) url(../images/line\(1\) .png);
+            background-repeat: no-repeat;
+            padding: 0 .1875rem .5rem;
+            margin-bottom: .287rem;
+            background-size: 100% 100%
+        }
+        
+        .no h2,
+        .panel h2 {
+            height: .7rem;
+            line-height: .7rem;
+            text-align: center;
+            font-size: .275rem;
+            background-image: -webkit-linear-gradient(bottom, #00adce, #fff);
+            -webkit-background-clip: text;
+            -webkit-text-fill-color: transparent
+        }
+        
+        .panel h2 a {
+            margin: 0 .1875rem;
+            color: #fff;
+            text-decoration: underline
+        }
+        
+        .panel .chart {
+            /* height: 90%; */
+            display: flex;
+            justify-content: center;
+            align-items: center
+        }
+        
+        .no {
+            height: 4.05rem;
+            overflow: hidden;
+            background-image: url(../images/no-bg.png)
+        }
+        
+        table {
+            width: 10.262rem;
+            margin: 0 auto;
+            color: #fff;
+            font-weight: 400;
+            font-size: .2rem;
+            line-height: .5rem;
+            text-align: center
+        }
+        
+        thead th {
+            font-size: 0.2125rem;
+            line-height: 0.5rem;
+            font-weight: 400
+        }
+        
+        table tr th {
+            background: rgba(3, 64, 128, .4)
+        }
+        
+        table tr:first-child th:first-child {
+            border-top-left-radius: 12px;
+            border-bottom-left-radius: 12px
+        }
+        
+        table tr:first-child th:last-child {
+            border-top-right-radius: 12px;
+            border-bottom-right-radius: 12px
+        }
+        
+        .map {
+            position: relative;
+            height: 7.55rem;
+            margin-bottom: .287rem;
+            background-size: 90% 90%;
+            background-position: bottom center;
+            /* background-image: url(../images/store.png); */
+            background-repeat: no-repeat;
+            opacity: .5
+        }
+        
+        .map .chart {
+            position: absolute;
+            top: 0;
+            left: 0;
+            z-index: 5;
+            height: 10.125rem;
+            width: 100%
+        }
+        /* .map .map1,
+.map .map2,
+.map .map3 {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
+    width: 6.475rem;
+    height: 6.475rem;
+    background: url(../images/map.png) no-repeat;
+    background-size: 100% 100%;
+    opacity: .3
+}
+
+.map .map2 {
+    width: 8.0375rem;
+    height: 8.0375rem;
+    background-image: url(../images/lbx.png);
+    opacity: .6;
+    animation: rotate 15s linear infinite;
+    z-index: 2
+}
+
+.map .map3 {
+    width: 7.075rem;
+    height: 7.075rem;
+    background-image: url(../images/jt.png);
+    animation: rotate1 10s linear infinite
+} */
+        
+        @keyframes rotate {
+            from {
+                transform: translate(-50%, -50%) rotate(0)
+            }
+            to {
+                transform: translate(-50%, -50%) rotate(360deg)
+            }
+        }
+        
+        @keyframes rotate1 {
+            from {
+                transform: translate(-50%, -50%) rotate(0)
+            }
+            to {
+                transform: translate(-50%, -50%) rotate(-360deg)
+            }
+        }
+        
+        .panel.pie-bar {
+            height: 7.55rem;
+            background-image: url(../images/pie-bar-bg.png)
+        }
+        
+        .panel.line {
+            height: 4.05rem;
+            background-image: url(../images/line-bg.png)
+        }
+        
+        .panel.right-top {
+            height: 5.425rem;
+            background-image: url(../images/right-top-bg.png)
+        }
+        
+        .panel.right-top .chart {
+            height: 3.4rem
+        }
+        
+        .pie-bar-bottom,
+        .pie-bar-top {
+            height: 3.438rem;
+            width: 100%;
+            position: relative
+        }
+        
+        .pie-bar-top .chart {
+            height: 100%
+        }
+        
+        .pie-bar-bottom .chart {
+            height: 90%
+        }
+        
+        .line .chart {
+            height: 90%
+        }
+        
+        .title-btn {
+            color: #fff;
+            width: 1.75rem;
+            line-height: .4rem;
+            background: rgba(0, 130, 255, .4);
+            border: 2px solid #0082ff;
+            border-radius: 10px;
+            text-align: center;
+            font-size: .25rem;
+            margin: .125rem auto
+        }
+        
+        .total-squares {
+            margin: .175rem auto;
+            text-align: center
+        }
+        
+        .total-square {
+            display: inline-block;
+            width: .55rem;
+            height: .55rem;
+            line-height: .55rem;
+            border: 1px solid rgba(0, 212, 233, .4);
+            font-size: .375rem;
+            color: #F6FF00
+        }
+        
+        .yq-total {
+            font-size: .25rem;
+            color: #00D4E9;
+            text-align: center
+        }
+        
+        .huan {
+            height: 6.175rem;
+            background-image: url(../images/right-bottom-bg.png);
+            /* min-width:380px; */
+        }
+        
+        .huan table {
+            width: 100%;
+            margin-top: 0.25rem;
+        }
+        
+        .huan ul {
+            margin: 0 0 0 .7rem
+        }
+        
+        .huan li {
+            width: 35%;
+            text-align: center;
+            border: 1px solid rgba(0, 212, 233, .4);
+            display: inline-block;
+            padding: 0.125rem 0;
+        }
+        
+        .huan li {
+            margin-right: .35rem;
+            margin-bottom: 0.125rem;
+            margin-top: 0.1rem
+        }
+        
+        .num-huan {
+            font-size: 0.325rem
+        }
+        
+        .des-huan {
+            max-width: 100%;
+            font-size: 0.225rem;
+            color: #02DDF2;
+            display: inline-block;
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis
+        }
+        
+        .no table {
+            width: 100%
+        }
+        
+        .no tr td:first-child,
+        .no tr th:first-child {
+            width: 1.5rem
+        }
+        
+        .no tr td:nth-child(2),
+        .no tr th:nth-child(2) {
+            width: 2.5rem
+        }
+        
+        .no tr td:nth-child(3),
+        .no tr th:nth-child(3) {
+            width: 1.5rem
+        }

+ 502 - 0
css/per-manage.css

@@ -0,0 +1,502 @@
+/* 人员管理 */
+
+.mainbox {
+    min-width: 1024px;
+    max-width: 1920px;
+    padding: 0.8125rem 1.1rem 1.4rem .9rem;
+    /* display: flex; */
+    height: 100%;
+}
+
+.per-manage {
+    height: 13.5rem
+}
+
+
+/* .column{
+    height:100%;
+   
+} */
+
+.column1 {
+    /* flex:2; */
+}
+
+.column2 {
+    /* flex:2; */
+    /* border:1px solid yellow */
+}
+
+.column3 {
+    /* flex: 8; */
+    overflow: hidden;
+    height: 10rem;
+    position: relative;
+    /* border:1px solid yellow */
+}
+
+.title {
+    line-height: 0.6rem;
+    font-size: 0.25rem;
+    margin-top: .12rem;
+    font-size: 0.25rem;
+    margin-left: 0.35rem;
+    /* color:#02DDF2; */
+    background-image: -webkit-linear-gradient(bottom, #00adce, #fff);
+    -webkit-background-clip: text;
+    -webkit-text-fill-color: transparent;
+    background-image: -webkit-linear-gradient(rottom, #00adce, #fff);
+    background-image: linear-gradient(to rottom, #00adce, #fff);
+    -webkit-background-clip: text;
+    -ms-background-clip: text;
+    -o-background-clip: text;
+    -webkit-text-fill-color: transparent;
+}
+
+.column2 .title {
+    margin-left: .6rem;
+}
+
+.column1 ul {
+    padding: 0.6rem 0.625rem 0.375rem 0.4rem;
+}
+
+.column1 li a {
+    color: #0082FF;
+    line-height: 0.65rem;
+    font-size: 0.1875rem;
+    padding-left: .4rem;
+    display: block;
+    margin-bottom: 0.25rem;
+    background-image: url(../images/list.png);
+    background-repeat: no-repeat;
+    background-size: 100% 100%;
+    cursor: pointer;
+}
+
+.column1 li.selected a,
+.column1 li:hover a {
+    background-image: url(../images/list-on.png);
+    color: #31E9FF
+}
+
+.departlist-box,
+.memberbox {
+    /* border:1px solid red; */
+    padding: 0.25rem;
+}
+
+.departlist-box {
+    width: 100%;
+    padding: 0.25rem 0.25rem 0rem 0.1rem;
+}
+
+.departtit,
+.membertit {
+    font-size: 0.25rem;
+    color: #31e9ff;
+    margin-bottom: 0.3rem
+}
+
+.membertit {
+    margin-bottom: 0.125rem
+}
+
+ul.depart-opera {
+    display: flex
+}
+
+.depart-opera a {
+    cursor: pointer;
+}
+
+.depart-opera li {
+    display: inline-block;
+    font-size: 0.15rem;
+    flex: 1;
+}
+
+.depart-opera li a.button {
+    width: 80%;
+    padding: 0
+}
+
+.column2 .depart-opera li:nth-child(3) {
+    margin-right: 0
+}
+
+.member-choose {
+    text-align: right
+}
+
+.member-choose span {
+    color: #0078FF;
+    font-size: 0.2rem;
+    margin-right: 0.0875rem
+}
+
+.member-choose input,
+.member-choose select,
+.member-choose option {
+    display: inline-block;
+    width: 2.0125rem;
+    height: 0.3625rem;
+    line-height: 0.3625rem;
+    border-radius: 5px;
+    text-indent: 0.0625rem;
+    margin-right: 0.2rem;
+    font-size: 0.175rem;
+    border: none;
+}
+
+.member-choose a.button {
+    margin-right: 0.3rem
+}
+
+.member-operate span {
+    color: #0078FF;
+    font-size: 0.2rem;
+    margin-right: 0.0875rem
+}
+
+.member-operate input,
+.member-operate select,
+.member-operate option {
+    display: inline-block;
+    width: 2.0125rem;
+    height: 0.3625rem;
+    line-height: 0.3625rem;
+    border-radius: 5px;
+    text-indent: 0.0625rem;
+    margin-right: 0.5rem;
+    border: none;
+}
+
+.member-operate a.button {
+    margin-right: 0.3rem
+}
+
+.member-operate {
+    text-align: right;
+    padding: 0.4375rem 0;
+    position: relative;
+}
+
+.member-operate a.button {
+    margin-right: 0.3rem;
+    cursor: pointer;
+}
+
+
+/* 表格 */
+
+.pure-table {
+    color: #fff;
+    width: 100%
+}
+
+.pure-table th {
+    background: linear-gradient(to bottom, #525970, #2d323e);
+}
+
+.pure-table td,
+.pure-table th {
+    background-color: #1f2933;
+    /* border-color: #101010; */
+    text-align: center;
+    border: 1px solid black;
+    line-height: 0.3125rem;
+    font-size: 0.175rem;
+    border-collapse: collapse;
+    border-spacing: 0;
+    /* width: 0.3375rem */
+}
+
+.pure-table tbody tr:hover td:not(:first-child) {
+    background-color: rgba(14, 112, 203, .3);
+}
+
+.pure-table .selected td:not(:first-child) {
+    background-color: #0e70cb;
+    border-style: dotted;
+}
+
+.pure-table .selected td {
+    border-style: dotted;
+}
+
+.pure-table .status {
+    background-image: url(../images/unchecked.gif);
+    background-repeat: no-repeat;
+    background-position: center center;
+}
+
+.pure-table th span {
+    width: 27px;
+    height: 27px;
+    display: block
+}
+
+.pure-table .checked {
+    background-image: url(../images/checked.gif);
+    background-repeat: no-repeat;
+    background-position: center center;
+}
+
+.pure-table tr:nth-child(even) td {
+    background-color: #1a232b
+}
+
+.pure-table tr td:first-child {
+    background-color: #fff;
+    width: 0.3375rem
+}
+
+.pure-table tr td.checked {
+    background-color: orange
+}
+
+
+/* 权限管理 */
+
+
+/* 菜单表部分 */
+
+.menutab {
+    border-bottom: 2px solid #26c5ff;
+    /* line-height: 0.5rem; */
+    background: #4C5465;
+    align-items: center;
+}
+
+.menutab a {
+    display: inline-block;
+    padding: 0.1125rem 0.2rem;
+    background: #616F8C;
+    /* line-height: 0.45rem; */
+    color: #fff;
+    border-top-left-radius: 6px;
+    border-top-right-radius: 6px;
+    font-size: 0.175rem;
+    margin: 0.025rem auto 0.0125rem;
+    cursor: pointer;
+    border: 1px solid #2e3746;
+}
+
+.menutab a.selected,
+.menutab a:hover {
+    background: #26C5FF
+}
+
+
+/* 单位信息 */
+
+.logo-img {
+    width: 0.2rem;
+    height: 0.2rem;
+    margin: 0 auto;
+    display: block;
+    background-image: url(../images/logo-img.png);
+    background-size: 100% 100%;
+}
+
+
+/* 事件中心 */
+
+.memberbox2 .member-choose input,
+.memberbox2 .member-choose select,
+.memberbox2 .member-choose option {
+    width: 1.75rem
+}
+
+.toTime {
+    display: inline-block;
+    margin: 0 0.125rem;
+    color: #fff
+}
+
+.event-count-box {
+    /* width: 100%; */
+    position: absolute;
+    top: 0.2rem;
+    text-align: left;
+}
+
+.event-count-box li {
+    text-align: center;
+    border: 1px solid red;
+    display: inline-block;
+    line-height: 0.775rem;
+    height: 0.775rem;
+    margin-right: 0.25rem;
+    border: 2px solid #0057ac;
+    padding: 0 0.125rem
+}
+
+.event-count-box li span {
+    vertical-align: middle;
+    color: #fff;
+    font-size: 0.175rem;
+}
+
+.event-count-box li img {
+    vertical-align: middle;
+    width: 0.375rem;
+    margin-right: 0.2rem;
+}
+
+.event-count-box li .event-num {
+    font-size: 0.35rem;
+}
+
+.view-detail,
+.interface-doc {
+    cursor: pointer;
+    text-decoration: underline;
+    color: #fff
+}
+
+.error-radio .layui-form-item {
+    display: inline-block;
+    margin-bottom: 0
+}
+
+.error-radio .layui-input-block {
+    margin-left: 0
+}
+
+.error-radio .layui-form-radio {
+    margin: 0;
+    width: 80px;
+    line-height: 20px;
+}
+
+.error-radio .layui-form-radioed>i,
+.error-radio .layui-form-radio>i:hover {
+    color: rgb(118, 118, 118)
+}
+
+.error-radio .layui-anim-scaleSpring {
+    -webkit-animation-name: none;
+    animation-name: none;
+}
+
+.error-radio .layui-input-block {
+    min-height: auto;
+}
+
+.error-radio .layui-form-radio>i {
+    font-size: 14px;
+}
+
+
+/* 设备检测弹框样式 */
+
+.layui-input-block {
+    margin-left: 0;
+}
+
+.layui-form-checkbox[lay-skin="primary"] span {
+    color: #fff
+}
+
+.checkallblock {
+    background: #31383F;
+    padding-left: 7px;
+    line-height: 30px
+}
+
+.checkselfblock {
+    background: #44474A;
+    padding: 10px 7px 40px;
+    /* height: 415px; */
+}
+
+.checkselfblock .layui-form-checkbox[lay-skin="primary"] {
+    width: 24%;
+    line-height: 30px
+}
+
+.checkselfblock .layui-form-checkbox {
+    margin-bottom: 10px
+}
+
+.layui-col-md4 {
+    /* padding:0;
+    margin:5px;
+    background:red; */
+}
+
+
+/* 资产管理弹框样式 */
+
+.layui-col-xs4.choose-item {
+    /* margin-bottom:20px */
+    margin-bottom: 10px
+}
+
+.layui-col-xs4.choose-item span {
+    width: 100px;
+    text-align: right;
+}
+
+
+/* 隐患管理 */
+
+.content-long {
+    width: 200px;
+    padding: 0 10px;
+    display: block;
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+}
+
+
+/* .over_one_line{
+    display: block;
+     */
+
+.systemLogoShow {
+    max-height: 100%;
+    height: 20px;
+}
+
+.layui-laydate td.layui-this {
+    background-color: #0057ac !important;
+    color: #fff !important;
+}
+
+
+/* 三级联动: */
+
+.outer {
+    width: 500px;
+    margin: 20px auto;
+}
+
+
+/* 资产二维码图片放大 */
+
+.enlargeImg {
+    height: 0.28rem;
+}
+
+.enlargeImg_wrapper {
+    display: none;
+    position: absolute;
+    z-index: 999;
+    top: 20%;
+    margin-top: -50px;
+    height: 200px;
+    width: 200px;
+    /* right: 0; */
+    /* bottom: 0; */
+    margin-left: -50px;
+    left: 50%;
+    background-repeat: no-repeat;
+    /* background-attachment: fixed; */
+    background-position: center;
+    background-color: rgba(0, 0, 0, .2);
+    background-size: 50%;
+}

+ 118 - 0
data/pie.json

@@ -0,0 +1,118 @@
+{
+    "pie": [{
+            "value": 500,
+            "name": "水系统"
+        },
+        {
+            "value": 1500,
+            "name": "烟雾"
+        },
+        {
+            "value": 1000,
+            "name": "火灾"
+        }
+
+    ],
+    "bar": {
+        "火灾设备": 30,
+        "水系统设备": 10,
+        "烟雾设备": 20
+    },
+    "line": {
+        "火灾": {
+            "12:00": 0,
+            "13:00": 5,
+            "14:00": 4,
+            "15:00": 8,
+            "16:00": 3,
+            "17:00": 5
+        },
+        "水系统": {
+            "12:00": 2,
+            "13:00": 3,
+            "14:00": 3,
+            "15:00": 7,
+            "16:00": 6,
+            "17:00": 3
+        },
+        "烟雾": {
+            "12:00": 4,
+            "13:00": 6,
+            "14:00": 3,
+            "15:00": 7,
+            "16:00": 9,
+            "17:00": 3
+        }
+    },
+    "handle": [{
+            "value": 3,
+            "name": "巡检人员数量"
+        },
+        {
+            "value": 10,
+            "name": "今日任务"
+        },
+        {
+            "value": 0,
+            "name": "超时任务"
+        }, {
+            "value": 8,
+            "name": "今日完成任务"
+        }
+
+    ],
+    "warning": {
+        "wait_handle": 10,
+        "is_handled": 30
+    },
+    "warningInfo": [{
+        "id": "1",
+        "time": "2020-12-15 15:22:12",
+        "type": "水位",
+        "details": "水位过高",
+        "status": 0
+    }, {
+        "id": "2",
+        "time": "2020-12-16 15:22:12",
+        "type": "水位",
+        "details": "水位过高",
+        "status": 1
+    }, {
+        "id": "3",
+        "time": "2020-12-17 15:22:12",
+        "type": "水位",
+        "details": "水位过高",
+        "status": 0
+    }, {
+        "id": "4",
+        "time": "2020-12-18 15:22:12",
+        "type": "水位",
+        "details": "水位过高",
+        "status": 1
+    }, {
+        "id": "5",
+        "time": "2020-12-19 15:22:12",
+        "type": "水位",
+        "details": "水位过高",
+        "status": 1
+    }, {
+        "id": "6",
+        "time": "2020-12-19 15:22:12",
+        "type": "水位",
+        "details": "水位过高",
+        "status": 1
+    }],
+    "Abnormal": [{
+        "id": "1",
+        "name": "任务111",
+        "status": 0,
+        "time": "2020-12-15 15:22"
+    }, {
+        "id": "2",
+        "name": "任务222",
+        "status": 1,
+        "time": "2020-12-16 15:22"
+    }]
+
+
+}

+ 284 - 0
deviceCheck-channel.html

@@ -0,0 +1,284 @@
+<!DOCTYPE html>
+<html lang="zh">
+
+<head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>设备管理(监测对象通道表)</title>
+    <link rel="shortcut icon" href="favicon.ico">
+    <link rel="stylesheet" href="layui/css/layui.css" />
+    <link rel="stylesheet" href="css/common.css" />
+    <link rel="stylesheet" href="css/per-manage.css" />
+    <script src="js/flexible.js"></script>
+</head>
+
+<body style="background-image:url(images/big-bg.png)">
+    <section class="mainbox ">
+        <div class="tit-box flex">
+            <h2 class="title flex2">设备管理
+
+            </h2>
+            <h2 class="title flex10">详细列表</h2>
+        </div>
+
+        <div class="content-box flex">
+
+            <div class="column column1 flex2">
+
+                <ul>
+                    <li><a href="deviceType.html">设备类型</a></li>
+                    <li><a href="deviceList.html">设备列表</a></li>
+                    <li><a href="deviceCommunicate.html">通信接口</a></li>
+                    <li><a href="deviceCheck.html">监测对象</a></li>
+                    <li class="selected"><a href="deviceCheck-channel.html">设备监测对象通道表</a></li>
+                </ul>
+            </div>
+
+            <div class="column3 flex10">
+                <div class="memberbox">
+                    <div class="membertit">设备监测对象通道表</div>
+                    <div class="member-choose">
+
+                        <span>监测对象名称</span>
+                        <input type="text" id="passageway_name">
+
+                        <span>通道类型名称</span>
+                        <input type="text" id="passageway_type_name">
+
+                        <a class="button" id="buttonSearch">确定</a>
+                        <a class="button reset">重置</a>
+                    </div>
+                    <div class="operatebox"></div>
+                    <ul class="member-operate">
+                        <a class="button edit">修改</a>
+                        <a class="button add">+ 新增</a>
+                        <a class="button delete ">- 删除</a>
+                        <a class="button">导出</a>
+
+                    </ul>
+
+
+                    <table class="pure-table" cellspacing="0px">
+                        <thead>
+                            <tr>
+                                <th style="width: 24px ">
+                                    <!-- <span class="checkall status"></span> -->
+                                </th>
+                                <th>序号</th>
+                                <th>监测对象名称</th>
+                                <th>通道类型名称</th>
+                                <th>系统类型名称</th>
+                                <th>单位名称</th>
+                                <th>创建人</th>
+                                <th>创建时间</th>
+
+                            </tr>
+                        </thead>
+
+                        <tbody id="dataList">
+                            <tr>
+                                <td class="status"></td>
+                                <td>1</td>
+                                <td>123456</td>
+                                <td>设备类型设备类型</td>
+                                <td>2020-09-14 12:15:23</td>
+                                <td>张三</td>
+                            </tr>
+
+
+
+                        </tbody>
+                    </table>
+                </div>
+
+                <div class="pager has-data flex">
+                    <div class="pager-left flex1 align-left">
+                        <ul>
+                            <li id="firstPageButton" class="pg-first disabled"></li>
+                            <li id="prevPageButton" class="pg-prev disabled"></li>
+                            <li class="pg-des">
+                                第 <input id="currentPage" type="text" size="1" value="1"> 页,共 <span id="totalPage">100</span> 页
+                            </li>
+                            <li id="nextPageButton" class="pg-next"></li>
+                            <li id="lastPageButton" class="pg-last"></li>
+                            <li class="pg-refresh">
+                                <a href="javascript:location.reload();"></a>
+                            </li>
+                        </ul>
+                    </div>
+                    <div class="pager-right  flex1 align-right">显示第 <span id="pageFrom"> 1 </span> 条到 <span id="pageTo">
+                            15 </span>条记录,总共 <span id="dataTotal">
+                            46 </span>条
+                    </div>
+
+
+                </div>
+                <div class="pager no-data" style="display:none;text-align:right">
+                    暂无数据
+
+
+                </div>
+
+
+            </div>
+        </div>
+
+    </section>
+
+
+    <div class="xcConfirm addDataOut" style="display:none">
+        <div class="xc_layer"></div>
+        <div class="popBox">
+            <form action="" id="addDataForm">
+                <div class="ttBox">
+                    <a class="clsBtn"></a>
+                    <span class="tt">新增</span>
+                </div>
+                <div class="txtBox">
+                    <div>
+                        <span>通道名称:<i class="necessary">*</i></span>
+                        <input type="text" name="passageway_name">
+                    </div>
+
+                    <div>
+                        <span>设备编号:<i class="necessary">*</i></span>
+                        <input type="text" name="device_code">
+                    </div>
+
+                    <div>
+                        <span>设备类型:<i class="necessary">*</i></span>
+                        <select name="dwtype" class="dwtype">
+                            <option value="1">火系统</option>
+                            <option value="2">水系统</option>
+                            <option value="3">烟感</option>
+                        </select>
+                    </div>
+
+                    <div>
+                        <span>通道类型:<i class="necessary">*</i></span>
+                        <div class="passageway_type_box" style="display:inline-block">
+
+                            <select name="passageway_type" id="passageway_type_add">
+                                <option class="passagewayTypeFirst" value="0" >通道报警</option>
+                                <option class="passagewayTypeFirst" value="1">主机报警</option>
+
+
+                                <option class="passagewayTypeSecond" value="1" >状态</option>
+                                <option class="passagewayTypeSecond" value="2">电量</option>
+                                <option class="passagewayTypeSecond" value="3">无线信号</option>
+                                <option class="passagewayTypeSecond" value="4">水压/水位</option>
+
+                                <option class="passagewayTypeThird" value="1" >状态</option>
+                                <option class="passagewayTypeThird" value="2">电量</option>
+                                <option class="passagewayTypeThird" value="3">无线信号</option>
+                            </select>
+
+                        </div>
+
+
+
+                    </div>
+
+                    <div>
+                        <span>所属单位:<i class="necessary">*</i></span>
+                        <select name="company_code" id="getNameList">
+                            <option value="">所有</option>
+                        </select>
+                    </div>
+                </div>
+            </form>
+
+            <div class="btnArea">
+                <div class="btnGroup">
+                    <a class="sgBtn ok" id="addData"><img src="images/accept.png" alt=""> 提交</a>
+                    <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                </div>
+            </div>
+        </div>
+    </div>
+
+
+    <div class="xcConfirm editDataOut" style="display:none">
+        <div class="xc_layer"></div>
+        <div class="popBox">
+            <form action="" id="editDataForm">
+                <div class="ttBox">
+                    <a class="clsBtn"></a>
+                    <span class="tt">修改</span>
+                </div>
+                <div class="txtBox">
+                    <div>
+                        <span>通道名称:<i class="necessary">*</i></span>
+                        <input type="text" name="passageway_name">
+                    </div>
+
+                    <div>
+                        <span>设备编号:<i class="necessary">*</i></span>
+                        <input type="text" name="device_code">
+                    </div>
+
+                    <div>
+                        <span>设备类型:<i class="necessary">*</i></span>
+                        <select name="dwtype" class="dwtype">
+                            <option value="1">火系统</option> 
+                            <option value="2">水系统</option>
+                            <option value="3">烟感</option>
+                        </select>
+                    </div>
+
+                    <div>
+                        <span>通道类型:<i class="necessary">*</i></span>
+                        <div class="passageway_type_box2" style="display:inline-block">
+
+                            <select name="passageway_type" id="passageway_type_edit">
+                                <option class="passagewayTypeFirst" value="0">通道报警</option>
+                                <option class="passagewayTypeFirst" value="1">主机报警</option>
+
+
+                                <option class="passagewayTypeSecond" value="1">状态</option>
+                                <option class="passagewayTypeSecond" value="2">电量</option>
+                                <option class="passagewayTypeSecond" value="3">无线信号</option>
+                                <option class="passagewayTypeSecond" value="4">水压/水位</option>
+
+                                <option class="passagewayTypeThird" value="1">状态</option>
+                                <option class="passagewayTypeThird" value="2">电量</option>
+                                <option class="passagewayTypeThird" value="3">无线信号</option>
+                            </select>
+
+
+
+                        </div>
+                    </div>
+
+
+
+                    <div style="opacity:0">
+                        <span>数据ID:<i class="necessary">*</i></span>
+                        <input type="hidden" name="id" readonly>
+                    </div>
+                </div>
+            </form>
+
+            <div class="btnArea">
+                <div class="btnGroup">
+                    <a class="sgBtn ok" id="dataUpdate"><img src="images/accept.png" alt=""> 提交</a>
+                    <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                </div>
+            </div>
+        </div>
+    </div>
+
+
+
+    <script src="js/jquery.js"></script>
+    <script src="js/util.js"></script>
+    <script src="api/request.js"></script>
+
+    <script src="js/main.js"></script>
+    <script src="layui/layui.js"></script>
+    <script src="js/valid.js"></script>
+    <script src="js/deviceCheck-channel.js"></script>
+
+</body>
+
+</html>

+ 398 - 0
deviceCheck.html

@@ -0,0 +1,398 @@
+<!DOCTYPE html>
+<html lang="zh">
+
+<head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>设备管理(监测对象)</title>
+    <link rel="shortcut icon" href="favicon.ico">
+    <link rel="stylesheet" href="layui/css/layui.css">
+    <link rel="stylesheet" href="css/common.css" />
+    <link rel="stylesheet" href="css/per-manage.css" />
+    <script src="js/flexible.js"></script>
+</head>
+
+<body style="background-image:url(images/big-bg.png)">
+    <section class="mainbox ">
+        <div class="tit-box flex">
+            <h2 class="title flex2">设备管理
+
+            </h2>
+            <h2 class="title flex10">详细列表</h2>
+        </div>
+
+        <div class="content-box flex">
+
+            <div class="column column1 flex2">
+
+                <ul>
+                    <li><a href="deviceType.html">设备类型</a></li>
+                    <li><a href="deviceList.html">设备列表</a></li>
+                    <li><a href="deviceCommunicate.html">通信接口</a></li>
+                    <li class="selected"><a href="deviceCheck.html">监测对象</a></li>
+                    <li><a href="deviceCheck-channel.html">设备监测对象通道表</a></li>
+                </ul>
+            </div>
+
+            <div class="column3 flex10">
+                <div class="memberbox">
+                    <div class="membertit">监测对象</div>
+                    <div class="member-choose layui-form">
+
+                        <span>对象名称</span>
+                        <input type="text" id="object_name">
+
+                        <span>添加时间</span>
+                        <div class="layui-inline">
+                            <input type="text" id="start_add_time" class="layui-input test-item" placeholder="所有" style="margin-right: 0 ">
+                        </div>
+
+                        <i class="toTime">~</i>
+
+                        <div class="layui-inline">
+                            <input type="text" id="end_add_time" class="layui-input test-item" placeholder="所有">
+                        </div>
+
+                        <a class="button" id="buttonClick">确定</a>
+                        <a class="button reset">重置</a>
+                    </div>
+                    <div class="operatebox"></div>
+                    <ul class="member-operate">
+                        <a class="button edit">修改</a>
+                        <a class="button add">+ 新增</a>
+                        <a class="button delete ">- 删除</a>
+                        <!-- <a class="button">导出</a> -->
+
+                    </ul>
+
+
+                    <table class="pure-table" cellspacing="0px">
+                        <thead>
+                            <tr>
+                                <th style="width: 24px ">
+                                    <!-- <span class="checkall status"></span> -->
+                                </th>
+                                <th>序号</th>
+                                <th>对象名称</th>
+                                <th>单位名称</th>
+                                <th>添加人/创建人</th>
+                                <th>添加时间/创建时间</th>
+                            </tr>
+                        </thead>
+
+                        <tbody id="dataList">
+                            <tr>
+                                <td class="status"></td>
+                                <td>1</td>
+                                <td>123456</td>
+                                <td>1234567889</td>
+                                <td>2020-09-14 12:15:23</td>
+                                <td>张三</td>
+                            </tr>
+
+
+
+                        </tbody>
+                    </table>
+                </div>
+
+                <div class="pager has-data flex">
+                    <div class="pager-left flex1 align-left">
+                        <ul>
+                            <li id="firstPageButton" class="pg-first disabled"></li>
+                            <li id="prevPageButton" class="pg-prev disabled"></li>
+                            <li class="pg-des">
+                                第 <input id="currentPage" type="text" size="1" value="1"> 页,共 <span id="totalPage">100</span> 页
+                            </li>
+                            <li id="nextPageButton" class="pg-next"></li>
+                            <li id="lastPageButton" class="pg-last"></li>
+                            <li class="pg-refresh">
+                                <a href="javascript:location.reload();"></a>
+                            </li>
+                        </ul>
+                    </div>
+                    <div class="pager-right  flex1 align-right">显示第 <span id="pageFrom"> 1 </span> 条到 <span id="pageTo">
+              15 </span>条记录,总共 <span id="dataTotal">
+              46 </span>条
+                    </div>
+
+
+                </div>
+                <div class="pager no-data" style="display:none;text-align:right">
+                    暂无数据
+
+
+                </div>
+
+
+            </div>
+        </div>
+
+    </section>
+
+    <div class="deviceCheckAdd addDataOut" style="display:none">
+        <div class="deviceCheckAdd-wrapper">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">详情</span>
+            </div>
+
+            <form action="" id="addDeviceCheckForm">
+
+                <div class="chooseArea">
+                    <div class="layui-row" style="margin-bottom:10px">
+                        <div class="layui-col-xs4">
+                            <div class="grid-demo grid-demo-bg1">
+                                <span>对象名称:<i class="necessary">*</i></span>
+                                <input type="text" name="object_name">
+                            </div>
+                        </div>
+                        <div class="layui-col-xs4">
+                            <div class="grid-demo">
+                                <span>单位:<i class="necessary">*</i></span>
+                                <select name="company_code" id="getNameList">
+                           </select>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-row">
+                        <div class="layui-col-xs4 ">
+                            <span>建筑:</span>
+                            <select name="build" id="getBuildingList">
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+                        <div class="layui-col-xs4 ">
+                            <span>楼层:</span>
+                            <select name="floor" id="getFloorList">
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+                        <div class="layui-col-xs4 ">
+                            <span>房间:</span>
+                            <select name="room" id="getRoomList">
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+                    </div>
+                </div>
+
+                <div class="layui-row layui-col-space10 layui-form">
+
+                    <div class="layui-col-md12">
+                        <div class="tree-tit">设备列表</div>
+
+                        <div class=" checkselfblock" id="checkselfblock">
+                            <!-- <input type="checkbox" name="like1[write]" lay-skin="primary" title="设备名称aaa">
+                            <input type="checkbox" name="like1[read]" lay-skin="primary" title="设备名称bbb">
+                            <input type="checkbox" name="like1[read]" lay-skin="primary" title="设备名称ccc">
+                            <input type="checkbox" name="like1[write]" lay-skin="primary" title="设备名称ddd">
+                            <input type="checkbox" name="like1[read]" lay-skin="primary" title="设备名称eee">
+                            <input type="checkbox" name="like1[read]" lay-skin="primary" title="设备名称fff"> -->
+                        </div>
+
+
+
+
+                    </div>
+
+                </div>
+
+            </form>
+
+
+
+
+        </div>
+        <div class="btnArea">
+            <div class="btnGroup">
+                <a id="addData" class="sgBtn ok"><img src="images/accept.png" alt=""> 提交</a>
+                <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+            </div>
+        </div>
+    </div>
+
+
+    <div class="deviceCheckAdd editDataOut" style="display:none">
+        <div class="deviceCheckAdd-wrapper">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">修改</span>
+            </div>
+
+            <form action="" id="editDeviceCheckForm">
+
+                <div class="chooseArea">
+                    <div class="layui-row" style="margin-bottom:10px">
+                        <div class="layui-col-xs4">
+                            <div class="grid-demo grid-demo-bg1">
+                                <span>对象名称:<i class="necessary">*</i></span>
+                                <input type="text" name="object_name">
+                            </div>
+                        </div>
+                        <div class="layui-col-xs4">
+                            <div class="grid-demo">
+                                <span>单位:<i class="necessary">*</i></span>
+                                <select name="company_code" id="getNameList2">
+                           </select>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-row">
+                        <div class="layui-col-xs4 ">
+                            <span>建筑:</span>
+                            <select name="build" id="getBuildingList2">
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+                        <div class="layui-col-xs4 ">
+                            <span>楼层:</span>
+                            <select name="floor" id="getFloorList2">
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+                        <div class="layui-col-xs4 ">
+                            <span>房间:</span>
+                            <select name="room" id="getRoomList2">
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+                    </div>
+                </div>
+
+                <div class="layui-row layui-col-space10 layui-form">
+
+                    <div class="layui-col-md12">
+                        <div class="tree-tit">设备列表</div>
+
+                        <div class=" checkselfblock" id="checkselfblock2">
+                            <!-- <input type="checkbox" name="like1[write]" lay-skin="primary" title="设备名称aaa">
+                            <input type="checkbox" name="like1[read]" lay-skin="primary" title="设备名称bbb">
+                            <input type="checkbox" name="like1[read]" lay-skin="primary" title="设备名称ccc">
+                            <input type="checkbox" name="like1[write]" lay-skin="primary" title="设备名称ddd">
+                            <input type="checkbox" name="like1[read]" lay-skin="primary" title="设备名称eee">
+                            <input type="checkbox" name="like1[read]" lay-skin="primary" title="设备名称fff"> -->
+                        </div>
+
+
+
+
+                    </div>
+
+                </div>
+
+                <div style="opacity:0">
+                    <span>数据id:</span>
+                    <input name="id" type="text" readonly="readonly">
+                </div>
+
+            </form>
+
+
+
+
+        </div>
+        <div class="btnArea">
+            <div class="btnGroup">
+                <a id="updataData" class="sgBtn ok"><img src="images/accept.png" alt=""> 提交</a>
+                <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+            </div>
+        </div>
+    </div>
+
+
+    <script src="js/jquery.js"></script>
+    <script src="js/util.js"></script>
+    <script src="api/request.js"></script>
+
+    <script src="js/main.js"></script>
+    <script src="layui/layui.js"></script>
+    <script src="js/valid.js"></script>
+    <script src="js/device-check.js"></script>
+
+
+
+    <script>
+        layui.use('laydate', function() {
+            var laydate = layui.laydate;
+
+
+            //开始日期
+            var insStart = laydate.render({
+                elem: '#start_add_time',
+                done: function(value, date) {
+                    //更新结束日期的最小日期
+                    insEnd.config.min = lay.extend({}, date, {
+                        month: date.month - 1
+                    });
+                    //自动弹出结束日期的选择器
+                    insEnd.config.elem[0].focus();
+                }
+            });
+
+            //结束日期
+            var insEnd = laydate.render({
+                elem: '#end_add_time',
+                done: function(value, date) {
+                    //更新开始日期的最大日期
+                    insStart.config.max = lay.extend({}, date, {
+                        month: date.month - 1
+                    });
+                }
+            });
+        });
+
+
+        layui.use(['tree', 'util'], function() {
+            var tree = layui.tree,
+                layer = layui.layer,
+                util = layui.util
+
+            //模拟数据
+            , data = dataDefaultTree
+
+
+
+            //基本演示
+            tree.render({
+                elem: '#test12',
+                data: data,
+                showCheckbox: true //是否显示复选框
+                    ,
+                id: 'demoId1',
+                isJump: true //是否允许点击节点时弹出新窗口跳转
+                    ,
+                checkChild: false,
+                click: function(obj) {
+                    var data = obj.data; //获取当前点击的节点数据
+                    layer.msg('状态:' + obj.state + '<br>节点数据:' + JSON.stringify(data));
+                }
+            });
+            tree.render({
+                elem: '#test13',
+                data: data,
+                showCheckbox: true //是否显示复选框
+                    ,
+                id: 'demoId1',
+                isJump: true //是否允许点击节点时弹出新窗口跳转
+                    ,
+                click: function(obj) {
+                    var data = obj.data; //获取当前点击的节点数据
+                    layer.msg('状态:' + obj.state + '<br>节点数据:' + JSON.stringify(data));
+                }
+            });
+
+
+
+
+        });
+    </script>
+
+
+</body>
+
+
+
+
+
+</html>

+ 330 - 0
deviceCommunicate.html

@@ -0,0 +1,330 @@
+<!DOCTYPE html>
+<html lang="zh">
+
+<head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>设备管理(通信接口)</title>
+    <link rel="shortcut icon" href="favicon.ico">
+    <link rel="stylesheet" href="layui/css/layui.css" />
+    <link rel="stylesheet" href="css/common.css" />
+    <link rel="stylesheet" href="css/per-manage.css" />
+    <script src="js/flexible.js"></script>
+</head>
+
+<body style="background-image:url(images/big-bg.png)">
+    <section class="mainbox ">
+        <div class="tit-box flex">
+            <h2 class="title flex2">设备管理
+
+            </h2>
+            <h2 class="title flex10">详细列表</h2>
+        </div>
+
+        <div class="content-box flex">
+
+            <div class="column column1 flex2">
+
+                <ul>
+                    <li><a href="deviceType.html">设备类型</a></li>
+                    <li><a href="deviceList.html">设备列表</a></li>
+                    <li class="selected"><a href="deviceCommunicate.html">通信接口</a></li>
+                    <li><a href="deviceCheck.html">监测对象</a></li>
+                    <li><a href="deviceCheck-channel.html">设备监测对象通道表</a></li>
+                </ul>
+            </div>
+
+            <div class="column3 flex10">
+                <div class="memberbox">
+                    <div class="membertit">通信接口</div>
+                    <div class="member-choose">
+
+                        <span>厂商名称</span>
+                        <input type="text" id="business">
+
+                        <span>传输方式</span>
+                        <select name="" id="interface_transmission_mode">
+                            <option value="">所有</option>
+                            <option value="1">NB-IOT</option>
+                            <option value="2">Lora-IOT</option>
+                            <option value="3">2G/4G/5G</option>
+                        </select>
+                        <!-- <input type="text"> -->
+
+
+                        <a class="button" id="buttonSearch">确定</a>
+                        <a class="button reset">重置</a>
+                    </div>
+                    <div class="operatebox"></div>
+                    <ul class="member-operate">
+                        <a class="button edit">修改</a>
+                        <a class="button add">+ 新增</a>
+                        <a class="button delete ">- 删除</a>
+                        <a class="button">导出</a>
+
+                    </ul>
+
+
+                    <table class="pure-table" cellspacing="0px">
+                        <thead>
+                            <tr>
+                                <th style="width: 24px ">
+                                    <!-- <span class="checkall status"></span> -->
+                                </th>
+                                <th>序号</th>
+                                <th>接口名称</th>
+                                <th>接口路径</th>
+                                <th>接口参数</th>
+                                <th>接口传输方式</th>
+                                <th>接口说明</th>
+                                <th>接口文档</th>
+                                <th>厂家(商家)</th>
+                                <th>添加人</th>
+                                <th>添加时间</th>
+                            </tr>
+                        </thead>
+
+                        <tbody id="dataList">
+                            <tr>
+                                <td class="status"></td>
+                                <td>1</td>
+                                <td>123456</td>
+                                <td>url地址地址地址</td>
+                                <td>XXXXXXXX</td>
+                                <td>XXXXXXXXXXX</td>
+                                <td>接口说明接口说明</td>
+                                <td><a class="interface-doc"> 接口文档</a> </td>
+                                <td>上海永天科技有限公司</td>
+                                <td>2020-09-14 12:15:23</td>
+                                <td>张三</td>
+                            </tr>
+
+                            <tr>
+                                <td class="status"></td>
+                                <td>2</td>
+                                <td>123456</td>
+                                <td>url地址地址地址</td>
+                                <td>XXXXXXXX</td>
+                                <td>XXXXXXXXXXX</td>
+                                <td>接口说明接口说明</td>
+                                <td><a class="interface-doc"> 接口文档</a> </td>
+                                <td>上海永天科技有限公司</td>
+                                <td>2020-09-14 12:15:23</td>
+                                <td>李四</td>
+                            </tr>
+
+                            <tr>
+                                <td class="status"></td>
+                                <td>3</td>
+                                <td>123456</td>
+                                <td>url地址地址地址</td>
+                                <td>XXXXXXXX</td>
+                                <td>XXXXXXXXXXX</td>
+                                <td>接口说明接口说明</td>
+                                <td><a class="interface-doc"> 接口文档</a> </td>
+                                <td>上海永天科技有限公司</td>
+                                <td>2020-09-14 12:15:23</td>
+                                <td>王五</td>
+                            </tr>
+
+                        </tbody>
+                    </table>
+                </div>
+
+                <div class="pager has-data flex">
+                    <div class="pager-left flex1 align-left">
+                        <ul>
+                            <li id="firstPageButton" class="pg-first disabled"></li>
+                            <li id="prevPageButton" class="pg-prev disabled"></li>
+                            <li class="pg-des">
+                                第 <input id="currentPage" type="text" size="1" value="1"> 页,共 <span id="totalPage">100</span> 页
+                            </li>
+                            <li id="nextPageButton" class="pg-next"></li>
+                            <li id="lastPageButton" class="pg-last"></li>
+                            <li class="pg-refresh">
+                                <a href="javascript:location.reload();"></a>
+                            </li>
+                        </ul>
+                    </div>
+                    <div class="pager-right  flex1 align-right">显示第 <span id="pageFrom"> 1 </span> 条到 <span id="pageTo">
+                            15 </span>条记录,总共 <span id="dataTotal">
+                            46 </span>条
+                    </div>
+
+
+                </div>
+                <div class="pager no-data" style="display:none;text-align:right">
+                    暂无数据
+
+
+                </div>
+
+
+            </div>
+        </div>
+
+    </section>
+
+
+    <div class="xcConfirm addDataOut" style="display:none">
+        <div class="xc_layer"></div>
+        <div class="popBox">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">新增</span>
+            </div>
+            <form action="" id="addDataForm">
+                <div class="txtBox">
+                    <div>
+                        <span>接口名称:<i class="necessary">*</i></span>
+                        <input type="text" name="interface_name">
+                    </div>
+                    <div>
+                        <span>接口路径:<i class="necessary">*</i></span>
+                        <input type="text" name="interface_route">
+                    </div>
+                    <div>
+                        <span>接口参数:<i class="necessary">*</i></span>
+                        <input type="text" name="interface_parameter">
+                    </div>
+                    <div>
+                        <span>接口传输方式:<i class="necessary">*</i></span>
+                        <select id="" name="interface_transmission_mode">
+                            <option value="1">NB-IOT</option>
+                            <option value="2">Lora-IOT</option>
+                            <option value="3">2G/4G/5G</option>
+                        </select>
+                    </div>
+                    <div>
+                        <span>所属厂家:<i class="necessary">*</i></span>
+                        <input type="text" name="business">
+                    </div>
+                    <div>
+                        <span>单位:<i class="necessary">*</i></span>
+                        <select id="getNameList" name="company_code">
+                            <option value="">所有</option>
+                        </select>
+                    </div>
+                    <div>
+                        <span>文件上传:<i class="necessary">*</i></span>
+                        <input type="file" name="file" id="addFile">
+                        <!-- <input type="hidden" name="interface_file_route"> -->
+                    </div>
+
+
+                    <div>
+                        <span>接口说明:<i class="necessary">*</i></span>
+                        <textarea name="interface_explain" id="" cols="20" rows="6"></textarea>
+                    </div>
+
+                </div>
+
+            </form>
+
+            <div class="btnArea">
+                <div class="btnGroup">
+                    <a class="sgBtn ok" id="addDataButton"><img src="images/accept.png" alt=""> 提交</a>
+                    <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                </div>
+            </div>
+        </div>
+    </div>
+
+
+    <div class="xcConfirm editDataOut" style="display:none">
+        <div class="xc_layer"></div>
+        <div class="popBox">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">修改</span>
+            </div>
+            <form action="" id="editDataForm">
+                <div class="txtBox">
+                    <div>
+                        <span>接口名称:<i class="necessary">*</i></span>
+                        <input type="text" name="interface_name">
+                    </div>
+                    <div>
+                        <span>接口路径:<i class="necessary">*</i></span>
+                        <input type="text" name="interface_route">
+                    </div>
+                    <div>
+                        <span>接口参数:<i class="necessary">*</i></span>
+                        <input type="text" name="interface_parameter">
+                    </div>
+                    <div>
+                        <span>接口传输方式:<i class="necessary">*</i></span>
+                        <select id="" name="interface_transmission_mode">
+                            <option value="1">NB-IOT</option>
+                            <option value="2">Lora-IOT</option>
+                            <option value="3">2G/4G/5G</option>
+                        </select>
+                    </div>
+                    <div>
+                        <span>所属厂家:<i class="necessary">*</i></span>
+                        <input type="text" name="business">
+                    </div>
+                    <!-- <div>
+                        <span>单位:</span>
+                        <select id="getNameList"  name="company_code">
+                            <option value="">所有</option>
+                        </select>
+                    </div> -->
+                    <div>
+                        <span>文件上传:</span>
+                        <input type="file" name="file" id="interface_file_route">
+                        <input type="hidden" name="interface_file_route">
+                    </div>
+                    <div>
+                        <span></span>
+                        <div style="display:inline-block">
+                            <!-- <img style="display: none;" src="" id="systemLogoShow" class="systemLogoShow"> -->
+                            <a href="" id="deviceFileShow" class="deviceFileShow" style="display: none;color:#fff" target=_blank>查看文件</a>
+                        </div>
+                    </div>
+                    <div>
+                        <span>接口说明:</span>
+                        <textarea name="interface_explain" cols="20" rows="6"></textarea>
+                    </div>
+
+                    <div style="opacity:0">
+                        <span>数据ID:<i class="necessary">*</i></span>
+                        <input type="hidden" name="id" readonly>
+                    </div>
+
+                    <div style="opacity:0">
+                        <span>文档路径:<i class="necessary">*</i></span>
+                        <input type="hidden" name="interface_file_route" readonly>
+                    </div>
+
+                </div>
+
+            </form>
+
+            <div class="btnArea">
+                <div class="btnGroup">
+                    <a class="sgBtn ok" id="editDataButton"><img src="images/accept.png" alt=""> 提交</a>
+                    <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                </div>
+            </div>
+        </div>
+    </div>
+
+
+
+    <script src="js/jquery.js"></script>
+    <script src="js/util.js"></script>
+    <script src="api/request.js"></script>
+    <!-- <script src="js/per-manage.js"></script> -->
+
+    <script src="js/main.js"></script>
+    <script src="layui/layui.js"></script>
+    <script src="js/valid.js"></script>
+    <script src="js/device-communicate.js"></script>
+    <script src="js/upload.js"></script>
+
+
+
+</body>
+
+</html>

+ 408 - 0
deviceList.html

@@ -0,0 +1,408 @@
+<!DOCTYPE html>
+<html lang="zh">
+
+<head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>设备管理(设备列表)</title>
+    <link rel="shortcut icon" href="favicon.ico">
+    <link rel="stylesheet" href="layui/css/layui.css" />
+    <link rel="stylesheet" href="css/common.css" />
+    <link rel="stylesheet" href="css/per-manage.css" />
+    <script src="js/flexible.js"></script>
+</head>
+
+<body style="background-image:url(images/big-bg.png)">
+    <section class="mainbox ">
+        <div class="tit-box flex">
+            <h2 class="title flex2">设备管理
+
+            </h2>
+            <h2 class="title flex10">详细列表</h2>
+        </div>
+
+        <div class="content-box flex">
+
+            <div class="column column1 flex2">
+
+                <ul>
+                    <li><a href="deviceType.html">设备类型</a></li>
+                    <li class="selected"><a href="deviceList.html">设备列表</a></li>
+                    <li><a href="deviceCommunicate.html">通信接口</a></li>
+                    <li><a href="deviceCheck.html">监测对象</a></li>
+                    <li><a href="deviceCheck-channel.html">设备监测对象通道表</a></li>
+                </ul>
+            </div>
+
+            <div class="column3 flex10">
+                <div class="memberbox">
+                    <div class="membertit">设备列表</div>
+                    <div class="member-choose">
+
+                        <span>设备名称</span>
+                        <input type="text" id="ownerName">
+
+
+                        <span>创建时间</span>
+                        <div class="layui-inline">
+                            <input type="text" id="startTime" class="layui-input test-item" placeholder="所有" style="margin-right: 0 ">
+                        </div>
+                        <i class="toTime">~</i>
+                        <div class="layui-inline">
+                            <input type="text" id="endTime" class="layui-input test-item" placeholder="所有">
+                        </div>
+
+
+                        <a class="button" id="buttonClick">确定</a>
+                        <a class="button reset">重置</a>
+                    </div>
+                    <div class="operatebox"></div>
+                    <ul class="member-operate">
+                        <a class="button edit">修改</a>
+                        <a class="button add">+ 新增</a>
+                        <a class="button delete ">- 删除</a>
+                        <a class="button export">导出</a>
+
+                    </ul>
+
+
+                    <table class="pure-table" cellspacing="0px">
+                        <thead>
+                            <tr>
+                                <th>
+                                    <!-- <span class="checkall status"></span> -->
+                                </th>
+                                <th>设备编号</th>
+                                <th>设备名称</th>
+                                <!-- <th>sim卡</th> -->
+                                <th>设备类型</th>
+                                <th>添加人</th>
+                                <th>添加时间</th>
+
+                            </tr>
+                        </thead>
+
+                        <tbody id="dataList">
+
+
+                        </tbody>
+                    </table>
+                </div>
+
+                <div class="pager has-data flex">
+                    <div class="pager-left flex1 align-left">
+                        <ul>
+                            <li id="firstPageButton" class="pg-first disabled"></li>
+                            <li id="prevPageButton" class="pg-prev disabled"></li>
+                            <li class="pg-des">
+                                第 <input id="currentPage" type="text" size="1" value="1"> 页,共 <span id="totalPage">100</span> 页
+                            </li>
+                            <li id="nextPageButton" class="pg-next"></li>
+                            <li id="lastPageButton" class="pg-last"></li>
+                            <li class="pg-refresh">
+                                <a href="javascript:location.reload();"></a>
+                            </li>
+                        </ul>
+                    </div>
+                    <div class="pager-right  flex1 align-right">显示第 <span id="pageFrom"> 1 </span> 条到 <span id="pageTo">
+                            15 </span>条记录,总共 <span id="dataTotal">
+                            46 </span>条
+                    </div>
+
+
+                </div>
+                <div class="pager no-data" style="display:none;text-align:right">
+                    暂无数据
+
+
+                </div>
+
+
+            </div>
+        </div>
+
+    </section>
+
+    <!-- 列表新增 -->
+    <div class="deviceCheckAdd addDeviceListOut" style="display:none">
+        <div class="deviceCheckAdd-wrapper">
+            <div class="ttBox">
+                <span class="clsBtn"></span>
+                <span class="tt">新增</span>
+            </div>
+            <form action="" id="addDataForm">
+
+                <div class="chooseArea">
+                    <div class="layui-row">
+
+                        <div class="layui-col-xs4 choose-item">
+                            <span>设备编号:<i class="necessary">*</i></span>
+                            <input type="text" name="ownerCode">
+                        </div>
+                        <div class="layui-col-xs4 choose-item">
+                            <span>设备名称:<i class="necessary">*</i></span>
+                            <input type="text" name="ownerName">
+                        </div>
+                        <div class="layui-col-xs4 choose-item">
+                            <span>安装位置:<i class="necessary">*</i></span>
+                            <input type="text" name="unitinfo">
+                        </div>
+
+
+                        <div class="layui-col-xs4 choose-item">
+                            <span>建筑:<i class="necessary">*</i></span>
+                            <select name="ownerXh" id="getBuildingList">
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+                        <div class="layui-col-xs4 choose-item">
+                            <span>楼层:</span>
+                            <select name="louyu" id="getFloorList">
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+                        <div class="layui-col-xs4 choose-item">
+                            <span>房间:</span>
+                            <select name="rtmp" id="getRoomList">
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+
+                        <div class="layui-col-xs4 choose-item">
+                            <span>省:<i class="necessary">*</i></span>
+                            <select name="addr1" id="province">  
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+                        <div class="layui-col-xs4 choose-item">
+                            <span>市:<i class="necessary">*</i></span>
+                            <select name="addr2" id="city">  
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+                        <div class="layui-col-xs4 choose-item">
+                            <span>区、县:</span>
+                            <select name="addr3" id="town">  
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+                        <div class="layui-col-xs4 choose-item">
+                            <span>详细地址:<i class="necessary">*</i></span>
+                            <input type="text" name="address">
+                        </div>
+
+
+                        <div class="layui-col-xs4 choose-item">
+                            <span>GIS坐标:<i class="necessary">*</i></span>
+                            <input type="text" name="posistion">
+                        </div>
+
+                        <div class="layui-col-xs4 choose-item">
+                            <span>设备类型:<i class="necessary">*</i></span>
+                            <select name="dwtype" id="getTypeList">
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+
+                        <div class="layui-col-xs4 choose-item">
+                            <span>所属单位:<i class="necessary">*</i></span>
+                            <select name="company" id="getCompanyList">
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+
+                        <div class="layui-col-xs4 choose-item">
+                            <span>传输方式:<i class="necessary">*</i></span>
+                            <input type="text" name="transferType">
+                        </div>
+
+                    </div>
+                </div>
+
+            </form>
+
+
+
+
+
+
+        </div>
+        <div class="btnArea">
+            <div class="btnGroup">
+                <a id="addData" class="sgBtn ok"><img src="images/accept.png" alt=""> 提交</a>
+                <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+            </div>
+        </div>
+    </div>
+
+
+    <!-- 列表修改 -->
+    <div class="deviceCheckAdd editDeviceListOut" style="display:none">
+        <div class="deviceCheckAdd-wrapper">
+            <div class="ttBox">
+                <span class="clsBtn"></span>
+                <span class="tt">修改</span>
+            </div>
+            <form action="" id="updateForm">
+
+                <div class="chooseArea">
+                    <div class="layui-row">
+
+                        <div class="layui-col-xs4 choose-item">
+                            <span>设备编号:<i class="necessary">*</i></span>
+                            <input type="text" name="ownerCode" readonly>
+                        </div>
+                        <div class="layui-col-xs4 choose-item">
+                            <span>设备名称:<i class="necessary">*</i></span>
+                            <input type="text" name="ownerName">
+                        </div>
+                        <div class="layui-col-xs4 choose-item">
+                            <span>安装位置:<i class="necessary">*</i></span>
+                            <input type="text" name="unitinfo">
+                        </div>
+
+
+                        <div class="layui-col-xs4 choose-item">
+                            <span>建筑:</span>
+                            <select name="ownerXh" id="getBuildingList2">
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+                        <div class="layui-col-xs4 choose-item">
+                            <span>楼层:</span>
+                            <select name="louyu" id="getFloorList2">
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+                        <div class="layui-col-xs4 choose-item">
+                            <span>房间:</span>
+                            <select name="rtmp" id="getRoomList2">
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+
+                        <div class="layui-col-xs4 choose-item">
+                            <span>省:<i class="necessary">*</i></span>
+                            <select name="addr1" id="province2">  
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+                        <div class="layui-col-xs4 choose-item">
+                            <span>市:<i class="necessary">*</i></span>
+                            <select name="addr2" id="city2">  
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+                        <div class="layui-col-xs4 choose-item">
+                            <span>区、县:</span>
+                            <select name="addr3" id="town2">  
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+                        <div class="layui-col-xs4 choose-item">
+                            <span>详细地址:<i class="necessary">*</i></span>
+                            <input type="text" name="address">
+                        </div>
+
+
+                        <div class="layui-col-xs4 choose-item">
+                            <span>GIS坐标:<i class="necessary">*</i></span>
+                            <input type="text" name="posistion">
+                        </div>
+
+                        <div class="layui-col-xs4 choose-item">
+                            <span>设备类型:<i class="necessary">*</i></span>
+                            <select name="dwtype" id="getTypeList2">
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+
+                        <div class="layui-col-xs4 choose-item">
+                            <span>所属单位:<i class="necessary">*</i></span>
+                            <select name="company" id="getCompanyList2">
+                                <option value="">请选择</option>
+                            </select>
+                        </div>
+
+                        <div class="layui-col-xs4 choose-item">
+                            <span>传输方式:<i class="necessary">*</i></span>
+                            <input type="text" name="transferType">
+                        </div>
+                        <div class="layui-col-xs4 choose-item" style="opacity:0">
+                            <span>设备状态:<i class="necessary">*</i></span>
+                            <input type="text" name="hls">
+                        </div>
+                        <!-- <div class="layui-col-xs4 choose-item" style="opacity:0">
+                            <span>设备编号:<i class="necessary">*</i></span>
+                            <input type="text" name="ownerCode">
+                        </div> -->
+
+
+                    </div>
+                </div>
+
+            </form>
+
+        </div>
+        <div class="btnArea">
+            <div class="btnGroup">
+                <a id="dataUpdate" class="sgBtn ok"><img src="images/accept.png" alt=""> 提交</a>
+                <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+            </div>
+        </div>
+    </div>
+
+
+
+    <script src="js/jquery.js"></script>
+    <script src="js/util.js"></script>
+    <script src="api/request.js"></script>
+
+    <script src="js/main.js"></script>
+    <script src="layui/layui.js"></script>
+    <script src="js/valid.js"></script>
+    <script src="plugin/threeLinkArea/area.js"></script>
+    <script src="plugin/threeLinkArea/select.js"></script>
+    <script src="js/device-list.js"></script>
+
+
+
+    <script>
+        layui.use(['form', 'layedit', 'laydate'], function() {
+            var form = layui.form,
+                layer = layui.layer,
+                layedit = layui.layedit,
+                laydate = layui.laydate;
+
+            //开始日期
+            var insStart = laydate.render({
+                elem: '#startTime',
+                done: function(value, date) {
+                    //更新结束日期的最小日期
+                    insEnd.config.min = lay.extend({}, date, {
+                        month: date.month - 1
+                    });
+                    //自动弹出结束日期的选择器
+                    insEnd.config.elem[0].focus();
+                }
+            });
+
+            //结束日期
+            var insEnd = laydate.render({
+                elem: '#endTime',
+                done: function(value, date) {
+                    //更新开始日期的最大日期
+                    insStart.config.max = lay.extend({}, date, {
+                        month: date.month - 1
+                    });
+                }
+            });
+
+
+
+        });
+    </script>
+
+</body>
+
+</html>

+ 233 - 0
deviceType.html

@@ -0,0 +1,233 @@
+<!DOCTYPE html>
+<html lang="zh">
+
+<head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>设备管理(设备类型)</title>
+    <link rel="shortcut icon" href="favicon.ico">
+    <link rel="stylesheet" href="layui/css/layui.css" />
+    <link rel="stylesheet" href="css/common.css" />
+    <link rel="stylesheet" href="css/per-manage.css" />
+    <script src="js/flexible.js"></script>
+</head>
+
+<body style="background-image:url(images/big-bg.png)">
+    <section class="mainbox ">
+        <div class="tit-box flex">
+            <h2 class="title flex2">设备管理
+
+            </h2>
+            <h2 class="title flex10">详细列表</h2>
+        </div>
+
+        <div class="content-box flex">
+
+            <div class="column column1 flex2">
+
+                <ul>
+                    <li class="selected"><a href="deviceType.html">设备类型</a></li>
+                    <li><a href="deviceList.html">设备列表</a></li>
+                    <li><a href="deviceCommunicate.html">通信接口</a></li>
+                    <li><a href="deviceCheck.html">监测对象</a></li>
+                    <li><a href="deviceCheck-channel.html">设备监测对象通道表</a></li>
+                </ul>
+            </div>
+
+            <div class="column3 flex10">
+                <div class="memberbox">
+                    <div class="membertit">设备类型</div>
+                    <div class="member-choose">
+
+                        <span>厂家</span>
+                        <input type="text" id="business">
+
+                        <span>类型值</span>
+                        <input type="text" id="type_value">
+
+
+                        <a class="button" id="buttonClick">确定</a>
+                        <a class="button reset">重置</a>
+                    </div>
+                    <div class="operatebox"></div>
+                    <ul class="member-operate">
+                        <a class="button edit">修改</a>
+                        <a class="button add">+ 新增</a>
+                        <a class="button delete ">- 删除</a>
+                        <a class="button">导出</a>
+
+                    </ul>
+
+
+                    <table class="pure-table " cellspacing="0px" id="test">
+                        <thead>
+                            <tr>
+                                <th style="width: 24px ">
+                                    <!-- <span class="checkall status"></span> -->
+                                </th>
+                                <th>序号</th>
+                                <th>类型名称</th>
+                                <th>类型参数</th>
+                                <th>传输方式</th>
+                                <th>厂家(商家)</th>
+                                <th>所属单位</th>
+                                <th>添加人</th>
+                                <th>添加时间</th>
+                            </tr>
+                        </thead>
+
+                        <tbody id="dataList">
+
+
+                        </tbody>
+                    </table>
+                </div>
+
+                <div class="pager has-data flex">
+                    <div class="pager-left flex1 align-left">
+                        <ul>
+                            <li id="firstPageButton" class="pg-first disabled"></li>
+                            <li id="prevPageButton" class="pg-prev disabled"></li>
+                            <li class="pg-des">
+                                第 <input id="currentPage" type="text" size="1" value="1"> 页,共 <span id="totalPage">100</span> 页
+                            </li>
+                            <li id="nextPageButton" class="pg-next"></li>
+                            <li id="lastPageButton" class="pg-last"></li>
+                            <li class="pg-refresh">
+                                <a href="javascript:location.reload();"></a>
+                            </li>
+                        </ul>
+                    </div>
+                    <div class="pager-right  flex1 align-right">显示第 <span id="pageFrom"> 1 </span> 条到 <span id="pageTo">
+                            15 </span>条记录,总共 <span id="dataTotal">
+                            46 </span>条
+                    </div>
+                </div>
+                <div class="pager no-data" style="display:none;text-align:right">
+                    暂无数据
+                </div>
+            </div>
+        </div>
+
+    </section>
+
+    <!-- 新增 -->
+    <div class="xcConfirm addDeviceTypeOut" style="display:none">
+        <div class="xc_layer"></div>
+        <div class="popBox">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">新增</span>
+            </div>
+            <form id="addMenuForm">
+                <div class="txtBox">
+                    <div>
+                        <span>类型名称:<i class="necessary">*</i></span>
+                        <input type="text" name="type_name">
+                    </div>
+                    <div>
+                        <span>类型参数:<i class="necessary">*</i></span>
+                        <input type="text" name="type_value">
+                    </div>
+                    <div>
+                        <span>传输方式:<i class="necessary">*</i></span>
+                        <select name="transmission_model">
+                            <option value="">所有</option>
+                            <option value="1">NB-IOT</option>
+                            <option value="2">Lora-IOT</option>
+                            <option value="3">2G/4G/5G</option>
+                        </select>
+                    </div>
+                    <div>
+                        <span>厂家(商家):<i class="necessary">*</i></span>
+                        <input type="text" name="business">
+                    </div>
+                    <div>
+                        <span>所属单位:<i class="necessary">*</i></span>
+                        <select id="getNameList" name="company_code">
+                            <option value="">所有</option>
+                        </select>
+                    </div>
+
+                </div>
+                <div class="btnArea">
+                    <div class="btnGroup">
+                        <a class="sgBtn ok" id="addMenu"><img src="images/accept.png" alt=""> 提交</a>
+                        <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                    </div>
+                </div>
+            </form>
+
+        </div>
+    </div>
+
+    <!-- 修改 -->
+    <div class="xcConfirm editDeviceTypeOut" style="display:none">
+        <div class="xc_layer"></div>
+        <div class="popBox">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">修改</span>
+            </div>
+            <form id="updateMenuForm">
+                <div class="txtBox">
+
+                    <div>
+                        <span>类型名称:<i class="necessary">*</i></span>
+                        <input type="text" name="type_name">
+                    </div>
+                    <div>
+                        <span>类型参数:<i class="necessary">*</i></span>
+                        <input type="text" name="type_value">
+                    </div>
+                    <div>
+                        <span>传输方式:<i class="necessary">*</i></span>
+                        <select name="transmission_model">
+                            
+                            <option value="1">NB-IOT</option>
+                            <option value="2">Lora-IOT</option>
+                            <option value="3">2G/4G/5G</option>
+                        </select>
+                    </div>
+                    <div>
+                        <span>厂家(商家):<i class="necessary">*</i></span>
+                        <input type="text" name="business">
+                    </div>
+                    <!-- <div>
+                        <span>所属单位:<i class="necessary">*</i></span>
+                        <select id="getNameList2" name="company_code">
+                            <option value="">所有</option>
+                        </select>
+                    </div> -->
+                    <div style="opacity:0">
+                        <span>数据ID:<i class="necessary">*</i></span>
+                        <input type="hidden" name="id" readonly>
+                    </div>
+
+                </div>
+                <div class="btnArea">
+                    <div class="btnGroup">
+                        <a class="sgBtn ok" id="dataUpdate"><img src="images/accept.png" alt=""> 提交</a>
+                        <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                    </div>
+                </div>
+            </form>
+
+        </div>
+    </div>
+
+
+
+
+    <script src="js/jquery.js"></script>
+    <script src="js/util.js"></script>
+    <script src="api/request.js"></script>
+
+    <script src="js/main.js"></script>
+    <script src="layui/layui.js"></script>
+    <script src="js/valid.js"></script>
+    <script src="js/device-type.js"></script>
+
+</body>
+
+</html>

+ 308 - 0
eventDanger-manage.html

@@ -0,0 +1,308 @@
+<!DOCTYPE html>
+<html lang="zh">
+
+<head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>事件中心(隐患管理)</title>
+    <link rel="shortcut icon" href="favicon.ico">
+
+    <link rel="stylesheet" href="layui/css/layui.css">
+    <link rel="stylesheet" href="css/common.css" />
+    <link rel="stylesheet" href="css/per-manage.css" />
+
+    <script src="js/flexible.js"></script>
+
+</head>
+
+<body style="background-image:url(images/big-bg.png)">
+    <section class="mainbox ">
+        <div class="tit-box flex">
+            <h2 class="title flex2">事件中心
+
+            </h2>
+            <h2 class="title flex10">详细列表</h2>
+        </div>
+
+        <div class="content-box flex">
+
+            <div class="column column1 flex2">
+
+                <ul>
+                    <li class="selected"><a href="eventDanger-manage.html">隐患管理</a></li>
+                    <li><a href="eventWarning-manage.html">告警管理</a></li>
+                    <li><a href="eventEvent-manage.html">事件管理</a></li>
+                </ul>
+            </div>
+
+            <div class="column3 flex10">
+                <div class="memberbox ">
+                    <div class="membertit">隐患管理</div>
+                    <div class="member-choose">
+                        <span>开始时间</span>
+                        <div class="layui-inline">
+                            <input type="text" id="time_start" class="layui-input test-item" placeholder="所有">
+                        </div>
+
+                        <span>结束时间</span>
+
+                        <div class="layui-inline">
+                            <input type="text" id="time_end" class="layui-input test-item" placeholder="所有">
+                        </div>
+
+                        <span>处理状态</span>
+                        <select name="" id="clzt">
+                            <option value="">所有</option>
+                            <option value="1">已处理</option>
+                            <option value="0">未处理</option>
+                        </select>
+
+                        <a class="button" id="buttonSearch">确定</a>
+                        <a class="button reset">重置</a>
+                    </div>
+                    <div class="operatebox"></div>
+                    <ul class="member-operate">
+                        <div class="event-count-box">
+                            <ul>
+                                <li class="color-blue">
+                                    <img src="images/event-icon1.png" alt="">
+                                    <span>事件总数</span>
+                                    <span class="event-num color-blue" id="totalCount">125</span>
+                                </li>
+                                <li class="color-orange">
+                                    <img src="images/event-icon2.png" alt="">
+                                    <span>已处置数</span>
+                                    <span class="event-num color-orange" id="handled">123</span>
+                                </li>
+                                <li class="color-red">
+                                    <img src="images/event-icon3.png" alt="">
+                                    <span>未处置数</span>
+                                    <span class="event-num color-red" id="unhandle">122</span>
+                                </li>
+                                <li class="color-green">
+                                    <img src="images/event-icon4.png" alt="">
+                                    <span>处置率</span>
+                                    <span class="event-num color-green" id="handleRate">99.2%</span>
+                                </li>
+                            </ul>
+                        </div>
+                        <a class="button handle">处置</a>
+                        <a class="button">导出</a>
+
+                    </ul>
+
+
+                    <table class="pure-table" cellspacing="0px">
+                        <thead>
+                            <tr>
+                                <th style="width:24px">
+                                    <!-- <span class="checkall status"></span> -->
+                                </th>
+                                <th>序号</th>
+                                <th>单位名称</th>
+                                <th>上报时间</th>
+                                <th>报告数据</th>
+                                <th>告警值</th>
+                                <th style="width:200px">报告内容</th>
+                                <th>处理状态</th>
+                                <th>处理人</th>
+                                <th>处理时间</th>
+                            </tr>
+                        </thead>
+
+                        <tbody id="dataList">
+
+
+                        </tbody>
+                    </table>
+                </div>
+
+                <div class="pager has-data flex">
+                    <div class="pager-left flex1 align-left">
+                        <ul>
+                            <li id="firstPageButton" class="pg-first disabled"></li>
+                            <li id="prevPageButton" class="pg-prev disabled"></li>
+                            <li class="pg-des">
+                                第 <input id="currentPage" type="text" size="1" value="1"> 页,共 <span id="totalPage">100</span> 页
+                            </li>
+                            <li id="nextPageButton" class="pg-next"></li>
+                            <li id="lastPageButton" class="pg-last"></li>
+                            <li class="pg-refresh">
+                                <a href="javascript:location.reload();"></a>
+                            </li>
+                        </ul>
+                    </div>
+                    <div class="pager-right  flex1 align-right">显示第 <span id="pageFrom"> 1 </span> 条到 <span id="pageTo">
+                            15 </span>条记录,总共 <span id="dataTotal">
+                            46 </span>条
+                    </div>
+
+
+                </div>
+                <div class="pager no-data" style="display:none;text-align:right">
+                    暂无数据
+
+
+                </div>
+
+
+            </div>
+        </div>
+
+    </section>
+
+
+    <div class="xcConfirm handleDataOut" style="display:none">
+        <!-- 处置弹框 -->
+        <div class="popBox">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">处置详情</span>
+            </div>
+            <form action="" id="handleDataForm">
+                <div class="txtBox ">
+                    <div>
+                        <span>单位名称:</span>
+                        <input type="text" name="company_name" readonly>
+                    </div>
+
+                    <div>
+                        <span>设备名称:</span>
+                        <input type="text" name="name" readonly>
+                    </div>
+
+                    <div>
+                        <span>报告数据:</span>
+                        <input type="text" name="data" readonly>
+                    </div>
+
+                    <div class="error-radio layui-form">
+                        <span>误报:</span>
+                        <div class="layui-form-item">
+                            <div class="layui-input-block">
+
+                                <input id="yes" type="radio" name="clwb" value="1" title="是" checked>
+                                <input id="no" type="radio" name="clwb" value="0" title="否">
+                            </div>
+                        </div>
+                    </div>
+                    <div class="error-radio layui-form handle-range">
+                        <span>处理范围:</span>
+                        <div class="layui-form-item">
+                            <div class="layui-input-block">
+
+                                <input type="radio" name="clwb1" value="" title="批量" checked>
+                                <input type="radio" name="clwb1" value="" title="单一">
+                            </div>
+                        </div>
+                    </div>
+                    <div>
+                        <span>处理内容:</span>
+                        <textarea name="clnr" id="" cols="10" rows="5"></textarea>
+                    </div>
+
+                    <div style="opacity:0">
+                        <span>数据id:</span>
+                        <input type="text" name="id">
+                    </div>
+
+                    <div style="opacity:0">
+                        <span>设备类型:</span>
+                        <input type="text" name="dwtype">
+                    </div>
+
+                    <div style="opacity:0">
+                        <span>数据上报状态:</span>
+                        <input type="text" name="status">
+                    </div>
+
+
+                    <div style="opacity:0">
+                        <span>设备编号:</span>
+                        <input type="text" name="device_code">
+                    </div>
+
+
+
+
+                </div>
+            </form>
+
+            <div class="btnArea">
+                <div class="btnGroup">
+                    <a class="sgBtn ok" id="handleUpdate"><img src="images/accept.png" alt=""> 提交</a>
+                    <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                </div>
+            </div>
+        </div>
+
+    </div>
+
+
+
+
+    <script src="js/jquery.js"></script>
+    <script src="js/util.js"></script>
+    <script src="api/request.js"></script>
+
+
+    <script src="js/main.js"></script>
+    <script src="layui/layui.js"></script>
+    <script src="js/valid.js"></script>
+    <script src="js/eventDanger-manage.js"></script>
+    <script>
+        layui.use(['form', 'layedit', 'laydate'], function() {
+            var form = layui.form,
+                layer = layui.layer,
+                layedit = layui.layedit,
+                laydate = layui.laydate;
+
+
+
+        });
+
+
+
+
+        layui.use('laydate', function() {
+            var laydate = layui.laydate;
+
+
+            //开始日期
+            var insStart = laydate.render({
+                elem: '#time_start',
+                done: function(value, date) {
+                    //更新结束日期的最小日期
+                    insEnd.config.min = lay.extend({}, date, {
+                        month: date.month - 1
+                    });
+                    //自动弹出结束日期的选择器
+                    insEnd.config.elem[0].focus();
+                }
+            });
+
+            //结束日期
+            var insEnd = laydate.render({
+                elem: '#time_end',
+                done: function(value, date) {
+                    //更新开始日期的最大日期
+                    insStart.config.max = lay.extend({}, date, {
+                        month: date.month - 1
+                    });
+                }
+            });
+
+
+
+
+        });
+    </script>
+
+
+
+
+
+
+</body>
+
+</html>

+ 291 - 0
eventEvent-manage.html

@@ -0,0 +1,291 @@
+<!DOCTYPE html>
+<html lang="zh">
+
+<head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>事件中心(事件管理)</title>
+    <link rel="shortcut icon" href="favicon.ico">
+
+    <link rel="stylesheet" href="layui/css/layui.css">
+    <link rel="stylesheet" href="css/common.css" />
+    <link rel="stylesheet" href="css/per-manage.css" />
+
+    <script src="js/flexible.js"></script>
+
+</head>
+
+<body style="background-image:url(images/big-bg.png)">
+    <section class="mainbox ">
+        <div class="tit-box flex">
+            <h2 class="title flex2">事件中心
+
+            </h2>
+            <h2 class="title flex10">详细列表</h2>
+        </div>
+
+        <div class="content-box flex">
+
+            <div class="column column1 flex2">
+
+                <ul>
+                    <li><a href="eventDanger-manage.html">隐患管理</a></li>
+                    <li><a href="eventWarning-manage.html">告警管理</a></li>
+                    <li class="selected"><a href="eventEvent-manage.html">事件管理</a></li>
+                </ul>
+            </div>
+
+            <div class="column3 flex10">
+                <div class="memberbox memberbox2">
+                    <div class="membertit">事件管理</div>
+                    <div class="member-choose">
+
+                        <span>事件名称</span>
+                        <input type="text" id="event_name">
+
+                        <span>事件类型</span>
+                        <select name="" id="event_type">>
+                            <option value="">所有</option>
+                            <option value="1">消防隐患</option>
+                            <option value="2">消防告警</option>
+                            <option value="3">设备设施</option>
+                        </select>
+
+
+
+                        <a class="button" id="buttonSearch">确定</a>
+                        <a class="button reset">重置</a>
+                    </div>
+                    <div class="operatebox"></div>
+                    <ul class="member-operate">
+                        <div class="event-count-box">
+                            <ul>
+                                <li class="color-blue">
+                                    <img src="images/event-icon1.png" alt="">
+                                    <span>事件总数</span>
+                                    <span class="event-num color-blue" id="totalCount">125</span>
+                                </li>
+                                <li class="color-orange">
+                                    <img src="images/event-icon2.png" alt="">
+                                    <span>已处置数</span>
+                                    <span class="event-num color-orange" id="handled">123</span>
+                                </li>
+                                <li class="color-red">
+                                    <img src="images/event-icon3.png" alt="">
+                                    <span>未处置数</span>
+                                    <span class="event-num color-red" id="unhandle">122</span>
+                                </li>
+                                <li class="color-green">
+                                    <img src="images/event-icon4.png" alt="">
+                                    <span>处置率</span>
+                                    <span class="event-num color-green" id="handleRate">99.2%</span>
+                                </li>
+                            </ul>
+                        </div>
+                        <a class="button add">新增</a>
+                        <a class="button handle">处置</a>
+                        <a class="button">导出</a>
+
+                    </ul>
+
+
+                    <table class="pure-table" cellspacing="0px">
+                        <thead>
+                            <tr>
+                                <th style="width:24px">
+                                    <!-- <span class="checkall status"></span> -->
+                                </th>
+                                <th>序号</th>
+                                <th>单位名称</th>
+                                <th>上报时间</th>
+                                <th>事件名称</th>
+                                <th>事件类型</th>
+                                <th>处理状态</th>
+                                <th>处理人</th>
+                                <th>处理时间</th>
+                            </tr>
+                        </thead>
+
+                        <tbody id="dataList">
+                            <tr>
+                                <td class="status"></td>
+                                <td>1</td>
+                                <td>上海永天科技有限公司</td>
+                                <td>123456</td>
+                                <td>类型1</td>
+                                <td>2020-09-15 15:12:23</td>
+                                <td>报告内容报告内容报告内容报告内容</td>
+                                <td class="unprocess">未处置</td>
+                                <td>2020-09-14 12:15:23</td>
+                                <td>张三</td>
+                                <td><a class="view-detail ">点击查看</a></td>
+                            </tr>
+
+                        </tbody>
+                    </table>
+                </div>
+
+                <div class="pager has-data flex">
+                    <div class="pager-left flex1 align-left">
+                        <ul>
+                            <li id="firstPageButton" class="pg-first disabled"></li>
+                            <li id="prevPageButton" class="pg-prev disabled"></li>
+                            <li class="pg-des">
+                                第 <input id="currentPage" type="text" size="1" value="1"> 页,共 <span id="totalPage">100</span> 页
+                            </li>
+                            <li id="nextPageButton" class="pg-next"></li>
+                            <li id="lastPageButton" class="pg-last"></li>
+                            <li class="pg-refresh">
+                                <a href="javascript:location.reload();"></a>
+                            </li>
+                        </ul>
+                    </div>
+                    <div class="pager-right  flex1 align-right">显示第 <span id="pageFrom"> 1 </span> 条到 <span id="pageTo">
+                            15 </span>条记录,总共 <span id="dataTotal">
+                            46 </span>条
+                    </div>
+
+
+                </div>
+                <div class="pager no-data" style="display:none;text-align:right">
+                    暂无数据
+
+
+                </div>
+
+
+            </div>
+        </div>
+
+    </section>
+
+    <!-- 新增弹框 -->
+    <div class="xcConfirm  addDataOut" style="display:none">
+        <div class="popBox">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">新增</span>
+            </div>
+            <form action="" id="addDataForm">
+
+                <div class="txtBox">
+                    <div>
+                        <span>事件名称:<i class="necessary">*</i></span>
+                        <input type="text" name="event_name">
+                    </div>
+                    <div>
+                        <span>事件内容:<i class="necessary">*</i></span>
+                        <input type="text" name="event_content">
+                    </div>
+                    <div>
+                        <span>事件类型:<i class="necessary">*</i></span>
+                        <select name="event_type" id="">
+                            <option value="1">消防隐患</option>
+                            <option value="2">消防告警</option>
+                            <option value="3">设备设施</option>
+                        </select>
+                    </div>
+                    <div>
+                        <span>所属单位:<i class="necessary">*</i></span>
+                        <select name="company_code" id="getNameList">
+                            <option value="">所有</option>
+                        </select>
+                    </div>
+                </div>
+            </form>
+
+            <div class="btnArea">
+                <div class="btnGroup">
+                    <a class="sgBtn ok" id="addData"><img src="images/accept.png" alt=""> 提交</a>
+                    <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                </div>
+            </div>
+
+        </div>
+
+    </div>
+
+
+
+
+
+    </div>
+
+    <div class="xcConfirm  handleDataOut" style="display:none">
+        <!-- 处置弹框 -->
+        <div class="popBox">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">处置</span>
+            </div>
+            <form action="" id="handleDataForm">
+                <div class="txtBox ">
+                    <div>
+                        <span>单位名称:</span>
+                        <input type="text" name="company_name" readonly>
+                    </div>
+                    <div>
+                        <span>事件类型:</span>
+                        <input type="text" name="event_type" readonly>
+                    </div>
+                    <div>
+                        <span>事件名称:</span>
+                        <input type="text" name="event_name" readonly>
+                    </div>
+                    <div>
+                        <span>事件内容:</span>
+                        <input type="text" name="event_content" readonly>
+                    </div>
+
+                    <div>
+                        <span>处置内容:</span>
+                        <textarea name="cl_content" id="" cols="30" rows="6"></textarea>
+                    </div>
+
+                    <div style="opacity:0">
+                        <span>数据id:</span>
+                        <input type="text" name="id">
+                    </div>
+                </div>
+            </form>
+
+            <div class="btnArea">
+                <div class="btnGroup">
+                    <a class="sgBtn ok" id="handleUpdate"><img src="images/accept.png" alt=""> 提交</a>
+                    <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                </div>
+            </div>
+        </div>
+
+    </div>
+
+
+    <div id="view"></div>
+
+
+
+    <script src="js/jquery.js"></script>
+    <script src="js/util.js"></script>
+    <script src="api/request.js"></script>
+
+
+    <script src="js/main.js"></script>
+    <script src="layui/layui.js"></script>
+    <script src="js/valid.js"></script>
+    <script src="js/event-manage.js"></script>
+    <script>
+        layui.use(['form', 'layedit', 'laydate'], function() {
+            var form = layui.form,
+                layer = layui.layer,
+                layedit = layui.layedit,
+                laydate = layui.laydate;
+        });
+    </script>
+
+
+
+
+
+</body>
+
+</html>

+ 304 - 0
eventWarning-manage.html

@@ -0,0 +1,304 @@
+<!DOCTYPE html>
+<html lang="zh">
+
+<head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>事件中心(告警管理)</title>
+    <link rel="shortcut icon" href="favicon.ico">
+
+    <link rel="stylesheet" href="layui/css/layui.css">
+    <link rel="stylesheet" href="css/common.css" />
+    <link rel="stylesheet" href="css/per-manage.css" />
+
+    <script src="js/flexible.js"></script>
+
+</head>
+
+<body style="background-image:url(images/big-bg.png)">
+    <section class="mainbox ">
+        <div class="tit-box flex">
+            <h2 class="title flex2">事件中心
+
+            </h2>
+            <h2 class="title flex10">详细列表</h2>
+        </div>
+
+        <div class="content-box flex">
+
+            <div class="column column1 flex2">
+
+                <ul>
+                    <li><a href="eventDanger-manage.html">隐患管理</a></li>
+                    <li class="selected"><a href="eventWarning-manage.html">告警管理</a></li>
+                    <li><a href="eventEvent-manage.html">事件管理</a></li>
+                </ul>
+            </div>
+
+            <div class="column3 flex10">
+                <div class="memberbox ">
+                    <div class="membertit">告警管理</div>
+                    <div class="member-choose">
+                        <span>开始时间</span>
+                        <div class="layui-inline">
+                            <input type="text" id="time_start" class="layui-input test-item" placeholder="所有">
+                        </div>
+
+                        <span>结束时间</span>
+
+                        <div class="layui-inline">
+                            <input type="text" id="time_end" class="layui-input test-item" placeholder="所有">
+                        </div>
+
+                        <span>处理状态</span>
+                        <select name="" id="clzt">
+                            <option value="">所有</option>
+                            <option value="1">已处理</option>
+                            <option value="0">未处理</option>
+                        </select>
+
+                        <a class="button" id="buttonSearch">确定</a>
+                        <a class="button reset">重置</a>
+                    </div>
+                    <div class="operatebox"></div>
+                    <ul class="member-operate">
+                        <div class="event-count-box">
+                            <ul>
+                                <li class="color-blue">
+                                    <img src="images/event-icon1.png" alt="">
+                                    <span>事件总数</span>
+                                    <span class="event-num color-blue" id="totalCount">125</span>
+                                </li>
+                                <li class="color-orange">
+                                    <img src="images/event-icon2.png" alt="">
+                                    <span>已处置数</span>
+                                    <span class="event-num color-orange" id="handled">123</span>
+                                </li>
+                                <li class="color-red">
+                                    <img src="images/event-icon3.png" alt="">
+                                    <span>未处置数</span>
+                                    <span class="event-num color-red" id="unhandle">122</span>
+                                </li>
+                                <li class="color-green">
+                                    <img src="images/event-icon4.png" alt="">
+                                    <span>处置率</span>
+                                    <span class="event-num color-green" id="handleRate">99.2%</span>
+                                </li>
+                            </ul>
+                        </div>
+                        <a class="button handle">处置</a>
+                        <a class="button">导出</a>
+
+                    </ul>
+
+
+                    <table class="pure-table" cellspacing="0px">
+                        <thead>
+                            <tr>
+                                <th style="width:24px">
+                                    <!-- <span class="checkall status"></span> -->
+                                </th>
+                                <th>序号</th>
+                                <th>单位名称</th>
+                                <th>上报时间</th>
+                                <th>报告数据</th>
+                                <th>报告内容</th>
+                                <th>处理状态</th>
+                                <th>处理人</th>
+                                <th>处理时间</th>
+                            </tr>
+                        </thead>
+
+                        <tbody id="dataList">
+
+
+                        </tbody>
+                    </table>
+                </div>
+                <div class="pager has-data flex">
+                    <div class="pager-left flex1 align-left">
+                        <ul>
+                            <li id="firstPageButton" class="pg-first disabled"></li>
+                            <li id="prevPageButton" class="pg-prev disabled"></li>
+                            <li class="pg-des">
+                                第 <input id="currentPage" type="text" size="1" value="1"> 页,共 <span id="totalPage">100</span> 页
+                            </li>
+                            <li id="nextPageButton" class="pg-next"></li>
+                            <li id="lastPageButton" class="pg-last"></li>
+                            <li class="pg-refresh">
+                                <a href="javascript:location.reload();"></a>
+                            </li>
+                        </ul>
+                    </div>
+                    <div class="pager-right  flex1 align-right">显示第 <span id="pageFrom"> 1 </span> 条到 <span id="pageTo">
+                            15 </span>条记录,总共 <span id="dataTotal">
+                            46 </span>条
+                    </div>
+
+
+                </div>
+                <div class="pager no-data" style="display:none;text-align:right">
+                    暂无数据
+
+
+                </div>
+
+
+            </div>
+        </div>
+
+    </section>
+
+
+    <div class="xcConfirm handleDataOut" style="display:none">
+        <!-- 处置弹框 -->
+        <div class="popBox">
+            <div class="ttBox">
+                <a class="clsBtn"></a>
+                <span class="tt">处置详情</span>
+            </div>
+            <form action="" id="handleDataForm">
+                <div class="txtBox ">
+                    <div>
+                        <span>单位名称:</span>
+                        <input type="text" name="company_name" readonly>
+                    </div>
+
+                    <div>
+                        <span>设备名称:</span>
+                        <input type="text" name="name" readonly>
+                    </div>
+
+                    <div>
+                        <span>报告数据:</span>
+                        <input type="text" name="data" readonly>
+                    </div>
+
+                    <div class="error-radio layui-form">
+                        <span>误报:</span>
+                        <div class="layui-form-item">
+                            <div class="layui-input-block">
+
+                                <input id="yes" type="radio" name="clwb" value="" title="是" checked>
+                                <input id="no" type="radio" name="clwb" value="" title="否">
+                            </div>
+                        </div>
+                    </div>
+                    <div class="error-radio layui-form handle-range">
+                        <span>处理范围:</span>
+                        <div class="layui-form-item">
+                            <div class="layui-input-block">
+
+                                <input type="radio" name="clwb1" value="" title="批量" checked>
+                                <input type="radio" name="clwb1" value="" title="单一">
+                            </div>
+                        </div>
+                    </div>
+                    <div>
+                        <span>处理内容:</span>
+                        <textarea name="clnr" id="" cols="10" rows="5"></textarea>
+                    </div>
+
+                    <div style="opacity:0">
+                        <span>数据id:</span>
+                        <input type="text" name="id">
+                    </div>
+
+                    <div style="opacity:0">
+                        <span>设备类型:</span>
+                        <input type="text" name="dwtype">
+                    </div>
+
+                    <div style="opacity:0">
+                        <span>数据上报状态:</span>
+                        <input type="text" name="status">
+                    </div>
+
+
+                    <div style="opacity:0">
+                        <span>设备编号:</span>
+                        <input type="text" name="device_code">
+                    </div>
+
+
+
+
+                </div>
+            </form>
+
+            <div class="btnArea">
+                <div class="btnGroup">
+                    <a class="sgBtn ok" id="handleUpdate"><img src="images/accept.png" alt=""> 提交</a>
+                    <a class="sgBtn cancel"><img src="images/cancel.png" alt="">关闭</a>
+                </div>
+            </div>
+        </div>
+
+    </div>
+
+
+
+
+    <script src="js/jquery.js"></script>
+    <script src="js/util.js"></script>
+    <script src="api/request.js"></script>
+
+
+    <script src="js/main.js"></script>
+    <script src="layui/layui.js"></script>
+    <script src="js/valid.js"></script>
+    <script src="js/eventWarning-manage.js"></script>
+    <script>
+        layui.use(['form', 'layedit', 'laydate'], function() {
+            var form = layui.form,
+                layer = layui.layer,
+                layedit = layui.layedit,
+                laydate = layui.laydate;
+
+
+
+        });
+
+
+
+
+        layui.use('laydate', function() {
+            var laydate = layui.laydate;
+
+
+            //开始日期
+            var insStart = laydate.render({
+                elem: '#time_start',
+                done: function(value, date) {
+                    //更新结束日期的最小日期
+                    insEnd.config.min = lay.extend({}, date, {
+                        month: date.month - 1
+                    });
+                    //自动弹出结束日期的选择器
+                    insEnd.config.elem[0].focus();
+                }
+            });
+
+            //结束日期
+            var insEnd = laydate.render({
+                elem: '#time_end',
+                done: function(value, date) {
+                    //更新开始日期的最大日期
+                    insStart.config.max = lay.extend({}, date, {
+                        month: date.month - 1
+                    });
+                }
+            });
+
+
+
+
+        });
+    </script>
+
+
+
+
+</body>
+
+</html>


BIN
font/DS-DIGIT.TTF


Разница между файлами не показана из-за своего большого размера
+ 3 - 0
font/iconfont/iconfont.css


BIN
font/iconfont/iconfont/iconfont.eot


Разница между файлами не показана из-за своего большого размера
+ 28 - 0
font/iconfont/iconfont/iconfont.svg


BIN
font/iconfont/iconfont/iconfont.ttf


BIN
font/iconfont/iconfont/iconfont.woff


BIN
images/accept.png




BIN
images/big-bg.png


BIN
images/big-bg.png.jpg


BIN
images/cancel.png


BIN
images/checked.gif


BIN
images/event-icon1.png


BIN
images/event-icon2.png


BIN
images/event-icon3.png


BIN
images/event-icon4.png


BIN
images/favicon.ico


BIN
images/footer-bg.png


BIN
images/head_bg.png



BIN
images/lbx.png


BIN
images/line(1).png


BIN
images/line-bg.png


BIN
images/list-on.png


BIN
images/list.png


BIN
images/loading.gif


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
images/loading.svg


BIN
images/login.png


BIN
images/loginSelected.png


BIN
images/logo-img.png


BIN
images/map.png


BIN
images/no-bg.png


BIN
images/page-first-disabled.gif


BIN
images/page-first.gif


BIN
images/page-last-disabled.gif


BIN
images/page-last.gif


BIN
images/page-next-disabled.gif


BIN
images/page-next.gif


BIN
images/page-prev-disabled (1).gif


BIN
images/page-prev-disabled.gif


BIN
images/page-prev.gif


BIN
images/pie-bar-bg.png


+ 1 - 0
images/preloader.svg

@@ -0,0 +1 @@
+<svg width="72px"  height="72px"  xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="lds-disqus" style="background: none;"><path ng-attr-d="{{config.d}}" ng-attr-stroke-width="{{config.width}}" ng-attr-stroke="{{config.stroke}}" fill="none" d="M74 50A24 24 0 1 1 30.15006621741051 36.50999893154888 L28.78679656440357 28.786796564403577 L36.50999893154886 30.150066217410522 A24 24 0 0 1 74 50" stroke-width="2" stroke="#f5d69b"></path><circle cx="50" cy="50" ng-attr-r="{{config.radius2}}" ng-attr-stroke-width="{{config.width}}" ng-attr-stroke="{{config.stroke}}" ng-attr-stroke-dasharray="{{config.dasharray}}" fill="none" stroke-linecap="round" r="15" stroke-width="2" stroke="#f5d69b" stroke-dasharray="23.561944901923447 23.561944901923447" transform="rotate(280 50 50)"><animateTransform attributeName="transform" type="rotate" calcMode="linear" values="0 50 50;360 50 50" keyTimes="0;1" dur="1.5s" begin="0s" repeatCount="indefinite"></animateTransform></circle></svg>

BIN
images/refresh.gif


BIN
images/right-bottom-bg.png


BIN
images/right-top-bg.png


BIN
images/store.png


BIN
images/timg.gif


BIN
images/tool-sprites.gif


BIN
images/trigger.gif


BIN
images/unchecked.gif


BIN
images/weather.png


+ 182 - 0
index.html

@@ -0,0 +1,182 @@
+<!DOCTYPE html>
+<html lang="zh">
+
+<head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>首页-设施管理系统</title>
+    <link rel="shortcut icon" href="favicon.ico">
+    <link rel="stylesheet" href="css/common.css" />
+    <link rel="stylesheet" href="css/index.css" />
+
+</head>
+
+<body>
+    <!--<header>-->
+    <!--    <h1>设施管理系统</h1>-->
+    <!--</header>-->
+    <section class="mainbox">
+        <div class="column">
+            <div class="panel pie-bar">
+                <h2>
+                    设备工况
+                </h2>
+                <div class="pie-bar-container">
+                    <div class="pie-bar-top">
+                        <div id="loading"></div>
+                        <div class="chart">
+
+                        </div>
+
+                    </div>
+                    <div class="pie-bar-bottom">
+                        <div class="title-btn">异常设备数</div>
+                        <div class="chart pie"></div>
+
+                    </div>
+                </div>
+                <!-- <div class="chart"></div> -->
+                <!-- <div class="panel-footer"></div> -->
+            </div>
+            <div class="panel line">
+                <h2>报警处理</h2>
+                <div class="chart"></div>
+                <!-- <div class="panel-footer"></div> -->
+            </div>
+
+        </div>
+        <div class="column">
+
+            <div class="map">
+                <!-- <iframe style="width:100%;height:100%" src='http://www.thingjs.com/s/ef7ee6a73896c01bda77e679?params=105b0f77fd24654d4eebc434e9'></iframe> -->
+            </div>
+            <div class="no panel">
+                <h2>实时告警信息</h2>
+                <!-- <div class="no-hd">
+              <ul>
+                <li>125811</li>
+                <li>104563</li>
+              </ul>
+            </div>
+            <div class="no-bd">
+              <ul>
+                <li>前端需求人数</li>
+                <li>市场供应人数</li>
+              </ul>
+            </div> -->
+
+                <table class="pure-table">
+                    <thead>
+                        <tr>
+                            <th>序号</th>
+                            <th>告警时间</th>
+                            <th>告警类型</th>
+                            <th>告警详情</th>
+                            <th>告警状态</th>
+                        </tr>
+                    </thead>
+                </table>
+                <div class="scroll" style="height: 2.5rem;overflow-y: auto;">
+                    <table class="pure-table">
+
+                        <tbody class="warning-info">
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+        </div>
+        <div class="column">
+            <div class="panel right-top">
+
+                <h2>园区实时报警统计</h2>
+
+                <div class="total-squares">
+                    <!-- <div class="total-square">1</div>
+                    <div class="total-square">3</div>
+                    <div class="total-square">5</div>
+                    <div class="total-square">7</div> -->
+                </div>
+                <div class="yq-total">当前时间</div>
+
+                <div class="chart"></div>
+                <!-- <div class="panel-footer"></div> -->
+            </div>
+            <div class="panel huan right-bottom">
+                <h2>设备隐患处理</h2>
+                <ul id="pop">
+                    <!-- <li>
+                        <p class="num-huan color-green">3</p>
+                        <p class="des-huan">巡检人员数量</p>
+                    </li>
+                    <li>
+                        <p class="num-huan color-blue">10</p>
+                        <p class="des-huan">今日任务</p>
+                    </li>
+                    <li>
+                        <p class="num-huan color-red">0</p>
+                        <p class="des-huan">超时任务</p>
+                    </li>
+                    <li>
+                        <p class="num-huan color-yellow">8</p>
+                        <p class="des-huan">今日完成任务</p>
+                    </li> -->
+
+                </ul>
+                <div class="title-btn">异常设备数</div>
+                <table class="pure-table">
+                    <thead>
+                        <tr>
+                            <th>序号</th>
+                            <th>任务名称</th>
+                            <th>当前状态</th>
+                            <th>应完成时间</th>
+
+                        </tr>
+                    </thead>
+
+                </table>
+                <div class="scroll" style="height: 1.3rem;overflow-y: auto;">
+                    <table class="pure-table">
+
+                        <tbody class="abnormal">
+
+                            <tr>
+                                <td>1</td>
+                                <td>任务111</td>
+                                <td class="unprocess">待处理</td>
+                                <td>2020-12-15 15:22</td>
+                            </tr>
+                            <tr>
+                                <td>2</td>
+                                <td>任务111</td>
+                                <td class="unprocess">待处理</td>
+                                <td>2020-12-15 15:22</td>
+                            </tr>
+
+
+
+
+
+                        </tbody>
+                    </table>
+
+                </div>
+
+                <!-- <div class="chart"></div> -->
+                <!-- <div class="panel-footer"></div> -->
+            </div>
+
+        </div>
+    </section>
+    <script src="js/flexible.js"></script>
+    <script src="js/jquery.js"></script>
+    <script src="api/request.js"></script>
+
+    <!-- <script src="js/china.js"></script> -->
+    <!-- <script src="js/myMap.js"></script> -->
+    <script src="js/echarts.min.js"></script>
+    <script src="js/index.js"></script>
+
+</body>
+
+</html>

+ 283 - 0
js/auth-manage.js

@@ -0,0 +1,283 @@
+//获取公司树
+getRoleTree()
+
+//获取公司树结构 ajax请求
+function getRoleTree() {
+
+    ajaxRequest(USER_ROLE, "POST", {}, function(result) {
+        let data = result.data;
+        let items = '';
+        let roleItems = '';
+
+        data.forEach(function(item, key) {
+            items += `<li>
+            <span class="treeRole" data-id=${item.roleId}>
+                <img src="images/login.png" alt="">
+                ${item.roleName}
+            </span>
+        </li>`
+        })
+        $('#roleTree').html(items);
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+
+}
+
+//菜单列表
+getMenuListDataAjax();
+
+//获取菜单列表 ajax请求
+function getMenuListDataAjax(queryParam = {}) {
+
+
+    let parentIdOption = "<option value='0'>顶级菜单</option>";
+    ajaxRequest(MENU_LIST, "POST", queryParam, function(result) {
+
+        let data = result.data;
+        let items = '';
+        let items2 = '';
+        data.forEach(function(item, key) {
+
+            let statusMenu = "";
+            if (item.type == 0) {
+                statusMenu = "目录"
+            } else if (item.type == 1) {
+                statusMenu = "菜单"
+            } else {
+                statusMenu = "按钮"
+            }
+            let parentedMenu = item.parented ? '是' : '否';
+            let perms = item.perms;
+            let permSave = JSON.stringify(perms)
+            delete(item.perms)
+
+            items += "<tr>" +
+                "<td class='status' data-perm=" + permSave + "  data-user='" + JSON.stringify(item) + "'></td>" +
+                "<td>" + item.name + "</td>" +
+                "<td>" + statusMenu + "</td>" +
+                "<td>" + item.orderNum + "</td>" +
+                "<td>" + parentedMenu + "</td>" +
+                "</tr>"
+            parentIdOption += `<option value=${item.menuId}>${item.name}</option>`
+
+        })
+        $('#menuList').html(items);
+        $('#parentId').html(parentIdOption)
+        $('#parentId2').html(parentIdOption)
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//部门树点击事件
+$(".treeRole").on('click', function() {
+
+    $('.treeRole').removeClass('selected')
+    $(this).addClass('selected');
+
+    getMenuListDataAjax({ "roleId": $(this).data('id') });
+
+    if ($("#roleTree li:first span").hasClass('selected')) {
+        $('.edit').show()
+        $('.add').show()
+        $('.updateAuth').hide()
+    } else {
+        $('.edit').hide()
+        $('.add').hide()
+        $('.updateAuth').show()
+    }
+})
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerCreateIndex = '';
+var layerUpdateIndex = '';
+var layerUpdateAuthIndex = '';
+
+layui.use('layer', function() {
+
+    //新增弹框
+    $('.add').click(function() {
+            layerCreateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['400px', '450px'],
+                content: $(".addMenuOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        //alert(1)
+                        layer.close(layerCreateIndex);
+                    })
+                }
+            })
+        }),
+        //修改弹框信息
+        $('.edit').click(function() {
+
+            if (!$('.pure-table tr').has('.checked').length) {
+                layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+
+            } else {
+                //let dataId = $('.pure-table tr').find('.checked').data('id');
+
+                let userInfo = $('.pure-table tr').find('.checked').data('user');
+                let perm = $('.pure-table tr').find('.checked').data('perm');
+                var reg = new RegExp('\r\n', 'g');
+
+                $('.editMenuOut select[name=parented]').val(userInfo.parented)
+                $('.editMenuOut select[name=parentId]').val(userInfo.parentId)
+                $('.editMenuOut input[name=name]').val(userInfo.name)
+                $('.editMenuOut input[name=url').val(userInfo.url)
+                $('.editMenuOut textarea[name=perms').val(perm.replace(reg, '<br/>'))
+                $('.editMenuOut select[name=type').val(userInfo.type)
+                $('.editMenuOut input[name=icon').val(userInfo.icon)
+                $('.editMenuOut input[name=orderNum').val(userInfo.orderNum)
+                $('.editMenuOut input[name=menuId').val(userInfo.menuId)
+
+                layerUpdateIndex = layer.open({
+                    type: 1,
+                    title: false,
+                    closeBtn: 0,
+                    shadeClose: true,
+                    skin: 'yourclass',
+                    area: ['410px', '500px'],
+                    content: $(".editMenuOut"),
+                    success: function() {
+                        $('.clsBtn,.cancel').click(function() {
+                            layer.close(layerUpdateIndex);
+                        })
+                    }
+                });
+            }
+        })
+
+    //新增权限弹框信息
+    $('.updateAuth').click(function() {
+
+        getMenuSelectAjax();
+
+        //获取菜单列表 ajax请求
+        function getMenuSelectAjax(queryParam = {}) {
+
+            let parentIdOption = "<option value='0'>顶级菜单</option>";
+
+            ajaxRequest(MENU_LIST, "POST", queryParam, function(result) {
+                let data = result.data;
+                data.forEach(function(item, key) {
+                    parentIdOption += `<option value=${item.menuId}>${item.name}</option>`
+                })
+                $('#menuIdList').html(parentIdOption)
+
+            }, function(errorMsg) {
+                alert("请求数据失败!");
+            })
+        }
+
+        layerUpdateAuthIndex = layer.open({
+            type: 1,
+            title: false,
+            closeBtn: 0,
+            shadeClose: true,
+            skin: 'yourclass',
+            area: ['410px', '300px'],
+            content: $(".addAuthOut"),
+            success: function() {
+                $('.clsBtn,.cancel').click(function() {
+                    layer.close(layerUpdateAuthIndex);
+                })
+            }
+        });
+    })
+
+})
+
+/* 新增发送请求 */
+$('#addMenu').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#addMenuForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "name": "请输入菜单名称",
+        "parentId": "请选择父级菜单id",
+        "perms": "请输入菜单配置",
+        "type": "请选择菜单类型",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    //验证通过 请求ajax
+    ajaxRequest(MENU_ADD, "POST", allParam, function(result) {
+
+        if (result.flag) {
+            let data = result.data;
+            layer.close(layerCreateIndex);
+            getMenuListDataAjax()
+        } else {
+            //服务端返回报错
+            alert(result.msg);
+        }
+    }, function(errorMsg) {
+        alert("异常错误!");
+    })
+})
+
+/* 修改发送请求 */
+$('#dataUpdate').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#editMenuForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "name": "请输入菜单名称",
+        "parentId": "请选择父级菜单id",
+        "perms": "请输入菜单配置",
+        "type": "请选择菜单类型",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+    ajaxRequest(MENU_UPDATE, "POST", allParam, function(result) {
+        layer.close(layerUpdateIndex);
+        layer.msg('修改成功!', { icon: 6 });
+        getMenuListDataAjax()
+    }, function(errorMsg) {
+        alert("数据修改失败!");
+    })
+})
+
+/* 新增权限发送请求 */
+$('#addAuth').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#addAuthForm").serializeArray());
+    allParam.roleId = $("#roleTree li span.selected").data('id')
+    ajaxRequest(ROLE_AUTH_UPDATA, "POST", allParam, function(result) {
+
+        if (result.flag) {
+            let data = result.data;
+            layer.close(layerUpdateAuthIndex);
+            getMenuListDataAjax(allParam)
+        } else {
+            //服务端返回报错
+            alert(result.msg);
+        }
+
+    }, function(errorMsg) {
+        alert("异常错误!");
+    })
+
+
+})

+ 275 - 0
js/building-manage.js

@@ -0,0 +1,275 @@
+var pageNo = 1;
+var totalPages = 0;
+
+//列表
+getListDataAjax();
+
+//获取列表 ajax请求
+function getListDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 4;
+
+    ajaxRequest(BUILDING_LIST, "POST", queryParam, function(result) {
+        let data = result.pageList;
+        let items = '';
+        data.forEach(function(item, key) {
+
+            items += "<tr>" +
+                "<td class='status' data-id=" + item.id + " data-user='" + JSON.stringify(item) + "'></td>" +
+                "<td>" + item.buildName + "</td>" +
+                "<td>" + item.posistion + "</td>" +
+                "<td>" + item.addr1 + "</td>" +
+                "<td>" + item.addr2 + "</td>" +
+                "<td>" + item.addr3 + "</td>" +
+                "<td>" + item.address + "</td>" +
+                "</tr>"
+        })
+        $('#dataList').html(items);
+
+        totalPages = result.totalPages;
+        $('#totalPage').html(totalPages); //总共多少页
+        $('#dataTotal').html(result.totalCount); //总共多少条数据
+        $('#currentPage').val(pageNo); //当前页面
+
+        let pageFrom = (pageNo - 1) * result.pageSize + 1; //开始
+        let pageTo = result.pageNo * result.pageSize; //结束
+
+        pageTo = pageTo > result.totalCount ? result.totalCount : pageTo;
+
+        $('#pageFrom').html(pageFrom);
+        $('#pageTo').html(pageTo);
+
+        // 无数据时
+        if (!data.length) {
+            $('.pager.has-data').hide()
+            $('.pager.no-data').show()
+        } else {
+            $('.pager.has-data').show()
+            $('.pager.no-data').hide()
+        }
+
+        if (pageNo < totalPages) {
+            $('#nextPageButton,#lastPageButton').removeClass('disabled');
+        } else {
+            $('#nextPageButton,#lastPageButton').addClass('disabled');
+        }
+        if (pageNo === 1) {
+            $('#firstPageButton,#prevPageButton').addClass('disabled');
+        } else {
+            $('#firstPageButton,#prevPageButton').removeClass('disabled');
+        }
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+    pageNo = totalPages;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+//按钮搜索
+$('#buttonClick').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj());
+})
+
+//拼接搜索条件
+function getSearchParamObj() {
+    let queryParam = {};
+    let buildName = $('#buildName').val();
+    queryParam.bilidName = buildName;
+    return queryParam;
+}
+
+//重置表单
+$('.reset').click(resetForm)
+
+//重置表单
+function resetForm() {
+    pageNo = 1;
+    $("#buildName").val("");
+    getListDataAjax(getSearchParamObj());
+}
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerCreateIndex = '';
+var layerUpdateIndex = ''
+layui.use('layer', function() {
+
+    //新增弹框
+    $('.add').click(function() {
+            layerCreateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['400px', '400px'],
+                content: $(".addDataOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        layer.close(layerCreateIndex);
+                    })
+                }
+            })
+        }),
+        //修改弹框信息 
+        $('.edit').click(function() {
+
+            if (!$('.pure-table tr').has('.checked').length) {
+                layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+
+            } else {
+                let userInfo = $('.pure-table tr').find('.checked').data('user');
+                $('.editDataOut input[name=buildName]').val(userInfo.buildName)
+                $('.editDataOut input[name=posistion]').val(userInfo.posistion)
+                $('.editDataOut select[name=addr1]').val(userInfo.addr1)
+                provinceText = userInfo.addr1;
+                $.each(provinceList, function(i, item) {
+                    if (provinceText == item.name) {
+                        cityItem = i;
+                        return cityItem
+                    }
+                });
+                removeEle(city);
+                removeEle(town);
+                $.each(provinceList[cityItem].cityList, function(i, item) {
+                    addEle(city, item.name)
+                })
+                $('.editDataOut select[name=addr2]').val(userInfo.addr2)
+                cityText = userInfo.addr2;
+                removeEle(town);
+                $.each(provinceList, function(i, item) {
+                    if (provinceText == item.name) {
+                        cityItem = i;
+                        return cityItem
+                    }
+                });
+                $.each(provinceList[cityItem].cityList, function(i, item) {
+                    if (cityText == item.name) {
+                        for (var n = 0; n < item.areaList.length; n++) {
+                            addEle(town, item.areaList[n])
+                        }
+                    }
+                });
+
+                $('.editDataOut select[name=addr3]').val(userInfo.addr3)
+                $('.editDataOut input[name=id]').val(userInfo.id)
+
+                layerUpdateIndex = layer.open({
+                    type: 1,
+                    title: false,
+                    closeBtn: 0,
+                    shadeClose: true,
+                    skin: 'yourclass',
+                    area: ['410px', '400px'],
+                    content: $(".editDataOut"),
+                    success: function() {
+                        $('.clsBtn,.cancel').click(function() {
+                            layer.close(layerUpdateIndex);
+                        })
+                    }
+                });
+            }
+        })
+
+    //删除信息
+    $('.delete').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            //layer.msg('请选择一条需要修改的信息');
+            layer.msg('请选择一条需要删除的信息!', { icon: 5 });
+        } else {
+            let dataId = $('.pure-table tr').find('.checked').data('id');
+            ajaxRequest(BUILD_MANAGE_DELETE, "POST", { "buildId": dataId }, function(result) {
+                if (result.flag) {
+                    $(".pure-table tbody tr.selected").remove()
+                    layer.close(layer.layerCreateIndex);
+                    layer.msg(result.msg, { icon: 6 });
+                } else {
+                    //服务端返回报错
+                    alert(result.msg);
+                }
+                getListDataAjax()
+            }, function(errorMsg) {
+                alert("删除失败!");
+            })
+        }
+    })
+})
+
+/* 新增发送请求 */
+$('#addData').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#addDataForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "buildName": "请输入建筑名称",
+        "posistion": "请输入建筑坐标",
+        "addr1": "请选择省份",
+        "addr2": "请选择市",
+        "addr3": "选择区、县",
+        "address": "请输入详细地址",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    //验证通过 请求ajax
+    ajaxRequest(BUILDING_MANAGE_ADD, "POST", allParam, function(result) {
+        layer.close(layerCreateIndex);
+        layer.msg('添加成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("异常错误!");
+    })
+})
+
+/* 修改发送请求 */
+$('#dataUpdate').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#editDataForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "buildName": "请输入建筑名称",
+        "posistion": "请输入建筑坐标",
+        "addr1": "请选择省份",
+        "addr2": "请选择市",
+        "addr3": "选择区、县",
+    });
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+    ajaxRequest(BUILD_MANAGE_UPDATE, "POST", allParam, function(result) {
+        layer.close(layerUpdateIndex);
+        layer.msg('修改成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("数据修改失败!");
+    })
+})

+ 251 - 0
js/buildingFloor-manage.js

@@ -0,0 +1,251 @@
+var pageNo = 1;
+var totalPages = 0;
+
+//列表
+getListDataAjax();
+
+//获取列表 ajax请求
+function getListDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 4;
+
+    ajaxRequest(BUILDING_FLOOR_LIST, "POST", queryParam, function(result) {
+        let data = result.pageList;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += "<tr>" +
+                "<td class='status' data-id=" + item.floorId + " data-user='" + JSON.stringify(item) + "'></td>" +
+                "<td>" + item.floorName + "</td>" +
+                "<td>" + item.creatMan + "</td>" +
+                "<td>" + getFormatDate(item.creatTime) + "</td>" +
+                "<td>" + item.remark + "</td>" +
+                "</tr>"
+        })
+        $('#dataList').html(items);
+
+        totalPages = result.totalPages;
+        $('#totalPage').html(totalPages); //总共多少页
+        $('#dataTotal').html(result.totalCount); //总共多少条数据
+        $('#currentPage').val(pageNo); //当前页面
+
+        let pageFrom = (pageNo - 1) * result.pageSize + 1; //开始
+        let pageTo = result.pageNo * result.pageSize; //结束
+        pageTo = pageTo > result.totalCount ? result.totalCount : pageTo;
+        $('#pageFrom').html(pageFrom);
+        $('#pageTo').html(pageTo);
+
+        // 无数据时
+        if (!data.length) {
+            $('.pager.has-data').hide()
+            $('.pager.no-data').show()
+        } else {
+            $('.pager.has-data').show()
+            $('.pager.no-data').hide()
+        }
+
+        if (pageNo < totalPages) {
+            $('#nextPageButton,#lastPageButton').removeClass('disabled');
+        } else {
+            $('#nextPageButton,#lastPageButton').addClass('disabled');
+        }
+        if (pageNo === 1) {
+            $('#firstPageButton,#prevPageButton').addClass('disabled');
+        } else {
+            $('#firstPageButton,#prevPageButton').removeClass('disabled');
+        }
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+getBuilding()
+    //获取建筑下拉
+function getBuilding(queryParam = {}) {
+    ajaxRequest(BUILDING_LIST, "POST", queryParam, function(result) {
+        let data = result.pageList;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += `<option value="${item.floorName}">${item.buildName}</option>`
+        })
+        $('#buildId').append(items);
+        $('#buildId2').append(items);
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+    pageNo = totalPages;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+
+//按钮搜索
+$('#buttonClick').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj());
+})
+
+//拼接搜索条件
+function getSearchParamObj() {
+    let queryParam = {};
+    let floorName = $('#floorName').val();
+    queryParam.floorName = floorName;
+    return queryParam;
+}
+
+//重置表单
+$('.reset').click(resetForm)
+
+//重置表单
+function resetForm() {
+    pageNo = 1;
+    $("#floorName").val("");
+    getListDataAjax(getSearchParamObj());
+}
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerCreateIndex = '';
+var layerUpdateIndex = ''
+layui.use('layer', function() {
+
+    //新增弹框
+    $('.add').click(function() {
+            layerCreateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['400px', '400px'],
+                content: $(".addDataOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        layer.close(layerCreateIndex);
+                    })
+                }
+            })
+        }),
+        //修改弹框信息 
+        $('.edit').click(function() {
+            if (!$('.pure-table tr').has('.checked').length) {
+                layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+            } else {
+                let userInfo = $('.pure-table tr').find('.checked').data('user');
+                $('.editDataOut input[name=floorName]').val(userInfo.floorName)
+                $('.editDataOut input[name=remark]').val(userInfo.remark)
+                $('.editDataOut select[name=buildId]').val(userInfo.buildId)
+                $('.editDataOut select[name=status]').val(userInfo.status)
+                $('.editDataOut input[name=floorId').val(userInfo.floorId)
+
+                layerUpdateIndex = layer.open({
+                    type: 1,
+                    title: false,
+                    closeBtn: 0,
+                    shadeClose: true,
+                    skin: 'yourclass',
+                    area: ['410px', '400px'],
+                    content: $(".editDataOut"),
+                    success: function() {
+                        $('.clsBtn,.cancel').click(function() {
+                            layer.close(layerUpdateIndex);
+                        })
+                    }
+                });
+            }
+        })
+
+    //删除信息
+    $('.delete').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            //layer.msg('请选择一条需要修改的信息');
+            layer.msg('请选择一条需要删除的信息!', { icon: 5 });
+        } else {
+            let dataId = $('.pure-table tr').find('.checked').data('id');
+            ajaxRequest(BUILD_FLOOR_DELETE, "POST", { "floorId": dataId }, function(result) {
+                if (result.flag) {
+                    $(".pure-table tbody tr.selected").remove()
+                    layer.close(layer.layerCreateIndex);
+                    layer.msg(result.msg, { icon: 6 });
+                } else {
+                    //服务端返回报错
+                    alert(result.msg);
+                }
+                getListDataAjax()
+            }, function(errorMsg) {
+                alert("删除失败!");
+            })
+        }
+    })
+})
+
+
+/* 新增发送请求 */
+$('#addData').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#addDataForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "floorName": "请输入楼层名称",
+        "buildId": "请选择所属建筑",
+        "remark": "请输入备注",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    //验证通过 请求ajax
+    ajaxRequest(BUILDING_FLOOR_ADD, "POST", allParam, function(result) {
+        layer.close(layerCreateIndex);
+        layer.msg('添加成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("异常错误!");
+    })
+})
+
+/* 修改发送请求 */
+$('#dataUpdate').click(function() {
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#editDataForm").serializeArray());
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "floorName": "请输入楼层名称",
+        "buildId": "请选择所属建筑",
+        "remark": "请输入备注",
+    });
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+    ajaxRequest(BUILD_FLOOR_UPDATE, "POST", allParam, function(result) {
+        layer.close(layerUpdateIndex);
+        layer.msg('修改成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("数据修改失败!");
+    })
+})

+ 279 - 0
js/buildingRoom-manage.js

@@ -0,0 +1,279 @@
+var pageNo = 1;
+var totalPages = 0;
+
+//列表
+getListDataAjax();
+
+//获取列表 ajax请求
+function getListDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 4;
+
+    ajaxRequest(BUILDING_ROOM_LIST, "POST", queryParam, function(result) {
+        let data = result.pageList;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += "<tr>" +
+                "<td class='status' data-id=" + item.roomId + " data-user='" + JSON.stringify(item) + "'></td>" +
+                "<td>" + item.roomName + "</td>" +
+                "<td>" + item.creatMan + "</td>" +
+                "<td>" + getFormatDate(item.creatTime) + "</td>" +
+                "<td>" + item.remark + "</td>" +
+                "</tr>"
+        })
+        $('#dataList').html(items);
+
+
+        totalPages = result.totalPages;
+        $('#totalPage').html(totalPages); //总共多少页
+        $('#dataTotal').html(result.totalCount); //总共多少条数据
+        $('#currentPage').val(pageNo); //当前页面
+        let pageFrom = (pageNo - 1) * result.pageSize + 1; //开始
+        let pageTo = result.pageNo * result.pageSize; //结束
+        pageTo = pageTo > result.totalCount ? result.totalCount : pageTo;
+        $('#pageFrom').html(pageFrom);
+        $('#pageTo').html(pageTo);
+
+
+        // 无数据时
+        if (!data.length) {
+            $('.pager.has-data').hide()
+            $('.pager.no-data').show()
+        } else {
+            $('.pager.has-data').show()
+            $('.pager.no-data').hide()
+        }
+
+        if (pageNo < totalPages) {
+            $('#nextPageButton,#lastPageButton').removeClass('disabled');
+        } else {
+            $('#nextPageButton,#lastPageButton').addClass('disabled');
+        }
+        if (pageNo === 1) {
+            $('#firstPageButton,#prevPageButton').addClass('disabled');
+        } else {
+            $('#firstPageButton,#prevPageButton').removeClass('disabled');
+        }
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+
+getBuilding()
+    //获取楼层下拉
+function getBuilding(queryParam = {}) {
+    ajaxRequest(BUILDING_LIST, "POST", queryParam, function(result) {
+        let data = result.pageList;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += `<option value="${item.id}">${item.buildName}</option>`
+        })
+        $('#buildId').append(items);
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+
+getFloor()
+    //获取楼层下拉
+function getFloor(queryParam = {}) {
+    ajaxRequest(BUILDING_FLOOR_LIST, "POST", queryParam, function(result) {
+        let data = result.pageList;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += `<option value="${item.floorId}">${item.floorName}</option>`
+        })
+        $('#floorId').append(items);
+        $('#floorId2').append(items);
+        $('#floorIdSearch').append(items);
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+
+//按钮搜索
+$('#buttonClick').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj());
+})
+
+//拼接搜索条件
+function getSearchParamObj() {
+    let queryParam = {};
+    let roomName = $('#roomName').val();
+    let floorIdSearch = $('#floorIdSearch').val();
+    queryParam.roomName = roomName;
+    queryParam.floorId = floorIdSearch;
+    return queryParam;
+}
+
+//重置表单
+$('.reset').click(resetForm)
+
+//重置表单
+function resetForm() {
+    pageNo = 1;
+    $("#roomName").val("");
+    $("#floorIdSearch").val("");
+    getListDataAjax(getSearchParamObj());
+}
+
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+    pageNo = totalPages;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerCreateIndex = '';
+var layerUpdateIndex = ''
+layui.use('layer', function() {
+
+    //新增弹框
+    $('.add').click(function() {
+            layerCreateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['400px', '400px'],
+                content: $(".addDataOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        //alert(1)
+                        layer.close(layerCreateIndex);
+                    })
+                }
+            })
+        }),
+        //修改弹框信息 
+        $('.edit').click(function() {
+            if (!$('.pure-table tr').has('.checked').length) {
+                layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+            } else {
+                let userInfo = $('.pure-table tr').find('.checked').data('user');
+                $('.editDataOut input[name=roomName]').val(userInfo.roomName)
+                $('.editDataOut select[name=floorId]').val(userInfo.floorId)
+                $('.editDataOut input[name=remark').val(userInfo.remark)
+                $('.editDataOut select[name=status]').val(userInfo.status)
+                $('.editDataOut input[name=roomId').val(userInfo.roomId)
+
+                layerUpdateIndex = layer.open({
+                    type: 1,
+                    title: false,
+                    closeBtn: 0,
+                    shadeClose: true,
+                    skin: 'yourclass',
+                    area: ['410px', '400px'],
+                    content: $(".editDataOut"),
+                    success: function() {
+                        $('.clsBtn,.cancel').click(function() {
+                            layer.close(layerUpdateIndex);
+                        })
+                    }
+                });
+            }
+        })
+
+    //删除信息
+    $('.delete').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            layer.msg('请选择一条需要删除的信息!', { icon: 5 });
+        } else {
+            let dataId = $('.pure-table tr').find('.checked').data('id');
+            ajaxRequest(BUILD_ROOM_DELETE, "POST", { "roomId": dataId }, function(result) {
+                if (result.flag) {
+                    $(".pure-table tbody tr.selected").remove()
+                    layer.close(layer.layerCreateIndex);
+                    layer.msg(result.msg, { icon: 6 });
+                    getListDataAjax()
+                } else {
+                    //服务端返回报错
+                    layer.msg(result.msg, { icon: 6 });
+                }
+                getListDataAjax()
+            }, function(errorMsg) {
+                alert("删除失败!");
+            })
+        }
+    })
+})
+
+/* 新增发送请求 */
+$('#addData').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#addDataForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "roomName": "请输入房间名称",
+        "floorId": "请选择所属楼层",
+        "remark": "请输入备注",
+
+    });
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    //验证通过 请求ajax
+    ajaxRequest(BUILDING_ROMM_ADD, "POST", allParam, function(result) {
+        layer.close(layerCreateIndex);
+        layer.msg('添加成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("异常错误!");
+    })
+})
+
+
+/* 修改发送请求 */
+$('#dataUpdate').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#editDataForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "roomName": "请输入房间名称",
+        "floorId": "请选择所属楼层",
+        "remark": "请输入备注",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    ajaxRequest(BUILD_ROOM_UPDATE, "POST", allParam, function(result) {
+        layer.close(layerUpdateIndex);
+        layer.msg('修改成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("数据修改失败!");
+    })
+})

+ 595 - 0
js/device-check.js

@@ -0,0 +1,595 @@
+var pageNo = 1;
+var totalPages = 0;
+
+//检测对象列表
+getListDataAjax();
+
+//获取检测对象列表 ajax请求
+function getListDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 4;
+
+    ajaxRequest(DEVICE_CHECK_LIST, "POST", queryParam, function(result) {
+        let data = result.RESULT.pageList;
+        let items = '';
+        if (result.RESULT.totalCount > 0) {
+            data.forEach(function(item, key) {
+                items += "<tr>" +
+                    "<td class='status' data-user='" + JSON.stringify(item) + "' data-id=" + item.id + "></td>" +
+                    "<td>" + item.xh + "</td>" +
+                    "<td>" + item.object_name + "</td>" +
+                    "<td>" + item.company_name + "</td>" +
+                    "<td>" + item.add_people + "</td>" +
+                    "<td>" + getFormatDate(item.add_time.time) + "</td>" +
+                    "</tr>"
+            })
+        }
+        $('#dataList').html(items);
+
+        totalPages = result.RESULT.totalPages;
+        $('#totalPage').html(totalPages); //总共多少页
+        $('#dataTotal').html(result.RESULT.totalCount); //总共多少条数据
+        $('#currentPage').val(pageNo); //当前页面
+
+        let pageFrom = (pageNo - 1) * result.RESULT.pageSize + 1; //开始
+        let pageTo = result.RESULT.pageNo * result.RESULT.pageSize; //结束
+
+        pageTo = pageTo > result.RESULT.totalCount ? result.RESULT.totalCount : pageTo;
+
+        $('#pageFrom').html(pageFrom);
+        $('#pageTo').html(pageTo);
+
+        // 无数据时
+        if (!data.length) {
+            $('.pager.has-data').hide()
+            $('.pager.no-data').show()
+        } else {
+            $('.pager.has-data').show()
+            $('.pager.no-data').hide()
+        }
+
+        if (pageNo < totalPages) {
+            $('#nextPageButton,#lastPageButton').removeClass('disabled');
+        } else {
+            $('#nextPageButton,#lastPageButton').addClass('disabled');
+        }
+        if (pageNo === 1) {
+            $('#firstPageButton,#prevPageButton').addClass('disabled');
+        } else {
+            $('#firstPageButton,#prevPageButton').removeClass('disabled');
+        }
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//获取检测对象设备列表 ajax请求
+
+getTypeListDataAjax()
+
+function getTypeListDataAjax(queryParam = {}) {
+
+    ajaxRequest(DEVICE_CHECK_DEVICE_LIST, "POST", queryParam, function(result) {
+
+        let data = result.pageList;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += ` <input type="checkbox" name="device_code" value="${item.ownerCode}" lay-skin="primary" title="${item.ownerName}" >`
+        })
+
+        $('#checkselfblock').html(items);
+        $('#checkselfblock2').html(items);
+        layui.use(['form'], function() {
+            var form = layui.form;
+            form.render('checkbox');
+        });
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//按钮搜索
+$('#buttonClick').on('click', function() {
+    pageNo = 1
+    getListDataAjax(getSearchParamObj());
+})
+
+//拼接搜索条件
+function getSearchParamObj() {
+    let queryParam = {};
+    let object_name = $('#object_name').val();
+    let start_add_time = $('#start_add_time').val();
+    let end_add_time = $('#end_add_time').val()
+    queryParam.object_name = object_name;
+    queryParam.start_add_time = start_add_time;
+    queryParam.end_add_time = end_add_time;
+    return queryParam;
+}
+
+//重置表单
+$('.reset').click(resetForm)
+
+//重置表单
+function resetForm() {
+    pageNo = 1;
+    $("#object_name").val("");
+    $("#start_add_time").val("");
+    $("#end_add_time").val("");
+    getListDataAjax(getSearchParamObj());
+}
+
+let dataDefaultTree = [];
+
+//获取建筑楼层房间树结构 ajax请求
+function getBuildTree() {
+
+    ajaxRequest(BUILD_TREE_LIST, "POST", {}, function(result) {
+
+        let data = result.data;
+        let treeArray = []
+
+        //遍历第一级
+        data.forEach(function(item, index) {
+            let treeObj = {}
+            treeObj.id = item.id;
+            treeObj.title = item.buildName;
+
+            //遍历第二级
+            if (item.child) {
+                treeObj.children = [];
+                item.child.forEach(function(itemChild, indexChild) {
+                    let treeChildObj = {};
+                    treeChildObj.id = itemChild.id;
+                    treeChildObj.title = itemChild.floorName;
+
+                    //遍历第三级
+                    if (itemChild.child) {
+                        treeChildObj.children = [];
+                        let treeChildChildObj = {};
+                        let childChildData = itemChild.child;
+                        childChildData.forEach(function(itemChildChild, indexChildChild) {
+                            treeChildChildObj.id = itemChildChild.id;
+                            treeChildChildObj.title = itemChildChild.roomName;
+                            treeChildObj.children.push(treeChildChildObj);
+                        })
+                    }
+                    treeObj.children.push(treeChildObj);
+                })
+            }
+            treeArray.push(treeObj)
+        })
+
+        dataDefaultTree = treeArray
+        let items = '';
+        let companyItems = '';
+        let companyDepartmentItems = '<option value="">请选择</option>';
+
+        // data.forEach(function (item, key) {
+        //     items += `<li  data-id=${item.ownerId} ><span data-id=${item.ownerId}  class="treeCompany"><img  class="img" src="images/login.png" alt=""> ${item.ownerName}  (${item.userNumber})</span>`;
+        //     if (item.child) {
+        //         let data = item.child;
+        //         items += `<ul class="child-three">`;
+        //         data.forEach(function (item, key) {
+        //             items += `<li   data-id=${item.departmentId} ><span  data-id=${item.departmentId}  class="treeDepartment"><img class="img" src="images/login.png" alt="">${item.departmentName}</span></li>`
+        //         });
+        //         items += ` </ul>`;
+        //     }
+        //     `</li>`
+
+        //     companyItems += `<option value="${item.ownerId}">${item.ownerName}</option>`
+
+        //     if (key == 0) {
+        //         let departmentObj = item.child;
+        //         if (departmentObj) {
+        //             departmentObj.forEach(function (item, key) {
+        //                 companyDepartmentItems += `<option value="${item.id}">${item.departmentName}</option>`
+        //             })
+        //             $('#departmentId').html(companyDepartmentItems);
+        //             $('#departmentIdUpdate').html(companyDepartmentItems);
+        //         }
+        //     }
+        // })
+
+        // $('#child-two').html(items);
+        // $('#companyId').html(companyItems);
+        // $('#companyId2').html(companyItems);
+        // treeClickSearch();
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+
+}
+
+//单位下拉 ajax请求
+//单位下拉
+getNameList()
+
+function getNameList() {
+
+    ajaxRequest(DEVICE_TYPE_COMPANYLIST, "POST", {}, function(result) {
+        let data = result.RESULT;
+        let items = '<option value="">请选择</option>';
+
+        data.forEach(function(item, key) {
+            items += `<option value="${item.owner_id}">${item.owner_name}</option>`
+        })
+
+        $('#getNameList').html(items);
+        $('#getNameList2').html(items);
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+
+}
+
+//建筑下拉
+getBuildingList()
+
+function getBuildingList() {
+
+    ajaxRequest(BUILD_TREE_LIST, "POST", {}, function(result) {
+        let data = result.data;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += `<option value="${item.id}">${item.buildName}</option>`
+        })
+        $('#getBuildingList').append(items);
+        $('#getBuildingList2').append(items);
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+// 建筑与楼层
+linkFloor('#getBuildingList')
+linkFloor('#getBuildingList2')
+
+function linkFloor(element) {
+    $(element).on('change', function() {
+        $("#getRoomList").html("<option value=''>请选择</option>");
+        $("#getFloorList").html("<option value=''>请选择</option>");
+        $("#getRoomList2").html("<option value=''>请选择</option>");
+        $("#getFloorList2").html("<option value=''>请选择</option>");
+
+        //获取公司id
+        let buildId = $(this).find('option:selected').val();
+        getTypeListDataAjax({ "owner_xh": buildId })
+        if ($('#getBuildingList').val() || $('#getBuildingList2').val()) {
+            ajaxRequest(BUILD_TREE_LIST, "POST", { "buildId": buildId }, function(result) {
+                let floorItems = '<option value="">请选择</option>';
+                let buildObj = result.data;
+                if (buildObj) {
+                    buildObj.forEach(function(item, key) {
+                        floorItems += `<option value="${item.floorId}">${item.floorName}</option>`
+                    })
+                    $('#getFloorList').html(floorItems);
+                    $('#getFloorList2').html(floorItems);
+                } else {
+                    $('#getFloorList').html(floorItems);
+                    $('#getFloorList2').html(floorItems);
+                }
+            }, function(errorMsg) {
+                alert("请求数据失败!");
+            })
+        }
+    })
+}
+
+// 楼层与房间联动
+linkRoom('#getFloorList')
+linkRoom('#getFloorList2')
+
+function linkRoom(element) {
+    $(element).on('change', function() {
+        $("#getRoomList").html("<option value=''>请选择</option>");
+        $("#getRoomList2").html("<option value=''>请选择</option>");
+
+        //获取楼层id
+        let floorName = $(this).find('option:selected').val();
+        let buildName = $('#getBuildingList').val()
+
+        if ($('#getFloorList').val() || $('#getFloorList2').val()) {
+            getTypeListDataAjax({ "louyu": floorName })
+            ajaxRequest(BUILD_TREE_LIST, "POST", { "floorId": floorName }, function(result) {
+
+                let roomItems = '<option value="">请选择</option>';
+                let floorObj = result.data;
+
+                floorObj.forEach(function(item, key) {
+                    roomItems += `<option value="${item.roomId}">${item.roomName}</option>`
+                })
+
+                $('#getRoomList').html(roomItems);
+                $('#getRoomList2').html(roomItems);
+
+            }, function(errorMsg) {
+                alert("请求数据失败!");
+            })
+        } else {
+            getTypeListDataAjax({ "owner_xh": buildName })
+        }
+    })
+}
+
+$('#getRoomList').on('change', function() {
+    //获取楼层id
+    let roomId = $(this).find('option:selected').val();
+    if ($('#getRoomList').val() || $('#getRoomList2').val()) {
+        getTypeListDataAjax({ "rtmp": roomId })
+    } else {
+        let floorName = $('#getFloorList').val()
+        getTypeListDataAjax({ "louyu": floorName })
+    }
+})
+
+$('#getRoomList2').on('change', function() {
+    //获取楼层id
+    let roomId = $(this).find('option:selected').val();
+    if ($('#getRoomList2').val()) {
+        getTypeListDataAjax({ "rtmp": roomId })
+    } else {
+        let floorName = $('#getFloorList2').val()
+        getTypeListDataAjax({ "louyu": floorName })
+    }
+})
+
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+    pageNo = totalPages;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerCreateIndex = '';
+var layerUpdateIndex = ''
+layui.use('layer', function() {
+
+    //新增弹框
+    $('.add').click(function() {
+
+            //重新渲染表单
+            // $('#addDeviceCheckForm')[0].reset()
+
+            // layui.use(['form'], function() {
+            //     var form = layui.form;
+            //     form.render('checkbox');
+            // });
+
+            layerCreateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['1000px', '400px'],
+                content: $(".addDataOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        layer.close(layerCreateIndex);
+                    })
+                }
+            })
+        }),
+        //修改弹框信息 
+        $('.edit').click(function() {
+
+            //获取检测对象设备列表 ajax请求
+            getTypeListDataAjax()
+
+            if (!$('.pure-table tr').has('.checked').length) {
+                layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+            } else {
+                let userInfo = $('.pure-table tr').find('.checked').data('user');
+                $('.editDataOut input[name=object_name]').val(userInfo.object_name)
+                $('.editDataOut select[name=company_code]').val(userInfo.company_code)
+                $('.editDataOut input[name=id]').val(userInfo.id)
+
+                // 建筑赋值
+                $('.editDataOut select[name=build]').val(userInfo.build)
+
+                // 楼层下拉展示及赋值
+                if ($('#getBuildingList2').val()) {
+                    listFloor()
+
+                    function listFloor() {
+                        let buildId = $('#getBuildingList2').find('option:selected').val();
+                        ajaxRequest(BUILD_TREE_LIST, "POST", { "buildId": buildId }, function(result) {
+                            let floorItems = '<option value="">请选择</option>';
+                            let buildObj = result.data;
+
+                            if (buildObj) {
+                                buildObj.forEach(function(item, key) {
+                                    floorItems += `<option value="${item.floorId}">${item.floorName}</option>`
+                                })
+                                $('#getFloorList2').html(floorItems);
+                            } else {
+                                $('#getFloorList2').html(floorItems);
+                            }
+                        }, function(errorMsg) {
+                            alert("请求数据失败!");
+                        })
+                    }
+                }
+                $('.editDataOut select[name=floor]').val(userInfo.floor)
+
+                // 房间下拉展示及赋值
+                if ($('#getFloorList2').val()) {
+                    listRoom()
+
+                    function listRoom() {
+                        let floorId = $('#getFloorList2').find('option:selected').val();
+                        ajaxRequest(BUILD_TREE_LIST, "POST", { "floorId": floorId }, function(result) {
+                            let roomItems = '<option value="">请选择</option>';
+                            let floorObj = result.data;
+                            if (floorObj) {
+                                floorObj.forEach(function(item, key) {
+                                    roomItems += `<option value="${item.roomId}">${item.roomName}</option>`
+                                })
+                                $('#getRoomList2').html(roomItems);
+                            } else {
+                                $('#getRoomList2').html(roomItems);
+                            }
+                        }, function(errorMsg) {
+                            alert("请求数据失败!");
+                        })
+                    }
+                }
+                $('.editDataOut select[name=room]').val(userInfo.room)
+
+                let buildName = $('#getBuildingList2').find('option:selected').val();
+                let floorName = $('#getFloorList2').find('option:selected').val();
+                let roomName = $('#getRoomList2').find('option:selected').val();
+
+                // 根据建筑楼层房间赋值,来渲染列表
+                getTypeListDataAjax({ "owner_xh": buildName, "louyu": floorName, "rtmp": roomName, })
+
+                // 复选框赋值
+                var checkValue = userInfo.device_code_list;
+                if (checkValue) {
+                    checkValue.forEach(function(item, key) {
+                        if (item.device_code) {
+                            $(".editDataOut input:checkbox[value=" + item.device_code + "]").attr('checked', 'true')
+                        }
+                    })
+                }
+
+                layui.use(['form'], function() {
+                    var form = layui.form;
+                    form.render('checkbox');
+                });
+
+                layerUpdateIndex = layer.open({
+                    type: 1,
+                    title: false,
+                    closeBtn: 0,
+                    shadeClose: true,
+                    skin: 'yourclass',
+                    area: ['1000px', '400px'],
+                    content: $(".editDataOut"),
+                    success: function() {
+                        $('.clsBtn,.cancel').click(function() {
+                            layer.close(layerUpdateIndex);
+                        })
+                    }
+                });
+            }
+        })
+
+    //删除信息
+    $('.delete').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            //layer.msg('请选择一条需要修改的信息');
+            layer.msg('请选择一条需要删除的信息!', { icon: 5 });
+        } else {
+            let dataId = $('.pure-table tr').find('.checked').data('id');
+            ajaxRequest(DEVICE_CHECK_DELETE, "POST", { "ID_LIST": [{ "id": dataId }] }, function(result) {
+                $(".pure-table tbody tr.selected").remove()
+                let data = result
+                layer.close(layer.layerCreateIndex);
+                layer.msg('删除成功!', { icon: 6 });
+                getListDataAjax()
+            }, function(errorMsg) {
+                alert("用户删除失败!");
+
+            }, 2)
+        }
+    })
+})
+
+
+/* 新增发送请求 */
+$('#addData').click(function() {
+
+    let formAllParam = $("#addDeviceCheckForm").serializeArray();
+
+    let allParam = {};
+    let deviceCodeArr = [];
+    for (let key in formAllParam) {
+        if (formAllParam[key].name == 'device_code') {
+            deviceCodeArr.push(formAllParam[key].value)
+        } else {
+            allParam[formAllParam[key].name] = formAllParam[key].value
+        }
+    }
+    allParam.device_code = deviceCodeArr
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "object_name": "请填写对象名称",
+        "company_code": "请选择单位",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    //验证通过 请求ajax
+
+    ajaxRequest(DEVICE_CHECK_ADD, "POST", { "ID_LIST": [allParam] }, function(result) {
+        layer.close(layerCreateIndex);
+        layer.msg('添加成功!', { icon: 6 });
+        getListDataAjax();
+
+    }, function(errorMsg) {
+        alert("异常错误!");
+    }, 2)
+})
+
+/* 修改发送请求 */
+$('#updataData').click(function() {
+
+    //获取表单的值 并转换成对象
+    let formAllParam = $("#editDeviceCheckForm").serializeArray();
+
+    let allParam = {};
+    let deviceCodeArr = [];
+    for (let key in formAllParam) {
+        if (formAllParam[key].name == 'device_code') {
+            deviceCodeArr.push(formAllParam[key].value)
+        } else {
+            allParam[formAllParam[key].name] = formAllParam[key].value
+        }
+    }
+
+    allParam.device_code = deviceCodeArr
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "object_name": "请填写对象名称",
+        "company_code": "请选择单位",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    ajaxRequest(DEVICE_CHECK_UPDATE, "POST", { "ID_LIST": [allParam] }, function(result) {
+        layer.close(layerUpdateIndex);
+        layer.msg('修改成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("数据修改失败!");
+    }, 2)
+})

+ 341 - 0
js/device-communicate.js

@@ -0,0 +1,341 @@
+var pageNo = 1;
+var totalPages = 0;
+
+//获取列表
+getListDataAjax();
+//获取列表 ajax请求
+function getListDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 4;
+
+    ajaxRequest(DEVICE_COMMUNICATE_LIST, "POST", queryParam, function(result) {
+
+        let data = result.RESULT.pageList;
+        let items = '';
+        if (result.RESULT.totalCount > 0) {
+            data.forEach(function(item, key) {
+
+                let interface_transmission_mode = "";
+                if (item.interface_transmission_mode == 1) {
+                    interface_transmission_mode = "NB-IOT"
+                } else if (item.interface_transmission_mode == 2) {
+                    interface_transmission_mode = "Lora-IOT"
+                } else {
+                    interface_transmission_mode = "2G/4G/5G"
+                }
+
+                items += "<tr>" +
+                    "<td class='status' data-id=" + item.id + " data-user='" + JSON.stringify(item) + "'></td>" +
+                    "<td>" + item.xh + "</td>" +
+                    "<td>" + item.interface_name + "</td>" +
+                    "<td>" + item.interface_route + "</td>" +
+                    "<td>" + item.interface_parameter + "</td>" +
+                    "<td>" + interface_transmission_mode + "</td>" +
+                    "<td>" + item.interface_explain + "</td>" +
+                    "<td><a class='interface-doc' href='" + item.interface_file_route + "' download> 下载</a>  </td> " +
+                    // "<td><a class='interface-doc'  href='http://127.0.0.1:5050/images/logo.png' download> 下载</a>  </td> " +
+                    "<td>" + item.business + "</td>" +
+                    "<td>" + item.add_people + "</td>" +
+                    "<td>" + getFormatDate(item.add_time.time) + "</td>" +
+                    "</tr>"
+            })
+        }
+        $('#dataList').html(items);
+
+        totalPages = result.RESULT.totalPages;
+        $('#totalPage').html(totalPages); //总共多少页
+        $('#dataTotal').html(result.RESULT.totalCount); //总共多少条数据
+        $('#currentPage').val(pageNo); //当前页面
+
+        let pageFrom = (pageNo - 1) * result.RESULT.pageSize + 1; //开始
+        let pageTo = result.RESULT.pageNo * result.RESULT.pageSize; //结束
+
+        pageTo = pageTo > result.RESULT.totalCount ? result.RESULT.totalCount : pageTo;
+
+        $('#pageFrom').html(pageFrom);
+        $('#pageTo').html(pageTo);
+
+        // 无数据时
+        if (!data.length) {
+            $('.pager.has-data').hide()
+            $('.pager.no-data').show()
+        } else {
+            $('.pager.has-data').show()
+            $('.pager.no-data').hide()
+        }
+
+        if (pageNo < totalPages) {
+            $('#nextPageButton,#lastPageButton').removeClass('disabled');
+        } else {
+            $('#nextPageButton,#lastPageButton').addClass('disabled');
+        }
+        if (pageNo === 1) {
+            $('#firstPageButton,#prevPageButton').addClass('disabled');
+        } else {
+            $('#firstPageButton,#prevPageButton').removeClass('disabled');
+        }
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//按钮搜索
+$('#buttonSearch').on('click', function() {
+    pageNo = 1
+    getListDataAjax(getSearchParamObj());
+})
+
+//拼接搜索条件
+function getSearchParamObj() {
+    let queryParam = {};
+    let business = $('#business').val();
+    let interface_transmission_mode = $('#interface_transmission_mode').val()
+    queryParam.business = business;
+    queryParam.interface_transmission_mode = interface_transmission_mode;
+    return queryParam;
+}
+
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+
+    pageNo = totalPages;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+//重置表单
+$('.reset').click(resetForm)
+
+function resetForm() {
+    pageNo = 1;
+    $("#business").val("");
+    $("#interface_transmission_mode").val("");
+    getListDataAjax(getSearchParamObj());
+}
+
+//单位下拉
+getNameList()
+
+//单位下拉 ajax请求
+function getNameList() {
+
+    ajaxRequest(DEVICE_TYPE_COMPANYLIST, "POST", {}, function(result) {
+        let data = result.RESULT;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += `<option value="${item.owner_id}">${item.owner_name}</option>`
+        })
+        $('#getNameList').append(items);
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerCreateIndex = '';
+var layerUpdateIndex = ''
+layui.use('layer', function() {
+
+    //新增弹框
+    $('.add').click(function() {
+            layerCreateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['410px', '500px'],
+                content: $(".addDataOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        layer.close(layerCreateIndex);
+                    })
+                }
+            })
+        }),
+        //修改弹框信息 
+        $('.edit').click(function() {
+
+            if (!$('.pure-table tr').has('.checked').length) {
+                layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+            } else {
+                let datalist = $('.pure-table tr').find('.checked').data('user');
+
+                $('.editDataOut input[name=interface_name]').val(datalist.interface_name)
+                $('.editDataOut input[name=interface_route]').val(datalist.interface_route)
+                $('.editDataOut input[name=interface_parameter').val(datalist.interface_parameter)
+                $('.editDataOut select[name=interface_transmission_mode]').val(datalist.interface_transmission_mode)
+                $('.editDataOut input[name=business]').val(datalist.business)
+                $('.editDataOut textarea[name=interface_explain').val(datalist.interface_explain)
+                $('.editDataOut input[name=id').val(datalist.id)
+                    //$('.editDataOut input[name=interface_file_route').val(datalist.interface_file_route)
+                    // if (datalist.interface_file_route) {
+                    //     $('#systemLogoShow').attr('src', datalist.interface_file_route)
+                    //     $('#systemLogoShow').css('display', 'block')
+                    // }
+
+                var str = datalist.interface_file_route;
+                var index = str.lastIndexOf("/");
+                var interface_file_route_name = str.substring(index + 1, str.length)
+                if (datalist.interface_file_route) {
+                    $('#deviceFileShow').attr('href', datalist.interface_file_route)
+                    $('#deviceFileShow').css('display', 'block')
+                    $('#deviceFileShow').text(interface_file_route_name)
+                }
+                layerUpdateIndex = layer.open({
+                    type: 1,
+                    title: false,
+                    closeBtn: 0,
+                    shadeClose: true,
+                    skin: 'yourclass',
+                    area: ['410px', '520px'],
+                    content: $(".editDataOut"),
+                    success: function() {
+                        $('.clsBtn,.cancel').click(function() {
+                            layer.close(layerUpdateIndex);
+                        })
+                    }
+                });
+
+                $('#editDataForm #interface_file_route').off('change').on('change', function() {
+                    // 先获取用户上传的文件对象
+                    let fileObj = this.files[0];
+
+                    // 生成一个文件读取的内置对象
+                    //  let fileReader = new FileReader();
+                    // 将文件对象传递给内置对象
+                    //     fileReader.readAsDataURL(fileObj); //这是一个异步执行的过程,所以需要onload回调函数执行读取数据后的操作
+                    //    console.log('=================2222=====')
+                    //    console.log(fileReader)
+                    // 将读取出文件对象替换到img标签
+                    //  fileReader.onload = function() { // 等待文件阅读器读取完毕再渲染图片
+                    // $('#systemLogoShow').attr('src', fileReader.result)
+                    //    $('#deviceFileShow').html(fileObj.name)
+
+                    //   $('#deviceFileShow').css('display', 'bloc//k')
+                    //}
+
+                    $('#deviceFileShow').html('')
+                        // $('#deviceFileShow').css('display', 'block')
+                    uploadImg('interface_file_route', function(result) {
+                        result = JSON.parse(result);
+                        if (!result.flag) {
+                            alert('上传图片失败')
+                            return;
+                        }
+                        $('#editDataForm input[name=interface_file_route]').val(result.data)
+                    });
+                });
+            }
+        })
+
+    //删除信息
+    $('.delete').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            //layer.msg('请选择一条需要修改的信息');
+            layer.msg('请选择一条需要删除的信息!', { icon: 5 });
+        } else {
+            let dataId = $('.pure-table tr').find('.checked').data('id');
+            ajaxRequest(DEVICE_COMMUNICATE_DELETE, "POST", { "ID_LIST": [{ "id": dataId }] }, function(result) {
+                $(".pure-table tbody tr.selected").remove()
+                let data = result
+                layer.close(layer.layerCreateIndex);
+                layer.msg('删除成功!', { icon: 6 });
+                getListDataAjax()
+            }, function(errorMsg) {
+                alert("用户删除失败!");
+            }, 2)
+        }
+    })
+})
+
+let validRequest = {
+    "interface_name": "请输入接口名称",
+    "interface_route": "请输入接口路径",
+    "interface_parameter": "请输入接口参数",
+    "interface_transmission_mode": "请选择接口传输方式",
+    "business": "请输入所属厂家",
+    "interface_explain": "请输入接口说明",
+}
+
+/* 新增发送请求 */
+$('#addDataButton').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#addDataForm").serializeArray());
+    validRequest.company_code = "请选择单位"
+        //验证数据是否为空
+    let res = validParamIsEmpty(allParam, validRequest);
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    //验证文件
+
+    // 判断文件是否为空 
+    var file = $("input[name='file']").val(); //用户文件内容(文件)
+    if (file == "") {
+        alert("请选择上传的目标文件! ")
+        return false;
+    }
+
+    //上传文件
+    uploadImg('addFile', function(data) {
+        data = JSON.parse(data); //aa json字符串转对象
+        if (data.flag) {
+            //将返回的路径 拼接到提交的数据对象里
+            allParam['interface_file_route'] = data.data;
+            ajaxRequest(DEVICE_COMMUNICATE_ADD, "POST", allParam, function(result) {
+                let data = result.data;
+                layer.close(layerCreateIndex);
+                layer.msg('添加成功!', { icon: 6 });
+                getListDataAjax();
+            }, function(errorMsg) {
+                alert("新增失败!");
+            })
+        } else {
+            return;
+        }
+    });
+})
+
+
+/* 修改发送请求 */
+$('#editDataButton').click(function() {
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#editDataForm").serializeArray());
+    // let validRequest = {}
+    //验证数据是否为
+    delete(validRequest.company_code)
+    let res = validParamIsEmpty(allParam, validRequest);
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+    ajaxRequest(DEVICE_COMMUNICATE_UPDATE, "POST", allParam, function(result) {
+        layer.close(layerUpdateIndex);
+        layer.msg('修改成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("数据修改失败!");
+    })
+
+})

+ 476 - 0
js/device-list.js

@@ -0,0 +1,476 @@
+var pageNo = 1;
+var totalPages = 0;
+
+//设备列表
+getListDataAjax();
+
+//获取设备列表 ajax请求
+function getListDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 4;
+
+    ajaxRequest(DEVICE_LIST_SEARCH, "POST", queryParam, function(result) {
+        let data = result.pageList;
+        let items = '';
+        if (result.totalCount > 0) {
+            data.forEach(function(item, key) {
+                let transmissionModel = "";
+                if (item.transmission_model == 1) {
+                    transmissionModel = "NB-IOT"
+                } else if (item.transmission_model == 2) {
+                    transmissionModel = "Lora-IOT"
+                } else {
+                    transmissionModel = "2G/4G/5G"
+                }
+                items += "<tr>" +
+                    "<td class='status' data-user='" + JSON.stringify(item) + "' data-ownercode=" + item.ownerCode + "></td>" +
+                    "<td>" + item.ownerCode + "</td>" +
+                    "<td>" + item.ownerName + "</td>" +
+                    "<td>" + item.dwtype + "</td>" +
+                    "<td>" + item.installMan + "</td>" +
+                    "<td>" + getFormatDate(item.installTime) + "</td>" +
+                    "</tr>"
+            })
+        }
+        $('#dataList').html(items);
+        totalPages = result.totalPages;
+        $('#totalPage').html(totalPages); //总共多少页
+        $('#dataTotal').html(result.totalCount); //总共多少条数据
+        $('#currentPage').val(pageNo); //当前页面
+        let pageFrom = (pageNo - 1) * result.pageSize + 1; //开始
+        let pageTo = result.pageNo * result.pageSize; //结束
+
+        pageTo = pageTo > result.totalCount ? result.totalCount : pageTo;
+
+        $('#pageFrom').html(pageFrom);
+        $('#pageTo').html(pageTo);
+
+        // 无数据时
+        if (!data.length) {
+            $('.pager.has-data').hide()
+            $('.pager.no-data').show()
+        } else {
+            $('.pager.has-data').show()
+            $('.pager.no-data').hide()
+        }
+
+        if (pageNo < totalPages) {
+            $('#nextPageButton,#lastPageButton').removeClass('disabled');
+        } else {
+            $('#nextPageButton,#lastPageButton').addClass('disabled');
+        }
+        if (pageNo === 1) {
+            $('#firstPageButton,#prevPageButton').addClass('disabled');
+        } else {
+            $('#firstPageButton,#prevPageButton').removeClass('disabled');
+        }
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//按钮搜索
+$('#buttonClick').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj());
+})
+
+//拼接搜索条件
+function getSearchParamObj() {
+    let queryParam = {};
+    let ownerName = $('#ownerName').val();
+    let startTime = $('#startTime').val()
+    let endTime = $('#endTime').val()
+    queryParam.ownerName = ownerName;
+    queryParam.startTime = startTime;
+    queryParam.endTime = endTime;
+    return queryParam;
+}
+
+//重置表单
+$('.reset').click(resetForm)
+
+//重置表单
+function resetForm() {
+    pageNo = 1;
+    $("#ownerName").val("");
+    $("#startTime").val("");
+    $("#endTime").val("");
+    getListDataAjax(getSearchParamObj());
+}
+
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+    pageNo = totalPages;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+
+//单位下拉
+getCompanyList()
+
+function getCompanyList() {
+    ajaxRequest(COMPANY_LIST, "POST", {}, function(result) {
+        let data = result.data;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += `<option value="${item.ownerId}">${item.ownerName}</option>`
+        })
+        $('#getCompanyList').append(items);
+        $('#getCompanyList2').append(items);
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//类型下拉
+getTypeList()
+
+function getTypeList() {
+    ajaxRequest(TYPE_LIST, "POST", {}, function(result) {
+        let data = result.RESULT.pageList;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += `<option value="${item.id}">${item.type_name}</option>`
+        })
+        $('#getTypeList').append(items);
+        $('#getTypeList2').append(items);
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//建筑下拉
+getBuildingList()
+
+function getBuildingList() {
+    ajaxRequest(BUILD_TREE_LIST, "POST", {}, function(result) {
+        let data = result.data;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += `<option value="${item.id}">${item.buildName}</option>`
+        })
+        $('#getBuildingList').append(items);
+        $('#getBuildingList2').append(items);
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+// 建筑与楼层
+linkFloor('#getBuildingList')
+linkFloor('#getBuildingList2')
+
+function linkFloor(element) {
+    $(element).on('change', function() {
+
+        //获取公司id
+        let buildId = $(this).find('option:selected').val();
+        ajaxRequest(BUILD_TREE_LIST, "POST", { "buildId": buildId }, function(result) {
+            let floorItems = '<option value="">请选择</option>';
+            let buildObj = result.data;
+            if (buildObj) {
+                buildObj.forEach(function(item, key) {
+                    floorItems += `<option value="${item.floorId}">${item.floorName}</option>`
+                })
+                $('#getFloorList').html(floorItems);
+                $('#getFloorList2').html(floorItems);
+            } else {
+                $('#getFloorList').html(floorItems);
+                $('#getFloorList2').html(floorItems);
+            }
+        }, function(errorMsg) {
+            alert("请求数据失败!");
+        })
+    })
+}
+
+// 楼层与房间联动
+linkRoom('#getFloorList')
+linkRoom('#getFloorList2')
+
+function linkRoom(element) {
+    $(element).on('change', function() {
+        //获取楼层id
+        let floorName = $(this).find('option:selected').val();
+        ajaxRequest(BUILD_TREE_LIST, "POST", { "floorId": floorName }, function(result) {
+
+            let roomItems = '<option value="">请选择</option>';
+            let floorObj = result.data;
+            floorObj.forEach(function(item, key) {
+                roomItems += `<option value="${item.roomId}">${item.roomName}</option>`
+            })
+            $('#getRoomList').html(roomItems);
+
+        }, function(errorMsg) {
+            alert("请求数据失败!");
+        })
+    })
+}
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerCreateIndex = '';
+var layerUpdateIndex = ''
+layui.use('layer', function() {
+
+    //新增弹框
+    $('.add').click(function() {
+            layerCreateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['1000px', '400px'],
+                content: $(".addDeviceListOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        layer.close(layerCreateIndex);
+                    })
+                }
+            })
+        }),
+        //修改弹框信息 
+        $('.edit').click(function() {
+
+            if (!$('.pure-table tr').has('.checked').length) {
+                layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+            } else {
+                let userInfo = $('.pure-table tr').find('.checked').data('user');
+                $('.editDeviceListOut input[name=ownerCode]').val(userInfo.ownerCode)
+                $('.editDeviceListOut input[name=ownerName]').val(userInfo.ownerName)
+                $('.editDeviceListOut input[name=unitinfo').val(userInfo.unitinfo)
+
+                // 建筑赋值
+                $('.editDeviceListOut select[name=ownerXh]').val(userInfo.ownerXh)
+
+                // 楼层下拉展示及赋值
+                if ($('#getBuildingList2').val()) {
+                    listFloor()
+
+                    function listFloor() {
+                        let buildId = $('#getBuildingList2').find('option:selected').val();
+                        ajaxRequest(BUILD_TREE_LIST, "POST", { "buildId": buildId }, function(result) {
+                            let floorItems = '<option value="">请选择</option>';
+                            let buildObj = result.data;
+                            if (buildObj) {
+                                buildObj.forEach(function(item, key) {
+                                    floorItems += `<option value="${item.floorId}">${item.floorName}</option>`
+                                })
+                                $('#getFloorList2').html(floorItems);
+                            } else {
+                                $('#getFloorList2').html(floorItems);
+                            }
+                        }, function(errorMsg) {
+                            alert("请求数据失败!");
+                        })
+                    }
+                }
+                $('.editDeviceListOut select[name=louyu]').val(userInfo.louyu)
+
+                // 房间下拉展示及赋值
+                if ($('#getFloorList2').val()) {
+                    listRoom()
+
+                    function listRoom() {
+                        let floorId = $('#getFloorList2').find('option:selected').val();
+                        ajaxRequest(BUILD_TREE_LIST, "POST", { "floorId": floorId }, function(result) {
+                            let roomItems = '<option value="">请选择</option>';
+                            let floorObj = result.data;
+                            if (floorObj) {
+                                floorObj.forEach(function(item, key) {
+                                    roomItems += `<option value="${item.roomId}">${item.roomName}</option>`
+                                })
+                                $('#getRoomList2').html(roomItems);
+                            } else {
+                                $('#getRoomList2').html(roomItems);
+                            }
+                        }, function(errorMsg) {
+                            alert("请求数据失败!");
+                        })
+                    }
+                }
+                $('.editDeviceListOut select[name=rtmp]').val(userInfo.rtmp)
+
+                $('.editDeviceListOut input[name=address').val(userInfo.address)
+                $('.editDeviceListOut input[name=posistion').val(userInfo.posistion)
+
+                $('.editDeviceListOut select[name=dwtype]').val(userInfo.dwtype)
+                $('.editDeviceListOut select[name=company]').val(userInfo.company)
+
+                $('.editDeviceListOut input[name=transferType').val(userInfo.transferType)
+                $('.editDeviceListOut input[name=hls').val(userInfo.hls)
+                $('.editDeviceListOut input[name=ownerCode').val(userInfo.ownerCode)
+
+                // userInfo.addr1 = "上海";
+                $('.editDeviceListOut select[name=addr1]').val(userInfo.addr1)
+
+                provinceText = userInfo.addr1;
+                $.each(provinceList, function(i, item) {
+                    if (provinceText == item.name) {
+                        cityItem = i;
+                        return cityItem
+                    }
+                });
+                removeEle(city);
+                removeEle(town);
+                $.each(provinceList[cityItem].cityList, function(i, item) {
+                        addEle(city, item.name)
+                    })
+                    // userInfo.addr2 = "市辖区"
+                $('.editDeviceListOut select[name=addr2]').val(userInfo.addr2)
+
+                cityText = userInfo.addr2;
+                removeEle(town);
+                $.each(provinceList, function(i, item) {
+                    if (provinceText == item.name) {
+                        cityItem = i;
+                        return cityItem
+                    }
+                });
+                $.each(provinceList[cityItem].cityList, function(i, item) {
+                    if (cityText == item.name) {
+                        for (var n = 0; n < item.areaList.length; n++) {
+                            addEle(town, item.areaList[n])
+                        }
+                    }
+                });
+
+                // userInfo.addr3 = "黄浦区"
+                $('.editDeviceListOut select[name=addr3]').val(userInfo.addr3)
+
+                layerUpdateIndex = layer.open({
+                    type: 1,
+                    title: false,
+                    closeBtn: 0,
+                    shadeClose: true,
+                    skin: 'yourclass',
+                    area: ['1000px', '400px'],
+                    content: $(".editDeviceListOut"),
+                    success: function() {
+                        $('.clsBtn,.cancel').click(function() {
+                            layer.close(layerUpdateIndex);
+                        })
+                    }
+                });
+            }
+        })
+
+    //删除信息
+    $('.delete').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            layer.msg('请选择一条需要删除的信息!', { icon: 5 });
+        } else {
+            let ownerCode = $('.pure-table tr').find('.checked').data('ownercode');
+            ajaxRequest(DEVICE_LIST_DELETE, "POST", { "ownerCode": ownerCode }, function(result) {
+                $(".pure-table tbody tr.selected").remove()
+                layer.close(layer.layerCreateIndex);
+                layer.msg('删除成功!', { icon: 6 });
+                getListDataAjax()
+
+            }, function(errorMsg) {
+                alert("用户删除失败!");
+            })
+        }
+    })
+})
+
+/* 新增发送请求 */
+$('#addData').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#addDataForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "ownerCode": "请输入设备编号",
+        "ownerName": "请输入设备名称",
+        "unitinfo": "填写安装位置",
+        "ownerXh": "请选择建筑",
+        // "louyu": "请选择楼层",
+        // "rtmp": "请选择房间",
+        "addr1": "请选择省份",
+        "addr2": "请选择所属市区",
+        "addr3": "请选择所属区、县",
+        "address": "请输入详细地址",
+        "posistion": "请填写GIS坐标",
+        "dwtype": "请选择设备类型",
+        "company": "请选择所属单位",
+        "transferType": "请输入传输方式",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    //验证通过 请求ajax
+    ajaxRequest(DEVICE_LIST_ADD, "POST", allParam, function(result) {
+        layer.close(layerCreateIndex);
+        layer.msg('添加成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("异常错误!");
+    })
+})
+
+/* 修改发送请求 */
+$('#dataUpdate').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#updateForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "ownerCode": "请输入设备编号",
+        "ownerName": "请输入设备名称",
+        "unitinfo": "填写安装位置",
+        "ownerXh": "请选择建筑",
+        // "louyu": "请选择楼层",
+        // "rtmp": "请选择房间",
+        "addr1": "请选择省份",
+        "addr2": "请选择所属市区",
+        "addr3": "请选择所属区、县",
+        "address": "请输入详细地址",
+        "posistion": "请填写GIS坐标",
+        "dwtype": "请选择设备类型",
+        "company": "请选择所属单位",
+        "transferType": "请输入传输方式",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    ajaxRequest(DEVICE_LIST_UPDATE, "POST", allParam, function(result) {
+        if (result.flag) {
+            layer.msg('修改成功!', { icon: 6 });
+        } else {
+            //服务端返回报错
+            alert(result.msg);
+        }
+        layer.close(layerUpdateIndex);
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("数据修改失败!");
+    })
+})

+ 281 - 0
js/device-type.js

@@ -0,0 +1,281 @@
+var pageNo = 1;
+var totalPages = 0;
+
+//设备类型列表
+getListDataAjax();
+
+//获取设备类型列表 ajax请求
+function getListDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 4;
+
+    ajaxRequest(DEVICE_TYPE_LIST, "POST", queryParam, function(result) {
+            let data = result.RESULT.pageList;
+
+            let items = '';
+            if (result.RESULT.totalCount > 0) {
+
+                data.forEach(function(item, key) {
+                    let transmissionModel = "";
+                    if (item.transmission_model == 1) {
+                        transmissionModel = "NB-IOT"
+                    } else if (item.transmission_model == 2) {
+                        transmissionModel = "Lora-IOT"
+                    } else {
+                        transmissionModel = "2G/4G/5G"
+                    }
+                    items += "<tr>" +
+                        "<td class='status' data-user='" + JSON.stringify(item) + "' data-id=" + item.id + "></td>" +
+                        "<td>" + item.xh + "</td>" +
+                        "<td>" + item.type_name + "</td>" +
+                        "<td>" + item.type_value + "</td>" +
+                        "<td>" + transmissionModel + "</td>" +
+                        "<td>" + item.business + "</td>" +
+                        "<td>" + item.company_name + "</td>" +
+                        "<td>" + item.add_people + "</td>" +
+                        "<td>" + getFormatDate(item.add_time.time) + "</td>" +
+                        "</tr>"
+                })
+            }
+            $('#dataList').html(items);
+
+            totalPages = result.RESULT.totalPages;
+            $('#totalPage').html(totalPages); //总共多少页
+            $('#dataTotal').html(result.RESULT.totalCount); //总共多少条数据
+            $('#currentPage').val(pageNo); //当前页面
+
+            let pageFrom = (pageNo - 1) * result.RESULT.pageSize + 1; //开始
+            let pageTo = result.RESULT.pageNo * result.RESULT.pageSize; //结束
+
+            pageTo = pageTo > result.RESULT.totalCount ? result.RESULT.totalCount : pageTo;
+
+            $('#pageFrom').html(pageFrom);
+            $('#pageTo').html(pageTo);
+
+            // 无数据时
+            if (!data.length) {
+                $('.pager.has-data').hide()
+                $('.pager.no-data').show()
+            } else {
+                $('.pager.has-data').show()
+                $('.pager.no-data').hide()
+            }
+
+            if (pageNo < totalPages) {
+                $('#nextPageButton,#lastPageButton').removeClass('disabled');
+            } else {
+                $('#nextPageButton,#lastPageButton').addClass('disabled');
+            }
+            if (pageNo === 1) {
+                $('#firstPageButton,#prevPageButton').addClass('disabled');
+            } else {
+                $('#firstPageButton,#prevPageButton').removeClass('disabled');
+            }
+        },
+        function(errorMsg) {
+            alert("请求数据失败!");
+        })
+}
+
+//按钮搜索
+$('#buttonClick').on('click', function() {
+    pageNo = 1
+    getListDataAjax(getSearchParamObj());
+})
+
+//拼接搜索条件
+function getSearchParamObj() {
+    let queryParam = {};
+    let business = $('#business').val();
+    let type_value = $('#type_value').val()
+    queryParam.business = business;
+    queryParam.type_value = type_value;
+    return queryParam;
+}
+
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+
+    pageNo = totalPages;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+//重置表单
+$('.reset').click(resetForm)
+
+//重置表单
+function resetForm() {
+    pageNo = 1
+    $("#business").val("");
+    $("#type_value").val("");
+    getListDataAjax(getSearchParamObj());
+}
+
+//单位下拉
+getNameList()
+
+//单位下拉 ajax请求
+function getNameList() {
+    ajaxRequest(DEVICE_TYPE_COMPANYLIST, "POST", {}, function(result) {
+        let data = result.RESULT;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += `<option value="${item.owner_id}">${item.owner_name}</option>`
+        })
+        $('#getNameList').append(items);
+        $('#getNameList2').append(items);
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerCreateIndex = '';
+var layerUpdateIndex = ''
+layui.use('layer', function() {
+
+    //新增弹框
+    $('.add').click(function() {
+            layerCreateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['400px', '400px'],
+                content: $(".addDeviceTypeOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        layer.close(layerCreateIndex);
+                    })
+                }
+            })
+        }),
+        //修改弹框信息 
+        $('.edit').click(function() {
+
+            if (!$('.pure-table tr').has('.checked').length) {
+                layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+            } else {
+                let userInfo = $('.pure-table tr').find('.checked').data('user');
+
+                $('.editDeviceTypeOut input[name=type_name]').val(userInfo.type_name)
+                $('.editDeviceTypeOut input[name=type_value]').val(userInfo.type_value)
+                $('.editDeviceTypeOut select[name=transmission_model]').val(userInfo.transmission_model)
+                $('.editDeviceTypeOut input[name=business').val(userInfo.business)
+                $('.editDeviceTypeOut select[name=company_code]').val(userInfo.company_code)
+                $('.editDeviceTypeOut input[name=id').val(userInfo.id)
+
+                layerUpdateIndex = layer.open({
+                    type: 1,
+                    title: false,
+                    closeBtn: 0,
+                    shadeClose: true,
+                    skin: 'yourclass',
+                    area: ['410px', '400px'],
+                    content: $(".editDeviceTypeOut"),
+                    success: function() {
+                        $('.clsBtn,.cancel').click(function() {
+                            layer.close(layerUpdateIndex);
+                        })
+                    }
+                });
+            }
+        })
+
+    //删除信息
+    $('.delete').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            //layer.msg('请选择一条需要修改的信息');
+            layer.msg('请选择一条需要删除的信息!', { icon: 5 });
+        } else {
+            let dataId = $('.pure-table tr').find('.checked').data('id');
+            ajaxRequest(DEVICE_TYPE_DELETE, "POST", { "ID_LIST": [{ "id": dataId }] }, function(result) {
+                $(".pure-table tbody tr.selected").remove()
+                let data = result
+                layer.close(layer.layerCreateIndex);
+                layer.msg('删除成功!', { icon: 6 });
+                getListDataAjax()
+
+            }, function(errorMsg) {
+                alert("用户删除失败!");
+            }, 2)
+        }
+    })
+})
+
+/* 新增发送请求 */
+$('#addMenu').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#addMenuForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "type_name": "请输入类型名称",
+        "type_value": "请输入类型参数",
+        "transmission_model": "请选择传输类型",
+        "business": "请输入厂家名称",
+        "company_code": "请选择所属单位",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    //验证通过 请求ajax
+    ajaxRequest(DEVICE_TYPE_ADD, "POST", allParam, function(result) {
+        layer.close(layerCreateIndex);
+        layer.msg('添加成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("异常错误!");
+    })
+})
+
+/* 修改发送请求 */
+$('#dataUpdate').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#updateMenuForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "type_name": "请输入类型名称",
+        "type_value": "请输入类型参数",
+        "transmission_model": "请选择传输方式",
+        "business": "请输入厂家名称",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    ajaxRequest(DEVICE_TYPE_UPDATE, "POST", allParam, function(result) {
+        layer.close(layerUpdateIndex);
+        layer.msg('修改成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("数据修改失败!");
+    })
+})

+ 301 - 0
js/deviceCheck-channel.js

@@ -0,0 +1,301 @@
+var pageNo = 1;
+var totalPages = 0;
+
+//列表渲染
+getListDataAjax();
+
+//获取列表 ajax请求
+function getListDataAjax(queryParam = {}, pageNo = 1) {
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 4;
+
+    ajaxRequest(DEVICE_CHECKCHANNEL_LIST, "POST", queryParam, function(result) {
+        let data = result.RESULT.pageList;
+        let items = '';
+        if (result.RESULT.totalCount > 0) {
+            data.forEach(function(item, key) {
+                items += "<tr>" +
+                    "<td class='status' data-user='" + JSON.stringify(item) + "' data-id=" + item.id + "></td>" +
+                    "<td>" + item.xh + "</td>" +
+                    "<td>" + item.passageway_name + "</td>" +
+                    "<td>" + item.passageway_type_name + "</td>" +
+                    "<td>" + item.dwtype_name + "</td>" +
+                    "<td>" + item.company_name + "</td>" +
+                    "<td>" + item.add_people + "</td>" +
+                    "<td>" + getFormatDate(item.add_time.time) + "</td>" +
+                    "</tr>"
+            })
+        }
+        $('#dataList').html(items);
+
+        totalPages = result.RESULT.totalPages;
+        $('#totalPage').html(totalPages); //总共多少页
+        $('#dataTotal').html(result.RESULT.totalCount); //总共多少条数据
+        $('#currentPage').val(pageNo); //当前页面
+
+        let pageFrom = (pageNo - 1) * result.RESULT.pageSize + 1; //开始
+        let pageTo = result.RESULT.pageNo * result.RESULT.pageSize; //结束
+
+        pageTo = pageTo > result.RESULT.totalCount ? result.RESULT.totalCount : pageTo;
+
+        $('#pageFrom').html(pageFrom);
+        $('#pageTo').html(pageTo);
+
+        // 无数据时
+        if (!data.length) {
+            $('.pager.has-data').hide()
+            $('.pager.no-data').show()
+        } else {
+            $('.pager.has-data').show()
+            $('.pager.no-data').hide()
+        }
+
+        if (pageNo < totalPages) {
+            $('#nextPageButton,#lastPageButton').removeClass('disabled');
+        } else {
+            $('#nextPageButton,#lastPageButton').addClass('disabled');
+        }
+        if (pageNo === 1) {
+            $('#firstPageButton,#prevPageButton').addClass('disabled');
+        } else {
+            $('#firstPageButton,#prevPageButton').removeClass('disabled');
+        }
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//按钮搜索
+$('#buttonSearch').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj());
+})
+
+//拼接搜索条件
+function getSearchParamObj() {
+    let queryParam = {};
+    let passageway_name = $('#passageway_name').val();
+    let passageway_type_name = $('#passageway_type_name').val()
+    queryParam.passageway_name = passageway_name;
+    queryParam.passageway_type_name = passageway_type_name;
+    return queryParam;
+}
+
+//重置表单
+$('.reset').click(resetForm)
+
+//重置表单
+function resetForm() {
+    pageNo = 1;
+    $("#passageway_name").val("");
+    $("#passageway_type_name").val("");
+    getListDataAjax(getSearchParamObj());
+}
+
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+    pageNo = totalPages;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+//单位下拉
+getNameList()
+
+//单位下拉 ajax请求
+function getNameList() {
+    ajaxRequest(DEVICE_TYPE_COMPANYLIST, "POST", {}, function(result) {
+        let data = result.RESULT;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += `<option value="${item.owner_id}">${item.owner_name}</option>`
+        })
+
+        $('#getNameList').append(items);
+        $('#getNameList2').append(items);
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+
+}
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerCreateIndex = '';
+var layerUpdateIndex = ''
+layui.use('layer', function() {
+
+    //新增弹框
+    $('.add').click(function() {
+            layerCreateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['400px', '400px'],
+                content: $(".addDataOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                            layer.close(layerCreateIndex);
+                        })
+                        // 下拉联动
+                    $('.dwtype').on('change', function() {
+                        let index = $(this).find('option:selected').val();
+                        mingTest(index, 'passageway_type_add')
+                    })
+                    mingTest(1, 'passageway_type_add')
+                }
+            })
+        }),
+        //修改弹框信息 
+        $('.edit').click(function() {
+
+            if (!$('.pure-table tr').has('.checked').length) {
+                layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+            } else {
+                let userInfo = $('.pure-table tr').find('.checked').data('user');
+                $('.editDataOut input[name=passageway_name]').val(userInfo.passageway_name)
+                $('.editDataOut input[name=device_code]').val(userInfo.device_code)
+                $('.editDataOut input[name=company_code').val(userInfo.company_code)
+                $('.editDataOut input[name=id').val(userInfo.id)
+                $('.editDataOut select[name=dwtype]').val(userInfo.dwtype)
+                $('.editDataOut select[name=passageway_type]').val(userInfo.passageway_type)
+
+                layerUpdateIndex = layer.open({
+                    type: 1,
+                    title: false,
+                    closeBtn: 0,
+                    shadeClose: true,
+                    skin: 'yourclass',
+                    area: ['410px', '400px'],
+                    content: $(".editDataOut"),
+                    success: function() {
+                        $('.clsBtn,.cancel').click(function() {
+                            layer.close(layerUpdateIndex);
+                        })
+                        $('.dwtype').on('change', function() {
+                            let dwtype = $(this).find('option:selected').val();
+                            mingTest(dwtype, 'passageway_type_edit')
+                        })
+                        mingTest(userInfo.dwtype, 'passageway_type_edit', userInfo.passageway_type, userInfo.passageway_type)
+                    }
+                });
+            }
+        })
+
+    //删除信息
+    $('.delete').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            layer.msg('请选择一条需要删除的信息!', { icon: 5 });
+        } else {
+            let dataId = $('.pure-table tr').find('.checked').data('id');
+            ajaxRequest(DEVICE_CHECKCHANNEL_DELETE, "POST", { "ID_LIST": [{ "id": dataId }] }, function(result) {
+                $(".pure-table tbody tr.selected").remove()
+                let data = result
+                layer.close(layer.layerCreateIndex);
+                layer.msg('删除成功!', { icon: 6 });
+                getListDataAjax()
+            }, function(errorMsg) {
+                alert("删除失败!");
+            }, 2)
+        }
+    })
+})
+
+
+/* 新增发送请求 */
+$('#addData').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#addDataForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "passageway_name": "请输入通道名称",
+        "device_code": "请输入设备编号",
+        "dwtype": "请选择设备类型",
+        "passageway_type": "请选择通道类型",
+        "company_code": "请选择所属单位",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    //验证通过 请求ajax
+    ajaxRequest(DEVICE_CHECKCHANNEL_ADD, "POST", allParam, function(result) {
+        layer.close(layerCreateIndex);
+        layer.msg('添加成功!', { icon: 6 });
+        getListDataAjax();
+
+    }, function(errorMsg) {
+        alert("异常错误!");
+    })
+})
+
+/* 修改发送请求 */
+$('#dataUpdate').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#editDataForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "passageway_name": "请输入通道名称",
+        "device_code": "请输入设备编号",
+        "dwtype": "请选择设备类型",
+        "passageway_type": "请选择通道类型",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    ajaxRequest(DEVICE_CHECKCHANNEL_UPDATE, "POST", allParam, function(result) {
+        layer.close(layerUpdateIndex);
+        layer.msg('修改成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("数据修改失败!");
+    })
+})
+
+function mingTest(dwTypeValue, elementId, passagewayTypeFirstIndex = 0) {
+    if (dwTypeValue == 1) {
+        $('#' + elementId + ' .dwtype').eq(dwTypeValue - 1).prop("selected", true); //
+        $('#' + elementId + ' .passagewayTypeFirst').show();
+        $('#' + elementId + ' .passagewayTypeSecond').hide();
+        $('#' + elementId + ' .passagewayTypeThird').hide();
+        $('#' + elementId + ' .passagewayTypeFirst').eq(passagewayTypeFirstIndex).prop("selected", true); //dwtype
+    } else if (dwTypeValue == 2) {
+        $('#' + elementId + ' .dwtype').eq(dwTypeValue - 1).prop("selected", true); //
+        $('#' + elementId + ' .passagewayTypeFirst').hide();
+        $('#' + elementId + ' .passagewayTypeSecond').show();
+        $('#' + elementId + ' .passagewayTypeThird').hide();
+        $('#' + elementId + ' .passagewayTypeSecond').eq(passagewayTypeFirstIndex - 1).prop("selected", true);
+    } else if (dwTypeValue == 3) {
+        $('#' + elementId + ' .dwtype').eq(dwTypeValue - 1).prop("selected", true); //
+        $('#' + elementId + ' .passagewayTypeFirst').hide();
+        $('#' + elementId + ' .passagewayTypeSecond').hide();
+        $('#' + elementId + ' .passagewayTypeThird').show();
+        $('#' + elementId + ' .passagewayTypeThird').eq(passagewayTypeFirstIndex - 1).prop("selected", true);
+    }
+}

Разница между файлами не показана из-за своего большого размера
+ 21 - 0
js/echarts.min.js


+ 272 - 0
js/event-manage.js

@@ -0,0 +1,272 @@
+var pageNo = 1;
+var totalPages = 0;
+
+//列表渲染
+getListDataAjax();
+
+//获取列表 ajax请求
+function getListDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 4;
+
+    ajaxRequest(EVENT_MANAGE_LIST, "POST", queryParam, function(result) {
+        let data = result.RESULT.pageList;
+        let items = '';
+        if (result.RESULT.totalCount > 0) {
+            data.forEach(function(item, key) {
+                var clzt = item.clzt == 1 ? '已处理' : '未处理';
+                var clztClassName = item.clzt == 1 ? 'processed' : 'unprocess';
+                var cl_tiem = item.cl_tiem ? getFormatDate(item.cl_tiem) : '';
+                items += "<tr>" +
+                    "<td class='status' data-user='" + JSON.stringify(item) + "' data-id=" + item.id + "></td>" +
+                    "<td>" + item.xh + "</td>" +
+                    "<td>" + item.company_name + "</td>" +
+                    "<td>" + getFormatDate(item.reporting_time.time) + "</td>" +
+                    "<td>" + item.event_name + "</td>" +
+                    "<td>" + item.event_type_name + "</td>" +
+                    "<td class='" + clztClassName + "'>" + clzt + "</td>" +
+                    "<td>" + item.cl_people + "</td>" +
+                    "<td>" + cl_tiem + "</td>" +
+                    "</tr>"
+            })
+        }
+        $('#dataList').html(items);
+        $('#totalCount').html(result.totalCount)
+        $('#handled').html(result.yclCount)
+        $('#unhandle').html(result.wclCount)
+        $('#handleRate').html(result.cll)
+
+        totalPages = result.RESULT.totalPages;
+        $('#totalPage').html(totalPages); //总共多少页
+        $('#dataTotal').html(result.RESULT.totalCount); //总共多少条数据
+        $('#currentPage').val(pageNo); //当前页面
+
+        let pageFrom = (pageNo - 1) * result.RESULT.pageSize + 1; //开始
+        let pageTo = result.RESULT.pageNo * result.RESULT.pageSize; //结束
+        pageTo = pageTo > result.RESULT.totalCount ? result.RESULT.totalCount : pageTo;
+
+        $('#pageFrom').html(pageFrom);
+        $('#pageTo').html(pageTo);
+
+        // 无数据时
+        if (!data.length) {
+            $('.pager.has-data').hide()
+            $('.pager.no-data').show()
+        } else {
+            $('.pager.has-data').show()
+            $('.pager.no-data').hide()
+        }
+        if (pageNo < totalPages) {
+            $('#nextPageButton,#lastPageButton').removeClass('disabled');
+        } else {
+            $('#nextPageButton,#lastPageButton').addClass('disabled');
+        }
+        if (pageNo === 1) {
+            $('#firstPageButton,#prevPageButton').addClass('disabled');
+        } else {
+            $('#firstPageButton,#prevPageButton').removeClass('disabled');
+        }
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//按钮搜索
+$('#buttonSearch').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj());
+})
+
+//拼接搜索条件
+function getSearchParamObj() {
+    let queryParam = {};
+    let event_name = $('#event_name').val();
+    let event_type = $('#event_type').val()
+    queryParam.event_name = event_name;
+    queryParam.event_type = event_type;
+    return queryParam;
+}
+
+//重置表单
+$('.reset').click(resetForm)
+
+//重置表单
+function resetForm() {
+    pageNo = 1;
+    $("#event_name").val("");
+    $("#event_type").val("");
+    getListDataAjax(getSearchParamObj());
+}
+
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+    pageNo = totalPages;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+//单位下拉
+getNameList()
+
+//单位下拉 ajax请求
+function getNameList() {
+    ajaxRequest(DEVICE_TYPE_COMPANYLIST, "POST", {}, function(result) {
+        let data = result.RESULT;
+        let items = '';
+
+        data.forEach(function(item, key) {
+            items += `<option value="${item.owner_id}">${item.owner_name}</option>`
+        })
+        $('#getNameList').append(items);
+        $('#getNameList2').append(items);
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerCreateIndex = '';
+var layerUpdateIndex = ''
+layui.use('layer', function() {
+    //新增弹框
+    $('.add').click(function() {
+            layerCreateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['400px', '400px'],
+                content: $(".addDataOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        layer.close(layerCreateIndex);
+                    })
+                }
+            })
+        }),
+        //处置弹框信息 
+        $('.handle').click(function() {
+            if (!$('.pure-table tr').has('.checked').length) {
+                layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+            } else {
+                let userInfo = $('.pure-table tr').find('.checked').data('user');
+                $('.handleDataOut input[name=company_name]').val(userInfo.company_name)
+                $('.handleDataOut input[name=event_type]').val(userInfo.event_type_name)
+                $('.handleDataOut input[name=event_name]').val(userInfo.event_name)
+                $('.handleDataOut input[name=event_content]').val(userInfo.event_content)
+                $('.handleDataOut textarea[name=cl_content]').val(userInfo.cl_content)
+                $('.handleDataOut input[name=id').val(userInfo.id)
+                if ($('.handleDataOut textarea[name=cl_content]').val()) {
+                    $('.handleDataOut textarea[name=cl_content]').attr({ readonly: 'true' })
+                    $('#handleUpdate').addClass('disabled')
+                } else {
+                    $('.handleDataOut textarea[name=cl_content]').removeAttr("readonly")
+                    $('#handleUpdate').removeClass('disabled')
+                }
+                layerUpdateIndex = layer.open({
+                    type: 1,
+                    title: false,
+                    closeBtn: 0,
+                    shadeClose: true,
+                    skin: 'yourclass',
+                    area: ['410px', '400px'],
+                    content: $(".handleDataOut"),
+                    success: function() {
+                        $('.clsBtn,.cancel').click(function() {
+                            layer.close(layerUpdateIndex);
+                        })
+                    }
+                });
+            }
+        })
+
+    //删除信息
+    $('.delete').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            //layer.msg('请选择一条需要修改的信息');
+            layer.msg('请选择一条需要删除的信息!', { icon: 5 });
+        } else {
+            let dataId = $('.pure-table tr').find('.checked').data('id');
+
+            ajaxRequest(DEVICE_CHECKCHANNEL_DELETE, "POST", { "ID_LIST": [{ "id": dataId }] }, function(result) {
+
+                $(".pure-table tbody tr.selected").remove()
+                layer.close(layer.layerCreateIndex);
+                layer.msg('删除成功!', { icon: 6 });
+                getListDataAjax()
+            }, function(errorMsg) {
+                alert("用户删除失败!");
+            }, 2)
+        }
+    })
+})
+
+
+/* 新增发送请求 */
+$('#addData').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#addDataForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "event_name": "请输入事件名称",
+        "event_content": "请输入事件内容",
+        "event_type": "请选择事件类型",
+        "company_code": "请选择所属单位",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    //验证通过 请求ajax
+    ajaxRequest(EVENT_MANAGE_ADD, "POST", allParam, function(result) {
+        layer.close(layerCreateIndex);
+        layer.msg('添加成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("异常错误!");
+    })
+})
+
+/* 处置发送请求 */
+$('#handleUpdate').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#handleDataForm").serializeArray());
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "cl_content": "请输入处理内容",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+    ajaxRequest(EVENT_MANAGE_HANDLE, "POST", allParam, function(result) {
+        layer.close(layerUpdateIndex);
+        layer.msg('处置成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("数据修改失败!");
+    })
+})

+ 240 - 0
js/eventDanger-manage.js

@@ -0,0 +1,240 @@
+var pageNo = 1;
+var totalPages = 0;
+
+//列表渲染
+getListDataAjax();
+
+//获取列表 ajax请求
+function getListDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 20;
+
+    ajaxRequest(EVENT_DANGER_MANAGE_LIST, "POST", queryParam, function(result) {
+        let data = result.RESULT.pageList;
+        let items = '';
+        if (result.RESULT.totalCount > 0) {
+            data.forEach(function(item, key) {
+
+                var time = item.time.time ? getFormatDate(item.time.time) : '';
+                var clsj = item.clsj.time ? getFormatDate(item.clsj.time) : '';
+                var clztClassName = item.clzt == '已处理' ? 'processed' : 'unprocess';
+
+                items += "<tr>" +
+                    "<td class='status' data-user='" + JSON.stringify(item) + "' data-id=" + item.id + "></td>" +
+                    "<td>" + item.orderIdx + "</td>" +
+                    "<td>" + item.company_name + "</td>" +
+                    "<td>" + time + "</td>" +
+                    "<td>" + item.data + "</td>" +
+                    "<td>" + item.data4 + "</td>" +
+                    "<td>" + item.fullname + "</td>" +
+                    "<td class='" + clztClassName + "'>" + item.clzt + "</td>" +
+                    "<td>" + item.clr + "</td>" +
+                    "<td>" + clsj + "</td>" +
+                    "</tr>"
+            })
+        }
+        $('#dataList').html(items);
+        $('#totalCount').html(result.totalCount)
+        $('#handled').html(result.yclCount)
+        $('#unhandle').html(result.wclCount)
+        $('#handleRate').html(result.cll)
+
+        totalPages = result.RESULT.totalPages;
+        $('#totalPage').html(totalPages); //总共多少页
+        $('#dataTotal').html(result.RESULT.totalCount); //总共多少条数据
+        $('#currentPage').val(pageNo); //当前页面
+        let pageFrom = (pageNo - 1) * result.RESULT.pageSize + 1; //开始
+        let pageTo = result.RESULT.pageNo * result.RESULT.pageSize; //结束
+        pageTo = pageTo > result.RESULT.totalCount ? result.RESULT.totalCount : pageTo;
+        $('#pageFrom').html(pageFrom);
+        $('#pageTo').html(pageTo);
+
+        // 无数据时
+        if (!data.length) {
+            $('.pager.has-data').hide()
+            $('.pager.no-data').show()
+        } else {
+            $('.pager.has-data').show()
+            $('.pager.no-data').hide()
+        }
+
+        if (pageNo < totalPages) {
+            $('#nextPageButton,#lastPageButton').removeClass('disabled');
+        } else {
+            $('#nextPageButton,#lastPageButton').addClass('disabled');
+        }
+        if (pageNo === 1) {
+            $('#firstPageButton,#prevPageButton').addClass('disabled');
+        } else {
+            $('#firstPageButton,#prevPageButton').removeClass('disabled');
+        }
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//按钮搜索
+$('#buttonSearch').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj());
+})
+
+//拼接搜索条件
+function getSearchParamObj() {
+    let queryParam = {};
+    let time_start = $('#time_start').val();
+    let time_end = $('#time_end').val()
+    let clzt = $('#clzt').val()
+    queryParam.time_start = time_start;
+    queryParam.time_end = time_end;
+    queryParam.clzt = clzt;
+    return queryParam;
+}
+
+//重置表单
+$('.reset').click(resetForm)
+
+//重置表单
+function resetForm() {
+    pageNo = 1;
+    $("#clzt").val("");
+    $("#time_start").val("");
+    $("#time_end").val("");
+    getListDataAjax(getSearchParamObj());
+}
+
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+    pageNo = totalPages;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+
+//单位下拉
+getNameList()
+
+//单位下拉 ajax请求
+function getNameList() {
+    ajaxRequest(DEVICE_TYPE_COMPANYLIST, "POST", {}, function(result) {
+        let data = result.RESULT;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += `<option value="${item.owner_id}">${item.owner_name}</option>`
+        })
+        $('#getNameList').append(items);
+        $('#getNameList2').append(items);
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerCreateIndex = '';
+var layerUpdateIndex = ''
+layui.use('layer', function() {
+    //处置弹框信息 
+    $('.handle').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+        } else {
+            //重新渲染表单
+            $('#handleDataForm')[0].reset()
+            layui.use(['form'], function() {
+                var form = layui.form;
+                form.render('radio');
+            });
+            let userInfo = $('.pure-table tr').find('.checked').data('user');
+            $('.handleDataOut input[name=company_name]').val(userInfo.company_name)
+            $('.handleDataOut input[name=name]').val(userInfo.name)
+            $('.handleDataOut input[name=data]').val(userInfo.data)
+            $('.handleDataOut input[name=id').val(userInfo.id)
+            $('.handleDataOut input[name=dwtype]').val(userInfo.dwtype)
+            $('.handleDataOut input[name=status]').val(userInfo.status)
+            $('.handleDataOut input[name=device_code]').val(userInfo.device_code)
+            $('.handleDataOut textarea[name=clnr]').val(userInfo.clnr)
+            if (userInfo.clzt == "已处理") {
+                $('.handleDataOut textarea[name=clnr]').attr({ readonly: 'true' })
+                $('#handleUpdate').addClass('disabled')
+                $('.handle-range').hide()
+                $('.handleDataOut input[name=device_code]').val(userInfo.device_code)
+                $('.handleDataOut input[name=clwb]').val(userInfo.clwb);
+                $("input[type=radio]").attr("disabled", "true")
+                if (userInfo.clwb == 0) {
+                    $("#no").prop("checked", true);
+                } else {
+                    $("#yes").prop("checked", true);
+                }
+                layui.use(['form'], function() {
+                    var form = layui.form;
+                    form.render('radio');
+                });
+            } else {
+                $('.handleDataOut textarea[name=clnr]').removeAttr("readonly")
+                $("input[type=radio]").removeAttr("disabled")
+                $('#handleUpdate').removeClass('disabled')
+                $('.handle-range').show()
+                layui.use(['form'], function() {
+                    var form = layui.form;
+                    form.render('radio');
+                });
+            }
+
+            layerUpdateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['410px', '440px'],
+                content: $(".handleDataOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        layer.close(layerUpdateIndex);
+                    })
+                }
+            });
+        }
+    })
+})
+
+/* 处置发送请求 */
+$('#handleUpdate').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#handleDataForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "clnr": "请输入处理内容",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    ajaxRequest(EVENT_DANGER_MANAGE_HANDLE, "POST", allParam, function(result) {
+        layer.close(layerUpdateIndex);
+        layer.msg('处置成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("数据修改失败!");
+    })
+})

+ 245 - 0
js/eventWarning-manage.js

@@ -0,0 +1,245 @@
+var pageNo = 1;
+var totalPages = 0;
+
+//列表渲染
+getListDataAjax();
+
+//获取列表 ajax请求
+function getListDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 20;
+
+    ajaxRequest(EVENT_WARNING_MANAGE_LIST, "POST", queryParam, function(result) {
+        let data = result.RESULT.pageList;
+        let items = '';
+        if (result.RESULT.totalCount > 0) {
+            data.forEach(function(item, key) {
+
+                var time = item.time.time ? getFormatDate(item.time.time) : '';
+                var clsj = item.clsj.time ? getFormatDate(item.clsj.time) : '';
+                var clztClassName = item.clzt == '已处理' ? 'processed' : 'unprocess';
+                delete(item.data4)
+
+                items += "<tr>" +
+                    "<td class='status' data-user='" + JSON.stringify(item) + "' data-id=" + item.id + "></td>" +
+                    "<td>" + item.orderIdx + "</td>" +
+                    "<td>" + item.company_name + "</td>" +
+                    "<td>" + time + "</td>" +
+                    "<td>" + item.data + "</td>" +
+                    "<td>" + item.fullname + "</td>" +
+                    "<td class='" + clztClassName + "'>" + item.clzt + "</td>" +
+                    "<td>" + item.clr + "</td>" +
+                    "<td>" + clsj + "</td>" +
+                    "</tr>"
+            })
+        }
+        $('#dataList').html(items);
+        $('#totalCount').html(result.totalCount)
+        $('#handled').html(result.yclCount)
+        $('#unhandle').html(result.wclCount)
+        $('#handleRate').html(result.cll)
+
+        totalPages = result.RESULT.totalPages;
+        $('#totalPage').html(totalPages); //总共多少页
+        $('#dataTotal').html(result.RESULT.totalCount); //总共多少条数据
+        $('#currentPage').val(pageNo); //当前页面
+
+        let pageFrom = (pageNo - 1) * result.RESULT.pageSize + 1; //开始
+        let pageTo = result.RESULT.pageNo * result.RESULT.pageSize; //结束
+
+        pageTo = pageTo > result.RESULT.totalCount ? result.RESULT.totalCount : pageTo;
+
+        $('#pageFrom').html(pageFrom);
+        $('#pageTo').html(pageTo);
+
+        // 无数据时
+        if (!data.length) {
+            $('.pager.has-data').hide()
+            $('.pager.no-data').show()
+        } else {
+            $('.pager.has-data').show()
+            $('.pager.no-data').hide()
+        }
+
+        if (pageNo < totalPages) {
+            $('#nextPageButton,#lastPageButton').removeClass('disabled');
+        } else {
+            $('#nextPageButton,#lastPageButton').addClass('disabled');
+        }
+        if (pageNo === 1) {
+            $('#firstPageButton,#prevPageButton').addClass('disabled');
+        } else {
+            $('#firstPageButton,#prevPageButton').removeClass('disabled');
+        }
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//按钮搜索
+$('#buttonSearch').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj());
+})
+
+//拼接搜索条件
+function getSearchParamObj() {
+    let queryParam = {};
+    let time_start = $('#time_start').val();
+    let time_end = $('#time_end').val()
+    let clzt = $('#clzt').val()
+    queryParam.time_start = time_start;
+    queryParam.time_end = time_end;
+    queryParam.clzt = clzt;
+    return queryParam;
+}
+
+//重置表单
+$('.reset').click(resetForm)
+
+//重置表单
+function resetForm() {
+    pageNo = 1;
+    $("#clzt").val("");
+    $("#time_start").val("");
+    $("#time_end").val("");
+    getListDataAjax(getSearchParamObj());
+}
+
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+    pageNo = totalPages;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+//单位下拉
+getNameList()
+
+//单位下拉 ajax请求
+function getNameList() {
+    ajaxRequest(DEVICE_TYPE_COMPANYLIST, "POST", {}, function(result) {
+        let data = result.RESULT;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += `<option value="${item.owner_id}">${item.owner_name}</option>`
+        })
+        $('#getNameList').append(items);
+        $('#getNameList2').append(items);
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerCreateIndex = '';
+var layerUpdateIndex = ''
+layui.use('layer', function() {
+    //处置弹框信息 
+    $('.handle').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+        } else {
+            //重新渲染表单
+            $('#handleDataForm')[0].reset()
+            layui.use(['form'], function() {
+                var form = layui.form;
+                form.render('radio');
+            });
+            let userInfo = $('.pure-table tr').find('.checked').data('user');
+            $('.handleDataOut input[name=company_name]').val(userInfo.company_name)
+            $('.handleDataOut input[name=name]').val(userInfo.name)
+            $('.handleDataOut input[name=data]').val(userInfo.data)
+            $('.handleDataOut textarea[name=clnr]').val(userInfo.clnr)
+            $('.handleDataOut input[name=id').val(userInfo.id)
+            $('.handleDataOut input[name=dwtype]').val(userInfo.dwtype)
+            $('.handleDataOut input[name=status]').val(userInfo.status)
+            $('.handleDataOut input[name=device_code]').val(userInfo.device_code)
+
+            if (userInfo.clzt == "已处理") {
+                $('.handleDataOut textarea[name=clnr]').attr({ readonly: 'true' })
+                $('#handleUpdate').addClass('disabled')
+                $('.handle-range').hide()
+                $('.handleDataOut input[name=device_code]').val(userInfo.device_code)
+                $('.handleDataOut input[name=clwb]').val(userInfo.clwb);
+
+                if (userInfo.clwb == 0) {
+                    $("#no").prop("checked", true);
+                } else {
+                    $("#yes").prop("checked", true);
+                }
+                $("input[type=radio]").attr("disabled", "true")
+
+                layui.use(['form'], function() {
+                    var form = layui.form;
+                    form.render('radio');
+                });
+
+            } else {
+                $('.handleDataOut textarea[name=clnr]').removeAttr("readonly")
+                $(".handleDataOut input[type=radio]").removeAttr("disabled")
+                $('#handleUpdate').removeClass('disabled')
+                $('.handle-range').show()
+                layui.use(['form'], function() {
+                    var form = layui.form;
+                    form.render('radio');
+                });
+            }
+            layerUpdateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['410px', '440px'],
+                content: $(".handleDataOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        layer.close(layerUpdateIndex);
+                    })
+                }
+            });
+        }
+    })
+})
+
+/* 处置发送请求 */
+$('#handleUpdate').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#handleDataForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "clnr": "请输入处理内容",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    ajaxRequest(EVENT_WARNING_MANAGE_HANDLE, "POST", allParam, function(result) {
+        layer.close(layerUpdateIndex);
+        layer.msg('处置成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("数据修改失败!");
+    })
+})

+ 43 - 0
js/flexible.js

@@ -0,0 +1,43 @@
+(function flexible(window, document) {
+  var docEl = document.documentElement;
+  var dpr = window.devicePixelRatio || 1;
+
+  // adjust body font size
+  function setBodyFontSize() {
+    if (document.body) {
+      document.body.style.fontSize = 12 * dpr + "px";
+    } else {
+      document.addEventListener("DOMContentLoaded", setBodyFontSize);
+    }
+  }
+  setBodyFontSize();
+
+  // set 1rem = viewWidth / 10
+  function setRemUnit() {
+    var rem = docEl.clientWidth / 24;
+    docEl.style.fontSize = rem + "px";
+  }
+
+  setRemUnit();
+
+  // reset rem unit on page resize
+  window.addEventListener("resize", setRemUnit);
+  window.addEventListener("pageshow", function(e) {
+    if (e.persisted) {
+      setRemUnit();
+    }
+  });
+
+  // detect 0.5px supports
+  if (dpr >= 2) {
+    var fakeBody = document.createElement("body");
+    var testElement = document.createElement("div");
+    testElement.style.border = ".5px solid transparent";
+    fakeBody.appendChild(testElement);
+    docEl.appendChild(fakeBody);
+    if (testElement.offsetHeight === 1) {
+      docEl.classList.add("hairlines");
+    }
+    docEl.removeChild(fakeBody);
+  }
+})(window, document);

+ 589 - 0
js/index.js

@@ -0,0 +1,589 @@
+getIndexDate()
+
+/* ajax请求数据 */
+// setInterval(getIndexDate(), 1000)
+
+// ajax请求
+function getIndexDate(queryParam = {}) {
+
+
+
+    ajaxRequest(INDEX_LIST, "POST", queryParam, function(result) {
+
+        /* 饼图 */
+        (function() {
+
+            //饼图数据赋值
+            var pie = result.pie;
+            $("#loading").empty()
+            var totalNum = 0;
+            pie.forEach(function(value) {
+                totalNum += value.value;
+            })
+
+
+            /* 饼图初始化 */
+            var myChartPie = echarts.init(document.querySelector(".pie-bar .chart"));
+            optionPie = {
+                grid: {
+                    // width:'20%'
+                },
+
+                title: [{
+                    //text: '{name|3800}\n{val|设备总数}',
+                    text: '{name|' + totalNum + '}\n{val|设备总数}',
+
+                    top: 'center',
+                    left: 'center',
+                    textStyle: {
+                        rich: {
+                            name: {
+                                fontSize: 25,
+                                fontWeight: 'normal',
+                                color: '#37FF01',
+                            },
+                            val: {
+                                fontSize: 14,
+                                fontWeight: 'bold',
+                                color: '#02DDF2',
+                            }
+                        }
+                    }
+                }],
+                tooltip: {
+                    trigger: 'item',
+                    formatter: function(params) {
+                        return params.name + ':' + params.value + '<br>占比:' + params.percent.toFixed(2) + '%'
+                    }
+                },
+
+                series: [{
+                    label: {
+                        "normal": {
+                            "show": true,
+                            "formatter": ' {b}:{c} '
+                        },
+                        "emphasis": {
+                            "show": true
+                        }
+                    },
+                    name: '访问来源',
+                    radius: ['45%', '60%'],
+                    type: 'pie', // 设置图表类型为饼图
+                    // data: []
+                    data: pie,
+                }],
+                color: ['#EAF665', '#FF5801', '#6F99FA']
+            };
+            myChartPie.setOption(optionPie);
+            window.addEventListener("resize", function() {
+                myChartPie.resize();
+            });
+
+
+
+        })();
+
+        /* 柱状图 */
+        (function() {
+
+            //bar柱状图 赋值
+            var bar = result.bar
+            var barName = []
+            var barValue = []
+
+            for (var key in bar) {
+                barName.push(key)
+                barValue.push(bar[key])
+            }
+
+            /* 柱状图初始化*/
+            var myChartBar = echarts.init(document.querySelector(".pie.chart"));
+            var optionBar = {
+                grid: {
+                    left: '4%',
+                    bottom: '25%',
+                    height: "60%",
+                    containLabel: true
+                },
+                tooltip: {
+                    trigger: 'axis',
+                    formatter: "{b}  <br/> {c}",
+                    axisPointer: { // 坐标轴指示器,坐标轴触发有效
+                        type: 'line' // 默认为直线,可选为:'line' | 'shadow'
+                    }
+                },
+                textStyle: {
+                    "color": "red",
+                    "fontSize": 14 //20 14 15字体大小
+                },
+                //"color": ["#63caff", "#49beff", "#03387a"],
+                color: ["rgba(0,212,233,.2)", "rgba(0,212,233,.2)"],
+                xAxis: {
+                    "nameTextStyle": {
+                        "color": "#c0c3cd",
+                        "padding": [0, 0, -10, 0],
+                        "fontSize": 100
+                    },
+                    "axisLabel": {
+                        "color": "#c0c3cd",
+                        "fontSize": 14,
+                        "interval": 0
+                    },
+                    "axisLine": {
+                        "show": false
+                    },
+                    // "data": [],
+                    "data": barName,
+                    "type": "category"
+                },
+                yAxis: {
+                    show: false
+                },
+
+                series: [{
+                    // "data": [20, 40, 15],
+                    "data": barValue,
+                    "type": "bar",
+                    "barMaxWidth": "auto",
+                    "barWidth": 20,
+                    "itemStyle": {
+                        "color": '#00D4E9',
+                        'barBorderRadius': [30, 30, 0, 0],
+                    },
+                    "label": { //aa标签数值
+                        "show": true,
+                        "position": "top",
+                        "distance": 10, //标签数值的距离  20 40 15
+                        "color": "#fff"
+                    }
+                }, {
+                    "data": [100, 100, 100],
+                    "type": "bar",
+                    "barMaxWidth": "auto",
+                    "barWidth": 20,
+                    "barGap": "-100%",
+                    "zlevel": -1
+                }, ],
+            };
+            myChartBar.setOption(optionBar);
+            window.addEventListener("resize", function() {
+                myChartBar.resize();
+            });
+
+
+
+        })();
+
+        /* 折线图 */
+        (function() {
+
+            //折线图数据赋值
+            var line = result.line;
+            var lineData = [];
+
+            for (var key in line) {
+                for (const key2 in line[key]) {
+                    lineData.indexOf
+                }
+            }
+            var lineDate = []
+            var seriesData = []
+            for (var key in line) {
+                var lineKey = [];
+                for (var date in line[key]) {
+                    if ($.inArray(date, lineDate) == -1) {
+                        lineDate.push(date)
+                    }
+                    lineKey.push(line[key][date])
+                }
+                seriesData.push({ 'name': key, 'data': lineKey });
+            }
+            console.log(seriesData)
+                /* 折线图初始化 */
+            var myChart = echarts.init(document.querySelector(".line .chart"));
+            var option = {
+                legend: {
+                    itemGap: 20, // 图例每项之间的间隔。    
+                    icon: 'stack',
+                    padding: 0, // 图例内边距
+                    textStyle: {
+                        color: '#fff',
+                        align: 'center',
+                    },
+                },
+                color: ['#6F99FA', '#FF5801', '#EAF665'],
+                grid: {
+                    bottom: '30',
+                    right: '10',
+                    left: '10',
+                    right: '20',
+                    containLabel: true,
+                },
+                tooltip: {
+                    trigger: 'axis',
+                    confine: true,
+                    textStyle: {
+                        fontSize: 12
+                    }
+                },
+                xAxis: {
+                    type: "category",
+                    boundaryGap: false,
+                    // data: ["12:00", "13:00", "14:00", "15:00", "16:00", "17:00"],
+                    data: lineDate,
+                    "axisLabel": {
+                        "color": "#c0c3cd",
+
+                    },
+                    "axisLine": {
+                        lineStyle: {
+                            color: 'rgba(0,130,255,.2)'
+                        }
+                    },
+                    axisTick: {
+                        show: false
+                    },
+                },
+                yAxis: {
+                    type: "value",
+                    "axisLabel": {
+                        "color": "#c0c3cd",
+                    },
+                    axisTick: {
+                        show: false
+                    },
+                    "axisLine": {
+                        lineStyle: {
+                            color: 'rgba(0,130,255,.2)'
+                        }
+                    },
+                    "splitLine": {
+                        lineStyle: {
+                            color: "rgba(255,255,255,.1)"
+                        }
+                    }
+                },
+                series: [{
+                    // name: "火灾",
+                    name: seriesData[0].name,
+                    type: "line",
+                    areaStyle: {
+                        normal: {
+                            color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                                    offset: 0,
+                                    color: 'rgba(111,153,250,0.3)'
+                                },
+                                {
+                                    offset: 1,
+                                    color: 'rgba(111,153,250,0)'
+                                }
+                            ], false),
+                            shadowColor: 'rgba(111,153,250, 0.9)',
+                            shadowBlur: 20
+                        }
+                    },
+                    data: seriesData[0].data
+
+                    //data: [1, 5, 8, 3, 3, 5]
+                }, {
+                    // name: "水系统",
+                    name: seriesData[1].name,
+                    type: "line",
+                    areaStyle: {
+                        normal: {
+                            color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                                    offset: 0,
+                                    color: 'rgba(255,88,1,0.3)'
+                                },
+                                {
+                                    offset: 1,
+                                    color: 'rgba(255,88,1,0)'
+                                }
+                            ], false),
+                            shadowColor: 'rgba(255,88,1, 0.9)',
+                            shadowBlur: 20
+                        }
+                    },
+
+                    //data: [9, 5, 3, 7, 6, 3]
+                    data: seriesData[1].data
+                }, {
+                    //name: "烟雾",
+                    name: seriesData[2].name,
+                    type: "line",
+                    areaStyle: {
+                        normal: {
+                            color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                                    offset: 0,
+                                    color: 'rgba(234,246,101,0.3)'
+                                },
+                                {
+                                    offset: 1,
+                                    color: 'rgba(234,246,101,0)'
+                                }
+                            ], false),
+                            shadowColor: 'rgba(234,246,101, 0.9)',
+                            shadowBlur: 20
+                        }
+                    },
+                    data: seriesData[1].data
+                        //data: [4, 6, 3, 9, 7, 3]
+                }]
+            };
+
+            myChart.setOption(option);
+
+            myChart.setOption(option);
+            window.addEventListener("resize", function() {
+                myChart.resize();
+            });
+        })();
+
+        (function() {
+
+            var pie = result.warning;
+            var totalNum = pie.wait_handle + pie.is_handled;
+            var data = [totalNum, pie.is_handled, pie.wait_handle]
+
+            var myChartWaring = echarts.init(document.querySelector(".right-top .chart"));
+            option = {
+                grid: {
+                    // width: '100%',
+                    top: '15%',
+                    right: '10%',
+                    bottom: '10%',
+                    left: '10%'
+                },
+
+                color: ['#6F99FA', '#EAF665', '#FF5801'],
+                xAxis: [{
+                    show: false
+                }],
+                yAxis: [{
+                        axisTick: 'none',
+                        axisLine: 'none',
+                        axisLabel: {
+                            verticalAlign: 'bottom',
+                            align: 'left',
+                            padding: [0, 0, 15, 5],
+                            textStyle: {
+                                color: '#FFFFFF',
+                            }
+                        },
+                        data: ['总报警数', '已处置数', '待处置数'],
+
+                    },
+                    {
+                        //左侧柱状图的Y轴
+                        axisTick: 'none',
+                        axisLine: 'none',
+                        // data: [1357, 1260, 36],
+                        data: data,
+                        axisLabel: {
+                            show: true,
+                            verticalAlign: 'bottom',
+                            align: 'right',
+                            padding: [0, 45, 15, 0],
+                            textStyle: {
+                                color: '#fff',
+                            },
+                            formatter: function(value) {
+                                return value + '个'
+                            }
+                        }
+                    },
+
+                ],
+                series: [{
+                        type: 'bar',
+                        // data: [1357, , ],
+                        data: [totalNum, , ],
+                        barWidth: 15,
+                        itemStyle: {},
+                        z: 2
+                    }, {
+                        type: 'bar',
+                        // data: [, 1260, ],
+                        data: [, pie.is_handled, ],
+                        barWidth: 15,
+                        itemStyle: {},
+                        z: 2
+                    }, {
+                        type: 'bar',
+                        // data: [, , 36],
+                        data: [, , pie.wait_handle],
+                        barWidth: 15,
+                        itemStyle: {},
+                        z: 2
+                    },
+                    {
+                        type: 'bar',
+                        barGap: '-100%',
+                        // data: [1554, 1554, 1554],
+                        data: [totalNum, totalNum, totalNum],
+                        barWidth: 15,
+                        itemStyle: {
+                            normal: {
+                                color: 'rgba(255, 255, 255, 0.15)',
+                                barBorderRadius: 6,
+                            }
+                        },
+                        z: 0
+                    },
+                ]
+            };
+            myChartWaring.setOption(option);
+            window.addEventListener("resize", function() {
+                myChartWaring.resize();
+            });
+
+        })();
+
+        // 设备隐患
+        (function() {
+            var colorGroup = ['color-green', 'color-red', 'color-yellow', 'color-blue'];
+            var handle = result.handle
+            var items = '';
+            handle.forEach(function(item, key) {
+                items += ' <li><p class="num-huan ' + colorGroup[key] + '">' + item.value + '</p><p class="des-huan">' + item.name + '</p></li>';
+            })
+            $('#pop').html(items)
+
+        })();
+
+        // 异常设备数
+        (function() {
+
+            var colorGroup = ['color-green', 'color-red', 'color-yellow', 'color-blue'];
+            var Abnormal = result.Abnormal;
+            var items = '';
+
+            Abnormal.forEach(function(item, key) {
+                var processClassName = item.status == '超时' ? 'unprocess' : 'processed';
+                items += ` <tr>
+                    <td>${item.id}</td>
+                    <td>${item.name}</td>
+                    <td class="` + processClassName + `">${item.status}</td>
+                    <td>${item.time}</td>
+                </tr>`
+            })
+            $('.abnormal').html(items)
+
+            // setInterval(getDate(), 1000)
+        })();
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//园区实时报警统计 时间获取
+(function() {
+    time();
+    var t = null;
+    t = setTimeout(time, 1000);
+
+    function time() {
+        clearTimeout(t); //清除定时器
+        dt = new Date();
+        var h = Appendzero(dt.getHours()).toString().split(""); //获取时
+        var m = Appendzero(dt.getMinutes()).toString().split(""); //获取分
+        // var aa = h.toString().split("");
+        // var bb = m.toString(h).split("");
+        var times = h.concat(m)
+        var list = "";
+        for (var i = 0; i < times.length; i++) {
+            list += `<div class="total-square">${times[i]}</div> `
+        }
+        document.querySelector(".total-squares").innerHTML = list;
+        t = setTimeout(time, 1000); //设定定时器,循环运行
+    }
+    //个位数补零
+    function Appendzero(obj) {
+        if (obj < 10) return "0" + obj;
+        else return obj;
+    }
+})();
+
+// 实时告警信息
+(function() {
+    function getDate() {
+        $.ajax({
+            //  type : "post",
+            // url : "data/pie.json", 
+            // data : {},
+            url: "data/pie.json",
+            type: "GET",
+            dataType: "json", //返回数据格式为json
+            beforeSend: function(XMLHttpRequest) {
+                // $("#loading").html("<img src='images/loading.gif' />")
+            },
+            success: function(result) {
+                var warningInfo = result.warningInfo;
+                var items = '';
+
+                warningInfo.forEach(function(item, key) {
+                    var statusMessage = item.status ? '已处理' : '未处理';
+                    var processClassName = item.status ? 'processed' : 'unprocess';
+
+                    items += ` <tr>
+                    <td>${item.id}</td>
+                    <td>${item.time}</td>
+                    <td> ${item.type} </td>
+                    <td>${item.details} </td>
+                    <td class="` + processClassName + `">${statusMessage}</td>
+                </tr>`
+
+                })
+                $('.warning-info').html(items)
+            },
+            error: function(errorMsg) {
+                //   alert("图表请求数据失败!");
+                $("#loading").empty();
+                //  myChart1.hideLoading();
+            }
+        });
+    }
+    getDate()
+        // setInterval(getDate(), 1000)
+})();
+
+
+//实时告警信息 (websocket实时推送)
+(function() {
+    var wsUri = "wss://iot.usky.cn:55120";
+
+    function initWebSocket() {
+        try {
+            if (typeof MozWebSocket == 'function')
+                WebSocket = MozWebSocket;
+            websocket = new WebSocket(wsUri);
+            websocket.onopen = function(evt) {
+                var json = {};
+                json.agentid = 'admin';
+                console.log("Connected.");
+                (function() {})()
+                websocket.send(JSON.stringify(json));
+            };
+            websocket.onclose = function(evt) {
+                console.log("DisConnected.");
+                (function() {})()
+                initWebSocket();
+            };
+            websocket.onmessage = function(evt) {
+                console.log("Received:", evt.data);
+                var jData = eval('(' + evt.data + ')');
+                alert(jData.dwtype)
+            };
+            websocket.onerror = function(evt) {
+                console.log("Error:", evt.data);
+                (function() {})()
+            };
+        } catch (exception) {
+            console.log("Exception:", exception);
+            (function() {})()
+        }
+    }
+    // initWebSocket();
+})()

Разница между файлами не показана из-за своего большого размера
+ 1 - 0
js/jquery.js


+ 56 - 0
js/main.js

@@ -0,0 +1,56 @@
+$(function() {
+
+    //树形结构
+    function treeOpenOrClose() {
+        $('.tree li:has(ul)').addClass('parent_li').find(' > span').attr('title', 'Collapse this branch');
+        $('.tree li.parent_li > span').on('click', function(e) {
+            var children = $(this).parent('li.parent_li').find(' > ul > li');
+            if (children.is(":visible")) {
+                children.hide('fast');
+                $(this).attr('title', 'Expand this branch').find(' > i').addClass('icon-plus-sign').removeClass('icon-minus-sign');
+            } else {
+                children.show('fast');
+                $(this).attr('title', 'Collapse this branch').find(' > i').addClass('icon-minus-sign').removeClass('icon-plus-sign');
+            }
+            e.stopPropagation();
+        });
+    }
+    treeOpenOrClose();
+
+    // 单选框选项卡
+    $(document).on('click', '.pure-table tbody  tr', function() {
+        $(this).addClass("selected").siblings().removeClass("selected");
+        $(this).find(".status").addClass('checked').parent().siblings().find(".status").removeClass('checked');
+
+    })
+
+
+    //列表删除功能
+    // $(".delete").click(function () {/** 批量删除*/
+    //     // alert(1)
+    //     $(".pure-table tbody tr.selected").each(function () {// 遍历选中的checkbox
+    //         var n = $(this).index();  // 获取checkbox所在行的顺序
+    //         delRow(n);
+    //         //alert(n)
+    //     });
+    //     //getListDataAjax(getSearchParamObj());
+    // });
+    // function delRow(n) {
+    //     $(".pure-table tbody").find("tr:eq(" + n + ")").remove(); //移除选中的行
+    // }
+
+    //新增模态框
+    // $('.xcConfirm').hide()
+    // $('.add').click(function () {
+    //     $('.xcConfirm').show()
+    // })
+    // $('.clsBtn,.cancel').click(function () {
+    //     //alert(1)
+    //     $('.xcConfirm').hide()
+    // })
+    // $('.handle').click(function () {
+    //     $('.xcConfirm.xcConfirm-handle').show()
+    // })
+
+
+})

+ 280 - 0
js/md5.js

@@ -0,0 +1,280 @@
+/*
+ * JavaScript MD5
+ * https://github.com/blueimp/JavaScript-MD5
+ *
+ * Copyright 2011, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * https://opensource.org/licenses/MIT
+ *
+ * Based on
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
+ * Digest Algorithm, as defined in RFC 1321.
+ * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for more info.
+ */
+
+/* global define */
+
+;(function ($) {
+    'use strict'
+  
+    /*
+    * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+    * to work around bugs in some JS interpreters.
+    */
+    function safeAdd (x, y) {
+      var lsw = (x & 0xffff) + (y & 0xffff)
+      var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
+      return (msw << 16) | (lsw & 0xffff)
+    }
+  
+    /*
+    * Bitwise rotate a 32-bit number to the left.
+    */
+    function bitRotateLeft (num, cnt) {
+      return (num << cnt) | (num >>> (32 - cnt))
+    }
+  
+    /*
+    * These functions implement the four basic operations the algorithm uses.
+    */
+    function md5cmn (q, a, b, x, s, t) {
+      return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b)
+    }
+    function md5ff (a, b, c, d, x, s, t) {
+      return md5cmn((b & c) | (~b & d), a, b, x, s, t)
+    }
+    function md5gg (a, b, c, d, x, s, t) {
+      return md5cmn((b & d) | (c & ~d), a, b, x, s, t)
+    }
+    function md5hh (a, b, c, d, x, s, t) {
+      return md5cmn(b ^ c ^ d, a, b, x, s, t)
+    }
+    function md5ii (a, b, c, d, x, s, t) {
+      return md5cmn(c ^ (b | ~d), a, b, x, s, t)
+    }
+  
+    /*
+    * Calculate the MD5 of an array of little-endian words, and a bit length.
+    */
+    function binlMD5 (x, len) {
+      /* append padding */
+      x[len >> 5] |= 0x80 << (len % 32)
+      x[((len + 64) >>> 9 << 4) + 14] = len
+  
+      var i
+      var olda
+      var oldb
+      var oldc
+      var oldd
+      var a = 1732584193
+      var b = -271733879
+      var c = -1732584194
+      var d = 271733878
+  
+      for (i = 0; i < x.length; i += 16) {
+        olda = a
+        oldb = b
+        oldc = c
+        oldd = d
+  
+        a = md5ff(a, b, c, d, x[i], 7, -680876936)
+        d = md5ff(d, a, b, c, x[i + 1], 12, -389564586)
+        c = md5ff(c, d, a, b, x[i + 2], 17, 606105819)
+        b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330)
+        a = md5ff(a, b, c, d, x[i + 4], 7, -176418897)
+        d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426)
+        c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341)
+        b = md5ff(b, c, d, a, x[i + 7], 22, -45705983)
+        a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416)
+        d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417)
+        c = md5ff(c, d, a, b, x[i + 10], 17, -42063)
+        b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162)
+        a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682)
+        d = md5ff(d, a, b, c, x[i + 13], 12, -40341101)
+        c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290)
+        b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329)
+  
+        a = md5gg(a, b, c, d, x[i + 1], 5, -165796510)
+        d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632)
+        c = md5gg(c, d, a, b, x[i + 11], 14, 643717713)
+        b = md5gg(b, c, d, a, x[i], 20, -373897302)
+        a = md5gg(a, b, c, d, x[i + 5], 5, -701558691)
+        d = md5gg(d, a, b, c, x[i + 10], 9, 38016083)
+        c = md5gg(c, d, a, b, x[i + 15], 14, -660478335)
+        b = md5gg(b, c, d, a, x[i + 4], 20, -405537848)
+        a = md5gg(a, b, c, d, x[i + 9], 5, 568446438)
+        d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690)
+        c = md5gg(c, d, a, b, x[i + 3], 14, -187363961)
+        b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501)
+        a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467)
+        d = md5gg(d, a, b, c, x[i + 2], 9, -51403784)
+        c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473)
+        b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734)
+  
+        a = md5hh(a, b, c, d, x[i + 5], 4, -378558)
+        d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463)
+        c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562)
+        b = md5hh(b, c, d, a, x[i + 14], 23, -35309556)
+        a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060)
+        d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353)
+        c = md5hh(c, d, a, b, x[i + 7], 16, -155497632)
+        b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640)
+        a = md5hh(a, b, c, d, x[i + 13], 4, 681279174)
+        d = md5hh(d, a, b, c, x[i], 11, -358537222)
+        c = md5hh(c, d, a, b, x[i + 3], 16, -722521979)
+        b = md5hh(b, c, d, a, x[i + 6], 23, 76029189)
+        a = md5hh(a, b, c, d, x[i + 9], 4, -640364487)
+        d = md5hh(d, a, b, c, x[i + 12], 11, -421815835)
+        c = md5hh(c, d, a, b, x[i + 15], 16, 530742520)
+        b = md5hh(b, c, d, a, x[i + 2], 23, -995338651)
+  
+        a = md5ii(a, b, c, d, x[i], 6, -198630844)
+        d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415)
+        c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905)
+        b = md5ii(b, c, d, a, x[i + 5], 21, -57434055)
+        a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571)
+        d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606)
+        c = md5ii(c, d, a, b, x[i + 10], 15, -1051523)
+        b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799)
+        a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359)
+        d = md5ii(d, a, b, c, x[i + 15], 10, -30611744)
+        c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380)
+        b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649)
+        a = md5ii(a, b, c, d, x[i + 4], 6, -145523070)
+        d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379)
+        c = md5ii(c, d, a, b, x[i + 2], 15, 718787259)
+        b = md5ii(b, c, d, a, x[i + 9], 21, -343485551)
+  
+        a = safeAdd(a, olda)
+        b = safeAdd(b, oldb)
+        c = safeAdd(c, oldc)
+        d = safeAdd(d, oldd)
+      }
+      return [a, b, c, d]
+    }
+  
+    /*
+    * Convert an array of little-endian words to a string
+    */
+    function binl2rstr (input) {
+      var i
+      var output = ''
+      var length32 = input.length * 32
+      for (i = 0; i < length32; i += 8) {
+        output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff)
+      }
+      return output
+    }
+  
+    /*
+    * Convert a raw string to an array of little-endian words
+    * Characters >255 have their high-byte silently ignored.
+    */
+    function rstr2binl (input) {
+      var i
+      var output = []
+      output[(input.length >> 2) - 1] = undefined
+      for (i = 0; i < output.length; i += 1) {
+        output[i] = 0
+      }
+      var length8 = input.length * 8
+      for (i = 0; i < length8; i += 8) {
+        output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32)
+      }
+      return output
+    }
+  
+    /*
+    * Calculate the MD5 of a raw string
+    */
+    function rstrMD5 (s) {
+      return binl2rstr(binlMD5(rstr2binl(s), s.length * 8))
+    }
+  
+    /*
+    * Calculate the HMAC-MD5, of a key and some data (raw strings)
+    */
+    function rstrHMACMD5 (key, data) {
+      var i
+      var bkey = rstr2binl(key)
+      var ipad = []
+      var opad = []
+      var hash
+      ipad[15] = opad[15] = undefined
+      if (bkey.length > 16) {
+        bkey = binlMD5(bkey, key.length * 8)
+      }
+      for (i = 0; i < 16; i += 1) {
+        ipad[i] = bkey[i] ^ 0x36363636
+        opad[i] = bkey[i] ^ 0x5c5c5c5c
+      }
+      hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8)
+      return binl2rstr(binlMD5(opad.concat(hash), 512 + 128))
+    }
+  
+    /*
+    * Convert a raw string to a hex string
+    */
+    function rstr2hex (input) {
+      var hexTab = '0123456789abcdef'
+      var output = ''
+      var x
+      var i
+      for (i = 0; i < input.length; i += 1) {
+        x = input.charCodeAt(i)
+        output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f)
+      }
+      return output
+    }
+  
+    /*
+    * Encode a string as utf-8
+    */
+    function str2rstrUTF8 (input) {
+      return unescape(encodeURIComponent(input))
+    }
+  
+    /*
+    * Take string arguments and return either raw or hex encoded strings
+    */
+    function rawMD5 (s) {
+      return rstrMD5(str2rstrUTF8(s))
+    }
+    function hexMD5 (s) {
+      return rstr2hex(rawMD5(s))
+    }
+    function rawHMACMD5 (k, d) {
+      return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d))
+    }
+    function hexHMACMD5 (k, d) {
+      return rstr2hex(rawHMACMD5(k, d))
+    }
+  
+    function md5 (string, key, raw) {
+      if (!key) {
+        if (!raw) {
+          return hexMD5(string)
+        }
+        return rawMD5(string)
+      }
+      if (!raw) {
+        return hexHMACMD5(key, string)
+      }
+      return rawHMACMD5(key, string)
+    }
+  
+    if (typeof define === 'function' && define.amd) {
+      define(function () {
+        return md5
+      })
+    } else if (typeof module === 'object' && module.exports) {
+      module.exports = md5
+    } else {
+      $.md5 = md5
+    }
+  })(this)

+ 230 - 0
js/organization-department.js

@@ -0,0 +1,230 @@
+var selectCompanyId = "";
+
+//部门详情弹框
+$(document).on('click', 'a.view-detail', function() {
+
+    let dataId = $(this).data('id'); //单位ID
+    companyId = dataId;
+
+    layerDepartmentIndex = layer.open({
+        type: 1,
+        title: false,
+        closeBtn: 0,
+        shadeClose: true,
+        skin: 'yourclass',
+        area: ['700px', '400px'],
+        content: $(".queryCompanyList"),
+        success: function() {
+            getDepartmentDataAjax({ "companyId": dataId })
+                //获取部门列表 ajax请求
+            $('.clsBtn,.cancel').click(function() {
+                layer.close(layerDepartmentIndex);
+            })
+        }
+    })
+})
+
+let scrollPageNo = 2;
+let scrollPageHasMoreData = true;
+
+var winH = $('.scroll').height(); //页面可视区域高度  
+var p = 0,
+    t = 0; // 顶部和底部的距离
+$(function() {
+
+    //鼠标滚动事件   
+    $('.scroll').scroll(function() {
+        var pageH = $('.result').height(); //当前文档总高度
+        var scrollT = $('.scroll').scrollTop(); //滚动条top的值   
+        var bottomH = (pageH - winH - scrollT) / winH; // 当前所滚动位置到底部距离
+
+        p = $(this).scrollTop(); //顶部距离
+        let dataId = $('a.view-detail').data('id');
+
+        if (t <= p) { // 判断是否下滚  
+            if (bottomH < 0.01) {
+                if (scrollPageHasMoreData) {
+                    getDepartmentDataAjax({ "companyId": dataId }, scrollPageNo)
+                    scrollPageNo++
+                }
+            }
+        }
+        setTimeout(function() { t = p; }, 2000); //延时2秒   
+    });
+})
+
+function getDepartmentDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    queryParam.pageSize = 20;
+    var items2 = ''
+    ajaxRequest(DEPARTMENT_LIST, "POST", queryParam, function(result) {
+
+        let data = result.pageList;
+        if (data.length == 0) {
+            scrollPageHasMoreData = false;
+            $('#dataList2').html("<br/><span style='display:block;text-align:center'>暂无数据...</span>");
+
+        } else {
+            data.forEach(function(item, key) {
+                items2 += "<tr>" +
+                    "<td   data-user='" + JSON.stringify(item) + "' data-id=" + item.departmentId + " class='status' style='width:24px!important'></td>" +
+                    "<td>" + item.departmentName + "</td>" +
+                    "<td>" + item.departmentMan + "</td>" +
+                    "<td>" + item.departmentPhone + "</td>" +
+                    "<td>" + item.creatMan + "</td>" +
+                    "<td>" + getFormatDate(item.creatTime.time) + "</td>" +
+                    "</tr>"
+            })
+            $('#dataList2').html(items2);
+        }
+    }, function(errorMsg) {
+        alert("请求失败!");
+    })
+}
+
+/* 部门新增ajax请求 */
+$('#addDataDepart').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#addDepartmentForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "departmentName": "请填写部门名称",
+        "departmentMan": "请填写部门负责人",
+        // "departmentPhone": "请填写负责人电话",
+
+    });
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+    var departmentPhone = checkPhoneFormat(allParam.departmentPhone);
+    if (!departmentPhone.status) {
+        alert(departmentPhone.message)
+        return
+    }
+
+    //验证通过 请求ajax
+
+    //将当前公司的ID赋值给提交数据
+    allParam.companyId = companyId;
+
+    ajaxRequest(DEPARTMENT_ADD, "POST", allParam, function(result) {
+        let data = result.data;
+        layer.close(layerCreateIndex2);
+        layer.msg('添加成功!', { icon: 6 });
+        getDepartmentDataAjax({ "companyId": companyId })
+    }, function(errorMsg) {
+        alert("添加失败!");
+
+    })
+})
+
+/* 部门修改发送请求 */
+$('#editDataDepart').click(function() {
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#editDepartmentForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "departmentName": "请填写部门名称",
+        "departmentMan": "请填写部门负责人",
+        // "departmentPhone": "请填写负责人电话",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    var departmentPhone = checkPhoneFormat(allParam.departmentPhone);
+    if (!departmentPhone.status) {
+        alert(departmentPhone.message)
+        return
+    }
+
+    //验证通过 请求ajax
+    ajaxRequest(DEPARTMENT_UPDATE, "POST", allParam, function(result) {
+        let data = result.data;
+        layer.close(layerUpdateIndex2);
+        layer.msg('修改成功!', { icon: 6 });
+        getDepartmentDataAjax({ "companyId": companyId })
+    }, function(errorMsg) {
+        alert("修改失败!");
+    })
+})
+
+//部门删除发送请求
+$('.delete2').click(function(event) {
+    event.stopPropagation();
+    if (!$('.queryCompanyList .pure-table tr').has('.checked').length) {
+        //layer.msg('请选择一条需要修改的信息');
+        layer.msg('请选择一条需要删除的信息!', { icon: 5 });
+    } else {
+        let departmentId = $('.queryCompanyList .pure-table tr').find('.checked').data('id');
+
+        ajaxRequest(DEPARTMENT_DELETE, "POST", { "departmentId": departmentId }, function(result) {
+
+            $(".queryCompanyList .pure-table tbody tr.selected").remove()
+
+            let data = result.data;
+            // layer.close(layerDepartmentIndex);
+            layer.msg('删除部门成功!', { icon: 6 });
+            getDepartmentDataAjax({ "companyId": companyId })
+        }, function(errorMsg) {
+            alert("部门删除失败!");
+        })
+    }
+})
+
+//部门新增弹框
+$('.add2').click(function() {
+        layerCreateIndex2 = layer.open({
+            type: 1,
+            title: false,
+            closeBtn: 0,
+            shadeClose: true,
+            skin: 'yourclass',
+            area: ['410px', '300px'],
+            content: $(".addDepartmentDataOut"),
+            success: function() {
+                $('.clsBtn2,.cancel2').click(function() {
+                    //alert(1)
+                    layer.close(layerCreateIndex2);
+                })
+            }
+        })
+    })
+    //部门修改弹框
+$('.edit2').click(function() {
+
+    if (!$('.queryCompanyList .pure-table tr').has('.checked').length) {
+        layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+
+    } else {
+        // let dataId = $('.pure-table tr').find('.checked').data('id');
+        let userInfo = $('.queryCompanyList .pure-table tr').find('.checked').data('user');
+        $('.editDepartmentDataOut input[name=departmentName]').val(userInfo.departmentName)
+        $('.editDepartmentDataOut input[name=departmentMan]').val(userInfo.departmentMan)
+        $('.editDepartmentDataOut input[name=departmentPhone').val(userInfo.departmentPhone)
+        $('.editDepartmentDataOut input[name=companyId').val(userInfo.companyId)
+        $('.editDepartmentDataOut input[name=departmentId').val(userInfo.departmentId)
+
+        layerUpdateIndex2 = layer.open({
+            type: 1,
+            title: false,
+            closeBtn: 0,
+            shadeClose: true,
+            skin: 'yourclass',
+            area: ['410px', '300px'],
+            content: $(".editDepartmentDataOut"),
+            success: function() {
+                $('.clsBtn2,.cancel2').click(function() {
+                    layer.close(layerUpdateIndex2);
+                })
+            }
+        });
+    }
+})

+ 341 - 0
js/organization.js

@@ -0,0 +1,341 @@
+var pageNo = 1;
+var totalPages = 0;
+
+var depname = 0;
+var companyId = 0;
+
+//单位列表
+getListDataAjax();
+
+//获取单位列表 ajax请求
+function getListDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 1;
+
+    ajaxRequest(COMPANY_LIST_ORG, "POST", queryParam, function(result) {
+
+        let data = result.pageList;
+        let data2 = result.data;
+        let items = '';
+        let items2 = '';
+        data.forEach(function(item, key) {
+            items += "<tr>" +
+                "<td class='status' data-user='" + JSON.stringify(item) + "'></td>" +
+                "<td>" + item.ownerId + "</td>" +
+                "<td>" + item.ownerName + "</td>" +
+                "<td>" + item.buildingId + "</td>" +
+                "<td>" + item.ownerAddress + "</td>" +
+
+                "<td>" + item.ownerMan + "</td>" +
+                "<td>" + item.contacts + "</td>" +
+                "<td>" + item.createMan + "</td>" +
+                "<td>" + getFormatDate(item.createTime) + "</td>" +
+                "<td><a class='view-detail'  data-id='" + item.ownerId + "'>详情</a></td>" +
+                "</tr>"
+
+            items2 += `<option value="${item.ownerId}">${item.ownerName}</option>`
+
+        })
+        $('#dataList').html(items);
+        $('#getCompanyName').append(items2);
+        $('#getCompanyName2').append(items2);
+
+        totalPages = result.totalPages;
+        // $('#perPageFrom').html(from);
+        $('#totalPage').html(totalPages); //总共多少页
+        $('#dataTotal').html(result.totalCount); //总共多少条数据
+        $('#currentPage').val(pageNo); //当前页面
+
+        let pageFrom = (pageNo - 1) * result.pageSize + 1; //开始
+        let pageTo = result.pageNo * result.pageSize; //结束
+        pageTo = pageTo > result.totalCount ? result.totalCount : pageTo;
+        $('#pageFrom').html(pageFrom);
+        $('#pageTo').html(pageTo);
+
+
+        // 无数据时
+        if (!data.length) {
+            $('.pager.has-data').hide()
+            $('.pager.no-data').show()
+        } else {
+            $('.pager.has-data').show()
+            $('.pager.no-data').hide()
+        }
+        if (pageNo < totalPages) {
+            $('#nextPageButton,#lastPageButton').removeClass('disabled');
+        } else {
+            $('#nextPageButton,#lastPageButton').addClass('disabled');
+        }
+        if (pageNo === 1) {
+            $('#firstPageButton,#prevPageButton').addClass('disabled');
+        } else {
+            $('#firstPageButton,#prevPageButton').removeClass('disabled');
+        }
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//部门修改单位下拉
+getCompanyListAjax();
+
+function getCompanyListAjax() {
+
+    ajaxRequest(COMPANY_LIST, "POST", {}, function(result) {
+        let data = result.data;
+        let items2 = '<option value="">请选择</option>';
+        data.forEach(function(item, key) {
+            items2 += `<option value="${item.ownerId}">${item.ownerName}</option>`
+        })
+        $('#getCompanyName2').html(items2);
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//按钮搜索
+$('#buttonClick').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj());
+})
+
+//拼接搜索条件
+function getSearchParamObj() {
+    let queryParam = {};
+    let startTime = $('#startTime').val();
+    let endTime = $('#endTime').val()
+    let companyName = $('#companyName').val()
+    queryParam.startTime = startTime;
+    queryParam.endTime = endTime;
+    queryParam.companyName = companyName;
+    return queryParam;
+}
+
+//重置表单
+$('.reset').click(resetForm)
+
+//重置表单
+function resetForm() {
+    pageNo = 1;
+    $("#companyName").val("");
+    $("#startTime").val("");
+    $("#endTime").val("");
+    getListDataAjax(getSearchParamObj());
+}
+
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+
+    pageNo = totalPages;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+getBuildingId()
+
+//建筑查询 ajax请求
+function getBuildingId() {
+
+    ajaxRequest(BUILDING_LIST, "POST", {}, function(result) {
+        $("#loading").empty()
+        let data = result.pageList;
+        let items = '';
+        let items2 = '';
+
+        data.forEach(function(item, key) {
+            items += `<option value="${item.id}">${item.buildName}</option>`
+        })
+
+        $('#getBuildingId').append(items);
+        $('#getBuildingId2').append(items);
+        // $('#roleId2').html(roleItems2);
+        // $('#roleId3').html(roleItems2);
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+
+}
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerCreateIndex = '';
+var layerUpdateIndex = ''
+
+var layerDepartmentIndex = ''
+var layerCreateIndex2 = '';
+var layerUpdateIndex2 = ''
+layui.use('layer', function() {
+
+    //单位新增弹框
+    $('.add').click(function() {
+            layerCreateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['410px', '350px'],
+                content: $(".addCompanyDataOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        layer.close(layerCreateIndex);
+                    })
+                }
+            })
+        })
+        //单位修改弹框信息
+    $('.edit').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+
+        } else {
+            let userInfo = $('.pure-table tr').find('.checked').data('user');
+            $('.editCompanyDataOut input[name=ownerMan]').val(userInfo.ownerMan)
+            $('.editCompanyDataOut input[name=ownerName]').val(userInfo.ownerName)
+            $('.editCompanyDataOut input[name=ownerAddress]').val(userInfo.ownerAddress)
+            $('.editCompanyDataOut input[name=ownerOffice').val(userInfo.ownerOffice)
+            $('.editCompanyDataOut select[name=buildingId').val(userInfo.buildingId)
+            $('.editCompanyDataOut input[name=xmlx').val(userInfo.xmlx)
+            $('.editCompanyDataOut input[name=contacts').val(userInfo.contacts)
+            $('.editCompanyDataOut input[name=contactsPhone').val(userInfo.contactsPhone)
+            $('.editCompanyDataOut input[name=ownerId').val(userInfo.ownerId)
+
+            layerUpdateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['410px', '350px'],
+                content: $(".editCompanyDataOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        //alert(1)
+                        layer.close(layerUpdateIndex);
+                    })
+                }
+            });
+        }
+    })
+
+    /* 单位新增发送请求 */
+    $('#addData').click(function() {
+
+        //获取表单的值 并转换成对象
+        let allParam = serializeArrayToObj($("#addCompanyForm").serializeArray());
+
+        // 验证数据是否为空
+        let res = validParamIsEmpty(allParam, {
+            "ownerMan": "请填写单位负责人",
+            "ownerName": "请填写单位名称",
+            "ownerAddress": "请填写单位地址",
+            "ownerOffice": "请填写办公地址",
+            "buildingId": "请选择所属建设",
+            "xmlx": "请填写类型",
+            "contacts": "请填写单位负责人"
+        });
+        if (res.code == -1) {
+            alert(res.msg);
+            return;
+        }
+        var contactsPhone = checkPhoneFormat(allParam.contactsPhone);
+        if (!contactsPhone.status) {
+            alert(contactsPhone.message)
+            return
+        }
+
+        //验证通过 请求ajax
+        ajaxRequest(COMPANY_ADD, "POST", allParam, function(result) {
+            let data = result.data;
+            layer.close(layerCreateIndex);
+            layer.msg('添加成功!', { icon: 6 });
+            getListDataAjax();
+        }, function(errorMsg) {
+            alert("添加失败!");
+
+        })
+    })
+
+    /* 单位修改发送请求 */
+    $('#dataUpdate').click(function() {
+        //获取表单的值 并转换成对象
+        let allParam = serializeArrayToObj($("#editCompanyForm").serializeArray());
+
+        //验证数据是否为空
+        let res = validParamIsEmpty(allParam, {
+            "ownerMan": "请填写单位负责人",
+            "ownerName": "请填写单位名称",
+            "ownerAddress": "请填写单位地址",
+            "ownerOffice": "请填写办公地址",
+            "buildingId": "请选择所属建设",
+            "xmlx": "请填写类型",
+            "contacts": "请填写单位负责人"
+        });
+
+        if (res.code == -1) {
+            alert(res.msg);
+            return;
+        }
+        var contactsPhone = checkPhoneFormat(allParam.contactsPhone);
+        if (!contactsPhone.status) {
+            alert(contactsPhone.message)
+            return
+        }
+
+        //验证通过 请求ajax
+        ajaxRequest(COMPANY_UPDATE, "POST", allParam, function(result) {
+            let data = result.data;
+            layer.close(layerUpdateIndex);
+            layer.msg('修改成功!', { icon: 6 });
+            getListDataAjax();
+        }, function(errorMsg) {
+            alert("修改失败!");
+        })
+    })
+
+    //单位删除发送请求
+    $('.delete').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            layer.msg('请选择一条需要删除的信息!', { icon: 5 });
+        } else {
+
+            //  let dataId = $('.pure-table tr').find('.checked').data('id');
+            let dataId = $('a.view-detail').data('id');
+
+            ajaxRequest(COMPANY_DELETE, "POST", { "companyId": dataId }, function(result) {
+
+                if (result.flag) {
+                    $(".pure-table tbody tr.selected").remove()
+                    layer.close(layer.layerCreateIndex);
+                    alert(result.msg);
+
+                } else {
+                    //服务端返回报错
+                    alert(result.msg);
+                }
+                getListDataAjax()
+
+            }, function(errorMsg) {
+                alert("单位删除失败!");
+            })
+        }
+    })
+});

+ 634 - 0
js/per-manage.js

@@ -0,0 +1,634 @@
+/**
+ * 用户列表 start
+ */
+
+//获取公司树
+getCompanyTree()
+
+//角色列表
+getUserRole()
+
+var pageNo = 1;
+var totalPages = 0;
+
+var depname = 0;
+var companyId = 0;
+
+//用户列表
+getListDataAjax();
+
+//按钮搜索
+$('#buttonClick').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj());
+})
+
+//公司树点击事件
+$(".treeCompany").on('click', function() {
+
+        // if($(this).hasClass('selected')){
+        //     return;
+        // }
+        //判断有没有样式
+        $('.treeCompany').removeClass('selected').find('.img').attr('src', '../images/login.png');
+        $('.treeDepartment').removeClass('selected').find('.img').attr('src', '../images/login.png');
+
+
+        $(this).addClass('selected').find('.img').attr('src', '../images/loginSelected.png');
+
+        companyId = $(this).data('id');
+        depname = 0;
+        $("#userName").val("");
+        $('#roleId option').eq(0).prop("selected", true)
+        getListDataAjax({ "companyId": $(this).data('id') });
+
+    })
+    //部门树点击事件
+$(".treeDepartment").on('click', function() {
+
+    // if($(this).hasClass('selected')){
+    //     return;
+    // }
+
+    $('.treeDepartment').removeClass('selected').find('.img').attr('src', '../images/login.png')
+    $('.treeCompany').removeClass('selected').find('.img').attr('src', '../images/login.png')
+
+    $(this).addClass('selected').parent().parent().siblings().addClass('selected').find('.img').attr('src', '../images/loginSelected.png');
+    $(this).find('.img').attr('src', '../images/loginSelected.png');
+
+    companyId = 0;
+    depname = $(this).data('id');
+    $("#userName").val("");
+    $('#roleId option').eq(0).prop("selected", true)
+    getListDataAjax({ "depname": $(this).data('id') });
+
+
+})
+
+//重置表单
+$('.reset').click(resetForm)
+
+
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+
+    pageNo = totalPages;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+//重置表单
+function resetForm() {
+    pageNo = 1;
+    $("#userName").val("");
+    $('#roleId option').eq(0).prop("selected", true)
+    getListDataAjax(getSearchParamObj());
+}
+
+//拼接搜索条件
+function getSearchParamObj() {
+
+    let queryParam = {};
+
+    let userName = $('#userName').val();
+    let roleId = $('#roleId option:selected').val();
+    queryParam.userName = userName;
+    queryParam.roleId = roleId;
+
+    if (companyId != 0) {
+        queryParam.companyId = companyId;
+    }
+
+    if (depname != 0) {
+        queryParam.depname = depname;
+    }
+
+    return queryParam;
+}
+
+//拼接树搜索条件
+
+
+
+//角色查询 ajax请求
+function getUserRole() {
+
+    ajaxRequest(USER_ROLE, "POST", {}, function(result) {
+        $("#loading").empty()
+        let data = result.data;
+        let roleItems = '';
+        let roleItems2 = '';
+
+        data.forEach(function(item, key) {
+            roleItems += `<option value="${item.roleId}">${item.roleName}</option>`
+            roleItems2 += `<option value="${item.roleId}">${item.roleName}</option>`
+        })
+
+        $('#roleId').append(roleItems);
+        $('#roleId2').html(roleItems2);
+        $('#roleId3').html(roleItems2);
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+
+}
+
+//获取公司树结构 ajax请求
+function getCompanyTree() {
+
+    ajaxRequest(COMPANY_LIST, "POST", {}, function(result) {
+        // $(".loadingdata").html(""); 
+        let data = result.data;
+        let items = '';
+        let companyItems = '';
+        let companyDepartmentItems = '<option value="">请选择</option>';
+
+        data.forEach(function(item, key) {
+            items += `<li  data-id=${item.ownerId} ><span data-id=${item.ownerId}  class="treeCompany"><img  class="img" src="images/login.png" alt=""> ${item.ownerName}  (${item.userNumber})</span>`;
+            if (item.child) {
+                let data = item.child;
+                items += `<ul class="child-three">`;
+                data.forEach(function(item, key) {
+                    items += `<li   data-id=${item.departmentId} ><span  data-id=${item.departmentId}  class="treeDepartment"><img class="img" src="images/login.png" alt="">${item.departmentName}</span></li>`
+                });
+                items += ` </ul>`;
+            }
+            `</li>`
+
+            companyItems += `<option value="${item.ownerId}">${item.ownerName}</option>`
+
+            if (key == 0) {
+                let departmentObj = item.child;
+                if (departmentObj) {
+                    departmentObj.forEach(function(item, key) {
+                        companyDepartmentItems += `<option value="${item.id}">${item.departmentName}</option>`
+                    })
+                    $('#departmentId').html(companyDepartmentItems);
+                    $('#departmentIdUpdate').html(companyDepartmentItems);
+                }
+            }
+        })
+
+        $('#child-two').html(items);
+        $('#companyId').html(companyItems);
+        $('#companyId2').html(companyItems);
+        // treeClickSearch();
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+
+}
+
+
+//获取用户列表 ajax请求
+function getListDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 4;
+
+    ajaxRequest(USER_LIT, "POST", queryParam, function(result) {
+
+        let data = result.pageList;
+        let items = '';
+        data.forEach(function(item, key) {
+
+            let posName = "";
+            if (item.posname == 1) {
+                posName = "超级管理员"
+            } else if (item.posname == 2) {
+                posName = "普通员工"
+            }
+            let locked = item.locked ? '未锁定' : '锁定';
+
+            items += "<tr>" +
+                "<td class='status' data-id=" + item.id + " data-user='" + JSON.stringify(item) + "'></td>" +
+                "<td>" + item.username + "</td>" +
+                "<td>" + item.sex + "</td>" +
+                "<td>" + posName + "</td>" +
+                "<td>" + getFormatDate(item.ctime.time) + "</td>" +
+                "<td>" + item.addman + "</td>" +
+                "<td>" + locked + "</td>" +
+                "<td>" + item.wrongtimes + "</td>" +
+                "</tr>"
+        })
+        $('#dataList').html(items);
+
+        totalPages = result.totalPages;
+        $('#totalPage').html(totalPages); //总共多少页
+        $('#dataTotal').html(result.totalCount); //总共多少条数据
+        $('#currentPage').val(pageNo); //当前页面
+
+        let pageFrom = (pageNo - 1) * result.pageSize + 1; //开始
+        let pageTo = result.pageNo * result.pageSize; //结束
+        pageTo = pageTo > result.totalCount ? result.totalCount : pageTo;
+        $('#pageFrom').html(pageFrom);
+        $('#pageTo').html(pageTo);
+
+        // 无数据时
+        if (!data.length) {
+            $('.pager.has-data').hide()
+            $('.pager.no-data').show()
+        } else {
+            $('.pager.has-data').show()
+            $('.pager.no-data').hide()
+        }
+
+        if (pageNo < totalPages) {
+            $('#nextPageButton,#lastPageButton').removeClass('disabled');
+        } else {
+            $('#nextPageButton,#lastPageButton').addClass('disabled');
+        }
+        if (pageNo === 1) {
+            $('#firstPageButton,#prevPageButton').addClass('disabled');
+        } else {
+            $('#firstPageButton,#prevPageButton').removeClass('disabled');
+        }
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerCreateIndex = '';
+var layerUpdateIndex = ''
+layui.use('layer', function() {
+
+    //新增弹框
+    $('.add').click(function() {
+            layerCreateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['410px', '500px'],
+                content: $(".addUserOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        //alert(1)
+                        layer.close(layerCreateIndex);
+                    })
+                }
+            })
+        })
+        //修改弹框信息
+    $('.edit').click(function() {
+
+            if (!$('.pure-table tr').has('.checked').length) {
+                layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+
+            } else {
+                let dataId = $('.pure-table tr').find('.checked').data('id');
+                let userInfo = $('.pure-table tr').find('.checked').data('user');
+
+                $('.editUserOut input[name=truename').val(userInfo.truename)
+                $('.editUserOut select[name=sex]').val(userInfo.sex)
+                $('.editUserOut input[name=phone').val(userInfo.phone)
+                $('.editUserOut select[name=posname').val(userInfo.posname)
+                $('.editUserOut select[name=locked]').val(userInfo.locked)
+                $('.editUserOut select[name=status]').val(userInfo.status)
+                $('.editUserOut input[name=wrongtimes').val(userInfo.wrongtimes)
+
+                // 单位赋值
+                $('.editUserOut select[name=bian').val(userInfo.bian)
+                    // 部门下拉展示及赋值
+                if ($('#companyId2').val()) {
+                    listDepname()
+
+                    function listDepname() {
+                        let companyName = $('#companyId2').find('option:selected').val();
+                        ajaxRequest(COMPANY_LIST, "POST", { "ownerId": companyName }, function(result) {
+                            let companyDepartmentItems = '<option value="">请选择</option>';
+                            let departmentObj = result.data[0].child;
+                            departmentObj.forEach(function(item, key) {
+                                companyDepartmentItems += `<option value="${item.departmentId}">${item.departmentName}</option>`
+                            })
+                            $('#departmentIdUpdate').html(companyDepartmentItems);
+                        }, function(errorMsg) {
+                            alert("请求数据失败!");
+                        })
+                    }
+                }
+                // 部门赋值
+                $('.editUserOut select[name=depname').val(userInfo.depname)
+
+                $('.editUserOut input[name=username]').val(userInfo.username)
+
+                layerUpdateIndex = layer.open({
+                    type: 1,
+                    title: false,
+                    closeBtn: 0,
+                    shadeClose: true,
+                    skin: 'yourclass',
+                    area: ['410px', '500px'],
+                    content: $(".editUserOut"),
+                    success: function() {
+                        $('.clsBtn,.cancel').click(function() {
+                            //alert(1)
+                            layer.close(layerUpdateIndex);
+                        })
+                    }
+                });
+            }
+        })
+        //删除信息
+    $('.delete').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            //layer.msg('请选择一条需要修改的信息');
+            layer.msg('请选择一条需要删除的信息!', { icon: 5 });
+        } else {
+
+            let dataUserName = $('.pure-table tr').find('.checked').data('username');
+
+            ajaxRequest(USER_DELETE, "POST", { "username": dataUserName }, function(result) {
+
+                $(".pure-table tbody tr.selected").remove()
+
+                let data = result.data;
+                layer.close(layer.layerCreateIndex);
+
+                layer.msg('删除成功!', { icon: 6 });
+                getListDataAjax()
+
+            }, function(errorMsg) {
+                alert("用户删除失败!");
+            })
+
+        }
+    })
+});
+
+
+/* 新增用户发送请求 */
+$('#addUser').click(function() {
+
+    //获取表单的值
+    let userAddObj = $("#addUserForm").serializeArray();
+
+    //发送给服务端的数据格式
+    let userAddParam = {};
+
+    for (let key in userAddObj) { //循环验证······
+
+        //验证用户名
+        if (userAddObj[key].name == 'username') {
+            if (!userAddObj[key].value) {
+                alert('请输入用户名');
+                return;
+            }
+            userAddParam['username'] = userAddObj[key].value;
+            userAddParam['agentid'] = userAddObj[key].value;
+
+        } else if (userAddObj[key].name == 'password') {
+            if (!userAddObj[key].value) {
+                alert('请输入密码');
+                return;
+            }
+            userAddParam['password'] = md5(userAddObj[key].value);
+
+        } else if (userAddObj[key].name == 'age') { //aa验证年龄
+            if (!userAddObj[key].value) {
+                alert('请填写年龄');
+                return;
+            } else {
+                let pattern = /^(([0-9]|[1-9][1-9]|1[0-7][0-9])(\\.[0-9]+)?|180)$/;
+                if (!pattern.test(userAddObj[key].value)) {
+                    alert('请输入正确的年龄');
+                    return false;
+                }
+            }
+            userAddParam['age'] = userAddObj[key].value;
+
+        } else if (userAddObj[key].name == 'truename') { //aa验证真实姓名
+            if (!userAddObj[key].value) {
+                alert('请填写真实姓名');
+                return;
+            }
+            userAddParam['truename'] = userAddObj[key].value;
+
+        } else if (userAddObj[key].name == 'phone') { //aa验证手机号
+            if (!userAddObj[key].value) {
+                alert('请填写手机号码');
+                return;
+            } else {
+                let telre = /^(13[0-9]|14[0-9]|15[0-9]|17[0-9]|18[0-9])\d{8}$/;
+                if (!telre.test(userAddObj[key].value)) {
+                    alert('请输入有效的手机号码');
+                    return false;
+                }
+            }
+            userAddParam['phone'] = userAddObj[key].value;
+
+        } else {
+            //其它字段  ....
+            userAddParam[userAddObj[key].name] = userAddObj[key].value;
+        }
+    }
+
+    //验证通过 请求ajax
+
+    ajaxRequest(USER_ADD, "POST", userAddParam, function(result) {
+        if (result.flag) {
+            let data = result.data;
+            layer.close(layerCreateIndex);
+            layer.msg(result.msg, { icon: 6 });
+            getListDataAjax();
+        } else {
+            //服务端返回报错
+            alert(result.msg);
+        }
+
+    }, function(errorMsg) {
+        alert("用户添加失败!");
+
+    })
+})
+
+/* 修改用户发送请求 */
+$('#editUser').click(function() {
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#editUserForm").serializeArray());
+
+    //获取表单的值
+    let userEditObj = $("#editUserForm").serializeArray();
+
+    //发送给服务端的数据格式
+    let userEditParam = {};
+    for (let key in userEditObj) { //循环验证······
+
+        //验证用户名
+        if (userEditObj[key].name == 'truename') {
+            if (!userEditObj[key].value) {
+                alert('请填写真实姓名');
+                return;
+            }
+            userEditParam['truename'] = userEditObj[key].value;
+
+        } else if (userEditObj[key].name == 'sex') {
+            if (!userEditObj[key].value) {
+                alert('请选择性别');
+                return;
+            }
+            userEditParam['sex'] = md5(userEditObj[key].value);
+
+        } else if (userEditObj[key].name == 'posname') { //aa验证年龄
+            if (!userEditObj[key].value) {
+                alert('请选择角色');
+                return;
+            }
+            userEditParam['posname'] = userEditObj[key].value;
+
+        } else if (userEditObj[key].name == 'phone') { //aa验证手机号
+            if (!userEditObj[key].value) {
+                alert('请填写手机号码');
+                return;
+            } else {
+                let telre = /^(13[0-9]|14[0-9]|15[0-9]|17[0-9]|18[0-9])\d{8}$/;
+                if (!telre.test(userEditObj[key].value)) {
+                    alert('请输入有效的手机号码');
+                    return false;
+                }
+            }
+            userEditParam['phone'] = userEditObj[key].value;
+
+        } else if (userEditObj[key].name == 'status') { //aa验证年龄
+            if (!userEditObj[key].value) {
+                alert('请选择删除状态');
+                return;
+            }
+            userEditParam['status'] = userEditObj[key].value;
+
+        } else if (userEditObj[key].name == 'locked') { //aa验证年龄
+            if (!userEditObj[key].value) {
+                alert('请选择锁定状态');
+                return;
+            }
+            userEditParam['locked'] = userEditObj[key].value;
+
+        } else if (userEditObj[key].name == 'wrongtimes') { //aa验证年龄
+            if (!userEditObj[key].value) {
+                alert('请输入错误次数');
+                return;
+            }
+            userEditParam['wrongtimes'] = userEditObj[key].value;
+
+        } else {
+            //其它字段  ....
+            userEditParam[userEditObj[key].name] = userEditObj[key].value;
+        }
+    }
+    //验证通过 请求ajax
+    ajaxRequest(USER_UPDATE, "POST", allParam, function(result) {
+        let data = result.data;
+        layer.close(layerUpdateIndex);
+        layer.msg('修改成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("用户修改失败!");
+    })
+})
+
+
+// 公司与部门联动 (修改和新增)
+linkDep('#companyId')
+linkDep('#companyId2')
+
+function linkDep(element) {
+    $(element).on('change', function() {
+
+        //获取公司id
+        let companyName = $(this).find('option:selected').val();
+
+        ajaxRequest(COMPANY_LIST, "POST", { "ownerId": companyName }, function(result) {
+
+            let companyDepartmentItems = '<option value="">请选择</option>';
+            let departmentObj = result.data[0].child;
+
+            departmentObj.forEach(function(item, key) {
+                companyDepartmentItems += `<option value="${item.departmentId}">${item.departmentName}</option>`
+            })
+
+            $('#departmentId').html(companyDepartmentItems);
+            $('#departmentIdUpdate').html(companyDepartmentItems);
+
+        }, function(errorMsg) {
+            alert("请求数据失败!");
+        })
+    })
+}
+
+// 导出 start
+$('.export').click(getDataExport)
+
+function getDataExport() {
+    // 输出base64编码
+    const base64 = s => window.btoa(unescape(encodeURIComponent(s)));
+    ajaxRequest(USER_EXPORT, "POST", {}, function(result) {
+        let data = result.data;
+        let newData = [];
+        data.forEach(function(item, index) {
+            let posName = "";
+            if (item.posname == 1) {
+                posName = "超级管理员"
+            } else if (item.posname == 2) {
+                posName = "普通员工"
+            }
+            let locked = item.locked ? '未锁定' : '锁定';
+            let time = getFormatDate(item.ctime.time)
+            newData.push({ truename: item.truename, sex: item.sex, posname: posName, time: time, addman: item.addman, locked: locked, wrongtimes: item.wrongtimes })
+        });
+        let str = '<tr style="text-align:center"><th>姓名</th><th>性别</th><th>用户身份</th><th>创建时间</th><th>创建人</th><th>锁定状态</th><th>错误次数</th></tr>';
+        // 循环遍历,每行加入tr标签,每个单元格加td标签
+        for (let i = 0; i < newData.length; i++) {
+            str += '<tr style="text-align:center">';
+            for (const key in newData[i]) {
+                // 增加\t为了不让表格显示科学计数法或者其他格式
+                str += `<td x:str>${ newData[i][key] + '\t'}</td>`;
+            }
+            str += '</tr>';
+        }
+        // Worksheet名
+        const worksheet = 'Sheet1'
+        const uri = 'data:application/vnd.ms-excel;base64,';
+
+        // 下载的表格模板数据
+        let template = `<html xmlns:o="urn:schemas-microsoft-com:office:office"
+          xmlns:x="urn:schemas-microsoft-com:office:excel"
+          xmlns="http://www.w3.org/TR/REC-html40">
+          <head><meta charset='UTF-8'><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
+            <x:Name>${worksheet}</x:Name>
+            <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
+            </x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
+            </head><body><table>${str}</table></body></html>`;
+
+        // 通过创建a标签实现
+        const link = document.createElement("a");
+        link.href = uri + base64(template);
+        // 对下载的文件命名
+        link.download = "用户管理数据表.xls";
+        link.click();
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+// 导出  end

+ 431 - 0
js/property.js

@@ -0,0 +1,431 @@
+var pageNo = 1;
+var totalPages = 0;
+
+//设备类型列表
+getListDataAjax();
+
+//获取设备类型列表 ajax请求
+function getListDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 4;
+
+    ajaxRequest(PROPERTY_LIST, "POST", queryParam, function(result) {
+        let data = result.pageList;
+        let items = '';
+        if (result.totalCount > 0) {
+            data.forEach(function(item, key) {
+                items += "<tr>" +
+                    "<td class='status' data-user='" + JSON.stringify(item) + "' data-id=" + item.register + "></td>" +
+                    "<td>" + item.facilityNo + "</td>" +
+                    "<td>" + item.facilityName + "</td>" +
+                    "<td>" + item.facilityType + "</td>" +
+                    "<td>" + item.facilityModel + "</td>" +
+                    "<td>" + item.man + "</td>" +
+                    "<td>" + item.purchase + "</td>" +
+                    "<td>" + item.addrs + "</td>" +
+                    "<td>" + getFormatDate(item.buyTime) + "</td>" +
+                    "<td>" + item.buyNo + "</td>" +
+                    "<td>" + item.invoice + "</td>" +
+                    "<td><img src='" + item.qrurl + "' class='enlargeImg'><div class='imgBox'></div</td>" +
+                    "</tr>"
+            })
+        }
+        $('#dataList').html(items);
+        totalPages = result.totalPages;
+        $('#totalPage').html(totalPages); //总共多少页
+        $('#dataTotal').html(result.totalCount); //总共多少条数据
+        $('#currentPage').val(pageNo); //当前页面
+
+        let pageFrom = (pageNo - 1) * result.pageSize + 1; //开始
+        let pageTo = result.pageNo * result.pageSize; //结束
+        pageTo = pageTo > result.totalCount ? result.totalCount : pageTo;
+
+        $('#pageFrom').html(pageFrom);
+        $('#pageTo').html(pageTo);
+
+        // 无数据时
+        if (!data.length) {
+            $('.pager.has-data').hide()
+            $('.pager.no-data').show()
+        } else {
+            $('.pager.has-data').show()
+            $('.pager.no-data').hide()
+        }
+
+        if (pageNo < totalPages) {
+            $('#nextPageButton,#lastPageButton').removeClass('disabled');
+        } else {
+            $('#nextPageButton,#lastPageButton').addClass('disabled');
+        }
+        if (pageNo === 1) {
+            $('#firstPageButton,#prevPageButton').addClass('disabled');
+        } else {
+            $('#firstPageButton,#prevPageButton').removeClass('disabled');
+        }
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//按钮搜索
+$('#buttonClick').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj());
+})
+
+//拼接搜索条件
+function getSearchParamObj() {
+    let queryParam = {};
+    let facilityName = $('#facilityName').val();
+    let addrs = $('#addrs').val()
+    queryParam.facilityName = facilityName;
+    queryParam.addrs = addrs;
+    return queryParam;
+}
+
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+    pageNo = totalPages;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+//重置表单
+$('.reset').click(resetForm)
+
+//重置表单
+function resetForm() {
+    pageNo = 1;
+    $("#facilityName").val("");
+    $("#addrs").val("");
+    getListDataAjax(getSearchParamObj());
+}
+
+//类别下拉
+getTypeList()
+
+//类别下拉 ajax请求
+function getTypeList() {
+
+    ajaxRequest(FACILITY_TYPE_LIST, "POST", {}, function(result) {
+        let data = result.data;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += `<option value="${item.id}">${item.facilityTypeName}</option>`
+        })
+        $('#getTypeList').append(items);
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//单位下拉
+getCompanyList()
+
+function getCompanyList() {
+
+    ajaxRequest(COMPANY_LIST, "POST", {}, function(result) {
+        let data = result.data;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += `<option value="${item.ownerId}">${item.ownerName}</option>`
+        })
+        $('#getCompanyList').append(items);
+        $('#getCompanyList2').append(items);
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+// 公司与部门联动 
+linkDep('#getCompanyList')
+linkDep('#getCompanyList2')
+
+function linkDep(element) {
+    $(element).on('change', function() {
+        //获取公司id
+        let companyName = $(this).find('option:selected').val();
+        ajaxRequest(COMPANY_LIST, "POST", { "ownerId": companyName }, function(result) {
+            let companyDepartmentItems = '<option value="">请选择</option>';
+            let departmentObj = result.data[0].child;
+            departmentObj.forEach(function(item, key) {
+                companyDepartmentItems += `<option value="${item.departmentId}">${item.departmentName}</option>`
+            })
+            $('#getDepartmentList').html(companyDepartmentItems);
+            $('#getDepartmentList2').html(companyDepartmentItems);
+        }, function(errorMsg) {
+            alert("请求数据失败!");
+        })
+    })
+}
+
+// 导出 start
+$('.export').click(getDataExport)
+
+function getDataExport() {
+    // 输出base64编码
+    const base64 = s => window.btoa(unescape(encodeURIComponent(s)));
+
+    ajaxRequest(PROPERTY_EXPORT, "POST", {}, function(result) {
+        let data = result.data;
+        let newData = [];
+        data.forEach(function(item, index) {
+            newData.push({ facilityNo: item.facilityNo, facilityName: item.facilityName, facilityType: item.facilityType, facilityModel: item.facilityModel, man: item.man, purchase: item.purchase, addrs: item.addrs, buyTime: getFormatDate(item.buyTime), buyNo: item.buyNo, invoice: item.invoice })
+        });
+        let str = '<tr style="text-align:center"><th>资产编号</th><th>资产名称</th><th>资产类型</th><th>设施型号</th><th>负责人</th><th>购入方式</th><th>存放地点</th><th>购入日期</th><th>购买编号</th><th>发票号</th></tr>';
+        // 循环遍历,每行加入tr标签,每个单元格加td标签
+        for (let i = 0; i < newData.length; i++) {
+            str += '<tr style="text-align:center">';
+            for (const key in newData[i]) {
+                // 增加\t为了不让表格显示科学计数法或者其他格式
+                str += `<td>${ newData[i][key] + '\t'}</td>`;
+            }
+            str += '</tr>';
+        }
+        // Worksheet名
+        const worksheet = 'Sheet1'
+        const uri = 'data:application/vnd.ms-excel;base64,';
+
+        // 下载的表格模板数据
+        const template = `<html xmlns:o="urn:schemas-microsoft-com:office:office" 
+        xmlns:x="urn:schemas-microsoft-com:office:excel" 
+        xmlns="http://www.w3.org/TR/REC-html40">
+        <head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
+        <x:Name>${worksheet}</x:Name>
+        <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
+        </x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
+        </head><body><table>${str}</table></body></html>`;
+
+        // 通过创建a标签实现
+        const link = document.createElement("a");
+        link.href = uri + base64(template);
+        // 对下载的文件命名
+        link.download = "资产管理数据表.xls";
+        link.click();
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+// 导出  end
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerCreateIndex = '';
+var layerUpdateIndex = ''
+layui.use('layer', function() {
+
+    //新增弹框
+    $('.add').click(function() {
+            layerCreateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['1170px', '400px'],
+                content: $(".deviceCheckAdd"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        layer.close(layerCreateIndex);
+                    })
+                }
+            })
+        }),
+        //修改弹框信息 
+        $('.edit').click(function() {
+
+            if (!$('.pure-table tr').has('.checked').length) {
+                layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+            } else {
+                let userInfo = $('.pure-table tr').find('.checked').data('user');
+                $('.editPropertyOut input[name=facilityName]').val(userInfo.facilityName)
+                $('.editPropertyOut input[name=facilityType]').val(userInfo.facilityType)
+
+                // 单位赋值
+                $('.editPropertyOut select[name=company]').val(userInfo.company)
+                    // 部门下拉展示及赋值
+                if ($('#getCompanyList2').val()) {
+                    listDepname()
+
+                    function listDepname() {
+                        //获取公司id
+                        let companyName = $('#getCompanyList2').find('option:selected').val();
+                        ajaxRequest(COMPANY_LIST, "POST", { "ownerId": companyName }, function(result) {
+                            let companyDepartmentItems = '<option value="">请选择</option>';
+                            let departmentObj = result.data[0].child;
+                            departmentObj.forEach(function(item, key) {
+                                companyDepartmentItems += `<option value="${item.departmentId}">${item.departmentName}</option>`
+                            })
+                            $('#getDepartmentList2').html(companyDepartmentItems);
+                        }, function(errorMsg) {
+                            alert("请求数据失败!");
+                        })
+                    }
+                }
+                // 部门赋值
+                $('.editPropertyOut select[name=department]').val(userInfo.department)
+
+                $('.editPropertyOut input[name=man').val(userInfo.man)
+                $('.editPropertyOut input[name=addrs').val(userInfo.addrs)
+                $('.editPropertyOut input[name=register').val(userInfo.register)
+
+                layerUpdateIndex = layer.open({
+                    type: 1,
+                    title: false,
+                    closeBtn: 0,
+                    shadeClose: true,
+                    skin: 'yourclass',
+                    area: ['410px', '400px'],
+                    content: $(".editPropertyOut"),
+                    success: function() {
+                        $('.clsBtn,.cancel').click(function() {
+                            layer.close(layerUpdateIndex);
+                        })
+                    }
+                });
+            }
+        })
+
+    //删除信息
+    $('.delete').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            //layer.msg('请选择一条需要修改的信息');
+            layer.msg('请选择一条需要删除的信息!', { icon: 5 });
+        } else {
+            let dataId = $('.pure-table tr').find('.checked').data('id');
+            ajaxRequest(PROPERTY_DELETE, "POST", { "register": dataId }, function(result) {
+                $(".pure-table tbody tr.selected").remove()
+                layer.close(layer.layerCreateIndex);
+                layer.msg('删除成功!', { icon: 6 });
+                getListDataAjax()
+            }, function(errorMsg) {
+                alert("用户删除失败!");
+            })
+        }
+    })
+})
+
+
+/* 新增发送请求 */
+$('#addData').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#addDataForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "facilityName": "请输入资产名称",
+        "facilityType": "请选择资产类别",
+        "company": "请选择使用单位",
+        "man": "请填写负责人",
+        "purchase": "请选择购入方式",
+        "price": "请输入单价",
+        "addrs": "请输入存放地点",
+        "supplier": "请输入供应商",
+        "buyTime": "请输入购买时间",
+        "buyNo": "请输入采购编号",
+        "invoice": "请输入发票编号",
+        "purpose": "请输入资产用途",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    if (!allParam.warranty) {
+        alert('请输入维修天数');
+        return;
+    } else {
+        let pattern = /^(([1-9]\d{0,3})|10000)$/
+        if (!pattern.test(allParam.warranty)) {
+            alert('请输入1-10000正整数');
+            return false;
+        }
+    }
+
+    if (!allParam.warrantyPeriod) {
+        alert('请输入维修周期');
+        return;
+    } else {
+        let pattern = /^(([1-9]\d{0,3})|10000)$/
+        if (!pattern.test(allParam.warrantyPeriod)) {
+            alert('请输入1-10000正整数');
+            return false;
+        }
+    }
+
+    if (!allParam.usedData) {
+        alert('请输入已使用年限');
+        return;
+    } else {
+        let pattern = /^(([1-9]\d{0,3})|10000)$/
+        if (!pattern.test(allParam.warranty)) {
+            alert('请输入1-10000正整数');
+            return false;
+        }
+    }
+
+    //验证通过 请求ajax
+    ajaxRequest(PROPERTY_ADD, "POST", allParam, function(result) {
+        if (result.flag) {
+            layer.close(layerCreateIndex);
+            layer.msg('添加成功!', { icon: 6 });
+            getListDataAjax();
+        } else {
+            alert(result.msg)
+        }
+    }, function(errorMsg) {
+        alert('异常错误');
+    })
+})
+
+
+/* 修改发送请求 */
+$('#dataUpdate').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#updatePropertyForm").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "facilityName": "请输入资产名称",
+        "facilityType": "请选择资产类别",
+        "company": "请选择使用单位",
+        "man": "请填写负责人",
+        "register": "请输入资产编号",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    ajaxRequest(PROPERTY_UPDATE, "POST", allParam, function(result) {
+        if (result.flag) {
+            layer.close(layerUpdateIndex);
+            layer.msg('修改成功!', { icon: 6 });
+            getListDataAjax();
+        } else {
+            alert(result.msg)
+        }
+    }, function(errorMsg) {
+        alert("数据修改失败!");
+    })
+})

+ 164 - 0
js/security.js

@@ -0,0 +1,164 @@
+var pageNo = 1;
+var totalPages = 1;
+
+//安全机制列表
+getListDataAjax();
+
+//获取安全机制列表 ajax请求
+function getListDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 1;
+
+    ajaxRequest(SECURITY_LIST, "POST", queryParam, function(result) {
+
+        let data = result.pageList;
+        let items = '';
+        data.forEach(function(item, key) {
+            let status = item.status ? '启动' : '未启动';
+            items += "<tr>" +
+                "<td class='status' data-user='" + JSON.stringify(item) + "' data-id=" + item.id + "></td>" +
+                "<td>" + item.times + "</td>" +
+                "<td>" + item.restartTime + "</td>" +
+                "<td>" + item.id + "</td>" +
+                "<td>" + item.intervalTime + "</td>" +
+                "<td>" + status + "</td>" +
+                "</tr>"
+        })
+        $('#securityList').html(items);
+
+        totalPages = result.totalPages;
+        $('#totalPage').html(totalPages); //总共多少页
+        $('#dataTotal').html(result.totalCount); //总共多少条数据
+        $('#currentPage').val(pageNo); //当前页面
+        let pageFrom = (pageNo - 1) * result.pageSize + 1; //开始
+        let pageTo = result.pageNo * result.pageSize; //结束
+
+        pageTo = pageTo > result.totalCount ? result.totalCount : pageTo;
+
+        $('#pageFrom').html(pageFrom);
+        $('#pageTo').html(pageTo);
+
+        // 无数据时
+        if (!data.length) {
+            $('.pager.has-data').hide()
+            $('.pager.no-data').show()
+        } else {
+            $('.pager.has-data').show()
+            $('.pager.no-data').hide()
+        }
+
+        if (pageNo < totalPages) {
+            $('#nextPageButton,#lastPageButton').removeClass('disabled');
+        } else {
+            $('#nextPageButton,#lastPageButton').addClass('disabled');
+        }
+        if (pageNo === 1) {
+            $('#firstPageButton,#prevPageButton').addClass('disabled');
+        } else {
+            $('#firstPageButton,#prevPageButton').removeClass('disabled');
+        }
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//拼接搜索条件
+function getSearchParamObj() {
+    let queryParam = {};
+    return queryParam;
+}
+
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+
+    pageNo = totalPages;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerUpdateIndex = ''
+
+layui.use('layer', function() {
+
+    //修改弹框信息
+    $('.edit').click(function() {
+
+        if (!$('.pure-table tr').has('.checked').length) {
+            layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+
+        } else {
+            let dataId = $('.pure-table tr').find('.checked').data('id');
+            let secyrityInfo = $('.pure-table tr').find('.checked').data('user');
+
+            $('.editSecurityOut input[name=times]').val(secyrityInfo.times)
+            $('.editSecurityOut input[name=restartTime]').val(secyrityInfo.restartTime)
+            $('.editSecurityOut input[name=intervalTime]').val(secyrityInfo.intervalTime)
+            $('.editSecurityOut select[name=status').val(secyrityInfo.status)
+            $('.editSecurityOut input[name=id').val(secyrityInfo.id)
+
+            layerUpdateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['400px', '300px'],
+                content: $(".editSecurityOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        layer.close(layerUpdateIndex);
+                    })
+                }
+            });
+        }
+    })
+})
+
+/* 修改安全机制发送请求 */
+$('#dataUpdate').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#updateSecurityForm").serializeArray());
+
+    // 验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "times": "请填写错误次数",
+        "restartTime": "请填写重置时间",
+        "intervalTime": "请填写重试间隔时间",
+        "status": "请填写机制状态"
+    });
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    //验证通过 请求ajax
+    ajaxRequest(SECURITY_UPDATE, "POST", allParam, function(result) {
+        layer.close(layerUpdateIndex);
+        layer.msg('修改成功!', { icon: 6 });
+        getListDataAjax()
+
+    }, function(errorMsg) {
+        alert("数据修改失败!");
+
+    })
+
+})

+ 332 - 0
js/system-inform.js

@@ -0,0 +1,332 @@
+var pageNo = 1;
+var totalPages = 0;
+
+//单位列表
+getSystemListDataAjax();
+
+//获取单位列表 ajax请求
+function getSystemListDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 4;
+
+    ajaxRequest(UNIT_LIST, "POST", queryParam, function(result) {
+
+        let data = result.pageList;
+        let items = '';
+        data.forEach(function(item, key) {
+            let perms = item.parm;
+            let permSave = JSON.stringify(perms)
+            delete(item.parm)
+            var systemStatus = item.status == "1" ? '启动' : '未启动';
+            items += "<tr>" +
+                "<td class='status' data-system='" + JSON.stringify(item) + "' data-perm=" + permSave + " data-id=" + item.id + " ></td>" +
+                "<td>" + item.systemName + "</td>" +
+                "<td><i class='logo-img' style='background-image:url(" + item.systemLogo + ")'></i></td>" +
+                "<td>" + item.fullName + "</td>" +
+                "<td>" + item.forShort + "</td>" +
+                "<td>" + item.url + "</td>" +
+                "<td>" + systemStatus + "</td>" +
+                "<td>" + item.creatMan + "</td>" +
+                "<td>" + getFormatDate(item.creatTime) + "</td>" +
+                // "<td>" + item.parm + "</td>" +
+                "</tr>"
+        })
+        $('#systemList').html(items);
+
+        totalPages = result.totalPages;
+        $('#totalPage').html(totalPages); //总共多少页
+        $('#dataTotal').html(result.totalCount); //总共多少条数据
+        $('#currentPage').val(pageNo); //当前页面
+
+        let pageFrom = (pageNo - 1) * result.pageSize + 1; //开始
+        let pageTo = result.pageNo * result.pageSize; //结束
+
+        pageTo = pageTo > result.totalCount ? result.totalCount : pageTo;
+
+        $('#pageFrom').html(pageFrom);
+        $('#pageTo').html(pageTo);
+
+        // 无数据时
+        if (!data.length) {
+            $('.pager.has-data').hide()
+            $('.pager.no-data').show()
+        } else {
+            $('.pager.has-data').show()
+            $('.pager.no-data').hide()
+        }
+
+        if (pageNo < totalPages) {
+            $('#nextPageButton,#lastPageButton').removeClass('disabled');
+        } else {
+            $('#nextPageButton,#lastPageButton').addClass('disabled');
+        }
+        if (pageNo === 1) {
+            $('#firstPageButton,#prevPageButton').addClass('disabled');
+        } else {
+            $('#firstPageButton,#prevPageButton').removeClass('disabled');
+        }
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+
+}
+
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getSystemListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+
+    pageNo = totalPages;
+    getSystemListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getSystemListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getSystemListDataAjax(getSearchParamObj(), pageNo);
+})
+
+
+//拼接搜索条件
+function getSearchParamObj() {
+    let queryParam = {};
+    return queryParam;
+}
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerCreateIndex = '';
+var layerUpdateIndex = ''
+layui.use('layer', function() {
+    var layer = layui.layer;
+
+    //新增弹框
+    $('.add').click(function() {
+            layerCreateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['400px', '300px'],
+                content: $(".addUnitOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        layer.close(layerCreateIndex);
+                    })
+                }
+            })
+        })
+        //修改弹框信息
+    $('.edit').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+
+        } else {
+            let dataId = $('.pure-table tr').find('.checked').data('id');
+            let systemInfo = $('.pure-table tr').find('.checked').data('system');
+            let perm = $('.pure-table tr').find('.checked').data('perm');
+            let systemStatus = systemInfo.status == "1" ? '启动' : '未启动';
+
+            $('.editSystemOut input[name=systemName]').val(systemInfo.systemName)
+            $('.editSystemOut input[name=fullName]').val(systemInfo.fullName)
+            $('.editSystemOut input[name=forShort').val(systemInfo.forShort)
+            $('.editSystemOut input[name=url').val(systemInfo.url)
+            $('.editSystemOut input[name=parm').val(perm)
+
+            $('.editSystemOut input[name=id]').val(systemInfo.id)
+            $('.editSystemOut input[name=creatMan').val(systemInfo.creatMan)
+            $('.editSystemOut input[name=status').val(systemStatus)
+
+            if (systemInfo.systemLogo) {
+                $('#systemLogoShow').attr('src', systemInfo.systemLogo)
+                $('#systemLogoShow').css('display', 'block')
+            }
+
+            layerUpdateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['410px', '400px'],
+                content: $(".editSystemOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        layer.close(layerUpdateIndex);
+                    })
+                }
+            });
+
+            $('#editystemFormBox input[name=systemLogoFile]').off('change').on('change', function() {
+
+                // 先获取用户上传的文件对象
+                let fileObj = this.files[0];
+                // 生成一个文件读取的内置对象
+                let fileReader = new FileReader();
+                // 将文件对象传递给内置对象
+                fileReader.readAsDataURL(fileObj); //这是一个异步执行的过程,所以需要onload回调函数执行读取数据后的操作
+                // 将读取出文件对象替换到img标签
+                fileReader.onload = function() { // 等待文件阅读器读取完毕再渲染图片
+                    $('#systemLogoShow').attr('src', fileReader.result)
+                    $('#systemLogoShow').css('display', 'block')
+                }
+                uploadImg('systemLogoEdit', function(result) {
+                    result = JSON.parse(result);
+                    if (!result.flag) {
+                        alert('上传图片失败')
+                        return;
+                    }
+                    $('#editystemFormBox input[name=systemLogo]').val(result.data)
+                });
+            });
+        }
+    })
+
+    //删除信息
+    $('.delete').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            //layer.msg('请选择一条需要修改的信息');
+            layer.msg('请选择一条需要删除的信息!', { icon: 5 });
+        } else {
+            $(".pure-table tbody tr.selected").remove()
+                //getSystemListDataAjax(getSearchParamObj());
+            layer.msg('删除成功!', { icon: 6 });
+        }
+    })
+});
+
+
+/* 新增发送请求 */
+$('#addSystem').click(function() {
+
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#addSystemFormBox").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "systemName": "请填写系统名称",
+        "fullName": "请填写系统全称",
+        "forShort": "请填写系统简称",
+        "url": "请填写官网地址",
+        "parm": "请填写参数",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    //验证文件
+
+    // 判断文件是否为空 
+    var file = $("input[name='systemLogo']").val(); //用户文件内容(文件)
+    if (file == "") {
+        alert("请选择上传的目标文件! ")
+        return false;
+    }
+
+    //判断文件类型
+    var fileExtension = file.substring(file.lastIndexOf(".") + 1).toLowerCase();
+
+    let allowExtension = ['jpg', 'jpeg', 'png', 'gif'];
+    if (allowExtension.indexOf(fileExtension.toLowerCase()) < 0) {
+        alert("请选择图片文件!");
+        return false;
+    }
+
+    //上传文件
+    uploadImg('systemLogoAdd', function(data) {
+
+        data = JSON.parse(data); //aa json字符串转对象
+
+        //console.log(data.flag + 'flag')
+        if (data.flag) {
+            //将返回的路径 拼接到提交的数据对象里
+            allParam['systemLogo'] = data.data;
+
+            // let url = URL + SYSTEM_ADD;
+
+            ajaxRequest(SYSTEM_ADD, "POST", allParam, function(result) {
+
+                let data = result.data;
+                layer.close(layer.index);
+                layer.msg('添加成功!', { icon: 6 });
+                getSystemListDataAjax();
+
+            }, function(errorMsg) {
+                alert("系统信息添加失败!");
+            })
+
+
+        } else {
+            //这里应该弹出删除失败的 后台返回的原因
+            alert('上传图片失败');
+            return;
+        }
+    });
+
+    // document.getElementById("addSystemFormBox").reset();
+    $('#addSystemFormBox')[0].reset();
+})
+
+/* 修改发送请求 */
+$('#dataUpdate').click(function() {
+    //获取表单的值 并转换成对象
+    let allParam = serializeArrayToObj($("#editystemFormBox").serializeArray());
+
+    //验证数据是否为空
+    let res = validParamIsEmpty(allParam, {
+        "systemName": "请填写系统名称",
+        "fullName": "请填写系统全称",
+        "forShort": "请填写系统简称",
+        "url": "请填写官网地址",
+        "parm": "请填写参数",
+    });
+
+    if (res.code == -1) {
+        alert(res.msg);
+        return;
+    }
+
+    //验证文件
+    // 判断文件是否为空 
+    if ($("input[name='systemLogoFile']").val()) {
+        var file = $("input[name='systemLogoFile']").val(); //用户文件内容(文件)
+        //判断文件类型
+        var fileExtension = file.substring(file.lastIndexOf(".") + 1).toLowerCase();
+
+        let allowExtension = ['jpg', 'jpeg', 'png', 'gif'];
+        if (allowExtension.indexOf(fileExtension.toLowerCase()) < 0) {
+            alert("请选择图片文件!");
+            return false;
+        }
+    }
+
+    ajaxRequest(SYSTEM_UPDATE, "POST", allParam, function(result) {
+        if (result.flag) {
+            layer.close(layerUpdateIndex);
+            layer.msg('修改成功!', { icon: 6 });
+            getSystemListDataAjax();
+            //将返回的路径 拼接到提交的数据对象里
+            // layer.close(layer.index);
+        } else {
+            //这里应该弹出删除失败的 后台返回的原因
+            alert("系统信息添加失败!");
+            alert(result.msg);
+            return;
+        }
+    }, function(errorMsg) {
+        alert("系统错误!");
+        return;
+    })
+})

+ 24 - 0
js/upload.js

@@ -0,0 +1,24 @@
+function uploadImg(elemetnId, success) {
+
+    var $file = $("#" + elemetnId).val(); //用户文件内容(文件)
+
+    var formData = new FormData(); //这里需要实例化一个FormData来进行文件上传     //aa  实例化对象放请求参数
+    formData.append("file", $("#" + elemetnId)[0].files[0]); //aa  .files[0]???
+    formData.append('queryJson', JSON.stringify({
+        "V_LOGINNAME": LOGIN_NAME,
+        "V_PASSWORD": LOGIN_PASSWORD,
+    }))
+
+    let uploadUrl = BASEURL + UPLOAD_FILE;
+
+    $.ajax({
+        type: "post",
+        //url: 'http://192.168.31.209:9501/v1/admin/file',    // aa 测试地址
+        url: uploadUrl,
+        data: formData,
+        processData: false,
+        contentType: false,
+        success: success
+    });
+
+}

+ 469 - 0
js/userAccount.js

@@ -0,0 +1,469 @@
+var pageNo = 1;
+var totalPages = 0;
+
+var depname = 0;
+var companyId = 0;
+
+//用户列表
+getListDataAjax();
+
+//获取用户列表 ajax请求
+function getListDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 4;
+    queryParam.roleId = 1;
+
+    ajaxRequest(USER_LIT, "POST", queryParam, function(result) {
+        let data = result.pageList;
+        let items = '';
+        data.forEach(function(item, key) {
+            let posName = "";
+            if (item.posname == 1) {
+                posName = "超级管理员"
+            } else if (item.posname == 2) {
+                posName = "普通员工"
+            }
+            let locked = item.locked ? '未锁定' : '锁定';
+            items += "<tr>" +
+                "<td class='status' data-user='" + JSON.stringify(item) + "' data-id=" + item.id + " data-username=" + item.username + "></td>" +
+                "<td>" + item.username + "</td>" +
+                "<td>" + item.sex + "</td>" +
+                "<td>" + posName + "</td>" +
+                "<td>" + getFormatDate(item.ctime.time) + "</td>" +
+                "<td>" + item.addman + "</td>" +
+                "<td>" + locked + "</td>" +
+                "<td>" + item.wrongtimes + "</td>" +
+                "</tr>"
+        })
+        $('#dataList').html(items);
+
+        totalPages = result.totalPages;
+        $('#totalPage').html(totalPages); //总共多少页
+        $('#dataTotal').html(result.totalCount); //总共多少条数据
+        $('#currentPage').val(pageNo); //当前页面
+        let pageFrom = (pageNo - 1) * result.pageSize + 1; //开始
+        let pageTo = result.pageNo * result.pageSize; //结束
+        pageTo = pageTo > result.totalCount ? result.totalCount : pageTo;
+        $('#pageFrom').html(pageFrom);
+        $('#pageTo').html(pageTo);
+
+        // 无数据时
+        if (!data.length) {
+            $('.pager.has-data').hide()
+            $('.pager.no-data').show()
+        } else {
+            $('.pager.has-data').show()
+            $('.pager.no-data').hide()
+        }
+
+        if (pageNo < totalPages) {
+            $('#nextPageButton,#lastPageButton').removeClass('disabled');
+        } else {
+            $('#nextPageButton,#lastPageButton').addClass('disabled');
+        }
+        if (pageNo === 1) {
+            $('#firstPageButton,#prevPageButton').addClass('disabled');
+        } else {
+            $('#firstPageButton,#prevPageButton').removeClass('disabled');
+        }
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//按钮搜索
+$('#buttonClick').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj());
+})
+
+//拼接搜索条件
+function getSearchParamObj() {
+    let queryParam = {};
+    let userName = $('#userName').val();
+    queryParam.userName = userName;
+    if (companyId != 0) {
+        queryParam.companyId = companyId;
+    }
+    if (depname != 0) {
+        queryParam.depname = depname;
+    }
+    return queryParam;
+}
+
+
+//重置表单
+$('.reset').click(resetForm)
+
+//角色列表
+getUserRole()
+
+
+getCompanyTree()
+    //获取公司树结构 ajax请求   
+function getCompanyTree() {
+    ajaxRequest(COMPANY_LIST, "POST", {}, function(result) {
+        let data = result.data;
+        let items = '';
+        let companyItems = '';
+        let companyDepartmentItems = '<option value="">请选择</option>';
+        data.forEach(function(item, key) {
+            items += `<li  data-id=${item.ownerId} ><span data-id=${item.ownerId}  class="treeCompany"><img  class="img" src="images/login.png" alt=""> ${item.ownerName}  (${item.userNumber})</span>`;
+            if (item.child) {
+                let data = item.child;
+                items += `<ul class="child-three">`;
+                data.forEach(function(item, key) {
+                    items += `<li   data-id=${item.departmentId} ><span  data-id=${item.departmentId}  class="treeDepartment"><img class="img" src="images/login.png" alt="">${item.departmentName}</span></li>`
+                });
+                items += ` </ul>`;
+            }
+            `</li>`
+            companyItems += `<option value="${item.ownerId}">${item.ownerName}</option>`
+            if (key == 0) {
+                let departmentObj = item.child;
+                if (departmentObj) {
+                    departmentObj.forEach(function(item, key) {
+                        companyDepartmentItems += `<option value="${item.id}">${item.departmentName}</option>`
+                    })
+                    $('#departmentId').html(companyDepartmentItems);
+                    $('#departmentIdUpdate').html(companyDepartmentItems);
+                }
+            }
+        })
+        $('#child-two').html(items);
+        $('#companyId').html(companyItems);
+        $('#companyId2').html(companyItems);
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+    pageNo = totalPages;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+//重置表单
+function resetForm() {
+    pageNo = 1
+    $("#userName").val("");
+    $('#roleId option').eq(0).prop("selected", true)
+    getListDataAjax(getSearchParamObj());
+}
+//拼接树搜索条件
+
+//角色查询 ajax请求
+function getUserRole() {
+    ajaxRequest(USER_ROLE, "POST", {}, function(result) {
+        $("#loading").empty()
+        let data = result.data;
+        let roleItems = '';
+        let roleItems2 = '';
+        data.forEach(function(item, key) {
+            roleItems += `<option value="${item.roleId}">${item.roleName}</option>`
+            roleItems2 += `<option value="${item.roleId}">${item.roleName}</option>`
+        })
+        $('#roleId').append(roleItems);
+        $('#roleId2').html(roleItems2);
+        $('#roleId3').html(roleItems2);
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+
+/*新增 修改 关闭 弹框*/
+var layer = layui.layer;
+var layerCreateIndex = '';
+var layerUpdateIndex = ''
+layui.use('layer', function() {
+
+    //新增弹框
+    $('.add').click(function() {
+            layerCreateIndex = layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                skin: 'yourclass',
+                area: ['410px', '500px'],
+                content: $(".addUserOut"),
+                success: function() {
+                    $('.clsBtn,.cancel').click(function() {
+                        layer.close(layerCreateIndex);
+                    })
+                }
+            })
+        })
+        //修改弹框信息
+    $('.edit').click(function() {
+
+            if (!$('.pure-table tr').has('.checked').length) {
+                layer.msg('请选择一条需要修改的信息!', { icon: 5 });
+            } else {
+                let dataId = $('.pure-table tr').find('.checked').data('id');
+                let userInfo = $('.pure-table tr').find('.checked').data('user');
+
+                $('.editUserOut input[name=truename').val(userInfo.truename)
+                $('.editUserOut select[name=sex]').val(userInfo.sex)
+                $('.editUserOut input[name=phone').val(userInfo.phone)
+                $('.editUserOut select[name=posname').val(userInfo.posname)
+                $('.editUserOut select[name=locked]').val(userInfo.locked)
+                $('.editUserOut select[name=status]').val(userInfo.status)
+                $('.editUserOut input[name=wrongtimes').val(userInfo.wrongtimes)
+
+                // 单位赋值
+                $('.editUserOut select[name=bian').val(userInfo.bian)
+                    // 部门下拉展示及赋值
+                if ($('#companyId2').val()) {
+                    listDepname()
+
+                    function listDepname() {
+                        let companyName = $('#companyId2').find('option:selected').val();
+                        ajaxRequest(COMPANY_LIST, "POST", { "ownerId": companyName }, function(result) {
+                            let companyDepartmentItems = '<option value="">请选择</option>';
+                            let departmentObj = result.data[0].child;
+                            departmentObj.forEach(function(item, key) {
+                                companyDepartmentItems += `<option value="${item.departmentId}">${item.departmentName}</option>`
+                            })
+                            $('#departmentIdUpdate').html(companyDepartmentItems);
+                        }, function(errorMsg) {
+                            alert("请求数据失败!");
+                        })
+                    }
+                }
+                // 部门赋值
+                $('.editUserOut select[name=depname').val(userInfo.depname)
+
+                $('.editUserOut input[name=username]').val(userInfo.username)
+
+                layerUpdateIndex = layer.open({
+                    type: 1,
+                    title: false,
+                    closeBtn: 0,
+                    shadeClose: true,
+                    skin: 'yourclass',
+                    area: ['410px', '500px'],
+                    content: $(".editUserOut"),
+                    success: function() {
+                        $('.clsBtn,.cancel').click(function() {
+                            layer.close(layerUpdateIndex);
+                        })
+                    }
+                });
+            }
+        })
+        //删除信息
+    $('.delete').click(function() {
+        if (!$('.pure-table tr').has('.checked').length) {
+            //layer.msg('请选择一条需要修改的信息');
+            layer.msg('请选择一条需要删除的信息!', { icon: 5 });
+        } else {
+
+            let dataUserName = $('.pure-table tr').find('.checked').data('username');
+
+            ajaxRequest(USER_DELETE, "POST", { "username": dataUserName }, function(result) {
+                $(".pure-table tbody tr.selected").remove()
+                layer.close(layer.layerCreateIndex);
+                layer.msg('删除成功!', { icon: 6 });
+                getListDataAjax()
+            }, function(errorMsg) {
+                alert("用户删除失败!");
+            })
+        }
+    })
+});
+
+
+/* 新增用户发送请求 */
+$('#addUser').click(function() {
+    //获取表单的值
+    let userAddObj = $("#addUserForm").serializeArray();
+
+    //发送给服务端的数据格式
+    let userAddParam = {};
+    for (let key in userAddObj) { //循环验证······
+
+        //验证用户名
+        if (userAddObj[key].name == 'username') {
+            if (!userAddObj[key].value) {
+                alert('请输入用户名');
+                return;
+            }
+            userAddParam['username'] = userAddObj[key].value; // aa  
+            userAddParam['agentid'] = userAddObj[key].value;
+
+        } else if (userAddObj[key].name == 'password') {
+            if (!userAddObj[key].value) {
+                alert('请输入密码');
+                return;
+            }
+            userAddParam['password'] = md5(userAddObj[key].value);
+
+        } else if (userAddObj[key].name == 'age') { //aa验证年龄
+            if (!userAddObj[key].value) {
+                alert('请填写年龄');
+                return;
+            } else {
+                let pattern = /^(([0-9]|[1-9][1-9]|1[0-7][0-9])(\\.[0-9]+)?|180)$/;
+                if (!pattern.test(userAddObj[key].value)) {
+                    alert('请输正确的年龄');
+                    return false;
+                }
+            }
+            userAddParam['age'] = userAddObj[key].value;
+
+        } else if (userAddObj[key].name == 'truename') { //aa验证真实姓名
+            if (!userAddObj[key].value) {
+                alert('请填写真实姓名');
+                return;
+            }
+            userAddParam['truename'] = userAddObj[key].value;
+
+        } else if (userAddObj[key].name == 'phone') { //aa验证手机号
+            if (!userAddObj[key].value) {
+                alert('请填写手机号码');
+                return;
+            } else {
+                let telre = /^(13[0-9]|14[0-9]|15[0-9]|17[0-9]|18[0-9])\d{8}$/;
+                if (!telre.test(userAddObj[key].value)) {
+                    alert('请输入有效的手机号码');
+                    return false;
+                }
+            }
+            userAddParam['phone'] = userAddObj[key].value;
+
+        } else {
+            //其它字段  ....
+            userAddParam[userAddObj[key].name] = userAddObj[key].value; // aa  inputKey[]???
+        }
+    }
+
+
+    //验证通过 请求ajax
+    ajaxRequest(USER_ADD, "POST", userAddParam, function(result) {
+        let data = result.data;
+        layer.close(layerCreateIndex);
+        layer.msg('添加成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("用户添加失败!");
+    })
+})
+
+
+/* 修改用户发送请求 */
+$('#editUser').click(function() {
+
+    //获取表单的值
+    let userEditObj = $("#editUserForm").serializeArray();
+
+    //发送给服务端的数据格式
+    let userEditParam = {};
+
+    for (let key in userEditObj) { //循环验证······
+        //验证用户名
+        if (userEditObj[key].name == 'username') {
+            if (!userEditObj[key].value) {
+                alert('请输入用户名');
+                return;
+            }
+            userEditParam['username'] = userEditObj[key].value; // aa  
+            userEditParam['agentid'] = userEditObj[key].value;
+
+        } else if (userEditObj[key].name == 'password') {
+            if (!userEditObj[key].value) {
+                alert('请输入密码');
+                return;
+            }
+            userEditParam['password'] = md5(userEditObj[key].value);
+
+        } else if (userEditObj[key].name == 'age') { //aa验证年龄
+            if (!userEditObj[key].value) {
+                alert('请填写年龄');
+                return;
+            } else {
+                let pattern = /^(([0-9]|[1-9][1-9]|1[0-7][0-9])(\\.[0-9]+)?|180)$/;
+                if (!pattern.test(userEditObj[key].value)) {
+                    alert('请输正确的年龄');
+                    return false;
+                }
+            }
+            userEditParam['age'] = userEditObj[key].value;
+
+        } else if (userEditObj[key].name == 'truename') { //aa验证真实姓名
+            if (!userEditObj[key].value) {
+                alert('请填写真实姓名');
+                return;
+            }
+            userEditParam['truename'] = userEditObj[key].value;
+
+        } else if (userEditObj[key].name == 'phone') { //aa验证手机号
+            if (!userEditObj[key].value) {
+                alert('请填写手机号码');
+                return;
+            } else {
+                let telre = /^(13[0-9]|14[0-9]|15[0-9]|17[0-9]|18[0-9])\d{8}$/;
+                if (!telre.test(userEditObj[key].value)) {
+                    alert('请输入有效的手机号码');
+                    return false;
+                }
+            }
+            userEditParam['phone'] = userEditObj[key].value;
+
+        } else {
+            //其它字段  ....
+            userEditParam[userEditObj[key].name] = userEditObj[key].value; // aa  inputKey[]???
+        }
+    }
+
+    //验证通过 请求ajax
+    ajaxRequest(USER_UPDATE, "POST", userEditParam, function(result) {
+        let data = result.data;
+        layer.close(layerUpdateIndex);
+        layer.msg('修改成功!', { icon: 6 });
+        getListDataAjax();
+    }, function(errorMsg) {
+        alert("用户修改失败!");
+    })
+})
+
+
+// 公司与部门联动 (修改和新增)
+linkDep('#companyId')
+linkDep('#companyId2')
+
+function linkDep(element) {
+    $(element).on('change', function() {
+
+        //获取公司id
+        let companyName = $(this).find('option:selected').val();
+        ajaxRequest(COMPANY_LIST, "POST", { "ownerId": companyName }, function(result) {
+            let companyDepartmentItems = '<option value="">请选择</option>';
+            let departmentObj = result.data[0].child;
+            departmentObj.forEach(function(item, key) {
+                companyDepartmentItems += `<option value="${item.departmentId}">${item.departmentName}</option>`
+            })
+            $('#departmentId').html(companyDepartmentItems);
+            $('#departmentIdUpdate').html(companyDepartmentItems);
+        }, function(errorMsg) {
+            alert("请求数据失败!");
+        })
+    })
+}

+ 167 - 0
js/userLog.js

@@ -0,0 +1,167 @@
+var pageNo = 1;
+var totalPages = 0;
+//数据列表
+getListDataAjax();
+
+//获取数据列表 ajax请求
+function getListDataAjax(queryParam = {}, pageNo = 1) {
+
+    queryParam.pageNo = pageNo;
+    // queryParam.pageSize = 20;
+
+    ajaxRequest(LOG_MANAGE_LIST, "POST", queryParam, function(result) {
+        let data = result.RESULT.pageList;
+        let items = '';
+        data.forEach(function(item, key) {
+            items += "<tr>" +
+                "<td class='status' data-user='" + JSON.stringify(item) + "' data-id=" + item.id + "></td>" +
+                "<td>" + item.xh + "</td>" +
+                "<td>" + item.user_name + "</td>" +
+                "<td>" + getFormatDate(item.creat_date.time) + "</td>" +
+                "<td>" + item.operation + "</td>" +
+                "<td>" + item.time + "</td>" +
+                "<td>" + item.ip + "</td>" +
+                "</tr>"
+        })
+        $('#dataList').html(items);
+        $('#totalCount').html(result.totalCount)
+        $('#handled').html(result.yclCount)
+        $('#unhandle').html(result.wclCount)
+        $('#handleRate').html(result.cll)
+
+        totalPages = result.RESULT.totalPages;
+        $('#totalPage').html(totalPages); //总共多少页
+        $('#dataTotal').html(result.RESULT.totalCount); //总共多少条数据
+        $('#currentPage').val(pageNo); //当前页面
+
+        let pageFrom = (pageNo - 1) * result.RESULT.pageSize + 1; //开始
+        let pageTo = result.RESULT.pageNo * result.RESULT.pageSize; //结束
+        pageTo = pageTo > result.RESULT.totalCount ? result.RESULT.totalCount : pageTo;
+
+        $('#pageFrom').html(pageFrom);
+        $('#pageTo').html(pageTo);
+
+        // 无数据时
+        if (!data.length) {
+            $('.pager.has-data').hide()
+            $('.pager.no-data').show()
+        } else {
+            $('.pager.has-data').show()
+            $('.pager.no-data').hide()
+        }
+        if (pageNo < totalPages) {
+            $('#nextPageButton,#lastPageButton').removeClass('disabled');
+        } else {
+            $('#nextPageButton,#lastPageButton').addClass('disabled');
+        }
+        if (pageNo === 1) {
+            $('#firstPageButton,#prevPageButton').addClass('disabled');
+        } else {
+            $('#firstPageButton,#prevPageButton').removeClass('disabled');
+        }
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+
+//按钮搜索
+$('#buttonSearch').on('click', function() {
+    pageNo = 1
+    getListDataAjax(getSearchParamObj());
+})
+
+//拼接搜索条件
+function getSearchParamObj() {
+    let queryParam = {};
+    let start_creat_date = $('#start_creat_date').val();
+    let end_creat_date = $('#end_creat_date').val()
+    let user_name = $('#user_name').val()
+    queryParam.start_creat_date = start_creat_date;
+    queryParam.end_creat_date = end_creat_date;
+    queryParam.user_name = user_name;
+    return queryParam;
+}
+
+//重置表单
+$('.reset').click(resetForm)
+    //重置表单
+function resetForm() {
+    pageNo = 1
+    $("#user_name").val("");
+    $("#start_creat_date").val("");
+    $("#end_creat_date").val("");
+    getListDataAjax(getSearchParamObj());
+}
+
+//分页操作
+$('#firstPageButton').on('click', function() {
+    pageNo = 1;
+    getListDataAjax(getSearchParamObj(), 1);
+})
+
+$('#lastPageButton').on('click', function() {
+    pageNo = totalPages;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#prevPageButton').on('click', function() {
+    pageNo -= 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+$('#nextPageButton').on('click', function() {
+    pageNo += 1;
+    getListDataAjax(getSearchParamObj(), pageNo);
+})
+
+
+// 导出 start
+$('.export').click(getDataExport)
+
+function getDataExport() {
+    // 输出base64编码
+    const base64 = s => window.btoa(unescape(encodeURIComponent(s)));
+
+    ajaxRequest(LOG_EXPORT, "POST", {}, function(result) {
+        let data = result.RESULT.data;
+        let newData = [];
+
+        data.forEach(function(item, index) {
+            newData.push({ xh: item.xh, user_name: item.user_name, creat_date: getFormatDate(item.creat_date.time), operation: item.operation, time: item.time, ip: item.ip })
+        });
+        let str = '<tr style="text-align:center"><th>序号</th><th>操作人员</th><th>操作时间</th><th>操作内容</th><th>执行时间</th><th>请求IP</th></tr>';
+        // 循环遍历,每行加入tr标签,每个单元格加td标签
+        for (let i = 0; i < newData.length; i++) {
+            str += '<tr style="text-align:center">';
+            for (const key in newData[i]) {
+                // 增加\t为了不让表格显示科学计数法或者其他格式
+                str += `<td>${ newData[i][key] + '\t'}</td>`;
+            }
+            str += '</tr>';
+        }
+        // Worksheet名
+        const worksheet = 'Sheet1'
+        const uri = 'data:application/vnd.ms-excel;base64,';
+
+        // 下载的表格模板数据
+        const template = `<html xmlns:o="urn:schemas-microsoft-com:office:office" 
+        xmlns:x="urn:schemas-microsoft-com:office:excel" 
+        xmlns="http://www.w3.org/TR/REC-html40">
+        <head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
+        <x:Name>${worksheet}</x:Name>
+        <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
+        </x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
+        </head><body><table>${str}</table></body></html>`;
+
+        // 通过创建a标签实现
+        const link = document.createElement("a");
+        link.href = uri + base64(template);
+        // 对下载的文件命名
+        link.download = "日志管理数据表.xls";
+        link.click();
+
+    }, function(errorMsg) {
+        alert("请求数据失败!");
+    })
+}
+// 导出  end

+ 58 - 0
js/util.js

@@ -0,0 +1,58 @@
+/* 个位补零*/
+function Appendzero(obj) {
+    if (obj < 10) return "0" + obj;
+    else return obj;
+}
+
+function add0(m) { return m < 10 ? '0' + m : m }
+
+
+//时间戳转化成时间格式
+function getFormatDate(timestamp) {
+    //timestamp是整数,否则要parseInt转换,不会出现少个0的情况
+    var time = new Date(timestamp);
+    var year = time.getFullYear();
+    var month = time.getMonth() + 1;
+    var date = time.getDate();
+    var hours = time.getHours();
+    var minutes = time.getMinutes();
+    var seconds = time.getSeconds();
+    return year + '-' + add0(month) + '-' + add0(date) + ' ' + add0(hours) + ':' + add0(minutes) + ':' + add0(seconds);
+}
+
+
+
+
+
+
+/* 毫秒转化*/
+function test(time_distance) {
+    // 天时分秒换算 
+    var int_day = Math.floor(time_distance / 86400)
+    time_distance = time_distance - int_day * 86400;
+
+    var int_hour = Math.floor(time_distance / 3600)
+    time_distance = time_distance - int_hour * 3600;
+
+    var int_minute = Math.floor(time_distance / 60)
+    time_distance = time_distance - int_minute * 60;
+
+    var int_second = Math.floor(time_distance)
+        // 时分秒为单数时、前面加零 
+    if (int_day < 10) {
+        int_day = "0" + int_day;
+    }
+    if (int_hour < 10) {
+        int_hour = "0" + int_hour;
+    }
+    if (int_minute < 10) {
+        int_minute = "0" + int_minute;
+    }
+    if (int_second < 10) {
+        int_second = "0" + int_second;
+    }
+    return int_day + '天' + int_hour + '小时' + int_minute + '分钟' + int_second + '秒';
+}
+
+
+var test = test(3000000);

Некоторые файлы не были показаны из-за большого количества измененных файлов