fix: 按秩序册顺序展示成绩场次

This commit is contained in:
ltx 2026-09-23 15:17:59 +08:00
parent 9c76905cfe
commit 9dc6151714

View File

@ -253,6 +253,15 @@ async function selectSession(session){
clearResultSelection();selectedProjectId.value=project.key;selectedSession.value=session;await loadEntries();
}
function selectSessionById(sessionId){const session=sessions.value.find(item=>item.sessionId===sessionId);if(session)selectSession(session)}
function compareIntegerText(left,right){
const a=String(left??'').replace(/^0+/,'')||'0',b=String(right??'').replace(/^0+/,'')||'0';
return a.length-b.length||a.localeCompare(b);
}
function compareEntrySchedule(a,b){
const aOrder=a.scheduleOrder,bOrder=b.scheduleOrder;
if(aOrder&&bOrder){const result=compareIntegerText(aOrder,bOrder);if(result)return result}
return a._sessionOrder-b._sessionOrder||(Number(a.playOrder)||a._rowOrder)-(Number(b.playOrder)||b._rowOrder);
}
async function loadEntries(silent=false){
const projectSessions=[...selectedProjectSessions.value];
if(!projectSessions.length)return;
@ -262,7 +271,7 @@ async function loadEntries(silent=false){
try{
const responses=await Promise.all(projectSessions.map((session,sessionOrder)=>workbenchSessionEntriesGet(session.sessionId,{keyword:entryKeyword.value||undefined,resultStatus:resultStatus.value??undefined}).then(res=>(res?.data||[]).map((row,rowOrder)=>({...row,_session:session,_sessionOrder:sessionOrder,_rowOrder:rowOrder})))));
if(requestId!==entriesRequestId)return;
entries.value=responses.flat().sort((a,b)=>a._sessionOrder-b._sessionOrder||(Number(a.playOrder)||a._rowOrder)-(Number(b.playOrder)||b._rowOrder));
entries.value=responses.flat().sort(compareEntrySchedule);
offline.value=false;
await restoreResultSelection(previousEntryIds);
}catch{if(requestId===entriesRequestId)offline.value=true}finally{if(requestId===entriesRequestId)loadingEntries.value=false}
@ -327,7 +336,11 @@ function formatSessionText(sessionNo) {
}
return String(sessionNo).replace(/^EP/i, '场次 ');
}
function rowSessionDisplay(row){const session=row?._session;if(!session)return '—';return formatSessionName(session,session._sourceIndex).replace(/\s+/g,'')}
function rowSessionDisplay(row){
const sessionOrder=Number(row?.sessionOrder);
if(Number.isInteger(sessionOrder)&&sessionOrder>0)return `第${sessionOrder}场`;
const session=row?._session;if(!session)return '—';return formatSessionName(session,session._sourceIndex).replace(/\s+/g,'');
}
function onSelection(rows){if(!restoringSelection)syncSelection(rows)}
function showDetail(row){detailRow.value=row;detailVisible.value=true}
function handleRowCommand(command,row){if(command==='correction')openCorrection(row);else if(command==='rematch')openReason('rematch',row);else if(command==='void')openReason('void',row);else if(command==='export')exportSheets(row)}