From 352e9e459e3c865a8509ccebfe6a3d580a65165c Mon Sep 17 00:00:00 2001 From: yangfeng <wanwan926_4@163.com> Date: 星期二, 10 十月 2023 13:48:29 +0800 Subject: [PATCH] 搜索公共组件、新建选择客户名称等公共组件、新建弹窗及跟进记录页面批量删除改为单条删除 --- src/components/makepager/TableCommonView.vue | 59 ++-- src/views/other/commonDialog/SelectContactDialog.vue | 84 +++--- src/views/other/commonDialog/SelectClientDialog.vue | 85 +++++- src/views/other/commonDialog/SelectLeadDialog.vue | 64 +++- src/assets/img/shaixuan.png | 0 src/assets/img/xiazai.png | 0 src/components/index.js | 11 src/views/client/followupRecords/index.vue | 117 +++++---- src/assets/img/shoucangfill.png | 0 src/views/client/followupRecords/AddFollowupRecordsDialog.vue | 49 ++- src/components/makepager/CommonSearch.vue | 162 +++++------- src/views/other/commonDialog/SelectCommonDialog.vue | 63 ++++- 12 files changed, 405 insertions(+), 289 deletions(-) diff --git a/src/assets/img/shaixuan.png b/src/assets/img/shaixuan.png new file mode 100644 index 0000000..ab3dd53 --- /dev/null +++ b/src/assets/img/shaixuan.png Binary files differ diff --git a/src/assets/img/shoucangfill.png b/src/assets/img/shoucangfill.png new file mode 100644 index 0000000..8ac3848 --- /dev/null +++ b/src/assets/img/shoucangfill.png Binary files differ diff --git a/src/assets/img/xiazai.png b/src/assets/img/xiazai.png new file mode 100644 index 0000000..8dd6e61 --- /dev/null +++ b/src/assets/img/xiazai.png Binary files differ diff --git a/src/components/index.js b/src/components/index.js index 936a5ab..acdad65 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -4,9 +4,16 @@ import PagerView from "@/components/makepager/pager/PagerView" import TableCommonView from "@/components/makepager/TableCommonView" import DetailListCommonBtn from "@/components/makepager/DetailListCommonBtn" -import CommonSearch from "@/components/makepager/CommonSearch.vue"; +import CommonSearch from "@/components/makepager/CommonSearch.vue" -const components = [SearchCommonView, PublicFunctionBtnView, PagerView, TableCommonView, DetailListCommonBtn, CommonSearch] +const components = [ + SearchCommonView, + PublicFunctionBtnView, + PagerView, + TableCommonView, + DetailListCommonBtn, + CommonSearch +] components.forEach((component) => { Vue.component(component.name, component) }) diff --git a/src/components/makepager/CommonSearch.vue b/src/components/makepager/CommonSearch.vue index 7e83725..72d0319 100644 --- a/src/components/makepager/CommonSearch.vue +++ b/src/components/makepager/CommonSearch.vue @@ -2,29 +2,25 @@ <div class="search-list"> <div class="search-top"> <div class="left"> - <el-button v-if="showAdd" type="primary" size="mini" @click="addBtn">{{ - addTitle - }}</el-button> - <div - class="download" - v-if="showDownload" - @click="downloadClick" - :style="{ cursor: showDownload ? 'pointer' : 'no-drop' }" - > - <img - src="../../../public/images/download.png" - style="width: 13px" - alt="涓嬭浇" - /> - </div> + <el-button v-if="showAdd" type="primary" size="mini" @click="addBtn"> + <div style="display: flex"> + <!-- <img + v-if="ishumanResource" + src="../../../assets/DingDing/index.png" + style="width: 15px; height: 15px; margin-right: 5px; background-color: #ffffff; border-radius: 50%" + alt="" + /> --> + <slot name="buttonIcon" /> + <p style="margin-top: 1px; line-height: 15px">{{ addTitle }}</p> + </div> + </el-button> <slot name="leftButton" /> + <div class="download" @click="downloadClick" :style="{ cursor: showDownload ? 'pointer' : 'no-drop' }"> + <img src="@/assets/img/xiazai.png" style="width: 13px" /> + </div> </div> <div v-if="amountView" class="amount"> - <div - v-if="twoTotalAmount" - class="top_left" - style="width: 8%; border: 0" - > + <div v-if="twoTotalAmount" class="top_left" style="width: 8%; border: 0px"> <dl> <dd class="font_weight">{{ twoObject.value }}</dd> <dd class="top_right_bottom">{{ twoObject.label }}</dd> @@ -37,16 +33,12 @@ </dl> </div> <div class="top_right" style="width: 50%; margin-right: 15px"> - <dl v-for="item in otherOptions" :key="item.label"> + <dl v-for="item in otherOptions" :key="item.value"> <dd class="font_weight"> {{ item.value }} </dd> <dd class="top_right_bottom"> - <span - v-if="item.status" - class="Badge" - :class="item.status" - ></span> + <span v-if="item.status" class="Badge" :class="item.status"></span> <span>{{ item.label }}</span> </dd> </dl> @@ -56,29 +48,20 @@ <div class="search"> <template v-if="isSearchForm"> <el-input - :placeholder="placeholder" - v-model.trim="searchInput" - class="input-with-select" - style="width: 410px" - clearable - @change="searchClick" - @clear="clearClick" + :placeholder="placeholder" + v-model.trim="searchInput" + class="input-with-select" + style="width: 410px" + clearable + @change="searchClick" + @clear="clearClick" > - <i - slot="suffix" - class="el-icon-search" - style="cursor: pointer" - @click="searchClick" - ></i> + <i slot="suffix" class="el-icon-search" style="cursor: pointer" @click="searchClick"></i> </el-input> </template> - <div class="search-Btn" v-if="showActionBtn"> + <div class="search-Btn"> <div class="common"> - <img - src="../../../public/images/filter.png" - style="width: 10px" - alt="绛涢��" - /> + <img src="@/assets/img/shaixuan.png" style="width: 10px" /> <span>绛涢��</span> </div> <div class="common"> @@ -92,14 +75,7 @@ </div> </div> <div v-if="showSet"> - <i - class="el-icon-setting cursor_pointer font_size_30" - style="color: rgb(128,128,128)" - @click="inspectionConfigClick" - ></i> - </div> - <div class="right"> - <slot name="rightButton"></slot> + <i class="el-icon-setting cursor_pointer font_size_30" style="color: gray" @click="inspectionConfigClick"></i> </div> </div> </div> @@ -112,32 +88,32 @@ props: { showAdd: { type: Boolean, - default: true, + default: true }, showDownload: { type: Boolean, - default: false, + default: false }, showActionBtn: { type: Boolean, - default: true, + default: true }, placeholder: { type: String, - default: "璇疯緭鍏ュ唴瀹�", + default: "璇疯緭鍏ュ唴瀹�" }, addTitle: { type: String, - default: "娣诲姞", + default: "娣诲姞" }, totalObject: { type: Object, default: () => { return { value: 0, - label: "鍏ㄩ儴鐗╂枡", - }; - }, + label: "鍏ㄩ儴鐗╂枡" + } + } }, otherOptions: { type: Array, @@ -145,98 +121,98 @@ { value: 2, label: "瀹夊叏搴撳瓨", - status: "success", + status: "success" }, { value: 12, label: "娆犳枡", - status: "error", + status: "error" }, { value: 2, label: "瀹夊叏搴撳瓨", - status: "success", + status: "success" }, { value: 12, label: "娆犳枡", - status: "error", - }, - ], + status: "error" + } + ] }, searchSel: { type: Object, default: () => { return { value: "name", - label: "", - }; - }, + label: "" + } + } }, twoTotalAmount: { type: Boolean, - default: false, + default: false }, twoObject: { type: Object, default: () => { return { value: 0, - label: "杞﹂棿鎬婚噺", - }; - }, + label: "杞﹂棿鎬婚噺" + } + } }, amountView: { type: Boolean, - default: true, + default: true }, isSearchForm: { type: Boolean, - default: true, + default: true }, showSet: { type: Boolean, - default: false, + default: false }, inputName: { type: String, - default: "", - }, + default: "" + } }, watch: { inputName(val) { - this.searchInput = val; - }, + this.searchInput = val + } }, data() { return { searchInput: "", - searchSelValue: this.searchSel, - }; + searchSelValue: this.searchSel + } }, methods: { // 鎼滅储 searchClick() { - this.$emit("searchClick", this.searchInput); + this.$emit("searchClick", this.searchInput) }, // 娓呴櫎 clearClick() { - this.$emit("clearClick", 1); + this.$emit("clearClick", 1) }, // 娣诲姞 addBtn() { - this.$emit("addCommonClick"); + this.$emit("addCommonClick") }, // 涓嬭浇 downloadClick() { - this.$emit("downloadClick"); + this.$emit("downloadClick") }, // 妯″叿-妫�鏌ラ厤缃� inspectionConfigClick() { - this.$emit("inspectionConfigClick"); - }, - }, -}; + this.$emit("inspectionConfigClick") + } + } +} </script> <!-- Add "scoped" attribute to limit CSS to this component only --> @@ -280,7 +256,7 @@ .font_weight { font-weight: 500; font-size: 18px; - font-family: "DIN Alternate",serif; + font-family: "DIN Alternate", serif; } .top_right_bottom { font-size: 12px; @@ -300,7 +276,7 @@ .font_weight { font-weight: 500; font-size: 18px; - font-family: "DIN Alternate",serif; + font-family: "DIN Alternate", serif; } .top_right_bottom { font-size: 12px; diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue index e3f0f26..fb8bbf5 100644 --- a/src/components/makepager/TableCommonView.vue +++ b/src/components/makepager/TableCommonView.vue @@ -1,3 +1,4 @@ +<!-- eslint-disable vue/no-use-v-if-with-v-for --> <template> <div class="table-view"> <el-table @@ -12,9 +13,10 @@ :summary-method="getSummaries" :span-method="arraySpanMethod" @selection-change="handleSelectionChange" - :header-cell-style="{ background: '#f1f3f8', color: '#000009' , 'font-size': '12px','font-family':'PingFangSC'}" + :header-cell-style="{ background: '#f1f3f8', color: '#000009', 'font-size': '12px', 'font-family': 'PingFangSC' }" size="mini" > + <el-table-column v-if="tableList.selectIndex" type="index" label="搴忓彿" width="50"></el-table-column> <el-table-column v-if="selectBox" type="selection" width="40"> </el-table-column> <el-table-column v-for="(item, i) in tableList.tableColumn" @@ -127,15 +129,8 @@ <div class="overSpread1" v-show="iscolopen" @click="onMaskClick"></div> <div class="styleBtn"> <i @click="checkCol()" class="label">...</i> - <el-checkbox-group - v-model="showcol" - v-show="iscolopen" - class="checkbox-group" - @change="selectCheckBoxList" - > - <el-checkbox v-for="item in tableList.allcol" :label="item" :key="item" - >{{ item }} - </el-checkbox> + <el-checkbox-group v-model="showcol" v-show="iscolopen" class="checkbox-group" @change="selectCheckBoxList"> + <el-checkbox v-for="item in tableList.allcol" :label="item" :key="item">{{ item }} </el-checkbox> </el-checkbox-group> </div> </div> @@ -147,13 +142,13 @@ props: { selectBox: { type: Boolean, - default: true + default: false }, tableList: { type: Object, default: () => { return { - selectBox: true, + selectIndex: true, tableInfomation: [], // 鎺ュ彛杩斿洖鏁版嵁 showcol: [], allcol: [], @@ -178,27 +173,27 @@ data() { return { iscolopen: false, - showcol:[] + showcol: [] } }, computed: {}, watch: { - 'tableList.showcol':{ - handler(newVal){ - this.showcol=newVal + "tableList.showcol": { + handler(newVal) { + this.showcol = newVal }, - immediate:true + immediate: true } }, methods: { onMaskClick() { - this.iscolopen = false; + this.iscolopen = false }, checkCol() { - this.iscolopen = !this.iscolopen; + this.iscolopen = !this.iscolopen }, selectCheckBoxList(val) { - this.$emit("selTableCol", val); + this.$emit("selTableCol", val) }, handleReserve(row) { return row._id ? row._id : row.id @@ -218,11 +213,11 @@ for (let i = 0; i < this.showSummary.mergeNumber; i++) { cell[i] && cell[i].style && (cell[i].style.display = "none") } - if (cell[this.showSummary.mergeNumber]){ - if (cell[this.showSummary.mergeNumber].classList){ + if (cell[this.showSummary.mergeNumber]) { + if (cell[this.showSummary.mergeNumber].classList) { cell[this.showSummary.mergeNumber].classList.remove("is-left") } - if (cell[this.showSummary.mergeNumber].colSpan){ + if (cell[this.showSummary.mergeNumber].colSpan) { cell[this.showSummary.mergeNumber].colSpan = this.showSummary.mergeNumber.toString() } } @@ -389,8 +384,8 @@ margin-left: -10px; margin-right: -11px; li { - //height: 57px; - //line-height: 57px; + height: 57px; + line-height: 57px; .name-view { padding-left: 10px; border-bottom: 1px solid #ebeef5; @@ -400,14 +395,10 @@ } } .no-product { - //height: 57px; - //line-height: 57px; - } - li:last-child .name-view{ - border-bottom: none; + height: 57px; + line-height: 57px; } } - } ::v-deep { .el-table__footer-wrapper { @@ -435,8 +426,8 @@ text-align: center; } -::v-deep{ - .el-table .cell .el-button--text.el-button--small{ +::v-deep { + .el-table .cell .el-button--text.el-button--small { padding: 4px 0; } } @@ -477,7 +468,7 @@ } .checkbox-group { width: 160px; - height: 330px; + height: 300px; overflow: auto; display: flex; flex-direction: column; diff --git a/src/views/client/followupRecords/AddFollowupRecordsDialog.vue b/src/views/client/followupRecords/AddFollowupRecordsDialog.vue index c16c4fa..2dd0b08 100644 --- a/src/views/client/followupRecords/AddFollowupRecordsDialog.vue +++ b/src/views/client/followupRecords/AddFollowupRecordsDialog.vue @@ -13,7 +13,7 @@ :model="editConfig.infomation" :rules="rules" label-position="right" - label-width="308px" + label-width="168px" size="mini" > <!-- 淇℃伅 --> @@ -34,6 +34,7 @@ " value-key="name" @select="handleSelectClient('client', $event)" + style="width: 100%" ></el-autocomplete> <div class="common-select-btn" @click="selClientClick('client')"> <i class="el-icon-circle-plus-outline" title="閫夋嫨"></i> @@ -50,7 +51,7 @@ </el-col> <el-col :span="12" v-if="isUnflod"> <el-form-item label="璺熻繘璁板綍缂栧彿" prop="number"> - <el-input v-model="editConfig.infomation.number"></el-input> + <el-input v-model="editConfig.infomation.number" style="width: 100%"></el-input> </el-form-item> </el-col> <el-col v-if="isUnflod" :span="12"> @@ -61,6 +62,7 @@ placeholder="璇烽�夋嫨" class="common-select-sel" size="mini" + style="width: 100%" > <el-option v-for="item in clientStatusOptions" :key="item.id" :label="item.name" :value="item.id"> </el-option> @@ -81,6 +83,7 @@ " value-key="name" @select="handleSelectClient('contact', $event)" + style="width: 100%" ></el-autocomplete> <div class="common-select-btn" @click="selClientClick('contact')"> <i class="el-icon-circle-plus-outline" title="閫夋嫨"></i> @@ -97,7 +100,12 @@ </el-col> <el-col :span="12"> <el-form-item v-if="isUnflod" label="璐熻矗浜�" prop="member_id"> - <el-select v-model="editConfig.infomation.member_id" placeholder="璇烽�夋嫨" size="mini"> + <el-select + v-model="editConfig.infomation.member_id" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 100%" + > <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> </el-option> </el-select> @@ -108,15 +116,6 @@ <el-input v-model="editConfig.infomation.topic"></el-input> </el-form-item> </el-col> - <el-col :span="isUnflod ? 24 : 12"> - <el-form-item label="璺熻繘璁板綍" prop="record"> - <el-input - type="textarea" - :autosize="{ minRows: 2, maxRows: 4 }" - v-model="editConfig.infomation.record" - ></el-input> - </el-form-item> - </el-col> <el-col :span="12"> <el-form-item label="鑱旂郴鏂瑰紡" prop="contact_information_id"> <!-- <el-input @@ -125,7 +124,12 @@ show-word-limit oninput="value=value.replace(/[^\d]/g,'')" ></el-input> --> - <el-select v-model="editConfig.infomation.contact_information_id" placeholder="璇烽�夋嫨" size="mini"> + <el-select + v-model="editConfig.infomation.contact_information_id" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 100%" + > <el-option v-for="item in contactInfoOptions" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> @@ -143,6 +147,7 @@ " value-key="name" @select="handleSelectClient('chance', $event)" + style="width: 100%" ></el-autocomplete> <div class="common-select-btn" @click="selClientClick('chance')"> <i class="el-icon-circle-plus-outline"></i> @@ -170,6 +175,7 @@ " value-key="name" @select="handleSelectClient('lead', $event)" + style="width: 100%" ></el-autocomplete> <div class="common-select-btn" @click="selClientClick('lead')"> <i class="el-icon-circle-plus-outline"></i> @@ -192,6 +198,7 @@ type="date" placeholder="閫夋嫨鏃ユ湡" :picker-options="pickerOptions" + style="width: 100%" > </el-date-picker> </el-form-item> @@ -203,8 +210,18 @@ value-format="yyyy-MM-dd" type="date" placeholder="閫夋嫨鏃ユ湡" + style="width: 100%" > </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="isUnflod ? 24 : 12"> + <el-form-item label="璺熻繘璁板綍" prop="record"> + <el-input + type="textarea" + :autosize="{ minRows: 2, maxRows: 4 }" + v-model="editConfig.infomation.record" + ></el-input> </el-form-item> </el-col> </el-row> @@ -341,7 +358,7 @@ }, data() { return { - dialogWidth: "80%", + dialogWidth: "50%", editConfig: this.editContactsConfig, rules: { number: [{ required: true, message: "璇疯緭鍏ヨ窡杩涜褰曠紪鍙�", trigger: "blur" }], @@ -512,12 +529,16 @@ handleSelectClient(value, item) { if (value === "client") { this.clientId = item.id + this.editConfig.infomation.client_name = item.name } else if (value === "contact") { 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 } else { this.saleLeadId = item.id + this.editConfig.infomation.sales_leads_name = item.name } }, selClientClick(value) { diff --git a/src/views/client/followupRecords/index.vue b/src/views/client/followupRecords/index.vue index 668d00e..e593d33 100644 --- a/src/views/client/followupRecords/index.vue +++ b/src/views/client/followupRecords/index.vue @@ -7,16 +7,16 @@ <div class="filter" v-else> <div class="filter-card"> <CommonSearch - :show-add="false" - :show-download="false" - :amount-view="false" - :show-action-btn="false" - placeholder="璇疯緭鍏ュ鎴峰悕绉�" - @searchClick="onFilterSearch" + :show-add="false" + :show-download="false" + :amount-view="false" + :show-action-btn="false" + placeholder="璇疯緭鍏ュ鎴峰悕绉�" + @searchClick="onFilterSearch" > <template slot="leftButton"> - <el-button size="small" type="primary" @click="addBtnClick">鏂板缓</el-button> - <el-button size="small" @click="delClick">鍒犻櫎</el-button> + <el-button size="small" type="primary" @click="addBtnClick">鏂板缓</el-button> + <!-- <el-button size="small" @click="delClick">鍒犻櫎</el-button> --> </template> </CommonSearch> </div> @@ -26,20 +26,19 @@ <div class="body-card"> <div class="list-view"> <TableCommonView - ref="tableListRef" - v-loading="loading" - :table-list="tableList" - :select-box="!isDetail" - @selContactsClick="selContactsClick" - @selClientClick="selClientClick" - @getSelectArray="getSelectArray" - @selTableCol="selTableCol" + ref="tableListRef" + v-loading="loading" + :table-list="tableList" + @selContactsClick="selContactsClick" + @selClientClick="selClientClick" + @getSelectArray="getSelectArray" + @selTableCol="selTableCol" > <template slot="tableButton"> - <el-table-column label="鎿嶄綔" width="60" fixed="right"> + <el-table-column label="鎿嶄綔" width="90" fixed="right"> <template slot-scope="scope"> <el-button @click="handleClick(scope.row)" type="text" size="small">缂栬緫</el-button> - <!-- <el-button @click="delClick(scope.row.id)" type="text" size="small">鍒犻櫎</el-button> --> + <el-button @click="delClick(scope.row.id)" type="text" size="small">鍒犻櫎</el-button> </template> </el-table-column> </template> @@ -139,7 +138,7 @@ }, search_map: {}, tableColumn: [ - { label: "涓婚", prop: "topic", min: 120 ,default:true}, // 涓婚 + { label: "涓婚", prop: "topic", min: 120, default: true }, // 涓婚 { label: "瀹㈡埛鍚嶇О", prop: "client_name", min: 190, isClientClick: true }, // 瀹㈡埛鍚嶇О { label: "鑱旂郴浜哄鍚�", prop: "contact_name", min: 100, isContactClick: true }, // 鑱旂郴浜哄鍚� { label: "瀹㈡埛鐘舵��", prop: "client_status", min: 100 }, // 瀹㈡埛鐘舵�� @@ -149,7 +148,18 @@ { label: "璐熻矗浜�", prop: "member_name", min: 110 }, // 璐熻矗浜� { label: "璺熻繘璁板綍", prop: "record", min: 130 } // 璺熻繘璁板綍 ], - showCol:['涓婚','瀹㈡埛鍚嶇О','鑱旂郴浜哄鍚�','鑱旂郴浜哄鍚�','瀹㈡埛鐘舵��','鑱旂郴鏂瑰紡','鑱旂郴鏃ユ湡','涓嬫鍥炶鏃ユ湡','璐熻矗浜�','璺熻繘璁板綍'] + showCol: [ + "涓婚", + "瀹㈡埛鍚嶇О", + "鑱旂郴浜哄鍚�", + "鑱旂郴浜哄鍚�", + "瀹㈡埛鐘舵��", + "鑱旂郴鏂瑰紡", + "鑱旂郴鏃ユ湡", + "涓嬫鍥炶鏃ユ湡", + "璐熻矗浜�", + "璺熻繘璁板綍" + ] } }, created() { @@ -172,12 +182,13 @@ methods: { setTable() { this.tableList = { + selectIndex: true, tableInfomation: [], allcol: [], showcol: this.showCol, - tableColumn:this.setColumnVisible(this.showCol) + tableColumn: this.setColumnVisible(this.showCol) } - this.tableList.allcol = this.tableList.tableColumn.filter(ele=>!ele.default).map(ele=>ele.label); + this.tableList.allcol = this.tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label) this.searchOptions = [] for (let i = 0; i < this.tableList.tableColumn.length; i++) { const label = this.tableList.tableColumn[i].label @@ -185,17 +196,17 @@ this.searchOptions.push({ value: value, label: label }) } }, - setColumnVisible(showCol){ - return this.tableColumn.map(ele=>{ + setColumnVisible(showCol) { + return this.tableColumn.map((ele) => { return { ...ele, - isShowColumn:showCol.includes(ele.label) + isShowColumn: showCol.includes(ele.label) } }) }, selTableCol(val) { - this.showcol = val; - this.tableList.tableColumn = this.setColumnVisible(val); + this.showcol = val + this.tableList.tableColumn = this.setColumnVisible(val) }, // 璇锋眰鏁版嵁 async getData() { @@ -237,8 +248,8 @@ }) }, // 鎼滅储 - onFilterSearch(searchText){ - this.search_map.name = searchText ?? '' + onFilterSearch(searchText) { + this.search_map.name = searchText ?? "" this.pagerOptions.currPage = 1 this.getData() }, @@ -256,27 +267,27 @@ this.editConfig.infomation = { ...row, sale_chance_name: "", sales_leads_name: "" } }, // 鍒犻櫎 - delClick() { - if (this.selValueList && this.selValueList.length > 0) { - this.$confirm("鏄惁纭鍒犻櫎?", "璀﹀憡", { - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - type: "warning" - }) - .then(() => { - getDeleteFollowRecord({ ids: this.selValueList }).then((response) => { - if (response.code === 200) { - this.$message.success("鍒犻櫎鎴愬姛") - this.getData() - } else { - this.$message.warning("鍒犻櫎澶辫触") - } - }) + delClick(id) { + // if (this.selValueList && this.selValueList.length > 0) { + this.$confirm("鏄惁纭鍒犻櫎?", "璀﹀憡", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }) + .then(() => { + getDeleteFollowRecord({ ids: [id] }).then((response) => { + if (response.code === 200) { + this.$message.success("鍒犻櫎鎴愬姛") + this.getData() + } else { + this.$message.warning("鍒犻櫎澶辫触") + } }) - .catch(() => {}) - } else { - this.$message.warning("璇疯嚦灏戦�夋嫨涓�鏉¤褰�") - } + }) + .catch(() => {}) + // } else { + // this.$message.warning("璇疯嚦灏戦�夋嫨涓�鏉¤褰�") + // } }, getSelectArray(val) { console.log(val) @@ -314,15 +325,15 @@ <!-- Add "scoped" attribute to limit CSS to this component only --> <style lang="scss" scoped> -.followup-records{ +.followup-records { height: 100%; overflow: hidden; - .filter{ + .filter { height: 80px; display: flex; align-items: center; padding: 12px 20px 0 20px; - &-card{ + &-card { height: 80px; display: flex; align-items: center; @@ -333,7 +344,7 @@ background-color: #fff; } } - .body{ + .body { box-sizing: border-box; padding: 10px 20px; border-radius: 12px; diff --git a/src/views/other/commonDialog/SelectClientDialog.vue b/src/views/other/commonDialog/SelectClientDialog.vue index c248902..4615423 100644 --- a/src/views/other/commonDialog/SelectClientDialog.vue +++ b/src/views/other/commonDialog/SelectClientDialog.vue @@ -27,10 +27,14 @@ :table-list="tableList" :select-box="false" @selClientClick="selNameClick" + @selTableCol="selTableCol" > </TableCommonView> <div slot="footer" class="dialog-footer"> - <div class="remark">璇存槑锛氭敮鎸佸瀛楁妯$硦鏌ヨ锛屼粎鏄剧ず绗﹀悎鏉′欢鐨勫墠5鏉℃暟鎹�</div> + <!-- <div class="remark">璇存槑锛氭敮鎸佸瀛楁妯$硦鏌ヨ锛屼粎鏄剧ず绗﹀悎鏉′欢鐨勫墠5鏉℃暟鎹�</div> --> + <div class="btn-pager"> + <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> + </div> </div> </div> </el-dialog> @@ -39,8 +43,10 @@ <script> import { getClientList } from "@/api/client/client" +import pageMixin from "@/components/makepager/pager/mixin/pageMixin" export default { name: "EditSelClientDialog", + mixins: [pageMixin], props: { editCommonConfig: { type: Object, @@ -66,7 +72,29 @@ loading: false, searchOptions: [], tableList: {}, - search_map: {} + search_map: {}, + tableColumn: [ + { label: "瀹㈡埛鍚嶇О", prop: "name", min: 100, isClientClick: true, default: true }, + { label: "瀹㈡埛缂栧彿", prop: "number" }, + { label: "瀹㈡埛鐘舵��", prop: "client_status" }, + { label: "閿�鍞礋璐d汉", prop: "member_name", min: 100 }, + { label: "娉曞畾浠h〃浜�", prop: "representative", min: 100 }, + { label: "娉ㄥ唽鏃堕棿", prop: "registration_time" }, + { label: "缁忚惀鑼冨洿", prop: "business_scope" }, + { label: "璇︾粏鍦板潃", prop: "detail_address" }, + { label: "澶囨敞", prop: "remark" } + ], + showCol: [ + "瀹㈡埛鍚嶇О", + "瀹㈡埛缂栧彿", + "瀹㈡埛鐘舵��", + "閿�鍞礋璐d汉", + "娉曞畾浠h〃浜�", + "娉ㄥ唽鏃堕棿", + "缁忚惀鑼冨洿", + "璇︾粏鍦板潃", + "澶囨敞" + ] } }, created() { @@ -76,25 +104,31 @@ methods: { setTable() { this.tableList = { + selectIndex: true, tableInfomation: [], - tableColumn: [ - { label: "瀹㈡埛鍚嶇О", prop: "name", min: 100, isClientClick: true }, - { label: "瀹㈡埛缂栧彿", prop: "number" }, - { label: "瀹㈡埛鐘舵��", prop: "client_status" }, - { label: "閿�鍞礋璐d汉", prop: "member_name", min: 100 }, - { label: "娉曞畾浠h〃浜�", prop: "representative", min: 100 }, - { label: "娉ㄥ唽鏃堕棿", prop: "registration_time" }, - { label: "缁忚惀鑼冨洿", prop: "business_scope" }, - { label: "璇︾粏鍦板潃", prop: "detail_address" }, - { label: "澶囨敞", prop: "remark" } - ] + allcol: [], + showcol: this.showCol, + tableColumn: this.setColumnVisible(this.showCol) } + this.tableList.allcol = this.tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label) this.searchOptions = [] for (let i = 0; i < this.tableList.tableColumn.length; i++) { const label = this.tableList.tableColumn[i].label const value = this.tableList.tableColumn[i].prop this.searchOptions.push({ value: value, label: label }) } + }, + setColumnVisible(showCol) { + return this.tableColumn.map((ele) => { + return { + ...ele, + isShowColumn: showCol.includes(ele.label) + } + }) + }, + selTableCol(val) { + this.showcol = val + this.tableList.tableColumn = this.setColumnVisible(val) }, handleClose() { this.editConfig.editVisible = false @@ -104,13 +138,14 @@ this.loading = true await getClientList({ search_map: this.search_map, - page: 0, - pageSize: 0 + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize }) .then((res) => { console.log(res) if (res.code === 200) { if (res.data.list && res.data.list.length > 0) { + console.log("ssss") const list = res.data.list.map((item) => { return { ...item, @@ -118,9 +153,8 @@ member_name: item.member.username } }) - this.tableList.tableInfomation = list.slice(0, 5) || [] - } else { - this.tableList.tableInfomation = [] + this.tableList.tableInfomation = list || [] + this.pagerOptions.totalCount = res.data.count } } else { this.tableList.tableInfomation = [] @@ -172,15 +206,26 @@ float: right; } } + .list-view { + height: 100%; + background: #c22f2f; + } } .sel-name { color: $color-primary; cursor: pointer; } .dialog-footer { - height: 40px; - line-height: 40px; + height: 50px; + line-height: 50px; color: red; + .btn-pager { + display: flex; + margin-top: 0px; + .page { + margin-left: auto; + } + } } ::v-deep { .input-with-select .el-input-group__prepend { diff --git a/src/views/other/commonDialog/SelectCommonDialog.vue b/src/views/other/commonDialog/SelectCommonDialog.vue index 1225670..9682e35 100644 --- a/src/views/other/commonDialog/SelectCommonDialog.vue +++ b/src/views/other/commonDialog/SelectCommonDialog.vue @@ -28,10 +28,19 @@ <el-button type="primary" size="mini" disabled>蹇�熷垱寤�</el-button> --> </div> </div> - <TableCommonView ref="tableListRef" :table-list="tableList" :select-box="false" @selCommonClick="selNameClick"> + <TableCommonView + ref="tableListRef" + :table-list="tableList" + :select-box="false" + @selCommonClick="selNameClick" + @selTableCol="selTableCol" + > </TableCommonView> <div slot="footer" class="dialog-footer"> - <div class="remark">璇存槑锛氭敮鎸佸瀛楁妯$硦鏌ヨ锛屼粎鏄剧ず绗﹀悎鏉′欢鐨勫墠5鏉℃暟鎹�</div> + <!-- <div class="remark">璇存槑锛氭敮鎸佸瀛楁妯$硦鏌ヨ锛屼粎鏄剧ず绗﹀悎鏉′欢鐨勫墠5鏉℃暟鎹�</div> --> + <div class="btn-pager"> + <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> + </div> </div> </div> </el-dialog> @@ -46,8 +55,10 @@ import { getServiceOrderList } from "@/api/serviceManage/clientServiceOrder" import { getProductList } from "@/api/common/other" import { getSalesReturnList } from "@/api/sales/salesReturn" +import pageMixin from "@/components/makepager/pager/mixin/pageMixin" export default { name: "EditSelCommonDialog", + mixins: [pageMixin], props: { editCommonConfig: { type: Object, @@ -76,7 +87,9 @@ search_map: {}, searchSel: {}, keyword: "", - keywordType: "" + keywordType: "", + tableColumn: [], + showCol: [] } }, created() { @@ -86,12 +99,17 @@ methods: { setTable() { if (this.editConfig.title === "閿�鍞�诲崟") { + this.tableColumn = [ + { label: "鍗曟嵁缂栧彿", prop: "number", isClick: true, default: true }, // 鍗曟嵁缂栧彿 + { label: "璐熻矗浜�", prop: "member_name" } // 璐熻矗浜� + ] + this.showCol = ["鍗曟嵁缂栧彿", "璐熻矗浜�"] this.tableList = { + selectIndex: true, tableInfomation: [], - tableColumn: [ - { label: "鍗曟嵁缂栧彿", prop: "number", isClick: true }, // 鍗曟嵁缂栧彿 - { label: "璐熻矗浜�", prop: "member_name" } // 璐熻矗浜� - ] + allcol: [], + showcol: this.showCol, + tableColumn: this.setColumnVisible(this.showCol) } this.searchSel = { value: "number", label: "鍗曟嵁缂栧彿" } } else if (this.editConfig.title === "鏈嶅姟鍚堝悓") { @@ -163,12 +181,25 @@ } this.searchSel = { value: "number", label: "閿�鍞��璐у崟缂栧彿" } } + this.tableList.allcol = this.tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label) this.searchOptions = [] for (let i = 0; i < this.tableList.tableColumn.length; i++) { const label = this.tableList.tableColumn[i].label const value = this.tableList.tableColumn[i].prop this.searchOptions.push({ value: value, label: label }) } + }, + setColumnVisible(showCol) { + return this.tableColumn.map((ele) => { + return { + ...ele, + isShowColumn: showCol.includes(ele.label) + } + }) + }, + selTableCol(val) { + this.showcol = val + this.tableList.tableColumn = this.setColumnVisible(val) }, // 璇锋眰鏁版嵁 async getData() { @@ -193,8 +224,8 @@ async getMasterOrderList() { await getMasterOrderList({ search_map: this.search_map, - page: 0, - pageSize: 0 + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize }).then((res) => { if (res.code === 200) { if (res.data.list && res.data.list.length > 0) { @@ -204,7 +235,8 @@ member_name: item.member.username } }) - this.tableList.tableInfomation = list.slice(0, 5) || [] + this.tableList.tableInfomation = list || [] + this.pagerOptions.totalCount = res.data.count } else { this.tableList.tableInfomation = [] } @@ -429,9 +461,16 @@ cursor: pointer; } .dialog-footer { - height: 40px; - line-height: 40px; + height: 50px; + line-height: 50px; color: red; + .btn-pager { + display: flex; + margin-top: 0px; + .page { + margin-left: auto; + } + } } ::v-deep { .input-with-select .el-input-group__prepend { diff --git a/src/views/other/commonDialog/SelectContactDialog.vue b/src/views/other/commonDialog/SelectContactDialog.vue index d54cd6d..5e3010e 100644 --- a/src/views/other/commonDialog/SelectContactDialog.vue +++ b/src/views/other/commonDialog/SelectContactDialog.vue @@ -10,39 +10,6 @@ > <div class="bg-view"> <div class="query-bg"> - <!-- <el-input placeholder="璇疯緭鍏ュ唴瀹�" v-model="queryInput" size="mini" class="input-with-select"> - <el-select v-model="select" slot="prepend" placeholder="璇烽�夋嫨" disabled> - <el-option label="鍏ㄩ儴瀛楁" value="1"></el-option> - <el-option label="鑱旂郴浜哄鍚�" value="2"></el-option> - <el-option label="鑱旂郴浜虹紪鍙�" value="3"></el-option> - <el-option label="瀹㈡埛鍚嶇О" value="4"></el-option> - <el-option label="鎵嬫満" value="5"></el-option> - </el-select> - </el-input> - <div class="btn"> - <el-button type="primary" size="mini" disabled>璁剧疆瀛楁</el-button> - <el-button type="primary" size="mini" disabled>蹇�熷垱寤�</el-button> - </div> - </div> - <el-table - :data="tableData" - border - size="mini" - v-loading="loading" - :header-cell-style="{ background: '#f7f7f7' }" - > - <el-table-column label="鑱旂郴浜哄鍚�" prop="name" show-overflow-tooltip> - <template slot-scope="scope"> - <span class="sel-name" @click="selNameClick(scope.row)">{{ scope.row.name }}</span> - </template> - </el-table-column> - <el-table-column label="鑱旂郴浜虹紪鍙�" prop="number"></el-table-column> - <el-table-column label="瀹㈡埛鍚嶇О" prop="client_name"></el-table-column> - <el-table-column label="鎵嬫満" prop="phone"></el-table-column> - <div slot="empty"> - <el-empty :image-size="100"></el-empty> - </div> - </el-table> --> <SearchCommonView ref="searchCommonView" :search-options="searchOptions" @@ -60,10 +27,14 @@ :table-list="tableList" :select-box="false" @selContactsClick="selNameClick" + @selTableCol="selTableCol" > </TableCommonView> <div slot="footer" class="dialog-footer"> - <div class="remark">璇存槑锛氭敮鎸佸瀛楁妯$硦鏌ヨ锛屼粎鏄剧ず绗﹀悎鏉′欢鐨勫墠5鏉℃暟鎹�</div> + <!-- <div class="remark">璇存槑锛氭敮鎸佸瀛楁妯$硦鏌ヨ锛屼粎鏄剧ず绗﹀悎鏉′欢鐨勫墠5鏉℃暟鎹�</div> --> + <div class="btn-pager"> + <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> + </div> </div> </div> </el-dialog> @@ -72,8 +43,10 @@ <script> import { getContactList } from "@/api/client/contacts" +import pageMixin from "@/components/makepager/pager/mixin/pageMixin" export default { name: "EditSelClientDialog", + mixins: [pageMixin], props: { editCommonConfig: { type: Object, @@ -97,7 +70,14 @@ tableList: [], searchSelOptions: [], loading: false, - search_map: {} + search_map: {}, + tableColumn: [ + { label: "鑱旂郴浜哄鍚�", prop: "name", isContactClick: true, default: true }, // 鑱旂郴浜哄鍚� + { label: "鑱旂郴浜虹紪鍙�", prop: "number" }, // 鑱旂郴浜虹紪鍙� + { label: "瀹㈡埛鍚嶇О", prop: "client_name" }, // 瀹㈡埛鍚嶇О + { label: "鎵嬫満", prop: "phone" } // 鎵嬫満鍙风爜 + ], + showCol: ["鑱旂郴浜哄鍚�", "鑱旂郴浜虹紪鍙�", "瀹㈡埛鍚嶇О", "鎵嬫満"] } }, created() { @@ -107,20 +87,31 @@ methods: { setTable() { this.tableList = { + selectIndex: true, tableInfomation: [], - tableColumn: [ - { label: "鑱旂郴浜哄鍚�", prop: "name", isContactClick: true }, // 鑱旂郴浜哄鍚� - { label: "鑱旂郴浜虹紪鍙�", prop: "number" }, // 鑱旂郴浜虹紪鍙� - { label: "瀹㈡埛鍚嶇О", prop: "client_name" }, // 瀹㈡埛鍚嶇О - { label: "鎵嬫満", prop: "phone" } // 鎵嬫満鍙风爜 - ] + allcol: [], + showcol: this.showCol, + tableColumn: this.setColumnVisible(this.showCol) } + this.tableList.allcol = this.tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label) this.searchOptions = [] for (let i = 0; i < this.tableList.tableColumn.length; i++) { const label = this.tableList.tableColumn[i].label const value = this.tableList.tableColumn[i].prop this.searchOptions.push({ value: value, label: label }) } + }, + setColumnVisible(showCol) { + return this.tableColumn.map((ele) => { + return { + ...ele, + isShowColumn: showCol.includes(ele.label) + } + }) + }, + selTableCol(val) { + this.showcol = val + this.tableList.tableColumn = this.setColumnVisible(val) }, handleClose() { this.editConfig.editVisible = false @@ -203,9 +194,16 @@ cursor: pointer; } .dialog-footer { - height: 40px; - line-height: 40px; + height: 50px; + line-height: 50px; color: red; + .btn-pager { + display: flex; + margin-top: 0px; + .page { + margin-left: auto; + } + } } ::v-deep { .input-with-select .el-input-group__prepend { diff --git a/src/views/other/commonDialog/SelectLeadDialog.vue b/src/views/other/commonDialog/SelectLeadDialog.vue index 51ab2cd..f60f85a 100644 --- a/src/views/other/commonDialog/SelectLeadDialog.vue +++ b/src/views/other/commonDialog/SelectLeadDialog.vue @@ -10,18 +10,12 @@ > <div class="bg-view"> <div class="query-bg"> - <el-input placeholder="璇疯緭鍏ュ唴瀹�" v-model="queryInput" size="mini" class="input-with-select"> - <el-select v-model="select" slot="prepend" placeholder="璇烽�夋嫨"> - <el-option label="鍏ㄩ儴瀛楁" value="1"></el-option> - <el-option label="瀹㈡埛鍚嶇О" value="2"></el-option> - <el-option label="鍟嗘満鐘舵��" value="3"></el-option> - <el-option label="鍟嗘満鏉ユ簮" value="4"></el-option> - </el-select> - </el-input> - <div class="btn"> - <el-button type="primary" size="mini" disabled>璁剧疆瀛楁</el-button> - <el-button type="primary" size="mini" disabled>蹇�熷垱寤�</el-button> - </div> + <SearchCommonView + ref="searchCommonView" + :search-options="searchOptions" + @searchClick="searchClick" + @resetClick="resetClick" + /> </div> <el-table :data="tableData" @@ -42,7 +36,10 @@ </div> </el-table> <div slot="footer" class="dialog-footer"> - <div class="remark">璇存槑锛氭敮鎸佸瀛楁妯$硦鏌ヨ锛屼粎鏄剧ず绗﹀悎鏉′欢鐨勫墠5鏉℃暟鎹�</div> + <!-- <div class="remark">璇存槑锛氭敮鎸佸瀛楁妯$硦鏌ヨ锛屼粎鏄剧ず绗﹀悎鏉′欢鐨勫墠5鏉℃暟鎹�</div> --> + <div class="btn-pager"> + <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> + </div> </div> </div> </el-dialog> @@ -51,8 +48,10 @@ <script> import { getSalesLeadsList } from "@/api/client/salesLead" +import pageMixin from "@/components/makepager/pager/mixin/pageMixin" export default { name: "EditSelChanceDialog", + mixins: [pageMixin], props: { editCommonConfig: { type: Object, @@ -75,7 +74,12 @@ select: "1", tableData: [], searchSelOptions: [], - loading: false + loading: false, + searchOptions: [ + { value: "name", label: "瀹㈡埛鍚嶇О" }, + { value: "businessStatus", label: "鍟嗘満鐘舵��" }, + { value: "sales_sources_id", label: "鍟嗘満鏉ユ簮" } + ] } }, created() { @@ -88,7 +92,11 @@ // 璇锋眰鏁版嵁 async getData() { this.loading = true - await getSalesLeadsList() + await getSalesLeadsList({ + search_map: this.search_map, + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize + }) .then((res) => { console.log(res) if (res.code === 200) { @@ -98,7 +106,8 @@ ...item } }) - this.tableData = list.slice(0, 5) || [] + this.tableData = list || [] + this.pagerOptions.totalCount = res.data.count } else { this.tableData = [] } @@ -117,6 +126,18 @@ this.editConfig.editVisible = false console.log(row) this.$emit("selClient", row, "lead") + }, + // 鎼滅储 + searchClick(val, content) { + console.log(val, content) + this.search_map = { + [val.value]: content + } + this.getData() + }, + resetClick() { + this.search_map = {} + this.getData() } } } @@ -146,9 +167,16 @@ cursor: pointer; } .dialog-footer { - height: 40px; - line-height: 40px; + height: 50px; + line-height: 50px; color: red; + .btn-pager { + display: flex; + margin-top: 0px; + .page { + margin-left: auto; + } + } } ::v-deep { .input-with-select .el-input-group__prepend { -- Gitblit v1.8.0