nieyuge преди 2 години
родител
ревизия
4b2c891351
променени са 4 файла, в които са добавени 104 реда и са изтрити 3 реда
  1. 14 0
      src/pages/index.vue
  2. 17 0
      src/static/report/enum.ts
  3. 47 0
      src/static/report/index.ts
  4. 26 3
      src/static/utils/index.ts

+ 14 - 0
src/pages/index.vue

@@ -73,6 +73,8 @@
 <script setup lang="ts">
 import { onMounted } from 'vue';
 import { useRoute } from 'vue-router'
+import { Report } from '../static/report'
+import { businessType, pageSource } from '../static/report/enum'
 import { setStorage, storageKey } from '../static/utils/storage'
 import { getCookie, removeCookie } from '../static/utils'
 import headerLayer from '../components/header.vue';
@@ -125,6 +127,18 @@ onMounted(() => {
             removeCookie(storageKey.userInfo)
         }
     }
+
+    // Report
+    Report({
+        baseInfo: {
+            pageSource: pageSource.homePage,
+        },
+        params: {
+            eventData: {
+                businessType: businessType.pageView,
+            }
+        }
+    })
 })
 </script>
 

+ 17 - 0
src/static/report/enum.ts

@@ -0,0 +1,17 @@
+export const logType = {
+    //denet-event-log
+    'denet': '150',
+}
+
+export const businessType = {
+    buttonView: "buttonView",
+    buttonClick: "buttonClick",
+    pageView: "pageView",
+}
+
+export const objectType = {
+}
+
+export const pageSource = {
+    homePage: 'denet-web-home-page',
+}

+ 47 - 0
src/static/report/index.ts

@@ -0,0 +1,47 @@
+import axios from 'axios';
+import { logType } from './enum';
+import { getBrowser, getEnvConfig, getMid, getUserInfo, appVersionCode } from '../utils';
+
+const { logHost } = getEnvConfig();
+const logAPIUrl = logHost + '/log-center';
+
+export function Report(params: any) {
+    let baseInfo = params.baseInfo || {}
+    let {eventData = {}, extParams = {}} = params.params ||  {
+        params: {}
+    }
+    let isMobile = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
+    let platform = isMobile ? `mobile` : `pc`;
+    let browser = getBrowser();
+    let userInfo = getUserInfo();
+    let extData = {
+        url: location.href,
+        browser,
+        platform,
+        ...eventData,
+    }
+    eventData = wrapObject(extData)
+    params.baseInfo = {
+        mid: getMid(),
+        loginUid: userInfo && userInfo.uid || '',
+        token: userInfo && userInfo.accessToken || '',
+        appVersionCode,
+        ...baseInfo,
+    }
+    params.params.logType = logType.denet;
+    params.params.eventData = JSON.stringify(eventData)
+    params.params.extParams  = JSON.stringify(extParams)
+    
+    axios.post(`${logAPIUrl}/statistics/uploadLogFromFrontend`, params)
+}
+
+function wrapObject(extParams: any) {
+    if (typeDecide(extParams, 'Object')) {
+        return extParams
+    }
+    return { 'defaultExt': extParams }
+}
+
+function typeDecide(o: any, type: string) {
+    return Object.prototype.toString.call(o) === `[object ${type}]`;
+}

+ 26 - 3
src/static/utils/index.ts

@@ -9,23 +9,27 @@ export const callBackUrl = process.env.NODE_ENV === `production` ? `https://dene
 
 // 获取host
 export const getEnvConfig = () => {
-    let host
+    let host, logHost
 
     // @ts-ignore
     switch(process.env.NODE_ENV) {
         case `production`:
             host = `https://api.denetme.net`
+            logHost = `https://log.weiqumeta.com`
             break;
         case `pre`:
             host = `https://preapi.denetme.net`
+            logHost = `https://prelog.weiqumeta.com`
             break;
         default:
             host = `https://testapi.denetme.net`
+            logHost = `https://testlog.weiqumeta.com`
             break;
     }
 
     return {
-        host
+        host,
+        logHost,
     };
 }
 
@@ -100,4 +104,23 @@ export function debounce(fn: any, delay: number) {
             fn.apply(context, args);
         }, delay);
     };
-  }
+}
+
+export function getBrowser() {
+    let browser;
+    let UserAgent = navigator.userAgent.toLowerCase();
+    if (UserAgent.indexOf('chrome') > -1 || UserAgent.indexOf('crios') > -1) {
+        browser = `Chrome`
+    } else if (UserAgent.indexOf('firefox') > -1) {
+        browser = `Firefox`
+    } else if (UserAgent.indexOf('opera') > -1) {
+        browser = `Opera`
+    } else if (UserAgent.indexOf('safari') > -1 && UserAgent.indexOf('chrome') == -1) {
+        browser = `Safari`
+    } else if (UserAgent.indexOf('edge') > -1) {
+        browser = `Edge`
+    } else {
+        browser = `Other`
+    }
+    return browser;
+}