Browse Source

各个后端接口;对接埋点上报接口

任一存 2 years ago
parent
commit
9e8c7a96ba
6 changed files with 187 additions and 33 deletions
  1. 1 0
      .env
  2. 2 0
      public/static/js/Hot.js
  3. 30 0
      src/api.js
  4. 32 0
      src/main.js
  5. 82 0
      src/test.js
  6. 40 33
      src/views/gui/BigMap.vue

+ 1 - 0
.env

@@ -1 +1,2 @@
 VUE_APP_STATIC_DIR=static
+VUE_APP_API_URL_PREFIX=https://haidebao.4dage.com

+ 2 - 0
public/static/js/Hot.js

@@ -1090,6 +1090,8 @@ window.initHot = function (model) {
     examine(options = {}) {
       console.log('打开热点,关闭背景音乐')
 
+      globalApi.reportHotspotClick()
+
       // 判断当前背景音乐是开的还是关的
       let tempp = document.querySelector('#openMusic')
       if (tempp.style.display === 'block') {

+ 30 - 0
src/api.js

@@ -1,4 +1,34 @@
 import axios from "axios"
 
 export default {
+  async reportVisit() {
+    const res = await axios({
+      method: 'get',
+      url: `${process.env.VUE_APP_API_URL_PREFIX}/api/show/visit/scene`,
+    })
+  },
+  async reportVisitDaily() {
+    const res = await axios({
+      method: 'get',
+      url: `${process.env.VUE_APP_API_URL_PREFIX}/api/show/visit/user`,
+    })
+  },
+  async reportRegionClick(regionType) {
+    const res = await axios({
+      method: 'get',
+      url: `${process.env.VUE_APP_API_URL_PREFIX}/api/show/visit/zone/${regionType}`
+    })
+  },
+  async reportHotspotClick() {
+    const res = await axios({
+      method: 'get',
+      url: `${process.env.VUE_APP_API_URL_PREFIX}/api/show/visit/hot`
+    })
+  },
+  async getDeviceList() {
+    return await axios({
+      method: 'get',
+      url: `${process.env.VUE_APP_API_URL_PREFIX}/api/show/product/getTree`
+    })
+  },
 }

+ 32 - 0
src/main.js

@@ -29,3 +29,35 @@ new Vue({
   router,
   render: h => h(App)
 }).$mount('#app')
+
+// 访问量埋点
+globalApi.reportVisit()
+
+// 访问量(每天最多一次)埋点
+const visitDailyInfo = localStorage.getItem("HDB_oneDay")
+if (visitDailyInfo) {
+  const data = JSON.parse(visitDailyInfo)
+  const time = Date.now()
+  if (time - Number(data.time) >= Number(data.sub)) {
+    // 已经过了24点
+    let d = new Date()
+    const time = d.getHours()
+    const sub = (24 - time) * 1000 * 60 * 60
+    localStorage.setItem(
+      "HDB_oneDay",
+      JSON.stringify({ sub, time: Date.now() })
+    )
+    globalApi.reportVisitDaily()
+  }
+} else {
+  let d = new Date()
+  const time = d.getHours()
+  const sub = (24 - time) * 1000 * 60 * 60
+  localStorage.setItem(
+    "HDB_oneDay",
+    JSON.stringify({ sub, time: Date.now() })
+  )
+  globalApi.reportVisitDaily()
+}
+
+window.globalApi = globalApi

+ 82 - 0
src/test.js

@@ -0,0 +1,82 @@
+[
+  {
+    "children": [
+      {
+        "children": null,
+        "createTime": null,
+        "fileName": "",
+        "filePath": "",
+        "id": 10,
+        "level": 2,
+        "name": "二级类别test3",
+        "parentId": 6,
+        "updateTime": null
+      }
+    ],
+    "createTime": null,
+    "fileName": "",
+    "filePath": "",
+    "id": 6,
+    "level": 1,
+    "name": "一级类别test2",
+    "parentId": null,
+    "updateTime": null
+  },
+  {
+    "children": [
+      {
+        "children": [
+          {
+            "children": null,
+            "createTime": null,
+            "fileName": "",
+            "filePath": "",
+            "id": 3,
+            "level": 0,
+            "name": "设备1-1-1",
+            "parentId": 8,
+            "updateTime": null
+          },
+          {
+            "children": null,
+            "createTime": null,
+            "fileName": "666.pdf",
+            "filePath": "/product/doc/20230410_0943455294.pdf",
+            "id": 4,
+            "level": 0,
+            "name": "设备1-1-2",
+            "parentId": 8,
+            "updateTime": null
+          }
+        ],
+        "createTime": null,
+        "fileName": "",
+        "filePath": "",
+        "id": 8,
+        "level": 2,
+        "name": "二级类别1-1",
+        "parentId": 7,
+        "updateTime": null
+      },
+      {
+        "children": null,
+        "createTime": null,
+        "fileName": "",
+        "filePath": "",
+        "id": 9,
+        "level": 2,
+        "name": "二级类别test1",
+        "parentId": 7,
+        "updateTime": null
+      }
+    ],
+    "createTime": null,
+    "fileName": "",
+    "filePath": "",
+    "id": 7,
+    "level": 1,
+    "name": "一级类别test1",
+    "parentId": null,
+    "updateTime": null
+  }
+]

+ 40 - 33
src/views/gui/BigMap.vue

@@ -31,6 +31,7 @@
           },
           ...item.style
         }"
+        @click="onClickRegion(item)"
         v-html="item.nameCn"
       />
     </div>
@@ -38,6 +39,7 @@
       <button
         v-for="(item) in areaListForBtn"
         :key="item.id"
+        @click="onClickRegion(item)"
       >
         {{ item.nameCn }}
       </button>
@@ -50,43 +52,48 @@ export default {
   data() {
     return {
       areaListForMap: [
-        { id: '1', nameCn: '速霸CX 104-8+LYYL', nameEn: 'Speedmaster CX 104-8+LYYL', left: 20.3, top: 6.3, width: 49.4, height: 13, },
-        { id: '2', nameCn: '速霸XL 75-7+L ', nameEn: 'Speed&hyphen;<br>master XL 75-7+L ', left: 5.5, top: 22.5, width: 12.4, height: 34.8, },
-        { id: '3', nameCn: '速霸SX102-4-P', nameEn: 'Speed&hyphen;<br>master SX 102-4-P', left: 70.7, top: 6.3, width: 10.5, height: 29.7, },
-        { id: '4', nameCn: '数字工厂', nameEn: 'Digital<br>Factory', left: 48.6, top: 23.6, width: 13.6, height: 16.6, style: { justifyContent: 'flex-start', alignItems: 'flex-start', paddingTop: '1vw', paddingLeft: '2vw', } },
-        { id: '5', nameCn: '印通工作流程中心', nameEn: 'Prinect Center', left: 40.9, top: 43.4, width: 9.4, height: 4.9, },
-        { id: '6', nameCn: '波拉自动裁切系统300 ', nameEn: 'Polar <br> Cutting <br> System 300 ', left: 5.5, top: 6.3, width: 12.4, height: 13, },
-        { id: '7', nameCn: '斯塔尔折页机KH 82-P', nameEn: 'Stahlfolder KH 82-P', left: 21.3, top: 40.1, width: 11.6, height: 11.6, },
-        { id: '8', nameCn: 'Versa&hyphen;<br>fire EP', nameEn: 'Versa&hyphen;<br>fire EP', left: 35.6, top: 49.2, width: 6.2, height: 12.3, },
-        { id: '9', nameCn: 'Versa&hyphen;<br>fire EV', nameEn: 'Versa&hyphen;<br>fire EV', left: 42.7, top: 49.2, width: 6.2, height: 12.3, },
-        { id: '10', nameCn: '超霸106计算机直接制版机', nameEn: 'Supra&hyphen;<br>setter<br> 106', left: 51.8, top: 51.2, width: 11.2, height: 11.2, },
-        { id: '11', nameCn: '海德堡效能管家', nameEn: 'Lifecycle', left: 29, top: 31.5, width: 13.3, height: 8, },
-        { id: '12', nameCn: '培训', nameEn: 'Training', left: 52.8, top: 42.5, width: 10.5, height: 3.6, },
-        { id: '13', nameCn: '咨询', nameEn: 'Consultancy', left: 51.6, top: 46.8, width: 13, height: 3.6, },
-        { id: '14', nameCn: '捷拉斯', nameEn: 'Gallus', left: 64.5, top: 29.3, width: 5.5, height: 9.2, },
-        { id: '15', nameCn: '海德堡金融服务', nameEn: 'Financial Service', left: 57, top: 29.3, width: 6.9, height: 9.2, },
-        { id: '16', nameCn: '直播间', nameEn: 'Live&hyphen;<br>streaming Room', left: 61.4, top: 66.8, width: 9.8, height: 14.2, },
+        { id: '1', nameCn: '速霸CX 104-8+LYYL', nameEn: 'Speedmaster CX 104-8+LYYL', left: 20.3, top: 6.3, width: 49.4, height: 13, reportType: 'speedMasterCx', },
+        { id: '2', nameCn: '速霸XL 75-7+L ', nameEn: 'Speed&hyphen;<br>master XL 75-7+L ', left: 5.5, top: 22.5, width: 12.4, height: 34.8, reportType: 'speedMasterXl', },
+        { id: '3', nameCn: '速霸SX102-4-P', nameEn: 'Speed&hyphen;<br>master SX 102-4-P', left: 70.7, top: 6.3, width: 10.5, height: 29.7, reportType: 'speedMasterSx', },
+        { id: '4', nameCn: '数字工厂', nameEn: 'Digital<br>Factory', left: 48.6, top: 23.6, width: 13.6, height: 16.6, style: { justifyContent: 'flex-start', alignItems: 'flex-start', paddingTop: '1vw', paddingLeft: '2vw', }, reportType: 'digitalFactory', },
+        { id: '5', nameCn: '印通工作流程中心', nameEn: 'Prinect Center', left: 40.9, top: 43.4, width: 9.4, height: 4.9, reportType: 'prinectCenter', },
+        { id: '6', nameCn: '波拉自动裁切系统300 ', nameEn: 'Polar <br> Cutting <br> System 300 ', left: 5.5, top: 6.3, width: 12.4, height: 13, reportType: 'polarCuttingSystem', },
+        { id: '7', nameCn: '斯塔尔折页机KH 82-P', nameEn: 'Stahlfolder KH 82-P', left: 21.3, top: 40.1, width: 11.6, height: 11.6, reportType: 'stahlfolderKh', },
+        { id: '8', nameCn: 'Versa&hyphen;<br>fire EP', nameEn: 'Versa&hyphen;<br>fire EP', left: 35.6, top: 49.2, width: 6.2, height: 12.3, reportType: 'versafireEp', },
+        { id: '9', nameCn: 'Versa&hyphen;<br>fire EV', nameEn: 'Versa&hyphen;<br>fire EV', left: 42.7, top: 49.2, width: 6.2, height: 12.3, reportType: 'versafireEv', },
+        { id: '10', nameCn: '超霸106计算机直接制版机', nameEn: 'Supra&hyphen;<br>setter<br> 106', left: 51.8, top: 51.2, width: 11.2, height: 11.2, reportType: 'suprasetter', },
+        { id: '11', nameCn: '海德堡效能管家', nameEn: 'Lifecycle', left: 29, top: 31.5, width: 13.3, height: 8, reportType: 'lifecycle', },
+        { id: '12', nameCn: '培训', nameEn: 'Training', left: 52.8, top: 42.5, width: 10.5, height: 3.6, reportType: 'training', },
+        { id: '13', nameCn: '咨询', nameEn: 'Consultancy', left: 51.6, top: 46.8, width: 13, height: 3.6, reportType: 'consultancy', },
+        { id: '14', nameCn: '捷拉斯', nameEn: 'Gallus', left: 64.5, top: 29.3, width: 5.5, height: 9.2, reportType: 'gallus', },
+        { id: '15', nameCn: '海德堡金融服务', nameEn: 'Financial Service', left: 57, top: 29.3, width: 6.9, height: 9.2, reportType: 'financialService', },
+        { id: '16', nameCn: '直播间', nameEn: 'Live&hyphen;<br>streaming Room', left: 61.4, top: 66.8, width: 9.8, height: 14.2, reportType: 'livestreamingRoom', },
       ],
       areaListForBtn: [
-        { id: '1', nameCn: '速霸CX 104-8+LYYL', nameEn: 'Speedmaster CX 104-8+LYYL' },
-        { id: '2', nameCn: '速霸XL 75-7+L ', nameEn: 'Speedmaster XL 75-7+L ' },
-        { id: '3', nameCn: '速霸SX 102-4-P', nameEn: 'Speedmaster SX 102-4-P' },
-        { id: '4', nameCn: '数字工厂', nameEn: 'Digital Factory' },
-        { id: '5', nameCn: '印通工作流程中心', nameEn: 'Prinect Center' },
-        { id: '6', nameCn: '波拉自动裁切系统300 ', nameEn: 'Polar Cutting System 300 ' },
-        { id: '7', nameCn: '斯塔尔折页机KH 82-P', nameEn: 'Stahlfolder KH 82-P' },
-        { id: '8', nameCn: 'Versafire EP', nameEn: 'Versafire EP' },
-        { id: '9', nameCn: 'Versafire EV', nameEn: 'Versafire EV' },
-        { id: '10', nameCn: '超霸106计算机直接制版机', nameEn: 'Suprasetter 106' },
-        { id: '11', nameCn: '海德堡效能管家', nameEn: 'Lifecycle' },
-        { id: '12', nameCn: '培训', nameEn: 'Training' },
-        { id: '13', nameCn: '咨询', nameEn: 'Consultancy' },
-        { id: '14', nameCn: '捷拉斯', nameEn: 'Gallus' },
-        { id: '15', nameCn: '海德堡金融服务', nameEn: 'Financial Service' },
-        { id: '16', nameCn: '直播间', nameEn: 'Livestreaming Room' },
+        { id: '1', nameCn: '速霸CX 104-8+LYYL', nameEn: 'Speedmaster CX 104-8+LYYL', reportType: 'speedMasterCx', },
+        { id: '2', nameCn: '速霸XL 75-7+L ', nameEn: 'Speedmaster XL 75-7+L ', reportType: 'speedMasterXl', },
+        { id: '3', nameCn: '速霸SX 102-4-P', nameEn: 'Speedmaster SX 102-4-P', reportType: 'speedMasterSx', },
+        { id: '4', nameCn: '数字工厂', nameEn: 'Digital Factory', reportType: 'digitalFactory', },
+        { id: '5', nameCn: '印通工作流程中心', nameEn: 'Prinect Center', reportType: 'prinectCenter', },
+        { id: '6', nameCn: '波拉自动裁切系统300 ', nameEn: 'Polar Cutting System 300 ', reportType: 'polarCuttingSystem', },
+        { id: '7', nameCn: '斯塔尔折页机KH 82-P', nameEn: 'Stahlfolder KH 82-P', reportType: 'stahlfolderKh', },
+        { id: '8', nameCn: 'Versafire EP', nameEn: 'Versafire EP', reportType: 'versafireEp', },
+        { id: '9', nameCn: 'Versafire EV', nameEn: 'Versafire EV', reportType: 'versafireEv', },
+        { id: '10', nameCn: '超霸106计算机直接制版机', nameEn: 'Suprasetter 106', reportType: 'suprasetter', },
+        { id: '11', nameCn: '海德堡效能管家', nameEn: 'Lifecycle', reportType: 'lifecycle', },
+        { id: '12', nameCn: '培训', nameEn: 'Training', reportType: 'training', },
+        { id: '13', nameCn: '咨询', nameEn: 'Consultancy', reportType: 'consultancy', },
+        { id: '14', nameCn: '捷拉斯', nameEn: 'Gallus', reportType: 'gallus', },
+        { id: '15', nameCn: '海德堡金融服务', nameEn: 'Financial Service', reportType: 'financialService', },
+        { id: '16', nameCn: '直播间', nameEn: 'Livestreaming Room', reportType: 'livestreamingRoom', },
       ]
     }
   },
+  methods: {
+    onClickRegion(regionItem) {
+      globalApi.reportRegionClick(regionItem.reportType)
+    }
+  }
 }
 </script>
 
@@ -149,7 +156,7 @@ export default {
     right: 1vw;
     overflow: auto;
     > button {
-      margin-right: 2vw;
+      margin-right: 1.9vw;
       margin-bottom: 4.4vw;
       width: 45vw;
       height: 8vw;