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

对接shms报名申请

上级 9f1588f8
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
</div> </div>
</div> </div>
</header> </header>
<nav class="nav"><h1 class="title">美国印第安纳大学Kelley商学院金融学硕士项目推荐信</h1></nav> <nav class="nav"><h1 class="title">SHMS瑞士酒店管理大学MBA项目推荐信</h1></nav>
<section class="content"> <section class="content">
<el-form <el-form
:model="ruleForm" :model="ruleForm"
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
<img src="https://webapp-pub.ezijing.com/project/application/images/welcome.png" width="350" /> <img src="https://webapp-pub.ezijing.com/project/application/images/welcome.png" width="350" />
<div class="welcome-content"> <div class="welcome-content">
<h1>欢迎您报考</h1> <h1>欢迎您报考</h1>
<h2>美国印第安纳大学</h2> <h2>SHMS瑞士酒店管理大学</h2>
<div class="welcome-button" @click="handleStart">马上开始</div> <div class="welcome-button" @click="handleStart">马上开始</div>
</div> </div>
</div> </div>
......
export default function(_this) {
return {
id: 'admission_cjd',
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
return attachments.reduce(
(result, item) => {
if (item.file_type_id === 'REPORT_CARD_CN') {
result.REPORT_CARD_CN.push(item)
}
if (item.file_type_id === 'REPORT_CARD_EN') {
result.REPORT_CARD_EN.push(item)
}
return result
},
{ REPORT_CARD_CN: [], REPORT_CARD_EN: [] }
)
}
},
form: {
next: { to: { query: { active: 'admission_xy' } } },
hasButton: false,
options: { 'label-position': 'top' },
hint: `
<p>请将中英文成绩单原件扫描或者拍照后提交。</p>
<p>获取途径:联系大学时就读学校相关部门(档案馆/教务处)获取成绩单。</p>
`,
items: [
{
type: 'v-upload',
label: '中文成绩单',
model: 'REPORT_CARD_CN',
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: 'REPORT_CARD_CN' }
}
},
{
type: 'v-upload',
label: '英文成绩单',
model: 'REPORT_CARD_EN',
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: 'REPORT_CARD_EN' }
}
}
]
}
}
}
import cjd from './cjd'
import xy from './xy' import xy from './xy'
import xfjn from './xfjn' import xfjn from './xfjn'
...@@ -6,6 +5,6 @@ export default function(_this) { ...@@ -6,6 +5,6 @@ export default function(_this) {
return { return {
id: 'admission', id: 'admission',
title: '入学办理', title: '入学办理',
children: [cjd(_this), xy(_this), xfjn(_this)] children: [xy(_this), xfjn]
} }
} }
export default function(_this) { export default {
return {
id: 'admission_xfjn', id: 'admission_xfjn',
title: '缴费凭证', title: '学费缴纳',
get: { html: `
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 PAYMENT_VOUCHER = attachments.filter(item => {
return item.file_type_id === 'PAYMENT_VOUCHER'
})
return { PAYMENT_VOUCHER }
}
},
form: {
prev: { to: { query: { active: 'admission_xy' } } },
hasButton: false,
options: { 'label-position': 'top' },
hint: `
<p><strong>一、对公收款银行信息:</strong></p> <p><strong>一、对公收款银行信息:</strong></p>
<p>户名:清控紫荆( 北京)教育科技股份有限公司</p> <p>户名:清控紫荆( 北京)教育科技股份有限公司</p>
<p>帐号:694485289</p> <p>帐号:694485289</p>
<p>开户行:中国民生银行股份有限公司北京魏公村支行</p> <p>开户行:中国民生银行股份有限公司北京魏公村支行</p>
<p style="margin-top:30px;"><strong>二、支付宝收款账户信息:</strong></p> <p style="margin-top:30px;"><strong>二、支付宝收款账户信息:</strong></p>
<p>支付宝账号:service@ezijing.com</p> <p>支付宝账号:service@ezijing.com</p>
<p>支付宝户名:清控紫荆(北京)教育科技股份有限公司</p>`, <p>支付宝户名:清控紫荆(北京)教育科技股份有限公司</p>
items: [ `
{
type: 'v-upload',
model: 'PAYMENT_VOUCHER',
label: '上传缴费凭证',
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: 'PAYMENT_VOUCHER' }
},
append: `申请者可将转账/支付缴费凭证截图或拍照后提交。<br>
上传多个文件,请打印出来检查无误后再上传。用A4纸打印后内容需显示完整、格式整齐、字迹清晰可辨。上传文件仅限“jpg,jpeg,pdf,png”格式,文件小于10Mb。`
}
]
}
}
} }
...@@ -24,7 +24,6 @@ export default function(_this) { ...@@ -24,7 +24,6 @@ export default function(_this) {
} }
}, },
form: { form: {
prev: { to: { query: { active: 'admission_cjd' } } },
next: { to: { query: { active: 'admission_xfjn' } } }, next: { to: { query: { active: 'admission_xfjn' } } },
hasButton: false, hasButton: false,
options: {}, options: {},
...@@ -39,9 +38,9 @@ export default function(_this) { ...@@ -39,9 +38,9 @@ export default function(_this) {
data: { file_type: 'ADMISSION_AGREEMENT' } data: { file_type: 'ADMISSION_AGREEMENT' }
}, },
prepend: ` prepend: `
<p><a href="https://zws-imgs-pub.oss-cn-beijing.aliyuncs.com/pc/kelley/%E5%85%A5%E5%AD%A6%E5%8D%8F%E8%AE%AE.pdf" target="_blank" download="入学协议">下载入学协议</a></p> <p>第一步:点击下载按键获取入学协议</p>
<p>申请者可将签字后的入学协议原件扫描或拍照后提交。</p> <p><a href="https://zws-imgs-pub.oss-cn-beijing.aliyuncs.com/pc/cu/%E5%85%A5%E5%AD%A6%E5%8D%8F%E8%AE%AE3.docx" target="_blank" download>下载入学协议</a></p>
<p>学员应仔细阅读《入学协议》以及课程介绍,如对入学协议或课程有异议,请第一时间与课程顾问咨询确认。请用A4纸打印后,在入学协议上签上姓名和日期,内容需显示完整、格式整齐、字迹清晰可辨。上传文件仅限“jpg,jpeg,pdf,png”格式,文件小于10Mb。</p> <p>第二步:申请者可将签字后的入学协议原件扫描或拍照后提交。学员应仔细阅读《入学协议》以及课程介绍,如对入学协议或课程有异议,请第一时间与课程顾问咨询确认。请用A4纸打印后,在入学协议上签上姓名和日期,内容需显示完整、格式整齐、字迹清晰可辨。点击下方按钮,上传文件</p>
` `
} }
] ]
......
...@@ -49,7 +49,7 @@ export default { ...@@ -49,7 +49,7 @@ export default {
const menus = getMenu(this) const menus = getMenu(this)
return { return {
menus: [menus], menus: [menus],
currentActive: 'admission_cjd', currentActive: 'admission_xy',
dialogVisible: false, dialogVisible: false,
detail: null detail: null
} }
...@@ -59,7 +59,7 @@ export default { ...@@ -59,7 +59,7 @@ export default {
immediate: true, immediate: true,
handler(route) { handler(route) {
const { query = {} } = route const { query = {} } = route
this.currentActive = query.active || 'admission_cjd' this.currentActive = query.active || 'admission_xy'
} }
}, },
showSubmitedDialog(value) { showSubmitedDialog(value) {
...@@ -91,7 +91,7 @@ export default { ...@@ -91,7 +91,7 @@ export default {
}, },
handlePageChange(value) { handlePageChange(value) {
this.currentActive = value this.currentActive = value
this.$router.push({ path: this.$route.path, query: { active: value } }).catch(() => {}) this.$router.push({ path: this.$route.path, query: { active: value } })
console.log('页面切换了', value) console.log('页面切换了', value)
}, },
handleSuccess(data) { handleSuccess(data) {
......
...@@ -46,13 +46,12 @@ ...@@ -46,13 +46,12 @@
<p>2.<b>入学项目:</b></p> <p>2.<b>入学项目:</b></p>
<p> <p>
<b <b
>项目课程为【紫荆教育-美国印第安纳大学Kelley商学院金融硕士(MSinFinance)2021年夏季班】。该项目学制为【15】个月,自当期项目课程开课之日起计算。</b >项目课程为【紫荆-瑞士酒店管理大学工商管理硕士MBA第1期】。该项目学制为【2】年,自当期项目课程开课之日起计算。</b
>如学员因个人原因需要延长学习期限的,须至少提前<b>【3】</b>个月申请延期,批准后方可延期毕业。最长可延期至<b>【60】</b>个月,自所报名的项目课 >如学员因个人原因需要延长学习期限的,须至少提前<b>【4】</b>个月申请延期,批准后方可延期毕业。最长可延期<b>【12】</b>个月,自所报名的项目课程原定毕业之日起算。
程原定开课之日起算。
</p> </p>
<p> <p>
<b>课程的总学分为【33】学分,其中必修课【33】学分。先修课3门,不计入学分</b <b>课程的总学分为【30】学分,其中必修课【30】学分,选修课【0】分。课程成绩未通过需要重修或选修其它课程</b
>课程成绩未通过需要重修或选修其它课程。重修或选修超规定的学分的,需按学分单价缴纳相关费用。 >重修或选修超规定的学分的,需按学分单价缴纳相关费用。
</p> </p>
<app-collapse> <app-collapse>
<template #title>3.<b>教学说明:</b></template> <template #title>3.<b>教学说明:</b></template>
...@@ -62,7 +61,7 @@ ...@@ -62,7 +61,7 @@
<p>(2)授课教师安排及调整。我们可能会调整相关课程的任课教师,该教师如与宣传材料不符以实际任课教师为准。</p> <p>(2)授课教师安排及调整。我们可能会调整相关课程的任课教师,该教师如与宣传材料不符以实际任课教师为准。</p>
</app-collapse> </app-collapse>
<app-collapse> <app-collapse>
<template #title>4.<b>费用。</b>本项目学费共计人民币【249800】元整,包含授课费用、证书费用,不包含:</template> <template #title>4.<b>费用。</b>本项目学费共计人民币【120000】元整,包含授课费用、证书费用,不包含:</template>
<p>学习期间的交通费、食宿费、邮寄费、书本费等费用;</p> <p>学习期间的交通费、食宿费、邮寄费、书本费等费用;</p>
<p>海外学习、海外毕业典礼等费用;</p> <p>海外学习、海外毕业典礼等费用;</p>
<p>毕业服装、纪念品、校友会活动等相关费用;</p> <p>毕业服装、纪念品、校友会活动等相关费用;</p>
...@@ -162,7 +161,7 @@ export default { ...@@ -162,7 +161,7 @@ export default {
}, },
methods: { methods: {
createSign() { createSign() {
api.createSign({ type: 'kelley-agreement' }).then(response => { api.createSign({ type: 'shms-agreement' }).then(response => {
const { code, data } = response const { code, data } = response
if (code === 1) { if (code === 1) {
this.sign = data this.sign = data
...@@ -173,7 +172,7 @@ export default { ...@@ -173,7 +172,7 @@ export default {
}) })
}, },
getSignDocument(flowid) { getSignDocument(flowid) {
return api.getSignDocument({ flowid, type: 'kelley-agreement' }).then(response => { return api.getSignDocument({ flowid, type: 'shms-agreement' }).then(response => {
const { code, data } = response const { code, data } = response
if (code === 1) { if (code === 1) {
this.documentUrl = data.url this.documentUrl = data.url
......
...@@ -43,54 +43,39 @@ export default { ...@@ -43,54 +43,39 @@ export default {
title: '个人资料', title: '个人资料',
code: 'applicaitonInfo', code: 'applicaitonInfo',
view: { to: { path: '/my/application', query: { active: 'application_info' } } } view: { to: { path: '/my/application', query: { active: 'application_info' } } }
},
{
title: '推荐信',
code: 'applicationTjx',
view: { to: { path: '/my/application', query: { active: 'application_tjx' } } }
} }
// { // {
// title: '推荐信',
// code: 'applicationTjx',
// view: { to: { path: '/my/application', query: { active: 'application_tjx' } } }
// }
// {
// title: '无犯罪证明', // title: '无犯罪证明',
// code: 'applicationWfzzm', // code: 'applicationWfzzm',
// view: { to: { path: '/my/application', query: { active: 'application_wfzzm' } } } // view: { to: { path: '/my/application', query: { active: 'application_wfzzm' } } }
// } // }
], ],
[ [
{
title: '毕业证书',
code: 'interviewByzs',
view: { to: { path: '/my/interview', query: { active: 'interview_byzs' } } }
},
{ {
title: '学位证书', title: '学位证书',
code: 'interviewXwzs', code: 'interviewXwzs',
view: { to: { path: '/my/interview', query: { active: 'interview_xwzs' } } } view: { to: { path: '/my/interview', query: { active: 'interview_byz' } } }
}, },
// {
// title: '学位证书英文证明',
// code: 'interviewXwzsEnglish',
// view: { to: { path: '/my/interview', query: { active: 'interview_xwzsywzm' } } }
// },
{ {
title: '英文简历', title: '成绩单',
code: 'interviewYwjl', code: 'interviewCjd',
view: { to: { path: '/my/interview', query: { active: 'interview_ywjl' } } } view: { to: { path: '/my/interview', query: { active: 'interview_cjd' } } }
}, },
{ {
title: '2寸照片', title: '2寸照片',
code: 'interviewZp', code: 'interviewZp',
view: { to: { path: '/my/interview', query: { active: 'interview_zp' } } } view: { to: { path: '/my/interview', query: { active: 'interview_zp' } } }
},
{
title: '推荐信',
code: 'interviewTjx',
view: { to: { path: '/my/application', query: { active: 'application_tjx' } } }
} }
// {
// title: '成绩单',
// code: 'interviewCjd',
// view: { to: { path: '/my/interview', query: { active: 'interview_cjd' } } }
// },
// {
// title: '推荐信',
// code: 'interviewTjx',
// view: { to: { path: '/my/application', query: { active: 'application_tjx' } } }
// }
] ]
] ]
} }
...@@ -141,40 +126,26 @@ export default { ...@@ -141,40 +126,26 @@ export default {
applicationWfzzm.progress = fillingMissedRequiredList.NO_CRIMINAL_CERT ? 0 : 1 applicationWfzzm.progress = fillingMissedRequiredList.NO_CRIMINAL_CERT ? 0 : 1
const missedRequiredList = progress.INTERVIEW_APPLICATION.attachments.missed_required_list const missedRequiredList = progress.INTERVIEW_APPLICATION.attachments.missed_required_list
// 2寸照片
const interviewZp = { progress: 0 }
interviewZp.progress = missedRequiredList.PERSONAL_PHOTO_FOR_ID ? 0 : 1
// 毕业证书
const interviewByzs = { progress: 0 }
interviewByzs.progress = missedRequiredList.DIPLOMA_CN ? 0 : 1
// 学位证书 // 学位证书
const interviewXwzs = { progress: 0 } const interviewXwzs = { progress: 0 }
interviewXwzs.progress = missedRequiredList.DEGREE_CERT_CN ? 0 : 1 interviewXwzs.progress = missedRequiredList.DEGREE_CERT_CN ? 0 : 1
// 学位证书英文
const interviewXwzsEnglish = { progress: 0 }
interviewXwzsEnglish.progress = missedRequiredList.DEGREE_CERT_EN ? 0 : 1
// 英文简历
const interviewYwjl = { progress: 0 }
interviewYwjl.progress = missedRequiredList.RESUME_EN ? 0 : 1
// 成绩单 // 成绩单
const interviewCjd = { progress: 0 } const interviewCjd = { progress: 0 }
interviewCjd.progress = missedRequiredList.REPORT_CARD_CN || missedRequiredList.REPORT_CARD_EN ? 0 : 1 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 } const interviewTjx = { progress: 0 }
interviewTjx.progress = progress.INTERVIEW_APPLICATION.reco_letters interviewTjx.progress = progress.INTERVIEW_APPLICATION.reco_letters.progress
? progress.INTERVIEW_APPLICATION.reco_letters.progress
: 0
this.progress = { this.progress = {
applicaitonInfo, applicaitonInfo,
applicationTjx, applicationTjx,
applicationWfzzm, applicationWfzzm,
interviewZp,
interviewByzs,
interviewXwzs, interviewXwzs,
interviewXwzsEnglish,
interviewYwjl,
interviewCjd, interviewCjd,
interviewZp,
interviewTjx interviewTjx
} }
} else { } else {
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
</div> </div>
<h1>欢迎您</h1> <h1>欢迎您</h1>
<p class="t1"> <p class="t1">
紫荆-印第安纳大学Kelley商学院金融硕士(MSF)项目申请费<span>700</span>元,请扫描二维码支付完成报名。 申请SHMS瑞士酒店管理大学MBA项目,本项目的注册费,申请费共计<span>600</span>元,请扫描二维码缴费以完成报名。
</p> </p>
</div> </div>
<div class="qrcode-error" v-if="qrcodeError"> <div class="qrcode-error" v-if="qrcodeError">
......
...@@ -27,14 +27,13 @@ export default function(_this) { ...@@ -27,14 +27,13 @@ export default function(_this) {
_this.getApplication() _this.getApplication()
this.form.options.disabled = true this.form.options.disabled = true
_this.$router.push({ path: this.$route.path, query: { active: 'application_pay' } }) _this.$router.push({ path: this.$route.path, query: { active: 'application_pay' } })
// _this.$router.push({ path: '/my/interview' })
}, },
errorCallback() { errorCallback() {
_this.completeVisible = true _this.completeVisible = true
} }
}, },
form: { form: {
prev: { to: { query: { active: 'application_info', tab: 'application_info_honor' } } }, prev: { to: { query: { active: 'application_tjx' } } },
submitText: '提交报名申请', submitText: '提交报名申请',
model: { isAgree: [] }, model: { isAgree: [] },
options: {}, options: {},
...@@ -45,7 +44,7 @@ export default function(_this) { ...@@ -45,7 +44,7 @@ export default function(_this) {
model: 'isAgree', model: 'isAgree',
rules: [{ required: true, message: '请阅读协议', trigger: 'change' }], rules: [{ required: true, message: '请阅读协议', trigger: 'change' }],
prepend: prepend:
'<p>我提供的所有报名材料信息皆准确和完整。我同意在需要的情况下提交原件以确认我的报名资格。由于报名材料中的虚假、错误信息或重大遗漏导致不录取或取消学籍的后果由我个人承担。 我理解并同意所有报名材料归紫荆教育所有,无论考生录取与否均不退回。我授权紫荆教育使用报名表中的信息查询本人学习和工作记录。</p>' '<p>本人自愿申请SHMS瑞士酒店管理大学MBA项目,所有申请表内填写的内容属实,大专/本科学位属实,没有弄虚作假的行为。如有虚假,愿承担一切法律责任。</p>'
} }
] ]
} }
......
import info from './info' import info from './info'
// import tjx from './tjx' import tjx from './tjx'
// import wfzsm from './wfzzm' // import wfzsm from './wfzzm'
import declare from './declare' import declare from './declare'
...@@ -9,7 +9,7 @@ export default function(_this) { ...@@ -9,7 +9,7 @@ export default function(_this) {
title: '报名申请', title: '报名申请',
children: [ children: [
info(_this), info(_this),
// tjx(_this), tjx(_this),
// wfzsm(_this), // wfzsm(_this),
declare(_this), declare(_this),
{ {
......
...@@ -19,10 +19,10 @@ export default function(_this) { ...@@ -19,10 +19,10 @@ export default function(_this) {
const [first = {}, second = {}] = answers const [first = {}, second = {}] = answers
return { return {
qid1: first.qid || '1', qid1: first.qid || '1',
question1: '您为什么要申请美国印第安纳大学Kelley商学院金融学硕士项目?(200字以上,1000字以内)', question1: '这个MBA项目对你将来的职业发展有什么好处?你的职业发展目标是什么?',
answer1: first.answer, answer1: first.answer,
qid2: second.qid || '2', qid2: second.qid || '2',
question2: '您的短期和长期职业发展目标是什么?您打算如何达成此愿景?(200字以上,1000字以内)', question2: '您参加过其他的培训项目有哪些?请列出来。你是如何从这些学习经验中获益的?',
answer2: second.answer answer2: second.answer
} }
} }
...@@ -45,22 +45,22 @@ export default function(_this) { ...@@ -45,22 +45,22 @@ export default function(_this) {
items: [ items: [
{ {
type: 'v-input', type: 'v-input',
label: '您为什么要申请美国印第安纳大学Kelley商学院金融学硕士项目?(200字以上,1000字以内)', label: '这个MBA项目对你将来的职业发展有什么好处?你的职业发展目标是什么?',
model: 'answer1', model: 'answer1',
attrs: { type: 'textarea', rows: '8', maxlength: '1000', style: 'width:100%' }, attrs: { type: 'textarea', rows: '8', maxlength: '1000', style: 'width:100%' },
rules: [ rules: [
{ required: true, message: '请输入', trigger: 'blur' }, { required: true, message: '请输入', trigger: 'blur' },
{ min: 200, max: 1000, message: '长度在 200 到 1000 个字符', trigger: 'blur' } { min: 60, max: 1000, message: '长度在 60 到 1000 个字符', trigger: 'blur' }
] ]
}, },
{ {
type: 'v-input', type: 'v-input',
label: '您的短期和长期职业发展目标是什么?您打算如何达成此愿景?(200字以上,1000字以内)', label: '您参加过其他的培训项目有哪些?请列出来。你是如何从这些学习经验中获益的?',
model: 'answer2', model: 'answer2',
attrs: { type: 'textarea', rows: '8', maxlength: '1000', style: 'width:100%' }, attrs: { type: 'textarea', rows: '8', maxlength: '1000', style: 'width:100%' },
rules: [ rules: [
{ required: true, message: '请输入', trigger: 'blur' }, { required: true, message: '请输入', trigger: 'blur' },
{ min: 200, max: 1000, message: '长度在 200 到 1000 个字符', trigger: 'blur' } { min: 60, max: 1000, message: '长度在 60 到 1000 个字符', trigger: 'blur' }
] ]
} }
] ]
......
...@@ -31,7 +31,7 @@ export default function(_this) { ...@@ -31,7 +31,7 @@ export default function(_this) {
}, },
form: { form: {
prev: { to: { query: { active: 'application_info', tab: 'application_info_training' } }, isSubmit: true }, prev: { to: { query: { active: 'application_info', tab: 'application_info_training' } }, isSubmit: true },
next: { to: { query: { active: 'application_declare' } }, isSubmit: true }, next: { to: { query: { active: 'application_tjx' } }, isSubmit: true },
hasAdd: true, hasAdd: true,
options: { labelWidth: '140px' }, options: { labelWidth: '140px' },
items: [ items: [
......
...@@ -25,19 +25,28 @@ export default function(_this) { ...@@ -25,19 +25,28 @@ export default function(_this) {
] ]
this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 3 this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 3
const list = data.data.material.reco_letters || [] const list = data.data.material.reco_letters || []
return list.length ? list : [{}, {}] return list.length ? list : [{}, {}, {}]
} }
}, },
update: { update: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}/put`, action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}/put`,
beforeRequest(data) { 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 } return { reco_letters: data }
} }
}, },
form: { form: {
minlength: 2, minlength: 3,
prev: { to: { query: { active: 'application_info', tab: 'application_info_honor' } }, isSubmit: true }, prev: { to: { query: { active: 'application_info', tab: 'application_info_honor' } }, isSubmit: true },
next: { to: { query: { active: 'application_wfzzm' } }, isSubmit: true }, next: { to: { query: { active: 'application_declare' } }, isSubmit: true },
hasAdd: true, hasAdd: true,
disabled(data) { disabled(data) {
return !!data.letter_content return !!data.letter_content
......
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
<h5-pay @update="handleUpdateOrder" v-if="isWechat"></h5-pay> <h5-pay @update="handleUpdateOrder" v-if="isWechat"></h5-pay>
<qrcode-pay @update="handleUpdateOrder" v-else></qrcode-pay> <qrcode-pay @update="handleUpdateOrder" v-else></qrcode-pay>
<div class="pay-ft"> <div class="pay-ft">
<p class="t2">注释:该申请费提交后不予退还,缴纳申请费后,申请人还需提交以下文件:</p> <p class="t2">注释:再提交600元申请费后,申请人还需上传并提交如下文件。</p>
<p class="t2">本科及以上学历毕业证书扫描件②本科及以上学历学位证书扫描件③个人证件照④英文简历</p> <p class="t2">最高学历(学位)证书、②专科/本科中文或英文成绩单、③个人证件照(免冠、白底)</p>
<p class="t2">该申请费不退,请慎重缴费!</p> <p class="t2">该申请费不退,请慎重缴费!</p>
</div> </div>
<el-dialog <el-dialog
......
...@@ -308,30 +308,27 @@ export default { ...@@ -308,30 +308,27 @@ export default {
{ label: '荣誉奖励', code: 'title' }, { label: '荣誉奖励', code: 'title' },
{ label: '证书颁发机构', code: 'institution_cn' } { label: '证书颁发机构', code: 'institution_cn' }
] ]
},
{
title: '推荐信',
code: 'reco_letters',
edit: { to: { path: '/my/application', query: { active: 'application_tjx' } } },
isMultiple: true,
items: [
{ label: '推荐人姓名', code: 'provider_name' },
{ label: '推荐人电话', code: 'provider_phone_number' },
{ label: '推荐人邮箱', code: 'provider_email' },
{ label: '与推荐人关系', code: 'provider_relationship' },
{ label: '推荐人工作单位', code: 'provider_company_name', visible: () => this.isManager },
{ label: '推荐人职务', code: 'provider_job_title', visible: () => this.isManager },
{ label: '推荐信内容', code: 'letter_content', visible: () => this.isManager }
]
} }
// { // {
// title: '推荐信',
// code: 'reco_letters',
// edit: { to: { path: '/my/application', query: { active: 'application_tjx' } } },
// isMultiple: true,
// items: [
// { label: '推荐人姓名', code: 'provider_name' },
// { label: '推荐人电话', code: 'provider_phone_number' },
// { label: '推荐人邮箱', code: 'provider_email' },
// { label: '与推荐人关系', code: 'provider_relationship' },
// { label: '推荐人工作单位', code: 'provider_company_name', visible: () => this.isManager },
// { label: '推荐人职务', code: 'provider_job_title', visible: () => this.isManager },
// { label: '推荐信内容', code: 'letter_content', visible: () => this.isManager }
// ]
// }
// {
// title: '无犯罪证明', // title: '无犯罪证明',
// code: 'attachments', // code: 'attachments',
// edit: { to: { path: '/my/application', query: { active: 'application_wfzzm' } } }, // edit: { to: { path: '/my/application', query: { active: 'application_wfzzm' } } },
// computed(data) { // computed(data) {
// if (!data || !data.length) {
// return ''
// }
// const found = data.find(item => item.file_type_id === 'NO_CRIMINAL_CERT') // const found = data.find(item => item.file_type_id === 'NO_CRIMINAL_CERT')
// return found // return found
// ? `<a href="${found.oss_sign_url}" target="_blank"><img src="${found.oss_sign_url}" style="max-width:300px;margin:10px 0;"></a>` // ? `<a href="${found.oss_sign_url}" target="_blank"><img src="${found.oss_sign_url}" style="max-width:300px;margin:10px 0;"></a>`
......
export default { export default {
id: 'interview_byzs', id: 'interview_byz',
title: '毕业证书', title: '毕业证书',
get: { get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`, action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
...@@ -23,7 +23,7 @@ export default { ...@@ -23,7 +23,7 @@ export default {
} }
}, },
form: { form: {
next: { to: { query: { active: 'interview_xwzs' } } }, next: { to: { query: { active: 'interview_cjd' } } },
hasButton: false, hasButton: false,
options: {}, options: {},
items: [ items: [
...@@ -36,8 +36,7 @@ export default { ...@@ -36,8 +36,7 @@ export default {
deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`, deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
data: { file_type: 'DIPLOMA_CN' } data: { file_type: 'DIPLOMA_CN' }
}, },
append: append: '注意事项:需要将证书原件扫描或拍照后提交,请确保证书内容清晰可辨。'
'申请者需要将本科或以上毕业证书原件扫描或者拍照后提交。<br> 可上传多个文件,请确保证书号码清晰可辨。<br> 上传文件仅限“jpg,jpeg,png”格式,文件小于10MB。'
} }
] ]
} }
......
export default function(_this) { export default {
return {
id: 'interview_cjd', id: 'interview_cjd',
title: '成绩单(中+英)', title: '成绩单(中/英)',
get: { get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`, action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) { callback(data) {
...@@ -31,51 +30,27 @@ export default function(_this) { ...@@ -31,51 +30,27 @@ export default function(_this) {
) )
} }
}, },
update: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/submit/${process.env.projectId}`,
beforeRequest(data) {
return { submission_stage: 'INTERVIEW_APPLICATION' }
},
callback() {
this.form.options.disabled = true
_this.dialogVisible = true
_this.getApplication()
},
errorCallback() {
_this.completeVisible = true
}
},
form: { form: {
prev: { to: { query: { active: 'interview_ywjl' } } }, prev: { to: { query: { active: 'interview_byz' } } },
submitText: '申请面试', next: { to: { query: { active: 'interview_zp' } } },
model: { submission_stage: 'INTERVIEW_APPLICATION' }, hasButton: false,
options: { 'label-position': 'top' }, options: { 'label-position': 'top' },
hint: ` hint: `
<p>请将中英文成绩单原件扫描或者拍照后提交。</p> <p>成绩单:中/英文成绩单上传一个或多个。</p>
<p>获取途径:联系大学时就读学校相关部门(档案馆/教务处)获取成绩单。</p> <p>注意事项:需要将证书原件扫描或拍照后提交,请确保证书内容清晰可辨。</p>
`, `,
items: [ items: [
{ {
type: 'v-upload', type: 'v-upload',
label: '中文成绩单', label: '中/英文成绩单',
required: true,
model: 'REPORT_CARD_CN', model: 'REPORT_CARD_CN',
attrs: { attrs: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`, 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`, deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
data: { file_type: 'REPORT_CARD_CN' } data: { file_type: 'REPORT_CARD_CN' }
} }
},
{
type: 'v-upload',
label: '英文成绩单',
model: 'REPORT_CARD_EN',
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: 'REPORT_CARD_EN' }
}
} }
] ]
} }
}
} }
import byzs from './byzs' import byz from './byz'
import xwzs from './xwzs' import cjd from './cjd'
import ywjl from './ywjl'
import zp from './zp' import zp from './zp'
export default function(_this) { export default function(_this) {
return { return {
id: 'interview', id: 'interview',
title: '申请面试', title: '申请面试',
children: [byzs, xwzs, ywjl, zp(_this)] children: [byz, cjd, zp(_this)]
} }
} }
export default {
id: 'interview_xwzs',
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) > 2
const DEGREE_CERT_CN = attachments.filter(item => {
return item.file_type_id === 'DEGREE_CERT_CN'
})
return { DEGREE_CERT_CN }
}
},
form: {
prev: { to: { query: { active: 'interview_byzs' } } },
next: { to: { query: { active: 'interview_ywjl' } } },
hasButton: false,
options: {},
items: [
{
type: 'v-upload',
required: true,
model: 'DEGREE_CERT_CN',
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: 'DEGREE_CERT_CN' }
},
append:
'申请者需要将学位证书原件扫描或者拍照后提交。<br>可上传多个文件,请确保证书号码清晰可辨。<br>上传文件仅限“jpg,jpeg,png”格式,文件小于10MB。'
}
]
}
}
export default {
id: 'interview_xwzsywzm',
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) > 2
const DEGREE_CERT_EN = attachments.filter(item => {
return item.file_type_id === 'DEGREE_CERT_EN'
})
return { DEGREE_CERT_EN }
}
},
form: {
prev: { to: { query: { active: 'interview_xwzs' } } },
next: { to: { query: { active: 'interview_ywjl' } } },
hasButton: false,
options: {},
items: [
{
type: 'v-upload',
required: true,
model: 'DEGREE_CERT_EN',
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: 'DEGREE_CERT_EN' }
},
append: '请将学校出具的学位证书英文证明原件扫描或者拍照后提交。'
}
]
}
}
export default {
id: 'interview_ywjl',
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) > 2
const RESUME_EN = attachments.filter(item => {
return item.file_type_id === 'RESUME_EN'
})
return { RESUME_EN }
}
},
form: {
prev: { to: { query: { active: 'interview_xwzs' } } },
next: { to: { query: { active: 'interview_zp' } } },
hasButton: false,
options: {},
items: [
{
type: 'v-upload',
required: true,
model: 'RESUME_EN',
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: 'RESUME_EN' }
},
append: `
<p>请下载填写英文简历模板后上传 [<a href="https://zws-imgs-pub.oss-cn-beijing.aliyuncs.com/pc/kelley/%E8%8B%B1%E6%96%87%E7%AE%80%E5%8E%86.docx" target="_blank" download="英文简历模板">下载模板</a>]</p>
<p>请将英文简历填写完存为"pdf"格式上传,文件小于10MB。</p>`
}
]
}
}
...@@ -38,7 +38,7 @@ export default function(_this) { ...@@ -38,7 +38,7 @@ export default function(_this) {
} }
}, },
form: { form: {
prev: { to: { query: { active: 'interview_ywjl' } } }, prev: { to: { query: { active: 'interview_cjd' } } },
submitText: '申请面试', submitText: '申请面试',
model: { submission_stage: 'INTERVIEW_APPLICATION' }, model: { submission_stage: 'INTERVIEW_APPLICATION' },
options: {}, options: {},
...@@ -49,11 +49,10 @@ export default function(_this) { ...@@ -49,11 +49,10 @@ export default function(_this) {
attrs: { attrs: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`, 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`, deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
data: { file_type: 'PERSONAL_PHOTO_FOR_ID' }, data: { file_type: 'PERSONAL_PHOTO_FOR_ID' }
limit: 1
}, },
append: prepend: '2寸照片:以电子版的形式上传文件',
'申请者需要上传本人半年以内的两寸彩色近照。<br> 只需上传一个文件,且照片完整、干净。<br> 上传文件仅限“jpg,jpeg,gif,png”格式的图片文件,且文件小于10MB。' append: '注意事项:需要将证书原件扫描或拍照后提交,请确保证书内容清晰可辨。'
} }
] ]
} }
......
...@@ -16,13 +16,14 @@ ...@@ -16,13 +16,14 @@
</vue-form> </vue-form>
<app-complete :type="1" v-model="completeVisible"></app-complete> <app-complete :type="1" v-model="completeVisible"></app-complete>
<el-dialog <el-dialog
title="您的申请资料已提交成功" title="资料提交成功"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
:center="true" :center="true"
:close-on-click-modal="false" :close-on-click-modal="false"
width="348px" width="348px"
> >
<div class="dialog-tips"> <div class="dialog-tips">
<p>请注意接听招办老师的邀约电话</p>
<div class="icon"><img src="https://webapp-pub.ezijing.com/project/application/images/icon_success.png" /></div> <div class="icon"><img src="https://webapp-pub.ezijing.com/project/application/images/icon_success.png" /></div>
</div> </div>
<template #footer> <template #footer>
...@@ -44,7 +45,7 @@ export default { ...@@ -44,7 +45,7 @@ export default {
const menus = getMenu(this) const menus = getMenu(this)
return { return {
menus: [menus], menus: [menus],
currentActive: 'interview_byzs', currentActive: 'interview_byz',
completeVisible: false, completeVisible: false,
dialogVisible: false, dialogVisible: false,
detail: null detail: null
...@@ -55,7 +56,7 @@ export default { ...@@ -55,7 +56,7 @@ export default {
immediate: true, immediate: true,
handler(route) { handler(route) {
const { query = {} } = route const { query = {} } = route
this.currentActive = query.active || 'interview_byzs' this.currentActive = query.active || 'interview_byz'
} }
}, },
showSubmitedDialog(value) { showSubmitedDialog(value) {
...@@ -97,7 +98,7 @@ export default { ...@@ -97,7 +98,7 @@ export default {
}, },
handlePageChange(value) { handlePageChange(value) {
this.currentActive = value this.currentActive = value
this.$router.push({ path: this.$route.path, query: { active: value } }).catch(() => {}) this.$router.push({ path: this.$route.path, query: { active: value } })
console.log('页面切换了', value) console.log('页面切换了', value)
}, },
handleSuccess(data) { handleSuccess(data) {
......
<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
}
},
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_02.png" height="160" />
</div>
<h1>请使用微信扫描下方二维码</h1>
</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 {
margin-top: 40px;
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;
}
}
</style>
<template>
<div v-if="loaded">
<index-welcome @update="handleUpdate" v-if="!isSubmited" />
<index-pay v-else />
</div>
</template>
<script>
import IndexWelcome from './indexWelcome.vue'
import IndexPay from './indexPay.vue'
import * as api from '@/api/my'
export default {
components: { IndexWelcome, IndexPay },
data() {
return {
loaded: false,
progress: {}
}
},
methods: {
// 获取报名信息
getApplication() {
this.loaded = false
api.getApplication().then(response => {
const { progress = {} } = response.data
this.progress = progress
// 缴费成功
if (progress.PREPAYMENT.total_progress) {
this.$router.push('/my/account')
} else {
this.loaded = true
}
})
},
handleUpdate(data) {
const { progress } = data
this.progress = progress
}
},
computed: {
isSubmited() {
const { FILLING = {} } = this.progress
if (FILLING && FILLING.basic_info) {
return !!FILLING.basic_info.progress
}
return false
}
},
beforeCreate() {
document.body.style.background = '#fff'
},
created() {
this.$router.replace('/my/account')
},
beforeMount() {
// this.getApplication()
},
destroyed() {
document.body.style = ''
}
}
</script>
<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">
欢迎您申请紫荆-印第安纳大学Kelley商学院金融硕士(MSF)<br />
申请流程:①支付报名费②填写报名资料并提供相关材料(身份证扫描件、毕业证书扫描件、学位证书扫描件、英文简历、2寸照片)③参加面试④获得录取⑤缴纳学费并签署入学协议⑥入学学习(办理入学手续:提供成绩单、学籍注册等)<br />
申请费提交后不予退还
</p>
</div>
<el-dialog
title="报名费缴费成功"
:visible.sync="dialogVisible"
:center="true"
:show-close="false"
:close-on-click-modal="false"
width="348px"
>
<div class="dialog-pay">
<p>请按照要求填写报名所需材料,完成“提交报名申请”及“申请面试”</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="toApplication">立即预约</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/account')
},
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>
<template>
<div class="welcome">
<div class="top">
<div class="pic">
<img src="https://webapp-pub.ezijing.com/project/application/images/my_pay_01.png" />
</div>
<h1>欢迎您</h1>
<p class="t1">
申请紫荆-美国印第安纳大学Kelley商学院金融学硕士项目,请在填写以下内容并<br />
提交报名申请后,扫码支付本项目的申请费共计<span>700</span>元。
</p>
</div>
<div class="form">
<el-form :model="ruleForm" :rules="rules" label-width="70px" ref="ruleForm">
<el-form-item label="姓名" prop="real_name_cn">
<el-input v-model="ruleForm.real_name_cn"></el-input>
</el-form-item>
<el-form-item label="手机号" prop="phone_number">
<el-input v-model="ruleForm.phone_number" :maxlength="11"></el-input>
</el-form-item>
<el-form-item label="邮箱" prop="email">
<el-input v-model="ruleForm.email"></el-input>
</el-form-item>
<div class="buttons">
<el-button type="primary" class="button-submit" @click="handleSubmit">提交</el-button>
</div>
</el-form>
</div>
</div>
</template>
<script>
import * as api from '@/api/my'
export default {
data() {
return {
material: {},
progress: {},
ruleForm: {
real_name_cn: '',
phone_number: '',
email: ''
},
rules: {
real_name_cn: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
phone_number: [{ required: true, pattern: /^1[3-9]\d{9}$/, message: '请输入手机号', trigger: 'blur' }],
email: [{ type: 'email', required: true, message: '请输入邮箱', trigger: 'blur' }]
}
}
},
methods: {
handleSubmit() {
this.$refs.ruleForm.validate().then(this.handleSubmitRequest)
},
handleSubmitRequest() {
const params = {
basic_info: this.ruleForm
}
api.updateApplication(params).then(response => {
if (response.error === '0') {
this.$emit('update', response.data)
} else {
this.$message({ type: 'error', message: response.message })
}
})
}
}
}
</script>
<style lang="scss" scoped>
.welcome {
margin: 0 auto;
padding: 20px 0;
}
.top {
padding: 40px 0;
.pic {
text-align: center;
}
h1 {
padding: 20px 0;
font-size: 24px;
font-weight: 500;
color: #222;
line-height: 1;
text-align: center;
}
}
.t1 {
font-size: 14px;
color: #262626;
line-height: 20px;
text-align: center;
span {
color: #ffa448;
}
}
.buttons {
text-align: center;
}
.button-submit {
width: 100px;
margin: 0 auto;
}
.form {
max-width: 350px;
margin: 0 auto;
}
</style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论