Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
CFFP-HB
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chao Sun
CFFP-HB
Commits
a3c98e37
Commit
a3c98e37
authored
Dec 13, 2022
by
kyle
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
http://139.224.139.2:9091/chaosun/CFFP
into dev
parents
e41cb573
1a40df24
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
199 additions
and
114 deletions
+199
-114
components/courseItem/courseItem.vue
+5
-5
pages.json
+0
-0
pages/application-process/basic-info.vue
+34
-31
pages/application-process/education.vue
+1
-1
pages/application-process/signature.vue
+5
-5
pages/index/index.vue
+154
-72
No files found.
components/courseItem/courseItem.vue
View file @
a3c98e37
...
...
@@ -102,8 +102,7 @@
.itemContent
{
display
:
flex
;
.thumbnailBox{
width
:
200
rpx
;
height
:
200
rpx
;
width
:
300
rpx
;
margin-right
:
26
rpx
;
image{
max-width
:
100%
;
...
...
@@ -138,7 +137,7 @@
strong{
color
:
#F15A1F
;
font-size
:
30
rpx
;
margin
-right
:
20
rpx
;
margin
:
10
rpx
20
rpx
10
rpx
0
;
}
text
{
font-size
:
28
rpx
;
...
...
@@ -147,13 +146,14 @@
.tagListBox
{
display
:
flex
;
flex-wrap
:
wrap
;
margin-top
:
20
rpx
;
.tagItem{
color
:
#20279B
;
font-size
:
2
8
rpx
;
font-size
:
2
4
rpx
;
border-radius
:
20
rpx
;
border-top-left-radius
:
0
;
border-bottom-right-radius
:
0
;
padding
:
10
rpx
18
rpx
;
padding
:
5
rpx
18
rpx
;
border
:
1px
solid
#20279B
;
margin-right
:
20
rpx
;
white-space
:
nowrap
;
...
...
pages.json
View file @
a3c98e37
This diff is collapsed.
Click to expand it.
pages/application-process/basic-info.vue
View file @
a3c98e37
...
...
@@ -31,14 +31,13 @@
<text>
邀请码
</text>
<input
type=
"text"
class=
"form-control"
placeholder=
"非必填"
v-model=
"applyParam.inviterInvitationCode"
:disabled=
"this.
applyParam.approvalStatus!= 0 && this.applyParam.approvalStatus != 2"
/>
:disabled=
"this.
display"
/>
</view>
<view
class=
"contentItem"
>
<text>
申请身份
</text>
<text
v-if=
"partnerLevelName"
>
{{
partnerLevelName
}}
</text>
<picker
v-else
@
change=
"changeIdentity"
:value=
"identityIdx"
:range=
"identityArr"
<picker
@
change=
"changeIdentity"
:value=
"identityIdx"
:range=
"identityArr"
range-key=
"name"
:disabled=
"this.
applyParam.approvalStatus!= 0 && this.applyParam.approvalStatus != 2
"
>
:disabled=
"this.
display
"
>
<view
class=
"uni-input"
>
{{
identityArr
[
identityIdx
][
'name'
]
}}
<text
class=
"iconfont icon-youjiantou"
></text>
</view>
...
...
@@ -47,14 +46,15 @@
<view
class=
"contentItem"
v-if=
"applyParam.partnerLevel == 'B1'"
>
<text>
工作室名称
</text>
<input
type=
"text"
class=
"form-control"
v-model=
"applyParam.b1Name"
placeholder=
"请输入工作室名称"
:disabled=
"this.
applyParam.approvalStatus!= 0 && this.applyParam.approvalStatus != 2"
/>
:disabled=
"this.
display"
/>
</view>
<view
class=
"contentItem"
>
<text>
所属组织
</text>
<text
v-if=
"areaName"
>
{{
areaName
}}
</text>
<input
type=
"text"
v-if=
"applyParam.hasCrossDistrict == 1"
class=
"form-control"
v-model=
"applyParam.b1Name"
placeholder=
"请输入工作室名称"
:disabled=
"this.display"
/>
<picker
v-else
@
change=
"changeArea"
:value=
"areaIdIdx"
:range=
"cffpAreaQuerys"
range-key=
"areaName"
:disabled=
"this.
applyParam.approvalStatus!= 0 && this.applyParam.approvalStatus != 2
"
>
:disabled=
"this.
display
"
>
<view
class=
"uni-input"
>
{{
cffpAreaQuerys
[
areaIdIdx
][
'areaName'
]
}}
<text
class=
"iconfont icon-youjiantou"
></text>
</view>
...
...
@@ -62,18 +62,16 @@
</view>
<view
class=
"contentItem"
>
<text>
姓名
</text>
<text
v-if=
"applyParam.name"
>
{{
applyParam
.
name
}}
</text>
<input
v-else
type=
"text"
class=
"form-control"
v-model=
"applyParam.name"
placeholder=
"请输入姓名"
<input
type=
"text"
class=
"form-control"
v-model=
"applyParam.name"
placeholder=
"请输入姓名"
auto-blur=
true
@
blur=
"checkInput(1,applyParam.name)"
:disabled=
"this.
applyParam.approvalStatus!= 0 && this.applyParam.approvalStatus != 2
"
/>
:disabled=
"this.
display
"
/>
</view>
<view
class=
"contentItem"
>
<text>
手机号
</text>
<text
v-if=
"applyParam.mobileNumber"
>
{{
applyParam
.
mobileNumber
}}
</text>
<input
v-else
type=
"text"
class=
"form-control"
v-model=
"applyParam.mobileNumber"
<input
type=
"text"
class=
"form-control"
v-model=
"applyParam.mobileNumber"
placeholder=
"请输入手机号"
maxlength=
"11"
auto-blur=
true
@
blur=
"checkInput(2,applyParam.mobileNumber)"
:disabled=
"this.
applyParam.approvalStatus!= 0 && this.applyParam.approvalStatus != 2
"
/>
:disabled=
"this.
display
"
/>
</view>
<view
class=
"contentItem"
>
<text>
证件类型
</text>
...
...
@@ -85,7 +83,7 @@
</picker>
</view>
<view
class=
"contentItem"
>
<text>
证件号码
</text>
<text>
证件号码
{{
this
.
applyParam
.
approvalStatus
!=
0
&&
this
.
applyParam
.
approvalStatus
!=
2
}}
</text>
<view>
<input
type=
"text"
class=
"form-control"
v-model=
"applyParam.idNo"
placeholder=
"请输入证件号码"
auto-blur=
true
@
blur=
"checkInput(3,applyParam.idNo)"
...
...
@@ -162,6 +160,7 @@
name
:
null
,
mobile
:
null
,
shareId
:
null
,
display
:
false
,
cffp_userInfo
:
{
name
:
''
,
mobile
:
''
...
...
@@ -171,16 +170,15 @@
components
:
{},
onLoad
(
options
)
{
if
(
options
.
dataForm
)
{
console
.
log
(
options
,
'唧唧哇哇'
)
let
dataOneForm
=
JSON
.
parse
(
options
.
dataForm
)
this
.
applyParam
.
name
=
dataOneForm
.
name
this
.
shareId
=
options
.
shareId
this
.
applyParam
.
inviterInvitationCode
=
dataOneForm
.
invitationCode
this
.
applyParam
.
mobileNumber
=
dataOneForm
.
mobile
this
.
areaName
=
dataOneForm
.
areaName
this
.
applyParam
.
partnerLevel
=
dataOneForm
.
partnerLevel
this
.
partnerLevelName
=
dataOneForm
.
partnerLevel
==
'A1'
?
'事业伙伴'
:
'工作室'
this
.
applyParam
.
areaId
=
dataOneForm
.
areaId
this
.
shareId
=
option
.
shareId
// let dataOneForm = JSON.parse(options.dataForm)
// this.applyParam.name = dataOneForm.name
// this.applyParam.inviterInvitationCode = dataOneForm.invitationCode
// this.applyParam.mobileNumber = dataOneForm.mobile
// this.areaName = dataOneForm.areaName
// this.applyParam.partnerLevel = dataOneForm.partnerLevel
// this.partnerLevelName = dataOneForm.partnerLevel == 'A1' ? '事业伙伴' : '工作室'
// this.applyParam.areaId = dataOneForm.areaId
uni
.
setStorageSync
(
'applyId'
,
''
)
}
else
{
this
.
cffp_userInfo
=
uni
.
getStorageSync
(
'cffp_userInfo'
);
...
...
@@ -189,7 +187,7 @@
this
.
applyParam
.
mobileNumber
=
JSON
.
parse
(
uni
.
getStorageSync
(
'cffp_userInfo'
))[
'mobile'
];
}
}
this
.
erpInitialize
();
//
this.erpInitialize();
// let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
// let curRoute = routes[routes.length - 1].route // 获取当前页面路由,也就是最后一个打开的页面路由
// console.log('当前路由地址',curRoute)
...
...
@@ -209,12 +207,15 @@
},
methods
:
{
erpInitialize
()
{
return
new
Promise
((
resolve
,
reject
)
=>
{
api
.
erpInitialize
({}).
then
((
res
)
=>
{
resolve
(
res
[
'success'
]);
if
(
res
[
'success'
])
{
this
.
idTypesList
=
this
.
idTypesList
.
concat
(
res
[
'data'
][
'idTypes'
]);
console
.
log
(
this
.
idTypesList
)
}
})
})
},
queryOrgList
()
{
const
param
=
{
...
...
@@ -302,7 +303,8 @@
}
},
queryById
(
id
,
userId
)
{
async
queryById
(
id
,
userId
)
{
await
this
.
erpInitialize
();
api
.
queryById
({
id
:
id
,
userId
:
userId
...
...
@@ -316,11 +318,13 @@
}
}
for
(
let
i
=
0
;
i
<
this
.
idTypesList
.
length
;
i
++
)
{
if
(
this
.
applyParam
.
idType
==
this
.
idTypesList
[
i
].
nam
e
)
{
if
(
this
.
idTypesList
[
i
].
name
==
this
.
applyParam
.
idTyp
e
)
{
this
.
idTypeIdx
=
i
;
}
}
if
(
this
.
applyParam
.
approvalStatus
!=
0
&&
this
.
applyParam
.
approvalStatus
!=
2
||
this
.
applyParam
.
applyType
==
'1'
){
this
.
display
=
true
}
}
else
{
this
.
queryOrgList
();
}
...
...
@@ -371,7 +375,7 @@
}
}
}
if
(
!
this
.
applyParam
.
idType
)
{
if
(
!
this
.
applyParam
.
idType
||
this
.
applyParam
.
idType
==
'请选择'
)
{
uni
.
showToast
({
title
:
'请选择证件类型'
,
duration
:
2000
,
...
...
@@ -397,10 +401,9 @@
}
this
.
applyParam
=
{
...
this
.
applyParam
,
applyType
:
2
,
applyType
:
this
.
applyParam
.
inviterInvitationCode
?
'1'
:
'2'
,
operatStep
:
1
,
userId
:
uni
.
getStorageSync
(
'cffp_userId'
),
hasCrossDistrict
:
0
}
api
.
saveApplyInfo
(
this
.
applyParam
).
then
((
res
)
=>
{
if
(
res
[
'success'
])
{
...
...
pages/application-process/education.vue
View file @
a3c98e37
...
...
@@ -36,7 +36,7 @@
</picker>
</view>
<view
class=
"contentItem"
>
<text>
毕业学校
{{
applyParam
.
approvalStatus
}}
</text>
<text>
毕业学校
{{
applyParam
.
approvalStatus
}}
{{
this
.
applyParam
.
approvalStatus
!=
0
&&
this
.
applyParam
.
approvalStatus
!=
2
}}
</text>
<input
class=
"form-control"
v-model=
"applyParam.lastGraduateSchool"
style=
"background: #666666;"
:disabled=
"this.applyParam.approvalStatus!= 0 && this.applyParam.approvalStatus != 2"
/>
</view>
...
...
pages/application-process/signature.vue
View file @
a3c98e37
...
...
@@ -24,7 +24,7 @@
<text
class=
"page_mark"
>
8/8
</text>
</view>
<view
class=
"signatureContent"
v-if=
"!applyParam.personalSignOssPath"
>
<e-signature
:showCanvas=
"showCanvas"
ref=
"signatureComponent"
@
sendImage=
"getImage"
></e-signature>
<e-signature
:style=
"
{'width':'100vw','height':'80vh'}"
:showCanvas="showCanvas" ref="signatureComponent" @sendImage="getImage">
</e-signature>
</view>
<image
:src=
"applyParam.personalSignOssPath"
mode=
"widthFix"
v-if=
"applyParam.personalSignOssPath"
></image>
<view
class=
"fixed"
url=
"bank-card"
@
click=
"save()"
>
...
...
@@ -124,11 +124,11 @@
<
style
lang=
"scss"
>
@import
'applyCommon.scss'
;
uni-page-wrapper
{
overflow
:
hidden
!important
;
}
//
uni-page-wrapper
{
//
overflow
:
hidden
!important
;
//
}
.signatureContent
{
padding
:
0
36
rpx
20
rpx
26
rpx
;
//
padding
:
0
36
rpx
20
rpx
26
rpx
;
background
:
#fff
;
margin-top
:
20
rpx
;
height
:
100%
;
...
...
pages/index/index.vue
View file @
a3c98e37
<
template
>
<movable-area
style=
"width: 100vw; height: 100vh; pointer-events:none; z-index: 9999;position:fixed;top:0;left:0;"
@
tap=
"tokefu()"
>
<movable-view
direction=
"all"
style=
"width: 100rpx; pointer-events:auto; height: 80rpx;top: 50%;left: 85%;text-align: center;"
>
<movable-view
direction=
"all"
style=
"width: 100rpx; pointer-events:auto; height: 80rpx;top: 50%;left: 85%;text-align: center;"
>
<image
:src=
"kefu"
mode=
"widthFix"
></image>
<text
style=
"font-size:20rpx;color: #1954fe;"
>
在线客服
</text>
</movable-view>
...
...
@@ -29,9 +30,11 @@
<view
class=
"featureContent"
>
<!-- 模块导航 -->
<view
class=
"nav_wrapper"
>
<view
class=
"nav_content"
v-for=
"featureItem in featureLists"
:key=
"featureItem.key"
@
click=
"featureSelect(featureItem)"
>
<view
class=
"nav_content"
v-for=
"featureItem in featureLists"
:key=
"featureItem.key"
@
click=
"featureSelect(featureItem)"
>
<view
style=
"width: 120rpx;text-align: center;"
>
<image
:src=
"'/static/moduleIcon/'+featureItem.icon + '.png'"
alt=
""
srcset=
""
mode=
"widthFix"
></image>
<image
:src=
"'/static/moduleIcon/'+featureItem.icon + '.png'"
alt=
""
srcset=
""
mode=
"widthFix"
></image>
</view>
<view>
{{
featureItem
.
name
}}
</view>
</view>
...
...
@@ -69,83 +72,141 @@
x
:
0
,
y
:
0
},
featureLists
:[
{
key
:
'00'
,
name
:
'销售课程'
,
icon
:
'salesCourse'
,
link
:
'/pages/saleCourseLists/saleCourseLists'
,
isOpen
:
true
},
{
key
:
'01'
,
name
:
'我的积分'
,
icon
:
'integral'
,
link
:
'/pages/myPoints/myPoints'
,
isOpen
:
true
},
{
key
:
'02'
,
name
:
'申请加盟'
,
icon
:
'applyJoin'
,
link
:
'/pages/application-process/basic-info'
,
isOpen
:
true
},
{
key
:
'03'
,
name
:
'学习认证'
,
icon
:
'learningCertify'
,
link
:
'/pages/learnCertify/learnCertify'
,
isOpen
:
true
},
{
key
:
'04'
,
name
:
'邀请加盟'
,
icon
:
'shareJoin'
,
link
:
'/pages/inviteJoin/inviteJoin'
,
isOpen
:
true
},
{
key
:
'05'
,
name
:
'我的分享'
,
icon
:
'share'
,
link
:
'/pages/myShare/myShare'
,
isOpen
:
true
},
{
key
:
'06'
,
name
:
'我的团队'
,
icon
:
'team'
,
link
:
'/pages/personalCenter/myTeam'
,
isOpen
:
true
},
{
key
:
'07'
,
name
:
'更多功能'
,
icon
:
'more'
,
link
:
'/pages/personalCenter/personalCenter'
,
isOpen
:
true
}
featureLists
:
[{
key
:
'00'
,
name
:
'销售课程'
,
icon
:
'salesCourse'
,
link
:
'/pages/saleCourseLists/saleCourseLists'
,
isOpen
:
true
},
{
key
:
'01'
,
name
:
'我的积分'
,
icon
:
'integral'
,
link
:
'/pages/myPoints/myPoints'
,
isOpen
:
true
},
{
key
:
'02'
,
name
:
'申请加盟'
,
icon
:
'applyJoin'
,
link
:
'/pages/application-process/basic-info'
,
isOpen
:
true
},
{
key
:
'03'
,
name
:
'学习认证'
,
icon
:
'learningCertify'
,
link
:
'/pages/learnCertify/learnCertify'
,
isOpen
:
true
},
{
key
:
'04'
,
name
:
'邀请加盟'
,
icon
:
'shareJoin'
,
link
:
'/pages/inviteJoin/inviteJoin'
,
isOpen
:
true
},
{
key
:
'05'
,
name
:
'我的分享'
,
icon
:
'share'
,
link
:
'/pages/myShare/myShare'
,
isOpen
:
true
},
{
key
:
'06'
,
name
:
'我的团队'
,
icon
:
'team'
,
link
:
'/pages/personalCenter/myTeam'
,
isOpen
:
true
},
{
key
:
'07'
,
name
:
'更多功能'
,
icon
:
'more'
,
link
:
'/pages/personalCenter/personalCenter'
,
isOpen
:
true
}
],
cffpUserInfo
:{
address
:
''
,
description
:
''
,
fileUploadItemList
:[],
logo
:
''
,
name
:
''
,
type
:
''
//类型1,区域中心,2工作室
cffpUserInfo
:
{
address
:
''
,
description
:
''
,
fileUploadItemList
:
[],
logo
:
''
,
name
:
''
,
type
:
''
//类型1,区域中心,2工作室
},
announcementInfo
:
null
,
tagIds
:
123
,
currentPage
:
'index'
,
carouselList
:[],
announcementInfo
:
null
,
tagIds
:
123
,
currentPage
:
'index'
,
carouselList
:
[],
userId
:
uni
.
getStorageSync
(
'cffp_userId'
),
shareId
:
null
,
kefu
:
'../../static/kefu.png'
shareId
:
null
,
kefu
:
'../../static/kefu.png'
}
},
components
:{
components
:
{
courselist
,
tabBar
,
carousel
,
search
},
onLoad
(
options
)
{
if
(
uni
.
getStorageSync
(
'isLogin'
))
{
if
(
uni
.
getStorageSync
(
'isLogin'
))
{
this
.
queryAreaCenterInfo
();
this
.
announcementQuery
();
}
else
{
}
else
{
uni
.
navigateTo
({
url
:
'/components/login/login'
url
:
'/components/login/login'
})
}
},
methods
:
{
tokefu
(){
tokefu
()
{
let
url
=
'http://q.url.cn/abkzV9?_type=wpa&qidian=true'
// URL是要跳转的外部地址 作为参数
uni
.
navigateTo
({
url
:
'/components/webview?url='
+
url
// page.json定义的路径 传url 到webview界面去接收 实现跳转
})
},
featureSelect
(
featureItem
){
featureSelect
(
featureItem
)
{
console
.
log
(
featureItem
)
if
(
featureItem
.
isOpen
&&
featureItem
.
link
){
if
(
featureItem
.
isOpen
&&
featureItem
.
link
)
{
if
(
this
.
cffpUserInfo
.
partnerType
)
{
uni
.
navigateTo
({
url
:
featureItem
.
link
url
:
featureItem
.
link
})
}
else
{
}
else
{
uni
.
showToast
({
title
:
'此功能暂未开放,敬请期待。'
,
title
:
"您本人尚未加盟,您加盟后可邀请加盟"
,
duration
:
2000
,
icon
:
'none'
});
return
false
}
}
else
{
uni
.
showToast
({
title
:
'此功能暂未开放,敬请期待。'
,
duration
:
2000
,
icon
:
'none'
})
}
},
queryAreaCenterInfo
(){
api
.
queryAreaCenterInfo
({
userId
:
this
.
userId
}).
then
((
res
)
=>
{
if
(
res
[
'success'
]){
queryAreaCenterInfo
()
{
api
.
queryAreaCenterInfo
({
userId
:
this
.
userId
}).
then
((
res
)
=>
{
if
(
res
[
'success'
])
{
this
.
cffpUserInfo
=
res
[
'data'
];
// this.cffpUserInfo.logo = res['logo'];
uni
.
setStorageSync
(
'fileUploadItemCFFPList'
,
this
.
cffpUserInfo
[
'fileUploadItemCFFPList'
])
uni
.
setStorageSync
(
'fileUploadItemCFFPList'
,
this
.
cffpUserInfo
[
'fileUploadItemCFFPList'
])
const
cffp_userInfo
=
{
name
:
this
.
cffpUserInfo
[
'userReName'
],
mobile
:
this
.
cffpUserInfo
[
'mobile'
]
name
:
this
.
cffpUserInfo
[
'userReName'
],
mobile
:
this
.
cffpUserInfo
[
'mobile'
]
}
uni
.
setStorageSync
(
'cffp_userInfo'
,
JSON
.
stringify
(
cffp_userInfo
))
}
else
{
uni
.
setStorageSync
(
'cffp_userInfo'
,
JSON
.
stringify
(
cffp_userInfo
))
}
else
{
uni
.
showToast
({
title
:
res
[
'message'
],
duration
:
2000
,
...
...
@@ -154,9 +215,13 @@
}
})
},
announcementQuery
(){
api
.
announcementQuery
({
announcementTypeId
:
37
}).
then
((
res
)
=>
{
this
.
announcementInfo
=
res
[
'data'
][
'announcementInfoList'
]
?
res
[
'data'
][
'announcementInfoList'
][
0
][
'title'
]
:
'银盾公告'
announcementQuery
()
{
api
.
announcementQuery
({
announcementTypeId
:
37
}).
then
((
res
)
=>
{
this
.
announcementInfo
=
res
[
'data'
][
'announcementInfoList'
]
?
res
[
'data'
][
'announcementInfoList'
][
0
][
'title'
]
:
'银盾公告'
})
},
getIntroduce
(
type
)
{
...
...
@@ -164,14 +229,14 @@
// open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
this
.
$refs
.
popup
.
open
(
type
)
},
jumpToAnnouncement
(){
jumpToAnnouncement
()
{
uni
.
navigateTo
({
url
:
`../announcement/announcement`
url
:
`../announcement/announcement`
})
},
goToCourselist
(){
goToCourselist
()
{
uni
.
navigateTo
({
url
:
'../../pages/courselist/courselist'
url
:
'../../pages/courselist/courselist'
})
},
onChange
:
function
(
e
)
{
...
...
@@ -188,88 +253,105 @@
</
script
>
<
style
lang=
"scss"
>
.container
{
.container
{
padding
:
30
rpx
;
.top{
.compony{
.top
{
.compony
{
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
max-height
:
90
rpx
;
overflow
:
hidden
;
.name{
.name
{
font-size
:
36
rpx
;
}
image
{
image
{
margin-right
:
20
rpx
;
}
.icon-31tishi
{
.icon-31tishi
{
font-size
:
40
rpx
;
}
}
.banner
{
.banner
{
border-radius
:
20
rpx
;
overflow
:
hidden
;
}
}
.message
{
.message
{
display
:
flex
;
align-items
:
center
;
margin
:
20
rpx
0
;
background-color
:
#fff
;
padding
:
10
rpx
0
10
rpx
30
rpx
;
justify-content
:
space-between
;
.icon-gonggao{
.icon-gonggao
{
font-size
:
60
rpx
;
color
:
#20279b
;
margin-right
:
20
rpx
;
}
.msg
{
.msg
{
color
:
red
;
}
}
.content
{
margin-bottom
:
20
rpx
;
overflow
:
hidden
;
background
:
#fff
;
position
:
relative
;
.featureContent{
.featureContent
{
padding-top
:
10px
;
.nav_wrapper{
.nav_wrapper
{
display
:
flex
;
align-items
:
center
;
justify-content
:
space-around
;
flex-wrap
:
wrap
;
width
:
100%
;
.nav_content{
.nav_content
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
justify-content
:
center
;
margin-bottom
:
20
rpx
;
flex
:
0
0
20%
;
flex
:
0
0
20%
;
font-size
:
14px
;
color
:
#666
;
margin
:
10px
2%
;
image{
image
{
max-width
:
80%
;
}
}
}
}
}
.course_content
{
.course_content
{
background
:
#fff
;
position
:
relative
;
padding-bottom
:
100
rpx
;
.tag{
.tag
{
padding
:
20
rpx
;
display
:
flex
;
justify-content
:
space-between
;
h4{
h4
{
margin-left
:
20
rpx
;
}
}
.tag
:before
{
.tag
:before
{
position
:
absolute
;
left
:
20
rpx
;
top
:
20
rpx
;
...
...
@@ -282,8 +364,8 @@
}
}
}
.description
{
.description
{
padding
:
40
rpx
;
}
</
style
>
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