Commit 3f49b6b5 authored by wangzhujun's avatar wangzhujun

首页

parent 4306ec45
...@@ -2,7 +2,7 @@ import { AESDecrypt, AESEncrypt } from "./Crypto"; ...@@ -2,7 +2,7 @@ import { AESDecrypt, AESEncrypt } from "./Crypto";
export default [ export default [
{ {
url: '/home/index.do', url: '/tcs/index.do',
response: ({query}) => { response: ({query}) => {
return { return {
"success": true, "success": true,
......
...@@ -27,7 +27,8 @@ export default [ ...@@ -27,7 +27,8 @@ export default [
"title": '守护权益对对碰', "title": '守护权益对对碰',
"desc": '2025年“3·15”金融消费者权益保护教育宣传活动', "desc": '2025年“3·15”金融消费者权益保护教育宣传活动',
"imgUrl": 'https://yun.duiba.com.cn/polaris/shareImg.721503d9417b09af6346ae018493aec558ca31af.png' "imgUrl": 'https://yun.duiba.com.cn/polaris/shareImg.721503d9417b09af6346ae018493aec558ca31af.png'
} },
shopUrl:'https://'
} }
} }
}, },
......
import {generateAPI} from "./utils" import { generateAPI } from "./utils"
const API = generateAPI({ const API = generateAPI({
/** 获取活动规则 */ /** 获取活动规则 */
...@@ -38,6 +38,26 @@ const API = generateAPI({ ...@@ -38,6 +38,26 @@ const API = generateAPI({
withToken: true, withToken: true,
}, },
guide: "tcs/guide.do", guide: "tcs/guide.do",
rankInfo: 'tcs/rankIndex.do',
drawIndex: 'draw/index.do',
doDraw: {
uri: 'draw/draw.do',
withToken: true,
},
queryTasks: 'task_1/queryTasks.do',
sendPrize: {
uri: 'task_1/sendPrize.do',
withToken: true,
},
getInviteCode: {
uri: 'inviteAssist_1/getInviteCode.do',
withToken: true,
},
doAssist: {
uri: 'inviteAssist_1/doAssist.do',
withToken: true,
},
}) })
......
...@@ -62,6 +62,13 @@ ...@@ -62,6 +62,13 @@
top: 0px; top: 0px;
position: absolute; position: absolute;
.sparkBg("homePage/prizeimg.png"); .sparkBg("homePage/prizeimg.png");
img {
width: 80px;
height: 65px;
left: 0px;
top: 0px;
position: absolute;
}
} }
} }
.rankinfo { .rankinfo {
...@@ -155,14 +162,15 @@ ...@@ -155,14 +162,15 @@
.sparkBg("homePage/mainimg.png"); .sparkBg("homePage/mainimg.png");
} }
.mainnum { .mainnum {
width: 182px; width: 474px;
height: 24px; height: 24px;
left: 151px; left: 0px;
top: 80px; top: 80px;
text-align: center;
position: absolute; position: absolute;
font-size: 25px; font-size: 25px;
line-height: 24px; line-height: 24px;
color: rgba(240, 35, 96, 1); color: #fffffa;
} }
} }
.shopbtn { .shopbtn {
...@@ -202,10 +210,11 @@ ...@@ -202,10 +210,11 @@
.sparkBg("homePage/drawNumbg.png"); .sparkBg("homePage/drawNumbg.png");
} }
.drawnumlab { .drawnumlab {
width: 20px; width: 28px;
height: 16px; height: 16px;
left: 9px; left: 0px;
top: 6px; top: 6px;
text-align: center;
position: absolute; position: absolute;
font-size: 21px; font-size: 21px;
line-height: 16px; line-height: 16px;
......
...@@ -2,7 +2,7 @@ import React from 'react'; ...@@ -2,7 +2,7 @@ import React from 'react';
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
import './HomePage.less'; import './HomePage.less';
import { Button } from "@grace/ui"; import { Button } from "@grace/ui";
import { _asyncThrottle } from "@/utils/utils.ts"; import { _asyncThrottle, miniGoUrl } from "@/utils/utils.ts";
import store from "@/store/store.ts"; import store from "@/store/store.ts";
import { SvgaPlayer } from "@grace/svgaplayer"; import { SvgaPlayer } from "@grace/svgaplayer";
import homeSvga from "@/assets/svga/1输出首页氛围.svga"; import homeSvga from "@/assets/svga/1输出首页氛围.svga";
...@@ -14,6 +14,7 @@ import RulePanel from "@/panels/RulePanel/RulePanel.tsx"; ...@@ -14,6 +14,7 @@ import RulePanel from "@/panels/RulePanel/RulePanel.tsx";
import { PageCtrl } from "@/core/ctrls/PageCtrl.tsx"; import { PageCtrl } from "@/core/ctrls/PageCtrl.tsx";
import GamePage from "@/pages/GamePage/GamePage.tsx"; import GamePage from "@/pages/GamePage/GamePage.tsx";
import musicStore from '@/store/musicStore'; import musicStore from '@/store/musicStore';
import Drawpop from '@/components/drawpop/drawpop';
@observer @observer
class HomePage extends React.Component<any, any> { class HomePage extends React.Component<any, any> {
...@@ -46,23 +47,30 @@ class HomePage extends React.Component<any, any> { ...@@ -46,23 +47,30 @@ class HomePage extends React.Component<any, any> {
clickRule = () => { clickRule = () => {
ModalCtrl.showModal(RulePanel); ModalCtrl.showModal(RulePanel);
} }
clickDraw = () => {
ModalCtrl.showModal(Drawpop, {});
}
clickShop = () => {
miniGoUrl(store.frontVariable.shopUrl)
}
render() { render() {
const { remainTimes, remainDrawTimes, rank } = store.indexData
const { remainTimes } = store.indexData
return <div className="homepage" ref={(el) => this.root = el}> return <div className="homepage" ref={(el) => this.root = el}>
<span className="bg"></span> <span className="bg"></span>
<div className="infobox"> <div className="infobox">
<span className="infobg"></span> <span className="infobg"></span>
<div className="prizeingo"> <div className="prizeingo">
<span className="prizename">奖品名称文案占位</span> <span className="prizename">{rank?.prizeName}</span>
<span className="prizerank">前50名可得</span> <span className="prizerank">前50名可得</span>
<span className="prizeimg"></span> <span className="prizeimg">
<img src={rank?.prizeImg}></img>
</span>
</div> </div>
<div className="rankinfo"> <div className="rankinfo">
<span className="rankarr"></span> <span className="rankarr"></span>
<span className="ranklab">我的排名</span> <span className="ranklab">我的排名</span>
<span className="ranknum">86名</span> <span className="ranknum">{rank?.rank == -1 ? "未上榜" : rank?.rank + "名"}</span>
</div> </div>
</div> </div>
<span className="title"></span> <span className="title"></span>
...@@ -71,18 +79,18 @@ class HomePage extends React.Component<any, any> { ...@@ -71,18 +79,18 @@ class HomePage extends React.Component<any, any> {
{/* <span className="musicon"></span> {/* <span className="musicon"></span>
<span className="musicf"></span> */} <span className="musicf"></span> */}
<MusicBtn className={`${musicStore.mute ? 'musicf' : 'musicon'}`}></MusicBtn> <MusicBtn className={`${musicStore.mute ? 'musicf' : 'musicon'}`}></MusicBtn>
<div className="mainbtn"> <Button className="mainbtn" onClick={this.startGame}>
<span className="mainimg"></span> <span className="mainimg"></span>
<span className="mainnum">剩余次数:3</span> <span className="mainnum">剩余次数:{remainTimes || 0}</span>
</div> </Button>
<span className="shopbtn"></span> <Button className="shopbtn" onClick={this.clickShop}></Button>
<div className="drawbtn"> <Button className="drawbtn" onClick={this.clickDraw}>
<span className="drawimg"></span> <span className="drawimg"></span>
<div className="drawnum"> <div className="drawnum">
<span className="drawnumbg"></span> <span className="drawnumbg"></span>
<span className="drawnumlab">1</span> <span className="drawnumlab">{remainDrawTimes || 0}</span>
</div> </div>
</div> </Button>
<div className="tasklist"> <div className="tasklist">
<div className="taskitem"> <div className="taskitem">
<span className="taskbg"></span> <span className="taskbg"></span>
......
...@@ -14,16 +14,17 @@ class Store { ...@@ -14,16 +14,17 @@ class Store {
privacyTxt: string, privacyTxt: string,
prizeInfoAuthTxt: string, prizeInfoAuthTxt: string,
shareInfo: IWxShareInfo, shareInfo: IWxShareInfo,
shopUrl?: string,
} = { } = {
privacyTxt: "", privacyTxt: "",
prizeInfoAuthTxt: "", prizeInfoAuthTxt: "",
shareInfo: { shareInfo: {
title: "", title: "",
desc: "", desc: "",
link: "", link: "",
imgUrl: "", imgUrl: "",
}, },
}; };
ruleInfo = ''; ruleInfo = '';
...@@ -45,9 +46,22 @@ class Store { ...@@ -45,9 +46,22 @@ class Store {
indexData: { indexData: {
remainTimes?: number, remainTimes?: number,
uid?: string, uid?: string,
endTime?: number, actEndTimestamp?: number,
timeStamp?: number, timeStamp?: number,
startTime?: number, actStartTimestamp?: number,
remainDrawTimes?: number,
newAssist?: number,
rankPopInfo?: {
sendPrize: boolean,
prizeName: string,
prizeImg: string,
rank: number
},
rank?: {
rank: number,
prizeName: string,
prizeImg: string,
}
} = {}; } = {};
async updateIndex() { async updateIndex() {
...@@ -60,10 +74,10 @@ class Store { ...@@ -60,10 +74,10 @@ class Store {
} }
judgeActTime(brakeStart = true, brakeEnd = true) { judgeActTime(brakeStart = true, brakeEnd = true) {
if (brakeStart && this.indexData.timeStamp < this.indexData.startTime) { if (brakeStart && this.indexData.timeStamp < this.indexData.actStartTimestamp) {
Toast.show("活动未开始,敬请期待"); Toast.show("活动未开始");
return false return false
} else if (brakeEnd && this.indexData.timeStamp > this.indexData.endTime) { } else if (brakeEnd && this.indexData.timeStamp > this.indexData.actEndTimestamp) {
Toast.show("活动已结束"); Toast.show("活动已结束");
return false return false
} }
......
...@@ -418,3 +418,11 @@ export const getCustomShareId = () => { ...@@ -418,3 +418,11 @@ export const getCustomShareId = () => {
export function prefixInteger(num: number, length: number) { export function prefixInteger(num: number, length: number) {
return (Array(length).join('0') + num).slice(-length); return (Array(length).join('0') + num).slice(-length);
} }
/**
* @description: 小程序跳转
* @param {*}
* @return {*}
*/
export const miniGoUrl = (url) => {
wx.miniProgram.navigateTo({ url: url });
}
\ No newline at end of file
...@@ -13,6 +13,9 @@ import cssnano from 'cssnano'; ...@@ -13,6 +13,9 @@ import cssnano from 'cssnano';
// https://vitejs.dev/config/ // https://vitejs.dev/config/
export default defineConfig(({mode}): UserConfig => { export default defineConfig(({mode}): UserConfig => {
console.log(mode);
dotenv.config({path: [`./config/.env.global`, `./config/.env.${mode}`]}); dotenv.config({path: [`./config/.env.global`, `./config/.env.${mode}`]});
const { const {
......
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