Commit b32c1978 authored by 徐士卿's avatar 徐士卿

merge

parent 9a3be8c6
src/assets/CodePop/bg.png

151 KB | W: | H:

src/assets/CodePop/bg.png

145 KB | W: | H:

src/assets/CodePop/bg.png
src/assets/CodePop/bg.png
src/assets/CodePop/bg.png
src/assets/CodePop/bg.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/CodePop/code.png

1.64 KB | W: | H:

src/assets/CodePop/code.png

2.89 KB | W: | H:

src/assets/CodePop/code.png
src/assets/CodePop/code.png
src/assets/CodePop/code.png
src/assets/CodePop/code.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/LoginPop/bg.png

140 KB | W: | H:

src/assets/LoginPop/bg.png

119 KB | W: | H:

src/assets/LoginPop/bg.png
src/assets/LoginPop/bg.png
src/assets/LoginPop/bg.png
src/assets/LoginPop/bg.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/LoginPop/canSubmitBtn.png

9.75 KB | W: | H:

src/assets/LoginPop/canSubmitBtn.png

18.5 KB | W: | H:

src/assets/LoginPop/canSubmitBtn.png
src/assets/LoginPop/canSubmitBtn.png
src/assets/LoginPop/canSubmitBtn.png
src/assets/LoginPop/canSubmitBtn.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/LoginPop/cannotSubmit.png

6.98 KB | W: | H:

src/assets/LoginPop/cannotSubmit.png

16.5 KB | W: | H:

src/assets/LoginPop/cannotSubmit.png
src/assets/LoginPop/cannotSubmit.png
src/assets/LoginPop/cannotSubmit.png
src/assets/LoginPop/cannotSubmit.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/NoPrizeCard/exchange.png

2.25 KB | W: | H:

src/assets/NoPrizeCard/exchange.png

1.7 KB | W: | H:

src/assets/NoPrizeCard/exchange.png
src/assets/NoPrizeCard/exchange.png
src/assets/NoPrizeCard/exchange.png
src/assets/NoPrizeCard/exchange.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/NoPrizeCard/picture2.png

3.34 KB | W: | H:

src/assets/NoPrizeCard/picture2.png

39.7 KB | W: | H:

src/assets/NoPrizeCard/picture2.png
src/assets/NoPrizeCard/picture2.png
src/assets/NoPrizeCard/picture2.png
src/assets/NoPrizeCard/picture2.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/NoPrizeCard/text1.png

6.06 KB | W: | H:

src/assets/NoPrizeCard/text1.png

13 KB | W: | H:

src/assets/NoPrizeCard/text1.png
src/assets/NoPrizeCard/text1.png
src/assets/NoPrizeCard/text1.png
src/assets/NoPrizeCard/text1.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/NoPrizeCard/text2.png

5.68 KB | W: | H:

src/assets/NoPrizeCard/text2.png

16.6 KB | W: | H:

src/assets/NoPrizeCard/text2.png
src/assets/NoPrizeCard/text2.png
src/assets/NoPrizeCard/text2.png
src/assets/NoPrizeCard/text2.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/NoPrizeCard/text3.png

5.26 KB | W: | H:

src/assets/NoPrizeCard/text3.png

12.8 KB | W: | H:

src/assets/NoPrizeCard/text3.png
src/assets/NoPrizeCard/text3.png
src/assets/NoPrizeCard/text3.png
src/assets/NoPrizeCard/text3.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/NoPrizeCard/text4.png

5.34 KB | W: | H:

src/assets/NoPrizeCard/text4.png

13.5 KB | W: | H:

src/assets/NoPrizeCard/text4.png
src/assets/NoPrizeCard/text4.png
src/assets/NoPrizeCard/text4.png
src/assets/NoPrizeCard/text4.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -50,7 +50,7 @@ class CodePop extends React.Component { ...@@ -50,7 +50,7 @@ class CodePop extends React.Component {
render() { render() {
const {codeImg} = this.state; const {codeImg} = this.state;
return <div className="CodePop modal_center"> return <div className="CodePop">
<div className="light"/> <div className="light"/>
<div className="bg"> <div className="bg">
<img className="code" src={codeImg}/> <img className="code" src={codeImg}/>
......
...@@ -18,28 +18,28 @@ ...@@ -18,28 +18,28 @@
.bg { .bg {
position: absolute; position: absolute;
left: 99px; left: 96px;
top: 358px; top: 358px;
width: 553px; width: 593px;
height: 721px; height: 672px;
.sparkBg("CodePop/bg.png") .sparkBg("CodePop/bg.png")
} }
.code { .code {
position: absolute; position: absolute;
left: 146px; left: 146px;
top: 371px; top: 240px;
width: 261px; width: 254px;
height: 261px; height: 254px;
//.sparkBg("CodePop/code.png") //.sparkBg("CodePop/code.png")
} }
.close { .close {
position: absolute; position: absolute;
left: 345px; left: 343px;
top: 1122px; top: 1040px;
width: 60px; width: 64px;
height: 60px; height: 64px;
.sparkBg("common/closeBtn.png") .sparkBg("CodePop/close.png")
} }
} }
\ No newline at end of file
import React from "react"; import React from "react";
import {observer} from "mobx-react"; import {observer} from "mobx-react";
import "./LoginPop.less"; import "./LoginPop.less";
import {Button} from "@src/components/Button"; import {REG_TEL, _asyncThrottle, getUrlParam} from "../../utils/utils";
import {Toast} from "@spark/ui"; import { LOG_KEY, pageView, sensorLog } from "../../utils/sensors.js";
import API from "@src/api"; import { Button, Toast } from "@grace/ui";
import {_asyncThrottle, getUrlParam} from "@src/utils/utils"; import API from "../../api";
import {REG_TEL} from "@src/utils/constants";
import modalStore from "@src/store/modal";
import {LOG_KEY, pageView, sensorLog} from "@src/utils/sensors";
@observer @observer
class LoginPop extends React.Component { class LoginPop extends React.Component {
...@@ -60,10 +58,10 @@ class LoginPop extends React.Component { ...@@ -60,10 +58,10 @@ class LoginPop extends React.Component {
const {phone} = this.state; const {phone} = this.state;
if (!phone) { if (!phone) {
return Toast("请输入手机号"); return Toast.show("请输入手机号");
} }
if (!REG_TEL.test(phone)) { if (!REG_TEL.test(phone)) {
return Toast("请输入正确的手机号~"); return Toast.show("请输入正确的手机号~");
} }
await this.getCode(phone); await this.getCode(phone);
}); });
...@@ -76,15 +74,15 @@ class LoginPop extends React.Component { ...@@ -76,15 +74,15 @@ class LoginPop extends React.Component {
const {phone, code} = this.state; const {phone, code} = this.state;
if (!phone) { if (!phone) {
return Toast("请输入手机号"); return Toast.show("请输入手机号");
} }
if (!REG_TEL.test(phone)) { if (!REG_TEL.test(phone)) {
return Toast("请输入正确的手机号~"); return Toast.show("请输入正确的手机号~");
} }
if (!code) { // 未输入验证码 if (!code) { // 未输入验证码
return Toast("请输入验证码"); return Toast.show("请输入验证码");
} }
await this.bindPhone(); await this.bindPhone();
...@@ -99,7 +97,7 @@ class LoginPop extends React.Component { ...@@ -99,7 +97,7 @@ class LoginPop extends React.Component {
const {success} = await API.getCode(params); const {success} = await API.getCode(params);
if (success) { if (success) {
Toast("验证码已发送"); Toast.show("验证码已发送");
this.setState({ this.setState({
isSend: true, isSend: true,
cd: 60, cd: 60,
...@@ -121,12 +119,12 @@ class LoginPop extends React.Component { ...@@ -121,12 +119,12 @@ class LoginPop extends React.Component {
const {success, data, desc} = await API.bindPhone(param); const {success, data, desc} = await API.bindPhone(param);
if (success) { if (success) {
if(location.href.indexOf('localhost') > -1){ if(location.href.indexOf('localhost') > -1){
modalStore.closePop('Login') ModalCtrl.closeModal()
}else{ }else{
location.replace(data); location.replace(data);
} }
} else { } else {
Toast(desc); Toast.show(desc);
} }
}; };
...@@ -151,6 +149,10 @@ class LoginPop extends React.Component { ...@@ -151,6 +149,10 @@ class LoginPop extends React.Component {
}); });
}; };
handleClose = _asyncThrottle(() => {
ModalCtrl.closeModal();
})
render() { render() {
const {phone, code, isSend, cd, reSend} = this.state; const {phone, code, isSend, cd, reSend} = this.state;
...@@ -188,6 +190,7 @@ class LoginPop extends React.Component { ...@@ -188,6 +190,7 @@ class LoginPop extends React.Component {
<Button className={loginBtnCls} onClick={this.closeLogin}/> <Button className={loginBtnCls} onClick={this.closeLogin}/>
</div> </div>
<Button className="close" onClick={this.handleClose} />
</div>; </div>;
} }
} }
......
...@@ -16,13 +16,22 @@ ...@@ -16,13 +16,22 @@
// .sparkBg("common/light.png"); // .sparkBg("common/light.png");
} }
.close {
position: absolute;
left: 343px;
top: 1060px;
width: 64px;
height: 64px;
.sparkBg("LoginPop/close.png");
}
.bg { .bg {
position: absolute; position: absolute;
left: 99px; left: 99px;
top: 363px; top: 510px;
width: 553px; width: 593px;
height: 691px; height: 453px;
.sparkBg("LoginPop/bg.png"); .sparkBg("LoginPop/bg.png");
...@@ -38,9 +47,9 @@ ...@@ -38,9 +47,9 @@
font-size: 30px; font-size: 30px;
outline: none; outline: none;
border: none; border: none;
border: 2px solid rgb(104, 192, 112); border: 2px solid rgb(219, 128, 28);
background-color: rgb(255, 252, 243); background-color: rgb(255, 239, 211);
box-shadow: 0px 3px 2px 0px rgba(162, 225, 244, 0.31),inset 0px 1px 3px 0px rgba(253, 220, 218, 0.93); box-shadow: 0px 3px 2px 0px rgba(162, 225, 244, 0.31), inset 0px 1px 3px 0px rgba(253, 220, 218, 0.93);
// border-width: 2px; // border-width: 2px;
// border-color: #e49224; // border-color: #e49224;
color: rgb(54, 43, 42); color: rgb(54, 43, 42);
...@@ -52,12 +61,15 @@ ...@@ -52,12 +61,15 @@
.phoneInput { .phoneInput {
top: 295px; top: 90px;
left: 52px;
} }
.codeInput { .codeInput {
width: 221px; width: 221px;
top: 402px; top: 184px;
left: 56px;
;
} }
.sendBtn { .sendBtn {
...@@ -67,11 +79,11 @@ ...@@ -67,11 +79,11 @@
font-size: 26px; font-size: 26px;
text-decoration: underline; text-decoration: underline;
text-underline-offset: 7px; text-underline-offset: 7px;
color: rgb(9, 3, 4); color: rgb(239, 125, 30);
text-align: center; text-align: center;
position: absolute; position: absolute;
left: 290px; left: 290px;
top: 405px; top: 184px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
...@@ -84,11 +96,11 @@ ...@@ -84,11 +96,11 @@
font-size: 26px; font-size: 26px;
text-decoration: underline; text-decoration: underline;
text-underline-offset: 5px; text-underline-offset: 5px;
color: #756b5e; color: rgb(239, 125, 30);
text-align: center; text-align: center;
position: absolute; position: absolute;
left: 290px; left: 290px;
top: 405px; top: 184px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
...@@ -97,18 +109,18 @@ ...@@ -97,18 +109,18 @@
.LoginBtn { .LoginBtn {
position: absolute; position: absolute;
left: 129px; left: 129px;
top: 528px; top: 290px;
width: 310px; width: 263px;
height: 95px; height: 92px;
.webpBg("LoginPop/canSubmitBtn.png"); .webpBg("LoginPop/canSubmitBtn.png");
} }
.LoginBtnNoAct { .LoginBtnNoAct {
position: absolute; position: absolute;
left: 129px; left: 129px;
top: 528px; top: 290px;
width: 310px; width: 263px;
height: 95px; height: 92px;
.webpBg("LoginPop/cannotSubmit.png"); .webpBg("LoginPop/cannotSubmit.png");
} }
} }
......
...@@ -10,15 +10,15 @@ import { Button } from "@grace/ui"; ...@@ -10,15 +10,15 @@ import { Button } from "@grace/ui";
import { PageCtrl } from "@/core/ctrls/PageCtrl"; import { PageCtrl } from "@/core/ctrls/PageCtrl";
import { ModalCtrl } from "@/core/ctrls/ModalCtrl"; import { ModalCtrl } from "@/core/ctrls/ModalCtrl";
import afterSvga from "../../assets/svga/7输出撕开.svga";
@observer @observer
class NoPrizeCard extends React.Component { class NoPrizeCard extends React.Component {
state = { state = {
card: true, card: true,
}; };
componentDidMount() { componentDidMount() {
pageView("b12872", { pageView("b12872", {
page_name: "祝福语翻转页", page_name: "祝福语翻转页",
}); });
...@@ -31,14 +31,14 @@ class NoPrizeCard extends React.Component { ...@@ -31,14 +31,14 @@ class NoPrizeCard extends React.Component {
/** card1文本选择 */ /** card1文本选择 */
opt1 = () => { opt1 = () => {
const list = [ const list = [
'NoPrizeCard/text1.png', "src/assets/NoPrizeCard/text1.png",
'NoPrizeCard/text2.png', "src/assets/NoPrizeCard/text2.png",
'NoPrizeCard/text3.png', "src/assets/NoPrizeCard/text3.png",
'NoPrizeCard/text4.png' "src/assets/NoPrizeCard/text4.png",
] ];
const address = list[randomNum(0, 4)] const address = list[randomNum(0, 4)];
return address return address;
} };
/** 切换按钮*/ /** 切换按钮*/
clickExchange1 = () => { clickExchange1 = () => {
...@@ -48,7 +48,7 @@ class NoPrizeCard extends React.Component { ...@@ -48,7 +48,7 @@ class NoPrizeCard extends React.Component {
}); });
this.setState({ this.setState({
card: false, card: false,
svg: true svg: true,
}); });
setTimeout(() => { setTimeout(() => {
...@@ -56,11 +56,9 @@ class NoPrizeCard extends React.Component { ...@@ -56,11 +56,9 @@ class NoPrizeCard extends React.Component {
svg: false, svg: false,
card: false, card: false,
}); });
}, 2000) }, 2000);
}; };
/** 关闭按钮*/ /** 关闭按钮*/
clickClose = _throttle(() => { clickClose = _throttle(() => {
ModalCtrl.closeModal(); ModalCtrl.closeModal();
...@@ -68,49 +66,49 @@ class NoPrizeCard extends React.Component { ...@@ -68,49 +66,49 @@ class NoPrizeCard extends React.Component {
render() { render() {
const { card } = this.state; const { card } = this.state;
const { data } = this.props; const { productInfos } = this.props || {};
return <div className="NoPrizeCard modal_center"> console.log(productInfos);
{ return (
card === true ? <div className="NoPrizeCard modal_center">
{card === true ? (
//翻转前 //翻转前
<div className="card1"> <div className="card1">
{/* <SvgaPlayer className="bg" src={RES_PATH + "svga/5输出展开.svga"} loop={1} /> */}
<span className="picture"></span> <span className="picture"></span>
{/* <img className="text" src={RES_PATH + this.opt1()} /> */} <img className="text" src={this.opt1()} />
</div> </div>
) : (
//翻转后 //翻转后
: <div> <div>
{/* <SvgaPlayer className="bg" src={RES_PATH + "svga/6输出切换.svga"} loop={1} /> */} <span className="afterBg"></span>
<Swiper className="prodSwiper" <Swiper
slidesPerView={1} className="prodSwiper"
pagination={{ clickable: true }} indicatorProps={{ style: { display: "none" } }}
> >
{ {productInfos?.map((item, index) => {
data?.productInfos?.map((item, index) => { return (
return <SwiperSlide className="prodItem" key={index}> <SwiperSlide className="prodItem" key={index}>
<span className="line"></span> <img
<img className="picture2" className="picture2"
src={item?.productImg} src={item?.productImg}
alt={item?.productText} alt={item?.productText}
/> />
<div className="txt"> <div className="txt">{item?.productText}</div>
{item?.productText}
</div>
</SwiperSlide> </SwiperSlide>
}) );
} })}
</Swiper> </Swiper>
{/* <Button className="exchange2" /> */} {/* <Button className="exchange2" /> */}
<SvgaPlayer className="after" src={afterSvga} loop={1} />
</div> </div>
} )}
{
card === true && <Button className="exchange1 md27" onClick={this.clickExchange1} />
}
{card === true && (
<Button className="exchange1" onClick={this.clickExchange1} />
)}
<Button className="close" onClick={this.clickClose} /> <Button className="close" onClick={this.clickClose} />
</div>; </div>
);
} }
} }
......
...@@ -6,37 +6,46 @@ ...@@ -6,37 +6,46 @@
top: 0; top: 0;
width: 750px; width: 750px;
height: 1624px; height: 1624px;
.popupCenterShow();
.bg { .after {
position: absolute; position: absolute;
left: 63px; left: 20px;
top: 256px; top: 270px;
width: 623px; width: 701px;
height: 1053px; height: 1014px;
} }
.picture { .picture {
position: absolute; position: absolute;
left: 148px; left: 49px;
top: 495px; top: 252px;
width: 473px; width: 653px;
height: 725px; height: 888px;
.sparkBg("NoPrizeCard/picture.png"); .sparkBg("NoPrizeCard/picture.png");
.fade-in; }
.afterBg {
position: absolute;
left: 49px;
top: 252px;
width: 653px;
height: 888px;
.sparkBg("NoPrizeCard/afterBg.png");
} }
.text { .text {
position: absolute; position: absolute;
left: 270px; left: 275px;
top: 1074px; top: 976px;
width: 215px; width: 215px;
height: 115px; height: 115px;
.fade-in; // .fade-in;
} }
.prodSwiper { .prodSwiper {
position: absolute; position: absolute;
left: 148px; left: 155px;
top: 0px; top: 0px;
width: 452px; width: 452px;
height: 1258px; height: 1258px;
...@@ -49,19 +58,20 @@ ...@@ -49,19 +58,20 @@
align-items: center; align-items: center;
justify-content: center; justify-content: center;
.line { // .line {
position: absolute; // position: absolute;
left: 5px; // left: 5px;
top: 1035px; // top: 1035px;
width: 438px; // width: 438px;
height: 2px; // height: 2px;
.sparkBg("NoPrizeCard/line.png") // .sparkBg("NoPrizeCard/line.png")
} // }
.picture2 { .picture2 {
position: absolute; position: absolute;
left: 0px; left: 0px;
top: 495px; // top: 495px;
top: 430px;
width: 452px; width: 452px;
height: 499px; height: 499px;
border-radius: 18px; border-radius: 18px;
...@@ -69,12 +79,12 @@ ...@@ -69,12 +79,12 @@
} }
.txt { .txt {
font-size: 23px; font-size: 22px;
color: rgb(42, 98, 23); color: rgb(255, 255, 255);
line-height: 1.391; line-height: 1.391;
text-align: left; text-align: left;
position: absolute; position: absolute;
top: 1088px; top: 980px;
width: 417px; width: 417px;
height: 86px; height: 86px;
overflow-y: auto; overflow-y: auto;
...@@ -84,9 +94,9 @@ ...@@ -84,9 +94,9 @@
.exchange1 { .exchange1 {
position: absolute; position: absolute;
left: 279px; left: 302px;
top: 1252px; top: 1160px;
width: 191px; width: 133px;
height: 29px; height: 29px;
.sparkBg("NoPrizeCard/exchange.png") .sparkBg("NoPrizeCard/exchange.png")
} }
...@@ -103,9 +113,9 @@ ...@@ -103,9 +113,9 @@
.close { .close {
position: absolute; position: absolute;
left: 345px; left: 345px;
top: 1332px; top: 1276px;
width: 60px; width: 64px;
height: 60px; height: 64px;
.sparkBg("common/closeBtn.png") .sparkBg("NoPrizeCard/close.png")
} }
} }
\ No newline at end of file
'use strict'; "use strict";
import React from 'react'; import React from "react";
import { observer } from 'mobx-react'; import { observer } from "mobx-react";
import './settlechance.less'; import "./settlechance.less";
import { Button, Toast } from "@grace/ui";
import { _asyncThrottle } from "../../utils/utils";
import { PageCtrl } from "@/core/ctrls/PageCtrl";
import { ModalCtrl } from "@/core/ctrls/ModalCtrl";
import { SvgaPlayer } from "@grace/svgaplayer";
import lightSvga from "../../assets/svga/6输出弹窗.svga";
import Capsulepage from "../../pages/CapsulePage/CapsulePage";
@observer @observer
class Settlechance extends React.Component { class Settlechance extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
} }
handleClose = _asyncThrottle(() => {
ModalCtrl.closeModal()
})
handleKnow = _asyncThrottle(() => {
ModalCtrl.closeModal()
})
handleDraw = _asyncThrottle(() => {
ModalCtrl.closeModal()
PageCtrl.changePage(Capsulepage)
})
render() { render() {
const { data } = this.props || {};
const {
drawChance = 0,
title = "银河系脑洞霸主",
desc = "你的脑洞能凭空造出‘榴莲味wiFi’和‘会蹦迪的沙发’,建议去给科幻片当编剧,拯救全人类!",
} = data || {};
return ( return (
<div className="settlechance modal_center"> <div className="settlechance modal_center">
<span className="dongxiao"></span> <SvgaPlayer className="light" src={lightSvga} />
<span className="bg"></span> <span className="bg"></span>
<span className="draw"></span> <Button className="draw" onClick={this.handleDraw} />
<span className="know"></span> <Button className="know" onClick={this.handleKnow} />
<span className="icon"></span> <span className="icon"></span>
<span className="title"></span> <span className="ribbon"></span>
<span className="tip1">获得了「银河系脑洞霸主」称号</span> <span className="title">恭喜您, 答对{0}</span>
<span className="tip2">你的脑洞能凭空造出‘榴莲味wiFi’和‘会蹦迪的沙发’,建议去给科幻片当编剧,拯救全人类!</span> <span className="tip1">获得了「{title}」称号</span>
<span className="tip3">恭喜获得抽奖机会+1</span> <span className="tip2">{desc}</span>
<span className="close"></span> <span className="tip3">恭喜获得抽奖机会+{drawChance}</span>
<Button className="close" onClick={this.handleClose} />
</div> </div>
); );
} }
......
@import "../../res.less"; @import "../../res.less";
.settlechance { .settlechance {
width: 750px; width: 750px;
height: 1624px; height: 1624px;
left: 0px; left: 0px;
top: 0px; top: 0px;
position: absolute; position: absolute;
.dongxiao {
@font-face {
font-family: "MaokenAssortedSans";
src: url('/src/assets/font/MaokenAssortedSans.ttf') format('truetype');
// font-display: swap;
}
.light {
width: 750px; width: 750px;
height: 1008px; height: 1624px;
left: 0px; left: 0px;
top: 213px; // top: 213px;
position: absolute; position: absolute;
.sparkBg("settleChance/dongxiao.png"); // .sparkBg("settleChance/dongxiao.png");
} }
.bg { .bg {
width: 606px; width: 606px;
height: 901px; height: 901px;
...@@ -21,6 +30,7 @@ ...@@ -21,6 +30,7 @@
position: absolute; position: absolute;
.sparkBg("settleChance/bg.png"); .sparkBg("settleChance/bg.png");
} }
.draw { .draw {
width: 169px; width: 169px;
height: 69px; height: 69px;
...@@ -29,6 +39,7 @@ ...@@ -29,6 +39,7 @@
position: absolute; position: absolute;
.sparkBg("settleChance/draw.png"); .sparkBg("settleChance/draw.png");
} }
.know { .know {
width: 263px; width: 263px;
height: 92px; height: 92px;
...@@ -37,6 +48,7 @@ ...@@ -37,6 +48,7 @@
position: absolute; position: absolute;
.sparkBg("settleChance/know.png"); .sparkBg("settleChance/know.png");
} }
.icon { .icon {
width: 237px; width: 237px;
height: 251px; height: 251px;
...@@ -45,33 +57,62 @@ ...@@ -45,33 +57,62 @@
position: absolute; position: absolute;
.sparkBg("settleChance/icon.png"); .sparkBg("settleChance/icon.png");
} }
.title { .title {
// width: 636px;
width: 750px;
height: 201px;
// left: 138px;
left: -10px;
top: 288px;
font-size: 62px;
text-align: center;
position: absolute;
color: rgb(255, 245, 214);
font-family: "MaokenAssortedSans";
}
.ribbon {
width: 636px; width: 636px;
height: 201px; height: 201px;
left: 32px; left: 30px;
top: 214px; top: 214px;
position: absolute; position: absolute;
.sparkBg("settleChance/title.png"); .sparkBg("settleChance/ribbon.png");
} }
.tip1 { .tip1 {
width: 428px; width: 460px;
height: 30px; height: 33px;
left: 155px; left: 134px;
top: 488px; top: 488px;
text-align: center;
position: absolute; position: absolute;
font-size: 30px; font-size: 30px;
line-height: 30px; line-height: 33px;
color: rgba(153, 57, 27, 1); color: rgba(153, 57, 27, 1);
font-weight: bold;
.lineClamp1();
} }
.tip2 { .tip2 {
width: 438px; width: 460px;
height: 91px; height: 84px;
left: 159px; left: 134px;
top: 807px; top: 807px;
text-align: center;
position: absolute; position: absolute;
font-size: 21px; font-size: 22px;
line-height: 38px;
color: rgba(169, 90, 62, 1); color: rgba(169, 90, 62, 1);
// .lineClamp1();
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
} }
.tip3 { .tip3 {
width: 276px; width: 276px;
height: 28px; height: 28px;
...@@ -81,7 +122,9 @@ ...@@ -81,7 +122,9 @@
font-size: 29px; font-size: 29px;
line-height: 28px; line-height: 28px;
color: rgba(157, 66, 37, 1); color: rgba(157, 66, 37, 1);
font-weight: bold;
} }
.close { .close {
width: 64px; width: 64px;
height: 64px; height: 64px;
...@@ -90,4 +133,4 @@ ...@@ -90,4 +133,4 @@
position: absolute; position: absolute;
.sparkBg("settleChance/close.png"); .sparkBg("settleChance/close.png");
} }
} }
\ No newline at end of file
...@@ -3,6 +3,10 @@ ...@@ -3,6 +3,10 @@
import React from 'react'; import React from 'react';
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
import './settlenochance.less'; import './settlenochance.less';
import { Button, Toast } from '@grace/ui';
import { _asyncThrottle } from "../../utils/utils";
import { PageCtrl } from "@/core/ctrls/PageCtrl";
import { ModalCtrl } from "@/core/ctrls/ModalCtrl";
@observer @observer
class Settlenochance extends React.Component { class Settlenochance extends React.Component {
......
...@@ -13,9 +13,12 @@ import { Button, Toast } from "@grace/ui"; ...@@ -13,9 +13,12 @@ import { Button, Toast } from "@grace/ui";
import { PageCtrl } from "@/core/ctrls/PageCtrl"; import { PageCtrl } from "@/core/ctrls/PageCtrl";
import { ModalCtrl } from "@/core/ctrls/ModalCtrl"; import { ModalCtrl } from "@/core/ctrls/ModalCtrl";
import { SvgaPlayer } from "@grace/svgaplayer"; import { SvgaPlayer } from "@grace/svgaplayer";
import { Swiper, SwiperSlide } from "swiper/react";
import { Autoplay } from "swiper";
import "swiper/css";
import Homepage from "../HomePage/HomePage.tsx"; import Homepage from "../HomePage/HomePage.tsx";
import Prizepop from "../../components/prizepop/prizepop.jsx"; import Prizepop from "../../components/prizepop/prizepop.jsx";
import Noprizecard from "../../components/NoPrizeCard/NoPrizeCard.jsx"; import NoPrizeCard from "../../components/NoPrizeCard/NoPrizeCard.jsx";
import machineSvga from "../../assets/svga/1输出扭蛋机常态.svga"; import machineSvga from "../../assets/svga/1输出扭蛋机常态.svga";
import normalSvga from "../../assets/svga/2输出待机啊.svga"; import normalSvga from "../../assets/svga/2输出待机啊.svga";
...@@ -23,7 +26,7 @@ import dynamicSvga from "../../assets/svga/3输出出奖啊.svga"; ...@@ -23,7 +26,7 @@ import dynamicSvga from "../../assets/svga/3输出出奖啊.svga";
import output1Svga from "../../assets/svga/4中奖扭蛋.svga"; import output1Svga from "../../assets/svga/4中奖扭蛋.svga";
import output2Svga from "../../assets/svga/5中奖弹窗.svga"; import output2Svga from "../../assets/svga/5中奖弹窗.svga";
import { LOG_KEY, pageView, sensorLog } from '../../utils/sensors.js'; import { LOG_KEY, pageView, sensorLog } from "../../utils/sensors.js";
@observer @observer
class Capsulepage extends React.Component { class Capsulepage extends React.Component {
...@@ -78,7 +81,7 @@ class Capsulepage extends React.Component { ...@@ -78,7 +81,7 @@ class Capsulepage extends React.Component {
} }
} }
const { prizeVOs, remainDrawTimes } = this.state.drawInfo; const { remainDrawTimes = 0 } = this.state.drawInfo;
// 抽奖次数为0 // 抽奖次数为0
if (!remainDrawTimes) { if (!remainDrawTimes) {
...@@ -98,7 +101,7 @@ class Capsulepage extends React.Component { ...@@ -98,7 +101,7 @@ class Capsulepage extends React.Component {
const { const {
boolPrize = false, boolPrize = false,
prizeInfo = {}, prizeInfo = {},
productInfo = [], productInfos = [],
} = data || {}; } = data || {};
// const index = prizeVOs?.findIndex( // const index = prizeVOs?.findIndex(
...@@ -112,7 +115,7 @@ class Capsulepage extends React.Component { ...@@ -112,7 +115,7 @@ class Capsulepage extends React.Component {
}, 1600); }, 1600);
setTimeout(() => { setTimeout(() => {
this.setState({ btnDynamic: false }); this.setState({ btnDynamic: false });
this.stopOkHandle(boolPrize, prizeInfo, productInfo); this.stopOkHandle(boolPrize, prizeInfo, productInfos);
}, 2000); }, 2000);
// this.turntableRef.braking(index); // this.turntableRef.braking(index);
} else { } else {
...@@ -122,13 +125,13 @@ class Capsulepage extends React.Component { ...@@ -122,13 +125,13 @@ class Capsulepage extends React.Component {
}); });
// 抽奖停止处理 // 抽奖停止处理
stopOkHandle = (boolPrize, prizeInfo, productInfo) => { stopOkHandle = (boolPrize, prizeInfo, productInfos) => {
this.btnStarting = false; this.btnStarting = false;
setTimeout(() => { setTimeout(() => {
this.setState({ btnOutput: false }); this.setState({ btnOutput: false });
}, 1600); }, 1600);
// 此时判断是否中奖 true-中奖,取prizeInfo信息,false-为中奖,取productInfo // 此时判断是否中奖 true-中奖,取prizeInfo信息,false-为中奖,取productInfos
if (boolPrize) { if (boolPrize) {
// 中奖 // 中奖
setTimeout(() => { setTimeout(() => {
...@@ -137,7 +140,7 @@ class Capsulepage extends React.Component { ...@@ -137,7 +140,7 @@ class Capsulepage extends React.Component {
} else { } else {
// 没中奖 // 没中奖
setTimeout(() => { setTimeout(() => {
ModalCtrl.showModal(Noprizecard, { productInfo }); ModalCtrl.showModal(NoPrizeCard, { productInfos });
}, 1600); }, 1600);
} }
...@@ -158,7 +161,8 @@ class Capsulepage extends React.Component { ...@@ -158,7 +161,8 @@ class Capsulepage extends React.Component {
render() { render() {
const { btnDynamic, btnOutput } = this.state; const { btnDynamic, btnOutput } = this.state;
const { prizeVOs, remainDrawTimes } = this.state.drawInfo; const { prizeInfo = [], remainDrawTimes = 0 } = this.state.drawInfo;
console.log(prizeInfo);
return ( return (
<div className="capsule"> <div className="capsule">
<span className="bg"></span> <span className="bg"></span>
...@@ -182,6 +186,35 @@ class Capsulepage extends React.Component { ...@@ -182,6 +186,35 @@ class Capsulepage extends React.Component {
<SvgaPlayer className="output2" src={output2Svga} /> <SvgaPlayer className="output2" src={output2Svga} />
</> </>
)} )}
{/* 底部奖品轮播 */}
<div className="bottomprize">
<div className="prizeindex">
<Swiper
autoplay={{
disableOnInteraction: false,
delay: 300,
}}
modules={[Autoplay]}
slidesPerView={3.6}
loop={true}
initialSlide={0}
speed={1600}
freeMode={true}
freeModeSticy={true}
>
{prizeInfo?.map((item, index) => (
<SwiperSlide key={index}>
<div className="psample">
<img className="psimg" src={item.prizeImg} alt={item.prizeName} />
<span className="psname">{item.prizeName}</span>
</div>
</SwiperSlide>
))}
</Swiper>
</div>
</div>
</div> </div>
); );
} }
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
overflow-x: hidden; overflow-x: hidden;
overflow-y: auto; overflow-y: auto;
.bg { .bg {
width: 750px; width: 750px;
height: 1624px; height: 1624px;
...@@ -65,6 +66,7 @@ ...@@ -65,6 +66,7 @@
height: 830px; height: 830px;
top: 427px; top: 427px;
// left: 114px; // left: 114px;
z-index: 2;
} }
.output2 { .output2 {
...@@ -73,6 +75,7 @@ ...@@ -73,6 +75,7 @@
height: 830px; height: 830px;
top: 427px; top: 427px;
// left: 114px; // left: 114px;
z-index: 2;
} }
.mengceng { .mengceng {
...@@ -81,6 +84,7 @@ ...@@ -81,6 +84,7 @@
height: 1624px; height: 1624px;
// left: 114px; // left: 114px;
.sparkBg("capsulePage/mengceng.png"); .sparkBg("capsulePage/mengceng.png");
z-index: 1;
} }
// .task_btn { // .task_btn {
...@@ -232,4 +236,54 @@ ...@@ -232,4 +236,54 @@
// .sparkBg("capsulePage/cover.png"); // .sparkBg("capsulePage/cover.png");
// pointer-events: none; // pointer-events: none;
// } // }
.bottomprize {
width: 698px;
height: 158px;
left: 26px;
top: 1400px;
position: absolute;
z-index: 0;
.prizeindex {
width: 644px;
height: 133px;
left: 27px;
top: 14px;
position: absolute;
.psample {
width: 118px;
height: 200px;
left: 0px;
top: 0px;
position: relative;
align-items: center;
justify-content: center;
text-align: center;
.psimg {
width: 142px;
height: 142px;
left: 0px;
top: 0px;
border-radius: 15px;
.sparkBg("capsulePage/PSBg.png");
}
.psname {
width: 142px;
height: 30px;
left: 0;
top: 150px;
text-align: center;
position: absolute;
font-size: 26px;
line-height: 30px;
color: rgb(255, 255, 255);
.lineClamp1();
}
}
}
}
} }
\ No newline at end of file
...@@ -19,8 +19,7 @@ import { CHANNEL_PARAMS, extranceName } from '@/utils/constants.js'; ...@@ -19,8 +19,7 @@ import { CHANNEL_PARAMS, extranceName } from '@/utils/constants.js';
import gameStore from "@/store/gameStore.ts"; import gameStore from "@/store/gameStore.ts";
import GamePage from "@/pages/GamePage/GamePage.tsx"; import GamePage from "@/pages/GamePage/GamePage.tsx";
import CodePop from "../../components/CodePop/CodePop.jsx" import Settlechance from "../../components/settlechance/settlechance.jsx"
import NoPrizeCard from "../../components/NoPrizeCard/NoPrizeCard.jsx"
@observer @observer
class Homepage extends React.Component { class Homepage extends React.Component {
...@@ -107,9 +106,7 @@ class Homepage extends React.Component { ...@@ -107,9 +106,7 @@ class Homepage extends React.Component {
page_name: "活动首页", page_name: "活动首页",
button_name: "规则按钮", button_name: "规则按钮",
}); });
// ModalCtrl.showModal(Rulepop); ModalCtrl.showModal(Settlechance);
// todo
ModalCtrl.showModal(NoPrizeCard);
break; break;
// 6 拜访清单 // 6 拜访清单
......
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