From e2cb49cfe7845cfdd3784da7172a6b666f9fbf75 Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期四, 21 十二月 2023 17:12:47 +0800
Subject: [PATCH] 销售明细单的产品交互功能改+报价单是否必填判断产品是否按报价单添加查询+根据报价单查询产品的接口联调
---
src/components/makepager/CommonFormTableView.vue | 31 ++++++++--
src/views/sales/salesDetails/AddSalesDetailsDialog.vue | 120 +++++++++++++++++++++++++++++----------
src/views/other/commonDialog/SelectCommonDialog.vue | 16 ++++-
3 files changed, 125 insertions(+), 42 deletions(-)
diff --git a/src/components/makepager/CommonFormTableView.vue b/src/components/makepager/CommonFormTableView.vue
index 70fbd58..ec70ab3 100644
--- a/src/components/makepager/CommonFormTableView.vue
+++ b/src/components/makepager/CommonFormTableView.vue
@@ -41,6 +41,7 @@
v-model.trim="scope.row[item.prop]"
maxlength="50"
size="mini"
+ :disabled="!isOperate"
@change="
(val) => {
commonInputChange(val, item.prop, scope.row)
@@ -58,6 +59,7 @@
v-model="scope.row[item.prop]"
:fetch-suggestions="querySearchAsync"
value-key="name"
+ :disabled="!isOperate"
size="mini"
@select="
(val) => {
@@ -65,11 +67,11 @@
}
"
></el-autocomplete>
- <div class="common-select-btn" @click="selClientClick(scope.row, item.prop)">
+ <div class="common-select-btn" v-if="isOperate" @click="selClientClick(scope.row, item.prop)">
<i class="el-icon-circle-plus-outline" title="閫夋嫨"></i>
</div>
<div
- v-if="scope.row[item.prop] && scope.row[item.prop].length > 0"
+ v-if="scope.row[item.prop] && scope.row[item.prop].length > 0&&isOperate"
class="common-select-btn"
@click="clearupClient(scope.row)"
>
@@ -84,7 +86,7 @@
: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 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
@@ -98,6 +100,7 @@
placeholder=""
:min="0"
:controls="false"
+ :disabled="!isOperate"
size="mini"
style="width: 100%; margin-right: 5px"
@change="
@@ -118,6 +121,7 @@
placeholder=""
:min="0"
:precision="2"
+ :disabled="!isOperate"
:controls="false"
size="mini"
style="width: 100%; margin-right: 5px"
@@ -130,7 +134,7 @@
</el-form-item>
<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)+'':'' }}
+ {{ (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)+'%':'' }}
@@ -151,6 +155,7 @@
placeholder=""
:min="0"
:controls="false"
+ :disabled="!isOperate"
size="mini"
style="width: 100%; margin-right: 5px"
@change="
@@ -168,6 +173,7 @@
<el-button
type="text"
size="small"
+ :disabled="!isOperate"
@click="deleteClick(scope)"
>鍒犻櫎</el-button>
</template>
@@ -176,10 +182,10 @@
</el-table>
</el-form>
<div v-if="!detailEnter" style="margin: 10px">
- <el-button size="small" type="primary" @click="add">鏂板</el-button>
+ <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" @click="empty">娓呯┖</el-button>
- <el-button size="small" type="primary" @click="recalculate" :disabled="isRecalculate ? false : true"
+ <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
>
</div>
@@ -199,6 +205,7 @@
<SelectCommonDialog
v-if="editSelCommonConfig.editVisible"
:edit-common-config="editSelCommonConfig"
+ :quotationNumber="quotationNumber"
@selClient="selClient"
/>
</div>
@@ -224,6 +231,16 @@
type:String,
default:''
},
+ // 鏍规嵁鎶ヤ环鍗曟煡璇骇鍝�
+ quotationNumber:{
+ type:[String,Number],
+ default:''
+ },
+ // 鏄惁鍙互鎿嶄綔 娣诲姞绛�
+ isOperate:{
+ type:Boolean,
+ default:true,
+ },
productTableList: {
type: Object,
default: () => {
diff --git a/src/views/other/commonDialog/SelectCommonDialog.vue b/src/views/other/commonDialog/SelectCommonDialog.vue
index 9f0f9e7..aad1584 100644
--- a/src/views/other/commonDialog/SelectCommonDialog.vue
+++ b/src/views/other/commonDialog/SelectCommonDialog.vue
@@ -72,7 +72,12 @@
tableInfomation: []
}
}
- }
+ },
+ // 鏍规嵁鎶ヤ环鍗曟煡璇骇鍝�
+ quotationNumber:{
+ type:[String,Number],
+ default:''
+ },
},
components: {},
computed: {},
@@ -407,12 +412,17 @@
},
// 浜у搧鍚嶇О
async getProductList() {
- await getProductList({
+ let params={
productName: this.keywordType === "浜у搧鍚嶇О" ? this.keyword : "",
productNumber: this.keywordType === "浜у搧缂栧彿" ? this.keyword : "",
page: this.pagerOptions.currPage,
pageSize: this.pagerOptions.pageSize
- }).then((res) => {
+ }
+ // 鏍规嵁鎶ヤ环鍗曟煡璇骇鍝�
+ if(this.quotationNumber){
+ params.quotationNumber=this.quotationNumber
+ }
+ await getProductList(params).then((res) => {
console.log(res.data)
if (res.code === 200) {
if (res.data.data && res.data.data.length > 0) {
diff --git a/src/views/sales/salesDetails/AddSalesDetailsDialog.vue b/src/views/sales/salesDetails/AddSalesDetailsDialog.vue
index 490f363..6aabb56 100644
--- a/src/views/sales/salesDetails/AddSalesDetailsDialog.vue
+++ b/src/views/sales/salesDetails/AddSalesDetailsDialog.vue
@@ -90,10 +90,9 @@
</div>
</el-form-item>
</el-col>
- 111: {{ autoCodeHeadersObj.Ywjh }}
<el-col :span="12">
<el-form-item label="閿�鍞満浼�" prop="sale_chance_name"
- :rules="[{ required: autoCodeHeadersObj.Ywjh=='yes'?true:false, message: '璇烽�夋嫨閿�鍞満浼�', trigger: 'change' }]">
+ :rules="[{ required: autoCodeHeadersObj.ywjh=='yes'?true:false, message: '璇烽�夋嫨閿�鍞満浼�', trigger: 'change' }]">
<div class="custom-name">
<el-autocomplete
style="width: 100%"
@@ -163,7 +162,7 @@
</el-col> -->
<el-col :span="12">
<el-form-item label="閿�鍞姤浠峰崟" prop="quotation_number"
- :rules="[{ required: autoCodeHeadersObj.Bjd=='yes'?true:false, message: '璇烽�夋嫨閿�鍞姤浠峰崟', trigger: 'change' }]">
+ :rules="[{ required: autoCodeHeadersObj.bjd=='yes'?true:false, message: '璇烽�夋嫨閿�鍞姤浠峰崟', trigger: 'change' }]">
<div class="custom-name">
<el-autocomplete
v-model="editConfig.infomation.quotation_number"
@@ -388,7 +387,7 @@
<!-- 浜у搧绠$悊 -->
<div class="basic-info-title" style="display: flex">
浜у搧绠$悊
- <div style="margin-left: 400px">
+ <!-- <div style="margin-left: 400px">
甯佺
<el-select
v-model="editConfig.infomation.currency"
@@ -400,17 +399,21 @@
<el-option v-for="item in currencyOptions" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
- </div>
+ </div> -->
</div>
<div class="product-view">
+ <!-- :detail-enter="true" -->
<CommonFormTableView
ref="commonFormTableView"
- :detail-enter="true"
- :select-box="selectBox"
:show-summary="showSummary"
+ pageName="quotation"
+ :isOperate="((autoCodeHeadersObj.bjd=='yes'&&editConfig.infomation.quotation_number)||autoCodeHeadersObj.bjd!='yes')?true:false"
+ :quotationNumber="editConfig.infomation.quotation_number"
:product-table-list="productTableList"
@inputContent="inputContent"
- @getSelectArray="getSelectArray"
+ @addProductClick="addProductClick"
+ @emptyProductClick="emptyProductClick"
+ @clearupProduct="clearupProduct"
></CommonFormTableView>
</div>
<!-- 閫夋嫨瀹℃壒娴佺▼ -->
@@ -556,7 +559,7 @@
show: true,
total: true,
sumProp: ["Amount", "total"],
- mergeNumber: 2
+ mergeNumber: 7
},
editSelectClientConfig: {
editVisible: false,
@@ -593,7 +596,6 @@
quotationList: [],
quotationId: this.editCommonConfig.infomation.quotationId,
tableData: [],
- selProductData: [],
isView: this.editCommonConfig.title === "鏌ョ湅",
selectBox: this.editCommonConfig.title !== "鏌ョ湅",
thatMember: {}
@@ -661,8 +663,8 @@
saveClick(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
- for (let i = 0; i < this.selProductData.length; i++) {
- if (this.selProductData[i].name.length === 0) {
+ for (let i = 0; i < this.tableData.length; i++) {
+ if (this.tableData[i].name.length === 0) {
this.isNoProduct = true
break
} else {
@@ -678,7 +680,7 @@
console.log(res)
this.editConfig.visible = false
if (res.code === 200) {
- this.selProductData.map((item) => {
+ this.tableData.map((item) => {
this.amountTotal += parseFloat(item.total)
})
let config = {
@@ -689,7 +691,6 @@
}
})
} else {
- console.log(this.selProductData)
getUpdateSalesDetails(params).then((res) => {
console.log(res)
this.editConfig.visible = false
@@ -717,7 +718,7 @@
memberId: data.memberId || 0,
number: data.number || "",
phone: data.phone || "",
- products: this.selProductData,
+ products: this.tableData,
remark: data.remark || "",
saleChanceId: this.saleChanceId || 0,
saleType: data.saleType || 0,
@@ -766,7 +767,7 @@
this.tableData = item.products
this.tableData.map((item, index) => {
item.productId = index + 1
- this.selProductData.forEach((key) => {
+ this.tableData.forEach((key) => {
if (item.number === key.number) {
item.amount = key.amount
item.id = key.id
@@ -774,13 +775,6 @@
})
})
this.productTableList.tableData = this.tableData
- this.selProductData.forEach((key) => {
- this.tableData.forEach((row) => {
- if (key.number === row.number) {
- this.$refs.commonFormTableView.$refs.fromTable.toggleRowSelection(row, true)
- }
- })
- })
}
})
}
@@ -856,7 +850,7 @@
this.subbillId = item.id
this.editConfig.infomation.subbill_name = item.number
} else if (value === "quotation") {
- this.productTableList.tableData = item.products
+ // this.productTableList.tableData = item.products
// this.tableData = item.products
this.editConfig.infomation.quotation_number = item.number
this.quotationId = item.id
@@ -934,21 +928,43 @@
setFormatClick() {},
setTableForm() {
if (this.editConfig.title === "鏂板缓" || this.editConfig.infomation.products.length === 0) {
- this.tableData = []
+ this.tableData = [
+ {
+ productId: this.productId,
+ id: 0,
+ amount: 0,
+ desc: "",
+ name: "",
+ number: "",
+ price: 0,
+ cost:'',
+ profit:'',
+ margin:'',
+ total: 0,
+ unit: ""
+ }
+ ]
} else {
- this.selProductData = this.editConfig.infomation.products
+ this.tableData = this.editConfig.infomation.products
this.getQuotation(this.editConfig.infomation.saleChanceId, "鍏ㄩ儴浜у搧")
}
// let productData = this.quotationList.products
+ let isBjdRequird=false
+ if(this.autoCodeHeadersObj.bjd=='yes'){
+ isBjdRequird=true
+ }
this.productTableList = {
tableData: this.tableData,
tableColumn: [
{ label: "#", prop: "productId", width: 40 },
- { label: "浜у搧鍚嶇О", prop: "name", 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", isRequird: true },
+ { label: "閿�鍞崟浠�", prop: "price",inputFloat: !isBjdRequird, isRequird: true },
+ { label: "鎴愭湰鍗曚环", prop: "cost",inputFloat: !isBjdRequird},
+ { label: "姣涘埄", prop: "profit" },
+ { label: "姣涘埄鐜�", prop: "margin",min:90},
+ { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true },
{ label: "浠风◣鍚堣", prop: "total" }
]
}
@@ -962,9 +978,49 @@
}
})
},
- // 閫夋嫨浜у搧
- getSelectArray(val) {
- this.selProductData = val
+ // 浜у搧鏂板
+ addProductClick() {
+ this.productId++
+ this.tableData.push({
+ productId: this.productId,
+ id: 0,
+ amount: 0,
+ desc: "",
+ name: "",
+ number: "",
+ price: 0,
+ cost:'',
+ profit:'',
+ margin:'',
+ total: 0,
+ unit: ""
+ })
+ this.showSummary.show = true
+ },
+ // 浜у搧娓呯┖
+ emptyProductClick() {
+ this.productId = 1
+ this.tableData = [
+ {
+ productId: this.productId,
+ id: 0,
+ amount: 0,
+ desc: "",
+ name: "",
+ number: "",
+ price: 0,
+ cost:'',
+ profit:'',
+ margin:'',
+ total: 0,
+ unit: ""
+ }
+ ]
+ this.productTableList.tableData = this.tableData
+ },
+ clearupProduct(data) {
+ this.tableData = data
+ this.productTableList.tableData = this.tableData
},
// 鑾峰彇椤圭洰鍒楄〃
async getProjectList() {
--
Gitblit v1.8.0