错误案件相关

This commit is contained in:
liuxi 2025-01-10 17:59:17 +08:00
parent 01c25d3106
commit 227d1d6fab
13 changed files with 257 additions and 1058 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1001 B

View File

@ -119,7 +119,7 @@ import api from "@/services/caseManagement";
}else if(tab.name == '7'){
repaymentDialog = {title:'还款计划',caseNo:'123'}
}else if(tab.name == '8'){
repaymentlogDialog = {title:'还款凭证',caseNo:'123'}
eventTraDialog = {title:'还款凭证',caseNo:'123'}
}else {
}

View File

@ -20,7 +20,7 @@
<el-row type="flex" align="middle" class="mt-16">
<el-col :span="24">
<el-form-item label="案件包名" prop="pkgName">
<el-select v-model="baseInfo.pkgid" placeholder="请选择案件包"
<el-select v-model="baseInfo.id" placeholder="请选择案件包"
class="width100" @change="pkgChange">
<el-option
v-for="item in CasepackageList"
@ -120,7 +120,7 @@ import apipk from "@/services/casePackageManagement";
data() {
return {
baseInfo:{
pkgid:'',
id:'',
pkgName:'',//
entrustingAgencyName:'',//
planStartTime:'',//
@ -159,7 +159,7 @@ import apipk from "@/services/casePackageManagement";
methods: {
pkgChange(){
let packitem = this.CasepackageList.find(item =>{
return this.baseInfo.pkgid == item.id
return this.baseInfo.id == item.id
})
this.baseInfo.pkgName = packitem.pkgName
this.baseInfo.entrustingAgencyName = packitem.entrustingAgencyName

View File

@ -12,12 +12,12 @@
<div class="f22 color-text-primary">筛选</div>
</div>
<el-collapse-transition>
<div v-show="showSearch">
<div>
<el-row :gutter="56">
<el-col :span="6">
<div class="flex-row-center align-items-center height-40 mb-24">
<span class="tabs__search-criteria-title flex-shrink-0 pr-16">案件包名称</span>
<el-select v-model="queryParam.pkgId" placeholder="请选择案件包"
<el-select v-model="queryParam.id" placeholder="请选择案件包"
class="width100" >
<el-option
v-for="item in CasepackageList"
@ -58,25 +58,31 @@
</div>
</div>
<div >
<el-table :data="tableData" :height="`${contentHeight}`" style="width: 100%"
@selection-change="handleSelectionChange">
<el-table-column type="index" label="序号" width="55"></el-table-column>
<!-- <el-table-column type="selection" width="55" ></el-table-column> -->
<el-table-column v-for="(item,index) in Error_headers" :key="index"
:prop="item.fieldKey" :label="item.name" show-overflow-tooltip min-width="180" ></el-table-column>
<!-- <el-table-column prop="entrustingAgencyName" label="委案机构" show-overflow-tooltip ></el-table-column>
<el-table-column prop="channel" label="被申请人姓名" show-overflow-tooltip ></el-table-column>
<el-table-column prop="channel" label="被申请人手机号码" show-overflow-tooltip ></el-table-column>
<el-table-column prop="months" label="身份证号码" show-overflow-tooltip ></el-table-column>
<el-table-column prop="caseTotal" label="金融产品名称" show-overflow-tooltip ></el-table-column>
<el-table-column prop="assignTotal" label="合同名称" show-overflow-tooltip ></el-table-column>
<el-table-column prop="assignTotal" label="委托时逾期天数" show-overflow-tooltip ></el-table-column>
<el-table-column prop="assignTotal" label="当前逾期金额" show-overflow-tooltip ></el-table-column> -->
</el-table>
</div>
<div :style="'height:'+`${contentHeight}`+'px;width: 100%;overflow: auto;'">
<div class="flex-column" :style="'width:'+ Error_headers.length * 170 +'px ;'">
<div class="error-header flex-row">
<span v-for="(item,index) in Error_headers" :key="index" class="f-weight500" style="color: #909399;">{{item.name}}</span>
</div>
<!-- {{tableData}} -->
<div class="error-cont flex-row" v-for="(item,index) in tableData" :key="index">
<span v-for="(item1,index) in item.fields" :key="index" style="color: #000;">
{{item1.fieldValue}}
<a v-if="item1.errorMsg" class="color-F53F3F">{{item1.errorMsg}}</a>
</span>
</div>
<!-- tableData -->
<!-- <el-table :data="tableData" :height="`${contentHeight}`" style="width: 100%"
@selection-change="handleSelectionChange">
<el-table-column type="index" label="序号" width="55"></el-table-column>
<el-table-column v-for="(item,index) in Error_headers" :key="index"
:prop="item.fieldKey" :label="item.name" show-overflow-tooltip min-width="180" ></el-table-column>
</el-table> -->
</div>
</div>
<div class="text-center pt-16">
<!-- <div class="text-center pt-16">
<el-pagination
@size-change="getCaseInfoList"
@current-change="getCaseInfoList"
@ -85,7 +91,7 @@
layout="total, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div> -->
</div>
</div>
@ -99,7 +105,6 @@ import cpkapi from "@/services/casePackageManagement";
export default {
components: {
importPackageDialog: () => import('./components/importPackageDialog'),//
},
data() {
return {
@ -107,19 +112,16 @@ import cpkapi from "@/services/casePackageManagement";
showSearch: true,
queryDate: '',
activeUsage: '',
mediateStatusData:[],//
financialProductsTypeOptions:[],//
departmentOptions:[],//
queryParam: {
pkgId:'',
id:'',
pkgName:'',//
entrustingAgencyName: '',//
endTime: '',//
beginTime:'',//
willEnd:'',
current:1,
size:10,
},
usageOption: ['今日','昨日', '近一周', '近一月', '近半年', '近一年'],
tableData: [],
@ -142,8 +144,7 @@ import cpkapi from "@/services/casePackageManagement";
// drawer
contentHeight(){
let oh = document.documentElement.clientHeight;
return oh-56-348
return oh-56-288
}
},
methods: {
@ -156,10 +157,9 @@ import cpkapi from "@/services/casePackageManagement";
if (!res.code) {
this.CasepackageList = res.records;
if(this.CasepackageList.length > 0){
this.queryParam.pkgId = this.CasepackageList[0].id
this.queryParam.id = this.CasepackageList[0].id
}
this.getCasepkgError_headers()
}
})
},
@ -172,12 +172,8 @@ import cpkapi from "@/services/casePackageManagement";
this.getCaseInfoList()
})
},
//
getCaseInfoList(val){
this.queryParam.planBegin = this.queryParam.beginTime
this.queryParam.planEnd = this.queryParam.endTime
this.queryParam.current = val
cpkapi.postcase_pkg_error_page(this.queryParam).then(res => {
if (!res.code) {
this.tableData = res.records;
@ -196,7 +192,8 @@ import cpkapi from "@/services/casePackageManagement";
if(!this.$clickThrottle()) { return }//
cpkapi.postcase_pkg_error_down(this.queryParam).then(res => {
this.$util.downloadFileByBlob(res, '错误案件列表.xlsx')
this.$util.downloadFileByUrl(res, '错误案件列表.xlsx')
})
},
handleDelete(){
@ -222,7 +219,21 @@ import cpkapi from "@/services/casePackageManagement";
}
}
</script>
<style scoped>
<style scoped lang="scss">
.error-header{
border-bottom: 1px solid #EBEEF5;
padding: 10px 0;
span{min-width: 150px;margin-right: 20px;}
}
.error-cont{
border-bottom: 1px solid #EBEEF5;
padding: 10px 0;
span{
min-width: 150px;
overflow: hidden;
margin-right: 20px;
}
}
.el-badge{
top: 3px;
}

View File

@ -125,7 +125,7 @@
v-for="item in MediateProgEnum"
:key="item.label"
:label="item.label"
:value="item.value">
:value="item.label">
</el-option>
</el-select>
</div>
@ -257,10 +257,10 @@
<a v-for="(item,index) in scope.row.debtorEntityList" :key="index">{{index == 0 ?'':','}}{{item.name}}</a>
</span>
<span class="case-lable">
<a class="case-status0">承诺客户</a>
<a :class="'case-status'+ $util.getMediationTypeData(scope.row.mediateStatus).key">{{$util.getMediationTypeData(scope.row.mediateStatus).label}}</a>
<a v-if="scope.row.mediateRecordstatus != undefined && scope.row.mediateRecordstatus != null" :class="'case-status'+ $util.getMediationprogressData(scope.row.mediateRecordstatus).key">{{$util.getMediationprogressData(scope.row.mediateRecordstatus).label}}</a>
<a class="case-status1">疑难客户</a>
<a class="case-status2">分期客户</a>
<a class="case-status3">已签署协议</a>
<a class="case-status0">协办</a>
</span>
</div>
@ -401,14 +401,9 @@ import { values } from "lodash";
//
PartCaseStatusEnum:[{label:'待分案',value:false},{label:'已分案',value:true}],
//
MediateProgEnum:[{label:'承诺账户',value:'承诺账户'},{label:'重点账户',value:'重点账户'},{label:'拒联账户',value:'拒联账户'},{label:'已结清客户',value:'已结清客户'},
{label:'疑难账户',value:'疑难账户'},{label:'失联账户',value:'失联账户'},{label:'半失联账户',value:'半失联账户'},{label:'部分还款账户',value:'部分还款账户'},
{label:'适诉案件',value:'适诉案件'},{label:'可联账户',value:'可联账户'},{label:'投诉倾向客户',value:'投诉倾向客户'},{label:'分期客户',value:'分期客户'},
{label:'其他/无标签',value:'其他/无标签'}
],
MediateProgEnum:this.$util.getMediationprogress(),
//
MediateStatusEnum:[{label:'未触达',value:0},{label:'调解中',value:1},{label:'已达成方案',value:2},
{label:'已签署协议',value:3},{label:'调解失败',value:4},{label:'调解成功',value:5}],
MediateStatusEnum:this.$util.getMediationType(),
FollowStatusEnum:[{label:'今日待跟进案件',value:1},{label:'超3天未跟进案件',value:3},{label:'超5天未跟进案件',value:5},
{label:'新案未跟进案件',value:0}],
showSearch: true,

View File

@ -1,937 +0,0 @@
<template>
<div style=" height: 100%;">
<div class="layout-center-wrap flex-column">
<!-- 上部数据 -->
<div class="layout-center-top-wrap flex-row justify-content-between">
<div class="top-wrap-title flex-row justify-content-between"></div>
<div class="top-wrap-btn-left flex-row justify-content-between">
<div class="flex-row justify-content-between align-items-center">
<el-button class="bg-F2F3F5" icon="el-icon-arrow-left" circle></el-button>
<div class="ml-16 mr-16 flex-row justify-content-between align-items-center">
<div class="mr-8 f16">程机票</div>
<div class="mr-8">
<el-tag size="small" type="warning">四川成都</el-tag>
</div>
<div class="mr-8 f16 color-FF7D00"><i class="el-icon-warning"></i></div>
<div class="f16 color-165DFF"><i class="el-icon-success"></i></div>
</div>
<el-button class="bg-F2F3F5" icon="el-icon-arrow-right" circle></el-button>
</div>
<el-button type="warning" icon="el-icon-message" circle></el-button>
<div class="wrap-btn-left-dial pl-22 pr-24 f14 flex-row justify-content-between">
<div class="mr-24 flex-row justify-content-between align-items-center">
<div class="mr-8 f16 color-F53F3F"><i class="el-icon-video-pause"></i></div>
<div class="mr-8">暂停拨打</div>
<div class="mr-8 f12 color-000">01:00</div>
<div class="mr-8 f20"><i class="el-icon-phone-outline"></i></div>
<div class="mr-8 f20"><i class="el-icon-microphone"></i></div>
<div class="mr-8 ai-logo-img"></div>
</div>
<div class="flex-row justify-content-between align-items-center f14">
<div class="flex-row justify-content-between align-items-center mr-24">
<div class="mr-8 f16"><i class="el-icon-s-operation"></i></div>
<div>队列 <span class="color-000">200</span></div>
</div>
<div class="mr-24">已拨打 <span class="color-000">200</span></div>
<div class="mr-24">已接通 <span class="color-000">200</span></div>
<div>未接通 <span class="color-000">200</span></div>
</div>
</div>
</div>
<div class="flex-row justify-content-between">
<el-button icon="el-icon-setting" circle></el-button>
<el-button icon="el-icon-switch-button" circle @click="handleBack"></el-button>
</div>
</div>
<!-- 中间数据 -->
<div class="layout-center-center-wrap flex-row justify-content-between">
<!-- 左边数据 -->
<div class="layout-center-left-wrap flex-row justify-content-between">
<div class="layout-center-left1-wrap flex-column justify-content-start">
<span class="left-rbobot">
<img src="../../../assets/image/mediate/m-info-robot.png"/>
</span>
<span class="separation"></span>
<span class="left-img-info flex-column" :class="leftActive == 1 ?'active':''" @click="leftActive = 1">
<img src="../../../assets/image/mediate/m-info1.png"/>
<a>基本信息</a>
</span>
<span class="left-img-info flex-column" :class="leftActive == 2 ?'active':''" @click="leftActive = 2">
<img src="../../../assets/image/mediate/m-info2.png"/>
<a>联系人</a>
</span>
<span class="left-img-info flex-column" :class="leftActive == 3 ?'active':''" @click="leftActive = 3">
<img src="../../../assets/image/mediate/m-info3.png"/>
<a>案件材料</a>
</span>
<span class="left-img-info flex-column" :class="leftActive == 4 ?'active':''" @click="leftActive = 4">
<img src="../../../assets/image/mediate/m-info4.png"/>
<a>案件文书</a>
</span>
<span class="left-img-info flex-column" :class="leftActive == 5 ?'active':''" @click="leftActive = 5">
<img src="../../../assets/image/mediate/m-info5.png"/>
<a>还款计划</a>
</span>
<span class="left-img-info flex-column" :class="leftActive == 6 ?'active':''" @click="leftActive = 6">
<img src="../../../assets/image/mediate/m-info6.png"/>
<a>还款凭证</a>
</span>
</div>
<div class="layout-center-left2-wrap">
<el-scrollbar :style="'height:'+`${leftContentHeight}`+'px'">
<!-- 债务信息 -->
<div v-if="leftActive == 1" class="case-debt-info">
<div class="descriptions-t">
<div class="f16 f-weight600 descriptions-t-title">基本信息</div>
<div class="flex-row descriptions-t-item">
<div class="descriptions-t-item-l color-86909C">金融产品名称:</div>
<div class="descriptions-t-item-r">微粒贷</div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">金融机构名称:</div>
<div class="descriptions-t-item-r">微众银行殷份有限公司</div>
</div>
<div class="flex-row descriptions-t-item">
<div class="descriptions-t-item-l color-86909C">合同名称:</div>
<div class="descriptions-t-item-r">贷款合同</div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">被申请人姓名:</div>
<div class="descriptions-t-item-r color-1960F4">陈继平</div>
</div>
<div class="flex-row descriptions-t-item">
<div class="descriptions-t-item-l color-86909C">被申请人手机号码:</div>
<div class="descriptions-t-item-r">134****9447</div>
</div>
</div>
<div class="case-debt-info-call flex-row justify-content-between align-items-center">
<div class="flex-row align-items-center cursor-pointer">
<div class="f32 color-1960F4 mr-8"><i class="el-icon-phone"></i></div>
<div>呼叫被申请人</div>
</div>
<el-divider direction="vertical"></el-divider>
<div class="flex-row align-items-center cursor-pointer">
<div class="f32 color-FF7D00 mr-8"><i class="el-icon-message"></i></div>
<div>发送短信</div>
</div>
</div>
<div class="descriptions-t mt-16">
<div class="f16 f-weight600 descriptions-t-title">债务信息</div>
<div class="flex-row descriptions-t-item">
<div class="descriptions-t-item-l color-86909C">当前逾期金额:</div>
<div class="descriptions-t-item-r">2000000</div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">欠款本金:</div>
<div class="descriptions-t-item-r color-F53F3F">1800000</div>
</div>
<div class="flex-row descriptions-t-item">
<div class="descriptions-t-item-l color-86909C">欠款利息:</div>
<div class="descriptions-t-item-r">2000000 <i class="f14 el-icon-warning-outline"></i></div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">月还款额:</div>
<div class="descriptions-t-item-r">6000</div>
</div>
</div>
</div>
<!-- 联系人信息 -->
<div v-if="leftActive == 2" class="case-contact-person">
<contactPerson :caseId="caseId" />
</div>
<!-- 案件材料 -->
<div v-if="leftActive == 3" class="case-materials-person">
<caseMaterialLeft :caseId="caseId" />
</div>
<!-- 案件文书 -->
<div v-if="leftActive == 4" class="case-office-person">
<cassWrit :caseId="caseId" />
<!-- <div class="mb-16 flex-row justify-content-between">-->
<!-- <span class="f-weight500 f18">案件文书</span>-->
<!-- <span class="cursor-pointer"><i class="el-icon-tickets"></i> 文书生成</span>-->
<!-- </div>-->
<!-- <div class="case-detail-des flex-column mb-16">-->
<!-- <div class="background-color-F5F5F5 p-16 flex-row border-radius-8">-->
<!-- <a class="case-img"><img :src="this.$util.reg_img('m-info1.pdf')"/></a>-->
<!-- <div class="flex-column" style="padding-top:2px">-->
<!-- <a class="f-weight500">调解申请书</a>-->
<!-- <a class="color-86909C f12">未签字</a>-->
<!-- <a class="color-86909C f12">&#45;&#45;</a>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="color-86909C mt-8">-->
<!-- <a class="mr-16 ml-16 cursor-pointer"><i class="el-icon-view"></i>预览</a>-->
<!-- <a class="mr-16 cursor-pointer"><i class="el-icon-download"></i>下载模板</a>-->
<!-- <a class="mr-16 cursor-pointer"><i class="el-icon-upload2"></i>上传文书</a>-->
<!-- <a class="mr-16 cursor-pointer"><i class="el-icon-tickets"></i>文书生成</a>-->
<!-- </div>-->
<!-- </div>-->
</div>
<!-- 还款计划 -->
<div v-if="leftActive == 5" class="case-repayment-schedule">
<RepaymentSchedule :eventDialog.sync="eventDialog"/>
</div>
<!-- 还款凭证 -->
<div v-if="leftActive == 6" class="case-repayment-certificate">
<RepaymentCertificate :eventDialog.sync="eventDialog"/>
</div>
</el-scrollbar>
</div>
</div>
<!-- 右边 -->
<div class="layout-center-right-wrap flex-row">
<div class="right-wrap-left">
<!-- 人物画像 -->
<portraitPerson :caseId="caseId" />
</div>
<div class="right-wrap-right p-16">
<div class="line-height-30 f22 f-weight600">沟通记录</div>
<div class="flex-row justify-content-between align-items-center pt-16 pb-16">
<el-select v-model="mediaterecordpm.linkedWay" placeholder="请选择" @change="getmediate_record">
<el-option label="全部沟通" value=""></el-option>
<el-option label="电话沟通" value="1"></el-option>
<el-option label="视频沟通" value="2"></el-option>
</el-select>
<el-button plain icon="el-icon-plus" @click="visiblemediatRecord = true">新增沟通记录</el-button>
</div>
<el-timeline class="padding-0">
<el-timeline-item v-for="(item,index) in communicationRecord" :key="index" :timestamp="item.recordDate" placement="top" type="primary">
<el-card shadow="never" class="mt-8" v-for="(itemrecord,index) in item.records" :key="index">
<div class="flex-row justify-content-between timeline-layout">
<div class="timeline-layout-w">
<div class="flex-row align-items-center">
<div>{{ itemrecord.createAt | formaDate('hh:mm:ss') }}</div>
<div class="pl-8 pr-8">
{{itemrecord.mediator}}
</div>
<div class="text-center icon-bg icon-phone">
<i v-if="itemrecord.callWay == 1" class="callphone-icon"></i>
<i v-if="itemrecord.callWay == 0 && itemrecord.linkedSituation != 1" class="callbackphone-icon"></i>
<i v-if="itemrecord.callWay == 0 && itemrecord.linkedSituation == 1" class="nocallphone-icon"></i>
</div>
</div>
<div class="timeline-layout-w-records mt-8 mb-8">
<div class="flex-row align-items-center">
<div>
<span class="pr-8" v-for="(itemperson,index) in itemrecord.linkedPersonInfo" :key="index">
{{ itemperson.name}}
{{itemperson.phone}}
<el-tag class="mr-8" size="small" effect="plain" style="height: 22px;">{{itemperson.labelName}}</el-tag>
</span>
</div>
<el-tag size="small" effect="plain" style="height: 22px;">重点客户</el-tag>
</div>
<!-- 电话 -->
<div v-if="itemrecord.linkedWay == 1" class="flex-row align-items-center pt-6">
<div v-if="itemrecord.linkedType == 1">通话{{itemrecord.linkedDuration}}</div>
<el-divider direction="vertical"></el-divider>
<div class="text-center cursor-pointer"><i class="f14 el-icon-video-play"></i> 播放录音</div>
</div>
<!-- 视频 -->
<div v-if="itemrecord.linkedWay == 2" class="flex-row align-items-center pt-6">
<div>通话44秒</div>
<el-divider direction="vertical"></el-divider>
<div class="text-center cursor-pointer"><i class="f14 el-icon-video-play"></i> 播放录音</div>
</div>
<!-- 微信 -->
<div v-if="itemrecord.linkedWay == 3" class="flex-row align-items-center pt-6">
<div>通话44秒</div>
<el-divider direction="vertical"></el-divider>
<div class="text-center cursor-pointer"><i class="f14 el-icon-video-play"></i> 播放录音</div>
</div>
</div>
<div>
沟通备注
<span class="color-FF7D00">客户承诺本月底还款</span>
<i class="ml-8 f14 el-icon-edit cursor-pointer"></i>
</div>
</div>
<div class="timeline-layout-w timeline-layout-ai">
<div class="flex-row align-items-center">
<div class="mr-8 ai-logo-img"></div>
<div>调解小助手帮你总结<i class="f14 el-icon-warning-outline cursor-pointer"></i></div>
</div>
<div class="pt-8">
由于提供的通话记录内容非常有限且不包含具体的人物姓名对话主旨相关的时间和金额信息无法形成有效的摘要
</div>
</div>
</div>
</el-card>
</el-timeline-item>
</el-timeline>
</div>
</div>
</div>
</div>
<div class="flex-row align-items-center pl-24 pr-24 btn-group-controls">
<div class="pt-16 pb-16 flex-row justify-content-between align-items-center btn-group-real-time">
<el-badge :value="3" class="item">
<i class="f24 el-icon-phone cursor-pointer color-52ABF2"></i>
</el-badge>
<el-badge :value="3" class="item">
<i class="f24 el-icon-video-camera cursor-pointer color-52ABF2"></i>
</el-badge>
</div>
<div class="ml-24 mr-24 btn-group-interval"></div>
<div class="flex-row justify-content-between align-items-center btn-group-processing-event">
<div class="flex-row justify-content-between align-items-center cursor-pointer" @click="visiblePopover={caseId: caseId}">
<i class="f24 el-icon-video-camera color-4E5969"></i>
<div class="pl-4 f14">预约</div>
</div>
<div class="flex-row justify-content-between align-items-center cursor-pointer">
<i class="f24 el-icon-document color-4E5969"></i>
<div class="pl-4 f14">协议</div>
</div>
<el-popover
placement="top"
width="500"
v-model="singleofficevisible"
title="发起签字"
trigger="click">
<singleofficeWritPopover :caseId="caseId" :singleofficevisible.sync="singleofficevisible"/>
<span slot="reference" class="flex-row justify-content-between align-items-center cursor-pointer">
<i class="f24 el-icon-document-remove color-4E5969"></i>
<a class="pl-4 f14">签字</a>
</span>
</el-popover>
<el-popover
placement="top"
width="500"
v-model="singlesealvisible"
title="发起签章"
trigger="click">
<singleofficeSealPopover :caseId="caseId" :singlesealvisible.sync="singlesealvisible"/>
<span slot="reference" class="flex-row justify-content-between align-items-center cursor-pointer">
<i class="f24 el-icon-s-check color-4E5969"></i>
<a class="pl-4 f14">签章</a>
</span>
</el-popover>
<el-popover
placement="top"
width="500"
v-model="singledeliveryvisible"
title="发起送达"
trigger="click">
<singleofficeDeliveryPopover :caseId="caseId" :singledeliveryvisible.sync="singledeliveryvisible"/>
<span slot="reference" class="flex-row justify-content-between align-items-center cursor-pointer">
<i class="f24 el-icon-s-claim color-4E5969"></i>
<a class="pl-4 f14">送达</a>
</span>
</el-popover>
<div class="flex-row justify-content-between align-items-center cursor-pointer">
<i class="f24 el-icon-wallet color-4E5969"></i>
<div class="pl-4 f14">类案</div>
</div>
<div class="flex-row justify-content-between align-items-center cursor-pointer">
<i class="f24 el-icon-document-checked color-4E5969"></i>
<div class="pl-4 f14">办结</div>
</div>
<div class="flex-row justify-content-between align-items-center cursor-pointer">
<i class="f24 el-icon-document-delete color-4E5969"></i>
<div class="pl-4 f14">失败</div>
</div>
<div class="flex-row justify-content-between align-items-center cursor-pointer">
<i class="f24 el-icon-user-solid color-4E5969"></i>
<div class="pl-4 f14">帮扶</div>
</div>
<el-popover
placement="top"
width="400"
v-model="singlejointlyvisible"
title="案件协办"
trigger="click">
<singleJointlyPopover :caseId="caseId" :singlejointlyvisible.sync="singlejointlyvisible" @handleSubmit="getCaseInfoById()"/>
<span slot="reference" class="flex-row justify-content-between align-items-center cursor-pointer">
<i class="f24 el-icon-s-management color-4E5969"></i>
<a class="pl-4 f14">协办</a>
</span>
</el-popover>
</div>
</div>
<caseVideoReservationDialog v-if="visiblePopover" :visible-popover.sync="visiblePopover" />
<MediationRecordDialog v-if="visiblemediatRecord" :caseId="caseId" :visiblemediatRecord.sync="visiblemediatRecord" />
<!-- 视频房间 -->
<VideoRoom v-if="VideoCallDialog" :eventDialog.sync="VideoCallDialog" />
</div>
</template>
<script>
import api from "@/services/caseManagement";
import eventTracingApi from "@/services/eventTracingApi";
import videoTelephone from "@/services/videoTelephone";
export default {
components: {
uploadFile: () => import('@/components/uploadFile.vue'),//
RepaymentSchedule: () => import('./RepaymentSchedule.vue'),//
RepaymentCertificate: () => import('./RepaymentCertificate.vue'),//
caseMaterial: () => import('./caseMaterial'),//
caseMaterialLeft: () => import('./caseMaterialLeft'),//
contactPerson: () => import('./contactPerson'),//
cassWrit: () => import('./cassWrit'),//
caseVideoReservationDialog: () => import('./caseVideoReservationDialog'),//
portraitPerson: () => import('./portraitPerson.vue'),//
singleofficeWritPopover: () => import('./singleofficeWritPopover.vue'),//
singleofficeSealPopover: () => import('./singleofficeSealPopover.vue'),//
singleofficeDeliveryPopover: () => import('./singleofficeDeliveryPopover.vue'),//
MediationRecordDialog: () => import('./MediationRecordDialog.vue'),//
singleJointlyPopover: () => import('./singleJointlyPopover.vue'),//
VideoRoom: () => import('./VideoRoom'),
},
data() {
return {
singlejointlyvisible:false,
visiblemediatRecord:false,
singledeliveryvisible:false,
singlesealvisible:false,
singleofficevisible:false,
eventDialog: {caseId: this.$route.query.caseId},
leftActive: 1,
rightActive: 1,
fileList: [],
mediationRecord: [],//
baseInfo: {},//
obligorInfo: [],//
caseId: '',//id
//
contactAddObj: {},
contactAddFlag: false,
contactObj: {},
contactUpdate: false,
relationOptions: [{label: '本人', value: '本人'}, {label: '父母', value: '父母'}, {label: '配偶', value: '配偶'},
{label: '子女', value: '子女'}, {label: '其他', value: '其他'}, {label: '朋友', value: '朋友'}, {
label: '兄弟',
value: '兄弟'
},
{label: '同事', value: '同事'}, {label: '同学', value: '同学'}],
//
repaymentObj: {
type: 'ALL'
},
RepaymentOptions: [{label: '一次性还款', value: 'ALL'}, {
label: '全部分期',
value: 'STAGES'
}, {label: '部分先还加分期', value: 'MIX'}, {label: '其他', value: 'OTHER'}],
rulesClientRepayment: {
type: [
{required: true, message: '请选择还款方式', trigger: 'change',},
],
totalAmount: [
{required: true, message: '请输入还款金额', trigger: 'change',},
{
pattern: /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0.\d{1,2}$/,
message: '请输入2位小数金额',
trigger: ['blur', 'change']
}
],
paybackDate: [
{required: true, message: '请选择还款截止日期', trigger: 'change',},
],
stagesDay: [
{required: true, message: '请选择每期还款日期', trigger: 'change',},
],
partAmount: [
{required: true, message: '请输入分期前偿还金额 ', trigger: 'change',},
{
pattern: /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0.\d{1,2}$/,
message: '请输入2位小数金额',
trigger: ['blur', 'change']
}
],
partDate: [
{required: true, message: '请选择分期前偿还日期', trigger: 'change',},
],
stagesNum: [
{required: true, message: '请输入分期期数', trigger: 'change',},
{pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: ['blur', 'change']}
],
},
communicationRecord: [],
visiblePopover: null,
VideoCallDialog: null,
mediaterecordpm:{
caseId:this.$route.query.caseId,
linkedWay:undefined
},
};
},
computed: {
//
leftContentHeight() {
let oh = document.documentElement.clientHeight;
return oh - 100
},
//
rightContentHeight() {
let oh = document.documentElement.clientHeight;
return oh - 57
},
// drawer
OfficecontentHeight() {
let oh = document.documentElement.clientHeight;
return oh - 185
},
CommunicationcontentHeight() {
let oh = document.documentElement.clientHeight;
return oh - 57 - 48 - 38 -308
},
},
async created() {
this.caseId = this.$route.query.caseId
this.getCaseInfoById();//
this.getmediate_record()
},
beforeDestroy() {
// if(this.timer) { //
// clearInterval(this.timer); //
// }
},
methods: {
debtorEntityCardNo(datalist, len) {
let datacardno = ''
let dataphone = ''
datalist.forEach((item, index) => {
if (index == 0) {
datacardno = item.cardNo
dataphone = item.phone
} else {
datacardno += ',' + item.cardNo
dataphone += ',' + item.phone
}
})
return {cardNo: datacardno.substring(0, len), phone: dataphone.substring(0, len)};
},
//
getCaseInfoById() {
let _that = this
api.getCaseInfoById(this.caseId).then(res => {
if (!res.code) {
this.baseInfo = res
//
// console.log('',res.caseFileEntityList)
let caseFileEntityList = []
res.caseFileEntityList.forEach((item) => {
caseFileEntityList.push({name: item.name, fileName: item.name, url: item.url})
})
_that.fileList = caseFileEntityList
}
})
},
//
getFrontCaseById() {
if (!this.$clickThrottle()) {
return
}//
api.getFrontCaseById({id: this.caseId}).then(res => {
if (!res.code) {
// let caseChangeData = res
this.detailData(res)
}
})
},
//
getNextCaseById() {
if (!this.$clickThrottle()) {
return
}//
api.getNextCaseById({id: this.caseId}).then(res => {
if (!res.code) {
this.detailData(res)
}
})
},
handleBack() {
// this.$route.query.sourcePage == 'mediationManagement'
this.$router.push('/mediation-management')
},
//
getmediate_record() {
api.mediate_record_list(this.mediaterecordpm).then(res => {
if (!res.code) {
this.communicationRecord = res
}
})
},
}
};
</script>
<style lang="scss" scoped>
.ai-logo-img{
width: 29px;
height: 29px;
background: url('~@/assets/image/ai-logo.png') no-repeat;
background-size: 100%,100%;
}
.bg-F2F3F5{
background-color: #F2F3F5;
}
.btn-group-controls{
width: 864px;
height: 56px;
border-radius: 16px;
background-color: #fff;
position: fixed;
bottom: 20px;
left: calc(50% - 432px);
box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
.btn-group-real-time{
width: 64px;
}
.btn-group-interval{
width: 1px;
height: 40px;
background-color: #C9CDD4;
}
.btn-group-processing-event{
width: calc(100% - 64px - 1px - 48px);
}
}
.layout-center-wrap {
height: 100%;
font-size: 14px;
.layout-center-top-wrap {
padding: 8px 16px;
border-bottom: solid 1px #E5E6EB;
.top-wrap-title{
width: 223px;
height: 32px;
background: url('~@/assets/image/logo-tjs.png');
background-size: 100%,100%;
margin-top: 4px;
}
.top-wrap-btn-left{
width: 55%;
min-width: 1034px;
.wrap-btn-left-dial{
background-color: #FFF2F0;
border-radius: 20px;
}
}
}
.layout-center-center-wrap {
height: 100%;
.background-color-F5F5F5 {
background-color: #F5F5F5;
}
.border-E5E6EB {
border: solid 1px #E5E6EB;
}
.width120px {
width: 140px;
}
.width180px {
width: 220px;
}
.width200px {
width: calc(50% - 320px);
}
.layout-center-left-wrap {
background: url('~@/assets/image/mediate/m-left-bg.png') no-repeat;
background-size: 100% 100%;
width: 540px;
height: 100%;
border-right: 1px solid var(--fill-3, #E5E6EB);
.layout-center-left1-wrap {
width: 80px;
height: 100%;
text-align: center;
.left-rbobot {
width: 100%;
height: 80px;
text-align: center;
margin: 30px 0 0 0;
img {
width: 64px;
}
}
.separation {
width: 50px;
margin: 15px 0 0 15px;
border-bottom: solid 1px #dedfe4;
}
.left-img-info {
margin-top: 15px;
width: 100%;
font-size: 12px;
cursor: pointer;
img {
width: 48px;
margin-left: 15px;
}
a {
margin-top: 5px;
}
}
.left-img-info.active {
background: url('~@/assets/image/mediate/m-triangle.png') no-repeat;
background-size: 15px 30px;
background-position: 68px 10px;
}
.left-img-info:hover {
background: url('~@/assets/image/mediate/m-triangle.png') no-repeat;
background-size: 15px 30px;
background-position: 68px 10px;
}
}
.layout-center-left2-wrap {
width: 460px;
height: 100%;
background-color: #fff;
border-radius: 25px 0px 0px 25px;
padding: 20px 30px;
.case-debt-info{
.descriptions-t{
.descriptions-t-title{
//margin-bottom: 5px;
}
.descriptions-t-item-l{
padding: 12px 10px;
text-align: right;
width: 40%;
}
.descriptions-t-item-r{
padding: 12px 10px;
text-align: left;
width: 60%;
}
.bgColor-F7F8FA{
background-color: #F7F8FA;
}
}
.case-debt-info-call{
padding: 12px 42px;
}
}
.case-contact-person{
.contact-person-type{
background-color: #F2F3F5;
padding:5px 15px;
border-radius: 8px;
margin: 0 5px;
cursor: pointer;
}
}
.case-detail-des {
border: solid 1px #E5E6EB;
padding: 10px 15px;
border-radius: 8px;
font-size: 14px;
span {
margin: 3px 0;
padding: 3px 10px;
// a:first-child{width: 120px;display: inline-block;text-align: right;}
}
span:nth-child(even) {
background-color: #F7F8FA;
}
.case-img {
width: 50px;
height: 50px;
text-align: center;
line-height: 50px;
img {
max-width: 50px;
max-height: 50px;
}
}
}
.case-materials-person {
.case-detail-des {
i {
margin-right: 4px;
}
}
}
.case-office-person {
.case-detail-des {
.case-img {
width: 55px;
height: 55px;
text-align: center;
line-height: 55px;
img {
max-width: 55px;
max-height: 55px;
}
}
i {
margin-right: 4px;
}
}
}
}
}
.layout-center-right-wrap {
background: url('~@/assets/image/mediate/m-right-bg.png') no-repeat;
background-size: 100% 100%;
width: calc(100% - 540px);
height: 100%;
.right-wrap-left{
width: 367px;
height: 100%;
}
.right-wrap-right{
width: calc(100% - 367px);
.timeline-layout{
.timeline-layout-w{
width: calc(50% - 8px);
.icon-bg{
width: 20px;
height: 20px;
// border-radius: 4px;
// color: #FFFFFF;
.callphone-icon{
background: url('~@/assets/image/mediate/callphone.png') no-repeat;
display: inline-block;
width: 20px;
height: 20px;
background-size: 100% 100%;
}
.callbackphone-icon{
background: url('~@/assets/image/mediate/callbackphone.png') no-repeat;
display: inline-block;
width: 20px;
height: 20px;
background-size: 100% 100%;
}
.nocallphone-icon{
background: url('~@/assets/image/mediate/nocallbackphone.png') no-repeat;
display: inline-block;
width: 20px;
height: 20px;
background-size: 100% 100%;
}
}
// .icon-phone{
// background-color: #52ABF2;
// }
.icon-video{
background-color: #FF7D00;
}
.timeline-layout-w-records{
background-color: #F5F5F5;
border-radius: 4px;
padding: 8px 12px 12px 12px;
}
}
.timeline-layout-ai{
padding: 6px 16px;
border-radius: 4px;
background: linear-gradient(270deg, #F1F4FE 0%, #FFF2F8 100%);
}
}
}
//.case-communication-record {
// .btn-communication {
// padding: 5px 15px;
// border-radius: 8px;
// cursor: pointer;
// }
//
// .case-communication-cont {
// // background: ;
// padding: 20px;
// border-radius: 8px;
// margin-top: 15px;
// }
//}
//.case-office-record, .case-materials-record {
//
// span a {
// color: #C66A5B;
// margin-right: 13px;
// cursor: pointer;
// }
//
// span a:last-child {
// margin-right: 0;
// }
//}
}
}
}
</style>

View File

@ -8,9 +8,9 @@
<div class="flex-row justify-content-between align-items-center">
<el-button class="bg-F2F3F5" icon="el-icon-arrow-left" circle></el-button>
<div class="ml-16 mr-16 flex-row justify-content-between align-items-center">
<div class="mr-8 f16">程机票</div>
<div class="mr-8 f16">{{ baseInfo.debtorEntityList.find(item => item.role == 'DEBTOR').name }}</div>
<div class="mr-8">
<el-tag size="small" type="warning">四川成都</el-tag>
<el-tag size="small" type="warning">{{ baseInfo.debtorEntityList.find(item => item.role == 'DEBTOR').addr }}</el-tag>
</div>
<div class="mr-8 f16 color-FF7D00"><i class="el-icon-warning"></i></div>
<div class="f16 color-165DFF"><i class="el-icon-success"></i></div>
@ -87,24 +87,32 @@
<div class="descriptions-t">
<div class="f16 f-weight600 descriptions-t-title">基本信息</div>
<div class="flex-row descriptions-t-item">
<div class="descriptions-t-item-l color-86909C">金融产品名称:</div>
<div class="descriptions-t-item-r">微粒贷</div>
<div class="descriptions-t-item-l color-86909C">案件包名称:</div>
<div class="descriptions-t-item-r">{{baseInfo.casePkg}}</div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">金融产品名称:</div>
<div class="descriptions-t-item-r">{{baseInfo.productTypeId}}</div>
</div>
<div class="flex-row descriptions-t-item">
<div class="descriptions-t-item-l color-86909C">金融机构名称:</div>
<div class="descriptions-t-item-r">微众银行殷份有限公司</div>
<div class="descriptions-t-item-r">{{baseInfo.financialOrgName}}</div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">案件编号:</div>
<div class="descriptions-t-item-r">{{baseInfo.caseNo}}</div>
</div>
<div class="flex-row descriptions-t-item">
<div class="descriptions-t-item-l color-86909C">合同名称:</div>
<div class="descriptions-t-item-r">贷款合同</div>
<div class="descriptions-t-item-r">{{baseInfo.fields.find(item => item.fieldKey == 'contactName').fieldValue}}</div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">被申请人姓名:</div>
<div class="descriptions-t-item-r color-1960F4">陈继平</div>
<div class="descriptions-t-item-r color-1960F4">{{baseInfo.debtorEntityList.find(item => item.role == 'DEBTOR').name}}</div>
</div>
<div class="flex-row descriptions-t-item">
<div class="descriptions-t-item-l color-86909C">被申请人手机号码:</div>
<div class="descriptions-t-item-r">134****9447</div>
<div class="descriptions-t-item-r">{{baseInfo.debtorEntityList.find(item => item.role == 'DEBTOR').phone}}</div>
</div>
</div>
@ -124,20 +132,63 @@
<div class="f16 f-weight600 descriptions-t-title">债务信息</div>
<div class="flex-row descriptions-t-item">
<div class="descriptions-t-item-l color-86909C">当前逾期金额:</div>
<div class="descriptions-t-item-r">2000000</div>
<div class="descriptions-t-item-r color-F53F3F">{{baseInfo.fields.find(item => item.fieldKey == 'moneyAmount').fieldValue}}</div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">欠款本金:</div>
<div class="descriptions-t-item-r color-F53F3F">1800000</div>
<div v-for="(item,index) in baseInfo.fields.filter(item => item.fieldGroup == 'DEBTINFO')"
:key="index" class="flex-row descriptions-t-item " :class="index % 2 === 0 ? 'bgColor-F7F8FA':''">
<div class="descriptions-t-item-l color-86909C">{{item.name}}:</div>
<div class="descriptions-t-item-r">{{item.fieldValue}}</div>
</div>
<div class="flex-row descriptions-t-item">
<!-- <div class="flex-row descriptions-t-item">
<div class="descriptions-t-item-l color-86909C">欠款利息:</div>
<div class="descriptions-t-item-r">2000000 <i class="f14 el-icon-warning-outline"></i></div>
<div class="descriptions-t-item-r">{{baseInfo.fields.find(item => item.fieldKey == 'moneyAmount').fieldValue}} <i class="f14 el-icon-warning-outline"></i></div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">月还款额:</div>
<div class="descriptions-t-item-r">6000</div>
<div class="descriptions-t-item-l color-86909C">欠款罚息:</div>
<div class="descriptions-t-item-r">{{baseInfo.fields.find(item => item.fieldKey == 'moneyAmount').fieldValue}}</div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">最低还款额减免底线:</div>
<div class="descriptions-t-item-r">{{baseInfo.fields.find(item => item.fieldKey == 'moneyAmount').fieldValue}}</div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">放款金额/借款本金:</div>
<div class="descriptions-t-item-r">{{baseInfo.fields.find(item => item.fieldKey == 'moneyAmount').fieldValue}}</div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">放款日期:</div>
<div class="descriptions-t-item-r">{{baseInfo.fields.find(item => item.fieldKey == 'moneyAmount').fieldValue}}</div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">账龄:</div>
<div class="descriptions-t-item-r">{{baseInfo.fields.find(item => item.fieldKey == 'moneyAmount').fieldValue}}</div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">合同编号:</div>
<div class="descriptions-t-item-r">{{baseInfo.fields.find(item => item.fieldKey == 'moneyAmount').fieldValue}}</div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">业务流水号:</div>
<div class="descriptions-t-item-r">{{baseInfo.fields.find(item => item.fieldKey == 'moneyAmount').fieldValue}}</div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">委托时逾期天数:</div>
<div class="descriptions-t-item-r">{{baseInfo.fields.find(item => item.fieldKey == 'moneyAmount').fieldValue}}</div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">借款合同签署时间:</div>
<div class="descriptions-t-item-r">{{baseInfo.fields.find(item => item.fieldKey == 'moneyAmount').fieldValue}}</div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">贷款笔数:</div>
<div class="descriptions-t-item-r">{{baseInfo.AAAAA}}</div>
</div>
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
<div class="descriptions-t-item-l color-86909C">债务卡号:</div>
<div class="descriptions-t-item-r">{{baseInfo.AAAAA}}</div>
</div> -->
</div>
</div>
@ -187,10 +238,15 @@
<el-option label="电话沟通" value="1"></el-option>
<el-option label="视频沟通" value="2"></el-option>
</el-select>
<el-button plain icon="el-icon-plus" @click="visiblemediatRecord = true">新增沟通记录</el-button>
<span>
<el-button plain icon="el-icon-plus" @click="visiblemediatRecord = true;visiblemediatRecordObj = null">新增沟通记录</el-button>
<el-button plain icon="el-icon-edit">个人调解备注</el-button>
</span>
</div>
<el-scrollbar :style="'height:'+`${MediationrecordHeight}`+'px'">
<el-scrollbar :style="'height:'+`${MediationrecordHeight}`+'px;padding:2px'">
<el-timeline class="padding-0">
<el-timeline-item v-for="(item,index) in communicationRecord" :key="index" :timestamp="item.recordDate" placement="top" type="primary">
<el-card shadow="never" class="mt-8" v-for="(itemrecord,index) in item.records" :key="index">
@ -217,7 +273,7 @@
<i class="callwechat-icon"></i>
</div>
</div>
<span class="cursor-pointer"><i class="ml-8 f14 el-icon-edit"></i></span>
<span class="cursor-pointer" @click="visiblemediatRecord = true;visiblemediatRecordObj = itemrecord"><i class="ml-8 f14 el-icon-edit"></i></span>
</div>
<div class="timeline-layout-w-records mt-8 mb-8">
<div class="flex-row align-items-center">
@ -225,7 +281,7 @@
<span class="pr-8" v-for="(itemperson,index) in itemrecord.linkedPersonInfo" :key="index">
{{ itemperson.name}}
{{ itemrecord.linkedWay == 1 ? itemperson.phone :''}}
<el-tag class="mr-8" size="small" effect="plain" style="height: 22px;">{{itemperson.labelName}}</el-tag>
<el-tag class="mr-8" size="small" effect="plain" style="height: 22px;">{{itemperson.type}}</el-tag>
</span>
</div>
@ -234,19 +290,18 @@
<!-- 电话 -->
<div v-if="itemrecord.linkedWay == 1" class="flex-row align-items-center pt-6">
<div v-if="itemrecord.linkedType == 1">通话{{itemrecord.linkedDuration}}</div>
<el-divider direction="vertical"></el-divider>
<el-divider v-if="itemrecord.linkedType == 1" direction="vertical"></el-divider>
<div class="text-center cursor-pointer"><i class="f14 el-icon-video-play"></i> 播放录音</div>
</div>
<!-- 视频 -->
<div v-if="itemrecord.linkedWay == 2" class="flex-row align-items-center pt-6">
<div>视频{{itemrecord.linkedDuration}}</div>
<el-divider direction="vertical"></el-divider>
<div v-if="itemrecord.linkedType == 1">视频{{itemrecord.linkedDuration}}</div>
<el-divider v-if="itemrecord.linkedType == 1" direction="vertical"></el-divider>
<div class="text-center cursor-pointer"><i class="f14 el-icon-video-play"></i> 播放视频</div>
</div>
<!-- 微信 -->
<div v-if="itemrecord.linkedWay == 3" class="flex-row align-items-center pt-6">
<!-- <div>通话44秒</div> -->
<el-divider direction="vertical"></el-divider>
<div class="text-center cursor-pointer">查看文件</div>
</div>
@ -381,7 +436,7 @@
</div>
<caseVideoReservationDialog v-if="visiblePopover" :visible-popover.sync="visiblePopover" />
<MediationRecordDialog v-if="visiblemediatRecord" :caseId="caseId" :visiblemediatRecord.sync="visiblemediatRecord" />
<MediationRecordDialog v-if="visiblemediatRecord" :visiblemediatRecordObj="visiblemediatRecordObj" :caseId="caseId" :visiblemediatRecord.sync="visiblemediatRecord" />
<!-- 视频房间 -->
<VideoRoom v-if="VideoCallDialog" :eventDialog.sync="VideoCallDialog" />
</div>
@ -415,6 +470,7 @@ export default {
return {
singlejointlyvisible:false,
visiblemediatRecord:false,
visiblemediatRecordObj:null,
singledeliveryvisible:false,
singlesealvisible:false,
singleofficevisible:false,
@ -906,6 +962,13 @@ export default {
height: 20px;
background-size: 100% 100%;
}
.callwechat-icon{
background: url('~@/assets/image/mediate/WeChat.png') no-repeat;
display: inline-block;
width: 20px;
height: 20px;
background-size: 100% 100%;
}
}
// .icon-phone{
// background-color: #52ABF2;

View File

@ -1,6 +1,6 @@
<template>
<div>
<el-dialog title="新增调解记录" :visible="true" class="kk-dialog-class"
<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">
@ -88,7 +88,7 @@
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" @change="handleChange" :min="1" :max="100"></el-input-number>
<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">
@ -121,7 +121,7 @@ export default {
uploadFile: () => import('@/components/uploadFile.vue'),//
},
props: {
eventDialog: {
visiblemediatRecordObj: {
type: Object,
default: () => {
return {}
@ -138,12 +138,7 @@ export default {
return {
CommunicationOptions:[{ label: '继续沟通', value: '4' },{ label: '一次性全部回款', value: '1' },{ label: '全部分期', value: '2' },
{ label: '部分还款', value: '3' },{ label: '拒绝沟通', value: '5' }],
materialTypeOptions: [
{label:'承诺账户',value:'1'},{label:'重点账户',value:'2'},{label:'拒联账户',value:'3'},{label:'已结清客户',value:'4'},
{label:'疑难账户',value:'5'},{label:'失联账户',value:'6'},{label:'半失联账户',value:'7'},{label:'部分还款账户',value:'8'},
{label:'适诉案件',value:'9'},{label:'可联账户',value:'10'},{label:'投诉倾向客户',value:'11'},{label:'分期客户',value:'12'},
{label:'其他/无标签',value:'13'}
],
materialTypeOptions: this.$util.getMediationprogress(),
mrObj: {
id:'',
timeType:0,
@ -168,7 +163,29 @@ export default {
};
},
mounted() {
// this.daysAfterDate()
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
this.mrObj.communicationSituation = this.visiblemediatRecordObj.communicationSituation.toString()
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
this.visiblemediatRecordObj.files.forEach(item =>{
this.fileList.push({
url: item.url,
fileName: '文件',
})
})
}
if(this.mrObj.id == ''){
//
let currentDate = new Date();
@ -261,13 +278,11 @@ export default {
this.fileList.forEach(item =>{
this.mrObj.files.push(item.url)
})
console.log(this.mrObj,'this.mrObj')
api.mediate_record_save(this.mrObj).then(res => {
// this.$parent.getFileCaseList()
this.handleClose()
this.$message.success("新增调解记录成功");
})
this.$parent.getmediate_record()
this.handleClose()
this.$message.success("新增调解记录成功");
})
}
}

View File

@ -38,11 +38,11 @@
<span class="case-lable">
<!-- documentStaus 0 未生成文书 1 生成中 2 完成生成 3 生成失败 -->
<!-- signStatus 0 未发起 1签字中 2签字完成 3签字失败 -->
<a class="case-status1" v-if="item.documentStaus.code == 1">生成中</a>
<a class="case-status0" v-if="item.documentStaus.code == 1">生成中</a>
<a class="result-status0" v-if="item.documentStaus.code == 3">生成失败</a>
<a class="case-status2" v-if="item.documentStaus.code == 2 && item.signStatus == null">已生成</a>
<a class="case-status1" v-if="item.documentStaus.code == 2 && item.signStatus == 1">签字中</a>
<a class="case-status2" v-if="item.documentStaus.code == 2 && item.signStatus == 2">已签字</a>
<a class="case-status3" v-if="item.documentStaus.code == 2 && item.signStatus == null">已生成</a>
<a class="case-status0" v-if="item.documentStaus.code == 2 && item.signStatus != null && item.signStatus.code == 1">签字中</a>
<a class="case-status3" v-if="item.documentStaus.code == 2 && item.signStatus != null && item.signStatus.code == 2">已签字</a>
<a class="result-status0" v-if="item.signStatus == 3">签字失败</a>
</span>
</a>

View File

@ -13,28 +13,6 @@
:class="{'contact-person-active' : item === personnelTypeActive}"
@click="handleTab(item)">{{item}}</span>
</div>
<!-- <el-card class="mb-16">-->
<!-- <div class="personnel-list">-->
<!-- <div class="flex-row justify-content-between">-->
<!-- <div class="personnel-surname"></div>-->
<!-- <div class="personnel-info">-->
<!-- <div class="f16"><span class="f20 f-weight600">李四</span> 18336524833</div>-->
<!-- <div class="case-lable">-->
<!-- <a class="case-status0">本人</a>-->
<!-- <a class="case-status1">空号</a>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="flex-row personnel-btn">-->
<!-- <a class="cursor-pointer" @click="handleEdit">编辑</a>-->
<!-- <a class="cursor-pointer ml-8" @click="handleDelete">删除</a>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="color-86909C mt-8 ml-8 f16">-->
<!-- <a class="mr-24 cursor-pointer"><i class="el-icon-phone"></i> 电话</a>-->
<!-- <a class="ml-8 cursor-pointer"><i class="el-icon-message"></i> 短信</a>-->
<!-- </div>-->
<!-- </div>-->
<!-- </el-card>-->
<el-card class="mb-16" v-for="(item, index) in tableData" :key="index">
<div class="personnel-list">
<div class="flex-row justify-content-between">
@ -78,8 +56,8 @@ export default {
},
data() {
return {
personnelType: ['申请人', '申请人' , '申请人代理人'],
personnelTypeActive: '申请人',
personnelType: ['申请人', '申请人', '申请人代理人'],
personnelTypeActive: '申请人',
//
contactAddObj: null,
tableData: [],
@ -87,7 +65,7 @@ export default {
}
},
mounted() {
this.handleTab('申请人')
this.handleTab('申请人')
},
methods: {
handleTab(item) {

View File

@ -606,6 +606,7 @@ export default {
//
handleSubmit() {
// console.log(this.portraitObj,'this.mrObj')
if(this.portraitObj.id == ''){return false}
api.debtorProfile_edit(this.portraitObj).then(res => {
// this.getdebtorProfile()
})

View File

@ -119,7 +119,7 @@ import api from "@/services/caseManagement";
}else if(tab.name == '7'){
repaymentDialog = {title:'还款计划',caseNo:'123'}
}else if(tab.name == '8'){
repaymentlogDialog = {title:'还款凭证',caseNo:'123'}
eventTraDialog = {title:'还款凭证',caseNo:'123'}
}else {
}

View File

@ -4,6 +4,7 @@ import moment from 'moment'
console.log(moment().startOf('day'), moment().endOf('day'))
let isDebug = process.env.NODE_ENV !== 'production' ? true : false
const util = {
log: (mes, ...params) => {
if (isDebug) {
@ -368,5 +369,77 @@ const util = {
const day = date.getDate().toString().padStart(2, '0'); // 日期前面补0
return `${year}-${month}-${day}`;
},
/**
* 调解状态
*/
getMediationType() {
return [{label:'未触达',value:0},{label:'调解中',value:1},{label:'已达成方案',value:2},
{label:'已签署协议',value:3},{label:'调解失败',value:4},{label:'调解成功',value:5}]
},
/**
* 根据不同的类型返回不同的调解状态 this.$util.getMediationprogressData
*/
getMediationTypeData(value) {
switch (value) {
case 1:
case 2:
case 3:
// 常规
return {key:0,label:this.getMediationType().find(item => item.value == value).label};
case 0:
// 预警
return {key:2,label:this.getMediationType().find(item => item.value == value).label};
case 4:
// 高预警
return {key:1,label:this.getMediationType().find(item => item.value == value).label};
case 5:
// 成功
return {key:3,label:this.getMediationType().find(item => item.value == value).label};
default:
return {key:0,label:this.getMediationType().find(item => item.value == value).label};
}
},
/**
* 调解进度枚举
*/
getMediationprogress() {
return [
{label:'承诺账户',value:'1'},{label:'重点账户',value:'2'},{label:'拒联账户',value:'3'},{label:'已结清客户',value:'4'},
{label:'疑难账户',value:'5'},{label:'失联账户',value:'6'},{label:'半失联账户',value:'7'},{label:'部分还款账户',value:'8'},
{label:'适诉案件',value:'9'},{label:'可联账户',value:'10'},{label:'投诉倾向客户',value:'11'},{label:'分期客户',value:'12'},
{label:'其他/无标签',value:'13'}
]
},
/**
* 根据不同的类型返回不同的调解进度 this.$util.getMediationprogressData
*/
getMediationprogressData(value) {
switch (value) {
case 1:
case 2:
case 4:
case 8:
case 12:
// 常规
return {key:0,label:this.getMediationprogress().find(item => item.value == value).label};
case 7:
case 9:
case 10:
case 13:
// 预警
return {key:2,label:this.getMediationprogress().find(item => item.value == value).label};
case 3:
case 5:
case 6:
case 11:
// 高预警
return {key:1,label:this.getMediationprogress().find(item => item.value == value).label};
default:
return {key:0,label:this.getMediationprogress().find(item => item.value == value).label};
}
},
}
export default util;