feat(M08-B): 补联调状态筛选

This commit is contained in:
Codex
2026-07-05 15:57:03 +08:00
parent 435c9f3f97
commit 273e429d9e
7 changed files with 36 additions and 11 deletions
@@ -9,6 +9,13 @@
</div>
<div class="toolbar-actions">
<el-segmented v-model="category" :options="categoryOptions" />
<el-select v-model="statusFilter" class="handoff-status-select" placeholder="状态">
<el-option label="全部状态" value="ALL" />
<el-option label="待处理" value="PENDING" />
<el-option label="通过" value="PASS" />
<el-option label="阻断" value="BLOCKED" />
<el-option label="不适用" value="SKIP" />
</el-select>
<el-button :icon="Download" @click="exportChecklist">导出</el-button>
<el-button :icon="RotateCcw" @click="resetDraft">重置</el-button>
</div>
@@ -94,6 +101,7 @@ interface HandoffDraft {
const storageKey = 'qipai.cleaning.field-handoff';
const category = ref<'全部' | HandoffItem['category']>('全部');
const statusFilter = ref<'ALL' | FieldStatus>('ALL');
const checklist: HandoffItem[] = [
{
id: 'merchant-credential',
@@ -155,9 +163,11 @@ const checklist: HandoffItem[] = [
const categoryOptions = ['全部', '商户', '微信', '转账', '硬件'];
const draft = reactive<Record<string, HandoffDraft>>(createInitialDraft());
const filteredChecklist = computed(() => category.value === '全部'
? checklist
: checklist.filter((item) => item.category === category.value));
const filteredChecklist = computed(() => checklist.filter((item) => {
const categoryMatched = category.value === '全部' || item.category === category.value;
const statusMatched = statusFilter.value === 'ALL' || draft[item.id].status === statusFilter.value;
return categoryMatched && statusMatched;
}));
const passedCount = computed(() => checklist.filter((item) => draft[item.id].status === 'PASS').length);
const blockedCount = computed(() => checklist.filter((item) => draft[item.id].status === 'BLOCKED').length);
const pendingCount = computed(() => checklist.filter((item) => draft[item.id].status === 'PENDING').length);
+4
View File
@@ -522,6 +522,10 @@ textarea {
padding: 14px;
}
.handoff-status-select {
width: 130px;
}
.stats-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));