diff --git a/src/views/scoring/workbench/index.vue b/src/views/scoring/workbench/index.vue index 858ea5d..c91f516 100644 --- a/src/views/scoring/workbench/index.vue +++ b/src/views/scoring/workbench/index.vue @@ -69,7 +69,7 @@ @@ -166,11 +166,9 @@ const judgeMatrixGroups=computed(()=>{ }); const detailColumns=computed(()=>{const map=new Map();for(const sheet of detailRow.value?.judgeScores||[])for(const item of sheet.scoreItems||[]){const key=`${item.itemCode}:${item.subjectCode||''}`;if(!map.has(key))map.set(key,{key,label:item.subjectCode?`${item.itemName}-${item.subjectCode}`:item.itemName,sort:item.sort})}return [...map.values()].sort((a,b)=>a.sort-b.sort)}); const detailRows=computed(()=>(detailRow.value?.judgeScores||[]).map(sheet=>({...sheet,itemValues:Object.fromEntries((sheet.scoreItems||[]).map(item=>[`${item.itemCode}:${item.subjectCode||''}`,item.inputValue??item.countValue??item.subtotal]))}))); -// const correctionGroups=computed(()=>{const groups=new Map();for(const sheet of correctionRow.value?.judgeScores||[]){const key=sheet.judgeRoleType||sheet.judgeRoleName;if(key&&!groups.has(key))groups.set(key,{judgeRoleType:key,judgeRoleName:sheet.judgeRoleName||key})}return [...groups.values()]}); -// const correctionSheetOptions=computed(()=>(correctionRow.value?.judgeScores||[]).filter(sheet=>(sheet.judgeRoleType||sheet.judgeRoleName)===correctionForm.value.judgeRoleType)); const correctionStatuses=[{value:0,label:'已申请'},{value:10,label:'已批准'},{value:20,label:'已拒绝'},{value:30,label:'裁判修改中'},{value:40,label:'已完成'}]; -const correctionGroups=computed(()=>{const map=new Map();for(const s of correctionRow.value?.judgeScores||[]){if(s.judgeRoleType!==undefined&&!map.has(s.judgeRoleType)){map.set(s.judgeRoleType,{judgeRoleType:s.judgeRoleType,judgeRoleName:s.judgeRoleName||`${s.judgeRoleType}号类型`})}}return [...map.values()]}); -const correctionSheetOptions=computed(()=>(correctionRow.value?.judgeScores||[]).filter(s=>s.judgeRoleType===correctionForm.value.judgeRoleType)); +const correctionGroups=computed(()=>{const map=new Map();for(const s of correctionRow.value?.judgeScores||[]){if(s.scoreSheetId>0&&s.sheetStatus>=10&&s.judgeRoleType!==undefined&&!map.has(s.judgeRoleType)){map.set(s.judgeRoleType,{judgeRoleType:s.judgeRoleType,judgeRoleName:s.judgeRoleName||`${s.judgeRoleType}号类型`})}}return [...map.values()]}); +const correctionSheetOptions=computed(()=>(correctionRow.value?.judgeScores||[]).filter(s=>s.scoreSheetId>0&&s.sheetStatus>=10&&s.judgeRoleType===correctionForm.value.judgeRoleType)); function isCorrectionSheetAvailable(x){return Boolean(x&&x.sheetStatus>=10&&x.sheetStatus<90&&!x.hasPendingCorrection)} function onCorrectionRoleChange(){correctionForm.value.scoreSheetId=null} const tabTitle=computed(()=>({screen:'成绩投屏',results:'成绩管理',corrections:'成绩修正申请'})[activeTab.value]); @@ -274,6 +272,7 @@ async function loadCorrections(){if(!eventId.value)return;loadingCorrections.val function resetFilters(){entryKeyword.value='';resultStatus.value=null;loadEntries()} function progress(x){return x.totalEntries?Math.round(x.completedEntries*100/x.totalEntries):0} function submittedCount(row){return (row.judgeScores||[]).filter(x=>x.sheetStatus>=10&&x.sheetStatus<90).length} +function hasSubmittedJudgeScores(row){return (row.judgeScores||[]).some(x=>x.scoreSheetId>0&&x.sheetStatus>=10&&x.sheetStatus<90)} function allSubmitted(row){return !!row.judgeScores?.length&&submittedCount(row)===row.judgeScores.length} function judgeScoreFor(row,key){return (row.judgeScores||[]).find(judge=>`${judge.judgeRoleType||judge.judgeRoleName||'其他'}:${judge.judgeRole||judge.scoreSheetId}`===key)} function canCast(row){return !!row.result&&allSubmitted(row)&&row.result.resultStatus>=20&&row.result.resultStatus<90&&!row.result.isDisqualified}