feat(task): 添加质检标志字段及相关查询功能

在生产任务和工艺路线工序中新增质检标志字段 `checkFlag`,并更新相关查询逻辑以支持根据该字段进行过滤。此变更旨在增强任务管理的灵活性和准确性。
pull/871/MERGE
YunaiV 2026-04-08 18:01:06 +08:00
parent 5fa959662b
commit 52eb55107c
13 changed files with 59 additions and 19 deletions

View File

@ -33,6 +33,7 @@ export interface ProTaskVO {
finishDate: Date // 完成日期
cancelDate: Date // 取消日期
status: number // 任务状态
checkFlag: boolean // 是否质检(派生自工艺路线工序)
remark: string // 备注
}

View File

@ -40,6 +40,15 @@
class="!w-220px"
/>
</el-form-item>
<el-form-item label="英文名称">
<el-input
v-model="queryParams.englishName"
placeholder="请输入客户英文名称"
clearable
@keyup.enter="handleQuery"
class="!w-220px"
/>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" /> 搜索
@ -93,6 +102,7 @@
</el-table-column>
<el-table-column label="联系人" align="center" prop="contact1Name" width="100" />
<el-table-column label="联系电话" align="center" prop="telephone" width="130" />
<el-table-column label="联系人-电话" align="center" prop="contact1Telephone" width="130" />
<el-table-column label="状态" align="center" prop="status" width="80">
<template #default="scope">
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
@ -185,6 +195,7 @@ const queryParams = reactive({
code: undefined as string | undefined, //
name: undefined as string | undefined, //
nickname: undefined as string | undefined, //
englishName: undefined as string | undefined, //
status: CommonStatusEnum.ENABLE as number | undefined //
})
@ -237,6 +248,7 @@ const resetQuery = () => {
queryParams.code = undefined
queryParams.name = undefined
queryParams.nickname = undefined
queryParams.englishName = undefined
queryParams.status = CommonStatusEnum.ENABLE
handleQuery()
}
@ -268,6 +280,7 @@ const open = async (selectedIds?: number[]) => {
queryParams.code = undefined
queryParams.name = undefined
queryParams.nickname = undefined
queryParams.englishName = undefined
queryParams.status = CommonStatusEnum.ENABLE
queryParams.pageNo = 1
//

View File

@ -289,7 +289,7 @@ const open = async (selectedIds?: number[]) => {
queryParams.code = undefined
queryParams.name = undefined
queryParams.itemTypeId = undefined
queryParams.status = 0
queryParams.status = CommonStatusEnum.ENABLE
queryParams.pageNo = 1
// +
typeTreeRef.value?.reset()

View File

@ -109,6 +109,11 @@
<el-table-column label="工作站编码" align="center" prop="workstationCode" width="140" />
<el-table-column label="工作站名称" align="center" prop="workstationName" width="140" />
<el-table-column label="工序" align="center" prop="processName" width="120" />
<el-table-column label="是否质检" align="center" prop="checkFlag" width="100">
<template #default="scope">
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.checkFlag" />
</template>
</el-table-column>
<el-table-column label="物料编码" align="center" prop="itemCode" width="140" />
<el-table-column label="物料名称" align="center" prop="itemName" width="140" />
<el-table-column label="规格型号" align="center" prop="itemSpec" width="120" />

View File

@ -396,6 +396,12 @@ export const MesWmSalesNoticeStatusEnum = {
APPROVED: MesOrderStatusConstants.APPROVED
}
/** MES 仓库常量 */
export const MesWmWarehouseConstants = {
/** 虚拟线边仓编码关键字(对应后端 MesWmWarehouseDO.WIP_VIRTUAL_WAREHOUSE */
WIP_VIRTUAL: 'WIP_VIRTUAL'
} as const
/** MES 装箱单状态枚举 */
export const MesWmPackageStatusEnum = {
PREPARE: MesOrderStatusConstants.DRAFT,

View File

@ -62,14 +62,14 @@
:warehouse-id="areaWarehouseId"
@change="handleAreaLocationChange"
class="!w-1/1"
placeholder="请选择库"
placeholder="请选择库"
/>
<WmWarehouseAreaSelect
v-model="formData.bizId"
:warehouse-id="areaWarehouseId"
:location-id="areaLocationId"
@change="handleBizSelect"
class="!w-1/1"
placeholder="请选择库"
placeholder="请选择库"
/>
</div>
</el-form-item>

View File

@ -7,7 +7,7 @@
itemId 按物料 ID 过滤库存可选透传给弹窗
batchId 按批次 ID 过滤库存可选透传给弹窗
warehouseId 按仓库 ID 过滤库存可选透传给弹窗
excludeVirtual 是否排除虚拟线边仓库存默认 true
virtualFilter 虚拟线边仓过滤模式'exclude' 排除虚拟仓默认'only' 只看虚拟仓'all' 不过滤
disabled 是否禁用
clearable 是否允许清空鼠标悬停时显示清除图标
placeholder 占位文字
@ -52,7 +52,7 @@
:item-id="itemId"
:batch-id="batchId"
:warehouse-id="warehouseId"
:exclude-virtual="excludeVirtual"
:virtual-filter="virtualFilter"
@selected="handleSelected"
/>
</template>
@ -74,13 +74,13 @@ const props = withDefaults(
itemId?: number // ID
batchId?: number // ID
warehouseId?: number // ID
excludeVirtual?: boolean // 线 true
virtualFilter?: 'exclude' | 'only' | 'all' // 'exclude' 'only' 'all'
disabled?: boolean //
clearable?: boolean //
placeholder?: string //
}>(),
{
excludeVirtual: true,
virtualFilter: 'exclude',
disabled: false,
clearable: true,
placeholder: '请选择库存'

View File

@ -6,7 +6,7 @@
itemId 按物料 ID 过滤库存可选
batchId 按批次 ID 过滤库存可选
warehouseId 按仓库 ID 过滤库存可选
excludeVirtual 是否排除虚拟线边仓库存默认 true
virtualFilter 虚拟线边仓过滤模式'exclude' 排除虚拟仓默认'only' 只看虚拟仓'all' 不过滤
Events:
selected(rows: WmMaterialStockVO[]) 确认选择后触发单选时数组长度为 1
Expose:
@ -159,6 +159,7 @@ import MdVendorSelect from '@/views/mes/md/vendor/components/MdVendorSelect.vue'
import WmWarehouseSelect from '@/views/mes/wm/warehouse/components/WmWarehouseSelect.vue'
import WmWarehouseLocationSelect from '@/views/mes/wm/warehouse/components/WmWarehouseLocationSelect.vue'
import WmWarehouseAreaSelect from '@/views/mes/wm/warehouse/components/WmWarehouseAreaSelect.vue'
import { MesWmWarehouseConstants } from '@/views/mes/utils/constants'
defineOptions({ name: 'WmMaterialStockSelectDialog' })
@ -168,11 +169,11 @@ const props = withDefaults(
itemId?: number // ID
batchId?: number // ID
warehouseId?: number // ID
excludeVirtual?: boolean // 线 true
virtualFilter?: 'exclude' | 'only' | 'all' // 'exclude' 'only' 'all'
}>(),
{
multiple: true,
excludeVirtual: true
virtualFilter: 'exclude'
}
)
@ -265,10 +266,16 @@ const getList = async () => {
loading.value = true
try {
const data = await WmMaterialStockApi.getMaterialStockPage(queryParams)
// 线 warehouseCode WIP_VIRTUAL
if (props.excludeVirtual) {
// 线
if (props.virtualFilter === 'only') {
//
list.value = data.list.filter((row: WmMaterialStockVO) =>
row.warehouseCode?.includes(MesWmWarehouseConstants.WIP_VIRTUAL)
)
} else if (props.virtualFilter === 'exclude') {
//
list.value = data.list.filter(
(row: WmMaterialStockVO) => !row.warehouseCode?.includes('WIP_VIRTUAL')
(row: WmMaterialStockVO) => !row.warehouseCode?.includes(MesWmWarehouseConstants.WIP_VIRTUAL)
)
} else {
list.value = data.list
@ -380,15 +387,21 @@ defineExpose({ open })
/** 拼装 el-alert 提示文字 */
const alertTitle = computed(() => {
const parts: string[] = []
if (props.batchId != null) parts.push('批次')
if (props.warehouseId != null) parts.push('仓库')
if (props.excludeVirtual) parts.push('排除虚拟仓')
if (props.batchId != null) {
parts.push('批次')
}
if (props.warehouseId != null) {
parts.push('仓库')
}
if (props.virtualFilter === 'only') {
parts.push('只看虚拟仓')
}
return `已按${parts.join('/')}预过滤`
})
/** 是否显示 alert 提示 */
const showAlert = computed(() => {
return props.batchId != null || props.warehouseId != null
return props.batchId != null || props.warehouseId != null || props.virtualFilter === 'only'
})
</script>

View File

@ -78,7 +78,7 @@
v-model="formData.materialStockId"
placeholder="请选择库存"
class="!w-1/1"
:exclude-virtual="false"
virtual-filter="only"
@change="handleStockChange"
/>
</el-form-item>

View File

@ -19,6 +19,7 @@
<WmMaterialStockSelect
v-model="formData.materialStockId"
:item-id="formData.itemId"
virtual-filter="only"
@change="handleStockChange"
/>
</el-form-item>

View File

@ -88,6 +88,7 @@
v-model="formData.materialStockId"
placeholder="请选择库存"
class="!w-1/1"
virtual-filter="only"
@change="handleStockChange"
/>
</el-form-item>