2 天以前 1c1af9b0fc10778ae5ac13cc68fd4030affbcfe1
src/views/wls/returnvendor/modules/form.vue
@@ -5,8 +5,9 @@
import { computed, ref } from 'vue';
import { confirm, useVbenModal } from '../../../../packages/effects/common-ui/src';
import { MesWmReturnVendorStatusEnum } from '../../../../packages/constants/src';
import { confirm, useVbenModal } from '@vben/common-ui';
import { MesWmReturnVendorStatusEnum } from '@vben/constants';
import { formatDate } from '@vben/utils';
import { Button, Divider, message, Popconfirm } from 'ant-design-vue';
@@ -17,7 +18,6 @@
  finishReturnVendor,
  getReturnVendor,
  stockReturnVendor,
  submitReturnVendor,
  updateReturnVendor,
} from '#/api/mes/wm/returnvendor';
import { $t } from '#/locales';
@@ -35,12 +35,6 @@
);
const isStock = computed(() => formType.value === 'stock'); // 是否为拣货模式
const isFinish = computed(() => formType.value === 'finish'); // 是否为完成退货模式
const canSubmit = computed(
  () =>
    // 是否可提交
    formType.value === 'update' &&
    formData.value?.status === MesWmReturnVendorStatusEnum.PREPARE,
);
const getTitle = computed(() => {
  if (formType.value === 'detail') {
    return $t('ui.actionTitle.view', ['供应商退货单']);
@@ -70,28 +64,15 @@
  wrapperClass: 'grid-cols-3',
});
/** 提交退货单:表单有修改时先保存,再调用提交接口 */
async function handleSubmit() {
  const { valid } = await formApi.validate();
  if (!valid || !formData.value?.id) {
    return;
function normalizeReturnDate(value: unknown): string | undefined {
  if (Array.isArray(value) && value.length >= 3) {
    const [year, month, day] = value;
    return `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')} 00:00:00`;
  }
  modalApi.lock();
  try {
    const current = JSON.stringify(await formApi.getValues());
    if (current !== originalSnapshot.value) {
      const data =
        (await formApi.getValues()) as MesWmReturnVendorApi.ReturnVendor;
      await updateReturnVendor({ ...formData.value, ...data });
      originalSnapshot.value = current;
    }
    await submitReturnVendor(formData.value.id);
    message.success('提交成功');
    await modalApi.close();
    emit('success');
  } finally {
    modalApi.unlock();
  if (typeof value === 'number' || typeof value === 'string') {
    return formatDate(value, 'YYYY-MM-DD HH:mm:ss');
  }
  return undefined;
}
/** 执行拣货:拣货数量与退货数量不一致时二次确认 */
@@ -187,7 +168,10 @@
      try {
        formData.value = await getReturnVendor(data.id);
        // 设置到 values
        await formApi.setValues(formData.value);
        await formApi.setValues({
          ...formData.value,
          returnDate: normalizeReturnDate(formData.value.returnDate),
        });
      } finally {
        modalApi.unlock();
      }
@@ -213,13 +197,6 @@
    </template>
    <template #prepend-footer>
      <div class="flex flex-auto items-center gap-2">
        <Popconfirm
          v-if="canSubmit"
          title="确认提交该退货单?【提交后将不能修改】"
          @confirm="handleSubmit"
        >
          <Button type="primary">提交</Button>
        </Popconfirm>
        <Button v-if="isStock" type="primary" @click="handleStock">
          执行拣货
        </Button>