|
|
@@ -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;
|
|
|
}
|
|
|
|
|
|
/* 操作列:查看 / 审核 / 样本入库 */
|