From 0f43183f986f0ed314647687c73da5a4493d2611 Mon Sep 17 00:00:00 2001 From: yangfeng <wanwan926_4@163.com> Date: 星期一, 16 十月 2023 20:36:15 +0800 Subject: [PATCH] bug修复(5219 5233) --- src/views/client/followupRecords/AddFollowupRecordsDialog.vue | 463 +++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 303 insertions(+), 160 deletions(-) diff --git a/src/views/client/followupRecords/AddFollowupRecordsDialog.vue b/src/views/client/followupRecords/AddFollowupRecordsDialog.vue index 662d570..5a34d74 100644 --- a/src/views/client/followupRecords/AddFollowupRecordsDialog.vue +++ b/src/views/client/followupRecords/AddFollowupRecordsDialog.vue @@ -23,25 +23,26 @@ <div class="basic-info-view"> <el-row> <el-col :span="12" v-if="isUnflod"> - <!-- <el-form-item label="璺熻繘璁板綍缂栧彿" prop="number"> - <el-input v-model="editConfig.infomation.number" style="width: 100%"></el-input> - </el-form-item> --> <el-form-item label="璺熻繘璁板綍缂栧彿" prop="number"> <WordInput - v-if="codenumer && (explain != '' || isIdDisabled)" + v-if=" + codenumer && + (explain != '' || isIdDisabled) && + method == 0 + " :codenumer="codenumer" :sum="sum" - :disabled="editConfig.infomation.id || isIdDisabled" + :disabled="this.editConfig.title !== '鏂板缓' || isIdDisabled" :inputValue="inputValue" @codeList="codeList" /> - <span v-else style="color: #f56c6c" + <span v-else-if="method == 0" style="color: #f56c6c" >璇蜂紭鍏堥厤缃紪鐮佽鑼� - <el-button type="text" @click="numberClick"> - 閰嶇疆瑙勮寖 - </el-button - ></span + <el-button type="text" @click="numberClick"> + 閰嶇疆瑙勮寖 + </el-button></span > + <span v-else>鑷姩鐢熸垚</span> </el-form-item> </el-col> <el-col :span="12"> @@ -51,18 +52,24 @@ v-model="editConfig.infomation.client_name" :fetch-suggestions=" (queryString, callback) => { - querySearchAsync(queryString, callback, 'client') + querySearchAsync(queryString, callback, 'client'); } " value-key="name" @select="handleSelectClient('client', $event)" style="width: 100%" ></el-autocomplete> - <div class="common-select-btn" @click="selClientClick('client')"> + <div + class="common-select-btn" + @click="selClientClick('client')" + > <i class="el-icon-circle-plus-outline" title="閫夋嫨"></i> </div> <div - v-if="editConfig.infomation.client_name && editConfig.infomation.client_name.length > 0" + v-if=" + editConfig.infomation.client_name && + editConfig.infomation.client_name.length > 0 + " class="common-select-btn" @click="clearupClient('client')" > @@ -71,7 +78,7 @@ </div> </el-form-item> </el-col> - <el-col v-if="isUnflod" :span="12"> + <el-col v-if="isUnflod && !isDetail" :span="12"> <el-form-item label="瀹㈡埛鐘舵��" prop="client_status_id"> <div class="common-select"> <el-select @@ -81,7 +88,12 @@ size="mini" style="width: 100%" > - <el-option v-for="item in clientStatusOptions" :key="item.id" :label="item.name" :value="item.id"> + <el-option + v-for="item in clientStatusOptions" + :key="item.id" + :label="item.name" + :value="item.id" + > </el-option> </el-select> <!-- <div class="common-select-btn"><i class="el-icon-setting"></i></div> --> @@ -95,18 +107,24 @@ v-model="editConfig.infomation.contact_name" :fetch-suggestions=" (queryString, callback) => { - querySearchAsync(queryString, callback, 'contact') + querySearchAsync(queryString, callback, 'contact'); } " value-key="name" @select="handleSelectClient('contact', $event)" style="width: 100%" ></el-autocomplete> - <div class="common-select-btn" @click="selClientClick('contact')"> + <div + class="common-select-btn" + @click="selClientClick('contact')" + > <i class="el-icon-circle-plus-outline" title="閫夋嫨"></i> </div> <div - v-if="editConfig.infomation.contact_name && editConfig.infomation.contact_name.length > 0" + v-if=" + editConfig.infomation.contact_name && + editConfig.infomation.contact_name.length > 0 + " class="common-select-btn" @click="clearupClient('contact')" > @@ -123,7 +141,12 @@ size="mini" style="width: 100%" > - <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + <el-option + v-for="item in memberOptions" + :key="item.id" + :label="item.username" + :value="item.id" + > </el-option> </el-select> </el-form-item> @@ -147,7 +170,12 @@ size="mini" style="width: 100%" > - <el-option v-for="item in contactInfoOptions" :key="item.id" :label="item.name" :value="item.id"> + <el-option + v-for="item in contactInfoOptions" + :key="item.id" + :label="item.name" + :value="item.id" + > </el-option> </el-select> </el-form-item> @@ -159,18 +187,28 @@ v-model="editConfig.infomation.sale_chance_name" :fetch-suggestions=" (queryString, callback) => { - querySearchAsync(queryString, callback, 'chance') + querySearchAsync(queryString, callback, 'chance'); } " value-key="name" @select="handleSelectClient('chance', $event)" style="width: 100%" + placeholder="璇峰厛閫夋嫨瀹㈡埛鍚嶇О" + :disabled="isChance" ></el-autocomplete> - <div class="common-select-btn" @click="selClientClick('chance')"> + <div + v-if="!isChance" + class="common-select-btn" + @click="selClientClick('chance')" + > <i class="el-icon-circle-plus-outline"></i> </div> <div - v-if="editConfig.infomation.sale_chance_name && editConfig.infomation.sale_chance_name.length > 0" + v-if=" + editConfig.infomation.sale_chance_name && + editConfig.infomation.sale_chance_name.length > 0 && + !isChance + " class="common-select-btn" @click="clearupClient('chance')" > @@ -179,7 +217,7 @@ </div> </el-form-item> </el-col> - <el-col :span="12"> + <el-col :span="12" v-if="!isDetail"> <el-form-item label="閿�鍞嚎绱�" prop="sales_leads_name"> <div class="custom-name"> <!-- <el-input v-model="editConfig.infomation.sales_leads_id"></el-input> --> @@ -187,18 +225,24 @@ v-model="editConfig.infomation.sales_leads_name" :fetch-suggestions=" (queryString, callback) => { - querySearchAsync(queryString, callback, 'lead') + querySearchAsync(queryString, callback, 'lead'); } " value-key="name" @select="handleSelectClient('lead', $event)" style="width: 100%" ></el-autocomplete> - <div class="common-select-btn" @click="selClientClick('lead')"> + <div + class="common-select-btn" + @click="selClientClick('lead')" + > <i class="el-icon-circle-plus-outline"></i> </div> <div - v-if="editConfig.infomation.sales_leads_name && editConfig.infomation.sales_leads_name.length > 0" + v-if=" + editConfig.infomation.sales_leads_name && + editConfig.infomation.sales_leads_name.length > 0 + " class="common-select-btn" @click="clearupClient('lead')" > @@ -296,15 +340,23 @@ </div> --> </div> <!-- 灞曞紑鏀惰捣 --> - <div v-if="editConfig.title === '鏂板缓'" class="unflod-collapse" @click="unflodCollapseClick"> + <div + v-if="editConfig.title === '鏂板缓'" + class="unflod-collapse" + @click="unflodCollapseClick" + > <div>{{ unflodCollapseStr }}</div> <div v-if="isUnflod"><i class="el-icon-arrow-up"></i></div> <div v-else><i class="el-icon-arrow-down"></i></div> </div> </el-form> <div slot="footer" class="dialog-footer"> - <el-button type="primary" size="small" @click="saveClick('form')">淇� 瀛�</el-button> - <el-button size="small" @click="editConfig.visible = false">鍙� 娑�</el-button> + <el-button type="primary" size="small" @click="saveClick('form')" + >淇� 瀛�</el-button + > + <el-button size="small" @click="editConfig.visible = false" + >鍙� 娑�</el-button + > </div> <!-- 閫夋嫨瀹㈡埛 --> <SelectClientDialog @@ -335,13 +387,23 @@ </template> <script> -import { getAllData } from "@/api/client/client" -import { getAddFollowRecord, getUpdateFollowRecord, getContactInfoList } from "@/api/client/followupRecords" -import SelectClientDialog from "@/views/other/commonDialog/SelectClientDialog" -import SelectContactDialog from "@/views/other/commonDialog/SelectContactDialog" -import SelectChanceDialog from "@/views/other/commonDialog/SelectChanceDialog" -import SelectLeadDialog from "@/views/other/commonDialog/SelectLeadDialog" +import { getAllData } from "@/api/client/client"; +import { + getAddFollowRecord, + getUpdateFollowRecord, + getContactInfoList, +} from "@/api/client/followupRecords"; +import SelectClientDialog from "@/views/other/commonDialog/SelectClientDialog"; +import SelectContactDialog from "@/views/other/commonDialog/SelectContactDialog"; +import SelectChanceDialog from "@/views/other/commonDialog/SelectChanceDialog"; +import SelectLeadDialog from "@/views/other/commonDialog/SelectLeadDialog"; import codeMixin from "./mixin/codeMixin"; +import { getContactList } from "@/api/client/contacts" +import { mapActions } from "vuex"; +import { getSaleChanceList } from "@/api/sales/salesOpportunity"; +import { getSalesLeadsList } from "@/api/client/salesLead" + + export default { name: "AddFollowupRecordsDialog", mixins: [codeMixin], @@ -352,52 +414,75 @@ return { visible: false, title: "鏂板缓", - infomation: {} - } - } + infomation: {}, + }; + }, + }, + isDetail: { + type: Boolean, + default: false } }, - components: { SelectClientDialog, SelectContactDialog, SelectChanceDialog, SelectLeadDialog }, + components: { + SelectClientDialog, + SelectContactDialog, + SelectChanceDialog, + SelectLeadDialog, + }, computed: { searchCommonHeight() { - return this.$refs.searchCommonView.offsetHeight + return this.$refs.searchCommonView.offsetHeight; }, clientList() { - return this.$store.state.getClientName.clientList + return this.$store.state.getClientName.clientList; }, contactNamelist() { - return this.$store.state.getClientName.contactNamelist + return this.$store.state.getClientName.contactNamelist; }, - saleChancelist() { - return this.$store.state.getClientName.saleChancelist - }, + // saleChancelist() { + // return this.$store.state.getClientName.saleChancelist + // }, saleLeadlist() { - return this.$store.state.getClientName.saleLeadlist - } + return this.$store.state.getClientName.saleLeadlist; + }, }, data() { return { dialogWidth: "50%", editConfig: this.editContactsConfig, rules: { - number: [{ required: true, message: "璇疯緭鍏ヨ窡杩涜褰曠紪鍙�", trigger: "blur" }], - member_id: [{ required: true, message: "璇烽�夋嫨璐熻矗浜�", trigger: "change" }], - record: [{ required: true, message: "璇疯緭鍏ヨ窡杩涜褰�", trigger: "blur" }], + number: [ + { required: true, message: "璇疯緭鍏ヨ窡杩涜褰曠紪鍙�", trigger: "blur" }, + ], + member_id: [ + { required: true, message: "璇烽�夋嫨璐熻矗浜�", trigger: "change" }, + ], + record: [ + { required: true, message: "璇疯緭鍏ヨ窡杩涜褰�", trigger: "blur" }, + ], + client_name: [ + { required: true, message: "璇烽�夋嫨瀹㈡埛鍚嶇О", trigger: "change" }, + ], + contact_name: [ + { required: true, message: "璇烽�夋嫨鑱旂郴浜哄鍚�", trigger: "change" }, + ], + topic: [{ required: true, message: "璇疯緭鍏ヤ富棰�", trigger: "blur" }], // content: [{ required: true, message: "璇疯緭鍏ュ唴瀹�", trigger: "blur" }], phoneNumber: [ { required: false, message: "", trigger: "blur" }, { len: 11, message: "闀垮害鍦�11涓瓧绗�", trigger: "blur" }, { - pattern: /^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/, + pattern: + /^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/, message: "璇疯緭鍏ユ纭殑鎵嬫満鍙�", - trigger: "blur" - } - ] + trigger: "blur", + }, + ], }, pickerOptions: { disabledDate: (time) => { - return time.getTime() > Date.now() - } + return time.getTime() > Date.now(); + }, }, clientStatusOptions: [], // 瀹㈡埛鐘舵�� contactInfoOptions: [], // 鑱旂郴鏂瑰紡 @@ -407,122 +492,129 @@ editSelectClientConfig: { editVisible: false, title: "", - infomation: {} + infomation: {}, }, editSelectContactConfig: { editVisible: false, title: "", - infomation: {} + infomation: {}, + search_map:{} }, editSelectChanceConfig: { editVisible: false, title: "", - infomation: {} + infomation: {}, + search_map:{}, }, editSelectLeadConfig: { editVisible: false, title: "", - infomation: {} + infomation: {}, + search_map:{}, }, clientId: this.editContactsConfig.infomation.client_id, contactId: this.editContactsConfig.infomation.contact_id, saleChanceId: this.editContactsConfig.infomation.sale_chance_id, saleLeadId: this.editContactsConfig.infomation.sales_leads_id, - } + saleChancelist: [], + isChance: true, + }; }, created() { - this.$store.dispatch("geClient") - this.$store.dispatch("geContact") - this.$store.dispatch("geChance") - this.$store.dispatch("geLead") - this.getCommonData() - this.getContactInfoList() - this.getRCodeStandardList(); + this.$store.dispatch("geClient"); + this.$store.dispatch("geContact"); + // this.$store.dispatch("geChance") + this.$store.dispatch("geLead"); + this.getCommonData(); + this.getContactInfoList(); + this.formInfo(); }, - watch:{ - 'editConfig.visible'(val){ - if(val){ - this.formInfo() + watch: { + "editContactsConfig.visible"(val) { + if (val) { + this.formInfo(); } }, - 'editConfig.infomation'(){ - this.formInfo() - } + "editContactsConfig.infomation.codeStandID"() { + this.formInfo(); + }, }, methods: { - formInfo(){ - this.objCode.codeStandID = '' - if(this.editConfig.infomation.number&&this.editConfig.infomation.codeStandardID){ - this.objCode.codeStandID = this.editConfig.infomation.codeStandardID; + ...mapActions(["getContactFilter","getLeadFilter"]), + formInfo() { + this.objCode.type = "璺熻繘璁板綍缂栫爜"; + this.objCode.codeStandID = ""; + if (this.editConfig.infomation.codeStandID) { + this.objCode.codeStandID = this.editConfig.infomation.codeStandID; } this.getRCodeStandardList(); - }, + }, getCommonData() { getAllData().then((res) => { - console.log(res) - this.clientStatusOptions = res.data.client_status - this.memberOptions = res.data.member - this.dataProcess() - }) + console.log(res); + this.clientStatusOptions = res.data.client_status; + this.memberOptions = res.data.member; + this.dataProcess(); + }); }, async getContactInfoList() { await getContactInfoList().then((res) => { if (res.code === 200) { - this.contactInfoOptions = res.data.list + this.contactInfoOptions = res.data.list; } - }) + }); }, dataProcess() { this.saleChancelist.map((item) => { if (this.saleChanceId === item.id) { - this.editConfig.infomation.sale_chance_name = item.name + this.editConfig.infomation.sale_chance_name = item.name; } - }) + }); this.saleLeadlist.map((item) => { if (this.saleLeadId === item.id) { - this.editConfig.infomation.sales_leads_name = item.name + this.editConfig.infomation.sales_leads_name = item.name; } - }) + }); }, handleClose() { - this.editConfig.visible = false + this.editConfig.visible = false; }, // 淇濆瓨 saveClick(formName) { this.$refs[formName].validate((valid) => { if (valid) { - const params = this.saveParams() + const params = this.saveParams(); if (this.editConfig.title === "鏂板缓") { getAddFollowRecord(params).then((res) => { - this.editConfig.visible = false + this.editConfig.visible = false; if (res.code === 200) { - this.$message.success("娣诲姞鎴愬姛") - this.$parent.getData() + this.$message.success("娣诲姞鎴愬姛"); + this.$parent.getData(); } - }) + }); } else { getUpdateFollowRecord(params).then((res) => { - this.editConfig.visible = false + this.editConfig.visible = false; if (res.code === 200) { - this.$message.success("缂栬緫鎴愬姛") - this.$parent.getData() + this.$message.success("缂栬緫鎴愬姛"); + this.$parent.getData(); } - }) + }); } } else { - console.log("error submit") - return false + console.log("error submit"); + return false; } - }) + }); }, saveParams() { - let data = this.editConfig.infomation + let data = this.editConfig.infomation; let follow_record = { follow_record: { client_id: this.clientId || 0, - client_status_id: data.client_status_id || 0, + client_status_id: data.client_status_id || null, contact_id: this.contactId || 0, - contact_information_id: data.contact_information_id || 0, + contact_information_id: data.contact_information_id || null, content: data.content || "", follow_time: data.follow_time || "", member_id: data.member_id || 0, @@ -532,92 +624,143 @@ record: data.record || "", sale_chance_id: this.saleChanceId || 0, sales_leads_id: this.saleLeadId || 0, - topic: data.topic || "" - } - } - let params = {} + topic: data.topic || "", + codeStandID: data.ID, + codeRule: this.codeRule, + }, + }; + let params = {}; if (this.editConfig.title === "鏂板缓") { - params = { ...follow_record } + params = { ...follow_record }; } else { - params = { ...follow_record, id: data.id || 0 } + params = { ...follow_record, id: data.id || 0 }; } - return params + return params; + }, + // 鑾峰彇閿�鍞満浼� + getChanceList(id) { + getSaleChanceList({ + page: 1, + pageSize: 15, + search_map: { + client_id: id, + }, + }).then((res) => { + if (res.code == 200) { + this.saleChancelist = res.data.list; + } + }); }, // 閫夋嫨瀹㈡埛鐩稿叧鏂规硶 querySearchAsync(queryString, cb, value) { - var restaurants = [] + var restaurants = []; if (value === "client") { - restaurants = this.clientList + restaurants = this.clientList; } else if (value === "contact") { - restaurants = this.contactNamelist + restaurants = this.contactNamelist; } else if (value === "chance") { - restaurants = this.saleChancelist + restaurants = this.saleChancelist; } else { - restaurants = this.saleLeadlist + restaurants = this.saleLeadlist; } - var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants - cb(results) + var results = queryString + ? restaurants.filter(this.createStateFilter(queryString)) + : restaurants; + cb(results); }, createStateFilter(queryString) { return (state) => { - return state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0 - } + return ( + state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0 + ); + }; }, - handleSelectClient(value, item) { + async handleSelectClient(value, item) { if (value === "client") { - this.clientId = item.id - this.editConfig.infomation.client_name = item.name + console.log(item,"item") + this.editSelectContactConfig.search_map.client_id=item.id + this.editSelectChanceConfig.search_map.client_id=item.id + this.editSelectLeadConfig.search_map.name=item.name + await getContactList({ + search_map:{ + client_id:item.id + }, + page: 1, + pageSize: 15 + }).then((res) => { + if (res.code === 200) { + this.getContactFilter(res.data.list); + } + }); + await getSalesLeadsList({ + search_map:{ + name:item.name + }, + }).then((res) => { + if (res.code === 200) { + this.getLeadFilter(res.data.list); + } + }); + this.clientId = item.id; + this.editConfig.infomation.client_name = item.name; + this.isChance = false; + this.getChanceList(item.id); } else if (value === "contact") { - this.contactId = item.id - this.editConfig.infomation.contact_name = item.name + this.contactId = item.id; + this.editConfig.infomation.contact_name = item.name; } else if (value === "chance") { - this.saleChanceId = item.id - this.editConfig.infomation.sale_chance_name = item.name + this.saleChanceId = item.id; + this.editConfig.infomation.sale_chance_name = item.name; } else { - this.saleLeadId = item.id - this.editConfig.infomation.sales_leads_name = item.name + this.saleLeadId = item.id; + this.editConfig.infomation.sales_leads_name = item.name; } }, selClientClick(value) { if (value === "client") { - this.editSelectClientConfig.editVisible = true + this.editSelectClientConfig.editVisible = true; } else if (value === "contact") { - this.editSelectContactConfig.editVisible = true + this.editSelectContactConfig.editVisible = true; } else if (value === "chance") { - this.editSelectChanceConfig.editVisible = true + this.editSelectChanceConfig.editVisible = true; } else { - this.editSelectLeadConfig.editVisible = true + this.editSelectLeadConfig.editVisible = true; } }, selClient(row, value) { if (value === "contact") { - this.editConfig.infomation.contact_name = row.name - this.contactId = row.id + this.editConfig.infomation.contact_name = row.name; + this.contactId = row.id; } else if (value === "client") { - this.editConfig.infomation.client_name = row.name - this.clientId = row.id + this.editConfig.infomation.client_name = row.name; + this.clientId = row.id; + this.isChance = false; + this.getChanceList(row.id); } else if (value === "chance") { - this.editConfig.infomation.sale_chance_name = row.name - this.saleChanceId = row.id + this.editConfig.infomation.sale_chance_name = row.name; + this.saleChanceId = row.id; } else { - this.editConfig.infomation.sales_leads_name = row.name - this.saleLeadId = row.id + this.editConfig.infomation.sales_leads_name = row.name; + this.saleLeadId = row.id; } }, // 娓呴櫎宸查�夋嫨鐢ㄦ埛 clearupClient(value) { if (value === "client") { - this.editConfig.infomation.client_name = "" - this.clientId = 0 + this.editConfig.infomation.client_name = ""; + this.clientId = 0; + this.isChance = true; + this.editConfig.infomation.sale_chance_name = ""; + this.saleChanceId = 0; } else if (value === "contact") { - this.editConfig.infomation.contact_name = "" - this.contactId = 0 + this.editConfig.infomation.contact_name = ""; + this.contactId = 0; } else if (value === "chance") { - this.editConfig.infomation.sale_chance_name = "" - this.saleChanceId = 0 + this.editConfig.infomation.sale_chance_name = ""; + this.saleChanceId = 0; } else { - this.editConfig.infomation.sales_leads_name = "" - this.saleLeadId = 0 + this.editConfig.infomation.sales_leads_name = ""; + this.saleLeadId = 0; } }, // 娣诲姞闄勪欢 @@ -627,15 +770,15 @@ // 灞曞紑鏀惰捣 unflodCollapseClick() { if (this.unflodCollapseStr === "鏀惰捣") { - this.unflodCollapseStr = "灞曞紑鏇村鏍忕洰" - this.isUnflod = false + this.unflodCollapseStr = "灞曞紑鏇村鏍忕洰"; + this.isUnflod = false; } else { - this.unflodCollapseStr = "鏀惰捣" - this.isUnflod = true + this.unflodCollapseStr = "鏀惰捣"; + this.isUnflod = true; } - } - } -} + }, + }, +}; </script> <!-- Add "scoped" attribute to limit CSS to this component only --> -- Gitblit v1.8.0