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(); 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 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){ async function loadEntries(silent=false){
const projectSessions=[...selectedProjectSessions.value]; const projectSessions=[...selectedProjectSessions.value];
if(!projectSessions.length)return; if(!projectSessions.length)return;
@ -262,7 +271,7 @@ async function loadEntries(silent=false){
try{ 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}))))); 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; 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; offline.value=false;
await restoreResultSelection(previousEntryIds); await restoreResultSelection(previousEntryIds);
}catch{if(requestId===entriesRequestId)offline.value=true}finally{if(requestId===entriesRequestId)loadingEntries.value=false} }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, '场次 '); 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 onSelection(rows){if(!restoringSelection)syncSelection(rows)}
function showDetail(row){detailRow.value=row;detailVisible.value=true} 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)} 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)}