2025-02-13 09:08:15 +08:00

327 lines
12 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div>
<el-dialog :title="visiblemediatRecordObj == null ?'新增调解记录':'编辑调解记录'" :visible="true" class="kk-dialog-class"
:modal="false" width="880px" append-to-body :close-on-click-modal="false"
@close="handleClose" v-drag>
<div class="dialog-content dialog-mr-batch">
<div class="p-16">
<div class="flex-column">
<span class="f16 f-weight500" v-if="mrObj.linkedType == 2">沟通类型</span>
<div class="mt-8" v-if="mrObj.linkedType == 2">
<el-radio-group v-model="mrObj.linkedWay">
<el-radio :label="1">电话</el-radio>
<el-radio :label="2">视频</el-radio>
<el-radio :label="3">微信</el-radio>
</el-radio-group>
</div>
<span v-if="mrObj.linkedType == 2" class="f16 f-weight500 mt-8">沟通时间</span>
<div v-if="mrObj.linkedType == 2" class="mt-8 flex-row">
<el-date-picker size="small" style="width: 200px;"
:clearable="false"
v-model="mrObj.linkedTime"
type="datetime"
placeholder="选择沟通时间"
value-format="yyyy-MM-dd HH:mm:ss"
format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
<!-- <el-date-picker
v-model="value1"
type="datetime"
placeholder="选择日期时间">
</el-date-picker> -->
</div>
<span v-if="mrObj.linkedWay == 1" class="f16 f-weight500 mt-8">电话情况</span>
<div v-if="mrObj.linkedWay == 1" class="mt-8">
<el-radio-group v-model="mrObj.linkedSituation">
<el-radio :label="0">已接</el-radio>
<el-radio :label="1">未接</el-radio>
<el-radio :label="2">拒接</el-radio>
<el-radio :label="3">关机</el-radio>
<el-radio :label="8">空号</el-radio>
<el-radio :label="4">停机</el-radio>
<el-radio :label="9">设置</el-radio>
<el-radio :label="10">正在通话中</el-radio>
<el-radio :label="5">暂时无法接通</el-radio>
</el-radio-group>
</div>
<span v-if="mrObj.linkedType == 2" class="f16 f-weight500 mt-8">沟通对象</span>
<div v-if="mrObj.linkedType == 2" class="mt-8">
<el-select size="small" v-model="mrObj.linkedPerson" multiple :multiple-limit="(mrObj.linkedWay==1||mrObj.linkedWay==3) ? 1:6" placeholder="请选择沟通对象" class="width100">
<el-option
v-for="item in PersonData"
:key="item.id"
:label="item.name+'-'+item.phone"
:value="item.id">
</el-option>
</el-select>
</div>
<span class="f16 f-weight500 mt-8">沟通情况</span>
<div class="mt-8">
<el-radio-group v-model="mrObj.communicationSituation">
<el-radio v-for="(item,index) in CommunicationOptions" :key="index" :label="item.value">{{item.label}}</el-radio>
</el-radio-group>
</div>
<div class="mt-8">
<el-input type="textarea" :rows="2"
placeholder="请输入内容" v-model="mrObj.communicationRemarks" maxlength="100">
</el-input>
</div>
<span class="f16 f-weight500 mt-8">调解进度</span>
<div class="mt-8 mr—schedule">
<span :class="mrObj.mediateStatus == item.value ? 'active':''" v-for="(item,index) in materialTypeOptions" :key="index" @click="mrObj.mediateStatus = item.value">{{item.label}}</span>
</div>
<span class="f16 f-weight500 mt-8">下次跟进时间</span>
<div class="mt-8 flex-row">
<el-radio-group v-model="mrObj.timeType" class="pt-8 mr-16" @change="daysAfterDate" >
<el-radio :label="0">自定义</el-radio>
<el-radio :label="1">1天后</el-radio>
<el-radio :label="2">2天后</el-radio>
<el-radio :label="3">3天后</el-radio>
<el-radio :label="5">5天后</el-radio>
<el-radio :label="7">7天后</el-radio>
</el-radio-group>
<!-- <el-date-picker v-if="this.mrObj.timeType == 0" size="small" style="width: 150px;"
v-model="mrObj.nextFollowDate"
type="date"
placeholder="选择下次跟进时间"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd">
</el-date-picker> -->
<el-input-number v-if="this.mrObj.timeType == 0" v-model="mrObj.nextFollowDate" controls-position="right" size="small" :min="1" :max="100"></el-input-number>
</div>
<span class="f16 f-weight500 mt-8">录音或录像文件</span>
<div class="mt-8">
<upload-file :file-list="fileList" :max-count="5"
:show-file-name="false"
uploadName=""
accept=".mp3,.mp4,.jpg,.jpeg,.png"
:span="6"
:fileSize="50"
@handleUploadFile="handleUploadFile">
</upload-file>
</div>
</div>
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose()">取消</el-button>
<el-button type="primary" @click="handleSubmit()">完成</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import api from "@/services/caseManagement";
import contactPerson from "@/services/contactPerson";
export default {
components: {
uploadFile: () => import('@/components/uploadFile.vue'),//上传
},
props: {
visiblemediatRecordObj: {
type: Object,
default: () => {
return {}
},
},
caseId: {
type: String,
default: () => {
return ''
},
},
},
data() {
return {
CommunicationOptions:[{ label: '继续沟通', value: 4 },{ label: '一次性全部回款', value: 1 },{ label: '全部分期', value: 2 },
{ label: '部分还款', value: 3 },{ label: '拒绝沟通', value: 5 }],
materialTypeOptions: this.$util.getMediationprogress(),
mrObj: {
id:'',
timeType:0,
caseId:'',//案件id
linkedWay:1,//联系方式1电话 2视频 3微信
linkedType:2,//联系类型1线上 2线下
linkedPerson:[],//联系人
linkedSituation:0,//联系情况
communicationSituation:4,//沟通情况
communicationRemarks:'',//沟通备注
mediateStatus:'',//调解状态
linkedTime:'',//联系时间
linkedDuration:'',//时长
callWay:'',//拨打方式 0 呼入 1 呼出
callStartTime:'',//拨打开始时间
callEndTime:'',//拨打结束时间
nextFollowDate:1,//下次跟进时间
files:[],//文件
},
fileList: [],
PersonData:[],
};
},
mounted() {
if(this.visiblemediatRecordObj != null)
{
this.mrObj.id = this.visiblemediatRecordObj.id
this.mrObj.linkedWay = this.visiblemediatRecordObj.linkedWay
this.mrObj.linkedType = this.visiblemediatRecordObj.linkedType
this.mrObj.linkedSituation = this.visiblemediatRecordObj.linkedSituation
if(this.visiblemediatRecordObj.communicationSituation!=null)
{
this.mrObj.communicationSituation = this.visiblemediatRecordObj.communicationSituation
}
this.mrObj.communicationRemarks = this.visiblemediatRecordObj.communicationRemarks
this.mrObj.mediateStatus = this.visiblemediatRecordObj.mediateStatus
this.mrObj.linkedTime = this.visiblemediatRecordObj.linkedTime
this.mrObj.linkedDuration = this.visiblemediatRecordObj.linkedDuration
this.mrObj.callWay = this.visiblemediatRecordObj.callWay
this.mrObj.callStartTime = this.visiblemediatRecordObj.callStartTime
this.mrObj.callEndTime = this.visiblemediatRecordObj.callEndTime
this.mrObj.nextFollowDate = this.visiblemediatRecordObj.nextFollowDate
this.mrObj.linkedPerson = this.visiblemediatRecordObj.linkedPerson
// console.log(this.visiblemediatRecordObj,'this.visiblemediatRecordObj')
this.visiblemediatRecordObj.files.forEach(item =>{
this.fileList.push({
url: item,
fileName: '文件',
})
})
}
if(this.mrObj.id == ''){
// 获取当前日期
let currentDate = new Date();
this.mrObj.linkedTime = this.$util.getDatetimeValue(currentDate);
}
this.getList()
},
methods: {
// 列表数据
getList() {
let dataJson = {
size: 9999,
current: 1,
caseId: this.caseId
}
contactPerson.debtorPage(dataJson).then(res => {
if (!res.code) {
this.PersonData = res.records.map((item) => {
let surname = item.name.split('')[0];
return {
...item,
surname: surname
}
});
}
contactPerson.agentPage(dataJson).then(res => {
if (!res.code) {
let PersonAgent = res.records.map((item) => {
let surname = item.name.split('')[0];
return {
...item,
surname: surname
}
});
if(PersonAgent.length > 0)
{
PersonAgent.forEach(item => {
this.PersonData.push(item)
});
}
}
})
})
},
daysAfterDate() {
if(this.mrObj.timeType == 0){this.mrObj.nextFollowDate = 1 ;}
else{this.mrObj.nextFollowDate = this.mrObj.timeType ;}
// 获取当前日期
// let currentDate = new Date();
// // 获取昨天的日期
// const nextDate = currentDate
// currentDate.setDate(currentDate.getDate() + this.mrObj.timeType)
// const year = nextDate.getFullYear();
// const month = (nextDate.getMonth() + 1).toString().padStart(2, '0');
// const day = nextDate.getDate().toString().padStart(2, '0');
// this.mrObj.nextFollowDate = year +'-'+ month +'-'+ day;
},
handleUploadFile(fileList){
console.log('获取上传文件信息',fileList)
fileList = JSON.parse(JSON.stringify(fileList))
this.fileList = fileList.map((item,i) => {
return {
url: item.url,
fileName: item.fileName,
previewUrl:item.previewUrl,
objectName: item.objectName
}
})
console.log(this.fileList ,'fileListfileListfileList')
},
handleClose() {
this.$emit('update:visiblemediatRecord', false)
},
handleSubmit() {
if(!this.$clickThrottle()) { return }//防止重复点击
if(this.mrObj.linkedPerson.length == 0)
{
this.$message.warning("请选择沟通对象");
return false
}
this.mrObj.caseId = this.caseId
this.fileList.forEach(item =>{
this.mrObj.files.push(item.url)
})
api.mediate_record_save(this.mrObj).then(res => {
this.$parent.getmediate_record()
this.handleClose()
this.$message.success("新增调解记录成功");
})
}
}
};
</script>
<style scoped lang="scss">
.dialog-mr-batch{
.mrschedule{
span{
border: solid 1px #E5E6EB;
padding: 5px 15px;
margin-right: 10px;
border-radius: 2px;
margin-top: 5px;
margin-bottom: 5px;
display: inline-block;
cursor: pointer;
}
span.active{
color: #BC6F60;
border: solid 1px #BC6F60;
}
}
}
</style>
<style lang="scss">
.kk-dialog-class {
pointer-events: none;
.el-dialog {
pointer-events: auto;
}
}
</style>