From 960d295793f1d164e3e8e22f8d7744b7923ae24b Mon Sep 17 00:00:00 2001 From: yangfeng <wanwan926_4@163.com> Date: 星期一, 17 七月 2023 18:29:17 +0800 Subject: [PATCH] 销售线索列表、新建、编辑接口联调 --- src/api/custom/contacts.js | 31 ++ src/api/custom/client.js | 31 ++ src/api/custom/salesLead.js | 11 src/components/makepager/CommonSelectView.vue | 3 src/common/config/index.js | 20 + src/router/custom/index.js | 8 src/views/custom/client/index.vue | 78 ++++-- src/api/common/address.js | 75 ++++++ src/views/custom/client/AddClientManageDialog.vue | 12 src/components/makepager/TableCommonView.vue | 2 src/views/custom/salesLead/index.vue | 77 +++-- src/views/custom/salesLead/AddSalesLeadDialog.vue | 180 ++++++++++---- src/views/custom/contacts/index.vue | 59 +++- src/components/layout/components/appsidebar/index.vue | 2 src/api/custom/followupRecords.js | 22 + src/views/custom/followupRecords/index.vue | 65 +++-- 16 files changed, 504 insertions(+), 172 deletions(-) diff --git a/src/api/common/address.js b/src/api/common/address.js new file mode 100644 index 0000000..f61d263 --- /dev/null +++ b/src/api/common/address.js @@ -0,0 +1,75 @@ +import request from "@/common/untils/request.js" + +// 鑾峰彇鍥藉鍒楄〃 +export function getCountryList() { + return request({ + url: "/api/country/list", + method: "get" + }) +} +// 娣诲姞鍥藉 +export function getAddCountry() { + return request({ + url: "/api/country/add", + method: "post" + }) +} +// 鍒犻櫎鍥藉 +export function getDeleteCountry(data) { + return request({ + url: "/api/country/delete", + method: "delete", + data + }) +} +// 璁剧疆鍥藉 +export function getSetCountry() { + return request({ + url: "/api/country/set", + method: "put" + }) +} +// 鏇存柊鍥藉 +export function getUpdateCountry() { + return request({ + url: "/api/country/update", + method: "put" + }) +} + +// 鑾峰彇鐪佷唤鍒楄〃 +export function getProvinceList() { + return request({ + url: "/api/province/list", + method: "get" + }) +} +// 娣诲姞鐪佷唤 +export function getAddProvince() { + return request({ + url: "/api/province/add", + method: "post" + }) +} +// 鍒犻櫎鐪佷唤 +export function getDeleteProvince(data) { + return request({ + url: "/api/province/delete", + method: "delete", + data + }) +} +// 璁剧疆鐪佷唤 +export function getSetProvince() { + return request({ + url: "/api/province/set", + method: "put" + }) +} +// 鏇存柊鐪佷唤 +export function getUpdateProvince() { + return request({ + url: "/api/province/update", + method: "put" + }) +} diff --git a/src/api/custom/client.js b/src/api/custom/client.js new file mode 100644 index 0000000..93a5be5 --- /dev/null +++ b/src/api/custom/client.js @@ -0,0 +1,31 @@ +import request from "@/common/untils/request.js" + +// 瀹㈡埛绠$悊鍒楄〃 +export function getClientList() { + return request({ + url: "/api/client/list", + method: "get" + }) +} +// 娣诲姞瀹㈡埛绠$悊 +export function getAddClient() { + return request({ + url: "/api/client/add", + method: "post" + }) +} +// 鍒犻櫎瀹㈡埛绠$悊 +export function getDeleteClient(data) { + return request({ + url: "/api/client/delete", + method: "delete", + data + }) +} +// 鏇存柊瀹㈡埛绠$悊 +export function getUpdateClient() { + return request({ + url: "/api/client/update", + method: "put" + }) +} diff --git a/src/api/custom/contacts.js b/src/api/custom/contacts.js new file mode 100644 index 0000000..34a3971 --- /dev/null +++ b/src/api/custom/contacts.js @@ -0,0 +1,31 @@ +import request from "@/common/untils/request.js" + +// 鑱旂郴浜哄垪琛� +export function getContactList() { + return request({ + url: "/api/contact/list", + method: "get" + }) +} +// 娣诲姞鑱旂郴浜� +export function getAddContact() { + return request({ + url: "/api/contact/add", + method: "post" + }) +} +// 鍒犻櫎鑱旂郴浜� +export function getDeleteContact(data) { + return request({ + url: "/api/contact/delete", + method: "delete", + data + }) +} +// 鏇存柊鑱旂郴浜� +export function getUpdateContact() { + return request({ + url: "/api/contact/update", + method: "put" + }) +} diff --git a/src/api/custom/followupRecords.js b/src/api/custom/followupRecords.js index 55d9fb6..581b719 100644 --- a/src/api/custom/followupRecords.js +++ b/src/api/custom/followupRecords.js @@ -7,3 +7,25 @@ method: "get" }) } +// 娣诲姞璺熻繘璁板綍 +export function getAddFollowRecord() { + return request({ + url: "/api/followRecord/add", + method: "post" + }) +} +// 鍒犻櫎璺熻繘璁板綍 +export function getDeleteFollowRecord(data) { + return request({ + url: "/api/followRecord/delete", + method: "delete", + data + }) +} +// 鏇存柊璺熻繘璁板綍 +export function getUpdateFollowRecord() { + return request({ + url: "/api/followRecord/update", + method: "put" + }) +} diff --git a/src/api/custom/salesLead.js b/src/api/custom/salesLead.js index 622fbc6..2c49016 100644 --- a/src/api/custom/salesLead.js +++ b/src/api/custom/salesLead.js @@ -8,10 +8,11 @@ }) } // 娣诲姞閿�鍞嚎绱� -export function getAddSalesLeads() { +export function getAddSalesLeads(data) { return request({ url: "/api/salesLeads/add", - method: "post" + method: "post", + data }) } // 鍒犻櫎閿�鍞嚎绱� @@ -23,12 +24,14 @@ }) } // 鏇存柊閿�鍞嚎绱� -export function getUpdateSalesLeads() { +export function getUpdateSalesLeads(data) { return request({ url: "/api/salesLeads/update", - method: "put" + method: "put", + data }) } + // 鍟嗘満鏉ユ簮鍒楄〃 export function getSalesSourcesList() { return request({ diff --git a/src/common/config/index.js b/src/common/config/index.js index e69de29..388b868 100644 --- a/src/common/config/index.js +++ b/src/common/config/index.js @@ -0,0 +1,20 @@ +export function dateFormat(fmt, date) { + let ret = "" + date = new Date(date) + const opt = { + "Y+": date.getFullYear().toString(), // 骞� + "m+": (date.getMonth() + 1).toString(), // 鏈� + "d+": date.getDate().toString(), // 鏃� + "H+": date.getHours().toString(), // 鏃� + "M+": date.getMinutes().toString(), // 鍒� + "S+": date.getSeconds().toString() // 绉� + // 鏈夊叾浠栨牸寮忓寲瀛楃闇�姹傚彲浠ョ户缁坊鍔狅紝蹇呴』杞寲鎴愬瓧绗︿覆 + } + for (let k in opt) { + ret = new RegExp("(" + k + ")").exec(fmt) + if (ret) { + fmt = fmt.replace(ret[1], ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0")) + } + } + return fmt +} diff --git a/src/components/layout/components/appsidebar/index.vue b/src/components/layout/components/appsidebar/index.vue index 74fa2a2..27af387 100644 --- a/src/components/layout/components/appsidebar/index.vue +++ b/src/components/layout/components/appsidebar/index.vue @@ -19,7 +19,7 @@ <span>瀹㈡埛绠$悊</span> </template> <el-menu-item index="/custom/salesLead">閿�鍞嚎绱�</el-menu-item> - <el-menu-item index="/custom/customManage">瀹㈡埛绠$悊</el-menu-item> + <el-menu-item index="/custom/clientManage">瀹㈡埛绠$悊</el-menu-item> <el-menu-item index="/custom/contacts">鑱旂郴浜�</el-menu-item> <el-menu-item index="/custom/followupRecords">璺熻繘璁板綍</el-menu-item> </el-submenu> diff --git a/src/components/makepager/CommonSelectView.vue b/src/components/makepager/CommonSelectView.vue index 0ef9070..58060f4 100644 --- a/src/components/makepager/CommonSelectView.vue +++ b/src/components/makepager/CommonSelectView.vue @@ -1,7 +1,7 @@ <template> <div class="common-select"> <el-select v-model="commonDefautValue" placeholder="璇烽�夋嫨" class="common-select-sel" size="mini"> - <el-option v-for="item in commonOptions" :key="item.value" :label="item.label" :value="item.value"> </el-option> + <el-option v-for="item in commonOptions" :key="item.id" :label="item.name" :value="item.name"> </el-option> </el-select> <div class="common-select-btn" @click="commonSelClick"> <i class="el-icon-setting"></i> @@ -29,6 +29,7 @@ }, methods: { commonSelClick() { + console.log("1111111") this.$emit("editDropdownBox") } } diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue index af881ec..d002647 100644 --- a/src/components/makepager/TableCommonView.vue +++ b/src/components/makepager/TableCommonView.vue @@ -28,7 +28,7 @@ <template slot-scope="scope"> <span v-if="item.price">{{ "锟�" + number_format(scope.row[item.prop], 2, ".", ",") }}</span> <div v-else-if="item.status" :class="scope.row.status">{{ scope.row[item.prop] }}</div> - <span v-else>{{ scope.row[item.prop] }}</span> + <span v-else>{{ scope.row[item.prop] ? scope.row[item.prop] : "--" }}</span> </template> </el-table-column> <slot name="tableButton" /> diff --git a/src/router/custom/index.js b/src/router/custom/index.js index 7657cff..1097fdc 100644 --- a/src/router/custom/index.js +++ b/src/router/custom/index.js @@ -1,7 +1,7 @@ // const type from '@/router/deployCode' const salesLead = (resolve) => require(["@/views/custom/salesLead/index"], resolve) // 閿�鍞嚎绱� -const customManage = (resolve) => require(["@/views/custom/customManage/index"], resolve) // 閿�鍞嚎绱� +const clientManage = (resolve) => require(["@/views/custom/client/index"], resolve) // 瀹㈡埛绠$悊 const contacts = (resolve) => require(["@/views/custom/contacts/index"], resolve) // 鑱旂郴浜� const followupRecords = (resolve) => require(["@/views/custom/followupRecords/index"], resolve) // 璺熻繘璁板綍 @@ -16,9 +16,9 @@ } }, { - path: "/custom/customManage", - name: "customManage", - component: customManage, + path: "/custom/clientManage", + name: "clientManage", + component: clientManage, meta: { title: "瀹㈡埛绠$悊", requireAuth: true diff --git a/src/views/custom/customManage/AddCustomManageDialog.vue b/src/views/custom/client/AddClientManageDialog.vue similarity index 98% rename from src/views/custom/customManage/AddCustomManageDialog.vue rename to src/views/custom/client/AddClientManageDialog.vue index 964d923..cbf31f7 100644 --- a/src/views/custom/customManage/AddCustomManageDialog.vue +++ b/src/views/custom/client/AddClientManageDialog.vue @@ -1,7 +1,7 @@ <template> - <div class="add-custom-manage"> + <div class="add-client-manage"> <el-dialog - :title="editCuntomManageConfig.title + '瀹㈡埛绠$悊'" + :title="editClientManageConfig.title + '瀹㈡埛绠$悊'" :visible.sync="editConfig.visible" :width="dialogWidth" :before-close="handleClose" @@ -352,9 +352,9 @@ <script> import CommonSelectView from "@/components/makepager/CommonSelectView" export default { - name: "AddCustomManageDialog", + name: "AddClientManageDialog", props: { - editCuntomManageConfig: { + editClientManageConfig: { type: Object, default: () => { return { @@ -409,7 +409,7 @@ data() { return { dialogWidth: "80%", - editConfig: this.editCuntomManageConfig, + editConfig: this.editClientManageConfig, rules: { customName: [{ required: true, message: "璇疯緭鍏ュ鎴峰悕绉�", trigger: "blur" }], customStatus: [{ required: true, message: "璇烽�夋嫨瀹㈡埛鐘舵��", trigger: "change" }], @@ -471,7 +471,7 @@ <!-- Add "scoped" attribute to limit CSS to this component only --> <style lang="scss" scoped> -.add-custom-manage { +.add-client-manage { .basic-info { .basic-info-title { background-color: #f4f8fe; diff --git a/src/views/custom/customManage/index.vue b/src/views/custom/client/index.vue similarity index 73% rename from src/views/custom/customManage/index.vue rename to src/views/custom/client/index.vue index 4b93a52..0f5da51 100644 --- a/src/views/custom/customManage/index.vue +++ b/src/views/custom/client/index.vue @@ -29,7 +29,7 @@ /> <PagerView class="page" /> </div> - <TableCommonView ref="tableListRef" :table-list="tableList"> + <TableCommonView ref="tableListRef" v-loading="loading" :table-list="tableList"> <template slot="tableButton"> <el-table-column label="鎿嶄綔" width="150" fixed="right"> <template slot-scope="scope"> @@ -41,17 +41,19 @@ </template> </TableCommonView> <!-- 鏂板缓/缂栬緫瀹㈡埛绠$悊 --> - <AddCustomManageDialog v-if="editConfig.visible" :edit-cuntom-manage-config="editConfig" /> + <AddClientManageDialog v-if="editConfig.visible" :edit-client-manage-config="editConfig" /> </div> </template> <script> -import AddCustomManageDialog from "@/views/custom/customManage/AddCustomManageDialog" +import AddClientManageDialog from "@/views/custom/client/AddClientManageDialog" +import { getClientList } from "@/api/custom/client" +import { dateFormat } from "@/common/config/index" export default { name: "CustomManage", props: {}, components: { - AddCustomManageDialog + AddClientManageDialog }, computed: { searchCommonHeight() { @@ -61,6 +63,7 @@ data() { return { tableList: {}, + loading: false, activeName: "first", gonghaiValue: "", gonghaiOptions: [], @@ -92,33 +95,22 @@ }, created() { this.setTable() + this.getData() }, methods: { setTable() { this.tableList = { - tableInfomation: [ - { - customName: "涓婃捣閫氱敤鏈烘鏈夐檺鍏徃", - saleLeadOwner: "BOSS", - importantLevel: "C绫诲鎴�", - notContactDay: "20", - contactName: "钁e浼�", - phoneNumber: "15988887777", - nextFollowDate: "2023-07-26", - detailAddress: "涓婃捣甯傞潤瀹夊尯濞佹捣璺�115鍙�", - customStatus: "娼滃湪瀹㈡埛" - } - ], + tableInfomation: [], tableColumn: [ - { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 100 }, // 瀹㈡埛鍚嶇О - { label: "閿�鍞礋璐d汉", prop: "saleLeadOwner" }, // 閿�鍞礋璐d汉 + { label: "瀹㈡埛鍚嶇О", prop: "name", min: 100 }, // 瀹㈡埛鍚嶇О + { label: "閿�鍞礋璐d汉", prop: "service_member_id" }, // 閿�鍞礋璐d汉 { label: "閲嶈绾у埆", prop: "importantLevel" }, // 閲嶈绾у埆 - { label: "涓嬫鍥炶鏃ユ湡", prop: "notContactDay", min: 90 }, // 鏈仈绯讳汉澶╂暟 - { label: "鎵嬫満鍙风爜", prop: "nextFollowDate" }, // 涓嬫鍥炶鏃ユ湡 - { label: "璇︾粏鍦板潃", prop: "detailAddress", min: 200 }, // 璇︾粏鍦板潃 - { label: "瀹㈡埛鐘舵��", prop: "customStatus" }, // 瀹㈡埛鐘舵�� - { label: "鑱旂郴浜哄鍚�", prop: "contactName" }, // 鑱旂郴浜哄鍚� - { label: "鎵嬫満", prop: "phoneNumber" } // 鎵嬫満鍙风爜 + { label: "涓嬫鍥炶鏃ユ湡", prop: "next_visit_time", min: 90 }, // 涓嬫鍥炶鏃ユ湡 + { label: "鎵嬫満鍙风爜", prop: "phoneNumber" }, // 鎵嬫満鍙风爜 + { label: "璇︾粏鍦板潃", prop: "detail_address", min: 200 }, // 璇︾粏鍦板潃 + { label: "瀹㈡埛鐘舵��", prop: "client_status_id" }, // 瀹㈡埛鐘舵�� + { label: "鑱旂郴浜哄鍚�", prop: "contact_name" }, // 鑱旂郴浜哄鍚� + { label: "鎵嬫満", prop: "phone" } // 鎵嬫満鍙风爜 ] } this.searchOptions = [] @@ -127,6 +119,42 @@ this.searchOptions.push({ value: (i + 1).toString(), label: label }) } }, + // 璇锋眰鏁版嵁 + async getData() { + this.loading = true + await getClientList() + .then((res) => { + console.log(res) + if (res.code === 200) { + if (res.data.list && res.data.list.length > 0) { + const list = res.data.list.map((item) => { + return { + name: item.name, + service_member_id: item.service_member_id, + importantLevel: "", + next_visit_time: dateFormat("YYYY-mm-dd HH:MM", item.next_visit_time), + phoneNumber: "", + detail_address: item.detail_address, + client_status_id: item.client_status_id, + contact_name: "", + phone: "" + } + }) + this.tableList.tableInfomation = list || [] + } else { + this.tableList.tableInfomation = [] + } + } else { + this.tableList.tableInfomation = [] + } + this.loading = false + }) + .catch((err) => { + console.log(err) + this.tableList.tableInfomation = [] + this.loading = false + }) + }, tabsClick(tab, event) { console.log(tab, event) }, diff --git a/src/views/custom/contacts/index.vue b/src/views/custom/contacts/index.vue index 001f105..871f24b 100644 --- a/src/views/custom/contacts/index.vue +++ b/src/views/custom/contacts/index.vue @@ -5,7 +5,7 @@ <PublicFunctionBtnView :operates-list="operatesList" /> <PagerView class="page" /> </div> - <TableCommonView ref="tableListRef" :table-list="tableList"> + <TableCommonView ref="tableListRef" v-loading="loading" :table-list="tableList"> <template slot="tableButton"> <el-table-column label="鎿嶄綔" width="120" fixed="right"> <template slot-scope="scope"> @@ -22,6 +22,7 @@ <script> import AddContactsDialog from "@/views/custom/contacts/AddContactsDialog" +import { getContactList } from "@/api/custom/contacts" export default { name: "ContactsView", props: {}, @@ -32,6 +33,7 @@ data() { return { tableList: {}, + loading: false, queryClassOptions: [ { value: "1", label: "鍏ㄩ儴" }, { value: "2", label: "鏈湀鐢熸棩" } @@ -59,29 +61,20 @@ }, created() { this.setTable() + this.getData() }, methods: { setTable() { this.tableList = { - tableInfomation: [ - { - contactName: "涓婃捣閫氱敤鏈烘鏈夐檺鍏徃", - customName: "BOSS", - contactNumber: "C绫诲鎴�", - duties: "20", - phoneNumber: "钁e浼�", - salesHead: "15988887777", - primaryContact: "2023-07-26" - } - ], + tableInfomation: [], tableColumn: [ { label: "鑱旂郴浜哄鍚�", prop: "contactName", min: 100 }, // 鑱旂郴浜哄鍚� - { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 190 }, // 瀹㈡埛鍚嶇О - { label: "鑱旂郴浜虹紪鍙�", prop: "contactNumber", min: 100 }, // 鑱旂郴浜虹紪鍙� + { label: "瀹㈡埛鍚嶇О", prop: "client_name", min: 190 }, // 瀹㈡埛鍚嶇О + { label: "鑱旂郴浜虹紪鍙�", prop: "number", min: 100 }, // 鑱旂郴浜虹紪鍙� { label: "鑱屽姟", prop: "duties", min: 120 }, // 鑱屽姟 - { label: "鎵嬫満", prop: "phoneNumber", min: 100 }, // 鎵嬫満鍙风爜 + { label: "鎵嬫満", prop: "phone", min: 100 }, // 鎵嬫満鍙风爜 { label: "閿�鍞礋璐d汉", prop: "salesHead", min: 120 }, // 閿�鍞礋璐d汉 - { label: "棣栬鑱旂郴浜�", prop: "primaryContact", min: 90 } // 棣栬鑱旂郴浜� + { label: "棣栬鑱旂郴浜�", prop: "name", min: 90 } // 棣栬鑱旂郴浜� ] } this.searchOptions = [] @@ -90,6 +83,40 @@ this.searchOptions.push({ value: (i + 1).toString(), label: label }) } }, + // 璇锋眰鏁版嵁 + async getData() { + this.loading = true + await getContactList() + .then((res) => { + console.log(res) + if (res.code === 200) { + if (res.data.list && res.data.list.length > 0) { + const list = res.data.list.map((item) => { + return { + contactName: "", + client_name: item.Client.name, + number: item.number, + duties: "", + phone: item.phone, + salesHead: "", + name: item.name + } + }) + this.tableList.tableInfomation = list || [] + } else { + this.tableList.tableInfomation = [] + } + } else { + this.tableList.tableInfomation = [] + } + this.loading = false + }) + .catch((err) => { + console.log(err) + this.tableList.tableInfomation = [] + this.loading = false + }) + }, // 鏂板缓 addBtnClick() { this.editConfig.visible = true diff --git a/src/views/custom/followupRecords/index.vue b/src/views/custom/followupRecords/index.vue index 04dd78c..a73057c 100644 --- a/src/views/custom/followupRecords/index.vue +++ b/src/views/custom/followupRecords/index.vue @@ -5,7 +5,7 @@ <PublicFunctionBtnView :statistics="true" :operates-list="operatesList" /> <PagerView class="page" /> </div> - <TableCommonView ref="tableListRef" :table-list="tableList"> + <TableCommonView ref="tableListRef" v-loading="loading" :table-list="tableList"> <template slot="tableButton"> <el-table-column label="鎿嶄綔" width="120" fixed="right"> <template slot-scope="scope"> @@ -22,6 +22,7 @@ <script> import AddFollowupRecordsDialog from "@/views/custom/followupRecords/AddFollowupRecordsDialog" import { getFollowRecordList } from "@/api/custom/followupRecords.js" +import { dateFormat } from "@/common/config/index" export default { name: "FollowupRecords", @@ -37,6 +38,7 @@ data() { return { tableList: {}, + loading: false, activeName: "second", queryClassOptions: [ { value: "1", label: "鍏ㄩ儴" }, @@ -69,29 +71,17 @@ methods: { setTable() { this.tableList = { - tableInfomation: [ - { - theme: "涓婇棬鎷滆", - customName: "涓婃捣閫氱敤鏈烘鏈夐檺鍏徃", - contactName: "BOSS", - customStatus: "C绫诲鎴�", - phoneNumber: "15988887777", - contactDate: "钁e浼�", - nextFollowupDate: "2023-07-28", - owner: "2023-07-26", - followupRecords: "涓婃捣甯傞潤瀹夊尯濞佹捣璺�115鍙�" - } - ], + tableInfomation: [], tableColumn: [ - { label: "涓婚", prop: "theme", min: 190 }, // 涓婚 - { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 190 }, // 瀹㈡埛鍚嶇О - { label: "鑱旂郴浜哄鍚�", prop: "contactName", min: 100 }, // 鑱旂郴浜哄鍚� - { label: "瀹㈡埛鐘舵��", prop: "customStatus", min: 100 }, // 瀹㈡埛鐘舵�� - { label: "鑱旂郴鏂瑰紡", prop: "phoneNumber", min: 100 }, // 鑱旂郴鏂瑰紡 - { label: "鑱旂郴浜烘棩鏈�", prop: "contactDate", min: 100 }, // 鑱旂郴浜烘棩鏈� - { label: "涓嬫鍥炶鏃ユ湡", prop: "nextFollowupDate", min: 130 }, // 涓嬫鍥炶鏃ユ湡 - { label: "璐熻矗浜�", prop: "owner", min: 120 }, // 璐熻矗浜� - { label: "璺熻繘璁板綍", prop: "followupRecords", min: 120 } // 璺熻繘璁板綍 + { label: "涓婚", prop: "topic", min: 190 }, // 涓婚 + { label: "瀹㈡埛鍚嶇О", prop: "client_name", min: 190 }, // 瀹㈡埛鍚嶇О + { label: "鑱旂郴浜哄鍚�", prop: "contact_name", min: 100 }, // 鑱旂郴浜哄鍚� + { label: "瀹㈡埛鐘舵��", prop: "client_status_id", min: 100 }, // 瀹㈡埛鐘舵�� + { label: "鑱旂郴鏂瑰紡", prop: "phone", min: 100 }, // 鑱旂郴鏂瑰紡 + { label: "鑱旂郴浜烘棩鏈�", prop: "follow_time", min: 100 }, // 鑱旂郴浜烘棩鏈� + { label: "涓嬫鍥炶鏃ユ湡", prop: "next_follow_time", min: 130 }, // 涓嬫鍥炶鏃ユ湡 + { label: "璐熻矗浜�", prop: "member_id", min: 120 }, // 璐熻矗浜� + { label: "璺熻繘璁板綍", prop: "record", min: 120 } // 璺熻繘璁板綍 ] } this.searchOptions = [] @@ -101,13 +91,40 @@ } }, // 璇锋眰鏁版嵁 + // 璇锋眰鏁版嵁 async getData() { + this.loading = true await getFollowRecordList() .then((res) => { - console.log("鎴愬姛" + res) + console.log(res) + if (res.code === 200) { + if (res.data.list && res.data.list.length > 0) { + const list = res.data.list.map((item) => { + return { + topic: item.topic, + client_name: item.client.name, + contact_name: item.contact.name, + client_status_id: item.client.client_status_id, + phone: item.contact.phone, + follow_time: dateFormat("YYYY-mm-dd HH:MM", item.follow_time), + next_follow_time: dateFormat("YYYY-mm-dd HH:MM", item.next_follow_time), + member_id: item.member_id, + record: item.record + } + }) + this.tableList.tableInfomation = list || [] + } else { + this.tableList.tableInfomation = [] + } + } else { + this.tableList.tableInfomation = [] + } + this.loading = false }) .catch((err) => { console.log(err) + this.tableList.tableInfomation = [] + this.loading = false }) }, // 鏂板缓 diff --git a/src/views/custom/salesLead/AddSalesLeadDialog.vue b/src/views/custom/salesLead/AddSalesLeadDialog.vue index 000c2dd..e0e9680 100644 --- a/src/views/custom/salesLead/AddSalesLeadDialog.vue +++ b/src/views/custom/salesLead/AddSalesLeadDialog.vue @@ -21,32 +21,32 @@ <div class="basic-info-view"> <el-row> <el-col :span="12"> - <el-form-item label="瀹㈡埛鍚嶇О" prop="customName"> - <el-input v-model="editConfig.infomation.customName"></el-input> + <el-form-item label="瀹㈡埛鍚嶇О" prop="name"> + <el-input v-model="editConfig.infomation.name"></el-input> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="閿�鍞嚎绱㈢紪鍙�" prop="saleLeadNumber"> - <el-input v-model="editConfig.infomation.saleLeadNumber"></el-input> + <el-form-item label="閿�鍞嚎绱㈢紪鍙�" prop="number"> + <el-input v-model="editConfig.infomation.number"></el-input> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> - <el-form-item label="鑱旂郴浜哄鍚�" prop="contactName"> - <el-input v-model="editConfig.infomation.contactName"></el-input> + <el-form-item label="鑱旂郴浜哄鍚�" prop="contact_name"> + <el-input v-model="editConfig.infomation.contact_name"></el-input> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="鑱旂郴浜鸿亴鍔�" prop="contactDuties"> - <el-input v-model="editConfig.infomation.contactDuties"></el-input> + <el-form-item label="鑱旂郴浜鸿亴鍔�" prop="contact_position"> + <el-input v-model="editConfig.infomation.contact_position"></el-input> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> - <el-form-item label="鎵嬫満鍙风爜" prop="phoneNumber"> - <el-input v-model="editConfig.infomation.phoneNumber"></el-input> + <el-form-item label="鎵嬫満鍙风爜" prop="contact_phone"> + <el-input v-model="editConfig.infomation.contact_phone"></el-input> </el-form-item> </el-col> <el-col :span="12"> @@ -57,17 +57,31 @@ </el-row> <el-row> <el-col :span="12"> - <el-form-item label="鍟嗘満鏉ユ簮" prop="businessSource"> - <CommonSelectView - :common-value="editConfig.infomation.businessSource" - :common-options="businessSourceOptions" - @editDropdownBox="editDropdownBox" - /> + <el-form-item label="鍟嗘満鏉ユ簮" prop="sales_sources_id"> + <div class="common-select"> + <el-select + v-model="editConfig.infomation.sales_sources_id" + placeholder="璇烽�夋嫨" + class="common-select-sel" + size="mini" + > + <el-option + v-for="item in businessSourceOptions" + :key="item.id" + :label="item.name" + :value="item.id" + > + </el-option> + </el-select> + <div class="common-select-btn" @click="editDropdownBox"> + <i class="el-icon-setting"></i> + </div> + </div> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="璐熻矗浜�" prop="owner"> - <el-select v-model="editConfig.infomation.owner" placeholder="璇烽�夋嫨" size="mini"> + <el-form-item label="璐熻矗浜�" prop="member_id"> + <el-select v-model="editConfig.infomation.member_id" placeholder="璇烽�夋嫨" size="mini"> <el-option v-for="item in ownerOptions" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> @@ -77,8 +91,8 @@ </div> <!-- 鍦板潃淇℃伅 --> <div v-if="isUnflod" class="basic-info-title">鍦板潃淇℃伅</div> - <div v-if="isUnflod" class="address-view"> - <el-row> + <div v-if="isUnflod" class="basic-info-view"> + <!-- <el-row> <el-col :span="24"> <el-form-item label="瀹氫綅" prop="position"> <el-input v-model="editConfig.infomation.position"></el-input> @@ -91,7 +105,7 @@ <div style="height: 100px"></div> </el-form-item> </el-col> - </el-row> + </el-row> --> <el-row> <el-col :span="12"> <el-form-item label="鍥藉" prop="country"> @@ -134,12 +148,12 @@ <div v-if="isUnflod" class="basic-info-view"> <el-row> <el-col :span="24"> - <el-form-item label="鍦板潃" prop="address"> + <el-form-item label="澶囨敞" prop="desc"> <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 4 }" placeholder="璇疯緭鍏ュ唴瀹�" - v-model="editConfig.infomation.address" + v-model="editConfig.infomation.desc" ></el-input> </el-form-item> </el-col> @@ -166,7 +180,7 @@ <script> import CommonSelectView from "@/components/makepager/CommonSelectView" import EditDropdownDialog from "@/views/other/commonDialog/EditDropdownDialog" -import { getSalesSourcesList } from "@/api/custom/salesLead" +import { getSalesSourcesList, getAddSalesLeads, getUpdateSalesLeads } from "@/api/custom/salesLead" export default { name: "AddSalesLeadDialog", @@ -178,21 +192,21 @@ visible: false, title: "鏂板缓", infomation: { - customName: "", - saleLeadNumber: "LEA50", - contactName: "", - contactDuties: "", - phoneNumber: "", + name: "", + number: "LEA50", + contact_name: "", + contact_position: "", + contact_phone: "", businessStatus: "", - businessSource: "1", - owner: "", - position: "", - map: "", - country: "1", - province: "1", - city: "1", - region: "1", - address: "" + sales_sources_id: "", + member_id: "", + country: "", + province: "", + city: "", + region: "", + address: "", + desc: "", + id: "" } } } @@ -209,20 +223,20 @@ dialogWidth: "80%", editConfig: this.editSalesLeadConfig, rules: { - customName: [{ required: true, message: "璇疯緭鍏ュ鎴峰悕绉�", trigger: "blur" }], - saleLeadNumber: [{ required: true, message: "璇疯緭鍏ラ攢鍞嚎绱㈢紪鍙�", trigger: "blur" }], + name: [{ required: true, message: "璇疯緭鍏ュ鎴峰悕绉�", trigger: "blur" }], + number: [{ required: true, message: "璇疯緭鍏ラ攢鍞嚎绱㈢紪鍙�", trigger: "blur" }], businessStatus: [{ required: true, message: "璇疯緭鍏ュ晢鏈虹姸鎬�", trigger: "blur" }], - businessSource: [{ required: true, message: "璇烽�夋嫨鍟嗘満鏉ユ簮", trigger: "change" }] + sales_sources_id: [{ required: true, message: "璇烽�夋嫨鍟嗘満鏉ユ簮", trigger: "change" }] }, businessSourceOptions: [ - { value: "1", label: "鍚庡彴娉ㄥ唽" }, - { value: "2", label: "浠g悊鍟嗗鎴�" }, - { value: "3", label: "鐢佃瘽闄岀敓鎷滆" }, - { value: "4", label: "鐩存帴璁块棶" }, - { value: "5", label: "椤圭洰鍚堜綔" }, - { value: "6", label: "涓汉鑷壘" }, - { value: "7", label: "浜屾閿�鍞�" }, - { value: "8", label: "鍏徃鐢佃瘽" } + { id: "1", name: "鍚庡彴娉ㄥ唽" }, + { id: "2", name: "浠g悊鍟嗗鎴�" }, + { id: "3", name: "鐢佃瘽闄岀敓鎷滆" }, + { id: "4", name: "鐩存帴璁块棶" }, + { id: "5", name: "椤圭洰鍚堜綔" }, + { id: "6", name: "涓汉鑷壘" }, + { id: "7", name: "浜屾閿�鍞�" }, + { id: "8", name: "鍏徃鐢佃瘽" } ], ownerOptions: [ { value: "1", label: "BOSS" }, @@ -269,7 +283,7 @@ getSalesSourcesList() .then((res) => { console.log(res) - // this.businessSourceOptions = res.data.tableList + this.businessSourceOptions = res.data.list }) .catch((err) => { console.log(err) @@ -282,7 +296,56 @@ saveClick(formName) { this.$refs[formName].validate((valid) => { if (valid) { - alert("submit") + console.log(this.editConfig.infomation) + let params = { + city_id: 0, + contact_name: this.editConfig.infomation.contact_name || "", + contact_phone: this.editConfig.infomation.contact_phone || "", + contact_position: this.editConfig.infomation.contact_position || "", + country_id: 0, + id: this.editConfig.title === "鏂板缓" ? 0 : this.editConfig.infomation.id, + desc: this.editConfig.infomation.desc || "", + member_id: parseInt(this.editConfig.infomation.member_id) || 0, + name: this.editConfig.infomation.name || "", + number: this.editConfig.infomation.number || "", + province_id: 0, + region_id: 0, + sales_sources_id: this.editConfig.infomation.sales_sources_id || 0 + } + console.log(params) + if (this.editConfig.title === "鏂板缓") { + getAddSalesLeads(params) + .then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message({ + message: "娣诲姞鎴愬姛", + type: "success" + }) + this.$parent.getData() + } + }) + .catch((err) => { + console.log(err) + }) + } else { + getUpdateSalesLeads(params) + .then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message({ + message: "缂栬緫鎴愬姛", + type: "success" + }) + this.$parent.getData() + } + }) + .catch((err) => { + console.log(err) + }) + } } else { console.log("error submit") return false @@ -325,10 +388,17 @@ .basic-info-view { margin-top: 10px; padding-right: 40px; - } - .address-view { - margin-top: 10px; - padding-right: 40px; + .common-select { + display: flex; + .common-select-sel { + width: 270px; + } + .common-select-btn { + margin-left: 5px; + font-size: 16px; + cursor: pointer; + } + } } } .unflod-collapse { diff --git a/src/views/custom/salesLead/index.vue b/src/views/custom/salesLead/index.vue index 4046807..e4facd7 100644 --- a/src/views/custom/salesLead/index.vue +++ b/src/views/custom/salesLead/index.vue @@ -86,7 +86,7 @@ { label: "鍟嗘満鏉ユ簮", prop: "sales_sources_id", min: 190 }, // 鍟嗘満鏉ユ簮 { label: "鐪佷唤", prop: "province", min: 190 }, // 鐪佷唤 { label: "鍩庡競", prop: "city", min: 190 }, // 鍩庡競 - { label: "璐熻矗浜�", prop: "owner", min: 190 } // 璐熻矗浜� + { label: "璐熻矗浜�", prop: "member_id", min: 190 } // 璐熻矗浜� ] } this.searchOptions = [] @@ -99,12 +99,20 @@ async getData() { await getSalesLeadsList() .then((res) => { - console.log(res) - this.tableList.tableInfomation = res.data.tableList.map((item) => { - item.province = item.Province.name - item.city = item.City.name - return item + const list = res.data.list.map((item) => { + return { + id: item.id, + name: item.name, + number: item.number, + contact_name: item.contact_name, + contact_phone: item.contact_phone, + sales_sources_id: item.sales_sources_id, + province: item.Province.name, + city: item.City.name, + member_id: item.member_id + } }) + this.tableList.tableInfomation = list || [] }) .catch((err) => { console.log(err) @@ -115,21 +123,20 @@ this.editSalesLeadConfig.visible = true this.editSalesLeadConfig.title = "鏂板缓" this.editSalesLeadConfig.infomation = { - customName: "", - saleLeadNumber: "LEA50", - contactName: "", - contactDuties: "", - phoneNumber: "", + name: "", + number: "", + contact_name: "", + contact_position: "", + contact_phone: "", businessStatus: "鏂板缓", - businessSource: "1", - owner: "", - position: "", - map: "", - country: "1", - province: "1", - city: "1", - region: "1", - address: "" + sales_sources_id: "", + member_id: "", + country: "", + province: "", + city: "", + region: "", + address: "", + desc: "" } }, // 缂栬緫 @@ -138,21 +145,21 @@ this.editSalesLeadConfig.visible = true this.editSalesLeadConfig.title = "缂栬緫" this.editSalesLeadConfig.infomation = { - customName: row.customName, - saleLeadNumber: row.saleLeadNumber, - contactName: row.contactName, - contactDuties: row.contactDuties, - phoneNumber: row.phoneNumber, - businessStatus: "鏂板缓", - businessSource: row.businessSource, - owner: row.owner, - position: "", - map: "", - country: "1", - province: "1", - city: "1", - region: "1", - address: "" + id: row.id, + name: row.name, + number: row.number, + contact_name: row.contact_name, + contact_position: row.contact_position, + contact_phone: row.contact_phone, + businessStatus: "缂栬緫", + sales_sources_id: row.sales_sources_id, + member_id: row.member_id, + country: "", + province: "", + city: "", + region: "", + address: "", + desc: row.desc } }, // 瀵煎叆 -- Gitblit v1.8.0