Commit e8a0b0a9 authored by Marcus's avatar Marcus

客户跟进

parent 7d0dedcf
...@@ -34,6 +34,14 @@ export function getCustomerContacts(id) { ...@@ -34,6 +34,14 @@ export function getCustomerContacts(id) {
}) })
} }
// 获得客户联系人列表
export function getCustomerContactsList() {
return request({
url: '/ecw/customer-contacts/page',
method: 'get'
})
}
// 获得客户联系人分页 // 获得客户联系人分页
export function getCustomerContactsPage(query) { export function getCustomerContactsPage(query) {
return request({ return request({
......
import request from '@/utils/request'
// 创建跟进
export function createCustomerFollow(data) {
return request({
url: '/ecw/customer-follow/create',
method: 'post',
data: data
})
}
// 更新跟进
export function updateCustomerFollow(data) {
return request({
url: '/ecw/customer-follow/update',
method: 'put',
data: data
})
}
// 删除跟进
export function deleteCustomerFollow(id) {
return request({
url: '/ecw/customer-follow/delete?id=' + id,
method: 'delete'
})
}
// 获得跟进
export function getCustomerFollow(id) {
return request({
url: '/ecw/customer-follow/get?id=' + id,
method: 'get'
})
}
// 获得跟进分页
export function getCustomerFollowPage(query) {
return request({
url: '/ecw/customer-follow/page',
method: 'get',
params: query
})
}
// 导出跟进 Excel
export function exportCustomerFollowExcel(query) {
return request({
url: '/ecw/customer-follow/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
...@@ -100,6 +100,8 @@ export const DICT_TYPE = { ...@@ -100,6 +100,8 @@ export const DICT_TYPE = {
AREA_CODE: 'area_code', // 区号 AREA_CODE: 'area_code', // 区号
SOCIAL: 'customer_social_tools', // 社交软件 SOCIAL: 'customer_social_tools', // 社交软件
IS_DEFAULT: 'is_default', // 默认联系人 IS_DEFAULT: 'is_default', // 默认联系人
CUSTOMER_FOLLOW_TYPE: 'customer_follow_type', // 跟进类型
CUSTOMER_FOLLOW_METHOD: 'customer_follow_method', // 跟进方式
COMMISSION_PRODUCT_APPROVAL:'commission_product_approval', //佣金备案 COMMISSION_PRODUCT_APPROVAL:'commission_product_approval', //佣金备案
SHIPPING_DECLARATION_TYPE:'shipping_declaration_type',//出货报关方式(与订单报关方式相同) SHIPPING_DECLARATION_TYPE:'shipping_declaration_type',//出货报关方式(与订单报关方式相同)
COMMISSION_TYPE:'commission_type',//佣金类型 COMMISSION_TYPE:'commission_type',//佣金类型
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<el-button type="primary" size="small">添加优惠</el-button> <el-button type="primary" size="small">添加优惠</el-button>
<el-button type="primary" size="small" @click="$router.push('/customer/edit/' + customerId)">编辑</el-button> <el-button type="primary" size="small" @click="$router.push('/customer/edit/' + customerId)">编辑</el-button>
<el-button type="primary" size="small">报价</el-button> <el-button type="primary" size="small">报价</el-button>
<el-button type="primary" size="small">跟进</el-button> <el-button type="primary" size="small" @click="customerFollow.dialogVisible = true">跟进</el-button>
<el-button type="primary" size="small">客诉</el-button> <el-button type="primary" size="small">客诉</el-button>
<el-button type="danger" size="small">删除</el-button> <el-button type="danger" size="small">删除</el-button>
</div> </div>
...@@ -94,7 +94,7 @@ ...@@ -94,7 +94,7 @@
<el-tabs style="margin-top: 15px" type="border-card"> <el-tabs style="margin-top: 15px" type="border-card">
<el-tab-pane label="订单"> <el-tab-pane label="订单">
订单
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="报价"> <el-tab-pane label="报价">
<el-table <el-table
...@@ -145,7 +145,7 @@ ...@@ -145,7 +145,7 @@
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="跟进"> <el-tab-pane label="跟进">
<el-table <el-table
:data="[]" :data="customerFollowList"
style="width: 100%" style="width: 100%"
> >
<el-table-column <el-table-column
...@@ -154,37 +154,37 @@ ...@@ -154,37 +154,37 @@
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="" prop="followType"
label="跟进类型" label="跟进类型"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="" prop="contactName"
label="联系人" label="联系人"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="" prop="followMethod"
label="跟进方式" label="跟进方式"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="" prop="followTime"
label="跟进时间" label="跟进时间"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="" prop="feedback"
label="客户反馈" label="客户反馈"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="" prop="result"
label="处理结果" label="处理结果"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="" prop="followUserId"
label="跟进业务" label="跟进业务"
> >
</el-table-column> </el-table-column>
...@@ -285,6 +285,70 @@ ...@@ -285,6 +285,70 @@
</el-col> </el-col>
</el-row> </el-row>
<el-dialog
title="客户跟进"
:visible.sync="customerFollow.dialogVisible"
:close-on-click-modal="false"
width="680px">
<el-form ref="customerFollowForm" :model="customerFollow.form" label-width="80px">
<el-row :gutter="10">
<el-col>
<el-form-item label="跟进类型" required>
<dict-selector form-type="radio" v-model="customerFollow.form.followType" :type="DICT_TYPE.CUSTOMER_FOLLOW_TYPE"></dict-selector>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="跟进时间" required>
<el-date-picker v-model="customerFollow.form.followTime" type="datetime" placeholder="选择跟进时间"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系人" required>
<el-select v-model="customerFollow.form.contactName" placeholder="请选择">
<el-option
v-for="item in customerContactsList"
:key="item.name"
:label="item.name"
:value="item.name">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="跟进业务" required>
<el-select v-model="customerFollow.form.followUserId" placeholder="请选择">
<el-option
v-for="item in serviceUserList"
:key="item.id"
:label="item.nickname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="跟进方式" required>
<dict-selector v-model="customerFollow.form.followMethod" :type="DICT_TYPE.CUSTOMER_FOLLOW_METHOD"></dict-selector>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="客户反馈" required>
<el-input type="textarea" v-model="customerFollow.form.feedback"></el-input>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="处理结果" required>
<el-input type="textarea" v-model="customerFollow.form.result"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="customerFollow.dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="customerFollowSubmit">确 定</el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
...@@ -293,12 +357,19 @@ import { getCustomer } from '@/api/ecw/customer' ...@@ -293,12 +357,19 @@ import { getCustomer } from '@/api/ecw/customer'
import { DICT_TYPE, getDictDataLabel } from '@/utils/dict' import { DICT_TYPE, getDictDataLabel } from '@/utils/dict'
import { getProductTypeList } from '@/api/ecw/productType' import { getProductTypeList } from '@/api/ecw/productType'
import { getNodeList } from '@/api/ecw/node' import { getNodeList } from '@/api/ecw/node'
import DictSelector from "../../../components/DictSelector"
import {getCustomerContactsList} from "../../../api/ecw/customerContacts"
import {listServiceUser} from "../../../api/system/user"
import {createCustomerFollow, getCustomerFollowPage} from "../../../api/ecw/customerFollow"
export default { export default {
name: 'query', name: 'query',
props: { props: {
customerId: String customerId: String
}, },
components: {
DictSelector
},
created() { created() {
getNodeList().then(r => { getNodeList().then(r => {
this.nodeList = r.data this.nodeList = r.data
...@@ -309,6 +380,16 @@ export default { ...@@ -309,6 +380,16 @@ export default {
getProductTypeList().then(r => { getProductTypeList().then(r => {
this.productTypeList = r.data this.productTypeList = r.data
}) })
this.resetCustomerFollowForm()
getCustomerContactsList().then(r => {
// todo 接口不对,分页了
this.customerContactsList = r.data.list
})
listServiceUser().then(r => {
this.serviceUserList = r.data
})
this.getCustomerFollowList()
}, },
data() { data() {
return { return {
...@@ -316,6 +397,9 @@ export default { ...@@ -316,6 +397,9 @@ export default {
getDictDataLabel, getDictDataLabel,
nodeList: [], nodeList: [],
productTypeList: [], productTypeList: [],
customerContactsList: [],
serviceUserList: [],
customerFollowList: [],
customer: { customer: {
id: undefined, id: undefined,
number: undefined, number: undefined,
...@@ -353,11 +437,47 @@ export default { ...@@ -353,11 +437,47 @@ export default {
arrivalConfirm: undefined, arrivalConfirm: undefined,
weightUnit: undefined, weightUnit: undefined,
createTime: undefined createTime: undefined
} },
customerFollow: {
dialogVisible: true,
form: {}
},
} }
}, },
methods: { methods: {
customerFollowSubmit() {
this.$refs["customerFollowForm"].validate(valid => {
if (!valid) {
return
}
createCustomerFollow(this.customerFollow.form).then(r => {
this.resetCustomerFollowForm()
this.getCustomerFollowList()
this.customerFollow.dialogVisible = false
})
})
},
resetCustomerFollowForm() {
this.customerFollow.form = {
"bizId": this.customerId,
"contactName": undefined,
"feedback": undefined,
"followMethod": undefined,
"followTime": undefined,
"followType": undefined,
"followUserId": undefined,
"result": undefined
}
},
getCustomerFollowList() {
getCustomerFollowPage({bizId: this.customerId}).then(r => {
this.customerFollowList = r.data.list
})
}
}, },
computed: { computed: {
productType(){ productType(){
......
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