提交 39a9be5c authored 作者: matian's avatar matian

Auto stash before merge of "master" and "origin/master"

上级 23c1cd51
......@@ -15,7 +15,7 @@ export default [
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_compulsory: 6,
course_elective: 2,
......@@ -26,7 +26,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '课程费用4300元/人,考试费/认证费/教材费合计680元/人',
sku_id: '7014129405609902080',
spu_id: '7014129404863315968'
spu_id: '7014129404863315968',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAP(Ⅰ)',
......@@ -85,7 +88,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018148152972673024',
spu_id: '7018148152758763520'
spu_id: '7018148152758763520',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAP(Ⅰ)',
......@@ -130,7 +136,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018148297881681920',
spu_id: '7018148297659383808'
spu_id: '7018148297659383808',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAP(Ⅰ)',
......@@ -175,7 +184,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018148355993763840',
spu_id: '7018148355750494208'
spu_id: '7018148355750494208',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAP(Ⅰ)',
......@@ -220,7 +232,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018148401996890112',
spu_id: '7018148401443241984'
spu_id: '7018148401443241984',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAP(Ⅰ)',
......@@ -265,7 +280,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018148446439735296',
spu_id: '7018148446183882752'
spu_id: '7018148446183882752',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAP(Ⅰ)',
......@@ -310,7 +328,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018148498998558720',
spu_id: '7018148498784649216'
spu_id: '7018148498784649216',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAP(Ⅰ)',
......@@ -355,7 +376,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018148559375564800',
spu_id: '7018148559153266688'
spu_id: '7018148559153266688',
is_free: false,
is_new: false,
is_test: false
},
{
category: 'PAAP(Ⅰ)',
......@@ -400,6 +424,103 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
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
}
]
......@@ -26,7 +26,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '课程费用7000元/人,考试费/认证费/教材费合计680元/人',
sku_id: '7014130347952570368',
spu_id: '7014130347390533632'
spu_id: '7014130347390533632',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAP(Ⅱ)',
......@@ -71,7 +74,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018152688009347072',
spu_id: '7018152687816409088'
spu_id: '7018152687816409088',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAP(Ⅱ)',
......@@ -116,7 +122,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018152880926359552',
spu_id: '7018152880771170304'
spu_id: '7018152880771170304',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAP(Ⅱ)',
......@@ -161,7 +170,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018152942817509376',
spu_id: '7018152942582628352'
spu_id: '7018152942582628352',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAP(Ⅱ)',
......@@ -206,7 +218,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018153065505095680',
spu_id: '7018153065345712128'
spu_id: '7018153065345712128',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAP(Ⅱ)',
......@@ -251,7 +266,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018153097708961792',
spu_id: '7018153097490857984'
spu_id: '7018153097490857984',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAP(Ⅱ)',
......@@ -296,7 +314,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018153138490179584',
spu_id: '7018153138276270080'
spu_id: '7018153138276270080',
is_free: false,
is_new: false,
is_test: false
},
{
category: 'PAAP(Ⅱ)',
......@@ -341,7 +362,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018153186531737600',
spu_id: '7018153185999060992'
spu_id: '7018153185999060992',
is_free: false,
is_new: false,
is_test: false
},
{
category: 'PAAP(Ⅱ)',
......@@ -386,6 +410,9 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018153236649476096',
spu_id: '7018153236393623552'
spu_id: '7018153236393623552',
is_free: false,
is_new: false,
is_test: false
}
]
......@@ -26,7 +26,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '课程费用12000元/人,考试费/认证费/教材费合计980元/人',
sku_id: '7014130543629434880',
spu_id: '7014130542861877248'
spu_id: '7014130542861877248',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAM',
......@@ -71,7 +74,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018154999255400448',
spu_id: '7018154999087628288'
spu_id: '7018154999087628288',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAM',
......@@ -116,7 +122,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018155082088710144',
spu_id: '7018155081837051904'
spu_id: '7018155081837051904',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAM',
......@@ -161,7 +170,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018155124648312832',
spu_id: '7018155124409237504'
spu_id: '7018155124409237504',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAM',
......@@ -206,7 +218,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018155185348280320',
spu_id: '7018155185100816384'
spu_id: '7018155185100816384',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAM',
......@@ -251,7 +266,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018155221046001664',
spu_id: '7018155220798537728'
spu_id: '7018155220798537728',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAM',
......@@ -296,7 +314,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018155258798931968',
spu_id: '7018155258513719296'
spu_id: '7018155258513719296',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'PAAM',
......@@ -341,7 +362,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018155294282743808',
spu_id: '7018155294085611520'
spu_id: '7018155294085611520',
is_free: false,
is_new: false,
is_test: false
},
{
category: 'PAAM',
......@@ -386,7 +410,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018155330718662656',
spu_id: '7018155330425061376'
spu_id: '7018155330425061376',
is_free: false,
is_new: false,
is_test: false
},
{
category: 'PAAM',
......@@ -431,7 +458,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018155379125125120',
spu_id: '7018155378894438400'
spu_id: '7018155378894438400',
is_free: false,
is_new: false,
is_test: false
},
{
category: 'PAAM',
......@@ -476,7 +506,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018155430316605440',
spu_id: '7018155430069141504'
spu_id: '7018155430069141504',
is_free: false,
is_new: false,
is_test: false
},
{
category: 'PAAM',
......@@ -521,6 +554,9 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018155468174393344',
spu_id: '7018155467947900928'
spu_id: '7018155467947900928',
is_free: false,
is_new: false,
is_test: false
}
]
......@@ -25,7 +25,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '课程费用12000元/人,考试费/认证费/教材费合计980元/人',
sku_id: '7014130543629434880',
spu_id: '7014130542861877248'
spu_id: '7014130542861877248',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'system_course',
......@@ -70,7 +73,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018154999255400448',
spu_id: '7018154999087628288'
spu_id: '7018154999087628288',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'system_course',
......@@ -115,7 +121,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018155082088710144',
spu_id: '7018155081837051904'
spu_id: '7018155081837051904',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'system_course',
......@@ -160,7 +169,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018155124648312832',
spu_id: '7018155124409237504'
spu_id: '7018155124409237504',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'system_course',
......@@ -205,7 +217,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018155185348280320',
spu_id: '7018155185100816384'
spu_id: '7018155185100816384',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'system_course',
......@@ -250,7 +265,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018155221046001664',
spu_id: '7018155220798537728'
spu_id: '7018155220798537728',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'system_course',
......@@ -295,7 +313,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018155258798931968',
spu_id: '7018155258513719296'
spu_id: '7018155258513719296',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'system_course',
......@@ -340,7 +361,10 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018155294282743808',
spu_id: '7018155294085611520'
spu_id: '7018155294085611520',
is_free: false,
is_new: true,
is_test: false
},
{
category: 'system_course',
......@@ -385,6 +409,9 @@ export default [
class_id: '7017001355222974464',
total_price_desc: '',
sku_id: '7018155330718662656',
spu_id: '7018155330425061376'
spu_id: '7018155330425061376',
is_free: false,
is_new: true,
is_test: false
}
]
......@@ -24,7 +24,8 @@ export default [
course_id: '7016965100288344064',
class_id: '7017001355222974464',
total_price_desc: '课程费用12000元/人,考试费/认证费/教材费合计980元/人',
sku_id: '7014130543629434880',
spu_id: '7014130542861877248'
is_free: true,
is_new: true,
is_test: false
}
]
......@@ -123,6 +123,30 @@ const list: List[] = [
btnIconActive: 'https://webapp-pub.ezijing.com/project_online/fi/tab3_hover.png',
h1: '针对行业内所有相关人士,提供行业从业人员终身学习的底层逻辑和专业知识架构,建立系统思维,养成学习与从业的习惯,建立自我成长和职业发展的心智模式。',
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: '',
img: 'https://webapp-pub.ezijing.com/project_online/fi/tab3_1.png',
......@@ -243,13 +267,6 @@ const handleDetail = (item: any) => {
<div class="value">{{ it.desc }}</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 class="more" @click="router.push('/shop')">查看更多课程</div>
</div>
......@@ -354,19 +371,15 @@ const handleDetail = (item: any) => {
.content_main {
margin-top: 29px;
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-columns: repeat(4, 1fr);
grid-column-gap: 30px;
.main_list {
background: rgba(255, 255, 255, 0.39);
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16);
padding: 21px 16px 16px 16px;
cursor: pointer;
.list_img2 {
width: 555px;
height: 197px;
}
.list_tit {
font-size: 18px;
font-weight: 500;
......
......@@ -5,7 +5,7 @@ import { getOrderList } from '../api'
import { useDevice } from '@/composables/useDevice'
import { useShopStore } from '@/stores/shop'
import { useUserStore } from '@/stores/user'
import ContactDialog from '../../shop/components/ContactDialog.vue'
interface Props {
id: string
}
......@@ -17,6 +17,8 @@ const { mobile } = useDevice()
const router = useRouter()
const route = useRoute()
const buyDialogVisible = ref(false)
const orderId = useStorage('order_detail_id', route.query.order_detail_id)
const order = ref<Order>()
async function getOrder() {
......@@ -44,7 +46,12 @@ const start_time = getDateTime(0)
const end_time = getDateTime(90)
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 = () => {
router.replace({ path: `/shop/detail/${shopItem?.id}` })
......@@ -87,7 +94,8 @@ const handlePrev = () => {
<div class="course_con">
<img
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="info_title">{{ shopItem?.title }}</div>
<div class="info_date">有效期:{{ start_time }}{{ end_time }}</div>
......@@ -106,6 +114,7 @@ const handlePrev = () => {
<div class="study_con" @click="handleStudy">开始学习</div>
</div>
</div>
<ContactDialog v-model:buyDialogVisible="buyDialogVisible" />
</div>
</template>
......
......@@ -16,17 +16,19 @@ const props = defineProps({
const buyDialogVisible = ref(false)
const handleBuyCourse = () => {
console.log(props.payStatus, props.shopItem?.isBuy)
if (user.isLogin) {
if (props.payStatus === '4' || props.shopItem?.isBuy === true) {
// window.open('https://fi-learning.ezijing.com')
buyDialogVisible.value = true
if (props.shopItem?.category === 'system_course') {
buyDialogVisible.value = true
} else {
window.open('https://fi-learning.ezijing.com')
}
} else {
// if (props.shopItem?.type === '课程包') {
// buyDialogVisible.value = true
// } else {
router.push(`/shop/pay/${props.shopItem?.id}`)
// }
if (props.shopItem?.category === 'free_course') {
buyDialogVisible.value = true
} else {
router.push(`/shop/pay/${props.shopItem?.id}`)
}
}
} else {
window.location.href = `${import.meta.env.VITE_LOGIN_URL}?rd=${encodeURIComponent(location.href)}`
......@@ -47,7 +49,7 @@ const handleBuyCourse = () => {
</div>
</template>
<div class="footer_btn" @click="handleBuyCourse">
{{ payStatus === '4' || shopItem?.isBuy === true ? '联系我们' : '立即购买' }}
{{ payStatus === '4' || shopItem?.isBuy === true || shopItem?.is_free === true ? '立即学习' : '立即购买' }}
</div>
</div>
<div class="detail_footer" v-else>
......@@ -56,27 +58,18 @@ const handleBuyCourse = () => {
<div class="footer_left" v-if="shopItem?.type === '课程包'">
<div class="left_tit">
总学费 <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 class="left_desc">{{ shopItem?.total_price_desc }}</div>
</div>
<div class="footer_left" v-else>
<div class="left_tit">课程价格</div>
<div class="footer_left" v-if="shopItem?.type === '课程'">
<div class="left_tit">{{ shopItem?.is_free === true ? '免费' : '课程价格' }}</div>
</div>
</template>
<div class="footer_btn" @click="handleBuyCourse" v-if="payStatus === '4' || shopItem?.isBuy === true">
<div class="btn_buy">联系我们</div>
</div>
<div class="footer_btn" @click="handleBuyCourse" v-else>
<!-- <div class="footer_price">
<div class="price_icon">¥</div>
<div class="price_price">{{ shopItem?.price }}</div>
</div> -->
<div class="btn_buy">立即购买</div>
<div class="footer_btn" @click="handleBuyCourse">
<div class="btn_buy">
{{ payStatus === '4' || shopItem?.isBuy === true || shopItem?.is_free === true ? '立即学习' : '立即购买' }}
</div>
</div>
</div>
<ContactDialog v-model:buyDialogVisible="buyDialogVisible" />
......
......@@ -12,8 +12,8 @@ const page = reactive({ size: 10, currentPage: 1 })
// 筛选之后的数据
const courseFilterList = $computed(() => {
if (props.type === 'PAA') {
return props.courseList
if (props.type === 'PAAP(Ⅰ)') {
return props.courseList.filter((item: any) => item.category === props.type && item.is_test === false)
} else {
return props.courseList.filter((item: any) => item.category === props.type || props.type === '')
}
......
......@@ -22,14 +22,17 @@ const handleDatail = (item: any) => {
const handleBuy = (courseItem: any) => {
if (user.isLogin) {
if (courseItem?.isBuy === true) {
buyDialogVisible.value = true
// window.open('https://fi-learning.ezijing.com')
if (courseItem?.is_new === true) {
buyDialogVisible.value = true
} else {
window.open('https://fi-learning.ezijing.com')
}
} else {
// if (courseItem.type === '课程包') {
// buyDialogVisible.value = true
// } else {
router.push(`/shop/pay/${courseItem.id}`)
// }
if (courseItem?.is_free === true) {
buyDialogVisible.value = true
} else {
router.push(`/shop/pay/${courseItem.id}`)
}
}
} else {
window.location.href = `${import.meta.env.VITE_LOGIN_URL}?rd=${encodeURIComponent(location.href)}`
......@@ -58,14 +61,17 @@ const handleBuy = (courseItem: any) => {
</div>
</div>
<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_num">{{ courseItem?.price }}</div>
</div>
<div class="bottom_price" v-if="!mobile && courseItem?.price === 0">
<div class="price_icon">免费</div>
</div>
<div class="bottom_btn">
<div class="btn_detail" v-if="!mobile" @click="handleDatail(courseItem?.id)">查看详情</div>
<div class="btn_buy" @click="handleBuy(courseItem)">
{{ courseItem?.isBuy === true ? '联系我们' : '立即购买' }}
{{ courseItem?.isBuy === true || courseItem?.category === 'free_course' ? '立即学习' : '立即购买' }}
</div>
</div>
</div>
......
......@@ -33,14 +33,17 @@ const shareTit = computed(() => {
const handleBuyCourse = () => {
if (user.isLogin) {
if (props.payStatus === '4' || props.shopItem?.isBuy === true) {
// window.open('https://fi-learning.ezijing.com')
buyDialogVisible.value = true
if (props.shopItem?.is_new === true) {
buyDialogVisible.value = true
} else {
window.open('https://fi-learning.ezijing.com')
}
} else {
// if (props.shopItem?.type === '课程包') {
// buyDialogVisible.value = true
// } else {
router.push(`/shop/pay/${props.shopItem?.id}`)
// }
if (props.shopItem?.is_free === true) {
buyDialogVisible.value = true
} else {
router.push(`/shop/pay/${props.shopItem?.id}`)
}
}
} else {
window.location.href = `${import.meta.env.VITE_LOGIN_URL}?rd=${encodeURIComponent(location.href)}`
......@@ -121,18 +124,23 @@ const handleCopyLink = () => {
</div>
<div class="detail_buy">
<div class="buy_left">
<div class="left_status" v-if="payStatus === '4' || shopItem?.isBuy === true">已购买</div>
<div class="left_price" v-else>
<div class="left_status" v-if="(payStatus === '4' || shopItem?.isBuy === true) && shopItem?.price !== 0">
已购买
</div>
<div class="left_price" v-if="(payStatus !== '4' || shopItem?.isBuy !== true) && shopItem?.price !== 0">
<div class="price_icon">¥</div>
<div class="price_num">{{ shopItem?.price }}</div>
</div>
<div class="left_price" v-if="shopItem?.price === 0">
<div class="price_icon">免费</div>
</div>
<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>
</div>
<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 class="detail_info" v-if="mobile">
......@@ -150,7 +158,6 @@ const handleCopyLink = () => {
<div class="info_time" v-if="shopItem?.type === '课程包'">
<div class="time_left">
<!-- <div class="left_tit">课程节数</div> -->
<div class="left_con">
<span class="con_num">{{ shopItem?.course_compulsory }}</span>
<span class="con_txt">门必修</span>
......@@ -158,7 +165,6 @@ const handleCopyLink = () => {
</div>
<div class="time_line"></div>
<div class="time_left">
<!-- <div class="left_tit">总课时</div> -->
<div class="left_con">
<span class="con_num">{{ shopItem?.course_elective }}</span>
<span class="con_txt">门选修</span>
......
......@@ -6,7 +6,7 @@ import { useDevice } from '@/composables/useDevice'
const route = useRoute()
const { mobile } = useDevice()
const shopStore = useShopStore()
const activeIndex = ref('1')
let activeIndex = $ref('1')
const type = ref('')
const handleClickTab = (val: any) => {
type.value = val
......@@ -21,9 +21,10 @@ let menuValue = $ref('')
onMounted(() => {
clearActive()
let defaultMenu = ''
const activeIndex = route.query.activeIndex
if (activeIndex) {
defaultMenu = activeIndex === '2' ? 'free_course' : activeIndex === '3' ? 'system_course' : ''
const activeH5Index = route.query.activeIndex
if (activeH5Index) {
activeIndex = activeH5Index?.toString()
defaultMenu = activeH5Index === '2' ? 'free_course' : activeH5Index === '3' ? 'system_course' : ''
}
shopStore.filters.map((item: any) => item.value === defaultMenu && (item.isActive = true))
menuValue = defaultMenu
......@@ -31,6 +32,10 @@ onMounted(() => {
let childMenuShow = $ref(false)
const menuTab = function (item: any) {
if (item.value === 'PRP') {
window.open('https://prp.ezijing.com')
window.location.reload()
}
if (!item.children) {
clearActive()
item.isActive = true
......@@ -93,11 +98,6 @@ const clearActive = function () {
</div>
<div class="main_shop" v-else>
<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="`item ${shopStore.filters[index].isActive && 'active'}`"
......@@ -269,6 +269,12 @@ const clearActive = function () {
color: #fff !important;
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) {
font-size: 18px;
font-weight: 400;
......@@ -287,7 +293,19 @@ const clearActive = function () {
}
:deep(.el-menu--horizontal > .el-sub-menu .el-sub-menu__title:hover) {
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 {
display: flex;
justify-content: space-evenly;
......@@ -346,3 +364,30 @@ const clearActive = function () {
}
}
</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>
......@@ -20,12 +20,14 @@ courseItem.value = shopStore.shopList.filter(
(item: any) => item.type === '课程包' && item.child_ids.includes(shopStore.shopItem?.id)
)
const recommendCourse = computed(() => {
if (shopStore.shopItem?.type === '课程包') {
if (shopStore.shopItem?.type === '课程包' && shopStore.shopItem?.category !== 'free_course') {
// 课程包推荐课程
return shopStore.shopRelatedList
} else {
} else if (shopStore.shopItem?.type === '课程' && shopStore.shopItem?.category !== 'free_course') {
// 单一课程推荐的课程
return shopStore.shopRelatedListOther
} else if (shopStore.shopItem?.category === 'free_course') {
return shopStore.shopList.filter(item => item.category === 'system_course')
}
})
</script>
......@@ -35,13 +37,26 @@ const recommendCourse = computed(() => {
<DetailBanner :shopItem="shopStore.shopItem" :payStatus="payStatus" />
<div class="detail_con">
<div class="con_left">
<div>
<IncludeCourseCard v-if="shopStore.shopItem?.type !== '课程包'" :courseItem="courseItem" />
<div class="left_course" v-if="shopStore.shopItem?.type === '课程包'">
<CourseIntrouduce :shopItem="shopStore.shopItem" />
<CourseFor v-if="!mobile" :shopItem="shopStore.shopItem" />
<CourseCatalogPC :shopItem="shopStore.shopItem" />
</div>
<IncludeCourseCard
v-if="
shopStore.shopItem?.type === '课程' &&
shopStore.shopItem?.category !== 'system_course' &&
shopStore.shopItem?.category !== 'free_course'
"
: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 class="con_right">
......@@ -53,11 +68,25 @@ const recommendCourse = computed(() => {
</div>
<div class="course_detail" v-else>
<DetailBanner :shopItem="shopStore.shopItem" :payStatus="payStatus" />
<IncludeCourseCard v-if="shopStore.shopItem?.type !== '课程包'" :courseItem="courseItem" />
<div class="detail_con" v-if="shopStore.shopItem?.type === '课程包'">
<CourseIntrouduce :shopItem="shopStore.shopItem" />
<IncludeCourseCard
v-if="
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" /> -->
<CourseCatalogH5 :shopItem="shopStore.shopItem" />
<CourseCatalogH5 :shopItem="shopStore.shopItem" v-if="shopStore.shopItem?.type === '课程包'" />
</div>
<RecommendCourse :shopRelatedList="recommendCourse" />
<CourseFooter :payStatus="payStatus" :shopItem="shopStore.shopItem" />
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论