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

chore(报名申请): 隐藏报名缴费,修改面试申请和办理入学阶段表单配置

上级 41fcc96f
export default { export default function(_this) {
return {
required: true,
id: 'admission_byzs', id: 'admission_byzs',
title: '毕业证书注册备案表', title: '毕业证书或在读证明',
get: { get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`, action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) { callback(data) {
...@@ -11,38 +13,93 @@ export default { ...@@ -11,38 +13,93 @@ export default {
'INTERVIEW_APPLICATION', 'INTERVIEW_APPLICATION',
'AUDITION', 'AUDITION',
'INTERVIEW', 'INTERVIEW',
'PAYMENT',
'REGISTRATION', 'REGISTRATION',
'PAYMENT',
'CLOSED' 'CLOSED'
] ]
this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 6 this.form.options.disabled = stageList.findIndex(item => item === submissionStage) >= 6
const DIPLOMA_FILING_TABLE = attachments.filter(item => { return attachments.reduce(
return item.file_type_id === 'DIPLOMA_FILING_TABLE' (result, item) => {
}) if (item.file_type_id === 'DIPLOMA_CN') {
return { DIPLOMA_FILING_TABLE } result.DIPLOMA_CN.push(item)
}
if (item.file_type_id === 'DEGREE_CERT_CN') {
result.DEGREE_CERT_CN.push(item)
}
if (item.file_type_id === 'PROOF_READING') {
result.PROOF_READING.push(item)
}
return result
},
{ DIPLOMA_CN: [], DEGREE_CERT_CN: [], PROOF_READING: [] }
)
}
},
update: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/submit/${process.env.projectId}`,
beforeRequest(data) {
return { submission_stage: 'REGISTRATION' }
},
callback() {
this.form.options.disabled = true
_this.getApplication()
},
errorCallback() {
_this.completeVisible = true
} }
}, },
form: { form: {
prev: { to: { query: { active: 'admission_cjd' } } }, prev: { to: { query: { active: 'admission_grcs' } } },
next: { to: { query: { active: 'admission_ywjl' } } }, submitText: '提交申请',
hasButton: false, options: { 'label-position': 'top' },
options: {}, hint: `
提示:<br />
1、请同时上传毕业证书及学位证书(中英文)<br />
2、如尚未毕业,请上传在读证明(中英文)`,
items: [ items: [
{ {
required: true,
label: '毕业证书',
type: 'v-upload',
model: 'DIPLOMA_CN',
attrs: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`,
deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
data: { file_type: 'DIPLOMA_CN' }
},
rules: { required: true, message: '请上传毕业证书' },
append:
'申请者需要将本科或以上毕业证书原件扫描或者拍照后提交。<br> 可上传多个文件,请确保证书号码清晰可辨。<br> 上传文件仅限“jpg,jpeg,png”格式,文件小于10MB。'
},
{
required: true,
label: '学位证书',
type: 'v-upload', type: 'v-upload',
model: 'DEGREE_CERT_CN',
attrs: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`,
deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
data: { file_type: 'DEGREE_CERT_CN' }
},
rules: { required: true, message: '请上传学位证书' },
append:
'已毕业学员请提交学位证书<br />申请者需要将本科或以上的学位证书原件扫描或拍照后提交<br />可上传多个文件,请确保公章清晰可辨。'
},
{
required: true, required: true,
model: 'DIPLOMA_FILING_TABLE', label: '在读证明',
type: 'v-upload',
model: 'PROOF_READING',
attrs: { attrs: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`, action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`,
deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`, deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
data: { file_type: 'DIPLOMA_FILING_TABLE' } data: { file_type: 'PROOF_READING' }
}, },
prepend: ` rules: { required: true, message: '请上传在读证明' },
<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>] append:
<p>学历在学信网可查的同学,请下载学信网电子注册备案表提交到系统,具体获取流程请</p> '未毕业学员提交加盖公章的在读证明<br/>申请者需要将本科或以上在读证明原件扫描或拍照后提交。<br> 可上传多个文件,请确保公章清晰可辨。'
<p>下载附件 上传文件仅限“jpg,jpeg,pdf,png”格式,文件小于10Mb。</p>
`
} }
] ]
} }
}
} }
export default function(_this) { export default function(_this) {
return { return {
required: true,
id: 'admission_cjd', id: 'admission_cjd',
title: '成绩单', title: '成绩单',
get: { get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`, action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) { callback(data) {
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 = [
this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 6 'FILLING',
'PREPAYMENT',
'INTERVIEW_APPLICATION',
'AUDITION',
'INTERVIEW',
'REGISTRATION',
'PAYMENT',
'CLOSED'
]
this.form.options.disabled = stageList.findIndex(item => item === submissionStage) >= 6
return attachments.reduce( return attachments.reduce(
(result, item) => { (result, item) => {
if (item.file_type_id === 'REPORT_CARD_CN') { if (item.file_type_id === 'REPORT_CARD_CN') {
...@@ -23,7 +33,7 @@ export default function(_this) { ...@@ -23,7 +33,7 @@ export default function(_this) {
} }
}, },
form: { form: {
next: { to: { query: { active: 'admission_xy' } } }, next: { to: { query: { active: 'admission_tjx' } } },
hasButton: false, hasButton: false,
options: { 'label-position': 'top' }, options: { 'label-position': 'top' },
hint: ` hint: `
...@@ -38,7 +48,6 @@ export default function(_this) { ...@@ -38,7 +48,6 @@ export default function(_this) {
label: '中文成绩单', label: '中文成绩单',
model: 'REPORT_CARD_CN', model: 'REPORT_CARD_CN',
attrs: { attrs: {
disabled: true,
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`, action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`,
deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`, deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
data: { file_type: 'REPORT_CARD_CN' } data: { file_type: 'REPORT_CARD_CN' }
......
export default function(_this) {
return {
required: true,
id: 'admission_grcs',
title: '个人陈述',
get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) {
const { attachments = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
const stageList = [
'FILLING',
'PREPAYMENT',
'INTERVIEW_APPLICATION',
'AUDITION',
'INTERVIEW',
'REGISTRATION',
'PAYMENT',
'CLOSED'
]
this.form.options.disabled = stageList.findIndex(item => item === submissionStage) >= 6
const PERSONAL_STATEMENT = attachments.filter(item => {
return item.file_type_id === 'PERSONAL_STATEMENT'
})
return { PERSONAL_STATEMENT }
}
},
form: {
prev: { to: { query: { active: 'admission_tjx' } } },
next: { to: { query: { active: 'admission_byzs' } } },
hasButton: false,
options: { 'label-position': 'top' },
items: [
{
type: 'v-upload',
required: true,
model: 'PERSONAL_STATEMENT',
attrs: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`,
deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
data: { file_type: 'PERSONAL_STATEMENT' },
limit: 1
},
append: '请上传您的个人陈述(英文)'
}
]
}
}
}
import cjd from './cjd' import cjd from './cjd'
// import byzs from './byzs' import byzs from './byzs'
// import ywjl from './ywjl' // 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 tjx from './tjx'
import grcs from './grcs'
// import yynl from './yynl' // import yynl from './yynl'
export default function(_this) { export default function(_this) {
return { return {
id: 'admission', id: 'admission',
title: '入学办理', title: '入学办理',
children: [ children: [cjd(_this), tjx(_this), grcs(_this), byzs(_this), xfjn(_this)]
cjd(_this),
// tjx(_this),
xy(_this),
xfjn(_this)
]
} }
} }
/**
* 推荐信
*/
export default function(_this) { export default function(_this) {
return { return {
required: true,
id: 'admission_tjx', id: 'admission_tjx',
title: '推荐信', title: '推荐信',
get: { get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`, action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) { callback(data) {
const { submission_stage: submissionStage = 'FILLING' } = data.data.material const { attachments = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
const stageList = [ const stageList = [
'FILLING', 'FILLING',
'PREPAYMENT', 'PREPAYMENT',
'INTERVIEW_APPLICATION', 'INTERVIEW_APPLICATION',
'AUDITION', 'AUDITION',
'INTERVIEW', 'INTERVIEW',
'PAYMENT',
'REGISTRATION', 'REGISTRATION',
'PAYMENT',
'CLOSED' 'CLOSED'
] ]
this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 6 this.form.options.disabled = stageList.findIndex(item => item === submissionStage) >= 6
const list = data.data.material.reco_letters || [] return attachments.reduce(
// this.form.options.disabled = list.length >= 2 (result, item) => {
return list.length ? list : [{}, {}] item.disabled = item.upload_operator_user_id !== _this.user?.id
} if (item.file_type_id === 'RECOMMENDATION_LETTER') {
}, result.RECOMMENDATION_LETTER.push(item)
update: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}/put`,
beforeRequest(data) {
return { reco_letters: data }
},
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 })
} }
if (item.file_type_id === 'RECOMMENDATION_LETTER_2') {
result.RECOMMENDATION_LETTER_2.push(item)
} }
return result
}, },
form: { { RECOMMENDATION_LETTER: [], RECOMMENDATION_LETTER_2: [] }
minlength: 2, )
prev: { to: { query: { active: 'admission_cjd' } }, isSubmit: true },
next: { to: { query: { active: 'admission_xy' } }, 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: [ // update: {
// action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/submit/${process.env.projectId}`,
// beforeRequest(data) {
// return { submission_stage: 'INTERVIEW_APPLICATION' }
// },
// callback() {
// this.form.options.disabled = true
// _this.dialogVisible = true
// _this.getApplication()
// },
// errorCallback() {
// _this.completeVisible = true
// }
// },
form: {
prev: { to: { query: { active: 'admission_cjd' } } },
next: { to: { query: { active: 'admission_grcs' } } },
hasButton: false,
// submitText: '申请面试',
// model: { submission_stage: 'INTERVIEW_APPLICATION' },
options: {},
hint: '请上传两封推荐人署名的推荐信原件照片或扫描件(英文)',
items: [
{ {
text: '再次邀请', type: 'v-upload',
visible(data) { model: 'RECOMMENDATION_LETTER',
const editable = ['PREPAYMENT', 'REGISTRATION'].includes(_this.detail.material.submission_stage) attrs: {
return data.id && !data.letter_content && editable action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`,
}, deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
onClick(data) { data: { file_type: 'RECOMMENDATION_LETTER' },
_this.sendToProvider(data) accept: 'image/*',
limit: 1
} }
}, },
{ {
text: '更换推荐人', type: 'v-upload',
visible(data) { model: 'RECOMMENDATION_LETTER_2',
const editable = ['PREPAYMENT', 'REGISTRATION'].includes(_this.detail.material.submission_stage) attrs: {
return data.id && !data.letter_content && editable action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/put`,
}, deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
onClick(data, $form) { data: { file_type: 'RECOMMENDATION_LETTER_2' },
$form.validate().then(() => { accept: 'image/*',
_this.changeProvider(data) limit: 1
})
}
} }
]
},
items: [
{
type: 'v-input',
label: '推荐人姓名',
model: 'provider_name',
attrs: { placeholder: '请输入推荐人姓名' },
rules: [{ required: true, message: '请输入推荐人姓名', trigger: 'blur' }]
},
{
type: 'v-input',
label: '推荐人电话',
model: 'provider_phone_number',
attrs: { placeholder: '请输入推荐人电话', maxlength: 11 },
rules: [{ required: true, pattern: /^1[3-9]\d{9}$/, message: '请输入推荐人电话', trigger: 'blur' }]
},
{
type: 'v-input',
label: '推荐人邮箱',
model: 'provider_email',
attrs: { placeholder: '请输入推荐人邮箱' },
rules: [{ type: 'email', required: true, message: '请输入推荐人邮箱', trigger: 'blur' }]
},
{
type: 'v-select',
values: [
{ value: '老师/导师' },
{ value: '领导' },
{ value: '同学' },
{ value: '同事' },
{ value: '亲属' },
{ value: '朋友' },
{ value: '其他' }
],
label: '与推荐人关系',
model: 'provider_relationship',
rules: [{ required: true, message: '请选择与推荐人关系', trigger: 'change' }]
} }
] ]
} }
......
export default function(_this) { export default function(_this) {
return { return {
required: true,
id: 'admission_xfjn', id: 'admission_xfjn',
title: '缴费凭证', title: '缴费凭证',
visible() {
return _this.hasPay
},
get: { get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`, action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) { callback(data) {
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 = [
this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 6 'FILLING',
'PREPAYMENT',
'INTERVIEW_APPLICATION',
'AUDITION',
'INTERVIEW',
'REGISTRATION',
'PAYMENT',
'CLOSED'
]
// 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'
}) })
...@@ -15,7 +28,7 @@ export default function(_this) { ...@@ -15,7 +28,7 @@ export default function(_this) {
} }
}, },
form: { form: {
prev: { to: { query: { active: 'admission_xy' } } }, prev: { to: { query: { active: 'admission_byzs' } } },
hasButton: false, hasButton: false,
options: { 'label-position': 'top' }, options: { 'label-position': 'top' },
hint: ` hint: `
......
...@@ -29,14 +29,15 @@ ...@@ -29,14 +29,15 @@
width="348px" width="348px"
> >
<div class="dialog-tips"> <div class="dialog-tips">
<p>请确认是否已缴费,如未缴费点击下方缴费按钮 <br />(已缴费,请忽略)</p> <!-- <p>请确认是否已缴费,如未缴费点击下方缴费按钮 <br />(已缴费,请忽略)</p> -->
<div class="icon"><img src="https://webapp-pub.ezijing.com/project/application/images/icon_success.png" /></div> <div class="icon"><img src="https://webapp-pub.ezijing.com/project/application/images/icon_success.png" /></div>
</div> </div>
<template #footer> <template #footer>
<el-button type="primary" @click="toPay">立即缴费</el-button> <!-- <el-button type="primary" @click="toPay">立即缴费</el-button> -->
<el-button type="primary" @click="dialogVisible = false">忽略</el-button> <el-button type="primary" @click="dialogVisible = false">忽略</el-button>
</template> </template>
</el-dialog> </el-dialog>
<app-complete :type="2" v-model="completeVisible"></app-complete>
</app-layout> </app-layout>
</template> </template>
...@@ -45,15 +46,18 @@ import AppLayout from '../layout.vue' ...@@ -45,15 +46,18 @@ 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' import AppXy from './xy'
import AppComplete from '../application/complete.vue'
export default { export default {
components: { AppLayout, AppXy }, components: { AppLayout, AppXy, AppComplete },
data() { data() {
const menus = getMenu(this) const menus = getMenu(this)
return { return {
menus: [menus], menus: [menus],
currentActive: 'admission_cjd', currentActive: 'admission_cjd',
dialogVisible: false, dialogVisible: false,
detail: null detail: null,
completeVisible: false
} }
}, },
watch: { watch: {
...@@ -71,12 +75,21 @@ export default { ...@@ -71,12 +75,21 @@ export default {
computed: { computed: {
isSubmited() { isSubmited() {
if (this.detail) { if (this.detail) {
return !!this.detail.material.attachments.find(item => item.file_type_id === 'ADMISSION_AGREEMENT') return this.detail.material.submission_stage === 'PAYMENT'
} }
return false return false
}, },
showSubmitedDialog() { showSubmitedDialog() {
return this.isSubmited && this.currentActive === 'admission_xy' return this.isSubmited && this.currentActive === 'admission_byzs'
},
user() {
return this.$store.state.user
},
hasPay() {
if (this.detail) {
return this.detail.material.submission_stage === 'CLOSED'
}
return false
} }
}, },
methods: { methods: {
......
...@@ -11,13 +11,13 @@ ...@@ -11,13 +11,13 @@
<div> <div>
<ul v-if="detail"> <ul v-if="detail">
<li <li
v-for="item in currentOptions" v-for="(item, index) in currentOptions"
:class="progress[item.code].progress === 1 ? 'is-success' : 'is-error'" :class="!progress(item.code) ? 'is-success' : 'is-error'"
:key="item.code" :key="index"
> >
<span class="name">{{ item.title }}</span> <span class="name">{{ item.title }}</span>
<span class="line"></span> <span class="line"></span>
<span class="status">{{ progress[item.code].progress === 1 ? '已完成' : '未完成' }}</span> <span class="status">{{ !progress(item.code) ? '已完成' : '未完成' }}</span>
<span class="view" @click="handleView(item.view.to)">立即查看</span> <span class="view" @click="handleView(item.view.to)">立即查看</span>
</li> </li>
</ul> </ul>
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
</template> </template>
<script> <script>
import { get } from 'lodash'
import * as api from '@/api/my' import * as api from '@/api/my'
export default { export default {
props: { value: { type: Boolean, default: false }, type: { type: Number, default: 0 } }, props: { value: { type: Boolean, default: false }, type: { type: Number, default: 0 } },
...@@ -36,65 +37,55 @@ export default { ...@@ -36,65 +37,55 @@ export default {
return { return {
dialogVisible: false, dialogVisible: false,
detail: null, detail: null,
progress: {},
options: [ options: [
[ [
{ {
title: '个人资料', title: '个人资料',
code: 'applicaitonInfo', code: 'FILLING.total_progress',
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: 'interviewByzs',
view: { to: { path: '/my/interview', query: { active: 'interview_byzs' } } }
},
// {
// title: '学位证书',
// code: 'interviewXwzs',
// view: { to: { path: '/my/interview', query: { active: 'interview_byzs' } } }
// },
// {
// title: '在读证明',
// code: 'interviewZdzm',
// view: { to: { path: '/my/interview', query: { active: 'interview_byzs' } } }
// },
{ {
title: '英文简历', title: '英文简历',
code: 'interviewYwjl', code: 'INTERVIEW_APPLICATION.attachments.missed_required_list.RESUME_EN',
view: { to: { path: '/my/interview', query: { active: 'interview_ywjl' } } } view: { to: { path: '/my/interview', query: { active: 'interview_ywjl' } } }
}, },
{
title: '推荐信',
code: 'interviewTjx',
view: { to: { path: '/my/interview', query: { active: 'interview_tjx' } } }
},
{ {
title: '成绩单', title: '成绩单',
code: 'interviewCjd', code: 'INTERVIEW_APPLICATION.attachments.missed_required_list.REPORT_CARD_CN',
view: { to: { path: '/my/interview', query: { active: 'interview_cjd' } } } view: { to: { path: '/my/interview', query: { active: 'interview_cjd' } } }
}, },
{ {
title: '语言能力证明', title: '语言能力证明',
code: 'interviewYynlzm', code: 'INTERVIEW_APPLICATION.attachments.missed_required_list.INTERNATIONAL_LANGUAGE_SCORE',
view: { to: { path: '/my/interview', query: { active: 'interview_yynl' } } } view: { to: { path: '/my/interview', query: { active: 'interview_yynl' } } }
}
],
[
{
title: '成绩单',
code: 'REGISTRATION.attachments.missed_required_list.REPORT_CARD_EN',
view: { to: { path: '/my/admission', query: { active: 'admission_cjd' } } }
},
{
title: '推荐信',
code: [
'REGISTRATION.attachments.missed_required_list.RECOMMENDATION_LETTER',
'REGISTRATION.attachments.missed_required_list.RECOMMENDATION_LETTER_2'
],
view: { to: { path: '/my/admission', query: { active: 'admission_tjx' } } }
},
{
title: '个人陈述',
code: 'REGISTRATION.attachments.missed_required_list.PERSONAL_STATEMENT',
view: { to: { path: '/my/admission', query: { active: 'admission_grcs' } } }
}, },
{ {
title: '个人照片', title: '毕业证或在读证明',
code: 'interviewZp', code: 'REGISTRATION.attachments.missed_required_list.DIPLOMA_CN',
view: { to: { path: '/my/interview', query: { active: 'interview_zp' } } } view: { to: { path: '/my/admission', query: { active: 'admission_byzs' } } }
} }
] ]
] ]
...@@ -119,83 +110,20 @@ export default { ...@@ -119,83 +110,20 @@ export default {
api.getApplication(this.$route.query).then(response => { api.getApplication(this.$route.query).then(response => {
const { data, error, message } = response const { data, error, message } = response
if (error.toString() === '0') { if (error.toString() === '0') {
const { progress } = data
this.detail = data this.detail = data
const fillingMissedRequiredList = progress.FILLING.attachments.missed_required_list
// 个人资料
const applicaitonInfo = { progress: 0 }
const infoRequriedList = ['basic_info', 'educations', 'careers', 'answers']
for (const key of infoRequriedList) {
if (progress.FILLING[key].progress < 1) {
applicaitonInfo.progress = 0
break
}
applicaitonInfo.progress = 1
}
if (applicaitonInfo.progress === 1 && !fillingMissedRequiredList.ID_CARD_PHOTO) {
applicaitonInfo.progress = 1
} else {
applicaitonInfo.progress = 0
}
// 推荐信
const applicationTjx = { progress: 0 }
applicationTjx.progress = progress.FILLING.reco_letters ? progress.FILLING.reco_letters.progress : 0
// 无犯罪证明
const applicationWfzzm = { progress: 0 }
applicationWfzzm.progress = fillingMissedRequiredList.NO_CRIMINAL_CERT ? 0 : 1
const missedRequiredList = progress.INTERVIEW_APPLICATION.attachments.missed_required_list
// 2寸照片
const interviewZp = { progress: 0 }
interviewZp.progress = missedRequiredList.PERSONAL_PHOTO_FOR_ID ? 0 : 1
// 毕业证书
const interviewByzs = { progress: 0 }
interviewByzs.progress =
missedRequiredList.DIPLOMA_CN || missedRequiredList.DEGREE_CERT_CN || missedRequiredList.PROOF_READING
? 0
: 1
// 学位证书
const interviewXwzs = { progress: 0 }
interviewXwzs.progress = missedRequiredList.DEGREE_CERT_CN ? 0 : 1
// 学位证书英文
const interviewXwzsEnglish = { progress: 0 }
interviewXwzsEnglish.progress = missedRequiredList.DEGREE_CERT_EN ? 0 : 1
// 在读证明
const interviewZdzm = { progress: 0 }
interviewZdzm.progress = missedRequiredList.PROOF_READING ? 0 : 1
// 英文简历
const interviewYwjl = { progress: 0 }
interviewYwjl.progress = missedRequiredList.RESUME_EN ? 0 : 1
// 成绩单
const interviewCjd = { progress: 0 }
interviewCjd.progress = missedRequiredList.REPORT_CARD_CN || missedRequiredList.REPORT_CARD_EN ? 0 : 1
// 语言能力证明
const interviewYynlzm = { progress: 0 }
interviewYynlzm.progress = missedRequiredList.INTERNATIONAL_LANGUAGE_SCORE ? 0 : 1
// 推荐信
const interviewTjx = { progress: 0 }
interviewTjx.progress = missedRequiredList.RECOMMENDATION_LETTER ? 0 : 1
this.progress = {
applicaitonInfo,
applicationTjx,
applicationWfzzm,
interviewZp,
interviewByzs,
interviewXwzs,
interviewXwzsEnglish,
interviewZdzm,
interviewYwjl,
interviewCjd,
interviewYynlzm,
interviewTjx
}
} else { } else {
this.$message.error(message) this.$message.error(message)
} }
}) })
}, },
progress(prop) {
if (Array.isArray(prop)) {
return prop.every(item => {
return get(this.detail.progress, item)
})
}
return get(this.detail.progress, prop)
},
handleView(to) { handleView(to) {
this.dialogVisible = false this.dialogVisible = false
this.$router.push(to) this.$router.push(to)
......
...@@ -26,8 +26,13 @@ export default function(_this) { ...@@ -26,8 +26,13 @@ export default function(_this) {
callback() { callback() {
_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' })
if (_this.hasPay) {
_this.$router.push({ path: this.$route.path, query: { active: 'application_pay' } })
} else {
_this.$router.push({ path: '/my/interview' })
}
}, },
errorCallback() { errorCallback() {
_this.completeVisible = true _this.completeVisible = true
......
...@@ -17,7 +17,7 @@ export default function(_this) { ...@@ -17,7 +17,7 @@ export default function(_this) {
title: '缴报名费', title: '缴报名费',
show: false, show: false,
visible() { visible() {
return _this.visible return _this.visible && _this.hasPay
} }
} }
] ]
......
...@@ -49,7 +49,8 @@ export default { ...@@ -49,7 +49,8 @@ export default {
tabActive: 'application_info_profile', tabActive: 'application_info_profile',
dialogVisible: false, dialogVisible: false,
detail: null, detail: null,
completeVisible: false completeVisible: false,
hasPay: false
} }
}, },
watch: { watch: {
......
...@@ -33,7 +33,7 @@ export default function(_this) { ...@@ -33,7 +33,7 @@ export default function(_this) {
} }
}, },
form: { form: {
prev: { to: { query: { active: 'interview_tjx' } } }, prev: { to: { query: { active: 'interview_ywjl' } } },
next: { to: { query: { active: 'interview_yynl' } } }, next: { to: { query: { active: 'interview_yynl' } } },
hasButton: false, hasButton: false,
options: { 'label-position': 'top' }, options: { 'label-position': 'top' },
......
import byzs from './byzs' // import byzs from './byzs'
import cjd from './cjd' import cjd from './cjd'
import yynl from './yynl' import yynl from './yynl'
// import xwzs from './xwzs' // import xwzs from './xwzs'
import ywjl from './ywjl' import ywjl from './ywjl'
import zp from './zp' // import zp from './zp'
import tjx from './tjx' // import tjx from './tjx'
export default function(_this) { export default function(_this) {
return { return {
id: 'interview', id: 'interview',
title: '申请面试', title: '申请面试',
children: [byzs(_this), ywjl(_this), tjx(_this), cjd(_this), yynl(_this), zp(_this)] children: [ywjl(_this), cjd(_this), yynl(_this)]
} }
} }
...@@ -25,8 +25,8 @@ export default function(_this) { ...@@ -25,8 +25,8 @@ export default function(_this) {
} }
}, },
form: { form: {
prev: { to: { query: { active: 'interview_byzs' } } }, // prev: { to: { query: { active: 'interview_byzs' } } },
next: { to: { query: { active: 'interview_tjx' } } }, next: { to: { query: { active: 'interview_cjd' } } },
hasButton: false, hasButton: false,
options: { 'label-position': 'top' }, options: { 'label-position': 'top' },
items: [ items: [
......
...@@ -29,12 +29,26 @@ export default function(_this) { ...@@ -29,12 +29,26 @@ export default function(_this) {
) )
} }
}, },
update: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/submit/${process.env.projectId}`,
beforeRequest(data) {
return { submission_stage: 'INTERVIEW_APPLICATION' }
},
callback() {
this.form.options.disabled = true
_this.dialogVisible = true
_this.getApplication()
},
errorCallback() {
_this.completeVisible = true
}
},
form: { form: {
prev: { to: { query: { active: 'interview_cjd' } } }, prev: { to: { query: { active: 'interview_cjd' } } },
next: { to: { query: { active: 'interview_zp' } } }, submitText: '申请面试',
hasButton: false, model: { submission_stage: 'INTERVIEW_APPLICATION' },
options: { 'label-position': 'top' }, options: { 'label-position': 'top' },
hint: '可上传托福、雅思、多邻国、大学英语四六级成绩等', hint: '可上传CET-4,CET-6,TOEFL,IELTS等',
items: [ items: [
{ {
required: true, required: true,
......
...@@ -45,7 +45,7 @@ export default { ...@@ -45,7 +45,7 @@ export default {
const menus = getMenu(this) const menus = getMenu(this)
return { return {
menus: [menus], menus: [menus],
currentActive: 'interview_byzs', currentActive: 'interview_ywjl',
completeVisible: false, completeVisible: false,
dialogVisible: false, dialogVisible: false,
detail: null detail: null
...@@ -56,7 +56,7 @@ export default { ...@@ -56,7 +56,7 @@ export default {
immediate: true, immediate: true,
handler(route) { handler(route) {
const { query = {} } = route const { query = {} } = route
this.currentActive = query.active || 'interview_byzs' this.currentActive = query.active || 'interview_ywjl'
} }
}, },
showSubmitedDialog(value) { showSubmitedDialog(value) {
...@@ -81,7 +81,7 @@ export default { ...@@ -81,7 +81,7 @@ export default {
return false return false
}, },
showSubmitedDialog() { showSubmitedDialog() {
return this.isSubmited && this.currentActive === 'interview_byzs' return this.isSubmited && this.currentActive === 'interview_yynl'
}, },
user() { user() {
return this.$store.state.user return this.$store.state.user
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
"name": "project-pc", "name": "project-pc",
"version": "1.0.0", "version": "1.0.0",
"dependencies": { "dependencies": {
"@ezijing/vue-form": "^2.3.13", "@ezijing/vue-form": "^2.3.15",
"axios": "^0.21.1", "axios": "^0.21.1",
"cookie-universal-nuxt": "^2.1.4", "cookie-universal-nuxt": "^2.1.4",
"core-js": "^3.9.1", "core-js": "^3.9.1",
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
"element-ui": "^2.15.1", "element-ui": "^2.15.1",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"js-file-download": "^0.4.12", "js-file-download": "^0.4.12",
"lodash": "^4.17.21",
"nuxt": "^2.15.3", "nuxt": "^2.15.3",
"qrcode.vue": "^1.7.0", "qrcode.vue": "^1.7.0",
"qs": "^6.10.1", "qs": "^6.10.1",
...@@ -1012,9 +1013,9 @@ ...@@ -1012,9 +1013,9 @@
} }
}, },
"node_modules/@ezijing/vue-form": { "node_modules/@ezijing/vue-form": {
"version": "2.3.13", "version": "2.3.15",
"resolved": "https://registry.npmjs.org/@ezijing/vue-form/-/vue-form-2.3.13.tgz", "resolved": "https://registry.npmjs.org/@ezijing/vue-form/-/vue-form-2.3.15.tgz",
"integrity": "sha512-d5Z2iNkUb0BDPTP2wagvRXiWkxHQi9ddVhDBBzspMiEwQG1Bk+mVi5JotIRNmHvnzhTojTw1J4qnBEoctffs7g==", "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",
...@@ -13735,9 +13736,9 @@ ...@@ -13735,9 +13736,9 @@
"integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw=="
}, },
"@ezijing/vue-form": { "@ezijing/vue-form": {
"version": "2.3.13", "version": "2.3.15",
"resolved": "https://registry.npmjs.org/@ezijing/vue-form/-/vue-form-2.3.13.tgz", "resolved": "https://registry.npmjs.org/@ezijing/vue-form/-/vue-form-2.3.15.tgz",
"integrity": "sha512-d5Z2iNkUb0BDPTP2wagvRXiWkxHQi9ddVhDBBzspMiEwQG1Bk+mVi5JotIRNmHvnzhTojTw1J4qnBEoctffs7g==", "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",
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
"generate": "nuxt generate" "generate": "nuxt generate"
}, },
"dependencies": { "dependencies": {
"@ezijing/vue-form": "^2.3.13", "@ezijing/vue-form": "^2.3.15",
"axios": "^0.21.1", "axios": "^0.21.1",
"cookie-universal-nuxt": "^2.1.4", "cookie-universal-nuxt": "^2.1.4",
"core-js": "^3.9.1", "core-js": "^3.9.1",
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
"element-ui": "^2.15.1", "element-ui": "^2.15.1",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"js-file-download": "^0.4.12", "js-file-download": "^0.4.12",
"lodash": "^4.17.21",
"nuxt": "^2.15.3", "nuxt": "^2.15.3",
"qrcode.vue": "^1.7.0", "qrcode.vue": "^1.7.0",
"qs": "^6.10.1", "qs": "^6.10.1",
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论