From ef9674e9be8baa57b6abf7fb6ea7ab141ef4ac79 Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期四, 21 十二月 2023 17:04:38 +0800
Subject: [PATCH] 增加销售单价,成本单价,毛利,毛利率之间的数据关系+增加产品选择列表的删除操作

---
 src/components/makepager/CommonFormTableView.vue |  105 +++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 94 insertions(+), 11 deletions(-)

diff --git a/src/components/makepager/CommonFormTableView.vue b/src/components/makepager/CommonFormTableView.vue
index 80520cc..70fbd58 100644
--- a/src/components/makepager/CommonFormTableView.vue
+++ b/src/components/makepager/CommonFormTableView.vue
@@ -2,12 +2,17 @@
   <div class="page-view">
     <el-form ref="form" :model="tableList" :show-message="false" label-position="right">
       <el-table
+        ref="fromTable"
         :data="tableList.tableData"
         :show-summary="showSummary.show"
         :summary-method="getSummaries"
         :span-method="arraySpanMethod"
         style="width: 100%"
+        @selection-change="handleSelectionChange"
+        :row-key="(row) => row.productId"
       >
+        <el-table-column v-if="selectBox" type="selection" :reserve-selection="true" width="40" align="center">
+        </el-table-column>
         <el-table-column v-if="tableList.isReturn" type="index" label="#" width="50" align="center"></el-table-column>
         <el-table-column
           v-for="(item, i) in tableList.tableColumn"
@@ -123,11 +128,51 @@
                   "
                 ></el-input-number>
               </el-form-item>
-              <span v-else>{{ scope.row[item.prop] }}</span>
+              <span v-else>
+                <template v-if="pageName=='quotation'&&item.prop=='profit'">
+                  {{ (scope.row.price&&scope.row.cost)?Number(scope.row.price)-Number(scope.row.cost)+'':'' }}
+                </template>
+                <template v-if="pageName=='quotation'&&item.prop=='margin'">
+                  {{ (scope.row.price&&scope.row.cost)?((Number(scope.row.price)-Number(scope.row.cost))*100/Number(scope.row.cost)).toFixed(2)+'%':'' }}
+                </template>
+                <template v-else>
+                  {{ scope.row[item.prop] }}
+                </template>
+              </span>
             </template>
+            <el-form-item
+              v-else-if="item.inputNumber && selectBox"
+              label=" "
+              :prop="'tableData.' + scope.$index + '.' + item.prop"
+              :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
+            >
+              <el-input-number
+                v-model="scope.row[item.prop]"
+                placeholder=""
+                :min="0"
+                :controls="false"
+                size="mini"
+                style="width: 100%; margin-right: 5px"
+                @change="
+                  (val) => {
+                    commonInputChange(val, item.prop, scope.row)
+                  }
+                "
+              ></el-input-number>
+            </el-form-item>
             <span v-else style="text-align: right">{{ scope.row[item.prop] }}</span>
           </template>
         </el-table-column>
+        <el-table-column  label="鎿嶄綔" width="40" align="center">
+          <template slot-scope="scope">
+            <el-button
+              type="text"
+              size="small"
+              @click="deleteClick(scope)"
+              >鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+        <slot name="tableButton" />
       </el-table>
     </el-form>
     <div v-if="!detailEnter" style="margin: 10px">
@@ -138,13 +183,13 @@
         >閲嶇畻</el-button
       >
     </div>
-    <div v-if="showSummary.total || showSummary.refundable" style="height: 42px; line-height: 42px">
+    <div v-if="false && (showSummary.total || showSummary.refundable)" style="height: 42px; line-height: 42px">
       <el-row :gutter="10">
-        <el-col v-if="showSummary.total" :span="2" :offset="22">
+        <el-col v-if="showSummary.total" :span="3" :offset="21">
           <span style="font-weight: bold">鍚堣</span>
           <span style="margin-left: 10px">{{ total }}</span>
         </el-col>
-        <el-col v-if="showSummary.refundable" :span="2" :offset="22">
+        <el-col v-if="showSummary.refundable" :span="3" :offset="21">
           <span style="font-weight: bold">搴旈��娆�</span>
           <span style="margin-left: 10px">0.00</span>
         </el-col>
@@ -169,6 +214,15 @@
     detailEnter: {
       type: Boolean,
       default: false
+    },
+    selectBox: {
+      type: Boolean,
+      default: false
+    },
+    // 閭d釜椤甸潰 鐢ㄦ潵鍒ゆ柇璁$畻鏂瑰紡
+    pageName:{
+      type:String,
+      default:''
     },
     productTableList: {
       type: Object,
@@ -211,7 +265,9 @@
     }
   },
   created() {
-    this.getProductList()
+    if (!this.selectBox) {
+      this.getProductList()
+    }
     this.tableList = this.productTableList
     if (this.tableList.tableData.length === 1 && this.tableList.tableData[0].name === "") {
       this.isRecalculate = false
@@ -227,12 +283,12 @@
         productName: "",
         productNumber: "",
         page: 1,
-        pageSize: 5
+        pageSize: 100
       }).then((res) => {
-        console.log(res.data)
-        if (res.data.code === 200) {
-          if (res.data.data.data && res.data.data.data.length > 0) {
-            this.productList = res.data.data.data
+        console.log(res, "浜у搧鍚嶇О")
+        if (res.code === 200) {
+          if (res.data.data && res.data.data.length > 0) {
+            this.productList = res.data.data
           }
         }
       })
@@ -240,6 +296,7 @@
     handleReserve(row) {
       return row._id ? row._id : row.id
     },
+    // 澶氶��
     handleSelectionChange(val) {
       this.$emit("getSelectArray", val)
     },
@@ -269,9 +326,13 @@
           sums[index] = "灏忚:"
           return
         }
-        const title = ["#", "浜у搧鍚嶇О"]
+        const title = ["#", "浜у搧鍚嶇О",'浜у搧缂栧彿','鍗曚綅','閿�鍞崟浠�','鎴愭湰鍗曚环']
         // 鍘婚櫎鏌愪簺涓嶉渶瑕佽绠楃殑鏁版嵁
         if (title.includes(column.label)) {
+          sums[index] = ""
+          return
+        }
+        if(this.pageName=='quotation'&&column.label=='姣涘埄'){
           sums[index] = ""
           return
         }
@@ -346,6 +407,13 @@
       this.isRecalculate = false
       this.$emit("emptyProductClick")
     },
+    // 鍒犻櫎
+    deleteClick(scope){
+      this.tableList.tableData.splice(scope.$index,1)
+      this.$forceUpdate();
+      this.$message.success('鍒犻櫎闄ゆ垚鍔燂紒')
+      this.$emit("deleteClick",scope)
+    },
     // 閲嶇畻
     recalculate() {
       this.$confirm("纭畾瑕侀噸绠楁槑缁嗘墍鏈夎?", "鎻愮ず", {
@@ -382,6 +450,7 @@
           ite.number = item.number
           ite.price = item.price
           ite.total = item.amount ? item.amount * item.price : 1 * item.price
+          ite.unit = item.unit
         }
       })
     },
@@ -403,6 +472,7 @@
           ite.number = item.number
           ite.price = item.price
           ite.total = item.amount ? item.amount * item.price : 1 * item.price
+          ite.unit = item.unit
         }
       })
     },
@@ -416,10 +486,22 @@
           ite.number = ""
           ite.price = 0
           ite.total = 0
+          ite.unit = ""
         }
       })
       this.$emit("clearupProduct", this.tableList.tableData)
     }
+    // 澶氶�夎缃凡閫変腑
+    // toggleSelection(rows) {
+    //   console.log("88888888888888888888888888888888888888888")
+    //   console.log(rows)
+    //   if (rows) {
+    //     rows.forEach((row) => {
+    //       this.$refs.fromTable.toggleRowSelection(row, true)
+    //       console.log(row)
+    //     })
+    //   }
+    // }
   }
 }
 </script>
@@ -427,6 +509,7 @@
 <!-- Add "scoped" attribute to limit CSS to this component only -->
 <style lang="scss" scoped>
 .page-view {
+  
   .el-form-item {
     margin-bottom: 0;
     .custom-name {

--
Gitblit v1.8.0