From 3f7a1f34aff16f12de093a9579201e518b0c309b Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 24 七月 2026 15:16:04 +0800
Subject: [PATCH] refactor(erp): 将文件上传字段从 fileUrl 改为 blobIds 并支持多附件上传

---
 src/views/erp/purchase/in/data.ts              |    5 +
 src/api/erp/finance/receipt/index.ts           |    2 
 src/views/erp/finance/payment/data.ts          |    5 +
 src/views/erp/sale/return/modules/form.vue     |   13 ++
 src/views/erp/purchase/order/data.ts           |    5 +
 src/views/erp/purchase/request/data.ts         |    6 +
 src/views/erp/sale/return/data.ts              |    5 +
 src/api/erp/sale/return/index.ts               |    2 
 src/api/erp/sale/out/index.ts                  |    2 
 src/api/erp/purchase/request/index.ts          |    2 
 src/api/erp/finance/payment/index.ts           |    2 
 src/api/erp/purchase/order/index.ts            |    2 
 src/api/erp/stock/out/index.ts                 |    2 
 src/views/erp/stock/move/data.ts               |    5 +
 src/views/erp/purchase/in/modules/form.vue     |   13 ++
 src/api/erp/stock/in/index.ts                  |    2 
 src/views/erp/finance/payment/modules/form.vue |   15 ++-
 src/views/erp/purchase/return/data.ts          |    5 +
 src/views/erp/purchase/return/modules/form.vue |   13 ++
 src/views/erp/sale/out/modules/form.vue        |   13 ++
 src/views/erp/finance/receipt/data.ts          |    5 +
 src/views/erp/sale/order/data.ts               |    5 +
 src/api/erp/stock/move/index.ts                |    2 
 src/views/erp/stock/check/data.ts              |    5 +
 src/views/erp/stock/out/data.ts                |    5 +
 src/api/erp/stock/check/index.ts               |    2 
 src/api/erp/sale/order/index.ts                |    2 
 src/views/erp/finance/receipt/modules/form.vue |   15 ++-
 src/views/erp/sale/out/data.ts                 |    5 +
 src/views/erp/purchase/order/modules/form.vue  |   13 ++
 src/views/erp/stock/in/data.ts                 |    5 +
 31 files changed, 135 insertions(+), 48 deletions(-)

diff --git a/src/api/erp/finance/payment/index.ts b/src/api/erp/finance/payment/index.ts
index 004713c..7f8586d 100644
--- a/src/api/erp/finance/payment/index.ts
+++ b/src/api/erp/finance/payment/index.ts
@@ -15,7 +15,7 @@
     paymentPrice: number; // 瀹為檯浠樻閲戦
     status: number; // 鐘舵��
     remark: string; // 澶囨敞
-    fileUrl?: string; // 闄勪欢
+    attachmentList?: { id: number; name?: string; url?: string }[]; // 闄勪欢鍒楄〃
     accountId?: number; // 浠樻璐︽埛
     accountName?: string; // 璐︽埛鍚嶇О
     financeUserId?: number; // 璐㈠姟浜哄憳
diff --git a/src/api/erp/finance/receipt/index.ts b/src/api/erp/finance/receipt/index.ts
index f871035..b334a49 100644
--- a/src/api/erp/finance/receipt/index.ts
+++ b/src/api/erp/finance/receipt/index.ts
@@ -28,7 +28,7 @@
     receiptPrice: number; // 瀹為檯鏀舵閲戦
     status: number; // 鐘舵��
     remark: string; // 澶囨敞
-    fileUrl?: string; // 闄勪欢
+    attachmentList?: { id: number; name?: string; url?: string }[]; // 闄勪欢鍒楄〃
     accountId?: number; // 鏀舵璐︽埛
     accountName?: string; // 璐︽埛鍚嶇О
     financeUserId?: number; // 璐㈠姟浜哄憳
diff --git a/src/api/erp/purchase/order/index.ts b/src/api/erp/purchase/order/index.ts
index 000cdf2..5ea3dff 100644
--- a/src/api/erp/purchase/order/index.ts
+++ b/src/api/erp/purchase/order/index.ts
@@ -19,7 +19,7 @@
     accountId?: number; // 缁撶畻璐︽埛缂栧彿
     status?: number; // 鐘舵��
     remark?: string; // 澶囨敞
-    fileUrl?: string; // 闄勪欢鍦板潃
+    attachmentList?: { id: number; name?: string; url?: string }[]; // 闄勪欢鍒楄〃
     inCount?: number; // 閲囪喘鍏ュ簱鏁伴噺
     count?: number; // 鏁伴噺
     returnCount?: number; // 閲囪喘閫�璐ф暟閲�
diff --git a/src/api/erp/purchase/request/index.ts b/src/api/erp/purchase/request/index.ts
index 4d5a60d..46796c5 100644
--- a/src/api/erp/purchase/request/index.ts
+++ b/src/api/erp/purchase/request/index.ts
@@ -17,7 +17,7 @@
     supplierId?: number; // 渚涘簲鍟嗙紪鍙�
     supplierName?: string; // 渚涘簲鍟嗗悕绉�
     discountPercent?: number; // 浼樻儬鐜�
-    fileUrl?: string; // 闄勪欢鍦板潃
+    attachmentList?: { id: number; name?: string; url?: string }[]; // 闄勪欢鍒楄〃
     remark?: string; // 澶囨敞
     totalCount?: number; // 鎬绘暟閲�
     totalPrice?: number; // 鎬婚噾棰�
diff --git a/src/api/erp/sale/order/index.ts b/src/api/erp/sale/order/index.ts
index 5fb0764..7e42f11 100644
--- a/src/api/erp/sale/order/index.ts
+++ b/src/api/erp/sale/order/index.ts
@@ -17,7 +17,7 @@
     remark: string; // 澶囨敞
     outCount: number; // 閿�鍞嚭搴撴暟閲�
     outStatus?: number; // 鍑哄簱鐘舵�侊細0-鏈嚭搴擄紝1-閮ㄥ垎鍑哄簱锛�2-鍏ㄩ儴鍑哄簱
-    fileUrl?: string; // 闄勪欢鍦板潃
+    attachmentList?: { id: number; name?: string; url?: string }[]; // 闄勪欢鍒楄〃
     inCount?: number; // 閲囪喘鍏ュ簱鏁伴噺
     returnCount: number; // 閿�鍞��璐ф暟閲�
     totalProductPrice?: number; // 浜у搧閲戦锛屽崟浣嶏細鍏�
diff --git a/src/api/erp/sale/out/index.ts b/src/api/erp/sale/out/index.ts
index 85f5a66..8de729a 100644
--- a/src/api/erp/sale/out/index.ts
+++ b/src/api/erp/sale/out/index.ts
@@ -21,7 +21,7 @@
     totalProductPrice?: number; // 鍚堣鍟嗗搧閲戦
     taxPrice?: number; // 鍚堣绋庨
     totalTaxPrice?: number; // 鍚堣绋庨
-    fileUrl?: string; // 闄勪欢鍦板潃
+    attachmentList?: { id: number; name?: string; url?: string }[]; // 闄勪欢鍒楄〃
     items?: SaleOutItem[];
   }
 
diff --git a/src/api/erp/sale/return/index.ts b/src/api/erp/sale/return/index.ts
index 18af375..575a650 100644
--- a/src/api/erp/sale/return/index.ts
+++ b/src/api/erp/sale/return/index.ts
@@ -20,7 +20,7 @@
     totalProductPrice?: number; // 鍚堣鍟嗗搧閲戦
     taxPrice?: number; // 鍚堣绋庨
     totalTaxPrice?: number; // 鍚堣绋庨
-    fileUrl?: string; // 闄勪欢鍦板潃
+    attachmentList?: { id: number; name?: string; url?: string }[]; // 闄勪欢鍒楄〃
     items?: SaleReturnItem[];
   }
 
diff --git a/src/api/erp/stock/check/index.ts b/src/api/erp/stock/check/index.ts
index c67ea62..52f8c72 100644
--- a/src/api/erp/stock/check/index.ts
+++ b/src/api/erp/stock/check/index.ts
@@ -12,7 +12,7 @@
     totalPrice: number; // 鍚堣閲戦锛屽崟浣嶏細鍏�
     status: number; // 鐘舵��
     remark: string; // 澶囨敞
-    fileUrl?: string; // 闄勪欢
+    attachmentList?: { id: number; name?: string; url?: string }[]; // 闄勪欢鍒楄〃
     productNames?: string; // 浜у搧淇℃伅
     creatorName?: string; // 鍒涘缓浜�
     items?: StockCheckItem[]; // 鐩樼偣浜у搧娓呭崟
diff --git a/src/api/erp/stock/in/index.ts b/src/api/erp/stock/in/index.ts
index b6e4a50..cda42a2 100644
--- a/src/api/erp/stock/in/index.ts
+++ b/src/api/erp/stock/in/index.ts
@@ -14,7 +14,7 @@
     totalPrice: number; // 鍚堣閲戦锛屽崟浣嶏細鍏�
     status: number; // 鐘舵��
     remark: string; // 澶囨敞
-    fileUrl?: string; // 闄勪欢
+    attachmentList?: { id: number; name?: string; url?: string }[]; // 闄勪欢鍒楄〃
     productNames?: string; // 浜у搧淇℃伅
     creatorName?: string; // 鍒涘缓浜�
     items?: StockInItem[]; // 鍏ュ簱浜у搧娓呭崟
diff --git a/src/api/erp/stock/move/index.ts b/src/api/erp/stock/move/index.ts
index aaf09b2..4abc28c 100644
--- a/src/api/erp/stock/move/index.ts
+++ b/src/api/erp/stock/move/index.ts
@@ -12,7 +12,7 @@
     totalPrice: number; // 鍚堣閲戦锛屽崟浣嶏細鍏�
     status: number; // 鐘舵��
     remark: string; // 澶囨敞
-    fileUrl?: string; // 闄勪欢
+    attachmentList?: { id: number; name?: string; url?: string }[]; // 闄勪欢鍒楄〃
     fromWarehouseId?: number; // 鏉ユ簮浠撳簱缂栧彿
     createTime: Date; // 鍒涘缓鏃堕棿
     creator: string; // 鍒涘缓浜�
diff --git a/src/api/erp/stock/out/index.ts b/src/api/erp/stock/out/index.ts
index 94588e1..cb85ab2 100644
--- a/src/api/erp/stock/out/index.ts
+++ b/src/api/erp/stock/out/index.ts
@@ -13,7 +13,7 @@
     totalPrice: number; // 鍚堣閲戦锛屽崟浣嶏細鍏�
     status: number; // 鐘舵��
     remark: string; // 澶囨敞
-    fileUrl?: string; // 闄勪欢
+    attachmentList?: { id: number; name?: string; url?: string }[]; // 闄勪欢鍒楄〃
     items?: StockOutItem[]; // 鍑哄簱浜у搧娓呭崟
   }
 
diff --git a/src/views/erp/finance/payment/data.ts b/src/views/erp/finance/payment/data.ts
index b1fb694..3d04084 100644
--- a/src/views/erp/finance/payment/data.ts
+++ b/src/views/erp/finance/payment/data.ts
@@ -86,10 +86,13 @@
       formItemClass: 'col-span-2',
     },
     {
-      fieldName: 'fileUrl',
+      fieldName: 'blobIds',
       label: '闄勪欢',
       component: 'FileUpload',
       componentProps: {
+        valueKey: 'id',
+        maxNumber: 10,
+        multiple: true,
         showDescription: formType !== 'detail',
         disabled: formType === 'detail',
       },
diff --git a/src/views/erp/finance/payment/modules/form.vue b/src/views/erp/finance/payment/modules/form.vue
index b9c8cd4..41987a3 100644
--- a/src/views/erp/finance/payment/modules/form.vue
+++ b/src/views/erp/finance/payment/modules/form.vue
@@ -23,9 +23,7 @@
 
 const emit = defineEmits(['success']);
 const formData = ref<
-  ErpFinancePaymentApi.FinancePayment & {
-    fileUrl?: string;
-  }
+  ErpFinancePaymentApi.FinancePayment
 >({
   id: undefined,
   no: '',
@@ -34,7 +32,6 @@
   financeUserId: undefined,
   paymentTime: undefined,
   remark: '',
-  fileUrl: undefined,
   totalPrice: 0,
   discountPrice: 0,
   paymentPrice: 0,
@@ -163,6 +160,16 @@
     modalApi.lock();
     try {
       formData.value = await getFinancePayment(data.id);
+      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,
+        }));
+        formApi.setFieldValue('blobIds', blobIds);
+      }
       // 璁剧疆鍒� values
       await formApi.setValues(formData.value, false);
     } finally {
diff --git a/src/views/erp/finance/receipt/data.ts b/src/views/erp/finance/receipt/data.ts
index 6f51e6a..87e7ea4 100644
--- a/src/views/erp/finance/receipt/data.ts
+++ b/src/views/erp/finance/receipt/data.ts
@@ -86,10 +86,13 @@
       formItemClass: 'col-span-2',
     },
     {
-      fieldName: 'fileUrl',
+      fieldName: 'blobIds',
       label: '闄勪欢',
       component: 'FileUpload',
       componentProps: {
+        valueKey: 'id',
+        maxNumber: 10,
+        multiple: true,
         showDescription: formType !== 'detail',
         disabled: formType === 'detail',
       },
diff --git a/src/views/erp/finance/receipt/modules/form.vue b/src/views/erp/finance/receipt/modules/form.vue
index 6b2d217..9435b4c 100644
--- a/src/views/erp/finance/receipt/modules/form.vue
+++ b/src/views/erp/finance/receipt/modules/form.vue
@@ -23,9 +23,7 @@
 
 const emit = defineEmits(['success']);
 const formData = ref<
-  ErpFinanceReceiptApi.FinanceReceipt & {
-    fileUrl?: string;
-  }
+  ErpFinanceReceiptApi.FinanceReceipt
 >({
   id: undefined,
   no: '',
@@ -34,7 +32,6 @@
   financeUserId: 0,
   receiptTime: new Date(),
   remark: '',
-  fileUrl: undefined,
   totalPrice: 0,
   discountPrice: 0,
   receiptPrice: 0,
@@ -177,6 +174,16 @@
     modalApi.lock();
     try {
       formData.value = await getFinanceReceipt(data.id);
+      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,
+        }));
+        formApi.setFieldValue('blobIds', blobIds);
+      }
       // 璁剧疆鍒� values
       await formApi.setValues(formData.value, false);
     } finally {
diff --git a/src/views/erp/purchase/in/data.ts b/src/views/erp/purchase/in/data.ts
index 2eb48e6..b379d63 100644
--- a/src/views/erp/purchase/in/data.ts
+++ b/src/views/erp/purchase/in/data.ts
@@ -87,10 +87,13 @@
       formItemClass: 'col-span-2',
     },
     {
-      fieldName: 'fileUrl',
+      fieldName: 'blobIds',
       label: '闄勪欢',
       component: 'FileUpload',
       componentProps: {
+        valueKey: 'id',
+        maxNumber: 10,
+        multiple: true,
         showDescription: formType !== 'detail',
         disabled: formType === 'detail',
       },
diff --git a/src/views/erp/purchase/in/modules/form.vue b/src/views/erp/purchase/in/modules/form.vue
index 3a58289..cfe0b69 100644
--- a/src/views/erp/purchase/in/modules/form.vue
+++ b/src/views/erp/purchase/in/modules/form.vue
@@ -29,7 +29,6 @@
     accountId?: number;
     customerId?: number;
     discountPercent?: number;
-    fileUrl?: string;
     order?: ErpPurchaseOrderApi.PurchaseOrder;
     orderId?: number;
     orderNo?: string;
@@ -40,7 +39,6 @@
   accountId: undefined,
   inTime: undefined,
   remark: undefined,
-  fileUrl: undefined,
   discountPercent: 0,
   supplierId: undefined,
   discountPrice: 0,
@@ -124,7 +122,6 @@
     accountId: order.accountId!,
     remark: order.remark!,
     discountPercent: order.discountPercent!,
-    fileUrl: order.fileUrl!,
   };
   // 灏嗚鍗曢」璁剧疆鍒板叆搴撳崟椤�
   order.items!.forEach((item: any) => {
@@ -193,6 +190,16 @@
     modalApi.lock();
     try {
       formData.value = await getPurchaseIn(data.id);
+      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,
+        }));
+        formApi.setFieldValue('blobIds', blobIds);
+      }
       // 璁剧疆鍒� values
       await formApi.setValues(formData.value, false);
     } finally {
diff --git a/src/views/erp/purchase/order/data.ts b/src/views/erp/purchase/order/data.ts
index d13eb84..9ff3b0d 100644
--- a/src/views/erp/purchase/order/data.ts
+++ b/src/views/erp/purchase/order/data.ts
@@ -87,10 +87,13 @@
       formItemClass: 'col-span-2',
     },
     {
-      fieldName: 'fileUrl',
+      fieldName: 'blobIds',
       label: '闄勪欢',
       component: 'FileUpload',
       componentProps: {
+        valueKey: 'id',
+        maxNumber: 10,
+        multiple: true,
         showDescription: formType !== 'detail',
         disabled: formType === 'detail',
       },
diff --git a/src/views/erp/purchase/order/modules/form.vue b/src/views/erp/purchase/order/modules/form.vue
index 40d3490..e9994ea 100644
--- a/src/views/erp/purchase/order/modules/form.vue
+++ b/src/views/erp/purchase/order/modules/form.vue
@@ -85,9 +85,6 @@
     ...item,
     id: undefined,
   }));
-  if (data.fileUrl && Array.isArray(data.fileUrl)) {
-    data.fileUrl = data.fileUrl.length > 0 ? data.fileUrl[0] : '';
-  }
   await (formType.value === 'create'
     ? createPurchaseOrder(data)
     : updatePurchaseOrder(data));
@@ -154,6 +151,16 @@
     modalApi.lock();
     try {
       formData.value = await getPurchaseOrder(data.id);
+      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,
+        }));
+        formApi.setFieldValue('blobIds', blobIds);
+      }
       await formApi.setValues(formData.value);
     } finally {
       modalApi.unlock();
diff --git a/src/views/erp/purchase/request/data.ts b/src/views/erp/purchase/request/data.ts
index eb869d1..f00591c 100644
--- a/src/views/erp/purchase/request/data.ts
+++ b/src/views/erp/purchase/request/data.ts
@@ -103,11 +103,13 @@
       formItemClass: 'col-span-2',
     },
     {
-      fieldName: 'fileUrl',
+      fieldName: 'blobIds',
       label: '闄勪欢',
       component: 'FileUpload',
       componentProps: {
-        placeholder: '璇蜂笂浼犻檮浠�',
+        valueKey: 'id',
+        maxNumber: 10,
+        multiple: true,
         disabled: formType === 'detail',
       },
       formItemClass: 'col-span-2',
diff --git a/src/views/erp/purchase/return/data.ts b/src/views/erp/purchase/return/data.ts
index 8f82c78..fdbcf2e 100644
--- a/src/views/erp/purchase/return/data.ts
+++ b/src/views/erp/purchase/return/data.ts
@@ -87,10 +87,13 @@
       formItemClass: 'col-span-2',
     },
     {
-      fieldName: 'fileUrl',
+      fieldName: 'blobIds',
       label: '闄勪欢',
       component: 'FileUpload',
       componentProps: {
+        valueKey: 'id',
+        maxNumber: 10,
+        multiple: true,
         showDescription: formType !== 'detail',
         disabled: formType === 'detail',
       },
diff --git a/src/views/erp/purchase/return/modules/form.vue b/src/views/erp/purchase/return/modules/form.vue
index dc90705..7c811dd 100644
--- a/src/views/erp/purchase/return/modules/form.vue
+++ b/src/views/erp/purchase/return/modules/form.vue
@@ -28,7 +28,6 @@
   ErpPurchaseReturnApi.PurchaseReturn & {
     accountId?: number;
     discountPercent?: number;
-    fileUrl?: string;
     order?: ErpPurchaseOrderApi.PurchaseOrder;
     orderId?: number;
     orderNo?: string;
@@ -40,7 +39,6 @@
   accountId: undefined,
   returnTime: undefined,
   remark: undefined,
-  fileUrl: undefined,
   discountPercent: 0,
   supplierId: undefined,
   discountPrice: 0,
@@ -123,7 +121,6 @@
     accountId: order.accountId!,
     remark: order.remark!,
     discountPercent: order.discountPercent!,
-    fileUrl: order.fileUrl!,
   };
   // 灏嗚鍗曢」璁剧疆鍒伴��璐у崟椤�
   order.items!.forEach((item: any) => {
@@ -193,6 +190,16 @@
     modalApi.lock();
     try {
       formData.value = await getPurchaseReturn(data.id);
+      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,
+        }));
+        formApi.setFieldValue('blobIds', blobIds);
+      }
       // 璁剧疆鍒� values
       await formApi.setValues(formData.value, false);
     } finally {
diff --git a/src/views/erp/sale/order/data.ts b/src/views/erp/sale/order/data.ts
index 1fad18d..75bb9de 100644
--- a/src/views/erp/sale/order/data.ts
+++ b/src/views/erp/sale/order/data.ts
@@ -111,10 +111,13 @@
       formItemClass: 'col-span-2',
     },
     {
-      fieldName: 'fileUrl',
+      fieldName: 'blobIds',
       label: '闄勪欢',
       component: 'FileUpload',
       componentProps: {
+        valueKey: 'id',
+        maxNumber: 10,
+        multiple: true,
         showDescription: formType !== 'detail',
         disabled: formType === 'detail',
       },
diff --git a/src/views/erp/sale/out/data.ts b/src/views/erp/sale/out/data.ts
index b7fc5b8..15f309e 100644
--- a/src/views/erp/sale/out/data.ts
+++ b/src/views/erp/sale/out/data.ts
@@ -104,10 +104,13 @@
       formItemClass: 'col-span-2',
     },
     {
-      fieldName: 'fileUrl',
+      fieldName: 'blobIds',
       label: '闄勪欢',
       component: 'FileUpload',
       componentProps: {
+        valueKey: 'id',
+        maxNumber: 10,
+        multiple: true,
         showDescription: formType !== 'detail',
         disabled: formType === 'detail',
       },
diff --git a/src/views/erp/sale/out/modules/form.vue b/src/views/erp/sale/out/modules/form.vue
index 9483f64..98e9563 100644
--- a/src/views/erp/sale/out/modules/form.vue
+++ b/src/views/erp/sale/out/modules/form.vue
@@ -25,7 +25,6 @@
     accountId?: number;
     customerId?: number;
     discountPercent?: number;
-    fileUrl?: string;
     order?: ErpSaleOrderApi.SaleOrder;
     orderId?: number;
     orderNo?: string;
@@ -36,7 +35,6 @@
   accountId: undefined,
   outTime: undefined,
   remark: undefined,
-  fileUrl: undefined,
   discountPercent: 0,
   customerId: undefined,
   discountPrice: 0,
@@ -119,7 +117,6 @@
     accountId: order.accountId!,
     remark: order.remark!,
     discountPercent: order.discountPercent!,
-    fileUrl: order.fileUrl!,
   };
   // 灏嗚鍗曢」璁剧疆鍒板嚭搴撳崟椤�
   order.items!.forEach((item: any) => {
@@ -188,6 +185,16 @@
     modalApi.lock();
     try {
       formData.value = await getSaleOut(data.id);
+      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,
+        }));
+        formApi.setFieldValue('blobIds', blobIds);
+      }
       // 璁剧疆鍒� values
       await formApi.setValues(formData.value, false);
     } finally {
diff --git a/src/views/erp/sale/return/data.ts b/src/views/erp/sale/return/data.ts
index 206d90d..bb92f50 100644
--- a/src/views/erp/sale/return/data.ts
+++ b/src/views/erp/sale/return/data.ts
@@ -100,10 +100,13 @@
       formItemClass: 'col-span-2',
     },
     {
-      fieldName: 'fileUrl',
+      fieldName: 'blobIds',
       label: '闄勪欢',
       component: 'FileUpload',
       componentProps: {
+        valueKey: 'id',
+        maxNumber: 10,
+        multiple: true,
         showDescription: formType !== 'detail',
         disabled: formType === 'detail',
       },
diff --git a/src/views/erp/sale/return/modules/form.vue b/src/views/erp/sale/return/modules/form.vue
index 76ce63a..59437d7 100644
--- a/src/views/erp/sale/return/modules/form.vue
+++ b/src/views/erp/sale/return/modules/form.vue
@@ -29,7 +29,6 @@
     accountId?: number;
     customerId?: number;
     discountPercent?: number;
-    fileUrl?: string;
     order?: ErpSaleOrderApi.SaleOrder;
     orderId?: number;
     orderNo?: string;
@@ -40,7 +39,6 @@
   accountId: undefined,
   returnTime: undefined,
   remark: undefined,
-  fileUrl: undefined,
   discountPercent: 0,
   customerId: undefined,
   discountPrice: 0,
@@ -124,7 +122,6 @@
     accountId: order.accountId!,
     remark: order.remark!,
     discountPercent: order.discountPercent!,
-    fileUrl: order.fileUrl!,
   };
   // 灏嗚鍗曢」璁剧疆鍒伴��璐у崟椤�
   order.items!.forEach((item: any) => {
@@ -193,6 +190,16 @@
     modalApi.lock();
     try {
       formData.value = await getSaleReturn(data.id);
+      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,
+        }));
+        formApi.setFieldValue('blobIds', blobIds);
+      }
       // 璁剧疆鍒� values
       await formApi.setValues(formData.value, false);
     } finally {
diff --git a/src/views/erp/stock/check/data.ts b/src/views/erp/stock/check/data.ts
index 054c35f..d58c9f5 100644
--- a/src/views/erp/stock/check/data.ts
+++ b/src/views/erp/stock/check/data.ts
@@ -56,10 +56,13 @@
       formItemClass: 'col-span-2',
     },
     {
-      fieldName: 'fileUrl',
+      fieldName: 'blobIds',
       label: '闄勪欢',
       component: 'FileUpload',
       componentProps: {
+        valueKey: 'id',
+        maxNumber: 10,
+        multiple: true,
         showDescription: formType !== 'detail',
         disabled: formType === 'detail',
       },
diff --git a/src/views/erp/stock/in/data.ts b/src/views/erp/stock/in/data.ts
index 67c3598..85e8e81 100644
--- a/src/views/erp/stock/in/data.ts
+++ b/src/views/erp/stock/in/data.ts
@@ -71,10 +71,13 @@
       formItemClass: 'col-span-2',
     },
     {
-      fieldName: 'fileUrl',
+      fieldName: 'blobIds',
       label: '闄勪欢',
       component: 'FileUpload',
       componentProps: {
+        valueKey: 'id',
+        maxNumber: 10,
+        multiple: true,
         showDescription: formType !== 'detail',
         disabled: formType === 'detail',
       },
diff --git a/src/views/erp/stock/move/data.ts b/src/views/erp/stock/move/data.ts
index aba8a00..0baf242 100644
--- a/src/views/erp/stock/move/data.ts
+++ b/src/views/erp/stock/move/data.ts
@@ -56,10 +56,13 @@
       formItemClass: 'col-span-2',
     },
     {
-      fieldName: 'fileUrl',
+      fieldName: 'blobIds',
       label: '闄勪欢',
       component: 'FileUpload',
       componentProps: {
+        valueKey: 'id',
+        maxNumber: 10,
+        multiple: true,
         showDescription: formType !== 'detail',
         disabled: formType === 'detail',
       },
diff --git a/src/views/erp/stock/out/data.ts b/src/views/erp/stock/out/data.ts
index 50da807..c764bff 100644
--- a/src/views/erp/stock/out/data.ts
+++ b/src/views/erp/stock/out/data.ts
@@ -73,10 +73,13 @@
       formItemClass: 'col-span-2',
     },
     {
-      fieldName: 'fileUrl',
+      fieldName: 'blobIds',
       label: '闄勪欢',
       component: 'FileUpload',
       componentProps: {
+        valueKey: 'id',
+        maxNumber: 10,
+        multiple: true,
         showDescription: formType !== 'detail',
         disabled: formType === 'detail',
       },

--
Gitblit v1.9.3