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

merge

parent a8fdb03c
......@@ -9,23 +9,24 @@ export default [
"message": "message",
"data": {
"actStartTimestamp": -86961592.20219234,
"answerChance": 61684762.582832515,
"rank": 85345186.95448217,
"uid": "laboris Lorem sit officia aliqua",
"answerChance": 666,
"rank": 1,
"uid": "123213",
"currentTimestamp": 99790918.1204935,
"actEndTimestamp": 42625488.007563084,
"avatar": "/src/assets/homePage/head.png",
"privacyText":'143sjhbkrjgjkfgbjfb fnsjnfdrhgkfngjknfcmgfcm fjkxdngjhrdkghkfxgjfb',
"rankPop1": {
"prizeName": null,
"prizeImg": "//yun.duiba.com.cn/polaris/045CCBB8-F6C7-43DB-9F81-45F52430A878.441c8f13daf61c48b85fe383e764d9089f1d4a66.png",
"rank": 825844,
},
"rulePop": false,
"rulePop": true,
"userId": "qui id deserunt",
"validUid": true,
"isAgent": true,
"boundYkCode": "eiusmod in dolor",
"minim_0": 93293912
"agreePrivacy": true,
}
}
},
......
......@@ -25,6 +25,8 @@ import { onInitShare } from './utils/share.ts';
import { domain, ensureDomain } from "@spark/dbdomain";
import shareStore from './store/share.ts';
import music from "../src/assets/audio/bgm.mp3";
@observer
class App extends Component {
......@@ -35,11 +37,13 @@ class App extends Component {
myPrize: MyPrize, // TODO 举例子 新宿台奖品页
index: LoadingDemo,
sharepage:SharePage,
}[skinId] || GamePage;
}[skinId] || HomePage;
PageCtrl.changePage(defaultPage);
}
async componentDidMount() {
musicStore.playSound( music, true);
this.showDefaultPage();
await store.getFrontVariable();
......
src/assets/common/music_close.png

1.75 KB | W: | H:

src/assets/common/music_close.png

2.73 KB | W: | H:

src/assets/common/music_close.png
src/assets/common/music_close.png
src/assets/common/music_close.png
src/assets/common/music_close.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/common/music_open.png

1.63 KB | W: | H:

src/assets/common/music_open.png

2.57 KB | W: | H:

src/assets/common/music_open.png
src/assets/common/music_open.png
src/assets/common/music_open.png
src/assets/common/music_open.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -36,8 +36,10 @@ class Settlechance extends React.Component {
const { data } = this.props || {};
const {
drawChance = 0,
title = "银河系脑洞霸主",
desc = "你的脑洞能凭空造出‘榴莲味wiFi’和‘会蹦迪的沙发’,建议去给科幻片当编剧,拯救全人类!",
title = "",
desc = "",
img = "",
score = 0,
} = data || {};
return (
<div className="settlechance modal_center">
......@@ -45,9 +47,12 @@ class Settlechance extends React.Component {
<span className="bg"></span>
<Button className="draw" onClick={this.handleDraw} />
<Button className="know" onClick={this.handleKnow} />
<span className="icon"></span>
<img className="icon"
src = {img}
alt = {title}
/>
<span className="ribbon"></span>
<span className="title">恭喜您, 答对{0}</span>
<span className="title">恭喜您, 答对{score}</span>
<span className="tip1">获得了「{title}」称号</span>
<span className="tip2">{desc}</span>
<span className="tip3">恭喜获得抽奖机会+{drawChance}</span>
......
......@@ -55,7 +55,7 @@
left: 242px;
top: 540px;
position: absolute;
.sparkBg("settleChance/icon.png");
// .sparkBg("settleChance/icon.png");
}
.title {
......@@ -99,7 +99,7 @@
width: 460px;
height: 84px;
left: 134px;
top: 807px;
top: 817px;
text-align: center;
position: absolute;
font-size: 22px;
......
......@@ -7,6 +7,9 @@ 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 { LOG_KEY, MatterShareOpt, MatterViewDuration, MatterViewOpt, pageView, sensorLog } from "../../utils/sensors.js";
@observer
......@@ -41,17 +44,36 @@ class Settlenochance extends React.Component {
button_name: "我知道了按钮",
});
}
handleClose = _asyncThrottle(() => {
ModalCtrl.closeModal()
})
handleKnow = _asyncThrottle(() => {
ModalCtrl.closeModal()
})
render() {
const { data } = this.props || {};
const {
title = "",
desc = "",
img = "",
score = 0,
} = data || {};
return (
<div className="settlenochance modal_center">
<span className="dongxiao"></span>
<SvgaPlayer className="light" src={lightSvga} />
<span className="bg"></span>
<span className="know"></span>
<span className="icon"></span>
<span className="title"></span>
<span className="tip1">获得了「宇宙菜鸟」称号</span>
<span className="tip2">你的脑洞像刚解冻的冰棍——梆硬且毫无波澜,建议多喝热水重启大脑!</span>
<span className="close"></span>
<Button className="know" onClick={this.handleKnow} />
<img className="icon"
src = {img}
alt = {title}
/>
<span className="ribbon"></span>
<span className="title">恭喜您, 答对{score}</span>
<span className="tip1">获得了「{title}」称号</span>
<span className="tip2">{desc}</span>
<Button className="close" onClick={this.handleClose} />
</div>
);
}
......
@import "../../res.less";
.settlenochance {
width: 750px;
height: 1624px;
left: 0px;
top: 0px;
position: absolute;
.dongxiao {
@font-face {
font-family: "MaokenAssortedSans";
src: url('/src/assets/font/MaokenAssortedSans.ttf') format('truetype');
// font-display: swap;
}
.light {
width: 750px;
height: 1008px;
height: 1624px;
left: 0px;
top: 324px;
// top: 213px;
position: absolute;
.sparkBg("settleNoChance/dongxiao.png");
// .sparkBg("settleChance/dongxiao.png");
}
.bg {
width: 606px;
height: 724px;
......@@ -21,6 +30,7 @@
position: absolute;
.sparkBg("settleNoChance/bg.png");
}
.know {
width: 263px;
height: 92px;
......@@ -29,41 +39,71 @@
position: absolute;
.sparkBg("settleNoChance/know.png");
}
.icon {
width: 198px;
height: 198px;
left: 271px;
top: 686px;
position: absolute;
.sparkBg("settleNoChance/icon.png");
// .sparkBg("settleNoChance/icon.png");
}
.title {
// width: 636px;
width: 750px;
height: 201px;
// left: 138px;
left: -10px;
top: 288+100px;
font-size: 62px;
text-align: center;
position: absolute;
color: rgb(255, 245, 214);
font-family: "MaokenAssortedSans";
}
.ribbon {
width: 636px;
height: 201px;
left: 32px;
top: 325px;
left: 30px;
top: 214+100px;
position: absolute;
.sparkBg("settleNoChance/title.png");
.sparkBg("settleChance/ribbon.png");
}
.tip1 {
width: 338px;
height: 29px;
left: 200px;
width: 460px;
height: 33px;
left: 134px;
top: 599px;
text-align: center;
position: absolute;
font-size: 30px;
line-height: 29px;
line-height: 33px;
color: rgba(153, 57, 27, 1);
font-weight: bold;
.lineClamp1();
}
.tip2 {
width: 429px;
height: 55px;
left: 156px;
top: 935px;
width: 460px;
height: 84px;
left: 134px;
top: 925px;
text-align: center;
position: absolute;
font-size: 21px;
font-size: 22px;
line-height: 38px;
color: rgba(169, 90, 62, 1);
// .lineClamp1();
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
}
.close {
width: 64px;
height: 64px;
......@@ -72,4 +112,4 @@
position: absolute;
.sparkBg("settleNoChance/close.png");
}
}
}
\ No newline at end of file
......@@ -103,14 +103,16 @@
.sparkBg("homePage/answer.png");
}
.remain {
width: 125px;
height: 21px;
left: 161px;
width: 422px;
height: 24px;
// left: 161px;
top: 94px;
text-align: center;
position: absolute;
font-size: 21px;
line-height: 21px;
line-height: 24px;
color: rgba(170, 64, 0, 1);
.lineClamp1();
}
}
.rank {
......@@ -128,14 +130,15 @@
.sparkBg("homePage/r_bg.png");
}
.name {
width: 233px;
height: 29px;
width: 300px;
height: 33px;
left: 145px;
top: 67px;
position: absolute;
font-size: 30px;
line-height: 29px;
line-height: 33px;
color: rgba(30, 76, 169, 1);
.lineClamp1();
}
.head {
width: 95px;
......@@ -143,7 +146,8 @@
left: 37px;
top: 34px;
position: absolute;
.sparkBg("homePage/head.png");
// .sparkBg("homePage/head.png");
border-radius: 15px;
}
.myrank {
width: 104px;
......@@ -154,14 +158,16 @@
.sparkBg("homePage/myRank.png");
}
.number {
width: 125px;
height: 52px;
left: 469px;
top: 39px;
width: 180px;
height: 70px;
left: 439px;
top: 32px;
text-align: center;
position: absolute;
font-size: 68px;
line-height: 52px;
font-size: 60px;
line-height: 70px;
color: rgba(30, 76, 169, 1);
.lineClamp1();
}
}
.prize {
......@@ -204,4 +210,12 @@
position: absolute;
.sparkBg("homePage/logo.png");
}
.musicBtn {
position: absolute;
left: 20px;
top: 590px;
width: 47px;
height: 47px;
}
}
\ No newline at end of file
......@@ -9,6 +9,7 @@ import { PageCtrl } from "@/core/ctrls/PageCtrl";
import { ModalCtrl } from "@/core/ctrls/ModalCtrl";
import Rulepop from "../../components/rulepop/rulepop.jsx";
import CapsulePage from "../CapsulePage/CapsulePage.jsx";
import { isWeiXin } from "../../AppTools.ts";
import store from '@/store/store';
import Taskpop from '@/panels/taskpop/taskpop.jsx';
import Yinsirulepop from '@/panels/yinsirulepop/yinsirulepop.jsx';
......@@ -19,8 +20,7 @@ import { LOG_KEY, MatterShareOpt, MatterViewDuration, MatterViewOpt, pageView, s
import { CHANNEL_PARAMS, extranceName } from '@/utils/constants.js';
import gameStore from "@/store/gameStore.ts";
import GamePage from "@/pages/GamePage/GamePage.tsx";
import Settlechance from "../../components/settlechance/settlechance.jsx"
import MusicBtn from '@/core/components/MusicBtn/MusicBtn.tsx';
@observer
class Homepage extends React.Component {
......@@ -31,6 +31,9 @@ class Homepage extends React.Component {
}
async componentDidMount() {
if (isWeiXin()) {
if (!await store.checkBindStatus()) return;
}
await store.updateIndex();
await shareStore.doAssist();
this.initSensor();
......@@ -102,7 +105,7 @@ class Homepage extends React.Component {
} else {
PageCtrl.changePage(MyPrize);
}
break;
// 5 活动规则
......@@ -111,7 +114,7 @@ class Homepage extends React.Component {
page_name: "活动首页",
button_name: "规则按钮",
});
ModalCtrl.showModal(Settlechance);
ModalCtrl.showModal(Rulepop);
break;
// 6 拜访清单
......@@ -188,6 +191,7 @@ class Homepage extends React.Component {
});
};
render() {
const { uid, avatar, rank, answerChance } = store?.indexData || {}
return (
<div className="homepage">
<span className="bg"></span>
......@@ -197,13 +201,16 @@ class Homepage extends React.Component {
<span className="brain"></span>
<span className="wenhao"></span>
<span className="title"></span>
{/* 按钮 共7个 */}
{/* 按钮 */}
<div className="rank">
<span className="r_bg"></span>
<span className="name">用户uid:132802</span>
<span className="head"></span>
<span className="name">用户UID:{uid}</span>
<img className="head"
src={avatar}
alt=''
/>
<Button className="myrank" onClick={() => this.handleButtonClick(0)} />
<span className="number">000</span>
<span className="number">{rank === null ? '未参与' : rank === -1 ? '未上榜' : rank}</span>
</div>
<span className="logo"></span>
<Button className="draw" onClick={() => this.handleButtonClick(1)} />
......@@ -211,12 +218,14 @@ class Homepage extends React.Component {
<Button className="matter" onClick={() => this.handleButtonClick(3)}>
<span className="m_bg"></span>
<span className="answer"></span>
<span className="remain">剩余次数:3</span>
<span className="remain">剩余次数:{answerChance}</span>
</Button>
<Button className="prize" onClick={() => this.handleButtonClick(4)} />
<Button className="rule" onClick={() => this.handleButtonClick(5)} />
<Button className="visit" onClick={() => this.handleButtonClick(6)} />
<Button className="share" onClick={() => this.handleButtonClick(7)} />
<MusicBtn className="musicBtn" />
</div>
);
}
......
......@@ -2,7 +2,7 @@ import { makeAutoObservable, } from 'mobx';
import API from '../api/index';
import { Toast } from "@grace/ui";
import { initWx, IWxShareInfo } from "@/built-in/share/weixin/weixin.ts";
import { _asyncThrottle, _debounce, getUrlParam } from '@/utils/utils';
import { _asyncThrottle, _debounce, getUrlParam, waitTime } from '@/utils/utils';
// import { IBubbleInfo } from "@/pages/HomePage/Top/Components/Bubble.ts";
// import { IOverflowBubbleInfo } from "@/pages/HomePage/Top/Components/OverflowBubble.ts";
import { getDomain } from '@spark/dbdomain';
......@@ -10,6 +10,8 @@ import { showShareGuide } from '@spark/share';
import { ModalCtrl } from '@/core/ctrls/ModalCtrl';
import RankPrizePop from '@/panels/RankPrizePop/RankPrizePop';
import RankNoPrizePop from '@/panels/RankNoPrizePop/RankNoPrizePop';
import RulePop from "../components/rulepop/rulepop.jsx";
import LoginPop from "../components/loginpop/loginpop.jsx"
class Store {
......@@ -24,12 +26,12 @@ class Store {
shareInfo: any,
ruleImg?: string,
} = {
shareInfo: {
title: "",
desc: "",
imgUrl: "",
},
};
shareInfo: {
title: "",
desc: "",
imgUrl: "",
},
};
ruleInfo = '';
......@@ -51,40 +53,57 @@ class Store {
console.log('前端开发配置', data)
}
/** 绑定手机号接口返回状态 */
isApiCheckBack: false
setIsApiCheckBack(status) {
this.isApiCheckBack = status;
}
/** 校验是否绑定手机号 */
async checkBindStatus() {
const { success, data } = await API.checkBind({
appId: getUrlParam("appId"),
dbredirect: encodeURIComponent(window.location.href),
});
console.info("%c data", "font-size: 30px", data);
if (success && data) {
if (data?.bind) {
if (data?.url) {
location.replace(data?.url);
} else {
// 已经绑定过,跳转完后端返回的免登链接时,展示页面
this.setIsApiCheckBack(true); // 助力
return true;
}
} else {
this.setIsApiCheckBack(true);
ModalCtrl.showModal(LoginPop);
}
await waitTime(200);
}
return false;
}
indexData: {
actStartTime?: number,
actEndTime?: number,
currentTime?: number,
guideFlag?: boolean,
creditsNum?: number,
expireDays?: number,
currentStoreNum?: number,
storeLimitNum?: number,
continueSignDays?: number,
todaySignFlag?: boolean,
signRecords?: {
id: string,
day: number,
creditsNum: number,
boolSign: boolean,
}[],
// overflowBubble?: IOverflowBubbleInfo,
// bubbleRecords?: IBubbleInfo[],
returnAwardCreditsNum?: number,
downGoldVo?: {
creditsNum: number,
multipleValue: number,
taskId: string,
url: string,
answerChance?: number,
avatar?: string,
privacyText?: string,
rankPop?: {
prizeName: string | null,
prizeImg: string,
rank: number
},
isAgent:string,
agreePrivacy:boolean,
rulePop?: boolean,
userId?: string,
validUid?: boolean,
boundYkCode?: string,
isAgent?: string,
agreePrivacy?: boolean,
uid?: string,
rank?: any,
} = {};
firstIn = true;
async updateIndex() {
......@@ -110,19 +129,23 @@ class Store {
}
}
if(this.firstIn && data.validUid){
if (this.firstIn && data.validUid) {
API.visit()
this.firstIn = false
}
if(data?.rankPop){
if(data?.rankPop?.prizeName){
ModalCtrl.showModal(RankPrizePop,{
prize:data?.rankPop
if (data.rulePop) {
ModalCtrl.showModal(RulePop)
}
if (data?.rankPop) {
if (data?.rankPop?.prizeName) {
ModalCtrl.showModal(RankPrizePop, {
prize: data?.rankPop
})
}else{
ModalCtrl.showModal(RankNoPrizePop,{
prize:data?.rankPop
} else {
ModalCtrl.showModal(RankNoPrizePop, {
prize: data?.rankPop
})
}
}
......
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