Commit 1825878a authored by haiyoucuv's avatar haiyoucuv

Merge remote-tracking branch 'origin/master'

parents 0fc23415 15ece3e7
...@@ -50,7 +50,19 @@ ...@@ -50,7 +50,19 @@
} }
// 免登中间页 // 免登中间页
CFG.loginMidUrl = "/customShare/share?id=" + CFG.loginMidId + "&source=duiba&projectId=" + CFG.projectId + "&redirectUrl="; CFG.loginMidUrl = "/customShare/share?id=" + CFG.loginMidId + "&source=duiba&projectId=" + CFG.projectId + "&redirectUrl=";
CFG.domain = location.origin; CFG.domain = location.origin;
// 首页
CFG.indexUrl = "/projectx/" + CFG.projectId + "/index.html?appID=" + getUrlParam("appID");
// 普通分享落地页
CFG.shareUrl = "/projectx/" + CFG.projectId + "/sharepage.html?appID=" + getUrlParam("appID");
// CFG.shareUrl = '/projectx/' + CFG.projectId + '/share.html?appKey=4AoRyTuR6XNfjNa4w5exe1bPmqDS&openBs=openbs&appID=' + CFG.appID;
// 普通分享落地页
CFG.fireShareUrl = "/projectx/" + CFG.projectId + "/firesharepage.html?appID=" + getUrlParam("appID");
// 我的奖品页
CFG.prizeUrl = "/projectx/" + CFG.projectId + "/prize.html?appID=" + getUrlParam("appID");
//actPlatforms //actPlatforms
CFG.actPlatforms = getUrlParam("actPlatforms") || ""; CFG.actPlatforms = getUrlParam("actPlatforms") || "";
//actPlatforms //actPlatforms
...@@ -71,12 +83,17 @@ ...@@ -71,12 +83,17 @@
CFG.inviteCode = getUrlParam("inviteCode"); CFG.inviteCode = getUrlParam("inviteCode");
// 微信授权链接 // 微信授权链接
CFG.indexLogin = "/wechat/access?apk=4AoRyTuR6XNfjNa4w5exe1bPmqDS&dbredirect="; CFG.indexLogin = "/wechat/access?apk=4AoRyTuR6XNfjNa4w5exe1bPmqDS&dbredirect=";
// 普通分享落地页 CFG.sensorUrl = "https://mdglfxpt.piccgroup.cn:18443/sa?project=picclife_consumer";
CFG.shareUrl = "/projectx/" + CFG.projectId + "/sharepage.html?appID=" + getUrlParam("appID"); // 环境,test测试,prod生产 TIAN_TODO
// CFG.shareUrl = '/projectx/' + CFG.projectId + '/share.html?appKey=4AoRyTuR6XNfjNa4w5exe1bPmqDS&openBs=openbs&appID=' + CFG.appID; CFG.env = "prod"; //注意sdk 也分环境!
// 普通分享落地页 if (CFG.env == "test") {
CFG.fireShareUrl = "/projectx/" + CFG.projectId + "/firesharepage.html?appID=" + getUrlParam("appID"); // 测试
// eslint-disable-next-line @spark/best-practices/no-url-in-js
CFG.sensorUrl = "https://mdglfxpt-test.piccgroup.cn:18443/sa?project=picclife_consumer";
CFG.toAppPrizeUrl =
"https://lifeapp-test.picclife.cn/portal-web/app_manager/downloadapps.html?operate_link=https%3A%2F%2Flifeapp-api-test.picclife.cn%2Flifeapi%2Flifeapp-svc-rel-gw%2Fapi%2Fauth_code%2Fauthorize%2Fv1%3Factivity_code%3D612102%26redirect_type%3D0%26redirect_uri%3Dhttps%253A%252F%252F96094.activity-19.m.duiba.com.cn%252FcustomShare%252Fshare%253Fid%253DDid1NTgxNTE&isBindManager=1&isNeedAuth=1";
}
if (!getUrlParam("appID")) { if (!getUrlParam("appID")) {
// alert("【警告】检测到活动url中没有appID参数\n缺少该参数会导致埋点、分享、app信息获取错误。") // alert("【警告】检测到活动url中没有appID参数\n缺少该参数会导致埋点、分享、app信息获取错误。")
} }
......
export default [
{
url: '/ndj/index.do',
method: 'get',
response: ({ query }) => {
return {
"success": true,
"message": "信息",
"code": "123",
"data": {
"remainDrawTimes": 157, // 抽奖次数
"prizeInfo": [
{
"prizeName": `奖品1`,
"prizeImg": `//yun.duiba.com.cn/polaris/jinmoqiang.9e5bbc004f69ab6a3f34d93daeda028616a9f00d.png`,
// prizeId: `1`,
},
{
"prizeName": `奖品2`,
"prizeImg": `//yun.duiba.com.cn/polaris/jinmoqiang.9e5bbc004f69ab6a3f34d93daeda028616a9f00d.png`,
// prizeId: `2`,
},
{
"prizeName": `奖品名称3`,
"prizeImg": `//yun.duiba.com.cn/polaris/mac.fe55aa43e5a231d568973dcdd0b91e0263d5a12c.png`,
// prizeId: `3`,
},
{
"prizeName": `奖品名称4`,
"prizeImg": `//yun.duiba.com.cn/polaris/mgtv.e5f0709a2a4083bc57ce52ff200a50a2e56b2658.png`,
// prizeId: `4`,
},
{
"prizeName": `奖品名称5`,
"prizeImg": `//yun.duiba.com.cn/polaris/qq.73ad13cd0c6fd705327d12957c12e9d5b2e77baa.png`,
// prizeId: `5`,
},
{
"prizeName": `谢谢参与`,
"prizeImg": `https://yun.duiba.com.cn/spark/assets/f77861647e7b55e9c95e9c49d891a21526157a76.jpg`,
// prizeId: `thanks`,
},
]
}
}
},
},
{
url: '/ndj/draw.do',
method: 'get',
response: ({ query }) => {
return {
"code": "123",
"message": "信息xxx",
"success": true,
"data": {
"boolPrize": true, // true-中奖,取prizeInfo信息,false-为中奖,取productInfo
"productInfos":
{
"productImg": "//yun.duiba.com.cn/spark/assets/f77861647e7b55e9c95e9c49d891a21526157a76.jpg",
"productText": "介绍1介绍费1介绍1介绍费1介绍1介绍费1介绍1介绍费1介绍1介绍费1介绍1介绍费1介绍1介绍费1介绍1介绍1介绍费1介绍1介绍1介绍费1介绍1介绍1介绍费1介绍1介绍1介绍费1介绍1"
},
"prizeInfo": {
"prizeName": "reprehenderit tempor non",
"prizeImg": "Duis veniam ipsum voluptate eiusmod"
}
}
}
},
}
]
\ No newline at end of file
export default [
{
url: '/draw/index.do',
method: 'get',
response: ({ query }) => {
return {
"success": true,
"message": "报错了~",
"code": null,
timeStamp: Date.now(),
"data": {
"remainDrawTimes": 3, // 抽奖次数
"prizeVOs": [
{
prizeName: `奖品1`,
prizeImg: `//yun.duiba.com.cn/polaris/jinmoqiang.9e5bbc004f69ab6a3f34d93daeda028616a9f00d.png`,
prizeId: `1`,
},
{
prizeName: `奖品名称2`,
prizeImg: `//yun.duiba.com.cn/polaris/kouzhao.dc55dac6db1ff94c4666c2602d6cb0ac84139982.png`,
prizeId: `2`,
},
{
prizeName: `奖品名称3`,
prizeImg: `//yun.duiba.com.cn/polaris/mac.fe55aa43e5a231d568973dcdd0b91e0263d5a12c.png`,
prizeId: `3`,
},
{
prizeName: `奖品名称4`,
prizeImg: `//yun.duiba.com.cn/polaris/mgtv.e5f0709a2a4083bc57ce52ff200a50a2e56b2658.png`,
prizeId: `4`,
},
{
prizeName: `奖品名称5`,
prizeImg: `//yun.duiba.com.cn/polaris/qq.73ad13cd0c6fd705327d12957c12e9d5b2e77baa.png`,
prizeId: `5`,
},
{
prizeName: `谢谢参与`,
prizeImg: `https://yun.duiba.com.cn/spark/assets/f77861647e7b55e9c95e9c49d891a21526157a76.jpg`,
prizeId: `thanks`,
},
]
}
}
},
},
{
url: '/draw/doDraw.do',
method: 'get',
response: ({ query }) => {
return {
"code": "",
"message": null,
"success": true,
"data": {
"prizeName": "",
"prizeId": "1",
"prizeImg": "",
"productInfos": [
{
"productImg": "//yun.duiba.com.cn/spark/assets/f77861647e7b55e9c95e9c49d891a21526157a76.jpg",
"productText": "介绍1介绍费1介绍1介绍费1介绍1介绍费1介绍1介绍费1介绍1介绍费1介绍1介绍费1介绍1介绍费1介绍1介绍1介绍费1介绍1介绍1介绍费1介绍1介绍1介绍费1介绍1介绍1介绍费1介绍1"
},
{
"productImg": "//yun.duiba.com.cn/polaris/111.8b981b3fc7d090da2457b4f29b9feec496dc95fd.png",
"productText": "介绍2介绍2介绍2介绍2介绍2介绍2介绍2介绍2介绍2介绍2介绍2介绍2介绍2介绍2介绍2介绍2介绍2介绍2"
},
{
"productImg": "//yun.duiba.com.cn/polaris/mgtv.e5f0709a2a4083bc57ce52ff200a50a2e56b2658.png",
"productText": "介绍3介绍3介绍3介绍3介绍3介绍3介绍3介绍3介绍3介绍3介绍3介绍3介绍3介绍3介绍3介绍3介绍3介绍3"
}
]
},
"timeStamp": 1739176246085
}
},
}
]
\ No newline at end of file
...@@ -21,8 +21,8 @@ export default [ ...@@ -21,8 +21,8 @@ export default [
}, },
"rulePop": false, "rulePop": false,
"userId": "qui id deserunt", "userId": "qui id deserunt",
"validUid": "Lorem labore occaecat sed quis", "validUid": true,
"isAgent": "true", "isAgent": true,
"boundYkCode": "eiusmod in dolor", "boundYkCode": "eiusmod in dolor",
"minim_0": 93293912 "minim_0": 93293912
} }
......
...@@ -5,10 +5,11 @@ export default [ ...@@ -5,10 +5,11 @@ export default [
response: ({ query }) => { response: ({ query }) => {
return { return {
"code": "sint nisi ex", "code": "sint nisi ex",
"timeStamp": new Date().getTime(),
"message": "mollit id Excepteur ullamco deserunt", "message": "mollit id Excepteur ullamco deserunt",
"success": true, "success": true,
"data": { "data": {
"openTime": 79049724.44126037, "openTime": new Date().getTime() +1000000,
"rankOptions": [ "rankOptions": [
{ {
"ranking": "1", "ranking": "1",
......
...@@ -47,6 +47,7 @@ ...@@ -47,6 +47,7 @@
"qs": "^6.14.0", "qs": "^6.14.0",
"react": "^18.3.1", "react": "^18.3.1",
"react-dom": "^18.3.1", "react-dom": "^18.3.1",
"sa-sdk-javascript": "^1.27.4",
"spark-utils": "^1.1.2", "spark-utils": "^1.1.2",
"swiper": "8.4.5", "swiper": "8.4.5",
"tailwindcss": "^4.1.4" "tailwindcss": "^4.1.4"
......
...@@ -116,6 +116,9 @@ importers: ...@@ -116,6 +116,9 @@ importers:
react-dom: react-dom:
specifier: ^18.3.1 specifier: ^18.3.1
version: 18.3.1(react@18.3.1) version: 18.3.1(react@18.3.1)
sa-sdk-javascript:
specifier: ^1.27.4
version: 1.27.4
spark-utils: spark-utils:
specifier: ^1.1.2 specifier: ^1.1.2
version: 1.1.10 version: 1.1.10
...@@ -4173,6 +4176,9 @@ packages: ...@@ -4173,6 +4176,9 @@ packages:
run-parallel@1.2.0: run-parallel@1.2.0:
resolution: {integrity: sha1-ZtE2jae9+SHrnZW9GpIp5/IaQ+4=} resolution: {integrity: sha1-ZtE2jae9+SHrnZW9GpIp5/IaQ+4=}
sa-sdk-javascript@1.27.4:
resolution: {integrity: sha512-w0Kv237KHDjH1amgchECzzC9c1aruC0LMgqgYC/ISTfijRroJAEQrVPDvHJqJpD8uD1+spN7q6hgfT3x+EncmQ==, tarball: http://npm.dui88.com:80/sa-sdk-javascript/-/sa-sdk-javascript-1.27.4.tgz}
safe-buffer@5.1.2: safe-buffer@5.1.2:
resolution: {integrity: sha1-mR7GnSluAxN0fVm9/St0XDX4go0=} resolution: {integrity: sha1-mR7GnSluAxN0fVm9/St0XDX4go0=}
...@@ -4454,7 +4460,7 @@ packages: ...@@ -4454,7 +4460,7 @@ packages:
typescript: '>=4.8.4' typescript: '>=4.8.4'
tslib@2.8.1: tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, tarball: http://npm.dui88.com:80/tslib/-/tslib-2.8.1.tgz}
tweedle.js@2.1.0: tweedle.js@2.1.0:
resolution: {integrity: sha512-0ReQgVjepoZkE6t0upWNgCRbplHkQJQYk1LStXugwSR728GLFmGDRuaQJlxeC/iBlxud6+P1RdODjaO25vHAqw==} resolution: {integrity: sha512-0ReQgVjepoZkE6t0upWNgCRbplHkQJQYk1LStXugwSR728GLFmGDRuaQJlxeC/iBlxud6+P1RdODjaO25vHAqw==}
...@@ -8911,6 +8917,8 @@ snapshots: ...@@ -8911,6 +8917,8 @@ snapshots:
dependencies: dependencies:
queue-microtask: 1.2.3 queue-microtask: 1.2.3
sa-sdk-javascript@1.27.4: {}
safe-buffer@5.1.2: {} safe-buffer@5.1.2: {}
safe-regex-test@1.1.0: safe-regex-test@1.1.0:
......
...@@ -12,7 +12,7 @@ import musicStore from "@/store/musicStore.ts"; ...@@ -12,7 +12,7 @@ import musicStore from "@/store/musicStore.ts";
import {initWx} from "@/built-in/share/weixin/weixin.ts"; import {initWx} from "@/built-in/share/weixin/weixin.ts";
import { ModalCtrl } from "@/core/ctrls/ModalCtrl.tsx"; import { ModalCtrl } from "@/core/ctrls/ModalCtrl.tsx";
import { PageCtrl } from "@/core/ctrls/PageCtrl.tsx"; import { PageCtrl } from "@/core/ctrls/PageCtrl.tsx";
import { GetCurrSkinId, getCustomShareId } from "@/utils/utils.ts"; import { GetCurrSkinId, getCustomShareId, isMiniprogram } from "@/utils/utils.ts";
import MyPrize from "@/pages/MyPrize/MyPrize.tsx"; import MyPrize from "@/pages/MyPrize/MyPrize.tsx";
import LoadingDemo from "@/pages/LoadingDemo/LoadingDemo.tsx"; import LoadingDemo from "@/pages/LoadingDemo/LoadingDemo.tsx";
...@@ -21,6 +21,9 @@ import GamePage from "@/pages/GamePage/GamePage.tsx"; ...@@ -21,6 +21,9 @@ import GamePage from "@/pages/GamePage/GamePage.tsx";
import HomePage from './pages/HomePage/HomePage.tsx'; import HomePage from './pages/HomePage/HomePage.tsx';
import AgentSharepage from './pages/agentSharepage/sharepage.jsx'; import AgentSharepage from './pages/agentSharepage/sharepage.jsx';
import SharePage from './pages/sharepage/sharepage.jsx'; import SharePage from './pages/sharepage/sharepage.jsx';
import { onInitShare } from './utils/share.ts';
import { domain, ensureDomain } from "@spark/dbdomain";
import shareStore from './store/share.ts';
@observer @observer
...@@ -31,7 +34,8 @@ class App extends Component { ...@@ -31,7 +34,8 @@ class App extends Component {
const defaultPage = { const defaultPage = {
myPrize: MyPrize, // TODO 举例子 新宿台奖品页 myPrize: MyPrize, // TODO 举例子 新宿台奖品页
index: LoadingDemo, index: LoadingDemo,
}[skinId] || GamePage; sharepage:SharePage,
}[skinId] || HomePage;
PageCtrl.changePage(defaultPage); PageCtrl.changePage(defaultPage);
} }
...@@ -39,7 +43,13 @@ class App extends Component { ...@@ -39,7 +43,13 @@ class App extends Component {
this.showDefaultPage(); this.showDefaultPage();
await store.getFrontVariable(); await store.getFrontVariable();
store.initShare() await onInitShare();
await ensureDomain();
CFG.domain = domain;
if(isMiniprogram()){ //小程序域名写死
CFG.domain = "https://96094-activity.dexfu.cn";
}
shareStore.initShare()
} }
componentWillUnmount() { componentWillUnmount() {
......
...@@ -125,11 +125,11 @@ const API = generateAPI({ ...@@ -125,11 +125,11 @@ const API = generateAPI({
}, },
/** 抽奖首页 */ /** 扭蛋机首页 */
drawIndex: "draw/index.do", drawIndex: "ndj/index.do",
/** 抽奖 */ /** 扭蛋机抽奖 */
drawJoin: { drawJoin: {
uri: "draw/doDraw.do", uri: "ndj/draw.do",
withToken: true, withToken: true,
}, },
......
...@@ -24,7 +24,10 @@ interface IRes { ...@@ -24,7 +24,10 @@ interface IRes {
const mergeData = { const mergeData = {
user_type: newUser ? '0' : '1', user_type: newUser ? '0' : '1',
is_from_share: isFromShare ? '0' : '1', is_from_share: isFromShare ? '0' : '1',
from: getUrlParam("channel"), from: getUrlParam("channel") || '2',
actPlatforms:CFG.actPlatforms || "",
agentCode:CFG.agentCode || "",
actId:CFG.actId || "",
} }
// let tempCookieId = ""; // let tempCookieId = "";
......
"use strict";
import { zeroize } from "@/utils/utils.ts";
import React, { useEffect, useReducer } from "react";
import "./index.less";
const initialState = {
time: {
day: 0,
hour: "00",
minute: "00",
second: "00",
},
};
function reducer(state, action) {
switch (action.type) {
case "change":
return { time: { ...action.data } };
default:
throw new Error();
}
}
const Countdown = (props) => {
const [state, dispatch] = useReducer(reducer, initialState);
const { countdownOver, syst, endt, leftT, renderText } = props;
let countdownTimer = null;
const setTimeFun = (leftTime) => {
let day = Math.floor(leftTime / (3600 * 24 * 1000));
let hour = Math.floor((leftTime / 1000 / 3600) % 24);
let minute = Math.floor((leftTime / 1000 / 60) % 60);
let second = Math.floor((leftTime / 1000) % 60);
day = zeroize(day);
hour = zeroize(hour);
minute = zeroize(minute);
second = zeroize(second);
dispatch({ type: "change", data: { day, hour, minute, second } });
}
const countFun = () => {
if (!leftT && (!syst || !endt)) {
return;
}
let leftTime = null;
if (syst && endt) {
leftTime = endt - syst + 1000;
} else {
leftTime = leftT;
}
// console.log(leftTime, "leftTime");
if (leftTime <= 0) return;
setTimeFun(leftTime)
countdownTimer && clearInterval(countdownTimer);
// setStatus(true);
countdownTimer = setInterval(() => {
leftTime -= 1000;
if (leftTime <= 0) {
// 倒计时结束
clearInterval(countdownTimer);
countdownOver();
dispatch({
type: "change",
data: { day: "00", hour: "00", minute: "00", second: "00" },
});
} else {
setTimeFun(leftTime)
}
}, 1000);
};
useEffect(() => {
countFun(syst, endt);
return () => {
countdownTimer && clearInterval(countdownTimer);
};
}, [syst, endt, leftT]);
return (
renderText
? renderText(state.time)
: <span className="com_countdown">
{state.time.day == "0" ? "" : `${state.time.day}天`}
{state.time.hour}:{state.time.minute}:{state.time.second}
</span>
);
};
export default Countdown;
.com_countdown {
// font-size: 18px;
// color: #fff;
}
...@@ -21,7 +21,6 @@ import dynamicSvga from "../../assets/svga/3输出出奖啊.svga"; ...@@ -21,7 +21,6 @@ import dynamicSvga from "../../assets/svga/3输出出奖啊.svga";
// import { LOG_KEY, pageView, sensorLog } from '@src/utils/sensors'; // import { LOG_KEY, pageView, sensorLog } from '@src/utils/sensors';
@observer @observer
class Capsulepage extends React.Component { class Capsulepage extends React.Component {
constructor(props) { constructor(props) {
...@@ -32,7 +31,7 @@ class Capsulepage extends React.Component { ...@@ -32,7 +31,7 @@ class Capsulepage extends React.Component {
}; };
this.btnStarting = false; // 抽奖机是否启动 this.btnStarting = false; // 抽奖机是否启动
// this.turntableRef = null; // 大转盘 // this.turntableRef = null; // 大转盘
this.drawResultInfo = {}; // this.drawResultInfo = {};
} }
componentDidMount() { componentDidMount() {
...@@ -86,28 +85,42 @@ class Capsulepage extends React.Component { ...@@ -86,28 +85,42 @@ class Capsulepage extends React.Component {
// 抽奖次数为0 // 抽奖次数为0
if (!remainDrawTimes) { if (!remainDrawTimes) {
return Toast.show("抽奖次数不足,快去做任务赚次数吧~"); return Toast.show("抽奖次数不足,快去猜谜赚次数吧~");
} }
if (this.btnStarting) return false; if (this.btnStarting) return false;
this.btnStarting = true; this.btnStarting = true;
const { success, data } = await API.drawJoin(); const { success, data } = await API.drawJoin();
if (success && data) { if (success && data) {
// 抽奖机转动开始抽奖 // 扭蛋机转动开始抽奖
// this.turntableRef.launch(); // this.turntableRef.launch();
this.setState({ btnDynamic: true }); this.setState({ btnDynamic: true });
this.drawResultInfo = data || {}; // this.drawResultInfo = data || {};
const { boolPrzie, prizeInfo = {}, productInfo = {} } = data || {};
const { prizeName = "", prizeImg = "" } = prizeInfo || {};
const { productImg = "", productText = "" } = productInfo || {};
// const index = prizeVOs?.findIndex(
// (item) => item.prizeId === (this.drawResultInfo.prizeId || "thanks")
// );
// console.info("index", index);
const index = prizeVOs?.findIndex(
(item) => item.prizeId === (this.drawResultInfo.prizeId || "thanks")
);
console.info("index", index);
// 抽奖机停止转动 // 抽奖机停止转动
setTimeout(() => { setTimeout(() => {
this.setState({ btnDynamic: false }); this.setState({ btnDynamic: false });
this.stopOkHandle(); this.stopOkHandle();
}, 2000); }, 2000);
// this.turntableRef.braking(index); // this.turntableRef.braking(index);
// 此时判断是否中奖 true-中奖,取prizeInfo信息,false-为中奖,取productInfo
if (boolPrzie) {
// 中奖
ModalCtrl.pushPop("Pop_winprize", { prizeName, prizeImg });
} else {
// 没中奖
ModalCtrl.pushPop("NoPrizeCard", { productImg, productText });
}
} else { } else {
this.btnStarting = false; this.btnStarting = false;
this.getDrawInfo(); this.getDrawInfo();
......
...@@ -13,7 +13,9 @@ import store from '@/store/store'; ...@@ -13,7 +13,9 @@ import store from '@/store/store';
import Taskpop from '@/panels/taskpop/taskpop.jsx'; import Taskpop from '@/panels/taskpop/taskpop.jsx';
import RankPage from '../RankPage/RankPage.js'; import RankPage from '../RankPage/RankPage.js';
import MyPrize from '../MyPrize/MyPrize.js'; import MyPrize from '../MyPrize/MyPrize.js';
import shareStore from '@/store/share.js';
import { LOG_KEY, MatterShareOpt, MatterViewDuration, MatterViewOpt, pageView, sensorLog } from "@/utils/sensors.js";
import { CHANNEL_PARAMS } from '@/utils/constants.js';
@observer @observer
class Homepage extends React.Component { class Homepage extends React.Component {
...@@ -23,8 +25,10 @@ class Homepage extends React.Component { ...@@ -23,8 +25,10 @@ class Homepage extends React.Component {
this.handleButtonClick = this.handleButtonClick.bind(this); this.handleButtonClick = this.handleButtonClick.bind(this);
} }
componentDidMount() { async componentDidMount() {
store.updateIndex() await store.updateIndex()
await shareStore.doAssist();
this.initSensor();
} }
handleButtonClick = _asyncThrottle(async (number) => { handleButtonClick = _asyncThrottle(async (number) => {
...@@ -78,13 +82,66 @@ class Homepage extends React.Component { ...@@ -78,13 +82,66 @@ class Homepage extends React.Component {
// 7 分享活动 // 7 分享活动
case 7: case 7:
// TODO // TODO
shareStore.doShare();
break; break;
default: default:
console.warn("未知按钮类型", number); console.warn("未知按钮类型", number);
} }
}) })
initSensor = () => {
if (CFG.channel == CHANNEL_PARAMS.YK_MINI) {
sensorLog(LOG_KEY.exposure, "b13489", "d13491", {
page_name: "友客首页",
button_name: "分享活动按钮",
});
}
if (CFG.channel == CHANNEL_PARAMS.YK_MINI || CFG.channel == CHANNEL_PARAMS.YK_PUBLIC) {
MatterViewOpt("b13489", {
page_name: "友客首页",
})
if (store?.indexData?.isAgent) {
sensorLog(LOG_KEY.exposure, "b13489", "d13490", {
page_name: "友客首页",
button_name: "拜访清单按钮",
});
}
}
// pageView("b7350", {
// page_name: "开宝箱页"
// });
//
// sensorLog(LOG_KEY.exposure, "b7350", "d7351", {
// page_name: "开宝箱页",
// button_name: "开宝箱按钮",
// });
pageView("b13480", {
page_name: "活动首页"
});
sensorLog(LOG_KEY.exposure, "b13480", "d13484", {
page_name: "活动首页",
button_name: "开宝箱按钮",
});
sensorLog(LOG_KEY.exposure, "b13480", "d13485", {
page_name: "活动首页",
button_name: "掷骰子按钮",
});
sensorLog(LOG_KEY.exposure, "b13480", "d13483", {
page_name: "活动首页",
button_name: "背包按钮",
});
sensorLog(LOG_KEY.exposure, "b13480", "d13482", {
page_name: "活动首页",
button_name: "奖品按钮",
});
sensorLog(LOG_KEY.exposure, "b13480", "d13481", {
page_name: "活动首页",
button_name: "规则按钮",
});
};
render() { render() {
return ( return (
<div className="homepage modal_center"> <div className="homepage modal_center">
......
...@@ -22,6 +22,29 @@ ...@@ -22,6 +22,29 @@
position: absolute; position: absolute;
.sparkBg("rank/title.png"); .sparkBg("rank/title.png");
} }
.countTime{
width:750px;
height: 80px;
position: absolute;
top:300px;
left:0;
text-align: center;
color: #fff;
font-size: 28px;
.times{
span{
width: 58px;
height: 58px;
display: inline-block;
text-align: center;
line-height: 58px;
color:#963800;
font-weight: 500;
margin:0 5px;
.sparkBg("rank/countbg.png");
}
}
}
.prizeList{ .prizeList{
width:680px; width:680px;
height: 275px; height: 275px;
......
...@@ -5,7 +5,7 @@ import API from "@/api"; ...@@ -5,7 +5,7 @@ import API from "@/api";
import { PageCtrl } from "@/core/ctrls/PageCtrl.tsx"; import { PageCtrl } from "@/core/ctrls/PageCtrl.tsx";
import store from "@/store/store.ts"; import store from "@/store/store.ts";
import HomePage from '../HomePage/HomePage'; import HomePage from '../HomePage/HomePage';
import Countdown from '@/components/ComCountdown/index.jsx';
@observer @observer
class RankPage extends React.Component<any, any> { class RankPage extends React.Component<any, any> {
constructor(props) { constructor(props) {
...@@ -13,19 +13,23 @@ class RankPage extends React.Component<any, any> { ...@@ -13,19 +13,23 @@ class RankPage extends React.Component<any, any> {
this.state={ this.state={
rankList:[], rankList:[],
myRankInfo:{}, myRankInfo:{},
prizeList:[] prizeList:[],
openTime:0,
currentTime:0,
} }
} }
componentDidMount(): void { componentDidMount(): void {
this.getRankInfo(); this.getRankInfo();
} }
getRankInfo = async() =>{ getRankInfo = async() =>{
const {success, data} = await API.rankInfo() const {success, data, timeStamp} = await API.rankInfo()
if(success){ if(success){
this.setState({ this.setState({
rankList:data.rankInfos, rankList:data.rankInfos,
myRankInfo:data.myRank, myRankInfo:data.myRank,
prizeList:data.rankOptions prizeList:data.rankOptions,
openTime:data.openTime,
currentTime:timeStamp,
}) })
} }
} }
...@@ -34,10 +38,26 @@ class RankPage extends React.Component<any, any> { ...@@ -34,10 +38,26 @@ class RankPage extends React.Component<any, any> {
} }
render() { render() {
const {rankList, myRankInfo, prizeList} = this.state; const {rankList, myRankInfo, prizeList, openTime, currentTime} = this.state;
return <div className="rankPage"> return <div className="rankPage">
<div className="bg"></div> <div className="bg"></div>
<div className="title"></div> <div className="title"></div>
<div className="countTime">
<Countdown
leftT={openTime - currentTime}
renderText={data => {
const { day, hour, minute, second } = data
return <div className="times">
<span className="open_countdown_num">{day}</span>
<span className="open_countdown_num">{hour}</span>:
<span className="open_countdown_num">{minute}</span>:
<span className="open_countdown_num">{second}</span>
后更新
</div>
}}
countdownOver={() => store.getHomeInfo()}
/>
</div>
<div className="prizeList"> <div className="prizeList">
{ {
(prizeList || []).map((item,index)=>{ (prizeList || []).map((item,index)=>{
...@@ -71,7 +91,7 @@ class RankPage extends React.Component<any, any> { ...@@ -71,7 +91,7 @@ class RankPage extends React.Component<any, any> {
return( return(
<div className="rankItem"> <div className="rankItem">
<div className="rank"> <div className="rank">
{item?.index > 4 ? <span></span> : item?.index} {item?.index < 4 ? <span></span> : item?.index}
</div> </div>
<div className="name">{item?.userName}</div> <div className="name">{item?.userName}</div>
<div className="score">{item?.score}</div> <div className="score">{item?.score}</div>
......
import { Toast } from "@grace/ui"; import { Toast } from "@grace/ui";
// import { callApi } from "@spark/api-base"; // import { callApi } from "@spark/api-base";
// import { getDomain } from "@spark/dbdomain"; import { getDomain } from "@spark/dbdomain";
import {Axios} from 'axios';
const apiAxios = new Axios({
timeout: 10000,
});
/** 处理cookie */ /** 处理cookie */
export const saveCookies = async () => { export const saveCookies = async () => {
// const domain = await getDomain(); const domain = await getDomain();
// const data = await callApi(`${domain}/autoLogin/tempSaveCookie`); // const data = await callApi(`${domain}/autoLogin/tempSaveCookie`);
// console.info(`%c cookieId: ${data}`, "font-size: 20px; color: orange"); const resInfo = await apiAxios.request({
// if (!!data) { method: 'get',
// localStorage.setItem("cookieId", data); url: `${domain}/autoLogin/tempSaveCookie`,
// } })
const res = JSON.parse(resInfo.data)
console.log('res',res)
if (!res?.success) {
return;
}
if (!!res.data) {
localStorage.setItem("cookieId", res.data);
}
}; };
/** 设置cookies */ /** 设置cookies */
export const setCookies = async () => { export const setCookies = async () => {
// const cookieId = localStorage.getItem("cookieId"); const cookieId = localStorage.getItem("cookieId");
// const domain = await getDomain(); const domain = await getDomain();
// if (!!cookieId) { if (!!cookieId) {
// await callApi(`${domain}/autoLogin/resetCookie?duibaTempCookieId=${cookieId}`); // await callApi(`${domain}/autoLogin/resetCookie?duibaTempCookieId=${cookieId}`);
// localStorage.removeItem("cookieId"); const resInfo = await apiAxios.request({
// } method: 'get',
url: `${domain}/autoLogin/resetCookie?duibaTempCookieId=${cookieId}`,
})
// const res = JSON.parse(resInfo.data)
localStorage.removeItem("cookieId");
}
}; };
...@@ -3,7 +3,7 @@ import API from "../api/index"; ...@@ -3,7 +3,7 @@ import API from "../api/index";
import { showShareGuide } from "@spark/share"; import { showShareGuide } from "@spark/share";
import store from "./store"; import store from "./store";
import { isIos, isWeChat, onUpdateShare } from "@/utils/share"; import { isIos, isWeChat, onUpdateShare } from "@/utils/share";
import { isMiniprogram, windowJumpUrl } from "@/utils/utils"; import { GetCurrSkinId, getCustomShareId, getUrlParam, isMiniprogram, windowJumpUrl } from "@/utils/utils";
// import modalStore from "./modal"; // import modalStore from "./modal";
import { Toast } from "@grace/ui"; import { Toast } from "@grace/ui";
function isEnterpriseWeChat() { function isEnterpriseWeChat() {
...@@ -12,6 +12,29 @@ function isEnterpriseWeChat() { ...@@ -12,6 +12,29 @@ function isEnterpriseWeChat() {
return /wxwork/.test(userAgent); // 检查是否包含 "wxwork" return /wxwork/.test(userAgent); // 检查是否包含 "wxwork"
} }
const shareStore = makeAutoObservable({ const shareStore = makeAutoObservable({
// 初始化分享
initShare(){
const skinId = GetCurrSkinId() || getCustomShareId() || 'index';
console.log("分享默认渠道===", CFG.defaultChannel);
const shareInfo = JSON.parse(store.frontVariable.shareInfo);
if (skinId == 'index') { // 首页
let shareUrl = `${CFG.domain}${CFG.shareUrl}`;
shareUrl += `&ykCode=${CFG.workerCode || CFG.agentCode || ""}`
shareUrl += `&channel=${CFG.defaultChannel}&agentCode=${CFG.agentCode || ""}&actPlatforms=${CFG.actPlatforms || ""}&actId=${CFG.actId || ""}`
onUpdateShare({
...(shareInfo),
url: `${CFG.domain}${CFG.indexLogin}${encodeURIComponent(shareUrl)}`
});
} else {
let shareUrl = `${CFG.domain}${CFG.shareUrl}${getUrlParam("inviteCode") ? '&inviteCode=' + getUrlParam("inviteCode") : ""}`;
shareUrl += `&ykCode=${CFG.workerCode || CFG.agentCode || ""}`
if (CFG.channel) shareUrl += `&channel=${CFG.defaultChannel}&agentCode=${CFG.agentCode || ""}&actPlatforms=${CFG.actPlatforms || ""}&actId=${CFG.actId || ""}`
onUpdateShare({
...(shareInfo),
url: `${CFG.domain}${CFG.indexLogin}${encodeURIComponent(shareUrl)}`
});
}
},
/** 普通分享 */ /** 普通分享 */
async doShare() { async doShare() {
const shareInfo = JSON.parse(store.frontVariable.shareInfo); const shareInfo = JSON.parse(store.frontVariable.shareInfo);
...@@ -188,8 +211,9 @@ const shareStore = makeAutoObservable({ ...@@ -188,8 +211,9 @@ const shareStore = makeAutoObservable({
goAppPrize() { goAppPrize() {
// windowJumpUrl(CFG.toAppPrizeUrl); // windowJumpUrl(CFG.toAppPrizeUrl);
//CFG.projectId三元判断为真,前面的是正式,需要修改的地方为中间页链接,可咨询东哥链接(奖品页唤端) ios需要多encode一次 //CFG.projectId三元判断为真,前面的是正式,需要修改的地方为中间页链接,可咨询东哥链接(奖品页唤端) ios需要多encode一次
const testCustomId = "Did1NTkyODc"; const testCustomId = "Did1NjEwNzk"; //奖品-测试中间页
const prodCustomId = "Did1NTk0MzE"; const prodCustomId = "Did1NjExMjc"; //奖品-正式中间页
//pafc25ff1 为正式项目 需替换为正式项目ID
windowJumpUrl( windowJumpUrl(
CFG.projectId == "pafc25ff1" CFG.projectId == "pafc25ff1"
? "https://lifeapp.picclife.cn/portal/app_manager/downloadapps.html?operate_link=" + ? "https://lifeapp.picclife.cn/portal/app_manager/downloadapps.html?operate_link=" +
...@@ -197,13 +221,13 @@ const shareStore = makeAutoObservable({ ...@@ -197,13 +221,13 @@ const shareStore = makeAutoObservable({
`https://lifeapp-api.picclife.cn/lifeapi/lifeapp-svc-gw/api/auth_code/authorize/v1?activity_code=612702&redirect_type=0&redirect_uri=${isIos() `https://lifeapp-api.picclife.cn/lifeapi/lifeapp-svc-gw/api/auth_code/authorize/v1?activity_code=612702&redirect_type=0&redirect_uri=${isIos()
? encodeURIComponent( ? encodeURIComponent(
encodeURIComponent( encodeURIComponent(
`https://96094.activity-19.m.duiba.com.cn/customShare/share?id=${prodCustomId}` + `https://96094-activity.dexfu.cn/customShare/share?id=${prodCustomId}` +
`&channel=${CFG.defaultChannel}&agentCode=${CFG.workerCode || CFG.agentCode}&actPlatforms=${CFG.actPlatforms `&channel=${CFG.defaultChannel}&agentCode=${CFG.workerCode || CFG.agentCode}&actPlatforms=${CFG.actPlatforms
}&actId=${CFG.actId}` }&actId=${CFG.actId}`
) )
) )
: encodeURIComponent( : encodeURIComponent(
`https://96094.activity-19.m.duiba.com.cn/customShare/share?id=${prodCustomId}` + `https://96094-activity.dexfu.cn/customShare/share?id=${prodCustomId}` +
`&channel=${CFG.defaultChannel}&agentCode=${CFG.workerCode || CFG.agentCode}&actPlatforms=${CFG.actPlatforms `&channel=${CFG.defaultChannel}&agentCode=${CFG.workerCode || CFG.agentCode}&actPlatforms=${CFG.actPlatforms
}&actId=${CFG.actId}` }&actId=${CFG.actId}`
) )
...@@ -215,13 +239,13 @@ const shareStore = makeAutoObservable({ ...@@ -215,13 +239,13 @@ const shareStore = makeAutoObservable({
`https://lifeapp-api-test.picclife.cn/lifeapi/lifeapp-svc-rel-gw/api/auth_code/authorize/v1?activity_code=612702&redirect_type=0&redirect_uri=${isIos() `https://lifeapp-api-test.picclife.cn/lifeapi/lifeapp-svc-rel-gw/api/auth_code/authorize/v1?activity_code=612702&redirect_type=0&redirect_uri=${isIos()
? encodeURIComponent( ? encodeURIComponent(
encodeURIComponent( encodeURIComponent(
`https://96094.activity-19.m.duiba.com.cn/customShare/share?id=${testCustomId}` + `https://96094-activity.dexfu.cn/customShare/share?id=${testCustomId}` +
`&channel=${CFG.defaultChannel}&agentCode=${CFG.workerCode || CFG.agentCode}&actPlatforms=${CFG.actPlatforms `&channel=${CFG.defaultChannel}&agentCode=${CFG.workerCode || CFG.agentCode}&actPlatforms=${CFG.actPlatforms
}&actId=${CFG.actId}` }&actId=${CFG.actId}`
) )
) )
: encodeURIComponent( : encodeURIComponent(
`https://96094.activity-19.m.duiba.com.cn/customShare/share?id=${testCustomId}` + `https://96094-activity.dexfu.cn/customShare/share?id=${testCustomId}` +
`&channel=${CFG.defaultChannel}&agentCode=${CFG.workerCode || CFG.agentCode}&actPlatforms=${CFG.actPlatforms `&channel=${CFG.defaultChannel}&agentCode=${CFG.workerCode || CFG.agentCode}&actPlatforms=${CFG.actPlatforms
}&actId=${CFG.actId}` }&actId=${CFG.actId}`
) )
......
...@@ -78,10 +78,11 @@ class Store { ...@@ -78,10 +78,11 @@ class Store {
multipleValue: number, multipleValue: number,
taskId: string, taskId: string,
url: string, url: string,
} },
isAgent:string,
} = {}; } = {};
firstIn = true;
async updateIndex() { async updateIndex() {
const { success, data } = await API.index(); const { success, data } = await API.index();
if (!success) { if (!success) {
...@@ -89,7 +90,26 @@ class Store { ...@@ -89,7 +90,26 @@ class Store {
} }
this.indexData = data; this.indexData = data;
/** 绑定业务员code判断 */
if (data?.boundYkCode) {
// 已绑定
CFG.workerCode = data?.boundYkCode;
} else {
// 未绑定 从链接上取-无论是否有都要调用
if (!data?.isAgent) {
/**后端说增加非业务员才调用 */
const res = await this.bindYkCode(CFG.workerCode || "");
if (res.success && res.data?.code) {
CFG.workerCode = res.data?.code;
}
}
}
if(this.firstIn && data.validUid){
API.visit()
this.firstIn = false
}
} }
/** /**
...@@ -113,58 +133,6 @@ class Store { ...@@ -113,58 +133,6 @@ class Store {
return true; return true;
} }
/** 普通分享 */
async initShare() {
const domain = await getDomain();
console.error('看下域名', domain);
let url = `${domain || location.origin}${CFG.index}`;
const shareInfo = this.frontVariable?.shareInfo?.[0]
let option = {
title: shareInfo?.title,
// 标题
desc: shareInfo?.desc || '',
// 描述
imgUrl: shareInfo?.imgUrl,
link: url
};
option.link = (domain || location.origin) + CFG.loginMidUrl + encodeURIComponent(url);
initWx(option);
}
/** 邀请好友 */
async doInvite(taskCode) {
const domain = await getDomain();
console.error('看下域名', domain);
let url = `${domain || location.origin}${CFG.index}`;
const shareInfo = this.frontVariable?.shareInfo?.[1]
let option = {
title: shareInfo?.title,
// 标题
desc: shareInfo?.desc || '',
// 描述
imgUrl: shareInfo?.imgUrl,
link: url
};
showShareGuide();
const res = await API.getChallengeInviteCode({ taskCode: taskCode })
url += `&inviteCode=${res.data.inviteCode}`;
option.link = (domain || location.origin) + CFG.loginMidUrl + encodeURIComponent(url);
initWx(option);
}
async doAssist() {
let inviteCode = getUrlParam('inviteCode')
if (!inviteCode || inviteCode == 'null' || inviteCode == 'undefined') return false;
const { success, message, code } = await API.getChallengeAssist({ inviteCode: inviteCode });
history.replaceState({}, '', location.href.replace(new RegExp(`[?&]inviteCode=[^&]*`), ''));
}
async bindYkCode(code) { async bindYkCode(code) {
const res = await API.bindYk({ const res = await API.bindYk({
......
import sensors from "sa-sdk-javascript/dist/web/sensorsdata.es6";
import SMEncryption from "sa-sdk-javascript/dist/web/plugin/sm-encryption/index.es6";
import { extranceName, platFormName, platformType } from "./constants.ts";
import { GetCurrSkinId } from "./utils";
import store from "@/store/store.ts";
const ENV = {
test: "test",
prod: "prod",
};
// todo 正式修改
const env = location.href.indexOf("duibatest") > -1 ? ENV.test : ENV.prod; // 测试
// const env = ENV.test; // 测试
/** 上报地址 */
const serverUrl = {
[ENV.test]: "https://mdglfxpt-test.piccgroup.cn:18443/sa?project=picclife_consumer",
[ENV.prod]: "https://mdglfxpt.piccgroup.cn:18443/sa?project=picclife_consumer",
};
/** 神策加密key */
const pub_key = {
[ENV.test]:
"04115969d70075438379dd348f650b4dcb27d0b12b92d9378b2b5d989b48dd9266d4654f08161cdb272b4c9069d64f77bb96fca6efcb1d1635bd7dcc36d058e07c",
[ENV.prod]:
"041717d6728d0f4efd409aeed420f64d3ef684d7e9d21b7b50cd427ce49c47c153916159009cd2f52039718a0e2ce3322cd954a0356c219effef262a5f1eddf8b3",
};
/** 人保加密 */
sensors.use(SMEncryption, {
pkv: 2,
pub_key: pub_key[env],
});
/** 渠道映射 */
export const CHANNEL_MAP = {
1: "人保寿险管家app",
2: "人保寿险企业家助手微信公众号",
3: "友客微信公众号-精选专题",
4: "e服务公众号",
5: "友客小程序",
6: "e通app",
7: "微通",
8: "友客-获客活动",
};
/** 埋点key */
export const LOG_KEY = {
click: "click",
exposure: "exposure",
pageview: "pageview",
result: "result",
MatterView: "MatterView",
MatterShare: "MatterShare",
pageViewTime: "pageViewTime",
};
/** 埋点Event */
export const EVENT_NAME = {
[LOG_KEY.click]: "actPageClick",
[LOG_KEY.exposure]: "actPageExposure",
[LOG_KEY.pageview]: "actPageView",
[LOG_KEY.result]: "ActPageResult",
[LOG_KEY.MatterView]: "MatterView",
[LOG_KEY.MatterShare]: "MatterShare",
[LOG_KEY.pageViewTime]: "MatterViewDuration"
};
let isInit = false;
/** 埋点事件 */
export const MD_EVENT = {
PAGE_VIEW: "actPageExposure",
PAGE_CLICK: "actPageClick",
};
export const initSensors = (uid) => {
sensors.init({
server_url: serverUrl[env],
app_js_bridge: true,
is_track_single_page: true,
use_client_time: true,
show_log: true,
send_type: "beacon",
heatmap: {
clickmap: "default",
scroll_notice_map: "not_collect",
},
});
sensors.login(uid);
const publicObjec = Object.assign(
{
currentUrl: location.href,
referrer: document.referrer,
theme_name: "非遗大冒险",
act_name: "非遗大冒险",
avtivity_name: "非遗大冒险",
source_entry: CHANNEL_MAP[CFG.channel],
source: CHANNEL_MAP[CFG.channel],
platform_name: extranceName[CFG.channel],
platform_type: platformType[CFG.channel],
requirement_id: 1375,
is_login: uid ? "是" : "否",
operation_name: "非遗大冒险",
source_platform: CHANNEL_MAP?.[CFG.channel] || CFG.channel,
entrance: extranceName[CFG.channel],
},
window["__tbSensorsObj__"]
);
sensors.registerPage(publicObjec);
sensors.quick("autoTrack");
isInit = true;
};
/**
* 真正的埋点 - 不区分曝光和点击,直接打
* @param {string} eventName
* @param {{page_name:string,button_name:string,operation_name:string}} options
*/
export const sensorLog = (logKey, bid, did, options) => {
if (!isInit) {
console.info(`%c 神策上报地址: ${serverUrl[env]} 当前环境: ${env}`, "font-size: 12px; color: green");
const uid = store.homeInfo?.uid;
initSensors(uid);
}
// console.log(`%c type: ${logKey} track_sign: ${`aL06Activity.${bid}.${did}.${logKey}.${EVENT_NAME[logKey]}`}`, "font-size: 20px; color: rgb(244, 123, 93)");
sensors.track(EVENT_NAME[logKey], {
track_sign: `aL06Activity.${bid}.${did}.${logKey}.${EVENT_NAME[logKey]}`,
avtivity_name: "非遗大冒险",
operation_id: CFG.operationId,
act_type: "客经",
location_type: "活动",
agent_code: store.homeInfo?.agentCode,
act_id: CFG.actId,
...options
});
};
export const pageViewD = (bid, did, options) => {
if (!isInit) {
console.info(`%c 神策上报地址: ${serverUrl[env]} 当前环境: ${env}`, "font-size: 12px; color: green");
const uid = store.homeInfo?.uid;
initSensors(uid);
}
// console.log(`%c type: ${logKey} track_sign: ${`aL06Activity.${bid}.${did}.${logKey}.${EVENT_NAME[logKey]}`}`, "font-size: 20px; color: rgb(244, 123, 93)");
sensors.track(EVENT_NAME[LOG_KEY.pageview], {
track_sign: `aL06Activity.${bid}.${did}.${LOG_KEY.pageview}.${EVENT_NAME[LOG_KEY.pageview]}`,
operation_id: CFG.operationId,
avtivity_name: "非遗大冒险",
act_type: "客经",
location_type: "活动",
agent_code: store.homeInfo?.agentCode,
act_id: CFG.actId,
...options
});
};
/**
* 真正的埋点 - 不区分曝光和点击,直接打
* @param {string} eventName
* @param {{page_name:string,button_name:string,pop_name:string}} options
*/
export const pageView = (bid, options) => {
if (!isInit) {
console.info(`%c 神策上报地址: ${serverUrl[env]} 当前环境: ${env}`, "font-size: 12px; color: green");
const uid = store.homeInfo?.uid;
initSensors(uid);
}
// console.log(`%c type: ${logKey} track_sign: ${`aL06Activity.${bid}.${did}.${logKey}.${EVENT_NAME[logKey]}`}`, "font-size: 20px; color: rgb(244, 123, 93)");
sensors.track(EVENT_NAME[LOG_KEY.pageview], {
track_sign: `aL06Activity.${bid}.${LOG_KEY.pageview}.${EVENT_NAME[LOG_KEY.pageview]}`,
operation_id: CFG.operationId,
avtivity_name: "非遗大冒险",
act_type: "客经",
location_type: "活动",
agent_code: store.homeInfo?.agentCode,
act_id: CFG.actId,
...options
});
};
export const MatterViewOpt = (bid, options) => {
if (!isInit) {
console.info(`%c 神策上报地址: ${serverUrl[env]} 当前环境: ${env}`, "font-size: 12px; color: green");
const uid = store.homeInfo?.uid;
initSensors(uid);
}
sensors.track(EVENT_NAME[LOG_KEY.MatterView], {
track_sign: `aL06Activity.${bid}.${LOG_KEY.pageview}.${EVENT_NAME[LOG_KEY.MatterView]}`,
operation_id: CFG.operationId,
agent_code: store.homeInfo?.agentCode,
act_id: CFG.actId,
act_type: "客经",
location_type: "活动",
entrance: extranceName[CFG.channel],
sales_id: CFG.workerCode || store.homeInfo?.agentCode, // todo
avtivity_name: "非遗大冒险",
...options
});
};
export const MatterShareOpt = (bid, did, options) => {
if (!isInit) {
console.info(`%c 神策上报地址: ${serverUrl[env]} 当前环境: ${env}`, "font-size: 12px; color: green");
const uid = store.homeInfo?.uid;
initSensors(uid);
}
sensors.track(EVENT_NAME[LOG_KEY.MatterShare], {
track_sign: `aL06Activity.${bid}.${did}.click.${EVENT_NAME[LOG_KEY.MatterShare]}`,
operation_id: CFG.operationId,
agent_code: store.homeInfo?.agentCode,
act_id: CFG.actId,
act_type: "客经",
location_type: "活动",
entrance: extranceName[CFG.channel],
sales_id: CFG.workerCode || store.homeInfo?.agentCode, // todo
avtivity_name: "非遗大冒险",
...options
});
};
export const MatterViewDuration = (bid, time, options) => {
if (!isInit) {
console.info(`%c 神策上报地址: ${serverUrl[env]} 当前环境: ${env}`, "font-size: 12px; color: green");
const uid = store.homeInfo?.uid;
initSensors(uid);
}
sensors.track(EVENT_NAME[LOG_KEY.pageViewTime], {
track_sign: `aL06Activity.${bid}.${LOG_KEY.pageViewTime}.${EVENT_NAME[LOG_KEY.pageViewTime]}`,
operation_id: CFG.operationId,
agent_code: store.homeInfo?.agentCode,
act_id: CFG.actId,
act_type: "客经",
location_type: "活动",
entrance: extranceName[CFG.channel],
sales_id: CFG.workerCode || store.homeInfo?.agentCode, // todo
avtivity_name: "非遗大冒险",
$event_duration: time,
...options
});
};
\ No newline at end of file
...@@ -477,3 +477,14 @@ export const appJump = (module, method, params, callback) => { ...@@ -477,3 +477,14 @@ export const appJump = (module, method, params, callback) => {
export const windowJumpUrl = (url) => { export const windowJumpUrl = (url) => {
url && (location.href = url); url && (location.href = url);
}; };
/** 前置补零 */
export function zeroize(num, n = 2) {
let len = num.toString().length
while (len < n) {
num = '0' + num
len++
}
return num
}
\ No newline at end of file
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