Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
飞
飞鹤小程序
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
FH
飞鹤小程序
Commits
e28d21e2
Commit
e28d21e2
authored
Aug 12, 2025
by
chenkai1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加埋点
parent
27757f0c
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1786 additions
and
1677 deletions
+1786
-1677
expertTeamPage.vue
pages/expertTeamPage/expertTeamPage.vue
+13
-0
Home.vue
views/Home.vue
+1773
-1677
No files found.
pages/expertTeamPage/expertTeamPage.vue
View file @
e28d21e2
...
@@ -37,6 +37,8 @@
...
@@ -37,6 +37,8 @@
getHealthField
getHealthField
}
from
"@/api/common"
;
}
from
"@/api/common"
;
import
md
from
'@/md'
;
const
curTabIndex
=
ref
(
1
);
const
curTabIndex
=
ref
(
1
);
onLoad
((
options
)
=>
{
onLoad
((
options
)
=>
{
...
@@ -44,10 +46,21 @@
...
@@ -44,10 +46,21 @@
console
.
log
(
'接收到的参数:'
,
curTabIndex
.
value
)
console
.
log
(
'接收到的参数:'
,
curTabIndex
.
value
)
});
});
const
onSelTab
=
(
index
)
=>
{
const
onSelTab
=
(
index
)
=>
{
let
str
=
index
===
1
?
'名医专家'
:
(
index
===
2
?
'科研专家'
:
'权威机构'
)
md
.
sensorLogTake
({
xcxClick
:
"专家团二级页面点击"
,
pageName
:
"专家团-二级页面"
,
buttonName
:
str
+
"tab按钮点击"
,
});
curTabIndex
.
value
=
index
;
curTabIndex
.
value
=
index
;
}
}
//跳转到医生问诊页面
//跳转到医生问诊页面
const
onLink
=
async
()
=>
{
const
onLink
=
async
()
=>
{
md
.
sensorLogTake
({
xcxClick
:
"专家团二级页面点击"
,
pageName
:
"专家团-二级页面"
,
buttonName
:
"专家在线咨询按钮点击"
,
});
const
res
=
await
getHealthField
();
const
res
=
await
getHealthField
();
if
(
!
res
.
success
)
{
if
(
!
res
.
success
)
{
...
...
views/Home.vue
View file @
e28d21e2
<
template
>
<
template
>
<view
class=
"home-container"
@
scroll=
"onPageScroll"
>
<view
class=
"home-container"
@
scroll=
"onPageScroll"
>
<view
class=
"content"
>
<view
class=
"content"
>
<swiper
id=
"firstScreen"
class=
"swiper banner"
circular
:autoplay=
"autoplay"
:interval=
"interval"
<swiper
id=
"firstScreen"
class=
"swiper banner"
circular
:autoplay=
"autoplay"
:interval=
"interval"
:duration=
"duration"
:indicator-dots=
"false"
@
change=
"onBannerSwiperChange"
>
:duration=
"duration"
:indicator-dots=
"false"
@
change=
"onBannerSwiperChange"
>
<swiper-item
v-for=
"(item, index) in swiperList"
:key=
"item.url"
>
<swiper-item
v-for=
"(item, index) in swiperList"
:key=
"item.url"
>
<view
class=
"swiper-item banneritem"
>
<view
class=
"swiper-item banneritem"
>
<image
@
tap=
"jumpBannerHandler(item, index)"
class=
"b-img"
:src=
"$baseUrl + item.url"
></image>
<image
@
tap=
"jumpBannerHandler(item, index)"
class=
"b-img"
:src=
"$baseUrl + item.url"
></image>
</view>
</view>
</swiper-item>
</swiper-item>
</swiper>
</swiper>
<!-- 溯源测试按钮 -->
<!-- 溯源测试按钮 -->
<!--
<button
style=
"width: 100%;height: 100rpx;background-color: #fff;color: #000;"
@
tap=
"testSource"
>
溯源测试
</button>
-->
<!--
<button
style=
"width: 100%;height: 100rpx;background-color: #fff;color: #000;"
@
tap=
"testSource"
>
溯源测试
</button>
-->
<!--
<view
class=
"swiper-mask"
>
<!--
<view
class=
"swiper-mask"
>
<image
class=
"swiper-mask-img"
:src=
"$baseUrl + 'homepage/home_format_v2.png'"
></image>
<image
class=
"swiper-mask-img"
:src=
"$baseUrl + 'homepage/home_format_v2.png'"
></image>
</view>
-->
</view>
-->
<!-- 自定义指示点,仿照示意图 -->
<!-- 自定义指示点,仿照示意图 -->
<view
class=
"custom-banner-indicator"
>
<view
class=
"custom-banner-indicator"
>
<view
v-for=
"(item, idx) in swiperList"
:key=
"item.url + idx"
<view
v-for=
"(item, idx) in swiperList"
:key=
"item.url + idx"
:class=
"['banner-dot',
{ 'active': idx === bannerCurrentIndex }]">
</view>
:class=
"['banner-dot',
{ 'active': idx === bannerCurrentIndex }]">
</view>
</view>
</view>
<view
class=
"barbox"
:style=
"`top:$
{statusBarHeight}px;`">
<view
class=
"barbox"
:style=
"`top:$
{statusBarHeight}px;`">
<image
class=
"btnlogo"
:src=
"$baseUrl + 'homepage/btnlogo.png'"
></image>
<image
class=
"btnlogo"
:src=
"$baseUrl + 'homepage/btnlogo.png'"
></image>
<image
:data-log=
"
{
<image
:data-log=
"
{
xcxClick: '首页-首屏页面点击',
xcxClick: '首页-首屏页面点击',
pageName: '首页-首屏',
pageName: '首页-首屏',
buttonName: '搜索框'
buttonName: '搜索框'
}" class="btnsearch" @tap="goSearchHandler" :src="$baseUrl + 'homepage/btnsearch.png'">
}" class="btnsearch" @tap="goSearchHandler" :src="$baseUrl + 'homepage/btnsearch.png'">
</image>
</image>
<view
class=
"customer-btn-wrap"
>
<view
class=
"customer-btn-wrap"
>
<image
:data-log=
"
{
<image
:data-log=
"
{
xcxClick: '首页-首屏页面点击',
xcxClick: '首页-首屏页面点击',
pageName: '首页-首屏',
pageName: '首页-首屏',
buttonName: '客服入口'
buttonName: '客服入口'
}" @tap="goCustomerHandler" class="btncustomer" :src="$baseUrl + 'homepage/btncustomer.png'">
}" @tap="goCustomerHandler" class="btncustomer" :src="$baseUrl + 'homepage/btncustomer.png'">
</image>
</image>
<button
v-if=
"homeStore && !homeStore.isLogin"
open-type=
"getPhoneNumber"
<button
v-if=
"homeStore && !homeStore.isLogin"
open-type=
"getPhoneNumber"
@
getphonenumber=
"onGetPhoneNumber"
class=
"phone-auth-btn-cover"
></button>
@
getphonenumber=
"onGetPhoneNumber"
class=
"phone-auth-btn-cover"
></button>
</view>
</view>
</view>
</view>
<!--
<view
:data-log=
"
{
<!--
<view
:data-log=
"
{
xcxClick: '首页-首屏页面点击',
xcxClick: '首页-首屏页面点击',
pageName: '首页-首屏',
pageName: '首页-首屏',
buttonName: '文字资源位入口'
buttonName: '文字资源位入口'
}" @tap="showPopup(1, $event)" class="txtbox">
}" @tap="showPopup(1, $event)" class="txtbox">
<text
class=
"txtlink"
>
星妈会医生在线答疑群,为孩子成长保驾护航
</text>
<text
class=
"txtlink"
>
星妈会医生在线答疑群,为孩子成长保驾护航
</text>
<image
class=
"icon_arrow_yellow"
:src=
"$baseUrl + 'homepage/icon_arrow_yellow.png'"
></image>
<image
class=
"icon_arrow_yellow"
:src=
"$baseUrl + 'homepage/icon_arrow_yellow.png'"
></image>
</view>
-->
</view>
-->
<!--推荐工具-->
<!--推荐工具-->
<view
class=
"tools_box"
>
<view
class=
"tools_box"
>
<view
class=
"tools_maintitle"
>
{{
toolList
.
maintitle
}}
</view>
<view
class=
"tools_maintitle"
>
{{
toolList
.
maintitle
}}
</view>
<view
class=
"tools_subtitle"
>
{{
toolList
.
subtitle
}}
</view>
<view
class=
"tools_subtitle"
>
{{
toolList
.
subtitle
}}
</view>
<swiper
:vertical=
"false"
:circular=
"true"
class=
"tool_swiper"
:display-multiple-items=
"1.65"
<swiper
:vertical=
"false"
:circular=
"true"
class=
"tool_swiper"
:display-multiple-items=
"1.65"
:next-margin=
"'0rpx'"
:previous-margin=
"'0'"
@
change=
"onSwiperChange"
>
:next-margin=
"'0rpx'"
:previous-margin=
"'0'"
@
change=
"onSwiperChange"
>
<swiper-item
v-for=
"(item, index) in toolList.tools"
:key=
"index"
<swiper-item
v-for=
"(item, index) in toolList.tools"
:key=
"index"
:class=
"['swiperItem',
{ 'active': currentIndex === index }]">
:class=
"['swiperItem',
{ 'active': currentIndex === index }]">
<view
class=
"tool"
>
<view
class=
"tool"
>
<button
v-if=
"homeStore && !homeStore.isLogin"
open-type=
"getPhoneNumber"
<button
v-if=
"homeStore && !homeStore.isLogin"
open-type=
"getPhoneNumber"
@
getphonenumber=
"onGetPhoneNumber"
class=
"sq_btn"
></button>
@
getphonenumber=
"onGetPhoneNumber"
class=
"sq_btn"
></button>
<image
class=
"tool_bg"
:src=
"$baseUrl + item.icon"
@
click=
"handleToolClick(item)"
>
<image
class=
"tool_bg"
:src=
"$baseUrl + item.icon"
@
tap=
"handleToolClick(item)"
>
</image>
</image>
<!--
<image
class=
"tool_icon"
:src=
"$baseUrl + item.icon"
></image>
<!--
<image
class=
"tool_icon"
:src=
"$baseUrl + item.icon"
></image>
<image
class=
"tool_jt"
:src=
"$baseUrl + toolList.jtIcon"
></image>
<image
class=
"tool_jt"
:src=
"$baseUrl + toolList.jtIcon"
></image>
<view
class=
"tool_title"
>
{{
item
.
title
}}
</view>
<view
class=
"tool_title"
>
{{
item
.
title
}}
</view>
<view
class=
"tool_context"
>
{{
item
.
context
}}
</view>
-->
<view
class=
"tool_context"
>
{{
item
.
context
}}
</view>
-->
</view>
</view>
</swiper-item>
</swiper-item>
</swiper>
</swiper>
<!-- 自定义指示点 -->
<!-- 自定义指示点 -->
<view
class=
"custom-indicator"
>
<view
class=
"custom-indicator"
>
<view
v-for=
"(item, index) in toolList.tools"
:key=
"index"
class=
"indicator-dot"
<view
v-for=
"(item, index) in toolList.tools"
:key=
"index"
class=
"indicator-dot"
:class=
"
{ 'active': currentIndex === index }">
:class=
"
{ 'active': currentIndex === index }">
</view>
</view>
</view>
</view>
</view>
</view>
<!--推荐工具-->
<!--推荐工具-->
<!--专家团-->
<!--专家团-->
<view
class=
"et_box"
>
<view
class=
"et_box"
>
<view
class=
"et_maintitle"
>
{{
expertTeam
.
maintitle
}}
</view>
<view
class=
"et_maintitle"
>
{{
expertTeam
.
maintitle
}}
</view>
<view
:data-log=
"
{
<view
:data-log=
"
{
xcxClick: '首页-首屏页面点击',
xcxClick: '首页-二屏页面点击',
pageName: '首页-首屏',
pageName: '首页-二屏',
buttonName: '文字资源位入口'
buttonName: '专家团副标题点击'
}" @tap="showPopup(1, $event)" class="et_subtitle">
}" class="et_subtitle">
<view
class=
"txtlink"
>
星妈会医生在线答疑群,为孩子成长保驾护航
</view>
<view
class=
"txtlink"
@
tap=
"showPopup1(1, 1)"
>
星妈会医生在线答疑群,为孩子成长保驾护航
</view>
<image
class=
"icon_more"
:src=
"$baseUrl + 'homepage/et_more.png'"
></image>
<image
class=
"icon_more"
@
tap=
"showPopup1(1, 2)"
:src=
"$baseUrl + 'homepage/et_more.png'"
></image>
</view>
</view>
<view
class=
"et_main_box"
>
<view
class=
"et_main_box"
>
<view
class=
"et_con_bg"
>
<view
class=
"et_con_bg"
>
<view
class=
"et_tab_box"
>
<view
class=
"et_tab_box"
>
<view
class=
"tab_box"
@
tap=
"onSelEtTap(0)"
>
<view
class=
"tab_box"
@
tap=
"onSelEtTap(0)"
>
<image
class=
"et_tab"
v-show=
"etTabSelIndex == 0"
<image
class=
"et_tab"
v-show=
"etTabSelIndex == 0"
:src=
"$baseUrl + 'homepage/et_sel_tab11.png'"
>
:src=
"$baseUrl + 'homepage/et_sel_tab11.png'"
>
</image>
</image>
<image
class=
"et_tab"
v-show=
"etTabSelIndex != 0"
<image
class=
"et_tab"
v-show=
"etTabSelIndex != 0"
:src=
"$baseUrl + 'homepage/et_tab11.png'"
>
:src=
"$baseUrl + 'homepage/et_tab11.png'"
>
</image>
</image>
</view>
</view>
<view
class=
"tab_box"
@
tap=
"onSelEtTap(1)"
>
<view
class=
"tab_box"
@
tap=
"onSelEtTap(1)"
>
<image
class=
"et_tab"
v-show=
"etTabSelIndex == 1"
<image
class=
"et_tab"
v-show=
"etTabSelIndex == 1"
:src=
"$baseUrl + 'homepage/et_sel_tab2.png'"
>
:src=
"$baseUrl + 'homepage/et_sel_tab2.png'"
>
</image>
</image>
<image
class=
"et_tab"
v-show=
"etTabSelIndex != 1"
<image
class=
"et_tab"
v-show=
"etTabSelIndex != 1"
:src=
"$baseUrl + 'homepage/et_tab2.png'"
>
:src=
"$baseUrl + 'homepage/et_tab2.png'"
>
</image>
</image>
</view>
</view>
<view
class=
"tab_box"
@
tap=
"onSelEtTap(2)"
>
<view
class=
"tab_box"
@
tap=
"onSelEtTap(2)"
>
<image
class=
"et_tab"
v-show=
"etTabSelIndex == 2"
<image
class=
"et_tab"
v-show=
"etTabSelIndex == 2"
:src=
"$baseUrl + 'homepage/et_sel_tab3.png'"
>
:src=
"$baseUrl + 'homepage/et_sel_tab3.png'"
>
</image>
</image>
<image
class=
"et_tab"
v-show=
"etTabSelIndex != 2"
<image
class=
"et_tab"
v-show=
"etTabSelIndex != 2"
:src=
"$baseUrl + 'homepage/et_tab3.png'"
>
:src=
"$baseUrl + 'homepage/et_tab3.png'"
>
</image>
</image>
</view>
</view>
</view>
</view>
<view
class=
"et_con_box"
@
tap=
"onETMore"
>
<view
class=
"et_con_box"
@
tap=
"onETMore(1, etTabSelIndex)"
>
<image
class=
"et_con1"
v-if=
"etTabSelIndex == 0"
:src=
"$baseUrl + expertTeam.etConUrl1"
>
<image
class=
"et_con1"
v-if=
"etTabSelIndex == 0"
:src=
"$baseUrl + expertTeam.etConUrl1"
>
</image>
</image>
<image
class=
"et_con2"
v-if=
"etTabSelIndex == 1"
:src=
"$baseUrl + expertTeam.etConUrl2"
>
<image
class=
"et_con2"
v-if=
"etTabSelIndex == 1"
:src=
"$baseUrl + expertTeam.etConUrl2"
>
</image>
</image>
<image
class=
"et_con3"
v-if=
"etTabSelIndex == 2"
:src=
"$baseUrl + expertTeam.etConUrl3"
>
<image
class=
"et_con3"
v-if=
"etTabSelIndex == 2"
:src=
"$baseUrl + expertTeam.etConUrl3"
>
</image>
</image>
</view>
</view>
<view
class=
"et_more_txt"
@
tap=
"onETMore"
>
<view
class=
"et_more_txt"
@
tap=
"onETMore(2, etTabSelIndex)"
>
<text
class=
"txtlink"
>
点击查看更多
</text>
<text
class=
"txtlink"
>
点击查看更多
</text>
<image
class=
"icon_arrow_yellow"
:src=
"$baseUrl + 'homepage/icon_arrow_yellow.png'"
></image>
<image
class=
"icon_arrow_yellow"
:src=
"$baseUrl + 'homepage/icon_arrow_yellow.png'"
></image>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<!--专家团-->
<!--专家团-->
<!--
<view
class=
"cardScroller"
>
<!--
<view
class=
"cardScroller"
>
<view
class=
"cardbox"
>
<view
class=
"cardbox"
>
<view
class=
"cardboxitem"
v-for=
"cardData in vipCardList"
:key=
"cardData.level"
>
<view
class=
"cardboxitem"
v-for=
"cardData in vipCardList"
:key=
"cardData.level"
>
<image
:data-log=
"
{
<image
:data-log=
"
{
xcxClick: '首页-首屏页面点击',
xcxClick: '首页-首屏页面点击',
pageName: '首页-首屏',
pageName: '首页-首屏',
buttonName: `腰部banner-${cardData.level}`
buttonName: `腰部banner-${cardData.level}`
}" @tap="jumpLinkCard(cardData, $event)" class="bg" :src="$baseUrl + cardData.bgUrl">
</image>
}" @tap="jumpLinkCard(cardData, $event)" class="bg" :src="$baseUrl + cardData.bgUrl">
</image>
<text
class=
"level"
>
{{
cardData
.
level
}}
</text>
<text
class=
"level"
>
{{
cardData
.
level
}}
</text>
<text
class=
"subTitle"
>
{{
cardData
.
subTitle
}}
</text>
<text
class=
"subTitle"
>
{{
cardData
.
subTitle
}}
</text>
<view
class=
"showCornerTxt"
v-if=
"cardData.showCornerTxt && cardData.showCornerTxt.length > 0"
>
<view
class=
"showCornerTxt"
v-if=
"cardData.showCornerTxt && cardData.showCornerTxt.length > 0"
>
{{
cardData
.
showCornerTxt
}}
{{
cardData
.
showCornerTxt
}}
</view>
</view>
<view
v-if=
"cardData.btnTitle && cardData.btnTitle.length > 0"
:data-log=
"
{
<view
v-if=
"cardData.btnTitle && cardData.btnTitle.length > 0"
:data-log=
"
{
xcxClick: '首页-首屏页面点击',
xcxClick: '首页-首屏页面点击',
pageName: '首页-首屏',
pageName: '首页-首屏',
buttonName: `腰部banner-${cardData.level}`
buttonName: `腰部banner-${cardData.level}`
}" class="cardbtn" @tap="jumpLinkWithLogin(cardData.link, $event)">
}" class="cardbtn" @tap="jumpLinkWithLogin(cardData.link, $event)">
<image
class=
"cardbtnbg"
:src=
"$baseUrl + 'homepage/btn_receive.png'"
></image>
<image
class=
"cardbtnbg"
:src=
"$baseUrl + 'homepage/btn_receive.png'"
></image>
<text
class=
"btnTitle"
:style=
"cardData.btnTitle.length > 7 ? 'font-size:22rpx;' : ''"
>
{{
<text
class=
"btnTitle"
:style=
"cardData.btnTitle.length > 7 ? 'font-size:22rpx;' : ''"
>
{{
cardData
.
btnTitle
}}
</text>
cardData
.
btnTitle
}}
</text>
<text
class=
"btnSubTitle"
>
{{
cardData
.
btnSubTitle
}}
</text>
<text
class=
"btnSubTitle"
>
{{
cardData
.
btnSubTitle
}}
</text>
<button
v-if=
"homeStore && !homeStore.isLogin"
open-type=
"getPhoneNumber"
<button
v-if=
"homeStore && !homeStore.isLogin"
open-type=
"getPhoneNumber"
@
getphonenumber=
"onGetPhoneNumber"
class=
"phone-auth-btn-cover"
></button>
@
getphonenumber=
"onGetPhoneNumber"
class=
"phone-auth-btn-cover"
></button>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
-->
</view>
-->
<!--
<view
class=
"contentbox"
id=
"secondScreen"
>
<!--
<view
class=
"contentbox"
id=
"secondScreen"
>
<image
class=
"contentbg"
:src=
"$baseUrl + 'homepage/contentbg.png'"
alt=
""
/>
<image
class=
"contentbg"
:src=
"$baseUrl + 'homepage/contentbg.png'"
alt=
""
/>
<image
class=
"contentitem"
:key=
"index"
:style=
"contentItem._style"
<image
class=
"contentitem"
:key=
"index"
:style=
"contentItem._style"
v-for=
"(contentItem, index) in contentImgList"
:src=
"$baseUrl + contentItem.bgUrl"
:data-log=
"
{
v-for=
"(contentItem, index) in contentImgList"
:src=
"$baseUrl + contentItem.bgUrl"
:data-log=
"
{
xcxClick: '首页-二屏页面点击',
xcxClick: '首页-二屏页面点击',
pageName: '首页-二屏',
pageName: '首页-二屏',
buttonName: `品牌介绍${index + 1}`
buttonName: `品牌介绍${index + 1}`
}" @tap="jumpLink(contentItem.link, contentItem.videoUrl, index, $event)">
</image>
}" @tap="jumpLink(contentItem.link, contentItem.videoUrl, index, $event)">
</image>
</view>
-->
</view>
-->
<view
class=
"channelbox"
>
<view
class=
"channelbox"
>
<text
class=
"maintitle"
>
{{
childrenInfoListMianTitle
}}
</text>
<text
class=
"maintitle"
>
{{
childrenInfoListMianTitle
}}
</text>
<view
class=
"subtitle_box"
>
<view
class=
"subtitle_box"
>
<text
class=
"subtitle"
>
从专业到实用,一站式解决你的育儿难题
</text>
<text
class=
"subtitle"
>
从专业到实用,一站式解决你的育儿难题
</text>
<image
class=
"icon_more"
:src=
"$baseUrl + 'homepage/home_more_btn_v2.png'"
:data-log=
"
{
<image
class=
"icon_more"
:src=
"$baseUrl + 'homepage/home_more_btn_v2.png'"
:data-log=
"
{
xcxClick: '首页-三屏页面点击',
xcxClick: '首页-三屏页面点击',
pageName: '首页-三屏',
pageName: '首页-三屏',
buttonName: `次位内容资源位-查看更多文字`
buttonName: `次位内容资源位-查看更多文字`
}" @tap="jumpLink(suggest.link, false, false, $event)">
</image>
}" @tap="jumpLink(suggest.link, false, false, $event)">
</image>
</view>
</view>
<view
class=
"channelscroll"
>
<view
class=
"channelscroll"
>
<view
class=
"box"
>
<view
class=
"box"
>
<view
class=
"infobox"
:key=
"index"
v-for=
"(infoItem, index) in childrenInfoList"
:data-log=
"
{
<view
class=
"infobox"
:key=
"index"
v-for=
"(infoItem, index) in childrenInfoList"
:data-log=
"
{
xcxClick: '首页-三屏页面点击',
xcxClick: '首页-三屏页面点击',
pageName: '首页-三屏',
pageName: '首页-三屏',
buttonName: `次位内容资源位-轮播-${index + 1}`
buttonName: `次位内容资源位-轮播-${index + 1}`
}" @tap="jumpLink(infoItem.link, false, false, $event)">
}" @tap="jumpLink(infoItem.link, false, false, $event)">
<image
class=
"infoimg"
:src=
"$baseUrl + infoItem.bgUrl"
></image>
<image
class=
"infoimg"
:src=
"$baseUrl + infoItem.bgUrl"
></image>
<view
class=
"infotitlebox"
>
<view
class=
"infotitlebox"
>
<view
class=
"infotitlecon"
>
<view
class=
"infotitlecon"
>
<view
class=
"infotitle"
>
{{
infoItem
.
desc
}}
</view>
<view
class=
"infotitle"
>
{{
infoItem
.
desc
}}
</view>
<image
v-if=
"infoItem.isNew"
class=
"infotitletag"
<image
v-if=
"infoItem.isNew"
class=
"infotitletag"
:src=
"$baseUrl + 'homepage/home_new_tag_v3.png'"
>
New
</image>
:src=
"$baseUrl + 'homepage/home_new_tag_v3.png'"
>
New
</image>
</view>
</view>
<view
class=
"infodesc"
>
{{
infoItem
.
desc2
}}
</view>
<view
class=
"infodesc"
>
{{
infoItem
.
desc2
}}
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<!--
<view
:data-log=
"
{
<!--
<view
:data-log=
"
{
xcxClick: '首页-三屏页面点击',
xcxClick: '首页-三屏页面点击',
pageName: '首页-三屏',
pageName: '首页-三屏',
buttonName: `次位内容资源位-查看更多文字`
buttonName: `次位内容资源位-查看更多文字`
}" @tap="jumpLink(suggest.link, false, false, $event)" class="desc desc2">
}" @tap="jumpLink(suggest.link, false, false, $event)" class="desc desc2">
更多星妈会权威专家服务团
<view
class=
"desc1"
>
点击查看 >
</view>
更多星妈会权威专家服务团
<view
class=
"desc1"
>
点击查看 >
</view>
</view>
-->
</view>
-->
</view>
</view>
<view
class=
"channelbox"
id=
"thirdScreen"
>
<view
class=
"channelbox"
id=
"thirdScreen"
>
<text
class=
"maintitle"
>
{{
channelTabListMianTitle
}}
</text>
<text
class=
"maintitle"
>
{{
channelTabListMianTitle
}}
</text>
<view
class=
"subtitle_box"
>
<view
class=
"subtitle_box"
>
<text
class=
"subtitle"
>
用声音传递爱与智慧,守护宝贝成长的每一步
</text>
<text
class=
"subtitle"
>
用声音传递爱与智慧,守护宝贝成长的每一步
</text>
<image
class=
"icon_more"
:src=
"$baseUrl + 'homepage/home_more_btn_v2.png'"
:data-log=
"
{
<image
class=
"icon_more"
:src=
"$baseUrl + 'homepage/home_more_btn_v2.png'"
:data-log=
"
{
xcxClick: '首页-三屏页面点击',
xcxClick: '首页-三屏页面点击',
pageName: '首页-三屏',
pageName: '首页-三屏',
buttonName: `首位内容资源位-查看更多文字`
buttonName: `首位内容资源位-查看更多文字`
}" @tap="jumpLink(voiceStory.link, false, false, $event)">
</image>
}" @tap="jumpLink(voiceStory.link, false, false, $event)">
</image>
</view>
</view>
<view
class=
"listbox"
>
<view
class=
"listbox"
>
<view
@
tap=
"channelTabHandler(index, $event)"
:data-log=
"
{
<view
@
tap=
"channelTabHandler(index, $event)"
:data-log=
"
{
xcxClick: '首页-三屏页面点击',
xcxClick: '首页-三屏页面点击',
pageName: '首页-三屏',
pageName: '首页-三屏',
buttonName: `首页内容资源位分类${index + 1}-${item}`
buttonName: `首页内容资源位分类${index + 1}-${item}`
}" :class="channelTabIndex === index ? 'tabitem tabActive' : 'tabitem'" v-for="(item, index) in channelTabList"
}" :class="channelTabIndex === index ? 'tabitem tabActive' : 'tabitem'" v-for="(item, index) in channelTabList"
:key="index">
:key="index">
{{
item
}}
{{
item
}}
</view>
</view>
</view>
</view>
<view
class=
"channelscroll2"
>
<view
class=
"channelscroll2"
>
<view
class=
"box2"
>
<view
class=
"box2"
>
<view
class=
"infobox2"
:key=
"index"
<view
class=
"infobox2"
:key=
"index"
v-for=
"(infoItem, index) in changelInfoList[channelTabIndex]"
:data-log=
"
{
v-for=
"(infoItem, index) in changelInfoList[channelTabIndex]"
:data-log=
"
{
xcxClick: '首页-三屏页面点击',
xcxClick: '首页-三屏页面点击',
pageName: '首页-三屏',
pageName: '首页-三屏',
buttonName: `首页内容资源位分类${channelTabIndex + 1}-${channelTabList[channelTabIndex]}-${index + 1}`
buttonName: `首页内容资源位分类${channelTabIndex + 1}-${channelTabList[channelTabIndex]}-${index + 1}`
}" @tap="jumpLink(infoItem.link, false, false, $event)">
}" @tap="jumpLink(infoItem.link, false, false, $event)">
<image
class=
"infoimg2"
:src=
"$baseUrl + infoItem.bgUrl"
></image>
<image
class=
"infoimg2"
:src=
"$baseUrl + infoItem.bgUrl"
></image>
<view
class=
"infotitle2box"
>
<view
class=
"infotitle2box"
>
<view
class=
"infotitle2"
>
<view
class=
"infotitle2"
>
{{
infoItem
.
desc
}}
{{
infoItem
.
desc
}}
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<!--
<view
:data-log=
"
{
<!--
<view
:data-log=
"
{
xcxClick: '首页-三屏页面点击',
xcxClick: '首页-三屏页面点击',
pageName: '首页-三屏',
pageName: '首页-三屏',
buttonName: `首位内容资源位-查看更多文字`
buttonName: `首位内容资源位-查看更多文字`
}" @tap="jumpLink(voiceStory.link, false, false, $event)" class="desc">
}" @tap="jumpLink(voiceStory.link, false, false, $event)" class="desc">
滑动或者点击查看全部
<view
class=
"desc1"
>
有声故事 >
</view>
滑动或者点击查看全部
<view
class=
"desc1"
>
有声故事 >
</view>
</view>
-->
</view>
-->
</view>
</view>
<view
id=
"fourthScreen"
class=
"bottomlink"
>
<view
id=
"fourthScreen"
class=
"bottomlink"
>
<image
class=
"bottombg"
:src=
"$baseUrl + 'homepage/bottombg.png'"
></image>
<image
class=
"bottombg"
:src=
"$baseUrl + 'homepage/bottombg.png'"
></image>
<view
class=
"box"
>
<view
class=
"box"
>
<image
class=
"icon"
v-for=
"(icon, index) in bottomLinkList"
:key=
"index"
:data-log=
"
{
<image
class=
"icon"
v-for=
"(icon, index) in bottomLinkList"
:key=
"index"
:data-log=
"
{
xcxClick: '首页-四屏页面点击',
xcxClick: '首页-四屏页面点击',
pageName: '首页-四屏',
pageName: '首页-四屏',
buttonName: `${qrNameList[index]}`
buttonName: `${qrNameList[index]}`
}" :src="$baseUrl + icon.bgUrl" :style="icon._style" @tap="showPopup(index, $event)">
</image>
}" :src="$baseUrl + icon.bgUrl" :style="icon._style" @tap="showPopup(index, $event)">
</image>
</view>
</view>
</view>
</view>
</view>
</view>
<view>
<view>
<!-- 普通弹窗 -->
<!-- 普通弹窗 -->
<uni-popup
:is-mask-click=
"false"
:safe-area=
"false"
ref=
"popup"
background-color=
"#fff"
<uni-popup
:is-mask-click=
"false"
:safe-area=
"false"
ref=
"popup"
background-color=
"#fff"
border-radius=
"48rpx"
>
border-radius=
"48rpx"
>
<view
v-if=
"qrObj !== null"
class=
"popup-content"
>
<view
v-if=
"qrObj !== null"
class=
"popup-content"
>
<image
class=
"btnclose"
@
tap=
"closePop"
:src=
"$baseUrl + 'homepage/btnclose.png'"
></image>
<image
class=
"btnclose"
@
tap=
"closePop"
:src=
"$baseUrl + 'homepage/btnclose.png'"
></image>
<view
class=
"title"
>
<view
class=
"title"
>
{{
qrObj
.
title
||
''
}}
{{
qrObj
.
title
||
''
}}
</view>
</view>
<rich-text
class=
"desc"
:nodes=
"qrObj.desc || ''"
></rich-text>
<rich-text
class=
"desc"
:nodes=
"qrObj.desc || ''"
></rich-text>
<image
:show-menu-by-longpress=
"true"
class=
"qrcode"
:src=
"$baseUrl + (qrObj.qrUrl || '')"
></image>
<image
:show-menu-by-longpress=
"true"
class=
"qrcode"
:src=
"$baseUrl + (qrObj.qrUrl || '')"
></image>
<image
@
tap=
"downloadHandler($baseUrl + (qrObj.qrUrl || ''))"
class=
"btndownload"
<image
@
tap=
"downloadHandler($baseUrl + (qrObj.qrUrl || ''))"
class=
"btndownload"
:src=
"$baseUrl + 'homepage/btn_download.png'"
></image>
:src=
"$baseUrl + 'homepage/btn_download.png'"
></image>
</view>
</view>
<view
v-else
class=
"popup-content"
style=
"height: 977rpx;"
>
<view
v-else
class=
"popup-content"
style=
"height: 977rpx;"
>
<image
class=
"xingmahui"
:src=
"$baseUrl + 'homepage/xingmahui.png'"
></image>
<image
class=
"xingmahui"
:src=
"$baseUrl + 'homepage/xingmahui.png'"
></image>
<image
class=
"btnclose"
@
tap=
"closePop"
:src=
"$baseUrl + 'homepage/btnclose.png'"
></image>
<image
class=
"btnclose"
@
tap=
"closePop"
:src=
"$baseUrl + 'homepage/btnclose.png'"
></image>
</view>
</view>
</uni-popup>
</uni-popup>
</view>
</view>
<!-- 新增图片弹窗 -->
<!-- 新增图片弹窗 -->
<uni-popup
:is-mask-click=
"false"
:safe-area=
"false"
ref=
"imagePopup"
background-color=
"transparent"
>
<uni-popup
:is-mask-click=
"false"
:safe-area=
"false"
ref=
"imagePopup"
background-color=
"transparent"
>
<view
class=
"image-popup-content"
>
<view
class=
"image-popup-content"
>
<image
class=
"popup-image"
:src=
"popupImageUrl"
mode=
"aspectFit"
@
tap=
"imagePopupJump"
></image>
<image
class=
"popup-image"
:src=
"popupImageUrl"
mode=
"aspectFit"
@
tap=
"imagePopupJump"
></image>
<image
class=
"popup-close-btn"
@
tap=
"closeImagePopup"
:src=
"$baseUrl + 'homepage/btnclose.png'"
></image>
<image
class=
"popup-close-btn"
@
tap=
"closeImagePopup"
:src=
"$baseUrl + 'homepage/btnclose.png'"
></image>
</view>
</view>
</uni-popup>
</uni-popup>
<view
v-if=
"showVideo"
class=
"video-popup"
>
<view
v-if=
"showVideo"
class=
"video-popup"
>
<video
:src=
"currentVideoUrl"
controls
autoplay
:style=
"
{ width: '100vw', height: videoHeight }">
</video>
<video
:src=
"currentVideoUrl"
controls
autoplay
:style=
"
{ width: '100vw', height: videoHeight }">
</video>
<view
class=
"close-btn-bottom"
@
tap=
"closeVideo"
>
×
</view>
<view
class=
"close-btn-bottom"
@
tap=
"closeVideo"
>
×
</view>
</view>
</view>
<RegisterLayer
v-model=
"showRegisterLayer"
/>
<RegisterLayer
v-model=
"showRegisterLayer"
/>
</view>
</view>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
jump
,
JumpType
}
from
'../utils'
;
import
{
import
{
useHomeStore
}
from
'../stores/home'
;
jump
,
import
{
fetchHomeJSON
}
from
'../api/home'
;
JumpType
import
{
useUserStore
}
from
'../stores/user'
;
}
from
'../utils'
;
import
RegisterLayer
from
"../components/RegisterLayer.vue"
;
import
{
import
md
from
'../md'
;
useHomeStore
import
ExposureTracker
from
'../utils/exposure'
;
}
from
'../stores/home'
;
import
{
getHealthField
}
from
"@/api/common"
;
import
{
fetchHomeJSON
// const homeStore = useHomeStore();
}
from
'../api/home'
;
const
userStore
=
useUserStore
();
import
{
useUserStore
// 定义需要曝光检测的元素配置
}
from
'../stores/user'
;
const
EXPOSURE_CONFIGS
=
[
import
RegisterLayer
from
"../components/RegisterLayer.vue"
;
{
import
md
from
'../md'
;
id
:
'firstScreen'
,
import
ExposureTracker
from
'../utils/exposure'
;
logParams
:
{
import
{
xcxPage
:
'首页-首屏页面浏览'
,
getHealthField
pageName
:
'首页-首屏'
}
from
"@/api/common"
;
}
},
// const homeStore = useHomeStore();
// 可以添加更多需要曝光检测的元素配置
const
userStore
=
useUserStore
();
{
id
:
'secondScreen'
,
// 定义需要曝光检测的元素配置
logParams
:
{
const
EXPOSURE_CONFIGS
=
[{
xcxPage
:
'首页-二屏页面浏览'
,
id
:
'firstScreen'
,
pageName
:
'首页-二屏'
logParams
:
{
}
xcxPage
:
'首页-首屏页面浏览'
,
},
pageName
:
'首页-首屏'
{
}
id
:
'thirdScreen'
,
},
logParams
:
{
// 可以添加更多需要曝光检测的元素配置
xcxPage
:
'首页-三屏页面浏览'
,
{
pageName
:
'首页-三屏'
id
:
'secondScreen'
,
}
logParams
:
{
},
xcxPage
:
'首页-二屏页面浏览'
,
{
pageName
:
'首页-二屏'
id
:
'fourthScreen'
,
}
logParams
:
{
},
xcxPage
:
'首页-四屏页面浏览'
,
{
pageName
:
'首页-四屏'
id
:
'thirdScreen'
,
}
logParams
:
{
}
xcxPage
:
'首页-三屏页面浏览'
,
];
pageName
:
'首页-三屏'
}
export
default
{
},
beforeDestroy
()
{
{
if
(
this
.
exposureTracker
)
{
id
:
'fourthScreen'
,
this
.
exposureTracker
.
resetAllExposure
();
logParams
:
{
}
xcxPage
:
'首页-四屏页面浏览'
,
},
pageName
:
'首页-四屏'
deactivated
()
{
}
if
(
this
.
exposureTracker
)
{
}
this
.
exposureTracker
.
resetAllExposure
();
];
}
},
export
default
{
data
()
{
beforeDestroy
()
{
return
{
if
(
this
.
exposureTracker
)
{
popType
:
'bottom'
,
this
.
exposureTracker
.
resetAllExposure
();
statusBarHeight
:
38
,
}
showRegisterLayer
:
false
,
},
swiperList
:
[],
deactivated
()
{
indicatorDots
:
true
,
if
(
this
.
exposureTracker
)
{
autoplay
:
true
,
this
.
exposureTracker
.
resetAllExposure
();
interval
:
4000
,
}
duration
:
500
,
},
indicatoractiveColor
:
"#a6a0a1"
,
data
()
{
indicatorColor
:
"rgba(255, 255, 255, 1)"
,
return
{
toolList
:
{},
popType
:
'bottom'
,
expertTeam
:
{},
statusBarHeight
:
38
,
vipCardList
:
[],
showRegisterLayer
:
false
,
contentImgList
:
[],
swiperList
:
[],
channelTabList
:
[],
indicatorDots
:
true
,
channelTabIndex
:
0
,
autoplay
:
true
,
changelInfoList
:
[],
interval
:
4000
,
childrenInfoList
:
[],
duration
:
500
,
bottomLinkList
:
[],
indicatoractiveColor
:
"#a6a0a1"
,
qrInfoObj
:
undefined
,
indicatorColor
:
"rgba(255, 255, 255, 1)"
,
popupIndex
:
0
,
toolList
:
{},
qrInfoList
:
[{
title
:
''
,
desc
:
''
,
qrUrl
:
''
},
{
title
:
''
,
desc
:
''
,
qrUrl
:
''
},
{
title
:
''
,
desc
:
''
,
qrUrl
:
''
},
{
title
:
''
,
desc
:
''
,
qrUrl
:
''
}],
expertTeam
:
{},
qrObj
:
{
title
:
''
,
desc
:
''
,
qrUrl
:
''
},
vipCardList
:
[],
showVideo
:
false
,
contentImgList
:
[],
currentVideoUrl
:
''
,
channelTabList
:
[],
isClickPhoneAuth
:
false
,
channelTabIndex
:
0
,
voiceStory
:
{},
changelInfoList
:
[],
suggest
:
{},
childrenInfoList
:
[],
videoHeight
:
'56vw'
,
bottomLinkList
:
[],
qrNameList
:
[
'公众号'
,
'企业微信'
,
'视频号'
,
'小红书'
],
qrInfoObj
:
undefined
,
windowHeight
:
0
,
popupIndex
:
0
,
isFirstScreenExposed
:
false
,
qrInfoList
:
[{
scrollTimer
:
null
,
title
:
''
,
exposureTracker
:
null
,
desc
:
''
,
currentIndex
:
0
,
qrUrl
:
''
etTabSelIndex
:
0
,
},
{
bannerCurrentIndex
:
0
,
title
:
''
,
childrenInfoListMianTitle
:
''
,
desc
:
''
,
channelTabListMianTitle
:
''
,
qrUrl
:
''
popupImageUrl
:
''
,
},
{
popupImageObj
:
{},
title
:
''
,
}
desc
:
''
,
},
qrUrl
:
''
components
:
{
},
{
RegisterLayer
title
:
''
,
},
desc
:
''
,
computed
:
{
qrUrl
:
''
homeStore
()
{
}],
return
useHomeStore
();
qrObj
:
{
}
title
:
''
,
},
desc
:
''
,
props
:
{
qrUrl
:
''
scrollTop
:
{
},
type
:
Number
,
showVideo
:
false
,
default
:
0
currentVideoUrl
:
''
,
}
isClickPhoneAuth
:
false
,
},
voiceStory
:
{},
watch
:
{
suggest
:
{},
homeStore
:
{
videoHeight
:
'56vw'
,
handler
(
newVal
)
{
qrNameList
:
[
'公众号'
,
'企业微信'
,
'视频号'
,
'小红书'
],
this
.
showRegisterLayer
=
this
.
isClickPhoneAuth
&&
newVal
.
isLogin
&&
!
newVal
.
babyExistence
;
windowHeight
:
0
,
if
(
newVal
.
homeInfo
!==
null
)
{
isFirstScreenExposed
:
false
,
this
.
initHomeInfo
();
scrollTimer
:
null
,
this
.
checkAndShowPopup
();
exposureTracker
:
null
,
}
currentIndex
:
0
,
},
etTabSelIndex
:
0
,
deep
:
true
,
bannerCurrentIndex
:
0
,
immediate
:
true
childrenInfoListMianTitle
:
''
,
},
channelTabListMianTitle
:
''
,
scrollTop
:
{
popupImageUrl
:
''
,
handler
(
newVal
)
{
popupImageObj
:
{},
this
.
checkExposure
(
newVal
);
}
}
},
}
components
:
{
},
RegisterLayer
mounted
()
{
},
const
menuButtonInfo
=
wx
.
getMenuButtonBoundingClientRect
();
computed
:
{
this
.
statusBarHeight
=
menuButtonInfo
.
top
;
homeStore
()
{
this
.
isClickPhoneAuth
=
false
;
return
useHomeStore
();
}
// 获取窗口高度
},
const
systemInfo
=
uni
.
getSystemInfoSync
();
props
:
{
this
.
windowHeight
=
systemInfo
.
windowHeight
;
scrollTop
:
{
type
:
Number
,
// 初始化曝光检测工具
default
:
0
this
.
exposureTracker
=
new
ExposureTracker
(
this
);
}
this
.
exposureTracker
.
addExposureElements
(
EXPOSURE_CONFIGS
);
},
watch
:
{
// 初始检查曝光
homeStore
:
{
this
.
$nextTick
(()
=>
{
handler
(
newVal
)
{
this
.
checkExposure
(
this
.
scrollTop
);
this
.
showRegisterLayer
=
this
.
isClickPhoneAuth
&&
newVal
.
isLogin
&&
!
newVal
.
babyExistence
;
});
if
(
newVal
.
homeInfo
!==
null
)
{
},
this
.
initHomeInfo
();
unmounted
()
{
this
.
checkAndShowPopup
();
// 组件销毁时清理弹窗状态(可选,根据业务需求决定是否保留状态)
}
// 如果需要重置弹窗状态,可以在这里调用 this.resetPopupState()
},
},
deep
:
true
,
methods
:
{
immediate
:
true
},
testSource
()
{
scrollTop
:
{
uni
.
navigateTo
({
handler
(
newVal
)
{
url
:
'/pages/syWebview/syWebview?p=xmh'
this
.
checkExposure
(
newVal
);
})
}
},
}
async
initHomeInfo
()
{
},
const
{
data
}
=
await
fetchHomeJSON
();
mounted
()
{
console
.
warn
(
"data"
,
data
)
const
menuButtonInfo
=
wx
.
getMenuButtonBoundingClientRect
();
if
(
data
)
{
this
.
statusBarHeight
=
menuButtonInfo
.
top
;
this
.
swiperList
=
data
.
swiperList
;
this
.
isClickPhoneAuth
=
false
;
this
.
vipConfigList
=
data
.
vipConfigList
;
// this.vipCardList = data.vipCardList;
// 获取窗口高度
this
.
contentImgList
=
data
.
contentImgList
;
const
systemInfo
=
uni
.
getSystemInfoSync
();
this
.
channelTabList
=
data
.
channelTabList
;
this
.
windowHeight
=
systemInfo
.
windowHeight
;
this
.
changelInfoList
=
data
.
changelInfoList
;
this
.
childrenInfoList
=
data
.
childrenInfoList
[
0
]
||
[];
// 初始化曝光检测工具
this
.
bottomLinkList
=
data
.
bottomLinkList
;
this
.
exposureTracker
=
new
ExposureTracker
(
this
);
this
.
qrInfoList
=
data
.
qrInfoList
||
[];
this
.
exposureTracker
.
addExposureElements
(
EXPOSURE_CONFIGS
);
this
.
toolList
=
data
.
toolList
;
this
.
expertTeam
=
data
.
expertTeam
;
// 初始检查曝光
this
.
vipCardList
=
data
.
vipCardList
;
this
.
$nextTick
(()
=>
{
this
.
voiceStory
=
data
.
voiceStory
;
this
.
checkExposure
(
this
.
scrollTop
);
this
.
suggest
=
data
.
suggest
;
});
this
.
childrenInfoListMianTitle
=
data
.
childrenInfoListMianTitle
;
},
this
.
channelTabListMianTitle
=
data
.
channelTabListMianTitle
;
unmounted
()
{
this
.
popupImageUrl
=
this
.
$baseUrl
+
data
.
popupImageObj
?.
imageUrl
||
''
;
// 组件销毁时清理弹窗状态(可选,根据业务需求决定是否保留状态)
this
.
popupImageObj
=
data
.
popupImageObj
||
{};
// 如果需要重置弹窗状态,可以在这里调用 this.resetPopupState()
},
if
(
this
.
homeStore
.
isLogin
)
{
methods
:
{
this
.
vipCardList
[
0
]
=
data
.
vipConfigList
.
find
(
item
=>
item
.
grade
===
this
.
homeStore
.
homeInfo
?.
grade
);
this
.
vipCardList
[
0
].
level
=
this
.
homeStore
.
homeInfo
?.
gradeName
;
testSource
()
{
uni
.
navigateTo
({
url
:
'/pages/syWebview/syWebview?p=xmh'
})
},
async
initHomeInfo
()
{
const
{
data
}
=
await
fetchHomeJSON
();
console
.
warn
(
"data"
,
data
)
if
(
data
)
{
this
.
swiperList
=
data
.
swiperList
;
this
.
vipConfigList
=
data
.
vipConfigList
;
// this.vipCardList = data.vipCardList;
this
.
contentImgList
=
data
.
contentImgList
;
this
.
channelTabList
=
data
.
channelTabList
;
this
.
changelInfoList
=
data
.
changelInfoList
;
this
.
childrenInfoList
=
data
.
childrenInfoList
[
0
]
||
[];
this
.
bottomLinkList
=
data
.
bottomLinkList
;
this
.
qrInfoList
=
data
.
qrInfoList
||
[];
this
.
toolList
=
data
.
toolList
;
this
.
expertTeam
=
data
.
expertTeam
;
this
.
vipCardList
=
data
.
vipCardList
;
this
.
voiceStory
=
data
.
voiceStory
;
this
.
suggest
=
data
.
suggest
;
this
.
childrenInfoListMianTitle
=
data
.
childrenInfoListMianTitle
;
this
.
channelTabListMianTitle
=
data
.
channelTabListMianTitle
;
this
.
popupImageUrl
=
this
.
$baseUrl
+
data
.
popupImageObj
?.
imageUrl
||
''
;
this
.
popupImageObj
=
data
.
popupImageObj
||
{};
if
(
this
.
homeStore
.
isLogin
)
{
this
.
vipCardList
[
0
]
=
data
.
vipConfigList
.
find
(
item
=>
item
.
grade
===
this
.
homeStore
.
homeInfo
?.
grade
);
this
.
vipCardList
[
0
].
level
=
this
.
homeStore
.
homeInfo
?.
gradeName
;
}
else
{
this
.
vipCardList
[
0
]
=
data
.
vipConfigList
[
0
];
}
}
},
changeIndicatorDots
(
e
)
{
this
.
indicatorDots
=
!
this
.
indicatorDots
},
changeAutoplay
(
e
)
{
this
.
autoplay
=
!
this
.
autoplay
},
intervalChange
(
e
)
{
this
.
interval
=
e
.
target
.
value
},
durationChange
(
e
)
{
this
.
duration
=
e
.
target
.
value
},
jumpBannerHandler
(
item
,
index
)
{
md
.
sensorLogTake
({
xcxClick
:
'首页-首屏页面点击'
,
pageName
:
'首页-首屏'
,
buttonName
:
`第
${
index
+
1
}
张焦点图-入口`
,
});
if
(
item
.
videoUrl
)
{
this
.
currentVideoUrl
=
this
.
$baseUrl
+
item
.
videoUrl
;
this
.
showVideo
=
true
;
return
;
}
if
(
item
.
link
)
{
// 有 link,执行跳转
jump
(
item
.
link
);
}
else
{
// 没有 link,预览图片
uni
.
previewImage
({
urls
:
[
this
.
$baseUrl
+
item
.
url
],
// 预览当前图片
current
:
this
.
$baseUrl
+
item
.
url
// 当前显示的图片
});
}
},
previewImage
(
url
)
{
uni
.
previewImage
({
urls
:
[
url
],
// 预览当前图片
current
:
url
// 当前显示的图片
});
},
jumpLinkWithLogin
(
link
,
evt
)
{
if
(
evt
)
{
md
.
sensorLog
(
evt
);
}
if
(
this
.
homeStore
.
isLogin
)
{
jump
(
link
);
}
},
jumpLinkCard
(
item
,
evt
)
{
if
(
evt
)
{
md
.
sensorLog
(
evt
);
}
if
(
item
.
btnSubTitle
.
length
>
0
&&
item
.
btnTitle
.
length
>
0
)
{
return
;
//如果有按钮的话,废弃这个点击事件
}
if
(
item
.
link
)
{
jump
(
item
.
link
);
}
},
jumpLink
(
link
,
videoUrl
,
index
,
evt
)
{
if
(
evt
)
{
md
.
sensorLog
(
evt
);
}
if
(
videoUrl
)
{
if
(
videoUrl
.
indexOf
(
'http'
)
===
-
1
)
{
videoUrl
=
this
.
$baseUrl
+
videoUrl
;
}
// 弹出视频
this
.
currentVideoUrl
=
videoUrl
;
if
(
index
===
1
)
{
this
.
videoHeight
=
"100vw"
;
}
else
{
this
.
videoHeight
=
"56vw"
;
}
this
.
showVideo
=
true
;
return
;
// 视频弹窗出现后,video标签的autoplay会自动播放
}
else
if
(
link
)
{
if
(
!
link
||
link
===
''
)
{
return
;
}
// 其他跳转逻辑
jump
(
link
);
}
},
channelTabHandler
(
_index
,
evt
)
{
if
(
evt
)
{
md
.
sensorLog
(
evt
);
}
this
.
channelTabIndex
=
_index
;
},
showPopup
(
_index
,
evt
)
{
if
(
evt
)
{
md
.
sensorLog
(
evt
);
}
md
.
sensorLogTake
({
xcxPage
:
`
${
this
.
qrNameList
[
_index
]}
拉起半屏二维码入口页面浏览`
,
pageName
:
`
${
this
.
qrNameList
[
_index
]}
拉起半屏二维码入口`
,
});
if
(
_index
===
3
)
{
this
.
qrObj
=
null
;
}
else
{
_index
=
Math
.
max
(
0
,
Math
.
min
(
_index
,
this
.
qrInfoList
.
length
-
1
));
this
.
qrObj
=
this
.
qrInfoList
[
_index
];
}
this
.
popupIndex
=
_index
;
this
.
$refs
.
popup
.
open
(
this
.
popType
);
},
showPopup1
(
_index
,
type
)
{
md
.
sensorLogTake
({
xcxClick
:
`首页-二屏页面点击`
,
pageName
:
`首页-二屏`
,
buttonName
:
type
==
1
?
'专家团副标题点击'
:
'专家团进群咨询按钮点击'
});
if
(
_index
===
3
)
{
this
.
qrObj
=
null
;
}
else
{
_index
=
Math
.
max
(
0
,
Math
.
min
(
_index
,
this
.
qrInfoList
.
length
-
1
));
this
.
qrObj
=
this
.
qrInfoList
[
_index
];
}
this
.
popupIndex
=
_index
;
this
.
$refs
.
popup
.
open
(
this
.
popType
);
},
closePop
()
{
this
.
$refs
.
popup
.
close
();
},
goSearchHandler
(
e
)
{
md
.
sensorLog
(
e
);
uni
.
navigateTo
({
url
:
"/pages/search/search"
})
},
downloadHandler
(
imgurl
)
{
md
.
sensorLogTake
({
xcxClick
:
`
${
this
.
qrNameList
[
this
.
popupIndex
]}
拉起半屏二维码入口页面点击`
,
pageName
:
`
${
this
.
qrNameList
[
this
.
popupIndex
]}
拉起半屏二维码入口页面点击`
,
buttonName
:
`下载二维码`
});
uni
.
downloadFile
({
url
:
imgurl
,
success
:
(
downloadRes
)
=>
{
if
(
downloadRes
.
statusCode
===
200
)
{
uni
.
saveImageToPhotosAlbum
({
filePath
:
downloadRes
.
tempFilePath
,
success
:
(
res
)
=>
{
uni
.
showToast
({
title
:
'保存成功'
,
icon
:
'success'
});
},
fail
:
(
err
)
=>
{
uni
.
showToast
({
title
:
'保存失败'
,
icon
:
'none'
});
}
});
}
else
{
uni
.
showToast
({
title
:
'下载失败'
,
icon
:
'none'
});
}
},
fail
:
(
err
)
=>
{
uni
.
showToast
({
title
:
'下载失败'
,
icon
:
'none'
});
}
});
},
closeVideo
()
{
this
.
showVideo
=
false
;
this
.
currentVideoUrl
=
''
;
},
onGetPhoneNumber
(
e
)
{
if
(
e
.
detail
.
errMsg
!==
'getPhoneNumber:ok'
)
{
uni
.
showToast
({
title
:
'请授权使用手机号'
,
icon
:
'none'
,
});
return
;
}
console
.
log
(
'detail'
,
e
.
detail
);
this
.
isClickPhoneAuth
=
true
;
userStore
.
phoneCallback
(
e
.
detail
);
},
goCustomerHandler
(
e
)
{
md
.
sensorLog
(
e
);
const
{
memberId
,
mobile
,
openId
,
unionId
}
=
this
.
homeStore
.
homeInfo
;
const
customerUrl
=
`https://intelcc-user.icsoc.net/?channelKey=45839e0505554f8c8aea3c7b6259b049&init=1&crmld=
${
memberId
}
&mobile=
${
mobile
}
&openId=
${
openId
}
&unionId=
${
unionId
}
`
;
jump
({
type
:
JumpType
.
H5
,
url
:
customerUrl
});
},
checkExposure
(
scrollTop
)
{
if
(
this
.
exposureTracker
)
{
this
.
exposureTracker
.
checkExposure
(
scrollTop
);
}
},
resetExposure
()
{
if
(
this
.
exposureTracker
)
{
this
.
exposureTracker
.
resetAllExposure
();
}
},
onSwiperChange
(
e
)
{
this
.
currentIndex
=
e
.
detail
.
current
;
},
onBannerSwiperChange
(
e
)
{
this
.
bannerCurrentIndex
=
e
.
detail
.
current
;
},
async
handleToolClick
(
item
)
{
md
.
sensorLogTake
({
xcxClick
:
"首页-二屏页面点击"
,
pageName
:
"首页-二屏"
,
buttonName
:
item
.
title
+
"工具点击"
,
});
if
(
item
.
title
===
"医生问诊"
)
{
// if (!cfgStatus.value.isRegister) return;
const
res
=
await
getHealthField
();
if
(
!
res
.
success
)
{
uni
.
showToast
({
title
:
"获取健康字段失败"
,
icon
:
"none"
,
});
return
;
}
const
{
sign
,
timestamp
,
appId
,
partnerUserId
,
env
}
=
res
.
data
;
jump
({
type
:
JumpType
.
MINI
,
url
:
"/pages/partner/redirect"
,
extra
:
{
appId
:
"wx81ecfb5aa3fb512f"
,
envVersion
:
env
,
extraData
:
{
sign
,
// 参考 4.请求参数
timestamp
,
// 参考 4.请求参数
appId
,
// 参考 4.请求参数
partnerUserId
,
// 参考 4.请求参数
targetApp
:
"/h5/partner/shining-like-a-start/landing-free-consult?sysType=CRF"
,
},
},
});
}
else
{
jump
({
type
:
item
.
link
.
type
,
url
:
item
.
link
.
url
});
}
},
onSelEtTap
(
index
)
{
let
str
=
index
===
0
?
'名医专家'
:
(
index
===
1
?
'科研专家'
:
'权威机构'
)
md
.
sensorLogTake
({
xcxClick
:
"首页-二屏页面点击"
,
pageName
:
"首页-二屏"
,
buttonName
:
str
+
"tab按钮点击"
,
});
this
.
etTabSelIndex
=
index
;
},
onETMore
(
index
,
type
)
{
let
str
=
''
;
if
(
type
===
0
)
{
str
=
'名医专家'
;
}
else
if
(
type
===
1
)
{
str
=
'科研专家'
;
}
else
{
}
else
{
this
.
vipCardList
[
0
]
=
data
.
vipConfigList
[
0
];
str
=
'权威机构'
;
}
}
}
},
changeIndicatorDots
(
e
)
{
this
.
indicatorDots
=
!
this
.
indicatorDots
},
changeAutoplay
(
e
)
{
this
.
autoplay
=
!
this
.
autoplay
},
intervalChange
(
e
)
{
this
.
interval
=
e
.
target
.
value
},
durationChange
(
e
)
{
this
.
duration
=
e
.
target
.
value
},
jumpBannerHandler
(
item
,
index
)
{
md
.
sensorLogTake
({
xcxClick
:
'首页-首屏页面点击'
,
pageName
:
'首页-首屏'
,
buttonName
:
`第
${
index
+
1
}
张焦点图-入口`
,
});
if
(
item
.
videoUrl
)
{
this
.
currentVideoUrl
=
this
.
$baseUrl
+
item
.
videoUrl
;
this
.
showVideo
=
true
;
return
;
}
if
(
item
.
link
)
{
// 有 link,执行跳转
jump
(
item
.
link
);
}
else
{
// 没有 link,预览图片
uni
.
previewImage
({
urls
:
[
this
.
$baseUrl
+
item
.
url
],
// 预览当前图片
current
:
this
.
$baseUrl
+
item
.
url
// 当前显示的图片
});
}
},
previewImage
(
url
)
{
uni
.
previewImage
({
urls
:
[
url
],
// 预览当前图片
current
:
url
// 当前显示的图片
});
},
jumpLinkWithLogin
(
link
,
evt
)
{
if
(
evt
)
{
md
.
sensorLog
(
evt
);
}
if
(
this
.
homeStore
.
isLogin
)
{
jump
(
link
);
}
},
jumpLinkCard
(
item
,
evt
)
{
if
(
evt
)
{
md
.
sensorLog
(
evt
);
}
if
(
item
.
btnSubTitle
.
length
>
0
&&
item
.
btnTitle
.
length
>
0
)
{
return
;
//如果有按钮的话,废弃这个点击事件
}
if
(
item
.
link
)
{
jump
(
item
.
link
);
}
},
jumpLink
(
link
,
videoUrl
,
index
,
evt
)
{
if
(
evt
)
{
md
.
sensorLog
(
evt
);
}
if
(
videoUrl
)
{
if
(
videoUrl
.
indexOf
(
'http'
)
===
-
1
)
{
videoUrl
=
this
.
$baseUrl
+
videoUrl
;
}
// 弹出视频
this
.
currentVideoUrl
=
videoUrl
;
if
(
index
===
1
)
{
if
(
index
===
1
)
{
this
.
videoHeight
=
"100vw"
;
str
+=
'内容'
}
else
{
}
else
{
this
.
videoHeight
=
"56vw"
;
str
+=
'点击查看更多'
;
}
}
this
.
showVideo
=
true
;
md
.
sensorLogTake
({
return
;
xcxClick
:
"首页-二屏页面点击"
,
// 视频弹窗出现后,video标签的autoplay会自动播放
pageName
:
"首页-二屏"
,
}
else
if
(
link
)
{
buttonName
:
str
+
"-点击"
,
if
(
!
link
||
link
===
''
)
{
});
return
;
jump
({
}
type
:
1
,
// 其他跳转逻辑
url
:
'/pages/expertTeamPage/expertTeamPage?tab='
+
(
this
.
etTabSelIndex
+
1
)
jump
(
link
);
});
}
},
},
closeImagePopup
()
{
channelTabHandler
(
_index
,
evt
)
{
this
.
$refs
.
imagePopup
.
close
();
if
(
evt
)
{
},
md
.
sensorLog
(
evt
);
}
imagePopupJump
()
{
this
.
channelTabIndex
=
_index
;
jump
({
},
type
:
this
.
popupImageObj
.
jumpType
,
showPopup
(
_index
,
evt
)
{
url
:
this
.
popupImageObj
.
jumpUrl
if
(
evt
)
{
});
md
.
sensorLog
(
evt
);
},
}
showImagePopup
()
{
md
.
sensorLogTake
({
this
.
$refs
.
imagePopup
.
open
(
'center'
);
xcxPage
:
`
${
this
.
qrNameList
[
_index
]}
拉起半屏二维码入口页面浏览`
,
},
pageName
:
`
${
this
.
qrNameList
[
_index
]}
拉起半屏二维码入口`
,
closePop1
()
{
});
this
.
$refs
.
imagePopup
.
close
();
},
if
(
_index
===
3
)
{
this
.
qrObj
=
null
;
// 重置弹窗状态(可在需要时调用)
}
else
{
resetPopupState
()
{
_index
=
Math
.
max
(
0
,
Math
.
min
(
_index
,
this
.
qrInfoList
.
length
-
1
));
this
.
homeStore
.
resetPopupState
();
// 重置 store 中的弹窗状态
this
.
qrObj
=
this
.
qrInfoList
[
_index
];
},
}
this
.
popupIndex
=
_index
;
// 检查并显示弹窗(使用 store 全局状态管理)
this
.
$refs
.
popup
.
open
(
this
.
popType
);
checkAndShowPopup
()
{
},
// 使用 store 中的 hasShownPopup 来记录是否已经显示过弹窗
closePop
()
{
if
(
!
this
.
homeStore
.
hasShownPopup
&&
this
.
homeStore
.
homeInfo
?.
showPop1
)
{
this
.
$refs
.
popup
.
close
();
this
.
homeStore
.
markPopupAsShown
();
// 标记已显示过弹窗(全局状态)
},
this
.
$nextTick
(()
=>
{
goSearchHandler
(
e
)
{
setTimeout
(()
=>
{
md
.
sensorLog
(
e
);
this
.
showImagePopup
();
uni
.
navigateTo
({
},
500
);
url
:
"/pages/search/search"
});
})
}
},
}
downloadHandler
(
imgurl
)
{
}
md
.
sensorLogTake
({
}
xcxClick
:
`
${
this
.
qrNameList
[
this
.
popupIndex
]}
拉起半屏二维码入口页面点击`
,
</
script
>
pageName
:
`
${
this
.
qrNameList
[
this
.
popupIndex
]}
拉起半屏二维码入口页面点击`
,
buttonName
:
`下载二维码`
<
style
lang=
"less"
scoped
>
});
@import '@/common.less';
uni
.
downloadFile
({
.home-container {
url
:
imgurl
,
width: 100vw;
success
:
(
downloadRes
)
=>
{
overflow-x: hidden;
if
(
downloadRes
.
statusCode
===
200
)
{
background-color: white;
uni
.
saveImageToPhotosAlbum
({
filePath
:
downloadRes
.
tempFilePath
,
.content {
success
:
(
res
)
=>
{
background-color: white;
uni
.
showToast
({
padding-bottom: 200rpx;
title
:
'保存成功'
,
icon
:
'success'
.banner {
});
height: 1116rpx;
},
fail
:
(
err
)
=>
{
.banneritem {
uni
.
showToast
({
width: 750rpx;
title
:
'保存失败'
,
height: 1116rpx;
icon
:
'none'
});
.b-img {
}
width: 100%;
});
height: 100%;
}
else
{
}
uni
.
showToast
({
}
title
:
'下载失败'
,
}
icon
:
'none'
});
.swiper-mask {
}
position: absolute;
},
left: 0;
fail
:
(
err
)
=>
{
width: 750rpx;
uni
.
showToast
({
height: 192rpx;
title
:
'下载失败'
,
z-index: 1;
icon
:
'none'
top: 1065rpx;
});
}
.swiper-mask-img {
});
width: 100%;
},
height: 100%;
closeVideo
()
{
}
this
.
showVideo
=
false
;
}
this
.
currentVideoUrl
=
''
;
},
// 自定义banner指示器样式
onGetPhoneNumber
(
e
)
{
.custom-banner-indicator {
if
(
e
.
detail
.
errMsg
!==
'getPhoneNumber:ok'
)
{
position: absolute;
uni
.
showToast
({
top: 1075rpx;
title
:
'请授权使用手机号'
,
left: 50%;
icon
:
'none'
,
transform: translateX(-50%);
});
display: flex;
return
;
align-items: center;
}
justify-content: center;
console
.
log
(
'detail'
,
e
.
detail
);
gap: 16rpx;
this
.
isClickPhoneAuth
=
true
;
userStore
.
phoneCallback
(
e
.
detail
);
.banner-dot {
},
width: 16rpx;
goCustomerHandler
(
e
)
{
height: 16rpx;
md
.
sensorLog
(
e
);
border-radius: 50%;
const
{
memberId
,
mobile
,
openId
,
unionId
}
=
this
.
homeStore
.
homeInfo
;
background-color: #feebc4;
const
customerUrl
=
`https://intelcc-user.icsoc.net/?channelKey=45839e0505554f8c8aea3c7b6259b049&init=1&crmld=
${
memberId
}
&mobile=
${
mobile
}
&openId=
${
openId
}
&unionId=
${
unionId
}
`
;
transition: all 0.3s ease;
jump
({
type
:
JumpType
.
H5
,
url
:
customerUrl
});
flex-shrink: 0;
},
checkExposure
(
scrollTop
)
{
&.active {
if
(
this
.
exposureTracker
)
{
width: 40rpx;
this
.
exposureTracker
.
checkExposure
(
scrollTop
);
height: 16rpx;
}
border-radius: 8rpx;
},
background-color: #D3A358;
resetExposure
()
{
}
if
(
this
.
exposureTracker
)
{
}
this
.
exposureTracker
.
resetAllExposure
();
}
}
},
.barbox {
position: absolute;
onSwiperChange
(
e
)
{
top: 97rpx;
this
.
currentIndex
=
e
.
detail
.
current
;
left: 32rpx;
},
display: flex;
align-items: center;
onBannerSwiperChange
(
e
)
{
this
.
bannerCurrentIndex
=
e
.
detail
.
current
;
.btnlogo {
},
width: 184rpx;
height: 66rpx;
async
handleToolClick
(
item
)
{
}
md
.
sensorLogTake
({
xcxClick
:
"我的页面点击"
,
.btnsearch {
pageName
:
"我的页面"
,
width: 150rpx;
buttonName
:
item
.
title
,
height: 68rpx;
});
margin-left: 20rpx;
}
if
(
item
.
title
===
"医生问诊"
)
{
// if (!cfgStatus.value.isRegister) return;
.customer-btn-wrap {
const
res
=
await
getHealthField
();
position: relative;
display: inline-block;
if
(
!
res
.
success
)
{
}
uni
.
showToast
({
title
:
"获取健康字段失败"
,
.btncustomer {
icon
:
"none"
,
width: 70rpx;
});
height: 68rpx;
return
;
margin-left: 110rpx;
}
}
const
{
sign
,
timestamp
,
appId
,
partnerUserId
,
env
}
=
res
.
data
;
.phone-auth-btn-cover {
position: absolute;
jump
({
left: 0;
type
:
JumpType
.
MINI
,
top: 0;
url
:
"/pages/partner/redirect"
,
right: 0;
extra
:
{
bottom: 0;
appId
:
"wx81ecfb5aa3fb512f"
,
width: 100%;
envVersion
:
env
,
height: 100%;
extraData
:
{
background: transparent;
sign
,
// 参考 4.请求参数
opacity: 0;
timestamp
,
// 参考 4.请求参数
border: none;
appId
,
// 参考 4.请求参数
padding: 0;
partnerUserId
,
// 参考 4.请求参数
margin: 0;
targetApp
:
z-index: 10;
"/h5/partner/shining-like-a-start/landing-free-consult?sysType=CRF"
,
pointer-events: auto;
},
}
},
}
});
}
else
{
// .txtbox {
jump
({
type
:
item
.
link
.
type
,
url
:
item
.
link
.
url
});
// width: 100%;
}
// height: 76rpx;
},
// background-color: @color-white-soft;
// text-align: center;
onSelEtTap
(
index
)
{
this
.
etTabSelIndex
=
index
;
// .txtlink {
},
// color: @color-gold-cover;
onETMore
()
{
// font-size: 24rpx;
jump
({
type
:
1
,
url
:
'/pages/expertTeamPage/expertTeamPage?tab='
+
(
this
.
etTabSelIndex
+
1
)
});
// text-underline-offset: 10rpx;
},
// text-decoration: underline;
closeImagePopup
()
{
// }
this
.
$refs
.
imagePopup
.
close
();
},
// .icon_arrow_yellow {
// width: 12rpx;
imagePopupJump
()
{
// height: 20rpx;
jump
({
type
:
this
.
popupImageObj
.
jumpType
,
url
:
this
.
popupImageObj
.
jumpUrl
});
// margin-left: 10rpx;
},
// }
showImagePopup
()
{
// }
this
.
$refs
.
imagePopup
.
open
(
'center'
);
},
.tools_box {
closePop1
()
{
width: 750rpx;
this
.
$refs
.
imagePopup
.
close
();
height: 840rpx;
},
margin-top: 40rpx;
overflow-x: scroll;
// 重置弹窗状态(可在需要时调用)
padding-left: 38rpx;
resetPopupState
()
{
this
.
homeStore
.
resetPopupState
();
// 重置 store 中的弹窗状态
.tools_maintitle {
},
font-size: 42rpx;
color: #000;
// 检查并显示弹窗(使用 store 全局状态管理)
}
checkAndShowPopup
()
{
// 使用 store 中的 hasShownPopup 来记录是否已经显示过弹窗
.tools_subtitle {
if
(
!
this
.
homeStore
.
hasShownPopup
&&
this
.
homeStore
.
homeInfo
?.
showPop1
)
{
margin-top: 10rpx;
this
.
homeStore
.
markPopupAsShown
();
// 标记已显示过弹窗(全局状态)
font-size: 24rpx;
this
.
$nextTick
(()
=>
{
color: #999;
setTimeout
(()
=>
{
}
this
.
showImagePopup
();
},
500
);
.tool_swiper {
});
margin-top: 35rpx;
}
width: 720rpx;
}
height: 700rpx;
}
overflow: visible;
}
/* 关键:允许内容溢出 */
</
script
>
.swiperItem {
<
style
lang=
"less"
scoped
>
width: 400rpx;
@import '@/common.less';
height: 700rpx;
top: 40rpx;
.home-container {
}
width: 100vw;
overflow-x: hidden;
/* 当前激活项放大 */
background-color: white;
.swiperItem.active {
top: 0rpx !important;
.content {
z-index: 10;
background-color: white;
transition: top 0.4s ease;
padding-bottom: 200rpx;
}
.banner {
.tool {
height: 1116rpx;
position: absolute;
width: 400rpx;
.banneritem {
height: 700rpx;
width: 750rpx;
height: 1116rpx;
.sq_btn {
position: absolute;
.b-img {
left: 0rpx;
width: 100%;
top: 0rpx;
height: 100%;
width: 400rpx;
}
height: 650rpx;
}
// background-color: red;
}
opacity: 0;
z-index: 2;
.swiper-mask {
}
position: absolute;
left: 0;
.tool_bg {
width: 750rpx;
position: absolute;
height: 192rpx;
left: 0rpx;
z-index: 1;
top: 0rpx;
top: 1065rpx;
width: 400rpx;
height: 650rpx;
.swiper-mask-img {
border-radius: 40rpx;
width: 100%;
z-index: 1;
height: 100%;
}
}
}
.tool_icon {
position: absolute;
// 自定义banner指示器样式
left: 0rpx;
.custom-banner-indicator {
top: 0rpx;
position: absolute;
width: 400rpx;
top: 1075rpx;
height: 470rpx;
left: 50%;
border-radius: 40rpx;
transform: translateX(-50%);
}
display: flex;
align-items: center;
.tool_jt {
justify-content: center;
position: absolute;
gap: 16rpx;
left: 300rpx;
top: 510rpx;
.banner-dot {
width: 74rpx;
width: 16rpx;
height: 44rpx;
height: 16rpx;
}
border-radius: 50%;
background-color: #feebc4;
.tool_title {
transition: all 0.3s ease;
position: absolute;
flex-shrink: 0;
left: 30rpx;
top: 510rpx;
&.active {
color: #000;
width: 40rpx;
font-size: 36rpx;
height: 16rpx;
width: 300rpx;
border-radius: 8rpx;
background-color: #D3A358;
}
}
}
.tool_context {
}
position: absolute;
left: 30rpx;
.barbox {
top: 575rpx;
position: absolute;
font-size: 24rpx;
top: 97rpx;
color: #999;
left: 32rpx;
width: 300rpx;
display: flex;
}
align-items: center;
}
}
.btnlogo {
width: 184rpx;
height: 66rpx;
/* 自定义指示点样式 */
}
.custom-indicator {
width: 200rpx;
.btnsearch {
height: 10rpx;
width: 150rpx;
margin-top: -15rpx;
height: 68rpx;
margin-left: -20rpx;
margin-left: 20rpx;
display: flex;
}
justify-content: center;
gap: 10rpx;
.customer-btn-wrap {
}
position: relative;
display: inline-block;
.indicator-dot {
}
width: 10rpx;
height: 10rpx;
.btncustomer {
border-radius: 10rpx;
width: 70rpx;
background-color: #feefcc;
height: 68rpx;
transition: all 0.3s;
margin-left: 110rpx;
}
}
.indicator-dot.active {
.phone-auth-btn-cover {
width: 70rpx;
position: absolute;
border-radius: 10rpx;
left: 0;
background-color: #d3a358;
top: 0;
}
right: 0;
}
bottom: 0;
width: 100%;
.et_box {
height: 100%;
width: 750rpx;
background: transparent;
// height: 840rpx;
opacity: 0;
margin-top: 30rpx;
border: none;
padding-left: 38rpx;
padding: 0;
margin: 0;
.et_maintitle {
z-index: 10;
font-size: 42rpx;
pointer-events: auto;
color: #000;
}
}
}
.et_subtitle {
// .txtbox {
width: 700rpx;
// width: 100%;
margin-top: 10rpx;
// height: 76rpx;
display: flex;
// background-color: @color-white-soft;
// text-align: center;
.txtlink {
width: 500rpx;
// .txtlink {
color: @color-gold-cover;
// color: @color-gold-cover;
font-size: 24rpx;
// font-size: 24rpx;
text-underline-offset: 5rpx;
// text-underline-offset: 10rpx;
text-decoration: underline;
// text-decoration: underline;
}
// }
.icon_more {
// .icon_arrow_yellow {
width: 140rpx;
// width: 12rpx;
height: 36rpx;
// height: 20rpx;
margin-left: 45rpx;
// margin-left: 10rpx;
margin-top: 2rpx;
// }
}
// }
}
.tools_box {
.et_main_box {
width: 750rpx;
padding-top: 30rpx;
height: 840rpx;
margin-top: 35rpx;
margin-top: 40rpx;
width: 670rpx;
overflow-x: scroll;
height: 602rpx;
padding-left: 38rpx;
background-color: #fde8bb;
border-radius: 38rpx;
.tools_maintitle {
font-size: 42rpx;
.et_con_bg {
color: #000;
margin-left: 3rpx;
}
width: 651rpx;
height: 562rpx;
.tools_subtitle {
background-color: #ffffff;
margin-top: 10rpx;
border-radius: 38rpx;
font-size: 24rpx;
padding-left: 15rpx;
color: #999;
padding-top: 25rpx;
}
.et_tab_box {
.tool_swiper {
height: 70rpx;
margin-top: 35rpx;
display: flex;
width: 720rpx;
gap: 15rpx;
height: 700rpx;
overflow: visible;
.tab_box {
/* 关键:允许内容溢出 */
width: 204rpx;
height: 70rpx;
.swiperItem {
width: 400rpx;
.et_tab {
height: 700rpx;
width: 204rpx;
top: 40rpx;
height: 70rpx;
}
}
}
/* 当前激活项放大 */
}
.swiperItem.active {
top: 0rpx !important;
.et_con_box {
z-index: 10;
width: 631rpx;
transition: top 0.4s ease;
height: 365rpx;
}
margin-top: 40rpx;
.tool {
.et_con1 {
position: absolute;
width: 631rpx;
width: 400rpx;
height: 365rpx;
height: 700rpx;
}
.sq_btn{
.et_con2 {
position: absolute;
width: 631rpx;
left: 0rpx;
height: 365rpx;
top: 0rpx;
}
width: 400rpx;
height: 650rpx;
.et_con3 {
// background-color: red;
width: 598rpx;
opacity: 0;
height: 303rpx;
z-index: 2;
margin-top: 20rpx;
}
margin-left: 16rpx;
}
.tool_bg {
}
position: absolute;
left: 0rpx;
.et_more_txt {
top: 0rpx;
width: 100%;
width: 400rpx;
font-size: 24rpx;
height: 650rpx;
color: @color-gold-cover;
border-radius: 40rpx;
text-align: center;
z-index: 1;
margin-top: 30rpx;
}
.icon_arrow_yellow {
.tool_icon {
width: 12rpx;
position: absolute;
height: 20rpx;
left: 0rpx;
margin-left: 5rpx;
top: 0rpx;
}
width: 400rpx;
}
height: 470rpx;
}
border-radius: 40rpx;
}
}
}
.tool_jt {
.cardScroller {
position: absolute;
width: 750rpx;
left: 300rpx;
overflow-x: scroll;
top: 510rpx;
}
width: 74rpx;
height: 44rpx;
.cardbox {
}
//
position: relative;
.tool_title {
display: inline-flex;
position: absolute;
flex-wrap: nowrap;
left: 30rpx;
margin-top: 32rpx;
top: 510rpx;
color: #000;
.cardboxitem {
font-size: 36rpx;
width: 380rpx;
width: 300rpx;
height: 232rpx;
position: relative;
}
margin-left: 32rpx;
.tool_context {
.bg {
position: absolute;
width: 380rpx;
left: 30rpx;
height: 232rpx;
top: 575rpx;
position: absolute;
font-size: 24rpx;
z-index: 0;
color: #999;
width: 300rpx;
}
}
}
.level {
}
position: absolute;
left: 24rpx;
top: 30rpx;
/* 自定义指示点样式 */
font-size: 32rpx;
.custom-indicator {
font-weight: bold;
width: 200rpx;
color: @color-gold-cover;
height: 10rpx;
pointer-events: none;
margin-top: -15rpx;
}
margin-left: -20rpx;
display: flex;
.subTitle {
justify-content: center;
position: absolute;
gap: 10rpx;
left: 24rpx;
}
top: 80rpx;
font-size: 24rpx;
.indicator-dot {
color: @color-black-deep;
width: 10rpx;
pointer-events: none;
height: 10rpx;
}
border-radius: 10rpx;
background-color: #feefcc;
.showCornerTxt {
transition: all 0.3s;
position: absolute;
}
right: 0;
top: 0;
.indicator-dot.active {
color: white;
width: 70rpx;
font-size: 24rpx;
border-radius: 10rpx;
padding: 10rpx;
background-color: #d3a358;
border-radius: 0 10rpx 0 10rpx;
}
background-color: @color-gold-main;
}
}
.et_box {
.cardbtn {
width: 750rpx;
position: relative;
// height: 840rpx;
left: 6rpx;
margin-top: 30rpx;
top: 130rpx;
padding-left: 38rpx;
.phone-auth-btn-cover {
.et_maintitle {
position: absolute;
font-size: 42rpx;
width: 368rpx;
color: #000;
height: 88rpx;
}
z-index: 0;
left: 0;
.et_subtitle {
top: 0;
width: 700rpx;
opacity: 0;
margin-top: 10rpx;
pointer-events: auto;
display: flex;
}
.txtlink {
width: 500rpx;
.cardbtnbg {
color: @color-gold-cover;
position: absolute;
font-size: 24rpx;
width: 368rpx;
text-underline-offset: 5rpx;
height: 88rpx;
text-decoration: underline;
z-index: 0;
}
left: 0;
top: 0;
.icon_more {
}
width: 140rpx;
height: 36rpx;
.btnTitle {
margin-left: 45rpx;
position: absolute;
margin-top: 2rpx;
// z-index: 1;
}
width: 180rpx;
}
text-align: center;
font-size: 24rpx;
.et_main_box {
color: white;
padding-top: 30rpx;
// border: 1px solid red;
margin-top: 35rpx;
top: 23rpx;
width: 670rpx;
left: 20rpx;
height: 602rpx;
}
background-color: #fde8bb;
border-radius: 38rpx;
.btnSubTitle {
position: absolute;
.et_con_bg {
top: 23rpx;
margin-left: 3rpx;
// z-index: 1;
width: 651rpx;
font-size: 24rpx;
height: 562rpx;
font-weight: bold;
background-color: #ffffff;
color: @color-gold-light;
border-radius: 38rpx;
left: 210rpx;
padding-left: 15rpx;
}
padding-top: 25rpx;
}
}
.et_tab_box {
}
height: 70rpx;
display: flex;
.contentbox {
gap: 15rpx;
width: 750rpx;
height: 1429rpx;
.tab_box {
position: relative;
width: 204rpx;
margin-top: 32px;
height: 70rpx;
.contentbg {
.et_tab {
width: 100%;
width: 204rpx;
height: 100%;
height: 70rpx;
position: absolute;
}
}
}
}
.contentitem {
position: absolute;
.et_con_box {
}
width: 631rpx;
height: 365rpx;
}
margin-top: 40rpx;
.channelbox {
.et_con1 {
margin-top: 32rpx;
width: 631rpx;
margin-left: 32rpx;
height: 365rpx;
}
.maintitle {
color: @color-black-deep;
.et_con2 {
font-size: 38rpx;
width: 631rpx;
font-weight: bold;
height: 365rpx;
display: block;
}
margin-left: 5rpx;
}
.et_con3 {
width: 598rpx;
.subtitle_box {
height: 303rpx;
display: flex;
margin-top: 20rpx;
margin-top: 10rpx;
margin-left: 16rpx;
margin-left: 5rpx;
}
width: 700rpx;
}
.subtitle {
.et_more_txt {
width: 500rpx;
width: 100%;
color: @color-black-deep;
font-size: 24rpx;
font-size: 24rpx;
color: @color-gold-cover;
}
text-align: center;
margin-top: 30rpx;
.icon_more {
width: 127rpx;
.icon_arrow_yellow {
height: 34rpx;
width: 12rpx;
margin-left: 45rpx;
height: 20rpx;
margin-top: 2rpx;
margin-left: 5rpx;
}
}
}
}
}
}
}
.listbox {
display: flex;
.cardScroller {
margin-top: 20rpx;
width: 750rpx;
width: 686rpx;
overflow-x: scroll;
align-content: center;
}
justify-content: space-between;
.cardbox {
.tabitem {
//
color: @color-black-deep;
position: relative;
background-color: #e9edf1;
display: inline-flex;
padding: 15rpx 20rpx;
flex-wrap: nowrap;
font-size: 22rpx;
margin-top: 32rpx;
// margin-right: 15rpx;
border-radius: 30rpx;
.cardboxitem {
}
width: 380rpx;
height: 232rpx;
.tabActive {
position: relative;
color: white;
margin-left: 32rpx;
background-color: @color-gold-main;
}
.bg {
}
width: 380rpx;
height: 232rpx;
.channelscroll {
position: absolute;
width: 718rpx;
z-index: 0;
overflow-y: scroll;
margin-top: 32rpx;
}
height: 620rpx;
.level {
.box {
position: absolute;
display: flex;
left: 24rpx;
flex-direction: column;
top: 30rpx;
font-size: 32rpx;
.infobox {
font-weight: bold;
width: 670rpx;
color: @color-gold-cover;
height: 180rpx;
pointer-events: none;
display: flex;
}
align-items: center;
background-color: #fff;
.subTitle {
border-radius: 16rpx;
position: absolute;
border: 2rpx solid #feeecb;
left: 24rpx;
margin-bottom: 20rpx;
top: 80rpx;
font-size: 24rpx;
.infoimg {
color: @color-black-deep;
border-radius: 12rpx 0rpx 0rpx 12rpx;
pointer-events: none;
-webkit-flex-shrink: 0;
}
flex-shrink: 0;
height: 180rpx;
.showCornerTxt {
/* margin-top: -1rpx ; */
position: absolute;
width: 180rpx;
right: 0;
}
top: 0;
color: white;
.infotitlebox {
font-size: 24rpx;
flex: 1;
padding: 10rpx;
margin-left: 20rpx;
border-radius: 0 10rpx 0 10rpx;
display: flex;
background-color: @color-gold-main;
flex-direction: column;
}
justify-content: center;
.cardbtn {
.infotitlecon {
position: relative;
display: flex;
left: 6rpx;
flex-direction: row;
top: 130rpx;
.infotitle {
.phone-auth-btn-cover {
color: @color-black-deep;
position: absolute;
width: 400rpx;
width: 368rpx;
font-size: 24rpx;
height: 88rpx;
font-weight: bold;
z-index: 0;
margin-bottom: 8rpx;
left: 0;
display: -webkit-box;
top: 0;
-webkit-line-clamp: 1;
opacity: 0;
-webkit-box-orient: vertical;
pointer-events: auto;
overflow: hidden;
line-height: 1.3;
}
}
.cardbtnbg {
.infotitletag {
position: absolute;
width: 46rpx;
width: 368rpx;
height: 22rpx;
height: 88rpx;
color: #fff;
z-index: 0;
left: 0;
}
top: 0;
}
}
.btnTitle {
position: absolute;
.infodesc {
// z-index: 1;
color: #999999;
width: 180rpx;
font-size: 22rpx;
text-align: center;
width: 450rpx;
font-size: 24rpx;
line-height: 1.3;
color: white;
display: -webkit-box;
// border: 1px solid red;
-webkit-line-clamp: 3;
top: 23rpx;
-webkit-box-orient: vertical;
left: 20rpx;
overflow: hidden;
}
}
}
.btnSubTitle {
position: absolute;
top: 23rpx;
// z-index: 1;
}
font-size: 24rpx;
}
font-weight: bold;
color: @color-gold-light;
}
left: 210rpx;
}
.channelscroll2 {
}
width: 718rpx;
}
margin-top: 32rpx;
}
margin-left: -16rpx;
.contentbox {
.box2 {
width: 750rpx;
width: 718rpx;
height: 1429rpx;
display: flex;
position: relative;
flex-wrap: wrap;
margin-top: 32px;
justify-content: space-between;
.contentbg {
.infobox2 {
width: 100%;
width: 330rpx;
height: 100%;
height: 430rpx;
position: absolute;
display: flex;
}
flex-direction: column;
align-items: center;
.contentitem {
background-color: #fff;
position: absolute;
border-radius: 16rpx;
}
border: 4rpx solid #feeecb;
margin-bottom: 20rpx;
}
position: relative;
.channelbox {
.infoimg2 {
margin-top: 32rpx;
width: 330rpx;
margin-left: 32rpx;
height: 306rpx;
border-radius: 12rpx 12rpx 0rpx 0rpx;
.maintitle {
flex-shrink: 0;
color: @color-black-deep;
}
font-size: 38rpx;
font-weight: bold;
.infotitle2box {
display: block;
margin-top: 10rpx;
margin-left: 5rpx;
flex: 1;
}
display: flex;
flex-direction: column;
.subtitle_box {
justify-content: center;
display: flex;
width: 100%;
margin-top: 10rpx;
padding: 0 10rpx;
margin-left: 5rpx;
width: 700rpx;
.infotitle2 {
color: @color-black-deep;
.subtitle {
width: 90%;
width: 500rpx;
font-size: 24rpx;
color: @color-black-deep;
font-weight: bold;
font-size: 24rpx;
margin-bottom: 8rpx;
}
display: -webkit-box;
-webkit-line-clamp: 2;
.icon_more {
-webkit-box-orient: vertical;
width: 127rpx;
overflow: hidden;
height: 34rpx;
line-height: 1.3;
margin-left: 45rpx;
text-align: left;
margin-top: 2rpx;
margin-left: 5%;
}
}
}
}
}
}
}
.listbox {
display: flex;
margin-top: 20rpx;
.desc {
width: 686rpx;
align-content: center;
color: @color-black-deep;
justify-content: space-between;
font-size: 24rpx;
display: flex;
.tabitem {
align-items: center;
color: @color-black-deep;
justify-content: center;
background-color: #e9edf1;
margin-top: 32rpx;
padding: 15rpx 20rpx;
font-size: 22rpx;
.desc1 {
// margin-right: 15rpx;
color: @color-gold-cover;
border-radius: 30rpx;
margin-left: 5rpx;
}
}
}
.tabActive {
color: white;
.desc2 {
background-color: @color-gold-main;
padding-bottom: 32rpx;
}
}
}
}
.channelscroll {
.bottomlink {
width: 718rpx;
width: 750rpx;
overflow-y: scroll;
height: 247rpx;
margin-top: 32rpx;
height: 620rpx;
.bottombg {
width: 750rpx;
.box {
height: 247rpx;
display: flex;
position: absolute;
flex-direction: column;
}
.infobox {
.box {
width: 670rpx;
position: relative;
height: 180rpx;
top: 100rpx;
display: flex;
width: 74%;
align-items: center;
left: 13%;
background-color: #fff;
display: flex;
border-radius: 16rpx;
align-items: flex-end;
border: 2rpx solid #feeecb;
justify-content: space-between;
margin-bottom: 20rpx;
.icon {}
.infoimg {
border-radius: 12rpx 0rpx 0rpx 12rpx;
}
-webkit-flex-shrink: 0;
}
flex-shrink: 0;
height: 180rpx;
}
/* margin-top: -1rpx ; */
width: 180rpx;
.popup-content {
}
width: 750rpx;
height: 812rpx;
.infotitlebox {
border-top-left-radius: 48rpx;
flex: 1;
border-top-right-radius: 48rpx;
margin-left: 20rpx;
position: relative;
display: flex;
flex-direction: column;
.btnclose {
justify-content: center;
width: 70rpx;
height: 70rpx;
.infotitlecon {
position: absolute;
display: flex;
top: 36rpx;
flex-direction: row;
right: 32rpx;
}
.infotitle {
color: @color-black-deep;
.xingmahui {
width: 400rpx;
width: 750rpx;
font-size: 24rpx;
height: 100%;
font-weight: bold;
position: absolute;
margin-bottom: 8rpx;
bottom: 0;
display: -webkit-box;
}
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
.title {
overflow: hidden;
position: absolute;
line-height: 1.3;
top: 47rpx;
}
left: 32rpx;
font-size: 36rpx;
.infotitletag {
color: @color-black-deep;
width: 46rpx;
font-weight: bold;
height: 22rpx;
color: #fff;
}
}
.desc {
}
position: absolute;
top: 108rpx;
left: 32rpx;
font-size: 28rpx;
.infodesc {
color: @color-black-medium;
color: #999999;
font-weight: bold;
font-size: 22rpx;
width: 450rpx;
}
line-height: 1.3;
display: -webkit-box;
.qrcode {
-webkit-line-clamp: 3;
width: 340rpx;
-webkit-box-orient: vertical;
height: 340rpx;
overflow: hidden;
position: absolute;
}
top: 220rpx;
}
left: 205rpx;
}
.btndownload {
}
width: 286rpx;
}
height: 89rpx;
position: absolute;
}
top: 630rpx;
left: 232rpx;
.channelscroll2 {
}
width: 718rpx;
}
margin-top: 32rpx;
margin-left: -16rpx;
.video-popup {
position: fixed;
.box2 {
left: 0;
width: 718rpx;
top: 0;
display: flex;
right: 0;
flex-wrap: wrap;
bottom: 0;
justify-content: space-between;
background: rgba(0, 0, 0, 0.7);
display: flex;
.infobox2 {
flex-direction: column;
width: 330rpx;
align-items: center;
height: 430rpx;
justify-content: center;
display: flex;
z-index: 9999;
flex-direction: column;
}
align-items: center;
background-color: #fff;
.close-btn-bottom {
border-radius: 16rpx;
margin: 32rpx auto 0 auto;
border: 4rpx solid #feeecb;
width: 64rpx;
margin-bottom: 20rpx;
height: 64rpx;
position: relative;
border-radius: 50%;
background: rgba(0, 0, 0, 0.5);
.infoimg2 {
color: #fff;
width: 330rpx;
font-size: 44rpx;
height: 306rpx;
line-height: 64rpx;
border-radius: 12rpx 12rpx 0rpx 0rpx;
text-align: center;
flex-shrink: 0;
z-index: 10001;
}
display: flex;
align-items: center;
.infotitle2box {
justify-content: center;
margin-top: 10rpx;
}
flex: 1;
display: flex;
.phone-auth-mask {
flex-direction: column;
position: fixed;
justify-content: center;
left: 0;
width: 100%;
top: 0;
padding: 0 10rpx;
right: 0;
bottom: 0;
.infotitle2 {
background: rgba(0, 0, 0, 0.5);
color: @color-black-deep;
z-index: 1000;
width: 90%;
}
font-size: 24rpx;
font-weight: bold;
.phone-auth-popup {
margin-bottom: 8rpx;
position: fixed;
display: -webkit-box;
left: 50%;
-webkit-line-clamp: 2;
top: 50%;
-webkit-box-orient: vertical;
transform: translate(-50%, -50%);
overflow: hidden;
background: #fff;
line-height: 1.3;
border-radius: 16rpx;
text-align: left;
padding: 40rpx 32rpx;
margin-left: 5%;
z-index: 1001;
}
display: flex;
}
flex-direction: column;
}
align-items: center;
}
}
}
.phone-auth-btn {
background: #ffd700;
.desc {
color: #333;
font-size: 32rpx;
color: @color-black-deep;
border-radius: 8rpx;
font-size: 24rpx;
padding: 20rpx 60rpx;
display: flex;
margin-bottom: 20rpx;
align-items: center;
}
justify-content: center;
margin-top: 32rpx;
.close-btn {
font-size: 40rpx;
.desc1 {
color: #999;
color: @color-gold-cover;
margin-top: 10rpx;
margin-left: 5rpx;
}
}
}
.image-popup-content {
width: 100%;
.desc2 {
height: 100%;
padding-bottom: 32rpx;
display: flex;
}
flex-direction: column;
}
align-items: center;
justify-content: center;
.bottomlink {
border-radius: 16rpx;
width: 750rpx;
position: relative;
height: 247rpx;
.popup-image {
.bottombg {
width: 500rpx;
width: 750rpx;
height: 700rpx;
height: 247rpx;
border-radius: 16rpx;
position: absolute;
object-fit: cover;
}
}
.box {
.popup-close-btn {
position: relative;
width: 70rpx;
top: 100rpx;
height: 70rpx;
width: 74%;
position: absolute;
left: 13%;
bottom: -50rpx;
display: flex;
left: 50%;
align-items: flex-end;
transform: translateX(-50%);
justify-content: space-between;
z-index: 10;
}
.icon {}
}
}
}
}
}
.popup-content {
width: 750rpx;
height: 812rpx;
border-top-left-radius: 48rpx;
border-top-right-radius: 48rpx;
position: relative;
.btnclose {
width: 70rpx;
height: 70rpx;
position: absolute;
top: 36rpx;
right: 32rpx;
}
.xingmahui {
width: 750rpx;
height: 100%;
position: absolute;
bottom: 0;
}
.title {
position: absolute;
top: 47rpx;
left: 32rpx;
font-size: 36rpx;
color: @color-black-deep;
font-weight: bold;
}
.desc {
position: absolute;
top: 108rpx;
left: 32rpx;
font-size: 28rpx;
color: @color-black-medium;
font-weight: bold;
}
.qrcode {
width: 340rpx;
height: 340rpx;
position: absolute;
top: 220rpx;
left: 205rpx;
}
.btndownload {
width: 286rpx;
height: 89rpx;
position: absolute;
top: 630rpx;
left: 232rpx;
}
}
.video-popup {
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.7);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
z-index: 9999;
}
.close-btn-bottom {
margin: 32rpx auto 0 auto;
width: 64rpx;
height: 64rpx;
border-radius: 50%;
background: rgba(0, 0, 0, 0.5);
color: #fff;
font-size: 44rpx;
line-height: 64rpx;
text-align: center;
z-index: 10001;
display: flex;
align-items: center;
justify-content: center;
}
.phone-auth-mask {
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
z-index: 1000;
}
.phone-auth-popup {
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
background: #fff;
border-radius: 16rpx;
padding: 40rpx 32rpx;
z-index: 1001;
display: flex;
flex-direction: column;
align-items: center;
}
.phone-auth-btn {
background: #ffd700;
color: #333;
font-size: 32rpx;
border-radius: 8rpx;
padding: 20rpx 60rpx;
margin-bottom: 20rpx;
}
.close-btn {
font-size: 40rpx;
color: #999;
margin-top: 10rpx;
}
.image-popup-content {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
border-radius: 16rpx;
position: relative;
.popup-image {
width: 500rpx;
height: 700rpx;
border-radius: 16rpx;
object-fit: cover;
}
.popup-close-btn {
width: 70rpx;
height: 70rpx;
position: absolute;
bottom: -50rpx;
left: 50%;
transform: translateX(-50%);
z-index: 10;
}
}
}
</
style
>
</
style
>
\ No newline at end of file
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