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

报名缴费修改

上级 fab2bcc2
module.exports = {
domain: 'dev.ezijing.com',
url: 'https://ciis2.ezijing.com/api',
url: 'https://ciis.ezijing.com/api',
isEnableToIphoneDebugger: false,
// apiBaseURL: '//demo-login.ezijing.com/',
webpack: {
......
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
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
6M22MuuP1pLviPZEE4ZlPXvltUV/Qq47LvZkTg==
LmNydDAJBgNVHRMEAjAAMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHYA9lyUL9F3
MCIUVBgIMJRWjuNNExkzv98MLyALzE7xZOMAAAF1qpa6jQAABAMARzBFAiAwHOcp
Ua1H0WK4OZUHiQ1rndqnYxPHhP9XWunwpRMoagIhAOB2MPSW9M4qj6Yih7eQkydl
lgawpoBZzRzhisU+TN67AHYAXNxDkv7mq0VEsV6a1FbmEDf71fpH3KFzlLJe5vbH
DsoAAAF1qpa63gAABAMARzBFAiEA92ZeW0PgyWW3j+3wypLS0O/wI63C+x0WTvMZ
Vngp6AMCIBoThjaKif+XY11YbaV89ndqs1nDlzbEfBrFftoB9fchMA0GCSqGSIb3
DQEBCwUAA4IBAQA2geo9wQAd+vx+lwAafVRxCBQyBiS0qT413ewYpZYDnSkLX0l1
5kRdxDGWQhPzOio0ckj/jOtOlbbSsiovBBVTyYPB8WfkNjMd0psMNx2e6Wy/WKkQ
X3DqEOB4XGg0RwpebiAmz6lWxyFwIAbCrwCntkkaIF4LnIvczn6pvPFBtK2nXJJC
HL0Igbxo+xJLt3Hql7TcwkFDXz/LIB8AwhhkkhhwW45r3Eyjw8eOyzvflDPwSNH+
ByadQ+AH4H4vYYVo0ILNIPCdaokLQ+u4FttB9VQ+iGmpJ56Yg2muxWh8Qckca+vH
40RbC5aK1RSy2RIRpC5fwvq2JuV/CksP5G5Q
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh
......
......@@ -37,6 +37,14 @@ export function sendCode(data) {
export function getApplication(params) {
return httpRequest.get(`/enrollment/v1.0/application-materials/${projectId}`, params)
}
/**
* 获取报名信息
*/
export function updateApplication(data) {
return httpRequest.post(`/enrollment/v1.0/application-materials/${projectId}/put`, data, {
headers: { 'Content-Type': 'application/json' }
})
}
/**
* 获取报名审核状态
......
......@@ -55,12 +55,12 @@ export default {
data() {
this.checkAccount = (rule, value, callback) => {
/* 手机格式 */
if (/^1[3-9]\d{9}$/.test(value)) {
if ((/^1[3-9]\d{9}$/.test(value) || /@/.test(value))) {
this.isSendDisable = false
callback()
} else {
this.isSendDisable = true
callback(new Error('请输入正确格式的手机号'))
callback(new Error('请输入正确格式的手机号/邮箱'))
}
}
return {
......
......@@ -3,7 +3,7 @@
v-model="input"
:disabled="isSendDisable"
type="text"
placeholder="短信验证码"
placeholder="验证码"
:style="{ width: width }"
>
<el-button
......
......@@ -21,10 +21,10 @@
"passwordR": ""
},
"ruleFormlabel": "left",
"labelWidth": "90px",
"labelWidth": "110px",
"rules": {
"account": [
{ "required": true, "message": "请填写手机号!", "trigger": "change" }
{ "required": true, "message": "请填写手机号/邮箱!", "trigger": "change" }
],
"code": [
{ "required": true, "message": "请填写验证码!", "trigger": "change" }
......@@ -41,8 +41,8 @@
"type": "PageInput",
"size": "medium",
"width": "270px",
"label": "手机号",
"placeholder": "手机号",
"label": "手机号/邮箱",
"placeholder": "手机号/邮箱",
"querykey": "account"
},
{
......
......@@ -5,23 +5,18 @@
class="self-input"
v-model="setAccount.user"
type="text"
placeholder="账号"
placeholder="手机号/邮箱"
@keyup.enter.native="onSubmitSetAccount"
>
<i slot="prefix" class="el-input__icon el-icon-self-character"></i>
</el-input>
</el-form-item>
<el-form-item prop="pwd" style="margin-bottom: 4px;">
<el-input
v-model="setAccount.pwd"
type="password"
placeholder="密码"
@keyup.enter.native="onSubmitSetAccount"
>
<el-form-item prop="pwd" style="margin-bottom: 4px">
<el-input v-model="setAccount.pwd" type="password" placeholder="密码" @keyup.enter.native="onSubmitSetAccount">
<i slot="prefix" class="el-input__icon el-icon-self-mima"></i>
</el-input>
</el-form-item>
<el-form-item prop="isRemember" style="margin-bottom: 0px; text-align: left;">
<el-form-item prop="isRemember" style="margin-bottom: 0px; text-align: left">
<el-checkbox v-model="setAccount.isRemember" label="记住我" name="type"></el-checkbox>
</el-form-item>
<el-form-item>
......@@ -61,7 +56,7 @@ export default {
user: [
{
required: true,
message: '请输入账号',
message: '请输入手机号/邮箱',
trigger: 'blur'
}
],
......
......@@ -26,7 +26,8 @@ export default function(_this) {
callback() {
_this.getApplication()
this.form.options.disabled = true
_this.$router.push({ path: this.$route.path, query: { active: 'application_pay' } })
// _this.$router.push({ path: this.$route.path, query: { active: 'application_pay' } })
_this.$router.push({ path: '/my/interview' })
},
errorCallback() {
_this.completeVisible = true
......
......@@ -11,15 +11,15 @@ export default function(_this) {
info(_this),
tjx(_this),
// wfzsm(_this),
declare(_this),
{
id: 'application_pay',
title: '缴报名费',
show: false,
visible() {
return _this.visible
}
}
declare(_this)
// {
// id: 'application_pay',
// title: '缴报名费',
// show: false,
// visible() {
// return _this.visible
// }
// }
]
}
}
......@@ -13,16 +13,8 @@ export default function(_this) {
get: {
action: `/api/enrollment/v1.0/application-materials/${webConf.others.projectId}`,
callback(data) {
let { careers: list = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
const { careers: list = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
this.form.options.disabled = submissionStage !== 'FILLING'
list = list.map(item => {
const { start_date: startDate, end_date: endDate } = item
if (startDate) {
item.dates = [startDate, endDate]
}
return item
})
return list.length ? list : [{}]
}
},
......@@ -30,9 +22,6 @@ export default function(_this) {
action: `/api/enrollment/v1.0/application-materials/${webConf.others.projectId}/put`,
beforeRequest(data) {
const careers = data.map(item => {
const [startDate, endDate] = item.dates
item.start_date = startDate
item.end_date = endDate
return [
'start_date',
'end_date',
......@@ -57,16 +46,25 @@ export default function(_this) {
items: [
{
type: 'v-datepicker',
label: '工作时间',
model: 'dates',
label: '开始时间',
model: 'start_date',
attrs: {
type: 'month',
placeholder: '请选择工作开始时间',
valueFormat: 'yyyy-MM'
},
rules: [{ required: true, message: '请选择工作开始时间', trigger: 'blur' }]
},
{
type: 'v-datepicker',
label: '结束时间',
model: 'end_date',
attrs: {
type: 'monthrange',
rangeSeparator: '至',
startPlaceholder: '请选择开始时间',
endPlaceholder: '请选择结束时间',
type: 'month',
placeholder: '请选择工作结束时间',
valueFormat: 'yyyy-MM'
},
rules: [{ required: true, message: '请选择工作时间', trigger: 'blur' }]
rules: [{ required: true, message: '请选择工作结束时间', trigger: 'blur' }]
},
{
type: 'v-input',
......
......@@ -13,16 +13,8 @@ export default function(_this) {
get: {
action: `/api/enrollment/v1.0/application-materials/${webConf.others.projectId}`,
callback(data) {
let { educations: list = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
const { educations: list = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
this.form.options.disabled = submissionStage !== 'FILLING'
list = list.map(item => {
const { start_date: startDate, end_date: endDate } = item
if (startDate) {
item.dates = [startDate, endDate]
}
return item
})
return list.length ? list : [{}]
}
},
......@@ -30,9 +22,6 @@ export default function(_this) {
action: `/api/enrollment/v1.0/application-materials/${webConf.others.projectId}/put`,
beforeRequest(data) {
const educations = data.map(item => {
const [startDate, endDate] = item.dates
item.start_date = startDate
item.end_date = endDate
return ['start_date', 'end_date', 'school_name_cn', 'major_cn', 'degree'].reduce((result, key) => {
result[key] = item[key]
return result
......@@ -49,16 +38,25 @@ export default function(_this) {
items: [
{
type: 'v-datepicker',
label: '教育时间',
model: 'dates',
label: '开始时间',
model: 'start_date',
attrs: {
type: 'month',
placeholder: '请选择教育开始时间',
valueFormat: 'yyyy-MM'
},
rules: [{ required: true, message: '请选择教育开始时间', trigger: 'blur' }]
},
{
type: 'v-datepicker',
label: '结束时间',
model: 'end_date',
attrs: {
type: 'monthrange',
rangeSeparator: '至',
startPlaceholder: '请选择开始时间',
endPlaceholder: '请选择结束时间',
type: 'month',
placeholder: '请选择教育结束时间',
valueFormat: 'yyyy-MM'
},
rules: [{ required: true, message: '请选择教育时间', trigger: 'blur' }]
rules: [{ required: true, message: '请选择教育结束时间', trigger: 'blur' }]
},
{
type: 'v-input',
......
......@@ -12,16 +12,8 @@ export default function(_this) {
get: {
action: `/api/enrollment/v1.0/application-materials/${webConf.others.projectId}`,
callback(data) {
let { trainings: list = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
const { trainings: list = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
this.form.options.disabled = submissionStage !== 'FILLING'
list = list.map(item => {
const { start_date: startDate, end_date: endDate } = item
if (startDate) {
item.dates = [startDate, endDate]
}
return item
})
return list.length ? list : [{}]
}
},
......@@ -29,9 +21,6 @@ export default function(_this) {
action: `/api/enrollment/v1.0/application-materials/${webConf.others.projectId}/put`,
beforeRequest(data) {
const trainings = data.map(item => {
const [startDate, endDate] = item.dates
item.start_date = startDate
item.end_date = endDate
return ['start_date', 'end_date', 'institution_cn', 'course_cn'].reduce((result, key) => {
result[key] = item[key]
return result
......@@ -48,16 +37,25 @@ export default function(_this) {
items: [
{
type: 'v-datepicker',
label: '培训时间',
model: 'dates',
label: '开始时间',
model: 'start_date',
attrs: {
type: 'month',
placeholder: '请选择培训开始时间',
valueFormat: 'yyyy-MM'
},
rules: [{ required: true, message: '请选择培训开始时间', trigger: 'blur' }]
},
{
type: 'v-datepicker',
label: '结束时间',
model: 'end_date',
attrs: {
type: 'monthrange',
rangeSeparator: '至',
startPlaceholder: '请选择开始时间',
endPlaceholder: '请选择结束时间',
type: 'month',
placeholder: '请选择培训结束时间',
valueFormat: 'yyyy-MM'
},
rules: [{ required: true, message: '请选择培训时间', trigger: 'blur' }]
rules: [{ required: true, message: '请选择培训结束时间', trigger: 'blur' }]
},
{
type: 'v-input',
......
<template>
<div v-if="loaded">
<index-welcome @update="handleUpdate" v-if="!isSubmited" />
<index-pay v-else />
</div>
</template>
<script>
import IndexWelcome from './indexWelcome.vue'
import IndexPay from './indexPay.vue'
import * as api from '@/api/my'
export default {
components: { IndexWelcome, IndexPay },
data() {
return {
loaded: false,
progress: {}
}
},
methods: {
// 获取报名信息
getApplication() {
this.loaded = false
api
.getApplication()
.then(response => {
const { progress = {} } = response.data
this.progress = progress
// 缴费成功
if (progress.PREPAYMENT.total_progress) {
this.$router.push('/my/account')
}
})
.finally(() => {
this.loaded = true
})
},
handleUpdate(data) {
const { progress } = data
this.progress = progress
}
},
computed: {
isSubmited() {
const { FILLING = {} } = this.progress
if (FILLING && FILLING.basic_info) {
return !!FILLING.basic_info.progress
}
return false
}
},
beforeCreate() {
document.body.style.background = '#fff'
},
beforeMount() {
this.getApplication()
},
destroyed() {
document.body.style = ''
}
}
</script>
<template>
<div class="pay">
<div class="pay-hd">
<div class="pic">
<img src="../../../assets/images/my_pay_02.png" height="160" />
</div>
<h1>请使用微信扫描下方二维码</h1>
</div>
<div class="qrcode-error" v-if="qrcodeError">
生成二维码失败请刷新<i class="el-icon-refresh-left" @click="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">
<p class="t2">注释:在提交600元申请费后,申请人需上传并提交如下文件。</p>
<p class="t2">①填写报名表、②完成推荐信2封、③本科学历学位证书、④中英文成绩单、⑤个人证件照</p>
<p class="t2">该申请费不退,请慎重缴费!</p>
</div>
<el-dialog
title="报名费缴费成功"
:visible.sync="dialogVisible"
:center="true"
:close-on-click-modal="false"
width="348px"
>
<div class="dialog-pay">
<p>请填写报名所需材料,材料齐全后招生办老师将<br />给您致电预约面试日期与时间</p>
<div class="icon"><img src="../../../assets/images/icon_success.png" /></div>
</div>
<template #footer>
<el-button type="primary" @click="toApplication">立即预约</el-button>
</template>
</el-dialog>
</div>
</template>
<script>
import QrcodeVue from 'qrcode.vue'
import * as api from '@/api/my'
export default {
name: 'AppPay',
components: { QrcodeVue },
data() {
return {
isPass: false,
order: { id: '', payment_url: '' },
qrcodeError: false,
dialogVisible: false,
timer: null,
paymentRecords: [] // 所有订单
}
},
computed: {
// 二维码地址
qrcodeValue() {
return this.order.payment_url
},
// 支付成功
paySuccess() {
return this.order.payment_status === 'SUCCESS'
},
// 待支付订单
orderList() {
// 筛选待支付订单
const list = this.paymentRecords.filter(item => {
return item.bill_type === 'APPLICATION_FEE' && item.payment_status === 'WAITING_FOR_PAY'
})
// 待支付订单是否有当前订单
const found = list.find(item => item.id === this.order.id)
return found ? list : [...list, this.order]
}
},
methods: {
// 获取报名信息
async getApplication() {
await api.getApplication().then(response => {
const { payment_records: paymentRecords = [] } = response.data.material
// 获取支付订单
this.paymentRecords = paymentRecords
if (paymentRecords && paymentRecords.length) {
// 获取支付成功的订单
const orderPaySuccess = paymentRecords.find(item => {
return item.bill_type === 'APPLICATION_FEE' && item.payment_status === 'SUCCESS'
})
if (orderPaySuccess) {
this.order = orderPaySuccess
this.dialogVisible = true
return
}
// 获取最后一个订单
const [lastPayment] = paymentRecords.reverse()
this.order = lastPayment
}
})
},
// 获取订单
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) {
if (this.paySuccess) {
this.timer && clearInterval(this.timer)
return
}
const userId = window.G.UserInfo.id
await api.checkPay(order.id, { user_id: userId }).then(response => {
if (response.data.payment_status === 'SUCCESS') {
this.timer && clearInterval(this.timer)
this.dialogVisible = true
}
})
},
setCheckPayTimer() {
this.timer && clearInterval(this.timer)
this.timer = setInterval(() => {
this.orderList.forEach(order => {
this.checkPay(order)
})
}, 3000)
},
// 填写个人资料
toApplication() {
this.$router.push('/my/application?active=application_info')
}
},
async mounted() {
await this.getApplication()
await this.getOrder()
this.setCheckPayTimer()
},
destroyed() {
this.timer && clearInterval(this.timer)
}
}
</script>
<style lang="scss" scoped>
.pay {
max-width: 562px;
margin: 0 auto;
padding-top: 180px;
}
.pay-hd {
.pic {
text-align: center;
}
h1 {
margin-top: 40px;
font-size: 24px;
font-weight: 500;
color: #222;
line-height: 1;
text-align: center;
}
}
.qrcode {
padding: 20px 0;
text-align: center;
span {
margin-top: 10px;
font-size: 12px;
color: #999;
cursor: pointer;
}
}
.qrcode-error {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
width: 100px;
height: 100px;
padding: 10px;
margin: 20px auto;
color: var(--main-color);
border-style: dashed;
border-width: 1px;
border-color: var(--main-color);
box-sizing: border-box;
text-align: center;
i {
margin-top: 10px;
cursor: pointer;
}
}
.t1 {
font-size: 14px;
color: #303030;
line-height: 20px;
text-align: center;
span {
color: #ffa448;
}
}
.t2 {
font-size: 12px;
color: #999;
line-height: 20px;
}
.dialog-pay {
text-align: center;
p {
color: #262626;
line-height: 20px;
}
.icon {
margin-top: 20px;
text-align: center;
}
}
</style>
<template>
<div class="welcome">
<div class="top">
<div class="pic">
<img src="../../../assets/images/my_pay_01.png" />
</div>
<h1>欢迎您</h1>
<p class="t1">
申请紫荆-加州整合大学应用心理学硕士项目,请在填写以下内容并
提交报名申请后,扫码支付本项目的注册费、申请费共计<span>600</span>元。
</p>
</div>
<div class="form">
<el-form :model="ruleForm" :rules="rules" label-width="80px" ref="ruleForm">
<el-form-item label="姓名" prop="real_name_cn">
<el-input v-model="ruleForm.real_name_cn"></el-input>
</el-form-item>
<el-form-item label="手机号" prop="phone_number">
<el-input v-model="ruleForm.phone_number"></el-input>
</el-form-item>
<el-form-item label="邮件" prop="email">
<el-input v-model="ruleForm.email"></el-input>
</el-form-item>
<div class="buttons">
<el-button type="primary" class="button-submit" @click="handleSubmit">提交</el-button>
</div>
</el-form>
</div>
</div>
</template>
<script>
import * as api from '@/api/my'
export default {
data() {
return {
material: {},
progress: {},
ruleForm: {
real_name_cn: '',
phone_number: '',
email: ''
},
rules: {
real_name_cn: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
phone_number: [{ required: true, message: '请输入手机号', trigger: 'blur' }],
email: [{ required: true, message: '请输入邮箱', trigger: 'blur' }]
}
}
},
methods: {
handleSubmit() {
this.$refs.ruleForm.validate().then(this.handleSubmitRequest)
},
handleSubmitRequest() {
const params = {
basic_info: this.ruleForm
}
api.updateApplication(params).then(response => {
if (response.error === '0') {
this.$emit('update', response.data)
} else {
this.$message({ type: 'error', message: response.message })
}
})
}
}
}
</script>
<style lang="scss" scoped>
.welcome {
max-width: 420px;
margin: 0 auto;
padding-top: 140px;
}
.top {
padding: 40px 0;
.pic {
text-align: center;
}
h1 {
padding: 20px 0;
font-size: 24px;
font-weight: 500;
color: #222;
line-height: 1;
text-align: center;
}
}
.t1 {
font-size: 14px;
color: #262626;
line-height: 20px;
text-align: center;
span {
color: #ffa448;
}
}
.buttons {
text-align: center;
}
.button-submit {
width: 100px;
margin: 0 auto;
}
</style>
......@@ -21,10 +21,10 @@
"password": ""
},
"ruleFormlabel": "left",
"labelWidth": "70px",
"labelWidth": "110px",
"rules": {
"username": [{ "required": true, "message": "请填写用户名!", "trigger": "change" }],
"account": [{ "required": true, "message": "请填写手机号!", "trigger": "change" }],
"account": [{ "required": true, "message": "请填写手机号/邮箱!", "trigger": "change" }],
"code": [{ "required": true, "message": "请填写验证码!", "trigger": "change" }],
"password": [{ "required": true, "message": "请填写密码!", "trigger": "change" }]
},
......@@ -41,8 +41,8 @@
"type": "PageInput",
"size": "medium",
"width": "270px",
"label": "手机号",
"placeholder": "手机号",
"label": "手机号/邮箱",
"placeholder": "手机号/邮箱",
"querykey": "account"
},
{
......
......@@ -49,23 +49,29 @@ export const constantRoutes = [
{
name: 'apply',
path: '',
component: () => import(/* webpackChunkName: "my-welcome" */ '@/pages/my/welcome/index.vue'),
meta: { userRole: true, details: true }
},
{
name: 'account',
path: 'account',
component: () => import(/* webpackChunkName: "my-account" */ '@/pages/my/account/index.vue'),
meta: { userRole: true }
meta: { userRole: true, details: true }
},
{
path: 'application',
component: () => import(/* webpackChunkName: "my-application" */ '@/pages/my/application/index.vue'),
meta: { userRole: true }
meta: { userRole: true, details: true }
},
{
path: 'interview',
component: () => import(/* webpackChunkName: "my-interview" */ '@/pages/my/interview/index.vue'),
meta: { userRole: true }
meta: { userRole: true, details: true }
},
{
path: 'admission',
component: () => import(/* webpackChunkName: "my-admission" */ '@/pages/my/admission/index.vue'),
meta: { userRole: true }
meta: { userRole: true, details: true }
}
]
},
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论