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

chore(报名申请): 修改报名配置

上级 c3aac854
...@@ -9,7 +9,8 @@ ...@@ -9,7 +9,8 @@
"version": "3.0.14", "version": "3.0.14",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@ezijing/vue-form": "^2.3.12", "@ezijing/vue-form": "^2.3.15",
"@vant/area-data": "^1.3.2",
"animate.css": "^4.1.0", "animate.css": "^4.1.0",
"axios": "^0.19.2", "axios": "^0.19.2",
"core-js": "^3.6.5", "core-js": "^3.6.5",
...@@ -1217,9 +1218,9 @@ ...@@ -1217,9 +1218,9 @@
} }
}, },
"node_modules/@ezijing/vue-form": { "node_modules/@ezijing/vue-form": {
"version": "2.3.12", "version": "2.3.15",
"resolved": "https://registry.npmmirror.com/@ezijing/vue-form/-/vue-form-2.3.12.tgz", "resolved": "https://registry.npmjs.org/@ezijing/vue-form/-/vue-form-2.3.15.tgz",
"integrity": "sha512-qmMqfkqQL2+abSAiD4+GEOGQJOmKeGyk45pSBIhNJQ580SMTE97W+db5peUI710zs+Qst/Y5ypRsvWhwgM6d5g==", "integrity": "sha512-SI3WPWxZbzVkYhOaiiIGjxlRf9Ii9VqPfzqHuzHoCigz3vC4x/BXkZS0dUTyK9F3jvWpU1AQxCBxsAvsiEbSGg==",
"dependencies": { "dependencies": {
"@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0",
"@vue/babel-preset-jsx": "^1.1.2", "@vue/babel-preset-jsx": "^1.1.2",
...@@ -1352,6 +1353,11 @@ ...@@ -1352,6 +1353,11 @@
"node": ">= 8" "node": ">= 8"
} }
}, },
"node_modules/@vant/area-data": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/@vant/area-data/-/area-data-1.3.2.tgz",
"integrity": "sha512-KHGvvIxApxCXDTzsh5hPsIVrF4ll5J3pNgYNL3lmNJxye7aWySK97EgXiprVee+FshVa1jVW4esJ7VyW0l94WQ=="
},
"node_modules/@vue/babel-helper-vue-jsx-merge-props": { "node_modules/@vue/babel-helper-vue-jsx-merge-props": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz", "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz",
...@@ -15335,9 +15341,9 @@ ...@@ -15335,9 +15341,9 @@
} }
}, },
"@ezijing/vue-form": { "@ezijing/vue-form": {
"version": "2.3.12", "version": "2.3.15",
"resolved": "https://registry.npmmirror.com/@ezijing/vue-form/-/vue-form-2.3.12.tgz", "resolved": "https://registry.npmjs.org/@ezijing/vue-form/-/vue-form-2.3.15.tgz",
"integrity": "sha512-qmMqfkqQL2+abSAiD4+GEOGQJOmKeGyk45pSBIhNJQ580SMTE97W+db5peUI710zs+Qst/Y5ypRsvWhwgM6d5g==", "integrity": "sha512-SI3WPWxZbzVkYhOaiiIGjxlRf9Ii9VqPfzqHuzHoCigz3vC4x/BXkZS0dUTyK9F3jvWpU1AQxCBxsAvsiEbSGg==",
"requires": { "requires": {
"@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0",
"@vue/babel-preset-jsx": "^1.1.2", "@vue/babel-preset-jsx": "^1.1.2",
...@@ -15471,6 +15477,11 @@ ...@@ -15471,6 +15477,11 @@
} }
} }
}, },
"@vant/area-data": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/@vant/area-data/-/area-data-1.3.2.tgz",
"integrity": "sha512-KHGvvIxApxCXDTzsh5hPsIVrF4ll5J3pNgYNL3lmNJxye7aWySK97EgXiprVee+FshVa1jVW4esJ7VyW0l94WQ=="
},
"@vue/babel-helper-vue-jsx-merge-props": { "@vue/babel-helper-vue-jsx-merge-props": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz", "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz",
......
...@@ -71,7 +71,8 @@ ...@@ -71,7 +71,8 @@
"webpack-merge": "^4.2.2" "webpack-merge": "^4.2.2"
}, },
"dependencies": { "dependencies": {
"@ezijing/vue-form": "^2.3.12", "@ezijing/vue-form": "^2.3.15",
"@vant/area-data": "^1.3.2",
"animate.css": "^4.1.0", "animate.css": "^4.1.0",
"axios": "^0.19.2", "axios": "^0.19.2",
"core-js": "^3.6.5", "core-js": "^3.6.5",
......
...@@ -111,6 +111,15 @@ export function sendToProvider(letterId) { ...@@ -111,6 +111,15 @@ export function sendToProvider(letterId) {
`/enrollment/v1.0/application-materials/reco-letters/send-invitation-to-provider/${projectId}/${letterId}` `/enrollment/v1.0/application-materials/reco-letters/send-invitation-to-provider/${projectId}/${letterId}`
) )
} }
/**
* 发送推荐信
*/
export function sendToProviders() {
return httpRequest.get(
`/enrollment/v1.0/application-materials/reco-letters/send-invitation-to-providers/${projectId}`
)
}
/** /**
* 退出登录 * 退出登录
*/ */
...@@ -134,3 +143,17 @@ export function changeFileStatus(userId, recordId, status) { ...@@ -134,3 +143,17 @@ export function changeFileStatus(userId, recordId, status) {
export function getOpenId(data) { export function getOpenId(data) {
return httpRequest.post('/usercenter/v1/wechat/get-openid', data) return httpRequest.post('/usercenter/v1/wechat/get-openid', data)
} }
/**
* 签名
*/
export function createSign(data) {
return httpRequest.post('/usercenter/v1/sign/sign', data)
}
/**
* 获取签名文档
*/
export function getSignDocument(params) {
return httpRequest.get('/usercenter/v1/sign/document', params)
}
import cAction from '@action' import cAction from '@action'
import store from '@/store'
import { Message } from 'element-ui' import { Message } from 'element-ui'
export default class Before { export default class Before {
...@@ -9,7 +9,7 @@ export default class Before { ...@@ -9,7 +9,7 @@ export default class Before {
async update(to, from, next) { async update(to, from, next) {
if (to.meta && to.meta.userRole) { if (to.meta && to.meta.userRole) {
const isLogin = await this.isLogin() const isLogin = store.state.user.id || (await store.dispatch('checkLogin'))
if (isLogin) { if (isLogin) {
next() next()
} else { } else {
......
...@@ -8,14 +8,14 @@ ...@@ -8,14 +8,14 @@
<!-- <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> --> <!-- <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> -->
<!-- <meta http-equiv="Pragma" content="no-cache" /> --> <!-- <meta http-equiv="Pragma" content="no-cache" /> -->
<!-- <meta http-equiv="Expires" content="0" /> --> <!-- <meta http-equiv="Expires" content="0" /> -->
<title>紫荆教育-威斯康星协和大学-家庭教育硕士</title> <title>紫荆教育-玛丽伍德大学数字领导力方向MBA</title>
<meta <meta
name="description" name="description"
content="美国威斯康星协和大学(Concordia University Wisconsin,简称CUW)成立于1881年,是一所综合型非营利性的综合型大学。学校位于美国威斯康星州Mequon市,坐落于美国五大湖之一的风光旖旎的密歇根湖畔。CUW是美国著名的协和大学系统(Concordia University System)的六所大学中排名最高、历史最悠久、规模最大的高校。" content="美国玛丽伍德大学(Marywood University)创办于 1915 年,Money评选的全美最具性价比大学,玛丽伍德大学是一所拥有128名全职教授、超过 3,000 名在校学生的综合性大学,大学设置超过100个本科、硕士及博士专业"
/> />
<meta <meta
name="keywords" name="keywords"
content="家庭教育硕士,美国威斯康星协和大学,威斯康星协和大学,教育硕士,家庭教育,康考迪亚,美国威斯康星康考迪亚大学" content="工商管理硕士,MBA硕士,免联考MBA,国际MBA,通用MBA,在职MBA,在线MBA,MBA,商学院,管理学,玛丽伍德大学,玛丽伍德,Marywood"
/> />
<!-- <meta <!-- <meta
name="viewport" name="viewport"
......
...@@ -3,12 +3,12 @@ ...@@ -3,12 +3,12 @@
<div class="layout_com_page_banner"> <div class="layout_com_page_banner">
<div class="details-news-body"> <div class="details-news-body">
<div class="details-news-body-title"> <div class="details-news-body-title">
<span class="font-size-30">{{dataNews.title}}</span> <span class="font-size-30">{{ dataNews.title }}</span>
<div class="padd-10"> <div class="padd-10">
<span class="font-size-24">{{dataNews.created_time | formatDate}}</span> <span class="font-size-24">{{ dataNews.created_time | formatDate }}</span>
<span <span class="font-size-24 color-to">{{
class="font-size-24 color-to" dataNews.created_time | formatDate(dataNews.created_time, true)
>{{dataNews.created_time | formatDate(dataNews.created_time, true)}}</span> }}</span>
</div> </div>
<span class="border-2px"></span> <span class="border-2px"></span>
</div> </div>
...@@ -104,6 +104,7 @@ export default { ...@@ -104,6 +104,7 @@ export default {
.details-news { .details-news {
background: #fff; background: #fff;
min-height: 1000px; min-height: 1000px;
margin-top: 80px;
height: auto; height: auto;
.layout_com_page_banner { .layout_com_page_banner {
height: 100%; height: 100%;
......
...@@ -3,11 +3,13 @@ ...@@ -3,11 +3,13 @@
<header class="header"> <header class="header">
<div class="inner"> <div class="inner">
<div class="logo"> <div class="logo">
<router-link to="/"><img src="https://webapp-pub.ezijing.com/project/cuw/cuw_logo_blue.svg"/></router-link> <router-link to="/"
><img src="https://webapp-pub.ezijing.com/project/marywood/marywood_logo.svg"
/></router-link>
</div> </div>
</div> </div>
</header> </header>
<nav class="nav"><h1 class="title">威斯康星协和大学家庭教育硕士项目推荐信</h1></nav> <nav class="nav"><h1 class="title">玛丽伍德大学工商管理硕士项目推荐信</h1></nav>
<section class="content"> <section class="content">
<el-form <el-form
:model="ruleForm" :model="ruleForm"
...@@ -45,7 +47,9 @@ ...@@ -45,7 +47,9 @@
</section> </section>
<el-dialog title="推荐信提交成功" :visible.sync="dialogVisible" :center="true" width="348px"> <el-dialog title="推荐信提交成功" :visible.sync="dialogVisible" :center="true" width="348px">
<div style="text-align: center"><img src="../../assets/images/icon_success.png" /></div> <div style="text-align: center">
<img src="https://webapp-pub.ezijing.com/project/application/images/icon_success.png" />
</div>
<template #footer> <template #footer>
<el-button type="primary" @click="toHome">了解项目</el-button> <el-button type="primary" @click="toHome">了解项目</el-button>
</template> </template>
...@@ -69,10 +73,7 @@ export default { ...@@ -69,10 +73,7 @@ export default {
}, },
rules: { rules: {
provider_name: [{ required: true, message: '请输入姓名', trigger: 'blur' }], provider_name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
letter_content: [ letter_content: [{ required: true, message: '请输入推荐信内容', trigger: 'blur' }],
{ required: true, message: '请输入推荐信内容', trigger: 'blur' },
{ min: 200, message: '长度在 200 个字符以上', trigger: 'blur' }
],
provider_phone_number: [{ required: true, pattern: /^1[3-9]\d{9}$/, 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_company_name: [{ required: true, message: '请输入工作单位', trigger: 'blur' }],
provider_job_title: [{ required: true, message: '请输入职务', trigger: 'blur' }] provider_job_title: [{ required: true, message: '请输入职务', trigger: 'blur' }]
...@@ -102,7 +103,6 @@ export default { ...@@ -102,7 +103,6 @@ export default {
// 提交推荐信 // 提交推荐信
handleAddRequest() { handleAddRequest() {
api.addLetter(this.userId, this.letterId, this.ruleForm).then(response => { api.addLetter(this.userId, this.letterId, this.ruleForm).then(response => {
console.log(response)
const { error, message } = response const { error, message } = response
if (error.toString() === '0') { if (error.toString() === '0') {
this.dialogVisible = true this.dialogVisible = true
...@@ -149,7 +149,7 @@ export default { ...@@ -149,7 +149,7 @@ export default {
} }
} }
.nav { .nav {
background-color: rgba(26, 86, 50, 1); background-color: var(--main-color);
.title { .title {
font-size: 24px; font-size: 24px;
font-weight: 600; font-weight: 600;
......
...@@ -110,7 +110,8 @@ export default { ...@@ -110,7 +110,8 @@ export default {
color: #fff; color: #fff;
} }
.main .title .icon { .main .title .icon {
background: url('https://webapp-pub.ezijing.com/project/cuw/cuw_logo_white.svg') no-repeat center center; background: url('https://webapp-pub.ezijing.com/project/marywood/marywood_logo.svg') no-repeat center center;
fill: #fff;
background-size: contain; background-size: contain;
width: 166px; width: 166px;
height: 40px; height: 40px;
......
...@@ -2,7 +2,9 @@ ...@@ -2,7 +2,9 @@
<div class="my"> <div class="my">
<div class="card"> <div class="card">
<div class="result"> <div class="result">
<div class="result-left"><img src="../../../assets/images/my_icon.png" />招生办反馈</div> <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 class="result-right">{{ result.submit_status_desc || '未收到报名信息' }}</div>
</div> </div>
</div> </div>
...@@ -24,10 +26,10 @@ ...@@ -24,10 +26,10 @@
<div class="inner"> <div class="inner">
<div class="welcome-close" @click="handleClose"></div> <div class="welcome-close" @click="handleClose"></div>
<div class="welcome-main"> <div class="welcome-main">
<img src="../../../assets/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>美国玛丽伍德大学</h2>
<div class="welcome-button" @click="handleStart">马上开始</div> <div class="welcome-button" @click="handleStart">马上开始</div>
</div> </div>
</div> </div>
...@@ -43,9 +45,7 @@ import 'driver.js/dist/driver.min.css' ...@@ -43,9 +45,7 @@ import 'driver.js/dist/driver.min.css'
export default { export default {
name: 'AppHome', name: 'AppHome',
data() { data() {
const user = window.G.UserInfo
return { return {
user,
material: {}, material: {},
progress: {}, progress: {},
submissionStage: { submissionStage: {
...@@ -59,6 +59,9 @@ export default { ...@@ -59,6 +59,9 @@ export default {
} }
}, },
computed: { computed: {
user() {
return this.$store.state.user
},
activeProgress() { activeProgress() {
for (const key in this.submissionStage) { for (const key in this.submissionStage) {
const list = this.submissionStage[key] const list = this.submissionStage[key]
...@@ -84,6 +87,11 @@ export default { ...@@ -84,6 +87,11 @@ export default {
const { data, error, message } = response const { data, error, message } = response
if (error.toString() === '0') { if (error.toString() === '0') {
const { material, progress } = data const { material, progress } = data
// 尚未缴费
if (progress.PREPAYMENT.total_progress !== 1) {
this.$router.push('/my')
return
}
this.material = material this.material = material
this.progress = progress this.progress = progress
const welcomeShowed = window.localStorage.getItem(this.user.id) === 'true' const welcomeShowed = window.localStorage.getItem(this.user.id) === 'true'
...@@ -204,21 +212,21 @@ export default { ...@@ -204,21 +212,21 @@ export default {
} }
} }
.nav-application { .nav-application {
background-image: url('../../../assets/images/my_01.png'); background-image: url('https://webapp-pub.ezijing.com/project/application/images/my_01.png');
&:hover { &:hover {
background-image: url('../../../assets/images/my_01_hover.png'); background-image: url('https://webapp-pub.ezijing.com/project/application/images/my_01_hover.png');
} }
} }
.nav-interview { .nav-interview {
background-image: url('../../../assets/images/my_02.png'); background-image: url('https://webapp-pub.ezijing.com/project/application/images/my_02.png');
&:hover { &:hover {
background-image: url('../../../assets/images/my_02_hover.png'); background-image: url('https://webapp-pub.ezijing.com/project/application/images/my_02_hover.png');
} }
} }
.nav-admission { .nav-admission {
background-image: url('../../../assets/images/my_03.png'); background-image: url('https://webapp-pub.ezijing.com/project/application/images/my_03.png');
&:hover { &:hover {
background-image: url('../../../assets/images/my_03_hover.png'); background-image: url('https://webapp-pub.ezijing.com/project/application/images/my_03_hover.png');
} }
} }
.result { .result {
...@@ -257,7 +265,7 @@ export default { ...@@ -257,7 +265,7 @@ export default {
float: right; float: right;
width: 23px; width: 23px;
height: 23px; height: 23px;
background: url('../../../assets/images/welcome_close.png') no-repeat; background: url('https://webapp-pub.ezijing.com/project/application/images/welcome_close.png') no-repeat;
background-size: contain; background-size: contain;
cursor: pointer; cursor: pointer;
} }
......
...@@ -95,7 +95,6 @@ export default { ...@@ -95,7 +95,6 @@ export default {
api api
.sendCode({ account: this.ruleForm.account }) .sendCode({ account: this.ruleForm.account })
.then(response => { .then(response => {
console.log(response)
if (response.code === 0) { if (response.code === 0) {
this.$message({ type: 'success', message: '验证码已发送' }) this.$message({ type: 'success', message: '验证码已发送' })
} else { } else {
......
<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>
export default {
id: 'admission_byzs',
title: '毕业证书注册备案表',
get: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.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 DIPLOMA_FILING_TABLE = attachments.filter(item => {
return item.file_type_id === 'DIPLOMA_FILING_TABLE'
})
return { DIPLOMA_FILING_TABLE }
}
},
form: {
prev: { to: { query: { active: 'admission_cjd' } } },
next: { to: { query: { active: 'admission_ywjl' } } },
hasButton: false,
options: {},
items: [
{
type: 'v-upload',
required: true,
model: 'DIPLOMA_FILING_TABLE',
attrs: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'DIPLOMA_FILING_TABLE' }
},
prepend: `
<p>学信网《教育部学历证书电子注册备案表》[<a href="https://zws-imgs-pub.ezijing.com/pc/sofia/%E6%AF%95%E4%B8%9A%E8%AF%81%E4%B9%A6%E6%B3%A8%E5%86%8C%E5%A4%87%E6%A1%88%E8%A1%A8.pdf" target="_blank" download="毕业证书注册备案表">下载流程表</a>]
<p>学历在学信网可查的同学,请下载学信网电子注册备案表提交到系统,具体获取流程请</p>
<p>下载附件 上传文件仅限“jpg,jpeg,pdf,png”格式,文件小于10Mb。</p>
`
}
]
}
}
export default function(_this) {
return {
id: 'admission_cjd',
title: '成绩单(中+英)',
get: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.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_tjx' } } },
hasButton: false,
options: { 'label-position': 'top' },
hint: `
<p>请将中英文成绩单原件扫描或者拍照后提交。</p>
<p>获取途径:联系大学时就读学校相关部门(档案馆/教务处)获取成绩单。</p>
`,
items: [
{
type: 'v-upload',
label: '中文成绩单',
model: 'REPORT_CARD_CN',
attrs: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'REPORT_CARD_CN' },
accept: 'image/*'
}
},
{
type: 'v-upload',
label: '英文成绩单',
model: 'REPORT_CARD_EN',
attrs: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'REPORT_CARD_EN' },
accept: 'image/*'
}
}
]
}
}
}
import cjd from './cjd'
// import byzs from './byzs'
import ywjl from './ywjl'
import xy from './xy' import xy from './xy'
import xfjn from './xfjn' import xfjn from './xfjn'
import tjx from './tjx'
import xlrz from './xlrz'
import zp from './zp'
export default function(_this) { export default function(_this) {
return { return {
id: 'admission', id: 'admission',
title: '入学办理', title: '入学办理',
children: [xy(_this), xfjn(_this)] children: [cjd(_this), tjx(_this), ywjl, zp(_this), xy(_this), xfjn(_this), xlrz(_this)]
} }
} }
/**
* 推荐信
*/
export default function(_this) {
return {
id: 'admission_tjx',
title: '推荐信',
get: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.projectId}`,
callback(data) {
const {
submission_stage: submissionStage = 'FILLING',
reco_letters: list = [],
attachments = []
} = 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 attachment = attachments.reduce(
(result, item) => {
const types = ['RECOMMENDATION_LETTER', 'RECOMMENDATION_LETTER_2']
types.forEach(type => {
item.disabled = item.upload_operator_user_id !== _this.user.id
if (item.file_type_id === type) {
result.RECOMMENDATION_LETTER.push(item)
}
})
return result
},
{ RECOMMENDATION_LETTER: [] }
)
// this.form.options.disabled = list.length >= 2
return list.length
? list.map(item => Object.assign({}, item, attachment))
: [{ ...attachment }, { ...attachment }]
}
},
update: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.projectId}/put`,
beforeRequest(data) {
const letters = data.map(item => {
delete item.RECOMMENDATION_LETTER
return item
})
return { reco_letters: letters }
},
callback({ message }) {
// this.form.options.disabled = true
const letters = _this.detail.material.reco_letters || []
if (!letters.length) {
_this.sendToProviders()
_this.getApplication()
} else {
this.$message({ type: 'success', message })
}
}
},
form: {
minlength: 2,
prev: { to: { query: { active: 'admission_cjd' } }, isSubmit: true },
next: { to: { query: { active: 'admission_ywjl' } }, isSubmit: true },
hasAdd: true,
options: { disabled: false, labelWidth: '140px' },
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', 'REGISTRATION'].includes(_this.detail.material.submission_stage)
return data.id && !data.letter_content && editable
},
onClick(data) {
_this.sendToProvider(data)
}
},
{
text: '更换推荐人',
visible(data) {
const editable = ['PREPAYMENT', 'REGISTRATION'].includes(_this.detail.material.submission_stage)
return data.id && !data.letter_content && editable
},
onClick(data, $form) {
$form.validate().then(() => {
_this.changeProvider(data)
})
}
}
]
},
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' }]
}
],
appendItems: [
// 推荐信附件
{
type: 'v-upload',
label: '附件上传',
model: 'RECOMMENDATION_LETTER',
attrs: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'RECOMMENDATION_LETTER' },
accept: 'image/*'
},
rules: [{ type: 'array', required: true, message: '请上传推荐信附件', trigger: 'change' }],
append: '请上传推荐人署名的推荐信原件照片或扫描件 ',
class: 'upload-letter'
}
]
}
}
}
export default function(_this) { export default function(_this) {
return { return {
id: 'admission_xfjn', id: 'admission_xfjn',
title: '学费缴纳', title: '缴费凭证',
get: { get: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.projectId}`, action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.projectId}`,
callback(data) { callback(data) {
const { attachments = [], submission_stage: submissionStage = 'FILLING' } = data.data.material const { attachments = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
const stageList = ['FILLING', 'PREPAYMENT', 'INTERVIEW_APPLICATION', 'AUDITION', 'INTERVIEW', 'PAYMENT', 'REGISTRATION', 'CLOSED'] const stageList = [
'FILLING',
'PREPAYMENT',
'INTERVIEW_APPLICATION',
'AUDITION',
'INTERVIEW',
'PAYMENT',
'REGISTRATION',
'CLOSED'
]
this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 6 this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 6
const PAYMENT_VOUCHER = attachments.filter(item => { const PAYMENT_VOUCHER = attachments.filter(item => {
return item.file_type_id === 'PAYMENT_VOUCHER' return item.file_type_id === 'PAYMENT_VOUCHER'
...@@ -16,16 +25,17 @@ export default function(_this) { ...@@ -16,16 +25,17 @@ export default function(_this) {
}, },
form: { form: {
prev: { to: { query: { active: 'admission_xy' } } }, prev: { to: { query: { active: 'admission_xy' } } },
next: { to: { query: { active: 'admission_xlrz' } } },
hasButton: false, hasButton: false,
options: { 'label-position': 'top' }, options: { 'label-position': 'top' },
hint: `<div style="line-height:34px;"> 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></div>`, <p>支付宝户名:清控紫荆(北京)教育科技股份有限公司</p>`,
items: [ items: [
{ {
type: 'v-upload', type: 'v-upload',
...@@ -36,8 +46,8 @@ export default function(_this) { ...@@ -36,8 +46,8 @@ export default function(_this) {
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`, deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'PAYMENT_VOUCHER' } data: { file_type: 'PAYMENT_VOUCHER' }
}, },
append: `<div style="line-height:24px;margin-top:10px;">申请者可将转账/支付缴费凭证截图或拍照后提交。<br/> append: `申请者可将转账/支付缴费凭证截图或拍照后提交。<br>
上传文件仅限“jpg,jpeg,pdf,png”格式,文件小于10Mb。</div>` 上传多个文件,请打印出来检查无误后再上传。用A4纸打印后内容需显示完整、格式整齐、字迹清晰可辨。上传文件仅限“jpg,jpeg,pdf,png”格式,文件小于10Mb。`
} }
] ]
} }
......
export default function(_this) {
return {
id: 'admission_xlrz',
title: '学历认证备案表',
get: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.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 ACADEMIC_CERTIFICATE_TABLE = attachments.filter(item => {
return item.file_type_id === 'ACADEMIC_CERTIFICATE_TABLE'
})
return { ACADEMIC_CERTIFICATE_TABLE }
}
},
form: {
prev: { to: { query: { active: 'admission_xfjn' } } },
hasButton: false,
options: { 'label-position': 'top' },
hint: `
<p>请上传《教育部学历证书电子注册备案表》英文版</p>
<p>申请途径:学信网 <a href="https://www.chsi.com.cn" target="_blank" style="color:blue">https://www.chsi.com.cn</a></p>`,
items: [
{
type: 'v-upload',
model: 'ACADEMIC_CERTIFICATE_TABLE',
attrs: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'ACADEMIC_CERTIFICATE_TABLE' }
},
prepend: `
<div><a href="https://webapp-pub.ezijing.com/project/marywood/xlzm.png" target="_blank"><img src="https://webapp-pub.ezijing.com/project/marywood/xlzm.png" width="174px" /></a></div>
<div style="width:174px;text-align:center;margin-bottom:20px;">英文样本</div>
`
}
]
}
}
}
...@@ -24,6 +24,7 @@ export default function(_this) { ...@@ -24,6 +24,7 @@ export default function(_this) {
} }
}, },
form: { form: {
prev: { to: { query: { active: 'admission_zp' } } },
next: { to: { query: { active: 'admission_xfjn' } } }, next: { to: { query: { active: 'admission_xfjn' } } },
hasButton: false, hasButton: false,
options: {}, options: {},
...@@ -37,14 +38,10 @@ export default function(_this) { ...@@ -37,14 +38,10 @@ export default function(_this) {
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`, deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'ADMISSION_AGREEMENT' } data: { file_type: 'ADMISSION_AGREEMENT' }
}, },
// prepend: `
// <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%AE2%EF%BC%88%E8%AF%B7%E4%B8%8B%E8%BD%BD%E6%A8%A1%E6%9D%BF%E5%A1%AB%E5%86%99%E5%90%8E%E4%B8%8A%E4%BC%A0%E7%85%A7%E7%89%87%EF%BC%89.docx" target="_blank" download>下载入学协议</a></p>
// <p>第二步:申请者可将签字后的入学协议原件扫描或拍照后提交。学员应仔细阅读《入学协议》以及课程介绍,如对入学协议或课程有异议,请第一时间与课程顾问咨询确认。请用A4纸打印后,在入学协议上签上姓名和日期,内容需显示完整、格式整齐、字迹清晰可辨。点击下方按钮,上传文件</p>
// `
prepend: ` prepend: `
<p>第一步:请以录取通知书的协议为准</p> <p><a href="https://zws-imgs-pub.ezijing.com/pc/marywood/%E5%85%A5%E5%AD%A6%E5%8D%8F%E8%AE%AE.pdf" target="_blank" download="入学协议" style="color:blue">下载入学协议</a></p>
<p>第二步:申请者可将签字后的入学协议原件扫描或拍照后提交。学员应仔细阅读《入学协议》以及课程介绍,如对入学协议或课程有异议,请第一时间与课程顾问咨询确认。请用A4纸打印后,在入学协议上签上姓名和日期,内容需显示完整、格式整齐、字迹清晰可辨。点击下方按钮,上传文件</p> <p>申请者可将签字后的入学协议原件扫描或拍照后提交。</p>
<p>学员应仔细阅读《入学协议》以及课程介绍,如对入学协议或课程有异议,请第一时间与课程顾问咨询确认。请用A4纸打印后,在入学协议上签上姓名和日期,内容需显示完整、格式整齐、字迹清晰可辨。上传文件仅限“jpg,jpeg,pdf,png”格式,文件小于10Mb。</p>
` `
} }
] ]
......
export default {
id: 'admission_ywjl',
title: '英文简历',
get: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.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 RESUME_EN = attachments.filter(item => {
return item.file_type_id === 'RESUME_EN'
})
return { RESUME_EN }
}
},
form: {
prev: { to: { query: { active: 'admission_tjx' } } },
next: { to: { query: { active: 'admission_zp' } } },
hasButton: false,
options: {},
items: [
{
type: 'v-upload',
required: true,
model: 'RESUME_EN',
attrs: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'RESUME_EN' },
limit: 1
},
append: `
<p>请下载填写英文简历模板后上传 [<a href="https://webapp-pub.ezijing.com/project/marywood/marywood%E8%8B%B1%E6%96%87%E7%AE%80%E5%8E%86%E6%A8%A1%E6%9D%BF.doc" target="_blank" download="英文简历模板" style="color:blue">下载模板</a>]</p>
<p>请将英文简历填写完存为"word"格式上传,文件小于10MB。</p>`
}
]
}
}
export default function(_this) {
return {
id: 'admission_zp',
title: '证件照片',
get: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.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 PERSONAL_PHOTO_FOR_ID = attachments.filter(item => {
return item.file_type_id === 'PERSONAL_PHOTO_FOR_ID'
})
return { PERSONAL_PHOTO_FOR_ID }
}
},
form: {
prev: { to: { query: { active: 'admission_ywjl' } } },
next: { to: { query: { active: 'admission_xy' } } },
hasButton: false,
options: {},
items: [
{
type: 'v-upload',
model: 'PERSONAL_PHOTO_FOR_ID',
attrs: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'PERSONAL_PHOTO_FOR_ID' },
accept: 'image/*',
limit: 1
},
append:
'申请者需要上传本人半年以内的彩色近照。<br> 只需上传一个文件,且照片完整、干净。<br> 上传文件仅限“jpg,jpeg,gif,png”格式的图片文件,且文件小于10MB。'
}
]
}
}
}
...@@ -10,11 +10,16 @@ ...@@ -10,11 +10,16 @@
@prev="handlePrev" @prev="handlePrev"
@next="handleNext" @next="handleNext"
@uploaded="getApplication" @uploaded="getApplication"
v-if="detail"
> >
<template #aside-append> <template #aside-append>
<div class="aside-payment"><a href="https://accounts.ezijing.com/payment" target="_blank">查看缴费记录</a></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> <div class="aside-logout" @click="$store.dispatch('logout')"><span>退出登录</span></div>
</template> </template>
<!-- 入学协议 -->
<!-- <template #content v-if="currentActive === 'admission_xy'">
<app-xy />
</template> -->
</vue-form> </vue-form>
<el-dialog <el-dialog
title="办理入学资料提交成功" title="办理入学资料提交成功"
...@@ -25,7 +30,7 @@ ...@@ -25,7 +30,7 @@
> >
<div class="dialog-tips"> <div class="dialog-tips">
<p>请确认是否已缴费,如未缴费点击下方缴费按钮 <br />(已缴费,请忽略)</p> <p>请确认是否已缴费,如未缴费点击下方缴费按钮 <br />(已缴费,请忽略)</p>
<div class="icon"><img src="../../../assets/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>
<el-button type="primary" @click="toPay">立即缴费</el-button> <el-button type="primary" @click="toPay">立即缴费</el-button>
...@@ -39,14 +44,14 @@ ...@@ -39,14 +44,14 @@
import AppLayout from '../layout.vue' import AppLayout from '../layout.vue'
import getMenu from './form' import getMenu from './form'
import * as api from '@/api/my' import * as api from '@/api/my'
import AppXy from './xy'
export default { export default {
components: { AppLayout }, components: { AppLayout, AppXy },
data() { data() {
const menus = getMenu(this) const menus = getMenu(this)
return { return {
menus: [menus], menus: [menus],
currentActive: 'admission_xy', currentActive: 'admission_cjd',
dialogVisible: false, dialogVisible: false,
detail: null detail: null
} }
...@@ -56,7 +61,7 @@ export default { ...@@ -56,7 +61,7 @@ export default {
immediate: true, immediate: true,
handler(route) { handler(route) {
const { query = {} } = route const { query = {} } = route
this.currentActive = query.active || 'admission_xy' this.currentActive = query.active || 'admission_cjd'
} }
}, },
showSubmitedDialog(value) { showSubmitedDialog(value) {
...@@ -72,6 +77,9 @@ export default { ...@@ -72,6 +77,9 @@ export default {
}, },
showSubmitedDialog() { showSubmitedDialog() {
return this.isSubmited && this.currentActive === 'admission_xy' return this.isSubmited && this.currentActive === 'admission_xy'
},
user() {
return this.$store.state.user
} }
}, },
methods: { methods: {
...@@ -108,6 +116,40 @@ export default { ...@@ -108,6 +116,40 @@ export default {
toPay() { toPay() {
this.dialogVisible = false this.dialogVisible = false
this.$router.push({ path: '/my/admission', query: { active: 'admission_xfjn' } }) this.$router.push({ path: '/my/admission', query: { active: 'admission_xfjn' } })
},
// 更换推荐人
changeProvider(data) {
api.updateProvider(data.id, data).then(response => {
const { error, message } = response
if (error.toString() === '0') {
this.sendToProvider(data)
// 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)
}
})
},
// 发送推荐信
sendToProviders() {
api.sendToProviders().then(response => {
const { error, message } = response
if (error.toString() === '0') {
this.$message({ type: 'success', message })
} else {
this.$message.error(message)
}
})
} }
}, },
beforeMount() { beforeMount() {
...@@ -128,4 +170,19 @@ export default { ...@@ -128,4 +170,19 @@ export default {
text-align: center; text-align: center;
} }
} }
::v-deep .upload-letter {
border-top: 1px solid #f1f1f1;
margin-top: 20px;
padding-top: 20px;
.el-form-item__label {
width: auto !important;
float: none !important;
font-size: 14px;
font-weight: 700;
color: #222;
}
.el-form-item__content {
margin: 0 !important;
}
}
</style> </style>
差异被折叠。
...@@ -43,39 +43,55 @@ export default { ...@@ -43,39 +43,55 @@ 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: 'applicationWfzzm',
view: { to: { path: '/my/application', query: { active: 'application_wfzzm' } } }
} }
// {
// 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: '学位证书', title: '毕业证书',
code: 'interviewXwzs', code: 'interviewByzs',
view: { to: { path: '/my/interview', query: { active: 'interview_byz' } } } view: { to: { path: '/my/interview', query: { active: 'interview_byzs' } } }
},
{
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' } } }
} }
// {
// title: '学位证书',
// code: 'interviewXwzs',
// view: { to: { path: '/my/interview', query: { active: 'interview_xwzs' } } }
// },
// {
// title: '学位证书英文证明',
// code: 'interviewXwzsEnglish',
// view: { to: { path: '/my/interview', query: { active: 'interview_xwzsywzm' } } }
// },
// {
// title: '英文简历',
// code: 'interviewYwjl',
// view: { to: { path: '/my/interview', query: { active: 'interview_ywjl' } } }
// },
// {
// 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' } } }
// }
] ]
] ]
} }
...@@ -120,32 +136,46 @@ export default { ...@@ -120,32 +136,46 @@ export default {
} }
// 推荐信 // 推荐信
const applicationTjx = { progress: 0 } const applicationTjx = { progress: 0 }
applicationTjx.progress = progress.FILLING.reco_letters.progress applicationTjx.progress = progress.FILLING.reco_letters ? progress.FILLING.reco_letters.progress : 0
// 无犯罪 // 无犯罪
const applicationWfzzm = { progress: 0 } const applicationWfzzm = { progress: 0 }
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.progress interviewTjx.progress = progress.INTERVIEW_APPLICATION.reco_letters
? 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 {
......
<template>
<el-select v-bind="$attrs" v-on="$listeners" clearable no-data-text="请先选择省份">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</template>
<script>
import { areaList } from '@vant/area-data'
const json2Array = function(data) {
return Object.keys(data).map(code => ({ code, label: data[code], value: data[code] }))
}
export default {
props: {
parentValue: { type: String, default: '' },
isCity: { type: Boolean, default: false }
},
computed: {
options() {
return this.parentValue || this.isCity ? this.cityList : this.provinceList
},
provinceList() {
return json2Array(areaList.province_list).sort((a, b) => {
return a.label.localeCompare(b.label)
})
},
cityList() {
return json2Array(areaList.city_list)
.filter(item => {
const provinceValueCode = this.provinceList.find(province => province.label === this.parentValue)?.code || ''
return item.code.slice(0, 2) === provinceValueCode.slice(0, 2)
})
.sort((a, b) => {
return a.label.localeCompare(b.label)
})
},
treeList() {
this.provinceList.map(item => {
const children = json2Array(areaList.city_list)
.filter(item2 => {
return item2.code.slice(0, 2) === item.code.slice(0, 2)
})
.sort((a, b) => {
return a.label.localeCompare(b.label)
})
return { ...item, children }
})
}
}
}
</script>
<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">
申请紫荆-玛丽伍德大学数字领导力MBA硕士项目,本项目的申请费为<span>700</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>
...@@ -16,6 +16,7 @@ export default function(_this) { ...@@ -16,6 +16,7 @@ export default function(_this) {
const isSubmited = submissionStage !== 'FILLING' const isSubmited = submissionStage !== 'FILLING'
this.form.options.disabled = isSubmited this.form.options.disabled = isSubmited
if (isSubmited) { if (isSubmited) {
_this.submittedVisible = true
return { isAgree: [1] } return { isAgree: [1] }
} }
return { isAgree: [] } return { isAgree: [] }
...@@ -27,14 +28,15 @@ export default function(_this) { ...@@ -27,14 +28,15 @@ 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' }) // _this.$router.push({ path: '/my/interview' })
_this.submittedVisible = true
}, },
errorCallback() { errorCallback() {
_this.completeVisible = true _this.completeVisible = true
} }
}, },
form: { form: {
prev: { to: { query: { active: 'application_wfzzm' } } }, prev: { to: { query: { active: 'application_info', tab: 'application_info_honor' } } },
submitText: '提交报名申请', submitText: '提交报名申请',
model: { isAgree: [] }, model: { isAgree: [] },
options: {}, options: {},
...@@ -44,8 +46,8 @@ export default function(_this) { ...@@ -44,8 +46,8 @@ export default function(_this) {
values: [{ label: '同意', value: 1 }], values: [{ label: '同意', value: 1 }],
model: 'isAgree', model: 'isAgree',
rules: [{ required: true, message: '请阅读协议', trigger: 'change' }], rules: [{ required: true, message: '请阅读协议', trigger: 'change' }],
prepend: prepend: `<p>1、本人知晓此申请表及所附文件将作为申请紫荆-玛丽伍德大学MBA面试和背景评估的参考依据,一旦成功录取,有关资料将作为学生信息存档。</p>
'<p>本人自愿申请紫荆-威斯康星协和大学家庭教育硕士项目,所有申请表格内填写的内容属实,本科学士学位证书属实,没有弄虚作假的行为。如有虚假,愿承担一切法 律责任。</p>' <p>2、本人声明所填资料正确无误,知晓任何不真实的信息或不诚信的行为,均会影响申请结果,已取得的成绩和资格会被取消。我理解并同意所有报名材料归紫荆教育所有,无论考生录取与否均不退回。我授权紫荆教育使用报名表中的信息查询本人学习和工作记录。</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'
export default function(_this) { export default function(_this) {
...@@ -9,8 +9,8 @@ export default function(_this) { ...@@ -9,8 +9,8 @@ export default function(_this) {
title: '报名申请', title: '报名申请',
children: [ children: [
info(_this), info(_this),
tjx(_this), // tjx(_this),
wfzsm(_this), // wfzsm(_this),
declare(_this) declare(_this)
// { // {
// id: 'application_pay', // id: 'application_pay',
......
...@@ -16,21 +16,14 @@ export default function(_this) { ...@@ -16,21 +16,14 @@ export default function(_this) {
const { answers = [], submission_stage: submissionStage = 'FILLING' } = data.data.material const { answers = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
this.form.options.disabled = submissionStage !== 'FILLING' this.form.options.disabled = submissionStage !== 'FILLING'
const [first = {}, second = {}, third = {}, fourth = {}] = answers const [first = {}, second = {}] = answers
return { return {
qid1: first.qid || '1', qid1: first.qid || '1',
question1: '自我介绍', question1: '您为什么要申请紫荆-玛丽伍德大学数字领导力MBA硕士项目?',
answer1: first.answer, answer1: first.answer,
qid2: second.qid || '2', qid2: second.qid || '2',
question2: '申请这个家庭教育硕士项目在未来对你个人有什么好处?', question2: '您的短期和长期职业发展目标是什么?您打算如何达成此愿景?',
answer2: second.answer, answer2: second.answer
qid3: third.qid || '3',
question3: '通过这个家庭教育硕士项目的学习,你对自己未来的个人发展目标/职业发展目标是什么? ',
answer3: third.answer,
qid4: fourth.qid || '4',
question4:
'你参加过家庭教育或者与之相关的工作坊或者培训吗?请按照年份列出来,你是如何从这些学习经验中获益的?',
answer4: fourth.answer
} }
} }
}, },
...@@ -40,9 +33,7 @@ export default function(_this) { ...@@ -40,9 +33,7 @@ export default function(_this) {
return { return {
answers: [ answers: [
{ qid: data.qid1, question: data.question1, answer: data.answer1 }, { qid: data.qid1, question: data.question1, answer: data.answer1 },
{ qid: data.qid2, question: data.question2, answer: data.answer2 }, { qid: data.qid2, question: data.question2, answer: data.answer2 }
{ qid: data.qid3, question: data.question3, answer: data.answer3 },
{ qid: data.qid4, question: data.question4, answer: data.answer4 }
] ]
} }
} }
...@@ -50,52 +41,28 @@ export default function(_this) { ...@@ -50,52 +41,28 @@ export default function(_this) {
form: { form: {
prev: { to: { query: { active: 'application_info', tab: 'application_info_career' } }, isSubmit: true }, prev: { to: { query: { active: 'application_info', tab: 'application_info_career' } }, isSubmit: true },
next: { to: { query: { active: 'application_info', tab: 'application_info_training' } }, isSubmit: true }, next: { to: { query: { active: 'application_info', tab: 'application_info_training' } }, isSubmit: true },
options: { 'label-position': 'top' }, options: {},
items: [ items: [
{ {
type: 'v-input', type: 'v-input',
label: label: '您为什么要申请紫荆-玛丽伍德大学数字领导力MBA硕士项目?(60字以上,1000字以内)',
'自我介绍(简要介绍一下自己,你是如何对家庭教育产生的兴趣,什么促使你下定决心学习家庭教育;可以讲一个跟自身有关的故事。)不低于300字',
model: 'answer1', model: 'answer1',
attrs: { type: 'textarea', rows: '8', 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: 300, message: '长度在 300 个字符以上', trigger: 'blur' } { min: 60, max: 1000, message: '长度在 60 到 1000 个字符', trigger: 'blur' }
] ]
}, },
{ {
type: 'v-input', type: 'v-input',
label: '申请这个家庭教育硕士项目在未来对你个人有什么好处? 不低于260字', label: '您的短期和长期职业发展目标是什么?您打算如何达成此愿景?(60字以上,1000字以内)',
model: 'answer2', model: 'answer2',
attrs: { type: 'textarea', rows: '8', 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: 260, message: '长度在 260 个字符以上', trigger: 'blur' } { min: 60, max: 1000, message: '长度在 60 到 1000 个字符', trigger: 'blur' }
// { min: 60, max: 1000, message: '长度在 60 到 1000 个字符', trigger: 'blur' }
]
},
{
type: 'v-input',
label: '通过这个家庭教育硕士项目的学习,你对自己未来的个人发展目标/职业发展目标是什么? 不低于260字。',
model: 'answer3',
attrs: { type: 'textarea', rows: '8', style: 'width:100%' },
rules: [
{ required: true, message: '请输入', trigger: 'blur' },
{ min: 260, message: '长度在 260 个字符以上', trigger: 'blur' }
// { min: 60, max: 1000, message: '长度在 60 到 1000 个字符', trigger: 'blur' }
] ]
} }
// {
// type: 'v-input',
// label: '你参加过家庭教育或者与之相关的工作坊或者培训吗?请按照年份列出来,你是如何从这些学习经验中获益的?',
// model: 'answer4',
// attrs: { type: 'textarea', rows: '8', style: 'width:100%' },
// rules: [
// { required: true, message: '请输入', trigger: 'blur' }
// // { min: 260, message: '长度在 260 个字符以上', trigger: 'blur' }
// // { min: 60, max: 1000, message: '长度在 60 到 1000 个字符', trigger: 'blur' }
// ]
// }
] ]
} }
} }
......
...@@ -51,12 +51,7 @@ export default function(_this) { ...@@ -51,12 +51,7 @@ export default function(_this) {
attrs: { attrs: {
type: 'month', type: 'month',
placeholder: '请选择工作开始时间', placeholder: '请选择工作开始时间',
valueFormat: 'yyyy-MM', valueFormat: 'yyyy-MM'
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now()
}
}
}, },
rules: [{ required: true, message: '请选择工作开始时间', trigger: 'blur' }] rules: [{ required: true, message: '请选择工作开始时间', trigger: 'blur' }]
}, },
...@@ -67,12 +62,7 @@ export default function(_this) { ...@@ -67,12 +62,7 @@ export default function(_this) {
attrs: { attrs: {
type: 'month', type: 'month',
placeholder: '请选择工作结束时间', placeholder: '请选择工作结束时间',
valueFormat: 'yyyy-MM', valueFormat: 'yyyy-MM'
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now()
}
}
}, },
rules: [{ required: true, message: '请选择工作结束时间', trigger: 'blur' }] rules: [{ required: true, message: '请选择工作结束时间', trigger: 'blur' }]
}, },
...@@ -86,52 +76,52 @@ export default function(_this) { ...@@ -86,52 +76,52 @@ export default function(_this) {
{ {
type: 'v-select', type: 'v-select',
values: [ values: [
{ label: '互联网/电子商务', value: '1 ' }, { value: '互联网/电子商务' },
{ label: '基金/证券/期货/投资', value: '2 ' }, { value: '基金/证券/期货/投资' },
{ label: '保险', value: '3 ' }, { value: '保险' },
{ label: '银行', value: '4 ' }, { value: '银行' },
{ label: '信托/担保/拍卖/典当', value: '5 ' }, { value: '信托/担保/拍卖/典当' },
{ label: '计算机软件', value: '6 ' }, { value: '计算机软件' },
{ label: 'IT服务(系统/数据/维护)', value: '7 ' }, { value: 'IT服务(系统/数据/维护)' },
{ label: '电子技术/半导体/集成电路', value: '8 ' }, { value: '电子技术/半导体/集成电路' },
{ label: '计算机硬件', value: '9 ' }, { value: '计算机硬件' },
{ label: '通信/电信/网络设备', value: '10' }, { value: '通信/电信/网络设备' },
{ label: '通信/电信运营、增值服务', value: '11' }, { value: '通信/电信运营、增值服务' },
{ label: '网络游戏', value: '12' }, { value: '网络游戏' },
{ label: '房地产/建筑/建材/工程', value: '13' }, { value: '房地产/建筑/建材/工程' },
{ label: '家居/室内设计/装饰装潢', value: '14' }, { value: '家居/室内设计/装饰装潢' },
{ label: '物业管理/商业中心', value: '15' }, { value: '物业管理/商业中心' },
{ label: '专业服务/咨询(财会/法律/人力资源等)', value: '16' }, { value: '专业服务/咨询(财会/法律/人力资源等)' },
{ label: '广告/会展/公关', value: '17' }, { value: '广告/会展/公关' },
{ label: '中介服务', value: '18' }, { value: '中介服务' },
{ label: '检验/检测/认证', value: '19' }, { value: '检验/检测/认证' },
{ label: '外包服务', value: '20' }, { value: '外包服务' },
{ label: '快速消费品(食品/饮料/烟酒/日化)', value: '21' }, { value: '快速消费品(食品/饮料/烟酒/日化)' },
{ label: '耐用消费品(服饰/纺织/皮革/家具/家电)', value: '22' }, { value: '耐用消费品(服饰/纺织/皮革/家具/家电)' },
{ label: '贸易/进出口', value: '23' }, { value: '贸易/进出口' },
{ label: '零售/批发', value: '24' }, { value: '零售/批发' },
{ label: '租赁服务', value: '25' }, { value: '租赁服务' },
{ label: '教育/培训/院校', value: '26' }, { value: '教育/培训/院校' },
{ label: '礼品/玩具/工艺美术/收藏品/奢侈品', value: '27' }, { value: '礼品/玩具/工艺美术/收藏品/奢侈品' },
{ label: '汽车/摩托车', value: '28' }, { value: '汽车/摩托车' },
{ label: '大型设备/机电设备/重工业', value: '29' }, { value: '大型设备/机电设备/重工业' },
{ label: '加工制造(原料加工/模具)', value: '30' }, { value: '加工制造(原料加工/模具)' },
{ label: '仪器仪表及工业自动化', value: '31' }, { value: '仪器仪表及工业自动化' },
{ label: '印刷/包装/造纸', value: '32' }, { value: '印刷/包装/造纸' },
{ label: '办公用品及设备', value: '33' }, { value: '办公用品及设备' },
{ label: '医药/生物工程', value: '34' }, { value: '医药/生物工程' },
{ label: '医疗设备/器械', value: '35' }, { value: '医疗设备/器械' },
{ label: '航空/航天研究与制造', value: '36' }, { value: '航空/航天研究与制造' },
{ label: '交通/运输,物流/仓储', value: '37' }, { value: '交通/运输,物流/仓储' },
{ label: '医疗/护理/美容/保健/卫生服务', value: '38' }, { value: '医疗/护理/美容/保健/卫生服务' },
{ label: '酒店/餐饮,旅游/度假,媒体/出版/影视/文化传播', value: '39' }, { value: '酒店/餐饮,旅游/度假,媒体/出版/影视/文化传播' },
{ label: '娱乐/体育/休闲', value: '40' }, { value: '娱乐/体育/休闲' },
{ label: '能源/矿产/采掘/冶炼', value: '41' }, { value: '能源/矿产/采掘/冶炼' },
{ label: '石油/石化/化工,电气/电力/水利', value: '42' }, { value: '石油/石化/化工,电气/电力/水利' },
{ label: '环保', value: '43' }, { value: '环保' },
{ label: '政府/公共事业/非盈利机构', value: '44' }, { value: '政府/公共事业/非盈利机构' },
{ label: '学术/科研,农/林/牧/渔跨领域经营', value: '45' }, { value: '学术/科研,农/林/牧/渔跨领域经营' },
{ label: '其他', value: '90' } { value: '其他' }
], ],
label: '行业类别', label: '行业类别',
model: 'industry', model: 'industry',
......
...@@ -62,12 +62,14 @@ export default function(_this) { ...@@ -62,12 +62,14 @@ export default function(_this) {
type: 'v-input', type: 'v-input',
label: '学校名称', label: '学校名称',
model: 'school_name_cn', model: 'school_name_cn',
attrs: { placeholder: '请输入学校名称' },
rules: [{ required: true, message: '请输入学校名称', trigger: 'blur' }] rules: [{ required: true, message: '请输入学校名称', trigger: 'blur' }]
}, },
{ {
type: 'v-input', type: 'v-input',
label: '专业名称', label: '专业名称',
model: 'major_cn', model: 'major_cn',
attrs: { placeholder: '请输入专业名称' },
rules: [{ required: true, message: '请输入专业名称', trigger: 'blur' }] rules: [{ required: true, message: '请输入专业名称', trigger: 'blur' }]
}, },
{ {
......
...@@ -32,6 +32,7 @@ export default function(_this) { ...@@ -32,6 +32,7 @@ export default function(_this) {
}, },
{ ID_CARD_FRONT: [], ID_CARD_BACK: [], HK_ID_CARD: [], PASSPORT: [], OTHER_ID_CARD_PHOTO: [] } { 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) return Object.assign({}, basicInfo, attachment)
} }
}, },
...@@ -66,7 +67,7 @@ export default function(_this) { ...@@ -66,7 +67,7 @@ export default function(_this) {
}, },
{ {
type: 'v-select', type: 'v-select',
values: [{ value: '居民身份证' }, { value: '港澳台身份证' }, { value: '护照' }, { value: '其他' }], values: [{ value: '居民身份证' }, { value: '港澳台身份证' }, { value: '中国护照' }, { value: '其他' }],
label: '证件类型', label: '证件类型',
model: 'id_type', model: 'id_type',
attrs: { placeholder: '请选择证件类型' }, attrs: { placeholder: '请选择证件类型' },
...@@ -83,7 +84,7 @@ export default function(_this) { ...@@ -83,7 +84,7 @@ export default function(_this) {
data: { file_type: 'ID_CARD_BACK' }, data: { file_type: 'ID_CARD_BACK' },
limit: 1, limit: 1,
accept: 'image/*', accept: 'image/*',
image: 'https://zws-imgs-pub.oss-cn-beijing.aliyuncs.com/pc/cu/id_card_back.png' image: 'https://zws-imgs-pub.ezijing.com/pc/cu/id_card_back.png'
}, },
rules: [{ type: 'array', required: true, message: '请上传身份证照片人像面', trigger: 'change' }], rules: [{ type: 'array', required: true, message: '请上传身份证照片人像面', trigger: 'change' }],
isShow(data) { isShow(data) {
...@@ -101,7 +102,7 @@ export default function(_this) { ...@@ -101,7 +102,7 @@ export default function(_this) {
data: { file_type: 'ID_CARD_FRONT' }, data: { file_type: 'ID_CARD_FRONT' },
limit: 1, limit: 1,
accept: 'image/*', accept: 'image/*',
image: 'https://zws-imgs-pub.oss-cn-beijing.aliyuncs.com/pc/cu/id_card_front.png' image: 'https://zws-imgs-pub.ezijing.com/pc/cu/id_card_front.png'
}, },
rules: [{ type: 'array', required: true, message: '请上传身份证照片国徽面', trigger: 'change' }], rules: [{ type: 'array', required: true, message: '请上传身份证照片国徽面', trigger: 'change' }],
isShow(data) { isShow(data) {
...@@ -125,10 +126,10 @@ export default function(_this) { ...@@ -125,10 +126,10 @@ export default function(_this) {
return data.id_type === '港澳台身份证' return data.id_type === '港澳台身份证'
} }
}, },
// 护照 // 中国护照
{ {
type: 'v-upload', type: 'v-upload',
label: '护照', label: '中国护照',
model: 'PASSPORT', model: 'PASSPORT',
attrs: { attrs: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`, action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
...@@ -137,9 +138,9 @@ export default function(_this) { ...@@ -137,9 +138,9 @@ export default function(_this) {
limit: 1, limit: 1,
accept: 'image/*' accept: 'image/*'
}, },
rules: [{ type: 'array', required: true, message: '请上传护照', trigger: 'change' }], rules: [{ type: 'array', required: true, message: '请上传中国护照', trigger: 'change' }],
isShow(data) { isShow(data) {
return data.id_type === '护照' return data.id_type === '中国护照'
} }
}, },
// 其他证件 // 其他证件
......
...@@ -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_tjx' } }, isSubmit: true }, next: { to: { query: { active: 'application_declare' } }, isSubmit: true },
hasAdd: true, hasAdd: true,
options: { labelWidth: '140px' }, options: { labelWidth: '140px' },
items: [ items: [
...@@ -52,7 +52,8 @@ export default function(_this) { ...@@ -52,7 +52,8 @@ export default function(_this) {
{ {
type: 'v-input', type: 'v-input',
label: '证书颁发机构', label: '证书颁发机构',
model: 'institution_cn' model: 'institution_cn',
attrs: { placeholder: '请输入证书颁发机构' }
// rules: [{ required: true, message: '请输入证书颁发机构', trigger: 'blur' }] // rules: [{ required: true, message: '请输入证书颁发机构', trigger: 'blur' }]
} }
] ]
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
import country from './country' import country from './country'
export default function (_this) { export default function(_this) {
return { return {
id: 'application_info_profile', id: 'application_info_profile',
title: '个人信息', title: '个人信息',
...@@ -34,7 +34,8 @@ export default function (_this) { ...@@ -34,7 +34,8 @@ export default function (_this) {
}, },
{ ID_CARD_FRONT: [], ID_CARD_BACK: [], HK_ID_CARD: [], PASSPORT: [], OTHER_ID_CARD_PHOTO: [] } { ID_CARD_FRONT: [], ID_CARD_BACK: [], HK_ID_CARD: [], PASSPORT: [], OTHER_ID_CARD_PHOTO: [] }
) )
return Object.assign({}, basicInfo, attachment) basicInfo.id_type = basicInfo.id_type === '护照' ? '中国护照' : basicInfo.id_type
return Object.assign({ address_province: '', address_city: '' }, basicInfo, attachment)
} }
}, },
update: { update: {
...@@ -52,7 +53,6 @@ export default function (_this) { ...@@ -52,7 +53,6 @@ export default function (_this) {
'real_name_en', 'real_name_en',
'gender', 'gender',
'nationality', 'nationality',
'race',
'birthday', 'birthday',
'address_province', 'address_province',
'address_city', 'address_city',
...@@ -89,7 +89,7 @@ export default function (_this) { ...@@ -89,7 +89,7 @@ export default function (_this) {
}, },
{ {
type: 'v-select', type: 'v-select',
values: [{ value: '居民身份证' }, { value: '港澳台身份证' }, { value: '护照' }, { value: '其他' }], values: [{ value: '居民身份证' }, { value: '港澳台身份证' }, { value: '中国护照' }, { value: '其他' }],
label: '证件类型', label: '证件类型',
model: 'id_type', model: 'id_type',
attrs: { placeholder: '请选择证件类型' }, attrs: { placeholder: '请选择证件类型' },
...@@ -105,7 +105,8 @@ export default function (_this) { ...@@ -105,7 +105,8 @@ export default function (_this) {
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`, deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'ID_CARD_BACK' }, data: { file_type: 'ID_CARD_BACK' },
limit: 1, limit: 1,
image: 'https://zws-imgs-pub.oss-cn-beijing.aliyuncs.com/pc/cu/id_card_back.png' accept: 'image/*',
image: 'https://zws-imgs-pub.ezijing.com/pc/cu/id_card_back.png'
}, },
rules: [{ type: 'array', required: true, message: '请上传身份证照片人像面', trigger: 'change' }], rules: [{ type: 'array', required: true, message: '请上传身份证照片人像面', trigger: 'change' }],
isShow(data) { isShow(data) {
...@@ -122,7 +123,8 @@ export default function (_this) { ...@@ -122,7 +123,8 @@ export default function (_this) {
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`, deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'ID_CARD_FRONT' }, data: { file_type: 'ID_CARD_FRONT' },
limit: 1, limit: 1,
image: 'https://zws-imgs-pub.oss-cn-beijing.aliyuncs.com/pc/cu/id_card_front.png' accept: 'image/*',
image: 'https://zws-imgs-pub.ezijing.com/pc/cu/id_card_front.png'
}, },
rules: [{ type: 'array', required: true, message: '请上传身份证照片国徽面', trigger: 'change' }], rules: [{ type: 'array', required: true, message: '请上传身份证照片国徽面', trigger: 'change' }],
isShow(data) { isShow(data) {
...@@ -138,27 +140,29 @@ export default function (_this) { ...@@ -138,27 +140,29 @@ export default function (_this) {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`, action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`, deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'HK_ID_CARD' }, data: { file_type: 'HK_ID_CARD' },
limit: 1 limit: 1,
accept: 'image/*'
}, },
rules: [{ type: 'array', required: true, message: '请上传港澳台身份证', trigger: 'change' }], rules: [{ type: 'array', required: true, message: '请上传港澳台身份证', trigger: 'change' }],
isShow(data) { isShow(data) {
return data.id_type === '港澳台身份证' return data.id_type === '港澳台身份证'
} }
}, },
// 护照 // 中国护照
{ {
type: 'v-upload', type: 'v-upload',
label: '护照', label: '中国护照',
model: 'PASSPORT', model: 'PASSPORT',
attrs: { attrs: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`, action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`, deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'PASSPORT' }, data: { file_type: 'PASSPORT' },
limit: 1 limit: 1,
accept: 'image/*'
}, },
rules: [{ type: 'array', required: true, message: '请上传护照', trigger: 'change' }], rules: [{ type: 'array', required: true, message: '请上传中国护照', trigger: 'change' }],
isShow(data) { isShow(data) {
return data.id_type === '护照' return data.id_type === '中国护照'
} }
}, },
// 其他证件 // 其他证件
...@@ -170,7 +174,8 @@ export default function (_this) { ...@@ -170,7 +174,8 @@ export default function (_this) {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`, action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`, deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'OTHER_ID_CARD_PHOTO' }, data: { file_type: 'OTHER_ID_CARD_PHOTO' },
limit: 1 limit: 1,
accept: 'image/*'
}, },
rules: [{ type: 'array', required: true, message: '请上传其他证件', trigger: 'change' }], rules: [{ type: 'array', required: true, message: '请上传其他证件', trigger: 'change' }],
isShow(data) { isShow(data) {
...@@ -193,11 +198,11 @@ export default function (_this) { ...@@ -193,11 +198,11 @@ export default function (_this) {
}, },
{ {
type: 'v-input', type: 'v-input',
label: '拼音', label: '英文名',
model: 'real_name_en', model: 'real_name_en',
attrs: { placeholder: '请输入姓名拼音' }, attrs: { placeholder: '请输入英文名' },
rules: [{ required: true, message: '请输入姓名拼音', trigger: 'blur' }], rules: [{ required: true, message: '请输入英文名', trigger: 'blur' }],
append: '<p style="color:#606266">请与证件上的拼音一致,一经提交无法更改。</p>' prependSlotName: 'form-name-prepend'
}, },
{ {
type: 'v-radio', type: 'v-radio',
...@@ -217,14 +222,6 @@ export default function (_this) { ...@@ -217,14 +222,6 @@ export default function (_this) {
attrs: { placeholder: '请选择国籍', filterable: true }, attrs: { placeholder: '请选择国籍', filterable: true },
rules: [{ required: true, message: '请选择国籍', trigger: 'blur' }] rules: [{ required: true, message: '请选择国籍', trigger: 'blur' }]
}, },
{
type: 'v-select',
label: '种族',
model: 'race',
values: [{ value: '亚裔' }, { value: '拉丁裔' }, { value: '非洲裔' }, { value: '北美' }],
attrs: { placeholder: '请选择种族' },
rules: [{ required: true, message: '请选择种族', trigger: 'blur' }]
},
{ {
type: 'v-datepicker', type: 'v-datepicker',
label: '出生日期', label: '出生日期',
...@@ -237,14 +234,42 @@ export default function (_this) { ...@@ -237,14 +234,42 @@ export default function (_this) {
label: '居住省', label: '居住省',
model: 'address_province', model: 'address_province',
attrs: { placeholder: '请输入居住省' }, attrs: { placeholder: '请输入居住省' },
rules: [{ required: true, message: '请输入居住省', trigger: 'blur' }] rules: [{ required: true, message: '请输入居住省', trigger: 'blur' }],
isShow() {
return !_this.isNew
}
}, },
{ {
type: 'v-input', type: 'v-input',
label: '居住市', label: '居住市',
model: 'address_city', model: 'address_city',
attrs: { placeholder: '请输入居住市' }, attrs: { placeholder: '请输入居住市' },
rules: [{ required: true, message: '请输入居住市', trigger: 'blur' }] rules: [{ required: true, message: '请输入居住市', trigger: 'blur' }],
isShow() {
return !_this.isNew
}
},
{
type: 'v-input',
label: '居住省',
model: 'address_province',
attrs: { placeholder: '请选择居住省' },
rules: [{ required: true, message: '请选择居住省', trigger: 'blur' }],
slotName: 'form-province',
isShow() {
return _this.isNew
}
},
{
type: 'v-input',
label: '居住市',
model: 'address_city',
attrs: { placeholder: '请选择居住市' },
rules: [{ required: true, message: '请选择居住市', trigger: 'blur' }],
slotName: 'form-city',
isShow() {
return _this.isNew
}
}, },
// { // {
// type: 'city-v-select', // type: 'city-v-select',
...@@ -269,10 +294,10 @@ export default function (_this) { ...@@ -269,10 +294,10 @@ export default function (_this) {
}, },
{ {
type: 'v-input', type: 'v-input',
label: '紧急联系人全名', label: '紧急联系人',
model: 'emergency_contact_name', model: 'emergency_contact_name',
attrs: { placeholder: '请输入紧急联系人全名' }, attrs: { placeholder: '请输入紧急联系人' },
rules: [{ required: true, message: '请输入紧急联系人全名', trigger: 'blur' }] rules: [{ required: true, message: '请输入紧急联系人', trigger: 'blur' }]
}, },
{ {
type: 'v-input', type: 'v-input',
......
...@@ -60,13 +60,15 @@ export default function(_this) { ...@@ -60,13 +60,15 @@ export default function(_this) {
{ {
type: 'v-input', type: 'v-input',
label: '培训机构', label: '培训机构',
model: 'institution_cn' model: 'institution_cn',
attrs: { placeholder: '请输入培训机构' }
// rules: [{ required: true, message: '请输入培训机构', trigger: 'blur' }] // rules: [{ required: true, message: '请输入培训机构', trigger: 'blur' }]
}, },
{ {
type: 'v-input', type: 'v-input',
label: '课程名称', label: '课程名称',
model: 'course_cn' model: 'course_cn',
attrs: { placeholder: '请输入课程名称' }
// rules: [{ required: true, message: '请输入课程名称', trigger: 'blur' }] // rules: [{ required: true, message: '请输入课程名称', trigger: 'blur' }]
} }
] ]
......
...@@ -31,15 +31,6 @@ export default function(_this) { ...@@ -31,15 +31,6 @@ export default function(_this) {
update: { update: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.projectId}/put`, action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.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 }
} }
}, },
......
export default function(_this) { export default function(_this) {
return { return {
id: 'application_wfzzm', id: 'application_wfzzm',
title: '无犯罪明', title: '无犯罪明',
visible() { visible() {
return _this.visible return _this.visible
}, },
...@@ -34,8 +34,8 @@ export default function(_this) { ...@@ -34,8 +34,8 @@ export default function(_this) {
limit: 1 limit: 1
}, },
prepend: ` prepend: `
<p>第一步:点击下载按键获取无犯罪明模板</p> <p>第一步:点击下载按键获取无犯罪明模板</p>
<p><a href="https://zws-imgs-pub.oss-cn-beijing.aliyuncs.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><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> <p>第二步:打印文件后填写内容并签字上传至电脑,点击下方按钮上传文件</p>
` `
} }
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
@back="$router.push('/my/account')" @back="$router.push('/my/account')"
@prev="handlePrev" @prev="handlePrev"
@next="handleNext" @next="handleNext"
v-if="detail"
> >
<template #aside-append> <template #aside-append>
<div class="aside-preview" @click="dialogVisible = true" v-if="visible">预览全部</div> <div class="aside-preview" @click="dialogVisible = true" v-if="visible">预览全部</div>
...@@ -22,11 +21,44 @@ ...@@ -22,11 +21,44 @@
<template #content v-if="currentActive === 'application_pay'"> <template #content v-if="currentActive === 'application_pay'">
<app-pay /> <app-pay />
</template> </template>
<template #form-name-prepend>
<el-popover trigger="hover">
<div>例:张文武<br />英文名:Wenwu Zhang</div>
<i class="e-icon el-icon-info" slot="reference" style="position:absolute;left:-18px;color:blue;"></i>
</el-popover>
</template>
<template #form-province="{form}">
<v-area
v-model="form.address_province"
placeholder="请选择居住省"
style="width: 300px;"
@change="form.address_city = ''"
/>
</template>
<template #form-city="{form}">
<v-area
:parentValue="form.address_province"
isCity
v-model="form.address_city"
placeholder="请选择居住市"
style="width: 300px;"
/>
</template>
</vue-form> </vue-form>
<el-dialog title="预览全部" :visible.sync="dialogVisible" width="790px" class="dialog-preview"> <el-dialog title="预览全部" :visible.sync="dialogVisible" width="790px" class="dialog-preview">
<app-preview :hasEdit="true" @edit="handlePreviewEdit" v-if="dialogVisible" /> <app-preview :hasEdit="true" @edit="handlePreviewEdit" v-if="dialogVisible" />
</el-dialog> </el-dialog>
<app-complete v-model="completeVisible"></app-complete> <app-complete v-model="completeVisible"></app-complete>
<el-dialog :visible.sync="submittedVisible" :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>
</app-layout> </app-layout>
</template> </template>
...@@ -36,11 +68,12 @@ import getMenu from './form' ...@@ -36,11 +68,12 @@ import getMenu from './form'
import AppPay from './pay.vue' import AppPay from './pay.vue'
import AppPreview from './preview.vue' import AppPreview from './preview.vue'
import AppComplete from './complete.vue' import AppComplete from './complete.vue'
import VArea from './components/VArea.vue'
import * as api from '@/api/my' import * as api from '@/api/my'
export default { export default {
components: { AppLayout, AppPay, AppPreview, AppComplete }, components: { AppLayout, AppPay, AppPreview, AppComplete, VArea },
data() { data() {
const menus = getMenu(this) const menus = getMenu(this)
return { return {
...@@ -49,7 +82,8 @@ export default { ...@@ -49,7 +82,8 @@ export default {
tabActive: 'application_info_profile', tabActive: 'application_info_profile',
dialogVisible: false, dialogVisible: false,
detail: null, detail: null,
completeVisible: false completeVisible: false,
submittedVisible: false
} }
}, },
watch: { watch: {
...@@ -65,6 +99,11 @@ export default { ...@@ -65,6 +99,11 @@ export default {
computed: { computed: {
visible() { visible() {
return this.currentActive !== 'application_info' || this.tabActive !== 'application_info_first' return this.currentActive !== 'application_info' || this.tabActive !== 'application_info_first'
},
isNew() {
return this.detail?.material?.created_time
? new Date(this.detail?.material?.created_time).getTime() > new Date('2022-06-28').getTime()
: true
} }
}, },
methods: { methods: {
...@@ -141,6 +180,10 @@ export default { ...@@ -141,6 +180,10 @@ export default {
this.$message.error(message) this.$message.error(message)
} }
}) })
},
// 申请面试
toInterview() {
this.$router.push('/my/interview')
} }
}, },
beforeMount() { beforeMount() {
...@@ -163,7 +206,15 @@ export default { ...@@ -163,7 +206,15 @@ export default {
padding: 0; padding: 0;
} }
} }
::v-deep .el-form--label-top .el-form-item__label { .dialog-pay {
line-height: 24px; text-align: center;
p {
color: #262626;
line-height: 20px;
}
.icon {
margin-top: 20px;
text-align: center;
}
} }
</style> </style>
<template> <template>
<div class="pay"> <div class="pay">
<div class="pic"> <h5-pay @update="handleUpdateOrder" v-if="isWechat"></h5-pay>
<img src="../../../assets/images/my_pay_01.png" /> <qrcode-pay @update="handleUpdateOrder" v-else></qrcode-pay>
</div>
<div class="pay-hd">
<h1>欢迎您</h1>
<p class="t1">
申请紫荆-威斯康星协和大学家庭教育硕士项目,本项目的注册费、申请费共计<span>600</span>元,请扫描二维码缴费以完成报名。
</p>
<p class="t1" v-if="isPass">
因面试未通过需重新申请紫荆-威斯康星协和大学家庭教育硕士项目,本项目的注册费、申请费共计<span>600</span>元,请扫描二维码缴费以完成报名。
</p>
</div>
<div class="qrcode-error" v-if="qrcodeError">
生成二维码失败请刷新<i class="el-icon-refresh-left" @click="refreshQrcode" title="刷新"></i>
</div>
<div class="qrcode" v-else>
<qrcode-vue :value="qrcodeValue" size="100"></qrcode-vue>
<span @click="refreshQrcode">刷新</span>
</div>
<div class="pay-ft"> <div class="pay-ft">
<p class="t2">注释:再提交600元申请费后,申请人还需上传并提交如下文件。</p> <p class="t2">注释:成功提交700元申请费后,申请人还需上传并提交最高学历(学位)证书 (注:申请费不退还)</p>
<p class="t2">①学历/学位证书、②本科中、英文成绩单各一份、③个人证件照(2寸、免冠、白底)</p>
<p class="t2">该申请费不退,请慎重缴费!</p>
</div> </div>
<el-dialog <el-dialog
title="报名费缴费成功" title="报名费缴费成功"
...@@ -33,7 +14,7 @@ ...@@ -33,7 +14,7 @@
> >
<div class="dialog-pay"> <div class="dialog-pay">
<p>请填写申请面试的材料,材料齐全后<br />招生办老师将给您致电预约面试日期与时间</p> <p>请填写申请面试的材料,材料齐全后<br />招生办老师将给您致电预约面试日期与时间</p>
<div class="icon"><img src="../../../assets/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>
<el-button type="primary" @click="toInterview">立即预约</el-button> <el-button type="primary" @click="toInterview">立即预约</el-button>
...@@ -43,23 +24,27 @@ ...@@ -43,23 +24,27 @@
</template> </template>
<script> <script>
import QrcodeVue from 'qrcode.vue'
import * as api from '@/api/my' import * as api from '@/api/my'
import qrcodePay from './components/qrcodePay'
import h5Pay from './components/h5Pay'
export default { export default {
name: 'AppPay', name: 'AppPay',
components: { QrcodeVue }, components: { qrcodePay, h5Pay },
data() { data() {
const UA = window.navigator.userAgent
const isMobile = /android|iphone|ipad|ipod/i.test(UA)
return { return {
isPass: false, isWechat: isMobile && /micromessenger/i.test(UA),
order: { id: '', payment_url: '' }, order: { id: '', payment_url: '' },
qrcodeError: false,
dialogVisible: false, dialogVisible: false,
timer: null, timer: null,
paymentRecords: [] // 所有订单 paymentRecords: [] // 所有订单
} }
}, },
computed: { computed: {
user() {
return this.$store.state.user
},
// 二维码地址 // 二维码地址
qrcodeValue() { qrcodeValue() {
return this.order.payment_url return this.order.payment_url
...@@ -102,55 +87,44 @@ export default { ...@@ -102,55 +87,44 @@ export default {
} }
}) })
}, },
// 获取订单
async getOrder() {
if (this.paySuccess) {
return
}
await 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
} else {
this.$message.error(message)
}
})
},
// 刷新二维码
refreshQrcode() {
this.getOrder()
},
// 检查支付状态 // 检查支付状态
async checkPay(order) { checkPay(order) {
if (this.paySuccess) { if (!order || !order.id) {
this.timer && clearInterval(this.timer)
return return
} }
const userId = window.G.UserInfo.id const userId = this.user.id
await api.checkPay(order.id, { user_id: userId }).then(response => { api.checkPay(order.id, { user_id: userId }).then(response => {
if (response.data.payment_status === 'SUCCESS') { if (response.data.payment_status === 'SUCCESS') {
this.timer && clearInterval(this.timer) this.timer && clearInterval(this.timer)
this.dialogVisible = true this.dialogVisible = true
} }
}) })
}, },
// 检测支付状态定时器
setCheckPayTimer() { setCheckPayTimer() {
this.timer && clearInterval(this.timer) this.timer && clearInterval(this.timer)
this.timer = setInterval(() => { this.timer = setInterval(() => {
this.orderList.forEach(order => { if (this.paySuccess) {
this.checkPay(order) this.timer && clearInterval(this.timer)
}) return
}
this.orderList.forEach(order => this.checkPay(order))
}, 3000) }, 3000)
}, },
// 填写个人资料
toApplication() {
this.$router.push('/my/application?active=application_info')
},
// 申请面试 // 申请面试
toInterview() { toInterview() {
this.$router.push('/my/interview') this.$router.push('/my/interview')
},
handleUpdateOrder(order) {
this.order = order
} }
}, },
async mounted() { async mounted() {
await this.getApplication() await this.getApplication()
await this.getOrder()
this.setCheckPayTimer() this.setCheckPayTimer()
}, },
destroyed() { destroyed() {
...@@ -163,49 +137,7 @@ export default { ...@@ -163,49 +137,7 @@ export default {
.pay { .pay {
max-width: 562px; max-width: 562px;
margin: 0 auto; margin: 0 auto;
} padding: 40px 0;
.pic {
text-align: center;
}
.pay-hd {
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 { .t1 {
font-size: 14px; font-size: 14px;
......
export default function(_this) {
return {
id: 'interview_byzs',
title: '毕业证书',
get: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.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 DIPLOMA_CN = attachments.filter(item => {
return item.file_type_id === 'DIPLOMA_CN'
})
return { DIPLOMA_CN }
}
},
update: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/submit/${webConf.others.projectId}`,
beforeRequest(data) {
return { submission_stage: 'INTERVIEW_APPLICATION' }
},
callback() {
this.form.options.disabled = true
_this.dialogVisible = true
_this.getApplication()
},
errorCallback() {
_this.completeVisible = true
}
},
form: {
// next: { to: { query: { active: 'interview_zp' } } },
submitText: '申请面试',
model: { submission_stage: 'INTERVIEW_APPLICATION' },
options: {},
items: [
{
type: 'v-upload',
required: true,
model: 'DIPLOMA_CN',
attrs: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'DIPLOMA_CN' }
},
append:
'申请者需要将本科或以上毕业证书原件扫描或者拍照后提交。<br> 可上传多个文件,请确保证书号码清晰可辨。<br> 上传文件仅限“jpg,jpeg,png”格式,文件小于10MB。'
}
]
}
}
}
export default { export default function(_this) {
id: 'interview_cjd', return {
title: '成绩单(中+英)', id: 'interview_cjd',
get: { title: '成绩单(中+英)',
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.projectId}`, get: {
callback(data) { action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.projectId}`,
const { attachments = [], submission_stage: submissionStage = 'FILLING' } = data.data.material callback(data) {
const stageList = [ const { attachments = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
'FILLING', const stageList = [
'PREPAYMENT', 'FILLING',
'INTERVIEW_APPLICATION', 'PREPAYMENT',
'AUDITION', 'INTERVIEW_APPLICATION',
'INTERVIEW', 'AUDITION',
'PAYMENT', 'INTERVIEW',
'REGISTRATION', 'PAYMENT',
'CLOSED' 'REGISTRATION',
] 'CLOSED'
this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 2 ]
return attachments.reduce( this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 2
(result, item) => { return attachments.reduce(
if (item.file_type_id === 'REPORT_CARD_CN') { (result, item) => {
result.REPORT_CARD_CN.push(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) 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: 'interview_ywjl' } } },
hasButton: false,
options: { 'label-position': 'top' },
hint: `
<p>请将中英文成绩单原件扫描或者拍照后提交。</p>
<p>获取途径:联系大学时就读学校相关部门(档案馆/教务处)获取成绩单。</p>
`,
items: [
{
type: 'v-upload',
label: '中文成绩单',
model: 'REPORT_CARD_CN',
attrs: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'REPORT_CARD_CN' }
} }
return result
}, },
{ REPORT_CARD_CN: [], REPORT_CARD_EN: [] } {
) type: 'v-upload',
} label: '英文成绩单',
}, model: 'REPORT_CARD_EN',
form: { attrs: {
prev: { to: { query: { active: 'interview_byz' } } }, action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
next: { to: { query: { active: 'interview_zp' } } }, deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
hasButton: false, data: { file_type: 'REPORT_CARD_EN' }
options: { 'label-position': 'top' }, }
hint: `
<p>成绩单:中英文成绩单各上传一个文件</p>
<p>注意事项:需要将证书原件扫描或拍照后提交,请确保证书内容清晰可辨。</p>
<p>中英文成绩单:需学校开具的正式中文和英文成绩单或档案馆调取的官方成绩单,且需盖有学校公章(例如教务处公章、档案处成绩公章等)。</p>
`,
items: [
{
type: 'v-upload',
label: '中文成绩单',
required: true,
model: 'REPORT_CARD_CN',
attrs: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'REPORT_CARD_CN' }
}
},
{
type: 'v-upload',
label: '英文成绩单',
required: true,
model: 'REPORT_CARD_EN',
attrs: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'REPORT_CARD_EN' }
} }
} ]
] }
} }
} }
import byz from './byz' import byzs from './byzs'
import cjd from './cjd' // import xwzs from './xwzs'
import zp from './zp' // import ywjl from './ywjl'
// import zp from './zp'
export default function(_this) { export default function(_this) {
return { return {
id: 'interview', id: 'interview',
title: '申请面试', title: '申请面试',
children: [byz, cjd, zp(_this)] children: [byzs(_this)]
} }
} }
export default { export default {
id: 'interview_byz', id: 'interview_xwzs',
title: '学历/学位证书', title: '学位证书',
get: { get: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.projectId}`, action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.projectId}`,
callback(data) { callback(data) {
...@@ -23,7 +23,8 @@ export default { ...@@ -23,7 +23,8 @@ export default {
} }
}, },
form: { form: {
next: { to: { query: { active: 'interview_cjd' } } }, prev: { to: { query: { active: 'interview_byzs' } } },
next: { to: { query: { active: 'interview_ywjl' } } },
hasButton: false, hasButton: false,
options: {}, options: {},
items: [ items: [
...@@ -36,7 +37,8 @@ export default { ...@@ -36,7 +37,8 @@ export default {
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`, deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'DEGREE_CERT_CN' } data: { file_type: 'DEGREE_CERT_CN' }
}, },
append: '注意事项:需要将证书原件扫描或拍照后提交,请确保证书内容清晰可辨。' append:
'申请者需要将学位证书原件扫描或者拍照后提交。<br>可上传多个文件,请确保证书号码清晰可辨。<br>上传文件仅限“jpg,jpeg,png”格式,文件小于10MB。'
} }
] ]
} }
......
export default {
id: 'interview_xwzsywzm',
title: '学位证书英文证明',
get: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.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: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'DEGREE_CERT_EN' }
},
append: '请将学校出具的学位证书英文证明原件扫描或者拍照后提交。'
}
]
}
}
export default {
id: 'interview_ywjl',
title: '英文简历',
get: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/${webConf.others.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: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'RESUME_EN' }
},
append: `
<p>请下载填写英文简历模板后上传 [<a href="https://zws-imgs-pub.ezijing.com/static/public/2e8e4f6898f59e03636139a402ef16c1.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_cjd' } } }, prev: { to: { query: { active: 'interview_byzs' } } },
submitText: '申请面试', submitText: '申请面试',
model: { submission_stage: 'INTERVIEW_APPLICATION' }, model: { submission_stage: 'INTERVIEW_APPLICATION' },
options: {}, options: {},
...@@ -49,10 +49,11 @@ export default function(_this) { ...@@ -49,10 +49,11 @@ export default function(_this) {
attrs: { attrs: {
action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`, action: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/put`,
deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`, deleteAction: `${webConf.apiBaseURL}/enrollment/v1.0/application-materials/attachments/${webConf.others.projectId}/delete`,
data: { file_type: 'PERSONAL_PHOTO_FOR_ID' } data: { file_type: 'PERSONAL_PHOTO_FOR_ID' },
limit: 1
}, },
prepend: '2寸照片:以电子版的形式上传文件', append:
append: '如您被录取,此照片可能会用于学校档案等官方文件,请谨慎选择照片,上传后无法更改。' '申请者需要上传本人半年以内的两寸彩色近照。<br> 只需上传一个文件,且照片完整、干净。<br> 上传文件仅限“jpg,jpeg,gif,png”格式的图片文件,且文件小于10MB。'
} }
] ]
} }
......
...@@ -17,15 +17,14 @@ ...@@ -17,15 +17,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="../../../assets/images/icon_success.png" /></div>
</div> </div>
<template #footer> <template #footer>
<el-button type="primary" @click="dialogVisible = false">我知道啦</el-button> <el-button type="primary" @click="dialogVisible = false">我知道啦</el-button>
...@@ -46,7 +45,7 @@ export default { ...@@ -46,7 +45,7 @@ export default {
const menus = getMenu(this) const menus = getMenu(this)
return { return {
menus: [menus], menus: [menus],
currentActive: 'interview_byz', currentActive: 'interview_byzs',
completeVisible: false, completeVisible: false,
dialogVisible: false, dialogVisible: false,
detail: null detail: null
...@@ -57,7 +56,7 @@ export default { ...@@ -57,7 +56,7 @@ export default {
immediate: true, immediate: true,
handler(route) { handler(route) {
const { query = {} } = route const { query = {} } = route
this.currentActive = query.active || 'interview_byz' this.currentActive = query.active || 'interview_byzs'
} }
}, },
showSubmitedDialog(value) { showSubmitedDialog(value) {
...@@ -82,7 +81,7 @@ export default { ...@@ -82,7 +81,7 @@ export default {
return false return false
}, },
showSubmitedDialog() { showSubmitedDialog() {
return this.isSubmited && this.currentActive === 'interview_zp' return this.isSubmited && this.currentActive === 'interview_byzs'
} }
}, },
methods: { methods: {
......
<template> <template>
<div class="h5pay"> <div class="h5pay">
<el-button type="primary" @click="handlePay" :disabled="disabled">去支付</el-button> <el-button type="primary" @click="handlePay">去支付</el-button>
</div> </div>
</template> </template>
...@@ -9,9 +9,7 @@ import * as api from '@/api/my' ...@@ -9,9 +9,7 @@ import * as api from '@/api/my'
export default { export default {
data() { data() {
return { return {
openId: window.localStorage.getItem('open_id'), openId: window.localStorage.getItem('open_id')
order: {},
disabled: false
} }
}, },
computed: { computed: {
...@@ -22,22 +20,16 @@ export default { ...@@ -22,22 +20,16 @@ export default {
methods: { methods: {
// 获取订单 // 获取订单
getOrder(callback) { getOrder(callback) {
this.disabled = true api.getOrder({ wx_open_id: this.openId, payment_method: 'WX_PAY' }).then(response => {
api const { data, error, message } = response
.getOrder({ wx_open_id: this.openId, payment_method: 'WX_PAY' }) if (error.toString() === '0') {
.then(response => { this.order = data
const { data, error, message } = response this.$emit('update', this.order)
if (error.toString() === '0') { callback && callback(this.order)
this.order = data } else {
this.$emit('update', this.order) this.$message.error(message)
callback && callback(this.order) }
} else { })
this.$message.error(message)
}
})
.finally(() => {
this.disabled = false
})
}, },
// 获取微信code // 获取微信code
getCode() { getCode() {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="qrpay"> <div class="qrpay">
<div class="qrpay-hd"> <div class="qrpay-hd">
<div class="pic"> <div class="pic">
<img src="../../../../assets/images/my_pay_02.png" height="160" /> <img src="https://webapp-pub.ezijing.com/project/application/images/my_pay_02.png" height="160" />
</div> </div>
<h1>请使用微信扫描下方二维码</h1> <h1>请使用微信扫描下方二维码</h1>
<h3>该申请费不退,请慎重缴费!</h3> <h3>该申请费不退,请慎重缴费!</h3>
......
...@@ -3,9 +3,11 @@ ...@@ -3,9 +3,11 @@
<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">注释:在提交600元申请费后,申请人需上传并提交如下文件。</p> <p class="t2">
<p class="t2">①填写报名表、②完成推荐信2封、③本科/专科学历学位证书、④中英文成绩单、⑤个人证件照</p> 注释:在提交700元申请费后,申请人需上传并提交如下文件。<br />
<p class="t2">该申请费不退,请慎重缴费!</p> ①填写报名表、②完成推荐信2封、③本科学历学位证书、④中英文成绩单、⑤个人证件照<br />
该申请费不退,请慎重缴费!
</p>
</div> </div>
<el-dialog <el-dialog
title="报名费缴费成功" title="报名费缴费成功"
...@@ -16,8 +18,8 @@ ...@@ -16,8 +18,8 @@
width="348px" width="348px"
> >
<div class="dialog-pay"> <div class="dialog-pay">
<p>填写报名所需材料,材料齐全后招生办老师将<br />给您致电预约面试日期与时间</p> <p>按照要求填写报名所需材料,完成“提交报名申请”及“申请面试”</p>
<div class="icon"><img src="../../../assets/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>
<el-button type="primary" @click="toApplication">立即预约</el-button> <el-button type="primary" @click="toApplication">立即预约</el-button>
...@@ -45,6 +47,9 @@ export default { ...@@ -45,6 +47,9 @@ export default {
} }
}, },
computed: { computed: {
user() {
return this.$store.state.user
},
// 二维码地址 // 二维码地址
qrcodeValue() { qrcodeValue() {
return this.order.payment_url return this.order.payment_url
...@@ -89,7 +94,7 @@ export default { ...@@ -89,7 +94,7 @@ export default {
}, },
// 检查支付状态 // 检查支付状态
checkPay(order) { checkPay(order) {
const userId = window.G.UserInfo.id const userId = this.user.id
api.checkPay(order.id, { user_id: userId }).then(response => { api.checkPay(order.id, { user_id: userId }).then(response => {
if (response.data.payment_status === 'SUCCESS') { if (response.data.payment_status === 'SUCCESS') {
this.timer && clearInterval(this.timer) this.timer && clearInterval(this.timer)
...@@ -106,7 +111,7 @@ export default { ...@@ -106,7 +111,7 @@ export default {
return return
} }
this.orderList.forEach(order => this.checkPay(order)) this.orderList.forEach(order => this.checkPay(order))
}, 10000) }, 3000)
}, },
// 填写个人资料 // 填写个人资料
toApplication() { toApplication() {
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
<div class="welcome"> <div class="welcome">
<div class="top"> <div class="top">
<div class="pic"> <div class="pic">
<img src="../../../assets/images/my_pay_01.png" /> <img src="https://webapp-pub.ezijing.com/project/application/images/my_pay_01.png" />
</div> </div>
<h1>欢迎您</h1> <h1>欢迎您</h1>
<p class="t1"> <p class="t1">
申请紫荆-美国威斯康星协和大学家庭教育硕士项目,请填写以下内容并<br /> 申请紫荆-玛丽伍德大学数字领导力方向MBA硕士项目,请在填写以下内容<br />
点击提交后,扫码支付本项目申请费<span>600</span>元 (申请费不可退)。 提交报名申请后,扫码支付本项目的注册费、申请费共计<span>700</span>元。(该申请费不退,请慎重缴费!)
</p> </p>
</div> </div>
<div class="form"> <div class="form">
......
...@@ -2,23 +2,51 @@ import Vue from 'vue' ...@@ -2,23 +2,51 @@ import Vue from 'vue'
import Vuex from 'vuex' import Vuex from 'vuex'
// import router from '@/router' // import router from '@/router'
import { routes } from '@/router/routes.js' import { routes } from '@/router/routes.js'
import { logout } from '@/api/my' import { getUser, logout } from '@/api/my'
Vue.use(Vuex) Vue.use(Vuex)
export default new Vuex.Store({ export default new Vuex.Store({
state: { state: {
user: {},
sidebar: [] sidebar: []
}, },
getters: { getters: {
getSidebar: state => state.sidebar getSidebar: state => state.sidebar
}, },
mutations: { mutations: {
setUser(state, user) {
state.user = user
window.G.UserInfo = user
},
SET_ROUTES: (state, routes) => { SET_ROUTES: (state, routes) => {
state.sidebar = routes state.sidebar = routes
} }
}, },
actions: { actions: {
getUser({ commit }) {
getUser().then(response => {
commit('setUser', response.data)
})
},
// 检测登录状态
async checkLogin({ commit }) {
const isLogin = await getUser()
.then(response => {
if (response.code === 0) {
commit('setUser', response.data)
return true
} else {
commit('setUser', {})
return false
}
})
.catch(() => {
commit('setUser', {})
return false
})
return isLogin
},
generateRoutes({ commit }) { generateRoutes({ commit }) {
return new Promise(resolve => { return new Promise(resolve => {
commit('SET_ROUTES', routes) commit('SET_ROUTES', routes)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论