Commit 80cf9d04 authored by feifei's avatar feifei

天思催记

parent 726a87d6
<template>
<el-dialog class="client-data-dialog" title="反馈新增" :visible.sync="visible" :before-close="handleClose">
<el-dialog class="client-data-dialog" title="客服反馈新增" :visible.sync="visible" :before-close="handleClose">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="80px" class="demo-ruleForm">
<el-form-item label="功能点" prop="pointName">
<el-select v-model="ruleForm.pointName" label="功能点" placeholder="请选择" style="width:80%">
<el-form-item label="反馈类型" prop="feedType">
<el-select v-model="ruleForm.feedType" label="反馈类型" placeholder="请选择" style="width:80%">
<el-option
v-for="item in optionsCustomer"
v-for="item in optionsFeedType"
:key="item.value"
:label="item.label"
:value="item.value">
......@@ -12,25 +12,19 @@
</el-select>
</el-form-item >
<el-form-item label="问题标题" prop="pointTitle">
<el-input v-model="ruleForm.pointTitle" placeholder="请输入内容"></el-input>
</el-form-item>
<el-form-item label="问题描述" prop="problemDescription">
<el-form-item label="反馈描述" prop="feedContent">
<el-input
type="textarea"
:rows="2"
placeholder="请输入内容"
v-model="ruleForm.problemDescription" style="width:80%">
placeholder="请输入反馈内容"
v-model="ruleForm.feedContent" style="width:80%">
</el-input>
</el-form-item>
<el-form-item label="状态" prop="pointStatus">
<el-select v-model="ruleForm.pointStatus" label="功能点" placeholder="下拉选择">
<el-form-item label="反馈状态" prop="feedStatus">
<el-select v-model="ruleForm.feedStatus" label="反馈状态" placeholder="请选择">
<el-option
v-for="item in options"
v-for="item in optionsStatus"
:key="item.value"
:label="item.label"
:value="item.value">
......@@ -38,17 +32,8 @@
</el-select>
</el-form-item>
<el-form-item label="解决方式" prop="pointSolve">
<el-input
type="textarea"
:rows="2"
placeholder="请输入内容"
v-model="ruleForm.pointSolve" style="width:80%">
</el-input>
</el-form-item>
<el-form-item label="创建人" prop="creator">
<p>{{this.ruleForm.creator}}</p>
<el-form-item label="创建人" prop="creater">
<p>{{this.ruleForm.creater}}</p>
</el-form-item>
</el-form>
......@@ -75,25 +60,20 @@
},
data() {
/*请选择功能点*/
var validatepointFeatures = (rule, value, callback) => {
var validatefeedType = (rule, value, callback) => {
if (!value) {
return callback(new Error('请选择功能点'));
return callback(new Error('请选择反馈类型'));
}
};
/*请输入问题描述*/
var validateqdescription = (rule, value, callback) => {
var validatefeedStatus = (rule, value, callback) => {
if (!value) {
return callback(new Error('请输入问题描述'));
return callback(new Error('请选择反馈结果'));
}
};
var validatestatus = (rule, value, callback) => {
var validatefeedContent = (rule, value, callback) => {
if (!value) {
return callback(new Error('请输入问题描述'));
}
};
var validatesolve = (rule, value, callback) => {
if (!value) {
return callback(new Error('请输入问题描述'));
return callback(new Error('请输入反馈问题描述'));
}
};
return {
......@@ -101,81 +81,87 @@
submitLoading: false
},
visible: this.$props.dialogVisible,
operat: [],
restaurants: [],
loanoptions: [],
state: '',
ruleForm: {
pointName: '',
pointTitle: '',
feedType: '',
feedStatus: '',
feedContent: '',
clientNo: '',
problemDescription:'',
pointStatus:'FOLLOWEDUP',
pointSolve:'',
creator: ''
creater: ''
},
rules: {
pointName: [
{ validator: validatepointFeatures, trigger: 'blur' }
],
problemDescription: [
{ validator: validateqdescription, trigger: 'blur' }
feedType: [
{ required: true,message: "请选择反馈类型", trigger: 'blur' }
],
pointStatus: [
{ validator: validatestatus, trigger: 'blur' }
feedStatus: [
{ required: true,message: '请选择反馈结果', trigger: 'blur' }
],
pointSolve: [
{ validator: validatesolve, trigger: 'blur' }
feedContent: [
{ required: true,message: '请输入反馈问题描述', trigger: 'blur' }
]
},
options: [{
value: 'FOLLOWEDUP',
label: '待跟进'
}, {
value: 'FOLLOWEDING',
label: '跟进中'
}, {
value: 'FINISHED',
optionsStatus: [
{
value: 'YES',
label: '已解决'
}],
optionsCustomer: [{
},
{
value: 'NO',
label: '未解决'
}
],
optionsFeedType: [
{
value: '内部投诉',
label: '内部投诉'
}, {
},
{
value: '还款问题',
label: '还款问题'
}, {
},
{
value: '系统问题',
label: '系统问题'
}, {
},
{
value: '借款咨询',
label: '借款咨询'
}, {
},
{
value: '账户问题',
label: '账户问题'
}, {
},
{
value: '银行卡签约问题',
label: '银行卡签约问题'
},
{
value: '其它',
label: '其它'
}],
}
],
}
},
created() {
this.ruleForm = {
clientNo: this.clientNo,
creator: localStorage.getItem("userName"),
creater: localStorage.getItem("userName"),
}
},
methods: {
/** 提交点击 */
submitForm(formName) {
this.$$post('/customer/addQuestion', {
creator : localStorage.getItem("userName"),
pointName: this.ruleForm.pointName,
problemDescription : this.ruleForm.problemDescription ,
pointSolve: this.ruleForm.pointSolve,
pointStatus : this.ruleForm.pointStatus ,
pointTitle: this.ruleForm.pointTitle,
submitForm() {
this.$refs['ruleForm'].validate((valid) => {
if (!valid) {
return false
}
this.$$post('/feed/createClientFeed', {
creater: localStorage.getItem("userName"),
feedType: this.ruleForm.feedType,
feedSource: 'CUSTOMER',
feedStatus: this.ruleForm.feedStatus,
feedContent: this.ruleForm.feedContent,
clientNo: this.ruleForm.clientNo
})
.then(res => {
......@@ -183,22 +169,17 @@
this.$message.error(res.data.message);
return
}
this.$message({message: '新增成功', type: 'success'});
this.$message({message: '反馈问题新增成功', type: 'success'});
this.handleClose();
})
.catch(err => {
alert("error!")
})
})
},
createFilter(queryString) {
return (restaurant) => {
return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
};
},
handleIconClick(ev) {
console.log(ev);
},
/** 关闭处理 */
handleClose() {
......@@ -208,9 +189,8 @@
}, 300);
}
},
// mounted: function () {
// this.loadOperate();
// },
}
</script>
......
......@@ -211,6 +211,8 @@
query: {
clientNo: record.clientNo,
clientName: record.clientName,
clientProductName: record.productName,
phoneNo: record.clientCell,
clientCell: this.searchInfo.clientCell,
certNo: this.searchInfo.certNo,
productName: this.searchInfo.productName,
......@@ -309,10 +311,6 @@
},
/** 处理分页操作*/
handleCurrentChange () {
this.loanApplyList = this.backedData()
},
}
}
......
......@@ -230,17 +230,18 @@
</el-collapse-item>
<el-collapse-item title="反馈问题记录" name="6">
<el-table :data="loanQuestionList" stripe style="width: 100%;">
<el-table-column prop="id" label="问题编号"></el-table-column>
<el-collapse-item title="客服反馈问题记录" name="6">
<el-table :data="customerFeedList" stripe style="width: 100%;">
<el-table-column prop="feedNo" label="客服反馈编号"></el-table-column>
<el-table-column prop="clientName" label="客户姓名"></el-table-column>
<el-table-column prop="clientCell" label="客户手机号"></el-table-column>
<el-table-column prop="feedType" label="反馈类型"></el-table-column>
<el-table-column prop="feedContent" label="反馈内容"></el-table-column>
<el-table-column prop="finishContent" label="处理意见"></el-table-column>
<el-table-column prop="feedStatus" label="状态" :formatter="serviceFormat"></el-table-column>
<el-table-column prop="creater" label="处理人"></el-table-column>
<el-table-column prop="gmtCreated" label="记录时间" :formatter="dateFormat"></el-table-column>
<el-table-column prop="creator" label="跟进人"></el-table-column>
<el-table-column prop="pointName" label="功能点"></el-table-column>
<el-table-column prop="pointTitle" label="问题标题"></el-table-column>
<el-table-column prop="problemDescription" label="问题描述"></el-table-column>
<el-table-column prop="pointSolve" label="解决方式"></el-table-column>
<el-table-column prop="pointStatus" label="状态" :formatter="serviceFormat"></el-table-column>
<el-table-column label="操作">
<template scope="scope">
<el-button type="text" size="small" @click="updateQueDialog(scope.row)">修改</el-button>
......@@ -249,12 +250,25 @@
</el-table>
</el-collapse-item>
<el-collapse-item title="操作日志" name="7">
<el-collapse-item title="催收记录" name="7">
<el-table :data="collectFeedList" stripe style="width: 100%;">
<el-table-column prop="collectContact.contactMobile" label="联系人手机号"></el-table-column>
<el-table-column prop="collectContact.contactName" label="联系人姓名" ></el-table-column>
<el-table-column prop="collectContact.contactRelation" label="联系人关系" ></el-table-column>
<el-table-column prop="collectContact.overdueDay" label="逾期天数"></el-table-column>
<el-table-column prop="collectContact.state" label="状态" :formatter="collectStatueFormat"></el-table-column>
<el-table-column prop="collectContact.created" label="联系时间" :formatter="collectDateFormat"></el-table-column>
<el-table-column prop="collectContact.resultType" label="结果" :formatter="collectResultFormat"></el-table-column>
<el-table-column prop="collectContact.callSeconds" label="语音时长" :formatter="formatSeconds"></el-table-column>
<el-table-column prop="collectContact.record" label="催记" ></el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item title="操作日志" name="8">
<el-table :data="loanLogCustom" stripe style="width: 100%;">
<!-- <el-table-column prop="id" label="操作人员"></el-table-column> -->
<el-table-column prop="typeStr" label="操作类型"></el-table-column>
<!-- <el-table-column prop="memo" label="操作结果"></el-table-column> -->
<el-table-column prop="gmtCreated" label="操作时间" :formatter="dateFormat"></el-table-column>
<el-table-column prop="memo" label="备注"></el-table-column>
</el-table>
......@@ -290,13 +304,12 @@
<!--修改窗口-->
<updateQueDialog
v-if="ui.updateQueDialog.visible"
:id="ui.updateQueDialog.id"
:pointName="ui.updateQueDialog.pointName"
:pointTitle="ui.updateQueDialog.pointTitle"
:problemDescription="ui.updateQueDialog.problemDescription"
:pointSolve="ui.updateQueDialog.pointSolve"
:pointStatus="ui.updateQueDialog.pointStatus"
:creator="ui.updateQueDialog.creator"
:feedNo="ui.updateQueDialog.feedNo"
:feedType="ui.updateQueDialog.feedType"
:feedStatus="ui.updateQueDialog.feedStatus"
:feedContent="ui.updateQueDialog.feedContent"
:creater="ui.updateQueDialog.creater"
:finishContent="ui.updateQueDialog.finishContent"
:dialogVisible.sync="ui.updateQueDialog.visible">
</updateQueDialog>
</template>
......@@ -371,14 +384,17 @@
flag: false,
isShow: true,
isNeedAudit: true,
activeNames: ['1', '2'],
activeNames: ['1', '2','7'],
page: {
current: 1,
size: 10,
total: 0
},
loanBackedList: [],
loanQuestionList: [],
customerFeedList: [],
collectFeedList: [{
collectContact:'',
}],
loanLogCustom: [],
loanResultLists: [],
ownerBank: [{
......@@ -407,7 +423,6 @@
frontFile: '',
backFile: '',
natureFile: '',
frontFile: '',
}],
loanApplyList: [{
planNo: '',
......@@ -418,7 +433,6 @@
planXi: '',
planDate: '',
status: '',
backedBen: '',
}],
companyInfo: [{
companyName: '',
......@@ -453,13 +467,13 @@
},
updateQueDialog: {
visible: false,
id: '',
pointName: '',
pointTitle: '',
problemDescription: '',
pointSolve: '',
creator: '',
pointStatus: ''
feedNo: '',
feedType: '',
feedStatus: '',
feedContent: '',
clientNo: '',
creater: '',
finishContent: '',
},
ownerBankBind: {
visible: false,
......@@ -510,7 +524,7 @@
},
created() {
this.backedData(this.$route.query.loanNo, this.$route.query.clientNo)
this.backedData(this.$route.query.phoneNo, this.$route.query.clientNo,this.$route.query.clientProductName)
},
methods: {
// 反馈弹窗
......@@ -577,11 +591,11 @@
},
/** 加载数据 */
backedData(loanNo, clientNo) {
this.loanDetail(loanNo, clientNo)
backedData(phoneNo, clientNo,clientProductName) {
this.loanDetail(phoneNo, clientNo,clientProductName)
},
loanDetail(loanNo, clientNo) {
loanDetail(phoneNo, clientNo,clientProductName) {
// 个人信息
this.$$get('/detail/client/' + clientNo).then(res => {
......@@ -613,21 +627,36 @@
});
// 请求当前的反馈问题/customer/getQuestionList/
this.$$get('/customer/getQuestionList/' + clientNo).then(res => {
this.$$post('/feed/feedList/',{clientNo:clientNo, feedSource:'CUSTOMER',feedProduct:clientProductName}).then(res => {
if (res.data.code != 200) {
// this.isShow = false;
this.$message.error(res.data.message);
return
} else {
if (res.data.result != null) {
this.loanQuestionList = res.data.result ? res.data.result : '';
this.customerFeedList = res.data.result ? res.data.result : '';
}
}
}).catch(error => {
this.$Message.error(error || '网络异常,请稍后。。。');
});
// 请求当前的反馈问题/customer/getQuestionList/
this.$$post('/feed/feedList/',{clientCell:phoneNo,feedProduct:'GXD',feedSource:'COLLECT'} ).then(res => {
if (res.data.code != 200) {
// this.isShow = false;
this.$message.error(res.data.message);
return
} else {
if (res.data.result != null) {
this.collectFeedList = res.data.result ? res.data.result : '';
}
}
}).catch(error => {
this.$Message.error(error || '网络异常,请稍后。。。');
});
this.$$post('/loan/getLoanListByClientNo/' + clientNo).then(res => {
if (res.data.code != 200) {
// this.isShow = false;
......@@ -702,21 +731,16 @@
this.ui.updateQueDialog = {
visible: true,
id: record.id,
pointName: record.pointName,
pointTitle: record.pointTitle,
pointStatus: record.pointStatus,
problemDescription: record.problemDescription,
pointSolve: record.pointSolve,
creator: record.creator,
feedNo: record.feedNo,
feedType: record.feedType,
feedStatus: record.feedStatus,
feedContent: record.feedContent,
clientNo: record.clientNo,
creater: record.creater,
finishContent: record.finishContent,
};
},
/*搜索条件*/
onSubmit() {
this.backedData();
},
dateFormatText: function (param) {
return moment(param).format("YYYY-MM-DD");
},
......@@ -782,6 +806,59 @@
}
return moment(date).format("YYYY-MM-DD HH:mm:ss")
},
/*日期*/
collectDateFormat: function (row, column) {
var date = row.collectContact.created;
if (date == undefined || date == null) {
return ''
}
return moment(date).format("YYYY-MM-DD HH:mm:ss")
},
collectStatueFormat: function (row, column) {
var status = row.collectContact.state;
if(status == null ||status == '' || status == undefined){
return ''
}
return this.$enumUtils.toMsg('CollectFeedStatue', status);
},
collectResultFormat: function (row, column) {
var resultType = row.collectContact.resultType;
if(resultType == null ||resultType == '' || resultType == undefined){
return ''
}
return this.$enumUtils.toMsg('CollectFeedResult', resultType);
},
formatSeconds: function (row, column) {
var callSeconds = row.collectContact.callSeconds;
if(callSeconds == null ||callSeconds == '' || callSeconds == undefined){
return ''
}
var theTime = parseInt(callSeconds);// 秒
var middle = 0;// 分
var hour = 0;// 小时
if (theTime > 60) {
middle = parseInt(theTime / 60);
theTime = parseInt(theTime % 60);
if (middle > 60) {
hour = parseInt(middle / 60);
middle = parseInt(middle % 60);
}
}
var result = "" + parseInt(theTime) + "秒";
if (middle > 0) {
result = "" + parseInt(middle) + "分" + result;
}
if (hour > 0) {
result = "" + parseInt(hour) + "小时" + result;
}
return result;
},
// 计算已还金额
planMoneyFormat: function (row, column) {
return this.accAdd(this.accAdd(row.backedBen, row.backedFu), row.backedXi).toFixed(2)
......@@ -815,8 +892,8 @@
//客服状态
serviceFormat: function (row, column) {
var status = row['pointStatus'];
return this.$enumUtils.toMsg('ServiceStatus', status);
var status = row['feedStatus'];
return this.$enumUtils.toMsg('FeedStatus', status);
},
//结果状态
......@@ -830,11 +907,6 @@
},
/** 处理分页操作*/
handleCurrentChange() {
this.loanBackedList = this.backedData()
},
}
}
......
......@@ -28,17 +28,24 @@
</el-form-item>
<el-form-item label="反馈时间:">
<el-date-picker v-model="searchInfo.gmtCreated" type="daterange" range-separator="至"
<el-date-picker v-model="searchInfo.gmtStartTime" type="daterange" range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期" :clearable="false"></el-date-picker>
</el-form-item>
<el-form-item label="产品名称">
<el-select clearable v-model="searchInfo.productName" >
<el-select clearable v-model="searchInfo.feedProduct" >
<el-option v-for="item in this.$enumUtils.toValue('BusinessType')" :key="item.value"
:label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<!--<el-form-item label="反馈来源">
<el-select clearable v-model="searchInfo.feedSource" >
<el-option v-for="item in this.$enumUtils.toValue('FeedSourceType')" :key="item.value"
:label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>-->
<div class="btn">
<el-button @click="reset" type="primary">重置</el-button>
<el-button @click="querySearchRemind" type="primary">查询</el-button>
......@@ -66,7 +73,8 @@
<el-table-column prop="clientCell" label="手机号" ></el-table-column>
<el-table-column prop="gmtCreated" label="反馈时间" :formatter="dateFormat" ></el-table-column>
<el-table-column prop="feedType" label="反馈类型" ></el-table-column>
<el-table-column prop="productName" label="产品名称" :formatter="productNameFormat" ></el-table-column>
<el-table-column prop="feedProduct" label="产品名称" :formatter="productNameFormat" ></el-table-column>
<el-table-column prop="feedSource" label="来源" :formatter="feedSourceFormat" ></el-table-column>
<el-table-column prop="feedStatus" label="解决状态" ></el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
......@@ -115,13 +123,14 @@
},
activeName: '',
searchInfo: {
gmtCreated: [],
gmtStartTime: [],
feedNo: '',
//feedSource: '',
clientName: '',
clientCell: '',
feedType : '',
feedStatus:'',
productName:'',
feedProduct:'',
},
tablePlanRemindData: [],
record: '',
......@@ -158,12 +167,12 @@
/** 加载数据 */
remindData (params) {
var listsData = [];
this.$$post('/feed/pageList', this.buildParam()).then(res => {
this.$$post('/feed/feedPageList', this.buildParam()).then(res => {
if (res.data.code != 200) {
this.$message.error(res.data.message);
return
}
listsData = res.data.result.data;
listsData = res.data.result.records;
this.tablePlanRemindData = listsData;
this.page.total = res.data.result.total;
......@@ -201,7 +210,7 @@
inputErrorMessage: '内容不能为空'
}).then(({ value }) => {
// 获取输入的意见 value
this.$$post('/feed/updateStatus', this.buildParamRaise(record,value)).then(res => {
this.$$post('/feed/updateFeedStatus', this.buildParamRaise(record,value)).then(res => {
if (res.data.code != 200) {
this.$message.error(res.data.message);
return
......@@ -227,10 +236,16 @@
//产品名称
productNameFormat: function (row, column) {
var status = row['productName'];
var status = row['feedProduct'];
return this.$enumUtils.toMsg('BusinessType', status);
},
//反馈来源
feedSourceFormat: function (row, column) {
var status = row['feedSource'];
return this.$enumUtils.toMsg('FeedSourceType', status);
},
//参数
buildParam () {
var return_hash = {
......@@ -254,18 +269,20 @@
if (this.searchInfo.feedStatus != '') {
return_hash['feedStatus'] = this.searchInfo.feedStatus
}
if (this.searchInfo.productName != '') {
return_hash['productName'] = this.searchInfo.productName
if (this.searchInfo.feedProduct != '') {
return_hash['feedProduct'] = this.searchInfo.feedProduct
}
if (this.searchInfo.gmtCreated != null && this.searchInfo.gmtCreated.length>0) {
var  end = new Date(this.searchInfo.gmtCreated[1])
if (this.searchInfo.feedSource != '') {
return_hash['feedSource'] = 'APP'
}
if (this.searchInfo.gmtStartTime != null && this.searchInfo.gmtStartTime.length>0) {
var  end = new Date(this.searchInfo.gmtStartTime[1])
          end=end.setDate(end.getDate()+1);
          end=new Date(end);
          return_hash['gmtCreated'] = this.searchInfo.gmtCreated[0];
          return_hash['gmtTimeEnd'] = end
          return_hash['gmtStartTime'] = this.searchInfo.gmtStartTime[0];
          return_hash['gmtEndTime'] = end
}
......@@ -302,8 +319,9 @@
this.searchInfo.clientCell = '';
this.searchInfo.feedType = '';
this.searchInfo.feedStatus = '';
this.searchInfo.gmtCreated = '';
this.searchInfo.gmtStartTime = '';
this.searchInfo.productName = '';
this.searchInfo.feedSource = '';
},
/** 处理分页操作*/
......
<template>
<el-dialog class="client-data-dialog" title="反馈问题修改" :visible.sync="visible" :before-close="handleClose">
<el-dialog class="client-data-dialog" title="客服反馈问题修改" :visible.sync="visible" :before-close="handleClose">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="80px" class="demo-ruleForm">
<el-form-item label="功能点">
<el-select v-model="ruleForm.pointName" label="功能点" placeholder="请选择">
<el-form-item label="反馈类型" prop="feedType">
<el-select v-model="ruleForm.feedType" label="反馈类型" placeholder="请选择" :disabled="true" style="width:80%">
<el-option
v-for="item in optionsCustomer"
:key="item.code"
v-for="item in optionsFeedType"
:key="item.value"
:label="item.label"
:value="item.value" >
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-form-item >
<el-form-item label="创建人" prop="creator">
<el-col :span="18">
<el-input v-model="ruleForm.creator" :disabled="true"></el-input>
</el-col>
</el-form-item>
<el-form-item label="问题标题" prop="pointTitle">
<el-col :span="18">
<el-input v-model="ruleForm.pointTitle" :disabled="true"></el-input>
</el-col>
</el-form-item>
<el-form-item label="问题描述" prop="problemDescription">
<el-form-item label="反馈描述" prop="feedContent">
<el-input
type="textarea"
:rows="2"
placeholder="请输入反馈内容"
v-model="ruleForm.feedContent" :disabled="true" style="width:80%">
</el-input>
</el-form-item>
<el-form-item label="处理意见" prop="feedContent">
<el-input
type="textarea"
:rows="2"
placeholder="请输入内容"
v-model="ruleForm.problemDescription" style="width:60%">
placeholder="请输入处理意见"
v-model="ruleForm.finishContent" style="width:80%">
</el-input>
</el-form-item>
<el-form-item label="状态">
<el-select v-model="ruleForm.pointStatus" label="状态" placeholder="请选择">
<el-form-item label="反馈状态" prop="feedStatus">
<el-select v-model="ruleForm.feedStatus" label="反馈状态" placeholder="请选择">
<el-option
v-for="item in operatStatus"
v-for="item in optionsStatus"
:key="item.value"
:label="item.label"
:value="item.value">
......@@ -45,14 +44,12 @@
</el-select>
</el-form-item>
<el-form-item label="解决方式" prop="pointSolve">
<el-input
type="textarea"
:rows="2"
placeholder="请输入内容"
v-model="ruleForm.pointSolve" style="width:60%">
</el-input>
<el-form-item label="创建人" prop="creater">
<el-col :span="18">
<el-input v-model="ruleForm.creater" :disabled="true"></el-input>
</el-col>
</el-form-item>
</el-form>
<div slot="footer">
<el-button @click="handleClose">取 消</el-button>
......@@ -70,173 +67,132 @@
type: Boolean,
required: true
},
pointName: {
feedNo: {
type: String
},
pointTitle: {
feedType: {
type: String
},
problemDescription: {
feedStatus: {
type: String
},
pointSolve: {
feedContent: {
type: String
},
id: {
type: Number
},
creator: {
creater: {
type: String
},
pointStatus: {
finishContent: {
type: String
},
},
data() {
/*请选择功能点*/
var validatepointFeatures = (rule, value, callback) => {
if (!value) {
return callback(new Error('请选择功能点'));
}
};
/*请输入问题标题*/
var validateqtitle = (rule, value, callback) => {
if (!value) {
return callback(new Error('请输入问题标题'));
}
};
/*请输入问题描述*/
var validateqdescription = (rule, value, callback) => {
if (!value) {
return callback(new Error('请输入问题描述'));
}
};
var validatesolve = (rule, value, callback) => {
if (!value) {
return callback(new Error('请输入解决方式'));
}
};
var validatenumber = (rule, value, callback) => {
if (!value) {
return callback(new Error('id不能为空'));
}
};
var validatestatus = (rule, value, callback) => {
if (!value) {
return callback(new Error('状态值有问题'));
}
};
var validatecode = (rule, value, callback) => {
if (!value) {
return callback(new Error('状态值有问题'));
}
};
return {
ui: {
submitLoading: false
},
visible: this.$props.dialogVisible,
operat: [],
operatStatus: [{
value: 'FOLLOWEDUP',
label: '待跟进'
}, {
value: 'FOLLOWEDING',
label: '跟进中'
}, {
value: 'FINISHED',
optionsStatus: [
{
value: 'YES',
label: '已解决'
}],
ruleForm: {
pointTitle: '',
problemDescription:'',
pointStatus:'FOLLOWEDUP',
pointSolve:'',
id:'',
},
rules: {
pointName: [
{ validator: validatepointFeatures, trigger: 'blur' }
],
pointTitle: [
{ validator: validateqtitle, trigger: 'blur' }
],
problemDescription: [
{ validator: validateqdescription, trigger: 'blur' }
],
pointSolve: [
{ validator: validatesolve, trigger: 'blur' }
],
pointStatus: [
{ validator: validatestatus, trigger: 'blur' }
{
value: 'NO',
label: '未解决'
}
],
},
optionsCustomer: [{
optionsFeedType: [
{
value: '内部投诉',
label: '内部投诉'
}, {
},
{
value: '还款问题',
label: '还款问题'
}, {
},
{
value: '系统问题',
label: '系统问题'
}, {
},
{
value: '借款咨询',
label: '借款咨询'
}, {
},
{
value: '账户问题',
label: '账户问题'
}, {
},
{
value: '银行卡签约问题',
label: '银行卡签约问题'
},
{
value: '其它',
label: '其它'
}],
}
],
ruleForm: {
feedNo: '',
feedType: '',
feedStatus: '',
feedContent: '',
clientNo: '',
creater: '',
finishContent: '',
},
customerFeedList:[],
rules: {
finishContent: [
{ required: true,message: "请输入处理意见", trigger: 'blur' }
],
feedStatus: [
{ required: true,message: '请选择反馈结果', trigger: 'blur' }
],
},
}
},
created() {
console.log(this)
console.log(3454545)
this.ruleForm = {
dialogVisible: this.dialogVisible,
id: this.id,
creator: this.creator,
pointName: this.pointName,
pointTitle: this.pointTitle,
problemDescription: this.problemDescription,
pointSolve: this.pointSolve,
pointStatus: this.pointStatus,
feedNo: this.feedNo,
feedType: this.feedType,
feedStatus: this.feedStatus,
feedContent: this.feedContent,
finishContent: this.finishContent,
creater: this.creater,
}
},
methods: {
/** 提交点击 */
async submitClick(formName) {
this.$$post('/customer/editQuestion', {
id: this.ruleForm.id,
submitClick() {
this.$$post('/feed/updateFeedStatus', {
feedNo: this.ruleForm.feedNo,
dialogVisible: this.ruleForm.dialogVisible,
pointStatus: this.ruleForm.pointStatus,
pointName: this.ruleForm.pointName,
creator: this.ruleForm.creator,
pointTitle: this.ruleForm.pointTitle,
pointSolve: this.ruleForm.pointSolve,
problemDescription: this.ruleForm.problemDescription,
clientNo: localStorage.getItem("clientNo")
})
.then(res => {
feedStatus: this.ruleForm.feedStatus,
finishContent: this.ruleForm.finishContent,
creater: this.ruleForm.creater,
}).then(res => {
if (res.data.code != 200) {
this.$message.error(res.data.msg);
return
}
this.$message({message: '修改成功', type: 'success'});
this.handleClose();
setTimeout(function () {
this.visible = false;
}, 500)
this.$message({message: '成功', type: 'success'});
window.location.reload();
})
.catch(err => {
alert("error!")
}).catch(error => {
this.$message.error("修改客服反馈信息失败");
})
},
......
......@@ -319,7 +319,7 @@ const enumUtils = {
/** 借条状态*/
enumOpts[0] = {
enumOpts[33] = {
enumName: 'LoanStatuEnums', values: [
{code: 'SUBMITED', message: '待审核'},
{code: 'AUDITED', message: '审核通过'},
......@@ -330,6 +330,67 @@ const enumUtils = {
]
};
/** 借条状态*/
enumOpts[34] = {
enumName: 'FeedStatus', values: [
{code: 'NO', message: '未解决'},
{code: 'YES', message: '已解决'},
]
};
/** 借条状态*/
enumOpts[35] = {
enumName: 'FeedSourceType', values: [
{code: 'APP', message: 'APP客户反馈'},
{code: 'CUSTOMER', message: '客服人员'},
{code: 'COLLECT', message: '天思催收'},
]
};
/** 天思催收反馈状态*/
enumOpts[36] = {
enumName: 'CollectFeedStatue', values: [
{code: 'PROMISE_REPAYMENT', message: '承诺还款'},
{code: 'NEGOTIATING', message: '谈判中'},
{code: 'LOAN_CONNECT', message: '债可联'},
{code: 'family_CONNECT', message: '家属可联'},
{code: 'TP_CASE', message: '跳票案件'},
{code: 'LOSS_HALF', message: '半失联'},
{code: 'LOSS', message: '失联'},
{code: 'REFUSE_REPAYMENT', message: '拒绝还款'},
{code: 'CHECK_REPAY', message: '检查付款'},
{code: 'FIRST_FOLLOW', message: '初次跟进'},
{code: 'FIND', message: '查找'},
{code: 'OUT_CASE', message: '外访案件'},
{code: 'DISPUTED_CASE', message: '争议案件'},
{code: 'NEW_CASE', message: '新案'},
{code: 'TOTAL_BACK', message: '已结清'},
{code: 'AI_PROMISE_REPAYMENT_TODAY', message: '当天还款'},
{code: 'AI_PROMISE_REPAYMENT', message: '承诺还款'},
{code: 'AI_CALL_CONNECTED', message: '可以接通'},
{code: 'AI_CALL_FAIL', message: '外呼失败'},
{code: 'AI_RESPONSE_REPAYMENT_ALREADY', message: '反应已还'},
]
};
/** 天思催收结果*/
enumOpts[37] = {
enumName: 'CollectFeedResult', values: [
{code: 'NOT_CONTACTED', message: '未联系'},
{code: 'CONTACTED', message: '已联系'},
{code: 'USER_NOT_ANSWER', message: '未接听'},
{code: 'USER_ANSWER_CALL', message: '接听'},
{code: 'USER_CALL_BUSY', message: '占线'},
{code: 'USER_CALL_SHUTDOWN', message: '关机'},
{code: 'NO_BODY_FOR_THE_NUM', message: '号码已换人'},
{code: 'USER_CALL_STOP', message: '停机'},
{code: 'INVALID_PHONE_NUM', message: '空号'},
{code: 'CHANNEL_ERROR', message: '渠道异常'},
{code: 'SEARCHED', message: '已查找'},
{code: 'SMS_SEND', message: '短屏信已发'},
]
};
for (var enumOptNum in enumOpts) {
if (enumOpts[enumOptNum].enumName == enumName) {
for (var msgNum in enumOpts[enumOptNum].values) {
......@@ -524,6 +585,14 @@ const enumUtils = {
{value: '还款', label: '还款'},
{value: '借银行卡款', label: '银行卡'},
{value: '投诉', label: '投诉'},
{value: '还款问题', label: '还款问题'},
{value: '资料认证问题', label: '资料认证问题'},
{value: '内部投诉', label: '内部投诉'},
{value: '催收', label: '催收'},
{value: '系统问题', label: '系统问题'},
{value: '借款咨询', label: '借款咨询'},
{value: '账户问题', label: '账户问题'},
{value: '银行卡签约问题', label: '银行卡签约问题'},
{value: '其他', label: '其他'},
]
};
......@@ -538,6 +607,15 @@ const enumUtils = {
]
};
// 产品名称
enumOpts[19] = {
enumName: 'FeedSourceType', values: [
{value: 'CUSTOMER', label: '客服人员'},
{value: 'APP', label: 'APP'},
{value: 'COLLECT', label: '催收'},
]
};
for (var enumOptNum in enumOpts) {
if (enumOpts[enumOptNum].enumName == enumName) {
return enumOpts[enumOptNum].values;
......
{
"name": "versiony",
"version": "5.7.3"
"version": "5.7.6"
}
\ No newline at end of file
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