云
7 小时以前 fb4db4ae9b6a7f113ba049f6789e6916c0dcc276
src/views/mes/pro/batch/modules/form.vue
@@ -37,6 +37,18 @@
  const formType = ref<FormType>("create");
  const formData = ref<MesProBatchApi.Batch>();
  let palletOptions: PalletOption[] = [];
  async function handlePalletChange(ids: number[] = []) {
    const selected = palletOptions.filter(option => ids.includes(option.value));
    const source = formData.value?.itemId ? formData.value : selected[0];
    if (selected.some(option => !option.itemId || (source?.itemId && option.itemId !== source.itemId))) {
      message.warning('生产批次只能绑定相同品种的托盘');
      await formApi.setFieldValue('palletIds', selected.filter(option => option.itemId === source?.itemId).map(option => option.value));
    }
    await formApi.setFieldValue('itemId', source?.itemId);
    await formApi.setFieldValue('itemName', source?.itemName);
    await formApi.setFieldValue('itemCode', source?.itemCode);
  }
  const isEditable = computed(() =>
    ["create", "update", "fill"].includes(formType.value)
@@ -208,15 +220,16 @@
      const data = modalApi.getData<{ formType: FormType; id?: number }>();
      formType.value = data.formType;
      // 新增/补录/编辑态加载未绑定批次的托盘,供「绑定托盘」多选下拉使用
      let palletOptions: PalletOption[] = [];
      palletOptions = [];
      if (formType.value !== "detail") {
        const pallets = await getUnboundPalletList();
        palletOptions = pallets.map((pallet) => ({
          label: `${pallet.tempCode ?? `托盘${pallet.id}`}(已装 ${pallet.bagCount ?? 0} 袋)`,
          label: `${pallet.tempCode ?? `托盘${pallet.id}`} · ${pallet.itemName || "待完善品种"}(已装 ${pallet.bagCount ?? 0} 袋)`,
          value: pallet.id as number,
          itemId: pallet.itemId, itemName: pallet.itemName, itemCode: pallet.itemCode,
        }));
      }
      formApi.setState({ schema: useFormSchema(formType.value, palletOptions) });
      formApi.setState({ schema: useFormSchema(formType.value, palletOptions, handlePalletChange) });
      if (formType.value !== "detail") {
        // 清空上次打开时勾选的托盘,避免残留值误触发「批次进入生产中」
        await formApi.setFieldValue("palletIds", undefined);