Commit 6068da2c authored by qimiao's avatar qimiao

replace index

parent 977cf24c
src/assets/drawPage/draw_btn.png

75.5 KB | W: | H:

src/assets/drawPage/draw_btn.png

49.3 KB | W: | H:

src/assets/drawPage/draw_btn.png
src/assets/drawPage/draw_btn.png
src/assets/drawPage/draw_btn.png
src/assets/drawPage/draw_btn.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/drawPage/title.png

111 KB | W: | H:

src/assets/drawPage/title.png

118 KB | W: | H:

src/assets/drawPage/title.png
src/assets/drawPage/title.png
src/assets/drawPage/title.png
src/assets/drawPage/title.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/drawPage/turntable_bg.png

91.9 KB | W: | H:

src/assets/drawPage/turntable_bg.png

51.3 KB | W: | H:

src/assets/drawPage/turntable_bg.png
src/assets/drawPage/turntable_bg.png
src/assets/drawPage/turntable_bg.png
src/assets/drawPage/turntable_bg.png
  • 2-up
  • Swipe
  • Onion skin
'use strict'; "use strict";
import React from 'react'; import React from "react";
import { observer } from 'mobx-react'; import { observer } from "mobx-react";
import './drawpage.less'; import "./drawpage.less";
import API from '@src/api'; import API from "@src/api";
import { _asyncThrottle, _throttle } from '@src/utils/utils'; import { _asyncThrottle, _throttle } from "@src/utils/utils";
import modalStore from '@src/store/modal'; import modalStore from "@src/store/modal";
import store from '@src/store'; import store from "@src/store";
import { PAGE_MAP } from '@src/utils/constants'; import { PAGE_MAP } from "@src/utils/constants";
import { CircleTurntable } from '@spark/circle-turntable' import { CircleTurntable } from "@spark/circle-turntable";
import { pageLeave, sensorMdClick, sensorMdExpouse } from '@src/utils/sensorMd'; import { pageLeave, sensorMdClick, sensorMdExpouse } from "@src/utils/sensorMd";
import { Button } from '@src/components/Button'; import { Button } from "@src/components/Button";
@observer @observer
class Drawpage extends React.Component { class Drawpage extends React.Component {
...@@ -18,119 +18,120 @@ class Drawpage extends React.Component { ...@@ -18,119 +18,120 @@ class Drawpage extends React.Component {
super(props); super(props);
this.state = { this.state = {
drawInfo: {}, drawInfo: {},
} };
this.btnStarting = false // 转盘是否启动 this.btnStarting = false; // 转盘是否启动
this.turntableRef = null // 大转盘 this.turntableRef = null; // 大转盘
this.drawResultInfo = {} this.drawResultInfo = {};
} }
async componentDidMount() { async componentDidMount() {
await this.getDrawInfo() await this.getDrawInfo();
sensorMdExpouse("activityPage", { pageName: "抽奖页", follow_action: this.props?.is_from == 'result' ? 4 : 2 }); sensorMdExpouse("activityPage", { pageName: "抽奖页", follow_action: this.props?.is_from == "result" ? 4 : 2 });
pageLeave("抽奖页", 5); pageLeave("抽奖页", 5);
} }
/** 获取转盘信息 */ /** 获取转盘信息 */
getDrawInfo = async () => { getDrawInfo = async () => {
const { success, data } = await API.drawIndex() const { success, data } = await API.drawIndex();
if (success && data) { if (success && data) {
this.setState({ this.setState({
drawInfo: data || {}, drawInfo: data || {},
}) });
} }
} };
// 开始抽奖 // 开始抽奖
lottteryHandle = _asyncThrottle(async () => { lottteryHandle = _asyncThrottle(async () => {
const { actPrizeList, remainDrawTimes } = this.state.drawInfo const { actPrizeList, remainDrawTimes } = this.state.drawInfo;
sensorMdClick("activityClick", { pageName: "抽奖页点击", buttonName: "开始抽奖" }); sensorMdClick("activityClick", { pageName: "抽奖页点击", buttonName: "开始抽奖" });
// 无抽奖次数 // 无抽奖次数
if (!remainDrawTimes) { if (!remainDrawTimes) {
return modalStore.pushPop("Drawchancepop", { return modalStore.pushPop("Drawchancepop", {
refresh: () => this.getDrawInfo() refresh: () => this.getDrawInfo(),
}) });
} }
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.drawResultInfo = data || {} this.drawResultInfo = data || {};
// 转盘停止转动,指针停在index // 转盘停止转动,指针停在index
const index = actPrizeList?.findIndex(item => item.prizeId === this.drawResultInfo.prizeId) const index = actPrizeList?.findIndex((item) => item.prizeId === this.drawResultInfo.prizeId);
console.info('index', index) console.info("index", index);
// !important 注意:randomOffset设置为false,这样每次旋转的偏移量就不是随机滴啦 // !important 注意:randomOffset设置为false,这样每次旋转的偏移量就不是随机滴啦
this.turntableRef.braking(index, { immediately: false, randomOffset: false }); this.turntableRef.braking(index, { immediately: false, randomOffset: false });
} else { } else {
this.btnStarting = false this.btnStarting = false;
this.getDrawInfo() this.getDrawInfo();
} }
}) });
// 转盘停止处理 // 转盘停止处理
stopOkHandle = () => { stopOkHandle = () => {
this.btnStarting = false this.btnStarting = false;
if (this.drawResultInfo?.prizeId == "thanks") { if (this.drawResultInfo?.prizeId == "thanks") {
modalStore.pushPop("Drawfailpop") modalStore.pushPop("Drawfailpop");
} else { } else {
modalStore.pushPop("Drawsucpop", { ...this.drawResultInfo }) modalStore.pushPop("Drawsucpop", { ...this.drawResultInfo });
} }
this.getDrawInfo(); this.getDrawInfo();
} };
/** 返回 */ /** 返回 */
backHome = _throttle(() => { backHome = _throttle(() => {
if (this.btnStarting) return false if (this.btnStarting) return false;
store.changePage(PAGE_MAP.HOME_PAGE) store.changePage(PAGE_MAP.HOME_PAGE);
}) });
/** 奖品 */ /** 奖品 */
prizeHandle = _throttle(async () => { prizeHandle = _throttle(async () => {
if (this.btnStarting) return false if (this.btnStarting) return false;
if (!store.checkActStatus(true)) return if (!store.checkActStatus(true)) return;
sensorMdClick("activityClick", { pageName: "抽奖页点击", buttonName: "奖品" }); sensorMdClick("activityClick", { pageName: "抽奖页点击", buttonName: "奖品" });
location.href = CFG.prize; location.href = CFG.prize;
}) });
/** 规则 */ /** 规则 */
ruleHandle = _throttle(async () => { ruleHandle = _throttle(async () => {
if (this.btnStarting) return false if (this.btnStarting) return false;
if (!store.checkActStatus(true)) return if (!store.checkActStatus(true)) return;
sensorMdClick("activityClick", { pageName: "抽奖页点击", buttonName: "规则" }); sensorMdClick("activityClick", { pageName: "抽奖页点击", buttonName: "规则" });
modalStore.pushPop("Rulepop") modalStore.pushPop("Rulepop");
}) });
/** 任务 */ /** 任务 */
taskHandle = _throttle(() => { taskHandle = _throttle(() => {
if (this.btnStarting) return false if (this.btnStarting) return false;
if (!store.checkActStatus()) return if (!store.checkActStatus()) return;
sensorMdClick("activityClick", { pageName: "抽奖页点击", buttonName: "做任务" }); sensorMdClick("activityClick", { pageName: "抽奖页点击", buttonName: "做任务" });
modalStore.pushPop("Taskpop", { modalStore.pushPop("Taskpop", {
refresh: () => this.getDrawInfo() refresh: () => this.getDrawInfo(),
}) });
}) });
render() { render() {
const { actPrizeList, remainDrawTimes } = this.state.drawInfo const { actPrizeList, remainDrawTimes } = this.state.drawInfo;
return ( return (
<div className="drawpage modal_center"> <div className="drawpage modal_center">
<span className="beiJing"></span> <span className="beiJing"></span>
<div className="rule_prize"></div>
<span className="title"></span> <span className="title"></span>
<div className="subtitle"> {/* <div className="subtitle">
<span className="subtitle_bg"></span> <span className="subtitle_bg"></span>
<span className="subtitle_text">测一测你的端午专属人设</span> <span className="subtitle_text">测一测你的端午专属人设</span>
</div> </div> */}
<div className="turntable"> <div className="turntable">
<span className="turntable_box_bg"></span> <span className="turntable_box_bg"></span>
<CircleTurntable <CircleTurntable
className="turntable_box" className="turntable_box"
ref={ref => this.turntableRef = ref} ref={(ref) => (this.turntableRef = ref)}
options={actPrizeList || []} options={actPrizeList || []}
angleOffset={23} // 角度偏移量 angleOffset={23} // 角度偏移量
radian={80} // 奖项半径 radian={80} // 奖项半径
launchDuration={1000} // 启动时间 launchDuration={1000} // 启动时间
brakingDuration={0} brakingDuration={0}
maxSpeed={18} maxSpeed={18}
// 大转盘背景 // 大转盘背景
...@@ -139,23 +140,24 @@ class Drawpage extends React.Component { ...@@ -139,23 +140,24 @@ class Drawpage extends React.Component {
renderStartButton={<></>} renderStartButton={<></>}
// 渲染奖品信息 // 渲染奖品信息
renderOption={(option) => { renderOption={(option) => {
return <div className="prize_item"> return (
<div className="prize_name">{option.prizeName}</div> <div className="prize_item">
<img className="prize_img" src={option.prizeImg} alt="" /> <div className="prize_name">{option.prizeName}</div>
</div> <img className="prize_img" src={option.prizeImg} alt="" />
</div>
);
}} }}
didStop={this.stopOkHandle} didStop={this.stopOkHandle}
/> />
<span className="pointer"></span> <span className="pointer"></span>
<span className="cloud"></span> {/* <span className="cloud"></span> */}
</div> </div>
<Button className="back" onClick={this.backHome} /> <Button className="back" onClick={this.backHome} />
<Button className="rule_btn" onClick={this.ruleHandle}></Button> <Button className="rule_btn" onClick={this.ruleHandle}></Button>
<Button className="prize_btn" onClick={this.prizeHandle}></Button> <Button className="prize_btn" onClick={this.prizeHandle}></Button>
<Button className="task_btn" onClick={this.taskHandle}></Button> <Button className="task_btn" onClick={this.taskHandle}></Button>
<div className="draw_btn md10" onClick={this.lottteryHandle}> <div className="draw_btn md10" onClick={this.lottteryHandle}></div>
<span className="left_num">剩余次数:{remainDrawTimes || 0}</span> <span className="left_num">剩余次数:{remainDrawTimes || 0}</span>
</div>
</div> </div>
); );
} }
......
...@@ -13,6 +13,14 @@ ...@@ -13,6 +13,14 @@
position: absolute; position: absolute;
.sparkBg("drawPage/bg.png"); .sparkBg("drawPage/bg.png");
} }
.rule_prize {
position: absolute;
left: 558px;
top: 227px;
width: 174px;
height: 44px;
.sparkBg("homePage/rule_prize.png");
}
.back { .back {
width: 64px; width: 64px;
height: 65px; height: 65px;
...@@ -22,55 +30,56 @@ ...@@ -22,55 +30,56 @@
.sparkBg("common/back.png"); .sparkBg("common/back.png");
} }
.rule_btn { .rule_btn {
width: 95*1.2px; width: 87px;
height: 44*1.2px; height: 44px;
left: 0px; left: 558px;
top: 405px; top: 227px;
position: absolute; position: absolute;
.sparkBg("drawPage/rule_btn.png");
transform-origin: 0% 50%; transform-origin: 0% 50%;
border-radius: 22px 0 0 22px;
} }
.prize_btn { .prize_btn {
width: 92*1.2px; width: 87px;
height: 44*1.2px; height: 44px;
right: 0px; left: 645px;
top: 405px; top: 227px;
position: absolute; position: absolute;
.sparkBg("drawPage/prize_btn.png");
transform-origin: 100% 50%; transform-origin: 100% 50%;
border-radius: 0 22px 22px 0;
} }
.task_btn { .task_btn {
width: 160px; left: 603px;
height: 202px; top: 1260px;
left: 590px; width: 120px;
top: 1252px; height: 129px;
position: absolute; position: absolute;
.sparkBg("drawPage/task_btn.png"); .sparkBg("homePage/task_btn.png");
} }
.draw_btn { .draw_btn {
width: 428px; left: 182px;
height: 133px; top: 1291px;
left: 167px; width: 387px;
top: 1281px; height: 135px;
position: absolute; position: absolute;
.sparkBg("drawPage/draw_btn.png"); .sparkBg("drawPage/draw_btn.png");
.left_num { }
width: 420px; .left_num {
height: 22px; width: 100%;
left: 8px; height: 26px;
top: 96px; left: 0;
position: absolute; top: 1440px;
text-align: center; position: absolute;
font-size: 22px; text-align: center;
line-height: 22px; font-size: 26px;
color: rgb(249, 252, 206); line-height: 26px;
} color: rgb(249, 252, 206);
text-align: center;
} }
.title { .title {
width: 565px; left: 76px;
height: 152px; top: 283px;
left: 91px; width: 600px;
top: 204px; height: 182px;
position: absolute; position: absolute;
.sparkBg("drawPage/title.png"); .sparkBg("drawPage/title.png");
} }
...@@ -101,15 +110,15 @@ ...@@ -101,15 +110,15 @@
} }
} }
.turntable { .turntable {
width: 704px; width: 750px;
height: 1022px; height: 843px;
left: 14px; left: 0px;
top: 260px; top: 462px;
position: absolute; position: absolute;
.turntable_box_bg { .turntable_box_bg {
width: 627px; width: 750px;
height: 1022px; height: 843px;
left: 60px; left: 0px;
top: 0px; top: 0px;
position: absolute; position: absolute;
.sparkBg("drawPage/turntable_box.png"); .sparkBg("drawPage/turntable_box.png");
...@@ -117,8 +126,8 @@ ...@@ -117,8 +126,8 @@
.turntable_box { .turntable_box {
width: 519px; width: 519px;
height: 521px; height: 521px;
left: 115px; left: 110px;
top: 261px; top: 70px;
position: absolute; position: absolute;
} }
.turntable_bg { .turntable_bg {
...@@ -153,9 +162,9 @@ ...@@ -153,9 +162,9 @@
width: 128px; width: 128px;
height: 139px; height: 139px;
left: 312px; left: 312px;
top: 447px; top: 260px;
position: absolute; position: absolute;
.sparkBg("drawPage/pointer.png"); .sparkBg("drawPage/turntable_btn.png");
} }
.cloud { .cloud {
width: 704px; width: 704px;
......
...@@ -22,7 +22,7 @@ class Homepage extends React.Component { ...@@ -22,7 +22,7 @@ class Homepage extends React.Component {
} }
async componentDidMount() { async componentDidMount() {
// modalStore.pushPop("Bindpop");
await store.getHomeInfo(); await store.getHomeInfo();
// 初始化神策埋点 得在首页接口之后 首页接口会打上业务员绑定标记 // 初始化神策埋点 得在首页接口之后 首页接口会打上业务员绑定标记
await store.initSensorsMd(); await store.initSensorsMd();
...@@ -89,9 +89,8 @@ class Homepage extends React.Component { ...@@ -89,9 +89,8 @@ class Homepage extends React.Component {
<Button className="share_btn md3" onClick={this.doShare}></Button> <Button className="share_btn md3" onClick={this.doShare}></Button>
<Button className="task_btn md6" onClick={this.openTask}></Button> <Button className="task_btn md6" onClick={this.openTask}></Button>
<Button className="draw_btn md4" onClick={this.goDraw}></Button> <Button className="draw_btn md4" onClick={this.goDraw}></Button>
<div className="main_btn md5" onClick={this.goTest}> <div className="main_btn md5" onClick={this.goTest}></div>
{/* <span className="test_times">剩余次数:{store.homeInfo?.remainAnswerTimes || 0}</span> */} <span className="test_times">剩余次数:{store.homeInfo?.remainAnswerTimes || 0}</span>
</div>
{/* <span className="title"></span> */} {/* <span className="title"></span> */}
<SvgaPlayer className="home_svga" src={RES_PATH + "svga/home.svga"} /> <SvgaPlayer className="home_svga" src={RES_PATH + "svga/home.svga"} />
{/* <div className="subtitle"> {/* <div className="subtitle">
......
...@@ -56,17 +56,18 @@ ...@@ -56,17 +56,18 @@
position: absolute; position: absolute;
.sparkBg("homePage/main_btn.png"); .sparkBg("homePage/main_btn.png");
.breathAnimation(); .breathAnimation();
.test_times { }
width: 422px; .test_times {
height: 22px; width: 100%;
left: 7px; height: 26px;
top: 98px; left: 0;
position: absolute; top: 1440px;
text-align: center; position: absolute;
font-size: 22px; text-align: center;
line-height: 22px; font-size: 26px;
color: rgb(249, 252, 206); line-height: 26px;
} color: rgb(249, 252, 206);
text-align: center;
} }
.title { .title {
width: 565px; width: 565px;
......
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