From 8a0e6f282569868275cf90ee33b0bf5fc4b30b2b Mon Sep 17 00:00:00 2001
From: hanbaoshan <hanbaoshan@aiotlink.com>
Date: 星期二, 01 九月 2020 20:45:23 +0800
Subject: [PATCH] 国标配置条件修改,项目添加manifest,热力图更新,区域管理样式调整

---
 src/pages/desktop/index/store/modules/desktop.js |    1 
 src/pages/gb28181/index/App.vue                  |    2 
 vue.config.js                                    |    3 
 src/pages/heatCamera/index/App.vue               |  263 ++++++++++++++++++++++++++++---------------
 public/manifest.json                             |   15 ++
 src/pages/desktop/index/App.vue                  |    6 
 src/pages/areaManage/index/App.vue               |   14 +-
 7 files changed, 197 insertions(+), 107 deletions(-)

diff --git a/public/manifest.json b/public/manifest.json
new file mode 100644
index 0000000..dd8873d
--- /dev/null
+++ b/public/manifest.json
@@ -0,0 +1,15 @@
+{
+  "name": "system-2.0",
+  "short_name": "system-2.0",
+  "icons": [
+    {
+      "src": "favicon.ico",
+      "sizes": "64x64 32x32 24x24",
+      "type": "image/x-icon"
+    }
+  ],
+  "start_url": "./index.html",
+  "display": "standalone",
+  "background_color": "#000000",
+  "theme_color": "#4DBA87"
+}
diff --git a/src/pages/areaManage/index/App.vue b/src/pages/areaManage/index/App.vue
index c7e1025..f4312db 100644
--- a/src/pages/areaManage/index/App.vue
+++ b/src/pages/areaManage/index/App.vue
@@ -33,7 +33,7 @@
           </el-form-item>
         </div>
         <div class="checklist">
-          <el-form-item>
+          <el-form-item style="margin-right:0">
             <!-- <el-transfer v-model="checkedData" :props="{key:'model',label:'label'}" :titles="['鍏ㄩ儴鍖哄煙', '閫変腑鍖哄煙']" :button-texts="['宸︾Щ','鍙崇Щ']" filterable @change="handleChange" :data="areaData"></el-transfer> -->
             <el-transfer
               v-model="checkedData"
@@ -106,7 +106,6 @@
     renderTable () {
       getAllAreas().then(res => {
         if (res.code == 200) {
-          debugger
           this.groups = res.data
         }
       })
@@ -137,7 +136,6 @@
       let _this = this;
       row.camPolygons.forEach(camPolygon => {
         camPolygon.pgns.forEach(polygon => {
-          debugger
           let symbol = camPolygon.cameraId + '&' + polygon.polygonId
           // let checkedItem = {};
           // checkedItem.cameraId = camPolygon.cameraId;
@@ -152,6 +150,7 @@
     createArea () {
       this.isEdit = false;
       this.dialogFormVisible = true;
+      this.areaForm = {};
       this.areaForm.name = '';
       this.areaForm.id = '';
       this.areaForm.desc = '';
@@ -208,7 +207,6 @@
       let tempArr = [];
       let tempIdArr = [];
       this.areaForm.camPolygons = [];
-      debugger
       this.checkedData.forEach(item => {
         let tempCameraItem = { pgns: [] };
         let cameraId = item.split('&')[0];
@@ -289,7 +287,6 @@
 }
 .el-form-item {
   display: flex;
-  margin-right: 40px;
 }
 .el-form-item label {
   font-weight: bold;
@@ -324,10 +321,10 @@
   border-color: #9eb4f0 !important;
 }
 /deep/.el-dialog {
-  min-width: 764px;
+  min-width: 940px;
 }
 /deep/.el-textarea__inner {
-  width: 566px;
+  width: 763px;
   height: 60px;
 }
 /deep/.el-transfer-panel__item.el-checkbox .el-checkbox__label {
@@ -346,4 +343,7 @@
   .el-checkbox__label {
   font-size: 14px !important;
 }
+/deep/.el-transfer-panel{
+  width:300px;
+}
 </style>
\ No newline at end of file
diff --git a/src/pages/desktop/index/App.vue b/src/pages/desktop/index/App.vue
index 37a8aa5..a89ad1d 100644
--- a/src/pages/desktop/index/App.vue
+++ b/src/pages/desktop/index/App.vue
@@ -58,9 +58,9 @@
   methods: {
     addMessage: function (message, ding) {
       this.$store.dispatch('desktop/addMessage', message);
-      if (ding) {
-        new Audio('sounds/ping.mp3').play();
-      }
+      // if (ding) {
+      //   new Audio('sounds/ping.mp3').play();
+      // }
       this.$refs.notice_tip_model.showTip(message);
     },
     addWeather: function (weather) {
diff --git a/src/pages/desktop/index/store/modules/desktop.js b/src/pages/desktop/index/store/modules/desktop.js
index 98327d8..75911bc 100644
--- a/src/pages/desktop/index/store/modules/desktop.js
+++ b/src/pages/desktop/index/store/modules/desktop.js
@@ -116,7 +116,6 @@
     
     state.framesOrder = order;
     state.framesOffset = offset;
-    debugger
     state.frames.push(dframe);
 
     return true;
diff --git a/src/pages/gb28181/index/App.vue b/src/pages/gb28181/index/App.vue
index 61845c4..2bf92c4 100644
--- a/src/pages/gb28181/index/App.vue
+++ b/src/pages/gb28181/index/App.vue
@@ -40,6 +40,7 @@
                 @change="changeProvince"
                 size="small"
                 placeholder="璇烽�夋嫨鐪佷唤"
+                :disabled="gb28181.idType === 0"
               >
                 <el-option
                   v-for="item in locationCity.provinceOptions"
@@ -95,6 +96,7 @@
                 v-model="gb28181.PublicId"
                 placeholder="璇疯緭鍏�"
                 size="small"
+                :disabled="gb28181.idType === 1"
               ></el-input>
             </el-form-item>
 
diff --git a/src/pages/heatCamera/index/App.vue b/src/pages/heatCamera/index/App.vue
index 3b2465c..7155282 100644
--- a/src/pages/heatCamera/index/App.vue
+++ b/src/pages/heatCamera/index/App.vue
@@ -2,134 +2,207 @@
   <div class="heatCamera">
     <div class="camera">
       <nav class="header-nav">
-         
-          <div class="toolbar">
-            <el-date-picker @change="timeChange" v-model="timeRange" value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�"
-              end-placeholder="缁撴潫鏃ユ湡" size="small"></el-date-picker>
-              <el-button type="primary" size="small">鏌ヨ</el-button>
-          </div>
+        <div class="toolbar">
+          <el-radio-group v-model="dimension">
+            <el-radio-button :label="1">鐑姏鍥�</el-radio-button>
+            <el-radio-button :label="2">杞ㄨ抗鍥�</el-radio-button>
+          </el-radio-group>
+          <el-date-picker
+            @change="timeChange"
+            v-model="timeRange"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            type="datetimerange"
+            range-separator="鑷�"
+            start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡"
+          ></el-date-picker>
+          <el-button type="primary" @click="postCameraData">鏌ヨ</el-button>
+        </div>
       </nav>
-      
+
       <div class="img-area" ref="heatMap">
-        <!-- <el-image src="/timg.jpg" fit="contain" ref="img"></el-image> -->
+        <span class="dot" v-for="(item,index) in dots" :style="{top:item.y+'px',left: item.x+'px'}" :key="'d'+index"></span>
         <el-image :src="`${publicPath}images/login-net.png`" fit="contain" ref="img"></el-image>
       </div>
     </div>
   </div>
 </template>
 <script>
+Date.prototype.Format = function (fmt) {
+  var o = {
+    "M+": this.getMonth() + 1, //鏈堜唤 
+    "d+": this.getDate(), //鏃� 
+    "H+": this.getHours(), //灏忔椂 
+    "m+": this.getMinutes(), //鍒� 
+    "s+": this.getSeconds(), //绉� 
+    "q+": Math.floor((this.getMonth() + 3) / 3), //瀛e害 
+    "S": this.getMilliseconds() //姣 
+  };
+  if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
+  for (var k in o)
+    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
+  return fmt;
+}
 import Heatmap from 'heatmap.js';
-import {getHeatCameraData} from '@/api/heatCamera'
+import { getHeatCameraData } from '@/api/heatCamera'
 export default {
-  data(){
+  data () {
     return {
       publicPath: process.env.BASE_URL,
-      timeRange: [new Date(2020, 8, 20, 8), new Date(2020, 9, 20, 8)],
+      dots: [],
+      dimension: 1,
+      timeRange: [new Date(2020, 7, 23, 8), new Date()],
       params: {
-        cameraIds: ["c6fd8f31-248f-49fc-93e0-dedac889197b","c41a2f34-bd2e-41af-9bc0-51e6dcd03523"],
-        startTime: '',
-        endTime: '',
-      }
+        cameraIds: ["ba8c1624-55a7-4f20-9c54-01e56448aeb5"],
+        startDate: new Date(2020, 7, 23, 8).Format("yyyy-MM-dd HH:mm:ss"),
+        endDate: new Date().Format("yyyy-MM-dd HH:mm:ss"),
+        //thresholdTime: 100,
+      },
+      heatmapInstance: null,
     }
   },
-  mounted(){
+  mounted () {
     console.log(Heatmap.create)
-    setTimeout(()=>{
-      this.mockAsync()
-    },2000);
+   
   },
-  methods:{
-    timeChange(val){
-      console.log(val);
-      this.params.startTime = val[0];
-      this.params.endTime = val[1];
-      this.renderHeatMap(this.params)
+  methods: {
+    timeChange(val) {
+      this.params.startDate = val[0];
+      this.params.endDate = val[1];
     },
-    mockAsync(){
-      var config = {
+    setHeatmapData(sources) {
+      if (sources === null || sources.length < 1) {
+        return
+      }
+      var heatmapConfig = {
         container: document.querySelector('.img-area'),
-        radius: 10,
-        maxOpacity: .75,
+        radius: 20,
+        maxOpacity: .55,
         minOpacity: 0,
-        blur: .75,
+        blur: .55,
         gradient: {
-          '.5': 'blue',
-          '.8': 'red',
-          '0.95': 'white',
-          '0.6': 'yellow',
-          '0.5': 'green'
+          '.8': 'yellow',
+          '0.95': 'rgba(251, 40, 40, 0.3)',
+          '0.6': 'rgba(42, 251, 199, 0.3)',
+          '0.5': 'rgba(2, 119, 251, 0.3)'
         }
-        
       };
-      var data = {
-        max: 700,
+      var points = {
+        max: 300,
         min: 0,
         data: []
       }
-      for (var i = 10; i < 700; i++) {
-        var dataPoint = {
-          x: Math.floor(Math.random() * i),
-          y: Math.floor(Math.random() * i),
-          value: Math.floor(Math.random() * i)
-        };
-        var dataCenter = {
-          x: i,
-          y: i,
-          value: 30 + i
-        }
-        data.data.push(dataPoint, dataCenter)
+      if (this.heatmapInstance === null) {
+        this.heatmapInstance = Heatmap.create(heatmapConfig);
+      } else {
+        this.heatmapInstance.setData(points);
       }
-      //var heatmapInstance = h337.create(config);
-      var heatmapInstance = Heatmap.create(config);
-      heatmapInstance.setData(data);
+      sources.forEach(ele => {
+        points.data.push(this.formatPoint(ele))
+        if(this.dimension == 2){
+          this.dots.push(this.formatPoint(ele))
+        }
+      });
+
+      //鐑姏鍥�
+      if(this.dimension == 1){
+        this.heatmapInstance.setData(points);
+      }
     },
-    renderHeatMap(params){
-      getHeatCameraData(params).then(res=>{
-        debugger
-      })
+    postCameraData() {
+      this.dots = [];
+      var xhr = new XMLHttpRequest();
+      xhr.open('post', '/data/api-v/es/getPersonData');
+      xhr.setRequestHeader('Content-Type', 'application/json');
+      xhr.setRequestHeader('Authorization', 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NDUwMjU5MjMsInVzZXIiOiJ7XCJpZFwiOlwiZTZjY2QzNmQtNGYxNi00NmZjLTg4ZDUtMDczNjU4NjZkMjA1XCIsXCJwZXJtaXNzaW9uc1wiOltcInByb2R1Y3RNYW5nZTpwdWJsaXNoXCIsXCJjb2RlTWFuZ2U6dmlld1wiLFwiZGV2aWNlTWFuYWdlOmFkZFwiLFwiYWRtaW5NYW5hZ2VcIixcIm9yZGVyTWFuZ2VcIixcImRldmljZU1hbmFnZTp2aWV3XCIsXCJwcm9kdWN0TWFuZ2U6YWRkXCIsXCJhZG1pbk1hbmFnZTp2aWV3XCIsXCJjb2RlTWFuZ2U6YWRkXCIsXCJwcm9kdWN0TWFuZ2U6b2ZmU2FsZVwiLFwib3JkZXJNYW5nZTpjYW5jZWxcIixcInByb2R1Y3RDZW50ZXI6ZG93bmxvYWRcIixcInByb2R1Y3RDZW50ZXI6YnV5XCIsXCJwcm9kdWN0TWFuZ2U6dmlld1wiLFwiYXBpXCIsXCJob21lXCIsXCJvcmRlck1hbmdlOnBheVwiLFwiYWRtaW5NYW5hZ2U6YWRkXCIsXCJvcmRlck1hbmdlOmRvd25sb2FkXCIsXCJwcm9kdWN0Q2VudGVyXCIsXCJkZXZpY2VNYW5hZ2U6dW5iaW5kXCIsXCJvcmRlck1hbmdlOnZpZXdcIixcImFkbWluTWFuYWdlOmVkaXRcIixcImRldmljZU1hbmFnZVwiLFwidmlwTWFuYWdlOmFkZFwiLFwidmlwTWFuYWdlOnZpZXdcIixcInByb2R1Y3RDZW50ZXI6dmlld1wiLFwidmlwTWFuYWdlOmVkaXRcIixcInZpcE1hbmFnZVwiLFwicHJvZHVjdE1hbmdlOmVkaXRcIixcImNvZGVNYW5nZVwiLFwicHJvZHVjdE1hbmdlXCJdLFwidXNlcm5hbWVcIjpcImJhc2ljXCJ9In0.vwjAFkWuEyadRLvIOGK8LFE3MjpY3SQ7j6AlTXnQDG8');
+      xhr.send(JSON.stringify(this.params));
+      xhr.onload = function () {
+        if (xhr.readyState == 4) {
+          var response = JSON.parse(xhr.responseText)
+          if (response && response.success) {
+            console.log(response.data.result)
+            debugger
+            this.setHeatmapData(response.data.result)
+          }
+        }
+        this.mockAsync
+      }.bind(this)
     },
+    formatPoint(data) {
+      var converters = {
+        "ba8c1624-55a7-4f20-9c54-01e56448aeb5": {
+          "scale": 1,
+          "offsetX": 0,
+          "offsetY": 0
+        }
+      }
+
+      var cv = converters[data.cameraId]
+
+      var topLeft = data.personRect.topLeft
+      var bottomRight = data.personRect.bottomRight
+
+      // 涓績鐐�
+      var dataPoint = {
+        x: ((topLeft.x + bottomRight.x) * cv.scale + cv.offsetX * 2) / 2,
+        y: ((topLeft.y + bottomRight.y) * cv.scale + cv.offsetX * 2) / 2,
+        // value: data.stayTime
+        value: 0
+      };
+
+      return dataPoint
+    }
 
   }
 }
 </script>
 <style lang="scss">
-  .heatCamera{
-    width: 100%;
-    height: 100%;
-    background: #e9ebf2;
-    .header-nav{
-      height: 60px;
-      min-width: 1200px;
-      background-image: linear-gradient(-180deg, #ffffff 13%, #e9ebf2 100%);
-    }
-    .toolbar{
-      width: 500px;
-      height: 60px;
-      //background: rgba(0,0,0,.3);
-      position: absolute;
-      right: 60px;
-      top: 20px;
-      text-align: center;
-      line-height: 60px;
-      z-index: 10;
-      .el-date-editor{
-        vertical-align: middle;
-        border-radius: 4px 0 0 4px;
-      }
-      .el-button{
-        vertical-align: middle;
-        margin-left: 4px;
-      }
-    }
-    .img-area{
-      margin: 30px auto;
-      width: 1200px;
-      //position: relative;
-      font-size: 0;
-    }
-    img{
-      display: block;
-    }
-
+.heatCamera {
+  width: 100%;
+  height: 100%;
+  background: #e9ebf2;
+  .header-nav {
+    height: 60px;
+    min-width: 1200px;
+    background-image: linear-gradient(-180deg, #ffffff 13%, #e9ebf2 100%);
   }
+  .toolbar {
+    width: 680px;
+    height: 60px;
+    //background: rgba(0,0,0,.3);
+    position: absolute;
+    right: 60px;
+    top: 20px;
+    text-align: center;
+    line-height: 60px;
+    z-index: 10;
+    .el-date-editor {
+      vertical-align: middle;
+      border-radius: 4px 0 0 4px;
+      margin: 0 8px;
+    }
+    .el-button {
+      vertical-align: middle;
+      margin-left: 4px;
+    }
+  }
+  .img-area {
+    margin: 30px auto;
+    width: 1280px;
+    position: relative;
+    font-size: 0;
+    .dot{
+      width: 10px;
+      height: 10px;
+      background-image: radial-gradient(circle,#04f3ff,#adf7f7,#31e4d3);
+      opacity: .5;
+      border-radius: 50%;
+      position: absolute;
+      z-index: 1000;
+    }
+  }
+  img {
+    display: block;
+  }
+}
 </style>
diff --git a/vue.config.js b/vue.config.js
index a763d16..8450c82 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -49,7 +49,8 @@
         changeOrigin: true,
       }, 
       "/api-v": {
-        target: 'http://192.168.20.145:8000',
+        //target: 'http://192.168.20.145:8000',
+        target: 'http://192.168.5.22:30102',
         //target: 'http://192.168.20.10:8000',
         changeOrigin: true
       },     

--
Gitblit v1.8.0