提交 9121a094 authored 作者: matian's avatar matian

updates

上级 bc5a66c3
......@@ -54,7 +54,7 @@ export function checkCode(params: any) {
* 提交留咨信息
*/
export function postNes(data: any) {
return httpRequest.post('/api/enrollment/v1.0/applications', data, {
return httpRequest.post('https://project-api.ezijing.com/api/enrollment/v1.0/applications', data, {
headers: { 'Content-Type': 'multipart/form-data' }
})
}
......
<script setup lang="ts">
const props = defineProps({
item: {
type: Object,
require: true
}
})
let isShowType = ref(1)
// 判断用什么标签展示内容
if (props.item?.url?.indexOf('.pdf') !== -1 || props.item?.url?.indexOf('.txt') !== -1) {
isShowType.value = 2
} else if (props.item?.url?.indexOf('.mp4') !== -1) {
isShowType.value = 3
} else if (props.item?.url?.indexOf('.mp3') !== -1) {
isShowType.value = 4
} else if (
props.item?.url?.indexOf('.png') !== -1 ||
props.item?.url?.indexOf('.jpg') !== -1 ||
props.item?.url?.indexOf('.jpeg') !== -1
) {
isShowType.value = 5
} else if (props.item?.url?.indexOf('.rar') !== -1 || props.item?.url?.indexOf('.zip') !== -1) {
isShowType.value = 6
}
</script>
<template>
<el-card>
<div class="max-w-h">
<iframe
v-if="isShowType === 1"
:src="`https://view.officeapps.live.com/op/view.aspx?src=${props.item?.url}`"
></iframe>
<embed :src="props.item?.url" v-else-if="isShowType === 2" />
<video v-else-if="isShowType === 3" controls id="video">
<source :src="props.item?.url" />
</video>
<audio v-else-if="isShowType === 4" :src="props.item?.url" controls></audio>
<img v-else-if="isShowType === 5" :src="props.item?.url" />
<div v-else-if="isShowType === 6" class="zip_con">
<a :href="props.item?.url" style="color: #aa1941">
<img
v-if="props.item?.url?.indexOf('.rar') !== -1"
src="https://webapp-pub.ezijing.com/center_resource/rar.png"
class="img_zip"
/>
<img
v-else-if="props.item?.url?.indexOf('.zip') !== -1"
src="https://webapp-pub.ezijing.com/center_resource/zip.png"
class="img_zip"
/>
{{ props.item?.name }}
</a>
<div class="zip_tips">* 该文件格式暂不支持预览,可点击上方文件名下载</div>
</div>
</div>
</el-card>
</template>
<style lang="scss" scoped>
.max-w-h {
// max-width: 1200px;
width: 100%;
height: 600px;
margin: 0 auto;
display: flex;
justify-content: center;
iframe,
embed,
video {
width: 100%;
height: 100%;
}
.zip_con {
border: 1px solid #ccc;
width: 100%;
display: block;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.img_zip {
width: 100px;
height: 100px;
margin: auto;
}
.zip_tips {
font-size: 14px;
margin-top: 10px;
}
img {
width: 100%;
display: block;
}
}
</style>
......@@ -7,7 +7,6 @@ export default {
return {
tabBtnActive: false,
tabBtnTarget: '',
projectName: '金融硕士保研项目',
sendCode: '',
isBtnDisabled: false,
formInfo: {
......@@ -145,7 +144,7 @@ export default {
</script>
<template>
<div class="right_bar">
<ul class="tab_btns" v-if="!mobile">
<ul class="tab_btns">
<li
:class="{
enroll: true,
......@@ -157,15 +156,7 @@ export default {
<p>报名咨询</p>
</li>
</ul>
<ul class="tab_btns" v-else>
<li>
<img
src="https://zws-imgs-pub.ezijing.com/static/public/d434fa0ffd77892273e63e6d694cff0a.png"
alt=""
/>
<p>报名咨询</p>
</li>
</ul>
<div
id="show-enroll"
v-show="tabBtnActive"
......@@ -275,7 +266,7 @@ export default {
}
.tab_cont {
position: absolute;
left: -360px;
left: -346px;
top: -120px;
width: 346px;
height: 390px;
......@@ -324,6 +315,7 @@ export default {
height: 40px;
}
:deep(.el-button) {
width: 100px;
height: 40px;
color: #ffffff;
font-size: 14px;
......
<script lang="ts" setup>
import { useDevice } from '@/composables/useDevice'
import { ElMessage } from 'element-plus'
const { mobile } = useDevice()
const router = useRouter()
interface List {
btnName: string
btnIcon: string
btnIconActive: string
h1: string
card: {
id: string
img: string
tit: string
h5Img: string
......@@ -27,6 +29,7 @@ const list: List[] = [
h1: '联合业内领袖、资深专家学者,帮助相关从业者快速建立岗位相关的理论知识体系,加强实训教学,提高实训能力,协助从业者掌握、提升岗位所需的各种实务技能。',
card: [
{
id: '1',
img: 'https://webapp-pub.ezijing.com/project_online/fi/tab1_1.png',
h5Img:
'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project_online/fi/h5/system-1-1.png',
......@@ -43,6 +46,7 @@ const list: List[] = [
]
},
{
id: '2',
img: 'https://webapp-pub.ezijing.com/project_online/fi/tab1_2.png',
h5Img:
'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project_online/fi/h5/system-1-2.png',
......@@ -59,6 +63,7 @@ const list: List[] = [
]
},
{
id: '',
img: 'https://webapp-pub.ezijing.com/project_online/fi/tab1_3.png',
h5Img:
'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project_online/fi/h5/system-1-3.png',
......@@ -84,6 +89,7 @@ const list: List[] = [
h1: '联合业内专家、国内外权威产业研究机构,共同开发教学课程,为企业高层人士提供中国标准化的任职能力及领导力培训。',
card: [
{
id: '',
img: 'https://webapp-pub.ezijing.com/project_online/fi/tab2_1.png',
h5Img:
'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project_online/fi/h5/system-2-1.png',
......@@ -100,6 +106,7 @@ const list: List[] = [
]
},
{
id: '',
img: 'https://webapp-pub.ezijing.com/project_online/fi/tab2_2.png',
h5Img:
'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project_online/fi/h5/system-2-2.png',
......@@ -125,6 +132,7 @@ const list: List[] = [
h1: '联合业内领袖、资深专家学者,帮助相关从业者快速建立岗位相关的理论知识体系,加强实训教学,提高实训能力,协助从业者掌握、提升岗位所需的各种实务技能。',
card: [
{
id: '',
img: 'https://webapp-pub.ezijing.com/project_online/fi/tab3_1.png',
h5Img:
'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project_online/fi/h5/system-3-1.png',
......@@ -141,6 +149,7 @@ const list: List[] = [
]
},
{
id: '',
img: 'https://webapp-pub.ezijing.com/project_online/fi/tab3_2.png',
h5Img:
'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project_online/fi/h5/system-3-2.png',
......@@ -168,6 +177,13 @@ let tabIndex = $ref(0)
const tab = function (e: number) {
tabIndex = e
}
const handleDetail = (item: any) => {
if (item.id !== '') {
router.push(`/shop/detail/${item.id}`)
} else {
ElMessage.warning('该课程暂未开通')
}
}
</script>
<template>
......@@ -203,6 +219,7 @@ const tab = function (e: number) {
class="main_list"
v-for="(item, index) in fItem.card"
:key="index"
@click="handleDetail(item)"
>
<img :src="item.img" alt="" class="list_img1" />
<div class="list_tit">{{ item.tit }}</div>
......@@ -218,6 +235,7 @@ const tab = function (e: number) {
</ul>
</div>
</div>
<div class="content_btn" @click="router.push('/shop')">查看更多</div>
</el-tab-pane>
</el-tabs>
</div>
......@@ -240,7 +258,12 @@ const tab = function (e: number) {
<h3>
{{ item.h1 }}
</h3>
<div class="card" v-for="cItem in item.card" :key="cItem.img">
<div
class="card"
v-for="cItem in item.card"
:key="cItem.img"
@click="handleDetail(cItem)"
>
<img :src="cItem.h5Img" />
<div class="title">{{ cItem.tit }}</div>
<div class="item" v-for="(it, index) in cItem.list" :key="index">
......@@ -260,7 +283,7 @@ const tab = function (e: number) {
</div>
</div>
</div>
<!-- <div class="more">查看更多课程</div> -->
<div class="more" @click="router.push('/shop')">查看更多课程</div>
</div>
</template>
</div>
......@@ -405,6 +428,17 @@ const tab = function (e: number) {
}
}
}
.content_btn {
text-align: center;
width: 166px;
height: 42px;
line-height: 42px;
border: 1px solid #c1ab85;
color: #c1ab85;
border-radius: 4px;
margin: 30px auto;
cursor: pointer;
}
}
}
}
......
<script setup lang="ts">
import PreviewFiles from '@/components/base/PreviewFiles.vue'
import { ElMessage } from 'element-plus'
import { Check } from '@element-plus/icons-vue'
import { useUserStore } from '@/stores/user'
......@@ -14,7 +15,10 @@ const props = defineProps({
type: Object
}
})
const dialogVisible = ref(false)
const item = ref({
url: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/%E7%B4%AB%E8%8D%86%E6%95%99%E8%82%B2%E7%94%A8%E6%88%B7%E5%85%A5%E9%A9%BB%E5%8F%8A%E7%BD%91%E7%BB%9C%E6%95%99%E5%AD%A6%E8%B5%84%E6%BA%90%E5%8D%8F%E8%AE%AE(1).docx'
})
const orderInfo: any = ref({})
const payMode = ref(1)
const isAgree = ref(false)
......@@ -80,6 +84,7 @@ const handlePay = () => {
// 去支付
const pay = () => {
console.log('999')
createOrderHandle().then((order: any) => {
orderInfo.value = order
if (wechat) {
......@@ -151,6 +156,9 @@ const handlePrev = () => {
}
})
}
const changeProtocol = () => {
dialogVisible.value = false
}
</script>
<template>
<div>
......@@ -203,7 +211,9 @@ const handlePrev = () => {
<el-checkbox v-model="isAgree"
><span style="color: #666666; font-size: 16px; font-weight: 400"
>同意</span
><a style="color: #e3a232; font-size: 16px; font-weight: 400"
><a
style="color: #e3a232; font-size: 16px; font-weight: 400"
@click="dialogVisible = true"
>紫荆金保服务协议</a
></el-checkbox
>
......@@ -293,7 +303,9 @@ const handlePrev = () => {
<el-checkbox v-model="isAgree"
><span style="color: #666666; font-size: 16px; font-weight: 400"
>同意</span
><a style="color: #e3a232; font-size: 16px; font-weight: 400"
><a
style="color: #e3a232; font-size: 16px; font-weight: 400"
@click="dialogVisible = true"
>紫荆金保服务协议</a
></el-checkbox
>
......@@ -311,6 +323,14 @@ const handlePrev = () => {
</div>
</div>
</div>
<el-dialog v-model="dialogVisible" title="提示" width="850px">
<PreviewFiles :item="item"></PreviewFiles>
<template #footer>
<el-button type="primary" @click="changeProtocol"
>我已阅读并同意</el-button
>
</template>
</el-dialog>
</div>
</template>
......
<script setup lang="ts">
import { useDevice } from '@/composables/useDevice'
const { mobile } = useDevice()
defineProps({
// 是否弹框
buyDialogVisible: {
......@@ -17,9 +19,18 @@ const handleCancel = () => {
<template>
<div>
<el-dialog :model-value="buyDialogVisible" width="25%" top="16%" :modal="false" :before-close="handleCancel">
<el-dialog
:model-value="buyDialogVisible"
:width="!mobile ? '20%' : '70%'"
:top="!mobile ? '16%' : '50%'"
:modal="false"
:before-close="handleCancel"
>
<div class="buy_alert">
<img src="https://webapp-pub.ezijing.com/project_online/fi/icon_contact.png" alt="" />
<img
src="https://webapp-pub.ezijing.com/project_online/fi/icon_contact.png"
alt=""
/>
<div class="alert_con">
<div class="con_tit">请联系我们</div>
<div class="con_desc">PAA秘书处:13263110169(同微信)</div>
......@@ -30,33 +41,68 @@ const handleCancel = () => {
</template>
<style lang="scss" scoped>
.buy_alert {
display: flex;
align-items: center;
.alert_con {
margin-left: 10px;
.con_tit {
font-size: 16px;
font-weight: 400;
line-height: 34px;
color: #333333;
.is-pc {
.buy_alert {
display: flex;
align-items: center;
.alert_con {
margin-left: 10px;
.con_tit {
font-size: 16px;
font-weight: 400;
line-height: 34px;
color: #333333;
}
.con_desc {
font-size: 14px;
font-weight: 400;
line-height: 34px;
color: #666666;
}
}
.con_desc {
font-size: 14px;
font-weight: 400;
line-height: 34px;
color: #666666;
}
:deep(.el-dialog) {
width: 315px;
box-shadow: 0px 0px 16px rgba(0, 0, 0, 0.16);
border-radius: 10px;
margin-left: 50%;
.el-dialog__header {
padding-bottom: 0;
}
}
}
:deep(.el-dialog) {
width: 315px;
box-shadow: 0px 0px 16px rgba(0, 0, 0, 0.16);
border-radius: 10px;
margin-left: 50%;
.is-h5 {
.buy_alert {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
.alert_con {
text-align: center;
.con_tit {
font-size: 0.24rem;
font-weight: 400;
color: #333333;
margin-top: 0.25rem;
}
.con_desc {
font-size: 0.24rem;
font-weight: 400;
color: #666666;
margin-top: 0.51rem;
}
}
}
:deep(.el-dialog) {
box-shadow: 0px 0px 16px rgba(0, 0, 0, 0.16);
border-radius: 0.12rem;
margin-left: 50%;
padding: 0 1.35rem 0.85rem 1.35rem;
.el-dialog__header {
padding-bottom: 0;
.el-dialog__header {
padding-bottom: 0;
}
}
}
</style>
<script lang="ts" setup>
import ContactDialog from '../components/ContactDialog.vue'
import { useDevice } from '@/composables/useDevice'
import { useUserStore } from '@/stores/user'
const user = useUserStore()
......@@ -15,7 +17,6 @@ const props = defineProps({
const buyDialogVisible = ref(false)
const handleBuyCourse = () => {
console.log('999')
if (user.isLogin) {
if (props.payStatus === '4' || props.shopItem?.isBuy === true) {
window.open('https://paa-learning.ezijing.com')
......@@ -77,6 +78,7 @@ const handleBuyCourse = () => {
<div class="btn_buy">立即购买</div>
</div>
</div>
<ContactDialog v-model:buyDialogVisible="buyDialogVisible" />
</div>
</template>
......
......@@ -15,12 +15,13 @@ const page = reactive({
currentPage: 1
})
const courseListAll = $computed<any>(() => {
if (props.type) {
if (props.type !== '') {
return props.courseList?.filter((item: any) => item.category === props.type)
} else {
return props.courseList
}
})
console.log(courseListAll)
watch(
() => courseListAll,
() => {
......@@ -42,28 +43,28 @@ courseListAllNew.value = queryByPage
// 改变每页大小的方法
const handleSizeChange = (val: number) => {
page.size = val
// courseListAllNew.value = queryByPage
console.log(courseListAllNew)
courseListAllNew.value = queryByPage
}
// 改变当前页的方法
const handleCurrentChange = (val: number) => {
page.currentPage = val
// courseListAllNew.value = queryByPage
console.log(courseListAllNew)
courseListAllNew.value = queryByPage
}
</script>
<template>
<div class="course_list" v-for="(item, index) in courseListAllNew" :key="index">
<div
class="course_list"
v-for="(item, index) in courseListAllNew"
:key="index"
>
<CourseListItem :courseItem="item" :key="type"></CourseListItem>
</div>
<el-pagination
class="pagination"
layout="total, sizes, prev, pager, next, jumper"
:page-sizes="[3, 5, 10, 15, 20]"
:page-sizes="[10, 15, 20, 30, 50]"
:page-size="page.size"
:total="courseListAll.length"
v-model:currentPage="page.currentPage"
......
......@@ -367,6 +367,7 @@ const handleBuyCourse = () => {
font-weight: 400;
line-height: 30px;
color: #898989;
white-space: nowrap;
}
.left_con {
.con_num {
......
......@@ -13,15 +13,26 @@ const handleTabClick = (tab: any) => {
<template>
<div class="main_shop">
<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"
/>
<div class="shop_con">
<div class="con_tab">
<el-tabs class="my-tabs" @tab-click="handleTabClick">
<el-tab-pane v-for="(item, index) in shopStore.filters" :key="index" lazy>
<el-tab-pane
v-for="(item, index) in shopStore.filters"
:key="index"
lazy
>
<template #label>
{{ item.label }}
</template>
<CourseList :type="item.value" :courseList="shopStore.shopList" :key="index" />
<CourseList
:type="item.value"
:courseList="shopStore.shopList"
:key="index"
/>
</el-tab-pane>
</el-tabs>
</div>
......@@ -105,9 +116,8 @@ const handleTabClick = (tab: any) => {
width: 100%;
}
}
:deep(.el-tabs__item) {
font-size: 0.28rem;
:deep(.el-tabs__item) {
font-size: 0.28rem;
font-weight: 500;
line-height: 34px;
color: #eda020;
......@@ -121,7 +131,6 @@ const handleTabClick = (tab: any) => {
:deep(.el-tabs__nav-scroll) {
overflow-x: auto;
}
:deep(.el-tabs__item.is-active) {
color: #eda020;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论