| | |
| | | <script lang="ts" setup> |
| | | <script lang="ts" setup> |
| | | import type { FormType } from '../data'; |
| | | |
| | | import type { MesProWorkOrderApi } from '#/api/mes/pro/workorder'; |
| | |
| | | const isChild = !!formData.value?.parentId; |
| | | switch (formType.value) { |
| | | case 'confirm': { |
| | | return '确认工单'; |
| | | return '确认订单'; |
| | | } |
| | | case 'detail': { |
| | | return $t('ui.actionTitle.view', ['工单']); |
| | | return $t('ui.actionTitle.view', ['订单']); |
| | | } |
| | | case 'finish': { |
| | | return '完成工单'; |
| | | return '完成订单'; |
| | | } |
| | | case 'update': { |
| | | return isChild ? '编辑子工单' : $t('ui.actionTitle.edit', ['工单']); |
| | | return isChild ? '编辑子订单' : $t('ui.actionTitle.edit', ['订单']); |
| | | } |
| | | default: { |
| | | return isChild ? '新增子工单' : $t('ui.actionTitle.create', ['工单']); |
| | | return isChild ? '新增子订单' : $t('ui.actionTitle.create', ['订单']); |
| | | } |
| | | } |
| | | }); |
| | |
| | | modalApi.setState({ showConfirmButton: isEditable.value }); |
| | | } |
| | | |
| | | /** 查看工单条码 */ |
| | | /** 查看订单条码 */ |
| | | function handleBarcode() { |
| | | if (!formData.value?.id) { |
| | | return; |
| | |
| | | ); |
| | | } |
| | | |
| | | /** 确认工单:编辑态有修改时先保存,再确认 */ |
| | | /** 确认订单:编辑态有修改时先保存,再确认 */ |
| | | async function handleConfirm() { |
| | | const { valid } = await formApi.validate(); |
| | | if (!valid || !formData.value?.id) { |
| | |
| | | } |
| | | } |
| | | await confirmWorkOrder(formData.value.id); |
| | | message.success('工单已确认'); |
| | | message.success('订单已确认'); |
| | | await modalApi.close(); |
| | | emit('success'); |
| | | } finally { |
| | |
| | | } |
| | | } |
| | | |
| | | /** 完成工单 */ |
| | | /** 完成订单 */ |
| | | async function handleFinish() { |
| | | if (!formData.value?.id) { |
| | | return; |
| | |
| | | modalApi.lock(); |
| | | try { |
| | | await finishWorkOrder(formData.value.id); |
| | | message.success('工单已完成'); |
| | | message.success('订单已完成'); |
| | | await modalApi.close(); |
| | | emit('success'); |
| | | } finally { |
| | |
| | | } |
| | | } |
| | | |
| | | /** 从 BOM 物料行预填子工单:复用当前工单上下文,进入新增态 */ |
| | | /** 从 BOM 物料行预填子订单:复用当前订单上下文,进入新增态 */ |
| | | async function handleGenerateWorkOrder( |
| | | bomRow: MesProWorkOrderBomApi.WorkOrderBom, |
| | | ) { |
| | |
| | | vendorId: current.vendorId, |
| | | }); |
| | | originalSnapshot.value = JSON.stringify(await formApi.getValues()); |
| | | message.info('已从 BOM 物料预填子工单,请补充工单编码等信息后保存'); |
| | | message.info('已从 BOM 物料预填子订单,请补充订单编码等信息后保存'); |
| | | } |
| | | |
| | | const [Modal, modalApi] = useVbenModal({ |
| | |
| | | status: MesProWorkOrderStatusEnum.PREPARE, |
| | | }; |
| | | formType.value = 'update'; |
| | | // 创建成功后切换编辑态,重挂 schema 让「工单状态」字段显现 |
| | | // 创建成功后切换编辑态,重挂 schema 让「订单状态」字段显现 |
| | | applySchema(); |
| | | await formApi.setValues(formData.value); |
| | | } |
| | |
| | | modalApi.unlock(); |
| | | } |
| | | } else if (data?.parentRow) { |
| | | // 新增子工单时,预填父工单信息 |
| | | // 新增子订单时,预填父订单信息 |
| | | const parent = data.parentRow; |
| | | await formApi.setValues({ |
| | | clientId: parent.clientId, |
| | |
| | | <!-- BOM / 物料需求 Tab:非新建态展示 --> |
| | | <template v-if="formData?.id"> |
| | | <Tabs v-model:active-key="subTabsName" class="mx-4"> |
| | | <Tabs.TabPane key="bom" tab="工单 BOM"> |
| | | <Tabs.TabPane key="bom" tab="订单 BOM"> |
| | | <BomList |
| | | :form-type="formType" |
| | | :work-order="formData" |
| | |
| | | <div class="flex flex-auto items-center gap-2"> |
| | | <Popconfirm |
| | | v-if="canConfirm || isConfirm" |
| | | title="确认要完成工单编制吗?确认后将不能更改。" |
| | | title="确认要完成订单编制吗?确认后将不能更改。" |
| | | @confirm="handleConfirm" |
| | | > |
| | | <Button type="primary">确认</Button> |
| | | </Popconfirm> |
| | | <Popconfirm |
| | | v-if="isFinish" |
| | | title="确认要完成该工单吗?" |
| | | title="确认要完成该订单吗?" |
| | | @confirm="handleFinish" |
| | | > |
| | | <Button type="primary">完成</Button> |