fix(workbench): correct home overview aggregation

This commit is contained in:
yelan
2026-09-01 15:34:59 +08:00
parent b4184260da
commit dc86ee9149
6 changed files with 310 additions and 58 deletions
@@ -53,6 +53,7 @@ const STATUS_VALUES: SigningTaskStatus[] = [
'failed',
]
const DATE_RANGE_VALUES: SigningDateRange[] = ['today', 'yesterday', '3d', '7d', 'all']
const CAMPUS_VALUES: WorkbenchCampus[] = ['本部院区', '东院区', '西院区']
const statusLabels: Record<SigningTaskStatus, string> = {
pending: '待签署',
@@ -163,12 +164,18 @@ function isSigningDateRange(value: string): value is SigningDateRange {
return DATE_RANGE_VALUES.includes(value as SigningDateRange)
}
function isWorkbenchCampus(value: string): value is WorkbenchCampus {
return CAMPUS_VALUES.includes(value as WorkbenchCampus)
}
function syncFilterFromRoute() {
const status = getQueryString(route.query.status)
const range = getQueryString(route.query.range)
const campus = getQueryString(route.query.campus)
filter.status = status === 'all' || isSigningStatus(status) ? status : 'all'
filter.dateRange = isSigningDateRange(range) ? range : 'all'
filter.campus = isWorkbenchCampus(campus) ? campus : 'all'
}
async function loadTemplates() {
@@ -305,10 +312,10 @@ async function loadTasks(preferredTaskId?: string, resetPage = false) {
const taskIds = new Set(response.records.map((task) => task.id))
const routeTaskId = getQueryString(route.query.taskId)
const nextTaskId =
[preferredTaskId, selectedTaskId.value, routeTaskId].find((id) => id && taskIds.has(id)) ??
response.records[0]?.id ??
null
const matchedTaskId = [preferredTaskId, selectedTaskId.value, routeTaskId].find(
(id) => id && taskIds.has(id),
)
const nextTaskId = matchedTaskId ?? (routeTaskId || response.records[0]?.id || null)
selectedTaskId.value = nextTaskId
await loadTaskDetail(nextTaskId)
@@ -561,7 +568,7 @@ async function handleTaskCreated(task: SigningTaskRecord) {
}
watch(
() => [route.query.status, route.query.range, route.query.taskId],
() => [route.query.status, route.query.range, route.query.campus, route.query.taskId],
() => {
syncFilterFromRoute()
page.value = 1