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