Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
taobao-mini-template
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
2
Issues
2
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
qinhaitao
taobao-mini-template
Commits
7ef34a85
Commit
7ef34a85
authored
Sep 01, 2021
by
mqf_0707
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
常用模块拆分
parent
7c0fc16b
Changes
39
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
39 changed files
with
568 additions
and
735 deletions
+568
-735
.DS_Store
.DS_Store
+0
-0
default.js
c_client/config/default.js
+1
-1
api.js
c_client/src/api.js
+14
-1
app.config.js
c_client/src/app.config.js
+1
-1
app.js
c_client/src/app.js
+1
-1
ContainerFit.jsx
c_client/src/components/_base/ContainerFit/ContainerFit.jsx
+17
-0
ContainerFit.module.less
...rc/components/_base/ContainerFit/ContainerFit.module.less
+28
-0
game.js
c_client/src/components/_miniprogram/game/game.js
+22
-143
memberModal.axml
.../src/components/_miniprogram/memberModal/memberModal.axml
+1
-1
memberModal.js
...nt/src/components/_miniprogram/memberModal/memberModal.js
+3
-3
GoodsList.module.less
.../src/components/_tb_comps/GoodsList/GoodsList.module.less
+78
-78
GoodsTitle.module.less
...rc/components/_tb_comps/GoodsTitle/GoodsTitle.module.less
+0
-5
TitleImg.jsx
c_client/src/components/_tb_comps/TitleImg/TitleImg.jsx
+15
-0
TitleImg.module.less
...nt/src/components/_tb_comps/TitleImg/TitleImg.module.less
+7
-0
PrizeModal.jsx
c_client/src/components/_tb_modal/PrizeModal/PrizeModal.jsx
+1
-1
TasksModal.jsx
c_client/src/components/_tb_modal/TasksModal/TasksModal.jsx
+11
-10
browse.config.js
c_client/src/config/browse.config.js
+14
-0
cart.config.js
c_client/src/config/cart.config.js
+20
-0
collect.config.js
c_client/src/config/collect.config.js
+15
-0
config.js
c_client/src/config/config.js
+8
-0
index.js
c_client/src/config/index.js
+1
-6
myPrize.config.js
c_client/src/config/myPrize.config.js
+66
-0
order.config.js
c_client/src/config/order.config.js
+14
-0
task.config.js
c_client/src/config/task.config.js
+56
-0
const.js
c_client/src/const.js
+0
-106
useLogin.js
c_client/src/hooks/useLogin.js
+1
-1
index.jsx
c_client/src/pages/index/index.jsx
+7
-18
index.module.less
c_client/src/pages/index/index.module.less
+0
-3
game.jsx
c_client/src/pages/packageGame/game/game.jsx
+31
-37
browseGoods.jsx
c_client/src/pages/packageGood/browseGoods/browseGoods.jsx
+12
-33
browseGoods.module.less
...src/pages/packageGood/browseGoods/browseGoods.module.less
+2
-12
cartGoods.jsx
c_client/src/pages/packageGood/cartGoods/cartGoods.jsx
+21
-43
cartGoods.module.less
...ent/src/pages/packageGood/cartGoods/cartGoods.module.less
+2
-12
collectGoods.jsx
c_client/src/pages/packageGood/collectGoods/collectGoods.jsx
+10
-32
collectGoods.module.less
...c/pages/packageGood/collectGoods/collectGoods.module.less
+2
-12
orderGoods.jsx
c_client/src/pages/packageGood/orderGoods/orderGoods.jsx
+11
-31
orderGoods.module.less
...t/src/pages/packageGood/orderGoods/orderGoods.module.less
+2
-12
myPrize.jsx
c_client/src/pages/packagePrize/myPrize/myPrize.jsx
+59
-91
myPrize.module.less
c_client/src/pages/packagePrize/myPrize/myPrize.module.less
+14
-41
No files found.
.DS_Store
View file @
7ef34a85
No preview for this file type
c_client/config/default.js
View file @
7ef34a85
export
default
{
hasCanvas
:
fals
e
,
// 是否开启游戏模块自动注入dist
hasCanvas
:
tru
e
,
// 是否开启游戏模块自动注入dist
defaultPlugins
:
[
[
'@pluve/taro-plugin-mars'
,
// taro暂时未支持阿里小程序自定义插件 需要引用插件的页面需配置
...
...
c_client/src/api.js
View file @
7ef34a85
import
cloud
from
'@tbmp/mp-cloud-sdk'
import
tbccTs
from
'tbcc-sdk-ts'
import
conifg
from
'./config/
index
'
import
conifg
from
'./config/
config
'
const
{
utils
:
{
generateAPI
},
request
:
tbccRequest
,
capi
,
capiFn
}
=
tbccTs
const
{
cloudName
,
requestType
}
=
conifg
...
...
@@ -38,6 +38,19 @@ const apiList = {
getCollectGoodsList
:
'getCollectGoodsList'
,
getItemListByItemIds
:
'getItemListByItemIds'
,
updateEnamePrizeReceived
:
'updateEnamePrizeReceived'
,
// 会员权益领取
getMyPrizeList
:
'getMyAwardsList'
,
receiveObjectPrize
:
{
handle
:
'recieveObjectPrize'
,
method
:
'GET'
,
isShowLoading
:
false
,
toastError
:
false
},
receiveEnamePrize
:
{
handle
:
'recieveEnamePrize'
,
method
:
'GET'
,
isShowLoading
:
false
,
toastError
:
false
}
}
// 生成API
...
...
c_client/src/app.config.js
View file @
7ef34a85
...
...
@@ -33,7 +33,7 @@ export default {
enableSkia
:
'true'
,
allowsBounceVertical
:
'NO'
,
navigationBarTitleText
:
'活动名称'
,
navigationBarForceEnable
:
tru
e
navigationBarForceEnable
:
fals
e
},
plugins
:
{
cemMember
:
{
...
...
c_client/src/app.js
View file @
7ef34a85
...
...
@@ -4,7 +4,7 @@ import './app.less'
// 使用taro-ui 按需引入的组件样式
import
'./taro-ui.scss'
import
config
from
'./config/
index
'
import
config
from
'./config/
config
'
import
'./utils/mdProxy'
const
{
env
,
tornadoAPI
,
defaultActivityId
}
=
config
...
...
c_client/src/components/_base/ContainerFit/ContainerFit.jsx
0 → 100644
View file @
7ef34a85
import
{
View
}
from
'@tarojs/components'
import
React
from
'react'
import
styles
from
'./ContainerFit.module.less'
export
default
function
ContainerFit
(
props
)
{
const
{
bg
=
''
}
=
props
return
(
<
View
className=
{
styles
[
'page-container'
]
}
>
<
View
className=
{
styles
[
'page-psd-container'
]
}
style=
{
{
background
:
`url(${bg}) no-repeat`
,
backgroundSize
:
'7.5rem 16.24rem'
}
}
>
<
View
className=
{
styles
[
'page-content'
]
}
>
{
props
.
children
}
</
View
>
</
View
>
</
View
>
)
}
\ No newline at end of file
c_client/src/components/_base/ContainerFit/ContainerFit.module.less
0 → 100644
View file @
7ef34a85
.page-container {
position: relative;
top: 0;
right: 0;
left: 0;
width: 100vw;
height: 100vh;
min-height: 100vh;
overflow: hidden;
}
.page-psd-container {
position: absolute;
width: 100vw;
height: 1624px;
left: 0;
right: 0;
top: 50%;
transform: translate(0,-50%);
}
.page-content {
position: absolute;
width: 100vw;
height: 100vh;
left: 0;
right: 0;
top: 50%;
transform: translate(0,-50%);
}
\ No newline at end of file
c_client/src/components/_miniprogram/game/game.js
View file @
7ef34a85
...
...
@@ -5,28 +5,26 @@ import { Main } from './output';
const
app
=
getApp
()
Component
({
isUpdateFlag
:
true
,
data
:
{
needDataInCanvas
:
{}
},
didMount
(
query
)
{
data
:
{},
props
:
{
data
:
{}
},
didMount
(
query
)
{},
didUpdate
(
preProps
,
preData
)
{
// 实时监听数据更新
const
{
updateFlag
,
netName
,
updateD
ata
}
=
this
.
props
const
{
updateFlag
,
d
ata
}
=
this
.
props
if
(
updateFlag
!==
1
&&
updateFlag
!==
preProps
.
updateFlag
)
{
// this.postMessage(netName, updateData)
console
.
warn
(
'数据更新了'
)
this
.
postMessage
(
data
.
type
,
data
)
}
},
didUnMount
()
{
// 页面被关闭
this
.
main
&&
this
.
main
.
destroy
();
},
methods
:
{
onCanvasReady
()
{
console
.
log
(
"进canvas了"
)
// 创建Main,授权登录完后才创建
this
.
createMain
();
},
//创建引入的Main
createMain
()
{
const
self
=
this
;
my
.
createCanvas
({
id
:
'canvas'
,
...
...
@@ -41,12 +39,10 @@ Component({
if
(
!
this
.
main
)
{
try
{
this
.
main
=
new
Main
(
ccc
)
//添加事件,为了和main里的通信
this
.
main
.
addGlobalEvent
(
"onMessage"
,
self
.
onMessage
,
self
)
}
catch
(
err
)
{
console
.
error
(
err
)
}
}
}
...
...
@@ -58,145 +54,28 @@ Component({
let
netName
=
e
.
data
.
netName
;
//接口参数
let
parameter
=
e
.
data
.
parameter
;
//暂时发现3个需要用户操作的接口
//定制的授权
if
(
netName
==
"mine.authorize"
)
{
this
.
getAuth
()
}
//获取地址
else
if
(
netName
==
"mine.getUserAddress"
)
{
this
.
getUserAddress
(
parameter
.
prizeId
)
}
//关注店铺的操作
else
if
(
netName
==
"mine.favorShop"
)
{
this
.
doFavorShop
()
}
//领养名字,有弹框的
else
if
(
netName
==
"mine.getAdoptName"
)
{
this
.
setData
({
"adoptModalVisible"
:
true
,
type
:
parameter
.
type
})
}
//打开详情页,还有成功失败
else
if
(
netName
==
"mine.openDetail"
)
{
openDetail
(
parameter
.
itemId
).
then
(
()
=>
{
this
.
postMessage
(
netName
,
{
success
:
true
})
if
(
netName
.
indexOf
(
"mine"
)
==
0
)
{
// 和游戏页面通信
this
.
props
.
onMessage
({
type
:
'message'
,
target
:
{
id
:
this
.
props
.
id
},
()
=>
{
this
.
postMessage
(
netName
,
{
success
:
false
})
data
:
{
netName
,
parameter
}
)
})
}
else
{
this
.
postMessage
(
netName
,
{
success
:
false
})
}
//前端同步接口
else
if
(
netName
.
indexOf
(
"mine"
)
==
0
)
{
var
data
=
{
success
:
true
}
switch
(
netName
)
{
case
"mine.getAppData"
:
//获取信息
data
=
{
success
:
true
,
data
:
{
activityId
:
app
.
activityId
,
//|| "5e7c40e98564b57d7fb95812",
nickName
:
app
.
nickName
,
avatar
:
app
.
avatar
,
openId
:
app
.
openId
,
inviteId
:
this
.
inviteId
,
//判断是否要发助力用
isFollow
:
app
.
isFollow
,
needDataInCanvas
:
app
.
needDataInCanvas
,
activityInfo
:
this
.
activityInfo
,
userInfo
:
this
.
userInfo
,
newUser
:
this
.
newUser
,
remainTimes
:
this
.
remainTimes
,
firstLoginToday
:
this
.
firstLoginToday
,
}
}
break
;
case
"mine.navigateToOutside"
:
//跳转小程序外的页面
my
.
call
(
"navigateToOutside"
,
{
url
:
parameter
.
url
},
(
res
)
=>
{
// my.alert({ content: "success - " + JSON.stringify(res)})
})
console
.
log
(
parameter
.
url
)
break
;
case
"mine.navigateTo"
:
//跳转小程序内的页面
my
.
navigateTo
({
url
:
parameter
.
url
})
break
;
case
"mine.navigateBack"
:
//返回页面
my
.
navigateBack
({
delta
:
parameter
.
delta
||
1
})
break
;
case
"mine.showSharePanel"
:
//分享
//多一个参数
this
.
openId
=
parameter
.
openId
;
my
.
showSharePanel
()
break
;
case
"mine.reportAnalytics"
:
////淘宝自定义埋点
reportAnalytics
(
parameter
.
logkey
);
break
;
case
"mine.openMusic"
:
//音频
playBgMusic
(
parameter
.
isOn
,
this
.
musicUrl
);
break
;
case
"mine.openTask"
:
//打开任务
this
.
setData
({
taskModalVisible
:
true
});
break
;
case
"mine.openMember"
:
//打开入会
this
.
setData
({
expend
:
true
,
});
break
;
}
this
.
postMessage
(
netName
,
data
)
}
else
{
//获取后端接口
const
{
function
:
fc
}
=
app
.
cloud
;
//处理下带上activityId
if
(
!
parameter
)
parameter
=
{};
parameter
.
activityId
=
app
.
activityId
;
//netName得分割下
fc
.
invoke
(
netName
.
split
(
"."
)[
0
],
parameter
,
netName
.
split
(
"."
)[
1
])
.
then
(
res
=>
{
// console.log("返回数据" + JSON.stringify(res));
//发送消息
this
.
postMessage
(
netName
,
res
||
{
success
:
false
})
},
(
err
)
=>
{
//网络异常,返回失败
this
.
postMessage
(
netName
,
{
success
:
false
})
})
}
},
//和main通信的方法,接收main的信息
onMessage2
(
e
)
{
// this.props.onPostMessage({
// type: 'postMessage',
// target: {
// id: this.props.id
// },
// data: e.data
// })
},
postMessage
(
netName
,
data
)
{
// this.main.dispatchGlobalEvent(netName, data)
this
.
main
&&
this
.
main
.
dispatchGlobalEvent
({
type
:
netName
},
data
)
//以防复用事件event串了,就用这种方式
},
//鼠标事件
onMouseEvent
(
e
)
{
if
(
this
.
main
)
this
.
main
.
stage
.
onMouseEvent
(
e
)
},
// 发送数据
onPostMessage
()
{
this
.
props
.
onPostMessage
({
type
:
'postMessage'
,
target
:
{
id
:
this
.
props
.
id
},
data
:
{
a
:
222
,
b
:
33
}
})
}
}
});
c_client/src/components/_miniprogram/memberModal/memberModal.axml
View file @
7ef34a85
<member-shop-center expend="{{
true
}}" onClose="onMemberModalClose" onAuthFail="onAuthFail" onAuthSuccess="onAuthSuccess"/>
<member-shop-center expend="{{
expend}}" sellerId="{{sellerId
}}" onClose="onMemberModalClose" onAuthFail="onAuthFail" onAuthSuccess="onAuthSuccess"/>
c_client/src/components/_miniprogram/memberModal/memberModal.js
View file @
7ef34a85
Component
({
data
:
{
visible
:
true
},
data
:
{
},
props
:
{
expend
:
false
,
sellerId
:
''
},
didMount
(){
},
methods
:
{
onMemberModalClose
()
{
// console.log('this.props :>> ', this.props);
...
...
c_client/src/components/_tb_comps/GoodsList/GoodsList.module.less
View file @
7ef34a85
.container__scroll {
height: 100%;
}
.container__content-list {
width: 100%;
display: flex;
flex-wrap: wrap;
}
.content-item {
width: 340px;
height: 510px;
background: #fff;
margin-bottom: 20px;
}
.content-item:nth-child(even) {
margin-left: 20px;
}
.item__img {
width: 340px;
height: 340px;
background: #e1e1e1;
}
.item__img image {
width: 100%;
height: 100%;
}
.item__name {
margin: 25px 0 31px 21px;
width: 310px;
height: 60px;
font-size: 24px;
font-family: PingFang SC;
font-weight: 400;
color: rgba(24, 24, 24, 1);
line-height: 30px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.item__price {
padding: 0 31px 0 24px;
display: flex;
justify-content: space-between;
}
.item__price-num {
font-size: 32px;
font-family: PingFang SC;
font-weight: 600;
color: rgba(255, 42, 0, 1);
}
.item__price-num text {
font-size: 24px;
margin-right: 2px;
}
.item__price-collect {
width: 118px;
height: 31px;
background-size: 100% 100%;
}
.item__price-collect image {
width: 100%;
height: 100%;
}
.item__price-no-collect {
width: 30px;
height: 30px;
}
.item__price-no-collect image {
width: 100%;
height: 100%;
}
.goods-modal-timer {
width: 147px;
height: 223px;
position: absolute;
top: 502px;
right: 19px;
background: #eee;
}
height: 100%;
}
.container__content-list {
width: 100%;
display: flex;
flex-wrap: wrap;
}
.content-item {
width: 340px;
height: 510px;
background: #fff;
margin-bottom: 20px;
}
.content-item:nth-child(even) {
margin-left: 20px;
}
.item__img {
width: 340px;
height: 340px;
background: #e1e1e1;
}
.item__img image {
width: 100%;
height: 100%;
}
.item__name {
margin: 25px 0 31px 21px;
width: 310px;
height: 60px;
font-size: 24px;
font-family: PingFang SC;
font-weight: 400;
color: rgba(24, 24, 24, 1);
line-height: 30px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.item__price {
padding: 0 31px 0 24px;
display: flex;
justify-content: space-between;
}
.item__price-num {
font-size: 32px;
font-family: PingFang SC;
font-weight: 600;
color: rgba(255, 42, 0, 1);
}
.item__price-num text {
font-size: 24px;
margin-right: 2px;
}
.item__price-collect {
width: 118px;
height: 31px;
background-size: 100% 100%;
}
.item__price-collect image {
width: 100%;
height: 100%;
}
.item__price-no-collect {
width: 30px;
height: 30px;
}
.item__price-no-collect image {
width: 100%;
height: 100%;
}
.goods-modal-timer {
width: 147px;
height: 223px;
position: absolute;
top: 502px;
right: 19px;
background: #eee;
}
\ No newline at end of file
c_client/src/components/_tb_comps/GoodsTitle/GoodsTitle.module.less
deleted
100644 → 0
View file @
7c0fc16b
.goods-title {
.wh(100%,100%);
.flex-row-center();
.flex-row-middle();
}
\ No newline at end of file
c_client/src/components/_tb_comps/
GoodsTitle/GoodsTitle
.jsx
→
c_client/src/components/_tb_comps/
TitleImg/TitleImg
.jsx
View file @
7ef34a85
import
React
,
{
useState
}
from
'react'
import
{
View
,
Image
,
ScrollView
}
from
'@tarojs/components'
import
classnames
from
'classnames'
import
styles
from
'./
GoodsTitle
.module.less'
import
styles
from
'./
TitleImg
.module.less'
function
GoodsTitle
(
props
)
{
function
TitleImg
(
props
)
{
const
{
config
}
=
props
return
(
<
View
className=
{
styles
[
'
goods-title
'
]
}
>
<
Image
src=
{
config
.
image
}
style=
{
{
width
:
config
.
width
/
100
+
'rem'
,
height
:
config
.
height
/
100
+
'rem'
}
}
/>
<
View
className=
{
styles
[
'
title-box
'
]
}
>
<
Image
src=
{
config
.
image
}
mode=
"widthFix"
style=
{
{
width
:
config
.
width
/
100
+
'rem'
,
height
:
config
.
height
/
100
+
'rem'
}
}
/>
</
View
>
)
}
export
default
GoodsTitle
\ No newline at end of file
export
default
TitleImg
\ No newline at end of file
c_client/src/components/_tb_comps/TitleImg/TitleImg.module.less
0 → 100644
View file @
7ef34a85
.title-box {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
\ No newline at end of file
c_client/src/components/_tb_modal/PrizeModal/PrizeModal.jsx
View file @
7ef34a85
...
...
@@ -3,7 +3,7 @@ import React, { useState } from 'react'
import
Modal
from
'@/components/_base/Modal/Modal'
import
{
useThrottle
}
from
'@/hooks/useThrottle'
import
styles
from
'./PrizeModal.module.less'
import
{
BENEFIT_TYPE
,
PRIZE_TYPE
}
from
'@/con
st
'
import
{
BENEFIT_TYPE
,
PRIZE_TYPE
}
from
'@/con
fig/myPrize.config
'
import
{
checkIsMember
}
from
'tbcc-sdk-ts/lib/utils'
import
{
commonToast
,
navigateToOutside
}
from
'tbcc-sdk-ts/lib/core/tb'
import
{
receiveEnamePrize
,
receiveObjectPrize
,
receiveMemberEname
}
from
'@/utils/util'
...
...
c_client/src/components/_tb_modal/TasksModal/TasksModal.jsx
View file @
7ef34a85
...
...
@@ -3,14 +3,15 @@ import React, { useState, useEffect, useRef } from 'react'
import
{
noopFn
}
from
'@/utils/util'
import
tbccTs
from
'tbcc-sdk-ts'
import
API
from
'@/api'
import
config
from
'@/config/
index
'
import
config
from
'@/config/
config
'
import
{
useThrottle
}
from
'@/hooks/useThrottle'
import
Popup
from
'@/components/_base/Popup/Popup'
import
{
TASK_STATUS
,
TASK_CONFIG
,
SHOP_ID
,
BROSE_GOOD_TYPE
,
ORDER_GOOD_TYPE
}
from
'@/const'
import
{
SHOP_ID
}
from
'@/const'
import
styles
from
'./TasksModal.module.less'
import
{
useDidShow
}
from
'@tarojs/taro'
import
{
TASK_DATA
}
from
'@/mock'
import
{
checkIsMember
}
from
'tbcc-sdk-ts/lib/utils'
import
{
TASK_CONFIG
,
ORDER_GOOD_TYPE
,
BROSE_GOOD_TYPE
,
TASK_STATUS
}
from
'@/config/task.config'
const
{
commonToast
,
favorShop
,
navigateTo
,
navigateToOutside
,
showSharePanel
,
navigateToTaobaoPage
}
=
tbccTs
.
tb
...
...
@@ -22,7 +23,7 @@ export default function TasksModal(props) {
const
preBrowseTime
=
useRef
(
null
)
const
[
taskList
,
setTaskList
]
=
useState
(
TASK_DATA
)
const
{
taskIcon
,
commonTaskTxt
,
doTaskTxt
,
jumpLinkType
,
browseTime
,
showTaskType
,
browseGoodType
,
orderGood
Type
}
=
TASK_CONFIG
const
{
icons
,
commonTxt
,
doTxt
,
jumpType
,
browseTime
,
showTaskType
,
browseType
,
order
Type
}
=
TASK_CONFIG
useDidShow
(()
=>
{
if
(
app
.
isFlashTask
)
{
...
...
@@ -41,7 +42,7 @@ export default function TasksModal(props) {
useEffect
(()
=>
{
if
(
showTaskType
===
2
&&
taskFlag
)
{
fetchTaskList
()
}
else
{
}
else
if
(
showTaskType
===
1
)
{
fetchTaskList
()
}
},[
taskFlag
])
...
...
@@ -51,7 +52,7 @@ export default function TasksModal(props) {
const
{
success
,
data
}
=
await
API
.
getTaskList
({
isVip
})
if
(
success
&&
data
)
{
const
{
list
=
[]
}
=
data
setTaskList
(
list
)
//
setTaskList(list)
}
}
...
...
@@ -88,7 +89,7 @@ export default function TasksModal(props) {
// 跳转任务 https://www.feizhu.com
jumpLink
:
async
()
=>
{
navigateToOutside
(
url
)
if
(
jump
Link
Type
===
2
)
{
if
(
jumpType
===
2
)
{
doCompleteTaskHandle
(
taskType
)
}
else
{
app
.
isFlashTask
=
true
...
...
@@ -98,12 +99,12 @@ export default function TasksModal(props) {
},
browseGoods
:
async
()
=>
{
app
.
isFlashTask
=
true
if
(
browse
Good
Type
===
BROSE_GOOD_TYPE
.
PAGE
)
preBrowseTime
.
current
=
Date
.
now
()
if
(
browseType
===
BROSE_GOOD_TYPE
.
PAGE
)
preBrowseTime
.
current
=
Date
.
now
()
navigateTo
(
`/pages/packageGood/browseGoods/browseGoods?itemIds=
${
itemIds
}
&keepTime=
${
keepTime
}
`
)
},
orderGoods
:
async
()
=>
{
app
.
isFlashTask
=
true
if
(
order
Good
Type
===
ORDER_GOOD_TYPE
.
PAGE
)
{
if
(
orderType
===
ORDER_GOOD_TYPE
.
PAGE
)
{
navigateTo
(
`/pages/packageGood/orderGoods/orderGoods?itemIds=
${
itemIds
}
`
)
}
else
{
await
navigateToTaobaoPage
(
SHOP_ID
)
...
...
@@ -158,7 +159,7 @@ export default function TasksModal(props) {
return
(
<
View
className=
{
styles
[
'item'
]
}
key=
{
'task_I'
+
i
}
>
<
View
className=
{
styles
[
'item__left'
]
}
>
<
Image
src=
{
taskIcon
[
item
.
taskType
]
}
mode=
'widthFix'
/>
<
Image
src=
{
icons
[
item
.
taskType
]
}
mode=
'widthFix'
/>
</
View
>
<
View
className=
{
styles
[
'item__left-label'
]
}
>
<
View
className=
{
styles
[
'item__left-title'
]
}
>
{
item
.
title
}
</
View
>
...
...
@@ -166,7 +167,7 @@ export default function TasksModal(props) {
</
View
>
<
View
className=
{
`${styles['list-item__right']} ${styles['item__status-' + item.status]}`
}
onClick=
{
()
=>
handleTapItem
(
item
)
}
>
{
item
.
status
===
TASK_STATUS
.
WAIT_DO
?
(
doT
askTxt
[
item
.
taskType
]
||
'去完成'
)
:
commonTask
Txt
[
item
.
status
]
item
.
status
===
TASK_STATUS
.
WAIT_DO
?
(
doT
xt
[
item
.
taskType
]
||
'去完成'
)
:
common
Txt
[
item
.
status
]
}
</
View
>
</
View
>
...
...
c_client/src/config/browse.config.js
0 → 100644
View file @
7ef34a85
export
default
{
taskType
:
'browseGoods'
,
type
:
'01'
,
bg
:
'//yun.dui88.com/taobaomini/clientCTest/goods_bg@2x.png'
,
head
:
{
image
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_title@2x.png'
,
width
:
750
,
// 头部banner/title 宽度
height
:
120
,
// 头部banner/title 高度
},
image
:
{
img
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_img@2x.png'
},
color
:
'#181818'
}
\ No newline at end of file
c_client/src/config/cart.config.js
0 → 100644
View file @
7ef34a85
export
const
CART_CONFIG
=
{
taskType
:
'cartGoods'
,
type
:
1
,
// 1 单个商品可重复完成 2 单个商品只可完成一次
bg
:
'//yun.dui88.com/taobaomini/clientCTest/goods_bg@2x.png'
,
head
:
{
image
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_title@2x.png'
,
width
:
750
,
// 头部banner/title 宽度
height
:
120
,
// 头部banner/title 高度
},
image
:
{
collect
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_collection@2x.png'
,
no_collect
:
'//yun.duiba.com.cn/taobaomini/clientCTest/collection_no_collect@2x.png'
,
},
color
:
'#181818'
}
// 任务完成类型
export
const
CART_TYPE
=
{
ONE
:
1
,
// 单个商品可重复完成
MORE
:
2
// 单个商品只可完成一次
}
\ No newline at end of file
c_client/src/config/collect.config.js
0 → 100644
View file @
7ef34a85
export
default
{
taskType
:
'collectGoods'
,
type
:
'01'
,
bg
:
'//yun.dui88.com/taobaomini/clientCTest/goods_bg@2x.png'
,
head
:
{
image
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_title@2x.png'
,
width
:
750
,
// 头部banner/title 宽度
height
:
120
,
// 头部banner/title 高度
},
image
:
{
collect
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_collection@2x.png'
,
no_collect
:
'//yun.duiba.com.cn/taobaomini/clientCTest/collection_no_collect@2x.png'
},
color
:
'#181818'
}
\ No newline at end of file
c_client/src/config/config.js
0 → 100644
View file @
7ef34a85
export
default
{
env
:
'test'
,
// 云函数环境 test 测试环境 online 线上环境
requestType
:
'cloud'
,
// cloud: 云函数, yapi: yapi 接口, ams: ams接口,tornadoAPI: 风驰台接口
cloudName
:
'pkrqdb'
,
// 主云函数项目名 CommonToC
sellerId
:
'2207644377875'
,
tornadoAPI
:
'https://tornado.duibadev.com.cn/tbServer/api?db=db3000000038851072&proxyIp=172.16.130.158'
,
// 新增:当requestType: 'tornadoAPI'时,找服务端提供地址
defaultActivityId
:
'611cd5f78e6a08bf202eeb7e'
// 默认活动id
}
\ No newline at end of file
c_client/src/config/index.js
View file @
7ef34a85
export
default
{
env
:
'test'
,
// 云函数环境 test 测试环境 online 线上环境
requestType
:
'yapi'
,
// cloud: 云函数, yapi: yapi 接口, ams: ams接口,tornadoAPI: 风驰台接口
cloudName
:
'CommonToC'
,
// 主云函数项目名 CommonToC
sellerId
:
'2207644377875'
,
tornadoAPI
:
'https://tornado.duibadev.com.cn/tbServer/api?db=db3000000038851072&proxyIp=172.16.130.158'
,
// 新增:当requestType: 'tornadoAPI'时,找服务端提供地址
defaultActivityId
:
'60642aafc752d118247c2a2d'
// 默认活动id
}
\ No newline at end of file
c_client/src/config/myPrize.config.js
0 → 100644
View file @
7ef34a85
// 领取奖品状态
export
const
DRAW_STATUS
=
{
// 待领取
WAITAWARD
:
1
,
// 处理中
PROCESSING
:
2
,
// 领取成功
SUCCESS
:
3
,
// 领取失败
FAIL
:
4
,
// 已过期
EXPIRED
:
5
,
// 重新领取
RETRY
:
6
}
// 奖品类型
export
const
PRIZE_TYPE
=
{
ENAME
:
1
,
CREDITS
:
2
,
OBJECT
:
3
,
THANKS
:
5
}
// 权益类型
export
const
BENEFIT_TYPE
=
{
ENAME
:
1
,
// 普通权益
MEMBER
:
2
// 会员权益
}
// 我的奖品配置
export
const
PRIZE_CONFIG
=
{
bg
:
'//yun.duiba.com.cn/aurora/assets/e13fab3165d3a6bb4cbe8827e8f0fd41084b0091.png'
,
// 背景图
head
:
{
image
:
'//yun.dui88.com/duiba-components-c-myprizeprize_title.png'
,
// 标题
width
:
208
,
// 头部banner/title 宽度
height
:
36
,
// 头部banner/title 高度
},
copyIcon
:
'//yun.dui88.com/duiba-components-c-myprizemyprize_copy_code.png'
,
// 复制
receiveBtn
:
'//yun.duiba.com.cn/bestoreBox/prize_received.png'
,
// 已领取 权益类奖品未配置 uesUrl使用
objectStatus
:
{
1
:
'//yun.dui88.com/duiba-components-c-myprizeto_address.png'
,
// 填写地址(实物奖品)
3
:
'//yun.dui88.com/duiba-components-c-myprizelogistics.png'
,
// 查看物流
},
enameStatus
:
{
1
:
'//yun.dui88.com/duiba-components-c-myprizeget_now.png'
,
// 立即领取(除实物奖品外)
3
:
'//yun.duiba.com.cn/bestoreBox/prize_received.png'
,
// 去使用(除实物奖品外)
},
orderStatus
:
{
1
:
'//yun.dui88.com/duiba-components-c-myprizeget_now.png'
,
// 去支付(除实物奖品外)
3
:
'//yun.duiba.com.cn/bestoreBox/prize_received.png'
,
// 已领取
},
commonStatus
:
{
6
:
'//yun.dui88.com/duiba-components-c-myprizeget_again.png'
,
// 重新领取
5
:
'//yun.duiba.com.cn/spark/assets/914ba8643c8abb8d710a3126ec312aecf6c4daf0.png'
,
// 已失效
4
:
'//yun.duiba.com.cn/spark/assets/8267375232058a6d0140270b1594427fb08d6ae3.png'
// 领取失败
},
logisticsImage
:
{
shipped
:
'//yun.dui88.com/duiba-components-c-myprizeprize_shipped.png'
,
// 已发货物理弹窗
notShipped
:
'//yun.dui88.com/duiba-components-c-myprizenotshipped.png'
// 待发货物流弹窗
},
btnStyle
:
{
width
:
'150rpx'
},
contentTop
:
'208rpx'
,
blankTxt
:
'暂无奖品'
,
hasLogistic
:
false
,
// 是否展示物流信息
isShowPirzeId
:
false
// 是否显示奖品编号
}
\ No newline at end of file
c_client/src/config/order.config.js
0 → 100644
View file @
7ef34a85
export
default
{
taskType
:
'orderGoods'
,
type
:
'01'
,
bg
:
'//yun.dui88.com/taobaomini/clientCTest/goods_bg@2x.png'
,
head
:
{
image
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_title@2x.png'
,
width
:
750
,
// 头部banner/title 宽度
height
:
120
,
// 头部banner/title 高度
},
image
:
{
img
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_img@2x.png'
},
color
:
'#181818'
}
\ No newline at end of file
c_client/src/config/task.config.js
0 → 100644
View file @
7ef34a85
// 任务状态
export
const
TASK_STATUS
=
{
WAIT_DO
:
1
,
// 未完成
WAIT_RECEIVE
:
2
,
// 待领取
DONE
:
3
// 已完成
}
// 任务频率类型常量
export
const
TASK_RATE_TYPE
=
{
FOREVER
:
1
,
EVERYDAY
:
2
,
NOLIMIT
:
3
}
// 浏览商品类型
export
const
BROSE_GOOD_TYPE
=
{
PAGE
:
1
,
// 浏览集合页15s
CLICK
:
2
,
// 点击就算完成任务
DETAIL
:
3
// 浏览指定商品详情页15s
}
// 购买商品类型
export
const
ORDER_GOOD_TYPE
=
{
PAGE
:
1
,
// 集合页下单
SHOP
:
2
,
// 跳转店铺
}
export
const
TASK_CONFIG
=
{
icons
:
{
// 任务图标
follow
:
'//yun.duiba.com.cn/baicaoweiFarmer/follow.png'
,
member
:
'//yun.duiba.com.cn/baicaoweiFarmer/memberStar1.png'
,
invites
:
'//yun.duiba.com.cn/baicaoweiFarmer/invites.png'
,
jumpLink
:
'//yun.duiba.com.cn/baicaoweiFarmer/browseGoodsLink.png'
,
browseGoods
:
'//yun.duiba.com.cn/baicaoweiFarmer/browseGoods.png'
,
orderGoods
:
'//yun.duiba.com.cn/baicaoweiFarmer/orderGoods.png'
,
collectGoods
:
'//yun.duiba.com.cn/baicaoweiFarmer/orderGoods.png'
,
sign
:
'//yun.duiba.com.cn/baicaoweiFarmer/orderGoods.png'
,
exchangeCredits
:
'//yun.duiba.com.cn/baicaoweiFarmer/orderGoods.png'
},
commonTxt
:
{
1
:
'去完成'
,
2
:
'待领取'
,
3
:
'已完成'
},
doTxt
:
{
follow
:
'立即关注'
,
invites
:
'去邀请'
,
member
:
'1秒入会'
,
sign
:
'立即签到'
,
jumpLink
:
'去完成'
,
browseGoods
:
'去完成'
,
orderGoods
:
'去完成'
,
collectGoods
:
'去完成'
},
jumpType
:
1
,
// 1 跳转浏览15s 才算完成 2 跳转即算完成
browseTime
:
15
,
// 浏览时间
browseType
:
3
,
// 1 浏览15s 才算完成 2 点击就算完成任务 3 浏览指定商品详情页 15s
showTaskType
:
1
,
// 1 弹窗 2 列表
orderType
:
1
,
// 1 集合页下单 2 跳转店铺
}
\ No newline at end of file
c_client/src/const.js
View file @
7ef34a85
...
...
@@ -4,48 +4,6 @@ export const SHARE_CONFIG = {
desc
:
'分享测试描述'
,
imageUrl
:
''
// 分享图片URL
}
// 领取奖品状态
export
const
DRAW_STATUS
=
{
// 待领取
WAITAWARD
:
1
,
// 处理中
PROCESSING
:
2
,
// 领取成功
SUCCESS
:
3
,
// 领取失败
FAIL
:
4
,
// 已过期
EXPIRED
:
5
,
// 重新领取
RETRY
:
6
}
// 奖品类型
export
const
PRIZE_TYPE
=
{
ENAME
:
1
,
CREDITS
:
2
,
OBJECT
:
3
,
THANKS
:
5
}
// 我的奖品状态
export
const
PRIZE_DRAW_STATUS_MAP
=
{
RECEIVE
:
1
,
// 待领取
DEALING
:
2
,
// 处理中
SUCCESS
:
3
,
// 领取成功
FAILURE
:
4
,
// 领取失败
FINISHED
:
5
,
// 已过期
REPEAT
:
6
// 重新领取
}
// 奖品类型
export
const
PRIZE_TYPE_MAP
=
{
EQUITY
:
1
,
// 权益
INTEGRATION
:
2
,
// 积分
ENTITY
:
3
,
// 实物
THANKS
:
5
// 谢谢参与
}
// 活动状态
export
const
ACTIVITY_STATUS
=
{
NO_EXIST
:
0
,
// 不存在
...
...
@@ -53,70 +11,6 @@ export const ACTIVITY_STATUS = {
NO_START
:
2
,
// 未开始
END
:
3
// 已经结束
}
// 任务频率类型常量
export
const
TASK_RATE_TYPE
=
{
FOREVER
:
1
,
EVERYDAY
:
2
,
NOLIMIT
:
3
}
// 任务状态
export
const
TASK_STATUS
=
{
WAIT_DO
:
1
,
// 未完成
WAIT_RECEIVE
:
2
,
// 待领取
DONE
:
3
// 已完成
}
export
const
TASK_CONFIG
=
{
taskIcon
:
{
// 任务图标
follow
:
'//yun.duiba.com.cn/baicaoweiFarmer/follow.png'
,
member
:
'//yun.duiba.com.cn/baicaoweiFarmer/memberStar1.png'
,
invites
:
'//yun.duiba.com.cn/baicaoweiFarmer/invites.png'
,
jumpLink
:
'//yun.duiba.com.cn/baicaoweiFarmer/browseGoodsLink.png'
,
browseGoods
:
'//yun.duiba.com.cn/baicaoweiFarmer/browseGoods.png'
,
orderGoods
:
'//yun.duiba.com.cn/baicaoweiFarmer/orderGoods.png'
,
collectGoods
:
'//yun.duiba.com.cn/baicaoweiFarmer/orderGoods.png'
,
sign
:
'//yun.duiba.com.cn/baicaoweiFarmer/orderGoods.png'
,
exchangeCredits
:
'//yun.duiba.com.cn/baicaoweiFarmer/orderGoods.png'
},
commonTaskTxt
:
{
1
:
'去完成'
,
2
:
'待领取'
,
3
:
'已完成'
},
doTaskTxt
:
{
follow
:
'立即关注'
,
invites
:
'去邀请'
,
member
:
'1秒入会'
,
sign
:
'立即签到'
,
jumpLink
:
'去完成'
,
browseGoods
:
'去完成'
,
orderGoods
:
'去完成'
,
collectGoods
:
'去完成'
},
jumpLinkType
:
1
,
// 1 跳转浏览15s 才算完成 2 跳转即算完成
browseTime
:
15
,
// 浏览时间
browseGoodType
:
3
,
// 1 浏览15s 才算完成 2 点击就算完成任务 3 浏览指定商品详情页 15s
showTaskType
:
1
,
// 1 弹窗 2 列表
orderGoodType
:
1
,
// 1 集合页下单 2 跳转店铺
}
// 权益类型
export
const
BENEFIT_TYPE
=
{
ENAME
:
1
,
// 普通权益
MEMBER
:
2
// 会员权益
}
// 浏览商品类型
export
const
BROSE_GOOD_TYPE
=
{
PAGE
:
1
,
// 浏览集合页15s
CLICK
:
2
,
// 点击就算完成任务
DETAIL
:
3
// 浏览指定商品详情页15s
}
// 购买商品类型
export
const
ORDER_GOOD_TYPE
=
{
PAGE
:
1
,
// 集合页下单
SHOP
:
2
,
// 跳转店铺
}
// 店铺ID
export
const
SHOP_ID
=
'60014226'
...
...
c_client/src/hooks/useLogin.js
View file @
7ef34a85
...
...
@@ -2,7 +2,7 @@ import { useEffect, useState } from 'react'
import
{
useRouter
}
from
'@tarojs/taro'
import
{
useLoginInfoModel
}
from
'../store/loginInfo'
import
API
from
'../api'
import
config
from
'@/config/
index
'
import
config
from
'@/config/
config
'
import
{
useAuth
}
from
'./useAuth'
import
{
noopFn
}
from
'@/utils/util'
import
{
checkShopFavoredStatus
}
from
'tbcc-sdk-ts/lib/core/tb'
...
...
c_client/src/pages/index/index.jsx
View file @
7ef34a85
import
React
,
{
useRef
,
useState
}
from
'react'
import
{
View
,
Image
}
from
'@tarojs/components'
import
Taro
,
{
useShareAppMessage
,
useDidShow
}
from
'@tarojs/taro'
import
Taro
,
{
useShareAppMessage
,
useDidShow
,
getApp
}
from
'@tarojs/taro'
import
classnames
from
'classnames'
import
{
SHARE_CONFIG
,
HELP_MODAL_TYPE
,
HELP_MODAL_SHOW
}
from
'@/const.js'
import
{
useLogin
,
useLoginFromShare
}
from
'@/hooks/useLogin'
...
...
@@ -25,6 +25,7 @@ const INDEX_CONFIG = {
}
function
Index
()
{
const
app
=
getApp
()
const
{
activityInfo
,
setActivityInfoAndStatus
}
=
useActivityInfoModel
()
const
{
loginInfo
}
=
useLoginInfoModel
()
...
...
@@ -56,16 +57,14 @@ function Index() {
}
useEffect
(()
=>
{
fetchActivityInfo
()
getImgShareUrl
(
'cloud://CEFE74AE67921906B5AF842150646D35/share.png'
).
then
(
url
=>
{
SHARE_IMG
.
current
=
url
})
//
getImgShareUrl('cloud://CEFE74AE67921906B5AF842150646D35/share.png').then(url => {
//
SHARE_IMG.current = url
//
})
},[])
// 授权登录完成
useLogin
(
async
(
info
)
=>
{
handleVisibleModal
(
info
)
fetchUserInfo
()
setUpdateFlag
(
1
)
getShareInfo
()
})
// 查看是否有助力信息
const
getShareInfo
=
async
()
=>
{
...
...
@@ -111,16 +110,6 @@ function Index() {
setMemberVisible
(
false
)
}
const
homeStyle
=
classnames
(
styles
.
container
,{
[
`
${
styles
[
'content_fixed'
]}
`
]:
ruleModalVisible
})
const
onHandleModal
=
(
type
)
=>
{
const
Fn
=
{
'visible'
:
()
=>
setModalVisible
(
true
),
'close'
:
()
=>
setModalVisible
(
false
)
}
Fn
[
type
]()
}
const
onHandleClose
=
()
=>
{
setDoHelpModalVisible
(
false
)
if
(
loginInfo
.
newUser
)
{
...
...
@@ -146,7 +135,7 @@ function Index() {
}
return
(
<
View
className=
{
homeStyle
}
style=
{
{
backgroundImage
:
`url(${INDEX_CONFIG.bg})`
}
}
>
<
View
className=
{
styles
.
container
}
style=
{
{
backgroundImage
:
`url(${INDEX_CONFIG.bg})`
}
}
>
<
View
className=
{
styles
.
rule
}
style=
{
{
backgroundImage
:
`url(${INDEX_CONFIG.ruleButton})`
}
}
onClick=
{
()
=>
setRuleModalVisible
(
true
)
}
>
活动规则
</
View
>
<
View
className=
{
styles
.
my_prize
}
style=
{
{
backgroundImage
:
`url(${INDEX_CONFIG.myPrizeButton})`
}
}
onClick=
{
()
=>
onHandleIndex
(
'prize'
)
}
>
我的奖品
</
View
>
<
View
className=
{
styles
.
tasks
}
style=
{
{
backgroundImage
:
`url(${INDEX_CONFIG.taskButton})`
}
}
onClick=
{
()
=>
setTasksModalVisible
(
true
)
}
>
任务
</
View
>
...
...
@@ -183,7 +172,7 @@ function Index() {
onClose=
{
()
=>
setDoHelpModalVisible
(
false
)
}
/>
}
{
memberVisible
&&
<
member
-
modal
onClose=
{
onClose
}
onAuthFail=
{
onAuthFail
}
onAuthSuccess=
{
onAuthSuccess
}
/>
}
{
<
member
-
modal
expend=
{
memberVisible
}
sellerId=
{
98563612
}
onClose=
{
onClose
}
onAuthFail=
{
onAuthFail
}
onAuthSuccess=
{
onAuthSuccess
}
/>
}
</
View
>
)
}
...
...
c_client/src/pages/index/index.module.less
View file @
7ef34a85
...
...
@@ -9,9 +9,6 @@
right: 0;
bottom: 0;
}
.content_fixed {
position: fixed;
}
.index_button() {
.wh(150px, 46px);
.border(#000);
...
...
c_client/src/pages/packageGame/game/game.jsx
View file @
7ef34a85
import
React
,
{
useEffect
,
useState
,
useRef
}
from
'react'
import
{
View
,
Canvas
}
from
'@tarojs/components'
import
{
useDidShow
,
useRouter
,
useDidHide
}
from
'@tarojs/taro'
import
{
View
}
from
'@tarojs/components'
import
{
useDidShow
,
useRouter
,
useDidHide
,
getApp
}
from
'@tarojs/taro'
import
API
from
'@/api'
import
{
TASK_CONFIG
}
from
'@/const'
import
{
useLogin
,
useLoginFromShare
}
from
'@/hooks/useLogin'
...
...
@@ -18,10 +18,12 @@ import { versionCompare, getImgShareUrl } from 'tbcc-sdk-ts/lib/utils'
import
styles
from
'./game.module.less'
function
GamePage
(
props
)
{
const
app
=
getApp
()
const
{
activityInfo
,
setActivityInfoAndStatus
}
=
useActivityInfoModel
()
const
{
loginInfo
}
=
useLoginInfoModel
()
const
[
canvasData
,
setCanvasData
]
=
useState
({})
const
[
taskModalVisible
,
setTaskModalVisible
]
=
useState
(
false
)
const
[
canvasVisible
,
setCanvasVisible
]
=
useState
(
false
)
const
[
memberVisible
,
setMemberVisible
]
=
useState
(
false
)
const
[
updateFlag
,
setUpdateFlag
]
=
useState
(
1
)
const
compRef
=
useRef
(
null
)
...
...
@@ -31,31 +33,24 @@ function GamePage(props) {
// console.log(res)
// })
},[])
useDidShow
(()
=>
{
// canvasMain.run();
})
useDidHide
(()
=>
{
// canvasMain.pause();
})
useDidShow
(()
=>
{})
useDidHide
(()
=>
{})
//检查版本号
const
checkSystem
=
async
()
=>
{
const
{
version
}
=
await
getSystemInfo
();
console
.
log
(
'version'
,
version
);
return
versionCompare
(
version
,
'9.10.0'
);
}
const
getAuth
=
()
=>
{
console
.
log
(
'getAuth'
)
}
const
getUserAddress
=
()
=>
{
}
const
doFavorShop
=
()
=>
{
console
.
log
(
'doFavorShop'
)
}
// 授权后登录
useLogin
(
res
=>
{
// 登录完成渲染cavans
setCanvasVisible
(
true
)
})
//和main通信的方法,接收main的信息
const
onMessage
=
(
e
)
=>
{
// 接口名字 参数
const
{
netName
,
parameter
}
=
e
.
mpEvent
.
data
console
.
warn
(
'netName:'
+
netName
,
parameter
)
//定制的授权
if
(
netName
==
"mine.authorize"
)
{
this
.
getAuth
()
...
...
@@ -78,27 +73,29 @@ function GamePage(props) {
}
//前端同步接口
else
if
(
netName
.
indexOf
(
"mine"
)
==
0
)
{
var
data
=
{
success
:
tru
e
}
let
data
=
{
success
:
true
,
type
:
netNam
e
}
switch
(
netName
)
{
case
"mine.getAppData"
:
//获取信息
const
{
userNick
,
avatar
,
openId
,
newUser
,
remainTimes
,
firstLoginToday
}
=
loginInfo
data
=
{
success
:
true
,
type
:
netName
,
data
:
{
activityId
:
app
.
activityId
,
//|| "5e7c40e98564b57d7fb95812",
nickName
:
app
.
nickName
,
avatar
:
app
.
avatar
,
openId
:
app
.
openId
,
inviteId
:
this
.
inviteId
,
//判断是否要发助力用
nickName
:
userNick
,
avatar
,
openId
,
inviteId
:
app
.
inviteId
,
//判断是否要发助力用
isFollow
:
app
.
isFollow
,
needDataInCanvas
:
app
.
needDataInCanvas
,
activityInfo
:
this
.
activityInfo
,
userInfo
:
this
.
userInfo
,
newUser
:
this
.
newUser
,
remainTimes
:
this
.
remainTimes
,
firstLoginToday
:
this
.
firstLoginToday
,
needDataInCanvas
:
{},
activityInfo
:
activityInfo
,
userInfo
:
{},
newUser
:
newUser
,
remainTimes
:
remainTimes
,
firstLoginToday
:
firstLoginToday
}
}
console
.
warn
(
data
)
break
;
case
"mine.navigateToOutside"
:
//跳转小程序外的页面
navigateToOutside
(
parameter
.
url
)
...
...
@@ -128,6 +125,9 @@ function GamePage(props) {
setMemberVisible
(
true
)
break
;
}
// commonToast(JSON.stringify(data))
setUpdateFlag
(
Math
.
floor
(
Math
.
random
()
*
1000
))
setCanvasData
(
data
)
}
else
{
//获取后端接口
const
{
function
:
fc
}
=
app
.
cloud
;
...
...
@@ -146,16 +146,9 @@ function GamePage(props) {
})
}
}
const
postMessageEvent
=
()
=>
{
console
.
log
(
'222222'
)
}
const
onClose
=
()
=>
{
console
.
warn
(
1111
)
setMemberVisible
(
false
)
}
const
onAuthSuccess
=
()
=>
{
setMemberVisible
(
false
)
}
...
...
@@ -164,10 +157,11 @@ function GamePage(props) {
}
const
onTestHandle
=
()
=>
{
setMemberVisible
(
true
)
// onMessage({mpEvent: { data: { netName: 'mine.getAppData' }}})
}
return
(
<
View
>
{
true
&&
<
canvas
-
comp
canvasData=
{
canvasData
}
onPost
Message=
{
onMessage
}
updateFlag=
{
updateFlag
}
/>
}
{
canvasVisible
&&
<
canvas
-
comp
data=
{
canvasData
}
on
Message=
{
onMessage
}
updateFlag=
{
updateFlag
}
/>
}
<
View
className=
{
styles
[
'test-box'
]
}
onClick=
{
(
e
)
=>
onTestHandle
(
e
)
}
>
入会按钮
</
View
>
{
memberVisible
&&
<
member
-
modal
onClose=
{
onClose
}
onAuthFail=
{
onAuthFail
}
onAuthSuccess=
{
onAuthSuccess
}
/>
}
</
View
>
...
...
c_client/src/pages/packageGood/browseGoods/browseGoods.jsx
View file @
7ef34a85
import
React
,
{
useEffect
,
useRef
,
useState
}
from
'react'
import
{
View
}
from
'@tarojs/components'
import
GoodsTitle
from
'@/components/_tb_comps/GoodsTitle/GoodsTitle'
import
ContainerFit
from
'@/components/_base/ContainerFit/ContainerFit'
import
GoodsTitle
from
'@/components/_tb_comps/TitleImg/TitleImg'
import
GoodsList
from
'@/components/_tb_comps/GoodsList/GoodsList'
import
{
useDidShow
,
useRouter
,
useDidHide
}
from
'@tarojs/taro'
import
API
from
'@/api'
import
{
TASK_CONFIG
,
BROSE_GOOD_TYPE
}
from
'@/const'
import
{
commonToast
}
from
'tbcc-sdk-ts/lib/core/tb'
import
styles
from
'./browseGoods.module.less'
const
browseConfig
=
{
taskType
:
'browseGoods'
,
type
:
'01'
,
bg
:
'//yun.dui88.com/taobaomini/clientCTest/goods_bg@2x.png'
,
head
:
{
image
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_title@2x.png'
,
width
:
750
,
// 头部banner/title 宽度
height
:
120
,
// 头部banner/title 高度
},
image
:
{
banner
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_banner@2x.png'
,
title
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_title@2x.png'
,
collect
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_collection@2x.png'
,
no_collect
:
'//yun.duiba.com.cn/taobaomini/clientCTest/collection_no_collect@2x.png'
,
img
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_img@2x.png'
},
color
:
'#181818'
}
import
{
TASK_CONFIG
,
BROSE_GOOD_TYPE
}
from
'@/config/task.config'
import
BROWSE_CONFIG
from
'@/config/browse.config'
function
BrowseGoodsPage
()
{
const
[
startTimer
,
setStartTimer
]
=
useState
(
false
)
...
...
@@ -80,7 +63,7 @@ function BrowseGoodsPage() {
})
// 浏览记录
const
onCompleteTask
=
async
(
itemId
)
=>
{
const
{
success
}
=
await
API
.
doCompleteTask
({
taskType
:
browseConfig
.
taskType
,
itemId
:
currentItemId
.
current
})
const
{
success
}
=
await
API
.
doCompleteTask
({
taskType
:
BROWSE_CONFIG
.
taskType
,
itemId
:
currentItemId
.
current
})
if
(
success
)
{
getGoodsList
()
commonToast
(
'浏览成功'
)
...
...
@@ -123,18 +106,14 @@ function BrowseGoodsPage() {
},
1000
)
}
return
(
<
View
className=
{
styles
[
'page-container'
]
}
>
<
View
className=
{
styles
[
'page-psd-container'
]
}
style=
{
{
background
:
`url(${browseConfig.bg}) no-repeat`
,
backgroundSize
:
'750rpx 1624rpx'
}
}
>
<
View
className=
{
styles
[
'page-content'
]
}
>
<
View
className=
{
styles
[
'page-content__title'
]
}
>
<
GoodsTitle
config=
{
browseConfig
.
head
}
/>
</
View
>
<
View
className=
{
styles
[
'page-content__list'
]
}
>
<
GoodsList
goodsList=
{
goodsList
}
task=
{
browseConfig
}
onOpenDetail=
{
(
itemId
,
collected
)
=>
onOpenDetail
(
itemId
,
collected
)
}
/>
</
View
>
</
View
>
<
ContainerFit
bg=
{
BROWSE_CONFIG
.
bg
}
>
<
View
className=
{
styles
[
'page-content__title'
]
}
>
<
GoodsTitle
config=
{
BROWSE_CONFIG
.
head
}
/>
</
View
>
<
View
className=
{
styles
[
'page-content__list'
]
}
>
<
GoodsList
goodsList=
{
goodsList
}
task=
{
BROWSE_CONFIG
}
onOpenDetail=
{
(
itemId
,
collected
)
=>
onOpenDetail
(
itemId
,
collected
)
}
/>
</
View
>
</
View
>
</
ContainerFit
>
)
}
...
...
c_client/src/pages/packageGood/browseGoods/browseGoods.module.less
View file @
7ef34a85
.page-container {
.page-container();
}
.page-psd-container {
.page-container__1624();
}
.page-content {
.page-content();
}
.page-content__title {
.wh(750px,
140
px);
.wh(750px,
208
px);
}
.page-content__list {
position: absolute;
top:
140
px;
top:
208
px;
left: 0;
bottom: 0;
padding: 41px 25px 0;
...
...
c_client/src/pages/packageGood/cartGoods/cartGoods.jsx
View file @
7ef34a85
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
import
{
View
}
from
'@tarojs/components'
import
GoodsTitle
from
'@/components/_tb_comps/GoodsTitle/GoodsTitle'
import
ContainerFit
from
'@/components/_base/ContainerFit/ContainerFit'
import
TitleImg
from
'@/components/_tb_comps/TitleImg/TitleImg'
import
GoodsList
from
'@/components/_tb_comps/GoodsList/GoodsList'
import
{
useRouter
}
from
'@tarojs/taro'
import
tbccTs
from
'tbcc-sdk-ts'
import
API
from
'@/api'
import
{
useThrottle
}
from
'@/hooks/useThrottle'
import
styles
from
'./cartGoods.module.less'
import
{
CART_CONFIG
,
CART_TYPE
}
from
'@/config/cart.config'
const
{
commonToast
,
showSkuModal
}
=
tbccTs
.
tb
const
cartConfig
=
{
taskType
:
'cartGoods'
,
type
:
'01'
,
bg
:
'//yun.dui88.com/taobaomini/clientCTest/goods_bg@2x.png'
,
head
:
{
image
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_title@2x.png'
,
width
:
750
,
// 头部banner/title 宽度
height
:
120
,
// 头部banner/title 高度
},
image
:
{
banner
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_banner@2x.png'
,
title
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_title@2x.png'
,
collect
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_collection@2x.png'
,
no_collect
:
'//yun.duiba.com.cn/taobaomini/clientCTest/collection_no_collect@2x.png'
,
img
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_img@2x.png'
},
color
:
'#181818'
}
function
CartGoodsPage
()
{
const
router
=
useRouter
()
const
[
goodsList
,
setGoodsList
]
=
useState
([])
...
...
@@ -47,38 +30,33 @@ function CartGoodsPage() {
// 加入购物车 // 对应itemId为 574141925233 skuId为4018047819826 数量为4
const
onCompleteTask
=
useThrottle
(
async
(
itemId
,
collected
)
=>
{
console
.
log
(
itemId
)
if
(
collected
)
{
if
(
collected
&&
CART_CONFIG
.
type
===
CART_TYPE
.
ONE
)
{
commonToast
(
'您已加购过该商品了'
)
return
;
}
if
(
!
collectflag
.
current
){
const
{
status
,
quantity
}
=
await
showSkuModal
(
String
(
itemId
))
if
(
status
==
"addCartSuccess"
)
{
const
{
success
}
=
await
API
.
doCompleteTask
({
taskType
:
cartConfig
.
taskType
,
itemId
,
count
:
quantity
})
if
(
success
)
{
collectflag
.
current
=
true
getGoodsList
()
commonToast
(
'加购成功'
)
}
}
}
else
{
if
(
collectflag
.
current
&&
CART_CONFIG
.
type
===
CART_TYPE
.
ONE
)
{
commonToast
(
'该任务今天已完成,明天再来吧~'
)
}
const
{
status
,
quantity
}
=
await
showSkuModal
(
String
(
itemId
))
if
(
status
==
"addCartSuccess"
)
{
const
{
success
}
=
await
API
.
doCompleteTask
({
taskType
:
CART_CONFIG
.
taskType
,
itemId
,
count
:
quantity
})
if
(
success
)
{
collectflag
.
current
=
true
getGoodsList
()
commonToast
(
'加购成功'
)
}
}
},
2000
);
return
(
<
View
className=
{
styles
[
'page-container'
]
}
>
<
View
className=
{
styles
[
'page-psd-container'
]
}
style=
{
{
background
:
`url(${cartConfig.bg}) no-repeat`
,
backgroundSize
:
'750rpx 1624rpx'
}
}
>
<
View
className=
{
styles
[
'page-content'
]
}
>
<
View
className=
{
styles
[
'page-content__title'
]
}
>
<
GoodsTitle
config=
{
cartConfig
.
head
}
/>
</
View
>
<
View
className=
{
styles
[
'page-content__list'
]
}
>
<
GoodsList
goodsList=
{
goodsList
}
task=
{
cartConfig
}
onOpenDetail=
{
(
itemId
,
collected
)
=>
onCompleteTask
(
itemId
,
collected
)
}
/>
</
View
>
</
View
>
<
ContainerFit
bg=
{
CART_CONFIG
.
bg
}
>
<
View
className=
{
styles
[
'page-content__title'
]
}
>
<
TitleImg
config=
{
CART_CONFIG
.
head
}
/>
</
View
>
<
View
className=
{
styles
[
'page-content__list'
]
}
>
<
GoodsList
goodsList=
{
goodsList
}
task=
{
CART_CONFIG
}
onOpenDetail=
{
(
itemId
,
collected
)
=>
onCompleteTask
(
itemId
,
collected
)
}
/>
</
View
>
</
View
>
</
ContainerFit
>
)
}
...
...
c_client/src/pages/packageGood/cartGoods/cartGoods.module.less
View file @
7ef34a85
.page-container {
.page-container();
}
.page-psd-container {
.page-container__1624();
}
.page-content {
.page-content();
}
.page-content__title {
.wh(750px,
140
px);
.wh(750px,
208
px);
}
.page-content__list {
position: absolute;
top:
140
px;
top:
208
px;
left: 0;
bottom: 0;
padding: 41px 25px 0;
...
...
c_client/src/pages/packageGood/collectGoods/collectGoods.jsx
View file @
7ef34a85
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
import
{
View
}
from
'@tarojs/components'
import
GoodsTitle
from
'@/components/_tb_comps/GoodsTitle/GoodsTitle'
import
ContainerFit
from
'@/components/_base/ContainerFit/ContainerFit'
import
TitleImg
from
'@/components/_tb_comps/TitleImg/TitleImg'
import
GoodsList
from
'@/components/_tb_comps/GoodsList/GoodsList'
import
{
useRouter
}
from
'@tarojs/taro'
import
tbccTs
from
'tbcc-sdk-ts'
import
API
from
'@/api'
import
{
useThrottle
}
from
'@/hooks/useThrottle'
const
{
commonToast
}
=
tbccTs
.
tb
import
styles
from
'./collectGoods.module.less'
const
collectConfig
=
{
taskType
:
'collectGoods'
,
type
:
'01'
,
bg
:
'//yun.dui88.com/taobaomini/clientCTest/goods_bg@2x.png'
,
head
:
{
image
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_title@2x.png'
,
width
:
750
,
// 头部banner/title 宽度
height
:
120
,
// 头部banner/title 高度
},
image
:
{
banner
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_banner@2x.png'
,
title
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_title@2x.png'
,
collect
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_collection@2x.png'
,
no_collect
:
'//yun.duiba.com.cn/taobaomini/clientCTest/collection_no_collect@2x.png'
,
img
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_img@2x.png'
},
color
:
'#181818'
}
import
COLLECT_CONFIG
from
'@/config/collect.config'
function
CollectGoodsPage
()
{
const
router
=
useRouter
()
...
...
@@ -77,18 +59,14 @@ function CollectGoodsPage() {
})
return
(
<
View
className=
{
styles
[
'page-container'
]
}
>
<
View
className=
{
styles
[
'page-psd-container'
]
}
style=
{
{
background
:
`url(${collectConfig.bg}) no-repeat`
,
backgroundSize
:
'750rpx 1624rpx'
}
}
>
<
View
className=
{
styles
[
'page-content'
]
}
>
<
View
className=
{
styles
[
'page-content__title'
]
}
>
<
GoodsTitle
config=
{
collectConfig
.
head
}
/>
</
View
>
<
View
className=
{
styles
[
'page-content__list'
]
}
>
<
GoodsList
goodsList=
{
goodsList
}
task=
{
collectConfig
}
onOpenDetail=
{
(
itemId
,
collected
)
=>
onCompleteTask
(
itemId
,
collected
)
}
/>
</
View
>
</
View
>
<
ContainerFit
bg=
{
COLLECT_CONFIG
.
bg
}
>
<
View
className=
{
styles
[
'page-content__title'
]
}
>
<
TitleImg
config=
{
COLLECT_CONFIG
.
head
}
/>
</
View
>
<
View
className=
{
styles
[
'page-content__list'
]
}
>
<
GoodsList
goodsList=
{
goodsList
}
task=
{
COLLECT_CONFIG
}
onOpenDetail=
{
(
itemId
,
collected
)
=>
onCompleteTask
(
itemId
,
collected
)
}
/>
</
View
>
</
View
>
</
ContainerFit
>
)
}
...
...
c_client/src/pages/packageGood/collectGoods/collectGoods.module.less
View file @
7ef34a85
.page-container {
.page-container();
}
.page-psd-container {
.page-container__1624();
}
.page-content {
.page-content();
}
.page-content__title {
.wh(750px,
140
px);
.wh(750px,
208
px);
}
.page-content__list {
position: absolute;
top:
140
px;
top:
208
px;
left: 0;
bottom: 0;
padding: 41px 25px 0;
...
...
c_client/src/pages/packageGood/orderGoods/orderGoods.jsx
View file @
7ef34a85
import
React
,
{
useEffect
,
useState
}
from
'react'
import
{
View
}
from
'@tarojs/components'
import
GoodsTitle
from
'@/components/_tb_comps/GoodsTitle/GoodsTitle'
import
ContainerFit
from
'@/components/_base/ContainerFit/ContainerFit'
import
TitleImg
from
'@/components/_tb_comps/TitleImg/TitleImg'
import
GoodsList
from
'@/components/_tb_comps/GoodsList/GoodsList'
import
{
useRequest
}
from
'@/hooks/useRequest'
import
{
useRouter
}
from
'@tarojs/taro'
import
API
from
'@/api'
import
styles
from
'./orderGoods.module.less'
const
orderConfig
=
{
taskType
:
'orderGoods'
,
type
:
'01'
,
bg
:
'//yun.dui88.com/taobaomini/clientCTest/goods_bg@2x.png'
,
head
:
{
image
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_title@2x.png'
,
width
:
750
,
// 头部banner/title 宽度
height
:
120
,
// 头部banner/title 高度
},
image
:
{
banner
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_banner@2x.png'
,
title
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_title@2x.png'
,
collect
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_collection@2x.png'
,
no_collect
:
'//yun.duiba.com.cn/taobaomini/clientCTest/collection_no_collect@2x.png'
,
img
:
'//yun.duiba.com.cn/taobaomini/clientCTest/goods_img@2x.png'
},
color
:
'#181818'
}
import
ORDER_CONFIG
from
'@/config/order.config'
function
OrderGoodsPage
()
{
const
router
=
useRouter
()
...
...
@@ -32,18 +15,15 @@ function OrderGoodsPage() {
const
{
data
}
=
useRequest
(
API
.
getItemListByItemIds
,
{
itemIds
})
return
(
<
View
className=
{
styles
[
'page-container'
]
}
>
<
View
className=
{
styles
[
'page-psd-container'
]
}
style=
{
{
background
:
`url(${orderConfig.bg}) no-repeat`
,
backgroundSize
:
'750rpx 1624rpx'
}
}
>
<
View
className=
{
styles
[
'page-content'
]
}
>
<
View
className=
{
styles
[
'page-content__title'
]
}
>
<
GoodsTitle
config=
{
orderConfig
.
head
}
/>
</
View
>
<
View
className=
{
styles
[
'page-content__list'
]
}
>
<
GoodsList
goodsList=
{
data
?.
list
||
[]
}
task=
{
orderConfig
}
onOpenDetail=
{
(
itemId
,
isBrowsed
)
=>
onOpenDetail
(
itemId
,
isBrowsed
)
}
/>
</
View
>
</
View
>
<
ContainerFit
bg=
{
ORDER_CONFIG
.
bg
}
>
<
View
className=
{
styles
[
'page-content__title'
]
}
>
<
TitleImg
config=
{
ORDER_CONFIG
.
head
}
/>
</
View
>
</
View
>
<
View
className=
{
styles
[
'page-content__list'
]
}
>
<
GoodsList
goodsList=
{
data
?.
list
||
[]
}
task=
{
ORDER_CONFIG
}
onOpenDetail=
{
(
itemId
,
isBrowsed
)
=>
onOpenDetail
(
itemId
,
isBrowsed
)
}
/>
</
View
>
</
ContainerFit
>
)
}
...
...
c_client/src/pages/packageGood/orderGoods/orderGoods.module.less
View file @
7ef34a85
.page-container {
.page-container();
}
.page-psd-container {
.page-container__1624();
}
.page-content {
.page-content();
}
.page-content__title {
.wh(750px,
140
px);
.wh(750px,
208
px);
}
.page-content__list {
position: absolute;
top:
140
px;
top:
208
px;
left: 0;
bottom: 0;
padding: 41px 25px 0;
...
...
c_client/src/pages/packagePrize/myPrize/myPrize.jsx
View file @
7ef34a85
This diff is collapsed.
Click to expand it.
c_client/src/pages/packagePrize/myPrize/myPrize.module.less
View file @
7ef34a85
.page-container {
.page-container();
}
.my-prize-container {
.page-container__1624();
}
.page-content {
.page-content();
}
.my-prize-container .my-prize-label {
width: 208px;
height: 36px;
margin: 70px auto 40px;
background: url("//yun.duiba.com.cn/duiba-components-c-myprizeprize_title.png")
no-repeat;
background-size: 100% 100%;
.my-prize-label {
width: 100%;
height: 208px;
}
.my-prize-content {
position: absolute;
left: 0;
...
...
@@ -29,19 +14,16 @@
height: 100%;
padding-top: 30px;
}
.my-prize-container .my-prize-list {
.my-prize-list {
width: 100%;
height: auto;
}
.my-prize-container .my-prize-item__empty {
.my-prize-item__empty {
text-align: center;
color: #fff;
margin-top: 30px;
}
.my-prize-list .my-prize-item {
.my-prize-item {
display: flex;
justify-content: center;
align-items: center;
...
...
@@ -56,13 +38,11 @@
border-radius: 10px;
box-sizing: border-box;
}
.my-prize-list .my-prize-item .my-prize-item__avatar {
.my-prize-item__avatar {
width: 120px;
height: 120px;
}
.my-prize-list .my-prize-item .my-prize-item__content {
.my-prize-item__content {
flex: 1;
min-width: 0;
padding: 0 20px;
...
...
@@ -72,28 +52,23 @@
align-items: flex-start;
justify-content: center;
}
.my-prize-list .my-prize-item .my-prize-item__subtitle {
.my-prize-item__subtitle {
display: flex;
justify-content: center;
align-items: center;
}
.my-prize-list .my-prize-item .my-prize-item__copy {
.my-prize-item__copy {
width: 20px;
height: 20px;
margin-left: 18px;
}
.my-prize-list .my-prize-item .prize-item__status {
.prize-item__status {
width: 150px;
}
.prize-item__status > image {
width: 100%;
}
.my-prize-list .my-prize-item .my-prize-item__name {
.my-prize-item__name {
width: 100%;
font-size: 28px;
color: #2d2d2d;
...
...
@@ -102,16 +77,14 @@
text-overflow: ellipsis;
white-space: nowrap;
}
.my-prize-list .my-prize-item .my-prize-item__tip {
.my-prize-item__tip {
margin-top: 8px;
font-size: 20px;
line-height: 20px;
letter-spacing: 0;
color: #8a8a8a;
}
.my-prize-list .my-prize-item .my-prize-item__code {
.my-prize-item__code {
width: 290px;
font-family: PingFangSC-Regular;
font-size: 20px;
...
...
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