From d4478cccd85d2eeaa48ad286c7d4b43f02d23fa8 Mon Sep 17 00:00:00 2001 From: zzc <1761997216@qq.com> Date: Tue, 9 Jun 2026 23:55:11 +0800 Subject: [PATCH] fix: rating --- components/CommentItem/CommentItem.vue | 12 +++++ pages.json | 4 +- pages/index/index.vue | 65 +++++++------------------ pages/rating/detail.vue | 30 ++++++++++-- pages/rating/index.vue | 26 ++++++++-- pages/release/index.vue | 13 ++++- static/images/logo.jpg | Bin 0 -> 11901 bytes utils/common.js | 9 ++++ 8 files changed, 101 insertions(+), 58 deletions(-) create mode 100644 static/images/logo.jpg diff --git a/components/CommentItem/CommentItem.vue b/components/CommentItem/CommentItem.vue index 510afb5..9fb1080 100644 --- a/components/CommentItem/CommentItem.vue +++ b/components/CommentItem/CommentItem.vue @@ -64,6 +64,18 @@ const handleLike = async () => { try { // 调用点赞接口 (点赞和取消点赞为同一个接口) await topicItemCommentLike({ commentId: props.comment.id }); + // 记录点赞事件 + uni.$trackRecord({ + eventName: 'like_comment', + eventType: 'like', + elementId: `comment_${props.comment.id}`, + elementContent: `评论项_${props.comment.name}`, + customParams: { + comment: props.comment.content, + page: 'rating_detail' + } + }); + uni.showToast({ title: '操作成功', icon: 'success' }); } catch (error) { // 接口调用失败,回滚 UI 状态 isLiked.value = !isLiked.value; diff --git a/pages.json b/pages.json index 67d7430..b14ed03 100644 --- a/pages.json +++ b/pages.json @@ -3,7 +3,7 @@ { "path": "pages/index/index", "style": { - "navigationBarTitleText": "全民评分", + "navigationBarTitleText": "夯拉评分", "enablePullDownRefresh": true, "navigationStyle": "custom", "backgroundColor": "#FFFFFF" @@ -67,7 +67,7 @@ { "path": "pages/rating/index", "style": { - "navigationBarTitleText": "全民评分", + "navigationBarTitleText": "夯拉评分", "navigationStyle": "custom", "enablePullDownRefresh": true } diff --git a/pages/index/index.vue b/pages/index/index.vue index 6f76ee0..88c9fa6 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -10,7 +10,7 @@ @tap="handleLogin" /> - 全民评分 + 夯拉评分 看看全国网友怎么评分 @@ -136,58 +136,27 @@ const loadTopicList = async (categoryId, page = 1) => { const switchCategory = (categoryId) => { if (currentCategoryId.value === categoryId) return; currentCategoryId.value = categoryId; - - // 切换分类时重新加载数据 + uni.$trackRecord({ + eventName: 'switch_category', + eventType: 'click', + elementId: `category_${categoryId}`, + elementContent: categories.value.find(c => c.id === categoryId)?.title || '未知分类', + }); + // 切换分类时重新加载数据 currentPage.value = 1; hasMore.value = true; loadTopicList(categoryId, currentPage.value); }; -const mockData = [ - { - id: 1, - title: '你心中的千古一帝', - participants: '23.5万', - heat: '98k', - items: [ - { id: 1, name: '李世民', avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=1', score: '9.8' }, - { id: 2, name: '秦始皇', avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=2', score: '9.5' }, - { id: 3, name: '康熙', avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=3', score: '9.2' }, - ], - aiSummary: '多数用户认为李世民综合能力最强,兼具文治武功。', - tags: ['历史', '皇帝', '争议'] - }, - { - id: 2, - title: '国产手机系统谁最强', - participants: '15万', - heat: '76k', - items: [ - { id: 1, name: 'iOS', avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=4', score: '8.5' }, - { id: 2, name: 'HyperOS', avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=5', score: '8.2' }, - { id: 3, name: 'OriginOS', avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=6', score: '8.0' }, - ], - aiSummary: '系统流畅度与动效是用户关注的核心,底层优化成为评分关键。', - tags: ['数码', '手机', '测评'] - }, - { - id: 3, - title: '最值得定居的城市', - participants: '12.8万', - heat: '62k', - items: [ - { id: 1, name: '成都', avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=7', score: '9.2' }, - { id: 2, name: '杭州', avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=8', score: '8.9' }, - { id: 3, name: '厦门', avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=9', score: '8.7' }, - ], - aiSummary: '宜居性与就业机会是主要博弈点,慢节奏生活深受青睐。', - tags: ['城市', '生活', '推荐'] - } -]; - -const topicList = ref([...mockData]); +const topicList = ref([]); const goToRating = (topicId, itemId) => { + uni.$trackRecord({ + eventName: 'jumpto_rating', + eventType: 'jump', + elementId: `topic_${topicId}`, + elementContent: `主题${topicId}`, + }); uni.navigateTo({ url: `/pages/rating/index?topicId=${topicId}&itemId=${itemId}` }); @@ -248,7 +217,7 @@ onShareAppMessage(async () => { const shareToken = await getShareToken("index"); getShareReward(); return { - title: "全民评分", + title: "夯拉评分", path: "/pages/index/index?shareToken=" + shareToken, }; }); @@ -257,7 +226,7 @@ onShareTimeline(async () => { const shareToken = await getShareToken("index"); getShareReward(); return { - title: "全民评分", + title: "夯拉评分", query: `shareToken=${shareToken}`, }; }); diff --git a/pages/rating/detail.vue b/pages/rating/detail.vue index 5c22af5..e0cc5be 100644 --- a/pages/rating/detail.vue +++ b/pages/rating/detail.vue @@ -5,7 +5,7 @@ - 全民评分 + 夯拉评分 @@ -50,7 +50,7 @@ /> - + @@ -165,6 +165,20 @@ const handleActionChange = async (action) => { if (!isCancel && successPopupRef.value) { successPopupRef.value.show(action); } + uni.$trackRecord({ + eventName: 'rating', + eventType: 'rating', + elementId: `item_${item.id}`, + elementContent: `评分项_${item.name}`, + customParams: { + scoreType: action.scoreType, + action: action.label, + topicId: currentTopicId.value, + topicTitle: topicData.value.title, + score: item.scoreAvg, + page: 'rating_detail' + } + }); } catch (error) { detailData.value.userAction = originAction; detailData.value.score = originScore; @@ -196,6 +210,16 @@ const handleSendComment = async (payload) => { currentPage.value = 1; hasMore.value = true; comments.value = []; + uni.$trackRecord({ + eventName: 'comment', + eventType: 'comment', + elementId: `item_${item.id}`, + elementContent: `评论项_${item.name}`, + customParams: { + comment: payload.content, + page: 'rating_detail' + } + }); getCommentsData(); } catch (error) { uni.hideLoading(); diff --git a/pages/rating/index.vue b/pages/rating/index.vue index f2d6dfe..b28084d 100644 --- a/pages/rating/index.vue +++ b/pages/rating/index.vue @@ -7,9 +7,9 @@ - + - 全民评分 + 夯拉评分 @@ -273,7 +273,6 @@ const loadItems = async (topicId, page = 1) => { ratingItems.value = [...ratingItems.value, ...list]; hasMore.value = list.length >= 10; // 假设 pageSize 是 10 } catch (error) { - console.error("获取评分项列表失败:", error); hasMore.value = false; } finally { loading.value = false; @@ -330,6 +329,20 @@ const handleAction = async (item, action) => { if (!isCancel && successPopupRef.value) { successPopupRef.value.show(action); } + uni.$trackRecord({ + eventName: 'rating', + eventType: 'rating', + elementId: `item_${item.id}`, + elementContent: `评分项_${item.name}`, + customParams: { + scoreType: action.scoreType, + action: action.label, + topicId: currentTopicId.value, + topicTitle: topicData.value.title, + score: item.scoreAvg, + page: 'rating' + } + }); } catch (error) { item.userAction = originAction; item.scoreAvg = originScore; @@ -337,6 +350,12 @@ const handleAction = async (item, action) => { }; const goToDetail = (itemId) => { + uni.$trackRecord({ + eventName: 'jumpto_detail', + eventType: 'jump', + elementId: `item_${itemId}`, + elementContent: `评分项${itemId}`, + }); uni.navigateTo({ url: `/pages/rating/detail?itemId=${itemId}&topicId=${currentTopicId.value}` }); @@ -417,7 +436,6 @@ onReachBottom(() => { width: 56rpx; height: 56rpx; border-radius: 50%; - background: linear-gradient(135deg, #001f3f, #0088a9); display: flex; align-items: center; justify-content: center; diff --git a/pages/release/index.vue b/pages/release/index.vue index a6b0842..5f0d11f 100644 --- a/pages/release/index.vue +++ b/pages/release/index.vue @@ -151,7 +151,7 @@ - + @@ -321,6 +321,17 @@ const handleSubmit = async () => { participants: participants.value, }; await releaseTopic(payload); + + // 记录发布事件 + uni.$trackRecord({ + eventName: 'release_topic', + eventType: 'release', + elementContent: `话题_${payload.title}`, + customParams: { + title: payload.title, + categoryId: payload.categoryId, + } + }); uni.hideLoading(); uni.showToast({ diff --git a/static/images/logo.jpg b/static/images/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ede38ec66c531d6857f111f4baa7b2030b681802 GIT binary patch literal 11901 zcmbW7by!thx9HbSxF&3aE65bV!4Mbc2LQDxr9{-+Rvc zz2`p9Irlzi{4w`$jXB1gW6e3{+G9O?|Ni`Y3-htEtgM-qj;4aLnmhmk0RX0wnuDtw z7#9FsT)jPY6lD;P4UG^e695=M1K z%yKAcArSx8|9=slmAj`m0D!cR)_m4BURFqsMzXV?xBDOcDUt~-o&GQw`iDJ{0V0{? z58M64?EkX)i>3aswTr7Y(&kUh?$$2Wf4CpXalSq_NQS5(Io8*~#t+G#kWBCF*y)fR-2l zAX)mij=m58aH0XAdGa6kL;NRS?7h9+MY*{A{QNi_Y^*r{Ea>0z|1|j9^1p|F%*Xj> zzQ5NFA!lQ2;p6O$__L^1Zq9B#o(L~@3o9E0$N!zg|7*v8g!PX&*mZ1dZ9HvUkyGg- zv&_NO4!PZ~)(+kdZmtLi*Z*#Z|Cet6h~W?ZmDflhD7^;=%{T$vNkRbfbqs(KU;q%4 zm&hK_-}|P9rVso%c?Q(`f8{-rk^TQ_|4Rc-MP7ov9PAK()UrCd2rC~?-#?5z6Mq^Q zfDYgQga9c(1<(P^00+Pe2mxY%6d(_%0Gfa1 zXecxZnhULjHbeWNv(QcGDfAwO1*3qm!9-!ou*Wbvm>(<_mJKV1HNgg8bFf|5cQ_nQ z3}=E1!Ij{Ka7TC$JPBR^uZMTTr{UZ1D-;wIQWQ26aTHAy3lwjZSd15STEn`=Ccx&zR>ro*4#UpFZpNO$KEXl5 zVZf2bd4dy&la14WGl_GIi-yaHD~oG^8;YBU+lIS;wRE4 z@+Zn8dQY@L3?XJDRwi~PP9=UvJWqW4fbxO#1Dgl&59%JwJorIEP9jBOLy|yJPclbx zONtreLMep$MWVp%|mM zqNJi!q;#izLD@%nOhrs3Mde8KjH-+3fSQ0>g4%)l8TAM1Lj(~*8sUt{LG&X|X((uv zXnbgjXeMaxXqjmBXd`LsX;4fQQ>7LQ`(w)*%)2q`5)7Q{1F`zLBGuSgcXBcAm z!N|mD!1$E0h4Bj$36nBYAX5#~3Nse7B(n!|G4m%DIEyfg6H5Wh6f2ljfYqKgk9Cp_ z%qGa@z*fLE%?@K1VRvOOW?$gId=O3 zYiZ|c@9FU91nUevB6wu>sQS@&T^Zd}-DN#yJs-VZeH?ug{VM$*266@&1{;sL9)~<0 zH6$~1Fl;qKG150GH@Y&GH_kHNH4!k0HJLYMGW9ndc|!KY`N?}T95V~E26LFXfqAw0 zPYX?pVv8$FWy^faQ!81k=T=A7Qr6F`4{XG3GHmv3#ceZezu1Y}W!fFsOWJ4KA3Ml8 z8vOD6UH!)bSOek%_5&3H%YvXmRzbbN zG{F(Un<3I6MWLWj%h291y0GZ5-EhV5$_Vrbr-<=L?#PVD%P51W_GrrJ@aXLr#h98{ z>{!p(g{NXqU&TS=9O5S8`Ql&1-zQind`#p{%uf87WR>(WnI}0X`FDzK%0#MQ>dQ2E znrqs8x@3A~23|&B#&)K9X7e+|vxH}tS!P)y+5FkBo})kadA^aOmecxz{zcl0pSkwA zb9pj(_4yR}@%cXrtP5sdO1-RmMfoc6)or0e;pZa7qUK`8;_MQ5iEqhXseb8DnQ&QE zIazsP`L7Dsij7L0%Kj>$s;X*=>eL!=jZe+NYm?VgwQ{wsbsTj?^~CjwZ-6&GZw}v@ zzny=l`mVP@xS_6*p)tRSpedml)Ev-!+G5|b(Q4Q_-KNsk+b-7L)WO+N(Mi*p_nzo| zY8QG}bl2|>fgi5A-Mf!_?0U9)&3c#n9`}9f*Y2MfP#qW^R2b|Vk{|)%MYj z*Urz~=sm2x?0xF}sxQ1>Iu8^MrVfn{caPkU?v7)>;(g6OVLoa6CiQLX^zrHLndjN> z^P~Ξ7GB%ib%ktF`Yg-|v1TT$5f`-U#0e-5T8P-}(JS`I+;Jix=Zm*2mC zp8zz{)^3(IfVC8|763s2TnHEf|5F$Ir~F<9q5<&V0znc4ifkcJ81#?8;IMxQ9FBs5 zih=@1LqkVLL&N;90)jvwFenTS4oAa6M?=TL!A1%W&cBTQ;{)@rtN-fv_to!S01p*e zb7Vq5cmNm=1i=IS?nhP`e$4s2El`m%1t0mL`x{eODuqgw1j|RAn2bF|BM4hdg8(006s1a4*?3T zw6+By!Xu)GmyQUvNQRjEH2tlPrDq18Y!p5J1AL@4az+Rm3IvSuCk_x84<7>1@JMSD zK)EewJtES3cx80x2yst~rY${T<{5l%BR6|zWW6%^iGD8un8@hCco00K=a1@Id%S3A zVN5JWLpVNrT$Ee}a|?7lT3X6>m=%@(1@e}p5b;nD_mXA`D+m=9Nyk&#EytfH!fpxD z)nOHcq$i}wk-#ma)6O$Rv@UFWjW`Mv;}^f0Re1^K6J3{}#=u>{rQOEy(w(p9_bD2G z1JbRH0kxwoFW2gaER1g}a+gHBYKVr2NECXtB7i6%vw7zx4EU_M(9)Q6al^8|qVnhI z#W_DQl^>m6K|?{4)6zP+#NEXZ5pq=Dqc(Q?*r+LANtfYE{1CsmKo|j&bhKFVkk{gc zM2XFr1g8HS=4UWoG1P(@+j*&=aXum7ILo(vr1ZP%WWkrWW_op(c0rq2@pqM?v4g zjlLTi_4+uiy|cR>-mwx*M}vCM_XXhMF*?)jPNt5&Bq;kVVMoQgGV%U>$+OP=vLSIB z4BNW-p1@b+Z^py76Ht@owzZq#=+*}T$*=Oh9jKo4yrMKdIIn*m_>$o0jR`~b<@umrgh3~A*^5O#-zBt_tfX#Fcwhu}f!nIK!zsi5%-s?5TksoMu#r|JcB{q&Wn zm^3f|f-;av6@STpF-N-Tbp0L2&(Wed9Q1D4g2m4em!(be&n3s7N5A%hEGc7j) zHA=bPLmtG;M`Er8NSUK@WDC!gh94)P$`yW+ZvmL005|Bh0sUuG2004+!e|oI*;Hf> zq9V@|2nKBB6CGDaQY>U1))yA)Ii~We_s^SYo;SbZP8;R_H>{0Fe>vts(-kR5&NnY#}GJbd_l zbI@X_MN)WZYk2Y3g1Z%E;C7Q!Yc<()OOp0ww4Q%+@7CwOvkot6O5^dqR$CV_fj!y; ze4^G3Gk4Ap_YC;e2^8SeHfaT+-7rqdh#9T%a`+pU#HpR<^1R(XJpuEQAPM3!#^K0|YpOd}5AN#S_=5$)yNL)l{d<PE_>Fd1!aj$4$%|N3$pG z%R1ON-Z9~l&2J38`yUDMuj?wNkH~8Wd6`M=oN8@wg(*EWNGMFGFZ6oimlRHrM5O9?pFRZ^);dH#=UzN^YzB<)ABe3>+5Za&8G0d^ca^T#*xN*#SIX= z@Y9&SpNrp)X&O1v=b%h_Gq9+{^aB5A`ech zN!hi>C%wa3xg-6}-1?)epD8GmF_Tm??x?JbCA5En%v+m&&^Nel%kP_V9mRdOXu&p2 zagH5Nrnc45x$Jr(TWf4!d=?;?NcQb8R8!Y{Em+8GKwh+u+`ido-Z=Ax7tNg6ho73; z=zFf>Emj}scmy9&y&h@sNEzu`hJ6be>^kC1zdnzdoW`+2VM1#Qdw*@{oEh9m40lys zzEgYBU`emsy)@nuL^OS~|4AIbd3?+?+oAa#cM$pm;uEz?Vs}?6n@gT=xW|&;V~ePR z%@x{OIPTe#%D0W4FP{lKus6E8?hN@2SoP)^yt&}rE3)Ds_h$sP z*}t|F^k+-mGWH6YnOWsEhqm5Np<*+?Z!LQiqYd*f39hEu4DJlat$=F7zD>4YpMNvg zJ~!U*-`+y!2gpD=omm@*_pKOPk2>A8Pa}zHiDV=Qo<{8GhGXfmDn^s*efaKYdSzm( z==ej?LeNh8>sL=M*%i7V0(p(v;A&(rKw%6zdKOKix&zBPhD-mNm|ds4k3`iG7FgkD z)QJ$UlCh-byS&u7p_M7tj4FAf>KLu3Z_z4)j=$5X`Przh-x1I(P|ntVQyV|58$HO! z;tEb(yZl+j4Y$s@39-p)B3(_PQpaN((JQWo^o2||Xc?!xsQym;cJ=Wc*Zj|k<}b$F zi(%GGq>XEN1w9|0i@jY+>7DOrFjz^|J{IEXn(kN~CZn|ns*7D@==F<&SYE^xI1;Tp z3U(g(1zo%;Uyfg0U8Wrl2w)r`U5aOCxj$ZOajW|!*>z;9dG%EFaJ=w_fnfi-BA0be zH0w;^m81t}`{Xs_!JVG=&3$Ib%Qs&QzW7=1Jvn@t zeUy?Nk1ddL@Lq?nl|q^SOp{-_Qj6{^H$4rJ-$IbTq@)SY5HTd|fdm!=deG}717}MF4=?6LAzqqeK z2vB4XH|ubRostgGQEhi8$Cx6L(T4acT3c|x=te#FpVP#Zii&N;;k8>@jAdbU1i`&tVtY?k?A+{o!m6|a%1aFVKZ(&KP+ewMzy%fnz=Ci?1x7?4)nsM!o z4cu1NiXa_WAxhXv#$FXXjaIiVspJ8`I!H&o!!oPDSj0}UdOKtPqp&&cw`*)+XcS5c zCHALRgW@6iSQ_*>7Zm<=csn{C819*OnswX|t_UdeCZl00u?u!L0O#*{@9xk-@a8HX z->bl%LZ=Y4y10zu3pwlKCT+e~D`~YUM|1WvH9r=&n@i>~9fRdS)Ik|yBx%h^cbZ(2(AGoE^VSYaMgBUc|eS+V(@fwcVtb zUApZY2wWL8udNTLH1@H<3s^z>Av}#7&>uy*%#Px(oZ(knSE&_;M!W2h8{nlB8~S%; zjg>g40D1Ia1%~6k`X>{cbggTWSd0gFzp|lGx2Y6*?*37DWlU1RD)ej#RX(KfM-(X5 zA8Tca5JF&S$jHk(r#MjdQm%RvpfieJj>#YFITvKS{oHj`P|~?`P(x$SH>cclXi@=7 zgtrPBpzL73_`Z%WrfaWJ>q<;14Ze2gx$(xiaHm4B?>9g*Wh6wJO=Qe+3T1Z?aS*-H zV9##f8Xu4s+?gt8vClsbBm7q9l}IV68Zu>I+!If5{Bk3~bIqNjPFf1DFYa>eM8i&E zjCmbc%ClEu*okrnfpz^Y=@Qd{^a#hHIF`~hbAjPpRxH_NfMuNW_56=N|st^gYfI&*#sD>RSn4Q5+&e7}{WY)+r&xT8U|jC^E! z;w$gABSNH!2oU=yhA58_-*P5RQf(=H;2s~1dVhk7P}~t-EWe1lN!6_SVYCPwEW*7; z#Rk$dxVqE?&0*-C8``gr)lJx2<|o)BD@0EhoUfpiam)7UxK>o;KA{(MV}zW+}%a*6U+$@QO)jvw0*+LZ;*HBThZqjtM>5>eR8 z75y!}F5>!V=9H;YR$_^`znw<)u`kcSLH6k4(-ph%5Weq1hoJX#jrLLl5v1`8v1m3K zJ`@ka#O#F@pog8Iw*jYEBL>&8=J&hXYvLq`J;i0mjUU8FR|_|T2-plb05L*kns`PsZfl0%>elihy5t_HeFDnHpK_+f{(T3f%yF)HS&w9Nt-&*BYW}pl%cB>6~iMV?908!-0IJRU=9dRoGgO3^4 zb-#bj%sB7kO(D_+C4*8q{c&7Ig?|*-iuH~oe(ZTL9!P%u4W!V}zhpY6e#zRZENQI} zsIdc9qLNY;ujTU4O-=+t2x7&FN&%_Zs(j3xFm&eTuuH5vjL+=D^ zZE5tN5sz@`!~#(4QRxe=Gy81IrL%X1gKbWUet|@d^C}Pq z-M2j3oMUKQrh23cYUIR(;`k0y;MBPAH+(!VZ_Lx07h9@avPC>>GJ(K1@0ooXK52dP zabbNLn#T|ez;ee>5LfMM~^1MZ@tn*G;Ut`4{4uKL7^@nA&YY2Q_YXs>M=0})p<#kkmh+?-TYSDm^>V0Ndfp{3(`E-Mdo*E1jL@;1q!vaxpe*C<%6z;5nqb&9& zRC;SE5v$+8WM@zBvVL>7mWu7OcCbu4Z+}%;1Qe7*nQ837+8rsDx^5Ekh)E+b4YR3$wvErUG8qRWBcx8veT~^0S&^1Cq(t8UYn-D0t+Tx z1&<;ZQaN*XIz`UQ+nioe6?o4r4;%V)kR&tT`R*}@w3{qA#xKR-m5Sh-Trm}8k9CoG zKQ!C!KFj9sOdWoyoN}mv(9?btl_c*@Uww&SsUN&?M+3jI3cGVZ&0 zfF-ku7shI9vK$lg=g}BPOI4>8ryw0_ttH1~{IALZu*i?UE<{?Nx*qKu$39w6y^LON zOlKNnq5{$1E6g?j>dpl`b`ehZ#vw2XevO*5CxNuptO=~eL31L-j=!Q1zI_92b+XB_ z$k(x6LnqG&qf5C&ks{4V_qw(+{+iMSP1`OC5f9avwO_x)TpC3AY)vMl2F*cD@_GS7 zgmT*Ahn-F6>)Ux_cfRD|z0U)OF3t_P5i1R`&twMEQ<6Ja1v+CEO4H)G9bHgr{Sdux zpBVa~pXlolBopS(ApZKv>VH;uf_FmjjFQswc*_U4(}7&*f14LcSY(KERKl2)SP;^K(#vfbSR{bI0Pv9LynFZHssU8#n(~{az$;e#V`Kqt!*s1%dn8dB>N^sm7S?=)khWMVe!qeRkzcDFH=QwEyYc)ElZ2OPtVhHnFMPpqqkGqZxTog6K=D+ z4iEb_lQfK{vhT4~#ym;-<9w5RioZ_gGsrAmT-_+;x3yaDZ`xO-Za>JEcqqvI1#{Uw zar|`(*32jspJ_IEgm~72T;c&dL02u-!2ZU7h8I|O5~EhKfy?F{I~s%ZO|oe+@4)1^ z+k@67Vdix8xNOmpQEl+z>Q0u~?Y>%;y7ua$Zwnuu{0c}v<0u_Z4D0b7cF=pUmXMz% zURCK^lhvKyWM~q0dFSLi(pwWVk)OG&?;@CfBHU<*LlopJ^i>Gs z^UIyX_TRu>t9TE?GF^2`wsmp_tE%sZ7o?dQa;(ZX(fO5mDA`|W^D5Eqt7oqrSEDw4 z4N0H4q(x>uCrSuuF|{FrmW>5yD^M`bh4K85Ty?>mLoxJKz7-f9mC)#j@(W(S4HOF# z^Ua-U3t}tdP7vt(Qd2rvVWmZi*ZFW*q&Jtf7Zcy zyCg9n8S%td(HDV+(GOLRa_OiM-@H>>#`y7Adr#b|4Z}i^wCi*0+nq#(4Z7Ouulxk` z)f_~RUcu_AjJ_Wh2$*ta8a_{Pn|Mz(`(nv@sqAA)Wh&1FP|U?&qq{b(HCUxmAz>7d zvPYStXkIzK+c7pOIgt=H7s%TEOpVls1_cezsj*6(O47{=H0Uv;li@s{xHI2n@t}Te zL@eOpRY()PW(@zbEIHibS>cKC@py6k{qS-iQ=j^8;K_~UY>M&Jw6%QSh6txu^1>&O z#KDaVhhzb5bwz_tZ4OohVx%2cEX`VHRphx-Nw=8x;_NG(fL#r5d5$PODLf6My81Oc z^PRRdvs!iIiO>7aMG9$=%Q~ERL$;^sj1T>fMU_l?(lkR1QjOe;y%&BQ)OV=X`+bO4 z%=C*Pll4B~K9234snV@Xr>)>nY&PQ>!;A-9Y0#?RgUvsbf-E=j1v>p+u0~czD#VOx zpUfW}ODEIdhEs(UisBX}oD1L+;LG3>Y18P^=*iDs9(%OCNT z0hizrgIp15Tmpkqyf&a5;IRKTC~lMy_frp{`h!L#Y!@26;%2!xb0tOr%HBAcn#mY{ zJ^oiiUqWtgoBV$9R(aj9P*<=r7yr1kSuTE6Ca!xlx?bhS#haR$*I~*zW85$~^l|g{ zVP)MgeM^fyhDAvR#=D~R75I;^_VNzjy3B{|>hB+$jpMJo7zR9iu|WP2Vt;hpLrld~ zVADE$G(!!NBc5$NYFw($2EU|Ia3g&F8%VV&uxx))Cpa8;@Po{H&EnjZ&y}rOou#rx zBRYQ6V9`I)n&-{W+EGFAxW36X#(CYEzIw&ngAu>?$iJc$#5_>Pnz+q#)}oweh;0ZR z#Ng~dXY}0e97UtC4Rl{MYg5+PA{&N!)04BF?258h=@H2XTfEw#^6Mor@ilSU_Rkqk z<=<)|eZf5gnAn*>zeg&ucBV)872_hx1VYA7KS*u~2mkCz^b%r@K4!5#9(CeWxG7DW zo2N^t<3|2oJZ<3Qa&cKk*}9JQf=ku|EHEP$dl{f!QqP^L;NOk4M|td*<350y>n@}h zVl(0hv znSGU-EZ;27O>COMPir$j$TuwwTfi#z8M2q#`y{Q1*wjyQ48^?Ah`auH6y_dZ@TH?< zahIr7y1YP7_r?%a4O~mk*f*29E4WS)EA})1E>J$;a8}iZm9tQDd>|LQ{k3T|0>eoz zscl5BU!`@XvdI`FHMkXiMyVabB@KzcSN^VvF@Csqe&d) zr*BnoX(6TwGO%EHFg)Q|lXj20tI?<8rfv&FlIe}|p1SGwe!?=Jt6V_Ux{1XMfrno+ z`}>Nv)7|3kT&?9<7Hn%|?yBg&CcWFHkFCRqUSc-;K> z^_w!`nH?bqYwqpF{sxamecEPL8kTM3SgxU#LV6$H9r?U{tul;TTqB6v8Tz&5KWUR(Zb;HkiXCQauaDKz`7FWR&Ni#EnOP z!jcfa0Er4@A`2bLGJbi3`Y1GDM~IWx%u$Swl2ur0wm4yvcv_BDXGvh*%e#5mT~&E+ zez3^&Y_`DNlRjX&qywvkTp#h3F^JQdhq_<3RVA^W@cMpM6gIIQk=6Q+F8AV0XQz2D z-`y9NhsNH^L{Sej47J#2?tU_$p~0bJ6JJuphmN_1K7DLkc-2_PMX$s$PO3vm$-q7X zHx>Qz`s|+KLFD14UE7Pyqz|hZP;=or8jwXyq}6bpVBo@WZt-< zlnqX4V~LQZ-Fk=5ON+!t;2PSK^Aq=oqE?J);}K*L=$XVige`kWtp6&IwCp$Z&~X51 z { return shareTokenRes?.shareToken || ""; }; +/** + * 记录用户行为事件 + * @param {Object} event 事件对象,包含事件名称和参数 + * eventName 事件名称,例如 'switchCategory' + * eventType 事件类型,例如 'click',可选 + * elementId 事件元素 ID,例如 'category_123',可选 + * elementContent 事件元素内容,例如 '分类1',可选 + * customParams 自定义参数,例如 { categoryId: 123 },可选 + */ export const trackRecord = (event) => { const pages = getCurrentPages(); // 核心修复:在小程序刚启动或页面尚未压栈时,pages 可能为空数组