gaoluyang
2026-08-11 4807d8b687853e75a815b3aa9aecbc2554063aa4
src/views/wls/returnsales/modules/line-form.vue
@@ -1,4 +1,5 @@
<script lang="ts" setup>
import type { ErpSaleOrderApi } from '#/api/erp/sale/order';
import type { MesWmReturnSalesLineApi } from '#/api/mes/wm/returnsales/line';
import { computed, ref } from 'vue';
@@ -8,6 +9,7 @@
import { message } from 'ant-design-vue';
import { useVbenForm } from '#/adapter/form';
import { getBatchPage } from '#/api/mes/wm/batch';
import {
  createReturnSalesLine,
  getReturnSalesLine,
@@ -20,6 +22,7 @@
const emit = defineEmits(['success']);
const formData = ref<MesWmReturnSalesLineApi.ReturnSalesLine>();
const returnId = ref<number>(); // 所属退货单编号
const maxQuantity = ref<number>(); // 当前选中物料可退货的最大数量
const getTitle = computed(() => {
  return formData.value?.id
@@ -73,12 +76,38 @@
    const data = modalApi.getData<{
      clientId?: number;
      id?: number;
      items?: ErpSaleOrderApi.SaleOrderItem[];
      returnId: number;
      salesOrderCode?: string;
    }>();
    returnId.value = data.returnId;
    maxQuantity.value = undefined;
    formApi.setState({
      schema: useLineFormSchema(data.clientId, data.salesOrderCode),
      schema: useLineFormSchema(
        data.clientId,
        data.salesOrderCode,
        data.items || [],
        async (item) => {
          maxQuantity.value = item?.count;
          // 重置批次
          await formApi.setFieldValue('batchId', undefined);
          if (item?.batchCode) {
            try {
              const batchPage = await getBatchPage({
                code: item.batchCode,
                pageNo: 1,
                pageSize: 1,
              });
              const batchList = batchPage?.list;
              if (batchList?.length) {
                await formApi.setFieldValue('batchId', batchList[0].id);
              }
            } catch {
              // 查询失败时忽略
            }
          }
        },
      ),
    });
    if (!data.id) {
      return;
@@ -98,5 +127,11 @@
<template>
  <Modal :title="getTitle" class="w-3/5">
    <Form class="mx-4" />
    <div
      v-if="maxQuantity !== undefined"
      class="mx-4 mt-2 text-sm text-blue-600"
    >
      当前物料可退货数量:<span class="font-bold">{{ maxQuantity }}</span>
    </div>
  </Modal>
</template>