From 3af70533501f4138536ba01edb4f02a3a8d69f6a Mon Sep 17 00:00:00 2001
From: yangfeng <wanwan926_4@163.com>
Date: 星期六, 30 三月 2024 14:29:04 +0800
Subject: [PATCH] Merge branch 'dev' of http://192.168.5.5:10010/r/web/crm-web into dev

---
 src/views/sales/salesDetails/index.vue |  330 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 227 insertions(+), 103 deletions(-)

diff --git a/src/views/sales/salesDetails/index.vue b/src/views/sales/salesDetails/index.vue
index 719169e..1af7f6e 100644
--- a/src/views/sales/salesDetails/index.vue
+++ b/src/views/sales/salesDetails/index.vue
@@ -50,6 +50,9 @@
                   <template v-if="scope.row.status === 3||scope.row.status === 4">
                     <el-button @click.stop="shipmentsClick(scope.row)" type="text" size="small">鍙戣揣</el-button>
                   </template>
+                  <template v-if="scope.row.status === 3||scope.row.status === 4">
+                    <el-button @click.stop="confirmClick(scope.row)" type="text" size="small">纭瀹屾垚</el-button>
+                  </template>
                 </template>
               </el-table-column>
             </template>
@@ -176,7 +179,8 @@
   getProductOrderInfo,
   updateStatus,
   getProjectList,
-  sendSalesDetailsToOtherSystem
+  sendSalesDetailsToOtherSystem,
+  confirmOutputOver
 } from "@/api/sales/salesDetails"
 import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
 import DetailSpecification from "@/views/sales/salesDetails/DetailSpecification"
@@ -217,11 +221,26 @@
       { label: "浜у搧瑙勬牸", prop: "specs" },
       { label: "鍗曚綅", prop: "unit" },
       { label: "璁㈠崟鏁伴噺", prop: "amount" },
-      { label: "宸插畬鎴愭暟閲�", prop: "finishAmount" },
-      { label: "宸插彂璐ф暟閲�", prop: "deliveryAmount" },
-      { label: "閲囪喘鏁伴噺", prop: "purchaseAmount" },
-      { label: "鐢熶骇鏁伴噺", prop: "makeAmount" },
-      { label: "濮斿鏁伴噺", prop: "outsourcingAmount" },
+      { 
+        label: "宸插畬鎴愭暟閲�", 
+        prop: "finishAmount",
+        isClass: true,
+        getClassName: this.getAmountClassName, 
+      },
+      { label: "宸插彂璐ф暟閲�", prop: "deliveryAmount", 
+        isClass: true,
+        getClassName: this.getAmountClassName,  },
+      { label: "閲囪喘鏁伴噺", 
+        isClass: true,
+        getClassName: this.getFinishAmountClassName, 
+        prop: "purchaseAmount",
+      },
+      { label: "鐢熶骇鏁伴噺", prop: "makeAmount" ,
+        isClass: true,
+        getClassName: this.getFinishAmountClassName, },
+      { label: "濮斿鏁伴噺", prop: "outsourcingAmount",
+        isClass: true,
+        getClassName: this.getFinishAmountClassName,  },
       { label: "閿�鍞崟浠�", prop: "price", price: true },
       { label: "鎴愭湰鍗曚环", prop: "cost" },
       { label: "姣涘埄", prop: "profit" },
@@ -241,7 +260,7 @@
       { label: "鎵胯繍鍟�", prop: "carrier" },
       { label: "杩愬崟鍙�", prop: "waybill" },
       { label: "鍒涘缓鏃堕棿", prop: "warehouse" },
-      { label: "鐘舵��", prop: "status" },
+      { label: "鐘舵��", prop: "status",isCallMethod: true,getCallMethod: this.getStatusFive },
     ]
     // 鍒堕�犱俊鎭�
     const makeColumn = [
@@ -318,57 +337,46 @@
       {
         label: "濮斿璁㈠崟",
         prop: "outsourcingId",
-        default: true
       },
       {
         label: "浜у搧缂栧彿",
         prop: "productId",
-        default: true
       },
       {
         label: "浜у搧鍚嶇О",
         prop: "productName",
-        default: true
       },
       {
         label: "浜у搧瑙勬牸",
         prop: "specs",
-        default: true
       },
       {
         label: "浜у搧鍗曚綅",
         prop: "unit",
-        default: true
       },
       {
         label: "濮斿鏁伴噺",
         prop: "amount",
-        default: true
       },
       {
         label: "瀹屾垚鏁伴噺",
         prop: "finishAmount",
-        default: true
       },
       {
         label: "璁㈠崟鐘舵��",
-        prop: "status",
-        default: true
+        prop: "outsourcingStatus",
       },
       {
         label: "濮斿渚涘簲鍟�",
         prop: "supplierName",
-        default: true
       },
       {
         label: "绛剧害鏃ユ湡",
         prop: "startTime",
-        default: true
       },
       {
         label: "浜や粯鏃ユ湡",
         prop: "endTime",
-        default: true
       },
     ]
     return {
@@ -439,7 +447,7 @@
       TabsIndex: "0",
       productTableList: {},
       productColumn: productColumn,
-      showProductCol: ["浜у搧缂栧彿", "浜у搧鍚嶇О","浜у搧瑙勬牸", "鍗曚綅", "璁㈠崟鏁伴噺", "宸插畬鎴愭暟閲�", "宸插彂璐ф暟閲�", "閲囪喘鏁伴噺", "鐢熶骇鏁伴噺", "濮斿鏁伴噺","閿�鍞崟浠�","鎴愭湰鍗曚环","姣涘埄","姣涘埄鐜�","浠风◣鍚堣"],
+      showProductCol: ["浜у搧缂栧彿", "浜у搧鍚嶇О","浜у搧瑙勬牸", "鍗曚綅", "璁㈠崟鏁伴噺", "宸插畬鎴愭暟閲�", "宸插彂璐ф暟閲�", "閲囪喘鏁伴噺", "鐢熶骇鏁伴噺", "濮斿鏁伴噺","閿�鍞崟浠�","鎴愭湰鍗曚环","姣涘埄","姣涘埄鐜�(%)","浠风◣鍚堣"],
       inventoryColumn: inventoryColumn,
       showInventoryCol: [
         "鍑哄簱鍗�",
@@ -456,7 +464,7 @@
         "鐘舵��"
       ],
       makeColumn: makeColumn,
-      showMakeCol: ["鐢熶骇璁㈠崟", "浜у搧鍚嶇О", "璁㈠崟鐘舵��", "宸ュ崟缂栧彿", "宸ュ崟鐘舵��", "璁″垝寮�濮嬫椂闂�", "璁″垝缁撴潫鏃堕棿"],
+      showMakeCol: ["鐢熶骇璁㈠崟", "浜у搧缂栧彿", "浜у搧鍚嶇О", "浜у搧瑙勬牸", "浜у搧鍗曚綅", "璁㈠崟鏁伴噺", "瀹屾垚鏁伴噺","宸ュ崟缂栧彿","宸ュ崟鐘舵��","璁″垝寮�濮嬫椂闂�","璁″垝缁撴潫鏃堕棿"],
       // 閲囪喘
       purchaseColumn: purchaseColumn,
       outsourceColumn:outsourceColumn,
@@ -473,7 +481,9 @@
         projectId: [{ required: true, message: "璇烽�夋嫨椤圭洰", trigger: "change" }]
       },
       purchaseStatusList: getDataByType("purchaseStatus"),
-      loading: false
+      loading: false,
+      isRequest: true, //璇锋眰
+      productDataBottom:{},
     }
   },
   created() {
@@ -489,6 +499,29 @@
     this.getProjectList()
   },
   methods: {
+    getFinishAmountClassName(val, row) {
+      let parts = val.split("/"); 
+      let numerator = parseInt(parts[0], 10); // 鍒嗗瓙  
+      let denominator = parseInt(parts[1], 10); // 鍒嗘瘝 
+      let classname = "";
+      if (numerator / denominator === 0||numerator===0) {
+        classname = "error";
+      }else if(numerator / denominator === 1){
+        classname = "success";
+      }else if((numerator / denominator) > 0&&(numerator / denominator) <1){
+        classname = "warning-radio";
+      }
+      console.log(classname, numerator,denominator,"鐪嬩笅")
+      return classname;
+    },
+    getAmountClassName(val){
+      console.log(val,"val11")
+      let classname = "";
+      if(val===0){
+        classname = "error";
+      }
+      return classname;
+    },
     getpurchaseStatus(val) {
       if (val) {
         for (let i in this.purchaseStatusList) {
@@ -618,21 +651,12 @@
         })
     },
     // 鑾峰彇浜у搧/搴撳瓨淇℃伅
-    async getProductInventoryInfo(row) {
-      if (this.TabsIndex == 0 || row.status == 1) {
-        this.getProductOrderInfo(row)
-        // row.products.map((item)=>{
-        //   item.purchaseAmount=item.purchaseFinishAmount+"/"+item.purchaseAmount
-        //   item.makeAmount=item.makeFinishAmount+"/"+item.makeAmount
-        //   item.outsourcingAmount=item.outsourcingFinishAmount+"/"+item.outsourcingAmount
-
-        // })
-        // this.productTableList.tableInfomation = row.products || []
-      } else {
-        if (row.number) {
+    async getProductInventoryInfo(number) {
+        if (number) {
           this.loading = true
-          await getProductInventoryInfo(row.number)
+          await getProductInventoryInfo(number)
             .then((res) => {
+              console.log(res,"resss")
               this.productTableList.tableInfomation = res.data?.length > 0 ? res.data : []
               this.loading = false
             })
@@ -641,39 +665,104 @@
               this.loading = false
             })
         }
-      }
     },
     // 鑾峰彇鍒堕�犱俊鎭�
     async getProductOrderInfo(number) {
       if (number) {
-        this.loading = true
-        await getProductOrderInfo(number)
-          .then((res) => {
-            if (this.TabsIndex == 0) {
+        if (this.TabsIndex == 0) {
+          // 浜у搧淇℃伅鍒楄〃
+          this.tableBottomColumn = this.productColumn // 琛ㄥご
+          this.showBottomCol = this.showProductCol  // 鍔ㄦ�佽〃澶�
+          this.setBottomList()
+        }else if(this.TabsIndex == 1){
+          // 鍙戣揣淇℃伅鍒楄〃
+          this.tableBottomColumn = this.inventoryColumn
+          this.showBottomCol = this.showInventoryCol
+          this.setBottomList()
+        }else if (this.TabsIndex == 2) {
+          // 鍒堕�犱俊鎭垪琛�
+          this.tableBottomColumn = this.makeColumn
+          this.showBottomCol = this.showMakeCol
+          this.setBottomList()
+        
+        } else if (this.TabsIndex == 3) {
+          // 閲囪喘淇℃伅鍒楄〃
+          this.tableBottomColumn = this.purchaseColumn
+          this.showBottomCol = this.showPurchaseCol
+          this.setBottomList()
+        }else if (this.TabsIndex == 4) {
+          // 濮斿淇℃伅鍒楄〃
+          this.tableBottomColumn = this.outsourceColumn
+          this.showBottomCol = this.showOutsourceCol
+          this.setBottomList()
+        }
+        console.log(this.isRequest,'===isRequest')
+        if (this.TabsIndex != 1&&this.isRequest == false) {
+          this.isRequest = true;
+          this.getListValue(this.productDataBottom)
+          return true;
+        }
+        
+          if (this.TabsIndex == 1&&this.selectRow.status == 1) {
+            this.productTableList.tableInfomation = []
+          } 
+          console.log(this.selectRow,"鐪嬬湅")
+          this.getProductInventoryInfo(number)
+          
+          this.loading = true
+          await getProductOrderInfo(number)
+            .then((res) => {
+              this.productDataBottom=res;
+              this.getListValue(this.productDataBottom)
+              this.loading = false
+            })
+            .catch(() => {
+              this.productTableList.tableInfomation = []
+              this.loading = false
+            })
+      }
+    },
+    getListValue(res){
+      if (this.TabsIndex == 0) {
               if(res&&res.data){
                 res.data.productInfo.map((item=>{
-                  item.purchaseAmount=item.purchaseFinishAmount+"/"+item.purchaseAmount
-                  item.makeAmount=item.makeFinishAmount+"/"+item.makeAmount
-                  item.outsourcingAmount=item.outsourcingFinishAmount+"/"+item.outsourcingAmount
+                  let string1 = "--";
+                  let number1 = item.purchaseFinishAmount;
+                  let val1=item.purchaseAmount
+                  if ((val1 && val1 != 0) || (number1 && number1 != 0)) {
+                    let a1 = val1 || val1 == 0 ? val1 : "--";
+                    let b1 = number1 || number1 == 0 ? number1 : "--";
+                    string1 = b1 + "/" + a1;
+                  }
+                  item.purchaseAmount=string1
+                  let string2 = "--";
+                  let number2 = item.makeFinishAmount;
+                  let val2=item.makeAmount
+                  if ((val2 && val2 != 0) || (number2 && number2 != 0)) {
+                    let a2 = val2 || val2 == 0 ? val2 : "--";
+                    let b2 = number2 || number2 == 0 ? number2 : "--";
+                    string2 = b2 + "/" + a2;
+                  }
+                  item.makeAmount=string2
+                  let string3 = "--";
+                  let number3 = item.outsourcingFinishAmount;
+                  let val3=item.outsourcingAmount
+                  if ((val3 && val3 != 0) || (number3 && number3 != 0)) {
+                    let a3 = val3 || val3 == 0 ? val3 : "--";
+                    let b3 = number3 || number3 == 0 ? number3 : "--";
+                    string3 = b3 + "/" + a3;
+                  }
+                  item.outsourcingAmount=string3
                 }))
               }
               this.productTableList.tableInfomation = res.data && res.data.productInfo ? res.data.productInfo : []
-            } else if (this.TabsIndex == 1) {
-              this.productTableList.tableInfomation = res.data ? res.data : []
-            } else if (this.TabsIndex == 2) {
+            }  else if (this.TabsIndex == 2) {
               this.productTableList.tableInfomation = res.data && res.data.makeInfo ? res.data.makeInfo : []
             } else if (this.TabsIndex == 3) {
               this.productTableList.tableInfomation = res.data && res.data.purchaseInfo ? res.data.purchaseInfo : []
             } else if(this.TabsIndex == 4) {
               this.productTableList.tableInfomation = res.data && res.data.outsourcingInfo ? res.data.outsourcingInfo : []
             }
-            this.loading = false
-          })
-          .catch(() => {
-            this.productTableList.tableInfomation = []
-            this.loading = false
-          })
-      }
     },
     // 鎼滅储
     onFilterSearch(searchText) {
@@ -733,8 +822,78 @@
     shipmentsClick(row){
       this.editShipmentsConfig.visible=true
       this.editShipmentsConfig.infomation.saleDetailID=row.id
+      this.editShipmentsConfig.infomation.deliverType=row.deliverType?row.deliverType:1
       this.editShipmentsConfig.infomation.saleDetailNumber=row.number
       this.editShipmentsConfig.infomation.projectId=row.projectId
+    },
+    // 纭鍙戣揣瀹屾垚
+    async confirmClick(row){
+      this.selectRow = row
+      await getProductInventoryInfo(this.selectRow.number)
+        .then((res) => {
+          console.log(res,"resss")
+          if(res.data){
+          this.productTableList.tableInfomation = res.data?.length > 0 ? res.data : []
+            // let accumulator=res.data
+            // const reducedArray = array.reduce((accumulator, currentItem) => {  
+            //   // 鏌ユ壘褰撳墠number鏄惁宸插瓨鍦ㄤ簬accumulator涓�  
+            //   const existingItem = accumulator.find(item => item.number === currentItem.number);  
+            //   if (existingItem) {  
+            //     // 濡傛灉瀛樺湪锛岀疮鍔爊um  
+            //     existingItem.amount += currentItem.amount;  
+            //   } else {  
+            //     // 濡傛灉涓嶅瓨鍦紝灏嗗綋鍓嶉」娣诲姞鍒癮ccumulator涓�  
+            //     accumulator.push(currentItem);  
+            //   }  
+            //   return accumulator;  
+            // }, []); // 鍒濆鍖朼ccumulator涓轰竴涓┖鏁扮粍  
+              
+            // console.log(reducedArray,"鏂版暟缁�");
+          }
+          this.loading = false
+        })
+        // let obj=[
+        //   {
+        //     name:"灏忔槑",
+        //     id:1,
+        //     num:10
+        //   },
+        //   {
+        //     name:"灏忔槑",
+        //     id:1,
+        //     num:20
+        //   },
+        //   {
+        //     name:"灏忔槑",
+        //     id:1,
+        //     num:5
+        //   },
+        //   {
+        //     name:"灏忕孩",
+        //     id:1,
+        //     num:5
+        //   },
+        //   {
+        //     name:"灏忕孩",
+        //     id:1,
+        //     num:10
+        //   },
+        //   {
+        //     name:"灏忔埧",
+        //     id:5,
+        //     num:3
+        //   },
+        // ]
+        .catch(() => {
+          this.productTableList.tableInfomation = []
+          this.loading = false
+        })
+      // await confirmOutputOver({saleDetailNumber:row.number}).then((res)=>{
+      //   if(res&&res.code===200){
+      //     this.$message.success("纭鍙戣揣瀹屾垚")
+      //     this.getData()
+      //   }
+      // })
     },
     // 鍏抽棴
     closeClick(row) {
@@ -812,63 +971,21 @@
     //鑾峰彇褰撳墠閫変腑璧勬簮鐨刬d
     getTab(tab) {
       this.TabsIndex = tab
-      if (this.TabsIndex == 0) {
-        // 浜у搧淇℃伅鍒楄〃
-        this.tableBottomColumn = this.productColumn // 琛ㄥご
-        this.showBottomCol = this.showProductCol  // 鍔ㄦ�佽〃澶�
-        this.setBottomList()
-        this.getProductInventoryInfo(this.selectRow.number)
-      } else if (this.TabsIndex == 1) {
-        // 鍙戣揣淇℃伅鍒楄〃
-        this.tableBottomColumn = this.inventoryColumn
-        this.showBottomCol = this.showInventoryCol
-        this.setBottomList()
-        if (this.selectRow.status == 1) {
-          this.productTableList.tableInfomation = []
-        } else {
-          this.getProductInventoryInfo(this.selectRow)
-        }
-      } else if (this.TabsIndex == 2) {
-        // 鍒堕�犱俊鎭垪琛�
-        this.tableBottomColumn = this.makeColumn
-        this.showBottomCol = this.showMakeCol
-        this.setBottomList()
-        this.getProductOrderInfo(this.selectRow.number)
-      } else if (this.TabsIndex == 3) {
-        // 閲囪喘淇℃伅鍒楄〃
-        this.tableBottomColumn = this.purchaseColumn
-        this.showBottomCol = this.showPurchaseCol
-        this.setBottomList()
-        this.getProductOrderInfo(this.selectRow.number)
-      }if (this.TabsIndex == 4) {
-        // 濮斿淇℃伅鍒楄〃
-        this.tableBottomColumn = this.outsourceColumn
-        this.showBottomCol = this.showOutsourceCol
-        this.setBottomList()
-        this.getProductOrderInfo(this.selectRow.number)
+      if (this.TabsIndex == 1) {
+        this.isRequest =true;
+      } else{
+        this.isRequest = false;
       }
+      this.getProductOrderInfo(this.selectRow.number)
     },
     // 鐘舵��
     getStatus(val) {
-      return val === 1 ? "寰呯‘璁�" : val === 2 ? "寰呭嚭搴�" : val === 3 ? "澶囪揣涓�" : val === 4 ? "寰呭嚭搴�" : val === 5 ? "鍑哄簱瀹屾垚" : val=== 6 ? "宸插叧闂�": "--"
+      return val === 1 ? "寰呯‘璁�" : val === 2 ? "寰呭垎瑙�" : val === 3 ? "澶囪揣涓�" : val === 4 ? "寰呭嚭搴�" : val === 5 ? "鍑哄簱瀹屾垚" : val=== 6 ? "宸插叧闂�": "--"
     },
     // top 琛岀偣鍑�
     tableRowClick(row) {
       this.selectRow = row
-      if (this.TabsIndex == 0) {
-        this.getProductInventoryInfo(this.selectRow.number)
-      } else if (this.TabsIndex == 1) {
-        if (this.selectRow.status == 1) {
-          this.productTableList.tableInfomation = []
-        } else {
-          this.getProductInventoryInfo(this.selectRow)
-        }
-      } else if (this.TabsIndex == 2) {
-        this.getProductOrderInfo(this.selectRow.number)
-      } else if (this.TabsIndex == 3) {
-        // 閲囪喘淇℃伅
-        this.getProductOrderInfo(this.selectRow.number)
-      }
+      this.getProductOrderInfo(this.selectRow.number)
     },
     // 鑾峰彇椤圭洰鍒楄〃
     async getProjectList() {
@@ -927,7 +1044,14 @@
           })
         }
       })
-    }
+    },
+    getStatusFive(val) {
+      if (val) {
+        return val==0?'灏辩华':'瀹屾垚'
+      } else {
+        return "--";
+      }
+    },
   }
 }
 </script>

--
Gitblit v1.8.0