From 16255a805681a7a7bf813bcfbde752fbfb4b8256 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 10 八月 2026 09:16:28 +0800
Subject: [PATCH] chore(config): 更新生产环境API服务器配置

---
 src/views/erp/purchase/order/modules/form.vue |   73 +++++++++++++++++++++++-------------
 1 files changed, 47 insertions(+), 26 deletions(-)

diff --git a/src/views/erp/purchase/order/modules/form.vue b/src/views/erp/purchase/order/modules/form.vue
index 58a42fe..dec4d8f 100644
--- a/src/views/erp/purchase/order/modules/form.vue
+++ b/src/views/erp/purchase/order/modules/form.vue
@@ -5,13 +5,14 @@
 
 import { computed, ref } from 'vue';
 
-import { useVbenModal } from '../../../../../packages/effects/common-ui/src';
+import { useVbenModal } from '@vben/common-ui';
 
-import { message } from 'ant-design-vue';
+import { message, Button } from 'ant-design-vue';
 
 import { useVbenForm } from '#/adapter/form';
 import { getAccountSimpleList } from '#/api/erp/finance/account';
 import {
+  confirmReceipt,
   createPurchaseOrder,
   getPurchaseOrder,
   updatePurchaseOrder,
@@ -23,7 +24,7 @@
 
 const emit = defineEmits(['success']);
 const formData = ref<ErpPurchaseOrderApi.PurchaseOrder>();
-const formType = ref<FormType>('create'); // 琛ㄥ崟绫诲瀷锛�'create' | 'edit' | 'detail'
+const formType = ref<FormType>('create');
 const itemFormRef = ref<InstanceType<typeof PurchaseOrderItemForm>>();
 
 const getTitle = computed(() => {
@@ -48,7 +49,6 @@
   schema: useFormSchema(formType.value),
   showDefaultActions: false,
   handleValuesChange: (values, changedFields) => {
-    // 鐩殑锛氬悓姝ュ埌 item-form 缁勪欢锛岃Е鍙戞暣浣撶殑浠锋牸璁$畻
     if (formData.value && changedFields.includes('discountPercent')) {
       formData.value.discountPercent = values.discountPercent;
     }
@@ -78,6 +78,35 @@
   });
 }
 
+/** 鎻愪氦璁㈠崟 */
+async function submitOrder() {
+  const data = (await formApi.getValues()) as ErpPurchaseOrderApi.PurchaseOrder;
+  data.items = formData.value?.items?.map((item) => ({
+    ...item,
+    id: undefined,
+  }));
+  await (formType.value === 'create'
+    ? createPurchaseOrder(data)
+    : updatePurchaseOrder(data));
+  await modalApi.close();
+  emit('success');
+  message.success($t('ui.actionMessage.operationSuccess'));
+}
+
+/** 纭鏀惰揣 */
+async function handleConfirmReceipt() {
+  if (!formData.value?.id) return;
+  const hideLoading = message.loading({ content: '纭鏀惰揣涓�...', duration: 0 });
+  try {
+    await confirmReceipt(formData.value.id);
+    message.success('纭鏀惰揣鎴愬姛锛屽凡鐢熸垚鍒拌揣閫氱煡鍗�');
+    await modalApi.close();
+    emit('success');
+  } finally {
+    hideLoading();
+  }
+}
+
 /** 鍒涘缓鎴栨洿鏂伴噰璐鍗� */
 const [Modal, modalApi] = useVbenModal({
   async onConfirm() {
@@ -96,26 +125,8 @@
     }
 
     modalApi.lock();
-    // 鎻愪氦琛ㄥ崟
-    const data =
-      (await formApi.getValues()) as ErpPurchaseOrderApi.PurchaseOrder;
-    data.items = formData.value?.items?.map((item) => ({
-      ...item,
-      // 瑙e喅鏂板閲囪喘璁㈠崟鎶ラ敊
-      id: undefined,
-    }));
-    // 灏嗘枃浠舵暟缁勮浆鎹负瀛楃涓�
-    if (data.fileUrl && Array.isArray(data.fileUrl)) {
-      data.fileUrl = data.fileUrl.length > 0 ? data.fileUrl[0] : '';
-    }
     try {
-      await (formType.value === 'create'
-        ? createPurchaseOrder(data)
-        : updatePurchaseOrder(data));
-      // 鍏抽棴骞舵彁绀�
-      await modalApi.close();
-      emit('success');
-      message.success($t('ui.actionMessage.operationSuccess'));
+      await submitOrder();
     } finally {
       modalApi.unlock();
     }
@@ -125,13 +136,11 @@
       formData.value = undefined;
       return;
     }
-    // 鍔犺浇鏁版嵁
     const data = modalApi.getData<{ formType: FormType; id?: number }>();
     formType.value = data.formType;
     formApi.setDisabled(formType.value === 'detail');
     formApi.updateSchema(useFormSchema(formType.value));
     if (!data || !data.id) {
-      // 鏂板鏃讹紝榛樿閫変腑璐︽埛
       const accountList = await getAccountSimpleList();
       const defaultAccount = accountList.find((item) => item.defaultStatus);
       if (defaultAccount) {
@@ -142,8 +151,17 @@
     modalApi.lock();
     try {
       formData.value = await getPurchaseOrder(data.id);
-      // 璁剧疆鍒� values
       await formApi.setValues(formData.value);
+      if (formData.value?.attachmentList?.length) {
+        const blobIds = formData.value.attachmentList.map((item) => ({
+          uid: String(item.id),
+          name: item.name || '',
+          url: item.url || '',
+          status: 'done',
+          id: item.id,
+        }));
+        await formApi.setFieldValue('blobIds', blobIds);
+      }
     } finally {
       modalApi.unlock();
     }
@@ -170,5 +188,8 @@
         />
       </template>
     </Form>
+    <template v-if="formType === 'detail' && formData?.status === 20 && formData?.inStatus !== 2" #prepend-footer>
+      <Button type="primary" @click="handleConfirmReceipt">纭鏀惰揣</Button>
+    </template>
   </Modal>
 </template>

--
Gitblit v1.9.3