From fb20919d312b7f3bf81805eda670f42fa2d18e39 Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期三, 28 二月 2024 14:38:41 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/web/crm-web

---
 src/views/service/serviceContract/AddServiceContractDialog.vue |  123 +++++++++------
 src/components/makepager/TableCommonView.vue                   |   17 +
 src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue |   35 +++-
 src/components/makepager/CommonFormTableView.vue               |  185 +++++++++++++----------
 src/views/other/commonDialog/SelectCommonDialog.vue            |   87 +++++-----
 5 files changed, 264 insertions(+), 183 deletions(-)

diff --git a/src/components/makepager/CommonFormTableView.vue b/src/components/makepager/CommonFormTableView.vue
index 4476b95..6cffcd6 100644
--- a/src/components/makepager/CommonFormTableView.vue
+++ b/src/components/makepager/CommonFormTableView.vue
@@ -44,7 +44,7 @@
                   :disabled="!isOperate"
                   @change="
                     (val) => {
-                      commonInputChange(val, item.prop, scope.row,scope)
+                      commonInputChange(val, item.prop, scope.row, scope)
                     }
                   "
                 ></el-input>
@@ -67,15 +67,23 @@
                       }
                     "
                   ></el-autocomplete>
-                  <div class="common-select-btn" v-if="isOperate" @click="selClientClick(scope.row, item.prop)">
-                    <i class="el-icon-circle-plus-outline" title="閫夋嫨"></i>
+
+                  <div
+                    v-if="scope.row[item.prop] && scope.row[item.prop].length > 0 && isOperate"
+                    class="common-select-btn"
+                    @click="handleEditClient(scope, item.prop)"
+                  >
+                    <i class="el-icon-edit" title="缂栬緫"></i>
                   </div>
                   <div
-                    v-if="scope.row[item.prop] && scope.row[item.prop].length > 0&&isOperate"
+                    v-if="scope.row[item.prop] && scope.row[item.prop].length > 0 && isOperate"
                     class="common-select-btn"
-                    @click="clearupClient(scope.row)"
+                    @click="clearupClient(scope)"
                   >
                     <i class="el-icon-remove-outline" title="娓呴櫎"></i>
+                  </div>
+                  <div class="common-select-btn" v-else @click="selClientClick(scope, item.prop)">
+                    <i class="el-icon-circle-plus-outline" title="閫夋嫨"></i>
                   </div>
                 </div>
               </el-form-item>
@@ -86,7 +94,13 @@
                 :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
               >
                 <!-- <el-input v-model.trim="scope.row[item.prop]" maxlength="50" size="mini"></el-input> -->
-                <el-date-picker :disabled="!isOperate" v-model="scope.row[item.prop]" type="date" size="mini" style="width: 110px">
+                <el-date-picker
+                  :disabled="!isOperate"
+                  v-model="scope.row[item.prop]"
+                  type="date"
+                  size="mini"
+                  style="width: 110px"
+                >
                 </el-date-picker>
               </el-form-item>
               <el-form-item
@@ -105,7 +119,7 @@
                   style="width: 100%; margin-right: 5px"
                   @change="
                     (val) => {
-                      commonInputChange(val, item.prop, scope.row,scope)
+                      commonInputChange(val, item.prop, scope.row, scope)
                     }
                   "
                 ></el-input-number>
@@ -127,7 +141,7 @@
                   style="width: 100%; margin-right: 5px"
                   @change="
                     (val) => {
-                      commonInputChange(val, item.prop, scope.row,scope)
+                      commonInputChange(val, item.prop, scope.row, scope)
                     }
                   "
                 ></el-input-number>
@@ -154,7 +168,7 @@
                 style="width: 100%; margin-right: 5px"
                 @change="
                   (val) => {
-                    commonInputChange(val, item.prop, scope.row,scope)
+                    commonInputChange(val, item.prop, scope.row, scope)
                   }
                 "
               ></el-input-number>
@@ -162,14 +176,9 @@
             <span v-else style="text-align: right">{{ scope.row[item.prop] }}</span>
           </template>
         </el-table-column>
-        <el-table-column  label="鎿嶄綔" width="40" v-if="!detailEnter" align="center">
+        <el-table-column label="鎿嶄綔" width="40" v-if="!detailEnter" align="center">
           <template slot-scope="scope">
-            <el-button
-              type="text"
-              size="small"
-              :disabled="!isOperate"
-              @click="deleteClick(scope)"
-              >鍒犻櫎</el-button>
+            <el-button type="text" size="small" :disabled="!isOperate" @click="deleteClick(scope)">鍒犻櫎</el-button>
           </template>
         </el-table-column>
         <slot name="tableButton" />
@@ -179,7 +188,7 @@
       <el-button size="small" type="primary" :disabled="!isOperate" @click="add">鏂板</el-button>
       <!-- <el-button size="small" type="primary" disabled>瀵煎叆鏄庣粏</el-button> -->
       <el-button size="small" type="primary" :disabled="!isOperate" @click="empty">娓呯┖</el-button>
-      <el-button size="small" type="primary" @click="recalculate" :disabled="(isRecalculate&&!isOperate) ? false : true"
+      <el-button size="small" type="primary" @click="recalculate" :disabled="isRecalculate && !isOperate ? false : true"
         >閲嶇畻</el-button
       >
     </div>
@@ -199,6 +208,7 @@
     <SelectCommonDialog
       v-if="editSelCommonConfig.editVisible"
       :edit-common-config="editSelCommonConfig"
+      :selectBoxList="tableList.tableData"
       :quotationNumber="quotationNumber"
       @selClient="selClient"
       @getSelectArray="getSelectArray"
@@ -222,24 +232,24 @@
       default: false
     },
     // 閭d釜椤甸潰 鐢ㄦ潵鍒ゆ柇璁$畻鏂瑰紡
-    pageName:{
-      type:String,
-      default:''
+    pageName: {
+      type: String,
+      default: ""
     },
     // 鍒楄〃鏂板鏄惁澶氶��
-    addTypeIdMultiple:{
-      type:Boolean,
-      default:false,
+    addTypeIdMultiple: {
+      type: Boolean,
+      default: false
     },
     // 鏍规嵁鎶ヤ环鍗曟煡璇骇鍝�
-    quotationNumber:{
-      type:[String,Number],
-      default:''
+    quotationNumber: {
+      type: [String, Number],
+      default: ""
     },
-    // 鏄惁鍙互鎿嶄綔 娣诲姞绛� 
-    isOperate:{
-      type:Boolean,
-      default:true,
+    // 鏄惁鍙互鎿嶄綔 娣诲姞绛�
+    isOperate: {
+      type: Boolean,
+      default: true
     },
     productTableList: {
       type: Object,
@@ -274,7 +284,7 @@
       tableList: [],
       editSelCommonConfig: {
         editVisible: false,
-        isSelectBox:false,
+        isSelectBox: false,
         title: "",
         infomation: {}
       },
@@ -344,13 +354,13 @@
           sums[index] = "灏忚:"
           return
         }
-        const title = ["#", "浜у搧鍚嶇О",'浜у搧缂栧彿','鍗曚綅','閿�鍞崟浠�','鎴愭湰鍗曚环']
+        const title = ["#", "浜у搧鍚嶇О", "浜у搧缂栧彿", "鍗曚綅", "閿�鍞崟浠�", "鎴愭湰鍗曚环"]
         // 鍘婚櫎鏌愪簺涓嶉渶瑕佽绠楃殑鏁版嵁
         if (title.includes(column.label)) {
           sums[index] = ""
           return
         }
-        if(this.pageName=='quotation'&&column.label=='姣涘埄'){
+        if (this.pageName == "quotation" && column.label == "姣涘埄") {
           sums[index] = ""
           return
         }
@@ -406,15 +416,16 @@
     },
     // 鏂板
     add() {
-      if(this.addTypeIdMultiple){
+      if (this.addTypeIdMultiple) {
+        this.productIndex = this.tableList.tableData.length
         this.editSelCommonConfig.title = "浜у搧鍚嶇О"
-        this.editSelCommonConfig.isSelectBox=true;
+        this.editSelCommonConfig.isSelectBox = true
         this.editSelCommonConfig.editVisible = true
-      }else{
+      } else {
         this.$emit("addProductClick")
       }
     },
-    commonInputChange(val, prop, row,scope) {
+    commonInputChange(val, prop, row, scope) {
       if (prop === "amount") {
         this.tableList.tableData.map((ite) => {
           if (ite.name === row.name) {
@@ -422,27 +433,28 @@
           }
         })
       }
-      if(this.pageName=='quotation'&&prop=='cost'&&scope.row.cost){
-        let value=scope.row.cost
-        let reg2 =
-            /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;
-          if (!reg2.test(value)||value==0) {
-            this.$message.error("鎴愭湰鍗曚环闇�瑕佸~鍐欏ぇ浜�0鐨�2浣嶅皬鏁帮紒")
-            return true;
-          } 
+      if (this.pageName == "quotation" && prop == "cost" && scope.row.cost) {
+        let value = scope.row.cost
+        let reg2 = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/
+        if (!reg2.test(value) || value == 0) {
+          this.$message.error("鎴愭湰鍗曚环闇�瑕佸~鍐欏ぇ浜�0鐨�2浣嶅皬鏁帮紒")
+          return true
+        }
         this.$forceUpdate()
       }
-      if(this.pageName=='quotation'){
-        if(prop=='price'||prop=='cost'){
-          if(scope.row.price&&scope.row.cost){
-            let profit=Number(scope.row.price)-Number(scope.row.cost)
-            scope.row.profit=profit+'';
-            let margin=((Number(scope.row.price)-Number(scope.row.cost))*100/Number(scope.row.cost)).toFixed(2)
-            scope.row.margin=margin+'';
+      if (this.pageName == "quotation") {
+        if (prop == "price" || prop == "cost") {
+          if (scope.row.price && scope.row.cost) {
+            let profit = Number(scope.row.price) - Number(scope.row.cost)
+            scope.row.profit = profit + ""
+            let margin = (((Number(scope.row.price) - Number(scope.row.cost)) * 100) / Number(scope.row.cost)).toFixed(
+              2
+            )
+            scope.row.margin = margin + ""
           }
         }
       }
-      this.$emit("inputContent", val, prop, row,scope)
+      this.$emit("inputContent", val, prop, row, scope)
     },
     // 娓呯┖
     empty() {
@@ -450,11 +462,11 @@
       this.$emit("emptyProductClick")
     },
     // 鍒犻櫎
-    deleteClick(scope){
-      this.tableList.tableData.splice(scope.$index,1)
-      this.$forceUpdate();
-      this.$message.success('鍒犻櫎鎴愬姛锛�')
-      this.$emit("deleteClick",scope)
+    deleteClick(scope) {
+      this.tableList.tableData.splice(scope.$index, 1)
+      this.$forceUpdate()
+      this.$message.success("鍒犻櫎鎴愬姛锛�")
+      this.$emit("deleteClick", scope)
     },
     // 閲嶇畻
     recalculate() {
@@ -496,35 +508,47 @@
         }
       })
     },
-    selClientClick(row, prop) {
-      console.log(row, prop)
-      this.productIndex = row.productId - 1
+    // 鏂板
+    selClientClick(scope, prop) {
+      console.log(scope, prop)
+      this.productIndex = scope.$index
       this.editSelCommonConfig.title = "浜у搧鍚嶇О"
-      this.editSelCommonConfig.isSelectBox=false;
+      this.editSelCommonConfig.isSelectBox = true
+      this.editSelCommonConfig.editVisible = true
+    },
+    // 缂栬緫
+    handleEditClient(scope, prop) {
+      console.log(scope, prop)
+      this.productIndex = scope.$index
+      this.editSelCommonConfig.title = "浜у搧鍚嶇О"
+      this.editSelCommonConfig.isSelectBox = false
       this.editSelCommonConfig.editVisible = true
     },
     selClient(item) {
-      console.log(item)
-      console.log(this.tableList.tableData)
-      this.isRecalculate = true
-      // this.editConfig.infomation.client_name = row.name
-      this.tableList.tableData.map((ite, index) => {
-        if (index === this.productIndex) {
-          ite.name = item.name
-          ite.amount = item.amount || 1
-          ite.number = item.number
-          ite.price = item.price
-          ite.total = item.amount ? item.amount * item.price : 1 * item.price
-          ite.unit = item.unit
-        }
-      })
+      let list = this.tableList.tableData.map((item) => item.number)
+      if (list.findIndex((v) => v == item.number) == -1) {
+        this.isRecalculate = true
+        // this.editConfig.infomation.client_name = row.name
+        this.tableList.tableData.map((ite, index) => {
+          if (index === this.productIndex) {
+            ite.name = item.name
+            ite.amount = item.amount || 1
+            ite.number = item.number
+            ite.price = item.price
+            ite.total = item.amount ? item.amount * item.price : 1 * item.price
+            ite.unit = item.unit
+          }
+        })
+      } else {
+        this.$message.error("涓嶈兘閫夋嫨閲嶅鐨勪骇鍝侊紝 璇烽噸鏂伴�夋嫨")
+      }
     },
-    getSelectArray(val){
-      this.$emit("getSelectArray",val)
+    getSelectArray(val) {
+      this.$emit("getSelectArray", val, this.productIndex)
     },
     // 娓呴櫎宸查�夋嫨鐢ㄦ埛
-    clearupClient(row) {
-      this.productIndex = row.productId - 1
+    clearupClient(scope) {
+      this.productIndex = scope.$index
       this.tableList.tableData.map((ite, index) => {
         if (index === this.productIndex) {
           ite.name = ""
@@ -555,7 +579,6 @@
 <!-- Add "scoped" attribute to limit CSS to this component only -->
 <style lang="scss" scoped>
 .page-view {
-  
   .el-form-item {
     margin-bottom: 0;
     .custom-name {
diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue
index 584763a..50ac390 100644
--- a/src/components/makepager/TableCommonView.vue
+++ b/src/components/makepager/TableCommonView.vue
@@ -19,7 +19,7 @@
       @row-click="tableRowClick"
       :row-class-name="tableRowClassName"
     >
-      <el-table-column v-if="selectBox" type="selection" width="40"> </el-table-column>
+      <el-table-column v-if="selectBox" type="selection" width="40" :selectable="selectable"> </el-table-column>
       <el-table-column v-if="tableList.selectIndex" type="index" label="搴忓彿" width="50"></el-table-column>
       <el-table-column
         v-for="(item, i) in tableList.tableColumn"
@@ -185,11 +185,16 @@
         return {}
       }
     },
-    loading:{
+    loading: {
       type: Boolean,
       default: false
+    },
+    selectBoxList: {
+      type: Array,
+      default: () => []
     }
   },
+
   data() {
     return {
       iscolopen: false,
@@ -391,6 +396,14 @@
         }
       }
       this.$emit("tableRowClassName", row)
+    },
+    selectable(row) {
+      let list = this.selectBoxList.map((item) => item.number)
+      if (list.findIndex((v) => v == row.number) == -1) {
+        return true
+      } else {
+        return false
+      }
     }
   }
 }
diff --git a/src/views/other/commonDialog/SelectCommonDialog.vue b/src/views/other/commonDialog/SelectCommonDialog.vue
index 237f33b..3603f67 100644
--- a/src/views/other/commonDialog/SelectCommonDialog.vue
+++ b/src/views/other/commonDialog/SelectCommonDialog.vue
@@ -29,10 +29,11 @@
           </div>
         </div>
         <TableCommonView
-        class="bg-list"
+          class="bg-list"
           ref="tableListRef"
           :table-list="tableList"
           :select-box="editCommonConfig.isSelectBox"
+          :selectBoxList="selectBoxList"
           @selCommonClick="selNameClick"
           @selTableCol="selTableCol"
           @getSelectArray="getSelectArray"
@@ -72,20 +73,24 @@
       default: () => {
         return {
           editVisible: false,
-          isSelectBox:false,
+          isSelectBox: false,
           title: "",
           clientId: 0,
-          isRequest:true,
+          isRequest: true,
           client_name: "",
           tableInfomation: []
         }
       }
     },
     // 鏍规嵁鎶ヤ环鍗曟煡璇骇鍝�
-    quotationNumber:{
-      type:[String,Number],
-      default:''
+    quotationNumber: {
+      type: [String, Number],
+      default: ""
     },
+    selectBoxList: {
+      type: Array,
+      default: () => []
+    }
   },
   components: {},
   computed: {},
@@ -106,7 +111,7 @@
       keywordType: "",
       tableColumn: [],
       showCol: [],
-      selectArray:[],
+      selectArray: []
     }
   },
   created() {
@@ -177,9 +182,9 @@
           { label: "瀹㈡埛鍚嶇О", prop: "client_name" },
           { label: "鎵�灞炰笟鍔℃満浼�", prop: "sale_chance_name" },
           { label: "鎶ヤ环鍗曠姸鎬�", prop: "quotationStatus" },
-          { label: "鍚堣", prop: "amountTotal" },
+          { label: "鍚堣", prop: "amountTotal" }
         ]
-        this.showCol = ["鎶ヤ环鍗曞彿","鎶ヤ环鍚嶇О","閿�鍞礋璐d汉",'瀹㈡埛鍚嶇О','鎵�灞炰笟鍔℃満浼�','鎶ヤ环鍗曠姸鎬�','鍚堣']
+        this.showCol = ["鎶ヤ环鍗曞彿", "鎶ヤ环鍚嶇О", "閿�鍞礋璐d汉", "瀹㈡埛鍚嶇О", "鎵�灞炰笟鍔℃満浼�", "鎶ヤ环鍗曠姸鎬�", "鍚堣"]
         this.tableList = {
           selectIndex: true,
 
@@ -210,12 +215,14 @@
         this.searchSel = { value: "serviceNumber", label: "鏈嶅姟鍗曠紪鍙�" }
       } else if (this.editConfig.title === "浜у搧鍚嶇О") {
         this.tableColumn = [
-          { label: "浜у搧鍚嶇О", prop: "name", isClick: this.editCommonConfig.isSelectBox?false:true, default: true }, // 浜у搧鍚嶇О
+          { label: "浜у搧鍚嶇О", prop: "name", isClick: this.editCommonConfig.isSelectBox ? false : true, default: true }, // 浜у搧鍚嶇О
           { label: "浜у搧缂栧彿", prop: "number" },
-          { label: "瑙勬牸", prop: "specs" },
+          { label: "閿�鍞崟浠�", prop: "price" },
+          { label: "鍗曚綅", prop: "unit" },
+          { label: "浜у搧瑙勬牸", prop: "specs" },
           { label: "鍨嬪彿", prop: "type" }
         ]
-        this.showCol = ["浜у搧鍚嶇О", "浜у搧缂栧彿",'瑙勬牸','鍨嬪彿']
+        this.showCol = ["浜у搧鍚嶇О", "浜у搧缂栧彿", "閿�鍞崟浠�", "鍗曚綅", "浜у搧瑙勬牸", "鍨嬪彿"]
         this.tableList = {
           selectIndex: true,
           tableInfomation: [],
@@ -276,11 +283,11 @@
       this.tableList.tableColumn = this.setColumnVisible(val)
     },
     // 鍒楄〃澶氶��
-    getSelectArray(val){
-      this.selectArray=val;
+    getSelectArray(val) {
+      this.selectArray = val
     },
-    saveClick(){
-      this.$emit('getSelectArray',this.selectArray)
+    saveClick() {
+      this.$emit("getSelectArray", this.selectArray)
       this.editConfig.editVisible = false
     },
     // 璇锋眰鏁版嵁
@@ -357,18 +364,18 @@
     },
     // 鎶ヤ环鍗�
     async getQuotationList() {
-      if(!this.editConfig.isRequest){
-        this.tableList.tableInfomation =this.editConfig.tableInfomation.map((item) => {
-              return {
-                ...item,
-                client_name: item.client.name,
-                sale_chance_name: item.sale_chance.name,
-                member_name: item.member.username,
-                quotationStatus: item.quotation_status.name
-              }
-            })
-        this.pagerOptions.totalCount =this.editConfig.count?this.editConfig.count:0
-        return true;
+      if (!this.editConfig.isRequest) {
+        this.tableList.tableInfomation = this.editConfig.tableInfomation.map((item) => {
+          return {
+            ...item,
+            client_name: item.client.name,
+            sale_chance_name: item.sale_chance.name,
+            member_name: item.member.username,
+            quotationStatus: item.quotation_status.name
+          }
+        })
+        this.pagerOptions.totalCount = this.editConfig.count ? this.editConfig.count : 0
+        return true
       }
       await getQuotationList({
         search_map: this.search_map,
@@ -398,7 +405,7 @@
     // 閿�鍞槑缁嗗崟
     async getSalesDetailsList() {
       await getSalesDetailsList({
-        clientId:Number(this.editCommonConfig.clientId),
+        clientId: Number(this.editCommonConfig.clientId),
         page: this.pagerOptions.currPage,
         pageSize: this.pagerOptions.pageSize
       }).then((res) => {
@@ -453,15 +460,15 @@
     },
     // 浜у搧鍚嶇О
     async getProductList() {
-      let params={
+      let params = {
         productName: this.keywordType === "浜у搧鍚嶇О" ? this.keyword : "",
         productNumber: this.keywordType === "浜у搧缂栧彿" ? this.keyword : "",
         page: this.pagerOptions.currPage,
         pageSize: this.pagerOptions.pageSize
       }
-       // 鏍规嵁鎶ヤ环鍗曟煡璇骇鍝�
-      if(this.quotationNumber){
-        params.quotationNumber=this.quotationNumber
+      // 鏍规嵁鎶ヤ环鍗曟煡璇骇鍝�
+      if (this.quotationNumber) {
+        params.quotationNumber = this.quotationNumber
       }
       await getProductList(params).then((res) => {
         console.log(res.data)
@@ -483,7 +490,7 @@
     },
     async getSalesReturnList() {
       await getSalesReturnList({
-        clientId:Number(this.editCommonConfig.clientId),
+        clientId: Number(this.editCommonConfig.clientId),
         page: this.pagerOptions.currPage,
         pageSize: this.pagerOptions.pageSize
       }).then((res) => {
@@ -532,8 +539,8 @@
       this.editConfig.editVisible = false
     },
     selNameClick(row) {
-      if(this.editCommonConfig.isSelectBox){
-        return true;
+      if (this.editCommonConfig.isSelectBox) {
+        return true
       }
       this.editConfig.editVisible = false
       if (this.editConfig.title === "閿�鍞�诲崟") {
@@ -578,9 +585,9 @@
 <style lang="scss" scoped>
 .bg-view {
   margin: 10px;
-  .bg-list{
-    min-height:370px;
-    }
+  .bg-list {
+    min-height: 370px;
+  }
   .query-bg {
     margin-left: -20px;
     margin-bottom: 10px;
@@ -592,7 +599,7 @@
         width: 100px;
       }
     }
-   
+
     .btn {
       float: right;
     }
diff --git a/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue b/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue
index 35cbbe7..62d4db1 100644
--- a/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue
+++ b/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue
@@ -327,9 +327,11 @@
           <div class="product-view">
             <CommonFormTableView
               :show-summary="showSummary"
+              :addTypeIdMultiple="true"
               :product-table-list="productTableList"
               @inputContent="inputContent"
               @addProductClick="addProductClick"
+              @getSelectArray="getSelectArray"
               @emptyProductClick="emptyProductClick"
               @recalculateProductClick="recalculateProductClick"
               @clearupProduct="clearupProduct"
@@ -1000,17 +1002,28 @@
     },
     // 浜у搧鏂板
     addProductClick() {
-      this.productId++
-      this.tableData.push({
-        productId: this.productId,
-        id: 0,
-        amount: 0,
-        desc: "",
-        name: "",
-        number: "",
-        price: 0,
-        total: 0
-      })
+      // this.productId++
+      // this.tableData.push({
+      //   productId: this.productId,
+      //   id: 0,
+      //   amount: 0,
+      //   desc: "",
+      //   name: "",
+      //   number: "",
+      //   price: 0,
+      //   total: 0
+      // })
+      // this.showSummary.show = true
+    },
+    // 鏂板鏂瑰紡淇敼
+    getSelectArray(val) {
+      if (val.length > 0) {
+        val.map((item, index) => {
+          item.productId = this.tableData.length + index + 1
+        })
+      }
+      this.tableData = this.tableData.concat(val)
+      this.productTableList.tableData = this.tableData
       this.showSummary.show = true
     },
     //  浜у搧娓呯┖
diff --git a/src/views/service/serviceContract/AddServiceContractDialog.vue b/src/views/service/serviceContract/AddServiceContractDialog.vue
index f387206..4aed079 100644
--- a/src/views/service/serviceContract/AddServiceContractDialog.vue
+++ b/src/views/service/serviceContract/AddServiceContractDialog.vue
@@ -368,9 +368,11 @@
           <div class="product-view">
             <CommonFormTableView
               :show-summary="showSummary"
+              :addTypeIdMultiple="true"
               :product-table-list="productTableList"
               @inputContent="inputContent"
               @addProductClick="addProductClick"
+              @getSelectArray="getSelectArray"
               @emptyProductClick="emptyProductClick"
               @recalculateProductClick="recalculateProductClick"
               @clearupProduct="clearupProduct"
@@ -613,46 +615,52 @@
       this.$refs[formName].validate((valid) => {
         if (valid) {
           console.log(this.editConfig.infomation)
-          for (let i = 0; i < this.tableData.length; i++) {
-            if (this.tableData[i].name.length === 0) {
-              this.isNoProduct = true
-              break
-            } else {
-              this.isNoProduct = false
-            }
-          }
-          if (this.isNoProduct) {
-            this.$message.error("浜у搧鍚嶇О涓嶈兘涓虹┖")
+          // for (let i = 0; i < this.tableData.length; i++) {
+          //   if (this.tableData[i].name.length === 0) {
+          //     this.isNoProduct = true
+          //     break
+          //   } else {
+          //     this.isNoProduct = false
+          //   }
+          // }
+          // if (this.isNoProduct) {
+          //   this.$message.error("浜у搧鍚嶇О涓嶈兘涓虹┖")
+          // } else {
+          const params = this.saveParams()
+          if (this.editConfig.title === "鏂板缓") {
+            getAddServiceContract(params).then((res) => {
+              console.log(res)
+              this.editConfig.visible = false
+              if (res.code === 200) {
+                this.$message.success("娣诲姞鎴愬姛")
+                this.$parent.getData()
+              }
+            })
           } else {
-            const params = this.saveParams()
-            if (this.editConfig.title === "鏂板缓") {
-              getAddServiceContract(params).then((res) => {
-                console.log(res)
-                this.editConfig.visible = false
-                if (res.code === 200) {
-                  this.$message.success("娣诲姞鎴愬姛")
-                  this.$parent.getData()
-                }
-              })
-            } else {
-              getUpdateServiceContract(params).then((res) => {
-                console.log(res)
-                this.editConfig.visible = false
-                if (res.code === 200) {
-                  this.$message.success("缂栬緫鎴愬姛")
-                  this.$parent.getData()
-                }
-              })
-            }
+            getUpdateServiceContract(params).then((res) => {
+              console.log(res)
+              this.editConfig.visible = false
+              if (res.code === 200) {
+                this.$message.success("缂栬緫鎴愬姛")
+                this.$parent.getData()
+              }
+            })
           }
-        } else {
-          console.log("error submit")
-          return false
         }
+        // } else {
+        //   console.log("error submit")
+        //   return false
+        // }
       })
     },
     saveParams() {
       let data = this.editConfig.infomation
+      let products = []
+      this.tableData.map((item) => {
+        if (item.number.length > 0) {
+          products.push(item)
+        }
+      })
       let params = {
         id: this.editConfig.title === "鏂板缓" ? 0 : data.id,
         clientId: this.clientId || 0,
@@ -660,7 +668,7 @@
         endTime: data.endTime || "",
         memberId: data.memberId || 0,
         number: data.number || "",
-        products: this.tableData,
+        products: products,
         quotationId: this.quotationId || 0,
         remark: data.remark || "",
         saleChanceId: this.saleChanceId || 0,
@@ -800,8 +808,9 @@
       }
       this.productTableList = {
         tableData: this.tableData,
+        isReturn: true,
         tableColumn: [
-          { label: "#", prop: "productId", width: 40 },
+          // { label: "#", prop: "productId", width: 40 },
           { label: "浜у搧鍚嶇О", prop: "name", productName: true, isRequird: true },
           { label: "浜у搧缂栧彿", prop: "number" },
           { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true },
@@ -813,27 +822,43 @@
     },
     // 浜у搧鍒楄〃杈撳叆
     inputContent(val, prop, row) {
-      this.productId = row.productId
+      // this.productId = row.productId
       this.tableData.map((item) => {
-        if (item.productId === row.productId) {
+        if (item.number === row.number) {
           item[prop] = val
         }
       })
     },
     // 浜у搧鏂板
     addProductClick() {
-      this.productId++
-      this.tableData.push({
-        productId: this.productId,
-        id: 0,
-        amount: 0,
-        desc: "",
-        name: "",
-        number: "",
-        price: 0,
-        total: 0,
-        unit: ""
-      })
+      // this.productId++
+      // this.tableData.push({
+      //   productId: this.productId,
+      //   id: 0,
+      //   amount: 0,
+      //   desc: "",
+      //   name: "",
+      //   number: "",
+      //   price: 0,
+      //   total: 0,
+      //   unit: ""
+      // })
+      // this.showSummary.show = true
+    },
+    // 鏂板鏂瑰紡淇敼
+    getSelectArray(val, index) {
+      if (this.tableData.length == 1 && this.tableData[0].number.length == 0) {
+        this.tableData = []
+      }
+      if (index < this.tableData.length) {
+        this.tableData.splice(index, 1)
+        val.map((item, ind) => {
+          this.tableData.splice(index + ind, 0, item)
+        })
+      } else {
+        this.tableData = this.tableData.concat(val)
+      }
+      this.productTableList.tableData = this.tableData
       this.showSummary.show = true
     },
     //  浜у搧娓呯┖

--
Gitblit v1.8.0