Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
LuzhouLaojiaoSnake_250428
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
SparkProjects
LuzhouLaojiaoSnake_250428
Commits
3f49b6b5
Commit
3f49b6b5
authored
May 07, 2025
by
wangzhujun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
首页
parent
4306ec45
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
98 additions
and
35 deletions
+98
-35
home.ts
mock/home.ts
+1
-1
index.ts
mock/index.ts
+2
-1
index.ts
src/api/index.ts
+21
-1
drawnoprizepop.tsx
src/components/drawnoprizepop/drawnoprizepop.tsx
+0
-0
drawpop.tsx
src/components/drawpop/drawpop.tsx
+0
-0
drawprizepop.tsx
src/components/drawprizepop/drawprizepop.tsx
+0
-0
endprizepop.tsx
src/components/endprizepop/endprizepop.tsx
+0
-0
ennoprizepop.tsx
src/components/ennoprizepop/ennoprizepop.tsx
+0
-0
posterpop.tsx
src/components/posterpop/posterpop.tsx
+0
-0
quitpop.tsx
src/components/quitpop/quitpop.tsx
+0
-0
ranknoprizepop.tsx
src/components/ranknoprizepop/ranknoprizepop.tsx
+0
-0
rankprizepop.tsx
src/components/rankprizepop/rankprizepop.tsx
+0
-0
rulepop.tsx
src/components/rulepop/rulepop.tsx
+0
-0
HomePage.less
src/pages/HomePage/HomePage.less
+14
-5
HomePage.tsx
src/pages/HomePage/HomePage.tsx
+21
-13
store.ts
src/store/store.ts
+28
-14
utils.ts
src/utils/utils.ts
+8
-0
vite.config.ts
vite.config.ts
+3
-0
No files found.
mock/home.ts
View file @
3f49b6b5
...
@@ -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
,
...
...
mock/index.ts
View file @
3f49b6b5
...
@@ -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://'
}
}
}
}
},
},
...
...
src/api/index.ts
View file @
3f49b6b5
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
,
},
})
})
...
...
src/components/drawnoprizepop/drawnoprizepop.
j
sx
→
src/components/drawnoprizepop/drawnoprizepop.
t
sx
View file @
3f49b6b5
File moved
src/components/drawpop/drawpop.
j
sx
→
src/components/drawpop/drawpop.
t
sx
View file @
3f49b6b5
File moved
src/components/drawprizepop/drawprizepop.
j
sx
→
src/components/drawprizepop/drawprizepop.
t
sx
View file @
3f49b6b5
File moved
src/components/endprizepop/endprizepop.
j
sx
→
src/components/endprizepop/endprizepop.
t
sx
View file @
3f49b6b5
File moved
src/components/ennoprizepop/ennoprizepop.
j
sx
→
src/components/ennoprizepop/ennoprizepop.
t
sx
View file @
3f49b6b5
File moved
src/components/posterpop/posterpop.
j
sx
→
src/components/posterpop/posterpop.
t
sx
View file @
3f49b6b5
File moved
src/components/quitpop/quitpop.
j
sx
→
src/components/quitpop/quitpop.
t
sx
View file @
3f49b6b5
File moved
src/components/ranknoprizepop/ranknoprizepop.
j
sx
→
src/components/ranknoprizepop/ranknoprizepop.
t
sx
View file @
3f49b6b5
File moved
src/components/rankprizepop/rankprizepop.
j
sx
→
src/components/rankprizepop/rankprizepop.
t
sx
View file @
3f49b6b5
File moved
src/components/rulepop/rulepop.
j
sx
→
src/components/rulepop/rulepop.
t
sx
View file @
3f49b6b5
File moved
src/pages/HomePage/HomePage.less
View file @
3f49b6b5
...
@@ -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:
182
px;
width:
474
px;
height: 24px;
height: 24px;
left:
151
px;
left:
0
px;
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: 2
0
px;
width: 2
8
px;
height: 16px;
height: 16px;
left:
9
px;
left:
0
px;
top: 6px;
top: 6px;
text-align: center;
position: absolute;
position: absolute;
font-size: 21px;
font-size: 21px;
line-height: 16px;
line-height: 16px;
...
...
src/pages/HomePage/HomePage.tsx
View file @
3f49b6b5
...
@@ -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"
></
spa
n
>
<
Button
className=
"shopbtn"
onClick=
{
this
.
clickShop
}
></
Butto
n
>
<
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
>
...
...
src/store/store.ts
View file @
3f49b6b5
...
@@ -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
}
}
...
...
src/utils/utils.ts
View file @
3f49b6b5
...
@@ -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
vite.config.ts
View file @
3f49b6b5
...
@@ -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
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment