fix(workbench): correct home overview aggregation
This commit is contained in:
@@ -27,11 +27,21 @@ const loading = ref(true)
|
||||
const loadFailed = ref(false)
|
||||
const overview = ref<WorkbenchOverviewResponse | null>(null)
|
||||
const rankingPeriod = ref<HomeRankingPeriod>(14)
|
||||
let overviewRequestId = 0
|
||||
|
||||
const selectedCampus = computed<WorkbenchCampus>(() => appStore.selectedCampus)
|
||||
|
||||
const metrics = computed<HomeMetricCardData[]>(() => {
|
||||
const summary = overview.value?.summary
|
||||
const signedChange = summary?.todaySignedChange ?? 0
|
||||
const signedChangeTone: HomeMetricCardData['detailTone'] =
|
||||
signedChange > 0 ? 'up' : signedChange < 0 ? 'down' : 'muted'
|
||||
const signedChangeDetail =
|
||||
signedChange > 0
|
||||
? `▲ 较昨日 +${signedChange} · 点击查看`
|
||||
: signedChange < 0
|
||||
? `▼ 较昨日 ${signedChange} · 点击查看`
|
||||
: '较昨日持平 · 点击查看'
|
||||
|
||||
return [
|
||||
{
|
||||
@@ -39,8 +49,8 @@ const metrics = computed<HomeMetricCardData[]>(() => {
|
||||
label: '今日已签署(单)',
|
||||
value: summary?.todaySigned ?? 0,
|
||||
tone: 'success',
|
||||
detail: '▲ 较昨日 +2 · 点击查看',
|
||||
detailTone: 'up',
|
||||
detail: signedChangeDetail,
|
||||
detailTone: signedChangeTone,
|
||||
},
|
||||
{
|
||||
key: 'pending',
|
||||
@@ -74,26 +84,42 @@ const todoItems = computed<HomeTodoItem[]>(() => overview.value?.todos ?? [])
|
||||
const rankingRows = computed<HomeDocumentRanking[]>(() => overview.value?.documentRanking ?? [])
|
||||
|
||||
async function loadOverview() {
|
||||
const requestId = ++overviewRequestId
|
||||
loading.value = true
|
||||
loadFailed.value = false
|
||||
|
||||
try {
|
||||
overview.value = await getWorkbenchOverview({
|
||||
const nextOverview = await getWorkbenchOverview({
|
||||
campus: selectedCampus.value,
|
||||
rankingPeriod: rankingPeriod.value,
|
||||
})
|
||||
if (requestId !== overviewRequestId) {
|
||||
return
|
||||
}
|
||||
|
||||
overview.value = nextOverview
|
||||
} catch {
|
||||
if (requestId !== overviewRequestId) {
|
||||
return
|
||||
}
|
||||
|
||||
overview.value = null
|
||||
loadFailed.value = true
|
||||
ElMessage.error('首页数据加载失败,请稍后重试')
|
||||
} finally {
|
||||
loading.value = false
|
||||
if (requestId === overviewRequestId) {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function goToSigning(query: Record<string, string> = {}) {
|
||||
void router.push({
|
||||
name: 'workbench-signing',
|
||||
query,
|
||||
query: {
|
||||
campus: selectedCampus.value,
|
||||
...query,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user