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
2986933c
Commit
2986933c
authored
Nov 01, 2025
by
王炽
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
66666
parent
8ea0ef83
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
334 additions
and
118 deletions
+334
-118
SeckillSection.vue
components/SeckillSection.vue
+17
-0
InvitePrizePanel.vue
components/integralArea/InvitePrizePanel.vue
+30
-2
TaskCompleteTips.vue
components/renwu/TaskCompleteTips.vue
+14
-1
TaskPop.vue
components/renwu/TaskPop.vue
+19
-0
invaterecords.vue
pages/invate/invaterecords.vue
+8
-0
sharepage.vue
pages/invate/sharepage.vue
+14
-0
Integral.vue
views/Integral.vue
+232
-115
No files found.
components/SeckillSection.vue
View file @
2986933c
...
...
@@ -168,6 +168,7 @@
import
{
ref
,
onMounted
,
computed
,
watch
,
nextTick
}
from
'vue'
;
import
{
useIntegralStore
}
from
'../stores/integral'
;
import
{
throttleTap
}
from
'../utils/index'
;
import
md
from
'../md'
;
// Props
const
props
=
defineProps
({
...
...
@@ -357,6 +358,15 @@ const shouldShowSection = computed(() => {
// sessionsLength: creditsSaleData.value?.sessions?.length || 0,
// creditsSaleData: creditsSaleData.value
// });
if
(
hasSessions
)
{
md
.
sensorComponentLogTake
({
xcxComponentExposure
:
"true"
,
pageName
:
"积分服务页"
,
componentName
:
"积分限时购"
,
componentContent
:
"积分限时购"
});
}
return
hasSessions
;
});
...
...
@@ -657,6 +667,13 @@ const mapSeckillDataToCreditsSale = (seckillData) => {
// 处理积分抢购点击事件
const
handleCreditsSaleClick
=
(
good
)
=>
{
console
.
log
(
'点击抢购商品:'
,
good
);
md
.
sensorComponentLogTake
({
xcxComponentClick
:
"true"
,
pageName
:
"积分服务页"
,
componentName
:
"积分限时购"
,
componentContent
:
good
.
name
});
// 获取当前活动ID和场次Key
const
activityId
=
creditsSaleData
.
value
.
activityId
;
const
sessionKey
=
creditsSaleData
.
value
.
sessions
[
currentSessionIndex
.
value
]?.
sessionKey
;
...
...
components/integralArea/InvitePrizePanel.vue
View file @
2986933c
...
...
@@ -41,9 +41,9 @@
</
template
>
<
script
setup
>
import
{
defineProps
,
defineEmits
}
from
'vue'
;
import
{
defineProps
,
defineEmits
,
watch
}
from
'vue'
;
import
{
jump
,
JumpType
}
from
'../../utils'
;
import
md
from
'../../md.js'
;
// Props 定义
const
props
=
defineProps
({
visible
:
{
...
...
@@ -75,6 +75,20 @@ const props = defineProps({
// Emits 定义
const
emit
=
defineEmits
([
'close'
,
'record'
,
'prize'
]);
// 监听 visible 值的变化
watch
(()
=>
props
.
visible
,
(
newVal
,
oldVal
)
=>
{
console
.
log
(
'InvitePrizePanel visible 值变化:'
,
{
newVal
,
oldVal
});
// 当 visible 变为 true 时执行埋点
if
(
newVal
)
{
md
.
sensorPopLogTake
({
xcxPopExposure
:
"true"
,
toolName
:
"邀请组件"
,
popName
:
"邀请成功弹窗"
});
}
});
// 关闭弹窗
const
handleClose
=
()
=>
{
emit
(
'close'
);
...
...
@@ -82,6 +96,13 @@ const handleClose = () => {
// 查看邀请记录按钮点击事件
const
handleRecordClick
=
()
=>
{
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"邀请组件"
,
popName
:
"邀请成功弹窗"
,
buttonName
:
"查看邀请明细"
});
jump
({
type
:
1
,
url
:
'/pages/invate/invaterecords'
...
...
@@ -92,6 +113,13 @@ const handleRecordClick = () => {
// 查看奖品按钮点击事件
const
handlePrizeClick
=
()
=>
{
md
.
sensorPopLogTake
({
xcxPopClick
:
"true"
,
toolName
:
"邀请组件"
,
popName
:
"邀请成功弹窗"
,
buttonName
:
"查看奖品"
});
console
.
log
(
'查看奖品按钮点击'
);
if
(
props
.
prizeType
===
'credits'
)
{
const
urlStr
=
'https://mom.feihe.com/member/mine/newPointDetail?crmId={crmid}&appCode=XMH'
;
...
...
components/renwu/TaskCompleteTips.vue
View file @
2986933c
...
...
@@ -30,7 +30,8 @@
</
template
>
<
script
setup
>
import
{
defineProps
,
defineEmits
,
ref
}
from
'vue'
;
import
{
defineProps
,
defineEmits
,
ref
,
watch
}
from
'vue'
;
import
md
from
'../../md'
;
// Props 定义
const
props
=
defineProps
({
...
...
@@ -54,6 +55,18 @@ const emit = defineEmits(['close', 'accept']);
// 是否正在播放动画
const
isAnimating
=
ref
(
false
);
// 监听 visible 值的变化
watch
(()
=>
props
.
visible
,
(
newVal
)
=>
{
if
(
newVal
)
{
console
.
log
(
'埋点'
);
md
.
sensorPopLogTake
({
xcxPopExposure
:
"true"
,
toolName
:
"做任务赚积分"
,
popName
:
"任务完成弹窗"
});
}
});
// 关闭弹窗
const
handleClose
=
()
=>
{
emit
(
'close'
);
...
...
components/renwu/TaskPop.vue
View file @
2986933c
...
...
@@ -44,6 +44,7 @@
<
script
setup
>
import
{
defineProps
,
defineEmits
,
ref
,
onMounted
,
watch
}
from
'vue'
;
import
{
useIntegralStore
}
from
'../../stores/integral'
;
import
md
from
'../../md.js'
;
// Props 定义
const
props
=
defineProps
({
...
...
@@ -57,6 +58,17 @@ const props = defineProps({
}
});
onMounted
(()
=>
{
props
.
taskTodo
.
forEach
(
item
=>
{
md
.
sensorComponentLogTake
({
xcxComponentExposure
:
"true"
,
pageName
:
"任务面板页"
,
componentName
:
"做任务赚积分"
,
componentContent
:
item
.
taskTodoExtra
?.
title
});
});
});
// Emits 定义
const
emit
=
defineEmits
([
'close'
,
'taskClick'
]);
...
...
@@ -98,6 +110,13 @@ const handleClose = () => {
// 任务点击事件
const
handleTaskClick
=
(
task
,
index
)
=>
{
md
.
sensorComponentLogTake
({
xcxComponentClick
:
"true"
,
pageName
:
"任务面板页"
,
componentName
:
"做任务赚积分"
,
componentContent
:
task
.
taskTodoExtra
?.
title
});
if
(
task
?.
taskTodoExtra
?.
status
===
'3'
)
{
// 已完成的任务不触发跳转
console
.
log
(
'任务已完成:'
,
task
?.
taskTodoExtra
?.
title
);
...
...
pages/invate/invaterecords.vue
View file @
2986933c
...
...
@@ -24,6 +24,7 @@
import
{
ref
,
onMounted
}
from
'vue'
;
import
{
useIntegralStore
}
from
'@/stores/integral'
;
import
{
showLoading
,
hideLoading
}
from
'@/utils'
;
import
md
from
'../../md'
;
const
integralStore
=
useIntegralStore
();
const
records
=
ref
([]);
...
...
@@ -66,6 +67,13 @@ const formatTimestamp = (timestamp) => {
};
onMounted
(
async
()
=>
{
md
.
sensorComponentLogTake
({
xcxComponentExposure
:
"true"
,
pageName
:
"邀请记录页"
,
componentName
:
"邀请记录"
,
componentContent
:
"邀请记录"
});
showLoading
(
'加载中...'
);
try
{
await
integralStore
.
getInvitationList
();
...
...
pages/invate/sharepage.vue
View file @
2986933c
...
...
@@ -55,6 +55,7 @@ import { jump, JumpType, showLoading, hideLoading } from '../../utils';
import
{
useGlobalStore
}
from
'@/stores/global'
;
import
{
useUserStore
}
from
'@/stores/user'
;
import
{
useIntegralStore
}
from
'@/stores/integral'
;
import
md
from
'../../md'
;
// 分享登录弹窗状态
const
showSharePopLogin
=
ref
(
false
);
...
...
@@ -111,6 +112,12 @@ const initInviteParams = () => {
};
onMounted
(
async
()
=>
{
md
.
sensorComponentLogTake
({
xcxComponentExposure
:
"true"
,
pageName
:
"新人福利页"
,
componentName
:
"新人福利页"
,
componentContent
:
"立即领取"
});
showLoading
();
// 先进行自动登录获取基础信息,登录成功后执行页面初始化
...
...
@@ -322,6 +329,13 @@ const handleViewBenefits = () => {
// 一键领取按钮点击事件
const
handleClaim
=
()
=>
{
md
.
sensorComponentLogTake
({
xcxComponentClick
:
"true"
,
pageName
:
"新人福利页"
,
componentName
:
"新人福利页"
,
componentContent
:
"立即领取"
});
if
(
!
isLogin
.
value
)
{
showPhone
.
value
=
true
;
return
;
...
...
views/Integral.vue
View file @
2986933c
This diff is collapsed.
Click to expand it.
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