spring
2026-07-03 2540d86f0dbd77f654f558c3bf9d5ddbe7422f16
src/views/mes/pro/workorder/modules/form.vue
@@ -1,4 +1,4 @@
<script lang="ts" setup>
<script lang="ts" setup>
import type { FormType } from '../data';
import type { MesProWorkOrderApi } from '#/api/mes/pro/workorder';
@@ -49,19 +49,19 @@
  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', ['订单']);
    }
  }
});
@@ -86,7 +86,7 @@
  modalApi.setState({ showConfirmButton: isEditable.value });
}
/** 查看工单条码 */
/** 查看订单条码 */
function handleBarcode() {
  if (!formData.value?.id) {
    return;
@@ -99,7 +99,7 @@
  );
}
/** 确认工单:编辑态有修改时先保存,再确认 */
/** 确认订单:编辑态有修改时先保存,再确认 */
async function handleConfirm() {
  const { valid } = await formApi.validate();
  if (!valid || !formData.value?.id) {
@@ -117,7 +117,7 @@
      }
    }
    await confirmWorkOrder(formData.value.id);
    message.success('工单已确认');
    message.success('订单已确认');
    await modalApi.close();
    emit('success');
  } finally {
@@ -125,7 +125,7 @@
  }
}
/** 完成工单 */
/** 完成订单 */
async function handleFinish() {
  if (!formData.value?.id) {
    return;
@@ -133,7 +133,7 @@
  modalApi.lock();
  try {
    await finishWorkOrder(formData.value.id);
    message.success('工单已完成');
    message.success('订单已完成');
    await modalApi.close();
    emit('success');
  } finally {
@@ -141,7 +141,7 @@
  }
}
/** 从 BOM 物料行预填子工单:复用当前工单上下文,进入新增态 */
/** 从 BOM 物料行预填子订单:复用当前订单上下文,进入新增态 */
async function handleGenerateWorkOrder(
  bomRow: MesProWorkOrderBomApi.WorkOrderBom,
) {
@@ -167,7 +167,7 @@
    vendorId: current.vendorId,
  });
  originalSnapshot.value = JSON.stringify(await formApi.getValues());
  message.info('已从 BOM 物料预填子工单,请补充工单编码等信息后保存');
  message.info('已从 BOM 物料预填子订单,请补充订单编码等信息后保存');
}
const [Modal, modalApi] = useVbenModal({
@@ -195,7 +195,7 @@
          status: MesProWorkOrderStatusEnum.PREPARE,
        };
        formType.value = 'update';
        // 创建成功后切换编辑态,重挂 schema 让「工单状态」字段显现
        // 创建成功后切换编辑态,重挂 schema 让「订单状态」字段显现
        applySchema();
        await formApi.setValues(formData.value);
      }
@@ -231,7 +231,7 @@
        modalApi.unlock();
      }
    } else if (data?.parentRow) {
      // 新增子工单时,预填父工单信息
      // 新增子订单时,预填父订单信息
      const parent = data.parentRow;
      await formApi.setValues({
        clientId: parent.clientId,
@@ -254,7 +254,7 @@
    <!-- 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"
@@ -271,14 +271,14 @@
      <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>