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