feat(mes): 添加生产退料单确认功能及字段校验

新增确认生产退料单的接口,更新相关字段为必填项并添加数量校验逻辑。此变更旨在提升退料单的管理效率和数据准确性。
pull/871/MERGE
YunaiV 2026-02-28 22:16:52 +08:00
parent 2a83f67065
commit 15de32fcbf
3 changed files with 32 additions and 26 deletions

View File

@ -9,7 +9,7 @@ export interface WmReturnIssueVO {
workstationName?: string
workOrderId?: number
workOrderCode?: string
returnType?: string
type?: number
returnDate?: string
status?: number
remark?: string

View File

@ -23,7 +23,6 @@
</el-input>
</el-form-item>
</el-col>
<!-- TODO @AI必填前后端都是name -->
<el-col :span="8">
<el-form-item label="退料单名称" prop="name">
<el-input
@ -33,17 +32,16 @@
/>
</el-form-item>
</el-col>
<!-- TODO @AI必填前后端都是returnType -->
<el-col :span="8">
<el-form-item label="退料类型" prop="returnType">
<el-form-item label="退料类型" prop="type">
<el-select
v-model="formData.returnType"
v-model="formData.type"
placeholder="请选择退料类型"
:disabled="isHeaderReadonly"
class="!w-full"
>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.MES_WM_RETURN_ISSUE_TYPE)"
v-for="dict in getIntDictOptions(DICT_TYPE.MES_WM_RETURN_ISSUE_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
@ -63,7 +61,6 @@
/>
</el-form-item>
</el-col>
<!-- TODO @AI必填前后端都是workOrderId -->
<el-col :span="8">
<el-form-item label="生产工单" prop="workOrderId">
<ProWorkOrderSelect v-model="formData.workOrderId" :disabled="isHeaderReadonly" />
@ -105,7 +102,7 @@
</template>
<script setup lang="ts">
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import { generateRandomStr } from '@/utils'
import { WmReturnIssueApi, WmReturnIssueVO } from '@/api/mes/wm/returnissue'
import ProWorkOrderSelect from '@/views/mes/pro/workorder/components/ProWorkOrderSelect.vue'
@ -125,13 +122,15 @@ const formData = ref({
name: undefined,
workOrderId: undefined,
workstationId: undefined,
returnType: undefined,
type: undefined,
returnDate: undefined,
remark: undefined
})
const formRules = reactive({
code: [{ required: true, message: '退料单编号不能为空', trigger: 'blur' }],
name: [{ required: true, message: '退料单名称不能为空', trigger: 'blur' }]
name: [{ required: true, message: '退料单名称不能为空', trigger: 'blur' }],
type: [{ required: true, message: '退料类型不能为空', trigger: 'change' }],
workOrderId: [{ required: true, message: '生产工单不能为空', trigger: 'change' }]
})
const formRef = ref() // Ref
@ -222,7 +221,7 @@ const resetForm = () => {
name: undefined,
workOrderId: undefined,
workstationId: undefined,
returnType: undefined,
type: undefined,
returnDate: undefined,
remark: undefined
}

View File

@ -25,17 +25,22 @@
class="!w-240px"
/>
</el-form-item>
<!-- TODO @AI增加 生产工单 select -->
<!-- TODO @AI需要生成下字典插入 sql -->
<el-form-item label="退料类型" prop="returnType">
<el-form-item label="生产工单" prop="workOrderId">
<ProWorkOrderSelect
v-model="queryParams.workOrderId"
clearable
class="!w-240px"
/>
</el-form-item>
<el-form-item label="退料类型" prop="type">
<el-select
v-model="queryParams.returnType"
v-model="queryParams.type"
placeholder="请选择退料类型"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.MES_WM_RETURN_ISSUE_TYPE)"
v-for="dict in getIntDictOptions(DICT_TYPE.MES_WM_RETURN_ISSUE_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
@ -104,9 +109,9 @@
<el-table-column label="退料单名称" align="center" prop="name" min-width="150" />
<el-table-column label="生产工单" align="center" prop="workOrderCode" min-width="140" />
<el-table-column label="工作站" align="center" prop="workstationName" min-width="120" />
<el-table-column label="退料类型" align="center" prop="returnType" min-width="110">
<el-table-column label="退料类型" align="center" prop="type" min-width="110">
<template #default="scope">
<dict-tag :type="DICT_TYPE.MES_WM_RETURN_ISSUE_TYPE" :value="scope.row.returnType" />
<dict-tag :type="DICT_TYPE.MES_WM_RETURN_ISSUE_TYPE" :value="scope.row.type" />
</template>
</el-table-column>
<el-table-column
@ -152,8 +157,8 @@
删除
</el-button>
<!-- TODO @芋艿UNEXECUTEUNSTOCK -->
<!-- 待入库入库上架 -->
<!-- TODO @AI名字改成执行上架 -->
<!-- 待入库执行上架 -->
<!-- DONE @AI名字改成执行上架 -->
<el-button
link
type="success"
@ -161,10 +166,10 @@
v-hasPermi="['mes:wm-return-issue:update']"
v-if="scope.row.status === MesWmReturnIssueStatusEnum.APPROVING"
>
入库上架
执行上架
</el-button>
<!-- 已入库完成 -->
<!-- TODO @AI名字换成执行退料 -->
<!-- 已入库执行退料 -->
<!-- DONE @AI名字换成执行退料 -->
<el-button
link
type="success"
@ -172,7 +177,7 @@
v-hasPermi="['mes:wm-return-issue:execute']"
v-if="scope.row.status === MesWmReturnIssueStatusEnum.APPROVED"
>
完成
执行退料
</el-button>
<!-- 待入库已入库取消 -->
<el-button
@ -204,10 +209,11 @@
<script setup lang="ts">
import { dateFormatter2 } from '@/utils/formatTime'
import { DICT_TYPE, getIntDictOptions, getStrDictOptions } from '@/utils/dict'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import download from '@/utils/download'
import { WmReturnIssueApi, WmReturnIssueVO } from '@/api/mes/wm/returnissue'
import ReturnIssueForm from './ReturnIssueForm.vue'
import ProWorkOrderSelect from '@/views/mes/pro/workorder/components/ProWorkOrderSelect.vue'
import { MesWmReturnIssueStatusEnum } from '@/views/mes/utils/constants'
defineOptions({ name: 'MesWmReturnIssue' })
@ -224,7 +230,8 @@ const queryParams = reactive({
pageSize: 10,
code: undefined,
name: undefined,
returnType: undefined,
workOrderId: undefined,
type: undefined,
status: undefined,
returnDate: undefined
})