<template>
  <el-drawer
    title="外协单信息"
    :with-header="false"
    v-model="visible"
    direction="rtl"
    size="100%"
  >
    <div class="form-container column-container">
      <div class="form-btns-container">
        <span class="title-label">
          <el-icon><Document /></el-icon>
          <span>外协单信息</span>
        </span>

        <!-- <el-button
          v-if="editStatus"
          type="success"
          icon="check"
          @click="saveFrom"
        >
          暂存
        </el-button> -->

        <el-button
          v-if="editStatus && form.isSubmit==1"
          type="primary"
          icon="Download"
          @click="handleExport"
          v-hasPermi="['business:outsource:export']"
          >导出</el-button
        >
        <el-button
          v-if="editStatus"
          type="primary"
          icon="Finished"
          @click="handleSubmit"
          >保存</el-button
        >
        <div class="close-btn" @click="cancel">
          <i class="fa fa-times" aria-hidden="true" />
          <!-- <span>关闭</span> -->
        </div>
      </div>
      <el-form
        ref="formRef"
        class="master-container"
        :model="form"
        v-loading="loading"
        :rules="rules"
        label-width="120px"
      >
        <el-row :gutter="20">
          <el-col :span="6">
            <el-form-item label="单据号" prop="formCode">
              <el-input
                v-if="editStatus"
                v-model="form.formCode"
                disabled
                placeholder="系统自动生成"
              />
              <span v-else>{{ form.formCode }}</span>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="表单日期" prop="formDate">
              <el-date-picker
                v-if="editStatus"
                clearable
                v-model="form.formDate"
                type="date"
                value-format="YYYY-MM-DD"
                placeholder="请选择表单日期"
                style="width: 100%"
              >
              </el-date-picker>
              <span v-else>{{ parseTime(form.formDate, "{y}-{m}-{d}") }}</span>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="外协商名称" prop="supplierName">
              <el-input
                v-if="editStatus && form.isSubmit == 0"
                v-model="form.supplierName"
                readonly
                placeholder="请输入外协商名称"
              >
                <template #append>
                  <el-button icon="Search" @click="handleShowDialogSuppliers" />
                </template>
              </el-input>
              <span v-else>{{ form.supplierName }}</span>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="运费单价" prop="freightPrice">
              <el-input-number
                v-if="editStatus"
                v-model="form.freightPrice"
                :min="0"
                :precision="2"
                controls-position="right"
              />
              <span v-else>{{ form.freightPrice }}</span>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="运费总价" prop="freightAmount">
              <el-input-number
                v-if="editStatus"
                v-model="form.freightAmount"
                :min="0"
                :precision="2"
                controls-position="right"
              />
              <span v-else>{{ form.freightAmount }}</span>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="送货方式" prop="deliveryMethod">
              <el-select
                v-if="editStatus"
                v-model="form.deliveryMethod"
                placeholder="请选择"
                @change="handleChangeDeliveryMethod"
              >
                <el-option
                  v-for="dict in deliveryMethod"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                />
              </el-select>
              <span v-else>{{
                selectText(form.deliveryMethod, deliveryMethod)
              }}</span>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="带箱方式" prop="packagingMethod">
              <el-select
                v-if="editStatus"
                v-model="form.packagingMethod"
                placeholder="请选择"
                @change="handleChangePackagingMethod"
              >
                <el-option
                  v-for="dict in packagingMethod"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                />
              </el-select>
              <span v-else>{{
                selectText(form.packagingMethod, packagingMethod)
              }}</span>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="结算方式" prop="settlementType">
              <el-select
                v-if="editStatus"
                v-model="form.settlementType"
                placeholder="请选择"
              >
                <el-option
                  v-for="dict in settlementType"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                />
              </el-select>
              <span v-else>{{
                selectText(form.settlementType, settlementType)
              }}</span>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="备注" prop="remark">
              <el-input
                v-if="editStatus"
                v-model.trim="form.remark"
                placeholder="请输入备注"
              />
              <span v-else>{{ form.remark }}</span>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="总箱数" prop="remark">
              <span >{{ totalCarriersNum }}</span>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <!-- 渲染数据区 -->
      <div class="form-details-btns-container">
        <el-button
          v-if="editStatus"
          type="primary"
          icon="Plus"
          @click="handleShowDialogProducts"
          v-hasPermi="['business:outsource:add']"
        >
          添加外协产品明细
        </el-button>
      </div>
      <div class="el-table-container">
        <div class="el-table-inner-container">
          <el-table
            v-loading="loading"
            :data="form.details"
            size="small"
            border
            height="100%"
          >
            <el-table-column
              label="行号"
              type="index"
              align="center"
              width="48"
            />
            <el-table-column
              label="批次号"
              align="center"
              prop="lotCode"
              width="104"
            />
            <el-table-column
              label="产品描述"
              align="center"
              prop="productDescription"
              width="320"
            />
            <el-table-column label="产品数" align="center" width="160" prop="productNum">
              <template #default="scope">
                <el-input-number
                  v-if="editStatus"
                  :min="0"
                  v-model="scope.row.productNum"
                  placeholder="产品数"
                />
                <span v-else>{{ scope.row.productNum }}</span>
              </template>
            </el-table-column>
            <el-table-column
              label="箱数"
              align="center"
              prop="carrierNum"
              width="70"
            />
            <el-table-column
              :label="form.packagingMethod === '0' ? '箱号' : '原箱号'"
              align="center"
              prop="originalCarrier"
              width="320"
            />
            <el-table-column
              label="新箱号"
              align="center"
              prop="newCarrier"
              width="320"
            >
              <template #default="scope">
                <el-button link type="primary" icon="Refresh" v-if="!scope.row.editStatus && editStatus" @click="handleChangeCarrier(scope.row)">换箱</el-button>
                <el-select
                  v-if="editStatus && scope.row.editStatus"
                  v-model="scope.row.carrierIds"
                  multiple
                  filterable
                  remote
                  reserve-keyword
                  placeholder="请选择箱号"
                  :remote-method="
                    (arg) => remoteCarriers(arg, scope.row.newCarriers,scope.row)
                  "
                  :loading="loadingCarrier"
                  @change="(arg) => handleCarrierChange(arg, scope.row)"
                >
                  <el-option
                    v-for="item in scope.row.carriers"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  />
                </el-select>
                <span v-if="!editStatus">{{ scope.row.newCarrier }}</span>
                <!-- <el-input
                  v-if="editStatus"
                  v-model="scope.row.newCarrier"
                  readonly
                  placeholder="请选择新箱号"
                >
                  <template #append>
                    <el-button
                      icon="Search"
                      @click="handleShowDialogOutsourceCarriers(scope.row)"
                    />
                  </template>
                </el-input>
                <span v-else>{{ scope.row.newCarrier }}</span>-->
              </template>
            </el-table-column>
            <el-table-column
              label="外协工序"
              align="center"
              prop="processNames"
              width="320"
            >
              <template #default="scope">
                <el-input
                  v-if="editStatus"
                  v-model="scope.row.processNames"
                  readonly
                  placeholder="请选择工序"
                >
                  <template #append>
                    <el-button
                      icon="Search"
                      @click="handleShowDialogProcesses(scope.row)"
                    />
                  </template>
                </el-input>
                <span v-else>{{ scope.row.processNames }}</span>
              </template>
            </el-table-column>
            <el-table-column label="备注" align="center" prop="remark">
              <template #default="scope">
                <el-input
                  v-if="editStatus"
                  v-model="scope.row.remark"
                  placeholder="备注"
                />
                <span v-else>{{ scope.row.remark }}</span>
              </template>
            </el-table-column>
            <el-table-column
              v-if="editStatus"
              label="操作"
              align="center"
              class-name="small-padding fixed-width"
              width="64"
            >
              <template #default="scope">
                <el-button
                  circle
                  type="danger"
                  icon="Delete"
                  @click="handleDelete(scope.$index)"
                  v-hasPermi="['business:outsource:remove']"
                />
              </template>
            </el-table-column>
          </el-table>
        </div>
      </div>
    </div>
    <!-- 外协商选择 -->
    <dialog-suppliers
      ref="dialogSuppliersRef"
      :single-selected="handleSingleSelectedSupplier"
    />
    <!-- 产品选择 -->
    <dialog-products
      ref="dialogProductsRef"
      :supplier-id="form.supplierId"
      :multiple-selected="handleMultipleSelectedProducts"
    />
    <!-- 工序选择 -->
    <dialog-processes
      ref="dialogProcessesRef"
      :multiple-selected="handleMultipleSelectedProcesses"
    />
    <!-- 新箱号选择 -->
    <dialog-carrier
      ref="dialogCarrierRef"
      :multiple-selected="handleMultipleSelectedOutsourceCarriers"
    />
  </el-drawer>
</template>
<script setup>
import {
  getOrder,
  saveOrder,
  carrierForOutsource,
  submitOrder,
  exportOutsource,
  submitDetails
} from "@/api/business/outsourcedOrder";
import dialogCarrier from "./DialogCarrier";
import dialogSuppliers from "./DialogSuppliers";
import dialogProducts from "./DialogProducts";
import dialogProcesses from "./DialogProcesses";
const { proxy } = getCurrentInstance();
/** 父组件传参 */
const props = defineProps({
  getList: {
    type: Function,
    default: () => {},
  },
  deliveryMethod: {
    type: Array,
    default: [],
  },
  settlementType: {
    type: Array,
    default: [],
  },
  packagingMethod: {
    type: Array,
    default: [],
  },
});
const { getList, deliveryMethod, packagingMethod, settlementType } =
  toRefs(props);
/** 字典数组区 */
/** 表单抽屉 页变量 */

const loading = ref(false);
const multiple = ref(true);
const visible = ref(false);
const editStatus = ref(true);
const detailInfo = ref({});
const totalCarriersNum = ref(0)
const loadingCarrier = ref(false);
const carriers = ref([]);
const webHost = import.meta.env.VITE_APP_BASE_API;
const form = ref({});
// const formatDetails = ref([])
const currentDetail = ref({});
const rules = {
  supplierName: [
    { required: true, message: "外协商名称不能为空", trigger: "change" },
  ],
};

/***********************  方法区  ****************************/
/** 导出按钮操作 */
function handleExport() {
  exportOutsource({ id: form.value.id });
}

/** 打开抽屉 */
function open(row) {
  reset();
  totalCarriersNum.value = 0
  visible.value = true;
  if (row) {
    console.log(row)
    detailInfo.value = row
    form.value.id = row.id;
    getForm();
  } else {
    editStatus.value = true;
  }
}

/** 查询表单信息  */
function getForm() {
  loading.value = true;
  getOrder(form.value.id).then((response) => {
    form.value = response.data
    console.log(form.value.details)
    form.value.details.forEach(item =>{
      item.editStatus = false
     if(!form.value.id) {
        item.carrierNum = item.originalCarrier.split(",").length
      }else {
        if(item.newCarrier !=null) {
        item.carrierNum = item.newCarrier.split(",").length
      }else {
        item.carrierNum = item.originalCarrier.split(",").length
      }
      }
      totalCarriersNum.value += item.carrierNum
    })

    editStatus.value = form.value.isSubmit == 1;
    if(!detailInfo.value.flag) {
      editStatus.value = false
      console.log(editStatus.value)
    }
    console.log(editStatus.value)
    loading.value = false;
  });
}
//改变带箱方式
function handleChangePackagingMethod() {
  totalCarriersNum.value = 0
  if(!editStatus){
  if(form.value.packagingMethod == 1 && form.value.details.length>0) {
    form.value.details.forEach(item =>{item.newCarriers = [];item.carrierIds = [];item.carriers = carriers.value})
  }if(form.value.packagingMethod == 0 &&form.value.details.length>0) {
    form.value.details.forEach(item =>{
      item.carriers = carriers.value;
      item.newCarriers = [];
      item.carrierIds = [];
      item.newCarriers.push(...item.originalCarrierList.map(v => ({ id: v.carrierId, code: v.carrierCode })));
      item.carriers.push( ...item.originalCarrierList.map((v) => ({ value: v.carrierId, label: v.carrierCode })));
      item.carrierIds = item.originalCarrierList.map(info => { return info.carrierId }) 
    })
  }
}else{
  form.value.details.forEach(item =>{item.newCarriers = [];item.carrierIds = [];item.carriers = carriers.value})
}
  console.log(form.value.details)
  for(let i = 0;i<form.value.details.length;i++) {
    if(form.value.packagingMethod == 1) {
        form.value.details[i].carrierNum =form.value.details[i].newCarriers? form.value.details[i].newCarriers.length:0
      }else {
        form.value.details[i].carrierNum = form.value.details[i].newCarriers && form.value.details[i].newCarriers.length>0? form.value.details[i].newCarriers.length:form.value.details[i].originalCarrier.split(",").length
      }
      console.log(form.value.details)
      totalCarriersNum.value += form.value.details[i].carrierNum
  }
}
//改变送货方式
function handleChangeDeliveryMethod() {
  if(form.value.deliveryMethod == 1) {
    form.value.freightAmount= form.value.freightPrice * totalCarriersNum.value
  }else {
    form.value.freightAmount = 0.0
  }
 
}

function selectText(value, data) {
  if (value) {
    return data.filter((item) => item.value == value)[0].label;
  }
}

/** 取消按钮 */
function cancel() {
  visible.value = false;
  reset();
}

const handleDelete = (index) => {
  totalCarriersNum.value -=form.value.details[index].carrierNum
  if(form.value.deliveryMethod == 1) {
    form.value.freightAmount= form.value.freightPrice * totalCarriersNum.value
  }else {
    form.value.freightAmount = 0.0
  }
  form.value.details.splice(index, 1);
};

/** 表单重置 */
function reset() {
  form.value = {
    id: null,
    tenantId: null,
    formCode: null,
    formDate: proxy.parseTime(new Date(), "{y}-{m}-{d}"),
    supplierId: "0",
    supplierName: "",
    deliveryMethod: "0",
    freightPrice: 0.0,
    freightAmount: 0.0,
    packagingMethod: "0",
    remark: null,
    details: [],
    isSubmit:0
  };
  proxy.resetForm("formRef");
}
/** 保存 */
function saveFrom() {
  if (!form.value.details || form.value.details.length == 0) {
    proxy.$modal.msgError("请添加产品明细");
    return;
  }

  proxy.$refs["formRef"].validate((valid) => {
    for (const item of form.value.details) {
      if (!item.processNames) {
        proxy.$modal.msgError("请选择" + item.lotCode + "批次的工序");
        return;
      }
    }

    if (form.value.packagingMethod == 1) {
      console.log("form.value.details", form.value.details);
      for (const item of form.value.details) {
        if (item.newCarriers.length == 0) {
          proxy.$modal.msgError("请选择" + item.lotCode + "批次的新箱号");
          return;
        }
      }
    }
    if (valid) {
      saveOrder(form.value).then((response) => {
        if (response.code == 200) {
          proxy.$modal.msgSuccess("保存成功");
          visible.value = false;
          getList.value();
        }
      });
    }
  });
}

/** 保存并提交 */
function submitFrom() {
  console.log("from", form.value);
  proxy.$modal
    .confirm("是否确定提交，提交后不可修改，删除")
    .then(function () {
      return;
    })
    .then(() => {
      if (!form.value.details || form.value.details.length == 0) {
        proxy.$modal.msgError("请添加产品明细");
        return;
      }

      proxy.$refs["formRef"].validate((valid) => {
        for (const item of form.value.details) {
          if (!item.processNames) {
            proxy.$modal.msgError("请选择" + item.lotCode + "批次的工序");
            return;
          }
        }
        if (form.value.packagingMethod == 1) {
          console.log("form.value.details", form.value.details);
          for (const item of form.value.details) {
            if (item.newCarriers.length == 0) {
              proxy.$modal.msgError("请选择" + item.lotCode + "批次的新箱号");
              return;
            }
          }
        }
        if (valid) {
          console.log(form.value)
          submitOrder(form.value).then((response) => {
            proxy.$modal.msgSuccess("提交成功");
            visible.value = false;
            getList.value();
          });
        }
      });
    })
    .catch(() => {});
}
//5.29保存
function handleSubmit() {
  if(form.value.isSubmit==0){
  proxy.$modal
    .confirm("是否确定保存，保存后外协商不可编辑！")
    .then(function () {
      return;
    })
    .then(() => {
      if (!form.value.details || form.value.details.length == 0) {
        proxy.$modal.msgError("请添加产品明细");
        return;
      }

      proxy.$refs["formRef"].validate((valid) => {
        for (const item of form.value.details) {
          if (!item.processNames) {
            proxy.$modal.msgError("请选择" + item.lotCode + "批次的工序");
            return;
          }
        }
        if (form.value.packagingMethod == 1) {
          console.log("form.value.details", form.value.details);
          for (const item of form.value.details) {
            if (item.newCarriers.length == 0) {
              proxy.$modal.msgError("请选择" + item.lotCode + "批次的新箱号");
              return;
            }
          }
        }
        if (valid) {
          console.log(form.value)
          submitDetails(form.value).then((response) => {
            proxy.$modal.msgSuccess("提交成功");
            visible.value = false;
            getList.value();
          });
        }
      });
    })
  }else{
    if (!form.value.details || form.value.details.length == 0) {
        proxy.$modal.msgError("请添加产品明细");
        return;
      }

      proxy.$refs["formRef"].validate((valid) => {
        for (const item of form.value.details) {
          if (!item.processNames) {
            proxy.$modal.msgError("请选择" + item.lotCode + "批次的工序");
            return;
          }
        }
        if (form.value.packagingMethod == 1) {
          console.log("form.value.details", form.value.details);
          for (const item of form.value.details) {
            if (item.newCarriers.length == 0) {
              proxy.$modal.msgError("请选择" + item.lotCode + "批次的新箱号");
              return;
            }
          }
        }
        if (valid) {
          console.log(form.value)
          submitDetails(form.value).then((response) => {
            proxy.$modal.msgSuccess("提交成功");
            visible.value = false;
            getList.value();
          });
        }
      });
  }
}

/***************************** 外协商对话框相关 *****************************/
// 打开外协商选择对话框
const handleShowDialogSuppliers = () => {
  proxy.$refs.dialogSuppliersRef.open();
};
// 外协商选择带回
const handleSingleSelectedSupplier = (data) => {
  console.log(data);
  form.value.supplierId = data.id;
  form.value.lossLimit = data.lossLimit;
  form.value.supplierName = data.name;
  form.value.deliveryMethod = data.deliveryMethod;
  form.value.freightPrice = data.freightPrice
  form.value.settlementType = data.settlementType;
  if(form.value.deliveryMethod == 1) {
    form.value.freightAmount= form.value.freightPrice * totalCarriersNum.value
  }else {
    form.value.freightAmount = 0.0
  }
};
/***************************** 产品对话框相关 *****************************/
// 打开产品选择对话框
const handleShowDialogProducts = () => {
  const dayworkIds = form.value.details.map((item) => item.dayworkId);
  // console.log(dayworkIds);
  proxy.$refs.dialogProductsRef.open(dayworkIds);
};
// 产品选择带回
const handleMultipleSelectedProducts = (selection) => {
  selection.forEach((item) => {
    const newDetail = {
      lotId: item.lotId,
      lotCode: item.lotCode,
      dayworkId: item.id,
      productId: item.productId,
      productDescription: item.productDescription,
      technologicalProcessId: item.technologicalProcessId,
      technologyVersion: item.technologyVersion,
      originalCarrier: item.originalCarrier,
      originalCarrierCount: item.originalCarrier.split(",").length,
      carrierNum:item.originalCarrier.split(",").length,
      originalCarrierList:item.originalCarrierList,
      productNum: item.productNum,
      productCode: item.productCode,
      newCarrier: "",
      carriers:[],
      newCarrierCount: 0,
      newCarriers: [],
      processNames: "",
      remark: item.remark,
      processes: [],
    };
    form.value.details.push(newDetail);
    console.log(newDetail)
    totalCarriersNum.value += newDetail.originalCarrierCount
    if(form.value.deliveryMethod == 1) {
    form.value.freightAmount= form.value.freightPrice * totalCarriersNum.value
    }else {
    form.value.freightAmount = 0.0
  }
    // console.log("form.value.details", form.value.details);
  });
};

/***************************** 外协箱子对话框相关 *****************************/
// 打开外协箱子选择对话框
const handleShowDialogOutsourceCarriers = (row) => {};

function remoteCarriers(code, newCarrier,row) {
  loadingCarrier.value = true;
  // console.log(row, carriers.value)
  console.log("row", row);
  // if (true) {
  //   carriers.value = [{ value: '"1747500987856662535"', label: '000319' }]
  //   return 
  // }
  let categoryId;
  if (form.value.packagingMethod == 1) {
    categoryId = "1783783697558847489";
  } else {
    categoryId = "2";
  }
  if (code == "") {
    return;
  }
  carrierForOutsource({
    categoryId: categoryId,
    code: code,
    dayworkId:row.dayworkId
  }).then((res) => {
    if (res.code === 200) {
      carriers.value = res.rows.map((v) => ({ value: v.id, label: v.code }));
      row.carriers = res.rows.map((v) => ({ value: v.id, label: v.code }));
      if (Array.isArray(newCarrier)) {
        // 安全地更新 carriers
        row.carriers.push(
          ...newCarrier
            .filter((v) => !row.carriers.map((e) => e.value).includes(v.id))
            .map((v) => ({ value: v.id, label: v.code }))
        );
      }
    } else {
      row.carriers = [];
      row.carriers.push(...newCarrier);
    }
    loadingCarrier.value = false;
  });
}
//换箱
function handleChangeCarrier(row) {
  console.log(row)
  if(editStatus.value && !form.value.id){
  if(form.value.packagingMethod == 0) {
    row.newCarriers.push(...row.originalCarrierList.map(v => ({ id: v.carrierId, code: v.carrierCode })))
    row.carriers.push( ...row.originalCarrierList.map((v) => ({ value: v.carrierId, label: v.carrierCode })))
    row.carrierIds = row.originalCarrierList.map(info => { return info.carrierId })
  }else{
    row.newCarriers = null
  }
}
if(editStatus.value && form.value.id){
  row.carriers = []
    row.newCarriers.map(v => ({ id: v.value, code: v.label }))
    console.log(row.newCarriers)
    row.carriers = row.newCarriers.map((v) => ({ value: v.id, label: v.code }))
    row.carrierIds = row.newCarriers.map(info => { return info.id })
    console.log(row)
}
  row.editStatus = true;
}
function handleCarrierChange(arg, item) {
  totalCarriersNum.value = 0
  item.newCarriers = item.carriers
    .filter((v) => arg.includes(v.value))
    .map((v) => ({ id: v.value, code: v.label }));
    console.log(item.newCarriers)
    item.carrierNum = item.newCarriers.length

    for(let i = 0;i<form.value.details.length;i++) {
    if(form.value.packagingMethod == 1) {
        form.value.details[i].carrierNum =form.value.details[i].newCarriers? form.value.details[i].newCarriers.length:0
      }else {
        //原厂蓝箱
        form.value.details[i].carrierNum =form.value.details[i].newCarriers? form.value.details[i].newCarriers.length:form.value.details[i].originalCarrier.split(",").length
      }
      console.log(form.value.details)
      totalCarriersNum.value += form.value.details[i].carrierNum
  }
       if(form.value.deliveryMethod == 1) {
        form.value.freightAmount= form.value.freightPrice * totalCarriersNum.value
        }else {
          form.value.freightAmount = 0.0
        }
}

/** 使用新方式 */
// const handleShowDialogOutsourceCarriers = (row) => {
//   // 确保 form.details 存在且不是 undefined
//   let allNewCarriers;
//   if (form.value && form.value.details && Array.isArray(form.value.details)) {
//     allNewCarriers = form.value.details
//       .flatMap((detail) =>
//         detail.newCarriers ? detail.newCarriers.filter((item) => item) : []
//       )
//       .filter(Boolean);

//     // 现在 allNewCarriers 包含了所有非空的 newCarriers 数组的元素
//   }
//   // form.value.details.newCarriers
//   // const allNewCarriers = form.details.flatMap((detail) => detail.newCarriers);
//   console.log("allNewCarriers", allNewCarriers);
//   proxy.$refs.dialogCarrierRef.open(row.lotId, from.value.deliveryMethod);
// };

// 箱子选择带回
const handleMultipleSelectedOutsourceCarriers = (selection, lotId) => {
  const carrierNames = selection.map((item) => item.code);
  let carrierNamesString = carrierNames.join(",");
  form.value.details.map((item) => {
    if (item.lotId == lotId) {
      item.newCarrier = carrierNamesString;
      item.newCarrierCount = selection.length;
      item.newCarriers = selection;
    }
  });
};

/***************************** 外协工序对话框相关 *****************************/
// 打开外协工序选择对话框
const handleShowDialogProcesses = (row) => {
  currentDetail.value = row;
  proxy.$refs.dialogProcessesRef.open(row);
};

// 工序选择带回
const handleMultipleSelectedProcesses = (selection) => {
  currentDetail.value.processes = []
  const processNames = selection.map((item) => item.processAlias);
  // 使用join方法将数组转换为以逗号分隔的字符串
  let commaSeparatedString = processNames.join(",");
  currentDetail.value.processes = [];
  currentDetail.value.processNames = commaSeparatedString;
  selection.forEach((item) => {
    const newProcess = {
      processId: item.processId,
      processCode: item.processCode,
      processAlias: item.processAlias,
      processStepNumber: item.processStepNumber,
      technologicalProcessDetailId: item.id,
    };
    currentDetail.value.processes.push(newProcess);
  });
};

/** 暴露给父组件的方法 */
defineExpose({
  open,
});
</script>
