From 441f8436a70c22fba6f25154f2f38a072c85b76b Mon Sep 17 00:00:00 2001
From: yangfeng <wanwan926_4@163.com>
Date: 星期二, 27 二月 2024 18:45:02 +0800
Subject: [PATCH] 公共选择产品弹窗相关页面修改
---
src/views/service/serviceContract/AddServiceContractDialog.vue | 50 +++++--
src/components/makepager/TableCommonView.vue | 40 ++++++
src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue | 35 ++++-
src/components/makepager/CommonFormTableView.vue | 141 +++++++++++++----------
src/views/other/commonDialog/SelectCommonDialog.vue | 73 ++++++-----
5 files changed, 216 insertions(+), 123 deletions(-)
diff --git a/src/components/makepager/CommonFormTableView.vue b/src/components/makepager/CommonFormTableView.vue
index 4476b95..b11a1ac 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.row, 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)"
>
<i class="el-icon-remove-outline" title="娓呴櫎"></i>
+ </div>
+ <div class="common-select-btn" v-else @click="selClientClick(scope.row, 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,15 @@
},
// 鏂板
add() {
- if(this.addTypeIdMultiple){
+ if (this.addTypeIdMultiple) {
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 +432,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 +461,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,11 +507,20 @@
}
})
},
+ // 鏂板
selClientClick(row, prop) {
console.log(row, prop)
this.productIndex = row.productId - 1
this.editSelCommonConfig.title = "浜у搧鍚嶇О"
- this.editSelCommonConfig.isSelectBox=false;
+ this.editSelCommonConfig.isSelectBox = true
+ this.editSelCommonConfig.editVisible = true
+ },
+ // 缂栬緫
+ handleEditClient(row, prop) {
+ console.log(row, prop)
+ this.productIndex = row.productId - 1
+ this.editSelCommonConfig.title = "浜у搧鍚嶇О"
+ this.editSelCommonConfig.isSelectBox = false
this.editSelCommonConfig.editVisible = true
},
selClient(item) {
@@ -519,8 +539,8 @@
}
})
},
- getSelectArray(val){
- this.$emit("getSelectArray",val)
+ getSelectArray(val) {
+ this.$emit("getSelectArray", val)
},
// 娓呴櫎宸查�夋嫨鐢ㄦ埛
clearupClient(row) {
@@ -555,7 +575,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..85c9aad 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,37 @@
}
}
this.$emit("tableRowClassName", row)
+ },
+ selectable(row) {
+ console.log(row, this.selectBoxList, "888899")
+ let list = this.selectBoxList.map((item) => item.number)
+ console.log(
+ list,
+ list.findIndex((v) => v == row.number)
+ )
+ if (list.findIndex((v) => v == row.number) == -1) {
+ console.log("33")
+ return true
+ } else {
+ console.log("44")
+ return false
+ }
+
+ // if (this.selectBoxList.length == 1 && this.selectBoxList[0].number.length == 0) {
+ // return true
+ // } else {
+ // let list = this.selectBoxList.map((item) => item.number)
+ // console.log(
+ // list,
+ // list.findIndex((v) => v === row.number),
+ // "5555"
+ // )
+ // if (list.findIndex((v) => v === row.number)) {
+ // return true
+ // } else {
+
+ // }
+ // }
}
}
}
diff --git a/src/views/other/commonDialog/SelectCommonDialog.vue b/src/views/other/commonDialog/SelectCommonDialog.vue
index 0c4ef5f..4158cc9 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() {
@@ -205,12 +210,12 @@
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: "type" }
]
- this.showCol = ["浜у搧鍚嶇О", "浜у搧缂栧彿",'瑙勬牸','鍨嬪彿']
+ this.showCol = ["浜у搧鍚嶇О", "浜у搧缂栧彿", "瑙勬牸", "鍨嬪彿"]
this.tableList = {
selectIndex: true,
tableInfomation: [],
@@ -271,11 +276,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
},
// 璇锋眰鏁版嵁
@@ -352,15 +357,15 @@
},
// 鎶ヤ环鍗�
async getQuotationList() {
- if(!this.editConfig.isRequest){
- this.tableList.tableInfomation =this.editConfig.tableInfomation.map((item) => {
- return {
- ...item,
- member_name: item.member.username
- }
- })
- 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,
+ member_name: item.member.username
+ }
+ })
+ this.pagerOptions.totalCount = this.editConfig.count ? this.editConfig.count : 0
+ return true
}
await getQuotationList({
search_map: this.search_map,
@@ -387,7 +392,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) => {
@@ -442,15 +447,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)
@@ -472,7 +477,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) => {
@@ -521,8 +526,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 === "閿�鍞�诲崟") {
@@ -567,9 +572,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;
@@ -581,7 +586,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..40e96db 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"
@@ -800,8 +802,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 +816,44 @@
},
// 浜у搧鍒楄〃杈撳叆
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) {
+ // if (val.length > 0) {
+ // val.map((item, index) => {
+ // item.productId = this.tableData.length + index + 1
+ // })
+ // }
+ console.log(this.tableData, "ddddaaaqqq")
+ if (this.tableData.length == 1 && this.tableData[0].number.length == 0) {
+ console.log("ssss")
+ this.tableData = []
+ }
+ this.tableData = this.tableData.concat(val)
+ console.log(this.tableData, "55555ddddaaaqqq")
+ this.productTableList.tableData = this.tableData
this.showSummary.show = true
},
// 浜у搧娓呯┖
--
Gitblit v1.8.0