Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
project-online-fi
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
project-online-fi
Commits
39a9be5c
提交
39a9be5c
authored
1月 11, 2023
作者:
matian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Auto stash before merge of "master" and "origin/master"
上级
23c1cd51
隐藏空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
441 行增加
和
128 行删除
+441
-128
1.js
data/src/goods/1.js
+131
-10
2.js
data/src/goods/2.js
+36
-9
3.js
data/src/goods/3.js
+48
-12
4.js
data/src/goods/4.js
+36
-9
5.js
data/src/goods/5.js
+3
-2
ProjectSystem.vue
src/modules/home/components/ProjectSystem.vue
+26
-13
Order.vue
src/modules/pay/views/Order.vue
+12
-3
CourseFooter.vue
src/modules/shop/components/CourseFooter.vue
+17
-24
CourseList.vue
src/modules/shop/components/CourseList.vue
+2
-2
CourseListItem.vue
src/modules/shop/components/CourseListItem.vue
+15
-9
DetailBanner.vue
src/modules/shop/components/DetailBanner.vue
+19
-13
Index.vue
src/modules/shop/views/Index.vue
+54
-9
View.vue
src/modules/shop/views/View.vue
+42
-13
没有找到文件。
data/src/goods/1.js
浏览文件 @
39a9be5c
...
@@ -15,7 +15,7 @@ export default [
...
@@ -15,7 +15,7 @@ export default [
title_list
:
[
'清华五道口金融学院硕士生导师首席经济学家'
,
'清华五道口金融学院硕士生导师首席经济学家'
]
title_list
:
[
'清华五道口金融学院硕士生导师首席经济学家'
,
'清华五道口金融学院硕士生导师首席经济学家'
]
}
}
],
],
child_ids
:
[
'1-1'
,
'1-2'
,
'1-3'
,
'1-4'
,
'1-5'
,
'1-6'
,
'1-7'
,
'1-8'
],
child_ids
:
[
'1-1'
,
'1-2'
,
'1-3'
,
'1-4'
,
'1-5'
,
'1-6'
,
'1-7'
,
'1-8'
,
'1-x'
,
'1-y'
],
course_card
:
'知名导师专家'
,
course_card
:
'知名导师专家'
,
course_compulsory
:
6
,
course_compulsory
:
6
,
course_elective
:
2
,
course_elective
:
2
,
...
@@ -26,7 +26,10 @@ export default [
...
@@ -26,7 +26,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
'课程费用4300元/人,考试费/认证费/教材费合计680元/人'
,
total_price_desc
:
'课程费用4300元/人,考试费/认证费/教材费合计680元/人'
,
sku_id
:
'7014129405609902080'
,
sku_id
:
'7014129405609902080'
,
spu_id
:
'7014129404863315968'
spu_id
:
'7014129404863315968'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAP(Ⅰ)'
,
category
:
'PAAP(Ⅰ)'
,
...
@@ -85,7 +88,10 @@ export default [
...
@@ -85,7 +88,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018148152972673024'
,
sku_id
:
'7018148152972673024'
,
spu_id
:
'7018148152758763520'
spu_id
:
'7018148152758763520'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAP(Ⅰ)'
,
category
:
'PAAP(Ⅰ)'
,
...
@@ -130,7 +136,10 @@ export default [
...
@@ -130,7 +136,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018148297881681920'
,
sku_id
:
'7018148297881681920'
,
spu_id
:
'7018148297659383808'
spu_id
:
'7018148297659383808'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAP(Ⅰ)'
,
category
:
'PAAP(Ⅰ)'
,
...
@@ -175,7 +184,10 @@ export default [
...
@@ -175,7 +184,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018148355993763840'
,
sku_id
:
'7018148355993763840'
,
spu_id
:
'7018148355750494208'
spu_id
:
'7018148355750494208'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAP(Ⅰ)'
,
category
:
'PAAP(Ⅰ)'
,
...
@@ -220,7 +232,10 @@ export default [
...
@@ -220,7 +232,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018148401996890112'
,
sku_id
:
'7018148401996890112'
,
spu_id
:
'7018148401443241984'
spu_id
:
'7018148401443241984'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAP(Ⅰ)'
,
category
:
'PAAP(Ⅰ)'
,
...
@@ -265,7 +280,10 @@ export default [
...
@@ -265,7 +280,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018148446439735296'
,
sku_id
:
'7018148446439735296'
,
spu_id
:
'7018148446183882752'
spu_id
:
'7018148446183882752'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAP(Ⅰ)'
,
category
:
'PAAP(Ⅰ)'
,
...
@@ -310,7 +328,10 @@ export default [
...
@@ -310,7 +328,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018148498998558720'
,
sku_id
:
'7018148498998558720'
,
spu_id
:
'7018148498784649216'
spu_id
:
'7018148498784649216'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAP(Ⅰ)'
,
category
:
'PAAP(Ⅰ)'
,
...
@@ -355,7 +376,10 @@ export default [
...
@@ -355,7 +376,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018148559375564800'
,
sku_id
:
'7018148559375564800'
,
spu_id
:
'7018148559153266688'
spu_id
:
'7018148559153266688'
,
is_free
:
false
,
is_new
:
false
,
is_test
:
false
},
},
{
{
category
:
'PAAP(Ⅰ)'
,
category
:
'PAAP(Ⅰ)'
,
...
@@ -400,6 +424,103 @@ export default [
...
@@ -400,6 +424,103 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018148600190337024'
,
sku_id
:
'7018148600190337024'
,
spu_id
:
'7018148600018370560'
spu_id
:
'7018148600018370560'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
{
category
:
'PAAP(Ⅰ)'
,
id
:
'1-x'
,
title
:
'prp测试使用老课'
,
desc
:
'通过私人权属资产全面预算的系统学习,具备完成私人资产分析所需要的系统源点知识的底层逻辑,精确盘点私人资产,建立私人资产分析的多维模型'
,
for_people
:
'包括但并不仅限于金融保险企业绩优营销员'
,
image_url
:
'https://webapp-pub.ezijing.com/project_online/fi/paap1_banner.png'
,
type
:
'课程'
,
price
:
0.01
,
lecturer_list
:
[
{
name
:
'张伟'
,
avatar
:
''
,
title_list
:
[
'清华五道口金融学院硕士生导师首席经济学家'
,
'清华五道口金融学院硕士生导师首席经济学家'
]
}
],
child_ids
:
[
'1-1'
,
'1-2'
,
'1-3'
,
'1-4'
,
'1-5'
,
'1-6'
,
'1-7'
,
'1-8'
],
course_card
:
'知名导师专家'
,
course_compulsory
:
6
,
course_elective
:
2
,
course_chapter
:
'56'
,
course_total_hour
:
'80'
,
course_hour
:
'8课时'
,
course_id
:
'7018416731202781184'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
'课程费用4300元/人,考试费/认证费/教材费合计680元/人'
,
sku_id
:
'7013797336337874944'
,
spu_id
:
'7013796818362302464'
,
is_free
:
false
,
is_new
:
false
,
is_test
:
true
},
{
category
:
'PAAP(Ⅰ)'
,
id
:
'1-y'
,
title
:
'paa测试使用新课'
,
desc
:
'通过私人权属资产全面预算的系统学习,具备完成私人资产分析所需要的系统源点知识的底层逻辑,精确盘点私人资产,建立私人资产分析的多维模型'
,
for_people
:
'包括但并不仅限于金融保险企业绩优营销员'
,
image_url
:
'https://webapp-pub.ezijing.com/project_online/fi/paap1_1.png'
,
type
:
'课程'
,
price
:
0.01
,
lecturer_list
:
[
{
name
:
'张伟'
,
avatar
:
''
,
title_list
:
[
'清华五道口金融学院硕士生导师首席经济学家'
,
'清华五道口金融学院硕士生导师首席经济学家'
]
}
],
content_list
:
[
{
id
:
1
,
label
:
'第一章111'
,
children
:
[
{
label
:
'第一节'
},
{
label
:
'第二节'
},
{
label
:
'第三节'
}
]
},
{
id
:
2
,
label
:
'第二章222'
,
children
:
[]
},
{
id
:
3
,
label
:
'第三章333'
,
children
:
[
{
label
:
''
}
]
}
],
course_card
:
'知名导师专家'
,
course_compulsory
:
6
,
course_elective
:
2
,
course_chapter
:
'56'
,
course_total_hour
:
'80'
,
course_hour
:
'8课时'
,
course_id
:
'7018416315857633280'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
sku_id
:
'7013797436787261440'
,
spu_id
:
'7013796776536702976'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
true
}
}
]
]
data/src/goods/2.js
浏览文件 @
39a9be5c
...
@@ -26,7 +26,10 @@ export default [
...
@@ -26,7 +26,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
'课程费用7000元/人,考试费/认证费/教材费合计680元/人'
,
total_price_desc
:
'课程费用7000元/人,考试费/认证费/教材费合计680元/人'
,
sku_id
:
'7014130347952570368'
,
sku_id
:
'7014130347952570368'
,
spu_id
:
'7014130347390533632'
spu_id
:
'7014130347390533632'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAP(Ⅱ)'
,
category
:
'PAAP(Ⅱ)'
,
...
@@ -71,7 +74,10 @@ export default [
...
@@ -71,7 +74,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018152688009347072'
,
sku_id
:
'7018152688009347072'
,
spu_id
:
'7018152687816409088'
spu_id
:
'7018152687816409088'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAP(Ⅱ)'
,
category
:
'PAAP(Ⅱ)'
,
...
@@ -116,7 +122,10 @@ export default [
...
@@ -116,7 +122,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018152880926359552'
,
sku_id
:
'7018152880926359552'
,
spu_id
:
'7018152880771170304'
spu_id
:
'7018152880771170304'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAP(Ⅱ)'
,
category
:
'PAAP(Ⅱ)'
,
...
@@ -161,7 +170,10 @@ export default [
...
@@ -161,7 +170,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018152942817509376'
,
sku_id
:
'7018152942817509376'
,
spu_id
:
'7018152942582628352'
spu_id
:
'7018152942582628352'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAP(Ⅱ)'
,
category
:
'PAAP(Ⅱ)'
,
...
@@ -206,7 +218,10 @@ export default [
...
@@ -206,7 +218,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018153065505095680'
,
sku_id
:
'7018153065505095680'
,
spu_id
:
'7018153065345712128'
spu_id
:
'7018153065345712128'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAP(Ⅱ)'
,
category
:
'PAAP(Ⅱ)'
,
...
@@ -251,7 +266,10 @@ export default [
...
@@ -251,7 +266,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018153097708961792'
,
sku_id
:
'7018153097708961792'
,
spu_id
:
'7018153097490857984'
spu_id
:
'7018153097490857984'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAP(Ⅱ)'
,
category
:
'PAAP(Ⅱ)'
,
...
@@ -296,7 +314,10 @@ export default [
...
@@ -296,7 +314,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018153138490179584'
,
sku_id
:
'7018153138490179584'
,
spu_id
:
'7018153138276270080'
spu_id
:
'7018153138276270080'
,
is_free
:
false
,
is_new
:
false
,
is_test
:
false
},
},
{
{
category
:
'PAAP(Ⅱ)'
,
category
:
'PAAP(Ⅱ)'
,
...
@@ -341,7 +362,10 @@ export default [
...
@@ -341,7 +362,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018153186531737600'
,
sku_id
:
'7018153186531737600'
,
spu_id
:
'7018153185999060992'
spu_id
:
'7018153185999060992'
,
is_free
:
false
,
is_new
:
false
,
is_test
:
false
},
},
{
{
category
:
'PAAP(Ⅱ)'
,
category
:
'PAAP(Ⅱ)'
,
...
@@ -386,6 +410,9 @@ export default [
...
@@ -386,6 +410,9 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018153236649476096'
,
sku_id
:
'7018153236649476096'
,
spu_id
:
'7018153236393623552'
spu_id
:
'7018153236393623552'
,
is_free
:
false
,
is_new
:
false
,
is_test
:
false
}
}
]
]
data/src/goods/3.js
浏览文件 @
39a9be5c
...
@@ -26,7 +26,10 @@ export default [
...
@@ -26,7 +26,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
'课程费用12000元/人,考试费/认证费/教材费合计980元/人'
,
total_price_desc
:
'课程费用12000元/人,考试费/认证费/教材费合计980元/人'
,
sku_id
:
'7014130543629434880'
,
sku_id
:
'7014130543629434880'
,
spu_id
:
'7014130542861877248'
spu_id
:
'7014130542861877248'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAM'
,
category
:
'PAAM'
,
...
@@ -71,7 +74,10 @@ export default [
...
@@ -71,7 +74,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018154999255400448'
,
sku_id
:
'7018154999255400448'
,
spu_id
:
'7018154999087628288'
spu_id
:
'7018154999087628288'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAM'
,
category
:
'PAAM'
,
...
@@ -116,7 +122,10 @@ export default [
...
@@ -116,7 +122,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018155082088710144'
,
sku_id
:
'7018155082088710144'
,
spu_id
:
'7018155081837051904'
spu_id
:
'7018155081837051904'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAM'
,
category
:
'PAAM'
,
...
@@ -161,7 +170,10 @@ export default [
...
@@ -161,7 +170,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018155124648312832'
,
sku_id
:
'7018155124648312832'
,
spu_id
:
'7018155124409237504'
spu_id
:
'7018155124409237504'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAM'
,
category
:
'PAAM'
,
...
@@ -206,7 +218,10 @@ export default [
...
@@ -206,7 +218,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018155185348280320'
,
sku_id
:
'7018155185348280320'
,
spu_id
:
'7018155185100816384'
spu_id
:
'7018155185100816384'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAM'
,
category
:
'PAAM'
,
...
@@ -251,7 +266,10 @@ export default [
...
@@ -251,7 +266,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018155221046001664'
,
sku_id
:
'7018155221046001664'
,
spu_id
:
'7018155220798537728'
spu_id
:
'7018155220798537728'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAM'
,
category
:
'PAAM'
,
...
@@ -296,7 +314,10 @@ export default [
...
@@ -296,7 +314,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018155258798931968'
,
sku_id
:
'7018155258798931968'
,
spu_id
:
'7018155258513719296'
spu_id
:
'7018155258513719296'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'PAAM'
,
category
:
'PAAM'
,
...
@@ -341,7 +362,10 @@ export default [
...
@@ -341,7 +362,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018155294282743808'
,
sku_id
:
'7018155294282743808'
,
spu_id
:
'7018155294085611520'
spu_id
:
'7018155294085611520'
,
is_free
:
false
,
is_new
:
false
,
is_test
:
false
},
},
{
{
category
:
'PAAM'
,
category
:
'PAAM'
,
...
@@ -386,7 +410,10 @@ export default [
...
@@ -386,7 +410,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018155330718662656'
,
sku_id
:
'7018155330718662656'
,
spu_id
:
'7018155330425061376'
spu_id
:
'7018155330425061376'
,
is_free
:
false
,
is_new
:
false
,
is_test
:
false
},
},
{
{
category
:
'PAAM'
,
category
:
'PAAM'
,
...
@@ -431,7 +458,10 @@ export default [
...
@@ -431,7 +458,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018155379125125120'
,
sku_id
:
'7018155379125125120'
,
spu_id
:
'7018155378894438400'
spu_id
:
'7018155378894438400'
,
is_free
:
false
,
is_new
:
false
,
is_test
:
false
},
},
{
{
category
:
'PAAM'
,
category
:
'PAAM'
,
...
@@ -476,7 +506,10 @@ export default [
...
@@ -476,7 +506,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018155430316605440'
,
sku_id
:
'7018155430316605440'
,
spu_id
:
'7018155430069141504'
spu_id
:
'7018155430069141504'
,
is_free
:
false
,
is_new
:
false
,
is_test
:
false
},
},
{
{
category
:
'PAAM'
,
category
:
'PAAM'
,
...
@@ -521,6 +554,9 @@ export default [
...
@@ -521,6 +554,9 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018155468174393344'
,
sku_id
:
'7018155468174393344'
,
spu_id
:
'7018155467947900928'
spu_id
:
'7018155467947900928'
,
is_free
:
false
,
is_new
:
false
,
is_test
:
false
}
}
]
]
data/src/goods/4.js
浏览文件 @
39a9be5c
...
@@ -25,7 +25,10 @@ export default [
...
@@ -25,7 +25,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
'课程费用12000元/人,考试费/认证费/教材费合计980元/人'
,
total_price_desc
:
'课程费用12000元/人,考试费/认证费/教材费合计980元/人'
,
sku_id
:
'7014130543629434880'
,
sku_id
:
'7014130543629434880'
,
spu_id
:
'7014130542861877248'
spu_id
:
'7014130542861877248'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'system_course'
,
category
:
'system_course'
,
...
@@ -70,7 +73,10 @@ export default [
...
@@ -70,7 +73,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018154999255400448'
,
sku_id
:
'7018154999255400448'
,
spu_id
:
'7018154999087628288'
spu_id
:
'7018154999087628288'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'system_course'
,
category
:
'system_course'
,
...
@@ -115,7 +121,10 @@ export default [
...
@@ -115,7 +121,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018155082088710144'
,
sku_id
:
'7018155082088710144'
,
spu_id
:
'7018155081837051904'
spu_id
:
'7018155081837051904'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'system_course'
,
category
:
'system_course'
,
...
@@ -160,7 +169,10 @@ export default [
...
@@ -160,7 +169,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018155124648312832'
,
sku_id
:
'7018155124648312832'
,
spu_id
:
'7018155124409237504'
spu_id
:
'7018155124409237504'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'system_course'
,
category
:
'system_course'
,
...
@@ -205,7 +217,10 @@ export default [
...
@@ -205,7 +217,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018155185348280320'
,
sku_id
:
'7018155185348280320'
,
spu_id
:
'7018155185100816384'
spu_id
:
'7018155185100816384'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'system_course'
,
category
:
'system_course'
,
...
@@ -250,7 +265,10 @@ export default [
...
@@ -250,7 +265,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018155221046001664'
,
sku_id
:
'7018155221046001664'
,
spu_id
:
'7018155220798537728'
spu_id
:
'7018155220798537728'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'system_course'
,
category
:
'system_course'
,
...
@@ -295,7 +313,10 @@ export default [
...
@@ -295,7 +313,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018155258798931968'
,
sku_id
:
'7018155258798931968'
,
spu_id
:
'7018155258513719296'
spu_id
:
'7018155258513719296'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'system_course'
,
category
:
'system_course'
,
...
@@ -340,7 +361,10 @@ export default [
...
@@ -340,7 +361,10 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018155294282743808'
,
sku_id
:
'7018155294282743808'
,
spu_id
:
'7018155294085611520'
spu_id
:
'7018155294085611520'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
},
},
{
{
category
:
'system_course'
,
category
:
'system_course'
,
...
@@ -385,6 +409,9 @@ export default [
...
@@ -385,6 +409,9 @@ export default [
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
''
,
total_price_desc
:
''
,
sku_id
:
'7018155330718662656'
,
sku_id
:
'7018155330718662656'
,
spu_id
:
'7018155330425061376'
spu_id
:
'7018155330425061376'
,
is_free
:
false
,
is_new
:
true
,
is_test
:
false
}
}
]
]
data/src/goods/5.js
浏览文件 @
39a9be5c
...
@@ -24,7 +24,8 @@ export default [
...
@@ -24,7 +24,8 @@ export default [
course_id
:
'7016965100288344064'
,
course_id
:
'7016965100288344064'
,
class_id
:
'7017001355222974464'
,
class_id
:
'7017001355222974464'
,
total_price_desc
:
'课程费用12000元/人,考试费/认证费/教材费合计980元/人'
,
total_price_desc
:
'课程费用12000元/人,考试费/认证费/教材费合计980元/人'
,
sku_id
:
'7014130543629434880'
,
is_free
:
true
,
spu_id
:
'7014130542861877248'
is_new
:
true
,
is_test
:
false
}
}
]
]
src/modules/home/components/ProjectSystem.vue
浏览文件 @
39a9be5c
...
@@ -123,6 +123,30 @@ const list: List[] = [
...
@@ -123,6 +123,30 @@ const list: List[] = [
btnIconActive
:
'https://webapp-pub.ezijing.com/project_online/fi/tab3_hover.png'
,
btnIconActive
:
'https://webapp-pub.ezijing.com/project_online/fi/tab3_hover.png'
,
h1
:
'针对行业内所有相关人士,提供行业从业人员终身学习的底层逻辑和专业知识架构,建立系统思维,养成学习与从业的习惯,建立自我成长和职业发展的心智模式。'
,
h1
:
'针对行业内所有相关人士,提供行业从业人员终身学习的底层逻辑和专业知识架构,建立系统思维,养成学习与从业的习惯,建立自我成长和职业发展的心智模式。'
,
card
:
[
card
:
[
{
id
:
'5-1'
,
img
:
'https://webapp-pub.ezijing.com/project_online/fi/tab3_1.png'
,
h5Img
:
'https://webapp-pub.ezijing.com/project_online/fi/h5/system-3-1.png'
,
tit
:
'免费小课'
,
list
:
[
{
tit
:
'适用人群'
,
desc
:
'从事金融服务业销售人员'
}
]
},
{
id
:
'4-1'
,
img
:
'https://webapp-pub.ezijing.com/project_online/fi/tab3_1.png'
,
h5Img
:
'https://webapp-pub.ezijing.com/project_online/fi/h5/system-3-1.png'
,
tit
:
'系统小课'
,
list
:
[
{
tit
:
'适用人群'
,
desc
:
'终身学习爱好者'
}
]
},
{
{
id
:
''
,
id
:
''
,
img
:
'https://webapp-pub.ezijing.com/project_online/fi/tab3_1.png'
,
img
:
'https://webapp-pub.ezijing.com/project_online/fi/tab3_1.png'
,
...
@@ -243,13 +267,6 @@ const handleDetail = (item: any) => {
...
@@ -243,13 +267,6 @@ const handleDetail = (item: any) => {
<div
class=
"value"
>
{{
it
.
desc
}}
</div>
<div
class=
"value"
>
{{
it
.
desc
}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"item"
>
<div
class=
"i"
></div>
<div
class=
"r-txt"
>
<div
class=
"name"
>
学员属性
</div>
<div
class=
"value"
>
包括但并不仅限于金融保险企业绩优营包括但并不仅限于金融保险企业绩优营销员销员
</div>
</div>
</div>
</div>
</div>
<div
class=
"more"
@
click=
"router.push('/shop')"
>
查看更多课程
</div>
<div
class=
"more"
@
click=
"router.push('/shop')"
>
查看更多课程
</div>
</div>
</div>
...
@@ -354,19 +371,15 @@ const handleDetail = (item: any) => {
...
@@ -354,19 +371,15 @@ const handleDetail = (item: any) => {
.content_main
{
.content_main
{
margin-top
:
29px
;
margin-top
:
29px
;
display
:
grid
;
display
:
grid
;
grid-template-columns
:
repeat
(
3
,
1fr
);
grid-template-columns
:
repeat
(
4
,
1fr
);
grid-column-gap
:
30px
;
grid-column-gap
:
30px
;
.main_list
{
.main_list
{
background
:
rgba
(
255
,
255
,
255
,
0
.39
);
background
:
rgba
(
255
,
255
,
255
,
0
.39
);
box-shadow
:
0px
3px
6px
rgba
(
0
,
0
,
0
,
0
.16
);
box-shadow
:
0px
3px
6px
rgba
(
0
,
0
,
0
,
0
.16
);
padding
:
21px
16px
16px
16px
;
padding
:
21px
16px
16px
16px
;
cursor
:
pointer
;
cursor
:
pointer
;
.list_img2
{
width
:
555px
;
height
:
197px
;
}
.list_tit
{
.list_tit
{
font-size
:
18px
;
font-size
:
18px
;
font-weight
:
500
;
font-weight
:
500
;
...
...
src/modules/pay/views/Order.vue
浏览文件 @
39a9be5c
...
@@ -5,7 +5,7 @@ import { getOrderList } from '../api'
...
@@ -5,7 +5,7 @@ import { getOrderList } from '../api'
import
{
useDevice
}
from
'@/composables/useDevice'
import
{
useDevice
}
from
'@/composables/useDevice'
import
{
useShopStore
}
from
'@/stores/shop'
import
{
useShopStore
}
from
'@/stores/shop'
import
{
useUserStore
}
from
'@/stores/user'
import
{
useUserStore
}
from
'@/stores/user'
import
ContactDialog
from
'../../shop/components/ContactDialog.vue'
interface
Props
{
interface
Props
{
id
:
string
id
:
string
}
}
...
@@ -17,6 +17,8 @@ const { mobile } = useDevice()
...
@@ -17,6 +17,8 @@ const { mobile } = useDevice()
const
router
=
useRouter
()
const
router
=
useRouter
()
const
route
=
useRoute
()
const
route
=
useRoute
()
const
buyDialogVisible
=
ref
(
false
)
const
orderId
=
useStorage
(
'order_detail_id'
,
route
.
query
.
order_detail_id
)
const
orderId
=
useStorage
(
'order_detail_id'
,
route
.
query
.
order_detail_id
)
const
order
=
ref
<
Order
>
()
const
order
=
ref
<
Order
>
()
async
function
getOrder
()
{
async
function
getOrder
()
{
...
@@ -44,7 +46,12 @@ const start_time = getDateTime(0)
...
@@ -44,7 +46,12 @@ const start_time = getDateTime(0)
const
end_time
=
getDateTime
(
90
)
const
end_time
=
getDateTime
(
90
)
const
handleStudy
=
()
=>
{
const
handleStudy
=
()
=>
{
window
.
open
(
'https://fi-learning.ezijing.com'
)
console
.
log
(
shopItem
?.
is_new
===
true
)
if
(
shopItem
?.
is_new
===
true
)
{
buyDialogVisible
.
value
=
true
}
else
{
window
.
open
(
'https://fi-learning.ezijing.com'
)
}
}
}
const
handlePrev
=
()
=>
{
const
handlePrev
=
()
=>
{
router
.
replace
({
path
:
`/shop/detail/
${
shopItem
?.
id
}
` })
router
.
replace
({
path
:
`/shop/detail/
${
shopItem
?.
id
}
` })
...
@@ -87,7 +94,8 @@ const handlePrev = () => {
...
@@ -87,7 +94,8 @@ const handlePrev = () => {
<div
class=
"course_con"
>
<div
class=
"course_con"
>
<img
<img
src=
"https://img1.baidu.com/it/u=3009731526,373851691&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500"
src=
"https://img1.baidu.com/it/u=3009731526,373851691&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500"
@
click=
"handlePrev"
/>
@
click=
"handlePrev"
/>
<div
class=
"course_dec"
>
<div
class=
"course_dec"
>
<div
class=
"info_title"
>
{{
shopItem
?.
title
}}
</div>
<div
class=
"info_title"
>
{{
shopItem
?.
title
}}
</div>
<div
class=
"info_date"
>
有效期:
{{
start_time
}}
至
{{
end_time
}}
</div>
<div
class=
"info_date"
>
有效期:
{{
start_time
}}
至
{{
end_time
}}
</div>
...
@@ -106,6 +114,7 @@ const handlePrev = () => {
...
@@ -106,6 +114,7 @@ const handlePrev = () => {
<div
class=
"study_con"
@
click=
"handleStudy"
>
开始学习
</div>
<div
class=
"study_con"
@
click=
"handleStudy"
>
开始学习
</div>
</div>
</div>
</div>
</div>
<ContactDialog
v-model:buyDialogVisible=
"buyDialogVisible"
/>
</div>
</div>
</
template
>
</
template
>
...
...
src/modules/shop/components/CourseFooter.vue
浏览文件 @
39a9be5c
...
@@ -16,17 +16,19 @@ const props = defineProps({
...
@@ -16,17 +16,19 @@ const props = defineProps({
const
buyDialogVisible
=
ref
(
false
)
const
buyDialogVisible
=
ref
(
false
)
const
handleBuyCourse
=
()
=>
{
const
handleBuyCourse
=
()
=>
{
console
.
log
(
props
.
payStatus
,
props
.
shopItem
?.
isBuy
)
if
(
user
.
isLogin
)
{
if
(
user
.
isLogin
)
{
if
(
props
.
payStatus
===
'4'
||
props
.
shopItem
?.
isBuy
===
true
)
{
if
(
props
.
payStatus
===
'4'
||
props
.
shopItem
?.
isBuy
===
true
)
{
// window.open('https://fi-learning.ezijing.com')
if
(
props
.
shopItem
?.
category
===
'system_course'
)
{
buyDialogVisible
.
value
=
true
buyDialogVisible
.
value
=
true
}
else
{
window
.
open
(
'https://fi-learning.ezijing.com'
)
}
}
else
{
}
else
{
// if (props.shopItem?.type === '课程包
') {
if
(
props
.
shopItem
?.
category
===
'free_course
'
)
{
//
buyDialogVisible.value = true
buyDialogVisible
.
value
=
true
//
} else {
}
else
{
router
.
push
(
`/shop/pay/
${
props
.
shopItem
?.
id
}
`)
router
.
push
(
`/shop/pay/
${
props
.
shopItem
?.
id
}
`)
//
}
}
}
}
} else {
} else {
window.location.href = `
$
{
import
.
meta
.
env
.
VITE_LOGIN_URL
}?
rd
=
$
{
encodeURIComponent
(
location
.
href
)}
`
window.location.href = `
$
{
import
.
meta
.
env
.
VITE_LOGIN_URL
}?
rd
=
$
{
encodeURIComponent
(
location
.
href
)}
`
...
@@ -47,7 +49,7 @@ const handleBuyCourse = () => {
...
@@ -47,7 +49,7 @@ const handleBuyCourse = () => {
</div>
</div>
</
template
>
</
template
>
<div
class=
"footer_btn"
@
click=
"handleBuyCourse"
>
<div
class=
"footer_btn"
@
click=
"handleBuyCourse"
>
{{ payStatus === '4' || shopItem?.isBuy === true
? '联系我们
' : '立即购买' }}
{{ payStatus === '4' || shopItem?.isBuy === true
|| shopItem?.is_free === true ? '立即学习
' : '立即购买' }}
</div>
</div>
</div>
</div>
<div
class=
"detail_footer"
v-else
>
<div
class=
"detail_footer"
v-else
>
...
@@ -56,27 +58,18 @@ const handleBuyCourse = () => {
...
@@ -56,27 +58,18 @@ const handleBuyCourse = () => {
<div
class=
"footer_left"
v-if=
"shopItem?.type === '课程包'"
>
<div
class=
"footer_left"
v-if=
"shopItem?.type === '课程包'"
>
<div
class=
"left_tit"
>
<div
class=
"left_tit"
>
总学费
<span
class=
"tit_price"
>
¥
{{
shopItem
?.
price
}}
</span>
总学费
<span
class=
"tit_price"
>
¥
{{
shopItem
?.
price
}}
</span>
<!--
<div
class=
"footer_price"
>
<div
class=
"price_icon"
>
¥
</div>
<div
class=
"price_price"
>
{{
shopItem
?.
price
}}
</div>
</div>
-->
</div>
</div>
<div
class=
"left_desc"
>
{{
shopItem
?.
total_price_desc
}}
</div>
<div
class=
"left_desc"
>
{{
shopItem
?.
total_price_desc
}}
</div>
</div>
</div>
<div
class=
"footer_left"
v-
else
>
<div
class=
"footer_left"
v-
if=
"shopItem?.type === '课程'"
>
<div
class=
"left_tit"
>
课程价格
</div>
<div
class=
"left_tit"
>
{{
shopItem
?.
is_free
===
true
?
'免费'
:
'课程价格'
}}
</div>
</div>
</div>
</
template
>
</
template
>
<div
class=
"footer_btn"
@
click=
"handleBuyCourse"
v-if=
"payStatus === '4' || shopItem?.isBuy === true"
>
<div
class=
"footer_btn"
@
click=
"handleBuyCourse"
>
<div
class=
"btn_buy"
>
联系我们
</div>
<div
class=
"btn_buy"
>
</div>
{{ payStatus === '4' || shopItem?.isBuy === true || shopItem?.is_free === true ? '立即学习' : '立即购买' }}
<div
class=
"footer_btn"
@
click=
"handleBuyCourse"
v-else
>
</div>
<!-- <div class="footer_price">
<div class="price_icon">¥</div>
<div class="price_price">{{ shopItem?.price }}</div>
</div> -->
<div
class=
"btn_buy"
>
立即购买
</div>
</div>
</div>
</div>
</div>
<ContactDialog
v-model:buyDialogVisible=
"buyDialogVisible"
/>
<ContactDialog
v-model:buyDialogVisible=
"buyDialogVisible"
/>
...
...
src/modules/shop/components/CourseList.vue
浏览文件 @
39a9be5c
...
@@ -12,8 +12,8 @@ const page = reactive({ size: 10, currentPage: 1 })
...
@@ -12,8 +12,8 @@ const page = reactive({ size: 10, currentPage: 1 })
// 筛选之后的数据
// 筛选之后的数据
const
courseFilterList
=
$computed
(()
=>
{
const
courseFilterList
=
$computed
(()
=>
{
if
(
props
.
type
===
'PAA'
)
{
if
(
props
.
type
===
'PAA
P(Ⅰ)
'
)
{
return
props
.
courseList
return
props
.
courseList
.
filter
((
item
:
any
)
=>
item
.
category
===
props
.
type
&&
item
.
is_test
===
false
)
}
else
{
}
else
{
return
props
.
courseList
.
filter
((
item
:
any
)
=>
item
.
category
===
props
.
type
||
props
.
type
===
''
)
return
props
.
courseList
.
filter
((
item
:
any
)
=>
item
.
category
===
props
.
type
||
props
.
type
===
''
)
}
}
...
...
src/modules/shop/components/CourseListItem.vue
浏览文件 @
39a9be5c
...
@@ -22,14 +22,17 @@ const handleDatail = (item: any) => {
...
@@ -22,14 +22,17 @@ const handleDatail = (item: any) => {
const
handleBuy
=
(
courseItem
:
any
)
=>
{
const
handleBuy
=
(
courseItem
:
any
)
=>
{
if
(
user
.
isLogin
)
{
if
(
user
.
isLogin
)
{
if
(
courseItem
?.
isBuy
===
true
)
{
if
(
courseItem
?.
isBuy
===
true
)
{
buyDialogVisible
.
value
=
true
if
(
courseItem
?.
is_new
===
true
)
{
// window.open('https://fi-learning.ezijing.com')
buyDialogVisible
.
value
=
true
}
else
{
window
.
open
(
'https://fi-learning.ezijing.com'
)
}
}
else
{
}
else
{
// if (courseItem.type === '课程包'
) {
if
(
courseItem
?.
is_free
===
true
)
{
//
buyDialogVisible.value = true
buyDialogVisible
.
value
=
true
//
} else {
}
else
{
router
.
push
(
`/shop/pay/
${
courseItem
.
id
}
`
)
router
.
push
(
`/shop/pay/
${
courseItem
.
id
}
`
)
//
}
}
}
}
}
else
{
}
else
{
window
.
location
.
href
=
`
${
import
.
meta
.
env
.
VITE_LOGIN_URL
}
?rd=
${
encodeURIComponent
(
location
.
href
)}
`
window
.
location
.
href
=
`
${
import
.
meta
.
env
.
VITE_LOGIN_URL
}
?rd=
${
encodeURIComponent
(
location
.
href
)}
`
...
@@ -58,14 +61,17 @@ const handleBuy = (courseItem: any) => {
...
@@ -58,14 +61,17 @@ const handleBuy = (courseItem: any) => {
</div>
</div>
</div>
</div>
<div
class=
"right_bottom"
>
<div
class=
"right_bottom"
>
<div
class=
"bottom_price"
v-if=
"!mobile"
>
<div
class=
"bottom_price"
v-if=
"!mobile
&& courseItem?.price !== 0
"
>
<div
class=
"price_icon"
>
¥
</div>
<div
class=
"price_icon"
>
¥
</div>
<div
class=
"price_num"
>
{{
courseItem
?.
price
}}
</div>
<div
class=
"price_num"
>
{{
courseItem
?.
price
}}
</div>
</div>
</div>
<div
class=
"bottom_price"
v-if=
"!mobile && courseItem?.price === 0"
>
<div
class=
"price_icon"
>
免费
</div>
</div>
<div
class=
"bottom_btn"
>
<div
class=
"bottom_btn"
>
<div
class=
"btn_detail"
v-if=
"!mobile"
@
click=
"handleDatail(courseItem?.id)"
>
查看详情
</div>
<div
class=
"btn_detail"
v-if=
"!mobile"
@
click=
"handleDatail(courseItem?.id)"
>
查看详情
</div>
<div
class=
"btn_buy"
@
click=
"handleBuy(courseItem)"
>
<div
class=
"btn_buy"
@
click=
"handleBuy(courseItem)"
>
{{
courseItem
?.
isBuy
===
true
?
'联系我们
'
:
'立即购买'
}}
{{
courseItem
?.
isBuy
===
true
||
courseItem
?.
category
===
'free_course'
?
'立即学习
'
:
'立即购买'
}}
</div>
</div>
</div>
</div>
</div>
</div>
...
...
src/modules/shop/components/DetailBanner.vue
浏览文件 @
39a9be5c
...
@@ -33,14 +33,17 @@ const shareTit = computed(() => {
...
@@ -33,14 +33,17 @@ const shareTit = computed(() => {
const
handleBuyCourse
=
()
=>
{
const
handleBuyCourse
=
()
=>
{
if
(
user
.
isLogin
)
{
if
(
user
.
isLogin
)
{
if
(
props
.
payStatus
===
'4'
||
props
.
shopItem
?.
isBuy
===
true
)
{
if
(
props
.
payStatus
===
'4'
||
props
.
shopItem
?.
isBuy
===
true
)
{
// window.open('https://fi-learning.ezijing.com')
if
(
props
.
shopItem
?.
is_new
===
true
)
{
buyDialogVisible
.
value
=
true
buyDialogVisible
.
value
=
true
}
else
{
window
.
open
(
'https://fi-learning.ezijing.com'
)
}
}
else
{
}
else
{
// if (props.shopItem?.type === '课程包'
) {
if
(
props
.
shopItem
?.
is_free
===
true
)
{
//
buyDialogVisible.value = true
buyDialogVisible
.
value
=
true
//
} else {
}
else
{
router
.
push
(
`/shop/pay/
${
props
.
shopItem
?.
id
}
`)
router
.
push
(
`/shop/pay/
${
props
.
shopItem
?.
id
}
`)
//
}
}
}
}
} else {
} else {
window.location.href = `
$
{
import
.
meta
.
env
.
VITE_LOGIN_URL
}?
rd
=
$
{
encodeURIComponent
(
location
.
href
)}
`
window.location.href = `
$
{
import
.
meta
.
env
.
VITE_LOGIN_URL
}?
rd
=
$
{
encodeURIComponent
(
location
.
href
)}
`
...
@@ -121,18 +124,23 @@ const handleCopyLink = () => {
...
@@ -121,18 +124,23 @@ const handleCopyLink = () => {
</div>
</div>
<div
class=
"detail_buy"
>
<div
class=
"detail_buy"
>
<div
class=
"buy_left"
>
<div
class=
"buy_left"
>
<div
class=
"left_status"
v-if=
"payStatus === '4' || shopItem?.isBuy === true"
>
已购买
</div>
<div
class=
"left_status"
v-if=
"(payStatus === '4' || shopItem?.isBuy === true) && shopItem?.price !== 0"
>
<div
class=
"left_price"
v-else
>
已购买
</div>
<div
class=
"left_price"
v-if=
"(payStatus !== '4' || shopItem?.isBuy !== true) && shopItem?.price !== 0"
>
<div
class=
"price_icon"
>
¥
</div>
<div
class=
"price_icon"
>
¥
</div>
<div
class=
"price_num"
>
{{ shopItem?.price }}
</div>
<div
class=
"price_num"
>
{{ shopItem?.price }}
</div>
</div>
</div>
<div
class=
"left_price"
v-if=
"shopItem?.price === 0"
>
<div
class=
"price_icon"
>
免费
</div>
</div>
<div
class=
"left_tip"
>
<div
class=
"left_tip"
>
<div
class=
"tip1 tip"
>
支付安全
</div>
<div
class=
"tip1 tip"
v-if=
"shopItem?.price !== 0"
>
支付安全
</div>
<div
class=
"tip2 tip"
>
课程回放
</div>
<div
class=
"tip2 tip"
>
课程回放
</div>
</div>
</div>
</div>
</div>
<div
class=
"buy_right"
@
click=
"handleBuyCourse"
v-if=
"!mobile"
>
<div
class=
"buy_right"
@
click=
"handleBuyCourse"
v-if=
"!mobile"
>
{{ payStatus === '4' || shopItem?.isBuy === true
? '联系我们
' : '立即购买' }}
{{ payStatus === '4' || shopItem?.isBuy === true
|| shopItem?.is_free === true ? '立即学习
' : '立即购买' }}
</div>
</div>
</div>
</div>
<div
class=
"detail_info"
v-if=
"mobile"
>
<div
class=
"detail_info"
v-if=
"mobile"
>
...
@@ -150,7 +158,6 @@ const handleCopyLink = () => {
...
@@ -150,7 +158,6 @@ const handleCopyLink = () => {
<div
class=
"info_time"
v-if=
"shopItem?.type === '课程包'"
>
<div
class=
"info_time"
v-if=
"shopItem?.type === '课程包'"
>
<div
class=
"time_left"
>
<div
class=
"time_left"
>
<!-- <div class="left_tit">课程节数</div> -->
<div
class=
"left_con"
>
<div
class=
"left_con"
>
<span
class=
"con_num"
>
{{ shopItem?.course_compulsory }}
</span>
<span
class=
"con_num"
>
{{ shopItem?.course_compulsory }}
</span>
<span
class=
"con_txt"
>
门必修
</span>
<span
class=
"con_txt"
>
门必修
</span>
...
@@ -158,7 +165,6 @@ const handleCopyLink = () => {
...
@@ -158,7 +165,6 @@ const handleCopyLink = () => {
</div>
</div>
<div
class=
"time_line"
></div>
<div
class=
"time_line"
></div>
<div
class=
"time_left"
>
<div
class=
"time_left"
>
<!-- <div class="left_tit">总课时</div> -->
<div
class=
"left_con"
>
<div
class=
"left_con"
>
<span
class=
"con_num"
>
{{ shopItem?.course_elective }}
</span>
<span
class=
"con_num"
>
{{ shopItem?.course_elective }}
</span>
<span
class=
"con_txt"
>
门选修
</span>
<span
class=
"con_txt"
>
门选修
</span>
...
...
src/modules/shop/views/Index.vue
浏览文件 @
39a9be5c
...
@@ -6,7 +6,7 @@ import { useDevice } from '@/composables/useDevice'
...
@@ -6,7 +6,7 @@ import { useDevice } from '@/composables/useDevice'
const
route
=
useRoute
()
const
route
=
useRoute
()
const
{
mobile
}
=
useDevice
()
const
{
mobile
}
=
useDevice
()
const
shopStore
=
useShopStore
()
const
shopStore
=
useShopStore
()
const
activeIndex
=
ref
(
'1'
)
let
activeIndex
=
$
ref
(
'1'
)
const
type
=
ref
(
''
)
const
type
=
ref
(
''
)
const
handleClickTab
=
(
val
:
any
)
=>
{
const
handleClickTab
=
(
val
:
any
)
=>
{
type
.
value
=
val
type
.
value
=
val
...
@@ -21,9 +21,10 @@ let menuValue = $ref('')
...
@@ -21,9 +21,10 @@ let menuValue = $ref('')
onMounted
(()
=>
{
onMounted
(()
=>
{
clearActive
()
clearActive
()
let
defaultMenu
=
''
let
defaultMenu
=
''
const
activeIndex
=
route
.
query
.
activeIndex
const
activeH5Index
=
route
.
query
.
activeIndex
if
(
activeIndex
)
{
if
(
activeH5Index
)
{
defaultMenu
=
activeIndex
===
'2'
?
'free_course'
:
activeIndex
===
'3'
?
'system_course'
:
''
activeIndex
=
activeH5Index
?.
toString
()
defaultMenu
=
activeH5Index
===
'2'
?
'free_course'
:
activeH5Index
===
'3'
?
'system_course'
:
''
}
}
shopStore
.
filters
.
map
((
item
:
any
)
=>
item
.
value
===
defaultMenu
&&
(
item
.
isActive
=
true
))
shopStore
.
filters
.
map
((
item
:
any
)
=>
item
.
value
===
defaultMenu
&&
(
item
.
isActive
=
true
))
menuValue
=
defaultMenu
menuValue
=
defaultMenu
...
@@ -31,6 +32,10 @@ onMounted(() => {
...
@@ -31,6 +32,10 @@ onMounted(() => {
let
childMenuShow
=
$ref
(
false
)
let
childMenuShow
=
$ref
(
false
)
const
menuTab
=
function
(
item
:
any
)
{
const
menuTab
=
function
(
item
:
any
)
{
if
(
item
.
value
===
'PRP'
)
{
window
.
open
(
'https://prp.ezijing.com'
)
window
.
location
.
reload
()
}
if
(
!
item
.
children
)
{
if
(
!
item
.
children
)
{
clearActive
()
clearActive
()
item
.
isActive
=
true
item
.
isActive
=
true
...
@@ -93,11 +98,6 @@ const clearActive = function () {
...
@@ -93,11 +98,6 @@ const clearActive = function () {
</div>
</div>
<div
class=
"main_shop"
v-else
>
<div
class=
"main_shop"
v-else
>
<img
src=
"https://webapp-pub.ezijing.com/project_online/fi/shop_banner.jpg"
class=
"shop_banner"
/>
<img
src=
"https://webapp-pub.ezijing.com/project_online/fi/shop_banner.jpg"
class=
"shop_banner"
/>
<!-- <van-tabs>
<van-tab :title="item.label" v-for="(item, index) in shopStore.filters" :key="index" lazy>
<CourseList :type="item.value" :courseList="shopStore.shopList" :key="index" />
</van-tab>
</van-tabs> -->
<div
class=
"mobile-tab-box"
>
<div
class=
"mobile-tab-box"
>
<div
<div
:class=
"`item ${shopStore.filters[index].isActive && 'active'}`"
:class=
"`item ${shopStore.filters[index].isActive && 'active'}`"
...
@@ -269,6 +269,12 @@ const clearActive = function () {
...
@@ -269,6 +269,12 @@ const clearActive = function () {
color
:
#fff
!
important
;
color
:
#fff
!
important
;
border-bottom
:
none
;
border-bottom
:
none
;
}
}
:deep
(
.el-menu--horizontal
>
.el-menu-item
:hover
)
{
background-color
:
#e8c484
;
opacity
:
0
.6
;
color
:
#fff
!
important
;
border-bottom
:
none
;
}
:deep
(
.el-sub-menu
)
{
:deep
(
.el-sub-menu
)
{
font-size
:
18px
;
font-size
:
18px
;
font-weight
:
400
;
font-weight
:
400
;
...
@@ -287,7 +293,19 @@ const clearActive = function () {
...
@@ -287,7 +293,19 @@ const clearActive = function () {
}
}
:deep
(
.el-menu--horizontal
>
.el-sub-menu
.el-sub-menu__title
:hover
)
{
:deep
(
.el-menu--horizontal
>
.el-sub-menu
.el-sub-menu__title
:hover
)
{
color
:
#535353
!
important
;
color
:
#535353
!
important
;
background-color
:
#e8c484
;
color
:
#fff
!
important
;
border-radius
:
6px
;
opacity
:
0
.6
;
}
}
// 二级菜单hover状态下字体颜色
.el-menu--horizontal
.el-menu-item
:not
(
.is-disabled
)
:focus
,
.el-menu--horizontal
.el-menu-item
:not
(
.is-disabled
)
:hover
{
background-color
:
#e8c484
;
color
:
#fff
!
important
;
}
.mobile-tab-box
{
.mobile-tab-box
{
display
:
flex
;
display
:
flex
;
justify-content
:
space-evenly
;
justify-content
:
space-evenly
;
...
@@ -346,3 +364,30 @@ const clearActive = function () {
...
@@ -346,3 +364,30 @@ const clearActive = function () {
}
}
}
}
</
style
>
</
style
>
<
style
lang=
"scss"
>
// 有二级菜单的标题时鼠标悬停的颜色
.el-sub-menu__title.el-tooltip__trigger.el-tooltip__trigger
:hover
{
background-color
:
#e8c484
;
color
:
#fff
!
important
;
}
.el-popper.is-light
{
border
:
none
;
border-radius
:
20px
;
&
:
:
before
{
content
:
''
;
position
:
absolute
;
top
:
-8px
;
left
:
50%
;
transform
:
translateX
(
-50%
);
width
:
0
;
height
:
0
;
border-left
:
10px
solid
transparent
;
border-right
:
10px
solid
transparent
;
border-bottom
:
10px
solid
#fff
;
}
}
.el-menu--horizontal
.el-menu
.el-menu-item.is-active
{
color
:
#eda023
!
important
;
}
</
style
>
src/modules/shop/views/View.vue
浏览文件 @
39a9be5c
...
@@ -20,12 +20,14 @@ courseItem.value = shopStore.shopList.filter(
...
@@ -20,12 +20,14 @@ courseItem.value = shopStore.shopList.filter(
(
item
:
any
)
=>
item
.
type
===
'课程包'
&&
item
.
child_ids
.
includes
(
shopStore
.
shopItem
?.
id
)
(
item
:
any
)
=>
item
.
type
===
'课程包'
&&
item
.
child_ids
.
includes
(
shopStore
.
shopItem
?.
id
)
)
)
const
recommendCourse
=
computed
(()
=>
{
const
recommendCourse
=
computed
(()
=>
{
if
(
shopStore
.
shopItem
?.
type
===
'课程包'
)
{
if
(
shopStore
.
shopItem
?.
type
===
'课程包'
&&
shopStore
.
shopItem
?.
category
!==
'free_course'
)
{
// 课程包推荐课程
// 课程包推荐课程
return
shopStore
.
shopRelatedList
return
shopStore
.
shopRelatedList
}
else
{
}
else
if
(
shopStore
.
shopItem
?.
type
===
'课程'
&&
shopStore
.
shopItem
?.
category
!==
'free_course'
)
{
// 单一课程推荐的课程
// 单一课程推荐的课程
return
shopStore
.
shopRelatedListOther
return
shopStore
.
shopRelatedListOther
}
else
if
(
shopStore
.
shopItem
?.
category
===
'free_course'
)
{
return
shopStore
.
shopList
.
filter
(
item
=>
item
.
category
===
'system_course'
)
}
}
})
})
</
script
>
</
script
>
...
@@ -35,13 +37,26 @@ const recommendCourse = computed(() => {
...
@@ -35,13 +37,26 @@ const recommendCourse = computed(() => {
<DetailBanner
:shopItem=
"shopStore.shopItem"
:payStatus=
"payStatus"
/>
<DetailBanner
:shopItem=
"shopStore.shopItem"
:payStatus=
"payStatus"
/>
<div
class=
"detail_con"
>
<div
class=
"detail_con"
>
<div
class=
"con_left"
>
<div
class=
"con_left"
>
<div>
<IncludeCourseCard
<IncludeCourseCard
v-if=
"shopStore.shopItem?.type !== '课程包'"
:courseItem=
"courseItem"
/>
v-if=
"
<div
class=
"left_course"
v-if=
"shopStore.shopItem?.type === '课程包'"
>
shopStore.shopItem?.type === '课程' &&
<CourseIntrouduce
:shopItem=
"shopStore.shopItem"
/>
shopStore.shopItem?.category !== 'system_course' &&
<CourseFor
v-if=
"!mobile"
:shopItem=
"shopStore.shopItem"
/>
shopStore.shopItem?.category !== 'free_course'
<CourseCatalogPC
:shopItem=
"shopStore.shopItem"
/>
"
</div>
:courseItem=
"courseItem"
/>
<div
class=
"left_course"
v-if=
"
shopStore.shopItem?.type === '课程包' ||
shopStore.shopItem?.category === 'system_course' ||
shopStore.shopItem?.category === 'free_course'
"
>
<CourseIntrouduce
:shopItem=
"shopStore.shopItem"
/>
<CourseFor
:shopItem=
"shopStore.shopItem"
/>
<CourseCatalogPC
v-if=
"shopStore.shopItem?.type === '课程包'"
:shopItem=
"shopStore.shopItem"
/>
</div>
</div>
</div>
</div>
<div
class=
"con_right"
>
<div
class=
"con_right"
>
...
@@ -53,11 +68,25 @@ const recommendCourse = computed(() => {
...
@@ -53,11 +68,25 @@ const recommendCourse = computed(() => {
</div>
</div>
<div
class=
"course_detail"
v-else
>
<div
class=
"course_detail"
v-else
>
<DetailBanner
:shopItem=
"shopStore.shopItem"
:payStatus=
"payStatus"
/>
<DetailBanner
:shopItem=
"shopStore.shopItem"
:payStatus=
"payStatus"
/>
<IncludeCourseCard
v-if=
"shopStore.shopItem?.type !== '课程包'"
:courseItem=
"courseItem"
/>
<IncludeCourseCard
<div
class=
"detail_con"
v-if=
"shopStore.shopItem?.type === '课程包'"
>
v-if=
"
<CourseIntrouduce
:shopItem=
"shopStore.shopItem"
/>
shopStore.shopItem?.type === '课程' &&
shopStore.shopItem?.category !== 'system_course' &&
shopStore.shopItem?.category !== 'free_course'
"
:courseItem=
"courseItem"
/>
<div
class=
"detail_con"
>
<CourseIntrouduce
:shopItem=
"shopStore.shopItem"
v-if=
"
shopStore.shopItem?.type === '课程包' ||
shopStore.shopItem?.category !== 'system_course' ||
shopStore.shopItem?.category !== 'free_course'
"
/>
<!--
<TeacherCard
:lecturerList=
"shopStore.shopItem?.lecturer_list"
/>
-->
<!--
<TeacherCard
:lecturerList=
"shopStore.shopItem?.lecturer_list"
/>
-->
<CourseCatalogH5
:shopItem=
"shopStore.shopItem"
/>
<CourseCatalogH5
:shopItem=
"shopStore.shopItem"
v-if=
"shopStore.shopItem?.type === '课程包'"
/>
</div>
</div>
<RecommendCourse
:shopRelatedList=
"recommendCourse"
/>
<RecommendCourse
:shopRelatedList=
"recommendCourse"
/>
<CourseFooter
:payStatus=
"payStatus"
:shopItem=
"shopStore.shopItem"
/>
<CourseFooter
:payStatus=
"payStatus"
:shopItem=
"shopStore.shopItem"
/>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论