feat(wms/crm): 升级钢卷查询筛选条件,新增多维度搜索能力

1. 调整筛选表单布局,拆分钢卷号为入场卷号和当前卷号
2. 新增逻辑库区、物料类型筛选,替换旧的材料类型选择
3. 将单选型质量状态改为多选,并新增品名、材质、规格、厂家筛选条件
4. 注册新增的组件并添加对应字典依赖
5. 重构接口传参方式,优化筛选参数提交逻辑
6. 修复发货状态选项,移除冗余的在途选项
This commit is contained in:
砂糖
2026-07-10 09:45:47 +08:00
parent bf1ac5ed2e
commit 94876b1c86
3 changed files with 172 additions and 78 deletions

View File

@@ -133,29 +133,44 @@
<div class="detail-card-body" style="padding: 12px;">
<div v-loading="productCoilLoading">
<el-form :inline="true" size="small" class="coil-filter-bar" style="margin-bottom: 8px;">
<el-form-item label="卷号">
<el-input v-model="productCoilBo.currentCoilNo" placeholder="当前钢卷号" clearable @keyup.enter.native="handleProductFilter" style="width: 160px;" />
<el-form-item label="入场卷号">
<el-input v-model="productCoilBo.enterCoilNo" placeholder="请输入入场钢卷号" clearable @keyup.enter.native="handleProductFilter" style="width: 160px;" />
</el-form-item>
<el-form-item label="材料类型">
<el-select v-model="productCoilBo.materialType" placeholder="全部" clearable style="width: 100px;">
<el-option label="成品" value="成品" />
<el-option label="原料" value="原料" />
</el-select>
<el-form-item label="当前卷号">
<el-input v-model="productCoilBo.currentCoilNo" placeholder="请输入当前钢卷号" clearable @keyup.enter.native="handleProductFilter" style="width: 160px;" />
</el-form-item>
<el-form-item label="质量状态">
<el-select v-model="productCoilBo.qualityStatus" placeholder="全部" clearable style="width: 100px;">
<el-option label="正常" value="0" />
<el-option label="待检" value="1" />
<el-option label="不合格" value="2" />
<el-form-item label="逻辑库区">
<warehouse-select v-model="productCoilBo.warehouseId" placeholder="请选择逻辑库位" style="width: 160px;" clearable />
</el-form-item>
<el-form-item label="物料类型">
<el-select v-model="productCoilBo.itemType" placeholder="全部" clearable style="width: 100px;" @change="handleProductFilter">
<el-option label="成品" value="product" />
<el-option label="原料" value="raw_material" />
</el-select>
</el-form-item>
<el-form-item label="发货状态">
<el-select v-model="productCoilBo.status" placeholder="全部" clearable style="width: 100px;">
<el-option label="在库" :value="0" />
<el-option label="在途" :value="1" />
<el-option label="已发货" :value="2" />
<el-option label="已发货" :value="1" />
</el-select>
</el-form-item>
<el-form-item label="质量状态">
<muti-select v-model="productCoilBo.qualityStatusCsv" :options="dict.type.coil_quality_status" placeholder="请选择品质" clearable style="width: 160px;" />
</el-form-item>
<template v-if="productCoilBo.itemType">
<el-form-item label="品名">
<muti-select v-model="productCoilBo.itemName" :options="dict.type.coil_itemname" placeholder="请选择物料" clearable style="width: 160px;" />
</el-form-item>
<el-form-item label="材质">
<muti-select v-model="productCoilBo.itemMaterial" :options="dict.type.coil_material" placeholder="请选择材质" clearable style="width: 160px;" />
</el-form-item>
<el-form-item label="规格">
<memo-input v-model="productCoilBo.itemSpecification" storageKey="coilSpec" placeholder="请选择规格" clearable style="width: 160px;" />
</el-form-item>
<el-form-item label="厂家">
<muti-select v-model="productCoilBo.itemManufacturer" :options="dict.type.coil_manufacturer" placeholder="请选择厂家" clearable style="width: 160px;" />
</el-form-item>
</template>
<el-form-item>
<el-button type="primary" size="mini" @click="handleProductFilter">查询</el-button>
<el-button size="mini" @click="resetProductFilter">重置</el-button>
@@ -228,11 +243,14 @@ import CoilTable from '@/views/crm/components/CoilTable.vue'
import ContractSelect from '@/components/KLPService/ContractSelect'
import { batchUpdateContractCoil } from '@/api/wms/coil'
import { listProductCoilsByContract, getProductCoilsStatisticsByContract } from '@/api/crm/coil'
import WarehouseSelect from '@/components/KLPService/WarehouseSelect'
import MemoInput from '@/components/MemoInput'
import MutiSelect from '@/components/MutiSelect'
export default {
name: 'ApsOrderTrack',
components: { CoilTable, ContractSelect },
dicts: ['wip_pack_saleman'],
components: { CoilTable, ContractSelect, WarehouseSelect, MemoInput, MutiSelect },
dicts: ['wip_pack_saleman', 'coil_itemname', 'coil_material', 'coil_manufacturer', 'coil_quality_status'],
data() {
return {
ORDER_STATUS,
@@ -418,10 +436,10 @@ export default {
if (!this.currentOrder || !this.currentOrder.orderId) return
this.productCoilLoading = true
listProductCoilsByContract({
contractId: this.currentOrder.orderId,
orderId: this.currentOrder.orderId,
pageNum: this.productPagination.currentPage,
pageSize: this.productPagination.pageSize,
coilBo: this.productCoilBo
...this.productCoilBo
}).then(res => {
this.productCoilList = res.rows || []
this.productPagination.total = res.total || 0
@@ -431,11 +449,12 @@ export default {
},
fetchProductCoilStatistics() {
if (!this.currentOrder || !this.currentOrder.orderId) return
getProductCoilsStatisticsByContract({ contractId: this.currentOrder.orderId, coilBo: this.productCoilBo }).then(res => {
getProductCoilsStatisticsByContract({ ...this.productCoilBo, orderId: this.currentOrder.orderId }).then(res => {
this.productCoilStatistics = res.data || {}
})
},
handleProductFilter() {
this.productCoilBo.selectType = this.productCoilBo.itemType || ''
this.productPagination.currentPage = 1
this.fetchProductCoils()
this.fetchProductCoilStatistics()