XAWDJ0277HWXPT2\Administrator 5 rokov pred
rodič
commit
f5bd623a88
100 zmenil súbory, kde vykonal 1680 pridanie a 142 odobranie
  1. BIN
      web/bitbug_favicon.ico
  2. 1 1
      web/css/app.cc990596.css
  3. 1 0
      web/css/chunk-04b56cd4.419bdf9f.css
  4. 1 0
      web/css/chunk-52eac2f9.cda5a6e3.css
  5. 0 1
      web/css/chunk-58a5ff69.0f906573.css
  6. 0 0
      web/css/chunk-73401f32.56521cb4.css
  7. BIN
      web/favicon.ico
  8. BIN
      web/img/Lamp_icon-pre.d6195b13.png
  9. BIN
      web/img/lamp_night_fault_0.d90218b9.png
  10. BIN
      web/img/lamp_night_fault_1.751fbb7e.png
  11. BIN
      web/img/lamp_night_fault_2.2830e61a.png
  12. BIN
      web/img/lamp_night_fault_3.a1191db6.png
  13. BIN
      web/img/lamp_night_off-line_0.21db4512.png
  14. BIN
      web/img/lamp_night_off-line_1.a8f74f10.png
  15. BIN
      web/img/lamp_night_off-line_2.b7454f2d.png
  16. BIN
      web/img/lamp_night_off-line_3.153555ce.png
  17. BIN
      web/img/lamp_night_off_0.bc788eaf.png
  18. BIN
      web/img/lamp_night_off_1.88280979.png
  19. BIN
      web/img/lamp_night_off_2.b4aad79c.png
  20. BIN
      web/img/lamp_night_off_3.d2453d77.png
  21. BIN
      web/img/lamp_night_on_0.3dd1851f.png
  22. BIN
      web/img/lamp_night_on_1.e6f7b41d.png
  23. BIN
      web/img/lamp_night_on_2.7417c8aa.png
  24. BIN
      web/img/lamp_night_on_3.21579180.png
  25. 1 1
      web/index.html
  26. 0 2
      web/js/app.1532c2af.js
  27. 0 1
      web/js/app.1532c2af.js.map
  28. 2 0
      web/js/app.e4a39378.js
  29. 1 0
      web/js/app.e4a39378.js.map
  30. 4 0
      web/js/chunk-04b56cd4.34df97ae.js
  31. 1 0
      web/js/chunk-04b56cd4.34df97ae.js.map
  32. 0 2
      web/js/chunk-21018f1e.ea89af7b.js
  33. 0 1
      web/js/chunk-21018f1e.ea89af7b.js.map
  34. 2 0
      web/js/chunk-52eac2f9.24364304.js
  35. 1 0
      web/js/chunk-52eac2f9.24364304.js.map
  36. 0 2
      web/js/chunk-58a5ff69.a15e0b64.js
  37. 0 1
      web/js/chunk-58a5ff69.a15e0b64.js.map
  38. 2 0
      web/js/chunk-73401f32.001c2cc6.js
  39. 1 0
      web/js/chunk-73401f32.001c2cc6.js.map
  40. 2 0
      web/js/chunk-f2a89e68.98dc6402.js
  41. 1 0
      web/js/chunk-f2a89e68.98dc6402.js.map
  42. 0 1
      web/js/chunk-vendors.8202404d.js.map
  43. 5 5
      web/js/chunk-vendors.8202404d.js
  44. 1 0
      web/js/chunk-vendors.897f3683.js.map
  45. BIN
      webConfig/public/bitbug_favicon.ico
  46. 2 1
      webConfig/public/index.html
  47. 63 1
      webConfig/src/App.vue
  48. 216 0
      webConfig/src/api/allUel.js
  49. 428 122
      webConfig/src/api/base.js
  50. 244 0
      webConfig/src/components/sideBar.vue
  51. 316 0
      webConfig/src/components/sideBarNew.vue
  52. 384 0
      webConfig/src/components/sideBar_idcol.vue
  53. BIN
      webConfig/src/img/GIS/Lamp_icon-pre.png
  54. BIN
      webConfig/src/img/GIS/Lamp_icon.png
  55. BIN
      webConfig/src/img/GIS/Monitor.png
  56. BIN
      webConfig/src/img/GIS/battery_icon.png
  57. BIN
      webConfig/src/img/GIS/cancel-icon.png
  58. BIN
      webConfig/src/img/GIS/close_light1.png
  59. BIN
      webConfig/src/img/GIS/data_icon.png
  60. BIN
      webConfig/src/img/GIS/day_icon.png
  61. BIN
      webConfig/src/img/GIS/determine-icon.png
  62. BIN
      webConfig/src/img/GIS/edit-icon.png
  63. BIN
      webConfig/src/img/GIS/fault-icon.png
  64. BIN
      webConfig/src/img/GIS/fault-icon1.png
  65. BIN
      webConfig/src/img/GIS/fault_icon.png
  66. BIN
      webConfig/src/img/GIS/fault_light1.png
  67. BIN
      webConfig/src/img/GIS/lamp_type/lamp_night_fault_0.png
  68. BIN
      webConfig/src/img/GIS/lamp_type/lamp_night_fault_1.png
  69. BIN
      webConfig/src/img/GIS/lamp_type/lamp_night_fault_2.png
  70. BIN
      webConfig/src/img/GIS/lamp_type/lamp_night_fault_3.png
  71. BIN
      webConfig/src/img/GIS/lamp_type/lamp_night_off-line_0.png
  72. BIN
      webConfig/src/img/GIS/lamp_type/lamp_night_off-line_1.png
  73. BIN
      webConfig/src/img/GIS/lamp_type/lamp_night_off-line_2.png
  74. BIN
      webConfig/src/img/GIS/lamp_type/lamp_night_off-line_3.png
  75. BIN
      webConfig/src/img/GIS/lamp_type/lamp_night_off_0.png
  76. BIN
      webConfig/src/img/GIS/lamp_type/lamp_night_off_1.png
  77. BIN
      webConfig/src/img/GIS/lamp_type/lamp_night_off_2.png
  78. BIN
      webConfig/src/img/GIS/lamp_type/lamp_night_off_3.png
  79. BIN
      webConfig/src/img/GIS/lamp_type/lamp_night_on_0.png
  80. BIN
      webConfig/src/img/GIS/lamp_type/lamp_night_on_1.png
  81. BIN
      webConfig/src/img/GIS/lamp_type/lamp_night_on_2.png
  82. BIN
      webConfig/src/img/GIS/lamp_type/lamp_night_on_3.png
  83. BIN
      webConfig/src/img/GIS/lamp_type/关灯_上_灯杆@2x.png
  84. BIN
      webConfig/src/img/GIS/lamp_type/关灯_下_灯杆@2x.png
  85. BIN
      webConfig/src/img/GIS/lamp_type/关灯_右_灯杆@2x.png
  86. BIN
      webConfig/src/img/GIS/lamp_type/关灯_左_灯杆@2x.png
  87. BIN
      webConfig/src/img/GIS/lamp_type/开灯_上_灯杆@2x.png
  88. BIN
      webConfig/src/img/GIS/lamp_type/开灯_下_灯杆@2x.png
  89. BIN
      webConfig/src/img/GIS/lamp_type/开灯_右_灯杆@2x.png
  90. BIN
      webConfig/src/img/GIS/lamp_type/开灯_左_灯杆@2x.png
  91. BIN
      webConfig/src/img/GIS/lamp_type/故障_上_灯杆@2x.png
  92. BIN
      webConfig/src/img/GIS/lamp_type/故障_下_灯杆@2x.png
  93. BIN
      webConfig/src/img/GIS/lamp_type/故障_右_灯杆@2x.png
  94. BIN
      webConfig/src/img/GIS/lamp_type/故障_左_灯杆@2x.png
  95. BIN
      webConfig/src/img/GIS/lamp_type/离线_上_灯杆@2x.png
  96. BIN
      webConfig/src/img/GIS/lamp_type/离线_下_灯杆@2x.png
  97. BIN
      webConfig/src/img/GIS/lamp_type/离线_右_灯杆@2x.png
  98. BIN
      webConfig/src/img/GIS/lamp_type/离线_左_灯杆@2x.png
  99. BIN
      webConfig/src/img/GIS/monitor-icon.png
  100. 0 0
      webConfig/src/img/GIS/network_icon.png

BIN
web/bitbug_favicon.ico


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
web/css/app.cc990596.css


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
web/css/chunk-04b56cd4.419bdf9f.css


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
web/css/chunk-52eac2f9.cda5a6e3.css


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 1
web/css/chunk-58a5ff69.0f906573.css


web/css/chunk-21018f1e.56521cb4.css → web/css/chunk-73401f32.56521cb4.css


BIN
web/favicon.ico


BIN
web/img/Lamp_icon-pre.d6195b13.png


BIN
web/img/lamp_night_fault_0.d90218b9.png


BIN
web/img/lamp_night_fault_1.751fbb7e.png


BIN
web/img/lamp_night_fault_2.2830e61a.png


BIN
web/img/lamp_night_fault_3.a1191db6.png


BIN
web/img/lamp_night_off-line_0.21db4512.png


BIN
web/img/lamp_night_off-line_1.a8f74f10.png


BIN
web/img/lamp_night_off-line_2.b7454f2d.png


BIN
web/img/lamp_night_off-line_3.153555ce.png


BIN
web/img/lamp_night_off_0.bc788eaf.png


BIN
web/img/lamp_night_off_1.88280979.png


BIN
web/img/lamp_night_off_2.b4aad79c.png


BIN
web/img/lamp_night_off_3.d2453d77.png


BIN
web/img/lamp_night_on_0.3dd1851f.png


BIN
web/img/lamp_night_on_1.e6f7b41d.png


BIN
web/img/lamp_night_on_2.7417c8aa.png


BIN
web/img/lamp_night_on_3.21579180.png


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
web/index.html


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 2
web/js/app.1532c2af.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 1
web/js/app.1532c2af.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 2 - 0
web/js/app.e4a39378.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
web/js/app.e4a39378.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 4 - 0
web/js/chunk-04b56cd4.34df97ae.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
web/js/chunk-04b56cd4.34df97ae.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 2
web/js/chunk-21018f1e.ea89af7b.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 1
web/js/chunk-21018f1e.ea89af7b.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 2 - 0
web/js/chunk-52eac2f9.24364304.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
web/js/chunk-52eac2f9.24364304.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 2
web/js/chunk-58a5ff69.a15e0b64.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 1
web/js/chunk-58a5ff69.a15e0b64.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 2 - 0
web/js/chunk-73401f32.001c2cc6.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
web/js/chunk-73401f32.001c2cc6.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 2 - 0
web/js/chunk-f2a89e68.98dc6402.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
web/js/chunk-f2a89e68.98dc6402.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 1
web/js/chunk-vendors.8202404d.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 5 - 5
web/js/chunk-vendors.8202404d.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
web/js/chunk-vendors.897f3683.js.map


BIN
webConfig/public/bitbug_favicon.ico


+ 2 - 1
webConfig/public/index.html

@@ -4,7 +4,7 @@
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
-    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+    <link rel="icon" href="<%= BASE_URL %>bitbug_favicon.ico">
     <link rel="stylesheet" type="text/css" href="https://at.alicdn.com/t/font_1849275_53j289mb29y.css">
     <title>IDCOL</title>
   </head>
@@ -13,6 +13,7 @@
     <script type="text/javascript" src="./bmap.min.js"></script> -->
     <!-- <script type="text/javascript" src="js/echarts.min.js"></script> -->
     <script type="text/javascript" src="js/echarts.js"></script>
+    <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.6&key=192cfd61cc0fbe8c2cf8d5c314f43bb3&plugin=AMap.MarkerClusterer,AMap.ToolBar,AMap.Autocomplete,AMap.PlaceSearch,AMap.Geocoder,AMap.Geolocation"></script>
     <noscript>
       <strong>We're sorry but IDCOL doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
     </noscript>

+ 63 - 1
webConfig/src/App.vue

@@ -16,6 +16,7 @@
 
     import Header from './components/header.vue'
     import { mapGetters } from 'vuex'
+    import allUel  from './api/allUel.js'
 
     export default {
         name: 'App',
@@ -89,7 +90,44 @@
                 this_.$store.commit('UPDATEREMRATIOFUN',{
                     updateRemRatio:this_.updateRemRatio+1,
                 })
-                
+            }
+
+            // var storage = window.localStorage;
+            // var url = window.location.hash.split("?")[1]; //获取url中"?"符后的字串
+            // var theRequest = new Object();
+            var street = window.location.href.split("/")[2];
+            let protocolStr = document.location.protocol;
+            let subStrT = new RegExp('https:');//创建正则表达式对象
+            if(street == 'localhost:8080' || street == '127.0.0.1:8080'){
+                // street = 'newtest.solar-iot.com'
+                street = 'new.solar-iot.com'
+                // street = '10.0.0.123';
+                this.webType = 2;
+                protocolStr = 'http:';
+                // this.webType = 1;
+            }else if(street == 'solar.iotena.com'){
+                street = 'new.solar-iot.com'
+            }else if(street == 'www.gammausa.solar-iot.com'){
+                /*en*/
+                this.webType = 2;
+            }else if(street == 'www.solar.flyingsmart.net'){
+                /*正翔科技*/
+                this.webType = 1;
+            }
+            for(let i in allUel){
+                for(let key in allUel[i]){
+                    if(i == 'websocket'){
+                        allUel[i][key]=allUel[i][key].replace(new RegExp('ws:'),subStrW);
+                    }else{
+                        allUel[i][key]=allUel[i][key].replace(subStrT,protocolStr);
+                    }
+                }
+            }
+            let subStr=new RegExp('newtest.solar-iot.com');//创建正则表达式对象
+            for(let i in allUel){
+                for(let key in allUel[i]){
+                    allUel[i][key]=allUel[i][key].replace(subStr,street);
+                }
             }
         }
     }
@@ -267,4 +305,28 @@
             }
         }
     }
+    /*弹框样式*/
+    .solar_dialig{
+        .el-dialog__header{
+            border-bottom: 1px solid #E8E8E8;
+            span{
+                color: #444444; 
+            }
+        }
+        .el-dialog__headerbtn {
+            top: 13px;
+            font-size: 30px;
+        }
+        .el-dialog__body{
+            .dialog_foot{
+                text-align:center;padding: 60px 0 20px 0;
+                .el-button{
+                    width:320px;
+                    height:60px;
+                    border-radius: 6px;
+                    font-size:16px;
+                }
+            }
+        }
+    }
 </style>

+ 216 - 0
webConfig/src/api/allUel.js

@@ -0,0 +1,216 @@
+const urls={
+    /*首页*/
+    home:{
+        homeData:'http://newtest.solar-iot.com/api/home/data',
+        projectGet:'http://newtest.solar-iot.com/api/device/project/get',
+        companyList:'http://newtest.solar-iot.com/api/home/company_list',
+        homeWeb_info:'http://newtest.solar-iot.com/api/home/web_info',
+        logout:'http://newtest.solar-iot.com/api/home/logout',
+        wss:'wss://newtest.solar-iot.com/wss',
+    },
+    /*策略*/
+    strategy:{
+        save:'http://newtest.solar-iot.com/api/policy/save',
+        getlist:'http://newtest.solar-iot.com/api/policy/getlist',
+        policy_detail:'http://newtest.solar-iot.com/api/policy/policy_detail',
+        del_policy:'http://newtest.solar-iot.com/api/policy/del_policy',
+
+        // nav:'http://newtest.solar-iot.com/api/policy/nav',
+        policy_nav:'http://newtest.solar-iot.com/api/policy/policy_nav',
+        set_policy:'http://newtest.solar-iot.com/api/policy/set_policy',
+
+        sublist:'http://newtest.solar-iot.com/api/policy/sublist',
+        addSubPolicy:'http://newtest.solar-iot.com/api/policy/addSubPolicy',
+        updateSubPolicy:'http://newtest.solar-iot.com/api/policy/updateSubPolicy',
+        delPolicy:'http://newtest.solar-iot.com/api/policy/delPolicy',
+        getPolicyLoadInfo:'http://newtest.solar-iot.com/api/policy/getPolicyLoadInfo',
+        setPolicyLoadInfo:'http://newtest.solar-iot.com/api/policy/setPolicyLoadInfo',
+        getPolicyOutLoadInfo:'http://newtest.solar-iot.com/api/policy/getPolicyOutLoadInfo',
+        setPolicyOutLoadInfo:'http://newtest.solar-iot.com/api/policy/setPolicyOutLoadInfo',
+    },
+    /*项目管理*/
+    device:{
+        getCountry:'http://newtest.solar-iot.com/api/common/get_country',//获取国家列表
+        getProvince:'http://newtest.solar-iot.com/api/common/get_province',//获取省份列表
+        getCity:'http://newtest.solar-iot.com/api/common/get_city',//获取城市列表
+        getArea:'http://newtest.solar-iot.com/api/common/get_area',//获取行政区列表
+        projectGet_pram_data:'http://newtest.solar-iot.com/api/device/project/get_pram_data',
+        projectData:'http://newtest.solar-iot.com/api/device/project/data',
+
+        projectDetail:'http://newtest.solar-iot.com/api/device/project/detail',
+        projectNav:'http://newtest.solar-iot.com/api/device/project/nav',
+        projectSave:'http://newtest.solar-iot.com/api/device/project/save',
+        lampcontrolGet:'http://newtest.solar-iot.com/api/device/lampcontrol/get',/*表格数据*/
+        commonFields:'http://newtest.solar-iot.com/api/home/fields',/*字段管理*/
+        projectDel:'http://newtest.solar-iot.com/api/device/project/del',/*项目删除*/
+        lampcontrolHistorylist:'http://newtest.solar-iot.com/api/device/lampcontrol/historylist',/*灯控历史数据*/
+
+        networkDetail:'http://newtest.solar-iot.com/api/device/network/detail',/*组网详情*/
+        networkSave:'http://newtest.solar-iot.com/api/device/network/save',/*添加组网*/
+        networkDel:'http://newtest.solar-iot.com/api/device/network/del',/*组网删除*/
+
+        lampcontrolSave:'http://newtest.solar-iot.com/api/device/lampcontrol/save',/*添加灯控*/
+        lampcontrolTurnonoff:'http://newtest.solar-iot.com/api/device/lampcontrol/turnonoff',/*灯控开关灯*/
+        lampcontrolDel:'http://newtest.solar-iot.com/api/device/lampcontrol/del',/*灯控删除*/
+        lampcontrolViewloglist:'http://newtest.solar-iot.com/api/device/lampcontrol/viewloglist',/*灯控详情*/
+        lampcontrolUpdate:'http://newtest.solar-iot.com/api/device/lampcontrol/update',/*数据更新*/
+
+        // videoGetlist:'http://newtest.solar-iot.com/api/video/getlist',/*视频监控列表*/
+        // weatherGetlist:'http://newtest.solar-iot.com/api/weather/getlist',/*天气监控列表*/
+        workmode:'http://newtest.solar-iot.com/api/common/workmode',/*路灯负载模式下拉列表*/
+        loadSetting:'http://newtest.solar-iot.com/api/device/lampcontrol/load_setting',/*读取灯控负载设置*/
+        modbusGetLoad:'http://newtest.solar-iot.com/api/device/lampcontrol/modbus_get_load',/*读取新的灯控负载设置*/
+        setLoad:'http://newtest.solar-iot.com/api/device/lampcontrol/set_load',/*路灯负载设置*/
+        modbusSetLoad:'http://newtest.solar-iot.com/api/device/lampcontrol/modbus_set_load',/*新的路灯负载设置*/
+
+        projectSetPramData:'http://newtest.solar-iot.com/api/device/project/set_pram_data',/*路灯项目负载设置*/
+        batterySetting:'http://newtest.solar-iot.com/api/device/lampcontrol/battery_setting',/*读取灯控蓄电池设置*/
+        modbusGetBattery:'http://newtest.solar-iot.com/api/device/lampcontrol/modbus_get_battery',/*读取新的灯控蓄电池设置*/
+
+        setBattery:'http://newtest.solar-iot.com/api/device/lampcontrol/set_battery',/*蓄电池参数设置*/
+        modbusSetBattery:'http://newtest.solar-iot.com/api/device/lampcontrol/modbus_set_battery',/*新的蓄电池参数设置*/
+
+        lampcontrolGetData:'http://newtest.solar-iot.com/api/device/lampcontrol/get_data',/*获取默认参数设置*/
+        modbusGetData:'http://newtest.solar-iot.com/api/device/lampcontrol/modbus_get_data',/*获取新控制器默认参数设置*/
+
+        // provinceList:'http://newtest.solar-iot.com/api/home/province_list',
+        zoneList:'http://newtest.solar-iot.com/api/home/zone_list',
+        timezoneList:'http://newtest.solar-iot.com/api/home/timezone_list',/*时区列表*/
+
+        lampcontrolBatchInput:'http://newtest.solar-iot.com/api/device/lampcontrol/batchInput',
+        excelModel:'http://newtest.solar-iot.com/api//file/ExcelModel/路灯信息模版.xls',
+        excelModelEN:'http://newtest.solar-iot.com/api//file/ExcelModel/lamp_model.xls',
+
+        lampHistoryData:'http://newtest.solar-iot.com/api/device/lampcontrol/lamp_history_data',/*路灯历史数据*/
+        getLampList:'http://newtest.solar-iot.com/api/home/lamp_list',/*获取历史路灯数据列表*/
+
+        upgrade:'http://newtest.solar-iot.com/api/device/project/upgrade',
+    },
+    history:{
+        reportHome:'http://newtest.solar-iot.com/api/report/home',/*历史数据首页数据*/
+        reportData:'http://newtest.solar-iot.com/api/report/data',/*各项报表数据*/
+    },
+    alarm:{
+        setPatrolCmd:'http://newtest.solar-iot.com/api/device/lampcontrol/set_patrol_cmd',
+
+        alarmGet:'http://newtest.solar-iot.com/api/alarm/get',/*告警信息列表*/
+        alarmSet:'http://newtest.solar-iot.com/api/alarm/set',/*更改故障状态*/
+        patrol_list:'http://newtest.solar-iot.com/api/alarm/patrol_list',/*巡检信息列表*/
+
+        repairUser:'http://newtest.solar-iot.com/api/repair/repair_user',/*维修人*/
+        nearRepairList:'http://newtest.solar-iot.com/api/repair/near_repair_list',/*近期维修列表*/
+        repairUserList:'http://newtest.solar-iot.com/api/repair/repair_user_list',/*维修人员列表*/
+        userInfo:'http://newtest.solar-iot.com/api/repair/user_info',/*维修人员详情*/
+        saveRepairUser:'http://newtest.solar-iot.com/api/repair/save_repair_user',/*添加维修人员*/
+        delRepairUser:'http://newtest.solar-iot.com/api/repair/del_repair_user',/*删除维修人员*/
+
+        alarmRepairInfo:'http://newtest.solar-iot.com/api/alarm/repair_info',/*维修信息*/
+        repairList:'http://newtest.solar-iot.com/api/repair/repair_list',/*维修记录列表*/
+        saveRepairInfo:'http://newtest.solar-iot.com/api/repair/save_repair_info',/*添加/编辑维修记录*/
+        repairInfo:'http://newtest.solar-iot.com/api/repair/repair_info',/*维修信息详情*/
+        delRepairInfo:'http://newtest.solar-iot.com/api/repair/del_repair_info',/*删除维修信息*/
+        alarmDel:'http://newtest.solar-iot.com/api/alarm/del',/*删除/清除故障信息*/
+
+        networkGet:'http://newtest.solar-iot.com/api/device/network/get',/*网络下拉列表*/
+        networkSectionList:'http://newtest.solar-iot.com/api/device/network/network_section_list',/*网络路段列表*/
+        lampList:'http://newtest.solar-iot.com/api/home/lamp_list',/*路灯下拉列表*/
+        userList:'http://newtest.solar-iot.com/api/repair/user_list',/*维修人员下拉列表*/
+        alarmTypeList:'http://newtest.solar-iot.com/api/home/alarm_type_list',/*告警状态下拉列表*/
+
+        patrolPost:'http://newtest.solar-iot.com/api/device/project/patrol',/*巡检设置*/
+    },
+    gisMap:{
+        mapGet:'http://newtest.solar-iot.com/api/map/get',/*地图首页数据*/
+        lampInfo:'http://newtest.solar-iot.com/api/map/lamp_info',/*路灯信息*/
+        turnonoff:'http://newtest.solar-iot.com/api/map/turnonoff',
+        projectInfo:'http://newtest.solar-iot.com/api/map/project_info',/*项目信息*/
+        projectListUrl:'http://newtest.solar-iot.com/api/map/project_list',/*项目列表*/
+        monitorInfo:'http://newtest.solar-iot.com/api/map/monitor_info',/*监控信息*/
+        lampcontrolDimming:'http://newtest.solar-iot.com/api/device/lampcontrol/dimming',/*灯控调光*/
+        dataList:'http://newtest.solar-iot.com/api/map/data_list',/*项目信息查看列表*/
+        faultInfo:'http://newtest.solar-iot.com/api/map/fault_info',
+        grouplist:'http://newtest.solar-iot.com/api/policy/grouplist',/*获取分组列表*/
+        policyGroupset:'http://newtest.solar-iot.com/api/policy/groupset',/*分组设置*/
+        policyGroupinfo:'http://newtest.solar-iot.com/api/policy/groupinfo',/*分组详情*/
+        repairDispatch:'http://newtest.solar-iot.com/api/repair/repair_dispatch',/*维修调度*/
+        getProjectCompany:'http://newtest.solar-iot.com/api/device/data/get_project_company',/*获取灯控公司与所属项目*/
+        getLngLat:'http://newtest.solar-iot.com/api/home/get_lng_lat',
+
+        changeLocation:'http://newtest.solar-iot.com/api/device/lampcontrol/change_location',/*改变路灯坐标*/
+        lampList:'http://newtest.solar-iot.com/api/map/lamp_list',/*地图页路灯列表*/
+        videoList:'http://newtest.solar-iot.com/api/map/video_list',/*视屏监控位置获取*/
+
+        dateNav:'http://newtest.solar-iot.com/api/map/date_nav', /*GIS下拉信息*/
+        lampData:'http://newtest.solar-iot.com/api/map/lamp_data', /*路灯信息*/
+        sectionData:'http://newtest.solar-iot.com/api/map/section_data', /*路段信息*/
+        projectData:'http://newtest.solar-iot.com/api/map/project_data', /*项目信息*/
+        section_nav:'http://newtest.solar-iot.com/api/map/section_nav', /*路段下拉列表*/
+        alarmData:'http://newtest.solar-iot.com/api/map/alarm_data', /*故障信息列表*/
+        changeDirection:'http://newtest.solar-iot.com/api/map/change_direction', /*修改路灯地图方向*/
+    },
+    syslog:{
+        getList:'http://newtest.solar-iot.com/api/syslog/get_list',/*日志列表*/
+    },
+    video:{
+        getlist:'http://newtest.solar-iot.com/api/video/getlist',/*视频监控列表*/
+        videoInfo:'http://newtest.solar-iot.com/api/video/video_info',/*视频监控详情*/
+        videoPlay:'http://newtest.solar-iot.com/api/video/video_play',
+        videoUpdate: 'http://newtest.solar-iot.com/api/video/update',
+        /*视频监控添加和修改*/
+        videoDelete: 'http://newtest.solar-iot.com/api/video/del',
+        /*视频监控批量删除*/
+        starVideoControl: 'http://newtest.solar-iot.com/api/video/yun_start',
+        /*视频监控云台控制*/
+        stopVideoControl: 'http://newtest.solar-iot.com/api/video/yun_end',
+        /*视频监控云台控制*/
+    },
+    /*分组策略*/
+    group:{
+        getGrouplist:'http://newtest.solar-iot.com/api/policy/get_grouplist',/*分组列表*/
+        groupinfo:'http://newtest.solar-iot.com/api/policy/groupinfo',/*分组详情*/
+        lampList:'http://newtest.solar-iot.com/api/policy/lamp_list',/*分组设置页添加路灯列表*/
+        groupsave:'http://newtest.solar-iot.com/api/policy/groupsave',/*分组添加/编辑路灯*/
+        groupDel:'http://newtest.solar-iot.com/api/policy/del_group',
+        lampdel:'http://newtest.solar-iot.com/api/policy/lampdel',/*分组灯控删除*/
+
+        getlist:'http://newtest.solar-iot.com/api/policy/getlist',/*策略列表*/
+        policySave:'http://newtest.solar-iot.com/api/policy/save',/*添加/编辑策略*/
+        policyDetail:'http://newtest.solar-iot.com/api/policy/policy_detail',/*策略详情*/
+        delPolicy:'http://newtest.solar-iot.com/api/policy/del_policy',/*策略删除*/
+    },
+    /*个人中心*/
+    user:{
+        userInfo:'http://newtest.solar-iot.com/api/user/info',/*用户信息*/
+        updateUserInfo:'http://newtest.solar-iot.com/api/user/update_user_info',/*编辑用户信息*/
+        userPassword:'http://newtest.solar-iot.com/api/user/password',/*修改密码*/
+        userCompanyList:'http://newtest.solar-iot.com/api/user/company_list',/*公司列表*/
+        subList:'http://newtest.solar-iot.com/api/user/sub_list',/*公司子账户列表*/
+        zoneList:'http://newtest.solar-iot.com/api/user/zone_list',/*区域列表*/
+        privilegeList:'http://newtest.solar-iot.com/api/user/privilege_list',/*权限列表*/
+        saveUserPrivilege:'http://newtest.solar-iot.com/api/user/save_user_privilege',/*修改用户权限*/
+        userUpdate:'http://newtest.solar-iot.com/api/user/user_update',/*添加/编辑账户*/
+        feedback:'http://newtest.solar-iot.com/api/user/feedback',/*用户反馈*/
+        about:'http://newtest.solar-iot.com/api/user/about',/*关于我们*/
+        userUser_info:'http://newtest.solar-iot.com/api/user/user_info',/*账户详情*/
+        saveZone:'http://newtest.solar-iot.com/api/user/save_zone',/*添加/编辑区域*/
+        getZoneList:'http://newtest.solar-iot.com/api/user/get_zone_list',/*添加区域下拉*/
+        getPorjectList:'http://newtest.solar-iot.com/api/user/get_porject_list',/*项目权限列表*/
+        saveUserProject:'http://newtest.solar-iot.com/api/user/save_user_project',/*修改项目权限*/
+        companySave:'http://newtest.solar-iot.com/api/company/save',/*添加/编辑公司*/
+        companyDel:'http://newtest.solar-iot.com/api/company/del',/*公司删除*/
+        companyInfo:'http://newtest.solar-iot.com/api/company/info',/*获取公司详情*/
+        blockUser:'http://newtest.solar-iot.com/api/user/block_user',/*修改账户状态*/
+        delZone:'http://newtest.solar-iot.com/api/user/del_zone',/*删除区域*/
+        addWebLogo:'http://newtest.solar-iot.com/api/user/add_web_logo',/*上传用户网页定制logo*/
+    },
+    /*天气监控*/
+    weather:{
+        getList:'http://newtest.solar-iot.com/api/weather/getlist',/*首页数据*/
+        update:'http://newtest.solar-iot.com/api/weather/update',/*添加或编辑监控*/
+        info:'http://newtest.solar-iot.com/api/weather/info',/*监控详情*/
+        del:'http://newtest.solar-iot.com/api/weather/del',/*监控删除*/
+        dataList:'http://newtest.solar-iot.com/api/weather/data_list',/*环境监控数据报表*/
+        dataCom:'http://newtest.solar-iot.com/api/weather/data_com',/*数据对比*/
+    }
+}
+export default urls

+ 428 - 122
webConfig/src/api/base.js

@@ -1,162 +1,468 @@
 import axios from 'axios'
-export default {
-    websocket: (url, callback,) => {
+export default{
+    websocket:(url,callback)=>{
+
+        // let isTrue = true;
+        let websocket=null
+        if ("WebSocket" in window) {
+            // websocket = new WebSocket("ws://"+url);
+            websocket = new WebSocket(url);
+        }
+        else if ("MozWebSocket" in window) {
+            // websocket = new WebSocket("ws://"+url);
+            websocket = new WebSocket(url);
+        }
+        else {
+            // console.error("'不支持 WebSocKet");
+        }
+        //连接发生错误的回调方法
+        websocket.onerror = () => {
+            onerror();
+        }
+        //接收到消息的回调方法
+        websocket.onopen = () => {
+            //接收到消息的回调方法
+
+            websocket.onmessage = event => {
+                if(callback){
+                    if(event.data){
+                        try{
+                            callback(event.data,websocket);
+                        }catch(e){
+                            console.log(e)
+                        }
+                    }else{
+                        callback()
+                    }
+                }
+            };
+            //连接关闭的回调方法
+            // websocket.onclose = () => console.log("close");
+            //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
+            window.onbeforeunload = () => websocket.close();
+            //return websocket;
+        };
+        function onerror(){
+            setTimeout(function(){
+                websocket = null
+                if ("WebSocket" in window) {
+                    websocket = new WebSocket(url);
+                } else if ("MozWebSocket" in window) {
+                    websocket = new WebSocket(url);
+                }
+                websocket.onerror = () => {
+                    onerror();
+                }
+                //接收到消息的回调方法
+                websocket.onopen = () => {
+                    //接收到消息的回调方法
+                    websocket.onmessage = event => {
+                        if (callback) {
+                            if (event.data) {
+                                // console.log(event.data,'==============')
+                                try {
+                                    // console.log(event.data)
+                                    let data = JSON.parse(event.data)
+                                    console.log(data,'=------------')
+                                    if (data.status == '0000') {
+                                        callback(data,websocket);
+                                    } else {
+                                    console.log(data,'=------------')
+                                        if (error) {
+                                            error(data)
+                                        }
+                                        if (this_.version == 1) {
+                                            this_.$alert(data.msg, 'System hints', {
+                                                confirmButtonText: 'Confirm',
+                                            });
+                                        } else {
+                                            this_.$alert(data.msg, '系统提示', {
+                                                confirmButtonText: '确认',
+                                            });
+                                        }
+                                    }
+                                    // let res = JSON.parse(event.data)
+                                    if (data.data.status == 2) {
+                                        // websocket.close();
+                                        // console.log('websocket链接关闭')
+                                    }
+                                } catch (e) {
+                                    console.log(e);
+                                }
+                            } else {
+                                callback()
+                            }
+                        }
+                    };
+                    //连接关闭的回调方法
+                    // websocket.onclose = () => console.log("close");
+                    //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
+                    window.onbeforeunload = () => websocket.close();
+                    //return websocket;
+                };
+            },1000)
+            console.log("error");
+        }
+
+        return websocket;
+    },
+    websocket1: (url, callback, error, this_) => {
+        console.log(url)
+        // let isTrue = true;
+        url = window.location.protocol == 'https:' ? url.replace('wss','wss') : url.replace('wss','ws');
         let websocket = null
-        // console.log(this_)
         if ("WebSocket" in window) {
+            // websocket = new WebSocket("ws://"+url);
             websocket = new WebSocket(url);
         } else if ("MozWebSocket" in window) {
+            // websocket = new WebSocket("ws://"+url);
             websocket = new WebSocket(url);
         } else {
             // console.error("'不支持 WebSocKet");
         }
         //连接发生错误的回调方法
-        websocket.onerror = event => {
-            console.log(event)
-            websocket = null
-            if ("WebSocket" in window) {
-                websocket = new WebSocket(url);
-            } else if ("MozWebSocket" in window) {
-                websocket = new WebSocket(url);
-            }
-            if(websocket){
-                websocketOnopen(websocket)
-            }
-            console.log("error");
+        websocket.onerror = () => {
+            onerror();
         }
         //接收到消息的回调方法
-        websocketOnopen(websocket)
-        function websocketOnopen(websocket) {
-            websocket.onopen = () => {
-                // console.log(event,error)
-                callback(websocket)
-                //接收到消息的回调方法
-                // websocket.onmessage = event => {
-                //     if (callback) {
-                //         if (event.data) {
-                //             try {
-                //                 let data = JSON.parse(event.data)
-                //                 if (data.code == '0000') {
-                //                     callback(data,websocket);
-                //                 } else {
-                //                     if (error) {
-                //                         error(data)
-                //                     }
-                //                     this_.$alert(data.msg, this_.$t('App.message.text1'), {
-                //                         confirmButtonText: this_.$t('App.message.text2'),
-                //                     });
-                //                 }
-                //                 if (data.data.status == 2) {
-                //                     websocket.close();
-                //                 }
-                //             } catch (e) {
-                //                 console.log()
-                //             }
-                //         } else {
-                //             callback()
-                //         }
-                //     }
-                // };
-                //连接关闭的回调方法
-                // websocket.onclose = () => console.log("close");
-                //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
-                window.onbeforeunload = () => websocket.close();
-                //return websocket;
+        websocket.onopen = () => {
+            //接收到消息的回调方法
+            websocket.onmessage = event => {
+                if (callback) {
+                    if (event.data) {
+                        // console.log(event.data,'==============')
+                        try {
+                            // console.log(event.data)
+                            let data = JSON.parse(event.data)
+                            console.log(data,'=------------')
+                            if (data.status == '0000') {
+                                callback(data,websocket);
+                            } else {
+                            console.log(data,'=------------')
+                                if (error) {
+                                    error(data)
+                                }
+                                if (this_.version == 1) {
+                                    this_.$alert(data.msg, 'System hints', {
+                                        confirmButtonText: 'Confirm',
+                                    });
+                                } else {
+                                    this_.$alert(data.msg, '系统提示', {
+                                        confirmButtonText: '确认',
+                                    });
+                                }
+                            }
+                            // let res = JSON.parse(event.data)
+                            if (data.data.status == 2) {
+                                // websocket.close();
+                                // console.log('websocket链接关闭')
+                            }
+                        } catch (e) {
+                            console.log(e)
+                        }
+                    } else {
+                        callback()
+                    }
+                }
             };
+            //连接关闭的回调方法
+            // websocket.onclose = () => console.log("close");
+            //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
+            window.onbeforeunload = () => websocket.close();
+            //return websocket;
+        };
+        function onerror(){
+            setTimeout(function(){
+                websocket = null
+                if ("WebSocket" in window) {
+                    websocket = new WebSocket(url);
+                } else if ("MozWebSocket" in window) {
+                    websocket = new WebSocket(url);
+                } 
+                websocket.onerror = () => {
+                    onerror();
+                }
+                //接收到消息的回调方法
+                websocket.onopen = () => {
+                    //接收到消息的回调方法
+                    websocket.onmessage = event => {
+                        if (callback) {
+                            if (event.data) {
+                                // console.log(event.data,'==============')
+                                try {
+                                    // console.log(event.data)
+                                    let data = JSON.parse(event.data)
+                                    console.log(data,'=------------')
+                                    if (data.status == '0000') {
+                                        callback(data,websocket);
+                                    } else {
+                                    console.log(data,'=------------')
+                                        if (error) {
+                                            error(data)
+                                        }
+                                        if (this_.version == 1) {
+                                            this_.$alert(data.msg, 'System hints', {
+                                                confirmButtonText: 'Confirm',
+                                            });
+                                        } else {
+                                            this_.$alert(data.msg, '系统提示', {
+                                                confirmButtonText: '确认',
+                                            });
+                                        }
+                                    }
+                                    // let res = JSON.parse(event.data)
+                                    if (data.data.status == 2) {
+                                        // websocket.close();
+                                        // console.log('websocket链接关闭')
+                                    }
+                                } catch (e) {
+                                    console.log(e)
+                                }
+                            } else {
+                                callback()
+                            }
+                        }
+                    };
+                    //连接关闭的回调方法
+                    // websocket.onclose = () => console.log("close");
+                    //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
+                    window.onbeforeunload = () => websocket.close();
+                    //return websocket;
+                };
+            },1000)
+            console.log("error");
         }
 
         return websocket;
     },
-
-    ajax_get: (url, param, callback, this_) => {
-        axios.get(url, { params: param }).then(res => {
-            let data = res.data
-            if (data.result) {
-                if (callback) {
-                    if (data.model && JSON.stringify(data.model).length > 2) {
-                        try {
+    ajax_get:(url,param,callback,this_) => {
+        // console.log(url)
+        // console.log(param)
+        param = Object.assign({
+          version:this_.version,
+        }, param);
+        axios.get( url, { params:param }).then(res => {
+            let data= res.data
+            data = Object.assign({
+              version:this_.version,
+            }, data);
+            if(data.result){
+                if(callback){
+                    if(data.model&&JSON.stringify(data.model).length>2){
+                        try{
+                            // console.log(data.model)
                             callback(data.model)
-                        } catch (e) {
+                        }catch(e){
                             // console.log('异常了')
                             // console.log(e)
                         }
-                    } else {
+                    }else{
                         callback(data.model)
                     }
                 }
 
-            } else {
-                this_.$alert(data.message, this_.$t('App.message.text26'));
+            }else{
+                this_.$alert(data.message,'系统提示');
             }
         })
     },
-    ajax_post: (url, data, param, callback, this_, error, error_t) => {
+    ajax_post: (url,data,param,callback,this_,error,error_t) => {
         let qs = require('qs')
-        data.version = this_.version;
-        data.os = '0';
-        axios.post(url, qs.stringify(data), { params: param }).then(res => {
-            let data = res.data
-            if (data.code == '0000') {
-                if (callback) {
-                    callback(data, this_)
-                }
-            } else if (data.code == '0001' || data.code == '0002' || data.code == '0003' || data.code == '0004' || data.code == '0102') {
-                if (error) {
-                    error(data, this_)
-                }
-                this_.$alert(data.msg, this_.$t('App.message.text1'), {
-                    confirmButtonText: this_.$t('App.message.text2'),
-                });
-                this_.$store.commit('ROUTERSTRFUN',{
-                  routerStr:'/login',
-                })
-                var oDate = new Date();
-                oDate.setTime(oDate.getTime() + ('' * 24 * 60 * 60 * 1000));
-                oDate = oDate.toUTCString()
-                document.cookie = 'userData' + '=' + '' + ';expires=' + oDate;
-                this_.$router.push({path:'/login'})
-
-                // if(this_.websocket){
-                //   this_.websocket.close();
-                // }
-            } else {
-                if (error) {
-                    error(data, this_)
-                }
-                if (!error_t) {
-                    this_.$alert(data.msg, this_.$t('App.message.text1'), {
-                        confirmButtonText: this_.$t('App.message.text2'),
-                    });
+        data = Object.assign({
+          version:this_.version,
+        }, data);
+        // console.log(url,data,param)
+        // console.log(qs.stringify(data))
+        axios.post( url,qs.stringify(data), { params:param }).then(res => {
+            let data= res.data
+            // console.log(data)
+            if(data.status == '0000'){
+                if(callback){
+                    callback(data,this_)
+                }
+            }else{
+                if(error){
+                    error(data,this_)
+                }
+                if(!error_t){
+                    var url_tt = window.location.href.split("/")[2];
+                    if(url_tt == 'localhost:8081'){
+                        url_tt = 'newtest.solar-iot.com';
+                        // url_tt = '10.0.0.123/solar';
+                    }
+                    if(url !='http://'+url_tt+'/api/device/lampcontrol/turnonoff' 
+                        && url !='http://'+url_tt+'/api/device/lampcontrol/load_setting'
+                        && url !='http://'+url_tt+'/api/device/lampcontrol/set_load'
+                        && url !='http://'+url_tt+'/api/device/lampcontrol/battery_setting'
+                        && url !='http://'+url_tt+'/api/device/lampcontrol/set_battery'){
+                        if(data.status == '0001' || data.status == '0002' || data.status == '0003' || data.status == '0004' || data.status == '0102'){
+                            var storage = window.localStorage;
+                            storage.setItem('UserInformation','false');
+                            storage.setItem('loginState','false');
+                            window.location.href="login.html";
+                        }
+                        if(this_.version == 1){
+                            this_.$alert(data.msg, 'System hints', {
+                              confirmButtonText: 'Confirm',
+                            });
+                        }else{
+                            this_.$alert(data.msg, '系统提示', {
+                              confirmButtonText: '确定',
+                            });
+                        }
+                    }
+                }
+            }
+        })
+    },
+    /*version 初始值*/
+    ajax_post3: (url,data,param,callback,this_,error,error_t) => {
+        let qs = require('qs')
+        // console.log(url,data,param)
+        // console.log(qs.stringify(data))
+        data = Object.assign({
+          version:this_.version,
+        }, data);
+        axios.post( url,qs.stringify(data), { params:param }).then(res => {
+            let data= res.data
+            // console.log(data)
+            if(data.status == '0000'){
+                if(callback){
+                    callback(data,this_)
+                }
+            }else{
+                if(error){
+                    error(data,this_)
+                }
+                if(!error_t){
+                    var url_tt = window.location.href.split("/")[2];
+                    if(url_tt == 'localhost:8081'){
+                        url_tt = 'newtest.solar-iot.com';
+                        // url_tt = '10.0.0.123/solar';
+                    }
+                    if(url !='http://'+url_tt+'/api/device/lampcontrol/turnonoff' 
+                        && url !='http://'+url_tt+'/api/device/lampcontrol/load_setting'
+                        && url !='http://'+url_tt+'/api/device/lampcontrol/set_load'
+                        && url !='http://'+url_tt+'/api/device/lampcontrol/battery_setting'
+                        && url !='http://'+url_tt+'/api/device/lampcontrol/set_battery'){
+                        if(data.status == '0001' || data.status == '0002' || data.status == '0003' || data.status == '0004' || data.status == '0102'){
+                            var storage = window.localStorage;
+                            storage.setItem('UserInformation','false');
+                            storage.setItem('loginState','false');
+                            window.location.href="login.html";
+                        }
+                        if(this_.version == 1){
+                            this_.$alert(data.msg, 'System hints', {
+                              confirmButtonText: 'Confirm',
+                            });
+                        }else{
+                            this_.$alert(data.msg, '系统提示', {
+                              confirmButtonText: '确定',
+                            });
+                        }
+                    }
+                }
+            }
+        })
+    },
+    ajax_post2: (url,data,param,callback,this_) => {
+        let qs = require('qs')
+        data = Object.assign({
+          version:this_.version,
+        }, data);
+        // console.log(url)
+        // console.log(data)
+        // console.log(param)
+        // console.log(qs.stringify(data))
+        axios.post( url,qs.stringify(data), { params:param }).then(res => {
+            let data= res.data
+            if(data.result){
+                if(callback){
+                    if(data.model&&JSON.stringify(data.model).length>2){
+                        try{
+                            // callback(JSON.parse(data.message,this_))
+                            // console.log(data)
+                            callback(data)
+                        }catch(e){
+                            // console.log('异常了')
+                            // console.log(e)
+                        }
+                    }else{
+                        callback(data.message,this_)
+                    }
                 }
+            }else{
+                this_.$alert(data.message,'系统提示');
             }
         })
     },
-    ajax_postWs: (url, data, this_,) => {
+    ajax_postAction: (url,data,param,callback,this_) => {
         let qs = require('qs')
-        data.version = this_.version;
-        data.os = '0';
-        axios.post(url, qs.stringify(data)).then(() => {})
+        data = Object.assign({
+          version:this_.version,
+        }, data);
+        axios.post( url,qs.stringify(data), { params:param }).then(res => {
+            let data= res.data
+            if(data.result){
+                try{
+                    callback(data.message)
+                }catch(e){
+                    // console.log('异常了');
+                    // console.log(e)
+                }
+            }else{
+                this_.$alert(data.message,'系统提示');
+            }
+        })
+    },
+    ajax_post1: (url,data,param,callback,this_) => {
+        // console.log(url)
+        // console.log(data)
+        // console.log(param)
+        data = Object.assign({
+          version:this_.version,
+        }, data);
+        axios.post( url,data, { params:param }).then(res => {
+            let data= res.data
+            if(data.result){
+                if(callback){
+                    if(data.model&&JSON.stringify(data.model).length>2){
+                        try{
+                            // callback(JSON.parse(data.message,this_))
+                            // console.log(data.model)
+                            callback(data.model)
+                        }catch(e){
+                            // console.log('异常了')
+                            // console.log(e)
+                        }
+                    }else{
+                        callback(data.message,this_)
+                    }
+                }
+            }else{
+                this_.$alert(data.message,'系统提示');
+            }
+        })
     },
 
-    setCookie: (key, value, iDay) => {
-        var oDate = new Date();
-        oDate.setTime(oDate.getTime() + (iDay * 24 * 60 * 60 * 1000));
-        oDate = oDate.toUTCString();
-        // document.cookie = key + '=' + value;
-        // console.log(key + '=' + value + ';expires=' + oDate)
-        document.cookie = key + '=' + value + ';expires=' + oDate;
+    ajax_post_ws: (url, data,this_) => {
+        let qs = require('qs')
+        data = Object.assign({
+          version:this_.version,
+        }, data);
+        axios.post(url, qs.stringify(data), { params: {} }).then(res => {console.log(res)})
     },
-    // removeCookie: (key) => {
-    //     setCookie(key, '', -1); //这里只需要把Cookie保质期退回一天便可以删除
-    // },
-    getCookie: (key) => {
-        var cookieArr = document.cookie.split('; ');
-        for (var i = 0; i < cookieArr.length; i++) {
-            var arr = cookieArr[i].split('=');
-            if (arr[0] === key) {
-                return arr[1];
+    ajax_weather:(url,param,callback,this_) =>{
+        axios.get( url, { params:param }).then(res => {
+            let data= res.data
+            console.log(data,'----------')
+            if(data.HeWeather6[0].status == 'ok'){
+                if(callback){
+                    callback(data.HeWeather6[0])
+                }
+            }else{
+                this_.$alert('获取天气信息失败','系统提示');
             }
-        }
-        return false;
+        })
     }
 }

+ 244 - 0
webConfig/src/components/sideBar.vue

@@ -0,0 +1,244 @@
+<template>
+    <div class="sideBar_box_low">
+        <div class="sideBar_bg" v-if="sideBarType=='on'" @click="click3()"></div>
+        <div class="sideBar">
+            <div style="line-height:60px;cursor: pointer;" v-if="sideBarType=='on'">
+                <el-input class="screen screenEN" v-model="screen" @change="screenChange" :placeholder="version
+                ==0?'输入关键字按下回车键搜索':'Input key press return key search'" clearable>
+                    <i slot="prefix" class="scree-icon el-icon-search" @click="userCompanyList"></i>
+                    <el-select v-model="searchType" @change="searchTypeChange" slot="append" placeholder="请选择" class="search_type">
+                        <el-option :label="version == 0?'项目':'project'" value="1"></el-option>
+                        <el-option :label="version == 0?'公司':'company'" value="0"></el-option>
+                    </el-select>
+                </el-input>
+            </div>
+            <div class="sideBar_box scroll_show">
+                <div class="sideBar_list" v-if="projectAll">
+                    <p @click="click4()" style="padding-bottom: 0px;" :class="{'sideBar_project_select':projectId == 0}">{{version == 0?'全部项目':'All projects'}}</p>
+                </div>
+                <div class="sideBar_list" v-for="(obj,index) in sideBarList">
+                    <p @click="click1(obj)">
+                        <i class="dian"></i>
+                        <span class="company_name" :class="{'company_name_EN':version ==1}" :title="obj.name">{{obj.name}}</span>
+                        <!-- <i class="el-icon-caret-top" :style="{'transform':(obj.type == '收起' || obj.type == 'Collapse')?'rotate(180deg)':''}"></i> -->
+                        <span>{{obj.type}}</span>
+                    </p>
+                    <div v-if="obj.type == '收起' || obj.type == 'Collapse'">
+                        <div :class="{'sideBar_project_select':projectId==item.id&&projectId}" v-for="(item,index) in obj.project_list" @click="click2(item)">
+                            <span :title="item.projectname" :id="'sideBar_projectId_'+item.id">- {{item.projectname}}</span>
+                        </div>
+                    </div>
+                </div>
+                <p v-if="sideBarList.length == 0 && version == 0" style="text-align: center;font-size: 16px;font-family: PingFangSC-Medium;color: #666666;margin-top: 20px;">无相关项目,请重新输入关键字</p>
+                <p v-if="sideBarList.length == 0 && version == 1" style="text-align: center;font-size: 16px;font-family: PingFangSC-Medium;color: #666666;margin-top: 20px;">No related items, please re-enter keywords</p>
+            </div>
+            <div class="sideBar_button" @click="click3()" :class="{'is_disabled':reportType && reportType != 'table'&&sideBarType=='off'}">
+                <img src="../img/projectManagement/sideBarButton.png" height="56" width="34">
+            </div>
+        </div>
+    </div>
+</template>
+
+<script type="text/javascript">
+    import { mapGetters, mapActions } from 'vuex'
+    export default{
+        data(){
+            return{
+                scroll_time:null,
+                screen:'',
+                searchType:'1',
+            }
+        },
+        props:['sideBarList','projectId','sideBarListIsOpen','projectSelectFun','sideBarIsOn','sideBarType','reportType','sideBarCompanyList','projectAll'],
+        computed:{
+            ...mapGetters({
+                version:'version',
+          })
+        },
+        mounted(){
+
+        },
+        methods:{
+             /*侧边栏打开关闭*/
+            click1(data){
+                this.sideBarListIsOpen(data)
+            },
+            /*侧边栏里展开收起*/
+            click2(data){
+                this.projectSelectFun(data)
+            },
+            click3(){
+                this.sideBarIsOn()
+                fun(this.version)
+                function fun(version){
+                    if($(".screenEN").length != 0){
+                        if(version == 0){
+                            $(".screenEN input").attr('placeholder','输入关键字按下回车键搜索');
+                        }else{
+                            $(".screenEN input").attr('placeholder','Enter keywords Search by Enter');
+                        }
+                    }else{
+                        setTimeout(function(){
+                            fun(version)
+                        },100)
+                    }
+                }
+            },
+            click4(){
+                this.projectAll();
+            },
+            searchTypeChange(){
+                // this.screen = '';
+                this.sideBarCompanyList(this.screen,this.searchType);
+            },
+            screenChange(val){
+                this.sideBarCompanyList(val,this.searchType);
+            },
+            userCompanyList(val){
+                this.sideBarCompanyList(this.screen,this.searchType);
+            },
+        },
+         watch:{
+            sideBarType(curVal,oldVal){
+                let this_ = this;
+                if(curVal == 'on' && this.projectId != 0){
+                    $('.sideBar .sideBar_box').animate({scrollTop: $('#sideBar_projectId_'+this_.projectId).offset().top - 250 + $('.sideBar .sideBar_box').scrollTop()})
+                }
+            }
+        }
+    }
+</script>
+<style type="text/css" lang="less">
+    .sideBar_box_low{
+        .sideBar_bg{
+            background: #000;
+            opacity: 0.1;
+            position: absolute;
+            width: 100%;height: 100%;
+            z-index: 100;
+        }
+        .sideBar {
+            position: absolute;
+            width:0px;
+            // height:988px;
+            height: 100%;
+            background:#FFFFFF;
+            z-index: 100;
+            .screen{
+                .el-input__inner{
+                    border-left: 0px;
+                    border-right: 0px;
+                    height: 60px;line-height:60px;border-radius: 0px;
+                }
+            }
+            .el-input--prefix .el-input__inner{
+                padding-left: 40px;
+            }
+            .scree-icon{
+                position: relative;
+                top: 13px;
+                left: -6px;
+                display: inline-block;
+                width: 40px;height: 40px;
+                font-size: 30px;
+                // background:url(../img/userManagement/screen.png) no-repeat center;
+            }
+            .el-input-group__append{
+                padding:0 19px;
+            }
+            .search_type{
+                width: 70px;
+                .el-input__inner{
+                    padding:0px 10px 0 10px;
+                    height: 58px;line-height:58px;
+                }
+            }
+            .sideBar_box{
+                width: 100%;
+                height: calc(100% - 85px);
+                padding-bottom: 20px;
+                overflow: auto;
+                .sideBar_list{
+                    width: 290px;
+                    p{
+                        position: relative;
+                        padding: 20px 0 20px 32px;
+                        height:25px; 
+                        font-size:18px;
+                        font-family:PingFangSC-Medium;
+                        color:#444444;
+                        line-height:25px;
+                        cursor: pointer;
+                        
+                        .dian{
+                            position: absolute;
+                            top: 27px;
+                            left: 12px;
+                            display: inline-block;
+                            width:10px;
+                            height:10px; 
+                            background:#FC8440;
+                            border-radius: 4px ;
+                        }
+                        .company_name{
+                            display: inline-block;
+                            width: calc(100% - 58px);
+                            white-space: nowrap;
+                            overflow: hidden;
+                            text-overflow: ellipsis;
+                        }
+                        .company_name_EN{
+                            width: calc(100% - 90px);
+                        }
+                        >:last-child{
+                            display: inline-block;
+                            float: right;
+                            margin-right: 24px;
+                            height: 22px;
+                            font-size: 16px;
+                            font-family: PingFangSC-Regular;
+                            color: #666;
+                            line-height: 22px;
+                            text-decoration: underline;
+                        }
+                    }
+                    .sideBar_project_select{
+                        color:#FC8440; 
+                    }
+                    >div{
+                        margin: 0 22px 0 30px;
+                        padding: 0 25px;
+                        background:rgba(241,241,241,1);
+                        border-radius: 4px ;
+                        div{
+                            padding:18px 0 18px 30px;
+                            height:22px; 
+                            font-size:16px;
+                            font-family:PingFangSC-Medium;
+                            color:rgba(68,68,68,1);
+                            line-height:22px;
+                            cursor: pointer;
+                            border-bottom: 1px solid #DBDBDB;
+                            white-space: nowrap;
+                            overflow: hidden;
+                            text-overflow: ellipsis;
+                        }
+                        div:last-child{
+                            border-bottom: 0px;
+                        }
+                        .sideBar_project_select{
+                            color:#FC8440; 
+                        }
+                    }
+                }
+            }
+            .sideBar_button{
+                position: absolute;
+                height: 56px;
+                top: 30px;
+                right: -34px;
+                cursor: pointer;
+            }
+        }
+    }
+</style>

+ 316 - 0
webConfig/src/components/sideBarNew.vue

@@ -0,0 +1,316 @@
+<template>
+    <div class="sideBar_box_new">
+        <div class="sideBar_bg" v-if="sideBarType=='on'" @click="click3()"></div>
+        <div class="sideBar">
+            <div style="line-height:60px;cursor: pointer;" v-if="sideBarType=='on'">
+                <el-input class="screen screenEN" v-model="screen" @change="screenChange" :placeholder="version
+                ==0?'输入关键字按下回车键搜索':'Input key press return key search'" clearable>
+                    <i slot="prefix" class="scree-icon el-icon-search" @click="userCompanyList"></i>
+                    <el-select v-model="searchType" @change="searchTypeChange" slot="append" placeholder="请选择" class="search_type">
+                        <el-option :label="version == 0?'项目':'project'" value="1"></el-option>
+                        <el-option :label="version == 0?'公司':'company'" value="0"></el-option>
+                    </el-select>
+                </el-input>
+            </div>
+            <div class="sideBar_box scroll_show">
+                <div class="sideBar_list" v-if="projectAll">
+                    <p @click="click4()" style="padding-bottom: 0px;" :class="{'sideBar_project_select':projectId == 0}">{{version == 0?'全部项目':'All projects'}}</p>
+                </div>
+                <div class="sideBar_list" v-for="obj in sideBarList" :key="obj.id">
+                    <p @click="click1(obj)">
+                        <i class="dian"></i>
+                        <span class="company_name" :class="{'company_name_EN':version ==1}" :title="obj.name">{{obj.name}}</span>
+                        <i class="el-icon-caret-top" :style="{'transform':(obj.type == '收起' || obj.type == 'Collapse')?'rotate(180deg)':''}"></i>
+                    </p>
+                    <div v-if="obj.type == '收起' || obj.type == 'Collapse'" class="sideBar_project_box">
+                        <div v-for="item in obj.project_list"  :key="item.id" @click="click2(item,obj.project_list)" class="sideBar_project">
+                            <div class="sideBar_project_text" :class="{'sideBar_project_select':projectId==item.id&&projectId}">
+                                <i class="dian"></i>
+                                <span :title="item.projectname" :id="'sideBar_projectId_'+item.id">{{item.projectname}} ({{item.lampcount}})</span>
+                                <i class="el-icon-caret-top xiabiao" :style="{'transform':item.isOpen?'rotate(180deg)':''}"></i>
+                            </div>
+                            <template v-if="item.isOpen">
+                                <div v-for="d in item.roadList" :key="d.id" class="sideBar_road_text" :class="{'sideBar_road_select':roadId==d.value&&roadId}" @click.stop="click5(d,item,obj)">
+                                    <span>{{d.name}} ({{d.lampcount}})</span>
+                                </div>
+                            </template>
+                        </div>
+                    </div>
+                </div>
+                <p v-if="sideBarList.length == 0 && version == 0" style="text-align: center;font-size: 16px;font-family: PingFangSC-Medium;color: #666666;margin-top: 20px;">无相关项目,请重新输入关键字</p>
+                <p v-if="sideBarList.length == 0 && version == 1" style="text-align: center;font-size: 16px;font-family: PingFangSC-Medium;color: #666666;margin-top: 20px;">No related items, please re-enter keywords</p>
+            </div>
+            <div class="sideBar_button" @click="click3()" :class="{'is_disabled':reportType && reportType != 'table'&&sideBarType=='off'}">
+                <img src="../img/projectManagement/sideBarButton.png" height="56" width="34">
+            </div>
+        </div>
+    </div>
+</template>
+
+<script type="text/javascript">
+    import { mapGetters } from 'vuex'
+    export default{
+        data(){
+            return{
+                scroll_time:null,
+                screen:'',
+                searchType:'1',
+            }
+        },
+        props:['sideBarList','projectId','roadId','sideBarListIsOpen','projectSelectFun','roadSelectFun','sideBarIsOn','sideBarType','reportType','sideBarCompanyList','projectAll'],
+        computed:{
+            ...mapGetters({
+                version:'version',
+          })
+        },
+        mounted(){
+        },
+        methods:{
+             /*侧边栏打开关闭*/
+            click1(data){
+                this.sideBarListIsOpen(data)
+            },
+            /*侧边栏里展开收起*/
+            click2(data,list){
+                // console.log(this.sideBarList,'-===-=')
+                this.projectSelectFun(data,list)
+            },
+            click3(){
+                this.sideBarIsOn()
+                fun(this.version)
+                function fun(version){
+                    if($(".screenEN").length != 0){
+                        if(version == 0){
+                            $(".screenEN input").attr('placeholder','输入关键字按下回车键搜索');
+                        }else{
+                            $(".screenEN input").attr('placeholder','Enter keywords Search by Enter');
+                        }
+                    }else{
+                        setTimeout(function(){
+                            fun(version)
+                        },100)
+                    }
+                }
+            },
+            click4(){
+                this.projectAll();
+            },
+            click5(data,obj,d){
+                console.log(data,obj,d,'--------------------')
+                this.roadSelectFun(data,obj,d)
+            },
+            searchTypeChange(){
+                // this.screen = '';
+                this.sideBarCompanyList(this.screen,this.searchType);
+            },
+            screenChange(val){
+                this.sideBarCompanyList(val,this.searchType);
+            },
+            userCompanyList(){
+                this.sideBarCompanyList(this.screen,this.searchType);
+            },
+        },
+         watch:{
+            sideBarType(curVal){
+                let this_ = this;
+                if(curVal == 'on' && this.projectId != 0){
+                    if($('.sideBar_project_box .sideBar_road_select').offset()){
+                        $('.sideBar .sideBar_box').animate({scrollTop: $('.sideBar_project_box .sideBar_road_select').offset().top - 250 + $('.sideBar .sideBar_box').scrollTop()})
+                    }else{
+                        $('.sideBar .sideBar_box').animate({scrollTop: $('#sideBar_projectId_'+this_.projectId).offset().top - 250 + $('.sideBar .sideBar_box').scrollTop()})
+                    }
+                }
+            }
+        }
+    }
+</script>
+<style type="text/css" lang="less">
+    .sideBar_box_new{
+        .sideBar_bg{
+            background: #000;
+            opacity: 0.1;
+            position: absolute;
+            width: 100%;height: 100%;
+            z-index: 100;
+        }
+        .sideBar {
+            position: absolute;
+            width:0px;
+            // height:988px;
+            height: 100%;
+            background:#FFFFFF;
+            z-index: 100;
+            .screen{
+                .el-input__inner{
+                    border-left: 0px;
+                    border-right: 0px;
+                    height: 60px;line-height:60px;border-radius: 0px;
+                }
+            }
+            .el-input--prefix .el-input__inner{
+                padding-left: 40px;
+            }
+            .scree-icon{
+                position: relative;
+                top: 13px;
+                left: -6px;
+                display: inline-block;
+                width: 40px;height: 40px;
+                font-size: 30px;
+                // background:url(../img/userManagement/screen.png) no-repeat center;
+            }
+            .el-input-group__append{
+                padding:0 19px;
+            }
+            .search_type{
+                width: 70px;
+                .el-input__inner{
+                    padding:0px 10px 0 10px;
+                    height: 58px;line-height:58px;
+                }
+            }
+            .sideBar_box{
+                width: 100%;
+                height: calc(100% - 85px);
+                padding-bottom: 20px;
+                overflow: auto;
+                .sideBar_list{
+                    width: 290px;
+                    p{
+                        position: relative;
+                        padding: 10px 0 10px 16px;
+                        height:25px; 
+                        line-height:25px;
+                        cursor: pointer;
+                        &:hover{
+                            background-color: #f5f7fa;
+                        }
+                        
+                        .dian{
+                            vertical-align: middle;
+                            // position: absolute;
+                            // top: 27px;
+                            // left: 12px;
+                            display: inline-block;
+                            width:4px;
+                            height:4px; 
+                            background:#FC8440;
+                            border-radius: 50%;
+                        }
+                        .company_name{
+                            margin-left: 13px;
+                            vertical-align: middle;
+                            display: inline-block;
+                            width: calc(100% - 58px);
+
+                            font-size:14px;
+                            font-family:PingFang-SC-Medium;
+                            font-weight:500;
+                            color:rgba(51,51,51,1);
+
+                            white-space: nowrap;
+                            overflow: hidden;
+                            text-overflow: ellipsis;
+                        }
+                        .company_name_EN{
+                            width: calc(100% - 90px);
+                        }
+                        >:last-child{
+                            transition: all 0.5s;
+                            display: inline-block;
+                            float: right;
+                            margin-right: 5px;
+                            height:22px; 
+                            font-size:16px;
+                            color:#A0ACC2;
+                        }
+                    }
+                    .sideBar_project_box{
+                        margin: 0 0px 0 30px;
+                        // padding: 0 25px;
+                        // background:rgba(241,241,241,1);
+                        border-radius: 4px ;
+                        .sideBar_project_text{
+                            padding:10px 0 10px 10px;
+                            height:22px;
+                            cursor: pointer;
+                            &:hover{
+                                background-color: #f5f7fa;
+                            }
+
+                            .dian{
+                                margin-left: 0px;
+                                vertical-align: middle;
+                                display: inline-block;
+                                width:4px;
+                                height:4px;
+                                background:rgba(198,205,213,1);
+                            }
+                            span{
+                                margin-left: 10px;
+                                vertical-align: middle;
+                                display: inline-block;
+                                max-width: calc(100% - 50px);
+
+                                font-size:12px;
+                                font-family:PingFang-SC-Medium;
+                                font-weight:500;
+                                color:rgba(101,112,133,1);
+                                line-height:17px;
+
+                                white-space: nowrap;
+                                overflow: hidden;
+                                text-overflow: ellipsis;
+                            }
+                            .xiabiao{
+                                transition: all 0.5s;
+                                display: inline-block;
+                                float: right;
+                                margin-right: 5px;
+                                height:22px; 
+                                font-size:16px;
+                                color:#A0ACC2;
+                            }
+                        }
+                        .sideBar_project_select{
+                            span{
+                                color:#FC8440;
+                            }
+                        }
+                        .sideBar_road_text{
+                            padding:5px 0 5px 45px;
+                            cursor: pointer;
+                            &:hover{
+                                background-color: #f5f7fa;
+                            }
+                            span{
+                                font-size:12px;
+                                font-family:PingFang-SC-Medium;
+                                font-weight:500;
+                                color:rgba(101,112,133,1);
+                            }
+                        }
+                        .sideBar_road_select{
+                            span{
+                                color:#FC8440;
+                            }
+                        }
+                        div:last-child{
+                            border-bottom: 0px;
+                        }
+                        .sideBar_project_select{
+                            color:#FC8440;
+                        }
+                    }
+                }
+            }
+            .sideBar_button{
+                position: absolute;
+                height: 56px;
+                top: 30px;
+                right: -34px;
+                cursor: pointer;
+            }
+        }
+    }
+</style>

+ 384 - 0
webConfig/src/components/sideBar_idcol.vue

@@ -0,0 +1,384 @@
+<template>
+    <div class="side_bar_box" :class="{'open':sideBarType == 'on'}">
+        <div class="side_bar_main">
+            <div class="side_bar_nav">
+                <div class="box1">
+                    <el-input placeholder="search..." v-model="keywords" @keyup.native="getLightListKeyUp($event)" class="input-with-select">
+                        <i slot="suffix" class="el-input__icon el-icon-search" @click="getLightList()"></i>
+                    </el-input>
+                </div>
+                <div class="box2">
+                    <i class="iconfont icon-celan-leibie"></i>
+                    <el-dropdown @command="commandDropdown" trigger="click" @visible-change="commandHide('dropdown_dashboard_date')">
+                        <span class="el-dropdown-link">
+                            <span>{{searchTypeName}}</span><i class="el-icon-caret-bottom el-icon--right"></i>
+                        </span>
+                        <el-dropdown-menu slot="dropdown" class="scrollbar_style dropdown_dashboard_date">
+                            <el-dropdown-item v-for="item in searchTypeArr" :class="{'select':item.id==searchType}" :command="{'key':'searchType','id':item.id}" :key="item.id">{{item.name}}</el-dropdown-item>
+                        </el-dropdown-menu>
+                    </el-dropdown>
+                </div>
+                <div class="box3">
+                    <el-checkbox-group v-model="screeningCheckList">
+                        <el-checkbox label="Manu"></el-checkbox>
+                        <el-checkbox label="Supp"></el-checkbox>
+                        <el-checkbox label="PO"></el-checkbox>
+                        <el-checkbox label="Upa"></el-checkbox>
+                    </el-checkbox-group>
+                    <div class="check_r">
+                        <div class="li" :class="{'select':screeningCheckList.indexOf('Manu')!=-1}" @click="screeningCheckListFun('Manu')"><span>Manu</span></div>
+                        <div class="line"></div>
+                        <div class="li" :class="{'select':screeningCheckList.indexOf('Supp')!=-1}" @click="screeningCheckListFun('Supp')"><span>Supp</span></div>
+                        <div class="line"></div>
+                        <div class="li" :class="{'select':screeningCheckList.indexOf('PO')!=-1}" @click="screeningCheckListFun('PO')"><span>PO</span></div>
+                        <div class="line"></div>
+                        <div class="li" :class="{'select':screeningCheckList.indexOf('Upa')!=-1}" @click="screeningCheckListFun('Upa')"><span>Upa</span></div>
+                    </div>
+                </div>
+                <div class="sideBar_list_box scrollbar_style">
+                    <div class="sideBar_list" v-for="obj in sideBarList" :key="obj.id">
+                        <p @click="click1(obj)" class="company_name" :class="{'select':obj.isOpen}">
+                            <span class="text" :title="obj.name"><i class="iconfont icon-celan-fenzhi"></i><span class="span1">{{obj.name}}</span><span class="span2">({{obj.number}})</span></span>
+                            <i class="el-icon-arrow-up" :style="{'transform':obj.isOpen?'rotate(180deg)':''}"></i>
+                        </p>
+                        <div v-if="obj.isOpen" class="sideBar_project_box">
+                            <div v-for="item in obj.project_list"  :key="item.id" @click="click2(item,obj.project_list)" class="sideBar_project">
+                                <div class="sideBar_project_text" :class="{'sideBar_project_select':projectId==item.id&&projectId}">
+                                    <span :title="item.projectname" :id="'sideBar_projectId_'+item.id"><span class="span1">{{item.projectname}}</span> <span class="span2">({{item.lampcount}})</span></span>
+                                    <i class="el-icon-arrow-up" :style="{'transform':item.isOpen?'rotate(180deg)':''}"></i>
+                                </div>
+                                <template v-if="item.isOpen">
+                                    <div v-for="d in item.roadList" :key="d.id" class="sideBar_road_text" :class="{'sideBar_road_select':roadId==d.value&&roadId}" @click.stop="click5(d,item,obj)">
+                                        <span>{{d.name}} ({{d.lampcount}})</span>
+                                    </div>
+                                </template>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="side_bar_onoff">
+            <div class="btn" @click="click3()" title="Project filtering">
+                <i class="iconfont icon-celan-guanbi" v-if="sideBarType == 'on'"></i>
+                <i class="iconfont icon-celan-shouqi" v-if="sideBarType == 'off'"></i>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script type="text/javascript">
+    
+    // import allUrl from '../api/allUrl.js'
+    // import base from '../api/base.js'
+    import { mapGetters } from 'vuex'
+
+    export default {
+        name:'dashboard',
+        data(){
+            return{
+                keywords:'',
+                screeningCheckList:[],
+                searchType:'',
+                searchTypeArr:[{id:0,name:'Project'},{id:1,name:'Company'}],
+
+            }
+        },
+        computed:{
+            ...mapGetters({
+                token:'token',
+                client_key:'client_key',
+                username:'username',
+                version:'version',
+            }),
+            searchTypeName(){
+                let name;
+                for(let d of this.searchTypeArr){
+                    if(d.id == this.searchType){
+                        name = d.name
+                    }
+                }
+                return name;
+            },
+        },
+        props:['sideBarList','projectId','roadId','sideBarListIsOpen','projectSelectFun','roadSelectFun','sideBarIsOn','sideBarType','reportType','sideBarCompanyList','projectAll'],
+        mounted(){
+            this.searchType = 0;
+        },
+        methods:{
+            commandDropdown(obj){
+                this.$set(this,obj.key,obj.id)
+            },
+            screeningCheckListFun(val){
+                if(this.screeningCheckList.indexOf(val) == -1){
+                    this.$set(this.screeningCheckList,this.screeningCheckList.length,val)
+                }else{
+                    this.screeningCheckList.splice(this.screeningCheckList.indexOf(val),1)
+                }
+            },
+            /*侧边栏打开关闭*/
+            click1(data){
+                this.sideBarListIsOpen(data)
+            },
+            /*侧边栏里展开收起*/
+            click2(data,list){
+                // console.log(this.sideBarList,'-===-=')
+                this.projectSelectFun(data,list)
+            },
+            click3(){
+                this.sideBarIsOn()
+                fun(this.version)
+                function fun(version){
+                    if($(".screenEN").length != 0){
+                        if(version == 0){
+                            $(".screenEN input").attr('placeholder','输入关键字按下回车键搜索');
+                        }else{
+                            $(".screenEN input").attr('placeholder','Enter keywords Search by Enter');
+                        }
+                    }else{
+                        setTimeout(function(){
+                            fun(version)
+                        },100)
+                    }
+                }
+            },
+            click4(){
+                this.projectAll();
+            },
+            click5(data,obj,d){
+                console.log(data,obj,d,'--------------------')
+                this.roadSelectFun(data,obj,d)
+            },
+            /*设备列表*/
+            getLightListKeyUp(e){
+                if(e.key == 'Enter'){
+                  this.getLightList();
+                }
+            },
+            getLightList(){
+
+            },
+        }
+    }
+</script>
+
+<style type="text/css" lang="less">
+    .side_bar_box{
+        z-index: 10000;
+        display: flex;
+        &.open{
+            left:1.3rem;
+            .side_bar_main{
+                width: 20rem;
+            }
+        }
+        .side_bar_main{
+            height: 100%;
+            width:0rem;
+            overflow: hidden;
+            transition:all 0.6s;
+            .side_bar_nav{
+                width: 20rem;
+                height: 100%;
+                background:rgba(255,255,255,1);
+                border-radius:0.42rem;
+                border:0.08rem solid rgba(240,240,240,1);
+                .box1{
+                    .el-input{
+                        height: 4rem;line-height: 4rem;
+                        .el-input__inner{
+                            height: 4rem;line-height: 4rem;
+                            background-color: #fff;
+                            border:none;
+                            border-bottom: 0.08rem solid rgba(235, 239, 242, 1);
+                        }
+                        .el-input__icon{
+                            height: 4rem;line-height: 4rem;
+                            color: rgba(252, 132, 64, 1);
+                        }
+                    }
+                }
+                .box2{
+                    margin: 0.6rem 1.1rem 0.6rem;
+                    height:2.4rem;line-height: 2.4rem;
+                    background:rgba(246,248,250,1);
+                    border-radius:0.17rem;
+                    display: flex;
+                    .icon-celan-leibie{
+                        color: rgba(252, 132, 64, 1);
+                        margin: 0 0.6rem 0 0.9rem;
+                        font-size: 1rem;
+                    }
+                    .el-dropdown{
+                        flex: 1;
+                        .el-dropdown-link{
+                            display: flex;
+                            align-items: center;
+                            justify-content: space-between;
+                            padding-right: 0.9rem;
+
+                            font-size:1rem;
+                            font-family:PingFangSC-Medium,PingFang-SC;
+                            font-weight:500;
+                            color:rgba(51,51,51,1);
+                            cursor: pointer;
+                            i{
+                                color: rgba(163, 175, 187, 1);
+                            }
+                        }
+                    }
+                }
+                .box3{
+                    display: flex;
+                    justify-content: space-between;
+                    margin: 0rem 1.1rem 0rem;
+                    .el-checkbox-group{
+                        .el-checkbox__input{
+                            .el-checkbox__inner{
+                                width: 1.2rem;height: 1.2rem;
+                                background-color: rgba(246, 248, 250, 1);
+                                border: none;
+                                &::after{
+                                    border: 0.1rem solid rgba(252, 132, 64, 1);
+                                    border-left: 0;
+                                    border-top: 0;
+                                    height: 0.6rem;width: 0.25rem;
+                                    top:0.15rem;left: 0.5rem;
+                                }
+                            }
+                            &.is-checked .el-checkbox__inner,&.is-indeterminate .el-checkbox__inner{
+                                background-color: rgba(246, 248, 250, 1);
+                                border: none;
+                            }
+                        }
+                        .el-checkbox{
+                            margin-right: 0.3rem;
+                        }
+                        .el-checkbox__label{
+                            display: none;
+                        }
+                    }
+                    .check_r{
+                        display: flex;
+                        align-items: center;
+                        .li{
+                            cursor: pointer;
+                            font-size:1rem;
+                            font-family:PingFangSC-Medium,PingFang-SC;
+                            font-weight:500;
+                            color:rgba(175,187,198,1);
+                            &.select{
+                                color:rgba(51,51,51,1);
+                            }
+                        }
+                        .line{
+                            margin: 0 0.4rem;
+                            width:0.08rem;
+                            height:1.4rem;
+                            background-color:rgba(235,239,242,1);
+                        }
+                    }
+                }
+                .sideBar_list_box{
+                    margin: 1.2rem 1.1rem 0rem;
+                    height: calc(100% - 10.4rem);
+                    .sideBar_list{
+                        .company_name{
+                            display: flex;
+                            align-items: center;
+                            justify-content: space-between;
+                            padding: 1rem 0;
+                            border-bottom: 0.1rem solid rgba(235, 239, 242, 1);
+                            cursor: pointer;
+                            .icon-celan-fenzhi{
+                                font-size: 1rem;
+                                margin: 0 0.5rem 0 0.25rem;
+                            }
+                            .span1{
+                                font-size:1rem;
+                                font-family:PingFang-SC-Medium,PingFang-SC;
+                                font-weight:500;
+                                color:rgba(51,51,51,1);
+                            }
+                            .span2{
+                                margin-left: 0.5rem;
+                                color:rgba(101,112,133,1);
+                            }
+                            .el-icon-arrow-up{
+                                transition: all 0.5s;
+                                color: rgba(0, 0, 0, 1);
+                            }
+                            &.select{
+                                .icon-celan-fenzhi{
+                                    color: rgba(252, 132, 64, 1);
+                                }
+                                .span1{
+                                    color: rgba(252, 132, 64, 1);
+                                }
+                                .span2{
+                                    color: rgba(252, 132, 64, 0.6)
+                                }
+                            }
+                        }
+                        .sideBar_project_box{
+                            margin-left: 1rem;
+                            .sideBar_project{
+                                .sideBar_project_text{
+                                    padding: 1rem 0;
+                                    cursor: pointer;
+                                    display: flex;
+                                    align-items: center;
+                                    justify-content: space-between;
+                                    .span1{
+                                        font-size:1rem;
+                                        font-family:PingFang-SC-Medium,PingFang-SC;
+                                        font-weight:500;
+                                        color:rgba(101,112,133,1);
+                                    }
+                                    .span2{
+                                        margin-left: 0.5rem;
+                                        font-size:1rem;
+                                        font-family:PingFang-SC-Medium,PingFang-SC;
+                                        font-weight:500;
+                                        color:rgba(163,175,187,1);
+                                    }
+                                    .el-icon-arrow-up{
+                                        transition: all 0.5s;
+                                        color: rgba(0, 0, 0, 1);
+                                    }
+                                    &.sideBar_project_select{
+                                        .icon-celan-fenzhi{
+                                            color: rgba(252, 132, 64, 1);
+                                        }
+                                        .span1{
+                                            color: rgba(252, 132, 64, 1);
+                                        }
+                                        .span2{
+                                            color: rgba(252, 132, 64, 0.6)
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        .side_bar_onoff{
+            .btn{
+                margin-top: 0.5rem;
+                width:3rem;
+                height:3rem;
+                background:linear-gradient(134deg,rgba(252,169,64,1) 0%,rgba(252,132,64,1) 100%);
+                border-radius:0rem 0.42rem 0.42rem 0rem;
+                border:0.08rem solid rgba(240,240,240,1);
+                display: flex;align-items: center;justify-content: center;
+                cursor: pointer;
+                i{
+                    font-size: 1.2rem;
+                    color: #fff;
+                }
+            }
+        }
+    }
+</style>

BIN
webConfig/src/img/GIS/Lamp_icon-pre.png


BIN
webConfig/src/img/GIS/Lamp_icon.png


BIN
webConfig/src/img/GIS/Monitor.png


BIN
webConfig/src/img/GIS/battery_icon.png


BIN
webConfig/src/img/GIS/cancel-icon.png


BIN
webConfig/src/img/GIS/close_light1.png


BIN
webConfig/src/img/GIS/data_icon.png


BIN
webConfig/src/img/GIS/day_icon.png


BIN
webConfig/src/img/GIS/determine-icon.png


BIN
webConfig/src/img/GIS/edit-icon.png


BIN
webConfig/src/img/GIS/fault-icon.png


BIN
webConfig/src/img/GIS/fault-icon1.png


BIN
webConfig/src/img/GIS/fault_icon.png


BIN
webConfig/src/img/GIS/fault_light1.png


BIN
webConfig/src/img/GIS/lamp_type/lamp_night_fault_0.png


BIN
webConfig/src/img/GIS/lamp_type/lamp_night_fault_1.png


BIN
webConfig/src/img/GIS/lamp_type/lamp_night_fault_2.png


BIN
webConfig/src/img/GIS/lamp_type/lamp_night_fault_3.png


BIN
webConfig/src/img/GIS/lamp_type/lamp_night_off-line_0.png


BIN
webConfig/src/img/GIS/lamp_type/lamp_night_off-line_1.png


BIN
webConfig/src/img/GIS/lamp_type/lamp_night_off-line_2.png


BIN
webConfig/src/img/GIS/lamp_type/lamp_night_off-line_3.png


BIN
webConfig/src/img/GIS/lamp_type/lamp_night_off_0.png


BIN
webConfig/src/img/GIS/lamp_type/lamp_night_off_1.png


BIN
webConfig/src/img/GIS/lamp_type/lamp_night_off_2.png


BIN
webConfig/src/img/GIS/lamp_type/lamp_night_off_3.png


BIN
webConfig/src/img/GIS/lamp_type/lamp_night_on_0.png


BIN
webConfig/src/img/GIS/lamp_type/lamp_night_on_1.png


BIN
webConfig/src/img/GIS/lamp_type/lamp_night_on_2.png


BIN
webConfig/src/img/GIS/lamp_type/lamp_night_on_3.png


BIN
webConfig/src/img/GIS/lamp_type/关灯_上_灯杆@2x.png


BIN
webConfig/src/img/GIS/lamp_type/关灯_下_灯杆@2x.png


BIN
webConfig/src/img/GIS/lamp_type/关灯_右_灯杆@2x.png


BIN
webConfig/src/img/GIS/lamp_type/关灯_左_灯杆@2x.png


BIN
webConfig/src/img/GIS/lamp_type/开灯_上_灯杆@2x.png


BIN
webConfig/src/img/GIS/lamp_type/开灯_下_灯杆@2x.png


BIN
webConfig/src/img/GIS/lamp_type/开灯_右_灯杆@2x.png


BIN
webConfig/src/img/GIS/lamp_type/开灯_左_灯杆@2x.png


BIN
webConfig/src/img/GIS/lamp_type/故障_上_灯杆@2x.png


BIN
webConfig/src/img/GIS/lamp_type/故障_下_灯杆@2x.png


BIN
webConfig/src/img/GIS/lamp_type/故障_右_灯杆@2x.png


BIN
webConfig/src/img/GIS/lamp_type/故障_左_灯杆@2x.png


BIN
webConfig/src/img/GIS/lamp_type/离线_上_灯杆@2x.png


BIN
webConfig/src/img/GIS/lamp_type/离线_下_灯杆@2x.png


BIN
webConfig/src/img/GIS/lamp_type/离线_右_灯杆@2x.png


BIN
webConfig/src/img/GIS/lamp_type/离线_左_灯杆@2x.png


BIN
webConfig/src/img/GIS/monitor-icon.png


+ 0 - 0
webConfig/src/img/GIS/network_icon.png


Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov