skyblued 2 years ago
parent
commit
1b94a0b6fa

+ 49 - 0
src/helpers/hooks.ts

@@ -1,4 +1,5 @@
 import { reactive } from 'vue'
+import { postMessage } from './native-message'
 import request from './request'
 
 // 搜索关键字
@@ -83,3 +84,51 @@ export const useList = async (
   lockLoad = false
   return params
 }
+
+const eventTracks = {
+  专辑: 'klx_album',
+  视频课: 'klx_videoClass',
+  直播课: 'klx_liveClass',
+  达人风采: 'klx_talentElegant',
+  热门资讯: 'klx_hotInformation',
+  小酷AI功能埋点: 'klx_xiaokuAI',
+  我的乐谱: 'klx_myMusic',
+  评测记录: 'klx_myEvaluation',
+  订单: 'klx_myOrder',
+  交易记录: 'klx_myTrade',
+  优惠券: 'klx_myCoupon',
+  帮助中心: 'klx_helpCenter',
+  商品列表: 'klx_goods',
+  商品详情: 'klx_goodDetail',
+  购买支付: 'klx_payment',
+  取消支付: 'klx_cancelPayment'
+}
+type eventName =
+  | '专辑'
+  | '视频课'
+  | '直播课'
+  | '达人风采'
+  | '热门资讯'
+  | '小酷AI功能埋点'
+  | '我的乐谱'
+  | '评测记录'
+  | '订单'
+  | '交易记录'
+  | '优惠券'
+  | '帮助中心'
+  | '商品列表'
+  | '商品详情'
+  | '购买支付'
+  | '取消支付'
+
+/**
+ * 事件埋点
+ */
+export const useEventTracking = (name: eventName) => {
+  postMessage({
+    api: 'setEventTracking',
+    content: {
+      type: eventTracks[name]
+    }
+  })
+}

+ 2 - 0
src/student/live-class/index.tsx

@@ -10,6 +10,7 @@ import LiveItem from './live-item'
 import banner from '../video-class/images/banner.png'
 import { state } from '@/state'
 import OrganSearch from '../practice-class/model/organ-search'
+import { useEventTracking } from '@/helpers/hooks'
 
 export default defineComponent({
   name: 'liveClass',
@@ -53,6 +54,7 @@ export default defineComponent({
     this.params.subjectName = subjectName || state.user.data?.subjectName || ''
 
     sessionStorage.removeItem('liveClassSubjectId')
+    useEventTracking('直播课')
   },
   methods: {
     onSort() {

+ 2 - 0
src/student/member-center/member-record.tsx

@@ -19,6 +19,7 @@ import { formatterDate } from '@/helpers/utils'
 import dayjs from 'dayjs'
 import ColResult from '@/components/col-result'
 import { postMessage } from '@/helpers/native-message'
+import { useEventTracking } from '@/helpers/hooks'
 
 export const getAssetsHomeFile = (fileName: string) => {
   const path = `./images/${fileName}`
@@ -49,6 +50,7 @@ export default defineComponent({
   },
   async mounted() {
     this.getList()
+    useEventTracking('评测记录')
   },
   methods: {
     onSearch() {

+ 2 - 0
src/student/teacher-dependent/teacher-home.tsx

@@ -12,6 +12,7 @@ import { listenerMessage } from '@/helpers/native-message'
 import { useEventListener, useWindowScroll } from '@vueuse/core'
 import TeacherHeader from './model/teacher-header'
 import { useRect } from '@vant/use'
+import { useEventTracking } from '@/helpers/hooks'
 
 export const getAssetsHomeFile = (fileName: string) => {
   const path = `./images/${fileName}`
@@ -57,6 +58,7 @@ export default defineComponent({
         this.backIconColor = 'white'
       }
     })
+    useEventTracking('达人风采')
   },
   methods: {
     async getTeacherDetail() {

+ 2 - 0
src/student/trade/index.tsx

@@ -3,6 +3,7 @@ import { defineComponent } from 'vue'
 import styles from './index.module.less'
 import List from './list'
 import { useRect } from '@vant/use'
+import { useEventTracking } from '@/helpers/hooks'
 
 export default defineComponent({
   name: 'tradeRecord',
@@ -18,6 +19,7 @@ export default defineComponent({
       // console.log(height, (this as any).$refs.tabs)
       this.height = height
     })
+    useEventTracking('交易记录')
   },
   render() {
     return (

+ 4 - 0
src/teacher/piano-room/recharge-record/index.tsx

@@ -22,6 +22,7 @@ import dayjs from 'dayjs'
 import ColResult from '@/components/col-result'
 import { tradeOrder } from '../tradeOrder'
 import ColHeader from '@/components/col-header'
+import { useEventTracking } from '@/helpers/hooks'
 
 export default defineComponent({
   name: 'list',
@@ -51,6 +52,9 @@ export default defineComponent({
       }
     }
   },
+  mounted(){
+    useEventTracking('交易记录')
+  },
   methods: {
     async getList() {
       if (this.loading) return

+ 2 - 0
src/views/article-center/help-center-detail.tsx

@@ -1,4 +1,5 @@
 import ColHeader from '@/components/col-header'
+import { useEventTracking } from '@/helpers/hooks'
 import request from '@/helpers/request'
 import dayjs from 'dayjs'
 import { ImagePreview, NavBar } from 'vant'
@@ -38,6 +39,7 @@ export default defineComponent({
       const documentTitle = catalogId == 2 ? '公告详情' : '帮助中心详情'
       document.title = documentTitle
     } catch {}
+    useEventTracking('帮助中心')
   },
   methods: {
     onShowImg(target: any) {

+ 4 - 0
src/views/article-center/help-center.tsx

@@ -4,6 +4,7 @@ import { Cell, List, Sticky } from 'vant'
 import { defineComponent } from 'vue'
 import ColSearch from '@/components/col-search'
 import ColResult from '@/components/col-result'
+import { useEventTracking } from '@/helpers/hooks'
 
 export default defineComponent({
   name: 'help-center',
@@ -34,6 +35,9 @@ export default defineComponent({
       }
     }
   },
+  mounted(){
+    useEventTracking('帮助中心')
+  },
   methods: {
     async getList() {
       try {

+ 4 - 1
src/views/article-center/special.tsx

@@ -5,6 +5,7 @@ import { defineComponent } from 'vue'
 import styles from './special.module.less'
 import ColSearch from '@/components/col-search'
 import ColResult from '@/components/col-result'
+import { useEventTracking } from '@/helpers/hooks'
 
 export default defineComponent({
   name: 'special',
@@ -25,7 +26,9 @@ export default defineComponent({
       }
     }
   },
-  async mounted() {},
+  async mounted() {
+    useEventTracking('热门资讯')
+  },
   methods: {
     async getList() {
       try {

+ 2 - 0
src/views/article-center/theory.tsx

@@ -14,6 +14,7 @@ import ColSearch from '@/components/col-search'
 import ColResult from '@/components/col-result'
 import { postMessage, promisefiyPostMessage } from '@/helpers/native-message'
 import { state } from '@/state'
+import { useEventTracking } from '@/helpers/hooks'
 
 export default defineComponent({
   name: 'special',
@@ -45,6 +46,7 @@ export default defineComponent({
 
     }
     this.getList()
+    useEventTracking('热门资讯')
   },
   methods: {
     async getList() {

+ 2 - 0
src/views/coupons/index.tsx

@@ -1,3 +1,4 @@
+import { useEventTracking } from '@/helpers/hooks'
 import request from '@/helpers/request'
 import { state } from '@/state'
 import { Tab, Tabs } from 'vant'
@@ -27,6 +28,7 @@ export default defineComponent({
     } catch {
       // TODO: handle
     }
+    useEventTracking('优惠券')
   },
   render() {
     return (

+ 4 - 0
src/views/goods-order/index.tsx

@@ -8,6 +8,7 @@ import { orderState } from '@/views/shop-mall/shop-mall'
 import { cartConfirm } from '@/views/cart/cart'
 import Item from './item'
 import AfterSaleBtns from './components/after-sale-btns'
+import { useEventTracking } from '@/helpers/hooks'
 
 export default defineComponent({
   name: 'shop-order',
@@ -36,6 +37,9 @@ export default defineComponent({
       this.getList()
     }
   },
+  mounted(){
+    useEventTracking('订单')
+  },
   methods: {
     init() {
       this.page.pageNum = 1

+ 2 - 1
src/views/live-class/index.tsx

@@ -10,7 +10,7 @@ import LiveItem from './live-item'
 import banner from '../video-class/images/banner.png'
 import { state } from '@/state'
 import OrganSearch from '@/student/practice-class/model/organ-search'
-import { SubjectEnum, useSubjectId } from '@/helpers/hooks'
+import { SubjectEnum, useEventTracking, useSubjectId } from '@/helpers/hooks'
 
 export default defineComponent({
   name: 'liveClass',
@@ -65,6 +65,7 @@ export default defineComponent({
       })
     }
     this.getList()
+    useEventTracking('直播课')
   },
   methods: {
     onSort() {

+ 3 - 0
src/views/music/album-detail/index.tsx

@@ -21,6 +21,7 @@ import Title from '../component/title'
 import Song from '../component/song'
 import ColResult from '@/components/col-result'
 import MusicGrid from '../component/music-grid'
+import { useEventTracking } from '@/helpers/hooks'
 
 const noop = () => {}
 
@@ -104,6 +105,8 @@ export default defineComponent({
           })
         }
       })
+
+      useEventTracking('专辑')
     })
 
     const toggleFavorite = async (id: number) => {

+ 4 - 1
src/views/music/personal/index.tsx

@@ -8,6 +8,7 @@ import Album from './album'
 
 import styles from './index.module.less'
 import { getRandomKey } from '../music'
+import { useEventTracking } from '@/helpers/hooks'
 
 export default defineComponent({
   name: 'MusicPersonal',
@@ -17,7 +18,9 @@ export default defineComponent({
     const personal = ref()
     const collection = ref()
     const practice = ref()
-
+    onMounted(() => {
+      useEventTracking('我的乐谱')
+    })
     return () => {
       return (
         <div class={styles.personal}>

+ 3 - 0
src/views/order-detail/payment/index.tsx

@@ -19,6 +19,7 @@ import { defineComponent, PropType } from 'vue'
 import styles from './index.module.less'
 import { state } from '@/state'
 import { orderStatus } from '../orderStatus'
+import { useEventTracking } from '@/helpers/hooks'
 
 interface IOrderInfo {
   orderNo: string | number
@@ -80,6 +81,7 @@ export default defineComponent({
         .then(() => {})
         .catch(async () => {
           this.onCancel()
+          useEventTracking('取消支付')
         })
     },
     async onCancel(noBack?: boolean) {
@@ -142,6 +144,7 @@ export default defineComponent({
       } catch (e: any) {
         console.log(e)
       }
+      useEventTracking('购买支付')
     },
     paymentOperation(res: any) {
       console.log(res, 'paymentOperation', this.paymentType, this.orderInfo)

+ 2 - 0
src/views/order-detail/use-coupons/choice-coupon.tsx

@@ -1,4 +1,5 @@
 import ColResult from '@/components/col-result'
+import { useEventTracking } from '@/helpers/hooks'
 import request from '@/helpers/request'
 import { state } from '@/state'
 import Item from '@/views/coupons/item'
@@ -55,6 +56,7 @@ export default defineComponent({
     const canUsed = this.couponList.filter((list: any) => list.disabled)
     this.list = [...canUsable, ...canUsed]
     this.calcCoupon()
+    useEventTracking('优惠券')
   },
   methods: {
     // async getList() {

+ 2 - 0
src/views/shop-mall/goods-detail/index.tsx

@@ -31,6 +31,7 @@ import ColHeader from '@/components/col-header'
 import iconShare from '../images/icon-share.svg'
 import ColShare from '@/components/col-share'
 import { state } from '@/state'
+import { useEventTracking } from '@/helpers/hooks'
 
 export default defineComponent({
   name: 'goods-detail',
@@ -130,6 +131,7 @@ export default defineComponent({
       this.detailMobileHtml = result.product.detailMobileHtml
     } catch {}
     this.getCartCount()
+    useEventTracking('商品详情')
   },
   methods: {
     onPreview(index: number) {

+ 3 - 0
src/views/shop-mall/goods-list/index.tsx

@@ -6,6 +6,7 @@ import iconFilter from '@/common/images/icon_filter.png'
 import GoodsFilterList from '../modal/goods-filter-list'
 import ColSearch from '@/components/col-search'
 import request from '@/helpers/request'
+import { useEventTracking } from '@/helpers/hooks'
 export default defineComponent({
   name: 'goods-list',
   data() {
@@ -75,6 +76,8 @@ export default defineComponent({
       } catch (err) {}
     }
     this.tabListShow = true
+
+    useEventTracking('商品列表')
   },
   methods: {
     onFilter(n: number) {

+ 3 - 1
src/views/video-class/index.tsx

@@ -11,7 +11,7 @@ import request from '@/helpers/request'
 import ColResult from '@/components/col-result'
 import { state } from '@/state'
 import OrganSearch from '@/student/practice-class/model/organ-search'
-import { SubjectEnum, useSubjectId } from '@/helpers/hooks'
+import { SubjectEnum, useEventTracking, useSubjectId } from '@/helpers/hooks'
 
 export default defineComponent({
   name: 'VideoClass',
@@ -66,6 +66,8 @@ export default defineComponent({
       })
     }
     this.getList()
+
+    useEventTracking('视频课')
   },
   methods: {
     async getList() {