From 474c2a6516139ccbafecd5fc3d139ee9104ecfd5 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 31 三月 2026 17:28:21 +0800
Subject: [PATCH] 军泰伟业app 1.销售台账、采购台账选择产品逻辑修改 2.新增生产订单时将产品那边的图纸带过来 3.生产订单增加退料功能

---
 src/views/productionManagement/productionOrder/New.vue |  119 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 105 insertions(+), 14 deletions(-)

diff --git a/src/views/productionManagement/productionOrder/New.vue b/src/views/productionManagement/productionOrder/New.vue
index 2109385..e5831e2 100644
--- a/src/views/productionManagement/productionOrder/New.vue
+++ b/src/views/productionManagement/productionOrder/New.vue
@@ -402,6 +402,28 @@
     formState.value.productModelId = product.id;
     formState.value.unit = product.unit;
     formState.value.routeId = product.routeId;
+    
+    // 淇濆瓨浜у搧鍘熸湁鐨勫浘绾告枃浠�
+    if (product.salesLedgerFiles && product.salesLedgerFiles.length > 0) {
+      formState.value.salesLedgerFiles = product.salesLedgerFiles.map(file => ({
+        id: file.id,
+        name: file.name,
+        url: file.url,
+        type: file.type,
+        isExisting: true // 鏍囪涓哄凡瀛樺湪鐨勬枃浠�
+      }));
+      // 鍚屾鍒癴ileList鐢ㄤ簬鍙嶆樉
+      fileList.value = formState.value.salesLedgerFiles.map(file => ({
+        id: file.id,
+        name: file.name,
+        url: file.url,
+        isExisting: true
+      }));
+    } else {
+      formState.value.salesLedgerFiles = [];
+      fileList.value = [];
+    }
+    
     showProductSelectDialog.value = false;
     
     // 1. 閫氳繃浜у搧鑷甫鐨剅outeId鑾峰彇宸ュ簭鍒楄〃
@@ -614,26 +636,66 @@
   return true;
 };
 
-const handleDrawingUploadSuccess = (response, file, fileList) => {
+const handleDrawingUploadSuccess = (response, file, uploadFileList) => {
   console.log('涓婁紶鎴愬姛鍝嶅簲', response);
   console.log('response.data', response.data);
   if (response.code === 200) {
-    formState.value.tempFileIds = [response.data?.tempId];
-    formState.value.salesLedgerFiles = [{
+    // 灏嗘柊涓婁紶鐨勬枃浠舵坊鍔犲埌salesLedgerFiles涓�
+    const newFile = {
       tempId: response.data?.tempId,
-      originalName: response.data?.originalName || file.name,
+      name: response.data?.originalName || file.name,
       tempPath: response.data?.tempPath,
-      type: response.data?.type || 14
-    }];
+      type: response.data?.type || 14,
+      isNew: true // 鏍囪涓烘柊涓婁紶鐨勬枃浠�
+    };
+    
+    // 娣诲姞鏂版枃浠跺埌salesLedgerFiles
+    if (!formState.value.salesLedgerFiles) {
+      formState.value.salesLedgerFiles = [];
+    }
+    formState.value.salesLedgerFiles.push(newFile);
+    
+    // 鏇存柊tempFileIds
+    formState.value.tempFileIds = formState.value.salesLedgerFiles
+      .filter(f => f.tempId)
+      .map(f => f.tempId);
+    
     proxy.$modal.msgSuccess("涓婁紶鎴愬姛");
   } else {
     proxy.$modal.msgError(response.msg || "涓婁紶澶辫触");
   }
 };
 
-const handleDrawingRemove = (file) => {
-  formState.value.tempFileIds = [];
-  formState.value.salesLedgerFiles = [];
+const handleDrawingRemove = (file, uploadFileList) => {
+  // 浠巗alesLedgerFiles涓Щ闄ゅ搴旂殑鏂囦欢
+  if (formState.value.salesLedgerFiles) {
+    const index = formState.value.salesLedgerFiles.findIndex(item => {
+      // 鏍规嵁id鎴杢empId鍖归厤
+      if (file.id && item.id === file.id) return true;
+      if (file.response?.data?.tempId && item.tempId === file.response.data.tempId) return true;
+      if (file.name && item.name === file.name) return true;
+      return false;
+    });
+    
+    if (index > -1) {
+      const removedFile = formState.value.salesLedgerFiles[index];
+      // 鏍囪涓哄凡鍒犻櫎锛堢敤浜庡悗绔鐞嗭級
+      if (removedFile.id) {
+        removedFile.isDeleted = true;
+      } else {
+        // 鏂颁笂浼犵殑鏂囦欢鐩存帴绉婚櫎
+        formState.value.salesLedgerFiles.splice(index, 1);
+      }
+    }
+  }
+  
+  // 鏇存柊tempFileIds
+  formState.value.tempFileIds = formState.value.salesLedgerFiles
+    .filter(f => f.tempId && !f.isDeleted)
+    .map(f => f.tempId);
+  
+  // 鍚屾鏇存柊fileList
+  fileList.value = uploadFileList || [];
 };
 
 const handleSubmit = () => {
@@ -644,10 +706,6 @@
         proxy.$modal.msgError("璇烽�夋嫨浜у搧");
         return;
       }
-      if (!formState.value.productModelId) {
-        proxy.$modal.msgError("璇烽�夋嫨瑙勬牸");
-        return;
-      }
 
       // 澶勭悊鎻愪氦鏁版嵁 - 灏唘serPower鏁扮粍杞崲涓洪�楀彿鍒嗛殧鐨勫瓧绗︿覆
       const processedProcessRouteItems = processRouteItems.value.map(item => ({
@@ -655,12 +713,45 @@
         userPower: Array.isArray(item.userPower) ? item.userPower.join(',') : item.userPower
       }));
 
+      // 澶勭悊鏂囦欢鏁版嵁 - 鍖呭惈宸插瓨鍦ㄧ殑銆佹柊涓婁紶鐨勫拰宸插垹闄ょ殑
+      const processedFiles = (formState.value.salesLedgerFiles || []).map(file => {
+        if (file.isNew) {
+          // 鏂颁笂浼犵殑鏂囦欢
+          return {
+            tempId: file.tempId,
+            name: file.name,
+            tempPath: file.tempPath,
+            type: file.type,
+            isNew: true
+          };
+        } else if (file.isDeleted) {
+          // 宸插垹闄ょ殑鍘熸湁鏂囦欢
+          return {
+            id: file.id,
+            name: file.name,
+            url: file.url,
+            type: file.type,
+            isDeleted: true
+          };
+        } else {
+          // 淇濈暀鐨勫師鏈夋枃浠�
+          return {
+            id: file.id,
+            name: file.name,
+            url: file.url,
+            type: file.type,
+            isExisting: true
+          };
+        }
+      });
+
       // 缁勮鎻愪氦鏁版嵁
       const submitData = {
         ...formState.value,
         processRouteItems: processedProcessRouteItems,
         productStructureRecords: productStructureRecords.value,
-        files: formState.value.salesLedgerFiles,
+        salesLedgerFiles: processedFiles,
+        files: processedFiles,
       };
 
       addProductOrder(submitData).then(res => {

--
Gitblit v1.9.3