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

chore: 推荐信改为上传附件;修改申请面试阶段的内容;

上级 77e2711c
...@@ -23,7 +23,7 @@ export default function(_this) { ...@@ -23,7 +23,7 @@ export default function(_this) {
} }
}, },
form: { form: {
next: { to: { query: { active: 'admission_tjx' } } }, next: { to: { query: { active: 'admission_xy' } } },
hasButton: false, hasButton: false,
options: { 'label-position': 'top' }, options: { 'label-position': 'top' },
hint: ` hint: `
......
...@@ -10,6 +10,11 @@ export default function(_this) { ...@@ -10,6 +10,11 @@ export default function(_this) {
return { return {
id: 'admission', id: 'admission',
title: '入学办理', title: '入学办理',
children: [cjd(_this), tjx(_this), xy(_this), xfjn(_this)] children: [
cjd(_this),
// tjx(_this),
xy(_this),
xfjn(_this)
]
} }
} }
...@@ -15,7 +15,7 @@ export default function(_this) { ...@@ -15,7 +15,7 @@ export default function(_this) {
} }
}, },
form: { form: {
prev: { to: { query: { active: 'admission_tjx' } } }, prev: { to: { query: { active: 'admission_cjd' } } },
next: { to: { query: { active: 'admission_xfjn' } } }, next: { to: { query: { active: 'admission_xfjn' } } },
hasButton: false, hasButton: false,
options: { 'label-position': 'top' }, options: { 'label-position': 'top' },
......
<template> <template>
<el-dialog <el-dialog
title="您当前完成进度如下:" title="您当前完成进度如下:"
width="348px" width="448px"
:center="true" :center="true"
:close-on-click-modal="false" :close-on-click-modal="false"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
...@@ -57,25 +57,30 @@ export default { ...@@ -57,25 +57,30 @@ export default {
], ],
[ [
{ {
title: '毕业证书', title: '毕业证书&学位证书/在读证明',
code: 'interviewByzs', code: 'interviewByzs',
view: { to: { path: '/my/interview', query: { active: 'interview_byzs' } } } view: { to: { path: '/my/interview', query: { active: 'interview_byzs' } } }
}, },
{ // {
title: '学位证书', // title: '学位证书',
code: 'interviewXwzs', // code: 'interviewXwzs',
view: { to: { path: '/my/interview', query: { active: 'interview_byzs' } } } // view: { to: { path: '/my/interview', query: { active: 'interview_byzs' } } }
}, // },
{ // {
title: '在读证明', // title: '在读证明',
code: 'interviewZdzm', // code: 'interviewZdzm',
view: { to: { path: '/my/interview', query: { active: 'interview_byzs' } } } // view: { to: { path: '/my/interview', query: { active: 'interview_byzs' } } }
}, // },
{ {
title: '英文简历', title: '英文简历',
code: 'interviewYwjl', code: 'interviewYwjl',
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/application', query: { active: 'application_tjx' } } }
},
{ {
title: '成绩单', title: '成绩单',
code: 'interviewCjd', code: 'interviewCjd',
...@@ -91,12 +96,6 @@ export default { ...@@ -91,12 +96,6 @@ export default {
code: 'interviewZp', code: 'interviewZp',
view: { to: { path: '/my/interview', query: { active: 'interview_zp' } } } view: { to: { path: '/my/interview', query: { active: 'interview_zp' } } }
} }
// {
// title: '推荐信',
// code: 'interviewTjx',
// view: { to: { path: '/my/application', query: { active: 'application_tjx' } } }
// }
] ]
] ]
} }
...@@ -152,7 +151,10 @@ export default { ...@@ -152,7 +151,10 @@ export default {
interviewZp.progress = missedRequiredList.PERSONAL_PHOTO_FOR_ID ? 0 : 1 interviewZp.progress = missedRequiredList.PERSONAL_PHOTO_FOR_ID ? 0 : 1
// 毕业证书 // 毕业证书
const interviewByzs = { progress: 0 } const interviewByzs = { progress: 0 }
interviewByzs.progress = missedRequiredList.DIPLOMA_CN ? 0 : 1 interviewByzs.progress =
missedRequiredList.DIPLOMA_CN || missedRequiredList.DEGREE_CERT_CN || missedRequiredList.PROOF_READING
? 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
...@@ -173,9 +175,7 @@ export default { ...@@ -173,9 +175,7 @@ export default {
interviewYynlzm.progress = missedRequiredList.INTERNATIONAL_LANGUAGE_SCORE ? 0 : 1 interviewYynlzm.progress = missedRequiredList.INTERNATIONAL_LANGUAGE_SCORE ? 0 : 1
// 推荐信 // 推荐信
const interviewTjx = { progress: 0 } const interviewTjx = { progress: 0 }
interviewTjx.progress = progress.INTERVIEW_APPLICATION.reco_letters interviewTjx.progress = missedRequiredList.RECOMMENDATION_LETTER ? 0 : 1
? progress.INTERVIEW_APPLICATION.reco_letters.progress
: 0
this.progress = { this.progress = {
applicaitonInfo, applicaitonInfo,
...@@ -217,7 +217,7 @@ li { ...@@ -217,7 +217,7 @@ li {
align-items: center; align-items: center;
} }
.name { .name {
width: 100px; width: 190px;
text-align: right; text-align: right;
} }
.line { .line {
......
export default function(_this) { export default function(_this) {
return { return {
required: true,
id: 'interview_byzs', id: 'interview_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) {
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) > 2 this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 2
return attachments.reduce( return attachments.reduce(
(result, item) => { (result, item) => {
...@@ -44,7 +54,8 @@ export default function(_this) { ...@@ -44,7 +54,8 @@ export default function(_this) {
deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`, deleteAction: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/attachments/${process.env.projectId}/delete`,
data: { file_type: 'DIPLOMA_CN' } data: { file_type: 'DIPLOMA_CN' }
}, },
append: '申请者需要将本科或以上毕业证书原件扫描或者拍照后提交。<br> 可上传多个文件,请确保证书号码清晰可辨。<br> 上传文件仅限“jpg,jpeg,png”格式,文件小于10MB。' append:
'申请者需要将本科或以上毕业证书原件扫描或者拍照后提交。<br> 可上传多个文件,请确保证书号码清晰可辨。<br> 上传文件仅限“jpg,jpeg,png”格式,文件小于10MB。'
}, },
{ {
required: true, required: true,
...@@ -56,7 +67,8 @@ export default function(_this) { ...@@ -56,7 +67,8 @@ export default function(_this) {
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: 'DEGREE_CERT_CN' } data: { file_type: 'DEGREE_CERT_CN' }
}, },
append: '已毕业学员请提交学位证书<br />申请者需要将本科或以上的学位证书原件扫描或拍照后提交<br />可上传多个文件,请确保公章清晰可辨。' append:
'已毕业学员请提交学位证书<br />申请者需要将本科或以上的学位证书原件扫描或拍照后提交<br />可上传多个文件,请确保公章清晰可辨。'
}, },
{ {
required: true, required: true,
...@@ -68,7 +80,8 @@ export default function(_this) { ...@@ -68,7 +80,8 @@ export default function(_this) {
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: 'PROOF_READING' } data: { file_type: 'PROOF_READING' }
}, },
append: '未毕业学员提交加盖公章的在读证明<br/>申请者需要将本科或以上在读证明原件扫描或拍照后提交。<br> 可上传多个文件,请确保公章清晰可辨。' append:
'未毕业学员提交加盖公章的在读证明<br/>申请者需要将本科或以上在读证明原件扫描或拍照后提交。<br> 可上传多个文件,请确保公章清晰可辨。'
} }
] ]
} }
......
export default function(_this) { export default function(_this) {
return { return {
required: true,
id: 'interview_cjd', id: 'interview_cjd',
title: '成绩单', title: '成绩单',
get: { get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`, action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) { callback(data) {
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) > 2 this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 2
return attachments.reduce( return attachments.reduce(
(result, item) => { (result, item) => {
...@@ -23,7 +33,7 @@ export default function(_this) { ...@@ -23,7 +33,7 @@ export default function(_this) {
} }
}, },
form: { form: {
prev: { to: { query: { active: 'interview_ywjl' } } }, prev: { to: { query: { active: 'interview_tjx' } } },
next: { to: { query: { active: 'interview_yynl' } } }, next: { to: { query: { active: 'interview_yynl' } } },
hasButton: false, hasButton: false,
options: { 'label-position': 'top' }, options: { 'label-position': 'top' },
......
...@@ -4,11 +4,12 @@ import yynl from './yynl' ...@@ -4,11 +4,12 @@ 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'
export default function(_this) { export default function(_this) {
return { return {
id: 'interview', id: 'interview',
title: '申请面试', title: '申请面试',
children: [byzs(_this), ywjl(_this), cjd(_this), yynl(_this), zp(_this)] children: [byzs(_this), ywjl(_this), tjx(_this), cjd(_this), yynl(_this), zp(_this)]
} }
} }
export default function(_this) {
return {
required: true,
id: 'interview_tjx',
title: '推荐信',
get: {
action: `${process.env.baseURL}/api/enrollment/v1.0/application-materials/${process.env.projectId}`,
callback(data) {
const { attachments = [], submission_stage: submissionStage = 'FILLING' } = data.data.material
const stageList = [
'FILLING',
'PREPAYMENT',
'INTERVIEW_APPLICATION',
'AUDITION',
'INTERVIEW',
'PAYMENT',
'REGISTRATION',
'CLOSED'
]
this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 2
return 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: [] }
)
}
},
// 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: 'interview_ywjl' } } },
next: { to: { query: { active: 'interview_cjd' } } },
hasButton: false,
// submitText: '申请面试',
// model: { submission_stage: 'INTERVIEW_APPLICATION' },
options: {},
items: [
{
type: 'v-upload',
model: 'RECOMMENDATION_LETTER',
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: 'RECOMMENDATION_LETTER' },
accept: 'image/*'
},
append: '请上传推荐人署名的推荐信原件照片或扫描件 ',
class: 'upload-letter'
}
]
}
}
}
export default function(_this) { export default function(_this) {
return { return {
required: true,
id: 'interview_ywjl', id: 'interview_ywjl',
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 = [
'FILLING',
'PREPAYMENT',
'INTERVIEW_APPLICATION',
'AUDITION',
'INTERVIEW',
'PAYMENT',
'REGISTRATION',
'CLOSED'
]
this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 2 this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 2
const RESUME_EN = attachments.filter(item => { const RESUME_EN = attachments.filter(item => {
return item.file_type_id === 'RESUME_EN' return item.file_type_id === 'RESUME_EN'
...@@ -16,13 +26,12 @@ export default function(_this) { ...@@ -16,13 +26,12 @@ export default function(_this) {
}, },
form: { form: {
prev: { to: { query: { active: 'interview_byzs' } } }, prev: { to: { query: { active: 'interview_byzs' } } },
next: { to: { query: { active: 'interview_cjd' } } }, next: { to: { query: { active: 'interview_tjx' } } },
hasButton: false, hasButton: false,
options: { 'label-position': 'top' }, options: { 'label-position': 'top' },
items: [ items: [
{ {
required: true, required: true,
label: '英文简历',
type: 'v-upload', type: 'v-upload',
model: 'RESUME_EN', model: 'RESUME_EN',
attrs: { attrs: {
......
export default function(_this) { export default function(_this) {
return { return {
required: true,
id: 'interview_yynl', id: 'interview_yynl',
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 = [
'FILLING',
'PREPAYMENT',
'INTERVIEW_APPLICATION',
'AUDITION',
'INTERVIEW',
'PAYMENT',
'REGISTRATION',
'CLOSED'
]
this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 2 this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 2
return attachments.reduce( return attachments.reduce(
(result, item) => { (result, item) => {
...@@ -29,7 +39,6 @@ export default function(_this) { ...@@ -29,7 +39,6 @@ export default function(_this) {
{ {
required: true, required: true,
type: 'v-upload', type: 'v-upload',
label: '语言能力证明',
model: 'INTERNATIONAL_LANGUAGE_SCORE', model: 'INTERNATIONAL_LANGUAGE_SCORE',
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`,
......
export default function(_this) { export default function(_this) {
return { return {
required: true,
id: 'interview_zp', id: 'interview_zp',
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 = [
'FILLING',
'PREPAYMENT',
'INTERVIEW_APPLICATION',
'AUDITION',
'INTERVIEW',
'PAYMENT',
'REGISTRATION',
'CLOSED'
]
this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 2 this.form.options.disabled = stageList.findIndex(item => item === submissionStage) > 2
const PERSONAL_PHOTO_FOR_ID = attachments.filter(item => { const PERSONAL_PHOTO_FOR_ID = attachments.filter(item => {
return item.file_type_id === 'PERSONAL_PHOTO_FOR_ID' return item.file_type_id === 'PERSONAL_PHOTO_FOR_ID'
...@@ -35,9 +45,7 @@ export default function(_this) { ...@@ -35,9 +45,7 @@ export default function(_this) {
options: { 'label-position': 'top' }, options: { 'label-position': 'top' },
items: [ items: [
{ {
required: true,
type: 'v-upload', type: 'v-upload',
label: '个人照片',
model: 'PERSONAL_PHOTO_FOR_ID', model: 'PERSONAL_PHOTO_FOR_ID',
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`,
......
...@@ -82,6 +82,9 @@ export default { ...@@ -82,6 +82,9 @@ export default {
}, },
showSubmitedDialog() { showSubmitedDialog() {
return this.isSubmited && this.currentActive === 'interview_byzs' return this.isSubmited && this.currentActive === 'interview_byzs'
},
user() {
return this.$store.state.user
} }
}, },
methods: { methods: {
......
...@@ -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.2.4", "@ezijing/vue-form": "^2.2.12",
"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",
...@@ -1012,9 +1012,9 @@ ...@@ -1012,9 +1012,9 @@
} }
}, },
"node_modules/@ezijing/vue-form": { "node_modules/@ezijing/vue-form": {
"version": "2.2.4", "version": "2.2.12",
"resolved": "https://registry.npmjs.org/@ezijing/vue-form/-/vue-form-2.2.4.tgz", "resolved": "https://registry.npmjs.org/@ezijing/vue-form/-/vue-form-2.2.12.tgz",
"integrity": "sha512-pK3E+KMTquSfpUkoz+mP9EbVrcjttKk72KsS75wL5toVC71tt3VysipsKeQcYzJFtOPKNTEbb0af0Um0Fsx3zQ==", "integrity": "sha512-PG9YfVVt/2+mrMDKJ4jB7rEuet7J8o8Xl6FYYYfZOcS+BYYHsvRQ+WaW3imqRNxGccRtrq99KoXRBlpe8e2Pww==",
"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 +13735,9 @@ ...@@ -13735,9 +13735,9 @@
"integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw=="
}, },
"@ezijing/vue-form": { "@ezijing/vue-form": {
"version": "2.2.4", "version": "2.2.12",
"resolved": "https://registry.npmjs.org/@ezijing/vue-form/-/vue-form-2.2.4.tgz", "resolved": "https://registry.npmjs.org/@ezijing/vue-form/-/vue-form-2.2.12.tgz",
"integrity": "sha512-pK3E+KMTquSfpUkoz+mP9EbVrcjttKk72KsS75wL5toVC71tt3VysipsKeQcYzJFtOPKNTEbb0af0Um0Fsx3zQ==", "integrity": "sha512-PG9YfVVt/2+mrMDKJ4jB7rEuet7J8o8Xl6FYYYfZOcS+BYYHsvRQ+WaW3imqRNxGccRtrq99KoXRBlpe8e2Pww==",
"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.2.4", "@ezijing/vue-form": "^2.2.12",
"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",
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论