Commit fc1c0286 authored by 俞嘉婷's avatar 俞嘉婷

feat: 神策埋点

parent 9b3b1dff
...@@ -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);
......
...@@ -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);
......
...@@ -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
...@@ -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
...@@ -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.handleClose} style={{ backgroundImage: `url(${know_btn})` }} /> <span className="know_btn" onClick={this.handleKnow} style={{ backgroundImage: `url(${know_btn})` }} />
</div> </div>
} }
} }
......
...@@ -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 || {}
......
...@@ -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()
......
...@@ -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() {
......
...@@ -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();
......
...@@ -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() {
......
...@@ -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)
}) })
......
...@@ -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">
......
...@@ -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;
......
...@@ -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)
}) })
......
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;
......
...@@ -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 */ /** 官微菜单栏 */
GXAPP: "gxapp", GW_MENU: 'guanwei',
/** 个险企微 */ /** 官微权益中心 */
GXQW: "gxqw", GW_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 = {
......
...@@ -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);
}; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment