From 979d725972cf15470422039eff86206398562d93 Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期四, 21 十二月 2023 15:38:36 +0800
Subject: [PATCH] 报价单 销售机会的必填和非必填从自动获取编码接口的header获取,对应的需要修改拦截器里方法

---
 src/common/untils/request.js                           |    6 +
 src/api/common/standard.js                             |   13 ----
 src/views/sales/quotation/AddQuotationDialog.vue       |   25 +++++--
 src/components/makepager/CommonFormTableView.vue       |   40 ++++++++++++
 src/views/sales/salesDetails/AddSalesDetailsDialog.vue |   14 ++--
 src/components/makepager/mixin/codeMixin.js            |    9 ++
 src/router/index.js                                    |    6 +-
 src/views/sales/quotation/index.vue                    |    9 +-
 8 files changed, 83 insertions(+), 39 deletions(-)

diff --git a/src/api/common/standard.js b/src/api/common/standard.js
index 57f78df..516fd3c 100644
--- a/src/api/common/standard.js
+++ b/src/api/common/standard.js
@@ -1,18 +1,6 @@
 import axios from "axios"
 import request from "@/common/untils/request.js"
-//缂栫爜瑙勮寖鍒楄〃
-// export function getCodeStandardList  (data)  {
-//   return request({
-//     url: "/api/code/getCodeList",
-//     method: "post",
-//     data,
-//   });
-// }
 export function getCodeStandardList(data) {
-  // return  axios.get(`/api/code/getCodeList`, {
-  //   params: data
-  // })
-
   return request({
     url: "/api/code/getCodeList",
     method: "get",
@@ -24,6 +12,7 @@
   return request({
     url: "/api/code/getAutoCode",
     method: "post",
+    IsHeader:true,
     data
   })
 }
diff --git a/src/common/untils/request.js b/src/common/untils/request.js
index e370bc2..9b321b2 100644
--- a/src/common/untils/request.js
+++ b/src/common/untils/request.js
@@ -64,7 +64,11 @@
   (res) => {
     /* //瀵瑰搷搴旀暟鎹仛浜涗簨 */
     if (res.data.code === 200) {
-      return res.data ? res.data : {}
+      if(res.config.IsHeader){
+        return res;
+      }else{
+        return res.data ? res.data : {}
+      }
     } else if (res.data.code === 700001 || res.data.code === 700005) {
       console.log("瀹㈡埛鍚嶇О閲嶅")
       return res
diff --git a/src/components/makepager/CommonFormTableView.vue b/src/components/makepager/CommonFormTableView.vue
index 364b17f..70fbd58 100644
--- a/src/components/makepager/CommonFormTableView.vue
+++ b/src/components/makepager/CommonFormTableView.vue
@@ -128,7 +128,17 @@
                   "
                 ></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"
@@ -151,6 +161,15 @@
               ></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" />
@@ -199,6 +218,11 @@
     selectBox: {
       type: Boolean,
       default: false
+    },
+    // 閭d釜椤甸潰 鐢ㄦ潵鍒ゆ柇璁$畻鏂瑰紡
+    pageName:{
+      type:String,
+      default:''
     },
     productTableList: {
       type: Object,
@@ -302,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
         }
@@ -378,6 +406,13 @@
     empty() {
       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() {
@@ -474,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 {
diff --git a/src/components/makepager/mixin/codeMixin.js b/src/components/makepager/mixin/codeMixin.js
index afd3d26..15c48a0 100644
--- a/src/components/makepager/mixin/codeMixin.js
+++ b/src/components/makepager/mixin/codeMixin.js
@@ -18,6 +18,10 @@
       objCode: { name: "", page: 0, pageSize: 0, type: "璺熻繘璁板綍缂栫爜", codeStandID: "" },
       codeRule: {},
       codeLength: 0,
+      // header澶寸殑鍙傛暟
+      autoCodeHeadersObj:{
+        xsjh:'',
+      }
     }
   },
 
@@ -91,8 +95,9 @@
     async getAutoCodeValue() {
       if(Object.keys(this.codeRule).length>0){
         const res = await getAutoCode(this.codeRule);
-        if (res.code == 200) {
-          this.$set(this.editConfig.infomation, 'number', res.data?res.data:'')
+        this.autoCodeHeadersObj=res.headers
+        if (res.data.code == 200) {
+          this.$set(this.editConfig.infomation, 'number', res.data.data?res.data.data:'')
         }else{
           this.$set(this.editConfig.infomation, 'number', this.codeRule.AutoRule.PrefixValue?this.codeRule.AutoRule.PrefixValue:'')
         }
diff --git a/src/router/index.js b/src/router/index.js
index 3115976..e0ed381 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -140,9 +140,9 @@
     const result = await hasPermission(to.path);
     console.log(result,"result")
     next();
-    if (!isSkip) {
-      next('/noData')
-    }
+    // if (!isSkip) {
+    //   next('/noData')
+    // }
   } catch (error) {
     console.error('Error in navigation guard:', error);
     next(); 
diff --git a/src/views/sales/quotation/AddQuotationDialog.vue b/src/views/sales/quotation/AddQuotationDialog.vue
index bbe9a7f..d272c43 100644
--- a/src/views/sales/quotation/AddQuotationDialog.vue
+++ b/src/views/sales/quotation/AddQuotationDialog.vue
@@ -165,7 +165,8 @@
                 </el-form-item>
               </el-col>
               <el-col :span="12">
-                <el-form-item label="閿�鍞満浼�" prop="sale_chance_name">
+                <el-form-item label="閿�鍞満浼�" prop="sale_chance_name"
+                :rules="[{ required: autoCodeHeadersObj.xsjh=='yes'?true:false, validator: this.checkChance, trigger: 'change' }]">
                   <div class="custom-name">
                     <el-autocomplete
                       v-model="editConfig.infomation.sale_chance_name"
@@ -248,6 +249,7 @@
           <div class="product-view">
             <CommonFormTableView
               :show-summary="showSummary"
+              pageName="quotation"
               :product-table-list="productTableList"
               @inputContent="inputContent"
               @addProductClick="addProductClick"
@@ -371,7 +373,7 @@
         number: [{ required: true, validator: this.validateCheckCode, trigger: ["blur", "change"] }],
         quotationName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
         quotation_status_id: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
-        sale_chance_name: [{ required: true, validator: this.checkChance, trigger: "change" }],
+        // sale_chance_name: [{ required: true, validator: this.checkChance, trigger: "change" }],
         member_id: [{ required: true, validator: this.validateMemberId, trigger: "change" }]
       },
       memberOptions: [],
@@ -383,7 +385,7 @@
         show: true,
         total: true,
         sumProp: ["Amount", "total"],
-        mergeNumber: 2
+        mergeNumber: 7
       },
       editSelectClientConfig: {
         editVisible: false,
@@ -422,7 +424,7 @@
       if (val) {
         this.formInfo()
       }
-    }
+    },
   },
   methods: {
     formInfo() {
@@ -627,11 +629,14 @@
         tableData: this.tableData,
         tableColumn: [
           { label: "#", prop: "productId", width: 40 },
-          { label: "浜у搧鍚嶇О", prop: "name", productName: true, isRequird: true },
+          { label: "浜у搧鍚嶇О", prop: "name", productName: true, isRequird: true,min:110, },
           { label: "浜у搧缂栧彿", prop: "number" },
-          { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true },
           { label: "鍗曚綅", prop: "unit" },
-          { label: "閿�鍞崟浠�", prop: "price", inputFloat: true },
+          { label: "閿�鍞崟浠�", prop: "price", inputFloat: true, isRequird: true },
+          { label: "鎴愭湰鍗曚环", prop: "cost",inputFloat: true  },
+          { label: "姣涘埄", prop: "profit" },
+          { label: "姣涘埄鐜�", prop: "margin",min:90},
+          { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true },
           { label: "浠风◣鍚堣", prop: "total", inputFloat: true }
         ]
       }
@@ -690,7 +695,11 @@
       if (this.editConfig.infomation.sale_chance_name && this.editConfig.infomation.sale_chance_name.length > 0) {
         callback()
       } else {
-        callback(new Error("璇烽�夋嫨閿�鍞満浼�"))
+        if(this.autoCodeHeadersObj.xsjh=='yes'){
+          callback(new Error("璇烽�夋嫨閿�鍞満浼�"))
+        }else{
+          callback()
+        }
       }
     },
     // 閿�鍞礋璐d汉鑷畾涔夋牎楠岃鍒�
diff --git a/src/views/sales/quotation/index.vue b/src/views/sales/quotation/index.vue
index e4b68f6..05e9396 100644
--- a/src/views/sales/quotation/index.vue
+++ b/src/views/sales/quotation/index.vue
@@ -326,12 +326,11 @@
     },
     // 缂栬緫
     handleClick(row) {
-      console.log(row)
-      this.editConfig.visible = true
       this.editConfig.title = "缂栬緫"
-      console.log("dddddddd")
-      console.log(row)
-      this.editConfig.infomation = { ...row, currency: "浜烘皯甯�" }
+      let params = JSON.parse(JSON.stringify(row));
+      this.editConfig.infomation = { ...params, currency: "浜烘皯甯�" }
+      console.log(this.editConfig.infomation.products,'===products')
+      this.editConfig.visible = true
     },
     // 鎵归噺鍒犻櫎
     delClick() {
diff --git a/src/views/sales/salesDetails/AddSalesDetailsDialog.vue b/src/views/sales/salesDetails/AddSalesDetailsDialog.vue
index fe511e5..490f363 100644
--- a/src/views/sales/salesDetails/AddSalesDetailsDialog.vue
+++ b/src/views/sales/salesDetails/AddSalesDetailsDialog.vue
@@ -90,9 +90,10 @@
                   </div>
                 </el-form-item>
               </el-col>
-
+             111: {{ autoCodeHeadersObj.Ywjh }}
               <el-col :span="12">
-                <el-form-item label="閿�鍞満浼�" prop="sale_chance_name">
+                <el-form-item label="閿�鍞満浼�" prop="sale_chance_name"
+                :rules="[{ required: autoCodeHeadersObj.Ywjh=='yes'?true:false, message: '璇烽�夋嫨閿�鍞満浼�', trigger: 'change' }]">
                   <div class="custom-name">
                     <el-autocomplete
                       style="width: 100%"
@@ -161,7 +162,8 @@
                 </el-form-item>
               </el-col> -->
               <el-col :span="12">
-                <el-form-item label="閿�鍞姤浠峰崟" prop="quotation_number">
+                <el-form-item label="閿�鍞姤浠峰崟" prop="quotation_number"
+                :rules="[{ required: autoCodeHeadersObj.Bjd=='yes'?true:false, message: '璇烽�夋嫨閿�鍞姤浠峰崟', trigger: 'change' }]">
                   <div class="custom-name">
                     <el-autocomplete
                       v-model="editConfig.infomation.quotation_number"
@@ -539,8 +541,8 @@
         number: [{ required: true, validator: this.validateCheckCode, trigger: ["blur", "change"] }],
         signTime: [{ required: true, message: "璇烽�夋嫨绛剧害鏃ユ湡", trigger: "change" }],
         memberId: [{ required: true, validator: this.validateMemberId, trigger: "change" }],
-        sale_chance_name: [{ required: true, message: "璇烽�夋嫨閿�鍞満浼�", trigger: "change" }],
-        quotation_number: [{ required: true, message: "璇烽�夋嫨閿�鍞姤浠峰崟", trigger: "change" }],
+        // sale_chance_name: [{ required: true, message: "璇烽�夋嫨閿�鍞満浼�", trigger: "change" }],
+        // quotation_number: [{ required: true, message: "璇烽�夋嫨閿�鍞姤浠峰崟", trigger: "change" }],
         deliveryDate: [{ required: true, message: "璇烽�夋嫨浜や粯鏃ユ湡", trigger: "change" }]
         // approvalOpinion: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }]
       },
@@ -946,7 +948,7 @@
           { label: "浜у搧缂栧彿", prop: "number" },
           { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true },
           { label: "鍗曚綅", prop: "unit" },
-          { label: "閿�鍞崟浠�", prop: "price" },
+          { label: "閿�鍞崟浠�", prop: "price", isRequird: true },
           { label: "浠风◣鍚堣", prop: "total" }
         ]
       }

--
Gitblit v1.8.0