✨ feat(task): 添加质检标志字段及相关查询功能
在生产任务和工艺路线工序中新增质检标志字段 `checkFlag`,并更新相关查询逻辑以支持根据该字段进行过滤。此变更旨在增强任务管理的灵活性和准确性。pull/871/MERGE
parent
5fa959662b
commit
52eb55107c
|
|
@ -33,6 +33,7 @@ export interface ProTaskVO {
|
|||
finishDate: Date // 完成日期
|
||||
cancelDate: Date // 取消日期
|
||||
status: number // 任务状态
|
||||
checkFlag: boolean // 是否质检(派生自工艺路线工序)
|
||||
remark: string // 备注
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
// 清空上一次的选中状态
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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" />
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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: '请选择库存'
|
||||
|
|
@ -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>
|
||||
|
||||
|
|
@ -78,7 +78,7 @@
|
|||
v-model="formData.materialStockId"
|
||||
placeholder="请选择库存"
|
||||
class="!w-1/1"
|
||||
:exclude-virtual="false"
|
||||
virtual-filter="only"
|
||||
@change="handleStockChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
<WmMaterialStockSelect
|
||||
v-model="formData.materialStockId"
|
||||
:item-id="formData.itemId"
|
||||
virtual-filter="only"
|
||||
@change="handleStockChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@
|
|||
v-model="formData.materialStockId"
|
||||
placeholder="请选择库存"
|
||||
class="!w-1/1"
|
||||
virtual-filter="only"
|
||||
@change="handleStockChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
|
|
|||
Loading…
Reference in New Issue