|
|
|
@ -129,6 +129,7 @@ |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<!-- 个人报名(有赛事邀请码的情况,没有赛事邀请码的情况不用弹框,直接报名成功) --> |
|
|
|
|
<el-dialog title="报名" :visible.sync="peopleSignupVisible" :close-on-click-modal="false" width="300px"> |
|
|
|
|
<el-form class="dia-form"> |
|
|
|
|
<el-form-item> |
|
|
|
@ -141,7 +142,72 @@ |
|
|
|
|
<el-button size="small" @click="peopleSignupVisible = false">取消</el-button> |
|
|
|
|
</span> |
|
|
|
|
</el-dialog> |
|
|
|
|
<el-dialog title="报名" :visible.sync="enterVisible" :close-on-click-modal="false" width="300px"> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 安财赛事报名专用(个人及团队都用这个) --> |
|
|
|
|
<el-dialog v-if="fromOffical" title="报名" :visible.sync="enterVisible" :close-on-click-modal="false" width="850px" |
|
|
|
|
custom-class="enter-dia"> |
|
|
|
|
<div class="flex"> |
|
|
|
|
<el-form class="dia-form" label-width="90px"> |
|
|
|
|
<el-form-item label="姓名"> |
|
|
|
|
<el-input disabled v-model="userName"></el-input> |
|
|
|
|
</el-form-item> |
|
|
|
|
<el-form-item label="来自学校"> |
|
|
|
|
<el-select v-model="enterForm.realSchoolId" filterable style="width: 100%"> |
|
|
|
|
<el-option v-for="(item, i) in schools" :key="i" :label="item.schoolName" |
|
|
|
|
:value="item.schoolId"></el-option> |
|
|
|
|
</el-select> |
|
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
|
|
<!-- 团队报名 --> |
|
|
|
|
<template v-if="curItem.competitionType"> |
|
|
|
|
<p class="m-t-20 m-b-5">请选择要加入的团队</p> |
|
|
|
|
<el-form-item label="团队"> |
|
|
|
|
<el-select class="w-100" v-model="enterForm.teamId" filterable> |
|
|
|
|
<el-option v-for="(item, i) in teams" :key="i" :label="item.teamName" :value="item.teamId"></el-option> |
|
|
|
|
</el-select> |
|
|
|
|
</el-form-item> |
|
|
|
|
<el-form-item label="团队邀请码"> |
|
|
|
|
<el-input placeholder="请输入团队邀请码" maxlength="6" v-model="enterForm.invitationCode"></el-input> |
|
|
|
|
</el-form-item> |
|
|
|
|
</template> |
|
|
|
|
<el-form-item label="大赛邀请码" v-if="curItem.isNeedCode"> |
|
|
|
|
<el-input placeholder="请输入大赛邀请码" maxlength="6" v-model="enterForm.registrationInvitationCode"></el-input> |
|
|
|
|
</el-form-item> |
|
|
|
|
<p v-if="curItem.competitionType" class="tips"> |
|
|
|
|
查找不到团队?点击 <el-link :underline="false" type="primary" @click="toTeam">创建团队</el-link> |
|
|
|
|
</p> |
|
|
|
|
</el-form> |
|
|
|
|
<div class="agree"> |
|
|
|
|
<div class="agreement"> |
|
|
|
|
<h6>参赛选手承诺书</h6> |
|
|
|
|
<div class="text"> |
|
|
|
|
<p class="line">本人自愿参加2024年安徽省大学生金融投资创新大赛,为进一步提高廉洁自律意识,客观公正的履行职责,我以大赛参赛学生的身份和荣誉郑重作出如下承诺:</p> |
|
|
|
|
<p class="line">1.尊重大赛组委会及秘书处,尊重专家和仲裁,尊重参赛单位和其他选手,客观、公正地参加比赛。</p> |
|
|
|
|
<p class="line"> |
|
|
|
|
2.遵守道德,遵守大赛纪律,不私下接触其他参赛单位和团队成员、专家、裁判员、仲裁员。 |
|
|
|
|
</p> |
|
|
|
|
<p class="line"> |
|
|
|
|
3.保证提交的所有信息、数据和材料均真实、准确、合法及有效,不侵犯任何第三方的知识产权和其他权益。参赛选手均无条件配合大赛组委会对参赛选手提供的数据、信息、材料及有关情况等进行核实。 |
|
|
|
|
</p> |
|
|
|
|
<p class="line">4.遵守公正、公平原则,不干扰裁判员、仲裁员等工作及其他参赛单位和团队成员等比赛,影响比赛成绩。认可大赛组委会提供的基础数据。</p> |
|
|
|
|
<p class="line">5.不发表、不传播没有根据并对大赛产生不利影响的言论。</p> |
|
|
|
|
<p class="line">6.不隐瞒按规定应该回避的事项。</p> |
|
|
|
|
<p class="line">7.对于涉嫌泄密事宜,愿接受、协助、配合相关部门的监督检查,并履行举证义务。</p> |
|
|
|
|
<p class="line">8.如若发生上述问题,自愿承担相关责任。</p> |
|
|
|
|
<p class="line">特此承诺!</p> |
|
|
|
|
<p class="line">勾选后才可登录和注册!</p> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<el-checkbox class="m-t-15 m-l-20" v-model="agreeCheck">同意,我已阅读</el-checkbox> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<span slot="footer" class="dialog-footer"> |
|
|
|
|
<el-button size="small" type="primary" @click="officalEnterSubmit">报名</el-button> |
|
|
|
|
<el-button size="small" @click="enterVisible = false">取消</el-button> |
|
|
|
|
</span> |
|
|
|
|
</el-dialog> |
|
|
|
|
<el-dialog v-else title="报名" :visible.sync="enterVisible" :close-on-click-modal="false" width="300px"> |
|
|
|
|
<el-form class="dia-form"> |
|
|
|
|
<p style="margin-bottom: 5px">请选择要加入的团队</p> |
|
|
|
|
<el-form-item> |
|
|
|
@ -164,6 +230,7 @@ |
|
|
|
|
<el-button size="small" @click="enterVisible = false">取消</el-button> |
|
|
|
|
</span> |
|
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
|
|
<el-dialog title="创建团队" :visible.sync="teamVisible" :close-on-click-modal="false" width="300px"> |
|
|
|
|
<el-form class="dia-form"> |
|
|
|
|
<el-form-item> |
|
|
|
@ -260,11 +327,15 @@ export default { |
|
|
|
|
|
|
|
|
|
enterVisible: false, |
|
|
|
|
enterForm: { |
|
|
|
|
realSchoolId: '', |
|
|
|
|
competitionId: '', |
|
|
|
|
teamId: '', |
|
|
|
|
invitationCode: '', |
|
|
|
|
registrationInvitationCode: '' |
|
|
|
|
}, |
|
|
|
|
curRealSchoolId: '', |
|
|
|
|
schools: [], |
|
|
|
|
agreeCheck: false, |
|
|
|
|
|
|
|
|
|
teamVisible: false, |
|
|
|
|
teams: [], |
|
|
|
@ -286,18 +357,28 @@ export default { |
|
|
|
|
timer: null, |
|
|
|
|
}; |
|
|
|
|
}, |
|
|
|
|
computed: { |
|
|
|
|
...mapState("user", [ |
|
|
|
|
'userId', , 'userName' |
|
|
|
|
]) |
|
|
|
|
}, |
|
|
|
|
watch: { |
|
|
|
|
keyword: function (val) { |
|
|
|
|
keyword: function () { |
|
|
|
|
clearTimeout(this.searchTimer); |
|
|
|
|
this.searchTimer = setTimeout(() => { |
|
|
|
|
this.initData(); |
|
|
|
|
}, 500); |
|
|
|
|
this.initData() |
|
|
|
|
}, 500) |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
mounted () { |
|
|
|
|
this.getProvince() |
|
|
|
|
this.getData() |
|
|
|
|
this.$once('hook:beforeDestroy', this.clearTimer) |
|
|
|
|
|
|
|
|
|
if (this.fromOffical && this.token) { |
|
|
|
|
this.getCurSchool() |
|
|
|
|
this.getSchool() |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
methods: { |
|
|
|
|
getList () { |
|
|
|
@ -320,9 +401,10 @@ export default { |
|
|
|
|
let result = [] |
|
|
|
|
// 如果是安财赛事,只展示4条固定的赛事 |
|
|
|
|
if (this.fromOffical) { |
|
|
|
|
list.forEach(e => { |
|
|
|
|
(+e.id > 457 && +e.id < 462) && result.push(e) |
|
|
|
|
}) |
|
|
|
|
result = list |
|
|
|
|
// list.forEach(e => { |
|
|
|
|
// (+e.id > 457 && +e.id < 462) && result.push(e) |
|
|
|
|
// }) |
|
|
|
|
} else { |
|
|
|
|
result = list |
|
|
|
|
} |
|
|
|
@ -484,27 +566,59 @@ export default { |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
// 个人报名提交 |
|
|
|
|
peopleSignupSubmit () { |
|
|
|
|
this.$post(this.api.addCompetitionRegistration, { |
|
|
|
|
async peopleSignupSubmit () { |
|
|
|
|
await this.$post(this.api.addCompetitionRegistration, { |
|
|
|
|
competitionId: this.curRow.id, |
|
|
|
|
registrationInvitationCode: this.peopleSignupForm.registrationInvitationCode |
|
|
|
|
}).then(res => { |
|
|
|
|
this.peopleSignupVisible = false |
|
|
|
|
this.getData() |
|
|
|
|
this.$message.success('报名成功') |
|
|
|
|
}).catch(res => { }) |
|
|
|
|
}) |
|
|
|
|
this.peopleSignupVisible = false |
|
|
|
|
this.getData() |
|
|
|
|
this.$message.success('报名成功') |
|
|
|
|
}, |
|
|
|
|
// 获取当前学校 |
|
|
|
|
async getCurSchool () { |
|
|
|
|
const res = await this.$post(this.api.getSchoolIdByToken) |
|
|
|
|
this.curRealSchoolId = res.schoolId |
|
|
|
|
}, |
|
|
|
|
// 获取学校 |
|
|
|
|
async getSchool () { |
|
|
|
|
const res = await this.$post(this.api.customerSettingsList, { |
|
|
|
|
pageNum: 1, |
|
|
|
|
pageSize: 10000, |
|
|
|
|
}) |
|
|
|
|
this.schools = res.page.records |
|
|
|
|
}, |
|
|
|
|
// 团队报名提交 |
|
|
|
|
enterSubmit () { |
|
|
|
|
async enterSubmit () { |
|
|
|
|
const form = this.enterForm |
|
|
|
|
if (!form.teamId) return Util.errorMsg('请选择团队') |
|
|
|
|
if (!form.invitationCode) return Util.errorMsg('请输入团队邀请码') |
|
|
|
|
if (this.curItem.isNeedCode && !form.registrationInvitationCode) return Util.errorMsg('请输入大赛邀请码') |
|
|
|
|
this.$post(this.api.joinCompetitionTeam, form).then(res => { |
|
|
|
|
this.enterVisible = false |
|
|
|
|
this.getData() |
|
|
|
|
Util.successMsg('报名成功!') |
|
|
|
|
}).catch(res => { }) |
|
|
|
|
delete form.realSchoolId |
|
|
|
|
await this.$post(this.api.joinCompetitionTeam, form) |
|
|
|
|
this.enterVisible = false |
|
|
|
|
this.getData() |
|
|
|
|
Util.successMsg('报名成功!') |
|
|
|
|
}, |
|
|
|
|
// 安财赛事报名提交 |
|
|
|
|
async officalEnterSubmit () { |
|
|
|
|
if (this.submiting) return false |
|
|
|
|
if (!this.agreeCheck) return Util.errorMsg('请勾选同意,才可继续报名!') |
|
|
|
|
const form = this.enterForm |
|
|
|
|
const isTeam = this.curItem.competitionType // 团队赛 |
|
|
|
|
if (isTeam) { |
|
|
|
|
if (!form.teamId) return Util.errorMsg('请选择团队') |
|
|
|
|
if (!form.invitationCode) return Util.errorMsg('请输入团队邀请码') |
|
|
|
|
} |
|
|
|
|
if (!form.realSchoolId) return Util.errorMsg('请选择来自学校') |
|
|
|
|
if (this.curItem.isNeedCode && !form.registrationInvitationCode) return Util.errorMsg('请输入大赛邀请码') |
|
|
|
|
this.submiting = true |
|
|
|
|
await this.$post(this.api[isTeam ? 'joinCompetitionTeam' : 'addCompetitionRegistration'], form) |
|
|
|
|
this.enterVisible = false |
|
|
|
|
this.getData() |
|
|
|
|
this.getCurSchool() |
|
|
|
|
Util.successMsg('报名成功!') |
|
|
|
|
this.submiting = false |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
// 该阶段是否符合线下能进入比赛的条件 |
|
|
|
@ -591,16 +705,21 @@ export default { |
|
|
|
|
this.getAllow(item) |
|
|
|
|
} |
|
|
|
|
} else if (status == 2) { // 报名 |
|
|
|
|
// 团队赛报名 |
|
|
|
|
if (item.competitionType) { |
|
|
|
|
// 团队赛报名(来自安财的个人团队报名都要弹框) |
|
|
|
|
if (competitionType || this.fromOffical) { |
|
|
|
|
this.getTeam() |
|
|
|
|
this.enterForm = { |
|
|
|
|
realSchoolId: '', |
|
|
|
|
competitionId: id, |
|
|
|
|
teamId: '', |
|
|
|
|
invitationCode: '', |
|
|
|
|
registrationInvitationCode: '' |
|
|
|
|
} |
|
|
|
|
this.enterVisible = true |
|
|
|
|
if (this.fromOffical) { |
|
|
|
|
this.agreeCheck = false |
|
|
|
|
this.enterForm.realSchoolId = this.curRealSchoolId |
|
|
|
|
} |
|
|
|
|
} else { // 个人赛报名 |
|
|
|
|
if (item.isNeedCode) { |
|
|
|
|
this.curRow = item |
|
|
|
@ -632,7 +751,6 @@ export default { |
|
|
|
|
type: 'success', |
|
|
|
|
closeOnClickModal: false |
|
|
|
|
}).then(() => { |
|
|
|
|
// this.$route.query.q ? localStorage.removeItem('toMatch') : localStorage.setItem('toMatch', item.id) |
|
|
|
|
localStorage.setItem('toMatch', item.id) |
|
|
|
|
this.$router.push('/login') |
|
|
|
|
}).catch(() => { }) |
|
|
|
@ -997,6 +1115,34 @@ export default { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/deep/.enter-dia { |
|
|
|
|
.agree { |
|
|
|
|
width: 500px; |
|
|
|
|
margin-left: 20px; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.agreement { |
|
|
|
|
max-height: 300px; |
|
|
|
|
padding: 10px 20px; |
|
|
|
|
box-shadow: 0 0 7px rgba(235, 235, 235, .8); |
|
|
|
|
overflow: auto; |
|
|
|
|
|
|
|
|
|
h6 { |
|
|
|
|
font-size: 20px; |
|
|
|
|
font-weight: 600; |
|
|
|
|
text-align: center; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.text { |
|
|
|
|
line-height: 1.6; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.line { |
|
|
|
|
margin-top: 7px; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@media (max-width: 1000px) { |
|
|
|
|
.main { |
|
|
|
|
.center-wrap { |
|
|
|
|