Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
ydl-group-course
Overview
Overview
Details
Activity
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
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
黄志
ydl-group-course
Commits
615421ac
Commit
615421ac
authored
Feb 07, 2025
by
zhengxiao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(custom): 课程首页
parent
55fd03cc
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
269 additions
and
216 deletions
+269
-216
course-block.vue
src/components/course-block.vue
+87
-72
home.vue
src/pages/home/home.vue
+182
-144
No files found.
src/components/course-block.vue
View file @
615421ac
...
@@ -7,31 +7,35 @@
...
@@ -7,31 +7,35 @@
</view>
</view>
<view
class=
"study-count"
>
{{
studyCount
}}
万人已学习
</view>
<view
class=
"study-count"
>
{{
studyCount
}}
万人已学习
</view>
</view>
</view>
<view
class=
"course-list"
>
<view
class=
"course-list"
>
<view
<view
class=
"course-item"
v-for=
"(item, index) in showCourseList"
v-for=
"(item, index) in showCourseList"
:key=
"index"
:key=
"index"
class=
"course-item"
>
>
<image
<image
class=
"course-img"
class=
"course-img"
:src=
"item.image || '/static/images/course-placeholder.png'"
:src=
"item.image || '/static/images/course-placeholder.png'"
mode=
"aspectFill"
mode=
"aspectFill"
/>
/>
<view
class=
"course-info"
>
<view
class=
"course-info"
>
<view
class=
"course-title"
>
{{
item
.
title
}}
</view>
<view
class=
"course-title"
>
{{
item
.
title
}}
</view>
<view
class=
"course-desc"
>
{{
item
.
desc
}}
</view>
<view
class=
"course-desc"
>
{{
item
.
desc
}}
</view>
<view
class=
"course-meta"
>
<view
class=
"course-meta"
>
<text
class=
"enroll-count"
>
{{
item
.
enrollCount
}}
人已报名
</text>
<text
class=
"enroll-count"
>
{{
item
.
enrollCount
}}
人已报名
</text>
<button
class=
"study-btn"
>
去学习
</button>
<button
class=
"study-btn"
>
去学习
</button>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view
v-if=
"courseList.length > 2"
class=
"show-more"
@
tap=
"toggleShowMore"
>
<view
<text>
{{
isExpanded
?
'收起合集'
:
'展开更多'
}}
</text>
v-if=
"courseList.length > 2"
class=
"show-more"
@
tap=
"toggleShowMore"
>
<text>
{{
isExpanded
?
'收起'
:
'展开更多'
}}
</text>
<text
:class=
"['arrow', isExpanded ? 'up' : '']"
>
∨
</text>
<text
:class=
"['arrow', isExpanded ? 'up' : '']"
>
∨
</text>
</view>
</view>
</view>
</view>
...
@@ -43,141 +47,153 @@ export default {
...
@@ -43,141 +47,153 @@ export default {
props
:
{
props
:
{
title
:
{
title
:
{
type
:
String
,
type
:
String
,
required
:
true
required
:
true
,
},
},
subtitle
:
{
subtitle
:
{
type
:
String
,
type
:
String
,
required
:
true
required
:
true
,
},
},
studyCount
:
{
studyCount
:
{
type
:
Number
,
type
:
Number
,
required
:
true
required
:
true
,
},
},
courseList
:
{
courseList
:
{
type
:
Array
,
type
:
Array
,
default
:
()
=>
[]
default
:
()
=>
[]
,
}
}
,
},
},
data
()
{
data
()
{
return
{
return
{
isExpanded
:
false
isExpanded
:
false
,
}
}
},
},
computed
:
{
computed
:
{
showCourseList
()
{
showCourseList
()
{
return
this
.
isExpanded
?
this
.
courseList
:
this
.
courseList
.
slice
(
0
,
2
)
return
this
.
isExpanded
?
this
.
courseList
:
this
.
courseList
.
slice
(
0
,
2
)
}
}
,
},
},
methods
:
{
methods
:
{
toggleShowMore
()
{
toggleShowMore
()
{
this
.
isExpanded
=
!
this
.
isExpanded
this
.
isExpanded
=
!
this
.
isExpanded
}
}
,
}
}
,
}
}
</
script
>
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
.section-block
{
.section-block
{
margin
:
20
r
px
;
margin
:
12
px
;
padding
:
30
r
px
;
padding
:
12px
10
px
;
background
:
#fff
;
background
:
#fff
;
border-radius
:
16
r
px
;
border-radius
:
16px
;
.block-header
{
.block-header
{
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
align-items
:
flex-start
;
align-items
:
center
;
margin-bottom
:
24
r
px
;
margin-bottom
:
16
px
;
.left
{
.left
{
.title
{
.title
{
font-size
:
32
rpx
;
color
:
#242424
;
font-weight
:
5
00
;
font-weight
:
6
00
;
color
:
#333
;
font-size
:
16px
;
margin-bottom
:
8
r
px
;
margin-bottom
:
1
px
;
display
:
block
;
display
:
block
;
line-height
:
22px
;
}
}
.desc
{
.desc
{
font-size
:
24
rpx
;
color
:
#999999
;
color
:
#999
;
font-weight
:
400
;
font-size
:
12px
;
line-height
:
17px
;
}
}
}
}
.study-count
{
.study-count
{
font-size
:
24
rpx
;
display
:
flex
;
color
:
#999
;
align-items
:
center
;
background
:
#F5F6F8
;
border-radius
:
13px
;
padding
:
8
rpx
16
rpx
;
background
:
linear-gradient
(
270deg
,
rgba
(
255
,
244
,
221
,
1
)
0%
,
rgba
(
255
,
255
,
255
,
0
)
100%
);
border-radius
:
20
rpx
;
color
:
#B5985F
;
font-weight
:
400
;
font-size
:
12px
;
padding
:
5px
10px
;
}
}
}
}
.course-list
{
.course-list
{
.course-item
{
.course-item
{
display
:
flex
;
display
:
flex
;
padding
:
24
rpx
0
;
margin-bottom
:
18px
;
border-bottom
:
1
rpx
solid
#EBEDF0
;
&:last-child
{
&:last-child
{
border-bottom
:
none
;
margin-bottom
:
0
;
}
}
.course-img
{
.course-img
{
width
:
160
r
px
;
width
:
64
px
;
height
:
160
r
px
;
height
:
79
px
;
border-radius
:
12
r
px
;
margin-right
:
8
px
;
margin-right
:
20
r
px
;
border-radius
:
4
px
;
background
:
#F5F6F
8
;
background
-color
:
#d8d8d
8
;
}
}
.course-info
{
.course-info
{
flex
:
1
;
flex
:
1
;
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
justify-content
:
space-between
;
.course-title
{
.course-title
{
font-size
:
28
rpx
;
color
:
#000000
;
font-weight
:
500
;
font-weight
:
500
;
color
:
#333
;
font-size
:
14px
;
margin-bottom
:
8
rpx
;
line-height
:
20px
;
//
单行
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
}
.course-desc
{
.course-desc
{
font-size
:
24
rpx
;
color
:
#000000
;
color
:
#999
;
font-weight
:
400
;
margin-bottom
:
20
rpx
;
font-size
:
12px
;
line-height
:
12px
;
margin-top
:
6px
;
//
单行
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
}
.course-meta
{
.course-meta
{
flex
:
1
;
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
align-items
:
center
;
align-items
:
flex-end
;
.enroll-count
{
.enroll-count
{
font-size
:
24
rpx
;
font-size
:
24
rpx
;
color
:
#999
;
color
:
#999
;
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
&::before
{
content
:
''
;
display
:
inline-block
;
width
:
24
rpx
;
height
:
24
rpx
;
//
background
:
url('/static/icons/user.png')
no-repeat
center
/
cover
;
margin-right
:
8
rpx
;
}
}
}
.study-btn
{
.study-btn
{
font-size
:
26
rpx
;
margin
:
0
;
color
:
#666
;
display
:
flex
;
background
:
#F5F6F8
;
align-items
:
center
;
padding
:
8
rpx
24
rpx
;
justify-content
:
center
;
border-radius
:
24
rpx
;
width
:
60px
;
border
:
none
;
height
:
25px
;
border-radius
:
12.5px
;
background-color
:
rgba
(
0
,
146
,
255
,
0.1
);
color
:
#0092FF
;
font-weight
:
500
;
font-size
:
12px
;
padding
:
0
;
}
}
}
}
}
}
...
@@ -195,11 +211,11 @@ export default {
...
@@ -195,11 +211,11 @@ export default {
font-size
:
20
rpx
;
font-size
:
20
rpx
;
display
:
inline-block
;
display
:
inline-block
;
transition
:
transform
0.3s
ease
;
transition
:
transform
0.3s
ease
;
&.up
{
&.up
{
transform
:
rotate
(
180deg
);
transform
:
rotate
(
180deg
);
}
}
}
}
}
}
}
}
</
style
>
</
style
>
\ No newline at end of file
src/pages/home/home.vue
View file @
615421ac
...
@@ -2,12 +2,10 @@
...
@@ -2,12 +2,10 @@
<view
class=
"container"
>
<view
class=
"container"
>
<!-- 顶部搜索区域 - 添加安全区域 -->
<!-- 顶部搜索区域 - 添加安全区域 -->
<view
class=
"search-area"
>
<view
class=
"search-area"
>
<!-- 使用
微信小程序的胶囊高度适配
-->
<!-- 使用
计算后的总导航栏高度
-->
<view
<view
class=
"status-bar"
class=
"status-bar"
:style=
"
{
:style=
"
{ height: totalNavHeight + 'px' }"
height: statusBarHeight + 'px',
}"
>
</view>
>
</view>
<view
class=
"search-tags"
>
<view
class=
"search-tags"
>
<text
class=
"tag"
>
体系化专业课程
</text>
<text
class=
"tag"
>
体系化专业课程
</text>
...
@@ -46,7 +44,11 @@
...
@@ -46,7 +44,11 @@
<view
class=
"vip-tips"
>
<view
class=
"vip-tips"
>
<view
class=
"left-content"
>
<view
class=
"left-content"
>
<view
class=
"tag-wrapper"
>
<view
class=
"tag-wrapper"
>
<image
class=
"tag-bg"
src=
"/static/images/tag-bg.png"
mode=
"aspectFit"
/>
<image
class=
"tag-bg"
src=
"/static/images/tag-bg.png"
mode=
"aspectFit"
/>
<text
class=
"tag-text"
>
免费资料
</text>
<text
class=
"tag-text"
>
免费资料
</text>
</view>
</view>
<view
class=
"text-content"
>
<view
class=
"text-content"
>
...
@@ -63,53 +65,72 @@
...
@@ -63,53 +65,72 @@
<view
class=
"career-section"
>
<view
class=
"career-section"
>
<view
class=
"section-header"
>
<view
class=
"section-header"
>
<view
class=
"title-wrapper"
>
<view
class=
"title-wrapper"
>
<view
class=
"title-bar"
></view>
<text
class=
"title"
>
执业入驻
</text>
<text
class=
"title"
>
执业入驻
</text>
</view>
</view>
<text
class=
"subtitle"
>
心理咨询执业培养计划
</text>
</view>
</view>
<!-- 切换按钮组 -->
<!-- 切换按钮组 -->
<view
class=
"career-tabs"
>
<view
class=
"career-tabs"
>
<view
class=
"tab-items"
>
<view
class=
"tab-items"
>
<view
<view
v-for=
"(tab, index) in tabs"
v-for=
"(tab, index) in tabs"
:key=
"index"
:key=
"index"
:class=
"['tab-item', currentTab === index ? 'active' : '']"
:class=
"['tab-item', currentTab === index ? 'active' : '']"
@
tap=
"switchTab(index)"
@
tap=
"switchTab(index)"
>
{{
tab
}}
</view>
>
{{
tab
}}
</view>
</view>
</view>
<view
class=
"slider"
:style=
"
{ transform: `translateX(${currentTab * 100}%)` }">
</view>
<view
class=
"slider"
:style=
"
{ transform: `translateX(${currentTab * 100}%)` }"
>
</view>
</view>
</view>
<!-- 内容区域 -->
<!-- 内容区域 -->
<swiper
<swiper
class=
"content-swiper"
class=
"content-swiper"
:current=
"currentTab"
:current=
"currentTab"
:autoplay=
"true"
@
change=
"handleSwiperChange"
@
change=
"handleSwiperChange"
>
>
<swiper-item
v-for=
"(tab, index) in tabs"
:key=
"index"
>
<swiper-item
v-for=
"(tab, index) in tabs"
:key=
"index"
>
<view
class=
"consultant-card"
>
<view
class=
"consultant-card"
>
<view
class=
"card-title"
>
心理咨询师一对一从业规划
</view>
<
!--
<
view
class=
"card-title"
>
心理咨询师一对一从业规划
</view>
<view
class=
"card-subtitle"
>
专业老师1v1教你入行
</view>
<view
class=
"card-subtitle"
>
专业老师1v1教你入行
</view>
<view
class=
"card-features"
>
<view
class=
"card-features"
>
<view
class=
"feature-item"
>
<view
class=
"feature-item"
>
<image
src=
"/static/icons/doc.png"
mode=
"aspectFit"
/>
<image
src=
"/static/icons/doc.png"
mode=
"aspectFit"
/>
<text>
入行资料
</text>
<text>
入行资料
</text>
</view>
</view>
<view
class=
"feature-item"
>
<view
class=
"feature-item"
>
<image
src=
"/static/icons/group.png"
mode=
"aspectFit"
/>
<image
src=
"/static/icons/group.png"
mode=
"aspectFit"
/>
<text>
社群加餐
</text>
<text>
社群加餐
</text>
</view>
</view>
<view
class=
"feature-item"
>
<view
class=
"feature-item"
>
<image
src=
"/static/icons/guide.png"
mode=
"aspectFit"
/>
<image
src=
"/static/icons/guide.png"
mode=
"aspectFit"
/>
<text>
学习指导
</text>
<text>
学习指导
</text>
</view>
</view>
<view
class=
"feature-item"
>
<view
class=
"feature-item"
>
<image
src=
"/static/icons/plan.png"
mode=
"aspectFit"
/>
<image
src=
"/static/icons/plan.png"
mode=
"aspectFit"
/>
<text>
职业规划
</text>
<text>
职业规划
</text>
</view>
</view>
</view>
</view>
-->
<view
class=
"card-footer"
>
<view
class=
"card-footer"
>
<text
class=
"footer-text"
>
壹点灵成长规划师,1V1教你入行
</text>
<text
class=
"footer-text"
>
壹点灵成长规划师,1V1教你入行
</text>
<button
class=
"consult-btn"
>
立即咨询
</button>
<button
class=
"consult-btn"
>
立即咨询
</button>
...
@@ -125,24 +146,24 @@
...
@@ -125,24 +146,24 @@
<course-block
<course-block
title=
"权威证书"
title=
"权威证书"
subtitle=
"收获成功道路的通行证"
subtitle=
"收获成功道路的通行证"
:study
C
ount=
"2.1"
:study
-c
ount=
"2.1"
:course
L
ist=
"certificateList"
:course
-l
ist=
"certificateList"
></course-block>
></course-block>
<!-- 咨询伦理系列 -->
<!-- 咨询伦理系列 -->
<course-block
<course-block
title=
"咨询伦理系列"
title=
"咨询伦理系列"
subtitle=
"专业伦理规范指导"
subtitle=
"专业伦理规范指导"
:study
C
ount=
"1.8"
:study
-c
ount=
"1.8"
:course
L
ist=
"ethicsList"
:course
-l
ist=
"ethicsList"
></course-block>
></course-block>
<!-- 认知行为系列 -->
<!-- 认知行为系列 -->
<course-block
<course-block
title=
"认知行为系列"
title=
"认知行为系列"
subtitle=
"CBT理论与实操"
subtitle=
"CBT理论与实操"
:study
C
ount=
"1.8"
:study
-c
ount=
"1.8"
:course
L
ist=
"cbtList"
:course
-l
ist=
"cbtList"
></course-block>
></course-block>
</view>
</view>
</view>
</view>
...
@@ -154,7 +175,7 @@ import courseBlock from '@/components/course-block.vue'
...
@@ -154,7 +175,7 @@ import courseBlock from '@/components/course-block.vue'
export
default
{
export
default
{
name
:
'HomePage'
,
name
:
'HomePage'
,
components
:
{
components
:
{
courseBlock
// 直接使用对象形式注册组件
courseBlock
,
// 直接使用对象形式注册组件
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -163,26 +184,28 @@ export default {
...
@@ -163,26 +184,28 @@ export default {
courseList
:
[],
courseList
:
[],
bannerList
:
[],
bannerList
:
[],
statusBarHeight
:
0
,
statusBarHeight
:
0
,
currentTab
:
1
,
// 默认选中"成为咨询师"
navBarHeight
:
0
,
totalNavHeight
:
0
,
currentTab
:
0
,
tabs
:
[
'入行分析'
,
'成为咨询师'
,
'咨询师进阶'
],
tabs
:
[
'入行分析'
,
'成为咨询师'
,
'咨询师进阶'
],
certificateList
:
[
certificateList
:
[
{
{
title
:
'社会心理服务中级·人社部能建中心'
,
title
:
'社会心理服务中级·人社部能建中心'
,
desc
:
'解开关系中的结,告别恨、消耗...'
,
desc
:
'解开关系中的结,告别恨、消耗...'
,
enrollCount
:
3240
,
enrollCount
:
3240
,
image
:
'/static/images/course-placeholder.png'
image
:
'/static/images/course-placeholder.png'
,
},
},
{
{
title
:
'社会心理服务中级·人社部能建中心'
,
title
:
'社会心理服务中级·人社部能建中心'
,
desc
:
'解开关系中的结,告别恨、消耗...'
,
desc
:
'解开关系中的结,告别恨、消耗...'
,
enrollCount
:
3240
,
enrollCount
:
3240
,
image
:
'/static/images/course-placeholder.png'
image
:
'/static/images/course-placeholder.png'
,
},
},
{
{
title
:
'社会心理服务中级·人社部能建中心'
,
title
:
'社会心理服务中级·人社部能建中心'
,
desc
:
'解开关系中的结,告别恨、消耗...'
,
desc
:
'解开关系中的结,告别恨、消耗...'
,
enrollCount
:
3240
,
enrollCount
:
3240
,
image
:
'/static/images/course-placeholder.png'
image
:
'/static/images/course-placeholder.png'
,
},
},
// ... 其他证书课程
// ... 其他证书课程
],
],
...
@@ -191,7 +214,7 @@ export default {
...
@@ -191,7 +214,7 @@ export default {
title
:
'咨询伦理基础课程'
,
title
:
'咨询伦理基础课程'
,
desc
:
'建立专业伦理意识,提升职业素养...'
,
desc
:
'建立专业伦理意识,提升职业素养...'
,
enrollCount
:
2156
,
enrollCount
:
2156
,
image
:
'/static/images/course-placeholder.png'
image
:
'/static/images/course-placeholder.png'
,
},
},
// ... 其他伦理课程
// ... 其他伦理课程
],
],
...
@@ -200,17 +223,26 @@ export default {
...
@@ -200,17 +223,26 @@ export default {
title
:
'CBT理论基础与应用'
,
title
:
'CBT理论基础与应用'
,
desc
:
'认知行为疗法的核心理论与技术...'
,
desc
:
'认知行为疗法的核心理论与技术...'
,
enrollCount
:
1892
,
enrollCount
:
1892
,
image
:
'/static/images/course-placeholder.png'
image
:
'/static/images/course-placeholder.png'
,
},
},
// ... 其他CBT课程
// ... 其他CBT课程
]
]
,
}
}
},
},
onLoad
()
{
onLoad
()
{
this
.
getCourseList
()
this
.
getCourseList
()
// 获取系统信息设置状态栏高度
// 获取系统信息和胶囊按钮位置信息
const
systemInfo
=
wx
.
getSystemInfoSync
()
const
systemInfo
=
uni
.
getSystemInfoSync
()
const
menuButtonInfo
=
uni
.
getMenuButtonBoundingClientRect
()
// 状态栏高度
this
.
statusBarHeight
=
systemInfo
.
statusBarHeight
this
.
statusBarHeight
=
systemInfo
.
statusBarHeight
// 胶囊高度(包含上下边距)
this
.
navBarHeight
=
(
menuButtonInfo
.
top
-
systemInfo
.
statusBarHeight
)
*
2
+
menuButtonInfo
.
height
// 总高度 = 状态栏高度 + 胶囊高度
this
.
totalNavHeight
=
this
.
statusBarHeight
+
this
.
navBarHeight
},
},
methods
:
{
methods
:
{
getCourseList
()
{
getCourseList
()
{
...
@@ -224,15 +256,15 @@ export default {
...
@@ -224,15 +256,15 @@ export default {
},
},
handleSwiperChange
(
e
)
{
handleSwiperChange
(
e
)
{
this
.
currentTab
=
e
.
detail
.
current
this
.
currentTab
=
e
.
detail
.
current
}
}
,
},
},
}
}
</
script
>
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
.container
{
min-height
:
100vh
;
min-height
:
100vh
;
background
:
#f
5f5f5
;
background
:
#f
0f2f4
;
}
}
.search-area
{
.search-area
{
...
@@ -279,7 +311,7 @@ export default {
...
@@ -279,7 +311,7 @@ export default {
box-shadow
:
0
0
10
rpx
rgba
(
0
,
0
,
0
,
0.05
);
box-shadow
:
0
0
10
rpx
rgba
(
0
,
0
,
0
,
0.05
);
&.dark
{
&.dark
{
background
:
#4
A5B
67
;
background
:
#4
a5b
67
;
}
}
}
}
...
@@ -298,21 +330,21 @@ export default {
...
@@ -298,21 +330,21 @@ export default {
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
align-items
:
center
;
align-items
:
center
;
.left-content
{
.left-content
{
flex
:
1
;
flex
:
1
;
.tag-wrapper
{
.tag-wrapper
{
position
:
relative
;
position
:
relative
;
display
:
inline-flex
;
display
:
inline-flex
;
align-items
:
center
;
align-items
:
center
;
margin-bottom
:
16
rpx
;
margin-bottom
:
16
rpx
;
.tag-bg
{
.tag-bg
{
width
:
140
rpx
;
width
:
140
rpx
;
height
:
40
rpx
;
height
:
40
rpx
;
}
}
.tag-text
{
.tag-text
{
position
:
absolute
;
position
:
absolute
;
left
:
16
rpx
;
left
:
16
rpx
;
...
@@ -321,30 +353,30 @@ export default {
...
@@ -321,30 +353,30 @@ export default {
font-weight
:
500
;
font-weight
:
500
;
}
}
}
}
.text-content
{
.text-content
{
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
gap
:
8
rpx
;
gap
:
8
rpx
;
.main-text
{
.main-text
{
font-size
:
32
rpx
;
font-size
:
32
rpx
;
color
:
#333
;
color
:
#333
;
font-weight
:
500
;
font-weight
:
500
;
}
}
.sub-text
{
.sub-text
{
font-size
:
24
rpx
;
font-size
:
24
rpx
;
color
:
#999
;
color
:
#999
;
}
}
}
}
}
}
.right-action
{
.right-action
{
.action-text
{
.action-text
{
font-size
:
26
rpx
;
font-size
:
26
rpx
;
color
:
#666
;
color
:
#666
;
background
:
#
F5F6F
8
;
background
:
#
f5f6f
8
;
padding
:
12
rpx
24
rpx
;
padding
:
12
rpx
24
rpx
;
border-radius
:
30
rpx
;
border-radius
:
30
rpx
;
}
}
...
@@ -352,63 +384,57 @@ export default {
...
@@ -352,63 +384,57 @@ export default {
}
}
.career-section
{
.career-section
{
margin
:
20
r
px
;
margin
:
12
px
;
background
:
#fff
;
background
:
#fff
;
border-radius
:
1
6
r
px
;
border-radius
:
1
2
px
;
padding
:
30
r
px
;
padding
:
12
px
;
.section-header
{
.section-header
{
margin-bottom
:
24
r
px
;
margin-bottom
:
12
px
;
.title-wrapper
{
.title-wrapper
{
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
gap
:
12
rpx
;
margin-bottom
:
9px
;
margin-bottom
:
8
rpx
;
.title-bar
{
width
:
6
rpx
;
height
:
32
rpx
;
background
:
#333
;
border-radius
:
3
rpx
;
}
.title
{
.title
{
font-size
:
32
r
px
;
font-size
:
16
px
;
font-weight
:
5
00
;
font-weight
:
6
00
;
color
:
#
333
;
color
:
#
242424
;
}
}
}
}
.subtitle
{
font-size
:
24
rpx
;
color
:
#999
;
}
}
}
.career-tabs
{
.career-tabs
{
position
:
relative
;
position
:
relative
;
background
:
#F7F8FA
;
border-radius
:
18px
;
border-radius
:
12
rpx
;
//
padding
:
4px
;
padding
:
8
rpx
;
margin-bottom
:
10px
;
margin-bottom
:
24
rpx
;
height
:
36px
;
background
:
#f2f2f8
;
box-sizing
:
border-box
;
.tab-items
{
.tab-items
{
display
:
flex
;
display
:
flex
;
position
:
relative
;
position
:
relative
;
z-index
:
1
;
z-index
:
1
;
align-items
:
center
;
height
:
36px
;
box-sizing
:
border-box
;
}
}
.tab-item
{
.tab-item
{
flex
:
1
;
flex
:
1
;
text-align
:
center
;
text-align
:
center
;
padding
:
16
rpx
0
;
color
:
#212123
;
font-
size
:
28
rpx
;
font-
weight
:
400
;
color
:
#666
;
font-size
:
13px
;
position
:
relative
;
position
:
relative
;
z-index
:
2
;
z-index
:
2
;
transition
:
color
0.3s
;
transition
:
color
0.3s
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
&.active
{
&.active
{
color
:
#333
;
color
:
#333
;
font-weight
:
500
;
font-weight
:
500
;
...
@@ -417,87 +443,99 @@ export default {
...
@@ -417,87 +443,99 @@ export default {
.slider
{
.slider
{
position
:
absolute
;
position
:
absolute
;
left
:
8
r
px
;
left
:
4
px
;
top
:
8
r
px
;
top
:
4
px
;
width
:
calc
(
33.33%
-
6
r
px
);
width
:
calc
(
33.33%
-
3
px
);
height
:
calc
(
100%
-
16
r
px
);
height
:
calc
(
100%
-
8
px
);
background
:
#fff
;
background
:
#fff
;
border-radius
:
8
r
px
;
border-radius
:
16
px
;
transition
:
transform
0.3s
ease
;
transition
:
transform
0.3s
ease
;
box-shadow
:
0
2
rpx
8
r
px
rgba
(
0
,
0
,
0
,
0.05
);
box-shadow
:
0
2
px
8
px
rgba
(
0
,
0
,
0
,
0.05
);
}
}
}
}
.content-swiper
{
.content-swiper
{
height
:
500
rpx
;
//
根据实际内容调整高度
height
:
500
rpx
;
//
根据实际内容调整高度
.consultant-card
{
.consultant-card
{
height
:
100%
;
height
:
100%
;
background
:
#
F7F8FA
;
background
:
#
f7f8fa
;
border-radius
:
12
rpx
;
border-radius
:
12
rpx
;
padding
:
30
rpx
;
//
padding
:
30
rpx
;
.card-title
{
//
.card-title
{
font-size
:
36
rpx
;
//
font-size
:
36
rpx
;
font-weight
:
bold
;
//
font-weight
:
bold
;
color
:
#333
;
//
color
:
#333
;
margin-bottom
:
8
rpx
;
//
margin-bottom
:
8
rpx
;
}
//
}
.card-subtitle
{
//
.card-subtitle
{
font-size
:
26
rpx
;
//
font-size
:
26
rpx
;
color
:
#666
;
//
color
:
#666
;
margin-bottom
:
40
rpx
;
//
margin-bottom
:
40
rpx
;
}
//
}
.card-features
{
//
.card-features
{
display
:
grid
;
//
display
:
grid
;
grid-template-columns
:
repeat
(
4
,
1
fr
);
//
grid-template-columns
:
repeat
(
4
,
1
fr
);
gap
:
20
rpx
;
//
gap
:
20
rpx
;
margin-bottom
:
40
rpx
;
//
margin-bottom
:
40
rpx
;
.feature-item
{
//
.feature-item
{
display
:
flex
;
//
display
:
flex
;
flex-direction
:
column
;
//
flex-direction
:
column
;
align-items
:
center
;
//
align-items
:
center
;
gap
:
8
rpx
;
//
gap
:
8
rpx
;
image
{
//
image
{
width
:
64
rpx
;
//
width
:
64
rpx
;
height
:
64
rpx
;
//
height
:
64
rpx
;
background
:
#fff
;
//
background
:
#fff
;
border-radius
:
16
rpx
;
//
border-radius
:
16
rpx
;
padding
:
12
rpx
;
//
padding
:
12
rpx
;
}
//
}
text
{
//
text
{
font-size
:
24
rpx
;
//
font-size
:
24
rpx
;
color
:
#666
;
//
color
:
#666
;
}
//
}
}
//
}
}
//
}
.card-footer
{
.card-footer
{
position
:
absolute
;
height
:
51px
;
width
:
calc
(
100%
-
25px
);
bottom
:
18px
;
left
:
13px
;
border-radius
:
8px
;
background-color
:
#ffffff
;
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
align-items
:
center
;
background
:
#fff
;
justify-content
:
space-between
;
padding
:
24
rpx
;
padding
:
0
10px
;
border-radius
:
8
rpx
;
.footer-text
{
.footer-text
{
font-size
:
28
rpx
;
color
:
#1e2842
;
color
:
#333
;
font-weight
:
500
;
font-weight
:
500
;
font-size
:
14px
;
//
单行溢出隐藏
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
}
.consult-btn
{
.consult-btn
{
background
:
#333
;
height
:
29px
;
color
:
#fff
;
line-height
:
29px
;
font-size
:
26
rpx
;
border-radius
:
8px
;
padding
:
12
rpx
32
rpx
;
background-color
:
#212123
;
border-radius
:
30
rpx
;
min-width
:
87px
;
border
:
none
;
text-align
:
center
;
padding
:
0
10px
;
color
:
#ffffff
;
font-weight
:
600
;
font-size
:
12px
;
margin
:
0
;
}
}
}
}
}
}
...
@@ -536,7 +574,7 @@ export default {
...
@@ -536,7 +574,7 @@ export default {
.study-count
{
.study-count
{
font-size
:
24
rpx
;
font-size
:
24
rpx
;
color
:
#999
;
color
:
#999
;
background
:
#
F5F6F
8
;
background
:
#
f5f6f
8
;
padding
:
8
rpx
16
rpx
;
padding
:
8
rpx
16
rpx
;
border-radius
:
20
rpx
;
border-radius
:
20
rpx
;
}
}
...
@@ -546,7 +584,7 @@ export default {
...
@@ -546,7 +584,7 @@ export default {
.course-item
{
.course-item
{
display
:
flex
;
display
:
flex
;
padding
:
24
rpx
0
;
padding
:
24
rpx
0
;
border-bottom
:
1
rpx
solid
#
EBEDF
0
;
border-bottom
:
1
rpx
solid
#
ebedf
0
;
&:last-child
{
&:last-child
{
border-bottom
:
none
;
border-bottom
:
none
;
...
@@ -557,7 +595,7 @@ export default {
...
@@ -557,7 +595,7 @@ export default {
height
:
160
rpx
;
height
:
160
rpx
;
border-radius
:
12
rpx
;
border-radius
:
12
rpx
;
margin-right
:
20
rpx
;
margin-right
:
20
rpx
;
background
:
#
F5F6F
8
;
background
:
#
f5f6f
8
;
}
}
.course-info
{
.course-info
{
...
@@ -589,7 +627,7 @@ export default {
...
@@ -589,7 +627,7 @@ export default {
color
:
#999
;
color
:
#999
;
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
&::before
{
&::before
{
content
:
''
;
content
:
''
;
display
:
inline-block
;
display
:
inline-block
;
...
@@ -603,7 +641,7 @@ export default {
...
@@ -603,7 +641,7 @@ export default {
.study-btn
{
.study-btn
{
font-size
:
26
rpx
;
font-size
:
26
rpx
;
color
:
#666
;
color
:
#666
;
background
:
#
F5F6F
8
;
background
:
#
f5f6f
8
;
padding
:
8
rpx
24
rpx
;
padding
:
8
rpx
24
rpx
;
border-radius
:
24
rpx
;
border-radius
:
24
rpx
;
border
:
none
;
border
:
none
;
...
...
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