提交 61c35066 authored 作者: 王鹏飞's avatar 王鹏飞

chore: 新增报名申请

上级 78e20dd9
projectId=1008
projectId=1029
newProjectId=6808658580045037568
......
projectId=1008
projectId=1029
newProjectId=6808658580045037568
......
projectId=1008
projectId=1029
newProjectId=6808658580045037568
......
......@@ -16,13 +16,7 @@
</div>
<div class="form-item">
<input type="text" class="form-input" placeholder="请输入短信验证码" maxlength="4" v-model="phoneCode" />
<input
type="button"
class="form-button"
:disabled="codeButtonDisabled"
:value="buttonText"
@click="onSendCode"
/>
<input type="button" class="form-button" :disabled="codeButtonDisabled" :value="buttonText" @click="onSendCode" />
</div>
<div class="form-item">
<input type="button" value="立即预约" class="form-button" @click="onSbumit" />
......@@ -36,7 +30,7 @@ import * as api from '@/api'
export default {
data() {
return {
ruleForm: { name: '', phone: '', project_id: '1008', channel: localStorage.getItem('channel_num') || 19960 },
ruleForm: { name: '', phone: '', project_id: process.env.projectId, channel: localStorage.getItem('channel_num') || 19960 },
projectList: [
{ label: '金融工商管理硕士', value: '1000' },
{ label: '本科 / 硕士课程', value: '1008' },
......
......@@ -27,8 +27,8 @@ export default {
return {
listData: [
{
url: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/banner.png',
web_img_uri: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/banner.png'
url: 'https://webapp-pub.ezijing.com/project/exed/banner.png',
web_img_uri: 'https://webapp-pub.ezijing.com/project/exed/banner.png'
}
],
swiperOption: {
......
<template>
<div class="ent-box">
<card title="部分服务过学员企业" class="max-width-center">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/ent-img.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/ent-img.png" />
</card>
</div>
</template>
......@@ -28,7 +28,7 @@ export default {
margin-top: 95px;
padding: 78px 0 122px;
background-color: #fff;
img{
img {
margin-top: 56px;
}
}
......
......@@ -2,14 +2,14 @@
<div>
<card title="上课环境" style="margin-top: 95px;" class="max-width-center">
<div class="env-list" style="margin-top: 77px;">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/env-1.png" />
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/env-2.png" style="margin: 0 9px;" />
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/env-3.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/env-1.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/env-2.png" style="margin: 0 9px;" />
<img src="https://webapp-pub.ezijing.com/project/exed/env-3.png" />
</div>
<div class="env-list">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/env-4.png" />
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/env-5.png" style="margin: 0 9px;" />
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/env-6.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/env-4.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/env-5.png" style="margin: 0 9px;" />
<img src="https://webapp-pub.ezijing.com/project/exed/env-6.png" />
</div>
</card>
</div>
......
......@@ -41,10 +41,8 @@
<div class="item-title">教学安排</div>
<div class="item-content">
<div class="item-content_text" style="line-height: 22px;">
1、学制<br />学制一年,每个月一次,每次周末2天,10次课程
<br /><br />
2、授课地点<br />北京 清华科技园 / 深圳清华大学研究院
<br /><br />
1、学制<br />学制一年,每个月一次,每次周末2天,10次课程 <br /><br />
2、授课地点<br />北京 清华科技园 / 深圳清华大学研究院 <br /><br />
3、课程证书<br />
完成课程后,将获得清控紫荆教育颁发的《清科企业家高级工商管理研修班结业证书》,可以加入清科企业家校友俱乐部。
</div>
......@@ -53,10 +51,7 @@
</div>
</card>
<card title="申请流程" style="margin-top: 95px;" class="max-width-center">
<img
style="margin-top: 70px;"
src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/notice-process.png"
/>
<img style="margin-top: 70px;" src="https://webapp-pub.ezijing.com/project/exed/notice-process.png" />
</card>
</div>
</template>
......@@ -99,25 +94,25 @@ export default {
}
&:nth-child(1) {
.item-content {
background: url(https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/notice-bg1.png);
background: url(https://webapp-pub.ezijing.com/project/exed/notice-bg1.png);
background-size: 100% 100%;
}
}
&:nth-child(2) {
.item-content {
background: url(https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/notice-bg2.png);
background: url(https://webapp-pub.ezijing.com/project/exed/notice-bg2.png);
background-size: 100% 100%;
}
}
&:nth-child(3) {
.item-content {
background: url(https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/notice-bg3.png);
background: url(https://webapp-pub.ezijing.com/project/exed/notice-bg3.png);
background-size: 100% 100%;
}
}
&:nth-child(4) {
.item-content {
background: url(https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/notice-bg4.png);
background: url(https://webapp-pub.ezijing.com/project/exed/notice-bg4.png);
background-size: 100% 100%;
}
}
......
......@@ -150,7 +150,7 @@ export default {
width: 1200px;
height: 500px;
margin: 70px auto 0;
background: url(https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/home-ssfc-bg.png);
background: url(https://webapp-pub.ezijing.com/project/exed/home-ssfc-bg.png);
background-size: 100% 100%;
display: flex;
justify-content: space-between;
......
......@@ -15,7 +15,7 @@
</div>
<card title="问:聚焦经营问题" class="max-width-center question-box">
<div class="q-c">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/project-ts.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/project-ts.png" />
</div>
</card>
<div class="answer-box">
......@@ -41,54 +41,45 @@ export default {
data() {
return {
answerList: [
[
'《企业价值增长战略与数字化升级转型》',
'《定位战略:新竞争时期企业经营之道》',
'《科技创新趋势与创新能力提升》'
],
['《企业价值增长战略与数字化升级转型》', '《定位战略:新竞争时期企业经营之道》', '《科技创新趋势与创新能力提升》'],
['《构建以客户为中心流程管理》', '《大客户销售与管理》', '《解决民营企业十大财税痛点》'],
[
'《战略执行力体系搭建》',
'《领导力:打造高效带队伍的方法》',
'《基于战略的薪酬体系设计》',
'《财富管理与资产配置》'
]
['《战略执行力体系搭建》', '《领导力:打造高效带队伍的方法》', '《基于战略的薪酬体系设计》', '《财富管理与资产配置》']
],
titleParams: {
name: this.$t('home.project.title')
},
data: [
{
icon: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/home_icon_1.png',
iconActive: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/home_icon_11.png',
icon: 'https://webapp-pub.ezijing.com/project/exed/home_icon_1.png',
iconActive: 'https://webapp-pub.ezijing.com/project/exed/home_icon_11.png',
text: '源自清华<br />国企背景',
path: '',
pathType: 0
},
{
icon: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/home_icon_2.png',
iconActive: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/home_icon_22.png',
icon: 'https://webapp-pub.ezijing.com/project/exed/home_icon_2.png',
iconActive: 'https://webapp-pub.ezijing.com/project/exed/home_icon_22.png',
text: '真心教育<br />追求结果',
path: '',
pathType: 0
},
{
icon: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/home_icon_3.png',
iconActive: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/home_icon_33.png',
icon: 'https://webapp-pub.ezijing.com/project/exed/home_icon_3.png',
iconActive: 'https://webapp-pub.ezijing.com/project/exed/home_icon_33.png',
text: '名师大咖<br />真知灼见',
path: '',
pathType: 0
},
{
icon: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/home_icon_4.png',
iconActive: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/home_icon_44.png',
icon: 'https://webapp-pub.ezijing.com/project/exed/home_icon_4.png',
iconActive: 'https://webapp-pub.ezijing.com/project/exed/home_icon_44.png',
text: '营道同术<br />基业长青',
path: '',
pathType: 0
},
{
icon: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/home_icon_5.png',
iconActive: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/home_icon_55.png',
icon: 'https://webapp-pub.ezijing.com/project/exed/home_icon_5.png',
iconActive: 'https://webapp-pub.ezijing.com/project/exed/home_icon_55.png',
text: '财富管理<br />资产配置',
path: '',
pathType: 0
......
......@@ -29,29 +29,23 @@
<card title="练:全程学习安排" class="max-width-center" style="margin-top: 95px;">
<div class="drill-box">
<div class="drill-l">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/tea-drill1.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/tea-drill1.png" />
</div>
<div class="drill-c1">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/tea-drill21.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/tea-drill21.png" />
<div class="drill-c1_b">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/tea-drill22.png" />
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/tea-drill23.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/tea-drill22.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/tea-drill23.png" />
</div>
</div>
<div class="drill-c2">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/tea-drill31.png" />
<img
src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/tea-drill32.png"
style="margin: 8px 0;"
/>
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/tea-drill33.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/tea-drill31.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/tea-drill32.png" style="margin: 8px 0;" />
<img src="https://webapp-pub.ezijing.com/project/exed/tea-drill33.png" />
</div>
<div class="drill-r">
<img
src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/tea-drill41.png"
style="margin-bottom: 8px;"
/>
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/tea-drill42.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/tea-drill41.png" style="margin-bottom: 8px;" />
<img src="https://webapp-pub.ezijing.com/project/exed/tea-drill42.png" />
</div>
</div>
</card>
......@@ -68,38 +62,37 @@ export default {
return {
teacherList1: [
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/914/teacher1.png',
img: 'https://webapp-pub.ezijing.com/project/exed/914/teacher1.png',
name: '钱栋玉',
major: 'hide',
intr: '原金轮股份(002722.SZ)执行总裁<br />北京大学经济学院特聘教授<br />西安交通大学客座教授'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/914/teacher2.png',
img: 'https://webapp-pub.ezijing.com/project/exed/914/teacher2.png',
name: '梁山',
major: 'hide',
intr: '成美战略定位咨询公司合伙人<br />成美战略定位咨询公司唯一指定的定位理论传播者'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/914/teacher3.png',
img: 'https://webapp-pub.ezijing.com/project/exed/914/teacher3.png',
name: '齐昊',
major: '财务管理专家',
intr:
'原TOM集团(2383HK)财务负责人<br/>原澳大利亚KAPB集团财务副总裁<br/>原阿里影业(01060HK)财务总监<br/>主讲:《财务管理》'
intr: '原TOM集团(2383HK)财务负责人<br/>原澳大利亚KAPB集团财务副总裁<br/>原阿里影业(01060HK)财务总监<br/>主讲:《财务管理》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/914/teacher4.png',
img: 'https://webapp-pub.ezijing.com/project/exed/914/teacher4.png',
name: '王立中',
major: '院长',
intr: '深圳格物流程研究院院长<br/>原华为流程优化经理<br/>原维也纳酒店集团副总裁<br/>主讲:《流程管理》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/914/teacher5.png',
img: 'https://webapp-pub.ezijing.com/project/exed/914/teacher5.png',
name: '朱冠舟',
major: '实战专家',
intr: '原金蝶软件副总裁兼中央大客户事业部总经理<br/>清华、北大EMBA总裁班特聘教授<br/>主讲:《大客户销售》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/914/teacher6.png',
img: 'https://webapp-pub.ezijing.com/project/exed/914/teacher6.png',
name: '骆欣庆',
major: 'hide',
intr: '原腾邦国际(SZ 300178)首席创新官<br/>美团点评(HK 3690)金牌创新顾问<br/>清华大学EMBA总裁班特聘教授'
......@@ -107,38 +100,37 @@ export default {
],
teacherList2: [
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/914/teacher21.png',
img: 'https://webapp-pub.ezijing.com/project/exed/914/teacher21.png',
name: '齐磊',
major: 'hide',
intr: '原香港彭氏集团大区经理兼培训总监<br/>中国人民大学、清华大学、浙江大学等多所大学授课教授'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/914/teacher22.png',
img: 'https://webapp-pub.ezijing.com/project/exed/914/teacher22.png',
name: '孙涛',
major: 'hide',
intr: '原清华大学经济管理学院高管教育中心高级总监<br/>原格局商学院联合创始人、CEO'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/914/teacher23.png',
img: 'https://webapp-pub.ezijing.com/project/exed/914/teacher23.png',
name: '傅飞强',
major: 'hide',
intr:
'北京化工大学经济管理学院 副教授<br/>原华夏基石企业管理咨询公司<br/>高级合伙人<br/>中央企业的人力资源管理工作经验'
intr: '北京化工大学经济管理学院 副教授<br/>原华夏基石企业管理咨询公司<br/>高级合伙人<br/>中央企业的人力资源管理工作经验'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/914/teacher24.png',
img: 'https://webapp-pub.ezijing.com/project/exed/914/teacher24.png',
name: '程显礼',
major: '财富管理专家',
intr: '原美国金融管理学会中国区副总裁<br/>中国民营科技实业家协会高新技术产业分会理事长<br/>主讲:《财富管理》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/914/teacher25.png',
img: 'https://webapp-pub.ezijing.com/project/exed/914/teacher25.png',
name: '岳三峰',
major: '总裁教练',
intr: '北大纵横合伙人<br/>字节跳动飞书OKR教练<br/>腾讯组织发展总监<br/>主讲:《组织发展》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/914/teacher26.png',
img: 'https://webapp-pub.ezijing.com/project/exed/914/teacher26.png',
name: '赵剑海',
major: 'hide',
intr: '原IDG资本副总裁<br/>清华大学MBA校友理事会理事<br/>央视《创业英雄汇》投资人嘉宾'
......
......@@ -3,12 +3,9 @@
<header class="main-header">
<template v-if="!searchVisible">
<div class="logo-box">
<img
@click="goWebsite"
src="http://zws-imgs-pub.oss-cn-beijing.aliyuncs.com/static/ezijing/logo/ezijing-logo.svg"
/>
<img @click="goWebsite" src="http://zws-imgs-pub.ezijing.com/static/ezijing/logo/ezijing-logo.svg" />
<nuxt-link to="/home" class="logo">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/seg-shms/seg-shms-logo.png" />
<img src="https://webapp-pub.ezijing.com/project/seg-shms/seg-shms-logo.png" />
</nuxt-link>
</div>
<div class="search" @click="toggleSearch"></div>
......
......@@ -4,16 +4,14 @@
<div class="head-top-content">
<div class="max-width-content">
<!-- <nuxt-link to="/home">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/ciis/ezijing-logo.png" />
<img style="margin-left:20px" src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/seg-shms/seg-shms-logos.png" />
<img src="https://webapp-pub.ezijing.com/project/ciis/ezijing-logo.png" />
<img style="margin-left:20px" src="https://webapp-pub.ezijing.com/project/seg-shms/seg-shms-logos.png" />
</nuxt-link> -->
<div class="logo-box">
<img @click="goWebsite" src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/logo.png" />
<!-- <nuxt-link to="/home" class="logo">
<img src="https://webapp-pub.ezijing.com/project/seg-shms/shms0402.svg" />
</nuxt-link> -->
<nuxt-link to="/">
<img src="https://webapp-pub.ezijing.com/project/exed/logo.png" />
</nuxt-link>
</div>
<div class="user" v-if="user.id">
<span>{{ user.realname || user.nickname }}</span
><em>|</em><span class="logout" @click="logout">{{ $t('menu.out') }}</span>
......@@ -64,16 +62,10 @@ export default {
return this.$store.state.user || {}
},
loginURL() {
return process.client
? `${process.env.loginURL}/login/index?redirect_uri=${encodeURIComponent(
location.origin + this.$route.fullPath
)}`
: ''
return process.client ? `${process.env.loginURL}/login/index?redirect_uri=${encodeURIComponent(location.origin + this.$route.fullPath)}` : ''
},
registerURL() {
return process.client
? `${process.env.loginURL}/register?redirect_uri=${encodeURIComponent(location.origin + this.$route.fullPath)}`
: ''
return process.client ? `${process.env.loginURL}/register?redirect_uri=${encodeURIComponent(location.origin + this.$route.fullPath)}` : ''
}
}
}
......
......@@ -58,6 +58,10 @@ export default {
{
name: this.$t('menu.news'),
path: '/contact'
},
{
name: '报名申请',
path: '/my'
}
],
time: null
......
......@@ -84,7 +84,7 @@ export default {
formInfo: {
name: '',
phone: '',
newProjectId: '1008'
newProjectId: process.env.projectId
},
projectList: [
{ label: '金融工商管理硕士', value: '1000' },
......
......@@ -27,8 +27,8 @@ export default {
return {
listData: [
{
url: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/banner.png',
web_img_uri: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/banner.png'
url: 'https://webapp-pub.ezijing.com/project/exed/training/banner.png',
web_img_uri: 'https://webapp-pub.ezijing.com/project/exed/training/banner.png'
}
],
swiperOption: {
......
......@@ -4,21 +4,21 @@
<div class="chance-list" style="margin-top: 65px;">
<div class="chance-list_item">
<div class="icon">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/cha-1.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/training/cha-1.png" />
</div>
<div class="title">管理能力不足</div>
<div class="dec">如何快速提升企业中高层的综合管理能力,满足企业快速发展的需要</div>
</div>
<div class="chance-list_item">
<div class="icon">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/cha-2.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/training/cha-2.png" />
</div>
<div class="title">业绩增长缓慢</div>
<div class="dec">市场竞争激烈,如何打造一个销售铁军,让企业业绩持续增长?</div>
</div>
<div class="chance-list_item">
<div class="icon">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/cha-3.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/training/cha-3.png" />
</div>
<div class="title">员工没有战斗力</div>
<div class="dec">管理者普遍没有带人带队伍经验,如何能培养能打胜仗的领导力?</div>
......@@ -27,21 +27,21 @@
<div class="chance-list" style="margin-top: 30px;">
<div class="chance-list_item">
<div class="icon">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/cha-4.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/training/cha-4.png" />
</div>
<div class="title">面对挑战缺少经验</div>
<div class="dec">专业知识缺乏,工作效率低,如何为专业人士提供更多方法与工具?</div>
</div>
<div class="chance-list_item">
<div class="icon">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/cha-5.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/training/cha-5.png" />
</div>
<div class="title">战略落地难</div>
<div class="dec">如何帮助所有的管理者深入理解企业战略,并保证战略目标的分解与达成?</div>
</div>
<div class="chance-list_item">
<div class="icon">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/cha-6.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/training/cha-6.png" />
</div>
<div class="title">跨部门沟通不畅</div>
<div class="dec">业务流程不合理,管理者沟通能力弱,如何克服部门间沟通不畅,促进跨部门协作?</div>
......
......@@ -2,20 +2,14 @@
<div>
<card title="企业内训课堂" style="margin-top: 95px;" class="max-width-center">
<div class="env-list" style="margin-top: 77px;">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/classroom1.png" />
<img
src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/classroom2.png"
style="margin: 0 9px;"
/>
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/classroom3.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/training/classroom1.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/training/classroom2.png" style="margin: 0 9px;" />
<img src="https://webapp-pub.ezijing.com/project/exed/training/classroom3.png" />
</div>
<div class="env-list">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/classroom4.png" />
<img
src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/classroom5.png"
style="margin: 0 9px;"
/>
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/classroom6.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/training/classroom4.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/training/classroom5.png" style="margin: 0 9px;" />
<img src="https://webapp-pub.ezijing.com/project/exed/training/classroom6.png" />
</div>
</card>
</div>
......
<template>
<div class="ent-box">
<card title="部分服务过学员企业" class="max-width-center">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/ent-img.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/ent-img.png" />
</card>
</div>
</template>
......@@ -28,7 +28,7 @@ export default {
margin-top: 95px;
padding: 78px 0 122px;
background-color: #fff;
img{
img {
margin-top: 56px;
}
}
......
......@@ -2,14 +2,14 @@
<div>
<card title="上课环境" style="margin-top: 95px;" class="max-width-center">
<div class="env-list" style="margin-top: 77px;">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/env-1.png" />
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/env-2.png" style="margin: 0 9px;" />
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/env-3.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/env-1.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/env-2.png" style="margin: 0 9px;" />
<img src="https://webapp-pub.ezijing.com/project/exed/env-3.png" />
</div>
<div class="env-list">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/env-4.png" />
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/env-5.png" style="margin: 0 9px;" />
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/env-6.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/env-4.png" />
<img src="https://webapp-pub.ezijing.com/project/exed/env-5.png" style="margin: 0 9px;" />
<img src="https://webapp-pub.ezijing.com/project/exed/env-6.png" />
</div>
</card>
</div>
......
......@@ -43,8 +43,7 @@ export default {
},
{
title: '实施定制课程,提供解决方法',
dec:
'清控紫荆教育的教学团队将按照标准的服务流程,以高标准的服务标准负责所有课程的运营事宜。保证课程内容有理论、有方法、有工具、有案例,能落地,有实效。'
dec: '清控紫荆教育的教学团队将按照标准的服务流程,以高标准的服务标准负责所有课程的运营事宜。保证课程内容有理论、有方法、有工具、有案例,能落地,有实效。'
},
{
title: '行动反馈,效果评估',
......@@ -95,7 +94,7 @@ export default {
text-align: center;
font-size: 30px;
color: #fff;
background: url(https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/lc-icon.png);
background: url(https://webapp-pub.ezijing.com/project/exed/training/lc-icon.png);
background-size: 100% 100%;
}
.process_item__content {
......
......@@ -40,54 +40,50 @@ export default {
'《业财融合,企业战略执行的财务协同》<br/>财务力量',
'《复制成功,构建以客户为中心流程管理》<br/>流程力量'
],
[
'《财富管理与资产配置大时代背景》<br/>财富力量',
'《适合你的资产配置模型》<br/>配置力量',
'《穿越牛熊的资产配置策略》<br/>资产力量'
]
['《财富管理与资产配置大时代背景》<br/>财富力量', '《适合你的资产配置模型》<br/>配置力量', '《穿越牛熊的资产配置策略》<br/>资产力量']
],
titleParams: {
name: this.$t('home.project.title')
},
data: [
{
icon: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/ys-1.png',
iconActive: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/ys-1-a.png',
icon: 'https://webapp-pub.ezijing.com/project/exed/training/ys-1.png',
iconActive: 'https://webapp-pub.ezijing.com/project/exed/training/ys-1-a.png',
text: '源自清华<br />国企背景',
path: '',
pathType: 0
},
{
icon: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/ys-2.png',
iconActive: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/ys-2-a.png',
icon: 'https://webapp-pub.ezijing.com/project/exed/training/ys-2.png',
iconActive: 'https://webapp-pub.ezijing.com/project/exed/training/ys-2-a.png',
text: '全方位<br />培训管理',
path: '',
pathType: 0
},
{
icon: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/ys-3.png',
iconActive: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/ys-3-a.png',
icon: 'https://webapp-pub.ezijing.com/project/exed/training/ys-3.png',
iconActive: 'https://webapp-pub.ezijing.com/project/exed/training/ys-3-a.png',
text: '业内<br />名师云集',
path: '',
pathType: 0
},
{
icon: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/ys-4.png',
iconActive: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/ys-4-a.png',
icon: 'https://webapp-pub.ezijing.com/project/exed/training/ys-4.png',
iconActive: 'https://webapp-pub.ezijing.com/project/exed/training/ys-4-a.png',
text: '全面覆盖<br />各领域课程',
path: '',
pathType: 0
},
{
icon: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/ys-5.png',
iconActive: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/ys-5-a.png',
icon: 'https://webapp-pub.ezijing.com/project/exed/training/ys-5.png',
iconActive: 'https://webapp-pub.ezijing.com/project/exed/training/ys-5-a.png',
text: '多维度<br />学习支持',
path: '',
pathType: 0
},
{
icon: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/ys-6.png',
iconActive: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/ys-6-a.png',
icon: 'https://webapp-pub.ezijing.com/project/exed/training/ys-6.png',
iconActive: 'https://webapp-pub.ezijing.com/project/exed/training/ys-6-a.png',
text: '强大的<br />资源平台',
path: '',
pathType: 0
......
......@@ -39,75 +39,73 @@ export default {
return {
teacherList1: [
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-1.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-1.png',
name: '王忠民',
major: '教授',
intr: '原全国社会保障基金理事会副理事长<br/>主讲:《新经济时代下的金融科技与创新》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-2.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-2.png',
name: '刘玲玲',
major: '教授',
intr: '清华大学教授<br />主讲:《宏观经济》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-3.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-3.png',
name: '周立',
major: '教授',
intr: '清华大学教授<br />主讲:《企业价值挖掘》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-4.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-4.png',
name: '陈晋蓉',
major: '教授',
intr: '清华大学教授<br/>主讲:《资本运营》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-5.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-5.png',
name: '杨百寅',
major: '教授',
intr: '清华大学教授<br/>江南大学商学院特聘教授<br/>主讲:《人力资源开发与管理 》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-6.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-6.png',
name: '冯云霞',
major: '教授',
intr: '中国人民大学教授<br />主讲:《管理沟通 》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-7.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-7.png',
name: '郑永强',
major: '首席财务官',
intr:
'三井住友海上火灾保险(中国)公司CFO<br/>国际注册专业会计师协会<br/>全球董事会董事<br/>主讲:《企业数字化》'
intr: '三井住友海上火灾保险(中国)公司CFO<br/>国际注册专业会计师协会<br/>全球董事会董事<br/>主讲:《企业数字化》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-8.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-8.png',
name: '朱冠舟',
major: '实战专家',
intr: '原金蝶软件副总裁兼中央大客户事业部总经理<br />清华、北大EMBA总裁班特聘教授<br />主讲:《大客户销售》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-9.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-9.png',
name: '夏惊鸣',
major: '合伙人',
intr: '华夏基石高级合伙人<br />中国科学院大学实践导师 <br />主讲:《领导力》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-10.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-10.png',
name: '徐怀玉',
major: '院长',
intr: '西姆国有经济研究院院长<br />大连理工大学兼职教授<br />主讲:《股权设计》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-11.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-11.png',
name: '程显礼',
major: '财富管理专家',
intr:
'原美国金融管理学会中国区副总裁<br />中国民营科技实业家协会高新技术产业分会理事长<br />主讲:《财富管理》'
intr: '原美国金融管理学会中国区副总裁<br />中国民营科技实业家协会高新技术产业分会理事长<br />主讲:《财富管理》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-12.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-12.png',
name: '郝启东',
major: '合伙人',
intr: '品类咨询联合创始人<br />北大创业训练营导师<br />黑马学院常驻导师<br />主讲:《品类定位升级》'
......@@ -115,70 +113,67 @@ export default {
],
teacherList2: [
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-2-1.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-2-1.png',
name: '杨杜',
major: '教授',
intr: '中国人民大学教授<br/>主讲:《BEST管理沙盘模拟 》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-2-2.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-2-2.png',
name: '张恩忠',
major: '教授',
intr: '中国人民大学教授<br/>主讲:《市场营销 》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-2-3.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-2-3.png',
name: '钱栋玉',
major: '',
intr: '原A股金轮股份执行总裁 <br/>主讲:《绩效突破:多赢绩效体系建设 '
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-2-4.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-2-4.png',
name: '高皓',
major: '主任',
intr: '清华大学国家金融研究院全球家族企业研究中心主任<br/>主讲:《财富管理》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-2-5.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-2-5.png',
name: '肇越',
major: '首席经济学家',
intr: '香港致富证券有限公司首席经济学家<br />清华大学五道口金融学院硕士导师<br />主讲:《金融投资》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-2-6.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-2-6.png',
name: '王赛',
major: '合伙人',
intr:
'科特勒咨询集团(KMG)管理合伙人<br />清华大学商业模式研究中心<br />增长实验室主任<br />主讲:《增长五线》'
intr: '科特勒咨询集团(KMG)管理合伙人<br />清华大学商业模式研究中心<br />增长实验室主任<br />主讲:《增长五线》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-2-7.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-2-7.png',
name: '齐昊',
major: '财务管理专家',
intr:
'原TOM集团(2383HK)财务负责人<br />原澳大利亚KAPB集团财务副总裁<br />原阿里影业(01060HK)财务总监<br />主讲:《财务管理》'
intr: '原TOM集团(2383HK)财务负责人<br />原澳大利亚KAPB集团财务副总裁<br />原阿里影业(01060HK)财务总监<br />主讲:《财务管理》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-2-8.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-2-8.png',
name: '岳三峰',
major: '总裁教练',
intr: '北大纵横合伙人<br />字节跳动飞书OKR教练<br />腾讯组织发展总监<br />主讲:《组织发展》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-2-9.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-2-9.png',
name: '赵剑海',
major: '博士',
intr:
'海朋资本创始人<br />原IDG资本副总裁<br />清华大学MBA校友理事会理事<br />央视《创业英雄汇》投资人嘉宾<br />主讲:《创业战略》'
intr: '海朋资本创始人<br />原IDG资本副总裁<br />清华大学MBA校友理事会理事<br />央视《创业英雄汇》投资人嘉宾<br />主讲:《创业战略》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-2-10.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-2-10.png',
name: '贾奕琛',
major: '股权激励专家',
intr: '国牛投资董事长<br />清华大学五道口金融学院特聘教授<br />主讲:《股权激励》'
},
{
img: 'https://webapp-pub.oss-cn-beijing.aliyuncs.com/project/exed/training/tea-2-11.png',
img: 'https://webapp-pub.ezijing.com/project/exed/training/tea-2-11.png',
name: '王立中',
major: '院长',
intr: '深圳格物流程研究院院长<br />原华为流程优化经理<br />原维也纳酒店集团副总裁<br />主讲:《流程管理》'
......
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAucCbdPPyAp6vmnr5XObuPsctUhVLyXwqbIpgI5jWzjG7wmk8
V6z8WJKPO9KZM6D9ejtN/bbbd3j1cRiw7NSl8AUykiVHJWz9TXAflET2EpILLera
I1B2XAcBsc8dZBGGJD/LT97ZvNLYzuQOr7R1wytWH1uisAK5ClzgnSptMenXFyhw
5Xw0Lm3zoeeqYF/KMQ1McAYMGxgu6s6dxXKiA0BcgWQ31yZey0c4HhCt7T7sA/UN
ahUsxtCcSNSvdgXay5Pu/l3N88TwW2QzaCzrueILHWRFwkREhpqyrwjN3gkaa+1T
jLxzCsk/pTnPccxlFwc3YQ3hYLMl36NJ/OIpHwIDAQABAoIBACuMmaXYz6OHmroI
HNCIH9E+F0UIUyVg4/1gj9uoqKvdAx04WPphRyRo8AXhgSOWmfb/UnCqX1fqVvj2
BfzwehsEzO9wp/aBT/3IzM6RQHPoI5DXX98prSY0SlRqr4RXi3CSOFN4duoLMOOI
mlzdXUKttVpSvJixerqQPeT7HnC18NBKOydFMYPdXsgWcMXvu2BuvRClIzsjlXKM
VP00BNRY3Oje6T9yl8N051jIZh48YD3yyEAVFKPOWaJVzUU/RRPOOdTb2Y3A1bek
IbCdurdzoEQoJxkeTuColnuL1jj2mpxIBskKYhPAMV5arYS0pZ0VAtjoGGCyn7gT
l/bkTVkCgYEA6EB15hzRD2iTTIFMtDBqw0l3vJWcuWPvwFZl6zculO8Cdsvx0cDZ
VbEXByA0+CG3q47/UrVqETRhtyuVnxuKrceKU8/zib1dvvTMNjeYLKosjyG49xO6
gDx7nVBwYHmQN/iEuWTobLg1vtSNyd99WgG4cFHvqF7kIJb2W0IaGrsCgYEAzL70
VHn9BUP3CGecoU8Fnck9/7GWhvGgFU58Q/dU3Jr8g6lroeDas9zQU2tCnJN0e7cr
13thq2kQQHTYCY4J6EUtjO89sNVx4bO83xqQhobZBwZXkE5QDWIKCbiYGRLAb1+f
AAEwIEdPBgM88YFHOU5YbPTYH8TLkJfxyvMonu0CgYEArGWE3n3PdVeT1zs3O52g
8jrrpVGNF1QmWCgJ2VKJwkW0F4iFhMRYzzH3vPNcPj+Q/cjUn4lIJWMzkWrJ0mP4
ScyPUm1PApRNLPy7RRd5XtYm40wN52F+k8fRnlFiSUqTEejoZFGR8Xm/c1qFsS6y
9ofGZ6F6ewmM3uAQGGd1xxcCgYBFhjoVTW8bkJ6b3gMTy2+Oyr0gzD7fB8FiOsp7
kcrhNke0tZz01ROuq7aZ/Pwbiv6s2+ApRZ4+xGheWs7ZP8AhfQwgpUR/fZs0FwJ1
h+G3rKaZeg/V0qHgSYA7GNGdAf8SUpf9OmoLK+urkQHqyAlVbkMcjG+vKfYt3Uqf
rb4HaQKBgQCxm1oz9QrmxWKJ4eYKHSsD9UPu4QZhltBECH1btgvTwAEmwuXaCcta
RaFNhMe609sQ+YVIxa9fK0MXBiq7DG6nSLGvnLfVEYo4nGe6EvL9nQ7IFZywJjTb
/Fw4rTMwT59VSWJdv8BPznV7Gk7p17fcXM55iJxxu65r3ZuOXjQSGA==
MIIEpQIBAAKCAQEAwZGHX8Zg+EP5uwnEBWkQazq8DMnKz3QfcNRUjFsxsZjM/98r
oYYp+K6/i/b8JXAVMqjC9+X/ZajgbDPLTrgDJ4TQ70ajdusqG3swNqG0qLUogNgU
PcgVRKr2Pk+m79GD/nnxFgeaG6eBfLsb73G2cQUwsgi3bjf6mX6b9bjxjqzwX0PW
es27yyqdS9uQFzV5KLTA2FJJjGGbg54ZLxVc01aVXx2gG0eLnOFcDSmgXUN4hBmN
gYF4FYHhOVXdMl2+yGGp6IvtIIrt+cp2/TQePnxB2QYwrlDMajHrKp0x7LsqWwZT
jepPgGWWDssiSgTCYVaPx28ESbotpzR7D+LlHQIDAQABAoIBAQCCvXGrHcmXRgph
62mrodgGJQioto82aZ9mzPNCTcIVyzgDRtAoa/7jSdx0g+CwxLB8pAH0ADPtjQ/v
5VfXlnAC/DFGu/Zittmc8CqTa8si/CEcTVX2mLLMy5BAa/o8Fs5JTkGo+H99WDkc
byCiLLLmSXQne72xQzwO+rYKVN1K2JUfzch5wpv86IgfJm0gNEOOvtToeNeMbOWj
7AFfpqq7bRMIdZZZhm2n33duSCSnAO7/OuKHY2/RUkc6FvamAth/ME5S2eHrB7yb
KOMZTJH73xnZc3gmsBiIfC1BsqzV/37Ptd7ncTxuK5YZPXIyJ/BjnDTe712LAz+r
f3FEmtJdAoGBAOdPpbT1ylZKinxEIP4sUPUUrrlXqQxYn2xTOCSBz1dB7OpeqiD+
OBa6ur5Sh0+Ot/VRqV2MbXaGee/qqBiziFH23wKoFc6kxeH8RCv247y89yOHqpCP
SM4I7d10RpPh/POU0apGNOP4HOLOMY4V11u68em9hQDeN6oUBWKvDWTPAoGBANY6
mZ/EWKOFJSPfJNNtfXDO27P12ENsa9UvDv7f+FrcPqGkJq1qFBr3ySBjUE7hTv1e
jedRHtBg5Y038vj/MTofEPSaa5POFgzwfG5TPYCcrZkDoLosnuQ92yafMxZPAf16
Nt3vimpxV2Hwf1Nl3IAU/BavngdohWJkO+yOuupTAoGBAMxkTrJmdhJl75T6xoSS
OD83tWTFFvV34fdgWb24jrQ15tj6KS7aNEmxWo4Ocs5T+C1nqVamXZtcHKdpHHwn
OA/lKw435H0ikFCuDrcig/4ko+TbXlY6pkSZE0aaFjtad5/tIo9pVhcTCMNJG/TH
S/Mcb+LwunQX5+v7oP6gXB91AoGAFDbjWBgG5ScjIgdkSi8CrypVwN1p0rLgWfVe
zN4FaU1u+4GpxKNF0mWfLNcyNL893NqXOUSGS9NY1cJ5wtURqBJWXz5S+Fdx7Tak
ByUDoKcoGlAlUmvzckYD79kF0Q0Tev+VPcvkm7amMC+pVA1AiTVxtBJOLxTFwUsD
/IZbTNECgYEA5uwkBWpb/2yYk86cfuUWJjZ0k8jZPrdG4d9gTdD1Fj4abS3FniKM
x9eN8BcnH0j4raRo+MESzYf5hLbfHRG01oRtBQFZXEM0k/zkkRYdKWG1Ulg1+iZR
ZG/lblczYEUW/IOPYZKMX8c5nq7F6huLsioIvsYOdCGjLZbyRHjEPv8=
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIGtjCCBZ6gAwIBAgIQDjUArTRdZ4P5wtQVmCqJGjANBgkqhkiG9w0BAQsFADBj
MIIGtDCCBZygAwIBAgIQJtN62MbxMBaLhLadTXD/LzANBgkqhkiG9w0BAQsFADBj
MQswCQYDVQQGEwJDTjE2MDQGA1UECgwtQmVpamluZyBYaW5jaGFjaGEgQ3JlZGl0
IE1hbmFnZW1lbnQgQ28uLCBMdGQuMRwwGgYDVQQDDBNYY2MgVHJ1c3QgT1YgU1NM
IENBMB4XDTIyMDgxODE0MDAzMVoXDTIzMDkxNzE0MDAzMFowgY4xCzAJBgNVBAYT
IENBMB4XDTIzMDkwNzA1NTM0MVoXDTI0MDkwNjA1NTM0MFowgY4xCzAJBgNVBAYT
AkNOMRIwEAYDVQQIDAnljJfkuqzluIIxEjAQBgNVBAcMCeWMl+S6rOW4gjE/MD0G
A1UECgw25riF5o6n57Sr6I2G77yI5YyX5Lqs77yJ5pWZ6IKy56eR5oqA6IKh5Lu9
5pyJ6ZmQ5YWs5Y+4MRYwFAYDVQQDDA0qLmV6aWppbmcuY29tMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAucCbdPPyAp6vmnr5XObuPsctUhVLyXwqbIpg
I5jWzjG7wmk8V6z8WJKPO9KZM6D9ejtN/bbbd3j1cRiw7NSl8AUykiVHJWz9TXAf
lET2EpILLeraI1B2XAcBsc8dZBGGJD/LT97ZvNLYzuQOr7R1wytWH1uisAK5Clzg
nSptMenXFyhw5Xw0Lm3zoeeqYF/KMQ1McAYMGxgu6s6dxXKiA0BcgWQ31yZey0c4
HhCt7T7sA/UNahUsxtCcSNSvdgXay5Pu/l3N88TwW2QzaCzrueILHWRFwkREhpqy
rwjN3gkaa+1TjLxzCsk/pTnPccxlFwc3YQ3hYLMl36NJ/OIpHwIDAQABo4IDODCC
AzQwDAYDVR0TAQH/BAIwADBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8veGluY2hh
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwZGHX8Zg+EP5uwnEBWkQazq8DMnKz3QfcNRU
jFsxsZjM/98roYYp+K6/i/b8JXAVMqjC9+X/ZajgbDPLTrgDJ4TQ70ajdusqG3sw
NqG0qLUogNgUPcgVRKr2Pk+m79GD/nnxFgeaG6eBfLsb73G2cQUwsgi3bjf6mX6b
9bjxjqzwX0PWes27yyqdS9uQFzV5KLTA2FJJjGGbg54ZLxVc01aVXx2gG0eLnOFc
DSmgXUN4hBmNgYF4FYHhOVXdMl2+yGGp6IvtIIrt+cp2/TQePnxB2QYwrlDMajHr
Kp0x7LsqWwZTjepPgGWWDssiSgTCYVaPx28ESbotpzR7D+LlHQIDAQABo4IDNjCC
AzIwDAYDVR0TAQH/BAIwADBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8veGluY2hh
Y2hhMm92LmNybC5jZXJ0dW0ucGwveGluY2hhY2hhMm92LmNybDB5BggrBgEFBQcB
AQRtMGswLwYIKwYBBQUHMAGGI2h0dHA6Ly94aW5jaGFjaGEyb3Yub2NzcC1jZXJ0
dW0uY29tMDgGCCsGAQUFBzAChixodHRwOi8vcmVwb3NpdG9yeS5jZXJ0dW0ucGwv
eGluY2hhY2hhMm92LmNlcjAfBgNVHSMEGDAWgBT6oMvCx12BtSCSByALtjtwOwkO
VTAdBgNVHQ4EFgQUEJufsd5nLNR+wqR2GsFWDn7qTn0wTAYDVR0gBEUwQzAIBgZn
VTAdBgNVHQ4EFgQUXm2TAFqEePvMkmcMN+bVXSvLTH8wTAYDVR0gBEUwQzAIBgZn
gQwBAgIwNwYMKoRoAYb2dwIFARYCMCcwJQYIKwYBBQUHAgEWGWh0dHBzOi8vd3d3
LmNlcnR1bS5wbC9DUFMwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA4G
A1UdDwEB/wQEAwIFoDAlBgNVHREEHjAcgg0qLmV6aWppbmcuY29tggtlemlqaW5n
LmNvbTCCAX4GCisGAQQB1nkCBAIEggFuBIIBagFoAHYAVYHUwhaQNgFK6gubVzxT
8MDkOHhwJQgXL6OqHQcT0wwAAAGCsUFwdgAABAMARzBFAiAc51lynft4sehXTgyw
tjQ83PAVmfZ3FC55eIpIETe2hgIhANvo5ZtGQpcZQ5HSGbRLy4Y9/MbUrS8dtkwP
l7I/lRj7AHYArfe++nz/EMiLnT2cHj4YarRnKV3PsQwkyoWGNOvcgooAAAGCsUFw
TwAABAMARzBFAiATnQDMw1wykBdnTIRfSSXPj7HZfDdRRq6VaiTbSpYKYQIhAMTp
V6K0W9gtdYGdeg4j6n17S1yMODYvLJxd3kAFFNDTAHYAejKMVNi3LbYg6jjgUh7p
hBZwMhOFTTvSK8E6V6NS61IAAAGCsUFwrQAABAMARzBFAiEAwWKXKxp6DcKG7R/d
rxmPUg8uNbUcdxysrpB3gOzkIlACICWpx7/+2ulDG2EC9m4RqGcXbts3VWu/yxpE
0pAYuAP8MA0GCSqGSIb3DQEBCwUAA4IBAQCf3AdKLO8EUntMjKaRa0lncwh/pBIQ
bcQfkJBfiTpo6tnRphR+DE50oYOX1TSQRm4cDgP2JURYiTK6Z2+ljqMbUx4mNLqe
+6yG+PGCUX6rX4BsJqlRP2W7WONE/I3/3S6MRfclKmakHSyrGFi8O/JJyNqm+5z9
8tnk8c1Cn7FboJZonhX0yszHkXLLeA93xm5+Etkw0+DvRcZGiEqKQivO3CnUh1gs
LZg27a8s3dtmAAHbb2icm5jloK9Jgpx/NkGL/cCoNZ8Ng2TZkRvo6GzIp43uS332
R07dQ6rNWZkPzdxKUdNcT0v3yJJyxD1H3Rk4/bxp78giw4JGHp52Df+U
LmNvbTCCAXwGCisGAQQB1nkCBAIEggFsBIIBaAFmAHUA7s3QZNXbGs7FXLedtM0T
ojKHRny87N7DUUhZRnEftZsAAAGKbjQU6wAABAMARjBEAiAMbEi/VFFT/mgWiXPw
WgVT5THVJCfr9j1oIcfiB5MFHgIgJ2nAv7xTmfoZfcO8sWoGigLdN8QtGksVUSI2
86Wg3O4AdgDatr9rP7W2Ip+bwrtca+hwkXFsu1GEhTS9pD0wSNf7qwAAAYpuNBUS
AAAEAwBHMEUCIDmQ1/B1s3jRr+0SvDSWEFN9/b4/W8QV5yULASXqQkYqAiEA0wKZ
lklUASXMM8mluAimD5e4qSXu76+148bfZA2d404AdQBIsONr2qZHNA/lagL6nTDr
HFIBy1bdLIHZu7+rOdiEcwAAAYpuNBefAAAEAwBGMEQCICyokQlEyxPTPYNBZzwv
W8AxbKUJl+I5TbJEJsiFECRUAiA8fA86Hof/yLHhMl4amx5AttDNhpDrCHDK1N7m
NYx9XjANBgkqhkiG9w0BAQsFAAOCAQEAq4Q2vW3Xh5TOYk/DofnV2uRiK08P5a5I
NRE5Tet3J5rp2WnNgXoSAOabqWGI6VrTyenTZxrmS/2Aq2A008WOj4Z7T3P9iDS/
MgJkPmc/REqHr15LIDnyRRfmn9+1ShVMwukYHSmZgPewAzSkKdGFN85t3uCEUnXz
kna3ZmSqgJrSWSO9n/3t/kICsVivjqSUuHtnCSbBa+DTSNxIkbkr1t1RJkF4KvSk
AKkvyojoKoeCd+WWEl2MBHY6TK4CzfyLN5qhQub0XqTOh6cG9TwALcLZ4MQeaeOO
ZkGv9DcyeOz7FwwzFa+vAyzhq2XlDPLlpZ4ELALbaqnq3x7HHpzlpw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEzzCCA7egAwIBAgIRAPJECC2rqQ2ljHLp8pqTQK4wDQYJKoZIhvcNAQELBQAw
......@@ -111,3 +111,4 @@ CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x
O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs
6GAqm4VKQPNriiTsBhYscw==
-----END CERTIFICATE-----
<template>
<div class="letter">
<header class="header">
<div class="inner">
<div class="logo">
<router-link to="/home"
><img src="https://webapp-pub.ezijing.com/project/application/images/ezijing-logo.png"
/></router-link>
</div>
</div>
</header>
<nav class="nav">
<h1 class="title">SHMS瑞士酒店管理大学MBA项目推荐信<br />SHMS MBA Recommendation Letter</h1>
</nav>
<section class="content">
<el-form
:model="ruleForm"
:rules="rules"
ref="form"
label-width="130px"
label-position="top"
@submit.native.prevent
>
<el-form-item label="推荐人姓名/Name of Referrer" prop="provider_name">
<el-input v-model="ruleForm.provider_name" @blur="onBlur('provider_name')"></el-input>
</el-form-item>
<el-form-item label="推荐信内容/Content of Recommendation Letter" prop="letter_content">
<el-input
type="textarea"
:autosize="{ minRows: 6 }"
v-model="ruleForm.letter_content"
@blur="onBlur('letter_content')"
></el-input>
</el-form-item>
<el-form-item label="推荐人手机号/Contact Number of Referrer" prop="provider_phone_number">
<el-input v-model="ruleForm.provider_phone_number"></el-input>
</el-form-item>
<el-form-item label="推荐人工作单位/Work Place of Referrer" prop="provider_company_name">
<el-input v-model="ruleForm.provider_company_name" @blur="onBlur('provider_company_name')"></el-input>
</el-form-item>
<el-form-item label="推荐人职务/Position/Title of Referrer" prop="provider_job_title">
<el-input v-model="ruleForm.provider_job_title" @blur="onBlur('provider_job_title')"></el-input>
</el-form-item>
</el-form>
<div class="buttons">
<el-button type="primary" @click="handleSubmit">确认提交/Submit</el-button>
</div>
</section>
<el-dialog title="推荐信提交成功" :visible.sync="dialogVisible" :center="true" width="348px">
<div style="text-align: center">
<img src="https://webapp-pub.ezijing.com/project/application/images/icon_success.png" />
</div>
<template #footer>
<el-button type="primary" @click="toHome">了解项目</el-button>
</template>
</el-dialog>
</div>
</template>
<script>
import * as api from '@/api/my'
export default {
name: 'LetterIndex',
data() {
return {
ruleForm: {
provider_name: '',
letter_content: '',
provider_phone_number: '',
provider_company_name: '',
provider_job_title: ''
},
rules: {
provider_name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
letter_content: [{ required: true, message: '请输入推荐信内容', trigger: 'blur' }],
provider_phone_number: [{ required: true, pattern: /^1[3-9]\d{9}$/, message: '请输入手机号', trigger: 'blur' }],
provider_company_name: [{ required: true, message: '请输入工作单位', trigger: 'blur' }],
provider_job_title: [{ required: true, message: '请输入职务', trigger: 'blur' }]
},
dialogVisible: false,
clientWidth: 0
}
},
computed: {
userId() {
return this.$route.params.userId
},
letterId() {
return this.$route.params.letterId
},
labelPosition() {
return this.clientWidth < 768 ? 'top' : 'left'
}
},
methods: {
// 提交
handleSubmit() {
this.$refs.form.validate().then(() => {
this.handleAddRequest()
})
},
// 提交推荐信
handleAddRequest() {
api.addLetter(this.userId, this.letterId, this.ruleForm).then(response => {
const { error, message } = response
if (error.toString() === '0') {
this.dialogVisible = true
} else {
this.$message.error(message)
}
})
},
toHome() {
this.$router.push('/')
},
getClientWidth() {
this.clientWidth = document.body.clientWidth
},
onBlur(key) {
if (this.ruleForm[key]) {
this.ruleForm[key] = this.ruleForm[key].trim()
}
}
},
mounted() {
this.getClientWidth()
document.body.style = 'background-color:#eee;'
window.addEventListener('resize', this.getClientWidth)
},
destroyed() {
document.body.style = ''
window.removeEventListener('resize', this.getClientWidth)
}
}
</script>
<style lang="scss" scoped>
.letter {
.header {
background-color: #fff;
.inner {
max-width: 1000px;
margin: 0 auto;
}
.logo {
padding: 14px 0;
img {
height: 50px;
}
}
}
.nav {
background-color: var(--main-color);
.title {
padding: 15px 0;
font-size: 24px;
font-weight: 600;
color: #fff;
line-height: 30px;
text-align: center;
}
}
.content {
max-width: 1000px;
margin: 20px auto;
padding: 20px;
background-color: #fff;
box-sizing: border-box;
}
::v-deep .el-input {
max-width: 270px;
}
::v-deep .el-form--label-top {
.el-form-item__label {
line-height: 20px;
}
.el-input {
max-width: 100%;
}
}
::v-deep .el-input__inner,
::v-deep .el-textarea__inner {
border-radius: 0;
}
.buttons {
border-top: 1px solid #f1f1f1;
padding: 20px 0;
}
@media (max-width: 767px) {
.logo {
text-align: center;
}
.buttons {
padding: 20px 0;
.el-button {
width: 100%;
display: block;
}
}
}
}
</style>
<template>
<div class="my">
<div class="card">
<div class="result">
<div class="result-left">
<img src="https://webapp-pub.ezijing.com/project/application/images/my_icon.png" />招生办反馈
</div>
<div class="result-right">{{ result.submit_status_desc || '未收到报名信息' }}</div>
</div>
</div>
<div class="card" style="min-height: 360px">
<ul class="nav">
<li class="nav-application" @click="toApplication"></li>
<li class="nav-interview" @click="toInterview"></li>
<li class="nav-admission" @click="toAdmission"></li>
</ul>
<div class="progress">
<el-steps :active="activeProgress" finish-status="success" align-center>
<el-step v-for="(item, index) in 3" :key="index">
<template #title>{{ getProgressStatusText(index) }}</template>
</el-step>
</el-steps>
</div>
</div>
<div class="welcome" v-if="welcomeShow">
<div class="inner">
<div class="welcome-close" @click="handleClose"></div>
<div class="welcome-main">
<img src="https://webapp-pub.ezijing.com/project/application/images/welcome.png" width="350" />
<div class="welcome-content">
<h1>欢迎您报考</h1>
<h2>SHMS瑞士酒店管理大学</h2>
<div class="welcome-button" @click="handleStart">马上开始</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import * as api from '@/api/my'
import Driver from 'driver.js'
import 'driver.js/dist/driver.min.css'
export default {
name: 'AppHome',
data() {
return {
material: {},
progress: {},
submissionStage: {
0: ['FILLING', 'PREPAYMENT'],
1: ['INTERVIEW_APPLICATION', 'AUDITION', 'INTERVIEW', 'PAYMENT'],
2: ['REGISTRATION'],
3: ['CLOSED']
},
result: {},
welcomeShow: false
}
},
computed: {
user() {
return this.$store.state.user
},
activeProgress() {
for (const key in this.submissionStage) {
const list = this.submissionStage[key]
if (list.includes(this.material.submission_stage)) {
return parseInt(key)
}
}
return 0
}
},
methods: {
// 获取进度值
getProgressStatusText(index) {
if (this.activeProgress === index) {
return '进行中'
} else {
return this.activeProgress > index ? '已完成' : '待进行'
}
},
// 获取报名信息
getApplication() {
api.getApplication().then(response => {
const { data, error, message } = response
if (error.toString() === '0') {
const { material, progress } = data
this.material = material
this.progress = progress
const welcomeShowed = window.localStorage.getItem(this.user.id) === 'true'
material.attachments = material.attachments || []
if (!material.attachments.length && !welcomeShowed) {
this.welcomeShow = true
}
} else {
this.$message.error(message)
}
})
},
// 获取报名审核状态
getApplicationStatus() {
api.getApplicationStatus().then(response => {
this.result = response.data
})
},
// 报名申请
toApplication() {
this.$router.push('/my/application?active=application_info')
},
// 申请面试
toInterview() {
if (this.activeProgress < 1) {
this.$message.warning('请完成报名申请并缴报名费')
return
}
this.$router.push('/my/interview')
},
// 办理入学
toAdmission() {
if (this.activeProgress < 2) {
this.$message.warning('请等待面试结果')
return
}
this.$router.push('/my/admission')
},
handleStart() {
this.welcomeShow = false
this.createDriver()
},
handleClose() {
this.welcomeShow = false
window.localStorage.setItem(this.user.id, true)
},
createDriver() {
const driver = new Driver({
opacity: '0.8',
padding: 5,
allowClose: false,
doneBtnText: '我知道了',
nextBtnText: '下一步',
onReset: () => {
window.localStorage.setItem(this.user.id, true)
}
})
// Define the steps for introduction
driver.defineSteps([
{
element: '.nav-application',
popover: {
className: 'first-step-popover-class',
title: '第一步:',
description: '点击<span style="color:#af1b40">报名申请</span>,进入基本信息的填写。',
position: 'bottom-right'
}
},
{
element: '.nav-interview',
popover: {
title: '第二步:',
description: '点击<span style="color:#af1b40">申请面试</span>,进入面试所需材料的上传。',
position: 'bottom-right'
}
},
{
element: '.nav-admission',
popover: {
title: '第三步:',
description: '点击<span style="color:#af1b40">办理入学</span>,进入办理入学材料的上传。',
position: 'bottom-right'
}
}
])
driver.start()
}
},
beforeMount() {
this.getApplication()
this.getApplicationStatus()
}
}
</script>
<style lang="scss" scoped>
.card {
background: #fff;
border-radius: 5px;
}
.card + .card {
margin-top: 10px;
}
.nav {
display: flex;
justify-content: space-between;
padding: 40px 70px 20px;
li {
position: relative;
width: 188px;
height: 128px;
cursor: pointer;
background-repeat: no-repeat;
background-size: contain;
background-position: center 2px;
}
}
.nav-application {
background-image: url('https://webapp-pub.ezijing.com/project/application/images/my_01.png');
&:hover {
background-image: url('https://webapp-pub.ezijing.com/project/application/images/my_01_hover.png');
}
}
.nav-interview {
background-image: url('https://webapp-pub.ezijing.com/project/application/images/my_02.png');
&:hover {
background-image: url('https://webapp-pub.ezijing.com/project/application/images/my_02_hover.png');
}
}
.nav-admission {
background-image: url('https://webapp-pub.ezijing.com/project/application/images/my_03.png');
&:hover {
background-image: url('https://webapp-pub.ezijing.com/project/application/images/my_03_hover.png');
}
}
.result {
min-height: 40px;
padding: 0 20px;
display: flex;
align-items: center;
}
.result-left {
line-height: 14px;
color: var(--main-color);
img {
margin-right: 10px;
}
}
.result-right {
padding-left: 40px;
color: #666;
}
.progress {
margin: 0 40px;
}
.welcome {
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
display: flex;
align-items: center;
justify-content: center;
background-color: rgba(0, 0, 0, 0.8);
z-index: 999;
}
.welcome-close {
float: right;
width: 23px;
height: 23px;
background: url('https://webapp-pub.ezijing.com/project/application/images/welcome_close.png') no-repeat;
background-size: contain;
cursor: pointer;
}
.welcome-main {
display: flex;
align-items: center;
}
.welcome-content {
text-align: center;
h1 {
font-size: 40px;
font-weight: 600;
color: #fff;
line-height: 56px;
}
h2 {
font-size: 26px;
font-weight: normal;
color: #fff;
line-height: 26px;
}
}
.welcome-button {
margin-top: 40px;
display: inline-block;
padding: 10px 32px;
font-size: 20px;
font-weight: 600;
color: #fff;
line-height: 20px;
border-radius: 5px;
border: 3px solid #fff;
cursor: pointer;
&:hover {
color: #af1b40;
background-color: #fff;
}
}
</style>
<style>
div#driver-popover-item {
padding: 10px;
max-width: 178px;
min-width: auto;
}
div#driver-popover-item .driver-popover-title {
font-size: 16px;
}
.driver-close-btn,
.driver-prev-btn {
display: none !important;
}
#driver-highlighted-element-stage {
border-radius: 8px !important;
}
div#driver-popover-item .driver-popover-footer {
text-align: center;
}
div#driver-popover-item .driver-popover-footer button {
background-color: #af1b40;
line-height: 36px;
color: #fff;
border-radius: 4px;
padding: 0 26px;
text-shadow: none;
border: 0;
}
div#driver-popover-item .driver-popover-footer .driver-btn-group {
float: none;
}
.driver-highlighted-element {
pointer-events: none;
}
</style>
<template>
<app-layout>
<vue-form
:menus="menus"
:default-active="currentActive"
@page-change="handlePageChange"
@success="handleSuccess"
@error="handleError"
@back="$router.push('/my/account')"
>
<template #aside-append>
<div class="aside-payment"><a href="https://accounts.ezijing.com/payment" target="_blank">查看缴费记录</a></div>
<div class="aside-logout" @click="$store.dispatch('logout')"><span>退出登录</span></div>
</template>
<!-- 首页 -->
<app-home v-if="currentActive === 'account'" />
<template #content>
<!-- 基本信息 -->
<app-info v-if="currentActive === 'account_info'" />
<!-- 密码修改 -->
<app-password v-if="currentActive === 'account_password'" />
</template>
</vue-form>
</app-layout>
</template>
<script>
import AppLayout from '../layout.vue'
import AppHome from './home.vue'
import AppInfo from './info.vue'
import AppPassword from './password.vue'
export default {
components: { AppLayout, AppHome, AppInfo, AppPassword },
data() {
return {
menus: [
{
id: 'account',
title: '个人信息',
children: [
{ id: 'account_info', title: '基本信息' },
{ id: 'account_password', title: '密码修改' }
]
}
],
currentActive: 'account'
}
},
watch: {
$route: {
immediate: true,
handler(route) {
const { query = {} } = route
this.currentActive = query.active || 'account'
}
}
},
methods: {
handlePageChange(value) {
this.currentActive = value
this.$router.push({ path: this.$route.path, query: { active: value } })
console.log('页面切换了', value)
},
handleSuccess(data) {
console.log('提交成功了', data)
this.$message({ type: 'success', message: data.message })
},
handleError(data) {
console.log('提交失败了', data)
this.$message({ type: 'error', message: data.message })
}
}
}
</script>
<template>
<div>
<el-form
:model="ruleForm"
:rules="rules"
ref="form"
label-width="100px"
@submit.native.prevent
style="max-width: 680px"
>
<el-form-item label="姓名" prop="real_name">
<el-input v-model.trim="ruleForm.real_name"></el-input>
</el-form-item>
<el-form-item label="手机号" prop="mobile">
<el-input v-model.trim="ruleForm.mobile"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleSubmit">确认修改</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
import * as api from '@/api/my'
export default {
name: 'MyInfo',
data() {
return {
ruleForm: {
real_name: '',
mobile: ''
},
rules: {
real_name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
mobile: [{ required: true, message: '请输入手机号', trigger: 'blur' }]
}
}
},
methods: {
getUser() {
api.getUser().then(response => {
const data = response.data
this.ruleForm.real_name = data.realname
this.ruleForm.mobile = data.mobile
})
},
// 提交
handleSubmit() {
this.$refs.form.validate().then(this.handleRequest)
},
// 接口请求
handleRequest() {
this.loading = true
api.updateUser(this.ruleForm).then(response => {
response.code === 0 ? this.handleSuccess(response) : this.$message.error(response.msg)
this.loading = false
})
},
// 成功
handleSuccess(response) {
this.$alert('基本信息修改成功', {
type: 'success',
confirmButtonText: '返回报名系统',
callback: action => {
this.$router.push('/my')
}
})
}
},
beforeMount() {
this.getUser()
}
}
</script>
<style lang="scss" scoped>
::v-deep .el-input {
max-width: 270px;
}
</style>
<template>
<div>
<el-form :model="ruleForm" :rules="rules" ref="form" label-width="100px" @submit.native.prevent>
<el-form-item label="手机号" prop="account">
<el-input v-model.trim="ruleForm.account"></el-input>
</el-form-item>
<el-form-item prop="code" label="验证码">
<el-input v-model.trim="ruleForm.code" placeholder="请输入验证码">
<countdown
slot="suffix"
size="mini"
:disabled="disabledSend"
@start="sendCodeRequest"
ref="countdown"
></countdown>
</el-input>
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input type="password" v-model.trim="ruleForm.password"></el-input>
</el-form-item>
<el-form-item label="确认密码" prop="passwordR">
<el-input type="password" v-model.trim="ruleForm.passwordR"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleSubmit">确认修改</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
import * as api from '@/api/my'
import countdown from '@/components/countdown.vue'
export default {
name: 'MyPassword',
components: { countdown },
data() {
const validatePass = (rule, value, callback) => {
if (value === '') {
callback(new Error('请再次输入密码'))
} else if (value !== this.ruleForm.password) {
callback(new Error('两次输入密码不一致!'))
} else {
callback()
}
}
return {
ruleForm: { account: '', code: '', password: '', passwordR: '' },
rules: {
account: [{ required: true, message: '请输入手机号', trigger: 'blur' }],
code: [{ required: true, message: '请输入验证码', trigger: 'blur' }],
password: [
{ required: true, message: '请输入新密码', trigger: 'blur' },
{ min: 6, max: 20, message: '长度为6-20个字符', trigger: 'blur' }
],
passwordR: [
{ required: true, message: '请输入新密码', trigger: 'blur' },
{ validator: validatePass, trigger: 'blur' }
]
}
}
},
computed: {
disabledSend() {
const value = this.ruleForm.account
return !(/^1[3-9]\d{9}$/.test(value) || /@/.test(value))
}
},
methods: {
// 提交
handleSubmit() {
this.$refs.form.validate().then(this.handleRequest)
},
// 接口请求
handleRequest() {
this.loading = true
api.updatePassword(this.ruleForm).then(response => {
response.code === 0 ? this.handleSuccess(response) : this.$message.error(response.msg)
this.loading = false
})
},
// 成功
handleSuccess(response) {
this.$alert('密码修改成功,快去登录吧', '提示', {
type: 'success',
confirmButtonText: '去登录',
callback: action => {
this.$router.push('/login')
}
})
},
// 验证码
sendCodeRequest() {
api
.sendCode({ account: this.ruleForm.account })
.then(response => {
if (response.code === 0) {
this.$message({ type: 'success', message: '验证码已发送' })
} else {
// 停止计时
this.$refs.countdown.stop()
this.$message({ type: 'error', message: response.msg })
}
})
.catch(this.$refs.countdown.stop)
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .el-input {
max-width: 270px;
}
</style>
<template>
<div class="collapse" :class="classes">
<div class="collapse-hd">
<div class="collapse-icon" @click="toggle">
<i class="el-icon-remove-outline" v-if="isActive"></i>
<i class="el-icon-circle-plus-outline" v-else></i>
</div>
<div class="collapse-title">
<slot name="title">{{ title }}</slot>
</div>
</div>
<div class="collapse-bd" v-show="isActive">
<slot>{{ content }}</slot>
</div>
</div>
</template>
<script>
export default {
props: {
value: { type: Boolean, default: false },
title: { type: String },
content: { type: String }
},
data() {
return {
isActive: false
}
},
computed: {
classes() {
return { 'is-active': this.isActive }
}
},
methods: {
toggle() {
this.isActive = !this.isActive
this.$emit('input', this.isActive)
}
}
}
</script>
<style lang="scss" scoped>
.collapse {
margin-top: 10px;
}
.collapse-hd {
display: flex;
font-size: 14px;
line-height: 20px;
color: #222;
}
.collapse-icon {
margin-right: 6px;
font-size: 14px;
cursor: pointer;
color: #999;
}
.collapse-bd {
padding-left: 20px;
color: #666;
p {
color: #666 !important;
}
}
</style>
import xy from './xy'
// import xfjn from './xfjn'
export default function(_this) {
return {
id: 'admission',
title: '入学办理',
children: [xy(_this)]
}
}
export default {
id: 'admission_xfjn',
title: '学费缴纳',
html: `
<p><strong>一、对公收款银行信息:</strong></p>
<p>户名:清控紫荆( 北京)教育科技股份有限公司</p>
<p>帐号:694485289</p>
<p>开户行:中国民生银行股份有限公司北京魏公村支行</p>
<p style="margin-top:30px;"><strong>二、支付宝收款账户信息:</strong></p>
<p>支付宝账号:service@ezijing.com</p>
<p>支付宝户名:清控紫荆(北京)教育科技股份有限公司</p>
`
}
export default function(_this) {
return {
id: 'admission_xy',
title: '入学协议',
get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) {
const { attachments = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
const stageList = [
'FILLING',
'PREPAYMENT',
'INTERVIEW_APPLICATION',
'AUDITION',
'INTERVIEW',
'PAYMENT',
'REGISTRATION',
'CLOSED'
]
this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 6
const ADMISSION_AGREEMENT = attachments.filter(item => {
return item.file_type_id === 'ADMISSION_AGREEMENT'
})
return { ADMISSION_AGREEMENT }
}
},
update: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/submit/${process.env.projectId}`,
beforeRequest(data) {
return { submission_stage: 'REGISTRATION' }
},
callback() {
this.form.options.disabled = true
},
errorCallback() {
_this.completeVisible = true
}
},
form: {
// next: { to: { query: { active: 'admission_xfjn' } } },
submitText: '提交',
options: { disabled: false },
items: [
{
type: 'v-upload',
required: true,
model: 'ADMISSION_AGREEMENT',
attrs: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`,
deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
data: { file_type: 'ADMISSION_AGREEMENT' }
},
rules: [{ type: 'array', required: true, message: '请上传入学协议', trigger: 'change' }],
prepend: `<p>请将签字后的入学协议原件扫描或拍照后提交,完成入学。点击下方按钮,上传文件</p>`
}
]
}
}
}
<template>
<app-layout>
<vue-form
:menus="menus"
:default-active="currentActive"
@page-change="handlePageChange"
@success="handleSuccess"
@error="handleError"
@back="$router.push('/my/account')"
@prev="handlePrev"
@next="handleNext"
@uploaded="getApplication"
>
<template #aside-append>
<div class="aside-payment"><a href="https://accounts.ezijing.com/payment" target="_blank">查看缴费记录</a></div>
<div class="aside-logout" @click="$store.dispatch('logout')"><span>退出登录</span></div>
</template>
<!-- 入学协议 -->
<!-- <template #content v-if="currentActive === 'admission_xy'">
<app-xy />
</template> -->
</vue-form>
<!-- <el-dialog
title="办理入学资料提交成功"
:visible.sync="dialogVisible"
:center="true"
:close-on-click-modal="false"
width="348px"
>
<div class="dialog-tips">
<p>请确认是否已缴费,如未缴费点击下方缴费按钮 <br />(已缴费,请忽略)</p>
<div class="icon"><img src="https://webapp-pub.ezijing.com/project/application/images/icon_success.png" /></div>
</div>
<template #footer>
<el-button type="primary" @click="toPay">立即缴费</el-button>
<el-button type="primary" @click="dialogVisible = false">忽略</el-button>
</template>
</el-dialog> -->
</app-layout>
</template>
<script>
import AppLayout from '../layout.vue'
import getMenu from './form'
import * as api from '@/api/my'
import AppXy from './xy'
export default {
components: { AppLayout, AppXy },
data() {
const menus = getMenu(this)
return {
menus: [menus],
currentActive: 'admission_xy',
dialogVisible: false,
detail: null
}
},
watch: {
$route: {
immediate: true,
handler(route) {
const { query = {} } = route
this.currentActive = query.active || 'admission_xy'
}
},
showSubmitedDialog(value) {
this.dialogVisible = value
}
},
computed: {
isSubmited() {
if (this.detail) {
return !!this.detail.material.attachments.find(item => item.file_type_id === 'ADMISSION_AGREEMENT')
}
return false
},
showSubmitedDialog() {
return this.isSubmited && this.currentActive === 'admission_xy'
}
},
methods: {
// 获取报名信息
getApplication() {
api.getApplication().then(response => {
const { data, error, message } = response
if (error.toString() === '0') {
this.detail = data
} else {
this.$message.error(message)
}
})
},
handlePageChange(value) {
this.currentActive = value
this.$router.push({ path: this.$route.path, query: { active: value } })
console.log('页面切换了', value)
},
handleSuccess(data) {
console.log('提交成功了', data)
this.$message({ type: 'success', message: data.message })
},
handleError(data) {
console.log('提交失败了', data)
this.$message({ type: 'error', message: data.message })
},
handlePrev(to) {
this.$router.push(to)
},
handleNext(to) {
this.$router.push(to)
},
toPay() {
this.dialogVisible = false
this.$router.push({ path: '/my/admission', query: { active: 'admission_xfjn' } })
}
},
beforeMount() {
this.getApplication()
}
}
</script>
<style lang="scss" scoped>
.dialog-tips {
text-align: center;
p {
color: #262626;
line-height: 20px;
}
.icon {
margin-top: 20px;
text-align: center;
}
}
</style>
差异被折叠。
<template>
<el-dialog
title="您当前完成进度如下:"
width="348px"
:center="true"
:close-on-click-modal="false"
:visible.sync="dialogVisible"
@open="handleOpen"
@close="handleClose"
>
<div>
<ul v-if="detail">
<li
v-for="item in currentOptions"
:class="progress[item.code].progress === 1 ? 'is-success' : 'is-error'"
:key="item.code"
>
<span class="name">{{ item.title }}</span>
<span class="line"></span>
<span class="status">{{ progress[item.code].progress === 1 ? '已完成' : '未完成' }}</span>
<span class="view" @click="handleView(item.view.to)">立即查看</span>
</li>
</ul>
</div>
<template #footer>
<el-button type="primary" @click="dialogVisible = false">我知道啦</el-button>
</template>
</el-dialog>
</template>
<script>
import * as api from '@/api/my'
export default {
props: { value: { type: Boolean, default: false }, type: { type: Number, default: 0 } },
data() {
return {
dialogVisible: false,
detail: null,
progress: {},
options: [
[
{
title: '个人资料',
code: 'applicaitonInfo',
view: { to: { path: '/my/application', query: { active: 'application_info' } } }
},
{
title: '推荐信',
code: 'applicationTjx',
view: { to: { path: '/my/application', query: { active: 'application_tjx' } } }
}
// {
// title: '无犯罪证明',
// code: 'applicationWfzzm',
// view: { to: { path: '/my/application', query: { active: 'application_wfzzm' } } }
// }
],
[
{
title: '毕业证书',
code: 'interviewByz',
view: { to: { path: '/my/interview', query: { active: 'interview_byz' } } }
},
{
title: '成绩单',
code: 'interviewCjd',
view: { to: { path: '/my/interview', query: { active: 'interview_cjd' } } }
},
{
title: '2寸照片',
code: 'interviewZp',
view: { to: { path: '/my/interview', query: { active: 'interview_zp' } } }
},
{
title: '推荐信',
code: 'interviewTjx',
view: { to: { path: '/my/application', query: { active: 'application_tjx' } } }
}
]
]
}
},
watch: {
value: {
immediate: true,
handler(value) {
this.dialogVisible = value
}
}
},
computed: {
currentOptions() {
return this.options[this.type]
}
},
methods: {
// 获取报名信息
getApplication() {
api.getApplication(this.$route.query).then(response => {
const { data, error, message } = response
if (error.toString() === '0') {
const { progress } = data
this.detail = data
const fillingMissedRequiredList = progress.FILLING.attachments.missed_required_list
// 个人资料
const applicaitonInfo = { progress: 0 }
const infoRequriedList = ['basic_info', 'educations', 'careers', 'answers']
for (const key of infoRequriedList) {
if (progress.FILLING[key].progress < 1) {
applicaitonInfo.progress = 0
break
}
applicaitonInfo.progress = 1
}
if (applicaitonInfo.progress === 1 && !fillingMissedRequiredList.ID_CARD_PHOTO) {
applicaitonInfo.progress = 1
} else {
applicaitonInfo.progress = 0
}
// 推荐信
const applicationTjx = { progress: 0 }
applicationTjx.progress = progress.FILLING.reco_letters ? progress.FILLING.reco_letters.progress : 0
// 无犯罪证明
const applicationWfzzm = { progress: 0 }
applicationWfzzm.progress = fillingMissedRequiredList.NO_CRIMINAL_CERT ? 0 : 1
const missedRequiredList = progress.INTERVIEW_APPLICATION.attachments.missed_required_list
// 毕业证书
const interviewByz = { progress: 0 }
interviewByz.progress = missedRequiredList.DIPLOMA_CN ? 0 : 1
// 学位证书
const interviewXwzs = { progress: 0 }
interviewXwzs.progress = missedRequiredList.DEGREE_CERT_CN ? 0 : 1
// 成绩单
const interviewCjd = { progress: 0 }
interviewCjd.progress = missedRequiredList.REPORT_CARD_CN || missedRequiredList.REPORT_CARD_EN ? 0 : 1
// 2寸照片
const interviewZp = { progress: 0 }
interviewZp.progress = missedRequiredList.PERSONAL_PHOTO_FOR_ID ? 0 : 1
// 推荐信
const interviewTjx = { progress: 0 }
interviewTjx.progress = progress.INTERVIEW_APPLICATION.reco_letters.progress
this.progress = {
applicaitonInfo,
applicationTjx,
applicationWfzzm,
interviewByz,
interviewXwzs,
interviewCjd,
interviewZp,
interviewTjx
}
} else {
this.$message.error(message)
}
})
},
handleView(to) {
this.dialogVisible = false
this.$router.push(to)
},
handleOpen() {
this.getApplication()
},
handleClose() {
this.$emit('input', this.dialogVisible)
}
}
}
</script>
<style lang="scss" scoped>
li {
padding: 10px 0;
display: flex;
align-items: center;
}
.name {
width: 80px;
text-align: right;
}
.line {
width: 40px;
height: 1px;
margin: 0 10px;
background-color: #ccc;
}
.is-success {
.status {
color: #33c011;
}
}
.is-error {
.status {
color: #af1b40;
}
}
.view {
margin-left: 40px;
color: #57acff;
text-decoration: underline;
cursor: pointer;
}
</style>
<template>
<div class="h5pay">
<el-button type="primary" @click="handlePay">去支付</el-button>
</div>
</template>
<script>
import * as api from '@/api/my'
export default {
data() {
return {
openId: window.localStorage.getItem('open_id')
}
},
computed: {
pageUrl() {
return window.location.origin + this.$route.path + '?active=application_pay'
}
},
methods: {
// 获取订单
getOrder(callback) {
api.getOrder({ wx_open_id: this.openId, payment_method: 'WX_PAY' }).then(response => {
const { data, error, message } = response
if (error.toString() === '0') {
this.order = data
this.$emit('update', this.order)
callback && callback(this.order)
} else {
this.$message.error(message)
}
})
},
// 获取微信code
getCode() {
const redirectURI = `https://pages.ezijing.com/given/auth.html?redirect_uri=${encodeURIComponent(this.pageUrl)}`
window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx451c01d40d090d7a&redirect_uri=${redirectURI}&response_type=code&scope=snsapi_base#wechat_redirect`
},
// 获取微信openid
getOpenId(code) {
api.getOpenId({ code, identity: 'ezijing' }).then(response => {
if (response.code === 0) {
this.openId = response.openid
window.localStorage.setItem('open_id', this.openId)
this.getOrder()
} else {
this.getCode()
}
})
},
// 去支付
handlePay() {
this.getOrder(() => {
window.location.href = `https://web-pay.ezijing.com/wxpay/h5?prepay_id=${this.order.wx_prepay_id}&open_id=${
this.openId
}&redirect_uri=${encodeURIComponent(this.pageUrl)}`
})
}
},
beforeMount() {
if (!this.openId) {
const { code } = this.$route.query
code ? this.getOpenId(code) : this.getCode()
}
}
}
</script>
<style scoped>
.h5pay {
padding: 40px;
text-align: center;
}
</style>
<template>
<div class="qrpay">
<div class="qrpay-hd">
<div class="pic">
<img src="https://webapp-pub.ezijing.com/project/application/images/my_pay_01.png" />
</div>
<h1>欢迎您</h1>
<p class="t1">
申请SHMS瑞士酒店管理大学MBA项目,本项目的注册费,申请费共计<span>1000</span>元,请扫描二维码缴费以完成报名。
</p>
</div>
<div class="qrcode-error" v-if="qrcodeError">
生成二维码失败请刷新<i class="el-icon-refresh-left" @click="getOrder" title="刷新"></i>
</div>
<div class="qrcode" v-else>
<qrcode-vue :value="qrcodeValue" size="100"></qrcode-vue>
<span @click="getOrder">刷新</span>
</div>
</div>
</template>
<script>
import QrcodeVue from 'qrcode.vue'
import * as api from '@/api/my'
export default {
components: { QrcodeVue },
data() {
return {
order: { id: '', payment_url: '' },
qrcodeError: false
}
},
computed: {
// 二维码地址
qrcodeValue() {
return this.order.payment_url
}
},
methods: {
// 获取订单
getOrder() {
api.getOrder({ payment_method: 'WX_PAY_QR' }).then(response => {
const { data, error, message } = response
this.qrcodeError = error.toString() === '1'
if (error.toString() === '0') {
this.order = data
this.$emit('update', this.order)
} else {
this.$message.error(message)
}
})
}
},
beforeMount() {
this.getOrder()
}
}
</script>
<style lang="scss" scoped>
.qrpay-hd {
.pic {
text-align: center;
}
h1 {
padding: 10px 0;
font-size: 24px;
font-weight: 500;
color: #222;
line-height: 1;
text-align: center;
}
}
.qrcode {
padding: 20px 0;
text-align: center;
span {
margin-top: 10px;
font-size: 12px;
color: #999;
cursor: pointer;
}
}
.qrcode-error {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
width: 100px;
height: 100px;
padding: 10px;
margin: 20px auto;
color: var(--main-color);
border-style: dashed;
border-width: 1px;
border-color: var(--main-color);
box-sizing: border-box;
text-align: center;
i {
margin-top: 10px;
cursor: pointer;
}
}
.t1 {
font-size: 14px;
color: #303030;
line-height: 20px;
text-align: center;
span {
color: #ffa448;
}
}
</style>
/**
* 申请声明
*/
export default function(_this) {
return {
id: 'application_declare',
title: '申请声明',
visible() {
return _this.visible
},
get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) {
const { submission_stage: submissionStage = 'FILLING' } = data.data.material
const isSubmited = submissionStage !== 'FILLING'
this.form.options.disabled = isSubmited
if (isSubmited) {
return { isAgree: [1] }
}
return { isAgree: [] }
}
},
update: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/submit/${process.env.projectId}`,
callback() {
_this.getApplication()
this.form.options.disabled = true
_this.$router.push({ path: this.$route.path, query: { active: 'application_pay' } })
},
errorCallback() {
_this.completeVisible = true
}
},
form: {
prev: { to: { query: { active: 'application_tjx' } } },
submitText: '提交报名申请',
model: { isAgree: [] },
options: {},
items: [
{
type: 'v-checkbox',
values: [{ label: '同意', value: 1 }],
model: 'isAgree',
rules: [{ required: true, message: '请阅读协议', trigger: 'change' }],
prepend: '<p>本人自愿申请清科企业家培养计划(EMBA总裁班)项目(非学位培训项目),所有申请表内容填写真实。</p>'
}
]
}
}
}
import info from './info'
import tjx from './tjx'
// import wfzsm from './wfzzm'
import declare from './declare'
export default function(_this) {
return {
id: 'application',
title: '报名申请',
children: [
info(_this),
tjx(_this),
// wfzsm(_this),
declare(_this),
{
id: 'application_pay',
title: '缴报名费',
show: false,
visible() {
return _this.visible
}
}
]
}
}
import first from './info/first'
import profile from './info/profile'
import education from './info/education'
import career from './info/career'
import honor from './info/honor'
import training from './info/training'
import answer from './info/answer'
export default function(_this) {
return {
id: 'application_info',
title: '个人资料',
tabs: [first(_this), profile(_this), education(_this), career(_this), answer(_this), training(_this), honor(_this)]
}
}
/**
* 学习目的
*/
export default function(_this) {
return {
id: 'application_info_answer',
title: '学习目的',
required: true,
visible() {
return _this.visible
},
get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) {
const { answers = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
this.form.options.disabled = submissionStage !== 'FILLING'
const [first = {}, second = {}] = answers
return {
qid1: first.qid || '1',
question1: '您认为自身或者企业存在什么样问题亟待解决?你希望从EMBA总裁班项目中学习什么知识?提升哪方面能力?',
answer1: first.answer
// qid2: second.qid || '2',
// question2: '您参加过其他的培训项目有哪些?请列出来。你是如何从这些学习经验中获益的?',
// answer2: second.answer
}
}
},
update: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}/put`,
beforeRequest(data) {
return {
answers: [
{ qid: data.qid1, question: data.question1, answer: data.answer1 }
// { qid: data.qid2, question: data.question2, answer: data.answer2 }
]
}
}
},
form: {
prev: { to: { query: { active: 'application_info', tab: 'application_info_career' } }, isSubmit: true },
next: { to: { query: { active: 'application_info', tab: 'application_info_training' } }, isSubmit: true },
options: {},
items: [
{
type: 'v-input',
label: '您认为自身或者企业存在什么样问题亟待解决?你希望从EMBA总裁班项目中学习什么知识?提升哪方面能力?',
model: 'answer1',
attrs: { type: 'textarea', rows: '8', maxlength: '1000', style: 'width:100%' },
rules: [
{ required: true, message: '请输入', trigger: 'blur' },
{ min: 60, max: 1000, message: '长度在 60 到 1000 个字符', trigger: 'blur' }
]
}
// {
// type: 'v-input',
// label: '您参加过其他的培训项目有哪些?请列出来。你是如何从这些学习经验中获益的?',
// model: 'answer2',
// attrs: { type: 'textarea', rows: '8', maxlength: '1000', style: 'width:100%' },
// rules: [
// { required: true, message: '请输入', trigger: 'blur' },
// { min: 60, max: 1000, message: '长度在 60 到 1000 个字符', trigger: 'blur' }
// ]
// }
]
}
}
}
/**
* 工作经验
*/
export default function(_this) {
return {
id: 'application_info_career',
title: '工作经验',
required: true,
visible() {
return _this.visible
},
get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) {
const { careers: list = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
this.form.options.disabled = submissionStage !== 'FILLING'
return list.length ? list : [{}]
}
},
update: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}/put`,
beforeRequest(data) {
const careers = data.map(item => {
return [
'start_date',
'end_date',
'company_name_cn',
'industry',
'dept_cn',
'position_cn',
'job_desc_cn'
].reduce((result, key) => {
result[key] = item[key]
return result
}, {})
})
return { careers }
}
},
form: {
prev: { to: { query: { active: 'application_info', tab: 'application_info_education' } }, isSubmit: true },
next: { to: { query: { active: 'application_info', tab: 'application_info_answer' } }, isSubmit: true },
hasAdd: true,
options: { labelWidth: '140px' },
items: [
{
type: 'v-datepicker',
label: '开始时间',
model: 'start_date',
attrs: {
type: 'month',
placeholder: '请选择工作开始时间',
valueFormat: 'yyyy-MM'
},
rules: [{ required: true, message: '请选择工作开始时间', trigger: 'blur' }]
},
{
type: 'v-datepicker',
label: '结束时间',
model: 'end_date',
attrs: {
type: 'month',
placeholder: '请选择工作结束时间',
valueFormat: 'yyyy-MM'
},
rules: [{ required: true, message: '请选择工作结束时间', trigger: 'blur' }]
},
{
type: 'v-input',
label: '工作单位',
model: 'company_name_cn',
attrs: { placeholder: '请输入工作单位' },
rules: [{ required: true, message: '请输入工作单位', trigger: 'blur' }]
},
{
type: 'v-select',
values: [
{ value: '互联网/电子商务' },
{ value: '基金/证券/期货/投资' },
{ value: '保险' },
{ value: '银行' },
{ value: '信托/担保/拍卖/典当' },
{ value: '计算机软件' },
{ value: 'IT服务(系统/数据/维护)' },
{ value: '电子技术/半导体/集成电路' },
{ value: '计算机硬件' },
{ value: '通信/电信/网络设备' },
{ value: '通信/电信运营、增值服务' },
{ value: '网络游戏' },
{ value: '房地产/建筑/建材/工程' },
{ value: '家居/室内设计/装饰装潢' },
{ value: '物业管理/商业中心' },
{ value: '专业服务/咨询(财会/法律/人力资源等)' },
{ value: '广告/会展/公关' },
{ value: '中介服务' },
{ value: '检验/检测/认证' },
{ value: '外包服务' },
{ value: '快速消费品(食品/饮料/烟酒/日化)' },
{ value: '耐用消费品(服饰/纺织/皮革/家具/家电)' },
{ value: '贸易/进出口' },
{ value: '零售/批发' },
{ value: '租赁服务' },
{ value: '教育/培训/院校' },
{ value: '礼品/玩具/工艺美术/收藏品/奢侈品' },
{ value: '汽车/摩托车' },
{ value: '大型设备/机电设备/重工业' },
{ value: '加工制造(原料加工/模具)' },
{ value: '仪器仪表及工业自动化' },
{ value: '印刷/包装/造纸' },
{ value: '办公用品及设备' },
{ value: '医药/生物工程' },
{ value: '医疗设备/器械' },
{ value: '航空/航天研究与制造' },
{ value: '交通/运输,物流/仓储' },
{ value: '医疗/护理/美容/保健/卫生服务' },
{ value: '酒店/餐饮,旅游/度假,媒体/出版/影视/文化传播' },
{ value: '娱乐/体育/休闲' },
{ value: '能源/矿产/采掘/冶炼' },
{ value: '石油/石化/化工,电气/电力/水利' },
{ value: '环保' },
{ value: '政府/公共事业/非盈利机构' },
{ value: '学术/科研,农/林/牧/渔跨领域经营' },
{ value: '其他' }
],
label: '行业类别',
model: 'industry',
rules: [{ required: true, message: '请选择行业类别', trigger: 'change' }]
},
{
type: 'v-input',
label: '工作部门',
model: 'dept_cn',
attrs: { placeholder: '请输入工作部门' },
rules: [{ required: true, message: '请输入工作部门', trigger: 'blur' }]
},
{
type: 'v-input',
label: '工作职位',
model: 'position_cn',
attrs: { placeholder: '请输入工作职位' },
rules: [{ required: true, message: '请输入工作职位', trigger: 'blur' }]
},
{
type: 'v-input',
label: '工作描述',
model: 'job_desc_cn',
attrs: {
type: 'textarea',
placeholder: '请输入工作描述',
rows: '8',
maxlength: '3000'
},
rules: [{ required: true, message: '请输入工作描述', trigger: 'blur' }]
}
]
}
}
}
差异被折叠。
/**
* 教育背景
*/
export default function(_this) {
return {
id: 'application_info_education',
title: '教育背景',
required: true,
visible() {
return _this.visible
},
get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) {
const { educations: list = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
this.form.options.disabled = submissionStage !== 'FILLING'
return list.length ? list : [{}]
}
},
update: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}/put`,
beforeRequest(data) {
const educations = data.map(item => {
return ['start_date', 'end_date', 'school_name_cn', 'major_cn', 'degree'].reduce((result, key) => {
result[key] = item[key]
return result
}, {})
})
return { educations }
}
},
form: {
prev: { to: { query: { active: 'application_info', tab: 'application_info_profile' } }, isSubmit: true },
next: { to: { query: { active: 'application_info', tab: 'application_info_career' } }, isSubmit: true },
hasAdd: true,
options: { labelWidth: '140px' },
items: [
{
type: 'v-datepicker',
label: '开始时间',
model: 'start_date',
attrs: {
type: 'month',
placeholder: '请选择教育开始时间',
valueFormat: 'yyyy-MM'
},
rules: [{ required: true, message: '请选择教育开始时间', trigger: 'blur' }]
},
{
type: 'v-datepicker',
label: '结束时间',
model: 'end_date',
attrs: {
type: 'month',
placeholder: '请选择教育结束时间',
valueFormat: 'yyyy-MM'
},
rules: [{ required: true, message: '请选择教育结束时间', trigger: 'blur' }]
},
{
type: 'v-input',
label: '学校名称',
model: 'school_name_cn',
attrs: { placeholder: '请输入学校名称' },
rules: [{ required: true, message: '请输入学校名称', trigger: 'blur' }]
},
{
type: 'v-input',
label: '专业名称',
model: 'major_cn',
attrs: { placeholder: '请输入专业名称' },
rules: [{ required: true, message: '请输入专业名称', trigger: 'blur' }]
},
{
type: 'v-select',
values: [
{ value: '专科' },
{ value: '本科' },
{ value: '本科/学士' },
{ value: '硕士研究生' },
{ value: '研究生/硕士' },
{ value: '博士研究生' },
{ value: '研究生/博士' },
{ value: '其他' }
],
label: '学历/学位',
model: 'degree',
rules: [{ required: true, message: '请选择学历/学位', trigger: 'change' }]
}
]
}
}
}
/**
* 个人信息
*/
export default function(_this) {
return {
id: 'application_info_first',
title: '个人信息',
required: true,
visible() {
return this.tabActive === 'application_info_first'
},
get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) {
const { basic_info: basicInfo = {}, attachments = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
this.form.options.disabled = submissionStage !== 'FILLING'
const attachment = attachments.reduce(
(result, item) => {
const types = ['ID_CARD_FRONT', 'ID_CARD_BACK', 'HK_ID_CARD', 'PASSPORT', 'OTHER_ID_CARD_PHOTO']
types.forEach(type => {
if (item.file_type_id === type) {
result[type].push(item)
}
})
return result
},
{ ID_CARD_FRONT: [], ID_CARD_BACK: [], HK_ID_CARD: [], PASSPORT: [], OTHER_ID_CARD_PHOTO: [] }
)
basicInfo.id_type = basicInfo.id_type === '护照' ? '中国护照' : basicInfo.id_type
return Object.assign({}, basicInfo, attachment)
}
},
update: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}/put`,
beforeRequest(data) {
const basicInfo = ['phone_number', 'email', 'id_type'].reduce((result, key) => {
result[key] = data[key]
return result
}, {})
return { basic_info: basicInfo }
}
},
form: {
hasButton: false,
next: { to: { query: { active: 'application_info', tab: 'application_info_profile' } }, isSubmit: true },
options: { labelWidth: '140px' },
items: [
{
type: 'v-input',
label: '手机号',
model: 'phone_number',
attrs: { placeholder: '请输入手机号', maxlength: 11 },
rules: [{ required: true, pattern: /^1[3-9]\d{9}$/, message: '请输入手机号', trigger: 'blur' }]
},
{
type: 'v-input',
label: '邮箱',
model: 'email',
attrs: { placeholder: '请输入邮箱' },
rules: [{ type: 'email', required: true, message: '请输入邮箱', trigger: 'blur' }]
},
{
type: 'v-select',
values: [{ value: '居民身份证' }, { value: '港澳台身份证' }, { value: '中国护照' }, { value: '其他' }],
label: '证件类型',
model: 'id_type',
attrs: { placeholder: '请选择证件类型' },
rules: [{ required: true, message: '请选择证件类型', trigger: 'change' }]
},
// 身份证照片(背面)
{
type: 'v-upload',
label: '身份证人像面',
model: 'ID_CARD_BACK',
attrs: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`,
deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
data: { file_type: 'ID_CARD_BACK' },
limit: 1,
accept: 'image/*',
image: 'https://zws-imgs-pub.ezijing.com/pc/cu/id_card_back.png'
},
rules: [{ type: 'array', required: true, message: '请上传身份证照片人像面', trigger: 'change' }],
isShow(data) {
return data.id_type === '居民身份证'
}
},
// 身份证照片(正面)
{
type: 'v-upload',
label: '身份证国徽面',
model: 'ID_CARD_FRONT',
attrs: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`,
deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
data: { file_type: 'ID_CARD_FRONT' },
limit: 1,
accept: 'image/*',
image: 'https://zws-imgs-pub.ezijing.com/pc/cu/id_card_front.png'
},
rules: [{ type: 'array', required: true, message: '请上传身份证照片国徽面', trigger: 'change' }],
isShow(data) {
return data.id_type === '居民身份证'
}
},
// 港澳台身份证
{
type: 'v-upload',
label: '港澳台身份证',
model: 'HK_ID_CARD',
attrs: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`,
deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
data: { file_type: 'HK_ID_CARD' },
limit: 1,
accept: 'image/*'
},
rules: [{ type: 'array', required: true, message: '请上传港澳台身份证', trigger: 'change' }],
isShow(data) {
return data.id_type === '港澳台身份证'
}
},
// 中国护照
{
type: 'v-upload',
label: '中国护照',
model: 'PASSPORT',
attrs: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`,
deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
data: { file_type: 'PASSPORT' },
limit: 1,
accept: 'image/*'
},
rules: [{ type: 'array', required: true, message: '请上传中国护照', trigger: 'change' }],
isShow(data) {
return data.id_type === '中国护照'
}
},
// 其他证件
{
type: 'v-upload',
label: '其他证件',
model: 'OTHER_ID_CARD_PHOTO',
attrs: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`,
deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
data: { file_type: 'OTHER_ID_CARD_PHOTO' },
limit: 1,
accept: 'image/*'
},
rules: [{ type: 'array', required: true, message: '请上传其他证件', trigger: 'change' }],
isShow(data) {
return data.id_type === '其他'
}
}
]
}
}
}
/**
* 荣誉奖励
*/
export default function(_this) {
return {
id: 'application_info_honor',
title: '荣誉奖励',
visible() {
return _this.visible
},
get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) {
const { honors: list = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
this.form.options.disabled = submissionStage !== 'FILLING'
return list.length ? list : [{}]
}
},
update: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}/put`,
beforeRequest(data) {
const honors = data.map(item => {
return ['time', 'title', 'institution_cn'].reduce((result, key) => {
result[key] = item[key] || ''
return result
}, {})
})
return { honors }
}
},
form: {
prev: { to: { query: { active: 'application_info', tab: 'application_info_training' } }, isSubmit: true },
next: { to: { query: { active: 'application_tjx' } }, isSubmit: true },
hasAdd: true,
options: { labelWidth: '140px' },
items: [
{
type: 'v-datepicker',
label: '获取时间',
model: 'time',
attrs: { type: 'date', valueFormat: 'yyyy-MM-dd', placeholder: '请选择获取时间' }
// rules: [{ required: true, message: '请选择获取时间', trigger: 'blur' }]
},
{
type: 'v-input',
label: '荣誉奖励',
model: 'title',
attrs: { placeholder: '请输入荣誉奖励' }
// rules: [{ required: true, message: '请输入荣誉奖励', trigger: 'blur' }]
},
{
type: 'v-input',
label: '证书颁发机构',
model: 'institution_cn',
attrs: { placeholder: '请输入证书颁发机构' }
// rules: [{ required: true, message: '请输入证书颁发机构', trigger: 'blur' }]
}
]
}
}
}
差异被折叠。
/**
* 所受培训
*/
export default function(_this) {
return {
id: 'application_info_training',
title: '所受培训',
visible() {
return _this.visible
},
get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) {
const { trainings: list = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
this.form.options.disabled = submissionStage !== 'FILLING'
return list.length ? list : [{}]
}
},
update: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}/put`,
beforeRequest(data) {
const trainings = data.map(item => {
return ['start_date', 'end_date', 'institution_cn', 'course_cn'].reduce((result, key) => {
result[key] = item[key] || ''
return result
}, {})
})
return { trainings }
}
},
form: {
prev: { to: { query: { active: 'application_info', tab: 'application_info_answer' } }, isSubmit: true },
next: { to: { query: { active: 'application_info', tab: 'application_info_honor' } }, isSubmit: true },
hasAdd: true,
options: { labelWidth: '140px' },
items: [
{
type: 'v-datepicker',
label: '开始时间',
model: 'start_date',
attrs: {
type: 'month',
placeholder: '请选择培训开始时间',
valueFormat: 'yyyy-MM'
}
// rules: [{ required: true, message: '请选择培训开始时间', trigger: 'blur' }]
},
{
type: 'v-datepicker',
label: '结束时间',
model: 'end_date',
attrs: {
type: 'month',
placeholder: '请选择培训结束时间',
valueFormat: 'yyyy-MM'
}
// rules: [{ required: true, message: '请选择培训结束时间', trigger: 'blur' }]
},
{
type: 'v-input',
label: '培训机构',
model: 'institution_cn',
attrs: { placeholder: '请输入培训机构' }
// rules: [{ required: true, message: '请输入培训机构', trigger: 'blur' }]
},
{
type: 'v-input',
label: '课程名称',
model: 'course_cn',
attrs: { placeholder: '请输入课程名称' }
// rules: [{ required: true, message: '请输入课程名称', trigger: 'blur' }]
}
]
}
}
}
/**
* 推荐信
*/
export default function(_this) {
return {
id: 'application_tjx',
title: '推荐信',
visible() {
return _this.visible
},
get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) {
const { submission_stage: submissionStage = 'FILLING' } = data.data.material
const stageList = [
'FILLING',
'PREPAYMENT',
'INTERVIEW_APPLICATION',
'AUDITION',
'INTERVIEW',
'PAYMENT',
'REGISTRATION',
'CLOSED'
]
this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 3
const list = data.data.material.reco_letters || []
return list.length ? list : [{}, {}, {}]
}
},
update: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}/put`,
beforeRequest(data) {
// const recoLetters = data.map(item => {
// return ['provider_name', 'provider_phone_number', 'provider_email', 'provider_relationship'].reduce(
// (result, key) => {
// result[key] = item[key]
// return result
// },
// {}
// )
// })
return { reco_letters: data }
}
},
form: {
minlength: 3,
prev: { to: { query: { active: 'application_info', tab: 'application_info_honor' } }, isSubmit: true },
next: { to: { query: { active: 'application_declare' } }, isSubmit: true },
hasAdd: true,
disabled(data) {
return !!data.letter_content
},
aside: {
prepend: {
html: '<p style="color:#33C011;">推荐人已完成</p>',
visible(data) {
return !!data.letter_content
}
},
buttons: [
{
text: '再次邀请',
visible(data) {
const editable = ['PREPAYMENT', 'INTERVIEW_APPLICATION', 'AUDITION'].includes(
_this.detail.material.submission_stage
)
return data.id && !data.letter_content && editable
},
onClick(data) {
_this.sendToProvider(data)
}
},
{
text: '更换推荐人',
visible(data) {
const editable = ['PREPAYMENT', 'INTERVIEW_APPLICATION', 'AUDITION'].includes(
_this.detail.material.submission_stage
)
return data.id && !data.letter_content && editable
},
onClick(data, $form) {
$form.validate().then(() => {
_this.changeProvider(data)
})
}
}
]
},
options: { labelWidth: '140px' },
items: [
{
type: 'v-input',
label: '推荐人姓名',
model: 'provider_name',
attrs: { placeholder: '请输入推荐人姓名' },
rules: [{ required: true, message: '请输入推荐人姓名', trigger: 'blur' }]
},
{
type: 'v-input',
label: '推荐人电话',
model: 'provider_phone_number',
attrs: { placeholder: '请输入推荐人电话', maxlength: 11 },
rules: [{ required: true, pattern: /^1[3-9]\d{9}$/, message: '请输入推荐人电话', trigger: 'blur' }]
},
{
type: 'v-input',
label: '推荐人邮箱',
model: 'provider_email',
attrs: { placeholder: '请输入推荐人邮箱' },
rules: [{ type: 'email', required: true, message: '请输入推荐人邮箱', trigger: 'blur' }]
},
{
type: 'v-select',
values: [
{ value: '老师/导师' },
{ value: '领导' },
{ value: '同学' },
{ value: '同事' },
{ value: '亲属' },
{ value: '朋友' },
{ value: '其他' }
],
label: '与推荐人关系',
model: 'provider_relationship',
rules: [{ required: true, message: '请选择与推荐人关系', trigger: 'change' }]
}
]
}
}
}
export default function(_this) {
return {
id: 'application_wfzzm',
title: '无犯罪证明',
visible() {
return _this.visible
},
get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) {
const { attachments = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
this.form.options.disabled = submissionStage !== 'FILLING'
const NO_CRIMINAL_CERT = attachments.filter(item => {
return item.file_type_id === 'NO_CRIMINAL_CERT'
})
return { NO_CRIMINAL_CERT }
}
},
form: {
prev: { to: { query: { active: 'application_tjx' } } },
next: { to: { query: { active: 'application_declare' } } },
hasButton: false,
options: {},
items: [
{
type: 'v-upload',
required: true,
model: 'NO_CRIMINAL_CERT',
attrs: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`,
deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
data: { file_type: 'NO_CRIMINAL_CERT' },
limit: 1
},
prepend: `
<p>第一步:点击下载按键获取无犯罪证明模板</p>
<p><a href="https://zws-imgs-pub.ezijing.com/pc/cu/%E6%97%A0%E7%8A%AF%E7%BD%AA%E8%AE%B0%E5%BD%95%E8%AF%81%E6%98%8E.docx" target="_blank" download>下载模板</a></p>
<p>第二步:打印文件后填写内容并签字上传至电脑,点击下方按钮上传文件</p>
`
}
]
}
}
}
<template>
<app-layout>
<vue-form
:menus="menus"
:default-active="currentActive"
:tab-active="tabActive"
@page-change="handlePageChange"
@tab-change="handleTabChange"
@success="handleSuccess"
@error="handleError"
@back="$router.push('/my/account')"
@prev="handlePrev"
@next="handleNext"
v-if="detail"
>
<template #aside-append>
<div class="aside-preview" @click="dialogVisible = true" v-if="visible">预览全部</div>
<div class="aside-payment"><a href="https://accounts.ezijing.com/payment" target="_blank">查看缴费记录</a></div>
<div class="aside-logout" @click="$store.dispatch('logout')"><span>退出登录</span></div>
</template>
<!-- 报名缴费 -->
<template #content v-if="currentActive === 'application_pay'">
<app-pay />
</template>
</vue-form>
<el-dialog title="预览全部" :visible.sync="dialogVisible" width="790px" class="dialog-preview">
<app-preview :hasEdit="true" @edit="handlePreviewEdit" v-if="dialogVisible" />
</el-dialog>
<app-complete v-model="completeVisible"></app-complete>
</app-layout>
</template>
<script>
import AppLayout from '../layout.vue'
import getMenu from './form'
import AppPay from './pay.vue'
import AppPreview from './preview.vue'
import AppComplete from './complete.vue'
import * as api from '@/api/my'
export default {
components: { AppLayout, AppPay, AppPreview, AppComplete },
data() {
const menus = getMenu(this)
return {
menus: [menus],
currentActive: 'application_info',
tabActive: 'application_info_profile',
dialogVisible: false,
detail: null,
completeVisible: false
}
},
watch: {
$route: {
immediate: true,
handler(route) {
const { query = {} } = route
this.currentActive = query.active || 'application_info'
this.tabActive = query.tab || 'application_info_profile'
}
}
},
computed: {
visible() {
return this.currentActive !== 'application_info' || this.tabActive !== 'application_info_first'
}
},
methods: {
// 获取报名信息
getApplication() {
api.getApplication().then(response => {
const { data, error, message } = response
if (error.toString() === '0') {
this.detail = data
if (
!data.progress.FILLING.attachments ||
data.progress.FILLING.attachments.missed_required_list.ID_CARD_PHOTO
) {
this.tabActive = 'application_info_first'
}
const { submission_stage: submissionStage = 'FILLING' } = data.material
if (submissionStage !== 'FILLING') {
this.menus[0].children.forEach(item => {
if (item.id === 'application_pay') {
item.show = true
}
})
}
} else {
this.$message.error(message)
}
})
},
handlePageChange(value) {
this.currentActive = value
this.$router.push({ path: this.$route.path, query: { active: value } })
},
handleTabChange(value) {
this.tabActive = value
const query = Object.assign({}, this.$route.query, { tab: value })
this.$router.push({ query })
},
handleSuccess(data) {
console.log('提交成功了', data)
this.$message({ type: 'success', message: '提交成功' })
},
handleError(data) {
console.log('提交失败了', data)
this.$message({ type: 'error', message: data.message })
},
handlePrev(to) {
this.$router.push(to)
},
handleNext(to) {
this.$router.push(to)
},
handlePreviewEdit(to) {
this.$router.push(to)
this.dialogVisible = false
},
// 更换推荐人
changeProvider(data) {
api.updateProvider(data.id, data).then(response => {
const { error, message } = response
if (error.toString() === '0') {
this.$message({ type: 'success', message })
} else {
this.$message.error(message)
}
})
},
// 再次邀请推荐
sendToProvider(data) {
api.sendToProvider(data.id).then(response => {
const { error, message } = response
if (error.toString() === '0') {
this.$message({ type: 'success', message })
} else {
this.$message.error(message)
}
})
}
},
beforeMount() {
this.getApplication()
}
}
</script>
<style lang="scss" scoped>
::v-deep .aside-preview {
margin-top: -20px;
padding-left: 64px;
font-size: 14px;
font-weight: 700;
line-height: 44px;
color: #222;
cursor: pointer;
}
.dialog-preview {
::v-deep .el-dialog__body {
padding: 0;
}
}
</style>
<template>
<div class="pay">
<h5-pay @update="handleUpdateOrder" v-if="isWechat"></h5-pay>
<qrcode-pay @update="handleUpdateOrder" v-else></qrcode-pay>
<div class="pay-ft">
<p class="t2">注释:再提交1000元申请费后,申请人还需上传并提交如下文件。</p>
<p class="t2">①最高学历(学位)证书、②专科/本科中文或英文成绩单、③个人证件照(免冠、白底)</p>
<p class="t2">该申请费不退,请慎重缴费!</p>
</div>
<el-dialog
title="报名费缴费成功"
:visible.sync="dialogVisible"
:center="true"
:close-on-click-modal="false"
width="348px"
>
<div class="dialog-pay">
<p>请填写申请面试的材料,材料齐全后<br />招生办老师将给您致电预约面试日期与时间</p>
<div class="icon"><img src="https://webapp-pub.ezijing.com/project/application/images/icon_success.png" /></div>
</div>
<template #footer>
<el-button type="primary" @click="toInterview">立即预约</el-button>
</template>
</el-dialog>
</div>
</template>
<script>
import * as api from '@/api/my'
import qrcodePay from './components/qrcodePay'
import h5Pay from './components/h5Pay'
export default {
name: 'AppPay',
components: { qrcodePay, h5Pay },
data() {
const UA = window.navigator.userAgent
const isMobile = /android|iphone|ipad|ipod/i.test(UA)
return {
isWechat: isMobile && /micromessenger/i.test(UA),
order: { id: '', payment_url: '' },
dialogVisible: false,
timer: null,
paymentRecords: [] // 所有订单
}
},
computed: {
user() {
return this.$store.state.user
},
// 二维码地址
qrcodeValue() {
return this.order.payment_url
},
// 支付成功
paySuccess() {
return this.order.payment_status === 'SUCCESS'
},
// 待支付订单
orderList() {
// 筛选待支付订单
const list = this.paymentRecords.filter(item => {
return item.bill_type === 'APPLICATION_FEE' && item.payment_status === 'WAITING_FOR_PAY'
})
// 待支付订单是否有当前订单
const found = list.find(item => item.id === this.order.id)
return found ? list : [...list, this.order]
}
},
methods: {
// 获取报名信息
async getApplication() {
await api.getApplication().then(response => {
const { payment_records: paymentRecords = [] } = response.data.material
// 获取支付订单
this.paymentRecords = paymentRecords
if (paymentRecords && paymentRecords.length) {
// 获取支付成功的订单
const orderPaySuccess = paymentRecords.find(item => {
return item.bill_type === 'APPLICATION_FEE' && item.payment_status === 'SUCCESS'
})
if (orderPaySuccess) {
this.order = orderPaySuccess
this.dialogVisible = true
return
}
// 获取最后一个订单
const [lastPayment] = paymentRecords.reverse()
this.order = lastPayment
}
})
},
// 检查支付状态
checkPay(order) {
const userId = this.user.id
api.checkPay(order.id, { user_id: userId }).then(response => {
if (response.data.payment_status === 'SUCCESS') {
this.timer && clearInterval(this.timer)
this.dialogVisible = true
}
})
},
// 检测支付状态定时器
setCheckPayTimer() {
this.timer && clearInterval(this.timer)
this.timer = setInterval(() => {
if (this.paySuccess) {
this.timer && clearInterval(this.timer)
return
}
this.orderList.forEach(order => this.checkPay(order))
}, 3000)
},
// 填写个人资料
toApplication() {
this.$router.push('/my/application?active=application_info')
},
// 申请面试
toInterview() {
this.$router.push('/my/interview')
},
handleUpdateOrder(order) {
this.order = order
}
},
async mounted() {
await this.getApplication()
this.setCheckPayTimer()
},
destroyed() {
this.timer && clearInterval(this.timer)
}
}
</script>
<style lang="scss" scoped>
.pay {
max-width: 562px;
margin: 0 auto;
padding: 40px 0;
}
.t1 {
font-size: 14px;
color: #303030;
line-height: 20px;
text-align: center;
span {
color: #ffa448;
}
}
.t2 {
font-size: 12px;
color: #999;
line-height: 20px;
}
.dialog-pay {
text-align: center;
p {
color: #262626;
line-height: 20px;
}
.icon {
margin-top: 20px;
text-align: center;
}
}
</style>
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论