feat(M08-B): 补运营待处理入口

This commit is contained in:
Codex
2026-07-05 14:43:04 +08:00
parent 9f6e267d43
commit 2fa1f079df
7 changed files with 119 additions and 11 deletions
+43
View File
@@ -69,6 +69,29 @@
</div>
</section>
<section class="action-board" aria-label="运营待处理">
<button class="action-tile" type="button" @click="jumpToTaskStatus('SUBMITTED')">
<ClipboardCheck :size="20" />
<span>待验收任务</span>
<strong>{{ statistics.summary.pendingReview }}</strong>
</button>
<button class="action-tile" type="button" @click="jumpToTaskStatus('REJECTED')">
<RotateCcw :size="20" />
<span>驳回补做</span>
<strong>{{ statistics.summary.rejected }}</strong>
</button>
<button class="action-tile" type="button" @click="jumpToSettlementStatus('DRAFT')">
<ListTodo :size="20" />
<span>待确认结算</span>
<strong>{{ draftSettlementTotal }}</strong>
</button>
<button class="action-tile" type="button" @click="jumpToSettlementStatus('CONFIRMED')">
<Send :size="20" />
<span>待发放金额</span>
<strong>{{ money(statistics.summary.confirmedSettlementCents) }}</strong>
</button>
</section>
<el-alert
v-if="lastError"
class="alert-line"
@@ -174,8 +197,12 @@
import { computed, onMounted, reactive, ref } from 'vue';
import { ElMessage } from 'element-plus';
import {
ClipboardCheck,
ListTodo,
RadioTower,
RotateCcw,
Save,
Send,
Sparkles,
Store,
WalletCards
@@ -255,6 +282,8 @@ const statistics = reactive<CleaningStatistics>({
members: [],
trend: []
});
const draftSettlementTotal = computed(() => statistics.settlements
.find((item) => item.status === 'DRAFT')?.total || 0);
function saveToken() {
localStorage.setItem('qipai.admin.token', tokenDraft.value.trim());
@@ -350,6 +379,13 @@ function changeTaskStatus(status: TaskStatus | '') {
void loadTasks();
}
function jumpToTaskStatus(status: TaskStatus) {
activeTab.value = 'tasks';
taskStatus.value = status;
tasks.page = 1;
void loadTasks();
}
function changeTaskFilters(input: { storeId: string; cleanerUserId: string }) {
Object.assign(taskFilters, input);
tasks.page = 1;
@@ -362,6 +398,13 @@ function changeSettlementStatus(status: SettlementStatus | '') {
void loadSettlements();
}
function jumpToSettlementStatus(status: SettlementStatus) {
activeTab.value = 'settlements';
settlementStatus.value = status;
settlements.page = 1;
void loadSettlements();
}
function changeSettlementFilters(input: { storeId: string; cleanerUserId: string }) {
Object.assign(settlementFilters, input);
settlements.page = 1;