提交 c9419f01 authored 作者: lhh's avatar lhh
-----BEGIN RSA PRIVATE KEY----- -----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----
\ No newline at end of file
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIGtjCCBZ6gAwIBAgIQDjUArTRdZ4P5wtQVmCqJGjANBgkqhkiG9w0BAQsFADBj MIIGtDCCBZygAwIBAgIQJtN62MbxMBaLhLadTXD/LzANBgkqhkiG9w0BAQsFADBj
MQswCQYDVQQGEwJDTjE2MDQGA1UECgwtQmVpamluZyBYaW5jaGFjaGEgQ3JlZGl0 MQswCQYDVQQGEwJDTjE2MDQGA1UECgwtQmVpamluZyBYaW5jaGFjaGEgQ3JlZGl0
IE1hbmFnZW1lbnQgQ28uLCBMdGQuMRwwGgYDVQQDDBNYY2MgVHJ1c3QgT1YgU1NM IE1hbmFnZW1lbnQgQ28uLCBMdGQuMRwwGgYDVQQDDBNYY2MgVHJ1c3QgT1YgU1NM
IENBMB4XDTIyMDgxODE0MDAzMVoXDTIzMDkxNzE0MDAzMFowgY4xCzAJBgNVBAYT IENBMB4XDTIzMDkwNzA1NTM0MVoXDTI0MDkwNjA1NTM0MFowgY4xCzAJBgNVBAYT
AkNOMRIwEAYDVQQIDAnljJfkuqzluIIxEjAQBgNVBAcMCeWMl+S6rOW4gjE/MD0G AkNOMRIwEAYDVQQIDAnljJfkuqzluIIxEjAQBgNVBAcMCeWMl+S6rOW4gjE/MD0G
A1UECgw25riF5o6n57Sr6I2G77yI5YyX5Lqs77yJ5pWZ6IKy56eR5oqA6IKh5Lu9 A1UECgw25riF5o6n57Sr6I2G77yI5YyX5Lqs77yJ5pWZ6IKy56eR5oqA6IKh5Lu9
5pyJ6ZmQ5YWs5Y+4MRYwFAYDVQQDDA0qLmV6aWppbmcuY29tMIIBIjANBgkqhkiG 5pyJ6ZmQ5YWs5Y+4MRYwFAYDVQQDDA0qLmV6aWppbmcuY29tMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAucCbdPPyAp6vmnr5XObuPsctUhVLyXwqbIpg 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwZGHX8Zg+EP5uwnEBWkQazq8DMnKz3QfcNRU
I5jWzjG7wmk8V6z8WJKPO9KZM6D9ejtN/bbbd3j1cRiw7NSl8AUykiVHJWz9TXAf jFsxsZjM/98roYYp+K6/i/b8JXAVMqjC9+X/ZajgbDPLTrgDJ4TQ70ajdusqG3sw
lET2EpILLeraI1B2XAcBsc8dZBGGJD/LT97ZvNLYzuQOr7R1wytWH1uisAK5Clzg NqG0qLUogNgUPcgVRKr2Pk+m79GD/nnxFgeaG6eBfLsb73G2cQUwsgi3bjf6mX6b
nSptMenXFyhw5Xw0Lm3zoeeqYF/KMQ1McAYMGxgu6s6dxXKiA0BcgWQ31yZey0c4 9bjxjqzwX0PWes27yyqdS9uQFzV5KLTA2FJJjGGbg54ZLxVc01aVXx2gG0eLnOFc
HhCt7T7sA/UNahUsxtCcSNSvdgXay5Pu/l3N88TwW2QzaCzrueILHWRFwkREhpqy DSmgXUN4hBmNgYF4FYHhOVXdMl2+yGGp6IvtIIrt+cp2/TQePnxB2QYwrlDMajHr
rwjN3gkaa+1TjLxzCsk/pTnPccxlFwc3YQ3hYLMl36NJ/OIpHwIDAQABo4IDODCC Kp0x7LsqWwZTjepPgGWWDssiSgTCYVaPx28ESbotpzR7D+LlHQIDAQABo4IDNjCC
AzQwDAYDVR0TAQH/BAIwADBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8veGluY2hh AzIwDAYDVR0TAQH/BAIwADBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8veGluY2hh
Y2hhMm92LmNybC5jZXJ0dW0ucGwveGluY2hhY2hhMm92LmNybDB5BggrBgEFBQcB Y2hhMm92LmNybC5jZXJ0dW0ucGwveGluY2hhY2hhMm92LmNybDB5BggrBgEFBQcB
AQRtMGswLwYIKwYBBQUHMAGGI2h0dHA6Ly94aW5jaGFjaGEyb3Yub2NzcC1jZXJ0 AQRtMGswLwYIKwYBBQUHMAGGI2h0dHA6Ly94aW5jaGFjaGEyb3Yub2NzcC1jZXJ0
dW0uY29tMDgGCCsGAQUFBzAChixodHRwOi8vcmVwb3NpdG9yeS5jZXJ0dW0ucGwv dW0uY29tMDgGCCsGAQUFBzAChixodHRwOi8vcmVwb3NpdG9yeS5jZXJ0dW0ucGwv
eGluY2hhY2hhMm92LmNlcjAfBgNVHSMEGDAWgBT6oMvCx12BtSCSByALtjtwOwkO eGluY2hhY2hhMm92LmNlcjAfBgNVHSMEGDAWgBT6oMvCx12BtSCSByALtjtwOwkO
VTAdBgNVHQ4EFgQUEJufsd5nLNR+wqR2GsFWDn7qTn0wTAYDVR0gBEUwQzAIBgZn VTAdBgNVHQ4EFgQUXm2TAFqEePvMkmcMN+bVXSvLTH8wTAYDVR0gBEUwQzAIBgZn
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
-----END CERTIFICATE----- -----END CERTIFICATE-----
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIEzzCCA7egAwIBAgIRAPJECC2rqQ2ljHLp8pqTQK4wDQYJKoZIhvcNAQELBQAw MIIEzzCCA7egAwIBAgIRAPJECC2rqQ2ljHLp8pqTQK4wDQYJKoZIhvcNAQELBQAw
...@@ -111,3 +111,4 @@ CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x ...@@ -111,3 +111,4 @@ CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x
O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs
6GAqm4VKQPNriiTsBhYscw== 6GAqm4VKQPNriiTsBhYscw==
-----END CERTIFICATE----- -----END CERTIFICATE-----
...@@ -134,3 +134,26 @@ export function changeFileStatus(userId, recordId, status) { ...@@ -134,3 +134,26 @@ 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('/sign/v1/sign/create-by-template', data)
}
/**
* 获取签名文档
*/
export function getSignDocument(params) {
return httpRequest.get('/sign/v1/sign/document', params)
}
/**
* 申请面试
*/
export function changeSubmissionStage(data) {
return httpRequest.post(`/enrollment/v1.0/application-materials/submit/${projectId}`, data, {
headers: { 'Content-Type': 'application/json' }
})
}
src/assets/images/my_02.png

41.1 KB | W: | H:

src/assets/images/my_02.png

38.6 KB | W: | H:

src/assets/images/my_02.png
src/assets/images/my_02.png
src/assets/images/my_02.png
src/assets/images/my_02.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/images/my_02_hover.png

110.6 KB | W: | H:

src/assets/images/my_02_hover.png

35.9 KB | W: | H:

src/assets/images/my_02_hover.png
src/assets/images/my_02_hover.png
src/assets/images/my_02_hover.png
src/assets/images/my_02_hover.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -112,7 +112,7 @@ export default { ...@@ -112,7 +112,7 @@ export default {
height: 100%; height: 100%;
.details-news-body-title { .details-news-body-title {
display: flex; display: flex;
margin-top: 50px; margin-top: 150px;
flex-direction: column; flex-direction: column;
.padd-10 { .padd-10 {
padding: 15px 0px; padding: 15px 0px;
......
<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>
...@@ -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' && detail.material.basic_info.admission_agreement_type">
<app-xy :data="detail" />
</template>
</vue-form> </vue-form>
<el-dialog <el-dialog
title="办理入学资料提交成功" title="办理入学资料提交成功"
...@@ -39,9 +44,10 @@ ...@@ -39,9 +44,10 @@
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 {
......
<template>
<div class="xy">
<p>学员应仔细阅读《入学协议》以及课程介绍,如对入学协议或课程有异议,请第一时间与课程顾问咨询确认。</p>
<div class="footer">
<el-button type="primary" :disabled="disabled" size="medium" @click="handlePrimary">{{ buttonText }}</el-button>
</div>
</div>
</template>
<script>
import AppCollapse from './components/collapse'
import * as api from '@/api/my'
export default {
props: { data: { type: Object, required: true } },
components: { AppCollapse },
data() {
return {
sign: {},
documentUrl: '',
timer: null
}
},
computed: {
basicInfo() {
return this.data.material.basic_info || {}
},
buttonText() {
return this.documentUrl ? '签署完成' : '立即签署'
},
disabled() {
return !!this.documentUrl
}
},
methods: {
createSign() {
api
.createSign({
name: this.basicInfo.real_name_cn,
id_number: this.basicInfo.id_number,
email: this.basicInfo.email,
type: this.basicInfo.admission_agreement_type
})
.then(response => {
const { code, data } = response
if (code === 1) {
this.sign = data
data.flowid && this.getSignDocument(data.flowid)
} else {
this.$message.error('处理签名失败')
}
})
},
getSignDocument(flowid) {
return api.getSignDocument({ flowid, type: this.basicInfo.admission_agreement_type }).then(response => {
const { code, data } = response
if (code === 1) {
this.documentUrl = data.url
}
return response
})
},
setTimer() {
this.timer = setInterval(() => {
this.getSignDocument(this.sign.flowid).then(response => {
if (response.code === 1) {
this.$message({ type: 'success', message: '入学协议已签署完成' })
this.clearTimer()
}
})
}, 5000)
},
clearTimer() {
this.timer && clearInterval(this.timer)
},
handlePrimary() {
if (!this.sign.shortUrl) {
this.$message({ type: 'error', message: '缺少签名地址,请联系管理员' })
return
}
this.setTimer()
this.newWindowPreview(this.sign.shortUrl)
},
// 新窗口预览
newWindowPreview(url) {
const a = document.createElement('a')
a.href = url
a.target = '_blank'
document.body.appendChild(a)
a.click()
a.remove()
}
},
beforeMount() {
this.createSign()
},
destroyed() {
this.clearTimer()
}
}
</script>
<style lang="scss" scoped>
.xy {
h1 {
font-size: 18px;
font-weight: 600;
color: #222;
line-height: 25px;
text-align: center;
padding: 0 0 10px;
}
p {
margin-top: 10px;
font-size: 14px;
line-height: 20px;
color: #222;
}
.content {
height: 248px;
overflow-x: hidden;
overflow-y: auto;
& > p {
padding-left: 20px;
}
}
.footer {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 20px;
padding-top: 20px;
border-top: 1px solid #f1f1f1;
}
}
</style>
...@@ -45,7 +45,7 @@ export default function(_this) { ...@@ -45,7 +45,7 @@ export default function(_this) {
model: 'isAgree', model: 'isAgree',
rules: [{ required: true, message: '请阅读协议', trigger: 'change' }], rules: [{ required: true, message: '请阅读协议', trigger: 'change' }],
prepend: prepend:
'<p>本人自愿申请紫荆-加州整合大学应用心理学硕士项目,所有申请表格内填写的内容属实,本科学士学位证书属实,没有弄虚作假的行为。如有虚假,愿承担一切法 律责任。</p>' '<p>本人自愿申请紫荆-加州整合大学应用心理学硕士项目,所有申请表格内填写之内容与所提交之材料均属实,没有弄虚作假的行为。如有虚假,愿承担一切法律责任。</p>'
} }
] ]
} }
......
...@@ -53,35 +53,35 @@ export default function(_this) { ...@@ -53,35 +53,35 @@ export default function(_this) {
items: [ items: [
{ {
type: 'v-input', type: 'v-input',
label: '自我介绍(简述自己与心理学的渊源;对心理学的兴趣,什么促使自身喜欢心理学;讲一个与内心活动有关的故事)不低于260字', label: '自我介绍(简述自己与心理学的渊源;对心理学的兴趣,什么促使自身喜欢心理学;讲一个与内心活动有关的故事)不低于400字',
model: 'answer1', model: 'answer1',
attrs: { type: 'textarea', rows: '8', style: 'width:100%' }, attrs: { type: 'textarea', rows: '8', style: 'width:100%' },
rules: [ rules: [
{ required: true, message: '请输入', trigger: 'blur' }, { required: true, message: '请输入', trigger: 'blur' },
{ min: 260, message: '长度在 260 个字符以上', trigger: 'blur' } { min: 400, message: '长度在 400 个字符以上', trigger: 'blur' }
] ]
}, },
{ {
type: 'v-input', type: 'v-input',
label: label:
'这个MAP计划对你个人将来有什么好处?你在这个项目中的个人发展目标是什么?(聚焦在MAP学习对个人成长的帮助;如何实现自我目标和个人的社会价值)不低于260字', '这个MAP计划对你个人将来有什么好处?你在这个项目中的个人发展目标是什么?(聚焦在MAP学习对个人成长的帮助;如何实现自我目标和个人的社会价值)不低于400字',
model: 'answer2', model: 'answer2',
attrs: { type: 'textarea', rows: '8', style: 'width:100%' }, attrs: { type: 'textarea', rows: '8', style: 'width:100%' },
rules: [ rules: [
{ required: true, message: '请输入', trigger: 'blur' }, { required: true, message: '请输入', trigger: 'blur' },
{ min: 260, message: '长度在 260 个字符以上', trigger: 'blur' } { min: 400, message: '长度在 400 个字符以上', trigger: 'blur' }
// { min: 60, max: 1000, message: '长度在 60 到 1000 个字符', trigger: 'blur' } // { min: 60, max: 1000, message: '长度在 60 到 1000 个字符', trigger: 'blur' }
] ]
}, },
{ {
type: 'v-input', type: 'v-input',
label: label:
'这个MAP计划对你将来的职业发展有什么好处?你的职业发展目标是什么?(紧密联系MAP课程对目前职业的直接帮助;对未来职业发展目标的支持;如何通过职业平台把所学的心理学技能帮助到更多有需要的人)不低于260字', '这个MAP计划对你将来的职业发展有什么好处?你的职业发展目标是什么?(紧密联系MAP课程对目前职业的直接帮助;对未来职业发展目标的支持;如何通过职业平台把所学的心理学技能帮助到更多有需要的人)不低于400字',
model: 'answer3', model: 'answer3',
attrs: { type: 'textarea', rows: '8', style: 'width:100%' }, attrs: { type: 'textarea', rows: '8', style: 'width:100%' },
rules: [ rules: [
{ required: true, message: '请输入', trigger: 'blur' }, { required: true, message: '请输入', trigger: 'blur' },
{ min: 260, message: '长度在 260 个字符以上', trigger: 'blur' } { min: 400, message: '长度在 400 个字符以上', trigger: 'blur' }
// { min: 60, max: 1000, message: '长度在 60 到 1000 个字符', trigger: 'blur' } // { min: 60, max: 1000, message: '长度在 60 到 1000 个字符', trigger: 'blur' }
] ]
}, },
...@@ -92,7 +92,7 @@ export default function(_this) { ...@@ -92,7 +92,7 @@ export default function(_this) {
attrs: { type: 'textarea', rows: '8', style: 'width:100%' }, attrs: { type: 'textarea', rows: '8', style: 'width:100%' },
rules: [ rules: [
{ required: true, message: '请输入', trigger: 'blur' } { required: true, message: '请输入', trigger: 'blur' }
// { min: 260, message: '长度在 260 个字符以上', trigger: 'blur' } // { min: 400, message: '长度在 400 个字符以上', trigger: 'blur' }
// { min: 60, max: 1000, message: '长度在 60 到 1000 个字符', trigger: 'blur' } // { min: 60, max: 1000, message: '长度在 60 到 1000 个字符', trigger: 'blur' }
] ]
} }
......
<template> <template>
<div class="preview" v-loading="loading"> <div class="preview" v-loading="loading">
<template v-if="progress.FILLING"> <template v-if="progress.FILLING">
<div class="preview-hd"> <div class="preview-hd" v-show="hasMaterial">
<el-steps align-center :active="options.length"> <el-steps align-center :active="options.length">
<template v-for="item in options"> <template v-for="item in options">
<el-step <el-step :title="item.title" :status="progress.FILLING[item.code].progress === 1 ? 'success' : 'error'" :key="item.code"></el-step>
:title="item.title"
:status="progress.FILLING[item.code].progress === 1 ? 'success' : 'error'"
:key="item.code"
></el-step>
</template> </template>
</el-steps> </el-steps>
</div> </div>
<div class="preivew-bd"> <div class="preivew-bd">
<div <div class="preview-item" v-for="item in options" :key="item.code" :class="progress.FILLING[item.code].progress === 1 ? 'is-success' : 'is-error'" v-show="hasMaterial">
class="preview-item"
v-for="item in options"
:key="item.code"
:class="progress.FILLING[item.code].progress === 1 ? 'is-success' : 'is-error'"
>
<div class="preview-item-hd"> <div class="preview-item-hd">
<div class="title"> <div class="title">
{{ item.title }} {{ item.title }}
...@@ -34,11 +25,7 @@ ...@@ -34,11 +25,7 @@
</template> </template>
<template v-else-if="item.isMultiple"> <template v-else-if="item.isMultiple">
<div class="group" v-for="(data, index) in material[item.code]" :key="index"> <div class="group" v-for="(data, index) in material[item.code]" :key="index">
<dl <dl v-for="subitem in item.items" :key="subitem.code" v-show="subitem.visible ? subitem.visible() : true">
v-for="subitem in item.items"
:key="subitem.code"
v-show="subitem.visible ? subitem.visible() : true"
>
<dt>{{ subitem.label }}</dt> <dt>{{ subitem.label }}</dt>
<dd> <dd>
<template v-if="subitem.computed"> <template v-if="subitem.computed">
...@@ -66,7 +53,7 @@ ...@@ -66,7 +53,7 @@
</div> </div>
<div class="preview-item is-success" v-if="isManager"> <div class="preview-item is-success" v-if="isManager">
<div class="preview-item-hd"> <div class="preview-item-hd">
<div class="title">照片/附件</div> <div class="title">{{ hasMaterial ? '照片/附件' : '入学申请材料' }}</div>
<div class="line"></div> <div class="line"></div>
</div> </div>
<div class="preview-item-bd"> <div class="preview-item-bd">
...@@ -79,15 +66,16 @@ ...@@ -79,15 +66,16 @@
<i class="el-icon-document"></i> <i class="el-icon-document"></i>
</template> </template>
</el-image> </el-image>
<div class="name">{{ item.file_type_label }}</div> <div class="name">
<span>{{ item.file_type_label }}</span>
<span style="margin-left: 40px;">{{ item.file_name }}</span>
</div>
<div v-if="item.status_desc"> <div v-if="item.status_desc">
<el-tag size="mini">{{ item.status_desc }}</el-tag> <el-tag size="mini">{{ item.status_desc }}</el-tag>
</div> </div>
</div> </div>
<el-button-group v-if="hasButton" style="margin-left: 40px"> <el-button-group v-if="hasButton" style="margin-left: 40px">
<el-button size="mini" :disabled="item.status === 'INACTIVE'" @click="handleRemove(item)" <el-button size="mini" :disabled="item.status === 'INACTIVE'" @click="handleRemove(item)">删除</el-button>
>删除</el-button
>
<el-button size="mini" :disabled="item.status === 'LOG'" @click="handleSave(item)">存档</el-button> <el-button size="mini" :disabled="item.status === 'LOG'" @click="handleSave(item)">存档</el-button>
</el-button-group> </el-button-group>
</li> </li>
...@@ -271,9 +259,7 @@ export default { ...@@ -271,9 +259,7 @@ export default {
}, },
computed(data = []) { computed(data = []) {
const result = data.map(item => { const result = data.map(item => {
return `<dl><dt>${item.question}</dt><dd>${ return `<dl><dt>${item.question}</dt><dd>${item.answer ? item.answer.replace(/\n/g, '<br />') : ''}</dd></dl>`
item.answer ? item.answer.replace(/\n/g, '<br />') : ''
}</dd></dl>`
}) })
return `<div class="answers">${result.join('')}</div>` return `<div class="answers">${result.join('')}</div>`
} }
...@@ -346,6 +332,10 @@ export default { ...@@ -346,6 +332,10 @@ export default {
}, },
hasButton() { hasButton() {
return this.right.includes('X') return this.right.includes('X')
},
hasMaterial() {
const { material = '' } = this.$route.query
return material !== '0'
} }
}, },
methods: { methods: {
......
...@@ -38,6 +38,8 @@ export default { ...@@ -38,6 +38,8 @@ export default {
hint: ` hint: `
<p>成绩单:中英文成绩单各上传一个文件</p> <p>成绩单:中英文成绩单各上传一个文件</p>
<p>注意事项:需要将证书原件扫描或拍照后提交,请确保证书内容清晰可辨。</p> <p>注意事项:需要将证书原件扫描或拍照后提交,请确保证书内容清晰可辨。</p>
<p>* 中文成绩单:须学校开具的正式成绩单或档案馆调取的成绩单复印件方为有效,且必须盖有公章(例如教务处公章、档案处成绩公章等)。</p>
<p>* 英文成绩单:内容和格式必须与中文成绩单保持一致,并盖有翻译公章(推荐去淘宝找具有资质和翻译公章的翻译公司进行翻译)。英文成绩单可不盖学校公章。</p>
`, `,
items: [ items: [
{ {
......
<template> <template>
<div v-if="loaded"> <div v-if="loaded">
<index-welcome @update="handleUpdate" v-if="!isSubmited" /> <template v-if="isComplete">
<index-pay v-else /> <ul class="complete-list">
<li>
<router-link to="/preview?material=0">
<img src="https://webapp-pub.ezijing.com/project/ciis/apply_icon_2.png" />
<p>查看资料</p>
</router-link>
</li>
<li>
<a href="https://accounts.ezijing.com/payment" target="_blank">
<img src="https://webapp-pub.ezijing.com/project/ciis/apply_icon_1.png" />
<p>开具发票</p>
</a>
</li>
</ul>
</template>
<template v-else>
<index-welcome @update="handleUpdate" v-if="!isSubmited" />
<index-pay v-else />
</template>
</div> </div>
</template> </template>
...@@ -15,7 +33,8 @@ export default { ...@@ -15,7 +33,8 @@ export default {
data() { data() {
return { return {
loaded: false, loaded: false,
progress: {} progress: {},
isComplete: false
} }
}, },
methods: { methods: {
...@@ -23,8 +42,13 @@ export default { ...@@ -23,8 +42,13 @@ export default {
getApplication() { getApplication() {
this.loaded = false this.loaded = false
api.getApplication().then(response => { api.getApplication().then(response => {
const { progress = {} } = response.data const { progress = {}, material = {} } = response.data
this.progress = progress this.progress = progress
if (material?.basic_info?.ciis_submit_type === '1') {
this.isComplete = true
this.loaded = true
return
}
// 缴费成功 // 缴费成功
if (progress.PREPAYMENT.total_progress) { if (progress.PREPAYMENT.total_progress) {
this.$router.push('/my/account') this.$router.push('/my/account')
...@@ -58,3 +82,49 @@ export default { ...@@ -58,3 +82,49 @@ export default {
} }
} }
</script> </script>
<style lang="scss">
.complete-list {
position: relative;
height: calc(100vh - 120px);
background: url(https://webapp-pub.ezijing.com/project/ciis/apply_banner.png) no-repeat center center;
background-size: cover;
display: flex;
align-items: center;
justify-content: center;
column-gap: 90px;
&::before {
content: '';
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0;
background-color: rgba(0, 0, 0, 0.5);
}
li {
position: relative;
width: 200px;
height: 120px;
background-color: #fff;
border-radius: 6px;
z-index: 1;
color: #000;
img {
margin-bottom: 10px;
}
a {
color: inherit;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
&:first-child {
color: #fff;
background-color: #e27f4d;
}
}
}
</style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论