事项追踪

This commit is contained in:
liuxi 2024-12-16 14:56:11 +08:00
parent edd54800ee
commit f348da571d
19 changed files with 3085 additions and 330 deletions

View File

@ -2,7 +2,7 @@ variables:
#docker仓库地址
REGISTRY_HOST: ccr.ccs.tencentyun.com
#准度科技信息化项目
PROJECT_NAME: trydo
PROJECT_NAME: justice
#注册中心
SUB_PROJECT_NAME: mediate-manage-web
CEWCS_IMAGE: $REGISTRY_HOST/$PROJECT_NAME/$SUB_PROJECT_NAME:1.0.0-dev
@ -15,7 +15,7 @@ stages:
- clean
before_script:
- docker login --username=100010566009 --password=zd123456 $REGISTRY_HOST
- docker login --username=100018369914 --password=zd123456 $REGISTRY_HOST
构建:
stage: build

View File

@ -14,43 +14,43 @@
</div>
<div v-if="navactive == 1 " class="layout-tabs-content-box flex-row padding-0 f14">
<div class="pt-8 border-b-solid-lighter-1 background-color-fff border-radius-4 p-16" style="width: calc(100% - 370px);">
<div class="case-detail-title f18">被申请人张三</div>
<div class="case-detail-title f18">被申请人<a v-for="(item,index) in baseInfo.debtorEntityList" :key="index">{{index == 0 ?'':','}}{{item.name}}</a></div>
<div class="flex-column">
<div class="case-detail-label f-weight500 f16">基本信息</div>
<div class="case-detail-des">
<span><a>案件包名称</a><a>河北幸福消费金融股份有限公司012341</a></span>
<span><a>委案机构</a><a>河北幸福消费金融股份有限公司</a></span>
<span><a>委案开始日期</a><a>2024-11-01</a></span>
<span><a>委案到期日期</a><a>2025-01-04</a></span>
<span><a>委案机构</a><a>{{baseInfo.AAAAAAAAA}}</a></span>
<span><a>委案开始日期</a><a>{{baseInfo.planStartTime}}</a></span>
<span><a>委案到期日期</a><a>{{baseInfo.planStartTime}}</a></span>
<span><a>债务人姓名</a><a v-for="(item,index) in baseInfo.debtorEntityList" :key="index">{{index == 0 ?'':','}}{{item.name}}</a></span>
<span><a>债务人手机号码</a><a>{{ debtorEntityCardNo(baseInfo.debtorEntityList,25).phone }} {{ baseInfo.debtorEntityList.length > 25 ? '...':'' }}</a></span>
<span><a>委案期限</a><a></a></span>
<span><a>委案渠道</a><a></a></span>
<span><a>债务人姓名</a><a>李新华</a></span>
<span><a>债务人手机号码</a><a>15138026046</a></span>
<span><a>身份证号</a><a>410823197907030045</a></span>
<span><a>户籍地址</a><a>河南省焦作市</a></span>
<span><a>身份证号</a><a> {{ debtorEntityCardNo(baseInfo.debtorEntityList,25).cardNo }} {{ baseInfo.debtorEntityList.length > 25 ? '...':'' }}</a></span>
<span><a>户籍地址</a><a v-for="(item,index) in baseInfo.debtorEntityList" :key="index">{{index == 0 ?'':','}}{{item.name}}</a></span>
</div>
<div class="case-detail-label f-weight500 f16">债务信息</div>
<div class="case-detail-des">
<span><a>委托机构</a><a>河北幸福消费金融股份有限公司</a></span>
<span><a>合同编号</a><a>JD2019032717351310018</a></span>
<span><a>业务流水号</a><a>JD2019032717351310018</a></span>
<span><a>金融产品名称</a><a>京东</a></span>
<span><a>金融机构名称</a><a>河北幸福消费金融股份有限公司</a></span>
<span><a>合同名称</a><a>个人借款额度合同</a></span>
<span><a>委托时逾期天数</a><a>857</a></span>
<span><a>借款合同签署时间</a><a></a></span>
<span><a>贷款笔数</a><a>1</a></span>
<span><a>当前逾期金额</a><a>5,897.93</a></span>
<span><a>最低还款额(减免底线)</a><a>3,788.33</a></span>
<span><a>账龄</a><a>29</a></span>
<span><a>放款金额/借款本金</a><a>19300</a></span>
<span><a>欠款本金</a><a>3,788.33</a></span>
<span><a>总分期数</a><a>12</a></span>
<span><a>逾期期数</a><a>5</a></span>
<span><a>未结清期数</a><a>5</a></span>
<span><a>逾期开始时间</a><a>2022-06-28 16:15:51</a></span>
<span><a>还款日</a><a>27</a></span>
<span><a>备注</a><a>委外</a></span>
<!-- <span><a>委托机构</a><a>{{baseInfo.financialOrgName}}</a></span> -->
<span><a>合同编号</a><a>{{baseInfo.AAAAAAAAA}}</a></span>
<span><a>业务流水号</a><a>{{baseInfo.AAAAAAAAA}}</a></span>
<span><a>金融产品名称</a><a>{{baseInfo.AAAAAAAAA}}</a></span>
<span><a>金融机构名称</a><a>{{baseInfo.financialOrgName}}</a></span>
<span><a>合同名称</a><a>{{baseInfo.AAAAAAAAA}}</a></span>
<span><a>委托时逾期天数</a><a>{{baseInfo.AAAAAAAAA}}</a></span>
<span><a>借款合同签署时间</a><a>{{baseInfo.AAAAAAAAA}}</a></span>
<span><a>贷款笔数</a><a>{{baseInfo.AAAAAAAAA}}</a></span>
<span><a>当前逾期金额</a><a>{{baseInfo.moneyAmount}}</a></span>
<span><a>最低还款额(减免底线)</a><a>{{baseInfo.AAAAAAAAA}}</a></span>
<span><a>账龄</a><a>{{baseInfo.AAAAAAAAA}}</a></span>
<span><a>放款金额/借款本金</a><a>{{baseInfo.AAAAAAAAA}}</a></span>
<span><a>欠款本金</a><a>{{baseInfo.AAAAAAAAA}}</a></span>
<span><a>总分期数</a><a>{{baseInfo.AAAAAAAAA}}</a></span>
<span><a>逾期期数</a><a>{{baseInfo.overdueTimes}}</a></span>
<span><a>未结清期数</a><a>{{baseInfo.AAAAAAAAA}}</a></span>
<span><a>逾期开始时间</a><a>{{baseInfo.AAAAAAAAA}}</a></span>
<span><a>还款日</a><a>{{baseInfo.AAAAAAAAA}}</a></span>
<span><a>备注</a><a>{{baseInfo.caseDescr}}</a></span>
</div>
<div class="case-detail-label f-weight500 f16">联系人信息</div>
<div class="case-detail-des flex-column">
@ -145,22 +145,33 @@
</div>
</div>
<div class="background-color-fff border-radius-4 p-16 flex-column mt-16">
<div class="case-detail-label f-weight500 f16">短信情况</div>
<div class="case-detail-right-des padding-0">
<el-table :data="tableData" :height="260" >
<el-table-column type="index" label="序号" width="55"></el-table-column>
<el-table-column prop="A" label="短信模板" show-overflow-tooltip ></el-table-column>
<el-table-column prop="B" label="发送对象" show-overflow-tooltip ></el-table-column>
<el-table-column prop="C" label="操作时间" show-overflow-tooltip ></el-table-column>
</el-table>
</div>
<div class="case-detail-label f-weight500 f16">视频情况</div>
<div class="case-detail-right-des padding-0">
<el-table :data="tableData" :height="220" >
<el-table-column prop="A" label="参与人" show-overflow-tooltip ></el-table-column>
<el-table-column prop="B" label="视频时间" show-overflow-tooltip ></el-table-column>
<el-table-column prop="C" label="视频时长" show-overflow-tooltip ></el-table-column>
</el-table>
<div class="flex-column item-trace">
<div class="flex-row justify-content-between case-pk-title">
<span>案件事项追踪</span>
</div>
<div class="case-pk-cont">
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:0,title:'短信发送追踪',caseNo:'1'}">
<span>短信发送追踪</span><span><a>1</a>/<a>2</a></span>
</div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:2,title:'视频调解追踪',caseNo:'1'}">
<span>视频调解追踪</span><span><a>1</a>/<a>2</a></span>
</div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:3,title:'文书生成追踪',caseNo:'1'}">
<span>文书生成追踪</span><span><a>1</a>/<a>2</a></span>
</div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:4,title:'文书签字追踪',caseNo:'1'}">
<span>文书签字追踪</span><span><a>1</a>/<a>2</a></span>
</div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:5,title:'文书签章追踪',caseNo:'1'}">
<span>文书签章追踪</span><span><a>1</a>/<a>2</a></span>
</div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:6,title:'文书送达追踪',caseNo:'1'}">
<span>文书送达追踪</span><span><a>1</a>/<a>2</a></span>
</div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:7,title:'还款凭证登记',caseNo:'1'}">
<span>还款凭证登记</span><span><a>1</a>/<a>2</a></span>
</div>
</div>
</div>
</div>
@ -253,26 +264,86 @@
</el-timeline>
</div>
</div>
<!-- 事项追踪 -->
<eventTracingDialog v-if="eventTraDialog" :eventTraDialog.sync="eventTraDialog" />
</div>
</template>
<script>
import api from "@/services/caseManagement";
import { stubString } from "lodash";
import { subtract } from "lodash";
export default {
components: {
eventTracingDialog: () => import('../../event-tracing/index.vue'),//
},
data() {
return {
eventTraDialog:null,
navactive:1,
Qualitydesc:'结清应还金额16776.74逾期未还费用2486.88',
tableData:[{A:'一次性全部还款',B:'承诺账户',C:'钟华丽-本人-188****2929',D:'CS',E:'回款金额:14289.86,回款时间:2024-12-05',F:'2024-12-05 09:13:29',G:'孟利'}],
tableData1:[{A:'一次性全部回款',B:'14,289.86元',C:'2024-12-05',D:'无',E:'',F:'',G:'',H:''}],
tableData2:[{A:'2024-12-05 00:00:00',B:'14,289.86元',C:'孟利',D:'2024-12-05 14:13:56',E:'',F:'',G:'',H:''}]
tableData2:[{A:'2024-12-05 00:00:00',B:'14,289.86元',C:'孟利',D:'2024-12-05 14:13:56',E:'',F:'',G:'',H:''}],
caseId:'',
baseInfo:{},
}
},
computed:{
// drawer
drawerContentHeight(){
let oh = document.documentElement.clientHeight;
return oh-200
}
},
async created() {
if (this.$route.query.caseId != undefined) {
this.caseId = this.$route.query.caseId;
this.getCaseInfoById();//
}
},
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 => {
console.log(res,'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
}
})
},
}
}
</script>
@ -311,6 +382,47 @@ import api from "@/services/caseManagement";
}
.case-detail-right-label{margin: 0px 0 15px 0;}
.case-detail-right-des{background-color: #F7F8FA;padding:10px;}
.item-trace{
border-radius: 8px;
.case-pk-title{
span:first-child{
font-size: 18px;
color:#1D2129;
font-weight: 500;
}
}
.case-pk-cont{
padding: 10px 0 0px 0;
position: relative;
.resultplan{
font-size: 32px;
position: absolute;
left: 115px;
top: 130px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 165px;
text-align: center;
}
div{
margin-top:5px;
margin-bottom:10px;
color: #4E5969;
background-color:#F7F8FA ;
padding: 12px;
border-radius: 2px;
a{
font-weight: 600;
}
a:first-child{
color: #E8535A;
}
}
}
}
}
.el-badge{

View File

@ -236,7 +236,9 @@
<el-checkbox :disabled="scope.row.disabled" :key="scope.row.id" :label="scope.row.id"></el-checkbox>
</el-checkbox-group>
</span>
<span class="f-weight500 color-000 f16">被申请人{{scope.row.creditorName}}</span>
<span class="f-weight500 color-000 f16">被申请人
<a v-for="(item,index) in scope.row.debtorEntityList" :key="index">{{index == 0 ?'':','}}{{item.name}}</a>
</span>
</div>
<div class="flex-row justify-content-between table-span-one">
<span class="">

View File

@ -0,0 +1,179 @@
<template>
<div>
<div v-if="!DialogDetail">
<div class="pt-8 border-b-solid-lighter-1">
<div class="height-30 flex-row align-items-center justify-content-between mb-24">
<div class="f22 color-text-primary">筛选</div>
</div>
<el-collapse-transition>
<el-row :gutter="56">
<el-col :span="8">
<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-input v-model.trim="queryParam.pkgName"
clearable placeholder="请输入案件包名称"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="12">
<div class="justify-content-start align-items-center height-40 mb-24">
<span class="tabs__search-criteria-title flex-shrink-0 pr-16">操作时间</span>
<el-date-picker
v-model="queryDate"
type="daterange"
clearable
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="handleChangeDate">
</el-date-picker>
</div>
</el-col>
<el-col :span="4">
<div class="flex-row align-items-center justify-content-end">
<el-button @click="hanldeReset">重置</el-button>
<el-button type="primary" @click="handleSearch">搜索</el-button>
</div>
</el-col>
</el-row>
</el-collapse-transition>
</div>
<!-- table -->
<div class="pt-8">
<div class="height-56 flex-row align-items-center justify-content-between">
<div class="f22 color-text-primary">外呼列表</div>
<div class="flex-row">
</div>
</div>
<div class="case-table">
<el-table :data="tableData" :height="`${contentHeight}`" >
<el-table-column type="index" label="序号" width="55"></el-table-column>
<!-- <el-table-column type="selection" width="55" ></el-table-column> -->
<el-table-column prop="pkgName" label="案件包名称" show-overflow-tooltip ></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="channel" 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="channel" label="操作人" show-overflow-tooltip ></el-table-column>
<el-table-column prop="planStartTime" label="操作时间" show-overflow-tooltip >
<template slot-scope="scope">
<span >{{ scope.row.planStartTime | formaDate("yyyy-MM-dd hh:mm:ss") }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<div class="flex-row align-items-center">
<el-button size="mini" @click="handleDelete(scope)">进入外呼队列</el-button>
<el-button size="mini" @click="handleBackCase(scope)">取消</el-button>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="text-center pt-16">
<el-pagination
@size-change="getCaseInfoList"
@current-change="getCaseInfoList"
:current-page="queryParam.current"
:page-size="queryParam.size"
layout="total, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</div>
<!-- 短信发送追踪 -->
<smsDialogDetail v-else :DialogDetail="DialogDetail" />
</div>
</template>
<script>
import api from "@/services/caseManagement";
import apipack from "@/services/casePackageManagement";
export default {
components: {
smsDialogDetail: () => import('../dtraceDetail/smsDialogDetail.vue'),//
},
props: {
eventTraDialog: {
type: Object,
default: () => {
return {}
},
},
},
data() {
return {
DialogDetail:null,
queryDate: '',
queryParam:{},
tableData:[],
total:0,
};
},
mounted () {
},
methods: {
handleChangeDate() {
this.activeUsage = ''
if(this.queryDate === null) {
this.setDateFast()
}else {
this.queryParam.beginTime = this.$util.getDayStart(this.queryDate[0])
this.queryParam.endTime = this.$util.getDayEnd(this.queryDate[1])
}
},
//
hanldeReset() {
for (let key in this.queryParam) {
this.queryParam[key] = ''
}
this.queryParam.current = 1
this.queryParam.size = 10
},
handleSearch() {
this.queryParam.size = 10;
this.queryParam.current = 1;
// this.getList(1)
},
//
getList(val){
this.queryParam.planBegin = this.queryParam.beginTime
this.queryParam.planEnd = this.queryParam.endTime
this.queryParam.current = val
// api.getCasePkgQuery(this.queryParam).then(res => {
// if (!res.code) {
// this.tableData = res.records;
// this.total = res.total;
// }
// })
},
}
};
</script>
<style scoped lang="scss">
.dialog-content{
padding: 16px 24px;
max-height:500px
}
.department-wrap{
padding: 16px 24px;
max-height: 250px;
.department-wrap-list{
margin-bottom:32px;
}
.department-wrap-list:last-child{
margin-bottom:0;
}
}
.min-height350{min-height: 350px;}
.department-dept ::v-deep .el-checkbox__label {color: $color-000000}
</style>

View File

@ -0,0 +1,192 @@
<template>
<div>
<div v-if="!DialogDetail">
<div class="pt-8 border-b-solid-lighter-1">
<div class="height-30 flex-row align-items-center justify-content-between mb-24">
<div class="f22 color-text-primary">筛选</div>
</div>
<el-collapse-transition>
<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-input v-model.trim="queryParam.pkgName"
clearable placeholder="请输入案件包名称"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="5">
<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-input v-model.trim="queryParam.caseNo"
clearable placeholder="请输入案件编号"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="9">
<div class="justify-content-start align-items-center height-40 mb-24">
<span class="tabs__search-criteria-title flex-shrink-0 pr-16">操作时间</span>
<el-date-picker
v-model="queryDate"
type="daterange"
clearable
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="handleChangeDate">
</el-date-picker>
</div>
</el-col>
<el-col :span="4">
<div class="flex-row align-items-center justify-content-end">
<el-button @click="hanldeReset">重置</el-button>
<el-button type="primary" @click="handleSearch">搜索</el-button>
</div>
</el-col>
</el-row>
</el-collapse-transition>
</div>
<!-- table -->
<div class="pt-8">
<div class="height-56 flex-row align-items-center justify-content-between">
<div class="f22 color-text-primary">追踪列表</div>
<div class="flex-row">
</div>
</div>
<div class="case-table">
<el-table :data="tableData" :height="`${contentHeight}`" >
<el-table-column type="index" label="序号" width="55"></el-table-column>
<!-- <el-table-column type="selection" width="55" ></el-table-column> -->
<el-table-column prop="pkgName" label="案件包名称" show-overflow-tooltip ></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="channel" label="送达状态" show-overflow-tooltip ></el-table-column>
<el-table-column prop="channel" label="操作人" show-overflow-tooltip ></el-table-column>
<el-table-column prop="planStartTime" label="操作时间" show-overflow-tooltip >
<template slot-scope="scope">
<span >{{ scope.row.planStartTime | formaDate("yyyy-MM-dd hh:mm:ss") }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<div class="flex-row align-items-center">
<el-button size="mini" @click="handleDetail(scope)">明细</el-button>
<el-button size="mini" @click="handleDelete(scope)">重试</el-button>
<el-button size="mini" @click="handleBackCase(scope)">取消</el-button>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="text-center pt-16">
<el-pagination
@size-change="getCaseInfoList"
@current-change="getCaseInfoList"
:current-page="queryParam.current"
:page-size="queryParam.size"
layout="total, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</div>
<!-- 追踪明细 -->
<officeDeliveryDialogDetail v-else :DialogDetail="officeDeliveryDialogDetail" />
</div>
</template>
<script>
import api from "@/services/caseManagement";
import apipack from "@/services/casePackageManagement";
export default {
components: {
officeDeliveryDialogDetail: () => import('../dtraceDetail/officeDeliveryDialogDetail.vue'),//
},
props: {
eventTraDialog: {
type: Object,
default: () => {
return {}
},
},
},
data() {
return {
DialogDetail:null,
queryDate: '',
queryParam:{
caseNo:''
},
tableData:[],
total:0,
};
},
mounted () {
this.queryParam.caseNo = this.eventTraDialog.caseNo
},
methods: {
handleChangeDate() {
this.activeUsage = ''
if(this.queryDate === null) {
this.setDateFast()
}else {
this.queryParam.beginTime = this.$util.getDayStart(this.queryDate[0])
this.queryParam.endTime = this.$util.getDayEnd(this.queryDate[1])
}
},
//
hanldeReset() {
for (let key in this.queryParam) {
this.queryParam[key] = ''
}
this.queryParam.current = 1
this.queryParam.size = 10
},
handleSearch() {
this.queryParam.size = 10;
this.queryParam.current = 1;
// this.getList(1)
},
//
getList(val){
this.queryParam.planBegin = this.queryParam.beginTime
this.queryParam.planEnd = this.queryParam.endTime
this.queryParam.current = val
// api.getCasePkgQuery(this.queryParam).then(res => {
// if (!res.code) {
// this.tableData = res.records;
// this.total = res.total;
// }
// })
},
handleDetail(scope){
this.DialogDetail = scope.row
}
}
};
</script>
<style scoped lang="scss">
.dialog-content{
padding: 16px 24px;
max-height:500px
}
.department-wrap{
padding: 16px 24px;
max-height: 250px;
.department-wrap-list{
margin-bottom:32px;
}
.department-wrap-list:last-child{
margin-bottom:0;
}
}
.min-height350{min-height: 350px;}
.department-dept ::v-deep .el-checkbox__label {color: $color-000000}
</style>

View File

@ -0,0 +1,193 @@
<template>
<div>
<div v-if="!DialogDetail">
<div class="pt-8 border-b-solid-lighter-1">
<div class="height-30 flex-row align-items-center justify-content-between mb-24">
<div class="f22 color-text-primary">筛选</div>
</div>
<el-collapse-transition>
<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-input v-model.trim="queryParam.pkgName"
clearable placeholder="请输入案件包名称"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="5">
<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-input v-model.trim="queryParam.caseNo"
clearable placeholder="请输入案件编号"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="9">
<div class="justify-content-start align-items-center height-40 mb-24">
<span class="tabs__search-criteria-title flex-shrink-0 pr-16">操作时间</span>
<el-date-picker
v-model="queryDate"
type="daterange"
clearable
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="handleChangeDate">
</el-date-picker>
</div>
</el-col>
<el-col :span="4">
<div class="flex-row align-items-center justify-content-end">
<el-button @click="hanldeReset">重置</el-button>
<el-button type="primary" @click="handleSearch">搜索</el-button>
</div>
</el-col>
</el-row>
</el-collapse-transition>
</div>
<!-- table -->
<div class="pt-8">
<div class="height-56 flex-row align-items-center justify-content-between">
<div class="f22 color-text-primary">追踪列表</div>
<div class="flex-row">
</div>
</div>
<div class="case-table">
<el-table :data="tableData" :height="`${contentHeight}`" >
<el-table-column type="index" label="序号" width="55"></el-table-column>
<!-- <el-table-column type="selection" width="55" ></el-table-column> -->
<el-table-column prop="pkgName" label="案件包名称" show-overflow-tooltip ></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="channel" 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="planStartTime" label="操作时间" show-overflow-tooltip >
<template slot-scope="scope">
<span >{{ scope.row.planStartTime | formaDate("yyyy-MM-dd hh:mm:ss") }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<div class="flex-row align-items-center">
<el-button size="mini" @click="handleDetail(scope)">明细</el-button>
<el-button size="mini" @click="handleDelete(scope)">重试</el-button>
<el-button size="mini" @click="handleBackCase(scope)">取消</el-button>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="text-center pt-16">
<el-pagination
@size-change="getCaseInfoList"
@current-change="getCaseInfoList"
:current-page="queryParam.current"
:page-size="queryParam.size"
layout="total, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</div>
<!-- 短信发送追踪 -->
<officeDialogDetail v-else :DialogDetail="DialogDetail" />
</div>
</template>
<script>
import api from "@/services/caseManagement";
import apipack from "@/services/casePackageManagement";
export default {
components: {
officeDialogDetail: () => import('../dtraceDetail/officeDialogDetail.vue'),//
},
props: {
eventTraDialog: {
type: Object,
default: () => {
return {}
},
},
},
data() {
return {
DialogDetail:null,
queryDate: '',
queryParam:{
caseNo:''
},
tableData:[],
total:0,
};
},
mounted () {
this.queryParam.caseNo = this.eventTraDialog.caseNo
},
methods: {
handleChangeDate() {
this.activeUsage = ''
if(this.queryDate === null) {
this.setDateFast()
}else {
this.queryParam.beginTime = this.$util.getDayStart(this.queryDate[0])
this.queryParam.endTime = this.$util.getDayEnd(this.queryDate[1])
}
},
//
hanldeReset() {
for (let key in this.queryParam) {
this.queryParam[key] = ''
}
this.queryParam.current = 1
this.queryParam.size = 10
},
handleSearch() {
this.queryParam.size = 10;
this.queryParam.current = 1;
// this.getList(1)
},
//
getList(val){
this.queryParam.planBegin = this.queryParam.beginTime
this.queryParam.planEnd = this.queryParam.endTime
this.queryParam.current = val
// api.getCasePkgQuery(this.queryParam).then(res => {
// if (!res.code) {
// this.tableData = res.records;
// this.total = res.total;
// }
// })
},
handleDetail(scope){
this.DialogDetail = scope.row
}
}
};
</script>
<style scoped lang="scss">
.dialog-content{
padding: 16px 24px;
max-height:500px
}
.department-wrap{
padding: 16px 24px;
max-height: 250px;
.department-wrap-list{
margin-bottom:32px;
}
.department-wrap-list:last-child{
margin-bottom:0;
}
}
.min-height350{min-height: 350px;}
.department-dept ::v-deep .el-checkbox__label {color: $color-000000}
</style>

View File

@ -0,0 +1,191 @@
<template>
<div>
<div >
<div class="pt-8 border-b-solid-lighter-1">
<div class="height-30 flex-row align-items-center justify-content-between mb-24">
<div class="f22 color-text-primary">筛选</div>
</div>
<el-collapse-transition>
<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-input v-model.trim="queryParam.pkgName"
clearable placeholder="请输入案件包名称"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="5">
<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-input v-model.trim="queryParam.caseNo"
clearable placeholder="请输入案件编号"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="9">
<div class="justify-content-start align-items-center height-40 mb-24">
<span class="tabs__search-criteria-title flex-shrink-0 pr-16">操作时间</span>
<el-date-picker
v-model="queryDate"
type="daterange"
clearable
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="handleChangeDate">
</el-date-picker>
</div>
</el-col>
<el-col :span="4">
<div class="flex-row align-items-center justify-content-end">
<el-button @click="hanldeReset">重置</el-button>
<el-button type="primary" @click="handleSearch">搜索</el-button>
</div>
</el-col>
</el-row>
</el-collapse-transition>
</div>
<!-- table -->
<div class="pt-8">
<div class="height-56 flex-row align-items-center justify-content-between">
<div class="f22 color-text-primary">追踪列表</div>
<div class="flex-row">
</div>
</div>
<div class="case-table">
<el-table :data="tableData" :height="`${contentHeight}`" >
<el-table-column type="index" label="序号" width="55"></el-table-column>
<!-- <el-table-column type="selection" width="55" ></el-table-column> -->
<el-table-column prop="pkgName" label="案件包名称" show-overflow-tooltip ></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="channel" 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="planStartTime" label="操作时间" show-overflow-tooltip >
<template slot-scope="scope">
<span >{{ scope.row.planStartTime | formaDate("yyyy-MM-dd hh:mm:ss") }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<div class="flex-row align-items-center">
<el-button size="mini" @click="handleDelete(scope)">重试</el-button>
<el-button size="mini" @click="handleBackCase(scope)">取消</el-button>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="text-center pt-16">
<el-pagination
@size-change="getCaseInfoList"
@current-change="getCaseInfoList"
:current-page="queryParam.current"
:page-size="queryParam.size"
layout="total, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</div>
</div>
</template>
<script>
import api from "@/services/caseManagement";
import apipack from "@/services/casePackageManagement";
export default {
components: {
},
props: {
eventTraDialog: {
type: Object,
default: () => {
return {}
},
},
},
data() {
return {
DialogDetail:null,
queryDate: '',
queryParam:{
caseNo:''
},
tableData:[],
total:0,
};
},
mounted () {
this.queryParam.caseNo = this.eventTraDialog.caseNo
},
methods: {
handleChangeDate() {
this.activeUsage = ''
if(this.queryDate === null) {
this.setDateFast()
}else {
this.queryParam.beginTime = this.$util.getDayStart(this.queryDate[0])
this.queryParam.endTime = this.$util.getDayEnd(this.queryDate[1])
}
},
//
hanldeReset() {
for (let key in this.queryParam) {
this.queryParam[key] = ''
}
this.queryParam.current = 1
this.queryParam.size = 10
},
handleSearch() {
this.queryParam.size = 10;
this.queryParam.current = 1;
// this.getList(1)
},
//
getList(val){
this.queryParam.planBegin = this.queryParam.beginTime
this.queryParam.planEnd = this.queryParam.endTime
this.queryParam.current = val
// api.getCasePkgQuery(this.queryParam).then(res => {
// if (!res.code) {
// this.tableData = res.records;
// this.total = res.total;
// }
// })
},
handleDetail(scope){
this.DialogDetail = scope.row
}
}
};
</script>
<style scoped lang="scss">
.dialog-content{
padding: 16px 24px;
max-height:500px
}
.department-wrap{
padding: 16px 24px;
max-height: 250px;
.department-wrap-list{
margin-bottom:32px;
}
.department-wrap-list:last-child{
margin-bottom:0;
}
}
.min-height350{min-height: 350px;}
.department-dept ::v-deep .el-checkbox__label {color: $color-000000}
</style>

View File

@ -0,0 +1,198 @@
<template>
<div>
<div v-if="!DialogDetail">
<div class="pt-8 border-b-solid-lighter-1">
<div class="height-30 flex-row align-items-center justify-content-between mb-24">
<div class="f22 color-text-primary">筛选</div>
</div>
<el-collapse-transition>
<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-input v-model.trim="queryParam.pkgName"
clearable placeholder="请输入案件包名称"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="5">
<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-input v-model.trim="queryParam.caseNo"
clearable placeholder="请输入案件编号"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="9">
<div class="justify-content-start align-items-center height-40 mb-24">
<span class="tabs__search-criteria-title flex-shrink-0 pr-16">操作时间</span>
<el-date-picker
v-model="queryDate"
type="daterange"
clearable
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="handleChangeDate">
</el-date-picker>
</div>
</el-col>
<el-col :span="4">
<div class="flex-row align-items-center justify-content-end">
<el-button @click="hanldeReset">重置</el-button>
<el-button type="primary" @click="handleSearch">搜索</el-button>
</div>
</el-col>
</el-row>
</el-collapse-transition>
</div>
<!-- table -->
<div class="pt-8">
<div class="height-56 flex-row align-items-center justify-content-between">
<div class="f22 color-text-primary">追踪列表</div>
<div class="flex-row">
</div>
</div>
<div class="case-table">
<el-table :data="tableData" :height="`${contentHeight}`" >
<el-table-column type="index" label="序号" width="55"></el-table-column>
<!-- <el-table-column type="selection" width="55" ></el-table-column> -->
<el-table-column prop="pkgName" label="案件包名称" show-overflow-tooltip ></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="planStartTime" label="签字截止时间" show-overflow-tooltip >
<template slot-scope="scope">
<span >{{ scope.row.planStartTime | formaDate("yyyy-MM-dd hh:mm:ss") }}</span>
</template>
</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="channel" label="操作人" show-overflow-tooltip ></el-table-column>
<el-table-column prop="planStartTime" label="操作时间" show-overflow-tooltip >
<template slot-scope="scope">
<span >{{ scope.row.planStartTime | formaDate("yyyy-MM-dd hh:mm:ss") }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<div class="flex-row align-items-center">
<el-button size="mini" @click="handleDetail(scope)">明细</el-button>
<el-button size="mini" @click="handleDelete(scope)">重试</el-button>
<el-button size="mini" @click="handleBackCase(scope)">取消</el-button>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="text-center pt-16">
<el-pagination
@size-change="getCaseInfoList"
@current-change="getCaseInfoList"
:current-page="queryParam.current"
:page-size="queryParam.size"
layout="total, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</div>
<!-- 追踪明细 -->
<officewriteDialogDetail v-else :DialogDetail="DialogDetail" />
</div>
</template>
<script>
import api from "@/services/caseManagement";
import apipack from "@/services/casePackageManagement";
export default {
components: {
officeWriteDialogDetail: () => import('../dtraceDetail/officeWDialogDetail.vue'),//
},
props: {
eventTraDialog: {
type: Object,
default: () => {
return {}
},
},
},
data() {
return {
DialogDetail:null,
queryDate: '',
queryParam:{
caseNo:''
},
tableData:[],
total:0,
};
},
mounted () {
this.queryParam.caseNo = this.eventTraDialog.caseNo
},
methods: {
handleChangeDate() {
this.activeUsage = ''
if(this.queryDate === null) {
this.setDateFast()
}else {
this.queryParam.beginTime = this.$util.getDayStart(this.queryDate[0])
this.queryParam.endTime = this.$util.getDayEnd(this.queryDate[1])
}
},
//
hanldeReset() {
for (let key in this.queryParam) {
this.queryParam[key] = ''
}
this.queryParam.current = 1
this.queryParam.size = 10
},
handleSearch() {
this.queryParam.size = 10;
this.queryParam.current = 1;
// this.getList(1)
},
//
getList(val){
this.queryParam.planBegin = this.queryParam.beginTime
this.queryParam.planEnd = this.queryParam.endTime
this.queryParam.current = val
// api.getCasePkgQuery(this.queryParam).then(res => {
// if (!res.code) {
// this.tableData = res.records;
// this.total = res.total;
// }
// })
},
handleDetail(scope){
this.DialogDetail = scope.row
}
}
};
</script>
<style scoped lang="scss">
.dialog-content{
padding: 16px 24px;
max-height:500px
}
.department-wrap{
padding: 16px 24px;
max-height: 250px;
.department-wrap-list{
margin-bottom:32px;
}
.department-wrap-list:last-child{
margin-bottom:0;
}
}
.min-height350{min-height: 350px;}
.department-dept ::v-deep .el-checkbox__label {color: $color-000000}
</style>

View File

@ -0,0 +1,192 @@
<template>
<div>
<div v-if="!DialogDetail">
<div class="pt-8 border-b-solid-lighter-1">
<div class="height-30 flex-row align-items-center justify-content-between mb-24">
<div class="f22 color-text-primary">筛选</div>
</div>
<el-collapse-transition>
<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-input v-model.trim="queryParam.pkgName"
clearable placeholder="请输入案件包名称"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="5">
<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-input v-model.trim="queryParam.caseNo"
clearable placeholder="请输入案件编号"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="9">
<div class="justify-content-start align-items-center height-40 mb-24">
<span class="tabs__search-criteria-title flex-shrink-0 pr-16">操作时间</span>
<el-date-picker
v-model="queryDate"
type="daterange"
clearable
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="handleChangeDate">
</el-date-picker>
</div>
</el-col>
<el-col :span="4">
<div class="flex-row align-items-center justify-content-end">
<el-button @click="hanldeReset">重置</el-button>
<el-button type="primary" @click="handleSearch">搜索</el-button>
</div>
</el-col>
</el-row>
</el-collapse-transition>
</div>
<!-- table -->
<div class="pt-8">
<div class="height-56 flex-row align-items-center justify-content-between">
<div class="f22 color-text-primary">还款登记列表</div>
<div class="flex-row">
</div>
</div>
<div class="case-table">
<el-table :data="tableData" :height="`${contentHeight}`" >
<el-table-column type="index" label="序号" width="55"></el-table-column>
<!-- <el-table-column type="selection" width="55" ></el-table-column> -->
<el-table-column prop="pkgName" label="案件包名称" show-overflow-tooltip ></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="channel" 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="channel" label="实际还款金额" show-overflow-tooltip ></el-table-column>
<el-table-column prop="channel" label="操作人" show-overflow-tooltip ></el-table-column>
<el-table-column prop="planStartTime" label="操作时间" show-overflow-tooltip >
<template slot-scope="scope">
<span >{{ scope.row.planStartTime | formaDate("yyyy-MM-dd hh:mm:ss") }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<div class="flex-row align-items-center">
<el-button size="mini" @click="handleDelete(scope)">查看</el-button>
<el-button size="mini" @click="handleBackCase(scope)">效验</el-button>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="text-center pt-16">
<el-pagination
@size-change="getCaseInfoList"
@current-change="getCaseInfoList"
:current-page="queryParam.current"
:page-size="queryParam.size"
layout="total, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</div>
</div>
</template>
<script>
import api from "@/services/caseManagement";
import apipack from "@/services/casePackageManagement";
export default {
components: {
},
props: {
eventTraDialog: {
type: Object,
default: () => {
return {}
},
},
},
data() {
return {
DialogDetail:null,
queryDate: '',
queryParam:{
caseNo:''
},
tableData:[],
total:0,
};
},
mounted () {
this.queryParam.caseNo = this.eventTraDialog.caseNo
},
methods: {
handleChangeDate() {
this.activeUsage = ''
if(this.queryDate === null) {
this.setDateFast()
}else {
this.queryParam.beginTime = this.$util.getDayStart(this.queryDate[0])
this.queryParam.endTime = this.$util.getDayEnd(this.queryDate[1])
}
},
//
hanldeReset() {
for (let key in this.queryParam) {
this.queryParam[key] = ''
}
this.queryParam.current = 1
this.queryParam.size = 10
},
handleSearch() {
this.queryParam.size = 10;
this.queryParam.current = 1;
// this.getList(1)
},
//
getList(val){
this.queryParam.planBegin = this.queryParam.beginTime
this.queryParam.planEnd = this.queryParam.endTime
this.queryParam.current = val
// api.getCasePkgQuery(this.queryParam).then(res => {
// if (!res.code) {
// this.tableData = res.records;
// this.total = res.total;
// }
// })
},
handleDetail(scope){
this.DialogDetail = scope.row
}
}
};
</script>
<style scoped lang="scss">
.dialog-content{
padding: 16px 24px;
max-height:500px
}
.department-wrap{
padding: 16px 24px;
max-height: 250px;
.department-wrap-list{
margin-bottom:32px;
}
.department-wrap-list:last-child{
margin-bottom:0;
}
}
.min-height350{min-height: 350px;}
.department-dept ::v-deep .el-checkbox__label {color: $color-000000}
</style>

View File

@ -0,0 +1,195 @@
<template>
<div>
<div v-if="!DialogDetail">
<div class="pt-8 border-b-solid-lighter-1">
<div class="height-30 flex-row align-items-center justify-content-between mb-24">
<div class="f22 color-text-primary">筛选</div>
</div>
<el-collapse-transition>
<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-input v-model.trim="queryParam.pkgName"
clearable placeholder="请输入案件包名称"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="5">
<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-input v-model.trim="queryParam.caseNo"
clearable placeholder="请输入案件编号"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="9">
<div class="justify-content-start align-items-center height-40 mb-24">
<span class="tabs__search-criteria-title flex-shrink-0 pr-16">操作时间</span>
<el-date-picker
v-model="queryDate"
type="daterange"
clearable
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="handleChangeDate">
</el-date-picker>
</div>
</el-col>
<el-col :span="4">
<div class="flex-row align-items-center justify-content-end">
<el-button @click="hanldeReset">重置</el-button>
<el-button type="primary" @click="handleSearch">搜索</el-button>
</div>
</el-col>
</el-row>
</el-collapse-transition>
</div>
<!-- table -->
<div class="pt-8">
<div class="height-56 flex-row align-items-center justify-content-between">
<div class="f22 color-text-primary">追踪列表</div>
<div class="flex-row">
</div>
</div>
<div class="case-table">
<el-table :data="tableData" :height="`${contentHeight}`" >
<el-table-column type="index" label="序号" width="55"></el-table-column>
<!-- <el-table-column type="selection" width="55" ></el-table-column> -->
<el-table-column prop="pkgName" label="案件包名称" show-overflow-tooltip ></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="channel" 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="channel" label="获取回执中" show-overflow-tooltip ></el-table-column>
<el-table-column prop="channel" label="操作人" show-overflow-tooltip ></el-table-column>
<el-table-column prop="planStartTime" label="操作时间" show-overflow-tooltip >
<template slot-scope="scope">
<span >{{ scope.row.planStartTime | formaDate("yyyy-MM-dd hh:mm:ss") }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<div class="flex-row align-items-center">
<el-button size="mini" @click="handleDetail(scope)">明细</el-button>
<el-button size="mini" @click="handleDelete(scope)">重试</el-button>
<el-button size="mini" @click="handleBackCase(scope)">取消</el-button>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="text-center pt-16">
<el-pagination
@size-change="getCaseInfoList"
@current-change="getCaseInfoList"
:current-page="queryParam.current"
:page-size="queryParam.size"
layout="total, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</div>
<!-- 短信发送追踪 -->
<smsDialogDetail v-else :DialogDetail="DialogDetail" />
</div>
</template>
<script>
import api from "@/services/caseManagement";
import apipack from "@/services/casePackageManagement";
export default {
components: {
smsDialogDetail: () => import('../dtraceDetail/smsDialogDetail.vue'),//
},
props: {
eventTraDialog: {
type: Object,
default: () => {
return {}
},
},
},
data() {
return {
DialogDetail:null,
queryDate: '',
queryParam:{
caseNo:''
},
tableData:[],
total:0,
};
},
mounted () {
this.queryParam.caseNo = this.eventTraDialog.caseNo
},
methods: {
handleChangeDate() {
this.activeUsage = ''
if(this.queryDate === null) {
this.setDateFast()
}else {
this.queryParam.beginTime = this.$util.getDayStart(this.queryDate[0])
this.queryParam.endTime = this.$util.getDayEnd(this.queryDate[1])
}
},
//
hanldeReset() {
for (let key in this.queryParam) {
this.queryParam[key] = ''
}
this.queryParam.current = 1
this.queryParam.size = 10
},
handleSearch() {
this.queryParam.size = 10;
this.queryParam.current = 1;
// this.getList(1)
},
//
getList(val){
this.queryParam.planBegin = this.queryParam.beginTime
this.queryParam.planEnd = this.queryParam.endTime
this.queryParam.current = val
// api.getCasePkgQuery(this.queryParam).then(res => {
// if (!res.code) {
// this.tableData = res.records;
// this.total = res.total;
// }
// })
},
handleDetail(scope){
this.DialogDetail = scope.row
}
}
};
</script>
<style scoped lang="scss">
.dialog-content{
padding: 16px 24px;
max-height:500px
}
.department-wrap{
padding: 16px 24px;
max-height: 250px;
.department-wrap-list{
margin-bottom:32px;
}
.department-wrap-list:last-child{
margin-bottom:0;
}
}
.min-height350{min-height: 350px;}
.department-dept ::v-deep .el-checkbox__label {color: $color-000000}
</style>

View File

@ -0,0 +1,191 @@
<template>
<div>
<div v-if="!DialogDetail">
<div class="pt-8 border-b-solid-lighter-1">
<div class="height-30 flex-row align-items-center justify-content-between mb-24">
<div class="f22 color-text-primary">筛选</div>
</div>
<el-collapse-transition>
<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-input v-model.trim="queryParam.pkgName"
clearable placeholder="请输入案件包名称"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="5">
<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-input v-model.trim="queryParam.caseNo"
clearable placeholder="请输入案件编号"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="9">
<div class="justify-content-start align-items-center height-40 mb-24">
<span class="tabs__search-criteria-title flex-shrink-0 pr-16">操作时间</span>
<el-date-picker
v-model="queryDate"
type="daterange"
clearable
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="handleChangeDate">
</el-date-picker>
</div>
</el-col>
<el-col :span="4">
<div class="flex-row align-items-center justify-content-end">
<el-button @click="hanldeReset">重置</el-button>
<el-button type="primary" @click="handleSearch">搜索</el-button>
</div>
</el-col>
</el-row>
</el-collapse-transition>
</div>
<!-- table -->
<div class="pt-8">
<div class="height-56 flex-row align-items-center justify-content-between">
<div class="f22 color-text-primary">追踪列表</div>
<div class="flex-row">
</div>
</div>
<div class="case-table">
<el-table :data="tableData" :height="`${contentHeight}`" >
<el-table-column type="index" label="序号" width="55"></el-table-column>
<!-- <el-table-column type="selection" width="55" ></el-table-column> -->
<el-table-column prop="pkgName" label="案件包名称" show-overflow-tooltip ></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="channel" 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="planStartTime" label="操作时间" show-overflow-tooltip >
<template slot-scope="scope">
<span >{{ scope.row.planStartTime | formaDate("yyyy-MM-dd hh:mm:ss") }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<div class="flex-row align-items-center">
<el-button size="mini" @click="handleDelete(scope)">进入视频间</el-button>
<el-button size="mini" @click="handleDelete(scope)">修改</el-button>
<el-button size="mini" @click="handleBackCase(scope)">取消</el-button>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="text-center pt-16">
<el-pagination
@size-change="getCaseInfoList"
@current-change="getCaseInfoList"
:current-page="queryParam.current"
:page-size="queryParam.size"
layout="total, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</div>
<!-- 短信发送追踪 -->
<smsDialogDetail v-else :DialogDetail="DialogDetail" />
</div>
</template>
<script>
import api from "@/services/caseManagement";
import apipack from "@/services/casePackageManagement";
export default {
components: {
smsDialogDetail: () => import('../dtraceDetail/smsDialogDetail.vue'),//
},
props: {
eventTraDialog: {
type: Object,
default: () => {
return {}
},
},
},
data() {
return {
DialogDetail:null,
queryDate: '',
queryParam:{
caseNo:''
},
tableData:[],
total:0,
};
},
mounted () {
this.queryParam.caseNo = this.eventTraDialog.caseNo
},
methods: {
handleChangeDate() {
this.activeUsage = ''
if(this.queryDate === null) {
this.setDateFast()
}else {
this.queryParam.beginTime = this.$util.getDayStart(this.queryDate[0])
this.queryParam.endTime = this.$util.getDayEnd(this.queryDate[1])
}
},
//
hanldeReset() {
for (let key in this.queryParam) {
this.queryParam[key] = ''
}
this.queryParam.current = 1
this.queryParam.size = 10
},
handleSearch() {
this.queryParam.size = 10;
this.queryParam.current = 1;
// this.getList(1)
},
//
getList(val){
this.queryParam.planBegin = this.queryParam.beginTime
this.queryParam.planEnd = this.queryParam.endTime
this.queryParam.current = val
// api.getCasePkgQuery(this.queryParam).then(res => {
// if (!res.code) {
// this.tableData = res.records;
// this.total = res.total;
// }
// })
},
}
};
</script>
<style scoped lang="scss">
.dialog-content{
padding: 16px 24px;
max-height:500px
}
.department-wrap{
padding: 16px 24px;
max-height: 250px;
.department-wrap-list{
margin-bottom:32px;
}
.department-wrap-list:last-child{
margin-bottom:0;
}
}
.min-height350{min-height: 350px;}
.department-dept ::v-deep .el-checkbox__label {color: $color-000000}
</style>

View File

@ -0,0 +1,169 @@
<template>
<div>
<div class="pt-8 border-b-solid-lighter-1">
<div class="height-30 flex-row align-items-center justify-content-between mb-24">
<div class="f22 color-text-primary">筛选</div>
</div>
<el-collapse-transition>
<el-row :gutter="56">
<el-col :span="8">
<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-input v-model.trim="queryParam.pkgName"
clearable placeholder="请输入案件包名称"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="12">
<div class="justify-content-start align-items-center height-40 mb-24">
<span class="tabs__search-criteria-title flex-shrink-0 pr-16">操作时间</span>
<el-date-picker
v-model="queryDate"
type="daterange"
clearable
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="handleChangeDate">
</el-date-picker>
</div>
</el-col>
<el-col :span="4">
<div class="flex-row align-items-center justify-content-end">
<el-button @click="hanldeReset">重置</el-button>
<el-button type="primary" @click="handleSearch">搜索</el-button>
</div>
</el-col>
</el-row>
</el-collapse-transition>
</div>
<!-- table -->
<div class="pt-8">
<div class="height-56 flex-row align-items-center justify-content-between">
<div class="f22 color-text-primary">追踪列表</div>
<div class="flex-row">
</div>
</div>
<div class="case-table">
<el-table :data="tableData" :height="`${contentHeight}`" >
<el-table-column type="index" label="序号" width="55"></el-table-column>
<el-table-column prop="pkgName" label="案件包名称" show-overflow-tooltip ></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="channel" label="送达状态" show-overflow-tooltip ></el-table-column>
<el-table-column prop="planStartTime" label="送达时间" show-overflow-tooltip >
<template slot-scope="scope">
<span >{{ scope.row.planStartTime | formaDate("yyyy-MM-dd hh:mm:ss") }}</span>
</template>
</el-table-column>
<el-table-column prop="channel" label="未送达原因" show-overflow-tooltip ></el-table-column>
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<div class="flex-row align-items-center">
<el-button size="mini" @click="handleDelete(scope)">重试</el-button>
<el-button size="mini" @click="handleBackCase(scope)">取消</el-button>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="text-center pt-16">
<el-pagination
@size-change="getCaseInfoList"
@current-change="getCaseInfoList"
:current-page="queryParam.current"
:page-size="queryParam.size"
layout="total, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</div>
</template>
<script>
import api from "@/services/caseManagement";
import apipack from "@/services/casePackageManagement";
export default {
components: {
},
props: {
caseAllocationDialog: {
type: Object,
default: () => {
return {}
},
},
},
data() {
return {
queryDate: '',
queryParam:{},
tableData:[],
total:0,
};
},
mounted () {
},
methods: {
handleChangeDate() {
this.activeUsage = ''
if(this.queryDate === null) {
this.setDateFast()
}else {
this.queryParam.beginTime = this.$util.getDayStart(this.queryDate[0])
this.queryParam.endTime = this.$util.getDayEnd(this.queryDate[1])
}
},
//
hanldeReset() {
for (let key in this.queryParam) {
this.queryParam[key] = ''
}
this.queryParam.current = 1
this.queryParam.size = 10
},
handleSearch() {
this.queryParam.size = 10;
this.queryParam.current = 1;
// this.getList(1)
},
//
getList(val){
this.queryParam.planBegin = this.queryParam.beginTime
this.queryParam.planEnd = this.queryParam.endTime
this.queryParam.current = val
// api.getCasePkgQuery(this.queryParam).then(res => {
// if (!res.code) {
// this.tableData = res.records;
// this.total = res.total;
// }
// })
},
}
};
</script>
<style scoped lang="scss">
.dialog-content{
padding: 16px 24px;
max-height:500px
}
.department-wrap{
padding: 16px 24px;
max-height: 250px;
.department-wrap-list{
margin-bottom:32px;
}
.department-wrap-list:last-child{
margin-bottom:0;
}
}
.min-height350{min-height: 350px;}
.department-dept ::v-deep .el-checkbox__label {color: $color-000000}
</style>

View File

@ -0,0 +1,155 @@
<template>
<div>
<div class="pt-8 border-b-solid-lighter-1">
<div class="height-30 flex-row align-items-center justify-content-between mb-24">
<div class="f22 color-text-primary">筛选</div>
</div>
<el-collapse-transition>
<el-row :gutter="56">
<el-col :span="8">
<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-input v-model.trim="queryParam.pkgName"
clearable placeholder="请输入案件包名称"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="12">
<div class="justify-content-start align-items-center height-40 mb-24">
<span class="tabs__search-criteria-title flex-shrink-0 pr-16">操作时间</span>
<el-date-picker
v-model="queryDate"
type="daterange"
clearable
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="handleChangeDate">
</el-date-picker>
</div>
</el-col>
<el-col :span="4">
<div class="flex-row align-items-center justify-content-end">
<el-button @click="hanldeReset">重置</el-button>
<el-button type="primary" @click="handleSearch">搜索</el-button>
</div>
</el-col>
</el-row>
</el-collapse-transition>
</div>
<!-- table -->
<div class="pt-8">
<div class="height-56 flex-row align-items-center justify-content-between">
<div class="f22 color-text-primary">追踪列表</div>
<div class="flex-row">
</div>
</div>
<div class="case-table">
<el-table :data="tableData" :height="`${contentHeight}`" >
<el-table-column type="index" label="序号" width="55"></el-table-column>
<el-table-column prop="pkgName" label="案件包名称" show-overflow-tooltip ></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="channel" label="失败原因" show-overflow-tooltip ></el-table-column>
</el-table>
</div>
<div class="text-center pt-16">
<el-pagination
@size-change="getCaseInfoList"
@current-change="getCaseInfoList"
:current-page="queryParam.current"
:page-size="queryParam.size"
layout="total, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</div>
</template>
<script>
import api from "@/services/caseManagement";
import apipack from "@/services/casePackageManagement";
export default {
components: {
},
props: {
caseAllocationDialog: {
type: Object,
default: () => {
return {}
},
},
},
data() {
return {
queryDate: '',
queryParam:{},
tableData:[],
total:0,
};
},
mounted () {
},
methods: {
handleChangeDate() {
this.activeUsage = ''
if(this.queryDate === null) {
this.setDateFast()
}else {
this.queryParam.beginTime = this.$util.getDayStart(this.queryDate[0])
this.queryParam.endTime = this.$util.getDayEnd(this.queryDate[1])
}
},
//
hanldeReset() {
for (let key in this.queryParam) {
this.queryParam[key] = ''
}
this.queryParam.current = 1
this.queryParam.size = 10
},
handleSearch() {
this.queryParam.size = 10;
this.queryParam.current = 1;
// this.getList(1)
},
//
getList(val){
this.queryParam.planBegin = this.queryParam.beginTime
this.queryParam.planEnd = this.queryParam.endTime
this.queryParam.current = val
// api.getCasePkgQuery(this.queryParam).then(res => {
// if (!res.code) {
// this.tableData = res.records;
// this.total = res.total;
// }
// })
},
}
};
</script>
<style scoped lang="scss">
.dialog-content{
padding: 16px 24px;
max-height:500px
}
.department-wrap{
padding: 16px 24px;
max-height: 250px;
.department-wrap-list{
margin-bottom:32px;
}
.department-wrap-list:last-child{
margin-bottom:0;
}
}
.min-height350{min-height: 350px;}
.department-dept ::v-deep .el-checkbox__label {color: $color-000000}
</style>

View File

@ -0,0 +1,156 @@
<template>
<div>
<div class="pt-8 border-b-solid-lighter-1">
<div class="height-30 flex-row align-items-center justify-content-between mb-24">
<div class="f22 color-text-primary">筛选</div>
</div>
<el-collapse-transition>
<el-row :gutter="56">
<el-col :span="8">
<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-input v-model.trim="queryParam.pkgName"
clearable placeholder="请输入案件包名称"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="12">
<div class="justify-content-start align-items-center height-40 mb-24">
<span class="tabs__search-criteria-title flex-shrink-0 pr-16">操作时间</span>
<el-date-picker
v-model="queryDate"
type="daterange"
clearable
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="handleChangeDate">
</el-date-picker>
</div>
</el-col>
<el-col :span="4">
<div class="flex-row align-items-center justify-content-end">
<el-button @click="hanldeReset">重置</el-button>
<el-button type="primary" @click="handleSearch">搜索</el-button>
</div>
</el-col>
</el-row>
</el-collapse-transition>
</div>
<!-- table -->
<div class="pt-8">
<div class="height-56 flex-row align-items-center justify-content-between">
<div class="f22 color-text-primary">追踪列表</div>
<div class="flex-row">
</div>
</div>
<div class="case-table">
<el-table :data="tableData" :height="`${contentHeight}`" >
<el-table-column type="index" label="序号" width="55"></el-table-column>
<el-table-column prop="pkgName" label="案件包名称" show-overflow-tooltip ></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="channel" label="已签字当事人" show-overflow-tooltip ></el-table-column>
<el-table-column prop="channel" label="未签字当事人" show-overflow-tooltip ></el-table-column>
</el-table>
</div>
<div class="text-center pt-16">
<el-pagination
@size-change="getCaseInfoList"
@current-change="getCaseInfoList"
:current-page="queryParam.current"
:page-size="queryParam.size"
layout="total, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</div>
</template>
<script>
import api from "@/services/caseManagement";
import apipack from "@/services/casePackageManagement";
export default {
components: {
},
props: {
caseAllocationDialog: {
type: Object,
default: () => {
return {}
},
},
},
data() {
return {
queryDate: '',
queryParam:{},
tableData:[],
total:0,
};
},
mounted () {
},
methods: {
handleChangeDate() {
this.activeUsage = ''
if(this.queryDate === null) {
this.setDateFast()
}else {
this.queryParam.beginTime = this.$util.getDayStart(this.queryDate[0])
this.queryParam.endTime = this.$util.getDayEnd(this.queryDate[1])
}
},
//
hanldeReset() {
for (let key in this.queryParam) {
this.queryParam[key] = ''
}
this.queryParam.current = 1
this.queryParam.size = 10
},
handleSearch() {
this.queryParam.size = 10;
this.queryParam.current = 1;
// this.getList(1)
},
//
getList(val){
this.queryParam.planBegin = this.queryParam.beginTime
this.queryParam.planEnd = this.queryParam.endTime
this.queryParam.current = val
// api.getCasePkgQuery(this.queryParam).then(res => {
// if (!res.code) {
// this.tableData = res.records;
// this.total = res.total;
// }
// })
},
}
};
</script>
<style scoped lang="scss">
.dialog-content{
padding: 16px 24px;
max-height:500px
}
.department-wrap{
padding: 16px 24px;
max-height: 250px;
.department-wrap-list{
margin-bottom:32px;
}
.department-wrap-list:last-child{
margin-bottom:0;
}
}
.min-height350{min-height: 350px;}
.department-dept ::v-deep .el-checkbox__label {color: $color-000000}
</style>

View File

@ -0,0 +1,182 @@
<template>
<div>
<div class="pt-8 border-b-solid-lighter-1">
<div class="height-30 flex-row align-items-center justify-content-between mb-24">
<div class="f22 color-text-primary">筛选</div>
</div>
<el-collapse-transition>
<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-input v-model.trim="queryParam.pkgName"
clearable placeholder="请输入案件包名称"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<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-input v-model.trim="queryParam.pkgName"
clearable placeholder="请输入案件包名称"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="8">
<div class="justify-content-start align-items-center height-40 mb-24">
<span class="tabs__search-criteria-title flex-shrink-0 pr-16">操作时间</span>
<el-date-picker
v-model="queryDate"
type="daterange"
clearable
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="handleChangeDate">
</el-date-picker>
</div>
</el-col>
<el-col :span="4">
<div class="flex-row align-items-center justify-content-end">
<el-button @click="hanldeReset">重置</el-button>
<el-button type="primary" @click="handleSearch">搜索</el-button>
</div>
</el-col>
</el-row>
</el-collapse-transition>
</div>
<!-- table -->
<div class="pt-8">
<div class="height-56 flex-row align-items-center justify-content-between">
<div class="f22 color-text-primary">追踪列表</div>
<div class="flex-row">
</div>
</div>
<div class="case-table">
<el-table :data="tableData" :height="`${contentHeight}`" >
<el-table-column type="index" label="序号" width="55"></el-table-column>
<el-table-column prop="pkgName" label="案件包名称" show-overflow-tooltip ></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="channel" 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="channel" label="失败原因" show-overflow-tooltip ></el-table-column>
<el-table-column prop="channel" label="操作人" show-overflow-tooltip ></el-table-column>
<el-table-column prop="planStartTime" label="操作时间" show-overflow-tooltip >
<template slot-scope="scope">
<span >{{ scope.row.planStartTime | formaDate("yyyy-MM-dd hh:mm:ss") }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<div class="flex-row align-items-center">
<el-button size="mini" @click="handleDelete(scope)">重试</el-button>
<el-button size="mini" @click="handleBackCase(scope)">取消</el-button>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="text-center pt-16">
<el-pagination
@size-change="getCaseInfoList"
@current-change="getCaseInfoList"
:current-page="queryParam.current"
:page-size="queryParam.size"
layout="total, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</div>
</template>
<script>
import api from "@/services/caseManagement";
import apipack from "@/services/casePackageManagement";
export default {
components: {
},
props: {
caseAllocationDialog: {
type: Object,
default: () => {
return {}
},
},
},
data() {
return {
queryDate: '',
queryParam:{},
tableData:[],
total:0,
};
},
mounted () {
},
methods: {
handleChangeDate() {
this.activeUsage = ''
if(this.queryDate === null) {
this.setDateFast()
}else {
this.queryParam.beginTime = this.$util.getDayStart(this.queryDate[0])
this.queryParam.endTime = this.$util.getDayEnd(this.queryDate[1])
}
},
//
hanldeReset() {
for (let key in this.queryParam) {
this.queryParam[key] = ''
}
this.queryParam.current = 1
this.queryParam.size = 10
},
handleSearch() {
this.queryParam.size = 10;
this.queryParam.current = 1;
// this.getList(1)
},
//
getList(val){
this.queryParam.planBegin = this.queryParam.beginTime
this.queryParam.planEnd = this.queryParam.endTime
this.queryParam.current = val
// api.getCasePkgQuery(this.queryParam).then(res => {
// if (!res.code) {
// this.tableData = res.records;
// this.total = res.total;
// }
// })
},
}
};
</script>
<style scoped lang="scss">
.dialog-content{
padding: 16px 24px;
max-height:500px
}
.department-wrap{
padding: 16px 24px;
max-height: 250px;
.department-wrap-list{
margin-bottom:32px;
}
.department-wrap-list:last-child{
margin-bottom:0;
}
}
.min-height350{min-height: 350px;}
.department-dept ::v-deep .el-checkbox__label {color: $color-000000}
</style>

View File

@ -0,0 +1,80 @@
<template>
<div>
<el-dialog :title="eventTraDialog.title" :visible="true" width="80%" append-to-body :close-on-click-modal="false"
@close="handleClose">
<div class="dialog-content dialog-trace">
<!-- 短信发送追踪 -->
<smsDialog v-if="eventTraDialog.traceType == 0" :eventTraDialog="eventTraDialog" />
<!-- 外呼事项追踪 -->
<CallDialog v-if="eventTraDialog.traceType == 1" :eventTraDialog="eventTraDialog" />
<!-- 视频调解追踪 -->
<voideDialog v-if="eventTraDialog.traceType == 2" :eventTraDialog="eventTraDialog" />
<!-- 文书生成追踪 -->
<officeDialog v-if="eventTraDialog.traceType == 3" :eventTraDialog="eventTraDialog" />
<!-- 文书签字追踪 -->
<officeWriteDialog v-if="eventTraDialog.traceType == 4" :eventTraDialog="eventTraDialog" />
<!-- 文书签章追踪 -->
<officeSealDialog v-if="eventTraDialog.traceType == 5" :eventTraDialog="eventTraDialog" />
<!-- 文书送达追踪 -->
<officeDeliveryDialog v-if="eventTraDialog.traceType == 6" :eventTraDialog="eventTraDialog" />
<!-- 还款凭证登记 -->
<repaymentDialog v-if="eventTraDialog.traceType == 7" :eventTraDialog="eventTraDialog" />
</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";
export default {
components: {
smsDialog: () => import('./components/smsDialog.vue'),//
CallDialog: () => import('./components/CallDialog.vue'),//
voideDialog: () => import('./components/voideDialog.vue'),//
officeDialog: () => import('./components/officeDialog.vue'),//
officeWriteDialog: () => import('./components/officeWriteDialog.vue'),//
officeSealDialog: () => import('./components/officeSealDialog.vue'),//
officeDeliveryDialog: () => import('./components/officeDeliveryDialog.vue'),//
repaymentDialog: () => import('./components/repaymentDialog.vue'),//
},
props: {
eventTraDialog: {
type: Object,
default: () => {
return {}
},
},
},
data() {
return {
queryParam:{},
tableData:[],
total:0,
};
},
mounted () {
},
methods: {
handleClose() {
this.$emit('update:eventTraDialog', null)
},
}
};
</script>
<style scoped lang="scss">
.dialog-trace{
padding: 16px 20px;
max-height:500px
}
</style>

View File

@ -1,20 +1,26 @@
<template>
<div class="layout-content-wrap">
<el-tabs class="zd-el-tabs-custom zd-el-tabs-custom__left_padding" v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane name="all">
<span slot="label"><span>全部</span> <el-badge :value="caseStatusNum.total" :max="99" class="item"></el-badge></span>
</el-tab-pane>
<el-tab-pane name="mediate">
<span slot="label"><span>待调解</span> <el-badge :value="caseStatusNum.not" :max="99" class="item"></el-badge></span>
</el-tab-pane>
<el-tab-pane name="mediation">
<span slot="label"><span>调解中</span> <el-badge :value="caseStatusNum.ing" :max="99" class="item"></el-badge></span>
</el-tab-pane>
<el-tab-pane name="mediated">
<span slot="label"><span>已结束</span> <el-badge :value="caseStatusNum.end" :max="99" class="item"></el-badge></span>
</el-tab-pane>
</el-tabs>
<div class="layout-tabs-content-box">
<div class="navigation-bar flex-row mb-16">
<img src="../../assets/image/Link.png" height="22" alt="">
<a>/</a>
<a>调解管理</a>
</div>
<div class="layout-tabs-content-box background-color-fff border-radius-4">
<el-tabs class="zd-el-tabs-custom zd-el-tabs-custom__left_padding" v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane name="all">
<span slot="label"><span>全部</span> <el-badge :value="caseStatusNum.total" :max="99" class="item"></el-badge></span>
</el-tab-pane>
<el-tab-pane name="mediate">
<span slot="label"><span>在办</span> <el-badge :value="caseStatusNum.not" :max="99" class="item"></el-badge></span>
</el-tab-pane>
<el-tab-pane name="mediation">
<span slot="label"><span>办结</span> <el-badge :value="caseStatusNum.ing" :max="99" class="item"></el-badge></span>
</el-tab-pane>
</el-tabs>
<div class="pt-8 border-b-solid-lighter-1">
<div class="height-30 flex-row align-items-center justify-content-between mb-24">
<div class="f22 color-text-primary">筛选</div>
@ -29,7 +35,16 @@
<el-collapse-transition>
<div v-show="showSearch">
<el-row :gutter="56">
<el-col :span="8">
<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-input v-model.trim="queryParam.pkgName"
clearable placeholder="请输入案件包名称"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<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-input v-model.trim="queryParam.financialOrgName"
@ -38,7 +53,7 @@
</el-input>
</div>
</el-col>
<el-col :span="8">
<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-input v-model.trim="queryParam.caseNo"
@ -47,70 +62,13 @@
</el-input>
</div>
</el-col>
<el-col :span="8">
<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.productTypeId"
clearable placeholder="请选择金融产品类型"
@keydown.enter.native="handleSearch"
class="width100">
<el-option
v-for="item in financialProductsTypeOptions"
:key="item.code"
:label="item.codeName"
:value="item.code">
</el-option>
</el-select>
</div>
</el-col>
</el-row>
<el-row :gutter="56">
<el-col :span="8">
<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.deptId"
clearable placeholder="请选择区域"
<span class="tabs__search-criteria-title flex-shrink-0 pr-16">所属调解员</span>
<el-select v-model="queryParam.mediatorId"
clearable placeholder="请选择所属调解员"
@keydown.enter.native="handleSearch"
class="width100">
<el-option
v-for="item in departmentOptions"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
</el-col>
<el-col :span="8">
<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-input v-model.trim="queryParam.creditorName"
clearable placeholder="请输入债务人姓名"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<el-col :span="8">
<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-input v-model.trim="queryParam.creditorPhone"
clearable placeholder="请输入债务人电话"
@keydown.enter.native="handleSearch"
maxlength="11"
>
</el-input>
</div>
</el-col>
</el-row>
<el-row :gutter="56" v-if="caseStatusShow">
<el-col :span="8">
<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.resultStatus"
clearable placeholder="请选择案件状态"
@keydown.enter.native="handleSearch"
:disabled="deptDisabled"
class="width100">
<el-option
v-for="item in caseStatusData"
:key="item.code"
@ -119,12 +77,116 @@
</el-option>
</el-select>
</div>
</el-col>
</el-row>
<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.caseStatus"
clearable placeholder="请选择案件状态"
@keydown.enter.native="handleSearch"
class="width100">
<el-option
v-for="item in CaseStatusEnum"
:key="item.label"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</el-col>
<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.dispatch"
clearable placeholder="请选择分案状态"
@keydown.enter.native="handleSearch"
class="width100">
<el-option
v-for="item in PartCaseStatusEnum"
:key="item.label"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</el-col>
<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.labels"
clearable placeholder="请选择调解进度"
@keydown.enter.native="handleSearch"
:multiple="true" :multiple-limit="3"
class="width100">
<el-option
v-for="item in MediateProgEnum"
:key="item.label"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</el-col>
<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.mediateStatus"
clearable placeholder="请选择调解状态"
@keydown.enter.native="handleSearch"
class="width100">
<el-option
v-for="item in MediateStatusEnum"
:key="item.label"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</el-col>
</el-row>
<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-input v-model.trim="queryParam.creditorName"
clearable placeholder="请输入被申请人姓名"
@keydown.enter.native="handleSearch">
</el-input>
</div>
</el-col>
<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-input v-model.trim="queryParam.creditorPhone"
clearable placeholder="请输入被申请人电话"
@keydown.enter.native="handleSearch"
maxlength="11"
>
</el-input>
</div>
</el-col>
<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-input v-model.trim="queryParam.creditorCode"
clearable placeholder="请输入被申请人证件号"
@keydown.enter.native="handleSearch"
maxlength="11"
>
</el-input>
</div>
</el-col>
</el-row>
<el-row :gutter="56">
<el-col :span="18">
<div class="flex-row align-items-center height-40 mb-24">
<span class="tabs__search-criteria-title flex-shrink-0 pr-16">创建时间</span>
<span class="tabs__search-criteria-title flex-shrink-0 pr-16">最新跟进时间</span>
<span :class="['f14 pr-24 cursor-pointer', i === 0 ? 'pl-8' : '',
activeUsage === item ?'color-primary' : 'color-text-regular']"
v-for="(item, i) in usageOption" :key="i"
@ -156,38 +218,118 @@
<div class="height-56 flex-row align-items-center justify-content-between">
<div class="f22 color-text-primary">案件列表</div>
<div class="flex-row">
<!-- <el-button size="small" type="primary">自动拨打</el-button> -->
<el-button size="small" @click="handleAddForm">案件办结</el-button>
<el-button size="small" @click="handleAddForm">发送短信</el-button>
<el-button size="small" @click="handleAddForm">智能外呼</el-button>
<el-button size="small" @click="handleAddForm">文书生成</el-button>
<el-button size="small" @click="handleAddForm">发起签字</el-button>
<el-button size="small" @click="handleAddForm">发起签章</el-button>
<el-button size="small" @click="handleAddForm">文书送达</el-button>
<el-button size="small" @click="handleCaseAllocation">案件下载</el-button>
</div>
</div>
<div class="height-56 flex-row align-items-center justify-content-between" style="height: 22px;margin-left: 10px;margin-top: -10px;margin-bottom: 5px">
<div class="f22 color-text-primary"><el-checkbox :indeterminate="indeterminate" @change="handleCheckAllChange">全选</el-checkbox></div>
</div>
<div >
<el-table :data="tableData" :height="`${contentHeight}`"
>
<el-table-column
v-for="(item, i) in tableHead"
:key="i"
:prop="item.prop"
:label="item.label"
:show-overflow-tooltip="item.showOverflowTooltip"
:width="item.width"
:sortable="item.sortable"
:formatter="item.formatter"
></el-table-column>
<el-table-column
prop="resultStatus"
label="案件状态"
show-overflow-tooltip
:formatter="formatResultStatusEnum"
v-if="caseStatusShow"
>
</el-table-column>
<el-table-column label="操作" width="150">
<div class="case-table">
<el-table :data="tableData" :height="`${contentHeight}`" @selection-change="handleSelectionChange" :show-header="false">
<!-- <el-table-column type="selection" width="55"></el-table-column> -->
<!-- <el-table-column align="center" width="85">
<template slot="header">
<div>
<el-checkbox :indeterminate="indeterminate" @change="handleCheckAllChange">全选</el-checkbox>
</div>
</template>
</el-table-column> -->
<el-table-column prop="pkgName" label="操作" show-overflow-tooltip >
<template slot-scope="scope">
<div class="flex-row align-items-center">
<!-- <div class="f12 cursor-pointer color-text-regular mr-16" @click="handleDelete(scope.row)">删除</div> -->
<el-button size="mini" @click="handleDetail(scope)">详情</el-button>
<div class="table-row flex-column justify-content-between">
<div class="flex-row pt-8">
<span>
<el-checkbox-group v-model="selectionData">
<!-- 此处的label是复选框右边显示的值也是选中后的值如果要一行的数据直接使用row即可 -->
<!-- label的内容会显示在页面上需要配合css把label的内容隐藏掉 -->
<el-checkbox :disabled="scope.row.disabled" :key="scope.row.id" :label="scope.row.id"></el-checkbox>
</el-checkbox-group>
</span>
<span class="f-weight500 color-000 f16">被申请人
<a v-for="(item,index) in scope.row.debtorEntityList" :key="index">{{index == 0 ?'':','}}{{item.name}}</a>
</span>
</div>
<div class="flex-row justify-content-between table-span-one">
<span class="">
<p>案件号</p>
<p class="color-000">{{ scope.row.caseNo }}</p>
</span>
<span>
<p>申请人</p>
<p class="color-000">{{ scope.row.financialOrgName }}</p>
</span>
<span>
<p>最新跟进时间</p>
<p class="color-000">{{ scope.row.updateAt }}</p>
</span>
<span>
<p>逾期金额()</p>
<p class="color-000">{{ scope.row.moneyAmount }}</p>
</span>
<span>
<p>委案日期</p>
<p class="color-000">{{ scope.row.planStartTime }}</p>
</span>
<span>
<p>所属调解员</p>
<p class="color-000">{{ scope.row.mediatorName }}</p>
</span>
<span style=" text-align: right;">
<el-button size="mini" class="case-btn" @click="jumpUrl(`/case-detail?dataKey=casepack&caseId=${scope.row.id}`)">查看详情</el-button>
<el-button size="mini" class="case-btn" @click="handleDelete(scope)">删除</el-button>
</span>
</div>
<div class="flex-row justify-content-between case-bg">
<span class="cursor-pointer">
<p>短信</p>
<p class="color-000"><a class="color-274ea4">成功{{scope.row.statistics.SMS}}1</a>/发送1</p>
</span>
<span class="cursor-pointer">
<p>外呼</p>
<p class="color-000"><a class="color-274ea4">接通0</a>/外呼0</p>
</span>
<span class="cursor-pointer">
<p>调解视频</p>
<p class="color-000"><a class="color-274ea4">结束0</a>/预约0</p>
</span>
<span class="cursor-pointer">
<p>文书</p>
<p class="color-000">0</p>
</span>
<span class="cursor-pointer">
<p>文书签署</p>
<p class="color-000"><a class="color-274ea4">成功0</a>/发起0</p>
</span>
<span class="cursor-pointer">
<p>文书送达</p>
<p class="color-000">0</p>
</span>
<span class="cursor-pointer">
<p>还款计划</p>
<p class="color-000"><a class="color-274ea4">已设置</a></p>
</span>
<span class="cursor-pointer">
<p>还款凭证</p>
<p class="color-000"><a class="color-274ea4">已填0</a></p>
</span>
</div>
<!-- <div class="flex-row justify-content-end">
<span><el-button size="mini" class="case-btn" @click="handleEdit(scope)">查看详情</el-button></span>
<span><el-button size="mini" class="case-btn" @click="handleDelete(scope)">删除</el-button></span>
</div> -->
</div>
</template>
</el-table-column>
</el-table>
</div>
@ -207,120 +349,105 @@
</div>
<!-- 编辑 -->
<editCaseDrawer v-if="editCaseDrawer" :editCaseDrawer.sync="editCaseDrawer"/>
<!-- <editCaseDrawer v-if="editCaseDrawer" :editCaseDrawer.sync="editCaseDrawer"/> -->
<!-- 事项追踪 -->
<eventTracingDialog v-if="eventTraDialog" :eventTraDialog.sync="eventTraDialog" />
</div>
</template>
<script>
import api from "@/services/caseManagement";
import { values } from "lodash";
export default {
components: {
editCaseDrawer: () => import('./components/editCaseDrawer'),//
// addCaseDialog: () => import('./components/addCaseDialog'),//
// editCaseDrawer: () => import('./components/editCaseDrawer'),//
eventTracingDialog: () => import('../event-tracing/index.vue'),//
},
data() {
return {
activeName:'all',
isCheck: false,//
indeterminate: false,//selectionDatalength 0 < selectionData.length < enabledDataList.length true
selectionData: [],//
enabledDataList: [],//
//
CaseStatusEnum:[{label:'在办',value:1},{label:'办结',value:2}],
//
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:'其他/无标签'}
],
//
MediateStatusEnum:[{label:'未触达',value:0},{label:'调解中',value:1},{label:'已达成方案',value:2},
{label:'已签署协议',value:3},{label:'调解失败',value:4},{label:'调解成功',value:5}],
showSearch: true,
queryDate: '',
activeUsage: '',
caseStatusNum:{
end: 0,
ing: 0,
not: 0,
total:0
},
mediateStatusData:[],//
queryParam: {
pkgId:'',
financialOrgName:'',//
caseNo: '',//
productTypeId: '',//id
caseStatus: '',//
creditorName:'',//
creditorPhone:'',//
creditorCode:'',
endTime: '',//
beginTime:'',//
deptId:'',//id
current:1,
size:10,
caseName:'',//
dataAuthUserId:'',//id
dataAuthDeptId:'',//id
mediatorId:'',//id
resultStatus:'',//
caseStatus:null,//
mediateStatus:null,//
dispatch:null,//
labels:null,//
},
usageOption: ['今日','昨日', '近一周', '近一月', '近半年', '近一年'],
tableHead: [
{
prop: "caseName",
label: "案件名称",
showOverflowTooltip: true,
formatter: this.formatTable,
},
{
prop: "caseNo",
label: "案件编号",
showOverflowTooltip: true,
formatter:this.formatTable,
},
{
prop: "productTypeId",
label: "金融产品类型",
showOverflowTooltip: true,
formatter: this.formatProductType,
},
{
prop: "deptId",
label: "归属区域",
showOverflowTooltip: true,
formatter: this.formatdeptName,
},
{
prop: "mediatorName",
label: "归属人",
showOverflowTooltip: true,
formatter:this.formatTable,
},
{
prop: "createAt",
label: "创建时间",
showOverflowTooltip: true,
formatter: this.formatTable,
},
{
prop: "caseStatus",
label: "调解状态",
showOverflowTooltip: true,
formatter: this.formatMediateStatusEnum,
},
],
tableData: [],
financialProductsTypeOptions:[],//
departmentOptions:[],//
total:0,
uniqueSelection:[],
eventTraDialog:null,//
importCaseDialog:null,//
addCaseDialog:null,//
editCaseDrawer:null,//
deptDisabled:false,//
caseStatusData:[],//
caseStatusShow:true,//
caseStatusData:[],
activeName:'all',
caseStatusNum:{
end: 0,
ing: 0,
not: 0,
total:0
},
}
},
created() {
this.getCaseCount();//
this.getMediateStatusEnum();//
this.getDict();//
this.getDeptList();//
//
let identifier = this.$store.state.userinfo.identifier
if(identifier=='mediator'){
this.deptDisabled = true
this.queryParam.deptId = this.$store.state.userinfo.deptId
}else{
this.deptDisabled = false
watch: {
//
selectionData: {
handler(v) {
if (this.enabledDataList.length) {
let checkedCount = v.length;
this.isCheck = checkedCount === this.enabledDataList.length;
this.indeterminate = checkedCount > 0 && checkedCount < this.enabledDataList.length;
}
},
immediate: true
}
},
created() {
if (this.$route.query.dataKey != undefined) {
this.queryParam.pkgId = this.$route.query.pkgId;
}
// this.setDateFast()
this.getCaseStatusEnum();//
// this.setDateFast()
this.getCaseInfoList(1)
},
computed:{
@ -328,16 +455,11 @@ import api from "@/services/caseManagement";
contentHeight(){
let oh = document.documentElement.clientHeight;
if(this.showSearch){
if(this.caseStatusShow){
return oh-56-48-430-32
}else{
return oh-56-48-366-32
}
return oh-56-48-366-145
}else{
return oh-56-48-175-32
return oh-56-48-175-75
}
}
},
methods: {
@ -358,48 +480,96 @@ import api from "@/services/caseManagement";
}
this.getCaseInfoList(1)
},
jumpUrl (url) {
this.$router.push(url);
},
//
handleCheckAllChange(value){
//
handleDetail(scope){
this.selectionData = value ? this.enabledDataList.map(el=>el.id) : [];
this.indeterminate = false;
},
//
handleImport(){
this.importCaseDialog={
title:'导入案件',
}
},
//
handleBatchDelete(){
if(this.uniqueSelection.length==0){
this.$message.warning("请先选择你要删除的列表数据");
return
}
this.$confirm("请确定是否删除这些数据?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
if(!this.$clickThrottle()) { return }//
let data = {
ids:this.uniqueSelection
}
api.deleteCaseBatch(data).then((res) => {
this.$message.success("成功");
this.getCaseInfoList(1)
});
}).catch(() => {});
},
//
handleDelete(scope){
this.$confirm("请确定是否删除此条数据?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
if(!this.$clickThrottle()) { return }//
api.deleteCaseInfoById(scope.row.id).then((res) => {
this.$message.success("成功");
this.getCaseInfoList(1)
});
}).catch(() => {});
},
//
handleAddForm(){
this.addCaseDialog={
title:'新增案件',
}
},
//
handleCaseAllocation(){
if(this.selectionData.length > 0){
this.caseAllocationDialog={
title:'案件分配',
choosecaseIds:this.selectionData
}
}
else
{
this.$message({
showClose: true,
message: '请选择需要分案的案件!',
type: 'warning'
});
return false
}
},
//
handleEdit(scope){
this.editCaseDrawer={
title:'案件详情',
title:'编辑案件',
data:scope.row,
sourcePage:'mediationManagement'
currentPage:this.queryParam.current
}
},
//
getCaseCount(){
api.getCaseCount({}).then(res => {
if (!res.code) {
this.caseStatusNum = res;
}
})
},
//
getDict(){
let data = {
type:'financial'
}
api.getDict(data).then(res => {
if (!res.code) {
this.financialProductsTypeOptions = res;
}
})
},
//
getDeptList(){
let data = {
companyId: this.$store.state.userinfo.companyId,
current: 1,
size: 500,
}
api.getDeptList(data).then(res => {
if (!res.code) {
this.departmentOptions = res.records;
}
})
},
//
getCaseInfoList(val){
this.queryParam.current = val
@ -407,6 +577,9 @@ import api from "@/services/caseManagement";
if (!res.code) {
this.tableData = res.records;
this.total = res.total;
// enabledDataList
this.enabledDataList = this.tableData.filter(v=>!v.disabled)
}
})
},
@ -485,63 +658,47 @@ import api from "@/services/caseManagement";
},
// id
formatdeptName(row, column, cellValue, index){
let obj = this.departmentOptions.find((item) => {
return item.id == row.deptId
handleSelectionChange(val){
console.log('获取val',val)
this.uniqueSelection = []
val.forEach((row)=>{
this.uniqueSelection.push(row.id)
})
return row.deptId != null ? <div>{obj?obj.name:'-'}</div> : '-'
},
formatProductType(row, column, cellValue, index){
let obj = this.financialProductsTypeOptions.find((item) => {
return item.code == row.productTypeId
})
// console.log(obj)
return row.productTypeId != null ? <div>{obj?obj.codeName:'-'}</div> : '-'
},
//
getMediateStatusEnum(){
api.getMediateStatusEnum({}).then(res => {
if (!res.code) {
this.mediateStatusData = res;
}
})
},
//
formatMediateStatusEnum(row, column, cellValue, index){
// console.log('row',row)
let className = `status-btn case-status${row.caseStatus}`
let obj = this.mediateStatusData.find((item) => {
return item.code == row.caseStatus
})
return row.caseStatus != null ? <div class={className}>{obj.desc}</div> : '-'
},
console.log('uniqueSelection',this.uniqueSelection)
//
getCaseStatusEnum(){
api.getCaseStatusEnum({}).then(res => {
if (!res.code) {
this.caseStatusData = res;
}
})
},
formatResultStatusEnum(row, column, cellValue, index){
// console.log('row',row)
let className = `status-btn result-status${row.resultStatus}`
let obj = this.caseStatusData.find((item) => {
return item.code == row.resultStatus
})
return row.resultStatus != null ? <div class={className}>{obj.desc}</div> : '-'
},
}
}
</script>
<style scoped>
<style scoped lang="scss">
.el-badge{
top: 3px;
}
.case-table{
.table-row{
color: #86909C;
p{padding: 0;margin: 0;}
.case-bg{
background-color: #eceef1d1;
padding: 10px 20px;
margin: 5px 0 10px 0;
}
.table-span-one span{width: 180px;}
.case-btn{
color: #C66A5B;
border-color: #C66A5B;
margin: 0 5px;
}
}
}
</style>
<style lang="scss">
.case-table{
.el-table tr {
background-color: #f7f8fa63 !important;
}
.el-checkbox{line-height: 10px;margin-top: -3px;}
.el-checkbox .el-checkbox__label{width: 0px;overflow: hidden;}
}
</style>

View File

@ -118,8 +118,71 @@
</div>
</div>
</div>
<div class="border-radius-4 flex-row justify-content-between casework3">
<div class="border-radius-4 flex-column casework3">
<div class="flex-column pie-chart">
<div class="flex-row justify-content-between case-pk-title">
<span>调解成功率</span>
<div class="flex-row">
<span>
<el-select v-model="queryParam.entrustingAgencyName"
clearable placeholder="请选择案件包"
@keydown.enter.native="handleSearch"
class="width100" size="mini">
<el-option
v-for="item in casePkOptions"
:key="item.code"
:label="item.codeName"
:value="item.code">
</el-option>
</el-select>
</span>
</div>
</div>
<div class="case-pk-cont flex-column">
<div>
<div id="echartsSankey" style="width: 370px; height: 270px; margin-left: 10px">
</div>
<span class="resultplan">31%</span>
</div>
<div class="flex-row justify-content-between">
<span class="flex-column align-items-center color-86909C"><a class="color-000 f16">27</a><a>总案件数</a></span>
<span class="flex-column align-items-center color-86909C"><a class="color-000 f16">10</a><a>调解成功</a></span>
<span class="flex-column align-items-center color-86909C"><a class="color-000 f16">17</a><a>调解失败</a></span>
</div>
</div>
</div>
<div class="flex-column item-trace">
<div class="flex-row justify-content-between case-pk-title">
<span>事项追踪</span>
</div>
<div class="case-pk-cont">
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:0,title:'短信发送追踪'}">
<span>短信发送追踪</span><span><a>1</a>/<a>2</a></span>
</div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:1,title:'外呼事项追踪'}">
<span>外呼事项追踪</span><span><a>1</a>/<a>2</a></span>
</div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:2,title:'视频调解追踪'}">
<span>视频调解追踪</span><span><a>1</a>/<a>2</a></span>
</div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:3,title:'文书生成追踪'}">
<span>文书生成追踪</span><span><a>1</a>/<a>2</a></span>
</div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:4,title:'文书签字追踪'}">
<span>文书签字追踪</span><span><a>1</a>/<a>2</a></span>
</div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:5,title:'文书签章追踪'}">
<span>文书签章追踪</span><span><a>1</a>/<a>2</a></span>
</div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:6,title:'文书送达追踪'}">
<span>文书送达追踪</span><span><a>1</a>/<a>2</a></span>
</div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:7,title:'还款凭证登记'}">
<span>还款凭证登记</span><span><a>1</a>/<a>2</a></span>
</div>
</div>
</div>
</div>
</div>
@ -131,6 +194,8 @@
<!-- 案件分配-->
<caseAllocationDialog v-if="caseAllocationDialog" :caseAllocationDialog.sync="caseAllocationDialog" />
<!-- 事项追踪 -->
<eventTracingDialog v-if="eventTraDialog" :eventTraDialog.sync="eventTraDialog" />
</div>
</template>
@ -142,9 +207,11 @@
components: {
importPackageDialog: () => import('../case-package/components/importPackageDialog'),//
caseAllocationDialog: () => import('../case-package/components/caseAllocationDialog'),//
eventTracingDialog: () => import('../event-tracing/index.vue'),//
},
data() {
return {
eventTraDialog:null,//
casePkOptions:[],//
queryParam: {
pkgName:'',//
@ -162,6 +229,8 @@
caseAllocationDialog:null,//
importCaseDialog:null,//
myEcharts: null,
};
},
@ -178,6 +247,7 @@
},
mounted(){
this.getCaseInfoList(1)
this.drawCharts()
},
methods: {
jumpUrl (url) {
@ -234,6 +304,63 @@
});
}).catch(() => {});
},
//
drawCharts () {
if (this.myEcharts) {
this.myEcharts.clear();
}
this.myEcharts = this.$echarts.init(
document.getElementById("echartsSankey")
);
let _that = this;
var option = {
tooltip: {
trigger: "item",
axisPointer: {
type: "shadow",
},
textStyle: {
fontSize: 22,
},
},
legend: {
top: "5%",
left: "center",
show: false, //
},
series: [
{
name: 'Access From',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: false, //hover
fontSize: 40,
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: [
{ value: 1048, name: 'Search Engine' },
{ value: 735, name: 'Direct' },
{ value: 580, name: 'Email' },
{ value: 484, name: 'Union Ads' },
{ value: 300, name: 'Video Ads' }
]
}
]
};
_that.myEcharts.setOption(option, true);
},
},
};
@ -345,10 +472,86 @@
}
.casework3{
margin:4px 0 0 0;
min-height:496px;
width: 400px;
background-color: #E1EDF4;
margin:4px 0 0 0;
color: #4E5969;
.pie-chart{
padding: 18px;
background-color: #fff;
border-radius: 8px;
.case-pk-title{
span:first-child{
font-size: 18px;
color:#1D2129;
font-weight: 500;
}
}
.case-pk-cont{
padding: 20px 0;
position: relative;
.resultplan{
font-size: 32px;
position: absolute;
left: 115px;
top: 130px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 165px;
text-align: center;
}
}
}
.item-trace{
margin-top: 20px;
padding: 18px;
background-color: #fff;
border-radius: 8px;
.case-pk-title{
span:first-child{
font-size: 18px;
color:#1D2129;
font-weight: 500;
}
}
.case-pk-cont{
padding: 10px 0 0px 0;
position: relative;
.resultplan{
font-size: 32px;
position: absolute;
left: 115px;
top: 130px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 165px;
text-align: center;
}
div{
margin-top:5px;
margin-bottom:10px;
color: #4E5969;
background-color:#F7F8FA ;
padding: 12px;
border-radius: 2px;
a{
font-weight: 600;
}
a:first-child{
color: #E8535A;
}
}
}
}
}
.casework4{
background: linear-gradient(101.33deg, #0FBEAF 0.46%, #079D87 100%);

View File

@ -102,6 +102,14 @@ const routes = [
component: () => import("@/pages/mediation-management"),
meta: { title: "调解管理", icon: 'menu-mediat-management' },
},
{
path: "/event-tracing",
name: "/event-tracing",
component: () => import("@/pages/event-tracing"),
meta: { title: "调解管理", icon: 'menu-mediat-management' },
},
],
},