From c1adf27fbabbff1d76b60993521c765ef1ed79ef Mon Sep 17 00:00:00 2001 From: yangfeng <wanwan926_4@163.com> Date: 星期二, 15 八月 2023 20:03:21 +0800 Subject: [PATCH] 新建客户管理 客户名称查重 --- src/views/sales/quotation/AddQuotationDialog.vue | 190 ++++++++++++++++++++++++++++++++--------------- 1 files changed, 128 insertions(+), 62 deletions(-) diff --git a/src/views/sales/quotation/AddQuotationDialog.vue b/src/views/sales/quotation/AddQuotationDialog.vue index cb8f901..fe4a0a6 100644 --- a/src/views/sales/quotation/AddQuotationDialog.vue +++ b/src/views/sales/quotation/AddQuotationDialog.vue @@ -5,6 +5,8 @@ :visible.sync="editConfig.visible" :width="dialogWidth" :before-close="handleClose" + append-to-body + custom-class="iframe-dialog" > <el-form ref="form" @@ -26,14 +28,18 @@ <div class="custom-name"> <el-autocomplete v-model="editConfig.infomation.client_name" - :fetch-suggestions="querySearchAsync" + :fetch-suggestions=" + (queryString, callback) => { + querySearchAsync(queryString, callback, 'client') + } + " value-key="name" @select="handleSelectClient('client', $event)" ></el-autocomplete> - <div class="common-select-btn" @click="selClientClick"> + <div class="common-select-btn" @click="selClientClick('client')"> <i class="el-icon-circle-plus-outline" title="閫夋嫨"></i> </div> - <div class="common-select-btn" @click="clearupClient"> + <div class="common-select-btn" @click="clearupClient('client')"> <i class="el-icon-edit-outline" title="娓呴櫎"></i> </div> </div> @@ -62,13 +68,18 @@ </el-option> </el-select> <!-- @click="editDropdownBox" --> - <div class="common-select-btn"><i class="el-icon-setting"></i></div> + <!-- <div class="common-select-btn"><i class="el-icon-setting"></i></div> --> </div> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="鏈夋晥鏈熻嚦" prop="validity_date"> - <el-date-picker v-model="editConfig.infomation.validity_date" type="date" placeholder="閫夋嫨鏃ユ湡"> + <el-date-picker + v-model="editConfig.infomation.validity_date" + value-format="yyyy-MM-dd HH:mm:ss" + type="datetime" + placeholder="閫夋嫨鏃ユ湡" + > </el-date-picker> </el-form-item> </el-col> @@ -77,7 +88,11 @@ <div class="custom-name"> <el-autocomplete v-model="editConfig.infomation.contact_name" - :fetch-suggestions="queryContactAsync" + :fetch-suggestions=" + (queryString, callback) => { + querySearchAsync(queryString, callback, 'contact') + } + " value-key="name" @select="handleSelectClient('contact', $event)" ></el-autocomplete> @@ -104,11 +119,24 @@ </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="閿�鍞満浼�" prop="sale_chance_id"> + <el-form-item label="閿�鍞満浼�" prop="sale_chance_name"> <div class="custom-name"> - <el-input v-model="editConfig.infomation.sale_chance_id"></el-input> - <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div> - <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div> + <el-autocomplete + v-model="editConfig.infomation.sale_chance_name" + :fetch-suggestions=" + (queryString, callback) => { + querySearchAsync(queryString, callback, 'chance') + } + " + value-key="name" + @select="handleSelectClient('chance', $event)" + ></el-autocomplete> + <div class="common-select-btn" @click="selClientClick('chance')"> + <i class="el-icon-circle-plus-outline"></i> + </div> + <div class="common-select-btn" @click="clearupClient('chance')"> + <i class="el-icon-edit-outline"></i> + </div> </div> </el-form-item> </el-col> @@ -228,6 +256,12 @@ :edit-common-config="editSelectContactConfig" @selClient="selClient" /> + <!-- 閫夋嫨閿�鍞満浼� --> + <SelectChanceDialog + v-if="editSelectChanceConfig.editVisible" + :edit-common-config="editSelectChanceConfig" + @selClient="selClient" + /> </el-dialog> </div> </template> @@ -238,6 +272,7 @@ import { getAddQuotation, getUpdateQuotation } from "@/api/sales/quotation" import SelectClientDialog from "@/views/other/commonDialog/SelectClientDialog" import SelectContactDialog from "@/views/other/commonDialog/SelectContactDialog" +import SelectChanceDialog from "@/views/other/commonDialog/SelectChanceDialog" export default { name: "QuotationDialog", props: { @@ -252,7 +287,7 @@ } } }, - components: { SelectClientDialog, SelectContactDialog }, + components: { SelectClientDialog, SelectContactDialog, SelectChanceDialog }, computed: { searchCommonHeight() { return this.$refs.searchCommonView.offsetHeight @@ -262,6 +297,9 @@ }, contactNamelist() { return this.$store.state.getClientName.contactNamelist + }, + saleChancelist() { + return this.$store.state.getClientName.saleChancelist } }, data() { @@ -295,13 +333,20 @@ title: "", infomation: {} }, + editSelectChanceConfig: { + editVisible: false, + title: "", + infomation: {} + }, clientId: this.editCommonConfig.infomation.client_id, - contactId: this.editCommonConfig.infomation.contact_id + contactId: this.editCommonConfig.infomation.contact_id, + saleChanceId: this.editCommonConfig.infomation.sale_chance_id } }, created() { this.$store.dispatch("geClient") this.$store.dispatch("geContact") + this.$store.dispatch("geChance") this.setTableForm() this.getCommonData() }, @@ -311,10 +356,18 @@ .then((res) => { this.memberOptions = res.data.member this.quotationStatusOptions = res.data.quotationStatus + this.dataProcess() }) .catch((err) => { console.log(err) }) + }, + dataProcess() { + this.saleChancelist.map((item) => { + if (this.saleChanceId === item.id) { + this.editConfig.infomation.sale_chance_name = item.name + } + }) }, // 淇濆瓨 saveClick(formName) { @@ -366,14 +419,14 @@ let data = this.editConfig.infomation let params = { id: this.editConfig.title === "鏂板缓" ? 0 : data.id, - client_id: parseInt(this.clientId) || 0, + client_id: this.clientId || 0, conditions: data.conditions || "", - contact_id: parseInt(this.contactId) || 0, + contact_id: this.contactId || 0, file: data.file || "", member_id: data.member_id || 0, number: data.number || "", quotation_status_id: data.quotation_status_id || 0, - sale_chance_id: data.sale_chance_id || 0, + sale_chance_id: this.saleChanceId || 0, validity_date: data.validity_date || "" } return params @@ -382,14 +435,15 @@ this.editConfig.visible = false }, // 閫夋嫨瀹㈡埛鐩稿叧鏂规硶 - querySearchAsync(queryString, cb) { - var restaurants = this.clientList - var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants - cb(results) - }, - // 閫夋嫨鑱旂郴浜哄鍚� - queryContactAsync(queryString, cb) { - var restaurants = this.contactNamelist + querySearchAsync(queryString, cb, value) { + var restaurants = [] + if (value === "client") { + restaurants = this.clientList + } else if (value === "contact") { + restaurants = this.contactNamelist + } else if (value === "chance") { + restaurants = this.saleChancelist + } var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants cb(results) }, @@ -402,6 +456,8 @@ console.log(value) if (value === "client") { this.clientId = item.id + } else if (value === "chance") { + this.saleChanceId = item.id } else { this.contactId = item.id } @@ -411,6 +467,8 @@ this.editSelectClientConfig.editVisible = true } else if (value === "contact") { this.editSelectContactConfig.editVisible = true + } else if (value === "chance") { + this.editSelectChanceConfig.editVisible = true } }, selClient(row, value) { @@ -418,6 +476,9 @@ if (value === "contact") { this.editConfig.infomation.contact_name = row.name this.contactId = row.id + } else if (value === "chance") { + this.editConfig.infomation.sale_chance_name = row.name + this.saleChanceId = row.id } else { this.editConfig.infomation.client_name = row.name this.clientId = row.id @@ -428,6 +489,9 @@ if (value === "client") { this.editConfig.infomation.client_name = "" this.clientId = 0 + } else if (value === "chance") { + this.editConfig.infomation.sale_chance_name = "" + this.saleChanceId = 0 } else { this.editConfig.infomation.contact_name = "" this.contactId = 0 @@ -475,52 +539,54 @@ <!-- Add "scoped" attribute to limit CSS to this component only --> <style lang="scss" scoped> -.add-quotation { - .basic-info { - .basic-info-title { - background-color: #f4f8fe; - padding-left: 10px; - font-size: 15px; - font-weight: bold; - color: #666; - height: 42px; - line-height: 42px; - } - .basic-info-view { - margin-top: 10px; - padding-right: 40px; - .custom-name, - .common-select { +::v-deep { + .iframe-dialog .el-dialog__body { + .basic-info { + .basic-info-title { + background-color: #f4f8fe; + padding-left: 10px; + font-size: 15px; + font-weight: bold; + color: #666; + height: 42px; + line-height: 42px; + } + .basic-info-view { + margin-top: 10px; + padding-right: 40px; + .custom-name, + .common-select { + display: flex; + .common-select-sel { + width: 270px; + } + .common-select-btn { + margin-left: 5px; + font-size: 16px; + cursor: pointer; + } + } + } + .annex-view { display: flex; - .common-select-sel { - width: 270px; - } - .common-select-btn { - margin-left: 5px; - font-size: 16px; - cursor: pointer; + color: #6166d3; + .setFormat { + margin-left: 10px; } } } - .annex-view { + .unflod-collapse { display: flex; + height: 30px; + justify-content: center; + align-items: center; color: #6166d3; - .setFormat { - margin-left: 10px; - } } - } - .unflod-collapse { - display: flex; - height: 30px; - justify-content: center; - align-items: center; - color: #6166d3; - } - .dialog-footer { - background-color: #f5f5f5; - height: 55px; - line-height: 55px; + .dialog-footer { + background-color: #f5f5f5; + height: 55px; + line-height: 55px; + } } } </style> -- Gitblit v1.8.0