Commit 730ef9e3 authored by 徐士卿's avatar 徐士卿

Merge branch 'master' of gitlab2.dui88.com:sparkprojects/rb_strongestbrain_250520

parents 1fafff73 4a04233e
......@@ -50,8 +50,33 @@
}
// 免登中间页
CFG.loginMidUrl = "/customShare/share?id=" + CFG.loginMidId + "&source=duiba&projectId=" + CFG.projectId + "&redirectUrl=";
CFG.domain = location.origin;
//actPlatforms
CFG.actPlatforms = getUrlParam("actPlatforms") || "";
//actPlatforms
CFG.agentCode = getUrlParam("agentCode") || "";
//actPlatforms
CFG.actId = getUrlParam("actId") || "";
// 特殊的业务员code
CFG.spcCode = getUrlParam("code") || "";
// 业务员code
CFG.workerCode = getUrlParam("ykCode") || CFG.spcCode;
// 渠道 1-9
CFG.channel = getUrlParam("channel") || "2";
// 默认渠道 除了友客渠道,其他统一按照2处理
// CFG.defaultChannel = CFG.channel == 5 ? 5 : CFG.channel == 3 ? 3 : 2;
CFG.defaultChannel = CFG.channel || "2";
// 助力参数
CFG.inviteCode = getUrlParam("inviteCode");
// 微信授权链接
CFG.indexLogin = "/wechat/access?apk=4AoRyTuR6XNfjNa4w5exe1bPmqDS&dbredirect=";
// 普通分享落地页
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");
if (!getUrlParam("appID")) {
// alert("【警告】检测到活动url中没有appID参数\n缺少该参数会导致埋点、分享、app信息获取错误。")
}
......
......@@ -25,18 +25,12 @@ export default [
"test_config_02": "111",
// 规则长图
"ruleImg": '//yun.duiba.com.cn/polaris/bg.18539c61e0103e01a339dd268558b2559ab178ba.png',
shareInfo: [
{
"title": 'normal',
"desc": '2025年“3·15”金融消费者权益保护教育宣传活动',
"imgUrl": '//yun.duiba.com.cn/polaris/image.42930d3760a71de0c9b80cb7481767718dca11d3.png'
},
{
"title": 'invite',
"desc": '2025年“3·15”金融消费者权益保护教育宣传活动',
"imgUrl": '//yun.duiba.com.cn/polaris/image%20(1).aba678324b060ee2050bbdaf83c05c8ddb3a3dd2.png'
}
],
shareInfo: JSON.stringify({
"title":"许愿迎新春",
"content":"参与活动生成你的专属烟花吧~",
"thumbnail":"https://yun.duiba.com.cn/polaris/%E6%9C%AA%E6%A0%87%E9%A2%98-1.501ac89a8b4c601209edf8b9c3b67fd5228f1ed8.jpg",
"imgUrl":"https://yun.duiba.com.cn/polaris/%E6%9C%AA%E6%A0%87%E9%A2%98-1.501ac89a8b4c601209edf8b9c3b67fd5228f1ed8.jpg"
}),
shopUrl: 'https://'
}
}
......
export default [
{
url:'/game/queryBoundYk.do',
url: '/zqdn/rankIndex.do',
method: 'get',
response: ({ query }) => {
return {
"code": "sint nisi ex",
"message": "mollit id Excepteur ullamco deserunt",
"success": true,
"data": {
"openTime": 79049724.44126037,
"rankOptions": [
{
"ranking": "1",
"image": "//yun.duiba.com.cn/aurora/assets/3f31b0ab96e23f91cfb020c55eb7633605c168f6.jpeg",
"name": "culpa velitculpa velit"
},
{
"ranking": "1-3",
"image": "//yun.duiba.com.cn/aurora/assets/3f31b0ab96e23f91cfb020c55eb7633605c168f6.jpeg",
"name": "culpa velit"
},
{
"ranking": "4-10",
"image": "//yun.duiba.com.cn/aurora/assets/3f31b0ab96e23f91cfb020c55eb7633605c168f6.jpeg",
"name": "culpa velit"
},
{
"ranking": "11",
"image": "//yun.duiba.com.cn/aurora/assets/3f31b0ab96e23f91cfb020c55eb7633605c168f6.jpeg",
"name": "culpa velit"
},
],
"myRank": {
"index": 100,
"userName": "sunt",
"score": 100,
"avatar": "culpa velit"
},
"rankInfos": [
{
"index": 1,
"userName": "ex",
"score": 100000,
"meFlag": true,
"avatar": "tempor ut ut nisi"
},
{
"index": 2,
"userName": "esse sunt nostrud",
"score": 80000,
"meFlag": false,
"avatar": "in sed aute aliquip"
},
{
"index": 3,
"userName": "in aliquip laborum",
"score": 50000,
"meFlag": false,
"avatar": "deserunt ullamco"
},
{
"index": 4,
"userName": "proident id aute",
"score": 40000,
"meFlag": true,
"avatar": "tempor ullamco"
}
]
}
}
}
},
{
url: '/common/visit.do',
method: 'get',
response: ({ query }) => {
return {
success: true,
code: "",
message: "",
data: {
code: '111'
},
}
}
},
{
url: '/game/queryBoundYk.do',
method: 'get',
response: ({ query }) => {
return {
......@@ -15,7 +101,7 @@ export default [
}
},
{
url:'/home/savePrizeAddress.do',
url: '/home/savePrizeAddress.do',
method: 'get',
response: ({ query }) => {
return {
......@@ -58,12 +144,12 @@ export default [
"bonus": false,
"title": "a11奖品名称超级长的实物奖品-漫漫测试-不可删除-不可删除-奖品名称超级长",
"type": 1,
"drawStatus":'2',
"drawStatus": '2',
"orderTypeTitle": "星速台活动获得",
"recordId": 500727400,
"new": false,
"quantity": 1,
"recordInfo":false,
"recordInfo": false,
"gmtCreate": "2024-06-18 00:10:38",
"url": "/aaw/projectx/takePrize?projectOrderNo=500727400",
"statusText": "<span>已中奖</span>",
......@@ -74,7 +160,7 @@ export default [
"img": "//yun.dui88.com/images/202203/unet6gpw1c.jpeg",
"itemType": "object",
"bonus": false,
"drawStatus":'2',
"drawStatus": '2',
"title": "b11奖品名称超级长的实物奖品-漫漫测试-不可删除-不可删除-奖品名称超级长",
"type": 1,
"orderTypeTitle": "星速台活动获得",
......
......@@ -106,7 +106,7 @@ export default [
item: [
{
buttonText: "去完成",
code: "browser_zeng_yuan_1",
code: "common_invite",
completedSize: 1,
desc: null,
extra: '{"answerTimes":0,"drawTimes":0}',
......@@ -138,7 +138,7 @@ export default [
ruleId: "spPrize@sp_draw_times@1",
sendPrize: true,
subTitle: "抽奖次数+1抽奖次数+1抽奖次数+1",
taskStatus: 2,
taskStatus: 0,
title: "邀请任务",
},
{
......
......@@ -1681,7 +1681,7 @@ packages:
resolution: {integrity: sha512-lKTdfDhS38NrgEJaNagk1zgVX69hH8ZAi9vdpD3+G20EI5S+4W7bB/L+G9BpwsltJpeKAhOxnK0d31DGgD2zRg==}
'@spark/circle-turntable@1.0.3':
resolution: {integrity: sha512-oJBskZlBFmuNQRmg7/OfkZ+T903f9+XMosWklbhnRNKBEwckYXR+ml+c8m1YVhgGjixFwdxtGaIY8BHtYUxBbg==, tarball: http://npm.dui88.com:80/@spark%2fcircle-turntable/-/circle-turntable-1.0.3.tgz}
resolution: {integrity: sha512-oJBskZlBFmuNQRmg7/OfkZ+T903f9+XMosWklbhnRNKBEwckYXR+ml+c8m1YVhgGjixFwdxtGaIY8BHtYUxBbg==}
peerDependencies:
react: ^17.0.2
react-dom: 17.0.2
......@@ -2116,7 +2116,7 @@ packages:
engines: {node: '>= 0.4'}
axios@1.2.3:
resolution: {integrity: sha512-pdDkMYJeuXLZ6Xj/Q5J3Phpe+jbGdsSzlQaFVkMQzRUL05+6+tetX8TV3p4HrU4kzuO9bt+io/yGQxuyxA/xcw==, tarball: http://npm.dui88.com:80/axios/-/axios-1.2.3.tgz}
resolution: {integrity: sha512-pdDkMYJeuXLZ6Xj/Q5J3Phpe+jbGdsSzlQaFVkMQzRUL05+6+tetX8TV3p4HrU4kzuO9bt+io/yGQxuyxA/xcw==}
axios@1.9.0:
resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==}
......@@ -2140,7 +2140,7 @@ packages:
resolution: {integrity: sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4=}
balloon-css@1.2.0:
resolution: {integrity: sha512-urXwkHgwp6GsXVF+it01485Z2Cj4pnW02ICnM0TemOlkKmCNnDLmyy+ZZiRXBpwldUXO+aRNr7Hdia4CBvXJ5A==, tarball: http://npm.dui88.com:80/balloon-css/-/balloon-css-1.2.0.tgz}
resolution: {integrity: sha512-urXwkHgwp6GsXVF+it01485Z2Cj4pnW02ICnM0TemOlkKmCNnDLmyy+ZZiRXBpwldUXO+aRNr7Hdia4CBvXJ5A==}
base64-arraybuffer@1.0.2:
resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==}
......@@ -2447,7 +2447,7 @@ packages:
resolution: {integrity: sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=}
db-react-helper@1.0.5:
resolution: {integrity: sha512-J4+DXr/Ah7t+/j96m73WzJ26VUfHzE5MxWj7kS62SV7iKCb5LTTcngWvn4jmpQnF54WAkhOjBt8sY6B+RkDPPA==, tarball: http://npm.dui88.com:80/db-react-helper/-/db-react-helper-1.0.5.tgz}
resolution: {integrity: sha512-J4+DXr/Ah7t+/j96m73WzJ26VUfHzE5MxWj7kS62SV7iKCb5LTTcngWvn4jmpQnF54WAkhOjBt8sY6B+RkDPPA==}
debug@2.6.9:
resolution: {integrity: sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=}
......@@ -2558,7 +2558,7 @@ packages:
engines: {node: '>=12'}
dplayer@1.27.1:
resolution: {integrity: sha512-2laBMXs5V1B9zPwJ7eAIw/OBo+Xjvy03i4GHTk3Cg+IWbrq8rKMFO0fFr6ClAYotYOCcFGOvaJDkOZcgKllsCA==, tarball: http://npm.dui88.com:80/dplayer/-/dplayer-1.27.1.tgz}
resolution: {integrity: sha512-2laBMXs5V1B9zPwJ7eAIw/OBo+Xjvy03i4GHTk3Cg+IWbrq8rKMFO0fFr6ClAYotYOCcFGOvaJDkOZcgKllsCA==}
duiba-utils@1.0.13:
resolution: {integrity: sha512-VEFzmfiujSZcl40jgRhkuv1lAsvLxhfArENFbI1NXxAz9iihdGOH1SdTektWaH5hrwsWvy/6kB088KzxJ+QvtA==}
......@@ -3276,7 +3276,7 @@ packages:
engines: {node: '>=8'}
less-loader@11.1.4:
resolution: {integrity: sha512-6/GrYaB6QcW6Vj+/9ZPgKKs6G10YZai/l/eJ4SLwbzqNTBsAqt5hSLVF47TgsiBxV1P6eAU0GYRH3YRuQU9V3A==, tarball: http://npm.dui88.com:80/less-loader/-/less-loader-11.1.4.tgz}
resolution: {integrity: sha512-6/GrYaB6QcW6Vj+/9ZPgKKs6G10YZai/l/eJ4SLwbzqNTBsAqt5hSLVF47TgsiBxV1P6eAU0GYRH3YRuQU9V3A==}
engines: {node: '>= 14.15.0'}
peerDependencies:
less: ^3.5.0 || ^4.0.0
......@@ -4031,7 +4031,7 @@ packages:
engines: {node: '>=0.4.0'}
promise-polyfill@8.3.0:
resolution: {integrity: sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==, tarball: http://npm.dui88.com:80/promise-polyfill/-/promise-polyfill-8.3.0.tgz}
resolution: {integrity: sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==}
protobufjs@7.5.0:
resolution: {integrity: sha512-Z2E/kOY1QjoMlCytmexzYfDm/w5fKAiRwpSzGtdnXW1zC88Z2yXazHHrOtwCzn+7wSxyE8PYM4rvVcMphF9sOA==}
......@@ -4697,7 +4697,7 @@ packages:
engines: {node: '>=8'}
wrap-ansi@7.0.0:
resolution: {integrity: sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=, tarball: http://npm.dui88.com:80/wrap-ansi/-/wrap-ansi-7.0.0.tgz}
resolution: {integrity: sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=}
engines: {node: '>=10'}
wrap-ansi@8.1.0:
......
......@@ -19,6 +19,8 @@ import LoadingDemo from "@/pages/LoadingDemo/LoadingDemo.tsx";
import GamePage from "@/pages/GamePage/GamePage.tsx";
import HomePage from './pages/HomePage/HomePage.tsx';
import AgentSharepage from './pages/agentSharepage/sharepage.jsx';
import SharePage from './pages/sharepage/sharepage.jsx';
@observer
......@@ -29,7 +31,7 @@ class App extends Component {
const defaultPage = {
myPrize: MyPrize, // TODO 举例子 新宿台奖品页
index: LoadingDemo,
}[skinId] || HomePage;
}[skinId] || GamePage;
PageCtrl.changePage(defaultPage);
}
......
......@@ -105,7 +105,7 @@ const API = generateAPI({
method: "post",
withToken: true,
},
// 推送使用
outside: {
uri: `inviteAssist_1/outside.do`,
......@@ -124,8 +124,6 @@ const API = generateAPI({
showMsg: false,
},
/** 落地页 */
coop_getLoadingInfo: "customInvite1/outside.do",
/** 抽奖首页 */
drawIndex: "draw/index.do",
......@@ -165,18 +163,23 @@ const API = generateAPI({
showMsg: false,
},
/** 绑定友客业务员信息接口 */
bindYk: {
uri: "agent/bindYk.do",
method: "post",
showMsg: false,
},
/** 生成唤端二维码 */
getLongLinkQrcode: `/customActivity/qrcode/getQrcode`,
queryInviteRecords: "inviteAssist_1/queryInviteRecords.do",
/**数据推送 */
visit:`common/visit.do`,
/** 绑定友客业务员信息接口 */
bindYk: {
uri: "common/bindYk.do",
method: "post",
showMsg: false,
},
/** 落地页 */
coop_getLoadingInfo: "common/outside.do",
rankInfo:`zqdn/rankIndex.do`,
})
// console.log('======', API)
......
src/assets/common/close.png

1.54 KB | W: | H:

src/assets/common/close.png

4.78 KB | W: | H:

src/assets/common/close.png
src/assets/common/close.png
src/assets/common/close.png
src/assets/common/close.png
  • 2-up
  • Swipe
  • Onion skin
This diff is collapsed.
......@@ -21,6 +21,7 @@ import dynamicSvga from "../../assets/svga/3输出出奖啊.svga";
// import { LOG_KEY, pageView, sensorLog } from '@src/utils/sensors';
@observer
class Drawpage extends React.Component {
constructor(props) {
......
......@@ -26,13 +26,13 @@ export class Game extends Base {
const qsBg = this.addChild(new Sprite(Assets.get("问题.png")));
qsBg.position.set(49, 316);
this.level = this.addChild(new Level9());
// this.level = this.addChild(new Level9());
gameStore.start();
globalEvent.on(GameEvent.NextLevel, this.nextLevel, this);
// this.nextLevel();
this.nextLevel();
}
......@@ -53,7 +53,7 @@ export class Game extends Base {
this.level.destroy();
}
const cls = LevelArr[levelIdx];
const { cls } = LevelArr[levelIdx];
this.level = this.addChild(new cls());
}
......
......@@ -17,6 +17,9 @@ import gameStore from "@/store/gameStore.ts";
import.meta.env.DEV && initDevtools({});
import bgImg from "../../assets/GamePage/bg.jpg";
import { ModalCtrl } from "@/core/ctrls/ModalCtrl.tsx";
import TipPanel from "@/panels/TipPanel/TipPanel.tsx";
import { LevelArr } from "@/pages/GamePage/Level/LevelConfig.ts";
export function getApp(): Application {
return window["__app"];
......@@ -101,6 +104,10 @@ class GamePage extends React.Component<any, any> {
}
clickTip = () => {
const { levelIndex, levelIdxArr } = gameStore.gameInfo;
const levelIdx = levelIdxArr[levelIndex];
const { tip, cls } = LevelArr[levelIdx];
ModalCtrl.showModal(TipPanel, { tip });
}
render() {
......
......@@ -11,14 +11,29 @@ import { Level23 } from "@/pages/GamePage/Level/Level23.ts";
export const LevelArr = [
Level1,
Level2,
Level3,
Level4,
Level5,
Level7,
Level8,
Level9,
Level14,
Level23,
{ cls: Level1, tip: `5=1` },
{ cls: Level2, tip: `图中一共有9个金币` },
{ cls: Level3, tip: `当然是太阳最高啦` },
{ cls: Level4, tip: `没有什么比猫猫的<br/>左右爪更像了` },
{ cls: Level5, tip: `将蛋黄放在蛋白上<br/>拼出荷包蛋` },
{ cls: Level5, tip: `直接移动最底层的蛋糕` }, // 6
{ cls: Level7, tip: `旋转存钱罐,倒出金币` },
{ cls: Level8, tip: `最深的颜色是题目` },
{ cls: Level9, tip: `移动小鸭子至河边` },
{ cls: Level9, tip: `将“1”移动至等号右边<br/>形成等式` }, // 10
{ cls: Level9, tip: `将冰箱放大至能装够装下<br/>长颈鹿` }, // 11
{ cls: Level9, tip: `掐断烟头` }, // 12
{ cls: Level9, tip: `打开盖子看看` }, // 13
{ cls: Level14, tip: `将香蕉移动到牛奶中<br/>变成香蕉牛奶` },
{ cls: Level14, tip: `猫吃老鼠` }, // 15
{ cls: Level14, tip: `移动笼子罩住小鸭子` }, // 16
{ cls: Level14, tip: `别忘了,人是高等动物哦` }, // 17
{ cls: Level14, tip: `移开乌云露出太阳<br/>让冰块融化` }, // 18
{ cls: Level14, tip: `将冰箱放大至能够装下长颈鹿` }, // 19
{ cls: Level14, tip: `别忘了把题目也装进箱子里` }, // 20
{ cls: Level14, tip: `移动鸡蛋,碰一碰便知` }, // 21
{ cls: Level14, tip: `移开圣诞老人的衣服看看` }, // 22
{ cls: Level23, tip: `当然是一样重` },
{ cls: Level23, tip: `将雪球合在一起滚成大雪球` }, // 24
{ cls: Level23, tip: `按住小猪鼻子,把它憋醒` }, // 25
];
......@@ -10,7 +10,7 @@ import { ModalCtrl } from "@/core/ctrls/ModalCtrl";
import Rulepop from "../../components/rulepop/rulepop.jsx";
import DrawPage from "../DrawPage/DrawPage.jsx";
import store from '@/store/store';
import Taskpop from '@/panels/taskpop/taskpop.js';
import Taskpop from '@/panels/taskpop/taskpop.jsx';
import RankPage from '../RankPage/RankPage.js';
import MyPrize from '../MyPrize/MyPrize.js';
......@@ -40,7 +40,7 @@ class Homepage extends React.Component {
// 0 我的排名
case 0:
// TODO 换成我的排名页面 记得引用
// PageCtrl.changePage();
PageCtrl.changePage(RankPage);
break;
// 1 抽奖
......
......@@ -9,8 +9,8 @@ import { isWeChat } from '@/utils/share';
import store from '@/store/store';
import { ModalCtrl } from '@/core/ctrls/ModalCtrl';
import SignSucPanel from '@/panels/SignSucPanel/SignSucPanel';
import {Axios, AxiosRequestConfig} from 'axios';
import FillAddress from '@/panels/FillAddress/FillAddress';
import {Axios} from 'axios';
import FillAddress from '@/panels/FillAddress/FillAddress.jsx';
const apiAxios = new Axios({
timeout: 10000,
});
......
......@@ -157,6 +157,7 @@
}
&:nth-child(2){
flex:1.5;
.lineClamp1();
}
}
&:nth-child(1){
......
......@@ -8,23 +8,51 @@ import HomePage from '../HomePage/HomePage';
@observer
class RankPage extends React.Component<any, any> {
constructor(props) {
super(props);
this.state={
rankList:[],
myRankInfo:{},
prizeList:[]
}
}
componentDidMount(): void {
this.getRankInfo();
}
getRankInfo = async() =>{
const {success, data} = await API.rankInfo()
if(success){
this.setState({
rankList:data.rankInfos,
myRankInfo:data.myRank,
prizeList:data.rankOptions
})
}
}
clickBack = () => {
PageCtrl.changePage(HomePage);
}
render() {
const {rankList, myRankInfo, prizeList} = this.state;
return <div className="rankPage">
<div className="bg"></div>
<div className="title"></div>
<div className="prizeList">
<div className="prizeItem">
<div className="prizeImg">
<img src="" alt="" />
</div>
<div className="prizeName">奖品奖品奖品奖品奖品</div>
<div className="rank">第1名</div>
</div>
{
(prizeList || []).map((item,index)=>{
return(
<div className="prizeItem" key={index}>
<div className="prizeImg">
<img src={item?.image} alt="" />
</div>
<div className="prizeName">{item?.name}</div>
<div className="rank">{item?.ranking}</div>
</div>
)
})
}
</div>
<div className="rankTitle">
......@@ -33,31 +61,25 @@ class RankPage extends React.Component<any, any> {
<div className="title3">成功组局数/月</div>
</div>
<div className="myRankInfo">
<div className="title1">999+</div>
<div className="title2">用户昵称(我)</div>
<div className="title3">20</div>
<div className="title1">{myRankInfo?.index}</div>
<div className="title2">{myRankInfo?.userName}(我)</div>
<div className="title3">{myRankInfo?.score}</div>
</div>
<div className="rankList">
<div className="rankItem">
<div className="rank"><span></span></div>
<div className="name">11</div>
<div className="score">11</div>
</div>
<div className="rankItem">
<div className="rank"><span></span></div>
<div className="name">11</div>
<div className="score">11</div>
</div>
<div className="rankItem">
<div className="rank"><span></span></div>
<div className="name">11</div>
<div className="score">11</div>
</div>
<div className="rankItem">
<div className="rank">1</div>
<div className="name">11</div>
<div className="score">11</div>
</div>
{
(rankList || []).map((item,index)=>{
return(
<div className="rankItem">
<div className="rank">
{item?.index > 4 ? <span></span> : item?.index}
</div>
<div className="name">{item?.userName}</div>
<div className="score">{item?.score}</div>
</div>
)
})
}
</div>
<span className="back" onClick={this.clickBack}></span>
</div>;
......
'use strict';
import React from 'react';
import { observer } from 'mobx-react';
import './sharepage.less';
import { _throttle, getUrlParam, windowJumpUrl } from '@/utils/utils.ts';
// import { accessLog } from 'duiba-utils';
// import store from '@/store';
import API from '@/api';
import { extranceName } from '@/utils/constants.ts';
// import { handleLogClick, handleLogExposure } from '../../../MD';
import shareStore from '@/store/share.ts';
// import { LOG_KEY, MatterShareOpt, MatterViewDuration, MatterViewOpt, sensorLog } from '@src/utils/sensors';
@observer
class AgentSharepage extends React.Component {
constructor(props) {
super(props);
this.state = {
shareInfo: {}
}
this.startTime = +new Date();
this.shareRef = null;
}
async componentDidMount() {
// MatterViewOpt("b13548", {
// page_name: "非遗-落地页",
// });
// sensorLog(LOG_KEY.exposure, "b13548", "d13549", {
// page_name: "非遗-落地页",
// button_name: "分享活动按钮",
// });
// await store.checkBindStatus();
// await this.getShareInfo();
if (getUrlParam("inviteCode")) {
// handleLogExposure(13)
} else {
// handleLogExposure(20)
}
// setTimeout(() => {
// this.shareRef.scrollTo(0, 70)
// }, 50)
}
componentWillUnmount() {
// MatterViewDuration("b13548", +new Date() - this.startTime, {
// page_name: "非遗-落地页",
// });
}
getShareInfo = async () => {
const { success, data } = await API.coop_getLoadingInfo();
if (success && data) {
this.setState({
shareInfo: data
})
}
}
/** 跳转微信端活动 */
toWeActHandle = () => {
if (getUrlParam("inviteCode")) {
// handleLogClick(13)
} else {
// handleLogClick(20)
}
CFG.workerCode = getUrlParam("ykCode");
let url = CFG.domain + CFG.indexUrl + '&channel=' + CFG.channel + `${!!getUrlParam("inviteCode") ? ("&inviteCode=" + getUrlParam("inviteCode")) : ""}` + `${!!CFG.workerCode ? `&ykCode=${CFG.workerCode}` : ""}`
location.href = url
}
handleShareAct = _throttle(() => {
// MatterShareOpt("b13548", "d13549", {
// button_name: "分享活动按钮",
// page_name: "非遗-落地页",
// entrance: extranceName[CFG.channel],
// })
console.log("share")
shareStore.doShare()
})
render() {
// const { actStartTimestamp, actEndTimestamp } = this.state?.shareInfo || {};
return (
<div className="agentsharepage_wrap" ref={r => this.shareRef = r}>
<div className="sharepage modal_center">
<span className="bg"></span>
<span className="normal_btn md53" onClick={this.handleShareAct}></span>
</div>
</div>
);
}
}
export default AgentSharepage;
@import "../../res.less";
.agentsharepage_wrap {
width: 750px;
height: 100vh;
left: 0px;
top: 0px;
position: absolute;
overflow-y: scroll;
.sharepage {
width: 750px;
height: 1624px;
left: 0px;
top: 0;
position: absolute;
.bg {
width: 750px;
height: 1624px;
left: 0px;
top: 0px;
position: absolute;
.sparkBg("sharepages/bg.jpg");
}
.normal_btn {
left: calc(50% - 545px/2);
top: 1344px;
width: 545px;
height: 154px;
position: absolute;
.sparkBg("sharepages/btn3.png");
}
}
}
\ No newline at end of file
"use strict";
import React from "react";
import { observer } from "mobx-react";
import "./sharepage.less";
import { dateFormatter, getUrlParam, isMiniprogram, windowJumpUrl } from "@/utils/utils.ts";
// import { accessLog } from "duiba-utils";
import store from "@/store/store.ts";
import API from "@/api";
// import { PAGE_MAP } from "@src/utils/constants";
// import modalStore from "@src/store/modal";
// import { handleLogClick, handleLogExposure } from "../../../MD";
// import { LOG_KEY, MatterViewDuration, MatterViewOpt, sensorLog } from "@src/utils/sensors";
@observer
class Sharepage extends React.Component {
constructor(props) {
super(props);
this.state = {
shareInfo: {},
};
this.startTime = +new Date();
this.shareRef = null;
}
async componentDidMount() {
// accessLog(506)
// await store.checkBindStatus();
await this.getShareInfo();
// // sensorLog(LOG_KEY.exposure, "b13548", "d13551", {
// page_name: "非遗-落地页",
// button_name: "进入活动按钮",
// });
// // sensorLog(LOG_KEY.exposure, "b13548", "d13550", {
// page_name: "非遗-落地页",
// button_name: "为TA助力按钮",
// });
// MatterViewOpt("b13548", {
// page_name: "非遗-落地页",
// });
if (getUrlParam("inviteCode")) {
// handleLogExposure(13)
} else {
// handleLogExposure(20)
}
// setTimeout(() => {
// this.shareRef.scrollTo(0, 70)
// }, 50)
}
componentWillUnmount() {
}
getShareInfo = async () => {
const { success, data } = await API.coop_getLoadingInfo();
if (success && data) {
this.setState({
shareInfo: data,
});
}
// if (!data?.validUid) {
// modalStore.pushPop("Loginpop")
// }
};
/** 跳转微信端活动 */
toWeActHandle = () => {
console.warn("toWeActHandle")
if (getUrlParam("inviteCode")) {
// handleLogClick(13)
// // sensorLog(LOG_KEY.click, "b13548", "d13550", {
// page_name: "非遗-落地页",
// button_name: "为TA助力按钮",
// });
} else {
// // sensorLog(LOG_KEY.click, "b13548", "d13551", {
// page_name: "非遗-落地页",
// button_name: "进入活动按钮",
// });
// handleLogClick(20)
}
CFG.workerCode = getUrlParam("ykCode");
if (isMiniprogram()) { //小程序域名写死
CFG.domain = "https://96094-activity.dexfu.cn";
} else {
CFG.domain = location.origin
}
let url =
CFG.domain +
CFG.indexUrl +
"&channel=" +
CFG.channel +
`${!!getUrlParam("inviteCode") ? "&inviteCode=" + getUrlParam("inviteCode") : ""}` +
`${!!CFG.workerCode ? `&ykCode=${CFG.workerCode}` : ""}` +
`&agentCode=${CFG.agentCode || ""}&actPlatforms=${CFG.actPlatforms || ""}&actId=${CFG.actId || ""}`;
// alert(url)
// MatterViewDuration("b13548", +new Date() - this.startTime, {
// page_name: "非遗-落地页",
// });
setTimeout(() => {
location.href = url;
}, 500)
};
render() {
const { actStartTimestamp, actEndTimestamp } = this.state?.shareInfo || {};
return (
<div className="sharepage_wrap" ref={(r) => (this.shareRef = r)}>
<div className="sharepage modal_center">
<span className="bg"></span>
{/* <span className="time">
活动时间:{dateFormatter(actStartTimestamp, "yyyy年MM月dd日")}-{dateFormatter(actEndTimestamp, "MM月dd日")}
</span> */}
{
getUrlParam("inviteCode") && <div className="tips"></div>
}
{getUrlParam("inviteCode") ? <span className="assist_btn md55"></span> : <span className="normal_btn md54"></span>}
<span className="click_area" onClick={() => this.toWeActHandle()}></span>
{/* <span className="hand"></span> */}
{/* <span className="logo"></span> */}
</div>
</div>
);
}
}
export default Sharepage;
@import "../../res.less";
.sharepage_wrap {
width: 750px;
height: 100vh;
left: 0px;
top: 0px;
position: absolute;
overflow-y: scroll;
.sharepage {
width: 750px;
height: 1624px;
left: 0px;
top: 0;
position: absolute;
.bg {
width: 750px;
height: 1624px;
left: 0px;
top: 0px;
position: absolute;
.sparkBg("sharepages/bg.jpg");
}
.time {
width: 600px;
height: 40px;
left: calc(50% - 300px);
top: 380px;
position: absolute;
color: #fff;
font-size: 24px;
font-weight: 600;
text-align: center;
}
.title {
left: 93px;
top: 236px;
width: 559px;
height: 198px;
position: absolute;
.sparkBg("homePage/title.png");
}
.enter_btn {
width: 378px;
height: 135px;
left: 200px;
top: 1158px;
position: absolute;
.sparkBg("sharePage/btn.png");
}
.assist_btn {
left: calc(50% - 545px/2);
top: 1344px;
width: 545px;
height: 154px;
position: absolute;
.sparkBg("sharepages/btn1.png");
}
.normal_btn {
left: calc(50% - 545px/2);
top: 1344px;
width: 545px;
height: 154px;
position: absolute;
.sparkBg("sharepages/btn2.png");
}
.tips {
left: 17px;
top: 980px;
width: 390px;
height: 163px;
position: absolute;
.sparkBg("sharepages/tips.png");
}
.click_area {
left: calc(50% - 545px/2);
top: 1344px;
width: 545px;
height: 154px;
position: absolute;
}
.hand {
position: absolute;
left: 557px;
top: 1352px;
width: 121px;
height: 94px;
.sparkBg("sharePage/hand.png");
pointer-events: none;
}
.logo {
width: 318px;
height: 31px;
left: calc(50% - 159px);
top: 190px;
position: absolute;
.sparkBg("homePage/logo.png");
}
}
}
\ No newline at end of file
......@@ -4,14 +4,14 @@ import "./FillAddress.less";
import { REG_TEL, _throttle } from "@/utils/utils.ts";
import { Toast } from "@grace/ui";
import { ModalCtrl } from "@/core/ctrls/ModalCtrl";
import {Axios, AxiosRequestConfig} from 'axios';
import Selectmodal from "../selectmodal/selectmodal";
import {Axios} from 'axios';
import Selectmodal from "../selectmodal/selectmodal.jsx";
const apiAxios = new Axios({
timeout: 10000,
});
// wzjTODO 换皮
@observer
class FillAddress extends React.Component<any, any> {
class FillAddress extends React.Component {
fillMd=false
state = {
name: "",
......
@import "../../res.less";
.SignSucPanel {
.TipPanel {
width: 750px;
height: 1624px;
position: absolute;
left: 0;
top: 0;
.bgEffect {
width: 750px;
height: 1624px;
position: absolute;
left: 0;
top: 0;
}
.bg {
position: absolute;
left: 0;
top: 397px;
width: 750px;
height: 741px;
.webpBg("SignSucPanel/bg.png");
left: 105px;
top: 491px;
width: 593px;
height: 475px;
.webpBg("TipPanel/bg.png");
}
.title {
.text {
position: absolute;
left: 138px;
top: 306px;
width: 384px;
height: 84px;
.webpBg("SignSucPanel/签到成功.png");
}
.normal {
.tip {
font-family: "zzgfyht";
font-size: 53.62px;
color: #8f2245;
position: absolute;
left: 0;
top: 485px;
width: 100%;
text-align: center;
}
top: 550px;
width: 464px;
height: 215px;
.img {
position: absolute;
left: 245px;
top: 583px;
width: 263px;
height: 253px;
.webpBg("SignSucPanel/金币堆.png");
}
}
.vip {
color: #8f2245;
font-size: 36px;
color: rgb(153, 57, 27);
font-weight: bold;
text-align: center;
font-family: "zzgfyht";
.tip {
font-size: 54.52px;
position: absolute;
left: 0;
top: 481px;
width: 100%;
text-align: center;
}
.left {
position: absolute;
left: 105px;
top: 581px;
width: 300px;
font-size: 43.19px;
}
.right {
position: absolute;
left: 340px;
top: 581px;
width: 300px;
font-size: 43.19px;
}
.img {
position: absolute;
left: 168px;
top: 643px;
width: 402px;
height: 184px;
.webpBg("SignSucPanel/会员金币堆.png");
}
display: flex;
align-items: center;
justify-content: center;
}
.btn {
position: absolute;
left: 164px;
top: 925px;
width: 420px;
height: 123px;
.webpBg("SignSucPanel/按钮.png");
left: 244px;
top: 766px;
width: 263px;
height: 92px;
.webpBg("TipPanel/btn.png");
}
.close {
position: absolute;
left: 336px;
top: 1194px;
width: 79px;
height: 79px;
left: 343px;
top: 1058px;
width: 64px;
height: 64px;
.webpBg("common/close.png");
}
......
......@@ -2,7 +2,6 @@ import React from "react";
import {observer} from "mobx-react";
import "./TipPanel.less";
import {Button} from "@grace/ui";
import {_asyncThrottle} from "@/utils/utils.ts";
import { ModalCtrl } from "@/core/ctrls/ModalCtrl.tsx";
export interface ITipPanelProps {
......@@ -19,16 +18,18 @@ class TipPanel extends React.Component<ITipPanelProps> {
ModalCtrl.closeModal();
};
clickBtn = _asyncThrottle(async () => {
clickBtn = () => {
ModalCtrl.closeModal();
});
};
render() {
const { tip } = this.props;
return <div className="SignSucPanel modal_center">
return <div className="TipPanel modal_center">
<div className="bg"/>
<div></div>
<div className="text" dangerouslySetInnerHTML={{
__html: tip,
}}/>
<Button className="btn" onClick={this.clickBtn}/>
<Button className="close" onClick={this.clickClose}/>
</div>;
......
......@@ -5,12 +5,11 @@ import { observer } from 'mobx-react';
import './taskpop.less';
import { unwatchPageVisibility, watchPageVisibility } from '@/core/page-visibility-notify.ts';
// import { handleLogClick, handleLogExposure } from '../../../MD';
import { RES_PATH } from '../../../sparkrc';
import { _throttle } from '../../utils/utils';
// import { RES_PATH } from '../../../sparkrc';
import { _throttle } from '../../utils/utils.ts';
import { TASK_CODE,CHANNEL_PARAMS } from '../../utils/constants.ts';
import { setCookies } from '../../store/fetcher';
import taskStore from '../../store/task';
import store from '../../store';
import { setCookies } from '../../store/fetcher.ts';
import taskStore from '../../store/task.ts';
// import { LOG_KEY, MatterShareOpt, MatterViewOpt, pageView, sensorLog } from '../../utils/sensors';
import { ModalCtrl } from '@/core/ctrls/ModalCtrl';
import { Button } from '@grace/ui';
......
......@@ -40,9 +40,9 @@
}
.list {
width: 730px;
height: 843px;
height: 873px;
left: 50px;
top: 210px;
top: 190px;
position: absolute;
overflow-y: scroll;
.item {
......
This diff is collapsed.
......@@ -88,6 +88,8 @@ class Store {
return;
}
this.indexData = data;
}
/**
......@@ -164,6 +166,12 @@ class Store {
history.replaceState({}, '', location.href.replace(new RegExp(`[?&]inviteCode=[^&]*`), ''));
}
async bindYkCode(code) {
const res = await API.bindYk({
code: code,
});
return res;
}
}
export default (new Store());
......@@ -3,14 +3,14 @@ import API from "../api/index";
import store from "./store";
// import modalStore from "./modal";
import { saveCookies, setCookies } from "./fetcher";
// import shareStore from "./share";
import shareStore from "./share";
// import { handleLogClick } from "../../MD";
import { isWeChat } from "../utils/share";
import { appJump, getUrlParam, windowJumpUrl } from "../utils/utils";
import { CHANNEL_PARAMS, TASK_CODE } from "../utils/constants";
import { Toast } from "@grace/ui";
import { ModalCtrl } from "@/core/ctrls/ModalCtrl";
import LongImgPop from "@/panels/longImgPop/longImgPop";
import LongImgPop from "@/panels/longImgPop/longImgPop.jsx";
const taskStore = makeAutoObservable({
/** 当前任务 */
......@@ -47,7 +47,7 @@ const taskStore = makeAutoObservable({
//邀请
case code == TASK_CODE.INVITE:
console.info("邀请任务");
// const res = await shareStore.doInvite();
const res = await shareStore.doInvite();
// modalStore.pushPop("Shareposter", { qrCode: res }, true);
break;
//增员介绍 海报or视频
......
/** 判断微信环境 */
export function isWeChat() {
if (typeof window === 'undefined') return false
import {
start,
updateShare,
callShare,
Weixin,
} from "@spark/share"
/**
* @description: 小程序跳转
* @param {*}
* @return {*}
*/
export const miniGoUrl = (url) => {
wx.miniProgram.navigateTo({ url: url });
}
/**
* 判断是否为ios系统
*/
export function isIos() {
return navigator.userAgent.match(/iphone|ipod|ipad/gi)
}
/** 判断微信环境 */
export function isWeChat() {
const ua = window.navigator.userAgent.toLowerCase()
return ua.includes('micromessenger')
}
return ua.match(/MicroMessenger/i) == 'micromessenger'
}
/**
* 初始化分享
*/
export async function onInitShare(cb) {
await start([Weixin], function (success) {
console.log("share result:----", success)
cb && cb()
})
}
/**
* 更新分享
* @param {*} shareParams
* @param {*} justUpdate
*/
export function onUpdateShare(shareParams) {
console.info("更新分享", shareParams)
updateShare(shareParams)
}
/**
* 被动分享 - 北京银行
* @param {*} shareParams
*/
export function onCallShare(shareParams) {
console.info("分享链接", shareParams)
callShare(shareParams);
}
/**
* @description: 分享处理中心
* @param {Object} 分享信息
*/
export const requireShare = (opts) => {
const shareData = {
title: opts.shareTitle,
content: opts.shareContent,
url: opts.shareUrl,
images: [{ image: opts.shareThumbnail, type: "url" }],
};
console.log('分享数据', opts);
const shareStr = JSON.stringify(shareData);
return shareStr;
};
/**
* @description: 小程序分享
* @param {*}
* @return {*}
*/
export const miniDoShare = (opts) => {
console.log(opts);
wx.miniProgram.postMessage({
data: {
title: opts.title, // 标题
desc: opts.desc, // 描述
imgUrl: opts.imgUrl, // 图片
link: opts.link // 链接
}
});
}
\ 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