feat(mes): 新增批次管理相关字段和功能

在批次管理中新增多个字段,包括生产任务编号、工具编号、模具编号、生产批号、质量状态以及日期范围等。更新了相关的请求和响应对象,增强了批次查询功能,支持更多筛选条件。

同时,更新了前端组件以支持新的字段和功能,提升用户体验。
pull/871/MERGE
YunaiV 2026-04-06 18:31:18 +08:00
parent 0ea1b51d3b
commit b36094b90f
3 changed files with 148 additions and 2 deletions

View File

@ -22,9 +22,11 @@ export interface BatchVO {
workOrderId?: number
workOrderCode?: string
taskId?: number
taskCode?: string
workstationId?: number
workstationCode?: string
toolId?: number
toolCode?: string
moldId?: number
lotNumber?: string
qualityStatus?: string

View File

@ -1,4 +1,3 @@
<!-- TODO @AI应该放到 md -->
<!-- MES 编码规则列表 -->
<template>
<ContentWrap>

View File

@ -1,3 +1,4 @@
<script setup lang="ts"></script>
<!--
MES 批次弹窗选择器支持单选/多选
@ -31,6 +32,20 @@
class="!w-200px"
/>
</el-form-item>
<el-form-item label="供应商">
<MdVendorSelect
v-model="queryParams.vendorId"
placeholder="请选择供应商"
class="!w-200px"
/>
</el-form-item>
<el-form-item label="客户">
<MdClientSelect
v-model="queryParams.clientId"
placeholder="请选择客户"
class="!w-200px"
/>
</el-form-item>
<el-form-item label="生产工单">
<ProWorkOrderSelect
v-model="queryParams.workOrderId"
@ -38,6 +53,32 @@
class="!w-200px"
/>
</el-form-item>
<el-form-item label="生产任务">
<ProTaskSelect
v-model="queryParams.taskId"
placeholder="请选择生产任务"
class="!w-200px"
/>
</el-form-item>
<el-form-item label="工作站">
<MdWorkstationSelect
v-model="queryParams.workstationId"
placeholder="请选择工作站"
class="!w-200px"
/>
</el-form-item>
<el-form-item label="工具">
<TmToolSelect v-model="queryParams.toolId" placeholder="请选择工具" class="!w-200px" />
</el-form-item>
<el-form-item label="模具编号">
<el-input
v-model="queryParams.moldId"
placeholder="请输入模具编号"
clearable
@keyup.enter="handleQuery"
class="!w-200px"
/>
</el-form-item>
<el-form-item label="销售订单编号">
<el-input
v-model="queryParams.salesOrderCode"
@ -56,6 +97,63 @@
class="!w-200px"
/>
</el-form-item>
<el-form-item label="生产批号">
<el-input
v-model="queryParams.lotNumber"
placeholder="请输入生产批号"
clearable
@keyup.enter="handleQuery"
class="!w-200px"
/>
</el-form-item>
<el-form-item label="质量状态">
<el-select
v-model="queryParams.qualityStatus"
placeholder="请选择质量状态"
clearable
class="!w-200px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.MES_WM_QUALITY_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="生产日期">
<el-date-picker
v-model="queryParams.produceDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-220px"
/>
</el-form-item>
<el-form-item label="有效期">
<el-date-picker
v-model="queryParams.expireDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-220px"
/>
</el-form-item>
<el-form-item label="入库日期">
<el-date-picker
v-model="queryParams.receiptDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-220px"
/>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" /> 搜索
@ -112,7 +210,15 @@
<el-table-column label="销售订单编号" align="center" prop="salesOrderCode" width="140" />
<el-table-column label="采购订单编号" align="center" prop="purchaseOrderCode" width="140" />
<el-table-column label="工单编码" align="center" prop="workOrderCode" width="140" />
<el-table-column label="工作站编码" align="center" prop="workstationCode" width="120" />
<el-table-column label="生产任务编号" align="center" prop="taskCode" width="140" />
<el-table-column label="工具编号" align="center" prop="toolCode" width="120" />
<el-table-column label="生产批号" align="center" prop="lotNumber" width="120" />
<el-table-column label="质量状态" align="center" prop="qualityStatus" width="100">
<template #default="scope">
<dict-tag :type="DICT_TYPE.MES_WM_QUALITY_STATUS" :value="scope.row.qualityStatus" />
</template>
</el-table-column>
<el-table-column label="生产日期" align="center" prop="produceDate" width="120">
<template #default="scope">
<span>{{ formatDate(scope.row.produceDate, 'YYYY-MM-DD') }}</span>
@ -145,9 +251,15 @@
<script setup lang="ts">
import { formatDate } from '@/utils/formatTime'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import { BatchApi, BatchVO } from '@/api/mes/wm/batch'
import MdItemSelect from '@/views/mes/md/item/components/MdItemSelect.vue'
import MdVendorSelect from '@/views/mes/md/vendor/components/MdVendorSelect.vue'
import MdClientSelect from '@/views/mes/md/client/components/MdClientSelect.vue'
import ProWorkOrderSelect from '@/views/mes/pro/workorder/components/ProWorkOrderSelect.vue'
import ProTaskSelect from '@/views/mes/pro/task/components/ProTaskSelect.vue'
import MdWorkstationSelect from '@/views/mes/md/workstation/components/MdWorkstationSelect.vue'
import TmToolSelect from '@/views/mes/tm/tool/components/TmToolSelect.vue'
defineOptions({ name: 'WmBatchSelectDialog' })
@ -215,9 +327,20 @@ const queryParams = reactive({
pageSize: 10, //
code: undefined as string | undefined, //
itemId: undefined as number | undefined, // IDMdItemSelect
vendorId: undefined as number | undefined, // IDMdVendorSelect
clientId: undefined as number | undefined, // IDMdClientSelect
workOrderId: undefined as number | undefined, // IDProWorkOrderSelect
taskId: undefined as number | undefined, // IDProTaskSelect
workstationId: undefined as number | undefined, // IDMdWorkstationSelect
toolId: undefined as number | undefined, // IDTmToolSelect
moldId: undefined as number | undefined, // ID
salesOrderCode: undefined as string | undefined, //
purchaseOrderCode: undefined as string | undefined //
purchaseOrderCode: undefined as string | undefined, //
lotNumber: undefined as string | undefined, //
qualityStatus: undefined as number | undefined, //
produceDate: undefined as string[] | undefined, //
expireDate: undefined as string[] | undefined, //
receiptDate: undefined as string[] | undefined //
})
/** 查询批次列表 */
@ -268,9 +391,20 @@ const handleQuery = () => {
const resetQuery = () => {
queryParams.code = undefined
queryParams.itemId = undefined
queryParams.vendorId = undefined
queryParams.clientId = undefined
queryParams.workOrderId = undefined
queryParams.taskId = undefined
queryParams.workstationId = undefined
queryParams.toolId = undefined
queryParams.moldId = undefined
queryParams.salesOrderCode = undefined
queryParams.purchaseOrderCode = undefined
queryParams.lotNumber = undefined
queryParams.qualityStatus = undefined
queryParams.produceDate = undefined
queryParams.expireDate = undefined
queryParams.receiptDate = undefined
handleQuery()
}
@ -304,9 +438,20 @@ const open = async (selectedIds?: number[], itemId?: number) => {
// +
queryParams.code = undefined
queryParams.itemId = itemId ?? undefined // itemId
queryParams.vendorId = undefined
queryParams.clientId = undefined
queryParams.workOrderId = undefined
queryParams.taskId = undefined
queryParams.workstationId = undefined
queryParams.toolId = undefined
queryParams.moldId = undefined
queryParams.salesOrderCode = undefined
queryParams.purchaseOrderCode = undefined
queryParams.lotNumber = undefined
queryParams.qualityStatus = undefined
queryParams.produceDate = undefined
queryParams.expireDate = undefined
queryParams.receiptDate = undefined
queryParams.pageNo = 1
//
selectedRows.value = []