From 947638b2b7256435c98dea50deffd5769221dc4f Mon Sep 17 00:00:00 2001
From: hanbaoshan <hanbaoshan@aiotlink.com>
Date: 星期日, 23 八月 2020 13:17:20 +0800
Subject: [PATCH] 添加热力图应用,桌面禁用鼠标右键
---
src/pages/heatCamera/index/main.ts | 12 +++
vue.config.js | 6 +
src/pages/desktop/index/components/ToolsEntry.vue | 5 +
src/pages/heatCamera/index/App.vue | 135 +++++++++++++++++++++++++++++++++
src/pages/desktop/index/components/DFrame.vue | 21 ----
package.json | 1
src/pages/desktop/index/App.vue | 2
src/pages/desktop/index/components/Tools.vue | 5 +
src/pages/desktop/index/mock/userData.json | 11 ++
src/api/heatCamera.ts | 7 +
10 files changed, 183 insertions(+), 22 deletions(-)
diff --git a/package.json b/package.json
index 05893c4..1c891e3 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
"echarts": "^4.8.0",
"echarts-liquidfill": "^2.0.6",
"element-ui": "^2.13.2",
+ "heatmap.js": "^2.0.5",
"html2canvas": "^1.0.0-rc.5",
"less-loader": "^6.2.0",
"moment": "^2.27.0",
diff --git a/src/api/heatCamera.ts b/src/api/heatCamera.ts
new file mode 100644
index 0000000..e64ca0f
--- /dev/null
+++ b/src/api/heatCamera.ts
@@ -0,0 +1,7 @@
+import request from '@/scripts/httpRequest'
+export const getHeatCameraData = (data: any) =>
+ request({
+ url: '/data/api-v/es/getPersons',
+ method: 'post',
+ data
+ })
diff --git a/src/pages/desktop/index/App.vue b/src/pages/desktop/index/App.vue
index 5a5251e..37a8aa5 100644
--- a/src/pages/desktop/index/App.vue
+++ b/src/pages/desktop/index/App.vue
@@ -1,5 +1,5 @@
<template>
- <div id="app">
+ <div id="app" @contextmenu.prevent="">
<tools></tools>
<desktop></desktop>
<tools-entry ref="dock_model"></tools-entry>
diff --git a/src/pages/desktop/index/components/DFrame.vue b/src/pages/desktop/index/components/DFrame.vue
index 3c5fe82..4c9e00a 100644
--- a/src/pages/desktop/index/components/DFrame.vue
+++ b/src/pages/desktop/index/components/DFrame.vue
@@ -149,18 +149,9 @@
// });
// });
//return false;
- //this.refreshDock();
+
},
- refreshDock: function () {
- setTimeout(function () {
- const dockItems = document.getElementsByClassName('dock-item');
- const dockMask = document.getElementsByClassName('dock-mask')[0];
- for (let i = 0; i < dockItems.length; i++) {
- dockItems[i].width = 60;
- }
- //dockMask.style.width = dockItems.length * 60 + 40 + 'px';
- }, 10);
- }
+
},
directives: {
drag(el) {
@@ -300,17 +291,9 @@
color: #fbb450;
}
-/* .d-frame-title-operation:hover .d-frame-operation-minus::before {
- content: "\f056";
-} */
-
.d-frame-operation-full {
color: #00d800;
}
-
-/* .d-frame-title-operation:hover .d-frame-operation-full::before {
- content: "\f055";
-} */
.d-frame-title-content {
line-height: 30px;
diff --git a/src/pages/desktop/index/components/Tools.vue b/src/pages/desktop/index/components/Tools.vue
index e75d173..8bc66e7 100644
--- a/src/pages/desktop/index/components/Tools.vue
+++ b/src/pages/desktop/index/components/Tools.vue
@@ -255,8 +255,11 @@
vertical-align: top;
line-height: 56px;
padding: 0 15px;
+
}
-
+.tools-icon img{
+ -webkit-user-drag: none;
+}
.tools .tools-icon:not(.no-hover-style):hover,
.tools .tools-icon:not(.no-hover-style).clicked {
color: white;
diff --git a/src/pages/desktop/index/components/ToolsEntry.vue b/src/pages/desktop/index/components/ToolsEntry.vue
index 89d8f14..36a0fc3 100644
--- a/src/pages/desktop/index/components/ToolsEntry.vue
+++ b/src/pages/desktop/index/components/ToolsEntry.vue
@@ -171,6 +171,11 @@
.logo{
text-align: right;
padding-right: 50px;
+ user-select: none;
+ img{
+ user-select: none;
+ -webkit-user-drag: none;
+ }
}
}
}
diff --git a/src/pages/desktop/index/mock/userData.json b/src/pages/desktop/index/mock/userData.json
index 3b284b4..169d84e 100644
--- a/src/pages/desktop/index/mock/userData.json
+++ b/src/pages/desktop/index/mock/userData.json
@@ -134,6 +134,17 @@
"title": "绯荤粺缁存姢",
"width": 760,
"height": 534
+ },
+ {
+ "id": "19",
+ "name": "heatCamera",
+ "src": "../../images/app-mid/algorithm-manage.png",
+ "alt": "鐑姏鍥�",
+ "type": "2",
+ "url": "/view/heatCamera",
+ "title": "鐑姏鍥�",
+ "width": 1210,
+ "height": 534
}
]
}
diff --git a/src/pages/heatCamera/index/App.vue b/src/pages/heatCamera/index/App.vue
new file mode 100644
index 0000000..3b2465c
--- /dev/null
+++ b/src/pages/heatCamera/index/App.vue
@@ -0,0 +1,135 @@
+<template>
+ <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>
+ </nav>
+
+ <div class="img-area" ref="heatMap">
+ <!-- <el-image src="/timg.jpg" fit="contain" ref="img"></el-image> -->
+ <el-image :src="`${publicPath}images/login-net.png`" fit="contain" ref="img"></el-image>
+ </div>
+ </div>
+ </div>
+</template>
+<script>
+import Heatmap from 'heatmap.js';
+import {getHeatCameraData} from '@/api/heatCamera'
+export default {
+ data(){
+ return {
+ publicPath: process.env.BASE_URL,
+ timeRange: [new Date(2020, 8, 20, 8), new Date(2020, 9, 20, 8)],
+ params: {
+ cameraIds: ["c6fd8f31-248f-49fc-93e0-dedac889197b","c41a2f34-bd2e-41af-9bc0-51e6dcd03523"],
+ startTime: '',
+ endTime: '',
+ }
+ }
+ },
+ 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)
+ },
+ mockAsync(){
+ var config = {
+ container: document.querySelector('.img-area'),
+ radius: 10,
+ maxOpacity: .75,
+ minOpacity: 0,
+ blur: .75,
+ gradient: {
+ '.5': 'blue',
+ '.8': 'red',
+ '0.95': 'white',
+ '0.6': 'yellow',
+ '0.5': 'green'
+ }
+
+ };
+ var data = {
+ max: 700,
+ 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)
+ }
+ //var heatmapInstance = h337.create(config);
+ var heatmapInstance = Heatmap.create(config);
+ heatmapInstance.setData(data);
+ },
+ renderHeatMap(params){
+ getHeatCameraData(params).then(res=>{
+ debugger
+ })
+ },
+
+ }
+}
+</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;
+ }
+
+ }
+</style>
diff --git a/src/pages/heatCamera/index/main.ts b/src/pages/heatCamera/index/main.ts
new file mode 100644
index 0000000..93bc0d1
--- /dev/null
+++ b/src/pages/heatCamera/index/main.ts
@@ -0,0 +1,12 @@
+import Vue from 'vue';
+import ElementUI from 'element-ui';
+//import HeatMap from 'heatmap.js-fixed';
+import 'element-ui/lib/theme-chalk/index.css';
+import "@/assets/css/element-variables.scss";
+
+import App from './App.vue';
+Vue.use(ElementUI)
+new Vue({
+ el: '#app',
+ render: h => h(App)
+})
\ No newline at end of file
diff --git a/vue.config.js b/vue.config.js
index 1d5f2b6..8381895 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -47,7 +47,11 @@
target: 'http://192.168.20.10:7003',
// ws: true,
changeOrigin: true,
- },
+ },
+ "/api-v": {
+ target: 'http://192.168.20.145:8000',
+ changeOrigin: true
+ },
"/api-f": {
//target: "http://bsic.asuscomm.com:7003", // 澶栫綉鏄犲皠鍦板潃
// target: "http://222.128.87.51:8000", // 鐩爣浠g悊鎺ュ彛鍦板潃
--
Gitblit v1.8.0