From e6c8da7b6e4270cb1353f3fd8cd799c02ca97c77 Mon Sep 17 00:00:00 2001 From: peng <peng.com> Date: 星期二, 30 九月 2025 22:47:07 +0800 Subject: [PATCH] 埋点调整 --- pages/product/goods.vue | 230 +++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 188 insertions(+), 42 deletions(-) diff --git a/pages/product/goods.vue b/pages/product/goods.vue index b905084..f44ad0c 100644 --- a/pages/product/goods.vue +++ b/pages/product/goods.vue @@ -6,13 +6,15 @@ <!-- 浠卙5鏈夋晥 鎵撳紑App --> <!-- 鍒嗕韩 --> - <shares v-if="enableShare && goodsDetail.id" :skuId="this.routerVal.id" :goodsId="this.routerVal.goodsId" :link=" +<!-- <shares v-if="enableShare && goodsDetail.id" :skuId="this.routerVal.id" :goodsId="this.routerVal.goodsId" :link=" '/pages/product/goods?id=' + this.routerVal.id + '&goodsId=' + this.routerVal.goodsId " :thumbnail="goodsDetail.thumbnail" :goodsName="goodsDetail.goodsName" type="goods" @close="enableShare = false" /> + --> + <popups v-model="popupsSwitch" @tapPopup="handleNavbarList" :popData="navbarListData" :x="navbarListX" :y="navbarListY" placement="top-start" /> <view class="index"> @@ -114,10 +116,18 @@ </span> </view> - <view class="icons share" @click="shareChange()"> + <!-- <view class="icons share" @click="shareChange()"> <u-icon size="30" name="share-fill"></u-icon> <view>鍒嗕韩</view> - </view> + </view> --> + <view class="icons share" style="margin-top: -15px;"> + <button open-type="share" class="custom-share-btn" plain="true" style="border: none;"> + <u-icon size="30" name="share-fill"></u-icon> + </button> + <view style="margin-top: -14px;">鍒嗕韩</view> + </view> + + <view class="icons" @click="clickFavorite(goodsDetail.id)"> <u-icon size="30" :color="favorite ? '#f2270c' : '#262626'" :name="favorite ? 'heart-fill' : 'heart'"></u-icon> @@ -155,7 +165,7 @@ <!-- 閰嶇疆鍦板潃 濡傛灉鏄櫄鎷熶骇鍝佺殑鏃跺�欎笉灞曠ず --> <view class="card-box" v-if="goodsDetail.goodsType != 'VIRTUAL_GOODS'"> <view class="card-flex" @click="shutMask(4)"> - <view class="card-title"> 宸查�� </view> + <view class="card-title"> 鍙�夎鏍� </view> <view class="card-content"> <span v-if="selectedGoods.spec">{{ selectedGoods.spec.specName }}-{{ selectedGoods.spec.specValue @@ -184,21 +194,21 @@ <Evaluation id="main5" :goodsDetail="goodsDetail" /> <!-- 搴楅摵鎺ㄨ崘 --> - <storeLayout id="main7" :storeDetail="storeDetail" :goodsDetail="goodsDetail" :res="recommendList" /> + <storeLayout v-if="false" id="main7" :storeDetail="storeDetail" :goodsDetail="goodsDetail" :res="recommendList" /> <!-- 瀹濊礉璇︽儏 --> - <GoodsIntro id="main9" :res="goodsDetail" :goodsParams="goodsParams" :goodsId="goodsDetail.goodsId" + <GoodsIntro id="main9" :res="goodsDetail" :goodsParams="goodsParams" :goodsId="goodsDetail.goodsId" v-if="goodsDetail.id" /> <!-- 瀹濊礉鎺ㄨ崘 --> - <GoodsRecommend id="main11" :res="likeGoodsList" /> + <GoodsRecommend id="main11" :res="likeGoodsList" v-if="false" /> </view> </scroll-view> <view class="page-bottom mp-iphonex-bottom" id="pageBottom"> <view class="icon-btn"> - <view class="icon-btn-item" @click="navigateToStore(goodsDetail.storeId)"> + <view class="icon-btn-item" @click="navigateToStore(goodsDetail.storeId)"> <u-icon size="34" class="red" name="home-fill"></u-icon> <view class="red icon-btn-name">搴楅摵</view> </view> @@ -213,10 +223,10 @@ </view> </view> <!-- 涓嬫灦灞曠ず --> - <div class="detail-btn" v-if="takeDownFromSale"> +<!-- <div class="detail-btn" v-if="takeDownFromSale"> <view class="to-store-car to-store-btn" @click="reStartTakeDownSale"> 鏌ョ湅绫讳技鍟嗗搧</view> - </div> + </div> --> <!-- 姝e父缁撶畻椤甸潰 --> <view class="detail-btn" v-if="!isGroup && !takeDownFromSale"> <view class="to-store-car to-store-btn" v-if="goodsDetail.goodsType != 'VIRTUAL_GOODS'" @click="shutMask(4)"> @@ -289,29 +299,28 @@ import storage from "@/utils/storage.js"; /************缁勪欢***************/ -import PromotionLayout from "./product/promotion/-promotion"; //淇冮攢缁勪欢 -import PromotionDetailsLayout from "./product/promotion/-promotion-details"; //淇冮攢娲诲姩璇︽儏 -import PromotionAssembleLayout from "./product/promotion/-promotion-assemble-promotions"; //淇冮攢娲诲姩鏉� -import PromotionAssembleListLayout from "./product/promotion/-promotion-assemble-list"; //鎷煎洟鐢ㄦ埛鍒楄〃 -import PromotionCoupon from "./product/promotion/-promotion-coupon"; //浼樻儬鍒哥粍浠� -import GoodsIntro from "./product/goods/-goods-intro"; //鍟嗗搧浠嬬粛缁勪欢 -import GoodsRecommend from "./product/goods/-goods-recommend"; //瀹濊礉鎺ㄨ崘 -import storeLayout from "./product/shop/-shop"; //搴楅摵缁勪欢 -import Evaluation from "./product/evaluation/-evaluation"; //璇勪环缁勪欢 -import GoodsSwiper from "./product/goods/-goods-swiper"; //杞挱鍥剧粍浠� +import PromotionLayout from "@/pages/product/product/promotion/-promotion.vue"; //淇冮攢缁勪欢 +import PromotionDetailsLayout from "@/pages/product/product/promotion/-promotion-details.vue"; //淇冮攢娲诲姩璇︽儏 +import PromotionAssembleLayout from "@/pages/product/product/promotion/-promotion-assemble-promotions.vue"; //淇冮攢娲诲姩鏉� +import PromotionAssembleListLayout from "@/pages/product/product/promotion/-promotion-assemble-list.vue"; //鎷煎洟鐢ㄦ埛鍒楄〃 +import PromotionCoupon from "@/pages/product/product/promotion/-promotion-coupon.vue"; //浼樻儬鍒哥粍浠� +import GoodsIntro from "@/pages/product/product/goods/-goods-intro.vue"; //鍟嗗搧浠嬬粛缁勪欢 +import GoodsRecommend from "@/pages/product/product/goods/-goods-recommend.vue"; //瀹濊礉鎺ㄨ崘 +import storeLayout from "@/pages/product/product/shop/-shop.vue"; //搴楅摵缁勪欢 +import Evaluation from "@/pages/product/product/evaluation/-evaluation"; //璇勪环缁勪欢 +import GoodsSwiper from "@/pages/product/product/goods/-goods-swiper.vue"; //杞挱鍥剧粍浠� import popupGoods from "@/pages/product/m-buy/goods.vue"; //璐墿杞﹀晢鍝佺殑妯″潡 -import popupAddress from "./product/popup/address"; //鍦板潃閫夋嫨妯″潡 -import shares from "@/pages/product/m-share/index.vue"; //鍒嗕韩 +import popupAddress from "@/pages/product/product/popup/address.vue"; //鍦板潃閫夋嫨妯″潡 + import popups from "@/pages/product/popups/popups.vue"; //姘旀场妗� -import takeDownFormSaleGoods from "@/pages/product/m-take-down-sale-goods/index"; //涓嬫灦妗� +import takeDownFormSaleGoods from "@/pages/product/m-take-down-sale-goods/index.vue"; //涓嬫灦妗� import setup from "./product/popup/popup"; - import { - getSTSToken - } from '@/api/common.js' +import { getSessionId, userAction,userShare } from "@/api/userAction.js"; +import { getSTSToken } from '@/api/common.js' +import {addPrizeNum} from '@/api/prize.js' export default { components: { popups, - shares, PromotionLayout, PromotionDetailsLayout, PromotionAssembleLayout, @@ -400,10 +409,10 @@ text: "璇︽儏", id: "3", }, - { - text: "鎺ㄨ崘", - id: "4", - }, + // { + // text: "鎺ㄨ崘", + // id: "4", + // }, ], tabScrollTop: null, scrollArr: [], @@ -444,6 +453,24 @@ IMLink: "", // IM鍦板潃 wholesaleList: [], takeDownFromSale: false, // 涓嬫灦閿�鍞姸鎬� + pageSessionNo:"", + sendOnShow:false, + actionParam:{ + sessionId:'', + actionType:"PAGE", + joinType:"SELF", + pageCode:"GOODS_DETAILS", + pageParams:"{}", + pageStatus:"JOIN", + pageType:"DETAIL", + shareId:null, + }, + shareParam:{ + pageCode:"GOODS_DETAILS", + shareOption:"{}", + pageType:"DETAIL" + }, + shareId:'', }; }, @@ -496,17 +523,116 @@ this.productRefHeight = windowHeight - bottomHeight + "px"; }, + + + + onShareAppMessage(e) { + console.log("寮�濮嬪垎浜�") + console.log(this.goodsDetail) + // 杩斿洖涓�涓狿romise + return new Promise((resolve) => { + + this.shareId = ''; + this.shareParam.shareOption = JSON.stringify(this.routerVal) + userShare(this.shareParam).then(res => { + this.shareId = res.data.data; + let param = { + addType:"SHARE_GOODS_VIDEO", + extend:"", + } + let extend = {shareId:this.shareId} + param.extend = JSON.stringify(extend) + addPrizeNum(param); + + // 褰撹幏鍙栧埌shareId鍚庯紝鍐峳esolve鍒嗕韩閰嶇疆 + resolve({ + title: this.goodsDetail.goodsName, + path: '/pages/product/goods' +'?id='+ this.routerVal.id + '&goodsId=' + this.routerVal.goodsId +'&shareId=' + this.shareId, + imageUrl: this.goodsDetail.goodsGalleryList[0], + success(e) { + console.log("鍒嗕韩鎴愬姛", e); + }, + fail(e) { + console.log('鍒嗕韩澶辫触', e); + } + }); + }).catch(err => { + // 澶勭悊閿欒鎯呭喌锛屼緥濡備娇鐢ㄩ粯璁ゅ弬鏁� + console.error('鑾峰彇鍒嗕韩ID澶辫触', err); + resolve({ + title: this.goodsDetail.goodsName, + path: '/pages/product/goods' +'?id='+ this.routerVal.id + '&goodsId=' + this.routerVal.goodsId, + imageUrl: this.goodsDetail.goodsGalleryList[0], + }); + }); + }); + }, async onLoad (options) { - this.routerVal = options; + if(options.shareId){ + this.actionParam.shareId = options.shareId; + this.actionParam.joinType = 'SHARE' + console.log('瑙﹀彂onLoad') + uni.setStorage({ + key: 'shareId', + data: options.shareId, + success: function () { + console.log('缂撳瓨shareId鎴愬姛'); + } + }); + } + this.actionParam.pageParams = JSON.stringify(options) + if(options.q){ + const queryParam = { + id:'', + goodsId:'', + distributionId:'' + }; + const decodedUrl = decodeURIComponent(decodeURIComponent(options.q)); + console.log('鍘熷URL:', decodedUrl); + const params = this.parseUrlParams(decodedUrl); + const id = params.id; + const gooodsId = params.goodsId; + 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) + console.log(this.routerVal) + // #ifdef MP-WEIXIN - // 灏忕▼搴忛粯璁ゅ垎浜� - uni.showShareMenu({ - withShareTicket: true, - menus: ["shareAppMessage", "shareTimeline"], - }); + // #endif }, + + onUnload() { + let param = Object.assign({}, this.actionParam); + if (this.sendOnShow)return + param.pageStatus = "LEAVE" + userAction(param) + }, + onHide() { + this.startHidenTime = Date.now() + let param = Object.assign({}, this.actionParam); + this.sendOnShow = true; + param.pageStatus = "LEAVE" + userAction(param) + }, async onShow () { + getSessionId().then(res=>{ + this.pageSessionNo = res.data.data + this.actionParam.sessionId = this.pageSessionNo + this.actionParam.sessionId = res.data.data + if(this.pageSessionNo){ + let param = Object.assign({}, this.actionParam); + userAction(param) + } + }) this.goodsDetail = {}; //濡傛灉鏈夊弬鏁癷ds璇存槑浜嬪垎閿�鐭繛鎺ワ紝闇�瑕佽幏鍙栧弬鏁� if (this.routerVal.scene) { @@ -522,6 +648,23 @@ }, methods: { + // 瑙f瀽URL鍙傛暟 + parseUrlParams(url) { + const params = {}; + // 澶勭悊鍙兘瀛樺湪鐨刪ash锛堝鏋滄湁鐨勮瘽锛� + const cleanUrl = url.split('#')[0]; + const queryStr = cleanUrl.split('?')[1] || ''; + + queryStr.split('&').forEach(pair => { + const [key, value] = pair.split('='); + if (key) { + // 濡傛灉鍊煎瓨鍦紝鍒欒В鐮侊紝鍚﹀垯璁句负绌哄瓧绗︿覆 + params[key] = value ? decodeURIComponent(value) : ''; + } + }); + + return params; + }, // 閲嶆柊鎵撳紑涓嬫灦 reStartTakeDownSale(){ this.$refs.takeDownSale.show = true @@ -555,6 +698,8 @@ * 鍒濆鍖栦俊鎭� */ async init (id, goodsId, distributionId = "") { + console.log('鎵撳嵃id:' + id) + console.log('鎵撳嵃goodsId:'+ goodsId) this.isGroup = false; //鍒濆鍖栨嫾鍥� this.productId = id; // skuId // 杩欓噷璇锋眰鑾峰彇鍒伴〉闈㈡暟鎹� 瑙f瀽鏁版嵁 @@ -611,7 +756,7 @@ this.goodsSpec = response.data.result.specs; this.PromotionList = response.data.result.promotionMap; this.goodsParams = response.data.result.goodsParamsDTOList || []; - + console.log('浼樻儬鍗锋椿鍔�--------------------銆�',response.data.result.promotionMap) // 鍒ゆ柇鏄惁鎷煎洟娲诲姩鎴栬�呯Н鍒嗗晢鍝� 濡傛灉鏈夊垯鏄剧ず鎷煎洟娲诲姩淇℃伅 this.PromotionList && Object.keys(this.PromotionList).forEach((item) => { @@ -732,13 +877,14 @@ * 鏌ョ湅璐墿杞� */ reluchToCart () { + console.log('鐐瑰嚮浜嗚喘鐗╄溅-----------------------銆�') let obj = { from: "product", id: this.productId, }; storage.setCartBackbtn(obj); - uni.switchTab({ - url: "/pages/tabbar/cart/cartList", + uni.redirectTo({ + url: "/pages/cusbar/cart/cartList", }); }, @@ -758,8 +904,8 @@ */ back () { if (getCurrentPages().length == 1) { - uni.switchTab({ - url: "/pages/tabbar/home/index", + uni.redirectTo({ + url: "/pages/commodity-square/commoditySquare", }); } else { uni.navigateBack(); -- Gitblit v1.8.0