Commit 1ad37a34 authored by zs嵩's avatar zs嵩

测试反馈bug修复

parent 4061ceb8
import request from '@/utils/request' import request from "@/utils/request"
// 创建报价单管理 // 创建报价单管理
export function createOffer(data) { export function createOffer(data) {
return request({ return request({
url: '/ecw/offer/create', url: "/ecw/offer/create",
method: 'post', method: "post",
data: data data: data
}) })
} }
...@@ -12,8 +12,8 @@ export function createOffer(data) { ...@@ -12,8 +12,8 @@ export function createOffer(data) {
// 更新报价单管理 // 更新报价单管理
export function updateOffer(data) { export function updateOffer(data) {
return request({ return request({
url: '/ecw/offer/update', url: "/ecw/offer/update",
method: 'put', method: "put",
data: data data: data
}) })
} }
...@@ -21,24 +21,24 @@ export function updateOffer(data) { ...@@ -21,24 +21,24 @@ export function updateOffer(data) {
// 删除报价单管理 // 删除报价单管理
export function deleteOffer(id) { export function deleteOffer(id) {
return request({ return request({
url: '/ecw/offer/delete?id=' + id, url: "/ecw/offer/delete?id=" + id,
method: 'delete' method: "delete"
}) })
} }
// 获得报价单管理 // 获得报价单管理
export function getOffer(id) { export function getOffer(id) {
return request({ return request({
url: '/ecw/offer/get?offerId=' + id, url: "/ecw/offer/get?offerId=" + id,
method: 'get' method: "get"
}) })
} }
// 获得报价单管理分页 // 获得报价单管理分页
export function getOfferPage(query) { export function getOfferPage(query) {
return request({ return request({
url: '/ecw/offer/page', url: "/ecw/offer/page",
method: 'get', method: "get",
params: query params: query
}) })
} }
...@@ -46,36 +46,36 @@ export function getOfferPage(query) { ...@@ -46,36 +46,36 @@ export function getOfferPage(query) {
// 导出报价单管理 Excel // 导出报价单管理 Excel
export function exportOfferExcel(query) { export function exportOfferExcel(query) {
return request({ return request({
url: '/ecw/offer/export-excel', url: "/ecw/offer/export-excel",
method: 'get', method: "get",
params: query, params: query,
responseType: 'blob' responseType: "blob"
}) })
} }
// 更新报价单结果 // 更新报价单结果
export function updateOfferResult(data) { export function updateOfferResult(data) {
return request({ return request({
url: '/ecw/offer/update/result', url: "/ecw/offer/update/result",
method: 'put', method: "put",
data: data data: data
}) })
} }
// 获取费用清单列表 // 获取费用清单列表
export function getProductFeeList(prodCreateReqVO){ export function getProductFeeList(prodCreateReqVO) {
return request({ return request({
url: '/ecw/offer/calculation/prod-fee-List', url: "/ecw/offer/calculation/prod-fee-List",
method: 'post', method: "post",
data: prodCreateReqVO data: prodCreateReqVO
}) })
} }
// 获取费用清单 // 获取费用清单
export function getProductFee(calculationFeeParamVO){ export function getProductFee(calculationFeeParamVO) {
return request({ return request({
url: '/ecw/offer/calculation/fee-List', url: "/ecw/offer/calculation/fee-List",
method: 'post', method: "post",
data: calculationFeeParamVO data: calculationFeeParamVO
}) })
} }
...@@ -83,8 +83,8 @@ export function getProductFee(calculationFeeParamVO){ ...@@ -83,8 +83,8 @@ export function getProductFee(calculationFeeParamVO){
// 特价申请 // 特价申请
export function createOfferSpecial(data) { export function createOfferSpecial(data) {
return request({ return request({
url: '/ecw/offer/special/apply', url: "/ecw/offer/special/apply",
method: 'put', method: "put",
data: data data: data
}) })
} }
...@@ -92,8 +92,8 @@ export function createOfferSpecial(data) { ...@@ -92,8 +92,8 @@ export function createOfferSpecial(data) {
// 特价详情 // 特价详情
export function getOfferSpecial(offerProdId, params) { export function getOfferSpecial(offerProdId, params) {
return request({ return request({
url: '/ecw/offer/special/info/' + offerProdId, url: "/ecw/offer/special/info/" + offerProdId,
method: 'get', method: "get",
params params
}) })
} }
...@@ -101,35 +101,34 @@ export function getOfferSpecial(offerProdId, params) { ...@@ -101,35 +101,34 @@ export function getOfferSpecial(offerProdId, params) {
// 特价详情 // 特价详情
export function getOfferSpecialByApproveId(approveId) { export function getOfferSpecialByApproveId(approveId) {
return request({ return request({
url: '/ecw/offer/special/info?approveId=' + approveId, url: "/ecw/offer/special/info?approveId=" + approveId,
method: 'get' method: "get"
}) })
} }
// 取消报价管理 // 取消报价管理
export function cancel(id) { export function cancel(id) {
return request({ return request({
url: '/ecw/offer/cancel', url: "/ecw/offer/cancel",
method: 'delete', method: "delete",
params: {id} params: { id }
}) })
} }
// 恢复取消的报价管理 // 恢复取消的报价管理
export function recovery(id) { export function recovery(id) {
return request({ return request({
url: '/ecw/offer/recovery', url: "/ecw/offer/recovery",
method: 'delete', method: "delete",
params: {id} params: { id }
}) })
} }
// 获取部门报价单列表 // 获取部门报价单列表
export function offerDeptPage(params) { export function offerDeptPage(params) {
return request({ return request({
url: '/ecw/offer/dept/page', url: "/ecw/offer/dept/page",
method: 'get', method: "get",
params params
}) })
} }
...@@ -137,25 +136,33 @@ export function offerDeptPage(params) { ...@@ -137,25 +136,33 @@ export function offerDeptPage(params) {
// 导出部分报价单 exportDeptOfferExcel // 导出部分报价单 exportDeptOfferExcel
export function exportDeptOfferExcel(query) { export function exportDeptOfferExcel(query) {
return request({ return request({
url: '/ecw/offer/dept/export-excel', url: "/ecw/offer/dept/export-excel",
method: 'get', method: "get",
params: query, params: query,
responseType: 'blob' responseType: "blob"
}) })
} }
// 报价单 // 报价单
export function getOfferSelect(params) { export function getOfferSelect(params) {
return request({ return request({
url: '/ecw/offer/select', url: "/ecw/offer/select",
method: 'get', method: "get",
params params
}) })
} }
// 报价单 // 报价单
export function getOfferCheck(params) { export function getOfferCheck(params) {
return request({ return request({
url: '/ecw/offer/check', url: "/ecw/offer/check",
method: 'get', method: "get",
params params
}) })
} }
\ No newline at end of file
// 特价详情
export function getOfferNumber(offerId) {
return request({
url: "/ecw/offer/getNumber/" + offerId,
method: "get"
})
}
...@@ -15,3 +15,13 @@ ...@@ -15,3 +15,13 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.custom-form-1 {
padding-right: 40px;
.el-textarea,
.dict-selector,
.el-select {
width: 100%;
}
}
<template> <template>
<div class="customer-follow"> <div class="customer-follow">
<el-dialog append-to-body :title="$t('客户跟进')" :visible.sync="customerFollow.dialogVisible" :before-close="customerFollowClose" width="900px"> <el-dialog append-to-body :title="$t('客户跟进')" :visible.sync="customerFollow.dialogVisible" :before-close="customerFollowClose" width="1200px">
<el-form ref="customerFollowForm" :model="form" label-width="120px"> <el-form class="custom-form-1" ref="customerFollowForm" :model="form" label-width="120px">
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('编号')" prop="number"> <el-form-item :label="$t('编号')" prop="number">
<el-input v-model="form.number" :placeholder="$t('请输入编号')" disabled /> <el-input v-model="form.number" :placeholder="$t('请输入编号')" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('跟进状态')"> <el-form-item :label="$t('跟进状态')">
<el-select v-model="form.status" :placeholder="$t('请选择')" disabled> <el-select v-model="form.status" :placeholder="$t('请选择')" disabled>
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_STATUS)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" /> <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_STATUS)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('客户编号')"> <el-form-item :label="$t('客户编号')">
<el-input v-model="form.customerNumber" :placeholder="$t('请输入客户编号')" disabled /> <el-input v-model="form.customerNumber" :placeholder="$t('请输入客户编号')" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('跟进类型')" required> <el-form-item :label="$t('跟进类型')" required>
<el-select v-model="form.followType" clearable :placeholder="$t('请选择')" @change="handleFollowType" :disabled="isView || !!offerId"> <el-select v-model="form.followType" clearable :placeholder="$t('请选择')" @change="handleFollowType" :disabled="isView || !!offerId">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_TYPE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" /> <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_TYPE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8" v-if="form.followType == 2">
<el-form-item :label="$t('报价单')" required prop="offerId">
<el-input :value="form.offerNumber" readonly>
<el-button slot="append" icon="el-icon-search" @click="CustomerFollowSelectOffer = true" v-if="!(isView || offerId)"></el-button>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :label="$t('跟进时间')" required> <el-form-item :label="$t('跟进时间')" required>
<el-date-picker v-model="form.followTime" clearable type="datetime" :placeholder="$t('请选择')" :disabled="isView" /> <el-date-picker v-model="form.followTime" clearable type="datetime" :placeholder="$t('请选择')" :disabled="isView" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12" v-if="customerId"> <el-col :span="8" v-if="customerId">
<el-form-item :label="$t('联系人')" required> <el-form-item :label="$t('联系人')" required>
<el-select v-model="form.contactId" clearable :placeholder="$t('请选择')" :disabled="isView" @change="changeContactUser"> <el-select v-model="form.contactId" clearable :placeholder="$t('请选择')" :disabled="isView" @change="changeContactUser">
<el-option v-for="(item, index) in customerContactsList" :key="index" :label="item.name" :value="item.id"> </el-option> <el-option v-for="(item, index) in customerContactsList" :key="index" :label="item.name" :value="item.id"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12" v-else> <el-col :span="8" v-else>
<el-form-item :label="$t('联系人')" required> <el-form-item :label="$t('联系人')" required>
<div class="contact"> <div class="contact">
<el-input v-model="form.contactName" :value="form.customerContactsId" placeholder="" disabled /> <el-input v-model="form.contactName" :value="form.customerContactsId" placeholder="" disabled />
...@@ -48,47 +55,47 @@ ...@@ -48,47 +55,47 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('联系方式')"> <el-form-item :label="$t('联系方式')">
<el-input v-model="form.contactPhone" disabled /> <el-input v-model="form.contactPhone" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('客户经理')" required> <el-form-item :label="$t('客户经理')" required>
<el-select v-model="form.followUserId" clearable :placeholder="$t('请选择')" :disabled="isView"> <el-select v-model="form.followUserId" clearable :placeholder="$t('请选择')" :disabled="isView">
<el-option v-for="item in serviceUserList" :key="item.id" :label="item.nickname" :value="item.id"> </el-option> <el-option v-for="item in serviceUserList" :key="item.id" :label="item.nickname" :value="item.id"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('跟进方式')" required> <el-form-item :label="$t('跟进方式')" required>
<dict-selector ref="dictMethod" v-model="form.followMethod" clearable :disabled="isView" :type="DICT_TYPE.CUSTOMER_FOLLOWUP_METHOD"></dict-selector> <dict-selector ref="dictMethod" v-model="form.followMethod" clearable :disabled="isView" :type="DICT_TYPE.CUSTOMER_FOLLOWUP_METHOD"></dict-selector>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('上一级跟进单')" prop="parentNumber"> <el-form-item :label="$t('上一级跟进单')" prop="parentNumber">
<el-input v-model="form.parentNumber" :placeholder="$t('请输入上一级跟进单')" disabled /> <el-input v-model="form.parentNumber" :placeholder="$t('请输入上一级跟进单')" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('跟进结果')" prop="followMethod"> <el-form-item :label="$t('跟进结果')" prop="followMethod">
<el-select v-model="form.resultType" clearable :placeholder="$t('请选择')" :disabled="isView"> <el-select v-model="form.resultType" clearable :placeholder="$t('请选择')" :disabled="isView">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_RESULT_TYPE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" /> <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_RESULT_TYPE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="20"> <el-col :span="24">
<el-form-item :label="$t('目的')" prop="purpose"> <el-form-item :label="$t('目的')" prop="purpose">
<el-input type="textarea" :rows="2" v-model="form.purpose" :placeholder="$t('请输入目的')" maxlength="200" show-word-limit :disabled="isView" /> <el-input type="textarea" :rows="3" v-model="form.purpose" :placeholder="$t('请输入目的')" maxlength="200" show-word-limit :disabled="isView" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="20"> <el-col :span="24">
<el-form-item :label="$t('跟进情况')"> <el-form-item :label="$t('跟进情况')">
<el-input rows="3" class="text_style" type="textarea" v-model="form.feedback" maxlength="500" show-word-limit :disabled="isView" /> <el-input rows="3" class="text_style" type="textarea" v-model="form.feedback" maxlength="500" show-word-limit :disabled="isView" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="20"> <el-col :span="24">
<el-form-item :label="$t('附件')" prop="attatchment"> <el-form-item :label="$t('附件')" prop="attatchment">
<FileUpload :limit="5" :isShowTip="true" v-model="form.attatchment" :fileType="fileType" :disabled="isView" /> <FileUpload :limit="5" :isShowTip="true" v-model="form.attatchment" :fileType="fileType" :disabled="isView" />
</el-form-item> </el-form-item>
...@@ -98,12 +105,12 @@ ...@@ -98,12 +105,12 @@
<el-date-picker v-model="form.nextTime" type="datetime" :placeholder="$t('请选择')" :disabled="isView" @change="changeNextTime"> </el-date-picker> <el-date-picker v-model="form.nextTime" type="datetime" :placeholder="$t('请选择')" :disabled="isView" @change="changeNextTime"> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="20"> <el-col :span="24">
<el-form-item :label="$t('下一步计划')" prop="nextPlan"> <el-form-item :label="$t('下一步计划')" prop="nextPlan">
<el-input type="textarea" :rows="3" v-model="form.nextPlan" :placeholder="$t('请输入下一步计划')" maxlength="500" show-word-limit :disabled="isView" /> <el-input type="textarea" :rows="3" v-model="form.nextPlan" :placeholder="$t('请输入下一步计划')" maxlength="500" show-word-limit :disabled="isView" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="20" v-if="isView"> <el-col :span="24" v-if="isView">
<el-form-item> <el-form-item>
<div style="text-align: right"> <div style="text-align: right">
<!-- <el-button size="mini" icon="el-icon-collection" type="primary" @click="$emit('handleCustomerFollowAdd', form)" v-has-permi="['ecw:customer:follow-add-plan']">{{ $t("增加计划") }} </el-button>--> <!-- <el-button size="mini" icon="el-icon-collection" type="primary" @click="$emit('handleCustomerFollowAdd', form)" v-has-permi="['ecw:customer:follow-add-plan']">{{ $t("增加计划") }} </el-button>-->
...@@ -111,26 +118,26 @@ ...@@ -111,26 +118,26 @@
</div> </div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('创建人')" prop="founder"> <el-form-item :label="$t('创建人')" prop="founder">
<el-select v-model="form.creatorName" disabled :placeholder="$t('请选择')"> <el-select v-model="form.creatorName" disabled :placeholder="$t('请选择')">
<el-option v-for="item in allSimplList" :key="item.id" :label="item.nickname" :value="item.id"> </el-option> <el-option v-for="item in allSimplList" :key="item.id" :label="item.nickname" :value="item.id"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('创建时间')" prop="createTime"> <el-form-item :label="$t('创建时间')" prop="createTime">
<el-date-picker v-model="form.createTime" type="datetime" disabled :placeholder="$t('请选择')"> </el-date-picker> <el-date-picker v-model="form.createTime" type="datetime" disabled :placeholder="$t('请选择')"> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('最后更新人')"> <el-form-item :label="$t('最后更新人')">
<el-select v-model="form.updaterName" disabled> <el-select v-model="form.updaterName" disabled>
<el-option v-for="item in allSimplList" :key="item.id" :label="item.nickname" :value="item.id"> </el-option> <el-option v-for="item in allSimplList" :key="item.id" :label="item.nickname" :value="item.id"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('最后更新时间')"> <el-form-item :label="$t('最后更新时间')">
<el-date-picker v-model="form.updateTime" type="datetime" disabled :placeholder="$t('请选择')"> </el-date-picker> <el-date-picker v-model="form.updateTime" type="datetime" disabled :placeholder="$t('请选择')"> </el-date-picker>
</el-form-item> </el-form-item>
...@@ -166,7 +173,7 @@ ...@@ -166,7 +173,7 @@
<script> <script>
import { createCustomerFollow, getCustomerFollowPage, getCustomerFollowPage2, addCustomerFollow, getCustomerFollowList, editCustomerFollow, getFollowupNewNumber } from "@/api/ecw/customerFollow" import { createCustomerFollow, getCustomerFollowPage, getCustomerFollowPage2, addCustomerFollow, getCustomerFollowList, editCustomerFollow, getFollowupNewNumber } from "@/api/ecw/customerFollow"
import { getCustomerContactsSelect } from "@/api/ecw/customerContacts" import { getCustomerContactsSelect } from "@/api/ecw/customerContacts"
import { getOfferPage } from "@/api/ecw/offer" import { getOfferPage, getOfferNumber } from "@/api/ecw/offer"
import { DICT_TYPE, getDictDataLabel } from "@/utils/dict" import { DICT_TYPE, getDictDataLabel } from "@/utils/dict"
import { getCustomerContactsListByCustomer } from "@/api/ecw/customerContacts" import { getCustomerContactsListByCustomer } from "@/api/ecw/customerContacts"
import { listAllSimpl, listServiceUser, listSimpleUsers } from "@/api/system/user" import { listAllSimpl, listServiceUser, listSimpleUsers } from "@/api/system/user"
...@@ -213,7 +220,9 @@ export default { ...@@ -213,7 +220,9 @@ export default {
} }
}, },
offerDialogVisible: true, offerDialogVisible: true,
form: {}, form: {
offerId: undefined
},
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
total: 10, total: 10,
...@@ -247,6 +256,17 @@ export default { ...@@ -247,6 +256,17 @@ export default {
this.allSimplList = r.data this.allSimplList = r.data
}) })
}, },
watch: {
"form.offerId"(v) {
if (v) {
getOfferNumber(v).then((r) => {
this.form.offerNumber = r.data
})
} else {
this.form.offerNumber = ""
}
}
},
methods: { methods: {
selectOffer(offerId) { selectOffer(offerId) {
this.form.offerId = offerId this.form.offerId = offerId
...@@ -317,7 +337,6 @@ export default { ...@@ -317,7 +337,6 @@ export default {
handleFollowType(val) { handleFollowType(val) {
console.log(val) console.log(val)
if (val == 2) { if (val == 2) {
this.CustomerFollowSelectOffer = true
} else { } else {
this.form.offerId = undefined this.form.offerId = undefined
} }
...@@ -339,6 +358,7 @@ export default { ...@@ -339,6 +358,7 @@ export default {
nextTime: undefined, nextTime: undefined,
number: undefined, number: undefined,
offerId: this.offerId, offerId: this.offerId,
offerNumber: undefined,
parentId: undefined, parentId: undefined,
parentNumber: undefined, parentNumber: undefined,
purpose: undefined, purpose: undefined,
...@@ -386,6 +406,10 @@ export default { ...@@ -386,6 +406,10 @@ export default {
this.$modal.msgError(this.$t("请选择跟进方式")) this.$modal.msgError(this.$t("请选择跟进方式"))
return return
} }
if (!this.form.offerId && this.form.followType == 2) {
this.$modal.msgError(this.$t("请选择报价单"))
return
}
if (status === 0) { if (status === 0) {
this.saveSubmitData(status) this.saveSubmitData(status)
......
...@@ -228,21 +228,21 @@ ...@@ -228,21 +228,21 @@
--> -->
<el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column> <el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">--> <!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{ row }">--> <!-- <template v-slot="{ row }">-->
<!-- +{{ row.defaultContactPhone }} <br />--> <!-- +{{ row.defaultContactPhone }} <br />-->
<!-- <contacts :id="row.id">--> <!-- <contacts :id="row.id">-->
<!-- <el-button type="text">更多</el-button>--> <!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>--> <!-- </contacts>-->
<!-- </template>--> <!-- </template>-->
<!-- </el-table-column>--> <!-- </el-table-column>-->
<el-table-column :label="$t('最新跟进时间')" width="120"> <el-table-column :label="$t('最新跟进时间')" width="120">
<template slot-scope="scope" v-if= "scope.row.followupBackVO"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
{{ parseTime(scope.row.followupBackVO.followTime) }} {{ parseTime(scope.row.followupBackVO.followTime) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('最新跟进记录')" width="120"> <el-table-column :label="$t('最新跟进记录')" width="120">
<template slot-scope="scope" v-if= "scope.row.followupBackVO"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
<a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">{{ scope.row.followupBackVO.number }}</a> <a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">{{ scope.row.followupBackVO.number }}</a>
</template> </template>
</el-table-column> </el-table-column>
...@@ -667,7 +667,7 @@ ...@@ -667,7 +667,7 @@
</div> </div>
</el-dialog> </el-dialog>
<customer-follow-list :customer-id="customerId" :id="customerId" :customer-service="customerService" :customer-number="customerNumber" ref="CustomerFollowList" v-if="customerFollowVisible"></customer-follow-list> <customer-follow-list :customer-id="customerId" :id="customerId" :customer-service="customerService" :customer-number="customerNumber" ref="CustomerFollowList" v-if="customerFollowVisible"></customer-follow-list>
<customer-follow ref="customerFollow" @refresh="handleQuery" v-if="customerFollowVisible"/> <customer-follow ref="customerFollow" @refresh="handleQuery" @close="customerFollowVisible = false" v-if="customerFollowVisible" />
<customer-complaints :customer-id="customerId" ref="customerComplaints"></customer-complaints> <customer-complaints :customer-id="customerId" ref="customerComplaints"></customer-complaints>
<transfer-customer :show.sync="transferShow" :customer-ids.sync="selectCustomerList"></transfer-customer> <transfer-customer :show.sync="transferShow" :customer-ids.sync="selectCustomerList"></transfer-customer>
<add-potential-custom ref="potentialCustom" @change="getList"></add-potential-custom> <add-potential-custom ref="potentialCustom" @change="getList"></add-potential-custom>
...@@ -719,10 +719,10 @@ import { getCustomerSelect } from "@/api/ecw/customer" ...@@ -719,10 +719,10 @@ import { getCustomerSelect } from "@/api/ecw/customer"
import { getProductTypeList } from "@/api/ecw/productType" import { getProductTypeList } from "@/api/ecw/productType"
import { getProductList } from "@/api/ecw/product" import { getProductList } from "@/api/ecw/product"
import { listMySimpleDepts } from "@/api/system/dept" import { listMySimpleDepts } from "@/api/system/dept"
import UserSelector from "@/components/UserSelector/index.vue"; import UserSelector from "@/components/UserSelector/index.vue"
import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue"; import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue"
import ProductSelector from "@/components/ProductSelector/index.vue"; import ProductSelector from "@/components/ProductSelector/index.vue"
import CompetitorSelector from "@/components/CompetitorSelector/index.vue"; import CompetitorSelector from "@/components/CompetitorSelector/index.vue"
export default { export default {
name: "EcwCustomerIndex", name: "EcwCustomerIndex",
components: { components: {
...@@ -1011,15 +1011,14 @@ export default { ...@@ -1011,15 +1011,14 @@ export default {
this.getList() this.getList()
}, },
methods: { methods: {
onCompetitorChange(row, competitor) { onCompetitorChange(row, competitor) {
// row.goodsType = product ? product.typeId : null // row.goodsType = product ? product.typeId : null
row.id = !competitor row.id = !competitor
? [] ? []
: competitor.id : competitor.id
.split(",") .split(",")
.filter((item) => item !== "") .filter((item) => item !== "")
.map((item) => +item) .map((item) => +item)
if (competitor) { if (competitor) {
this.$set(this.names, competitor.id, { this.$set(this.names, competitor.id, {
name: competitor.name name: competitor.name
......
...@@ -672,7 +672,7 @@ ...@@ -672,7 +672,7 @@
</div> </div>
</el-dialog> </el-dialog>
<customer-follow ref="customerFollow" v-if="customerFollowVisible" :customer-id="id" :customer-service="customer.customerService" :customer-number="customer.number" @refresh="logListCommonRefresh" /> <customer-follow ref="customerFollow" v-if="customerFollowVisible" @close="customerFollowVisible = false" :customer-id="id" :customer-service="customer.customerService" :customer-number="customer.number" @refresh="logListCommonRefresh" />
</div> </div>
</template> </template>
......
...@@ -168,12 +168,10 @@ ...@@ -168,12 +168,10 @@
<!-- 操作工具栏 --> <!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="$router.push({path:'/customer/add-edit/0',query:{isCustomerServiceConfirmed:true,}})" <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="$router.push({ path: '/customer/add-edit/0', query: { isCustomerServiceConfirmed: true } })" v-hasPermi="['ecw:customer: treat-create']">{{ $t("新增") }}</el-button>
v-hasPermi="['ecw:customer: treat-create']">{{$t('新增')}}</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" v-hasPermi="['ecw:customer:treat-export']">{{ $t("导出") }}</el-button>
v-hasPermi="['ecw:customer:treat-export']">{{$t('导出')}}</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
...@@ -182,15 +180,15 @@ ...@@ -182,15 +180,15 @@
<el-table ref="multipleTable" v-loading="loading" :data="list" @selection-change="handleSelectionChange"> <el-table ref="multipleTable" v-loading="loading" :data="list" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" fixed></el-table-column> <el-table-column type="selection" width="55" fixed></el-table-column>
<el-table-column :label="$t('客户编号')" align="center" fixed> <el-table-column :label="$t('客户编号')" align="center" fixed>
<template v-slot="{row}"> <template v-slot="{ row }">
<router-link :to="`/customer/query/${row.id}`" class="link-type"> <router-link :to="`/customer/query/${row.id}`" class="link-type">
{{ row.number }} {{ row.number }}
</router-link> </router-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户名称')" align="center" fixed> <el-table-column :label="$t('客户名称')" align="center" fixed>
<template v-slot="{row}"> <template v-slot="{ row }">
<p style="display:inline-block;white-space: pre-wrap;">{{$l(row, 'name')}}</p> <p style="display: inline-block; white-space: pre-wrap">{{ $l(row, "name") }}</p>
</template> </template>
</el-table-column> </el-table-column>
<!-- <!--
...@@ -207,41 +205,49 @@ ...@@ -207,41 +205,49 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column> <el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">--> <!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{row}">--> <!-- <template v-slot="{row}">-->
<!-- +{{row.defaultContactPhone}} <br/>--> <!-- +{{row.defaultContactPhone}} <br/>-->
<!-- <contacts :id="row.id" >--> <!-- <contacts :id="row.id" >-->
<!-- <el-button type="text">更多</el-button>--> <!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>--> <!-- </contacts>-->
<!-- </template>--> <!-- </template>-->
<!-- </el-table-column>--> <!-- </el-table-column>-->
<el-table-column :label="$t('最新跟进时间')" width="120"> <el-table-column :label="$t('最新跟进时间')" width="120">
<template slot-scope="scope" v-if= "scope.row.followupBackVO"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
{{ parseTime(scope.row.followupBackVO.followTime) }} {{ parseTime(scope.row.followupBackVO.followTime) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('最新跟进记录')" width="120"> <el-table-column :label="$t('最新跟进记录')" width="120">
<template slot-scope="scope" v-if= "scope.row.followupBackVO"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
<a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">{{ scope.row.followupBackVO.number }}</a> <a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">{{ scope.row.followupBackVO.number }}</a>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户类别')" align="center" prop="status"> <el-table-column :label="$t('客户类别')" align="center" prop="status">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
{{ getDictDatas2(DICT_TYPE.CUSTOMER_TYPE, (row.type||'').split(',')).map(e => isChinese ? e.label : e.labelEn).join(', ')}} {{
<!-- <dict-tag--> getDictDatas2(DICT_TYPE.CUSTOMER_TYPE, (row.type || "").split(","))
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"--> .map((e) => (isChinese ? e.label : e.labelEn))
<!-- :value="scope.row.type"--> .join(", ")
<!-- />--> }}
<!-- <dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"-->
<!-- :value="scope.row.type"-->
<!-- />-->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('角色')" align="center" prop="status"> <el-table-column :label="$t('角色')" align="center" prop="status">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
{{ getDictDatas2(DICT_TYPE.CUSTOMER_ROLE, (row.roles||'').split(',')).map(e => isChinese ? e.label : e.labelEn).join(', ')}} {{
<!-- <dict-tag--> getDictDatas2(DICT_TYPE.CUSTOMER_ROLE, (row.roles || "").split(","))
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"--> .map((e) => (isChinese ? e.label : e.labelEn))
<!-- :value="scope.row.roles"--> .join(", ")
<!-- />--> }}
<!-- <dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"-->
<!-- :value="scope.row.roles"-->
<!-- />-->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户经理')" align="center" prop="customerServiceName"></el-table-column> <el-table-column :label="$t('客户经理')" align="center" prop="customerServiceName"></el-table-column>
...@@ -253,10 +259,7 @@ ...@@ -253,10 +259,7 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户来源')"> <el-table-column :label="$t('客户来源')">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag <dict-tag :type="DICT_TYPE.CUSTOMER_SOURCE" :value="scope.row.source" />
:type="DICT_TYPE.CUSTOMER_SOURCE"
:value="scope.row.source"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('业务国家')"> <el-table-column :label="$t('业务国家')">
...@@ -279,8 +282,7 @@ ...@@ -279,8 +282,7 @@
{{ getProductTypeNames(row.productTypes) }} {{ getProductTypeNames(row.productTypes) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('主要竞争对手')" prop="competitorNames"> <el-table-column :label="$t('主要竞争对手')" prop="competitorNames"> </el-table-column>
</el-table-column>
<el-table-column :label="$t('年度发货次数')" align="center"> <el-table-column :label="$t('年度发货次数')" align="center">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
{{ row.numYearly }} {{ row.numYearly }}
...@@ -293,13 +295,13 @@ ...@@ -293,13 +295,13 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('入公海时间')" align="center" width="160"> <el-table-column :label="$t('入公海时间')" align="center" width="160">
<template v-slot="{ row }"> <template v-slot="{ row }">
{{ parseTime( row.enterOpenSeaTime ? row.enterOpenSeaTime : row.estimateEnterOpenSeaTime)}} {{ parseTime(row.enterOpenSeaTime ? row.enterOpenSeaTime : row.estimateEnterOpenSeaTime) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('入仓确认')" align="center"> <el-table-column :label="$t('入仓确认')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag type="success" v-if="scope.row.arrivalConfirm == 1">{{ $t('') }}</el-tag> <el-tag type="success" v-if="scope.row.arrivalConfirm == 1">{{ $t("") }}</el-tag>
<el-tag type="info" v-else>{{ $t('') }}</el-tag> <el-tag type="info" v-else>{{ $t("") }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('控货无收货人')" align="center"> <el-table-column :label="$t('控货无收货人')" align="center">
...@@ -324,14 +326,10 @@ ...@@ -324,14 +326,10 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('获取方式')" align="center"> <el-table-column :label="$t('获取方式')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag <dict-tag :type="DICT_TYPE.CUSTOMER_GET_METHOD" :value="scope.row.getMethod" />
:type="DICT_TYPE.CUSTOMER_GET_METHOD"
:value="scope.row.getMethod"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('创建人')" prop="createUsername" align="center"> <el-table-column :label="$t('创建人')" prop="createUsername" align="center"> </el-table-column>
</el-table-column>
<el-table-column :label="$t('创建时间')" align="center" width="160"> <el-table-column :label="$t('创建时间')" align="center" width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
...@@ -339,51 +337,38 @@ ...@@ -339,51 +337,38 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('最后更新时间')" align="center" width="160"> <el-table-column :label="$t('最后更新时间')" align="center" width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<span >{{ parseTime(scope.row.updateTime) }}</span> <span>{{ parseTime(scope.row.updateTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('分配时间')" align="center" width="180"> <el-table-column :label="$t('分配时间')" align="center" width="180">
<template v-slot="{row}"> <template v-slot="{ row }">
<span>{{ parseTime(row.customerServiceAssignedTime ) }}</span> <span>{{ parseTime(row.customerServiceAssignedTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="200px" :label="$t('操作')" align="center" fixed="right"> <el-table-column width="200px" :label="$t('操作')" align="center" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<router-link :to="'/customer/query/' + scope.row.id"> <router-link :to="'/customer/query/' + scope.row.id">
<el-button v-has-permi="['ecw:customer:treat-view']" size="mini" style="margin-right: 10px" type="text" >查看</el-button> <el-button v-has-permi="['ecw:customer:treat-view']" size="mini" style="margin-right: 10px" type="text">查看</el-button>
</router-link>
<el-button size="mini" type="text" @click="handleConfirmService(scope.row)" v-hasPermi="['ecw:customer:treat-accept']">{{ $t("确认接收") }}</el-button>
<el-button size="mini" type="text" @click="handOver(scope.row)" v-hasPermi="['ecw:customer:treat-transfer']">{{ $t("移交") }}</el-button>
<router-link style="margin: 0 10px" to="/offer/create">
<el-button v-has-permi="['ecw:customer:treat-quoted-price']" size="mini" type="text">
{{ $t("报价") }}
</el-button>
</router-link> </router-link>
<el-button size="mini" type="text" @click="handleConfirmService(scope.row)" <el-button size="mini" type="text" @click="handleUpdate(scope.row)" v-hasPermi="['ecw:customer:treat-perfect']">{{ $t("完善") }}</el-button>
v-hasPermi="['ecw:customer:treat-accept']">{{$t('确认接收')}}</el-button>
<el-button size="mini" type="text" @click="handOver(scope.row)"
v-hasPermi="['ecw:customer:treat-transfer']">{{$t('移交')}}</el-button>
<router-link style="margin: 0 10px;" to="/offer/create">
<el-button v-has-permi="['ecw:customer:treat-quoted-price']" size="mini" type="text">
{{$t('报价')}}
</el-button>
</router-link>
<el-button size="mini" type="text" @click="handleUpdate(scope.row)"
v-hasPermi="['ecw:customer:treat-perfect']">{{$t('完善')}}</el-button>
<!-- <el-button v-has-permi="['ecw:customer:treat-recovery']" size="mini" type="text" @click="recovery(scope.row)" > {{$t('回收客户')}} </el-button>--> <!-- <el-button v-has-permi="['ecw:customer:treat-recovery']" size="mini" type="text" @click="recovery(scope.row)" > {{$t('回收客户')}} </el-button>-->
<el-button <el-button v-has-permi="['ecw:customer:setting']" size="mini" type="text" icon="el-icon-user" @click="handleSetting(scope.row)">{{ $t("设置") }}</el-button>
v-has-permi="['ecw:customer:setting']"
size="mini"
type="text"
icon="el-icon-user"
@click="handleSetting(scope.row)"
>{{ $t("设置") }}</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 分页组件 --> <!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" />
@pagination="getList"/>
<!-- 对话框(添加 / 修改) --> <!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户名称')" prop="name"> <el-form-item :label="$t('客户名称')" prop="name">
<el-input v-model="form.name" :placeholder="$t('请输入客户名称')" /> <el-input v-model="form.name" :placeholder="$t('请输入客户名称')" />
...@@ -392,24 +377,21 @@ ...@@ -392,24 +377,21 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('国家')" prop="country"> <el-form-item :label="$t('国家')" prop="country">
<el-select v-model="form.country" :placeholder="$t('请选择国家')"> <el-select v-model="form.country" :placeholder="$t('请选择国家')">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)" <el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
:key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户等级')" prop="level"> <el-form-item :label="$t('客户等级')" prop="level">
<el-select v-model="form.level" :placeholder="$t('请选择客户等级')"> <el-select v-model="form.level" :placeholder="$t('请选择客户等级')">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)" <el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('所属代理')" prop="agentId"> <el-form-item :label="$t('所属代理')" prop="agentId">
<el-select v-model="form.agentId" :placeholder="$t('请选择所属代理')"> <el-select v-model="form.agentId" :placeholder="$t('请选择所属代理')">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)" <el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -421,8 +403,7 @@ ...@@ -421,8 +403,7 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户类别')" prop="type"> <el-form-item :label="$t('客户类别')" prop="type">
<el-select v-model="form.type" :placeholder="$t('请选择客户类别')"> <el-select v-model="form.type" :placeholder="$t('请选择客户类别')">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_TYPE)" <el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_TYPE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value" />
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -434,13 +415,11 @@ ...@@ -434,13 +415,11 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('公司名称')" prop="company"> <el-form-item :label="$t('公司名称')" prop="company">
<el-input v-model="form.company" :placeholder="$t('请输入公司名称')" /> <el-input v-model="form.company" :placeholder="$t('请输入公司名称')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户生日')" prop="birthday"> <el-form-item :label="$t('客户生日')" prop="birthday">
<el-input v-model="form.birthday" :placeholder="$t('请输入客户生日')" /> <el-input v-model="form.birthday" :placeholder="$t('请输入客户生日')" />
</el-form-item> </el-form-item>
...@@ -456,44 +435,35 @@ ...@@ -456,44 +435,35 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户来源')" prop="source"> <el-form-item :label="$t('客户来源')" prop="source">
<el-select v-model="form.source" :placeholder="$t('请选择客户来源')"> <el-select v-model="form.source" :placeholder="$t('请选择客户来源')">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)" <el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('结算方式')" prop="balance"> <el-form-item :label="$t('结算方式')" prop="balance">
<el-select v-model="form.balance" :placeholder="$t('请选择结算方式')"> <el-select v-model="form.balance" :placeholder="$t('请选择结算方式')">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_BALANCE)" <el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_BALANCE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户经理')" prop="customerService"> <el-form-item :label="$t('客户经理')" prop="customerService">
<el-select v-model="form.customerService" :placeholder="$t('请选择客户经理')"> <el-select v-model="form.customerService" :placeholder="$t('请选择客户经理')">
<el-option v-for="dict in serviceStaffOptions" <el-option v-for="dict in serviceStaffOptions" :key="dict.id" :label="dict.nickname" :value="dict.id" />
:key="dict.id" :label="dict.nickname" :value="dict.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('图片')" prop="picture"> <el-form-item :label="$t('图片')" prop="picture">
<el-input v-model="form.picture" :placeholder="$t('请输入图片')" /> <el-input v-model="form.picture" :placeholder="$t('请输入图片')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户状态')" prop="status"> <el-form-item :label="$t('客户状态')" prop="status">
<el-select v-model="form.status" :placeholder="$t('请选择客户状态')"> <el-select v-model="form.status" :placeholder="$t('请选择客户状态')">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_STATUS)" <el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_STATUS)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -528,9 +498,6 @@ ...@@ -528,9 +498,6 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-form-item :label="$t('关联会员账号')" prop="memberId"> <el-form-item :label="$t('关联会员账号')" prop="memberId">
<el-input v-model="form.memberId" :placeholder="$t('请输入关联会员账号')" /> <el-input v-model="form.memberId" :placeholder="$t('请输入关联会员账号')" />
</el-form-item> </el-form-item>
...@@ -564,8 +531,8 @@ ...@@ -564,8 +531,8 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">{{$t('确 定')}}</el-button> <el-button type="primary" @click="submitForm">{{ $t("确 定") }}</el-button>
<el-button @click="cancel">{{$t('取 消')}}</el-button> <el-button @click="cancel">{{ $t("取 消") }}</el-button>
</div> </div>
</el-dialog> </el-dialog>
...@@ -575,65 +542,52 @@ ...@@ -575,65 +542,52 @@
<el-form ref="handOverForm" :model="handOverForm" :rules="rules" label-width="80px"> <el-form ref="handOverForm" :model="handOverForm" :rules="rules" label-width="80px">
<el-form-item :label="$t('客户经理')" prop="customerServiceId"> <el-form-item :label="$t('客户经理')" prop="customerServiceId">
<el-select v-model="handOverForm.customerServiceId" :placeholder="$t('请选择客户经理')" clearable filterable> <el-select v-model="handOverForm.customerServiceId" :placeholder="$t('请选择客户经理')" clearable filterable>
<el-option v-for="user in serviceStaffOptions" <el-option v-for="user in serviceStaffOptions" :key="user.id" :value="user.id" :label="user.nickname" />
:key="user.id" :value="user.id"
:label="user.nickname" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitHandOverForm">{{$t('确 定')}}</el-button> <el-button type="primary" @click="submitHandOverForm">{{ $t("确 定") }}</el-button>
<el-button @click="cancelHandOver">{{$t('取 消')}}</el-button> <el-button @click="cancelHandOver">{{ $t("取 消") }}</el-button>
</div> </div>
</el-dialog> </el-dialog>
<transfer-customer :show.sync="openHandOver" :customer-ids.sync="handOverForm.customerIdList"></transfer-customer> <transfer-customer :show.sync="openHandOver" :customer-ids.sync="handOverForm.customerIdList"></transfer-customer>
<customer-follow ref="customerFollow" @refresh="handleQuery" v-if="customerFollowVisible"/> <customer-follow ref="customerFollow" @close="customerFollowVisible = false" @refresh="handleQuery" v-if="customerFollowVisible" />
<customer-setting <customer-setting ref="customerSetting" @refresh="getList"></customer-setting>
ref="customerSetting"
@refresh="getList"
></customer-setting>
</div> </div>
</template> </template>
<script> <script>
import { import { updateCustomer, getCustomer, exportCustomerExcel, getWaitForConfirmList, confirm, waiteConfirmExportExcel, waiteConfirEexportExcel, recycleUnconfirmedCustomer, competitorListAll } from "@/api/ecw/customer"
updateCustomer,
getCustomer,
exportCustomerExcel,
getWaitForConfirmList,
confirm,
waiteConfirmExportExcel, waiteConfirEexportExcel, recycleUnconfirmedCustomer,
competitorListAll
} from "@/api/ecw/customer";
import { listServiceUser, listAllSimpl } from "@/api/system/user" import { listServiceUser, listAllSimpl } from "@/api/system/user"
import {getDictDatas, DICT_TYPE, getDictDatas2} from '@/utils/dict' import { getDictDatas, DICT_TYPE, getDictDatas2 } from "@/utils/dict"
import {CommonStatusEnum} from '@/utils/constants' import { CommonStatusEnum } from "@/utils/constants"
import {handOverCustomer} from "../../../api/ecw/customer"; import { handOverCustomer } from "../../../api/ecw/customer"
import {getCountryListAll} from "@/api/ecw/country"; import { getCountryListAll } from "@/api/ecw/country"
import {getCreditPage} from "@/api/customer/credit"; import { getCreditPage } from "@/api/customer/credit"
import transferCustomer from "@/views/ecw/customer/transferCustomer.vue"; import transferCustomer from "@/views/ecw/customer/transferCustomer.vue"
import Contacts from "@/views/ecw/customer/components/contacts.vue"; import Contacts from "@/views/ecw/customer/components/contacts.vue"
import CustomerSetting from "../customer/components/customerSetting.vue"; import CustomerSetting from "../customer/components/customerSetting.vue"
import AreaCodeSelector from "@/components/AreaCodeSelector/index.vue"; import AreaCodeSelector from "@/components/AreaCodeSelector/index.vue"
import { getNodeList } from "@/api/ecw/node"; import { getNodeList } from "@/api/ecw/node"
import { getCustomerSelect, changeCustomerDefaultPay, changeCustomerNoConsignee,changeCustomerDefaultBilling } from "@/api/ecw/customer"; import { getCustomerSelect, changeCustomerDefaultPay, changeCustomerNoConsignee, changeCustomerDefaultBilling } from "@/api/ecw/customer"
import { getProductTypeList } from "@/api/ecw/productType"; import { getProductTypeList } from "@/api/ecw/productType"
import { getProductList } from "@/api/ecw/product"; import { getProductList } from "@/api/ecw/product"
import { listMySimpleDepts } from "@/api/system/dept"; import { listMySimpleDepts } from "@/api/system/dept"
import Template from "@/views/cms/template/index.vue"; import Template from "@/views/cms/template/index.vue"
import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue"; import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue"
import CompetitorSelector from "@/components/CompetitorSelector/index.vue"; import CompetitorSelector from "@/components/CompetitorSelector/index.vue"
export default { export default {
name: "EcwCustomerconfirmIndex", name: "EcwCustomerconfirmIndex",
activated() { activated() {
this.getList(); this.getList()
}, },
computed:{ computed: {
DICT_TYPE() { DICT_TYPE() {
return DICT_TYPE return DICT_TYPE
}, },
isChinese(){ isChinese() {
return this.$i18n.locale === 'zh_CN' return this.$i18n.locale === "zh_CN"
}, },
channel() { channel() {
return (val) => { return (val) => {
...@@ -642,20 +596,18 @@ export default { ...@@ -642,20 +596,18 @@ export default {
.filter((i) => (val.split(",") || []).includes(i.value)) .filter((i) => (val.split(",") || []).includes(i.value))
.map((i) => (this.isChinese ? i.label : i.labelEn)) .map((i) => (this.isChinese ? i.label : i.labelEn))
.join("") .join("")
: ""; : ""
}; }
}, },
customerSelectFn() { customerSelectFn() {
if (this.recommended.length > 0) { if (this.recommended.length > 0) {
let i = this.customerSelect.find( let i = this.customerSelect.find((item) => item.id === this.recommended[0].id)
(item) => item.id === this.recommended[0].id
);
if (!i) { if (!i) {
this.customerSelect.push(this.recommended[0]); this.customerSelect.push(this.recommended[0])
} }
return this.customerSelect; return this.customerSelect
} else { } else {
return this.customerSelect; return this.customerSelect
} }
}, },
combinedQueryParams() { combinedQueryParams() {
...@@ -677,26 +629,26 @@ export default { ...@@ -677,26 +629,26 @@ export default {
queryParams.endFirstDealTime = this.firstDealTime[1] queryParams.endFirstDealTime = this.firstDealTime[1]
} }
if (this.weightYearly.value) { if (this.weightYearly.value) {
let key = 'eqWeightYearly' let key = "eqWeightYearly"
if (this.weightYearly.key == 'leNumberKey') { if (this.weightYearly.key == "leNumberKey") {
key = 'leWeightYearly' key = "leWeightYearly"
} else if (this.weightYearly.key == 'geNumberKey') { } else if (this.weightYearly.key == "geNumberKey") {
key = 'geWeightYearly' key = "geWeightYearly"
} }
queryParams[key] = this.weightYearly.value; queryParams[key] = this.weightYearly.value
} }
if (this.numYearly.value) { if (this.numYearly.value) {
let key = 'eqNumYearly' let key = "eqNumYearly"
if (this.numYearly.key == 'leNumberKey') { if (this.numYearly.key == "leNumberKey") {
key = 'leNumYearly' key = "leNumYearly"
} else if (this.numYearly.key == 'geNumberKey') { } else if (this.numYearly.key == "geNumberKey") {
key = 'geNumYearly' key = "geNumYearly"
} }
queryParams[key] = this.numYearly.value; queryParams[key] = this.numYearly.value
} }
return queryParams; return queryParams
}, }
}, },
components: { components: {
CompetitorSelector, CompetitorSelector,
...@@ -730,7 +682,7 @@ export default { ...@@ -730,7 +682,7 @@ export default {
// 查询参数 // 查询参数
queryParams: { queryParams: {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10
/*number: null, /*number: null,
name: null, name: null,
level: null, level: null,
...@@ -751,14 +703,14 @@ export default { ...@@ -751,14 +703,14 @@ export default {
handOverForm: {}, handOverForm: {},
// 表单校验 // 表单校验
rules: { rules: {
name: [{ required: true, message: this.$t('客户名称不能为空'), trigger: "blur" }], name: [{ required: true, message: this.$t("客户名称不能为空"), trigger: "blur" }],
weightUnit: [{ required: true, message: this.$t('重货标准(CBM)不能为空'), trigger: "blur" }], weightUnit: [{ required: true, message: this.$t("重货标准(CBM)不能为空"), trigger: "blur" }]
}, },
serviceStaffOptions: [], serviceStaffOptions: [],
customerServiceList:[], customerServiceList: [],
countryList:[], countryList: [],
creditList:[], creditList: [],
selectCustomerList: [], selectCustomerList: [],
enterOpenSeaTime: [], enterOpenSeaTime: [],
customerServiceConfirmedTime: [], customerServiceConfirmedTime: [],
...@@ -769,47 +721,47 @@ export default { ...@@ -769,47 +721,47 @@ export default {
allSimplList: [], allSimplList: [],
weightYearly: { weightYearly: {
key: "eqNumberKey", key: "eqNumberKey",
value: "", value: ""
}, },
numYearly: { numYearly: {
key: "eqNumberKey", key: "eqNumberKey",
value: "", value: ""
}, },
productTypeList: [], productTypeList: [],
productList: [], productList: [],
competitorList: [], competitorList: [],
deptList: [], deptList: []
}; }
}, },
created() { created() {
this.getList(); this.getList()
getCreditPage({page:1,rows:999}).then(r => { getCreditPage({ page: 1, rows: 999 }).then((r) => {
this.creditList = r.data.list this.creditList = r.data.list
}) })
// 获得客服人员列表 // 获得客服人员列表
listServiceUser().then(response => { listServiceUser().then((response) => {
this.serviceStaffOptions = response.data; this.serviceStaffOptions = response.data
}) })
listServiceUser().then(r=>{ listServiceUser().then((r) => {
this.customerServiceList = r.data; this.customerServiceList = r.data
}) })
getCountryListAll().then(r => { getCountryListAll().then((r) => {
this.countryList = r.data this.countryList = r.data
}) })
this.getCustomerSelect(); this.getCustomerSelect()
getNodeList().then((r) => { getNodeList().then((r) => {
this.getNodeLists = r.data; this.getNodeLists = r.data
}); })
listAllSimpl().then((r) => { listAllSimpl().then((r) => {
this.allSimplList = r.data; this.allSimplList = r.data
}); })
getProductTypeList().then((r) => { getProductTypeList().then((r) => {
this.productTypeList = r.data; this.productTypeList = r.data
}); })
competitorListAll().then((r) => { competitorListAll().then((r) => {
this.competitorList = r.data; this.competitorList = r.data
}) })
listMySimpleDepts().then(response => { listMySimpleDepts().then((response) => {
this.deptList = response.data this.deptList = response.data
}) })
}, },
...@@ -839,38 +791,36 @@ export default { ...@@ -839,38 +791,36 @@ export default {
const country = this.countryList.find((e) => e.id === cellValue) const country = this.countryList.find((e) => e.id === cellValue)
return this.isChinese ? country?.nameZh : country?.nameEn return this.isChinese ? country?.nameZh : country?.nameEn
}, },
handleSelectionChange(val){ handleSelectionChange(val) {
this.selectCustomerList = val.map(i => i.id); this.selectCustomerList = val.map((i) => i.id)
}, },
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
this.loading = true; this.loading = true
// 处理查询参数 // 处理查询参数
let params = {...this.queryParams, ...this.combinedQueryParams}; let params = { ...this.queryParams, ...this.combinedQueryParams }
// this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime', false); // this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime', false);
// 执行查询 // 执行查询
getWaitForConfirmList(params).then(response => { getWaitForConfirmList(params).then((response) => {
this.list = response.data.list; this.list = response.data.list
this.total = response.data.total; this.total = response.data.total
this.loading = false; this.loading = false
}); })
}, },
remoteMethod(val) { remoteMethod(val) {
this.getCustomerSelect(val); this.getCustomerSelect(val)
}, },
getCustomerSelect(val = "") { getCustomerSelect(val = "") {
getCustomerSelect({ pageNo: 1, pageSize: 30, searchKey: val }).then( getCustomerSelect({ pageNo: 1, pageSize: 30, searchKey: val }).then((res) => {
(res) => { this.customerSelect = res.data.list
this.customerSelect = res.data.list; })
}
);
}, },
handleSelectProductType(val) { handleSelectProductType(val) {
if (val && val.length >= 1) { if (val && val.length >= 1) {
this.queryParams.productIds = [] this.queryParams.productIds = []
getProductList({ typeIds: val }).then((r) => { getProductList({ typeIds: val }).then((r) => {
this.productList = r.data this.productList = r.data
}); })
} else { } else {
this.queryParams.productIds = [] this.queryParams.productIds = []
this.productList = [] this.productList = []
...@@ -878,8 +828,8 @@ export default { ...@@ -878,8 +828,8 @@ export default {
}, },
/** 取消按钮 */ /** 取消按钮 */
cancel() { cancel() {
this.open = false; this.open = false
this.reset(); this.reset()
}, },
/** 表单重置 */ /** 表单重置 */
reset() { reset() {
...@@ -916,49 +866,49 @@ export default { ...@@ -916,49 +866,49 @@ export default {
taxRate: undefined, taxRate: undefined,
remarks: undefined, remarks: undefined,
arrivalConfirm: undefined, arrivalConfirm: undefined,
weightUnit: undefined, weightUnit: undefined
}; }
this.resetForm("form"); this.resetForm("form")
}, },
/** 表单重置 */ /** 表单重置 */
resetHandOverForm() { resetHandOverForm() {
this.form = { this.form = {
customerIdList: undefined, customerIdList: undefined,
customerServiceId: undefined customerServiceId: undefined
}; }
this.resetForm("handOverForm"); this.resetForm("handOverForm")
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.pageNo = 1; this.queryParams.pageNo = 1
this.getList(); this.getList()
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.dateRangeCreateTime = []; this.dateRangeCreateTime = []
this.enterOpenSeaTime = [] this.enterOpenSeaTime = []
this.customerServiceConfirmedTime = [] this.customerServiceConfirmedTime = []
this.firstDealTime = [] this.firstDealTime = []
this.resetForm("queryForm"); this.resetForm("queryForm")
this.queryParams = { this.queryParams = {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10
}; }
this.weightYearly.value = ""; this.weightYearly.value = ""
this.numYearly.value = ""; this.numYearly.value = ""
this.handleQuery(); this.handleQuery()
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset(); this.reset()
this.open = true; this.open = true
this.title = this.$t('添加客户'); this.title = this.$t("添加客户")
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.reset()
const id = row.id; const id = row.id
this.$router.push({path:'/customer/perfect/'+id,query:{isCustomerServiceConfirmed:true,}}); this.$router.push({ path: "/customer/perfect/" + id, query: { isCustomerServiceConfirmed: true } })
// getCustomer(id).then(response => { // getCustomer(id).then(response => {
// this.form = response.data; // this.form = response.data;
// this.open = true; // this.open = true;
...@@ -967,49 +917,56 @@ export default { ...@@ -967,49 +917,56 @@ export default {
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleConfirmService(row) { handleConfirmService(row) {
const id = row.id; const id = row.id
this.$modal.confirm(this.$t('是否确认接收客户')+'["' + row.name + '"]?').then(function() { this.$modal
return confirm({"customerId": id}); .confirm(this.$t("是否确认接收客户") + '["' + row.name + '"]?')
}).then(() => { .then(function () {
this.getList(); return confirm({ customerId: id })
this.$modal.msgSuccess(this.$t('接收成功')); })
}).catch(() => {}); .then(() => {
this.getList()
this.$modal.msgSuccess(this.$t("接收成功"))
})
.catch(() => {})
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handOver(row) { handOver(row) {
// this.resetHandOverForm(); // this.resetHandOverForm();
this.openHandOver = true; this.openHandOver = true
this.handOverForm.customerIdList = [row.id]; this.handOverForm.customerIdList = [row.id]
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate((valid) => {
if (!valid) { if (!valid) {
return; return
} }
// 修改的提交 // 修改的提交
if (this.form.id != null) { if (this.form.id != null) {
updateCustomer(this.form).then(response => { updateCustomer(this.form).then((response) => {
this.$modal.msgSuccess(this.$t('修改成功')); this.$modal.msgSuccess(this.$t("修改成功"))
this.open = false; this.open = false
this.getList(); this.getList()
}); })
return; return
} }
}); })
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const id = row.id; const id = row.id
this.$modal.confirm(this.$t('是否确认删除客户编号为"') + id + this.$t('"的数据项?')).then(function() { this.$modal
return deleteCustomer(id); .confirm(this.$t('是否确认删除客户编号为"') + id + this.$t('"的数据项?'))
}).then(() => { .then(function () {
this.getList(); return deleteCustomer(id)
this.$modal.msgSuccess(this.$t('删除成功')); })
}).catch(() => {}); .then(() => {
this.getList()
this.$modal.msgSuccess(this.$t("删除成功"))
})
.catch(() => {})
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
...@@ -1019,85 +976,86 @@ export default { ...@@ -1019,85 +976,86 @@ export default {
// params.pageSize = undefined; // params.pageSize = undefined;
// this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); // this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出 // 执行导出
this.$modal.confirm(this.$t('是否确认导出我的待接受客户数据项?')).then(() => { this.$modal
waiteConfirEexportExcel().then(()=>{ .confirm(this.$t("是否确认导出我的待接受客户数据项?"))
this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载')) .then(() => {
waiteConfirEexportExcel().then(() => {
this.$message.success(this.$t("已加入导出队列,请稍后在下载日志中下载"))
})
}) })
}).catch(() => {}); .catch(() => {})
}, },
/** 提交按钮 */ /** 提交按钮 */
submitHandOverForm() { submitHandOverForm() {
// 移交的提交 // 移交的提交
handOverCustomer(this.handOverForm).then(response => { handOverCustomer(this.handOverForm).then((response) => {
this.$modal.msgSuccess(this.$t('移交成功')); this.$modal.msgSuccess(this.$t("移交成功"))
this.openHandOver = false; this.openHandOver = false
this.getList(); this.getList()
}); })
}, },
/** 取消按钮 */ /** 取消按钮 */
cancelHandOver() { cancelHandOver() {
this.openHandOver = false; this.openHandOver = false
this.handOverForm = { this.handOverForm = {
customerId: undefined, customerId: undefined,
customerIdList : undefined customerIdList: undefined
}; }
}, },
handleSetting(row) { handleSetting(row) {
this.$refs['customerSetting'].dialogVisible = true this.$refs["customerSetting"].dialogVisible = true
this.$nextTick(_ => { this.$nextTick((_) => {
this.$refs['customerSetting'].init(row.id) this.$refs["customerSetting"].init(row.id)
}) })
}, },
getBusiCountryNames(ids) { getBusiCountryNames(ids) {
if (ids) { if (ids) {
const idsArr = ids.split(',') const idsArr = ids.split(",")
const strArr = [] const strArr = []
this.countryList.forEach(item => { this.countryList.forEach((item) => {
if (idsArr.includes(item.id.toString())) { if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.nameZh : item.nameEn) strArr.push(this.isChinese ? item.nameZh : item.nameEn)
} }
}) })
return strArr.length > 0 ? strArr.join(',') : null return strArr.length > 0 ? strArr.join(",") : null
} else { } else {
return null return null
} }
}, },
getPickupPointNames(ids) { getPickupPointNames(ids) {
if (ids) { if (ids) {
const idsArr = ids.split(',') const idsArr = ids.split(",")
const strArr = [] const strArr = []
this.getNodeLists.forEach(item => { this.getNodeLists.forEach((item) => {
if (idsArr.includes(item.id.toString())) { if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.titleZh : item.titleEn) strArr.push(this.isChinese ? item.titleZh : item.titleEn)
} }
}) })
return strArr.length > 0 ? strArr.join(',') : null return strArr.length > 0 ? strArr.join(",") : null
} else { } else {
return null return null
} }
}, },
getProductTypeNames(ids) { getProductTypeNames(ids) {
if (ids) { if (ids) {
const idsArr = ids.toString().split(',') const idsArr = ids.toString().split(",")
const strArr = [] const strArr = []
this.productTypeList.forEach(item => { this.productTypeList.forEach((item) => {
if (idsArr.includes(item.id.toString())) { if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.titleZh : item.titleEn) strArr.push(this.isChinese ? item.titleZh : item.titleEn)
} }
}) })
return strArr.length > 0 ? strArr.join(',') : null return strArr.length > 0 ? strArr.join(",") : null
} else { } else {
return null return null
} }
}, },
getPromoterName(id) { getPromoterName(id) {
if (id) { if (id) {
let strName = '' let strName = ""
for(const item of this.customerSelectFn) { for (const item of this.customerSelectFn) {
if (item.id == id) { if (item.id == id) {
strName = item.name strName = item.name
break break
...@@ -1109,5 +1067,5 @@ export default { ...@@ -1109,5 +1067,5 @@ export default {
} }
} }
} }
}; }
</script> </script>
<template> <template>
<div class="app-container"> <div class="app-container">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
...@@ -169,17 +168,14 @@ ...@@ -169,17 +168,14 @@
<!-- 操作工具栏 --> <!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['ecw:customer:distribution-create']">{{ $t("新增") }}</el-button>
v-hasPermi="['ecw:customer:distribution-create']">{{$t('新增')}}</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" v-hasPermi="['ecw:customer:distribution-export']">{{ $t("导出") }}</el-button>
v-hasPermi="['ecw:customer:distribution-export']">{{$t('导出')}}</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-col :span="1.5" > <el-col :span="1.5">
<el-button :disabled="selectCustomerList.length === 0" type="primary" size="mini" @click="batchTransferShow = true;" <el-button :disabled="selectCustomerList.length === 0" type="primary" size="mini" @click="batchTransferShow = true" v-hasPermi="['ecw:customer:distribution-transfer']">{{ $t("批量移交") }}</el-button>
v-hasPermi="['ecw:customer:distribution-transfer']">{{$t('批量移交')}}</el-button>
</el-col> </el-col>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
...@@ -189,13 +185,13 @@ ...@@ -189,13 +185,13 @@
<el-table ref="multipleTable" v-loading="loading" :data="list" @selection-change="handleSelectionChange"> <el-table ref="multipleTable" v-loading="loading" :data="list" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" fixed></el-table-column> <el-table-column type="selection" width="55" fixed></el-table-column>
<el-table-column :label="$t('客户编号')" align="center" prop="number"> <el-table-column :label="$t('客户编号')" align="center" prop="number">
<template v-slot="{row}"> <template v-slot="{ row }">
{{row.number}} {{ row.number }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户名称')" align="center" prop="name" > <el-table-column :label="$t('客户名称')" align="center" prop="name">
<template v-slot="{row}"> <template v-slot="{ row }">
<p style="display:inline-block;white-space: pre-wrap;">{{$l(row, 'name')}}</p> <p style="display: inline-block; white-space: pre-wrap">{{ $l(row, "name") }}</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户状态')" align="center" prop="status"> <el-table-column :label="$t('客户状态')" align="center" prop="status">
...@@ -204,41 +200,49 @@ ...@@ -204,41 +200,49 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column> <el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">--> <!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{row}">--> <!-- <template v-slot="{row}">-->
<!-- +{{row.defaultContactPhone}} <br/>--> <!-- +{{row.defaultContactPhone}} <br/>-->
<!-- <contacts :id="row.id" >--> <!-- <contacts :id="row.id" >-->
<!-- <el-button type="text">更多</el-button>--> <!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>--> <!-- </contacts>-->
<!-- </template>--> <!-- </template>-->
<!-- </el-table-column>--> <!-- </el-table-column>-->
<el-table-column :label="$t('最新跟进时间')" width="120"> <el-table-column :label="$t('最新跟进时间')" width="120">
<template slot-scope="scope" v-if= "scope.row.followupBackVO"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
{{ parseTime(scope.row.followupBackVO.followTime) }} {{ parseTime(scope.row.followupBackVO.followTime) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('最新跟进记录')" width="120"> <el-table-column :label="$t('最新跟进记录')" width="120">
<template slot-scope="scope" v-if= "scope.row.followupBackVO"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
<a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">{{ scope.row.followupBackVO.number }}</a> <a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">{{ scope.row.followupBackVO.number }}</a>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户类别')" align="center" prop="status"> <el-table-column :label="$t('客户类别')" align="center" prop="status">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
{{ getDictDatas2(DICT_TYPE.CUSTOMER_TYPE, (row.type||'').split(',')).map(e => isChinese ? e.label : e.labelEn).join(', ')}} {{
<!-- <dict-tag--> getDictDatas2(DICT_TYPE.CUSTOMER_TYPE, (row.type || "").split(","))
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"--> .map((e) => (isChinese ? e.label : e.labelEn))
<!-- :value="scope.row.type"--> .join(", ")
<!-- />--> }}
<!-- <dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"-->
<!-- :value="scope.row.type"-->
<!-- />-->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('角色')" align="center" prop="status"> <el-table-column :label="$t('角色')" align="center" prop="status">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
{{ getDictDatas2(DICT_TYPE.CUSTOMER_ROLE, (row.roles||'').split(',')).map(e => isChinese ? e.label : e.labelEn).join(', ')}} {{
<!-- <dict-tag--> getDictDatas2(DICT_TYPE.CUSTOMER_ROLE, (row.roles || "").split(","))
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"--> .map((e) => (isChinese ? e.label : e.labelEn))
<!-- :value="scope.row.roles"--> .join(", ")
<!-- />--> }}
<!-- <dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"-->
<!-- :value="scope.row.roles"-->
<!-- />-->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户经理')" align="center" prop="customerServiceName"></el-table-column> <el-table-column :label="$t('客户经理')" align="center" prop="customerServiceName"></el-table-column>
...@@ -250,10 +254,7 @@ ...@@ -250,10 +254,7 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户来源')"> <el-table-column :label="$t('客户来源')">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag <dict-tag :type="DICT_TYPE.CUSTOMER_SOURCE" :value="scope.row.source" />
:type="DICT_TYPE.CUSTOMER_SOURCE"
:value="scope.row.source"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('业务国家')"> <el-table-column :label="$t('业务国家')">
...@@ -276,8 +277,7 @@ ...@@ -276,8 +277,7 @@
{{ getProductTypeNames(row.productTypes) }} {{ getProductTypeNames(row.productTypes) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('主要竞争对手')" prop="competitorNames"> <el-table-column :label="$t('主要竞争对手')" prop="competitorNames"> </el-table-column>
</el-table-column>
<el-table-column :label="$t('年度发货次数')" align="center"> <el-table-column :label="$t('年度发货次数')" align="center">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
{{ row.numYearly }} {{ row.numYearly }}
...@@ -290,13 +290,13 @@ ...@@ -290,13 +290,13 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('入公海时间')" align="center" width="160"> <el-table-column :label="$t('入公海时间')" align="center" width="160">
<template v-slot="{ row }"> <template v-slot="{ row }">
{{ parseTime( row.enterOpenSeaTime ? row.enterOpenSeaTime : row.estimateEnterOpenSeaTime)}} {{ parseTime(row.enterOpenSeaTime ? row.enterOpenSeaTime : row.estimateEnterOpenSeaTime) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('入仓确认')" align="center"> <el-table-column :label="$t('入仓确认')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag type="success" v-if="scope.row.arrivalConfirm == 1">{{ $t('') }}</el-tag> <el-tag type="success" v-if="scope.row.arrivalConfirm == 1">{{ $t("") }}</el-tag>
<el-tag type="info" v-else>{{ $t('') }}</el-tag> <el-tag type="info" v-else>{{ $t("") }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('控货无收货人')" align="center"> <el-table-column :label="$t('控货无收货人')" align="center">
...@@ -321,14 +321,10 @@ ...@@ -321,14 +321,10 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('获取方式')" align="center"> <el-table-column :label="$t('获取方式')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag <dict-tag :type="DICT_TYPE.CUSTOMER_GET_METHOD" :value="scope.row.getMethod" />
:type="DICT_TYPE.CUSTOMER_GET_METHOD"
:value="scope.row.getMethod"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('创建人')" prop="createUsername" align="center"> <el-table-column :label="$t('创建人')" prop="createUsername" align="center"> </el-table-column>
</el-table-column>
<el-table-column :label="$t('创建时间')" align="center" width="160"> <el-table-column :label="$t('创建时间')" align="center" width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
...@@ -336,91 +332,69 @@ ...@@ -336,91 +332,69 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('最后更新时间')" align="center" width="160"> <el-table-column :label="$t('最后更新时间')" align="center" width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<span >{{ parseTime(scope.row.updateTime) }}</span> <span>{{ parseTime(scope.row.updateTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="200px" :label="$t('操作')" align="center" fixed="right"> <el-table-column width="200px" :label="$t('操作')" align="center" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<router-link :to="'/customer/query/' + scope.row.id"> <router-link :to="'/customer/query/' + scope.row.id">
<el-button v-has-permi="['ecw:customer:distribution-view']" size="mini" style="margin-right: 10px" type="text" >查看</el-button> <el-button v-has-permi="['ecw:customer:distribution-view']" size="mini" style="margin-right: 10px" type="text">查看</el-button>
</router-link> </router-link>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['ecw:customer:distribution-update']">{{ $t("编辑") }}</el-button>
v-hasPermi="['ecw:customer:distribution-update']">{{$t('编辑')}}</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['ecw:customer:distribution-delete']">{{ $t("删除") }}</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" <el-button size="mini" type="text" icon="el-icon-delete" @click="distribution(scope.row)" v-hasPermi="['ecw:customer:distribution-customer-service']">{{ $t("分配客服") }}</el-button>
v-hasPermi="['ecw:customer:distribution-delete']">{{$t('删除')}}</el-button> <el-button v-has-permi="['ecw:customer:setting']" size="mini" type="text" icon="el-icon-user" @click="handleSetting(scope.row)">{{ $t("设置") }}</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="distribution(scope.row)"
v-hasPermi="['ecw:customer:distribution-customer-service']">{{$t('分配客服')}}</el-button>
<el-button
v-has-permi="['ecw:customer:setting']"
size="mini"
type="text"
icon="el-icon-user"
@click="handleSetting(scope.row)"
>{{ $t("设置") }}</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 移交 --> <!-- 移交 -->
<el-dialog <el-dialog center :title="$t('客服')" :visible.sync="transferShow" width="30%">
center <div style="width: 100%; min-height: 200px; text-align: center">
:title="$t('客服')" <!-- <el-radio-group v-model="service">-->
:visible.sync="transferShow" <!-- <el-radio style="margin: 5px;" v-for="(item,index) in customerServiceList" :key="index" :label="item.id">{{item.nickname}}</el-radio>-->
width="30%"> <!-- </el-radio-group>-->
<div style="width: 100%;min-height: 200px;text-align: center;">
<!-- <el-radio-group v-model="service">-->
<!-- <el-radio style="margin: 5px;" v-for="(item,index) in customerServiceList" :key="index" :label="item.id">{{item.nickname}}</el-radio>-->
<!-- </el-radio-group>-->
<el-select filterable v-model="service"> <el-select filterable v-model="service">
<el-option v-for="(item,index) in customerServiceList" :key="index" :label="item.nickname" :value="item.id"></el-option> <el-option v-for="(item, index) in customerServiceList" :key="index" :label="item.nickname" :value="item.id"></el-option>
</el-select> </el-select>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="transferShow = false">{{$t('取 消')}}</el-button> <el-button @click="transferShow = false">{{ $t("取 消") }}</el-button>
<el-button type="primary" @click="transferFn">{{$t('确 定')}}</el-button> <el-button type="primary" @click="transferFn">{{ $t("确 定") }}</el-button>
</span> </span>
</el-dialog> </el-dialog>
<!-- 分页组件 --> <!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" />
@pagination="getList"/>
<transfer-customer :show.sync="batchTransferShow" :customer-ids.sync="selectCustomerList"></transfer-customer> <transfer-customer :show.sync="batchTransferShow" :customer-ids.sync="selectCustomerList"></transfer-customer>
<customer-follow ref="customerFollow" @refresh="handleQuery" v-if="customerFollowVisible"/> <customer-follow ref="customerFollow" @close="customerFollowVisible = false" @refresh="handleQuery" v-if="customerFollowVisible" />
<customer-setting <customer-setting ref="customerSetting" @refresh="getList"></customer-setting>
ref="customerSetting"
@refresh="getList"
></customer-setting>
</div> </div>
</template> </template>
<script> <script>
import { import { createCustomer, updateCustomer, deleteCustomer, getCustomer, handOverCustomer, exportCustomerExcel, getCustomerToBeAssigned, waitDistributionExportExcel, competitorListAll } from "@/api/ecw/customer"
createCustomer, updateCustomer, deleteCustomer, getCustomer, handOverCustomer, import { getDictDatas, DICT_TYPE, getDictDatas2 } from "@/utils/dict"
exportCustomerExcel, getCustomerToBeAssigned, waitDistributionExportExcel, import upload from "@/components/ImageUpload"
competitorListAll import { listServiceUser, listAllSimpl } from "@/api/system/user"
} from "@/api/ecw/customer"; import { getCountryListAll } from "@/api/ecw/country"
import { getDictDatas, DICT_TYPE, getDictDatas2 } from '@/utils/dict'; import { getCreditPage } from "@/api/customer/credit"
import upload from '@/components/ImageUpload' import transferCustomer from "@/views/ecw/customer/transferCustomer"
import {listServiceUser, listAllSimpl} from "@/api/system/user"; import Template from "@/views/cms/template/index.vue"
import {getCountryListAll} from "@/api/ecw/country"; import Contacts from "@/views/ecw/customer/components/contacts.vue"
import {getCreditPage} from "@/api/customer/credit"; import CustomerSetting from "../customer/components/customerSetting.vue"
import transferCustomer from "@/views/ecw/customer/transferCustomer"; import AreaCodeSelector from "@/components/AreaCodeSelector/index.vue"
import Template from "@/views/cms/template/index.vue"; import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue"
import Contacts from "@/views/ecw/customer/components/contacts.vue"; import CompetitorSelector from "@/components/CompetitorSelector/index.vue"
import CustomerSetting from "../customer/components/customerSetting.vue"; import { getNodeList } from "@/api/ecw/node"
import AreaCodeSelector from "@/components/AreaCodeSelector/index.vue"; import { getCustomerSelect, changeCustomerDefaultPay, changeCustomerNoConsignee, changeCustomerDefaultBilling } from "@/api/ecw/customer"
import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue"; import { getProductTypeList } from "@/api/ecw/productType"
import CompetitorSelector from "@/components/CompetitorSelector/index.vue"; import { getProductList } from "@/api/ecw/product"
import { getNodeList } from "@/api/ecw/node"; import { listMySimpleDepts } from "@/api/system/dept"
import { getCustomerSelect, changeCustomerDefaultPay, changeCustomerNoConsignee,changeCustomerDefaultBilling } from "@/api/ecw/customer";
import { getProductTypeList } from "@/api/ecw/productType";
import { getProductList } from "@/api/ecw/product";
import { listMySimpleDepts } from "@/api/system/dept";
export default { export default {
name: "EcwCustomertobeassignedIndex", name: "EcwCustomertobeassignedIndex",
activated() { activated() {
this.getList() this.getList()
}, },
components: { components: {
CompetitorSelector, CompetitorSelector,
Contacts, Contacts,
...@@ -434,7 +408,7 @@ export default { ...@@ -434,7 +408,7 @@ export default {
data() { data() {
return { return {
customerFollowVisible: false, customerFollowVisible: false,
batchTransferShow:false, batchTransferShow: false,
getDictDatas, getDictDatas,
getDictDatas2, getDictDatas2,
DICT_TYPE, DICT_TYPE,
...@@ -453,11 +427,11 @@ export default { ...@@ -453,11 +427,11 @@ export default {
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
dateRangeCreateTime: [], dateRangeCreateTime: [],
customerServiceList:[], customerServiceList: [],
// 查询参数 // 查询参数
queryParams: { queryParams: {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10
/*number: null, /*number: null,
name: null, name: null,
level: null, level: null,
...@@ -477,25 +451,25 @@ export default { ...@@ -477,25 +451,25 @@ export default {
form: {}, form: {},
// 表单校验 // 表单校验
rules: { rules: {
name: [{ required: true, message: this.$t('客户名称不能为空'), trigger: "blur" }], name: [{ required: true, message: this.$t("客户名称不能为空"), trigger: "blur" }],
country: [{ required: true, message: this.$t('国家不能为空'), trigger: "blur" }], country: [{ required: true, message: this.$t("国家不能为空"), trigger: "blur" }],
level: [{ required: true, message: this.$t('客户等级不能为空'), trigger: "blur" }], level: [{ required: true, message: this.$t("客户等级不能为空"), trigger: "blur" }],
type: [{ required: true, message: this.$t('客户类别不能为空'), trigger: "blur" }], type: [{ required: true, message: this.$t("客户类别不能为空"), trigger: "blur" }],
// createTime: [{ required: true, message: this.$t("创建时间不能为空"), trigger: "blur" }], // createTime: [{ required: true, message: this.$t("创建时间不能为空"), trigger: "blur" }],
source: [{ required: true, message: this.$t('客户来源不能为空'), trigger: "blur" }], source: [{ required: true, message: this.$t("客户来源不能为空"), trigger: "blur" }],
customerService: [{ required: true, message: this.$t('客户经理不能为空'), trigger: "blur" }], customerService: [{ required: true, message: this.$t("客户经理不能为空"), trigger: "blur" }],
status: [{ required: true, message: this.$t('客户状态不能为空'), trigger: "blur" }], status: [{ required: true, message: this.$t("客户状态不能为空"), trigger: "blur" }],
founder: [{ required: true, message: this.$t('创建人不能为空'), trigger: "blur" }], founder: [{ required: true, message: this.$t("创建人不能为空"), trigger: "blur" }]
}, },
// 网点 // 网点
nodeList: [], nodeList: [],
showLine: false, showLine: false,
service:undefined,//客服 service: undefined, //客服
transferData:undefined,//移交数据 transferData: undefined, //移交数据
transferShow:false, transferShow: false,
creditList:[], creditList: [],
selectCustomerList:[], selectCustomerList: [],
countryList:[], countryList: [],
enterOpenSeaTime: [], enterOpenSeaTime: [],
customerServiceConfirmedTime: [], customerServiceConfirmedTime: [],
firstDealTime: [], firstDealTime: [],
...@@ -505,48 +479,48 @@ export default { ...@@ -505,48 +479,48 @@ export default {
allSimplList: [], allSimplList: [],
weightYearly: { weightYearly: {
key: "eqNumberKey", key: "eqNumberKey",
value: "", value: ""
}, },
numYearly: { numYearly: {
key: "eqNumberKey", key: "eqNumberKey",
value: "", value: ""
}, },
productTypeList: [], productTypeList: [],
productList: [], productList: [],
competitorList: [], competitorList: [],
deptList: [], deptList: []
}; }
}, },
created() { created() {
getCountryListAll().then(r => { getCountryListAll().then((r) => {
console.log(r,'国家') console.log(r, "国家")
this.countryList = r.data this.countryList = r.data
}) })
getCreditPage({page:1,rows:999}).then(r => { getCreditPage({ page: 1, rows: 999 }).then((r) => {
this.creditList = r.data.list this.creditList = r.data.list
}) })
this.getList(); this.getList()
listServiceUser().then(r=>{ listServiceUser().then((r) => {
console.log(r,'客服'); console.log(r, "客服")
this.customerServiceList = r.data; this.customerServiceList = r.data
}) })
// getNodeList().then(r => { // getNodeList().then(r => {
// this.nodeList = r.data // this.nodeList = r.data
// }) // })
this.getCustomerSelect(); this.getCustomerSelect()
getNodeList().then((r) => { getNodeList().then((r) => {
this.getNodeLists = r.data; this.getNodeLists = r.data
}); })
listAllSimpl().then((r) => { listAllSimpl().then((r) => {
this.allSimplList = r.data; this.allSimplList = r.data
}); })
getProductTypeList().then((r) => { getProductTypeList().then((r) => {
this.productTypeList = r.data; this.productTypeList = r.data
}); })
competitorListAll().then((r) => { competitorListAll().then((r) => {
this.competitorList = r.data; this.competitorList = r.data
}) })
listMySimpleDepts().then(response => { listMySimpleDepts().then((response) => {
this.deptList = response.data this.deptList = response.data
}) })
}, },
...@@ -560,8 +534,8 @@ export default { ...@@ -560,8 +534,8 @@ export default {
const country = this.countryList.find((e) => e.id === cellValue) const country = this.countryList.find((e) => e.id === cellValue)
return this.isChinese ? country?.nameZh : country?.nameEn return this.isChinese ? country?.nameZh : country?.nameEn
}, },
handleSelectionChange(val){ handleSelectionChange(val) {
this.selectCustomerList = val.map(i => i.id); this.selectCustomerList = val.map((i) => i.id)
}, },
handleCustomerFollowLink(row) { handleCustomerFollowLink(row) {
this.customerFollowVisible = true this.customerFollowVisible = true
...@@ -571,33 +545,31 @@ export default { ...@@ -571,33 +545,31 @@ export default {
}, },
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
this.loading = true; this.loading = true
// 处理查询参数 // 处理查询参数
let params = {...this.queryParams, ...this.combinedQueryParams}; let params = { ...this.queryParams, ...this.combinedQueryParams }
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime', false); this.addBeginAndEndTime(params, this.dateRangeCreateTime, "createTime", false)
// 执行查询 // 执行查询
getCustomerToBeAssigned(params).then(response => { getCustomerToBeAssigned(params).then((response) => {
this.list = response.data.list; this.list = response.data.list
this.total = response.data.total; this.total = response.data.total
this.loading = false; this.loading = false
}); })
}, },
remoteMethod(val) { remoteMethod(val) {
this.getCustomerSelect(val); this.getCustomerSelect(val)
}, },
getCustomerSelect(val = "") { getCustomerSelect(val = "") {
getCustomerSelect({ pageNo: 1, pageSize: 30, searchKey: val }).then( getCustomerSelect({ pageNo: 1, pageSize: 30, searchKey: val }).then((res) => {
(res) => { this.customerSelect = res.data.list
this.customerSelect = res.data.list; })
}
);
}, },
handleSelectProductType(val) { handleSelectProductType(val) {
if (val && val.length >= 1) { if (val && val.length >= 1) {
this.queryParams.productIds = [] this.queryParams.productIds = []
getProductList({ typeIds: val }).then((r) => { getProductList({ typeIds: val }).then((r) => {
this.productList = r.data this.productList = r.data
}); })
} else { } else {
this.queryParams.productIds = [] this.queryParams.productIds = []
this.productList = [] this.productList = []
...@@ -605,8 +577,8 @@ export default { ...@@ -605,8 +577,8 @@ export default {
}, },
/** 取消按钮 */ /** 取消按钮 */
cancel() { cancel() {
this.open = false; this.open = false
this.reset(); this.reset()
}, },
/** 表单重置 */ /** 表单重置 */
reset() { reset() {
...@@ -645,44 +617,44 @@ export default { ...@@ -645,44 +617,44 @@ export default {
taxRate: undefined, taxRate: undefined,
remarks: undefined, remarks: undefined,
arrivalConfirm: undefined, arrivalConfirm: undefined,
weightUnit: undefined, weightUnit: undefined
}; }
this.resetForm("form"); this.resetForm("form")
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.pageNo = 1; this.queryParams.pageNo = 1
this.getList(); this.getList()
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.dateRangeCreateTime = []; this.dateRangeCreateTime = []
this.enterOpenSeaTime = [] this.enterOpenSeaTime = []
this.customerServiceConfirmedTime = [] this.customerServiceConfirmedTime = []
this.firstDealTime = [] this.firstDealTime = []
this.resetForm("queryForm"); this.resetForm("queryForm")
this.queryParams = { this.queryParams = {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10
}; }
this.weightYearly.value = ""; this.weightYearly.value = ""
this.numYearly.value = ""; this.numYearly.value = ""
this.handleQuery(); this.handleQuery()
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.$router.push('/customer/add-edit/0') this.$router.push("/customer/add-edit/0")
// this.reset(); // this.reset();
// this.open = true; // this.open = true;
// this.title = this.$t("添加客户"); // this.title = this.$t("添加客户");
}, },
/** 查看按钮操作 */ /** 查看按钮操作 */
handleView(row) { handleView(row) {
this.$router.push('/customer/query/' + row.id) this.$router.push("/customer/query/" + row.id)
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.$router.push('/customer/edit-distribution/' + row.id) this.$router.push("/customer/edit-distribution/" + row.id)
// this.reset(); // this.reset();
// const id = row.id; // const id = row.id;
// getCustomer(id).then(response => { // getCustomer(id).then(response => {
...@@ -693,120 +665,127 @@ export default { ...@@ -693,120 +665,127 @@ export default {
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate((valid) => {
if (!valid) { if (!valid) {
// return; // return;
} }
// 修改的提交 // 修改的提交
if (this.form.id != null) { if (this.form.id != null) {
updateCustomer(this.form).then(response => { updateCustomer(this.form).then((response) => {
this.$modal.msgSuccess(this.$t('修改成功')); this.$modal.msgSuccess(this.$t("修改成功"))
this.open = false; this.open = false
this.getList(); this.getList()
}); })
return; return
} }
// 添加的提交 // 添加的提交
createCustomer(this.form).then(response => { createCustomer(this.form).then((response) => {
this.$modal.msgSuccess(this.$t('新增成功')); this.$modal.msgSuccess(this.$t("新增成功"))
this.open = false; this.open = false
this.getList(); this.getList()
}); })
}); })
}, },
/** 移交按钮操作 */ /** 移交按钮操作 */
handleDelete(row) { handleDelete(row) {
const id = row.id; const id = row.id
this.$modal.confirm(this.$t('是否确认删除客户编号为"') + row.number + this.$t('"的数据项?')).then(function() { this.$modal
return deleteCustomer(id); .confirm(this.$t('是否确认删除客户编号为"') + row.number + this.$t('"的数据项?'))
}).then(() => { .then(function () {
this.getList(); return deleteCustomer(id)
this.$modal.msgSuccess(this.$t('删除成功')); })
}).catch(() => {}); .then(() => {
this.getList()
this.$modal.msgSuccess(this.$t("删除成功"))
})
.catch(() => {})
}, },
//分配客服 //分配客服
distribution(row){ distribution(row) {
// this.service = row.customerService; // this.service = row.customerService;
// this.transferData = row; // this.transferData = row;
this.selectCustomerList = [row.id] this.selectCustomerList = [row.id]
this.batchTransferShow =true; this.batchTransferShow = true
}, },
transferFn(){ transferFn() {
if(!this.service){ if (!this.service) {
return this.$message.warning(this.$t('请选择客户经理!')); return this.$message.warning(this.$t("请选择客户经理!"))
} }
handOverCustomer({ handOverCustomer({
customerServiceId:this.service, customerServiceId: this.service,
customerIdList :[this.transferData.id] customerIdList: [this.transferData.id]
}).then(r=>{ }).then((r) => {
if(r.code === 0){ if (r.code === 0) {
this.transferShow = false; this.transferShow = false
this.service = ''; this.service = ""
this.getList(); this.getList()
this.$message.success(this.$t('移交成功!')); this.$message.success(this.$t("移交成功!"))
} }
}) })
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
this.$modal.confirm(this.$t('是否确认导出待分配客户数据项?')).then(response => { this.$modal
waitDistributionExportExcel().then(()=>{ .confirm(this.$t("是否确认导出待分配客户数据项?"))
this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载')) .then((response) => {
waitDistributionExportExcel().then(() => {
this.$message.success(this.$t("已加入导出队列,请稍后在下载日志中下载"))
})
}) })
}).catch(() => {}); .catch(() => {})
}, },
handleSetting(row) { handleSetting(row) {
this.$refs['customerSetting'].dialogVisible = true this.$refs["customerSetting"].dialogVisible = true
this.$nextTick(_ => { this.$nextTick((_) => {
this.$refs['customerSetting'].init(row.id) this.$refs["customerSetting"].init(row.id)
}) })
}, },
getBusiCountryNames(ids) { getBusiCountryNames(ids) {
if (ids) { if (ids) {
const idsArr = ids.split(',') const idsArr = ids.split(",")
const strArr = [] const strArr = []
this.countryList.forEach(item => { this.countryList.forEach((item) => {
if (idsArr.includes(item.id.toString())) { if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.nameZh : item.nameEn) strArr.push(this.isChinese ? item.nameZh : item.nameEn)
} }
}) })
return strArr.length > 0 ? strArr.join(',') : null return strArr.length > 0 ? strArr.join(",") : null
} else { } else {
return null return null
} }
}, },
getPickupPointNames(ids) { getPickupPointNames(ids) {
if (ids) { if (ids) {
const idsArr = ids.split(',') const idsArr = ids.split(",")
const strArr = [] const strArr = []
this.getNodeLists.forEach(item => { this.getNodeLists.forEach((item) => {
if (idsArr.includes(item.id.toString())) { if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.titleZh : item.titleEn) strArr.push(this.isChinese ? item.titleZh : item.titleEn)
} }
}) })
return strArr.length > 0 ? strArr.join(',') : null return strArr.length > 0 ? strArr.join(",") : null
} else { } else {
return null return null
} }
}, },
getProductTypeNames(ids) { getProductTypeNames(ids) {
if (ids) { if (ids) {
const idsArr = ids.toString().split(',') const idsArr = ids.toString().split(",")
const strArr = [] const strArr = []
this.productTypeList.forEach(item => { this.productTypeList.forEach((item) => {
if (idsArr.includes(item.id.toString())) { if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.titleZh : item.titleEn) strArr.push(this.isChinese ? item.titleZh : item.titleEn)
} }
}) })
return strArr.length > 0 ? strArr.join(',') : null return strArr.length > 0 ? strArr.join(",") : null
} else { } else {
return null return null
} }
}, },
getPromoterName(id) { getPromoterName(id) {
if (id) { if (id) {
let strName = '' let strName = ""
for(const item of this.customerSelectFn) { for (const item of this.customerSelectFn) {
if (item.id == id) { if (item.id == id) {
strName = item.name strName = item.name
break break
...@@ -821,7 +800,7 @@ export default { ...@@ -821,7 +800,7 @@ export default {
changeCustomerDefaultPay({ changeCustomerDefaultPay({
customerIdList: this.selectCustomerList, customerIdList: this.selectCustomerList,
defaultPay: true defaultPay: true
}).then(_ => { }).then((_) => {
this.$message.success(this.$t("操作成功")) this.$message.success(this.$t("操作成功"))
this.getList() this.getList()
}) })
...@@ -830,7 +809,7 @@ export default { ...@@ -830,7 +809,7 @@ export default {
changeCustomerNoConsignee({ changeCustomerNoConsignee({
customerIdList: this.selectCustomerList, customerIdList: this.selectCustomerList,
noConsigee: true noConsigee: true
}).then(_ => { }).then((_) => {
this.$message.success(this.$t("操作成功")) this.$message.success(this.$t("操作成功"))
this.getList() this.getList()
}) })
...@@ -839,23 +818,23 @@ export default { ...@@ -839,23 +818,23 @@ export default {
changeCustomerDefaultBilling({ changeCustomerDefaultBilling({
customerIdList: this.selectCustomerList, customerIdList: this.selectCustomerList,
defaultBilling: true defaultBilling: true
}).then(_ => { }).then((_) => {
this.$message.success(this.$t("操作成功")) this.$message.success(this.$t("操作成功"))
this.getList() this.getList()
}) })
}, }
}, },
watch:{ watch: {
selectCustomerList(val){ selectCustomerList(val) {
if(val.length === 0){ if (val.length === 0) {
this.getList() this.getList()
this.$refs.multipleTable.clearSelection(); this.$refs.multipleTable.clearSelection()
} }
}, }
}, },
computed:{ computed: {
isChinese(){ isChinese() {
return this.$i18n.locale === 'zh_CN' return this.$i18n.locale === "zh_CN"
}, },
channel() { channel() {
return (val) => { return (val) => {
...@@ -864,20 +843,18 @@ export default { ...@@ -864,20 +843,18 @@ export default {
.filter((i) => (val.split(",") || []).includes(i.value)) .filter((i) => (val.split(",") || []).includes(i.value))
.map((i) => (this.isChinese ? i.label : i.labelEn)) .map((i) => (this.isChinese ? i.label : i.labelEn))
.join("") .join("")
: ""; : ""
}; }
}, },
customerSelectFn() { customerSelectFn() {
if (this.recommended.length > 0) { if (this.recommended.length > 0) {
let i = this.customerSelect.find( let i = this.customerSelect.find((item) => item.id === this.recommended[0].id)
(item) => item.id === this.recommended[0].id
);
if (!i) { if (!i) {
this.customerSelect.push(this.recommended[0]); this.customerSelect.push(this.recommended[0])
} }
return this.customerSelect; return this.customerSelect
} else { } else {
return this.customerSelect; return this.customerSelect
} }
}, },
combinedQueryParams() { combinedQueryParams() {
...@@ -899,26 +876,26 @@ export default { ...@@ -899,26 +876,26 @@ export default {
queryParams.endFirstDealTime = this.firstDealTime[1] queryParams.endFirstDealTime = this.firstDealTime[1]
} }
if (this.weightYearly.value) { if (this.weightYearly.value) {
let key = 'eqWeightYearly' let key = "eqWeightYearly"
if (this.weightYearly.key == 'leNumberKey') { if (this.weightYearly.key == "leNumberKey") {
key = 'leWeightYearly' key = "leWeightYearly"
} else if (this.weightYearly.key == 'geNumberKey') { } else if (this.weightYearly.key == "geNumberKey") {
key = 'geWeightYearly' key = "geWeightYearly"
} }
queryParams[key] = this.weightYearly.value; queryParams[key] = this.weightYearly.value
} }
if (this.numYearly.value) { if (this.numYearly.value) {
let key = 'eqNumYearly' let key = "eqNumYearly"
if (this.numYearly.key == 'leNumberKey') { if (this.numYearly.key == "leNumberKey") {
key = 'leNumYearly' key = "leNumYearly"
} else if (this.numYearly.key == 'geNumberKey') { } else if (this.numYearly.key == "geNumberKey") {
key = 'geNumYearly' key = "geNumYearly"
} }
queryParams[key] = this.numYearly.value; queryParams[key] = this.numYearly.value
} }
return queryParams; return queryParams
}, }
} }
}; }
</script> </script>
...@@ -17,16 +17,16 @@ ...@@ -17,16 +17,16 @@
<el-form-item :label="$t('联系方式')"> <el-form-item :label="$t('联系方式')">
<el-input :placeholder="$t('请输入联系方式')" clearable v-model.trim="queryParams.defaultContactPhone" @input="queryParams.defaultContactPhone = queryParams.defaultContactPhone.replace(/\s+/g, '')"></el-input> <el-input :placeholder="$t('请输入联系方式')" clearable v-model.trim="queryParams.defaultContactPhone" @input="queryParams.defaultContactPhone = queryParams.defaultContactPhone.replace(/\s+/g, '')"></el-input>
</el-form-item> </el-form-item>
<!-- <el-form-item :label="$t('部门')" v-if="path != '/customer/department-customers'">--> <!-- <el-form-item :label="$t('部门')" v-if="path != '/customer/department-customers'">-->
<!-- <el-select v-model="queryParams.deptIds" :placeholder="$t('请选择部门')">--> <!-- <el-select v-model="queryParams.deptIds" :placeholder="$t('请选择部门')">-->
<!-- <el-option v-for="item in deptList" :key="item.id" :label="item.name" :value="item.id" />--> <!-- <el-option v-for="item in deptList" :key="item.id" :label="item.name" :value="item.id" />-->
<!-- </el-select>--> <!-- </el-select>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- <el-form-item :label="$t('客户经理')" prop="customerService">--> <!-- <el-form-item :label="$t('客户经理')" prop="customerService">-->
<!-- <el-select multiple clearable v-model="queryParams.customerService" :placeholder="$t('请选择客户经理')" size="small" @change="handleQuery">--> <!-- <el-select multiple clearable v-model="queryParams.customerService" :placeholder="$t('请选择客户经理')" size="small" @change="handleQuery">-->
<!-- <el-option v-for="dict in customerServiceList" :key="dict.id" :label="dict.nickname" :value="dict.id" />--> <!-- <el-option v-for="dict in customerServiceList" :key="dict.id" :label="dict.nickname" :value="dict.id" />-->
<!-- </el-select>--> <!-- </el-select>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item :label="$t('客户来源')" prop="source"> <el-form-item :label="$t('客户来源')" prop="source">
<el-select multiple clearable v-model="queryParams.source" :placeholder="$t('请选择客户来源')" size="small" @change="handleQuery"> <el-select multiple clearable v-model="queryParams.source" :placeholder="$t('请选择客户来源')" size="small" @change="handleQuery">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value" /> <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value" />
...@@ -91,9 +91,9 @@ ...@@ -91,9 +91,9 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('主要竞争对手')" v-show="showSearch"> <el-form-item :label="$t('主要竞争对手')" v-show="showSearch">
<el-select multiple filterable clearable v-model="queryParams.competitorIds" :placeholder="$t('请选择竞争对手')" size="small" @change="handleQuery"> <el-select multiple filterable clearable v-model="queryParams.competitorIds" :placeholder="$t('请选择竞争对手')" size="small" @change="handleQuery">
<el-option v-for="item in competitorList" :key="item.id" :label="item.name" :value="item.id"> </el-option> <el-option v-for="item in competitorList" :key="item.id" :label="item.name" :value="item.id"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('年度发货次数')" v-show="showSearch"> <el-form-item :label="$t('年度发货次数')" v-show="showSearch">
<el-input v-model.trim="numYearly.value" :placeholder="$t('请输入数字')" clearable @keyup.enter.native="handleQuery" @input="numYearly.value = numYearly.value.replace(/\s+/g, '')"> <el-input v-model.trim="numYearly.value" :placeholder="$t('请输入数字')" clearable @keyup.enter.native="handleQuery" @input="numYearly.value = numYearly.value.replace(/\s+/g, '')">
...@@ -222,21 +222,21 @@ ...@@ -222,21 +222,21 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column> <el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">--> <!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{ row }">--> <!-- <template v-slot="{ row }">-->
<!-- +{{ row.defaultContactPhone }} <br />--> <!-- +{{ row.defaultContactPhone }} <br />-->
<!-- <contacts :id="row.id">--> <!-- <contacts :id="row.id">-->
<!-- <el-button type="text">更多</el-button>--> <!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>--> <!-- </contacts>-->
<!-- </template>--> <!-- </template>-->
<!-- </el-table-column>--> <!-- </el-table-column>-->
<el-table-column :label="$t('最新跟进时间')" width="120"> <el-table-column :label="$t('最新跟进时间')" width="120">
<template slot-scope="scope" v-if= "scope.row.followupBackVO"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
{{ parseTime(scope.row.followupBackVO.followTime) }} {{ parseTime(scope.row.followupBackVO.followTime) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('最新跟进记录')" width="120"> <el-table-column :label="$t('最新跟进记录')" width="120">
<template slot-scope="scope" v-if= "scope.row.followupBackVO"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
<a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">{{ scope.row.followupBackVO.number }}</a> <a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">{{ scope.row.followupBackVO.number }}</a>
</template> </template>
</el-table-column> </el-table-column>
...@@ -373,7 +373,7 @@ ...@@ -373,7 +373,7 @@
<!-- 分页组件 --> <!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" /> <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" />
<customer-follow-list :customer-id="customerId" :id="customerId" :customer-service="customerService" :customer-number="customerNumber" ref="CustomerFollowList" v-if="customerFollowVisible"></customer-follow-list> <customer-follow-list :customer-id="customerId" :id="customerId" :customer-service="customerService" :customer-number="customerNumber" ref="CustomerFollowList" v-if="customerFollowVisible"></customer-follow-list>
<customer-follow ref="customerFollow" @refresh="handleQuery" v-if="customerFollowVisible"/> <customer-follow ref="customerFollow" @close="customerFollowVisible = false" @refresh="handleQuery" v-if="customerFollowVisible" />
<customer-complaints ref="customerComplaint" :customer-id.sync="customerId"></customer-complaints> <customer-complaints ref="customerComplaint" :customer-id.sync="customerId"></customer-complaints>
<transfer-customer :show.sync="show" :customer-ids.sync="selectCustomerList"></transfer-customer> <transfer-customer :show.sync="show" :customer-ids.sync="selectCustomerList"></transfer-customer>
<customer-setting ref="customerSetting" @refresh="getList"></customer-setting> <customer-setting ref="customerSetting" @refresh="getList"></customer-setting>
...@@ -399,7 +399,7 @@ import { getNodeList } from "@/api/ecw/node" ...@@ -399,7 +399,7 @@ import { getNodeList } from "@/api/ecw/node"
import { getCustomerSelect, changeCustomerDefaultPay, changeCustomerNoConsignee, changeCustomerDefaultBilling } from "@/api/ecw/customer" import { getCustomerSelect, changeCustomerDefaultPay, changeCustomerNoConsignee, changeCustomerDefaultBilling } from "@/api/ecw/customer"
import { getProductTypeList } from "@/api/ecw/productType" import { getProductTypeList } from "@/api/ecw/productType"
import { getProductList } from "@/api/ecw/product" import { getProductList } from "@/api/ecw/product"
import CompetitorSelector from "@/components/CompetitorSelector/index.vue"; import CompetitorSelector from "@/components/CompetitorSelector/index.vue"
export default { export default {
name: "EcwMyCustomerServiceIndex", name: "EcwMyCustomerServiceIndex",
components: { components: {
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<span style="font-size: 15px"></span> <span style="font-size: 15px"></span>
<div class="btns"> <div class="btns">
<el-button v-hasPermi="['ecw:offer:update']" size="mini" type="primary" v-if="[4, 5, 6].indexOf(list.status) == -1" @click="$router.push('edit?id=' + offerId)">{{ $t("编辑") }}</el-button> <el-button v-hasPermi="['ecw:offer:update']" size="mini" type="primary" v-if="[4, 5, 6].indexOf(list.status) == -1" @click="$router.push('edit?id=' + offerId)">{{ $t("编辑") }}</el-button>
<el-button v-hasPermi="['ecw:offer:loglist']" type="primary" v-if="[1, 3, 7].indexOf(list.status) > -1" size="mini" @click="handleAdd">{{ $t("跟进") }}</el-button> <el-button v-hasPermi="['ecw:offer:loglist']" type="primary" v-if="[1, 3, 7].indexOf(list.status) > -1" size="mini" @click="handleAddOffer">{{ $t("跟进") }}</el-button>
<el-button v-hasPermi="['ecw:offer:result']" type="primary" v-if="[3, 7].indexOf(list.status) > -1" size="mini" @click="toResult">{{ $t("结果") }}</el-button> <el-button v-hasPermi="['ecw:offer:result']" type="primary" v-if="[3, 7].indexOf(list.status) > -1" size="mini" @click="toResult">{{ $t("结果") }}</el-button>
<el-button v-hasPermi="['ecw:offer:discount', 'ecw:offer:commission']" size="mini" v-if="[1, 3, 7].indexOf(list.status) > -1" type="primary" @click.native="$router.push('/offer/special?offerId=' + offerId)">{{ $t("特价") }}</el-button> <el-button v-hasPermi="['ecw:offer:discount', 'ecw:offer:commission']" size="mini" v-if="[1, 3, 7].indexOf(list.status) > -1" type="primary" @click.native="$router.push('/offer/special?offerId=' + offerId)">{{ $t("特价") }}</el-button>
<el-button v-hasPermi="['ecw:offer:delete']" type="danger" size="mini" @click="handleDelete">{{ $t("删除") }}</el-button> <el-button v-hasPermi="['ecw:offer:delete']" type="danger" size="mini" @click="handleDelete">{{ $t("删除") }}</el-button>
...@@ -313,7 +313,7 @@ ...@@ -313,7 +313,7 @@
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
<customer-follow ref="customerFollow" v-if="customerFollowVisible" :customerService="curData.salesmanId" :customerNumber="curData.customerNumber" :offerId="offerId" /> <customer-follow ref="customerFollow" v-if="customerFollowVisible" @close="customerFollowVisible = false" :customerService="curData.salesmanId" :customerNumber="curData.customerNumber" :offerId="offerId" />
</div> </div>
</template> </template>
...@@ -521,14 +521,13 @@ export default { ...@@ -521,14 +521,13 @@ export default {
getTradeCityList().then((res) => (this.tradeCityList = res.data)) getTradeCityList().then((res) => (this.tradeCityList = res.data))
getProductAttrList().then((res) => (this.productAttrList = res.data)) getProductAttrList().then((res) => (this.productAttrList = res.data))
if (this.$route.query.offerId) { if (this.$route.query.offerId) {
this.offerId = this.$route.query.offerId this.offerId = parseInt(this.$route.query.offerId)
this.getList() this.getList()
} }
}, },
methods: { methods: {
handleAddOffer(row) { handleAddOffer() {
console.log(row) this.curData = this.list
this.curData = row
this.customerFollowVisible = true this.customerFollowVisible = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs["customerFollow"].handleAdd() this.$refs["customerFollow"].handleAdd()
...@@ -784,4 +783,13 @@ export default { ...@@ -784,4 +783,13 @@ export default {
.card { .card {
margin-top: 20px; margin-top: 20px;
} }
/deep/.el-table__fixed-footer-wrapper tbody td.el-table__cell {
font-size: 16px;
font-weight: bold;
}
/deep/.el-table__footer-wrapper tbody td.el-table__cell {
font-size: 20px;
font-weight: bold;
}
</style> </style>
...@@ -52,10 +52,8 @@ ...@@ -52,10 +52,8 @@
</el-form-item> </el-form-item>
</div> </div>
</el-form> </el-form>
</div> </div>
<!-- 操作工具栏 --> <!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
...@@ -70,7 +68,7 @@ ...@@ -70,7 +68,7 @@
</el-button> </el-button>
</el-col> </el-col>
</el-row> </el-row>
<el-table ref="multipleTable" :data="customerFollowList" v-loading="loading" @selection-change="handleSelectionChange" style="width: 100%"> <el-table ref="multipleTable" :data="customerFollowList" v-loading="loading" @selection-change="handleSelectionChange" style="width: 100%">
<el-table-column type="selection" width="55" fixed></el-table-column> <el-table-column type="selection" width="55" fixed></el-table-column>
<el-table-column prop="number" :label="$t('编号')" align="center" fixed> <el-table-column prop="number" :label="$t('编号')" align="center" fixed>
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -125,7 +123,7 @@ ...@@ -125,7 +123,7 @@
</el-table> </el-table>
<pagination :total="customerFollowTotal" :page.sync="followForm.pageNo" :limit.sync="followForm.pageSize" @pagination="getCustomerFollowList" /> <pagination :total="customerFollowTotal" :page.sync="followForm.pageNo" :limit.sync="followForm.pageSize" @pagination="getCustomerFollowList" />
</el-card> </el-card>
<customer-follow ref="customerFollow" @handleCustomerFollowAdd="handleCustomerFollowAdd" @refresh="handleQuery" v-if="customerFollowVisible" :customer-id="customerId" :customerService="customerService" :customerNumber="customerNumber" /> <customer-follow ref="customerFollow" @close="customerFollowVisible = false" @handleCustomerFollowAdd="handleCustomerFollowAdd" @refresh="handleQuery" v-if="customerFollowVisible" :customer-id="customerId" :customerService="customerService" :customerNumber="customerNumber" />
<customer-follow-update-status :show.sync="updateStatus" :followup-ids.sync="selectCustomerFollowList"></customer-follow-update-status> <customer-follow-update-status :show.sync="updateStatus" :followup-ids.sync="selectCustomerFollowList"></customer-follow-update-status>
</div> </div>
</template> </template>
...@@ -135,10 +133,10 @@ import { getCustomerFollowList, exportCustomerFollow } from "@/api/ecw/customerF ...@@ -135,10 +133,10 @@ import { getCustomerFollowList, exportCustomerFollow } from "@/api/ecw/customerF
import { getDictDatas, DICT_TYPE, getDictDatas2 } from "@/utils/dict" import { getDictDatas, DICT_TYPE, getDictDatas2 } from "@/utils/dict"
import CustomerFollow from "@/views/ecw/customer/components/customerFollow" import CustomerFollow from "@/views/ecw/customer/components/customerFollow"
import UserSelector from "@/components/UserSelector" import UserSelector from "@/components/UserSelector"
import customerFollowUpdateStatus from "@/views/ecw/customer/components/customerFollowUpdateStatus.vue"; import customerFollowUpdateStatus from "@/views/ecw/customer/components/customerFollowUpdateStatus.vue"
export default { export default {
name: "logListCommon", name: "logListCommon",
components: {customerFollowUpdateStatus, UserSelector, CustomerFollow }, components: { customerFollowUpdateStatus, UserSelector, CustomerFollow },
props: ["customerId", "offerId", "customerService", "customerNumber"], props: ["customerId", "offerId", "customerService", "customerNumber"],
data() { data() {
return { return {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment