✨ feat(task): 添加质检标志字段及相关查询功能
在生产任务和工艺路线工序中新增质检标志字段 `checkFlag`,并更新相关查询逻辑以支持根据该字段进行过滤。此变更旨在增强任务管理的灵活性和准确性。pull/871/MERGE
parent
5fa959662b
commit
52eb55107c
|
|
@ -33,6 +33,7 @@ export interface ProTaskVO {
|
||||||
finishDate: Date // 完成日期
|
finishDate: Date // 完成日期
|
||||||
cancelDate: Date // 取消日期
|
cancelDate: Date // 取消日期
|
||||||
status: number // 任务状态
|
status: number // 任务状态
|
||||||
|
checkFlag: boolean // 是否质检(派生自工艺路线工序)
|
||||||
remark: string // 备注
|
remark: string // 备注
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,15 @@
|
||||||
class="!w-220px"
|
class="!w-220px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</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-form-item>
|
||||||
<el-button @click="handleQuery">
|
<el-button @click="handleQuery">
|
||||||
<Icon icon="ep:search" class="mr-5px" /> 搜索
|
<Icon icon="ep:search" class="mr-5px" /> 搜索
|
||||||
|
|
@ -93,6 +102,7 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="联系人" align="center" prop="contact1Name" width="100" />
|
<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="telephone" width="130" />
|
||||||
|
<el-table-column label="联系人-电话" align="center" prop="contact1Telephone" width="130" />
|
||||||
<el-table-column label="状态" align="center" prop="status" width="80">
|
<el-table-column label="状态" align="center" prop="status" width="80">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
|
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
|
||||||
|
|
@ -185,6 +195,7 @@ const queryParams = reactive({
|
||||||
code: undefined as string | undefined, // 客户编码
|
code: undefined as string | undefined, // 客户编码
|
||||||
name: undefined as string | undefined, // 客户名称
|
name: undefined as string | undefined, // 客户名称
|
||||||
nickname: undefined as string | undefined, // 客户简称
|
nickname: undefined as string | undefined, // 客户简称
|
||||||
|
englishName: undefined as string | undefined, // 客户英文名称
|
||||||
status: CommonStatusEnum.ENABLE as number | undefined // 状态:默认只查启用
|
status: CommonStatusEnum.ENABLE as number | undefined // 状态:默认只查启用
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -237,6 +248,7 @@ const resetQuery = () => {
|
||||||
queryParams.code = undefined
|
queryParams.code = undefined
|
||||||
queryParams.name = undefined
|
queryParams.name = undefined
|
||||||
queryParams.nickname = undefined
|
queryParams.nickname = undefined
|
||||||
|
queryParams.englishName = undefined
|
||||||
queryParams.status = CommonStatusEnum.ENABLE
|
queryParams.status = CommonStatusEnum.ENABLE
|
||||||
handleQuery()
|
handleQuery()
|
||||||
}
|
}
|
||||||
|
|
@ -268,6 +280,7 @@ const open = async (selectedIds?: number[]) => {
|
||||||
queryParams.code = undefined
|
queryParams.code = undefined
|
||||||
queryParams.name = undefined
|
queryParams.name = undefined
|
||||||
queryParams.nickname = undefined
|
queryParams.nickname = undefined
|
||||||
|
queryParams.englishName = undefined
|
||||||
queryParams.status = CommonStatusEnum.ENABLE
|
queryParams.status = CommonStatusEnum.ENABLE
|
||||||
queryParams.pageNo = 1
|
queryParams.pageNo = 1
|
||||||
// 清空上一次的选中状态
|
// 清空上一次的选中状态
|
||||||
|
|
|
||||||
|
|
@ -289,7 +289,7 @@ const open = async (selectedIds?: number[]) => {
|
||||||
queryParams.code = undefined
|
queryParams.code = undefined
|
||||||
queryParams.name = undefined
|
queryParams.name = undefined
|
||||||
queryParams.itemTypeId = undefined
|
queryParams.itemTypeId = undefined
|
||||||
queryParams.status = 0
|
queryParams.status = CommonStatusEnum.ENABLE
|
||||||
queryParams.pageNo = 1
|
queryParams.pageNo = 1
|
||||||
// 重置分类树(清高亮 + 清搜索词)
|
// 重置分类树(清高亮 + 清搜索词)
|
||||||
typeTreeRef.value?.reset()
|
typeTreeRef.value?.reset()
|
||||||
|
|
|
||||||
|
|
@ -109,6 +109,11 @@
|
||||||
<el-table-column label="工作站编码" align="center" prop="workstationCode" width="140" />
|
<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="workstationName" width="140" />
|
||||||
<el-table-column label="工序" align="center" prop="processName" width="120" />
|
<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="itemCode" width="140" />
|
||||||
<el-table-column label="物料名称" align="center" prop="itemName" width="140" />
|
<el-table-column label="物料名称" align="center" prop="itemName" width="140" />
|
||||||
<el-table-column label="规格型号" align="center" prop="itemSpec" width="120" />
|
<el-table-column label="规格型号" align="center" prop="itemSpec" width="120" />
|
||||||
|
|
|
||||||
|
|
@ -396,6 +396,12 @@ export const MesWmSalesNoticeStatusEnum = {
|
||||||
APPROVED: MesOrderStatusConstants.APPROVED
|
APPROVED: MesOrderStatusConstants.APPROVED
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** MES 仓库常量 */
|
||||||
|
export const MesWmWarehouseConstants = {
|
||||||
|
/** 虚拟线边仓编码关键字(对应后端 MesWmWarehouseDO.WIP_VIRTUAL_WAREHOUSE) */
|
||||||
|
WIP_VIRTUAL: 'WIP_VIRTUAL'
|
||||||
|
} as const
|
||||||
|
|
||||||
/** MES 装箱单状态枚举 */
|
/** MES 装箱单状态枚举 */
|
||||||
export const MesWmPackageStatusEnum = {
|
export const MesWmPackageStatusEnum = {
|
||||||
PREPARE: MesOrderStatusConstants.DRAFT,
|
PREPARE: MesOrderStatusConstants.DRAFT,
|
||||||
|
|
|
||||||
|
|
@ -62,14 +62,14 @@
|
||||||
:warehouse-id="areaWarehouseId"
|
:warehouse-id="areaWarehouseId"
|
||||||
@change="handleAreaLocationChange"
|
@change="handleAreaLocationChange"
|
||||||
class="!w-1/1"
|
class="!w-1/1"
|
||||||
placeholder="请选择库位"
|
placeholder="请选择库区"
|
||||||
/>
|
/>
|
||||||
<WmWarehouseAreaSelect
|
<WmWarehouseAreaSelect
|
||||||
v-model="formData.bizId"
|
v-model="formData.bizId"
|
||||||
:warehouse-id="areaWarehouseId"
|
:location-id="areaLocationId"
|
||||||
@change="handleBizSelect"
|
@change="handleBizSelect"
|
||||||
class="!w-1/1"
|
class="!w-1/1"
|
||||||
placeholder="请选择库区"
|
placeholder="请选择库位"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
itemId — 按物料 ID 过滤库存(可选,透传给弹窗)
|
itemId — 按物料 ID 过滤库存(可选,透传给弹窗)
|
||||||
batchId — 按批次 ID 过滤库存(可选,透传给弹窗)
|
batchId — 按批次 ID 过滤库存(可选,透传给弹窗)
|
||||||
warehouseId — 按仓库 ID 过滤库存(可选,透传给弹窗)
|
warehouseId — 按仓库 ID 过滤库存(可选,透传给弹窗)
|
||||||
excludeVirtual — 是否排除虚拟线边仓库存(默认 true)
|
virtualFilter — 虚拟线边仓过滤模式:'exclude' 排除虚拟仓(默认),'only' 只看虚拟仓,'all' 不过滤
|
||||||
disabled — 是否禁用
|
disabled — 是否禁用
|
||||||
clearable — 是否允许清空(鼠标悬停时显示清除图标)
|
clearable — 是否允许清空(鼠标悬停时显示清除图标)
|
||||||
placeholder — 占位文字
|
placeholder — 占位文字
|
||||||
|
|
@ -52,7 +52,7 @@
|
||||||
:item-id="itemId"
|
:item-id="itemId"
|
||||||
:batch-id="batchId"
|
:batch-id="batchId"
|
||||||
:warehouse-id="warehouseId"
|
:warehouse-id="warehouseId"
|
||||||
:exclude-virtual="excludeVirtual"
|
:virtual-filter="virtualFilter"
|
||||||
@selected="handleSelected"
|
@selected="handleSelected"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -74,13 +74,13 @@ const props = withDefaults(
|
||||||
itemId?: number // 按物料 ID 过滤
|
itemId?: number // 按物料 ID 过滤
|
||||||
batchId?: number // 按批次 ID 过滤
|
batchId?: number // 按批次 ID 过滤
|
||||||
warehouseId?: number // 按仓库 ID 过滤
|
warehouseId?: number // 按仓库 ID 过滤
|
||||||
excludeVirtual?: boolean // 是否排除虚拟线边仓库存(默认 true)
|
virtualFilter?: 'exclude' | 'only' | 'all' // 虚拟仓过滤:'exclude' 排除(默认),'only' 只看,'all' 不过滤
|
||||||
disabled?: boolean // 是否禁用
|
disabled?: boolean // 是否禁用
|
||||||
clearable?: boolean // 是否允许清空
|
clearable?: boolean // 是否允许清空
|
||||||
placeholder?: string // 占位文字
|
placeholder?: string // 占位文字
|
||||||
}>(),
|
}>(),
|
||||||
{
|
{
|
||||||
excludeVirtual: true,
|
virtualFilter: 'exclude',
|
||||||
disabled: false,
|
disabled: false,
|
||||||
clearable: true,
|
clearable: true,
|
||||||
placeholder: '请选择库存'
|
placeholder: '请选择库存'
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
itemId — 按物料 ID 过滤库存(可选)
|
itemId — 按物料 ID 过滤库存(可选)
|
||||||
batchId — 按批次 ID 过滤库存(可选)
|
batchId — 按批次 ID 过滤库存(可选)
|
||||||
warehouseId — 按仓库 ID 过滤库存(可选)
|
warehouseId — 按仓库 ID 过滤库存(可选)
|
||||||
excludeVirtual — 是否排除虚拟线边仓库存(默认 true)
|
virtualFilter — 虚拟线边仓过滤模式:'exclude' 排除虚拟仓(默认),'only' 只看虚拟仓,'all' 不过滤
|
||||||
Events:
|
Events:
|
||||||
selected(rows: WmMaterialStockVO[]) — 确认选择后触发,单选时数组长度为 1
|
selected(rows: WmMaterialStockVO[]) — 确认选择后触发,单选时数组长度为 1
|
||||||
Expose:
|
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 WmWarehouseSelect from '@/views/mes/wm/warehouse/components/WmWarehouseSelect.vue'
|
||||||
import WmWarehouseLocationSelect from '@/views/mes/wm/warehouse/components/WmWarehouseLocationSelect.vue'
|
import WmWarehouseLocationSelect from '@/views/mes/wm/warehouse/components/WmWarehouseLocationSelect.vue'
|
||||||
import WmWarehouseAreaSelect from '@/views/mes/wm/warehouse/components/WmWarehouseAreaSelect.vue'
|
import WmWarehouseAreaSelect from '@/views/mes/wm/warehouse/components/WmWarehouseAreaSelect.vue'
|
||||||
|
import { MesWmWarehouseConstants } from '@/views/mes/utils/constants'
|
||||||
|
|
||||||
defineOptions({ name: 'WmMaterialStockSelectDialog' })
|
defineOptions({ name: 'WmMaterialStockSelectDialog' })
|
||||||
|
|
||||||
|
|
@ -168,11 +169,11 @@ const props = withDefaults(
|
||||||
itemId?: number // 按物料 ID 过滤
|
itemId?: number // 按物料 ID 过滤
|
||||||
batchId?: number // 按批次 ID 过滤
|
batchId?: number // 按批次 ID 过滤
|
||||||
warehouseId?: number // 按仓库 ID 过滤
|
warehouseId?: number // 按仓库 ID 过滤
|
||||||
excludeVirtual?: boolean // 是否排除虚拟线边仓库存(默认 true)
|
virtualFilter?: 'exclude' | 'only' | 'all' // 虚拟仓过滤:'exclude' 排除(默认),'only' 只看,'all' 不过滤
|
||||||
}>(),
|
}>(),
|
||||||
{
|
{
|
||||||
multiple: true,
|
multiple: true,
|
||||||
excludeVirtual: true
|
virtualFilter: 'exclude'
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -265,10 +266,16 @@ const getList = async () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
const data = await WmMaterialStockApi.getMaterialStockPage(queryParams)
|
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(
|
list.value = data.list.filter(
|
||||||
(row: WmMaterialStockVO) => !row.warehouseCode?.includes('WIP_VIRTUAL')
|
(row: WmMaterialStockVO) => !row.warehouseCode?.includes(MesWmWarehouseConstants.WIP_VIRTUAL)
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
list.value = data.list
|
list.value = data.list
|
||||||
|
|
@ -380,15 +387,21 @@ defineExpose({ open })
|
||||||
/** 拼装 el-alert 提示文字 */
|
/** 拼装 el-alert 提示文字 */
|
||||||
const alertTitle = computed(() => {
|
const alertTitle = computed(() => {
|
||||||
const parts: string[] = []
|
const parts: string[] = []
|
||||||
if (props.batchId != null) parts.push('批次')
|
if (props.batchId != null) {
|
||||||
if (props.warehouseId != null) parts.push('仓库')
|
parts.push('批次')
|
||||||
if (props.excludeVirtual) parts.push('排除虚拟仓')
|
}
|
||||||
|
if (props.warehouseId != null) {
|
||||||
|
parts.push('仓库')
|
||||||
|
}
|
||||||
|
if (props.virtualFilter === 'only') {
|
||||||
|
parts.push('只看虚拟仓')
|
||||||
|
}
|
||||||
return `已按${parts.join('/')}预过滤`
|
return `已按${parts.join('/')}预过滤`
|
||||||
})
|
})
|
||||||
|
|
||||||
/** 是否显示 alert 提示 */
|
/** 是否显示 alert 提示 */
|
||||||
const showAlert = computed(() => {
|
const showAlert = computed(() => {
|
||||||
return props.batchId != null || props.warehouseId != null
|
return props.batchId != null || props.warehouseId != null || props.virtualFilter === 'only'
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
@ -78,7 +78,7 @@
|
||||||
v-model="formData.materialStockId"
|
v-model="formData.materialStockId"
|
||||||
placeholder="请选择库存"
|
placeholder="请选择库存"
|
||||||
class="!w-1/1"
|
class="!w-1/1"
|
||||||
:exclude-virtual="false"
|
virtual-filter="only"
|
||||||
@change="handleStockChange"
|
@change="handleStockChange"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@
|
||||||
<WmMaterialStockSelect
|
<WmMaterialStockSelect
|
||||||
v-model="formData.materialStockId"
|
v-model="formData.materialStockId"
|
||||||
:item-id="formData.itemId"
|
:item-id="formData.itemId"
|
||||||
|
virtual-filter="only"
|
||||||
@change="handleStockChange"
|
@change="handleStockChange"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,7 @@
|
||||||
v-model="formData.materialStockId"
|
v-model="formData.materialStockId"
|
||||||
placeholder="请选择库存"
|
placeholder="请选择库存"
|
||||||
class="!w-1/1"
|
class="!w-1/1"
|
||||||
|
virtual-filter="only"
|
||||||
@change="handleStockChange"
|
@change="handleStockChange"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue