gaoluyang
2026-08-12 21a2d6f813f3d58b494fde010f66bd84ce2f1d41
fix: MOM
1.修改物料弹框的SIP与SOP改为中文
已修改8个文件
190 ■■■■ 文件已修改
src/views/mes/md/item/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/md/item/modules/form.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/md/item/modules/product-media-list.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/md/workstation/index.vue 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/md/workstation/modules/form.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/md/workstation/workshop/modules/form.vue 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/pro/workorder/index.vue 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/pro/workorder/modules/form.vue 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/md/item/index.vue
@@ -25,7 +25,7 @@
  } from "#/api/mes/md/item";
  import { $t } from "#/locales";
  import { MdItemTypeTree } from "#/views/mes/md/item/type/components";
  import { PrinterLabel } from "#/views/wls/barcode/components";
  // import { PrinterLabel } from "#/views/wls/barcode/components";
  import { useGridColumns, useGridFormSchema } from "./data";
  import Form from "./modules/form.vue";
@@ -203,9 +203,9 @@
                    },
                  },
                ]" />
              <PrinterLabel :biz-id="row.id"
              <!-- <PrinterLabel :biz-id="row.id"
                            :biz-code="row.code"
                            biz-type="ITEM" />
                            biz-type="ITEM" /> -->
            </div>
          </template>
        </Grid>
src/views/mes/md/item/modules/form.vue
@@ -141,10 +141,10 @@
      <Tabs.TabPane key="substitute" tab="替代品">
        <Empty description="替代品(待实现)" />
      </Tabs.TabPane>
      <Tabs.TabPane key="sip" tab="SIP">
      <Tabs.TabPane key="sip" tab="检验指导书(SIP)">
        <ProductSipForm :form-type="formType" :item-id="formData.id" />
      </Tabs.TabPane>
      <Tabs.TabPane key="sop" tab="SOP">
      <Tabs.TabPane key="sop" tab="作业指导书(SOP)">
        <ProductSopForm :form-type="formType" :item-id="formData.id" />
      </Tabs.TabPane>
    </Tabs>
src/views/mes/md/item/modules/product-media-list.vue
@@ -48,7 +48,9 @@
);
const isReadOnly = computed(() => props.formType === 'detail'); // 是否只读
const title = computed(() => props.kind); // 当前媒体类型标题
const title = computed(() =>
  props.kind === 'SIP' ? '检验指导书(SIP)' : '作业指导书(SOP)',
);
/** 将完整 URL 转为相对路径,确保走前端代理 */
function resolveImageUrl(url?: string): string {
src/views/mes/md/workstation/index.vue
@@ -5,7 +5,7 @@
import { ref } from 'vue';
import { Page, useVbenModal } from '@vben/common-ui';
import { BarcodeBizTypeEnum } from '@vben/constants';
// import { BarcodeBizTypeEnum } from '@vben/constants';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
@@ -17,12 +17,12 @@
  getWorkstationPage,
} from '#/api/mes/md/workstation';
import { $t } from '#/locales';
import { BarcodeDetail } from '#/views/wls/barcode/components';
// import { BarcodeDetail } from '#/views/wls/barcode/components';
import { useGridColumns, useGridFormSchema } from './data';
import Form from './modules/form.vue';
const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 条码详情弹窗
// const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 条码详情弹窗
const [FormModal, formModalApi] = useVbenModal({
  connectedComponent: Form,
@@ -65,17 +65,17 @@
}
/** 查看工作站条码 */
function handleBarcode(row: MesMdWorkstationApi.Workstation) {
  if (!row.id) {
    return;
  }
  barcodeDetailRef.value?.openByBusiness(
    row.id,
    BarcodeBizTypeEnum.WORKSTATION,
    row.code,
    row.name,
  );
}
// function handleBarcode(row: MesMdWorkstationApi.Workstation) {
//   if (!row.id) {
//     return;
//   }
//   barcodeDetailRef.value?.openByBusiness(
//     row.id,
//     BarcodeBizTypeEnum.WORKSTATION,
//     row.code,
//     row.name,
//   );
// }
/** 导出工作站 */
async function handleExport() {
@@ -116,7 +116,7 @@
<template>
  <Page auto-content-height><FormModal @success="handleRefresh" />
    <BarcodeDetail ref="barcodeDetailRef" />
    <!-- <BarcodeDetail ref="barcodeDetailRef" /> -->
    <Grid table-title="工作站列表">
      <template #toolbar-tools>
@@ -165,12 +165,12 @@
                confirm: handleDelete.bind(null, row),
              },
            },
            {
              label: '条码',
              type: 'link',
              auth: ['mes:md-workstation:query'],
              onClick: handleBarcode.bind(null, row),
            },
            // {
            //   label: '条码',
            //   type: 'link',
            //   auth: ['mes:md-workstation:query'],
            //   onClick: handleBarcode.bind(null, row),
            // },
          ]"
        />
      </template>
src/views/mes/md/workstation/modules/form.vue
@@ -6,7 +6,7 @@
  import { computed, ref } from "vue";
  import { useVbenModal } from "@vben/common-ui";
  import { BarcodeBizTypeEnum } from "@vben/constants";
  // import { BarcodeBizTypeEnum } from "@vben/constants";
  import { Button, message, Tabs } from "ant-design-vue";
@@ -17,7 +17,7 @@
    updateWorkstation,
  } from "#/api/mes/md/workstation";
  import { $t } from "#/locales";
  import { BarcodeDetail } from "#/views/wls/barcode/components";
  // import { BarcodeDetail } from "#/views/wls/barcode/components";
  import { useFormSchema } from "../data";
  import MachineList from "./machine-list.vue";
@@ -28,7 +28,7 @@
  const formType = ref<FormType>("create"); // 表单模式
  const subTabsName = ref("machine"); // 当前资源页签
  const formData = ref<MesMdWorkstationApi.Workstation>();
  const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 条码详情弹窗
  // const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 条码详情弹窗
  const isDetail = computed(() => formType.value === "detail"); // 是否查看模式
  const getTitle = computed(() => {
@@ -53,17 +53,17 @@
  });
  /** 查看工作站条码 */
  function handleBarcode() {
    if (!formData.value?.id) {
      return;
    }
    barcodeDetailRef.value?.openByBusiness(
      formData.value.id,
      BarcodeBizTypeEnum.WORKSTATION,
      formData.value.code,
      formData.value.name
    );
  }
  // function handleBarcode() {
  //   if (!formData.value?.id) {
  //     return;
  //   }
  //   barcodeDetailRef.value?.openByBusiness(
  //     formData.value.id,
  //     BarcodeBizTypeEnum.WORKSTATION,
  //     formData.value.code,
  //     formData.value.name
  //   );
  // }
  const [Modal, modalApi] = useVbenModal({
    async onConfirm() {
@@ -146,13 +146,13 @@
    </Tabs>
    <template #prepend-footer>
      <div class="flex flex-auto items-center">
        <Button v-if="isDetail && formData?.id"
        <!-- <Button v-if="isDetail && formData?.id"
                type="primary"
                @click="handleBarcode">
          查看条码
        </Button>
        </Button> -->
      </div>
    </template>
    <BarcodeDetail ref="barcodeDetailRef" />
    <!-- <BarcodeDetail ref="barcodeDetailRef" /> -->
  </Modal>
</template>
src/views/mes/md/workstation/workshop/modules/form.vue
@@ -6,7 +6,7 @@
  import { computed, ref } from "vue";
  import { useVbenModal } from "@vben/common-ui";
  import { BarcodeBizTypeEnum } from "@vben/constants";
  // import { BarcodeBizTypeEnum } from "@vben/constants";
  import { Button, message } from "ant-design-vue";
@@ -17,14 +17,14 @@
    updateWorkshop,
  } from "#/api/mes/md/workstation/workshop";
  import { $t } from "#/locales";
  import { BarcodeDetail } from "#/views/wls/barcode/components";
  // import { BarcodeDetail } from "#/views/wls/barcode/components";
  import { useFormSchema } from "../data";
  const emit = defineEmits(["success"]);
  const formType = ref<FormType>("create"); // 表单模式
  const formData = ref<MesMdWorkshopApi.Workshop>();
  const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 条码详情弹窗
  // const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 条码详情弹窗
  const isDetail = computed(() => formType.value === "detail"); // 是否查看模式
  const getTitle = computed(() => {
@@ -49,17 +49,17 @@
  });
  /** 查看车间条码 */
  function handleBarcode() {
    if (!formData.value?.id) {
      return;
    }
    barcodeDetailRef.value?.openByBusiness(
      formData.value.id,
      BarcodeBizTypeEnum.WORKSHOP,
      formData.value.code,
      formData.value.name
    );
  }
  // function handleBarcode() {
  //   if (!formData.value?.id) {
  //     return;
  //   }
  //   barcodeDetailRef.value?.openByBusiness(
  //     formData.value.id,
  //     BarcodeBizTypeEnum.WORKSHOP,
  //     formData.value.code,
  //     formData.value.name
  //   );
  // }
  const [Modal, modalApi] = useVbenModal({
    async onConfirm() {
@@ -117,9 +117,9 @@
    <template v-if="isDetail && formData?.id"
              #prepend-footer>
      <div class="flex flex-auto items-center">
        <Button @click="handleBarcode">查看条码</Button>
        <!-- <Button @click="handleBarcode">查看条码</Button> -->
      </div>
    </template>
  </Modal>
  <BarcodeDetail ref="barcodeDetailRef" />
  <!-- <BarcodeDetail ref="barcodeDetailRef" /> -->
</template>
src/views/mes/pro/workorder/index.vue
@@ -6,7 +6,6 @@
  import { Page, useVbenModal } from "@vben/common-ui";
  import {
    BarcodeBizTypeEnum,
    MesProWorkOrderStatusEnum,
    MesProWorkOrderTypeEnum,
  } from "@vben/constants";
@@ -23,7 +22,7 @@
  } from "#/api/mes/pro/workorder";
  import { $t } from "#/locales";
  import ArchiveDetail from '#/views/mes/pd/archive/modules/detail.vue';
import { BarcodeDetail } from '#/views/wls/barcode/components';
// import { BarcodeDetail } from '#/views/wls/barcode/components';
  import { useGridColumns, useGridFormSchema } from "./data";
  import Form from "./modules/form.vue";
@@ -34,7 +33,7 @@
  });
  const archiveDetailRef = ref<InstanceType<typeof ArchiveDetail>>();
const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 条码详情弹窗
// const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 条码详情弹窗
  /** 刷新表格 */
  function handleRefresh() {
@@ -89,14 +88,14 @@
  }
  /** 查看订单条码 */
  function handleBarcode(row: MesProWorkOrderApi.WorkOrder) {
    barcodeDetailRef.value?.openByBusiness(
      row.id!,
      BarcodeBizTypeEnum.WORKORDER,
      row.code,
      row.name
    );
  }
  // function handleBarcode(row: MesProWorkOrderApi.WorkOrder) {
  //   barcodeDetailRef.value?.openByBusiness(
  //     row.id!,
  //     BarcodeBizTypeEnum.WORKORDER,
  //     row.code,
  //     row.name
  //   );
  // }
  /** 导出表格 */
  async function handleExport() {
@@ -221,12 +220,12 @@
                confirm: handleCancel.bind(null, row),
              },
            },
            {
              label: '条码',
              type: 'link',
              auth: ['mes:pro-work-order:query'],
              onClick: handleBarcode.bind(null, row),
            },
            // {
            //   label: '条码',
            //   type: 'link',
            //   auth: ['mes:pro-work-order:query'],
            //   onClick: handleBarcode.bind(null, row),
            // },
            {
              label: '归档',
              type: 'link',
@@ -235,7 +234,7 @@
          ]" />
      </template>
    </Grid>
    <BarcodeDetail ref="barcodeDetailRef" />
    <!-- <BarcodeDetail ref="barcodeDetailRef" /> -->
    <ArchiveDetail ref="archiveDetailRef" />
  </Page>
</template>
src/views/mes/pro/workorder/modules/form.vue
@@ -8,7 +8,6 @@
  import { confirm, useVbenModal } from "@vben/common-ui";
  import {
    BarcodeBizTypeEnum,
    MesProWorkOrderStatusEnum,
  } from "@vben/constants";
@@ -24,7 +23,7 @@
  } from "#/api/mes/pro/workorder";
  import { batchSaveWorkOrderProcess, getWorkOrderProcessListByWorkOrderId } from "#/api/mes/pro/workorder/process";
  import { $t } from "#/locales";
  import { BarcodeDetail } from "#/views/wls/barcode/components";
  // import { BarcodeDetail } from "#/views/wls/barcode/components";
  import { useFormSchema } from "../data";
  import PredictDelivery from "./ai/predict-delivery.vue";
@@ -39,7 +38,7 @@
  const formData = ref<MesProWorkOrderApi.WorkOrder>();
  const originalSnapshot = ref("");
  const subTabsName = ref("process");
  const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>();
  // const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>();
  const processListRef = ref<InstanceType<typeof ProcessList>>();
  const currentProductId = ref<number>(); // 当前选中的产品 ID(用于工序加载)
  const tempProcessList = ref<MesProWorkOrderProcessApi.WorkOrderProcess[]>([]); // 临时工序列表
@@ -147,17 +146,17 @@
  }
  /** 查看订单条码 */
  function handleBarcode() {
    if (!formData.value?.id) {
      return;
    }
    barcodeDetailRef.value?.openByBusiness(
      formData.value.id,
      BarcodeBizTypeEnum.WORKORDER,
      formData.value.code,
      formData.value.name
    );
  }
  // function handleBarcode() {
  //   if (!formData.value?.id) {
  //     return;
  //   }
  //   barcodeDetailRef.value?.openByBusiness(
  //     formData.value.id,
  //     BarcodeBizTypeEnum.WORKORDER,
  //     formData.value.code,
  //     formData.value.name
  //   );
  // }
  /** 工序列表变化回调 */
  function handleProcessListChange(list: MesProWorkOrderProcessApi.WorkOrderProcess[]) {
@@ -384,13 +383,13 @@
                @click="handleSave">
          保存修改
        </Button>
        <Button v-if="formType === 'detail' && formData?.id"
        <!-- <Button v-if="formType === 'detail' && formData?.id"
                @click="handleBarcode">
          查看条码
        </Button>
        </Button> -->
        <Button @click="modalApi.close()">取消</Button>
      </div>
    </template>
  </Modal>
  <BarcodeDetail ref="barcodeDetailRef" />
  <!-- <BarcodeDetail ref="barcodeDetailRef" /> -->
</template>