feat(web-admin): pending storage-release ready checkbox filter

Replace QC-completed select with show-all checkbox; request readyForReviewOnly when unchecked.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zlwuandCursor committed 2026-07-29 11:21:21 +08:00
1 parent 9e5cc9188b
commit 63074c0032
2 files changed
+51 -45

No files matched your search

@@ -146,6 +146,7 @@ export function fetchStorageReleaseReviewList(params?: {
keyword?: string
reviewPhase?: 'pending' | 'reviewed'
qcWorkOrderCompleted?: boolean
readyForReviewOnly?: boolean
}) {
return request.get<PageList<StorageReleaseReview>>({
url: '/web/admin/storage-release-reviews',
@@ -26,15 +26,7 @@
<div class="filter-block">
<el-form :model="searchForm" class="filter-form" @submit.prevent>
<div
class="filter-grid"
:class="{ 'storage-release-filter-grid--5': activeTab === 'pending' }"
:style="
activeTab === 'pending'
? { gridTemplateColumns: 'repeat(5, minmax(0, 1fr))' }
: undefined
"
>
<div class="filter-grid">
<el-form-item label="关键词">
<el-input
v-model="searchForm.keyword"
@@ -87,22 +79,20 @@
/>
</el-select>
</el-form-item>
<el-form-item v-if="activeTab === 'pending'" label="质检工单是否完成">
<el-select
v-model="searchForm.qcWorkOrderCompleted"
placeholder="全部"
style="width: 100%"
>
<el-option
v-for="item in qcWorkOrderCompletedOptions"
:key="String(item.value)"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</div>
<div class="filter-actions-row">
<label
v-if="activeTab === 'pending'"
class="storage-release-ready-check"
>
<el-checkbox v-model="searchForm.showAllPending" />
<span class="storage-release-ready-check__copy">
<span class="storage-release-ready-check__title">展示全部待审核</span>
<span class="storage-release-ready-check__hint">
默认不勾选:仅展示质检与生产工单均为完成的记录;勾选后展示全部。
</span>
</span>
</label>
<div class="filter-actions-end">
<el-button class="btn-ghost" @click="handleReset">
<el-icon><RefreshLeft /></el-icon>重置
@@ -410,19 +400,12 @@
{ value: 'yrk', label: '已入库' }
]
/** '' = 全部;'true'/'false' 避免 el-select 对 boolean 的歧义 */
const qcWorkOrderCompletedOptions = [
{ value: 'true', label: '是' },
{ value: 'false', label: '否' },
{ value: '', label: '全部' }
]
const searchForm = reactive({
receptionSource: '',
reviewConclusion: '',
storageStatus: '',
keyword: '',
qcWorkOrderCompleted: 'true' as '' | 'true' | 'false'
showAllPending: false
})
const tableData = ref<StorageReleaseReview[]>([])
const selectedRows = ref<StorageReleaseReview[]>([])
@@ -444,12 +427,8 @@
async function loadData() {
loading.value = true
try {
const qcParam =
activeTab.value === 'pending' && searchForm.qcWorkOrderCompleted === 'true'
? true
: activeTab.value === 'pending' && searchForm.qcWorkOrderCompleted === 'false'
? false
: undefined
const readyOnly =
activeTab.value === 'pending' && !searchForm.showAllPending ? true : undefined
const res = await fetchStorageReleaseReviewList({
page: pagination.page,
pageSize: pagination.pageSize,
@@ -458,7 +437,7 @@
storageStatus: searchForm.storageStatus || undefined,
keyword: searchForm.keyword || undefined,
reviewPhase: activeTab.value,
qcWorkOrderCompleted: qcParam
readyForReviewOnly: readyOnly
})
tableData.value = res.list || []
pagination.total = res.total ?? 0
@@ -473,7 +452,7 @@
pagination.page = 1
selectedRows.value = []
if (name === 'pending') {
searchForm.qcWorkOrderCompleted = 'true'
searchForm.showAllPending = false
}
loadData()
}
@@ -488,7 +467,7 @@
searchForm.reviewConclusion = ''
searchForm.storageStatus = ''
searchForm.keyword = ''
searchForm.qcWorkOrderCompleted = 'true'
searchForm.showAllPending = false
pagination.page = 1
loadData()
}
@@ -565,16 +544,42 @@
</script>
<style scoped lang="scss">
/* 待审核 5 列靠内联 style;仅极窄屏单列,避免 1100px 断点又变两行 */
.filter-form :deep(.el-form-item) {
margin-bottom: 0;
min-width: 0;
}
@media (max-width: 560px) {
.filter-grid.storage-release-filter-grid--5 {
grid-template-columns: 1fr !important;
}
.storage-release-ready-check {
display: inline-flex;
align-items: flex-start;
gap: 10px;
margin-right: auto;
max-width: 520px;
padding: 10px 12px;
border: 1px dashed #a7f3d0;
border-radius: 8px;
background: var(--primary-bg, #ecfdf5);
cursor: pointer;
user-select: none;
}
.storage-release-ready-check__copy {
display: flex;
flex-direction: column;
gap: 2px;
}
.storage-release-ready-check__title {
font-size: 13px;
font-weight: 600;
color: var(--text, #1e293b);
line-height: 1.4;
}
.storage-release-ready-check__hint {
font-size: 12px;
color: var(--text-muted, #64748b);
line-height: 1.45;
}
/* 操作列:查看 / 审核 / 样本入库 */