赛事修复

master
yujialong 6 months ago
parent 9182de09ec
commit db25648ed2
  1. 2
      src/api/index.js
  2. 2
      src/pages/achievement/show/index.vue
  3. 7
      src/pages/match/add/step1.vue
  4. 44
      src/pages/match/add/step3.vue
  5. 2
      src/pages/match/manage/abnormalTeam.vue
  6. 11
      src/pages/match/manage/matchInfo.vue
  7. 16
      src/pages/match/manage/matchSignup.vue
  8. 4
      src/pages/station/preview/index.vue

@ -229,8 +229,10 @@ export default {
TeamDataExportFailure: `${host}competition/competition/registration/exportFailure`, TeamDataExportFailure: `${host}competition/competition/registration/exportFailure`,
batchDeleteApplicants: `competition/competition/registration/batchDeleteApplicants`, batchDeleteApplicants: `competition/competition/registration/batchDeleteApplicants`,
deleteAllData: `competition/competition/registration/deleteAllData`, deleteAllData: `competition/competition/registration/deleteAllData`,
whetherThereIsReport: `competition/competitionAutomaticAllocationRecord/whetherThereIsReport`,
competionPersonTemplate: `https://huoran.oss-cn-shenzhen.aliyuncs.com/%E6%95%99%E5%B8%88%E7%AB%AF%E4%B8%AA%E4%BA%BA%E8%B5%9B%E6%8A%A5%E5%90%8D%E4%BA%BA%E5%91%98%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF.xlsx`, // 教师端个人报名人员模板 competionPersonTemplate: `https://huoran.oss-cn-shenzhen.aliyuncs.com/%E6%95%99%E5%B8%88%E7%AB%AF%E4%B8%AA%E4%BA%BA%E8%B5%9B%E6%8A%A5%E5%90%8D%E4%BA%BA%E5%91%98%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF.xlsx`, // 教师端个人报名人员模板
competionTeamTemplate: `https://huoran.oss-cn-shenzhen.aliyuncs.com/%E6%95%99%E5%B8%88%E7%AB%AF%E5%9B%A2%E9%98%9F%E8%B5%9B%E6%8A%A5%E5%90%8D%E4%BA%BA%E5%91%98%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF.xlsx`, // 教师端团队报名人员导入模板 competionTeamTemplate: `https://huoran.oss-cn-shenzhen.aliyuncs.com/%E6%95%99%E5%B8%88%E7%AB%AF%E5%9B%A2%E9%98%9F%E8%B5%9B%E6%8A%A5%E5%90%8D%E4%BA%BA%E5%91%98%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF.xlsx`, // 教师端团队报名人员导入模板
exportAbnormalData: `${host}competition/teamAbnormalInformation/exportAbnormalData`,
// 赛事公告 // 赛事公告
addAnnouncement: `competition/competition/announcement/addAnnouncement`, addAnnouncement: `competition/competition/announcement/addAnnouncement`,

@ -219,7 +219,7 @@ export default {
} }
}) })
e.lcStudentAnswer.map((n, i) => { e.lcStudentAnswer.map((n, i) => {
e.answer += `${i + 1}.${n.userAnswer};` e.answer += `${i + 1}.${n.userAnswer || '未填写'};`
}) })
}) })
} else { // pythonuserScores } else { // pythonuserScores

@ -290,7 +290,8 @@ export default {
}, },
submiting: false, submiting: false,
updateTime: 0, updateTime: 0,
quillShow: true quillShow: true,
originSignUpEndTime: '',
}; };
}, },
components: { components: {
@ -384,6 +385,7 @@ export default {
}) })
this.rangeName = range.join(',') this.rangeName = range.join(',')
} }
this.originSignUpEndTime = competition.signUpEndTime
this.form = competition this.form = competition
this.$parent.resumeData() this.$parent.resumeData()
this.$nextTick(() => { this.$nextTick(() => {
@ -625,11 +627,12 @@ export default {
const now = await Util.getNow() const now = await Util.getNow()
// //
if (this.originSignUpEndTime && signUpEndTime !== this.originSignUpEndTime && new Date(signUpEndTime) < now) { if (this.originSignUpEndTime && signUpEndTime !== this.originSignUpEndTime && (new Date(signUpEndTime) < now || (new Date(this.originSignUpEndTime) < now && new Date(signUpEndTime) > now))) {
await this.$post(this.api.updateEventAllocationRecord, { await this.$post(this.api.updateEventAllocationRecord, {
competitionId: id, competitionId: id,
whetherToModifyTheRule: 1, whetherToModifyTheRule: 1,
}) })
this.originSignUpEndTime = signUpEndTime
} }
} }
}, },

@ -311,7 +311,7 @@ export default {
// //
async autoAllocationConfirm (next) { async autoAllocationConfirm (next) {
const { data } = await this.$post(`${this.api.viewEventAllocationInformation}?competitionId=${this.competitionId}`) const { data } = await this.$post(`${this.api.viewEventAllocationInformation}?competitionId=${this.competitionId}`)
if (data.assignOrNot === undefined || !this.form[0].contentId) { if (!data || data.assignOrNot === undefined || !this.form[0].contentId) {
// or // or
this.$confirm('<p>团队赛发布成功,是否要自动分配阶段参赛人员?</p><p style="margin-top: 10px;color: #a9a9a9;">(点击“是”将会在报名结束后给报名的团队自动分配阶段参赛人员</p>', '提示', { this.$confirm('<p>团队赛发布成功,是否要自动分配阶段参赛人员?</p><p style="margin-top: 10px;color: #a9a9a9;">(点击“是”将会在报名结束后给报名的团队自动分配阶段参赛人员</p>', '提示', {
confirmButtonText: '是', confirmButtonText: '是',
@ -325,31 +325,25 @@ export default {
this.automaticAllocation(0, next) this.automaticAllocation(0, next)
}) })
} else { } else {
const now = await Util.getNow() //
// > const res = await this.$post(`${this.api.editWhetherPopUpsAppear}?competitionId=${this.competitionId}`)
if (new Date(this.$parent.$refs.step1.form.signUpEndTime) > now) { if (res.popupState) {
this.$emit('next', next) this.$confirm('<p>团队赛发布成功,是否要重新自动分配阶段参赛人员?</p><p style="margin-top: 10px;color: #a9a9a9;">(点击“是”将会<span style="color: #f00;">立即</span>给报名的团队自动分配阶段参赛人员</p>', '提示', {
} else { confirmButtonText: '是',
// cancelButtonText: '否',
const res = await this.$post(`${this.api.editWhetherPopUpsAppear}?competitionId=${this.competitionId}`) type: 'success',
if (res.popupState) { closeOnClickModal: false,
this.$confirm('<p>团队赛发布成功,是否要重新自动分配阶段参赛人员?</p><p style="margin-top: 10px;color: #a9a9a9;">(点击“是”将会<span style="color: #f00;">立即</span>给报名的团队自动分配阶段参赛人员</p>', '提示', { showClose: false,
confirmButtonText: '是', dangerouslyUseHTMLString: true,
cancelButtonText: '否', }).then(async () => {
type: 'success', await this.$post(`${this.api.automaticAllocation}?competitionId=${this.id}`) //
closeOnClickModal: false,
showClose: false,
dangerouslyUseHTMLString: true,
}).then(async () => {
await this.$post(`${this.api.automaticAllocation}?competitionId=${this.id}`) //
this.$emit('next', next)
}).catch(() => {
this.automaticAllocation(0, next)
})
} else {
//
this.$emit('next', next) this.$emit('next', next)
} }).catch(() => {
this.automaticAllocation(0, next)
})
} else {
//
this.$emit('next', next)
} }
} }
}, },

@ -561,7 +561,7 @@ export default {
this.exporting = false this.exporting = false
}) })
} else { } else {
axios.get(`${this.api.excelExport}?competitionId=${this.id}`, { axios.get(`${this.api.exportAbnormalData}?competitionId=${this.id}`, {
headers: { headers: {
token: this.token token: this.token
}, },

@ -6,7 +6,7 @@
</div> </div>
</el-card> </el-card>
<el-card shadow="hover" class="m-b-20"> <el-card shadow="hover" class="m-b-20" v-loading="loading">
<div style="display: flex;align-items: center"> <div style="display: flex;align-items: center">
<table v-if="form.completeCompetitionSetup.competitionType" class="table m-b-20 m-r-10"> <table v-if="form.completeCompetitionSetup.competitionType" class="table m-b-20 m-r-10">
<tr> <tr>
@ -110,7 +110,7 @@
</template> </template>
<span v-else class="m-r-5"></span> <span v-else class="m-r-5"></span>
<i class="el-icon-edit icon" @click="selectPar(item)"></i> <i class="el-icon-edit icon" @click="selectPar(item)"></i>
<el-tooltip v-if="stageTip.length && stageTip[i]" effect="dark" :content="stageTip[i]" <el-tooltip v-if="stageTip && stageTip[i + 1]" effect="dark" :content="stageTip[i + 1]"
placement="bottom"> placement="bottom">
<el-tag type="danger" class="m-l-5">异常</el-tag> <el-tag type="danger" class="m-l-5">异常</el-tag>
</el-tooltip> </el-tooltip>
@ -230,6 +230,7 @@ export default {
return { return {
id: +this.$route.query.id, id: +this.$route.query.id,
accountId: +this.$route.query.accountId, accountId: +this.$route.query.accountId,
loading: false,
status: 5, status: 5,
form: { form: {
competitionStage: [], competitionStage: [],
@ -297,6 +298,7 @@ export default {
}, },
methods: { methods: {
getData () { getData () {
this.loading = true
this.$post(`${this.api.getCompetition}?competitionId=${this.id}`).then(({ competition }) => { this.$post(`${this.api.getCompetition}?competitionId=${this.id}`).then(({ competition }) => {
this.form = competition this.form = competition
this.timer = setInterval(this.handleStatus, 1000) this.timer = setInterval(this.handleStatus, 1000)
@ -336,6 +338,7 @@ export default {
}) })
this.info = info this.info = info
this.form.completeCompetitionSetup.competitionType && this.getErrorInfo() this.form.completeCompetitionSetup.competitionType && this.getErrorInfo()
this.loading = false
}).catch(err => { }); }).catch(err => { });
}, },
// //
@ -345,7 +348,7 @@ export default {
teamId: this.info.teamId teamId: this.info.teamId
}) })
this.teamErrors = res.teamTip.split(';').filter(e => e) this.teamErrors = res.teamTip.split(';').filter(e => e)
if (Object.keys(res.stageTip)) { if (Object.keys(res.stageTip).length) {
this.stageTip = res.stageTip this.stageTip = res.stageTip
} }
}, },
@ -530,7 +533,7 @@ export default {
this.chooses = this.info.teamDetail this.chooses = this.info.teamDetail
} }
this.curRow = row this.curRow = row
this.checkedMembers = row.participants.map(e => e.id) this.checkedMembers = row.participants ? row.participants.map(e => e.id) : []
this.chooseVisible = true this.chooseVisible = true
} }
}, },

@ -18,7 +18,8 @@
</ul> </ul>
<div> <div>
<el-button v-if="loaded && info.completeCompetitionSetup.competitionType" type="primary" round <el-button v-if="loaded && info.completeCompetitionSetup.competitionType" type="primary" round
:loading="allocating" @click="autoAllocationConfirm">{{ !notBeginSign && allocated ? '取消' : '' :disabled="hasReport" :loading="allocating" @click="autoAllocationConfirm">{{ !notBeginSign && allocated ?
'取消' : ''
}}自动分配阶段成员</el-button> }}自动分配阶段成员</el-button>
<el-button type="primary" round @click="batchImport">导入</el-button> <el-button type="primary" round @click="batchImport">导入</el-button>
<el-button type="primary" round @click="add" v-auth="'/match/list:管理:报名人员:新增'">新增</el-button> <el-button type="primary" round @click="add" v-auth="'/match/list:管理:报名人员:新增'">新增</el-button>
@ -287,6 +288,7 @@ export default {
now: '', now: '',
notBeginSign: true, notBeginSign: true,
allocated: true, allocated: true,
hasReport: false,
allocating: false, allocating: false,
loaded: 0, loaded: 0,
}; };
@ -359,21 +361,27 @@ export default {
// //
if (this.info.completeCompetitionSetup.competitionType) { if (this.info.completeCompetitionSetup.competitionType) {
this.getAutomaticAllocation()
this.notBeginSign = this.now > new Date(this.info.signUpEndTime) //
// / // /
clearInterval(this.timer) clearInterval(this.timer)
this.now = await Util.getNow() this.now = await Util.getNow()
this.notBeginSign = this.now > new Date(this.info.signUpEndTime) //
this.getAutomaticAllocation()
this.timer = setInterval(() => { this.timer = setInterval(() => {
this.now = new Date(this.now.setSeconds(this.now.getSeconds() + 1)) this.now = new Date(this.now.setSeconds(this.now.getSeconds() + 1))
this.notBeginSign = this.now > new Date(this.info.signUpEndTime) // this.notBeginSign = this.now > new Date(this.info.signUpEndTime) //
}, 1000) }, 1000)
} }
}, },
// //
async getAutomaticAllocation () { async getAutomaticAllocation () {
//
const res = await this.$post(`${this.api.viewEventAllocationInformation}?competitionId=${this.id}`) const res = await this.$post(`${this.api.viewEventAllocationInformation}?competitionId=${this.id}`)
this.allocated = res.data && res.data.assignOrNot this.allocated = res.data && res.data.assignOrNot
//
const res1 = await this.$post(`${this.api.whetherThereIsReport}?competitionId=${this.id}`)
this.hasReport = res1.hasReport
this.allocating = false this.allocating = false
this.loaded = 1 this.loaded = 1
}, },

@ -978,8 +978,8 @@ $height: 700px;
.entry { .entry {
width: 100%; width: 100%;
height: 50px; height: 34px;
font-size: 18px; font-size: 17px;
} }
.types { .types {

Loading…
Cancel
Save