Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
TianGongKaiWu-20251203
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
TianGongKaiWu-20251203
Commits
42557cba
Commit
42557cba
authored
Dec 10, 2025
by
王勇霞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 增加实盘埋点
parent
dc170315
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
14 additions
and
503 deletions
+14
-503
MD.ts
src/MD.ts
+1
-9
HomePage.less
src/pages/HomePage/HomePage.less
+0
-222
HomePage.tsx
src/pages/HomePage/HomePage.tsx
+5
-98
myqradespage.jsx
src/pages/myQradesPage/myqradespage.jsx
+1
-1
index.jsx
src/panels/blackPop/index.jsx
+1
-1
index.jsx
src/panels/endPop/index.jsx
+1
-1
firstPop.jsx
src/panels/firstPop/firstPop.jsx
+0
-57
firstPop.less
src/panels/firstPop/firstPop.less
+0
-109
index.jsx
src/panels/setupPop/index.jsx
+1
-1
index.jsx
src/panels/setupSuccessPop/index.jsx
+1
-1
signCom.jsx
src/panels/signCom/signCom.jsx
+1
-1
index.jsx
src/panels/signSuccessPop/index.jsx
+1
-1
index.jsx
src/panels/signTaskPop/index.jsx
+1
-1
No files found.
src/MD.ts
View file @
42557cba
...
...
@@ -6,16 +6,12 @@ const appId = CFG.appID;
const
dcm
=
"202."
+
CFG
.
projectId
+
".0.0"
;
const
domain
=
""
;
const
channel
=
getUrlParam
(
"channel"
);
const
dom
=
`
${
channel
}
.0.0.0`
;
const
MDList
:
IAutoMdData
[]
=
new
Array
(
36
).
fill
(
""
).
map
((
_
,
i
)
=>
{
const
MDList
:
IAutoMdData
[]
=
new
Array
(
13
).
fill
(
""
).
map
((
_
,
i
)
=>
{
return
{
ele
:
`.md
${
i
+
1
}
`
,
data
:
{
dpm
:
`
${
appId
}
.110.
${
i
+
1
}
.1`
,
dcm
,
dom
,
domain
,
appId
,
},
...
...
@@ -33,7 +29,6 @@ export function handleLogExposure(id: number | string, id2: number | string = 1)
logExposure
({
dpm
:
`
${
appId
}
.110.
${
id
}
.
${
id2
}
`
,
dcm
,
dom
,
domain
,
appId
,
});
...
...
@@ -43,7 +38,6 @@ export function handleLogClick(id: number | string, id2: number | string = 1) {
logClick
({
dpm
:
`
${
appId
}
.110.
${
id
}
.
${
id2
}
`
,
dcm
,
dom
,
domain
,
appId
,
});
...
...
@@ -54,7 +48,6 @@ export function handleTaskLogClick(id, id2 = 1, btnStatus) {
logClick
({
dpm
:
`
${
appId
}
.110.
${
id
}
.
${
id2
}
`
,
dcm
:
`202.
${
CFG
.
projectId
}
.0.
${
btnStatus
}
'`
,
dom
,
domain
,
appId
,
});
...
...
@@ -63,7 +56,6 @@ export function handleTaskLogExposure(id, id2 = 1, btnStatus) {
logExposure
({
dpm
:
`
${
appId
}
.110.
${
id
}
.
${
id2
}
`
,
dcm
:
`202.
${
CFG
.
projectId
}
.0.
${
btnStatus
}
'`
,
dom
,
domain
,
appId
,
});
...
...
src/pages/HomePage/HomePage.less
View file @
42557cba
...
...
@@ -7,7 +7,6 @@
top: 0px;
position: relative;
background-color: #e86a3c;
// padding-top: 700px;
padding-top: 576px;
padding-bottom: 85px;
box-sizing: border-box;
...
...
@@ -22,227 +21,6 @@
background-size: 750px 779px;
}
.title {
width: 705px;
height: 316px;
left: 45px;
top: 0px;
position: absolute;
// .sparkBg("homePage/title.png");
}
.virtual_assets {
width: 712px;
height: 513px;
left: 19px;
position: relative;
margin-top: 18px;
.sparkBg("homePage/virtual_assets_bg_new.png");
&.short_height {
height: 412px;
.sparkBg("homePage/virtual_assets_bg_short.png");
}
.time_box {
width: 100%;
height: 40px;
position: absolute;
top: 20px;
left: 0;
display: flex;
align-items: center;
justify-content: flex-end;
color: rgb(153, 108, 0);
padding-right: 32px;
box-sizing: border-box;
font-size: 22px;
line-height: 40px;
.time_item {
width: 40px;
height: 40px;
border: 1px solid rgb(255, 255, 255);
box-sizing: border-box;
border-radius: 10px;
background-image: linear-gradient(0deg, rgb(237, 88, 29) 0%, rgb(255, 144, 65) 100%);
.flex_center();
color: rgb(255, 255, 255);
margin: 0 4px;
}
}
.time_box_over {
position: absolute;
right: 29px;
top: 26px;
width: 223px;
height: 40px;
.sparkBg("homePage/time_box_over_bg.png");
font-size: 22px;
color: rgb(255, 255, 255);
letter-spacing: 2px;
.flex_center();
}
.yesterday_label {
width: 153px;
height: 27px;
left: 30px;
top: 116px;
position: absolute;
opacity: 0.6;
font-size: 26px;
line-height: 27px;
padding-left: 20px;
color: rgba(0, 0, 0, 1);
}
.yesterday_amount {
width: 228px;
height: 56px;
left: 29px;
top: 171px;
position: absolute;
font-size: 66px;
line-height: 56px;
padding-left: 20px;
color: rgb(237, 10, 10);
font-weight: bold;
}
.record_btn {
width: 176px;
height: 24px;
left: 490px;
top: 116px;
position: absolute;
.sparkBg("homePage/record_list_btn.png");
// .record_btn_text {
// width: 162px;
// height: 24px;
// left: 0px;
// top: 0px;
// position: absolute;
// opacity: 0.6;
// font-size: 26px;
// line-height: 24px;
// color: rgba(24, 24, 24, 1);
// }
// .arrow_right {
// width: 13px;
// height: 24px;
// left: 163px;
// top: 0px;
// position: absolute;
// opacity: 0.6;
// .sparkBg("homePage/arrow_right.png");
// }
}
.other_assets {
width: 666px;
height: 70px;
left: 23px;
top: 268px;
position: absolute;
.other_assets1 {
width: 195px;
height: 70px;
left: 0;
top: 0px;
position: absolute;
}
.other_assets2 {
width: 195px;
height: 70px;
left: 236px;
top: 0px;
position: absolute;
}
.other_assets3 {
width: 195px;
height: 69px;
left: 471px;
top: 1px;
position: absolute;
}
.other_assets_label {
width: 100%;
height: 25px;
left: 0px;
top: 0px;
position: absolute;
opacity: 0.6;
font-size: 26px;
line-height: 25px;
color: rgba(0, 0, 0, 1);
text-align: center;
}
.other_assets_value {
width: 100%;
height: 26px;
left: 0;
top: 44px;
position: absolute;
font-size: 30px;
line-height: 26px;
color: rgb(28, 28, 28);
text-align: center;
font-weight: bold;
}
}
.canuse_popover {
width: 157px;
height: 39px;
left: 360px;
top: 221px;
position: absolute;
.canuse_popover_bg {
width: 157px;
height: 39px;
left: 0px;
top: 0px;
position: absolute;
opacity: 0.5;
// .sparkBg("homePage/canuse_popover_bg.png");
.sparkBg("homePage/canuse_popover_bg_left.png");
}
.canuse_popover_text {
width: 100%;
height: 21px;
left: 0px;
top: 9px;
position: absolute;
font-size: 22px;
line-height: 22px;
color: rgba(135, 76, 8, 1);
text-align: center;
}
}
.realbuy_btn {
width: 327px;
height: 83px;
left: 193px;
top: 380px;
position: absolute;
font-size: 35px;
line-height: 34px;
color: rgba(255, 255, 255, 1);
.sparkBg("homePage/realbuy_btn_bg.png");
.flex_center();
}
}
.ranking_list{
width: 732px;
height: 1071px;
...
...
src/pages/HomePage/HomePage.tsx
View file @
42557cba
...
...
@@ -61,27 +61,12 @@ class HomePage extends React.Component<any, any> {
}
}
/** 跳转模拟交易记录 */
// recordHadnle = _asyncThrottle(() => {
// if (!store.judgeActTime()) return
// PageCtrl.changePage(NewRecordPage, { tab: 1 });
// })
/** 跳转“模拟”产品详情页 */
jumpVirtualDetailHandle
=
_asyncThrottle
((
item
)
=>
{
if
(
!
store
.
judgeActTime
())
return
PageCtrl
.
changePage
(
DetailPage
,
item
)
})
/** 跳转“真实”产品详情页 */
// jumpRealDetailHandle = _asyncThrottle((item) => {
// if (!store.judgeActTime()) return
// const { curTab } = this.state
// if (curTab != 2) return false
// // 我的持仓才可以跳转
// diffJump(item.realBuyJumpUrl)
// })
/** 规则 */
ruleHandle
=
_asyncThrottle
(()
=>
{
if
(
!
store
.
judgeActTime
(
true
,
false
))
return
...
...
@@ -150,38 +135,6 @@ class HomePage extends React.Component<any, any> {
componentWillUnmount
():
void
{
}
/*
getRedCountDown(redRainConfig) {
const now = new Date().getTime();
const today = dateFormatter(new Date(), 'yyyy-MM-dd');
const timeArr = redRainConfig.map(el => {
return {
...el,
start: new Date(today + " " + el.startTime).getTime(),
end: new Date(today + " " + el.endTime).getTime(),
}
})
// 按照开始时间排序
timeArr.sort((a, b) => {
return a.start - b.start;
})
const el = timeArr.find(el => {
return now >= el.start && now <= el.end;
})
if (el && !el.joinStatus) {
return 0;
} else {
const next = timeArr.find(el => {
return now < el.start;
});
if (!next) {
return 0
} else {
return next.start - now
}
}
}
*/
render
()
{
const
{
curTab
,
rankingTab
,
rankOptions
,
rankInfos
,
myRank
}
=
this
.
state
;
const
{
virtualAssets
,
recommendProductConfig
,
giftPop
,
bannerInfo
,
lcGradeIcon
}
=
store
.
indexData
...
...
@@ -192,55 +145,9 @@ class HomePage extends React.Component<any, any> {
return
(
<
div
className=
"com_Container"
ref=
{
(
el
)
=>
this
.
root
=
store
.
homeRoot
=
el
}
>
<
div
className=
"homePage"
>
<
div
className=
"homePage
md4
"
>
<
span
className=
"bg"
></
span
>
{
/* {productEnd && <div className="prize_banner">
<span className="prize_btn" onClick={this.prizeHandle}></span>
</div>} */
}
{
/* 模拟资产 */
}
{
/* <div className="virtual_assets short_height">
{
endPoint > currentTime
? <Countdown
leftT={endPoint - currentTime}
renderText={data => {
const { day, hour, minute, second } = data
return <div className="time_box">
<span className="time_item">{day}</span>天
<span className="time_item">{hour}</span>时
<span className="time_item">{minute}</span>分
<span className="time_item">{second}</span>秒后失效
</div>
}}
countdownOver={() => store.updateIndex()}
/>
: <div className="time_box_over">理财体验金已失效</div>
}
<span className="yesterday_label">累计收益(元)</span>
<span className="yesterday_amount">{this.settleMoney(virtualAssets?.totalIncome || 0)}</span>
<div className="record_btn" onClick={this.recordHadnle}>
</div>
<div className="other_assets">
<div className="other_assets1">
<span className="other_assets_label">总资产</span>
<span className="other_assets_value">{this.settleMoney(virtualAssets?.totalMoney || 0)}</span>
</div>
<div className="other_assets2">
<span className="other_assets_label">可用资金</span>
<span className="other_assets_value">{this.settleMoney(virtualAssets?.availableFunds || 0)}</span>
</div>
<div className="other_assets3">
<span className="other_assets_label">昨日收益</span>
<span className="other_assets_value">{this.settleMoney(virtualAssets?.preDayIncome || 0)}</span>
</div>
</div>
<div className="canuse_popover">
<span className="canuse_popover_bg"></span>
<span className="canuse_popover_text"></span>
</div>
</div> */
}
{
/* 理财排行榜 */
}
<
div
className=
{
`ranking_list ${this.state.isExpand ? 'expandSty1' : ''}`
}
>
<
div
className=
"ranking_list_title"
>
...
...
@@ -438,11 +345,11 @@ class HomePage extends React.Component<any, any> {
{
!
curTabProductList
?.
length
&&
curTab
==
2
&&
<
div
className=
"empty"
>
暂无持仓产品哦
</
div
>
}
</
div
>
<
Button
className=
"rule_btn"
onClick=
{
this
.
ruleHandle
}
/>
<
Button
className=
"prize_btn"
onClick=
{
this
.
reallyPrizeHandle
}
/>
<
Button
className=
"rule_btn
md5
"
onClick=
{
this
.
ruleHandle
}
/>
<
Button
className=
"prize_btn
md6
"
onClick=
{
this
.
reallyPrizeHandle
}
/>
{
/* 其他icon */
}
{
giftPop
?.
show
&&
<
Button
className=
"new-user-gift-icon"
onClick=
{
this
.
newUserFun
}
></
Button
>
}
{
lcGradeIcon
&&
<
Button
className=
"finance-achievement-icon"
onClick=
{
this
.
prizeHandle
}
></
Button
>
}
{
giftPop
?.
show
&&
<
Button
className=
"new-user-gift-icon
md7
"
onClick=
{
this
.
newUserFun
}
></
Button
>
}
{
lcGradeIcon
&&
<
Button
className=
"finance-achievement-icon
md8
"
onClick=
{
this
.
prizeHandle
}
></
Button
>
}
</
div
>
</
div
>
);
...
...
src/pages/myQradesPage/myqradespage.jsx
View file @
42557cba
...
...
@@ -98,7 +98,7 @@ class Myqradespage extends React.Component {
<
span
className=
"jiangPinMingCheng"
>
{
this
.
state
.
info
.
prizeInfo
?.
prizeName
}
</
span
>
{
this
.
state
.
info
.
drawStatus
==
0
&&
(
<
span
className=
"btn1"
onClick=
{
()
=>
this
.
clickClaim
()
}
></
span
>
<
span
className=
"btn1
md13
"
onClick=
{
()
=>
this
.
clickClaim
()
}
></
span
>
)
}
{
...
...
src/panels/blackPop/index.jsx
View file @
42557cba
...
...
@@ -26,7 +26,7 @@ class BlackPop extends React.Component {
return
(
<
div
className=
"blackPop modal_center"
>
<
span
className=
"bg"
></
span
>
<
Button
className=
"know_btn"
onClick=
{
this
.
handleClose
}
/>
<
Button
className=
"know_btn
md1
"
onClick=
{
this
.
handleClose
}
/>
{
/* <Button className="close" onClick={this.handleClose} /> */
}
</
div
>
);
...
...
src/panels/endPop/index.jsx
View file @
42557cba
...
...
@@ -27,7 +27,7 @@ class Endpop extends React.Component {
<
span
className=
"bg"
></
span
>
<
span
className=
"titlebg"
></
span
>
<
span
className=
"btnbg"
></
span
>
<
span
className=
"liJiChaKan"
onClick
=
{
()=
>
this.viewClick()}
>
立即查看
</
span
>
<
span
className=
"liJiChaKan
md12
"
onClick
=
{
()=
>
this.viewClick()}
>
立即查看
</
span
>
<
span
className=
"kuaiQuChaKanLiCaiChengJiCanYuChouJiangBa"
>
快去查看理财成绩,参与抽奖吧!
</
span
>
<
span
className=
"close"
onClick
=
{
()=
>
this.closeClick()}
>
</
span
>
</
div
>
...
...
src/panels/firstPop/firstPop.jsx
deleted
100644 → 0
View file @
dc170315
'use strict'
;
import
React
from
'react'
;
import
{
observer
}
from
'mobx-react'
;
import
'./firstPop.less'
;
import
{
ModalCtrl
}
from
'@/core/ctrls/ModalCtrl'
;
import
{
Button
,
Toast
}
from
'@grace/ui'
;
import
{
_asyncThrottle
,
formatThousand
}
from
'@/utils/utils'
;
/* 电话号码验证规则 **/
export
const
REG_TEL
=
/^1
[
0-9
]{10}
$/
;
@
observer
class
FirstPop
extends
React
.
Component
{
constructor
(
props
)
{
super
(
props
);
this
.
state
=
{
privacyChecked
:
false
}
}
// 确认提交
handleSubmit
=
_asyncThrottle
(()
=>
{
const
{
notifyText
}
=
this
.
props
||
{};
if
(
!!
notifyText
&&
!
this
.
state
.
privacyChecked
)
{
// 未勾选隐私协议
// Toast.show(`请先勾选${notifyText}`)
Toast
.
show
(
`请先勾选模拟投资提示`
)
return
false
}
ModalCtrl
.
closeModal
()
})
close
=
()
=>
{
ModalCtrl
.
closeModal
()
}
render
()
{
const
{
privacyChecked
}
=
this
.
state
;
const
{
experienceNum
,
notifyText
}
=
this
.
props
||
{};
return
(<>
<
div
className=
"firstPop modal_center"
>
<
span
className=
"bg"
></
span
>
<
span
className=
"title"
>
理财体验金
</
span
>
<
div
className=
"amount"
>
{
formatThousand
(
experienceNum
)
}
<
span
className=
"unit"
>
元
</
span
></
div
>
{
!!
notifyText
&&
<
div
className=
"check_box"
>
<
div
className=
{
`check_icon ${privacyChecked ? 'checked' : ''}`
}
onClick=
{
()
=>
this
.
setState
({
privacyChecked
:
!
this
.
state
.
privacyChecked
})
}
></
div
>
<
div
className=
"check_text"
dangerouslySetInnerHTML=
{
{
__html
:
notifyText
}
}
></
div
>
</
div
>
}
<
Button
className=
"happy_btn"
onClick=
{
this
.
handleSubmit
}
></
Button
>
<
Button
className=
"close"
onClick=
{
this
.
close
}
></
Button
>
</
div
>
</>);
}
}
export
default
FirstPop
;
src/panels/firstPop/firstPop.less
deleted
100644 → 0
View file @
dc170315
@import "../../res.less";
.firstPop {
width: 750px;
height: 1624px;
left: 0;
top: 0;
position: absolute;
.bg {
left: 82px;
top: 320px;
width: 585px;
height: 861px;
position: absolute;
.sparkBg("firstPop/bg.png");
background-size: 585px 611px;
background-color: #ffffff;
border-radius: 36px;
}
.title {
width: 585px;
position: absolute;
left: 82px;
top: 460px;
font-size: 36px;
color: rgba(1, 1, 1, 0.6);
text-align: center;
}
.amount {
width: 585px;
position: absolute;
left: 82px;
top: 520px;
font-size: 90px;
color: rgb(211, 26, 25);
font-weight: bold;
text-align: center;
line-height: 90px;
.unit {
font-size: 40px;
}
}
.happy_btn {
left: 120px;
top: 1010px;
width: 510px;
height: 138px;
position: absolute;
.sparkBg("firstPop/happy_btn.png");
}
.check_box {
position: absolute;
left: 159px;
top: 640px;
line-height: 35px;
font-size: 24px;
color: rgb(155, 155, 155);
margin-bottom: 28px;
font-weight: bold;
display: flex;
align-items: start;
.check_icon {
flex-shrink: 0;
position: relative;
width: 34px;
height: 34px;
.sparkBg("firstPop/check_bg.png");
margin-right: 14px;
&.checked::after {
content: "";
position: absolute;
left: 4px;
top: 3px;
width: 33px;
height: 24px;
.sparkBg("firstPop/checked.png");
}
}
.check_text {
width: 400px;
height: 380px;
line-height: 30px;
overflow-y: auto;
font-weight: normal;
font-size: 22px;
}
}
.close {
left: 346px;
top: 1240px;
width: 58px;
height: 58px;
position: absolute;
.sparkBg("common/close.png");
}
}
src/panels/setupPop/index.jsx
View file @
42557cba
...
...
@@ -38,7 +38,7 @@ class SetupPop extends React.Component {
return
(
<
div
className=
"setupPop modal_center"
>
<
span
className=
"bg"
></
span
>
<
Button
className=
"know_btn"
onClick=
{
this
.
handleSetup
}
/>
<
Button
className=
"know_btn
md2
"
onClick=
{
this
.
handleSetup
}
/>
{
/* <Button className="close" onClick={this.handleClose} /> */
}
</
div
>
);
...
...
src/panels/setupSuccessPop/index.jsx
View file @
42557cba
...
...
@@ -89,7 +89,7 @@ class SetupSuccessPop extends React.Component {
didStop=
{
this
.
onStop
}
/>
</
div
>
<
Button
className=
"know_btn"
onClick=
{
this
.
drawHandle
}
/>
<
Button
className=
"know_btn
md3
"
onClick=
{
this
.
drawHandle
}
/>
<
Button
className=
"close"
onClick=
{
this
.
handleClose
}
/>
</
div
>
);
...
...
src/panels/signCom/signCom.jsx
View file @
42557cba
...
...
@@ -117,7 +117,7 @@ class SignCom extends React.Component {
))
}
</
div
>
{
signInfo
?.
todaySign
?
<
div
className=
"sign_btn sign_btn_yes"
></
div
>
:
<
Button
className=
"sign_btn"
onClick=
{
this
.
signHandle
}
></
Button
>
}
{
signInfo
?.
todaySign
?
<
div
className=
"sign_btn sign_btn_yes"
></
div
>
:
<
Button
className=
"sign_btn
md9
"
onClick=
{
this
.
signHandle
}
></
Button
>
}
</
div
>
</
div
>
);
...
...
src/panels/signSuccessPop/index.jsx
View file @
42557cba
...
...
@@ -25,7 +25,7 @@ class SignSuccessPop extends React.Component {
<
span
className=
"bg"
></
span
>
<
div
className=
'prize_title'
>
恭喜获得
{
prizeInfo
?.
optionName
}
</
div
>
<
div
className=
'prize_name'
>
{
prizeInfo
?.
optionName
}
</
div
>
<
Button
className=
"know_btn"
onClick=
{
this
.
handleClose
}
/>
<
Button
className=
"know_btn
md11
"
onClick=
{
this
.
handleClose
}
/>
<
Button
className=
"close"
onClick=
{
this
.
handleClose
}
/>
</
div
>
</
div
>
...
...
src/panels/signTaskPop/index.jsx
View file @
42557cba
...
...
@@ -29,7 +29,7 @@ class SignTaskPop extends React.Component {
<
div
className=
'center-box'
>
<
span
className=
"bg"
></
span
>
<
div
className=
'prize_remark'
>
浏览“
{
otherPrizeInfo
?.
productName
}
”产品,再得
{
otherPrizeInfo
?.
prizeName
}
</
div
>
<
Button
className=
"know_btn"
onClick=
{
this
.
handleToLink
}
/>
<
Button
className=
"know_btn
md10
"
onClick=
{
this
.
handleToLink
}
/>
{
/* <Button className="close" onClick={this.handleClose} /> */
}
</
div
>
</
div
>
...
...
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