src/views/productionManagement/productStructure/Detail/index.vue
@@ -53,6 +53,8 @@
                  </el-form-item>
                </template>
              </el-table-column>
              <el-table-column prop="uidNo"
                               label="UID码" />
              <el-table-column prop="processName"
                               label="消耗工序">
                <template #default="{ row, $index }">
@@ -91,10 +93,10 @@
              </el-table-column>
              <el-table-column v-if="isOrderPage"
                               prop="demandedQuantity"
                               label="需求总量">
                               label="预计生产数量">
                <template #default="{ row, $index }">
                  <el-form-item v-if="dataValue.isEdit"
                                :rules="[{ required: true, message: '请输入需求总量', trigger: ['blur','change'] }]"
                                :rules="[{ required: true, message: '请输入预计生产数量', trigger: ['blur','change'] }]"
                                style="margin: 0">
                    <el-input-number v-model="row.demandedQuantity"
                                     :min="0"
@@ -115,7 +117,7 @@
                    <el-input v-model="row.unit"
                              placeholder="请输入单位"
                              clearable
                               :disabled="!dataValue.isEdit || dataValue.dataList.some(item => (item as any).tempId === row.tempId)" />
                              :disabled="!dataValue.isEdit || dataValue.dataList.some(item => (item as any).tempId === row.tempId)" />
                  </el-form-item>
                </template>
              </el-table-column>
@@ -145,6 +147,8 @@
                       prop="productName" />
      <el-table-column label="规格型号"
                       prop="model" />
      <el-table-column label="UID码"
                       prop="uidNo" />
    </el-table>
    <product-select-dialog v-if="dataValue.showProductDialog"
                           v-model:model-value="dataValue.showProductDialog"
@@ -195,6 +199,7 @@
  const routeProductModelName = computed(
    () => route.query.productModelName || ""
  );
  const routeUidNo = computed(() => route.query.uidNo || "");
  const routeOrderId = computed(() => route.query.orderId);
  const pageType = computed(() => route.query.type);
  const isOrderPage = computed(
@@ -216,6 +221,7 @@
    {
      productName: "",
      model: "",
      uidNo: "",
      bomNo: "",
    },
  ]);
@@ -264,15 +270,21 @@
    const productData = row[0];
    //  最外层组件中,与当前产品相同的产品只能有一个
    const isTopLevel = dataValue.dataList.some(item => (item as any).tempId === dataValue.currentRowName);
    const isTopLevel = dataValue.dataList.some(
      item => (item as any).tempId === dataValue.currentRowName
    );
    if (isTopLevel) {
      if (productData.productName === tableData[0].productName &&
        productData.model === tableData[0].model) {
      if (
        productData.productName === tableData[0].productName &&
        productData.model === tableData[0].model
      ) {
        //  查找是否已经有其他顶层行已经是这个产品
        const hasOther = dataValue.dataList.some(item =>
          (item as any).tempId !== dataValue.currentRowName &&
          (item as any).productName === tableData[0].productName &&
          (item as any).model === tableData[0].model
        const hasOther = dataValue.dataList.some(
          item =>
            (item as any).tempId !== dataValue.currentRowName &&
            (item as any).productName === tableData[0].productName &&
            (item as any).model === tableData[0].model &&
            (item as any).uidNo === tableData[0].uidNo
        );
        if (hasOther) {
          ElMessage.warning("最外层和当前产品一样的一级只能有一个");
@@ -289,6 +301,7 @@
      if (item.tempId === dataValue.currentRowName) {
        item.productName = productData.productName;
        item.model = productData.model;
        item.uidNo = productData.uidNo;
        item.productModelId = productData.id;
        item.unit = productData.unit || "";
        return;
@@ -301,6 +314,7 @@
    if (item.tempId === tempId) {
      item.productName = productData.productName;
      item.model = productData.model;
      item.uidNo = productData.uidNo;
      item.productModelId = productData.id;
      item.unit = productData.unit || "";
      return true;
@@ -390,7 +404,7 @@
    }
  };
  const removeItem = (tempId:string) => {
  const removeItem = (tempId: string) => {
    // 先尝试从顶层删除
    const topIndex = dataValue.dataList.findIndex(item => item.tempId === tempId);
    if (topIndex !== -1) {
@@ -502,6 +516,7 @@
    // 从路由参数回显数据
    tableData[0].productName = routeProductName.value as string;
    tableData[0].model = routeProductModelName.value as string;
    tableData[0].uidNo = routeUidNo.value as string;
    tableData[0].bomNo = routeBomNo.value as string;
    // 订单情况下禁用编辑