feat(mes): 新增生产工单编码及状态管理功能

新增生产工单编码规则和状态管理逻辑,优化工单创建和更新流程。
同时,更新前端表单以支持新的工单状态和来源单据字段,提升用户体验。
pull/871/MERGE
YunaiV 2026-04-04 10:15:26 +08:00
parent 469363c046
commit b2d86b12d6
3 changed files with 41 additions and 9 deletions

View File

@ -79,7 +79,7 @@
<el-form-item label="工单数量" prop="quantity">
<el-input-number
v-model="formData.quantity"
:min="0"
:min="1"
:precision="2"
class="!w-1/1"
:disabled="isDetail"
@ -169,13 +169,17 @@
<script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { ProWorkOrderApi, ProWorkOrderVO } from '@/api/mes/pro/workorder'
import { generateRandomStr } from '@/utils'
import { AutoCodeRecordApi } from '@/api/mes/md/autocode/record'
import MdItemSelect from '@/views/mes/md/item/components/MdItemSelect.vue'
import MdClientSelect from '@/views/mes/md/client/components/MdClientSelect.vue'
import MdVendorSelect from '@/views/mes/md/vendor/components/MdVendorSelect.vue'
import WorkOrderBomList from './WorkOrderBomList.vue'
import WorkOrderItemList from './WorkOrderItemList.vue'
import { MesProWorkOrderSourceTypeEnum, MesProWorkOrderTypeEnum } from '@/views/mes/utils/constants'
import {
MesProWorkOrderSourceTypeEnum,
MesProWorkOrderTypeEnum,
MesAutoCodeRuleCode
} from '@/views/mes/utils/constants'
defineOptions({ name: 'WorkOrderForm' })
@ -219,13 +223,16 @@ const formRef = ref() // 表单 Ref
const isDetail = computed(() => formType.value === 'detail')
/** 生成工单编码 */
const generateCode = () => {
formData.value.code = 'MO' + generateRandomStr(10)
const generateCode = async () => {
formData.value.code = await AutoCodeRecordApi.generateAutoCode(
MesAutoCodeRuleCode.PRO_WORK_ORDER_CODE
)
}
/** 打开弹窗 */
const open = async (type: string, id?: number, parentRow?: any) => {
dialogVisible.value = true
// todo @AI compute formData.parentid + type
dialogTitle.value = parentRow
? '新增子工单'
: type === 'detail'

View File

@ -27,6 +27,15 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="来源单据" prop="orderSourceCode">
<el-input
v-model="queryParams.orderSourceCode"
placeholder="请输入来源单据编号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="产品" prop="productId">
<MdItemSelect v-model="queryParams.productId" placeholder="请选择产品" class="!w-240px" />
</el-form-item>
@ -48,7 +57,22 @@
/>
</el-select>
</el-form-item>
<!-- TODO @AI前后端筛选去掉 status 状态 -->
<el-form-item label="工单状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="请选择工单状态"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.MES_PRO_WORK_ORDER_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="需求日期" prop="requestDate">
<el-date-picker
v-model="queryParams.requestDate"
@ -125,8 +149,6 @@
<el-table-column label="已生产数量" align="center" prop="quantityProduced" width="100" />
<el-table-column label="客户编码" align="center" prop="clientCode" width="120" />
<el-table-column label="客户名称" align="center" prop="clientName" width="120" />
<el-table-column label="供应商编码" align="center" prop="vendorCode" width="120" />
<el-table-column label="批次号" align="center" prop="batchCode" width="120" />
<el-table-column
label="需求日期"
align="center"
@ -267,6 +289,8 @@ const queryParams = reactive({
productId: undefined,
clientId: undefined,
type: undefined,
status: undefined,
orderSourceCode: undefined,
requestDate: undefined
})
const queryFormRef = ref() //

View File

@ -453,7 +453,8 @@ export const MesAutoCodeRuleCode = {
DV_MACHINERY_TYPE_CODE: 'DV_MACHINERY_TYPE_CODE', // 设备类型编码
DV_CHECK_PLAN_CODE: 'DV_CHECK_PLAN_CODE', // 点检保养方案编码
DV_SUBJECT_CODE: 'DV_SUBJECT_CODE', // 点检保养项目编码
DV_REPAIR_CODE: 'DV_REPAIR_CODE' // 维修单编码
DV_REPAIR_CODE: 'DV_REPAIR_CODE', // 维修单编码
PRO_WORK_ORDER_CODE: 'PRO_WORK_ORDER_CODE' // 生产工单编码
} as const
/** 获取物料/产品标识的标签 */