From d50a3ed44e2edab2a7a661c43491c3aa42c57794 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期四, 25 九月 2025 14:17:05 +0800
Subject: [PATCH] 用户行为分享基础埋点

---
 pages/kitchen/KitchenVideo.vue              |   36 ++
 pages/product/goods.vue                     |   36 ++
 pages/prize/PrizeDetail/PrizeDetail.vue     |   39 ++
 api/userAction.js                           |   33 ++
 pages/mine/activity/reportActivity.vue      |   39 ++
 pages/cart/coupon/myCoupon.vue              |   35 ++
 pages/cart/payment/payOrder.vue             |   36 ++
 pages/video/video-goods-detail.vue          |   37 ++
 pages/cart/payment/success.vue              |   35 ++
 pages/health/healthVideo.vue                |   37 ++
 pages/tabbar/index/home.vue                 |   42 ++
 pages/cusbar/video/video.vue                |   38 ++
 pages/order/afterSales/afterSalesSelect.vue |   38 ++
 pages/order/myOrder.vue                     |   33 ++
 pages/mine/activity/detail.vue              |   36 ++
 pages/cart/coupon/couponCenter.vue          |   38 ++
 pages/tabbar/user/my.vue                    |   35 ++
 pages/order/orderDetail.vue                 |   36 ++
 pages/order/afterSales/afterSales.vue       |   36 ++
 pages/order/afterSales/afterSalesDetail.vue |   37 ++
 pages/video/video-goods-detail-swiper.vue   |   34 ++
 pages/cusbar/cart/cartList.vue              |   39 ++
 pages/commodity-square/commoditySquare.vue  |   38 ++
 pages/order/fillorder.vue                   |   35 ++
 24 files changed, 855 insertions(+), 23 deletions(-)

diff --git a/api/userAction.js b/api/userAction.js
new file mode 100644
index 0000000..6aae2f7
--- /dev/null
+++ b/api/userAction.js
@@ -0,0 +1,33 @@
+/**
+ * 娲诲姩鐩稿叧API
+ */
+import { http, Method } from "@/utils/request.js";
+
+import api from "@/config/api.js";
+
+/**
+ * 鑾峰彇浼氳瘽id
+ * 
+ * @param params
+ */
+ export function getSessionId() {
+  return http.request({
+    url: "/lmk/action-record/sessionId",
+    method: Method.GET,
+    needToken: true
+  });
+}
+/**
+ * 鎻掑叆鐢ㄦ埛琛屼负
+ * 
+ * @param params
+ */
+ export function userAction(data) {
+  return http.request({
+    url: "/lmk/action-record",
+    method: Method.POST,
+    needToken: true,
+	data:data
+  });
+}
+
diff --git a/pages/cart/coupon/couponCenter.vue b/pages/cart/coupon/couponCenter.vue
index 958c482..78a8618 100644
--- a/pages/cart/coupon/couponCenter.vue
+++ b/pages/cart/coupon/couponCenter.vue
@@ -54,6 +54,7 @@
 	import {
 		getAllCoupons
 	} from "@/api/promotions.js";
+	import { getSessionId, userAction } from "@/api/userAction.js";
 	export default {
 		data() {
 			return {
@@ -65,10 +66,45 @@
 					pageSize: 10,
 				},
 				storeId: "", //搴楅摵 id,
-				couponData: ""
+				couponData: "",
+        sendOnShow:false,
+				  pageSessionNo:"",
+				  actionParam:{
+						sessionId:'',
+						actionType:"PAGE",
+						joinType:"SELF",
+						pageCode:"COUPON_CENTER",
+						pageParams:"{}",
+						pageStatus:"JOIN",
+						pageType:"LIST"
+					}
 			};
 		},
+    onUnload() {
+      let	param = this.actionParam;
+      if (this.sendOnShow)return
+      param.pageStatus = "LEAVE"
+      userAction(param)
+    },
+    onHide() {
+      this.startHidenTime = Date.now()
+      let	param = this.actionParam;
+      this.sendOnShow = true;
+      param.pageStatus = "LEAVE"
+      userAction(param)
+    },
+		onShow() {
+		  getSessionId().then(res=>{
+			this.pageSessionNo = res.data.data
+			if(this.pageSessionNo){
+			let	param = this.actionParam;
+				param.sessionId = this.pageSessionNo
+				userAction(param)
+			}
+		  })		
+		},
 		onLoad(option) {
+			this.actionParam.pageParams = JSON.stringify(option)
 			this.storeId = option.storeId;
 			this.getCoupon();
 		},
diff --git a/pages/cart/coupon/myCoupon.vue b/pages/cart/coupon/myCoupon.vue
index afacc3b..b99614f 100644
--- a/pages/cart/coupon/myCoupon.vue
+++ b/pages/cart/coupon/myCoupon.vue
@@ -126,6 +126,7 @@
 import '@/components/uview-components/uview-ui';
 
 import { getMemberCoupons } from "@/api/members.js";
+import { getSessionId, userAction } from "@/api/userAction.js";
 
 export default {
   data() {
@@ -171,10 +172,44 @@
         },
       ],
       couponList: [], //浼樻儬鍒稿垪琛�
+	  pageSessionNo:"",
+	  actionParam:{
+			sessionId:'',
+			actionType:"PAGE",
+			joinType:"SELF",
+			pageCode:"MY_COUPON",
+			pageParams:"{}",
+			pageStatus:"JOIN",
+			pageType:"LIST"
+		}
     };
   },
+  onUnload() {
+    let	param = this.actionParam;
+    if (this.sendOnShow)return
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onHide() {
+    this.startHidenTime = Date.now()
+    let	param = this.actionParam;
+    this.sendOnShow = true;
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onLoad(options) {
+	this.actionParam.pageParams = JSON.stringify(options)
 
+  },
   onShow() {
+	  getSessionId().then(res=>{
+		this.pageSessionNo = res.data.data
+		if(this.pageSessionNo){
+		let	param = this.actionParam;
+			param.sessionId = this.pageSessionNo
+			userAction(param)
+		}
+	  })	
     this.navList[this.tabCurrentIndex].params.pageNumber = 1;
     this.navList[this.tabCurrentIndex].dataList = [];
     this.getData();
diff --git a/pages/cart/payment/payOrder.vue b/pages/cart/payment/payOrder.vue
index f1c642f..a965b8c 100644
--- a/pages/cart/payment/payOrder.vue
+++ b/pages/cart/payment/payOrder.vue
@@ -46,6 +46,7 @@
 	import '@/components/uview-components/uview-ui'
 	import * as API_Trade from "@/api/trade";
 	import {payCallback} from '@/api/members'
+	import { getSessionId, userAction } from "@/api/userAction.js";
 	export default {
 		data() {
 			return {
@@ -71,12 +72,45 @@
 				walletValue: 0.0,
 				// 鏀粯鍊掕鏃�
 				autoCancel: 0,
+				pageSessionNo:"",
+				actionParam:{
+						sessionId:'',
+						actionType:"PAGE",
+						joinType:"SELF",
+						pageCode:"PAY_ORDER",
+						pageParams:"{}",
+						pageStatus:"JOIN",
+						pageType:"DETAIL"
+					}
 			
 			};
 		},
+    onUnload() {
+      let	param = this.actionParam;
+      if (this.sendOnShow)return
+      param.pageStatus = "LEAVE"
+      userAction(param)
+    },
+    onHide() {
+      this.startHidenTime = Date.now()
+      let	param = this.actionParam;
+      this.sendOnShow = true;
+      param.pageStatus = "LEAVE"
+      userAction(param)
+    },
+		onShow() {
+		getSessionId().then(res=>{
+			this.pageSessionNo = res.data.data
+			if(this.pageSessionNo){
+			let	param = this.actionParam;
+				param.sessionId = this.pageSessionNo
+				userAction(param)
+			}
+		})		
+		},
 		onLoad(val) {
 			this.routerVal = val;
-
+			this.actionParam.pageParams = JSON.stringify(val)
 			//鍒濆鍖栧弬鏁�
 			// #ifdef APP-PLUS
 			this.paymentType = "APP";
diff --git a/pages/cart/payment/success.vue b/pages/cart/payment/success.vue
index 9b16e07..46e78aa 100644
--- a/pages/cart/payment/success.vue
+++ b/pages/cart/payment/success.vue
@@ -54,6 +54,7 @@
 </template>
 <script>
 // import goodsRecommend from "@/pages/cart/m-goods-recommend/index.vue";
+import { getSessionId, userAction } from "@/api/userAction.js";
 export default {
   data() {
     return {
@@ -64,6 +65,16 @@
       payPrice: 0,
       goodsList: [],
       activeColor: this.$mainColor,
+	  pageSessionNo:"",
+	  actionParam:{
+	  		sessionId:'',
+	  		actionType:"PAGE",
+	  		joinType:"SELF",
+	  		pageCode:"PAY_SUCCESS",
+	  		pageParams:"{}",
+	  		pageStatus:"JOIN",
+	  		pageType:"DETAIL"
+	  	}
     };
   },
   // components: {
@@ -83,7 +94,31 @@
       }
     },
   },
+  onUnload() {
+    let	param = this.actionParam;
+    if (this.sendOnShow)return
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onHide() {
+    this.startHidenTime = Date.now()
+    let	param = this.actionParam;
+    this.sendOnShow = true;
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onShow() {
+  	getSessionId().then(res=>{
+  		this.pageSessionNo = res.data.data
+  		if(this.pageSessionNo){
+  		let	param = this.actionParam;
+  			param.sessionId = this.pageSessionNo
+  			userAction(param)
+  		}
+  	})	
+  },
   onLoad(options) {
+	this.actionParam.pageParams = JSON.stringify(options)
     this.paymentMethod = options.paymentMethod || "";
     this.from = options.from || "";
     this.payPrice = options.payPrice || 0;
diff --git a/pages/commodity-square/commoditySquare.vue b/pages/commodity-square/commoditySquare.vue
index 3d23697..0601ad1 100644
--- a/pages/commodity-square/commoditySquare.vue
+++ b/pages/commodity-square/commoditySquare.vue
@@ -100,6 +100,7 @@
 
 <script>
 	import TopBar from "@/components/TopBar.vue";
+	import { getSessionId, userAction } from "@/api/userAction.js";
 	import {
 		getCategoryList,
 		getGoodsList,
@@ -155,6 +156,17 @@
 					order: 'asc',
 					sort: 'goodsSort'
 				},
+				  pageSessionNo:"",
+          sendOnShow:false,
+				  actionParam:{
+						sessionId:'',
+						actionType:"PAGE",
+						joinType:"SELF",
+						pageCode:"SHOPPING_SQUARE",
+						pageParams:"{}",
+						pageStatus:"JOIN",
+						pageType:"LIST"
+					}
 			}
 		},
 		methods: {
@@ -413,8 +425,32 @@
 				console.log(this.maxPages)
 			}
 		},
+    onUnload() {
+      let	param = this.actionParam;
+      if (this.sendOnShow)return
+      param.pageStatus = "LEAVE"
+      userAction(param)
+    },
+    onHide() {
+      this.startHidenTime = Date.now()
+      let	param = this.actionParam;
+      this.sendOnShow = true;
+      param.pageStatus = "LEAVE"
+      userAction(param)
+    },
+		onShow() {
+		  getSessionId().then(res=>{
+			this.pageSessionNo = res.data.data
+			if(this.pageSessionNo){
+			let	param = this.actionParam;
+				param.sessionId = this.pageSessionNo
+				userAction(param)
+			}
+		  })		
+		},
+		async onLoad(options) {
+			this.actionParam.pageParams = JSON.stringify(options)
 
-		async onLoad() {
 			await this.getCartList();
 			// 鑾峰彇鐘舵�佹爮楂樺害
 			const systemInfo = uni.getSystemInfoSync();
diff --git a/pages/cusbar/cart/cartList.vue b/pages/cusbar/cart/cartList.vue
index da6bd4a..594c272 100644
--- a/pages/cusbar/cart/cartList.vue
+++ b/pages/cusbar/cart/cartList.vue
@@ -188,6 +188,7 @@
 import '@/components/uview-components/uview-ui';
 import * as API_Trade from "@/api/trade";
 import { debounce } from "@/utils/tools.js";
+import { getSessionId, userAction } from "@/api/userAction.js";
 // import uniNumberBox from '@/components/uni-number-box'
 export default {
   data() {
@@ -220,7 +221,18 @@
       checkout: false, //鍏ㄩ�夋寜閽�
       WEIXIN_num: "", //璐墿杞﹀吋瀹瑰井淇℃杩涘櫒
 	  marginBottom: 0 ,// 搴曢儴瀹夊叏鍖哄煙
-	  windowHeight: 0 // 鍙娇鐢ㄥ睆骞曢珮搴�
+	  windowHeight: 0 ,// 鍙娇鐢ㄥ睆骞曢珮搴�
+	  pageSessionNo:"",
+    sendOnShow:false,
+	  actionParam:{
+			sessionId:'',
+			actionType:"PAGE",
+			joinType:"SELF",
+			pageCode:"CART_LIST",
+			pageParams:"{}",
+			pageStatus:"JOIN",
+			pageType:"DETAIL"
+		}
     };
   },
 
@@ -235,10 +247,35 @@
   onPullDownRefresh(){
     this.getCardData();
   },
+  onUnload() {
+    let	param = this.actionParam;
+    if (this.sendOnShow)return
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onHide() {
+    this.startHidenTime = Date.now()
+    let	param = this.actionParam;
+    this.sendOnShow = true;
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onLoad(options) {
+  		this.actionParam.pageParams = JSON.stringify(options)
+
+  },
   /**
    * 鍒濆鍖栦俊鎭�
    */
   onShow() {
+	  getSessionId().then(res=>{
+		this.pageSessionNo = res.data.data
+		if(this.pageSessionNo){
+		let	param = this.actionParam;
+			param.sessionId = this.pageSessionNo
+			userAction(param)
+		}
+	  })	
     this.deleteShow ? (this.deleteShow = false) : true;
 	this.getCardData();
 		// if (this.$refs.swiperAction) {
diff --git a/pages/cusbar/video/video.vue b/pages/cusbar/video/video.vue
index 68065a6..4faf326 100644
--- a/pages/cusbar/video/video.vue
+++ b/pages/cusbar/video/video.vue
@@ -213,6 +213,7 @@
 import { getRecommendTag3 } from "@/api/video-tag.js";
 import { getFileKey } from "@/utils/file.js";
 import { getVideoGoodsList } from "@/api/goods.js";
+import { getSessionId, userAction } from "@/api/userAction.js";
 
 export default {
   components: {MyTag},
@@ -267,7 +268,17 @@
 	  screenWidth: 375,
 	  gap: 10, // 鍥剧墖闂磋窛
 	  windowHeight: 0,
-	  marginBottom: 0
+	  marginBottom: 0,
+	  pageSessionNo:"",
+	  actionParam:{
+			sessionId:'',
+			actionType:"PAGE",
+			joinType:"SELF",
+			pageCode:"PUBLISH_VIDEO",
+			pageParams:"{}",
+			pageStatus:"JOIN",
+			pageType:"LIST"
+		}
     };
   },
   computed: {
@@ -288,7 +299,22 @@
 	  return (this.screenWidth - (this.gap * 4) - 20) / 3
 	}
   },
-  onLoad() {
+  onUnload() {
+    let	param = this.actionParam;
+    if (this.sendOnShow)return
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onHide() {
+    this.startHidenTime = Date.now()
+    let	param = this.actionParam;
+    this.sendOnShow = true;
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onLoad(options) {
+	this.actionParam.pageParams = JSON.stringify(options)
+
     // 鑾峰彇灞忓箷瀹藉害
 	const systemInfo = uni.getSystemInfoSync()
 	this.screenWidth = systemInfo.windowWidth
@@ -299,6 +325,14 @@
 	this.getVideoGoodsByEs()
   },
   onShow() {
+	  getSessionId().then(res=>{
+		this.pageSessionNo = res.data.data
+		if(this.pageSessionNo){
+		let	param = this.actionParam;
+			param.sessionId = this.pageSessionNo
+			userAction(param)
+		}
+	  })	 
   	this.initCOS()
 	// 鍒濆鍖栨帹鑽愭爣绛�
 	this.getRecommendTags()
diff --git a/pages/health/healthVideo.vue b/pages/health/healthVideo.vue
index 4b17775..cb9bc81 100644
--- a/pages/health/healthVideo.vue
+++ b/pages/health/healthVideo.vue
@@ -264,6 +264,7 @@
 import { silentLogin } from "@/api/connect.js";
 import { getUserInfo } from "@/api/members";
 import storage from "@/utils/storage.js";
+import { getSessionId, userAction } from "@/api/userAction.js";
 export default {
   components: {TopBar},
   computed: {
@@ -353,10 +354,28 @@
 		similarlyNomore: false, // 鏄惁杩樻湁鏇村鐩镐技瑙嗛
 		similaryVideoIndex: 0, // 鐩镐技瑙嗛鐨勬挱鏀句綅缃�
 		similarlyLoading: false, // 鐩镐技瑙嗛鍔犺浇
-		marginBottom: 0 // 搴曢儴瀹夊叏鍖哄煙
+		marginBottom: 0 ,// 搴曢儴瀹夊叏鍖哄煙
+		  pageSessionNo:"",
+		  actionParam:{
+				sessionId:'',
+				actionType:"PAGE",
+				joinType:"SELF",
+				pageCode:"HEALTH_VIDEO",
+				pageParams:"{}",
+				pageStatus:"JOIN",
+				pageType:"DETAIL"
+			}
     }
   },
   onShow() {
+	  getSessionId().then(res=>{
+		this.pageSessionNo = res.data.data
+		if(this.pageSessionNo){
+		let	param = this.actionParam;
+			param.sessionId = this.pageSessionNo
+			userAction(param)
+		}
+	  })	
 	  // const token = storage.getAccessToken();
 	  // if (! token) {
 		 //  this.wxSilentLogin(() => {
@@ -371,8 +390,18 @@
 		  this.totalHidenTime += duration
 	  }
   },
+  onUnload() {
+    let	param = this.actionParam;
+    if (this.sendOnShow)return
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
   onHide() {
-  	this.startHidenTime = Date.now()
+    this.startHidenTime = Date.now()
+    let	param = this.actionParam;
+    this.sendOnShow = true;
+    param.pageStatus = "LEAVE"
+    userAction(param)
   },
   onLoad(option) {
 	  this.marginBottom = uni.getSystemInfoSync().safeAreaInsets.bottom
@@ -392,12 +421,16 @@
 		queryParam.shareType = shareType
 		queryParam.source = source
 	    console.log('瑙f瀽鍙傛暟:', { shareType, videoId,source });
+		this.actionParam.pageParams = JSON.stringify(params)
+		this.actionParam.joinType = 'SHARE'
 	  }
 	  const token = storage.getAccessToken();
 	  if (! token) {
 		  this.wxSilentLogin(() => {
 			  // 鍒ゆ柇鏄笉鏄偣鍑诲垎浜摼鎺ヨ繘鏉ョ殑
 			  if (option.userId && option.videoId) {
+				  this.actionParam.pageParams = JSON.stringify(option)
+				  this.actionParam.joinType = 'SCAN'
 				    queryParam.videoId = option.videoId
 				  // 淇濆瓨鍒嗕韩鐐瑰嚮璁板綍
 				  saveShareClickRecord({refId: option.videoId, shareUserId: option.userId})
diff --git a/pages/kitchen/KitchenVideo.vue b/pages/kitchen/KitchenVideo.vue
index f69b41b..a2b54e4 100644
--- a/pages/kitchen/KitchenVideo.vue
+++ b/pages/kitchen/KitchenVideo.vue
@@ -285,7 +285,7 @@
 } from "@/api/collect.js";
 import { saveShare, saveShareClickRecord } from "@/api/share.js";
 import storage from "@/utils/storage.js";
-
+import { getSessionId, userAction } from "@/api/userAction.js";
 export default {
   computed: {
     hasPlayTime() {
@@ -387,10 +387,28 @@
 	  similarlyNomore: false, // 鏄惁杩樻湁鏇村鐩镐技瑙嗛
 	  similaryVideoIndex: 0, // 鐩镐技瑙嗛鐨勬挱鏀句綅缃�
 	  similarlyLoading: false, // 鐩镐技瑙嗛鍔犺浇
-	  marginBottom: 0 // 搴曢儴瀹夊叏鍖哄煙
+	  marginBottom: 0 ,// 搴曢儴瀹夊叏鍖哄煙
+	  pageSessionNo:"",
+	  actionParam:{
+		sessionId:'',
+		actionType:"PAGE",
+		joinType:"SELF",
+		pageCode:"KITCHEN_VIDEO",
+		pageParams:"{}",
+		pageStatus:"JOIN",
+		pageType:"LIST"
+		}
     }
   },
   onShow() {
+	  getSessionId().then(res=>{
+	  		this.pageSessionNo = res.data.data
+	  		if(this.pageSessionNo){
+	  		let	param = this.actionParam;
+	  			param.sessionId = this.pageSessionNo
+	  			userAction(param)
+	  		}
+	  })	
     // this.showDrawer('showLeft')
     this.loadVideos()
     // 濡傛灉瑙嗛鎸変笅鏆傚仠鍚庡垏鎹㈤〉闈㈠啀鍥炲埌椤甸潰鏃讹紝鍙畻鏆傚仠鏃堕棿锛堝洜涓烘殏鍋滄椂闂村拰绂诲紑椤甸潰鏃堕棿鏄噸澶嶇殑锛屽彧绠椾竴涓級
@@ -399,8 +417,18 @@
       this.totalHidenTime += duration
     }
   },
+  onUnload() {
+    let	param = this.actionParam;
+    if (this.sendOnShow)return
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
   onHide() {
     this.startHidenTime = Date.now()
+    let	param = this.actionParam;
+    this.sendOnShow = true;
+    param.pageStatus = "LEAVE"
+    userAction(param)
   },
   onLoad(option) {
 		this.marginBottom = uni.getSystemInfoSync().safeAreaInsets.bottom;
@@ -429,12 +457,16 @@
 			queryParam.shareType = shareType
 			queryParam.source = source
 			console.log('瑙f瀽鍙傛暟:', { shareType, videoId,source });
+			this.actionParam.pageParams = JSON.stringify(params)
+			this.actionParam.joinType = 'SHARE'
 		}
 		const token = storage.getAccessToken();
 		if(!token){
 			this.wxSilentLogin(() => {
 				// 鍒ゆ柇鏄笉鏄偣鍑诲垎浜摼鎺ヨ繘鏉ョ殑
 				if (option.userId && option.videoId) {
+					this.actionParam.pageParams = JSON.stringify(option)
+					this.actionParam.joinType = 'SCAN'
 					queryParam.videoId = option.videoId
 					// 淇濆瓨鍒嗕韩鐐瑰嚮璁板綍
 					saveShareClickRecord({refId: option.videoId, shareUserId: option.userId})
diff --git a/pages/mine/activity/detail.vue b/pages/mine/activity/detail.vue
index f05c52c..fe8b328 100644
--- a/pages/mine/activity/detail.vue
+++ b/pages/mine/activity/detail.vue
@@ -75,6 +75,7 @@
 		getActivityDetail,
 		activityReport
 	} from '@/api/activity.js';
+	import { getSessionId, userAction } from "@/api/userAction.js";
 	export default {
 		data() {
 			return {
@@ -103,9 +104,44 @@
 					collectType: '',
 					refId: '',
 				},
+				  pageSessionNo:"",
+          sendOnShow:false,
+				  actionParam:{
+						sessionId:'',
+						actionType:"PAGE",
+						joinType:"SELF",
+						pageCode:"ACTIVITY_DETAIL",
+						pageParams:"{}",
+						pageStatus:"JOIN",
+						pageType:"DETAIL"
+					}
 			};
 		},
+    onUnload() {
+      let	param = this.actionParam;
+      if (this.sendOnShow)return
+      param.pageStatus = "LEAVE"
+      userAction(param)
+    },
+    onHide() {
+      this.startHidenTime = Date.now()
+      let	param = this.actionParam;
+      this.sendOnShow = true;
+      param.pageStatus = "LEAVE"
+      userAction(param)
+    },
+		onShow() {
+		  getSessionId().then(res=>{
+			this.pageSessionNo = res.data.data
+			if(this.pageSessionNo){
+			let	param = this.actionParam;
+				param.sessionId = this.pageSessionNo
+				userAction(param)
+			}
+		  })		
+		},
 		onLoad(options) {
+			this.actionParam.pageParams = JSON.stringify(options)
 			// 鎺ユ敹 URL 鍙傛暟
 			if (options.id) {
 				this.detailId = options.id;
diff --git a/pages/mine/activity/reportActivity.vue b/pages/mine/activity/reportActivity.vue
index 5741ab1..adc28a9 100644
--- a/pages/mine/activity/reportActivity.vue
+++ b/pages/mine/activity/reportActivity.vue
@@ -55,6 +55,7 @@
 	import TopBar from "@/components/TopBar.vue";
 	import '@/components/uview-components/uview-ui';
 	import {getActivityReportList} from '@/api/activity.js';
+	import { getSessionId, userAction } from "@/api/userAction.js";
 	export default {
 		components: {TopBar},
 		data() {
@@ -75,10 +76,44 @@
 				},
 				loading: false, // 鏄惁姝e湪鍔犺浇
 				noMore: false, // 鏄惁娌℃湁鏇村鏁版嵁
-				total: 0 // 鎬绘暟鎹噺
+				total: 0 ,// 鎬绘暟鎹噺
+				  pageSessionNo:"",
+				  actionParam:{
+						sessionId:'',
+						actionType:"PAGE",
+						joinType:"SELF",
+						pageCode:"ACTIVITY_LIST",
+						pageParams:"{}",
+						pageStatus:"JOIN",
+						pageType:"LIST"
+					}
 			};
 		},
-		onLoad() {
+    onUnload() {
+      let	param = this.actionParam;
+      if (this.sendOnShow)return
+      param.pageStatus = "LEAVE"
+      userAction(param)
+    },
+    onHide() {
+      this.startHidenTime = Date.now()
+      let	param = this.actionParam;
+      this.sendOnShow = true;
+      param.pageStatus = "LEAVE"
+      userAction(param)
+    },
+		onShow() {
+		  getSessionId().then(res=>{
+			this.pageSessionNo = res.data.data
+			if(this.pageSessionNo){
+			let	param = this.actionParam;
+				param.sessionId = this.pageSessionNo
+				userAction(param)
+			}
+		  })
+		},
+		onLoad(options) {
+			this.actionParam.pageParams = JSON.stringify(options)
 			this.getActivityList();
 		},
 		methods: {
diff --git a/pages/order/afterSales/afterSales.vue b/pages/order/afterSales/afterSales.vue
index 31d504e..e5f2973 100644
--- a/pages/order/afterSales/afterSales.vue
+++ b/pages/order/afterSales/afterSales.vue
@@ -204,6 +204,7 @@
 import { getAfterSaleList, cancelAfterSale } from "@/api/after-sale.js";
 import { getOrderList } from "@/api/order.js";
 import storage from "@/utils/storage";
+import { getSessionId, userAction } from "@/api/userAction.js";
 
 export default {
 
@@ -240,9 +241,44 @@
       },
       status: "loadmore",
       keywords: "", // 鎼滅储璁㈠崟sn
+	  pageSessionNo:"",
+    sendOnShow:false,
+	  actionParam:{
+			sessionId:'',
+			actionType:"PAGE",
+			joinType:"SELF",
+			pageCode:"AFTER_SALE",
+			pageParams:"{}",
+			pageStatus:"JOIN",
+			pageType:"LIST"
+		}
     };
   },
+  onUnload() {
+    let	param = this.actionParam;
+    if (this.sendOnShow)return
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onHide() {
+    this.startHidenTime = Date.now()
+    let	param = this.actionParam;
+    this.sendOnShow = true;
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onShow() {
+	  getSessionId().then(res=>{
+		this.pageSessionNo = res.data.data
+		if(this.pageSessionNo){
+		let	param = this.actionParam;
+			param.sessionId = this.pageSessionNo
+			userAction(param)
+		}
+	  })	
+  },
   onLoad(options) {
+	this.actionParam.pageParams = JSON.stringify(options)
     this.orderList = [];
     this.params.pageNumber = 1;
     if (options.orderSn) this.params.keywords = options.orderSn;
diff --git a/pages/order/afterSales/afterSalesDetail.vue b/pages/order/afterSales/afterSalesDetail.vue
index a157028..ca1a226 100644
--- a/pages/order/afterSales/afterSalesDetail.vue
+++ b/pages/order/afterSales/afterSalesDetail.vue
@@ -108,6 +108,7 @@
 import { upload } from "@/api/common.js";
 import { checkBankno } from "@/utils/Foundation";
 import storage from "@/utils/storage.js";
+import { getSessionId, userAction } from "@/api/userAction.js";
 export default {
   component: {
     city,
@@ -169,13 +170,47 @@
         refundWay: "",
         serviceType: "", //鐢宠绫诲瀷
       },
+	  pageSessionNo:"",
+    sendOnShow:false,
+	  actionParam:{
+	  			sessionId:'',
+	  			actionType:"PAGE",
+	  			joinType:"SELF",
+	  			pageCode:"REFUND_ORDER",
+	  			pageParams:"{}",
+	  			pageStatus:"JOIN",
+	  			pageType:"DETAIL"
+	  		}
     };
   },
-
+  onUnload() {
+    let	param = this.actionParam;
+    if (this.sendOnShow)return
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onHide() {
+    this.startHidenTime = Date.now()
+    let	param = this.actionParam;
+    this.sendOnShow = true;
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+	onShow() {
+		getSessionId().then(res=>{
+				this.pageSessionNo = res.data.data
+				if(this.pageSessionNo){
+				let	param = this.actionParam;
+					param.sessionId = this.pageSessionNo
+					userAction(param)
+				}
+		})	
+	},
   /**
    * 鍒ゆ柇褰撳墠鍐呭骞剁敓鎴愭暟鎹�
    */
   onLoad(options) {
+	this.actionParam.pageParams = JSON.stringify(options)
     let navTitle = "鐢宠鍞悗";
     this.form.serviceType = "RETURN_GOODS";
     if (options.value == 1) {
diff --git a/pages/order/afterSales/afterSalesSelect.vue b/pages/order/afterSales/afterSalesSelect.vue
index a10e5b8..ceb4a8b 100644
--- a/pages/order/afterSales/afterSalesSelect.vue
+++ b/pages/order/afterSales/afterSalesSelect.vue
@@ -58,15 +58,51 @@
 import '@/components/uview-components/uview-ui'
 import { getAfterSaleInfo } from "@/api/after-sale";
 import storage from "@/utils/storage";
+import { getSessionId, userAction } from "@/api/userAction.js";
 export default {
   data() {
     return {
       sn: "",
       sku: {}, //sku
-      applyInfo:""
+      applyInfo:"",
+	  pageSessionNo:"",
+    sendOnShow:false,
+	  actionParam:{
+			sessionId:'',
+			actionType:"PAGE",
+			joinType:"SELF",
+			pageCode:"APPLY_SALE",
+			pageParams:"{}",
+			pageStatus:"JOIN",
+			pageType:"LIST"
+		}
     };
   },
+  onUnload() {
+    let	param = this.actionParam;
+    if (this.sendOnShow)return
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onHide() {
+    this.startHidenTime = Date.now()
+    let	param = this.actionParam;
+    this.sendOnShow = true;
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onShow() {
+	  getSessionId().then(res=>{
+		this.pageSessionNo = res.data.data
+		if(this.pageSessionNo){
+		let	param = this.actionParam;
+			param.sessionId = this.pageSessionNo
+			userAction(param)
+		}
+	  })
+  },
   onLoad(options) {
+	this.actionParam.pageParams = JSON.stringify(options)
     this.sn = options.sn;
     this.sku = storage.getAfterSaleData();
     // 鏌ョ湅褰撳墠鍟嗗搧鏄惁鏀寔閫�娆鹃��璐�
diff --git a/pages/order/fillorder.vue b/pages/order/fillorder.vue
index 667add2..f5c108f 100644
--- a/pages/order/fillorder.vue
+++ b/pages/order/fillorder.vue
@@ -400,9 +400,11 @@
 import LiLiWXPay from "@/js_sdk/lili-pay/wx-pay.js";
 import invoices from "@/pages/order/invoice/setInvoice";
 import { mapState } from "vuex";
+import { getSessionId, userAction } from "@/api/userAction.js";
 export default {
   onLoad: function (val) {
     this.routerVal = val;
+	this.actionParam.pageParams = JSON.stringify(val)
   },
   components: {
     invoices,
@@ -454,6 +456,17 @@
       storeAddress: "",
 
       originOrderData:"", // 鍘熷璁㈠崟鏁版嵁
+	  pageSessionNo:"",
+    sendOnShow:false,
+	  actionParam:{
+	  		sessionId:'',
+	  		actionType:"PAGE",
+	  		joinType:"SELF",
+	  		pageCode:"FILL_ORDER",
+	  		pageParams:"{}",
+	  		pageStatus:"JOIN",
+	  		pageType:"DETAIL"
+	  	}
     };
   },
   watch: {
@@ -516,8 +529,28 @@
       return true; //闃绘榛樿杩斿洖琛屼负
     }
   },
-
+  onUnload() {
+    let	param = this.actionParam;
+    if (this.sendOnShow)return
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onHide() {
+    this.startHidenTime = Date.now()
+    let	param = this.actionParam;
+    this.sendOnShow = true;
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
   async onShow() {
+	  getSessionId().then(res=>{
+	  	this.pageSessionNo = res.data.data
+	  	if(this.pageSessionNo){
+	  	let	param = this.actionParam;
+	  		param.sessionId = this.pageSessionNo
+	  		userAction(param)
+	  	}
+	  })	
     // 鍒ゆ柇鏄惁瀛樺湪鍐欒繃澶囨敞淇℃伅鐨勫晢鍝�
     if (this.remark && this.remark.length > 0) {
       this.remarkFlag = true;
diff --git a/pages/order/myOrder.vue b/pages/order/myOrder.vue
index 7e00d25..6821cde 100644
--- a/pages/order/myOrder.vue
+++ b/pages/order/myOrder.vue
@@ -241,6 +241,7 @@
 import { getClearReason } from "@/api/after-sale.js";
 import LiLiWXPay from "@/js_sdk/lili-pay/wx-pay.js";
 import {buyBack} from "@/api/trade.js";
+import { getSessionId, userAction } from "@/api/userAction.js";
 export default {
 
   data() {
@@ -327,6 +328,16 @@
       reason: "", //鍙栨秷鍘熷洜
       cancelList: "", //鍙栨秷鍒楄〃
       rogShow: false, //鏄剧ず鏄惁鏀惰揣
+	  pageSessionNo:"",
+	  actionParam:{
+	  		sessionId:'',
+	  		actionType:"PAGE",
+	  		joinType:"SELF",
+	  		pageCode:"ORDER_LIST",
+	  		pageParams:"{}",
+	  		pageStatus:"JOIN",
+	  		pageType:"DETAIL"
+	  	}
     };
   },
 
@@ -349,7 +360,28 @@
     }
     // this.loadData(this.status);
   },
+  onUnload() {
+    let	param = this.actionParam;
+    if (this.sendOnShow)return
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onHide() {
+    this.startHidenTime = Date.now()
+    let	param = this.actionParam;
+    this.sendOnShow = true;
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
   onShow() {
+	  getSessionId().then(res=>{
+	  	this.pageSessionNo = res.data.data
+	  	if(this.pageSessionNo){
+	  	let	param = this.actionParam;
+	  		param.sessionId = this.pageSessionNo
+	  		userAction(param)
+	  	}
+	  })	
     if(this.$options.filters.tipsToLogin()){
       if (!this.tabCurrentIndex) {
         this.initData(0);
@@ -359,6 +391,7 @@
   },
 
   onLoad(options) {
+	  this.actionParam.pageParams = JSON.stringify(options)
     /**
      * 淇app绔偣鍑婚櫎鍏ㄩ儴璁㈠崟澶栫殑鎸夐挳杩涘叆鏃朵笉鍔犺浇鏁版嵁鐨勯棶棰�
      * 鏇挎崲onLoad涓嬩唬鐮佸嵆鍙�
diff --git a/pages/order/orderDetail.vue b/pages/order/orderDetail.vue
index 4d2873f..5d5e5cc 100644
--- a/pages/order/orderDetail.vue
+++ b/pages/order/orderDetail.vue
@@ -270,7 +270,7 @@
 import shares from "@/pages/order/m-share/index.vue"; //鍒嗕韩
 
 import { getClearReason } from "@/api/after-sale.js";
-
+import { getSessionId, userAction } from "@/api/userAction.js";
 export default {
   components: {
     shares,
@@ -325,9 +325,43 @@
 	  orderPackage:"",
 	  //鍟嗗搧淇℃伅鍐嶆潵涓�鍗曚娇鐢�
 	  skuList:[],
+	  pageSessionNo:"",
+	  actionParam:{
+	  		sessionId:'',
+	  		actionType:"PAGE",
+	  		joinType:"SELF",
+	  		pageCode:"ORDER_DETAIL",
+	  		pageParams:"{}",
+	  		pageStatus:"JOIN",
+	  		pageType:"DETAIL"
+	  	}
     };
   },
+  onUnload() {
+    let	param = this.actionParam;
+    if (this.sendOnShow)return
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onHide() {
+    this.startHidenTime = Date.now()
+    let	param = this.actionParam;
+    this.sendOnShow = true;
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onShow() {
+  	getSessionId().then(res=>{
+  		this.pageSessionNo = res.data.data
+  		if(this.pageSessionNo){
+  		let	param = this.actionParam;
+  			param.sessionId = this.pageSessionNo
+  			userAction(param)
+  		}
+  	})	
+  },
   onLoad(options) {
+    this.actionParam.pageParams = JSON.stringify(options)
     this.loadData(options.sn);
     this.sn = options.sn;
   },
diff --git a/pages/prize/PrizeDetail/PrizeDetail.vue b/pages/prize/PrizeDetail/PrizeDetail.vue
index 6e2bba5..0272909 100644
--- a/pages/prize/PrizeDetail/PrizeDetail.vue
+++ b/pages/prize/PrizeDetail/PrizeDetail.vue
@@ -148,6 +148,8 @@
 </template>
 <script>
 	import bgConfig from '@/pages/prize/PrizeDetail/prize-bgConfig.js'
+	import { getSessionId, userAction } from "@/api/userAction.js";
+
 	import {
 		prizeInfo,
 		prizeNum,
@@ -212,7 +214,17 @@
 				shareTimelineAttempt: false,
 				activityCover: '',
 				activityName: '',
-				couponId: ''
+				couponId: '',
+			    pageSessionNo:"",
+			    actionParam:{
+					sessionId:'',
+					actionType:"PAGE",
+					joinType:"SELF",
+					pageCode:"PRIZE_DETAIL",
+					pageParams:"{}",
+					pageStatus:"JOIN",
+					pageType:"DETAIL"
+				}
 			};
 		},
 		computed: {
@@ -221,7 +233,32 @@
 				return [...this.originalWinners]
 			}
 		},
+    onUnload() {
+      let	param = this.actionParam;
+      if (this.sendOnShow)return
+      param.pageStatus = "LEAVE"
+      userAction(param)
+    },
+    onHide() {
+      this.startHidenTime = Date.now()
+      let	param = this.actionParam;
+      this.sendOnShow = true;
+      param.pageStatus = "LEAVE"
+      userAction(param)
+    },
+		onShow() {
+		  getSessionId().then(res=>{
+			this.pageSessionNo = res.data.data
+			if(this.pageSessionNo){
+			let	param = this.actionParam;
+				param.sessionId = this.pageSessionNo
+				userAction(param)
+			}
+		  })	
+		},
 		async onLoad(option) {
+			this.actionParam.pageParams = JSON.stringify(option)
+
 			const pages = getCurrentPages()
 			console.log('================pages ', pages)
 			this.activityId = option.id
diff --git a/pages/product/goods.vue b/pages/product/goods.vue
index e74e3dc..3146a0b 100644
--- a/pages/product/goods.vue
+++ b/pages/product/goods.vue
@@ -305,6 +305,7 @@
 import popups from "@/pages/product/popups/popups.vue"; //姘旀场妗�
 import takeDownFormSaleGoods from "@/pages/product/m-take-down-sale-goods/index.vue"; //涓嬫灦妗�
 import setup from "./product/popup/popup";
+import { getSessionId, userAction } from "@/api/userAction.js";
 	import {
 		getSTSToken
 	} from '@/api/common.js'
@@ -444,6 +445,17 @@
       IMLink: "", // IM鍦板潃
       wholesaleList: [],
       takeDownFromSale: false, // 涓嬫灦閿�鍞姸鎬�
+	  pageSessionNo:"",
+    sendOnShow:false,
+	  actionParam:{
+	  		sessionId:'',
+	  		actionType:"PAGE",
+	  		joinType:"SELF",
+	  		pageCode:"GOODS_DETAILS",
+	  		pageParams:"{}",
+	  		pageStatus:"JOIN",
+	  		pageType:"DETAIL"
+	  	}
     };
   },
 
@@ -512,8 +524,11 @@
 		  queryParam.id = id;
 		  queryParam.goodsId = gooodsId;
 		  this.routerVal = queryParam;
+		  this.actionParam.pageParams = JSON.stringify(params)
+		  this.actionParam.joinType = 'SCAN'
 	  }else{
 		  this.routerVal = options;
+		  this.actionParam.pageParams = JSON.stringify(options)
 	  }
 	  console.log('鎵撳嵃淇℃伅')
 	   console.log(options)
@@ -527,7 +542,28 @@
     });
     // #endif
   },
+  onUnload() {
+    let	param = this.actionParam;
+    if (this.sendOnShow)return
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onHide() {
+    this.startHidenTime = Date.now()
+    let	param = this.actionParam;
+    this.sendOnShow = true;
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
   async onShow () {
+	  getSessionId().then(res=>{
+	  	this.pageSessionNo = res.data.data
+	  	if(this.pageSessionNo){
+	  	let	param = this.actionParam;
+	  		param.sessionId = this.pageSessionNo
+	  		userAction(param)
+	  	}
+	  })	
     this.goodsDetail = {};
     //濡傛灉鏈夊弬鏁癷ds璇存槑浜嬪垎閿�鐭繛鎺ワ紝闇�瑕佽幏鍙栧弬鏁�
     if (this.routerVal.scene) {
diff --git a/pages/tabbar/index/home.vue b/pages/tabbar/index/home.vue
index 23cbbdf..8a4ae99 100644
--- a/pages/tabbar/index/home.vue
+++ b/pages/tabbar/index/home.vue
@@ -266,6 +266,7 @@
 import { setPopupRedisTime, getPopupAcitivty } from '@/api/popup.js'
 import { changeCollect } from "@/api/collect.js";
 import { saveShare, saveShareClickRecord } from "@/api/share.js";
+import { getSessionId, userAction } from "@/api/userAction.js";
 import { silentLogin } from "@/api/connect.js";
 import { getUserInfo } from "@/api/members";
 import storage from "@/utils/storage.js";
@@ -368,10 +369,28 @@
 			similarlyNomore: false, // 鏄惁杩樻湁鏇村鐩镐技瑙嗛
 			similaryVideoIndex: 0, // 鐩镐技瑙嗛鐨勬挱鏀句綅缃�
 			similarlyLoading: false, // 鐩镐技瑙嗛鍔犺浇
-			marginBottom: 0 // 搴曢儴瀹夊叏鍖哄煙
+			marginBottom: 0 ,// 搴曢儴瀹夊叏鍖哄煙
+			pageSessionNo:"",
+			actionParam:{
+					sessionId:'',
+					actionType:"PAGE",
+					joinType:"SELF",
+					pageCode:"RECOMMEND_VIDEO",
+					pageParams:"{}",
+					pageStatus:"JOIN",
+					pageType:"LIST"
+				}
 		}
 	},
 	onShow() {
+		getSessionId().then(res=>{
+			this.pageSessionNo = res.data.data
+			if(this.pageSessionNo){
+			let	param = this.actionParam;
+				param.sessionId = this.pageSessionNo
+				userAction(param)
+			}
+		})
 
 		this.openActivityPopup()
 
@@ -399,9 +418,19 @@
 			this.totalHidenTime += duration
 		}
 	},
-	onHide() {
-		this.startHidenTime = Date.now()
-	},
+  onUnload() {
+    let	param = this.actionParam;
+    if (this.sendOnShow)return
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onHide() {
+    this.startHidenTime = Date.now()
+    let	param = this.actionParam;
+    this.sendOnShow = true;
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
 	onLoad(option) {
 
 		console.log('-----------鍒嗕韩鍑虹殑鏁版嵁---------->', option)
@@ -419,6 +448,9 @@
 			const shareType = params.shareType;
 			const videoId = params.videoId;
 			queryParam.videoId = videoId
+			this.actionParam.joinType = "SCAN";
+			this.actionParam.pageParams = JSON.stringify(params);
+			
 			console.log('瑙f瀽鍙傛暟:', { shareType, videoId });
 		}
 		const token = storage.getAccessToken();
@@ -426,6 +458,8 @@
 			this.wxSilentLogin(() => {
 				// 鍒ゆ柇鏄笉鏄偣鍑诲垎浜摼鎺ヨ繘鏉ョ殑
 				if (option.userId && option.videoId) {
+					this.actionParam.joinType = "SHARE";
+					this.actionParam.pageParams = JSON.stringify(option);
 					queryParam.videoId = option.videoId
 					// 淇濆瓨鍒嗕韩鐐瑰嚮璁板綍
 					saveShareClickRecord({ refId: option.videoId, shareUserId: option.userId })
diff --git a/pages/tabbar/user/my.vue b/pages/tabbar/user/my.vue
index 6552fd3..d67d898 100644
--- a/pages/tabbar/user/my.vue
+++ b/pages/tabbar/user/my.vue
@@ -144,6 +144,7 @@
 import { getUserWallet } from "@/api/members";
 import configs from '@/config/config'
 import storage from '@/utils/storage.js'
+import { getSessionId, userAction } from "@/api/userAction.js";
 export default {
   components: {
     tool
@@ -160,12 +161,44 @@
       couponNum: "",
       footNum: "",
       walletNum: "",
+	  pageSessionNo:"",
+	  actionParam:{
+			sessionId:'',
+			actionType:"PAGE",
+			joinType:"SELF",
+			pageCode:"TBA_BAR_MY",
+			pageParams:"{}",
+			pageStatus:"JOIN",
+			pageType:"DETAIL"
+		}
     };
   },
-  onLoad() {
+  onUnload() {
+    let	param = this.actionParam;
+    if (this.sendOnShow)return
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onHide() {
+    this.startHidenTime = Date.now()
+    let	param = this.actionParam;
+    this.sendOnShow = true;
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onLoad(options) {
+	  this.actionParam.pageParams = JSON.stringify(options)
 	  this.initCOS()
   },
   onShow() {
+	  getSessionId().then(res=>{
+		this.pageSessionNo = res.data.data
+		if(this.pageSessionNo){
+		let	param = this.actionParam;
+			param.sessionId = this.pageSessionNo
+			userAction(param)
+		}
+	  })	
     this.userInfo = this.$options.filters.isLogin() || {};
     if (this.$options.filters.isLogin("auth")) {
       this.getUserOrderNum();
diff --git a/pages/video/video-goods-detail-swiper.vue b/pages/video/video-goods-detail-swiper.vue
index 600c26b..da58270 100644
--- a/pages/video/video-goods-detail-swiper.vue
+++ b/pages/video/video-goods-detail-swiper.vue
@@ -293,6 +293,7 @@
 import popups from "@/pages/product/popups/popups.vue"; //姘旀场妗�
 import takeDownFormSaleGoods from "@/pages/product/m-take-down-sale-goods/index.vue"; //涓嬫灦妗�
 import setup from "@/pages/product/product/popup/popup.js";
+import { getSessionId, userAction } from "@/api/userAction.js";
 
 import { getGoodsDetail } from "@/api/video.js"
 import {
@@ -439,6 +440,16 @@
 			touchStartX: 0,
 			touchEndX: 0,
 			minSwipeDistance: 100, // 鏈�灏忔粦鍔ㄨ窛绂伙紝鐢ㄤ簬鍒ゆ柇鏄惁涓烘湁鏁堟粦鍔�
+			  pageSessionNo:"",
+			  actionParam:{
+					sessionId:'',
+					actionType:"PAGE",
+					joinType:"SELF",
+					pageCode:"SWIPER_GOODS",
+					pageParams:"{}",
+					pageStatus:"JOIN",
+					pageType:"DETAIL"
+				}
 		};
 	},
 
@@ -481,6 +492,8 @@
 		this.productRefHeight = windowHeight - bottomHeight + "px";
 	},
 	async onLoad(options) {
+		this.actionParam.pageParams = JSON.stringify(options)
+
 		this.videoId = options.videoId;
 		this.getGoodsList();
 
@@ -492,7 +505,28 @@
 		});
 		// #endif
 	},
+  onUnload() {
+    let	param = this.actionParam;
+    if (this.sendOnShow)return
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
+  onHide() {
+    this.startHidenTime = Date.now()
+    let	param = this.actionParam;
+    this.sendOnShow = true;
+    param.pageStatus = "LEAVE"
+    userAction(param)
+  },
 	async onShow() {
+	  getSessionId().then(res=>{
+		this.pageSessionNo = res.data.data
+		if(this.pageSessionNo){
+		let	param = this.actionParam;
+			param.sessionId = this.pageSessionNo
+			userAction(param)
+		}
+	  })	
 		// this.goodsDetail = {};
 		// debugger
 		// //濡傛灉鏈夊弬鏁癷ds璇存槑浜嬪垎閿�鐭繛鎺ワ紝闇�瑕佽幏鍙栧弬鏁�
diff --git a/pages/video/video-goods-detail.vue b/pages/video/video-goods-detail.vue
index 62ae3a8..d254c1d 100644
--- a/pages/video/video-goods-detail.vue
+++ b/pages/video/video-goods-detail.vue
@@ -31,6 +31,7 @@
 	import {getGoodsDetail} from "@/api/video.js"
 	import { buyBack } from "@/api/trade.js";
 	import '@/components/uview-components/uview-ui';
+	import { getSessionId, userAction } from "@/api/userAction.js";
 	export default {
 		computed: {
 			totalMoney() {
@@ -45,11 +46,45 @@
 		data() {
 			return {
 				videoId: '',
-				goodsList: []
+				goodsList: [],
+				pageSessionNo:"",
+				actionParam:{
+						sessionId:'',
+						actionType:"PAGE",
+						joinType:"SELF",
+						pageCode:"RECOMMEND_VIDEO_GOODS",
+						pageParams:"{}",
+						pageStatus:"JOIN",
+						pageType:"DETAIL"
+					}
 			}
+		},
+    onUnload() {
+      let	param = this.actionParam;
+      if (this.sendOnShow)return
+      param.pageStatus = "LEAVE"
+      userAction(param)
+    },
+    onHide() {
+      this.startHidenTime = Date.now()
+      let	param = this.actionParam;
+      this.sendOnShow = true;
+      param.pageStatus = "LEAVE"
+      userAction(param)
+    },
+		onShow() {
+			getSessionId().then(res=>{
+				this.pageSessionNo = res.data.data
+				if(this.pageSessionNo){
+				let	param = this.actionParam;
+					param.sessionId = this.pageSessionNo
+					userAction(param)
+				}
+			})	
 		},
 		onLoad(option) {
 			this.videoId = option.videoId;
+			this.actionParam.pageParams = JSON.stringify(option)
 			this.getGoodsList();
 		},
 		methods: {

--
Gitblit v1.8.0