Commit b77a794e authored by dcy's avatar dcy

我的客户列表投诉,跟进

parent 30260d7a
...@@ -62,7 +62,7 @@ export function exportCustomerExcel(query) { ...@@ -62,7 +62,7 @@ export function exportCustomerExcel(query) {
}) })
} }
// 待确认客户 // 待接收客户列表
export function getWaitForConfirmList(query) { export function getWaitForConfirmList(query) {
return request({ return request({
url: '/ecw/customer/get-wait-for-confirm', url: '/ecw/customer/get-wait-for-confirm',
...@@ -114,3 +114,22 @@ export function setFishing(query){ ...@@ -114,3 +114,22 @@ export function setFishing(query){
}) })
} }
//待分配 客户列表
export function getCustomerToBeAssigned(query){
return request(
{
url:'ecw/customer/get-wait-for-distribution',
method: 'get',
params: query
}
)
}
//我的客户列表
export function getMyCustomerService(query){
return request({
url:'/ecw/customer/get-mine',
method:'get',
params:query,
})
}
<template>
<div>
<el-dialog
append-to-body
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, index) in customerContactsList"
:key="index"
: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>
</template>
<script>
import {createCustomerFollow, getCustomerFollowPage} from "@/api/ecw/customerFollow"
import { DICT_TYPE, getDictDataLabel } from '@/utils/dict'
import { getCustomerContactsListByCustomer } from '@/api/ecw/customerContacts'
import {listServiceUser} from "@/api/system/user"
import { parseTime } from '@/utils/ruoyi'
export default {
/**
* 客户跟进
* 客户投诉跟进
*/
name: "CustomerFollow",
props: {
/**
* 如果是客户投诉跟进,则id为客户投诉id;如果是客户跟进,则id为客户id
*/
id: Number,
customerId: Number,
},
data() {
return {
DICT_TYPE,
getDictDataLabel,
parseTime,
customerFollowList: [],
serviceUserList: [],
customerContactsList: [],
customerFollow: {
dialogVisible: false,
form: {}
},
}
},
created() {
if (!!this.customerId) getCustomerContactsListByCustomer({customerId: this.customerId}).then(r => {
this.customerContactsList = r.data
})
listServiceUser().then(r => {
this.serviceUserList = r.data
})
},
methods: {
customerFollowSubmit() {
this.$refs["customerFollowForm"].validate(valid => {
if (!valid) {
return
}
createCustomerFollow(this.customerFollow.form).then(r => {
this.resetCustomerFollowForm()
this.customerFollow.dialogVisible = false
})
})
},
resetCustomerFollowForm() {
this.customerFollow.form = {
"bizId":undefined,
"contactName": undefined,
"feedback": undefined,
"followMethod": undefined,
"followTime": undefined,
"followType": undefined,
"followUserId": undefined,
"result": undefined
}
},
},
watch:{
customerId(val){
this.customerFollow.form.bizId = val;
if (!!this.customerId) getCustomerContactsListByCustomer({customerId: this.customerId}).then(r => {
this.customerContactsList = r.data
})
}
}
}
</script>
<style scoped>
</style>
<template>
<div class="app-container">
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="900px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="客户名称" prop="customerId">
<el-select v-model="form.customerId" placeholder="请选择客户名称" :disabled="!!customerId">
<el-option
v-for="item in customerSelect"
:key="item.id"
:label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="投诉类型" prop="type">
<el-select v-model="form.type" placeholder="请选择投诉类型">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_COMPLAINT_TYPE)"
:key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
</el-select>
</el-form-item>
<el-form-item label="订单号" prop="orderId">
<el-input v-model="form.orderId" placeholder="请输入订单号" />
</el-form-item>
<el-form-item label="提单号" prop="ladingbillId">
<el-input v-model="form.ladingbillId" placeholder="请输入提单号" />
</el-form-item>
<el-form-item label="投诉内容" prop="content">
<el-input v-model="form.content" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="处理状态" prop="status">
<el-select v-model="form.status" placeholder="请选择处理状态">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_COMPLAINT_STATUS)"
:key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
<el-dialog
title="提示"
:visible.sync="handle.dialogVisible"
width="30%"
>
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="投诉类型">
<dict-selector :type="DICT_TYPE.CUSTOMER_COMPLAINT_STATUS" form-type="radio" v-model="form.status"
:filter="(e) => e.value == '2' || e.value == '3'" :formatter="Number"></dict-selector>
</el-form-item>
<el-form-item v-show="form.status == '2'" label="查明原因" required>
<el-input type="textarea" placeholder="请输入查明原因" v-model="form.ascertainReason"></el-input>
</el-form-item>
<el-form-item v-show="form.status == '2'" label="处理方案">
<el-input v-model="form.plan" placeholder="请输入处理方案"></el-input>
</el-form-item>
<el-form-item v-show="form.status == '3'" label="处理结果" required>
<el-input type="textarea" placeholder="请输入处理结果" v-model="form.result"></el-input>
</el-form-item>
<el-form-item v-show="form.status == '3'" label="赔付金额">
<el-input v-model="form.indemnity" placeholder="请输入赔付金额">
<dict-selector
defaultable
style="width: 110px"
placeholder="请选择货币单位"
slot="append"
v-model="form.currencyUnit"
:type="DICT_TYPE.COMMISSION_CURRENCY_TYPE"></dict-selector>
</el-input>
</el-form-item>
<el-form-item v-show="form.status == '3'" label="处理时间" required>
<el-date-picker type="datetime" v-model="form.handleAt"></el-date-picker>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="handle.dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="submitForm">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { createCustomerComplaint, updateCustomerComplaint, deleteCustomerComplaint, getCustomerComplaint, getCustomerComplaintPage, exportCustomerComplaintExcel } from "@/api/ecw/customerComplaint";
import {getCustomerSelect} from '@/api/ecw/customer'
import DictSelector from '@/components/DictSelector'
import { DICT_TYPE } from '@/utils/dict'
export default {
name: "customerComplaints",
/**
* 可以单独作为页面,也可以作为组件被被客户详情页调用。
* 作为组件时要传入 customerId,用于限制范围和隐藏搜索筛选
*/
props: {
customerId: Number
},
components: {
DictSelector
},
data() {
return {
DICT_TYPE,
// 遮罩层
loading: true,
// 导出遮罩层
exportLoading: false,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 客户投诉列表
list: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
dateRangeCreateTime: [],
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
customerId: this.customerId,
type: null,
orderId: null,
ladingbillId: null,
status: null,
adminId: null,
code: null,
},
// 表单参数
form: {},
// 表单校验
rules: {
customerId: [{ required: true, message: "客户名称不能为空", trigger: "change" }],
},
myFollowCustomerList: [],
customerSelect: [],
// 处理
handle: {
dialogVisible: false
}
};
},
created() {
getCustomerSelect().then(r => {
this.customerSelect = r.data
})
},
methods: {
/** 查询列表 */
/** 取消按钮 */
cancel() {
this.open = false;
this.reset();
},
/** 表单重置 */
reset() {
this.form = {
id: undefined,
customerId: this.customerId,
type: undefined,
orderId: undefined,
ladingbillId: undefined,
content: undefined,
status: undefined,
ascertainReason: undefined,
plan: undefined,
result: undefined,
indemnity: undefined,
currencyUnit: undefined,
handleAt: undefined,
cancelReason: undefined,
};
this.resetForm("form");
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加客户投诉";
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (!valid) {
return;
}
// 修改的提交
if (this.form.id != null) {
updateCustomerComplaint(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.handle.dialogVisible = false
this.getList();
});
return;
}
// 添加的提交
createCustomerComplaint(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
});
},
},
};
</script>
...@@ -456,11 +456,12 @@ export default { ...@@ -456,11 +456,12 @@ export default {
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.reset();
const id = row.id; const id = row.id;
getCustomer(id).then(response => { this.$router.push('/customer/edit/'+id);
this.form = response.data; // getCustomer(id).then(response => {
this.open = true; // this.form = response.data;
this.title = "完善客户"; // this.open = true;
}); // this.title = "完善客户";
// });
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleConfirmService(row) { handleConfirmService(row) {
......
This diff is collapsed.
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