Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
飞
飞鹤小程序
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
FH
飞鹤小程序
Commits
e3268191
Commit
e3268191
authored
Nov 02, 2025
by
王炽
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
66666
parent
4621e78b
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
89 additions
and
54 deletions
+89
-54
SeckillSection.vue
components/SeckillSection.vue
+23
-10
InviteGift.vue
components/integralArea/InviteGift.vue
+3
-2
Integral.vue
views/Integral.vue
+63
-42
No files found.
components/SeckillSection.vue
View file @
e3268191
...
...
@@ -134,7 +134,13 @@
:class=
"getGoodsListClass()"
>
<view
v-for=
"(good, goodIndex) in creditsSaleData.sessions[currentSessionIndex]?.goods || []"
:key=
"goodIndex"
class=
"credits_sale_good_item"
@
click=
"handleCreditsSaleClickThrottled(good)"
>
@
click=
"handleCreditsSaleClickThrottled(good, $event)"
:data-comlog=
"
{
xcxComponentClick: 'true',
xcxComponentExposure: 'true',
pageName: '积分服务页',
componentName: '积分限时购',
componentContent: good.name
}">
<!-- 商品图片 -->
<view
class=
"good_image_placeholder"
>
<image
v-if=
"good.image"
:src=
"good.image"
mode=
"aspectFill"
class=
"good_image"
/>
...
...
@@ -665,15 +671,20 @@ const mapSeckillDataToCreditsSale = (seckillData) => {
};
// 处理积分抢购点击事件
const
handleCreditsSaleClick
=
(
good
)
=>
{
const
handleCreditsSaleClick
=
(
good
,
event
)
=>
{
console
.
log
(
'点击抢购商品:'
,
good
);
md
.
sensorComponentLogTake
({
xcxComponentClick
:
"true"
,
pageName
:
"积分服务页"
,
componentName
:
"积分限时购"
,
componentContent
:
good
.
name
});
if
(
event
)
{
if
(
event
.
currentTarget
.
dataset
.
comlog
)
{
md
.
sensorComponentLog
(
event
);
}
}
// md.sensorComponentLogTake({
// xcxComponentClick: "true",
// pageName: "积分服务页",
// componentName: "积分限时购",
// componentContent: good.name
// });
// 获取当前活动ID和场次Key
const
activityId
=
creditsSaleData
.
value
.
activityId
;
const
sessionKey
=
creditsSaleData
.
value
.
sessions
[
currentSessionIndex
.
value
]?.
sessionKey
;
...
...
@@ -681,7 +692,9 @@ const handleCreditsSaleClick = (good) => {
};
// 创建防连点的点击处理函数
const
handleCreditsSaleClickThrottled
=
throttleTap
(
handleCreditsSaleClick
,
1000
);
const
handleCreditsSaleClickThrottled
=
throttleTap
((
good
,
event
)
=>
{
handleCreditsSaleClick
(
good
,
event
);
},
1000
);
// 生成测试数据
const
generateTestSeckillData
=
()
=>
{
...
...
components/integralArea/InviteGift.vue
View file @
e3268191
...
...
@@ -46,6 +46,7 @@
<
script
setup
>
import
{
defineProps
,
defineEmits
,
onMounted
}
from
'vue'
;
import
{
throttleTap
}
from
'../../utils'
;
// Props 定义
const
props
=
defineProps
({
...
...
@@ -76,11 +77,11 @@ onMounted(() => {
});
// 去邀请按钮点击事件
const
handleInviteClick
=
()
=>
{
const
handleInviteClick
=
throttleTap
(
()
=>
{
console
.
log
(
'去邀请按钮点击'
);
emit
(
'invite'
);
};
}
,
1000
)
;
...
...
views/Integral.vue
View file @
e3268191
...
...
@@ -311,7 +311,17 @@
<scroll-view class="
benefits_list
" scroll-x="
true
" show-scrollbar="
false
">
<view class="
benefits_container
"
:class="
{
'few-items'
:
benefitList
.
length
<=
2
,
'single-item'
:
benefitList
.
length
===
1
}
">
<view class="
benefit_item
" @click="
handleExchangeClick
(
benefit
,
index
)
" v-for="
(
benefit
,
index
)
in
benefitList
" :key="
index
">
<view class="
benefit_item
"
v-for="
(
benefit
,
index
)
in
benefitList
"
:key="
index
"
:data-comlog="
{
xcxComponentClick
:
'true'
,
xcxComponentExposure
:
'true'
,
pageName
:
'积分服务页'
,
componentName
:
'异业券权益'
,
componentContent
:
`${benefit?.goodsName
}
`
}
"
@click="
handleExchangeClick
(
benefit
,
index
,
$event
)
">
<!-- 权益图片 -->
<view class="
benefit_image
">
<image class="
benefit_img
" :src="
benefit
.
goodsLogo
" mode="
aspectFill
" />
...
...
@@ -383,7 +393,13 @@
background: `url(${$baseUrl
}
integral/1022/listItemImgBg${itemIndex
}
.png) no-repeat center/contain`
}
"
>
-->
<
view
class
=
"goods-item"
v
-
for
=
"(goodItem, i) in goodItemList?.resourcePositionGoods"
:
key
=
"i"
>
<
view
class
=
"goods-item-container"
@
click
=
"handleGoodsItemClick(goodItem, i)"
>
<
view
class
=
"goods-item-container"
:
data
-
comlog
=
"{
xcxComponentClick: 'true',
xcxComponentExposure: 'true',
pageName: '积分服务页',
componentName: '积分商品',
componentContent: `${goodItemList?.resourcePositionName
}
-${goodItem?.goodsName
}
`
}
"
@
click
=
"handleGoodsItemClick(goodItem, i, $event)"
>
<
image
class
=
"goods-img"
:
src
=
"goodItem?.goodsIcon.indexOf('http') !== -1 ? goodItem?.goodsIcon : $baseUrl + `${goodItem?.goodsIcon
}
`"
mode
=
"scaleToFill"
/>
...
...
@@ -537,7 +553,7 @@ import { onShareAppMessage } from '@dcloudio/uni-app';
import
{
fetchIntegralJSON
,
fetchBatchReceiveJSON
,
taskCompleteJSON
}
from
'../api/integral'
;
import
RegisterLayer
from
"../components/RegisterLayer.vue"
;
import
{
showLoading
,
hideLoading
}
from
'../utils'
import
{
showLoading
,
hideLoading
,
throttleTap
}
from
'../utils'
import
xinrenli
from
'../components/quanyi/xinrenli.vue'
import
md
from
'../md'
;
import
mianfeiwenzhen
from
'../components/quanyi/mianfeiwenzhen.vue'
;
...
...
@@ -1760,22 +1776,22 @@ const getWeekdayLabel = (day) => {
// 监听 scrollTop 变化
watch
(()
=>
props
.
scrollTop
,
(
newVal
)
=>
{
console
.
log
(
'scrollTop 变化:'
,
newVal
)
//
console.log('scrollTop 变化:', newVal)
// 执行相关逻辑,如曝光检测
if
(
newVal
>
650
&&
newVal
<
1200
)
{
if
(
mdMap
.
value
.
indexOf
(
'异业券权益'
)
==
-
1
)
{
mdMap
.
value
.
push
(
'异业券权益'
);
if
(
benefitList
.
value
.
length
>
0
)
{
md
.
sensorComponentLogTake
({
xcxComponentExposure
:
"true"
,
pageName
:
"积分服务页"
,
componentName
:
"异业券权益"
,
componentContent
:
"异业券权益"
}
);
}
}
//
if(mdMap.value.indexOf('异业券权益') == -1)
{
//
mdMap.value.push('异业券权益');
//
if(benefitList.value.length > 0)
{
//
md.sensorComponentLogTake(
{
//
xcxComponentExposure: "true",
//
pageName: "积分服务页",
//
componentName: "异业券权益",
//
componentContent: "异业券权益"
//
}
);
//
}
//
}
if
(
mdMap
.
value
.
indexOf
(
'邀请记录曝光'
)
==
-
1
)
{
mdMap
.
value
.
push
(
'邀请记录曝光'
);
...
...
@@ -2411,18 +2427,24 @@ const convertType = (type, url, extra = {}) => {
//商品点击
const
handleGoodsItemClick
=
(
goodsItem
,
googidx
)
=>
{
const
handleGoodsItemClick
=
throttleTap
((
goodsItem
,
googidx
,
event
)
=>
{
console
.
log
(
'handleGoodsItemClick:'
,
goodsItem
,
googidx
);
const
tabname
=
goodsDataArr
[
activeIndex
.
value
].
resourcePositionName
;
const
buttonName
=
goodsItem
.
goodsName
;
if
(
event
)
{
if
(
event
.
currentTarget
.
dataset
.
comlog
)
{
md
.
sensorComponentLog
(
event
);
}
}
md
.
sensorComponentLogTake
({
xcxComponentClick
:
"true"
,
pageName
:
"积分服务页"
,
componentName
:
"积分商品"
,
componentContent
:
tabname
+
'-'
+
buttonName
}
);
// const tabname = goodsDataArr[activeIndex.value].resourcePositionName;
// const buttonName = goodsItem.goodsName;
// md.sensorComponentLogTake(
{
// xcxComponentClick: "true",
// pageName: "积分服务页",
// componentName: "积分商品",
// componentContent: tabname + '-' + buttonName
//
}
);
// let buttonName0 = '';
// let buttonName1 = '';
...
...
@@ -2470,7 +2492,7 @@ const convertType = (type, url, extra = {}) => {
url: url,
extra: extra,
}
)
}
}
, 1000);
const handleScroll = (e) => {
const currentIndex = e.detail.current;
...
...
@@ -2835,7 +2857,7 @@ const handleHelpClick = () => {
}
// 签到按钮点击事件
const handleSigninClick = async () => {
const handleSigninClick =
throttleTap(
async () => {
console.log('签到按钮点击');
md.sensorComponentLogTake({
...
...
@@ -2868,7 +2890,7 @@ const handleSigninClick = async () => {
icon: 'none'
}
);
}
}
}
, 1000);
// 关闭签到提示弹窗
const handleCloseSignedTips = () => {
...
...
@@ -2916,15 +2938,21 @@ const handleCloseGongzhonghaoPop = () => {
}
// 处理异业券兑换点击
const handleExchangeClick =
(benefit, index
) => {
const handleExchangeClick =
throttleTap((benefit, index, event
) => {
console.log('兑换权益:', benefit);
md.sensorComponentLogTake({
xcxComponentClick: "true",
pageName: "积分服务页",
componentName: "异业券权益",
componentContent: benefit.goodsName
}
);
if (event) {
if (event.currentTarget.dataset.comlog) {
md.sensorComponentLog(event);
}
}
// md.sensorComponentLogTake({
// xcxComponentClick: "true",
// pageName: "积分服务页",
// componentName: "异业券权益",
// componentContent: benefit.goodsName
//
}
);
if (!islogin.value) {
needReinit.value = true;
...
...
@@ -2935,13 +2963,6 @@ const handleExchangeClick = (benefit, index) => {
return;
}
// 埋点统计
md.sensorLogTake({
xcxClick: "积分服务页-异业券权益页面点击",
pageName: "积分服务页-异业券权益",
buttonName: `
兑换权益
-
$
{
benefit
.
name
}
`,
}
);
jump({
type: JumpType.INNER,
...
...
@@ -2966,7 +2987,7 @@ const handleExchangeClick = (benefit, index) => {
// icon: 'success'
//
}
);
//
}
}
}
, 1000);
// 处理邀请按钮点击
const handleInviteClick = () => {
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment