Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
太
太保-年鉴活动-20250625
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
SparkProjects
太保-年鉴活动-20250625
Commits
fc1c0286
Commit
fc1c0286
authored
Jul 02, 2025
by
俞嘉婷
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 神策埋点
parent
9b3b1dff
Changes
17
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
268 additions
and
91 deletions
+268
-91
auth.html
auth.html
+1
-1
index.html
index.html
+1
-1
home.js
mock/home.js
+31
-0
api.js
src/api/api.js
+9
-0
lightEndPop.jsx
src/components/lightEndPop/lightEndPop.jsx
+9
-3
lightGreyPop.jsx
src/components/lightGreyPop/lightGreyPop.jsx
+0
-4
lightNewPop.jsx
src/components/lightNewPop/lightNewPop.jsx
+17
-4
lightedPop.jsx
src/components/lightedPop/lightedPop.jsx
+0
-3
longImgPop.jsx
src/components/longImgPop/longImgPop.jsx
+5
-0
rulePop.jsx
src/components/rulePop/rulePop.jsx
+2
-2
futurePage.jsx
src/pages/futurePage/futurePage.jsx
+4
-8
homePage.jsx
src/pages/homePage/homePage.jsx
+23
-8
homePage.less
src/pages/homePage/homePage.less
+16
-0
prizePage.jsx
src/pages/prizePage/prizePage.jsx
+4
-3
index.js
src/store/index.js
+19
-4
constants.js
src/utils/constants.js
+96
-19
sensorMd.js
src/utils/sensorMd.js
+31
-31
No files found.
auth.html
View file @
fc1c0286
...
@@ -70,7 +70,7 @@
...
@@ -70,7 +70,7 @@
return
search
.
length
?
matched
&&
matched
[
2
]
:
null
;
return
search
.
length
?
matched
&&
matched
[
2
]
:
null
;
}
}
// CFG.activityName = "寻找剧中人活动
";
CFG
.
activityName
=
"官微-25年活动图鉴
"
;
CFG
.
channel
=
getUrlParam
(
"sourceFrom"
)
||
sessionStorage
.
getItem
(
"channel"
);
CFG
.
channel
=
getUrlParam
(
"sourceFrom"
)
||
sessionStorage
.
getItem
(
"channel"
);
CFG
.
channel
&&
sessionStorage
.
setItem
(
"channel"
,
CFG
.
channel
);
CFG
.
channel
&&
sessionStorage
.
setItem
(
"channel"
,
CFG
.
channel
);
...
...
index.html
View file @
fc1c0286
...
@@ -77,7 +77,7 @@
...
@@ -77,7 +77,7 @@
return
search
.
length
?
matched
&&
matched
[
2
]
:
null
;
return
search
.
length
?
matched
&&
matched
[
2
]
:
null
;
}
}
// CFG.activityName = "寻找剧中人活动
";
CFG
.
activityName
=
"官微-25年活动图鉴
"
;
CFG
.
channel
=
getUrlParam
(
"sourceFrom"
)
||
sessionStorage
.
getItem
(
"channel"
);
CFG
.
channel
=
getUrlParam
(
"sourceFrom"
)
||
sessionStorage
.
getItem
(
"channel"
);
CFG
.
channel
&&
sessionStorage
.
setItem
(
"channel"
,
CFG
.
channel
);
CFG
.
channel
&&
sessionStorage
.
setItem
(
"channel"
,
CFG
.
channel
);
...
...
mock/home.js
View file @
fc1c0286
...
@@ -142,5 +142,36 @@ export const homeJs = [
...
@@ -142,5 +142,36 @@ export const homeJs = [
}
}
}
}
}
}
},
{
url
:
'/dbcpic-nj-api/app/activity/userInfo'
,
//请求地址
response
:
()
=>
{
return
{
"ok"
:
true
,
"code"
:
200
,
"msg"
:
'nodano'
,
"timestamp"
:
+
new
Date
(),
"data"
:
{
"empNp"
:
"empNp"
,
"nickname"
:
"nickname"
,
"customLevel"
:
"customLevel"
,
"memberAttribution"
:
"memberAttribution"
,
"programLogin"
:
"programLogin"
,
"subscribeFlg"
:
"subscribeFlg"
,
"officerOrEmp"
:
"officerOrEmp"
,
"phone"
:
"phone"
,
"miniOpenid"
:
"miniOpenid"
,
"unionid"
:
"unionid"
,
"province"
:
"province"
,
"sex"
:
"sex"
,
"age"
:
"age"
,
"userLevel"
:
"userLevel"
,
"avatar"
:
"avatar"
,
"shareEmpno"
:
"shareEmpno"
,
"empNo"
:
"empNo"
,
"customId"
:
"customId"
}
}
}
}
}
]
]
\ No newline at end of file
src/api/api.js
View file @
fc1c0286
...
@@ -44,3 +44,12 @@ export const prizeRecordsApi = (data) => {
...
@@ -44,3 +44,12 @@ export const prizeRecordsApi = (data) => {
data
data
})
})
}
}
// 埋点通用信息
export
const
userInfoApi
=
(
data
)
=>
{
return
request
({
method
:
'get'
,
url
:
'/dbcpic-nj-api/app/activity/userInfo'
,
data
})
}
\ No newline at end of file
src/components/lightEndPop/lightEndPop.jsx
View file @
fc1c0286
...
@@ -11,13 +11,19 @@ class LightEndPop extends Component {
...
@@ -11,13 +11,19 @@ class LightEndPop extends Component {
}
}
componentDidMount
()
{
componentDidMount
()
{
sensorMdExpouse
(
"
xcxPopupExpouse"
,
{
pageName
:
`点亮勋章
弹窗`
})
sensorMdExpouse
(
"
PopupExpouse"
,
{
pageName
:
`活动展区活动结束
弹窗`
})
}
}
handleClose
()
{
handleClose
()
{
sensorMdClick
(
"
xcxPopupClick"
,
{
pageName
:
`点亮勋章弹窗`
,
buttonName
:
'继续评估
'
})
sensorMdClick
(
"
PopupClick"
,
{
pageName
:
`活动展区活动结束弹窗`
,
buttonName
:
'关闭
'
})
modalStore
.
closePop
(
"LightEndPop"
)
modalStore
.
closePop
(
"LightEndPop"
)
}
}
handleKnow
=
_asyncThrottle
(()
=>
{
sensorMdClick
(
"PopupClick"
,
{
pageName
:
`活动展区活动结束弹窗`
,
buttonName
:
'我知道了'
})
modalStore
.
closePop
(
"LightEndPop"
)
})
render
()
{
render
()
{
const
{
lightEndPop
,
common
}
=
skinStore
const
{
lightEndPop
,
common
}
=
skinStore
const
{
bg
,
know_btn
}
=
lightEndPop
const
{
bg
,
know_btn
}
=
lightEndPop
...
@@ -28,7 +34,7 @@ class LightEndPop extends Component {
...
@@ -28,7 +34,7 @@ class LightEndPop extends Component {
<
div
className=
"title"
>
该展品活动已经结束啦
</
div
>
<
div
className=
"title"
>
该展品活动已经结束啦
</
div
>
<
div
className=
"desc"
>
快去看看其他展品进行点亮吧!
</
div
>
<
div
className=
"desc"
>
快去看看其他展品进行点亮吧!
</
div
>
<
span
className=
"close"
onClick=
{
this
.
handleClose
}
style=
{
{
backgroundImage
:
`url(${close})`
}
}
/>
<
span
className=
"close"
onClick=
{
this
.
handleClose
}
style=
{
{
backgroundImage
:
`url(${close})`
}
}
/>
<
span
className=
"know_btn"
onClick=
{
this
.
handle
Close
}
style=
{
{
backgroundImage
:
`url(${know_btn})`
}
}
/>
<
span
className=
"know_btn"
onClick=
{
this
.
handle
Know
}
style=
{
{
backgroundImage
:
`url(${know_btn})`
}
}
/>
</
div
>
</
div
>
}
}
}
}
...
...
src/components/lightGreyPop/lightGreyPop.jsx
View file @
fc1c0286
...
@@ -3,7 +3,6 @@ import './lightGreyPop.less';
...
@@ -3,7 +3,6 @@ import './lightGreyPop.less';
import
{
observer
}
from
'mobx-react'
;
import
{
observer
}
from
'mobx-react'
;
import
store
from
'../../store'
;
import
store
from
'../../store'
;
import
modalStore
from
'../../store/modal'
;
import
modalStore
from
'../../store/modal'
;
import
{
sensorMdClick
,
sensorMdExpouse
}
from
'../../utils/sensorMd'
;
import
skinStore
from
'../../store/newSkin'
;
import
skinStore
from
'../../store/newSkin'
;
import
{
SvgaPlayer
}
from
'../SvgaPlayer'
;
import
{
SvgaPlayer
}
from
'../SvgaPlayer'
;
import
{
_asyncThrottle
}
from
'../../utils/utils'
;
import
{
_asyncThrottle
}
from
'../../utils/utils'
;
...
@@ -14,16 +13,13 @@ class LightGreyPop extends Component {
...
@@ -14,16 +13,13 @@ class LightGreyPop extends Component {
}
}
componentDidMount
()
{
componentDidMount
()
{
sensorMdExpouse
(
"xcxPopupExpouse"
,
{
pageName
:
`点亮勋章弹窗`
})
}
}
handleClose
()
{
handleClose
()
{
sensorMdClick
(
"xcxPopupClick"
,
{
pageName
:
`点亮勋章弹窗`
,
buttonName
:
'继续评估'
})
modalStore
.
closePop
(
"LightGreyPop"
)
modalStore
.
closePop
(
"LightGreyPop"
)
}
}
handleJoin
=
_asyncThrottle
(()
=>
{
handleJoin
=
_asyncThrottle
(()
=>
{
sensorMdClick
(
"xcxPopupClick"
,
{
pageName
:
`点亮勋章弹窗`
,
buttonName
:
'立即点亮'
})
modalStore
.
closePop
(
"LightGreyPop"
)
modalStore
.
closePop
(
"LightGreyPop"
)
const
{
jumpUrl
}
=
this
.
props
.
popData
||
{}
const
{
jumpUrl
}
=
this
.
props
.
popData
||
{}
...
...
src/components/lightNewPop/lightNewPop.jsx
View file @
fc1c0286
...
@@ -14,15 +14,28 @@ class LightNewPop extends Component {
...
@@ -14,15 +14,28 @@ class LightNewPop extends Component {
}
}
componentDidMount
()
{
componentDidMount
()
{
sensorMdExpouse
(
"xcxPopupExpouse"
,
{
pageName
:
`点亮勋章弹窗`
})
const
{
newGetMedalInfoList
}
=
this
.
props
.
popData
||
{}
// 是否一个勋章
const
isOne
=
newGetMedalInfoList
.
length
===
1
sensorMdExpouse
(
"PopupExpouse"
,
{
pageName
:
isOne
?
`点亮1次勋章弹窗`
:
`点亮2次及以上勋章弹窗`
})
}
}
handleClose
()
{
handleClose
=
_asyncThrottle
(()
=>
{
sensorMdClick
(
"xcxPopupClick"
,
{
pageName
:
`点亮勋章弹窗`
,
buttonName
:
'继续评估'
})
const
{
newGetMedalInfoList
}
=
this
.
props
.
popData
||
{}
// 是否一个勋章
const
isOne
=
newGetMedalInfoList
.
length
===
1
sensorMdClick
(
"PopupClick"
,
{
pageName
:
isOne
?
`点亮1次勋章弹窗`
:
`点亮2次及以上勋章弹窗`
,
buttonName
:
'关闭'
})
modalStore
.
closePop
(
"LightNewPop"
)
modalStore
.
closePop
(
"LightNewPop"
)
}
}
)
handleDraw
=
_asyncThrottle
(()
=>
{
handleDraw
=
_asyncThrottle
(()
=>
{
const
{
newGetMedalInfoList
}
=
this
.
props
.
popData
||
{}
// 是否一个勋章
const
isOne
=
newGetMedalInfoList
.
length
===
1
sensorMdClick
(
"PopupClick"
,
{
pageName
:
isOne
?
`点亮1次勋章弹窗`
:
`点亮2次及以上勋章弹窗`
,
buttonName
:
'立即抽奖'
})
modalStore
.
closePop
(
"LightNewPop"
)
modalStore
.
closePop
(
"LightNewPop"
)
// 点击后跳转至【官微大转盘】
// 点击后跳转至【官微大转盘】
store
.
jumpDraw
()
store
.
jumpDraw
()
...
...
src/components/lightedPop/lightedPop.jsx
View file @
fc1c0286
...
@@ -3,7 +3,6 @@ import './lightedPop.less';
...
@@ -3,7 +3,6 @@ import './lightedPop.less';
import
{
observer
}
from
'mobx-react'
;
import
{
observer
}
from
'mobx-react'
;
import
store
from
'../../store'
;
import
store
from
'../../store'
;
import
modalStore
from
'../../store/modal'
;
import
modalStore
from
'../../store/modal'
;
import
{
sensorMdClick
,
sensorMdExpouse
}
from
'../../utils/sensorMd'
;
import
skinStore
from
'../../store/newSkin'
;
import
skinStore
from
'../../store/newSkin'
;
import
{
SvgaPlayer
}
from
'../SvgaPlayer'
;
import
{
SvgaPlayer
}
from
'../SvgaPlayer'
;
@
observer
@
observer
...
@@ -13,11 +12,9 @@ class LightedPop extends Component {
...
@@ -13,11 +12,9 @@ class LightedPop extends Component {
}
}
componentDidMount
()
{
componentDidMount
()
{
sensorMdExpouse
(
"xcxPopupExpouse"
,
{
pageName
:
`点亮勋章弹窗`
})
}
}
handleClose
()
{
handleClose
()
{
sensorMdClick
(
"xcxPopupClick"
,
{
pageName
:
`点亮勋章弹窗`
,
buttonName
:
'继续评估'
})
modalStore
.
closePop
(
"LightedPop"
)
modalStore
.
closePop
(
"LightedPop"
)
}
}
render
()
{
render
()
{
...
...
src/components/longImgPop/longImgPop.jsx
View file @
fc1c0286
...
@@ -4,6 +4,7 @@ import { _asyncThrottle, _throttle } from '../../utils/utils';
...
@@ -4,6 +4,7 @@ import { _asyncThrottle, _throttle } from '../../utils/utils';
import
skinStore
from
'../../store/newSkin'
;
import
skinStore
from
'../../store/newSkin'
;
import
{
observer
}
from
'mobx-react'
;
import
{
observer
}
from
'mobx-react'
;
import
modalStore
from
'../../store/modal'
;
import
modalStore
from
'../../store/modal'
;
import
{
sensorMdExpouse
}
from
'../../utils/sensorMd'
;
@
observer
@
observer
class
LongImgPop
extends
Component
{
class
LongImgPop
extends
Component
{
constructor
(
props
)
{
constructor
(
props
)
{
...
@@ -14,6 +15,10 @@ class LongImgPop extends Component {
...
@@ -14,6 +15,10 @@ class LongImgPop extends Component {
}
}
}
}
componentDidMount
()
{
sensorMdExpouse
(
"activityPage"
,
{
pageName
:
`
${
this
.
props
.
popData
.
name
}
活动预告页`
})
}
// 返回
// 返回
backHandle
=
_asyncThrottle
(()
=>
{
backHandle
=
_asyncThrottle
(()
=>
{
modalStore
.
closePop
();
modalStore
.
closePop
();
...
...
src/components/rulePop/rulePop.jsx
View file @
fc1c0286
...
@@ -13,11 +13,11 @@ class RulePop extends Component {
...
@@ -13,11 +13,11 @@ class RulePop extends Component {
}
}
componentDidMount
()
{
componentDidMount
()
{
sensorMdExpouse
(
"
xcxPopupExpouse"
,
{
pageName
:
`退出挽留
弹窗`
})
sensorMdExpouse
(
"
PopupExpouse"
,
{
pageName
:
`规则
弹窗`
})
}
}
handleClose
()
{
handleClose
()
{
sensorMdClick
(
"
xcxPopupClick"
,
{
pageName
:
`退出挽留弹窗`
,
buttonName
:
'继续评估
'
})
sensorMdClick
(
"
PopupClick"
,
{
pageName
:
`规则弹窗`
,
buttonName
:
'关闭
'
})
modalStore
.
closePop
(
"RulePop"
)
modalStore
.
closePop
(
"RulePop"
)
}
}
render
()
{
render
()
{
...
...
src/pages/futurePage/futurePage.jsx
View file @
fc1c0286
...
@@ -20,7 +20,7 @@ class FuturePage extends Component {
...
@@ -20,7 +20,7 @@ class FuturePage extends Component {
}
}
async
componentDidMount
()
{
async
componentDidMount
()
{
sensorMdExpouse
(
"
xcxPage"
,
{
pageName
:
`未来展品
`
})
sensorMdExpouse
(
"
activityPage"
,
{
pageName
:
`未来展品页
`
})
const
res
=
await
futureActivityApi
({
const
res
=
await
futureActivityApi
({
channel
:
CFG
.
channel
channel
:
CFG
.
channel
});
});
...
@@ -31,17 +31,13 @@ class FuturePage extends Component {
...
@@ -31,17 +31,13 @@ class FuturePage extends Component {
// 显示长图弹窗
// 显示长图弹窗
showLongImgPop
=
_asyncThrottle
((
item
)
=>
{
showLongImgPop
=
_asyncThrottle
((
item
)
=>
{
modalStore
.
pushPop
(
"LongImgPop"
,
{
img
:
item
.
previewPage
})
sensorMdClick
(
"activityClick"
,
{
pageName
:
`未来展品页`
,
buttonName
:
item
.
name
})
})
modalStore
.
pushPop
(
"LongImgPop"
,
{
img
:
item
.
previewPage
,
name
:
item
.
name
})
// 切换tab
toggleTab
=
_asyncThrottle
((
index
)
=>
{
this
.
setState
({
curTab
:
index
})
})
})
// 返回
// 返回
backHandle
=
_asyncThrottle
(()
=>
{
backHandle
=
_asyncThrottle
(()
=>
{
sensorMdClick
(
"
xcxClick"
,
{
pageName
:
`未来展品
`
,
buttonName
:
'返回'
})
sensorMdClick
(
"
activityClick"
,
{
pageName
:
`未来展品页
`
,
buttonName
:
'返回'
})
store
.
changePage
(
PAGE_MAP
.
HOME_PAGE
)
store
.
changePage
(
PAGE_MAP
.
HOME_PAGE
)
})
})
...
...
src/pages/homePage/homePage.jsx
View file @
fc1c0286
...
@@ -19,13 +19,14 @@ class HomePage extends Component {
...
@@ -19,13 +19,14 @@ class HomePage extends Component {
}
}
async
componentDidMount
()
{
async
componentDidMount
()
{
sensorMdExpouse
(
"
xcxPage"
,
{
pageName
:
`
首页`
})
sensorMdExpouse
(
"
activityPage"
,
{
pageName
:
`年鉴活动
首页`
})
await
store
.
getIndexInfo
();
await
store
.
getIndexInfo
();
await
store
.
initSensorsMd
();
}
}
// 保贝值抽奖
// 保贝值抽奖
drawHandle
=
_asyncThrottle
(()
=>
{
drawHandle
=
_asyncThrottle
(()
=>
{
sensorMdClick
(
"
xcxClick"
,
{
pageName
:
`首页`
,
buttonName
:
'开始测试
'
})
sensorMdClick
(
"
activityClick"
,
{
pageName
:
`年鉴活动首页`
,
buttonName
:
'保贝值抽奖
'
})
const
flag
=
store
.
checkActivityStatus
();
const
flag
=
store
.
checkActivityStatus
();
if
(
!
flag
)
return
;
if
(
!
flag
)
return
;
store
.
jumpDraw
()
store
.
jumpDraw
()
...
@@ -33,13 +34,13 @@ class HomePage extends Component {
...
@@ -33,13 +34,13 @@ class HomePage extends Component {
// 规则
// 规则
ruleHandle
=
_asyncThrottle
(()
=>
{
ruleHandle
=
_asyncThrottle
(()
=>
{
sensorMdClick
(
"
xcxClick"
,
{
pageName
:
`
首页`
,
buttonName
:
'规则'
})
sensorMdClick
(
"
activityClick"
,
{
pageName
:
`年鉴活动
首页`
,
buttonName
:
'规则'
})
modalStore
.
pushPop
(
"RulePop"
)
modalStore
.
pushPop
(
"RulePop"
)
})
})
// 时光宝箱
// 时光宝箱
prizeHandle
=
_asyncThrottle
(()
=>
{
prizeHandle
=
_asyncThrottle
(()
=>
{
sensorMdClick
(
"
xcxClick"
,
{
pageName
:
`首页`
,
buttonName
:
'时光宝箱
'
})
sensorMdClick
(
"
activityClick"
,
{
pageName
:
`年鉴活动首页`
,
buttonName
:
'时光宝藏
'
})
const
flag
=
store
.
checkActivityStatus
(
true
,
false
);
const
flag
=
store
.
checkActivityStatus
(
true
,
false
);
if
(
!
flag
)
return
;
if
(
!
flag
)
return
;
store
.
changePage
(
PAGE_MAP
.
PRIZE_PAGE
)
store
.
changePage
(
PAGE_MAP
.
PRIZE_PAGE
)
...
@@ -47,14 +48,26 @@ class HomePage extends Component {
...
@@ -47,14 +48,26 @@ class HomePage extends Component {
// 未来展品
// 未来展品
futureHandle
=
_asyncThrottle
(()
=>
{
futureHandle
=
_asyncThrottle
(()
=>
{
sensorMdClick
(
"
xcxClick"
,
{
pageName
:
`
首页`
,
buttonName
:
'未来展品'
})
sensorMdClick
(
"
activityClick"
,
{
pageName
:
`年鉴活动
首页`
,
buttonName
:
'未来展品'
})
const
flag
=
store
.
checkActivityStatus
();
const
flag
=
store
.
checkActivityStatus
();
if
(
!
flag
)
return
;
if
(
!
flag
)
return
;
store
.
changePage
(
PAGE_MAP
.
FUTURE_PAGE
)
store
.
changePage
(
PAGE_MAP
.
FUTURE_PAGE
)
})
})
// 分享
shareHandle
=
_asyncThrottle
(()
=>
{
// TODO 海报
sensorMdClick
(
"activityClick"
,
{
pageName
:
`年鉴活动首页`
,
buttonName
:
'分享'
})
})
// 切换tab
tabHandle
=
(
tab
)
=>
{
this
.
setState
({
curTab
:
tab
})
sensorMdClick
(
"activityClick"
,
{
pageName
:
`年鉴活动首页`
,
buttonName
:
tab
===
MEDAL_TYPE
.
ACTIVITY
?
'活动展区'
:
'荣誉展区'
})
}
// 勋章点击
// 勋章点击
medalHandle
=
(
item
)
=>
{
medalHandle
=
(
item
)
=>
{
sensorMdClick
(
"activityClick"
,
{
pageName
:
`年鉴活动首页`
,
buttonName
:
item
.
name
})
const
{
boolGet
,
endTime
,
medalType
}
=
item
;
const
{
boolGet
,
endTime
,
medalType
}
=
item
;
// 勋章活动时间已过 此弹窗只在活动展区逻辑下会出现
// 勋章活动时间已过 此弹窗只在活动展区逻辑下会出现
if
(
medalType
===
MEDAL_TYPE
.
ACTIVITY
&&
endTime
<
+
new
Date
())
{
if
(
medalType
===
MEDAL_TYPE
.
ACTIVITY
&&
endTime
<
+
new
Date
())
{
...
@@ -91,11 +104,13 @@ class HomePage extends Component {
...
@@ -91,11 +104,13 @@ class HomePage extends Component {
{
/* 规则 */
}
{
/* 规则 */
}
<
div
className=
"btn_rule"
onClick=
{
this
.
ruleHandle
}
style=
{
{
'backgroundImage'
:
`url(${btn_rule})`
}
}
></
div
>
<
div
className=
"btn_rule"
onClick=
{
this
.
ruleHandle
}
style=
{
{
'backgroundImage'
:
`url(${btn_rule})`
}
}
></
div
>
{
/* 分享 */
}
{
/* 分享 */
}
<
div
className=
"btn_share"
style=
{
{
'backgroundImage'
:
`url(${btn_share})`
}
}
></
div
>
<
div
className=
"btn_share"
onClick=
{
this
.
shareHandle
}
style=
{
{
'backgroundImage'
:
`url(${btn_share})`
}
}
></
div
>
{
/* tab-活动展区 */
}
{
/* tab-活动展区 */
}
{
curTab
===
MEDAL_TYPE
.
ACTIVITY
&&
<
div
className=
"tab1"
onClick=
{
()
=>
this
.
setState
({
curTab
:
MEDAL_TYPE
.
HONOR
})
}
style=
{
{
'backgroundImage'
:
`url(${tab1})`
}
}
></
div
>
}
{
curTab
===
MEDAL_TYPE
.
ACTIVITY
&&
<
div
className=
"tab1"
style=
{
{
'backgroundImage'
:
`url(${tab1})`
}
}
></
div
>
}
{
/* tab-荣耀展区 */
}
{
/* tab-荣耀展区 */
}
{
curTab
===
MEDAL_TYPE
.
HONOR
&&
<
div
className=
"tab2"
onClick=
{
()
=>
this
.
setState
({
curTab
:
MEDAL_TYPE
.
ACTIVITY
})
}
style=
{
{
'backgroundImage'
:
`url(${tab2})`
}
}
></
div
>
}
{
curTab
===
MEDAL_TYPE
.
HONOR
&&
<
div
className=
"tab2"
style=
{
{
'backgroundImage'
:
`url(${tab2})`
}
}
></
div
>
}
<
div
className=
"tab1_click_area1"
onClick=
{
()
=>
this
.
tabHandle
(
MEDAL_TYPE
.
ACTIVITY
)
}
></
div
>
<
div
className=
"tab1_click_area2"
onClick=
{
()
=>
this
.
tabHandle
(
MEDAL_TYPE
.
HONOR
)
}
></
div
>
{
/* 勋章列表 */
}
{
/* 勋章列表 */
}
<
div
className=
"medal_list_box"
>
<
div
className=
"medal_list_box"
>
<
div
className=
"medal_list line1"
>
<
div
className=
"medal_list line1"
>
...
...
src/pages/homePage/homePage.less
View file @
fc1c0286
...
@@ -67,6 +67,22 @@
...
@@ -67,6 +67,22 @@
.formatBg();
.formatBg();
}
}
.tab1_click_area1 {
position: absolute;
left: 221px;
top: 312px;
width: 160px;
height: 67px;
}
.tab1_click_area2 {
position: absolute;
left: 381px;
top: 312px;
width: 160px;
height: 67px;
}
.medal_list_box {
.medal_list_box {
position: absolute;
position: absolute;
left: 0px;
left: 0px;
...
...
src/pages/prizePage/prizePage.jsx
View file @
fc1c0286
...
@@ -21,7 +21,7 @@ class PrizePage extends Component {
...
@@ -21,7 +21,7 @@ class PrizePage extends Component {
}
}
async
componentDidMount
()
{
async
componentDidMount
()
{
sensorMdExpouse
(
"
xcxPage"
,
{
pageName
:
`奖品
页`
})
sensorMdExpouse
(
"
activityPage"
,
{
pageName
:
`时光宝藏
页`
})
const
res
=
await
tabQueryApi
({
const
res
=
await
tabQueryApi
({
channel
:
CFG
.
channel
channel
:
CFG
.
channel
...
@@ -41,6 +41,7 @@ class PrizePage extends Component {
...
@@ -41,6 +41,7 @@ class PrizePage extends Component {
this
.
setState
({
curTab
:
index
,
prizeList
:
[]
})
this
.
setState
({
curTab
:
index
,
prizeList
:
[]
})
const
{
tabList
}
=
this
.
state
;
const
{
tabList
}
=
this
.
state
;
sensorMdClick
(
"activityClick"
,
{
pageName
:
`时光宝藏页`
,
buttonName
:
tabList
[
index
].
name
})
const
res
=
await
prizeRecordsApi
({
const
res
=
await
prizeRecordsApi
({
channel
:
CFG
.
channel
,
channel
:
CFG
.
channel
,
id
:
tabList
[
index
].
id
id
:
tabList
[
index
].
id
...
@@ -58,7 +59,7 @@ class PrizePage extends Component {
...
@@ -58,7 +59,7 @@ class PrizePage extends Component {
// 返回
// 返回
backHandle
=
_asyncThrottle
(()
=>
{
backHandle
=
_asyncThrottle
(()
=>
{
sensorMdClick
(
"
xcxClick"
,
{
pageName
:
`奖品
页`
,
buttonName
:
'返回'
})
sensorMdClick
(
"
activityClick"
,
{
pageName
:
`时光宝藏
页`
,
buttonName
:
'返回'
})
store
.
changePage
(
PAGE_MAP
.
HOME_PAGE
)
store
.
changePage
(
PAGE_MAP
.
HOME_PAGE
)
})
})
...
...
src/store/index.js
View file @
fc1c0286
import
{
import
{
makeAutoObservable
makeAutoObservable
}
from
'mobx'
;
}
from
'mobx'
;
import
{
import
{
userInfoApi
}
from
'../api/api'
;
}
from
'../api/api'
;
import
{
import
{
delUrlParam
,
delUrlParam
,
getUrlParam
,
getUrlParam
,
...
@@ -16,6 +14,7 @@ import modalStore from './modal';
...
@@ -16,6 +14,7 @@ import modalStore from './modal';
import
{
GetCurrSkinId
,
getCustomShareId
}
from
"../utils/utils"
;
import
{
GetCurrSkinId
,
getCustomShareId
}
from
"../utils/utils"
;
import
{
PAGE_MAP
}
from
'../utils/constants'
;
import
{
PAGE_MAP
}
from
'../utils/constants'
;
import
{
indexApi
}
from
"../api/api.js"
;
import
{
indexApi
}
from
"../api/api.js"
;
import
{
initSensors
}
from
'../utils/sensorMd.js'
;
export
const
skinId
=
GetCurrSkinId
()
||
getCustomShareId
();
export
const
skinId
=
GetCurrSkinId
()
||
getCustomShareId
();
const
store
=
makeAutoObservable
({
const
store
=
makeAutoObservable
({
...
@@ -83,7 +82,23 @@ const store = makeAutoObservable({
...
@@ -83,7 +82,23 @@ const store = makeAutoObservable({
wx
.
miniProgram
.
navigateTo
({
wx
.
miniProgram
.
navigateTo
({
url
:
' /packageTbzy/pages/lottery/lottery?activityCode=DRAWFARM&source_channel=nianjianhuodong'
url
:
' /packageTbzy/pages/lottery/lottery?activityCode=DRAWFARM&source_channel=nianjianhuodong'
})
})
},
userInfo
:
{},
setUserInfo
(
userInfo
)
{
this
.
userInfo
=
userInfo
;
},
/** 初始化神策埋点 */
async
initSensorsMd
()
{
const
res
=
await
userInfoApi
();
if
(
res
.
ok
)
{
store
.
setUserInfo
(
res
.
data
||
{});
const
{
unionid
,
openId
,
friendEmpNo
,
friendOpenId
,
empNo
}
=
res
.
data
||
{};
// initSensors(unionId, openId, friendEmpNo, friendOpenId);
initSensors
(
unionid
,
empNo
,
res
.
data
);
}
}
},
});
});
export
default
store
;
export
default
store
;
...
...
src/utils/constants.js
View file @
fc1c0286
...
@@ -17,39 +17,116 @@ export const MEDAL_TYPE = {
...
@@ -17,39 +17,116 @@ export const MEDAL_TYPE = {
HONOR
:
2
,
HONOR
:
2
,
}
}
/**
* 本次投放:
* 1、官微菜单栏
* 2、官微权益中心
* 3、寿险小程序
* 4、官微推文
* 5、太好钉
* 6、海报
*/
/**
/**
* 渠道参数
* 渠道参数
* 1.
个险app gxapp
* 1.
官微菜单栏 guanwei
* 2.
个险企微 gxqw
* 2.
官微权益中心 quanyizhongxin
* 3.寿险小程序 shouxian
* 3.寿险小程序 shouxian
* 4.官微推文 tuiwen
* 5.长航加油站 dingdong
* 6.太好钉 taihaoding
* 7.海报 haibao
* 8.太好店小程序
* 9.官微服务大厅
* 10.集团app
* 11.订阅号
*/
*/
export
const
CHANNEL_PARAMS
=
{
export
const
CHANNEL_PARAMS
=
{
/**
个险app
*/
/**
官微菜单栏
*/
G
XAPP
:
"gxapp"
,
G
W_MENU
:
'guanwei'
,
/**
个险企微
*/
/**
官微权益中心
*/
G
XQW
:
"gxqw"
,
G
W_EQUITY
:
'quanyizhongxin'
,
/** 寿险小程序 */
/** 寿险小程序 */
SHOUXIAN_MINI
:
"shouxian"
,
SHOUXIAN_MINI
:
'shouxian'
,
/** 官微推文 */
GW_TWEET
:
'tuiwen'
,
/** 长航加油站(公众号) */
CHANG_HANG
:
'dingdong'
,
/** 太好钉 */
THD
:
'taihaoding'
,
/** 海报 */
POSTER
:
'haibao'
,
/** 太好店小程序 */
THD_MINI
:
'taihaodian'
,
/** 官微服务大厅 */
FUWU
:
'fuwu'
,
/** 集团app */
APP
:
'app'
,
/** 心意商城小程序 */
XINYI
:
'xinyi'
,
/** 年报活动 */
NIANBAO
:
'nianbao'
,
/** 订阅号 */
DINGYUE
:
'dingyue'
,
}
}
/** 神策 sysSourceName渠道参数 */
/** 神策 sysSourceName渠道参数 */
export
const
SYS_SOURCE_CHANNEL
=
{
export
const
SYS_SOURCE_CHANNEL
=
{
/** 个险app
*/
/** 官微菜单栏
*/
[
CHANNEL_PARAMS
.
GXAPP
]:
"个险"
,
[
CHANNEL_PARAMS
.
GW_MENU
]:
'官微'
,
/** 个险企微
*/
/** 官微权益中心
*/
[
CHANNEL_PARAMS
.
GXQW
]:
"个险"
,
[
CHANNEL_PARAMS
.
GW_EQUITY
]:
'官微'
,
/** 寿险小程序 */
/** 寿险小程序 */
[
CHANNEL_PARAMS
.
SHOUXIAN_MINI
]:
"官微"
,
[
CHANNEL_PARAMS
.
SHOUXIAN_MINI
]:
'官微'
,
/** 官微推文 */
[
CHANNEL_PARAMS
.
GW_TWEET
]:
'官微'
,
/** 长航加油站(公众号) */
[
CHANNEL_PARAMS
.
CHANG_HANG
]:
'个险'
,
/** 太好钉 */
[
CHANNEL_PARAMS
.
THD
]:
'官微'
,
/** 海报 */
[
CHANNEL_PARAMS
.
POSTER
]:
'官微'
,
/** 太好店小程序 */
[
CHANNEL_PARAMS
.
THD_MINI
]:
'个险'
,
/** 官微服务大厅 */
[
CHANNEL_PARAMS
.
FUWU
]:
'官微'
,
/** 集团app */
[
CHANNEL_PARAMS
.
APP
]:
'官微'
,
/** 心意商城小程序 */
[
CHANNEL_PARAMS
.
XINYI
]:
'官微'
,
/** 年报活动 */
[
CHANNEL_PARAMS
.
NIANBAO
]:
'官微'
,
/** 订阅号 */
[
CHANNEL_PARAMS
.
DINGYUE
]:
'官微'
}
}
/** 神策 activitySource渠道参数 */
/** 神策 activitySource渠道参数 */
export
const
ACTIVITY_SOURCE_CHANNEL
=
{
export
const
ACTIVITY_SOURCE_CHANNEL
=
{
/** 个险app
*/
/** 官微菜单栏
*/
[
CHANNEL_PARAMS
.
GXAPP
]:
"个险app"
,
[
CHANNEL_PARAMS
.
GW_MENU
]:
'官微菜单栏'
,
/** 个险企微
*/
/** 官微权益中心
*/
[
CHANNEL_PARAMS
.
GXQW
]:
"个险企微"
,
[
CHANNEL_PARAMS
.
GW_EQUITY
]:
'官微权益中心'
,
/** 寿险小程序 */
/** 寿险小程序 */
[
CHANNEL_PARAMS
.
SHOUXIAN_MINI
]:
"寿险小程序"
,
[
CHANNEL_PARAMS
.
SHOUXIAN_MINI
]:
'寿险小程序'
,
/** 官微推文 */
[
CHANNEL_PARAMS
.
GW_TWEET
]:
'官微推文'
,
/** 长航加油站(公众号) */
[
CHANNEL_PARAMS
.
CHANG_HANG
]:
'长航加油站'
,
/** 太好钉 */
[
CHANNEL_PARAMS
.
THD
]:
'太好钉'
,
/** 海报 */
[
CHANNEL_PARAMS
.
POSTER
]:
'海报'
,
/** 太好店小程序 */
[
CHANNEL_PARAMS
.
THD_MINI
]:
'太好店小程序'
,
/** 官微服务大厅 */
[
CHANNEL_PARAMS
.
FUWU
]:
'官微服务大厅'
,
/** 集团app */
[
CHANNEL_PARAMS
.
APP
]:
'集团app'
,
/** 心意商城小程序 */
[
CHANNEL_PARAMS
.
XINYI
]:
'心意商城小程序'
,
/** 年报活动 */
[
CHANNEL_PARAMS
.
NIANBAO
]:
'年报活动'
,
/** 订阅号 */
[
CHANNEL_PARAMS
.
NIANBAO
]:
'订阅号'
}
}
export
const
EVENT_TYPE
=
{
export
const
EVENT_TYPE
=
{
...
...
src/utils/sensorMd.js
View file @
fc1c0286
...
@@ -2,10 +2,8 @@
...
@@ -2,10 +2,8 @@
import
sensors
from
'sa-sdk-javascript'
;
import
sensors
from
'sa-sdk-javascript'
;
import
{
ACTIVITY_SOURCE_CHANNEL
,
SYS_SOURCE_CHANNEL
}
from
'./constants'
;
import
{
ACTIVITY_SOURCE_CHANNEL
,
SYS_SOURCE_CHANNEL
}
from
'./constants'
;
import
pageleave
from
'./pageleave'
;
import
pageleave
from
'./pageleave'
;
// import { getUrlParam } from './utils';
export
const
initSensors
=
(
unionid
,
empNo
,
userInfo
)
=>
{
export
const
initSensors
=
(
info
)
=>
{
sensors
.
init
({
sensors
.
init
({
server_url
:
CFG
.
sensorUrl
,
server_url
:
CFG
.
sensorUrl
,
is_track_single_page
:
true
,
is_track_single_page
:
true
,
...
@@ -19,7 +17,7 @@ export const initSensors = (info) => {
...
@@ -19,7 +17,7 @@ export const initSensors = (info) => {
},
},
});
});
sensors
.
login
(
info
?.
unionid
);
sensors
.
login
(
unionid
);
const
shareTypeMap
=
{
const
shareTypeMap
=
{
1
:
"客户邀请"
,
1
:
"客户邀请"
,
...
@@ -32,38 +30,40 @@ export const initSensors = (info) => {
...
@@ -32,38 +30,40 @@ export const initSensors = (info) => {
const
publicObjec
=
Object
.
assign
({
const
publicObjec
=
Object
.
assign
({
currentUrl
:
location
.
href
,
currentUrl
:
location
.
href
,
referrer
:
document
.
referrer
,
referrer
:
document
.
referrer
,
unionid
:
info
?.
unionId
,
unionid
:
unionid
,
openid
:
info
?.
openId
,
// openid: userInfo.openId, // 取不到
miniOpenid
:
info
?.
miniOpenid
,
officerOrEmp
:
info
?.
officerOrEmp
,
subscribeFlg
:
info
?.
subscribeFlg
,
programLogin
:
info
?.
programLogin
,
userLevel
:
info
?.
userLevel
,
source
:
CFG
.
channel
,
source
:
CFG
.
channel
,
source_channel
:
CFG
.
channel
,
userAccount
:
'太平洋寿险小程序'
,
systemName
:
'寿险2013版微信公众平台'
,
systemName
:
'寿险2013版微信公众平台'
,
// activityName: CFG.activityName,
userSource
:
null
,
functionalpartition
:
"增值服务"
,
userAccount
:
CFG
.
channel
==
'taihaodian'
?
'太好店小程序'
:
'太平洋寿险小程序'
,
service_name
:
'TODO'
,
activityName
:
CFG
.
activityName
,
// activityId: '25Searchcharacters',
functionalpartition
:
"活动版块"
,
// c_date: "2025/06/16-2099/12/31",
activityId
:
'25HDtujian'
,
c_date
:
"2025/07/12起长期"
,
activitySource
:
ACTIVITY_SOURCE_CHANNEL
[
CFG
.
channel
]
||
""
,
activitySource
:
ACTIVITY_SOURCE_CHANNEL
[
CFG
.
channel
]
||
""
,
sysSourceName
:
SYS_SOURCE_CHANNEL
[
CFG
.
channel
]
||
""
,
sysSourceName
:
SYS_SOURCE_CHANNEL
[
CFG
.
channel
]
||
""
,
friendDistinctId
:
getUrlParam
(
"uid"
)
||
""
,
friendDistinctId
:
getUrlParam
(
"uid"
)
||
""
,
shareMark
:
!!
getUrlParam
(
"uid"
)
?
"是"
:
"否"
,
shareMark
:
!!
getUrlParam
(
"uid"
)
?
"是"
:
"否"
,
shareType
:
shareType
,
shareType
:
shareType
,
empNp
:
info
?.
empNp
,
empNp
:
empNo
,
// 用户实际绑定业务员工号(与转发无关)
friendOpenId
:
info
?.
friendOpenId
,
friendOpenId
:
getUrlParam
(
"shareOpenId"
),
// 邀请人的openId
empno
:
info
?.
newEmpNo
,
friendEmpNo
:
getUrlParam
(
"shareNewEmpNo"
),
// 邀请人的业务员工号(A转发给B,传A的业务员工号)
friendEmpNp
:
info
?.
friendEmpNp
,
empno
:
CFG
.
empno
,
friendEmpNo
:
info
?.
friendEmpNo
,
miniopenid
:
userInfo
?.
miniopenid
||
''
,
wxNickName
:
info
?.
nickname
,
phone
:
userInfo
?.
phone
||
''
,
sex
:
info
?.
sex
,
wxNickName
:
userInfo
?.
nickname
||
''
,
age
:
info
?.
age
,
sex
:
userInfo
?.
sex
||
''
,
province
:
info
?.
province
,
age
:
userInfo
?.
age
||
''
,
memberAttribution
:
info
?.
memberAttribution
,
userLevel
:
userInfo
?.
userLevel
||
''
,
memberLevel
:
info
?.
customLevel
subscribeFlg
:
userInfo
?.
subscribeFlg
||
false
,
subscribeFlg2
:
userInfo
?.
subscribeFlg2
||
false
,
officerOrEmp
:
userInfo
?.
officerOrEmp
||
''
,
programLogin
:
userInfo
?.
programLogin
||
''
,
province
:
userInfo
?.
province
||
''
,
memberAttribution
:
userInfo
?.
memberAttribution
||
''
,
memberType
:
userInfo
?.
memberType
||
''
,
memberLevel
:
userInfo
?.
customLevel
||
''
,
},
window
[
'__tbSensorsObj__'
]);
},
window
[
'__tbSensorsObj__'
]);
sensors
.
registerPage
(
publicObjec
);
sensors
.
registerPage
(
publicObjec
);
sensors
.
quick
(
'autoTrack'
);
sensors
.
quick
(
'autoTrack'
);
...
@@ -88,7 +88,7 @@ export const pageLeave = (pagaName, duration) => {
...
@@ -88,7 +88,7 @@ export const pageLeave = (pagaName, duration) => {
* @param {{pageName:string,activityName:string,prize:string}} option
* @param {{pageName:string,activityName:string,prize:string}} option
*/
*/
export
const
sensorMdExpouse
=
(
eventName
,
option
)
=>
{
export
const
sensorMdExpouse
=
(
eventName
,
option
)
=>
{
console
.
log
(
'神策曝光'
,
eventName
,
option
);
//
console.log('神策曝光', eventName, option);
sensors
.
track
(
eventName
,
option
);
sensors
.
track
(
eventName
,
option
);
};
};
...
@@ -98,6 +98,6 @@ export const sensorMdExpouse = (eventName, option) => {
...
@@ -98,6 +98,6 @@ export const sensorMdExpouse = (eventName, option) => {
* @param {{pageName:string,activityName:string,buttonName:string,prize:string}} option
* @param {{pageName:string,activityName:string,buttonName:string,prize:string}} option
*/
*/
export
const
sensorMdClick
=
(
eventName
,
option
)
=>
{
export
const
sensorMdClick
=
(
eventName
,
option
)
=>
{
console
.
log
(
'神策点击'
,
eventName
,
option
);
//
console.log('神策点击', eventName, option);
sensors
.
track
(
eventName
,
option
);
sensors
.
track
(
eventName
,
option
);
};
};
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