This commit is contained in:
张运江 2025-02-26 09:20:17 +08:00
commit 8018b9745c
22 changed files with 211 additions and 140 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -74,7 +74,7 @@ import api from "@/services/caseManagement";
} }
else if(this.$util.getFileType(url) === 'audio') { else if(this.$util.getFileType(url) === 'audio') {
// //
this.fileType = 'video' this.fileType = 'audio'
} }
else else
{ {

View File

@ -17,7 +17,11 @@
<span v-else>-</span> <span v-else>-</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="paybackTime" label="还款日期" show-overflow-tooltip ></el-table-column> <el-table-column label="还款日期" show-overflow-tooltip >
<template slot-scope="scope">
<span >{{ scope.row.paybackTime | formaDate("yyyy-MM-dd") }}</span>
</template>
</el-table-column>
<el-table-column prop="remark" label="备注说明" show-overflow-tooltip ></el-table-column> <el-table-column prop="remark" label="备注说明" show-overflow-tooltip ></el-table-column>
<el-table-column prop="uploaderName" label="上传者" show-overflow-tooltip ></el-table-column> <el-table-column prop="uploaderName" label="上传者" show-overflow-tooltip ></el-table-column>
<el-table-column prop="createAt" label="操作时间" show-overflow-tooltip > <el-table-column prop="createAt" label="操作时间" show-overflow-tooltip >

View File

@ -368,7 +368,7 @@
<el-table-column label="是否完成签字" show-overflow-tooltip> <el-table-column label="是否完成签字" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<div class="flex-row align-items-center"> <div class="flex-row align-items-center">
<span>{{ scope.row.signStatus == 2 ? '是':'否' }}</span> <span>{{ (scope.row.signStatus != null && scope.row.signStatus.code == 3) ? '是':'否' }}</span>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>

View File

@ -63,7 +63,7 @@
<!-- <el-table-column type="selection" 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="pkgName" label="案件包名称" show-overflow-tooltip ></el-table-column>
<el-table-column prop="caseNo" label="案件编号" width="280" show-overflow-tooltip ></el-table-column> <el-table-column prop="caseNo" label="案件编号" width="280" show-overflow-tooltip ></el-table-column>
<el-table-column prop="documentType" label="文书类型" show-overflow-tooltip ></el-table-column> <el-table-column prop="documentType.desc" label="文书类型" show-overflow-tooltip ></el-table-column>
<el-table-column prop="status" label="签章状态" show-overflow-tooltip> <el-table-column prop="status" label="签章状态" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.status.desc }}</span> <span>{{ scope.row.status.desc }}</span>
@ -86,8 +86,8 @@
<el-table-column label="操作" width="180"> <el-table-column label="操作" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="flex-row align-items-center"> <div class="flex-row align-items-center">
<el-button size="mini" v-if="scope.row.status.code !== 4 && scope.row.status.code !== 2" @click="handleAgain(scope.row)">重试</el-button> <el-button size="mini" v-if="scope.row.status.code !== 5 && scope.row.status.code !== 4 && scope.row.status.code !== 2" @click="handleAgain(scope.row)">重试</el-button>
<el-button size="mini" v-if="scope.row.status.code !== 4 && scope.row.status.code !== 2" @click="handleCancel(scope.row)">取消</el-button> <el-button size="mini" v-if="scope.row.status.code !== 5 && scope.row.status.code !== 4 && scope.row.status.code !== 2" @click="handleCancel(scope.row)">取消</el-button>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>

View File

@ -94,8 +94,8 @@
<template slot-scope="scope"> <template slot-scope="scope">
<div class="flex-row align-items-center"> <div class="flex-row align-items-center">
<el-button size="mini" @click="handleDetail(scope)">明细</el-button> <el-button size="mini" @click="handleDetail(scope)">明细</el-button>
<el-button v-if="scope.row.status.code !== 4 && scope.row.status.code !== 2 && scope.row.status.code !== 1" size="mini" @click="handleAgain(scope.row)">重试</el-button> <el-button v-if="scope.row.status.code !== 4 && scope.row.status.code !== 5 && scope.row.status.code !== 2 && scope.row.status.code !== 1" size="mini" @click="handleAgain(scope.row)">重试</el-button>
<el-button v-if="scope.row.status.code !== 4 && scope.row.status.code !== 2 && scope.row.status.code !== 1" size="mini" @click="handleCancel(scope.row)">取消</el-button> <el-button v-if="scope.row.status.code !== 4 && scope.row.status.code !== 5 && scope.row.status.code !== 2 && scope.row.status.code !== 1" size="mini" @click="handleCancel(scope.row)">取消</el-button>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>

View File

@ -71,7 +71,11 @@
</el-table-column> --> </el-table-column> -->
<!-- <el-table-column prop="deadline" label="还款截止日期" show-overflow-tooltip ></el-table-column> <!-- <el-table-column prop="deadline" label="还款截止日期" show-overflow-tooltip ></el-table-column>
<el-table-column prop="payableAmount" label="应还金额" show-overflow-tooltip ></el-table-column> --> <el-table-column prop="payableAmount" label="应还金额" show-overflow-tooltip ></el-table-column> -->
<el-table-column prop="actualPayDate" label="实际还款日期" show-overflow-tooltip ></el-table-column> <el-table-column prop="planType" label="实际还款日期" show-overflow-tooltip >
<template slot-scope="scope">
<span>{{ scope.row.actualPayDate | formaDate("yyyy-MM-dd") }}</span>
</template>
</el-table-column>
<el-table-column prop="amount" label="实际还款金额" show-overflow-tooltip > <el-table-column prop="amount" label="实际还款金额" show-overflow-tooltip >
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.amount > 0">{{ scope.row.amount }}</span> <span v-if="scope.row.amount > 0">{{ scope.row.amount }}</span>

View File

@ -59,7 +59,8 @@
<el-table-column prop="updateByName" label="发起人" show-overflow-tooltip ></el-table-column> <el-table-column prop="updateByName" label="发起人" show-overflow-tooltip ></el-table-column>
<el-table-column label="状态" show-overflow-tooltip > <el-table-column label="状态" show-overflow-tooltip >
<template slot-scope="scope"> <template slot-scope="scope">
<span >{{ scope.row.signStatus.desc }}</span> <span v-if="scope.row.status.code != 3 && scope.row.status.code != 4 && scope.row.status.code != 5">{{ scope.row.signStatus.desc }}</span>
<span v-else>{{ scope.row.status.desc }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作时间" show-overflow-tooltip > <el-table-column label="操作时间" show-overflow-tooltip >

View File

@ -30,7 +30,7 @@
} }
}, },
mounted() { mounted() {
console.log(this.menu,'menu') // console.log(this.menu,'menu')
}, },
methods: { methods: {
handleRoute(menu) { handleRoute(menu) {

View File

@ -538,9 +538,15 @@ import { values } from "lodash";
}) })
let caseCllIds = caseCllList.map(item =>{ return item.id}) let caseCllIds = caseCllList.map(item =>{ return item.id})
api.callingBatchcall({caseIdList: caseCllIds}).then(res => { let caseIdList = []
this.selectionData.forEach(item =>{
if(caseCllIds.find(item1 =>{return item1 == item}))
{
caseIdList.push(item)
}
})
api.callingBatchcall({caseIdList: caseIdList}).then(res => {
this.$message.success("智能外呼成功"); this.$message.success("智能外呼成功");
// this.getCaseInfoList(1)
this.jumpUrl(`/mediation-page?sourcePage=sourcePage&caseId=${this.selectionData[0]}&queue=1`) this.jumpUrl(`/mediation-page?sourcePage=sourcePage&caseId=${this.selectionData[0]}&queue=1`)
}) })

View File

@ -192,8 +192,7 @@
<!-- 案件材料 --> <!-- 案件材料 -->
<div v-if="leftActive == 3" class="case-materials-person"> <div v-if="leftActive == 3" class="case-materials-person">
<caseMaterialLeft :caseId="caseId" /> <caseMaterialLeft :caseId="thisCaseInfo.id" />
</div> </div>
<!-- 案件文书 --> <!-- 案件文书 -->
@ -455,6 +454,7 @@ export default {
}, },
}, },
async created() { async created() {
this.mediaterecordpm.caseId = this.caseId this.mediaterecordpm.caseId = this.caseId
this.eventDialog.caseId = this.caseId this.eventDialog.caseId = this.caseId

View File

@ -761,7 +761,7 @@ export default {
// //
async callingFail () { async callingFail () {
try { try {
let res = await api.callingFail({caseId: this.caseId,contactId: this.contactId,callingSessionId:this.sessionId}) // let res = await api.callingFail({caseId: this.caseId,contactId: this.contactId,callingSessionId:this.sessionId})
} catch (err) { } } catch (err) { }
}, },
// //

View File

@ -142,9 +142,7 @@
</el-form-item> </el-form-item>
<!-- 枚举备注: ALL :一次性全部回款 STAGES :全部分期 MIX :混合部分先还加分期 OTHER :其他 --> <!-- 枚举备注: ALL :一次性全部回款 STAGES :全部分期 MIX :混合部分先还加分期 OTHER :其他 -->
<el-form-item v-if="repaymentObj.type == 'MIX'" label="分期前偿还金额" prop="partAmount" <el-form-item v-if="repaymentObj.type == 'MIX'" label="分期前偿还金额" prop="partAmount"
:rules="[ >
{ required: true, validator: validatePass2, trigger: 'change'},
]">
<el-input class="inputpaddingtop2" <el-input class="inputpaddingtop2"
size="small" size="small"
placeholder="请输入分期前偿还金额" placeholder="请输入分期前偿还金额"
@ -154,9 +152,7 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item v-if="repaymentObj.type == 'MIX'" label="先还日期" prop="partDate" <el-form-item v-if="repaymentObj.type == 'MIX'" label="先还日期" prop="partDate"
:rules="[ >
{ required: true, message: '请选择分期前偿还日期', trigger: 'change',},
]">
<el-date-picker class="width100" size="small" <el-date-picker class="width100" size="small"
v-model="repaymentObj.partDate" v-model="repaymentObj.partDate"
type="date" type="date"
@ -176,10 +172,7 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item v-if="repaymentObj.type == 'STAGES' || repaymentObj.type == 'MIX'" label="分期期数" prop="stagesNum" <el-form-item v-if="repaymentObj.type == 'STAGES' || repaymentObj.type == 'MIX'" label="分期期数" prop="stagesNum"
:rules="[ >
{ required: true, message: '请输入分期期数', trigger: 'change',},
{ pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: ['blur', 'change']}
]">
<el-input <el-input
size="small" size="small"
placeholder="请输入分期期数" placeholder="请输入分期期数"
@ -208,10 +201,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="repaymentObj.type == 'ALL' || repaymentObj.type == 'STAGES' || repaymentObj.type == 'MIX'" label="还款截止日期" prop="paybackDate" <el-form-item v-if="repaymentObj.type == 'ALL' || repaymentObj.type == 'STAGES' || repaymentObj.type == 'MIX'" label="还款截止日期" prop="paybackDate"
:rules="[ >
{ required: true, message: '请选择还款截止日期', trigger: 'change',},
{ required: true, validator: validatePass3, trigger: 'change',},
]">
<el-date-picker class="width100" size="small" <el-date-picker class="width100" size="small"
v-model="repaymentObj.paybackDate" v-model="repaymentObj.paybackDate"
type="date" type="date"
@ -276,6 +266,9 @@ import api from "@/services/caseManagement";
{ {
callback(new Error('还款截止日期不能小于分期前偿还日期!')); callback(new Error('还款截止日期不能小于分期前偿还日期!'));
} }
else{
callback();
}
} else { } else {
callback(); callback();
} }
@ -298,23 +291,23 @@ import api from "@/services/caseManagement";
{ pattern: /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0.\d{1,2}$/, message: '请输入2位小数金额', trigger: ['blur', 'change']} { pattern: /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0.\d{1,2}$/, message: '请输入2位小数金额', trigger: ['blur', 'change']}
], ],
// paybackDate: [ paybackDate: [
// { required: true, validator: validatePass3, trigger: 'change',}, { required: true, validator: validatePass3, trigger: 'change',},
// ], ],
// stagesDay: [ stagesDay: [
// { required: true, message: '', trigger: 'change',}, { required: true, message: '请选择每期还款日期', trigger: 'change',},
// ], ],
// partAmount: [ partAmount: [
// { required: true, validator: validatePass2, trigger: 'change'}, { required: true, validator: validatePass2, trigger: 'change'},
// ], ],
// partDate: [ partDate: [
// { required: true, message: '', trigger: 'change',}, { required: true, message: '请选择分期前偿还日期', trigger: 'change',},
// ], ],
// stagesNum: [ stagesNum: [
// { required: true, message: '', trigger: 'change',}, { required: true, message: '请输入分期期数', trigger: 'change',},
// { pattern: /^[1-9]\d*$/, message: '', trigger: ['blur', 'change']} { pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: ['blur', 'change']}
// ], ],
}, },
planList:[], planList:[],
oldrepaymentObj:{}, oldrepaymentObj:{},
@ -325,39 +318,9 @@ import api from "@/services/caseManagement";
this.getplanlist() this.getplanlist()
}, },
methods: { methods: {
validatePass2(rule, value, callback){
if (value === '') {
callback(new Error('请输入分期前偿还金额'));
} else if (!/^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0.\d{1,2}$/.test(value)) {
callback(new Error('只能输入2位小数金额'));
} else if (value*1 > this.repaymentObj.totalAmount*1) {
callback(new Error('分期前偿还金额不能大于还款金额!'));
} else {
callback();
}
},
validatePass3 (rule, value, callback){
if (value === '') {
callback(new Error('请选择还款截止日期'));
} else if (this.repaymentObj.partDate != '' && this.repaymentObj.partDate != undefined) {
let date1 = new Date(value);//
let date2 = new Date(this.repaymentObj.partDate);//
let timestamp1 = date1.getTime();
let timestamp2 = date2.getTime();
if(timestamp2 > timestamp1)
{
callback(new Error('还款截止日期不能小于分期前偿还日期!'));
}
} else {
callback();
}
},
handleSubmitRepayment(){ handleSubmitRepayment(){
console.log(1,'handleSubmitRepayment') this.$refs.ruleFormRepayment.validate((valid,obj) => {
this.$refs.ruleFormRepayment.validate((valid) => {
if (valid){ if (valid){
console.log(2,'handleSubmitRepayment')
this.repaymentObj.caseId = this.eventDialog.caseId this.repaymentObj.caseId = this.eventDialog.caseId
api.getcase_payback_save(this.repaymentObj).then(res => { api.getcase_payback_save(this.repaymentObj).then(res => {
if(!res.code){ if(!res.code){
@ -366,16 +329,17 @@ import api from "@/services/caseManagement";
} }
}) })
} }
else{
console.log(valid,'valid')
}
}) })
}, },
getplanlist(){ getplanlist(){
api.getcase_payback_planlist({caseId:this.eventDialog.caseId}).then(res => { api.getcase_payback_planlist({caseId:this.eventDialog.caseId}).then(res => {
if(!res.code){ if(!res.code){
this.planList = res this.planList = res
if(this.planList.length > 0 ){this.repaymentObj = this.planList[0]} if(this.planList.length > 0 )
{
this.repaymentObj = this.planList[0]
this.inputChange()
}
} }
}) })
}, },
@ -394,6 +358,7 @@ import api from "@/services/caseManagement";
if(this.repaymentObj.totalAmount !='' &&this.repaymentObj.stagesNum !='' && this.repaymentObj.totalAmount !=undefined &&this.repaymentObj.stagesNum !=undefined) if(this.repaymentObj.totalAmount !='' &&this.repaymentObj.stagesNum !='' && this.repaymentObj.totalAmount !=undefined &&this.repaymentObj.stagesNum !=undefined)
{ {
this.repaymentObj.stagesAmount = ((this.repaymentObj.totalAmount*1 - this.repaymentObj.partAmount*1)/(this.repaymentObj.stagesNum*1)).toFixed(2) this.repaymentObj.stagesAmount = ((this.repaymentObj.totalAmount*1 - this.repaymentObj.partAmount*1)/(this.repaymentObj.stagesNum*1)).toFixed(2)
this.repaymentObj.moneyAmount = (this.repaymentObj.totalAmount*1 - this.repaymentObj.partAmount*1).toFixed(2)
} }
} }
}, },
@ -424,3 +389,8 @@ import api from "@/services/caseManagement";
} }
} }
</style> </style>
<style lang="scss">
.case-repayment-certificate{
.el-form-item__error{ padding-top:1px !important ;}
}
</style>

View File

@ -10,7 +10,7 @@
label-width="130px"> label-width="130px">
<el-row :gutter="56"> <el-row :gutter="56">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="当事人" prop="litigants"> <el-form-item label="当事人">
<el-select v-model="repaymentObj.litigants" multiple collapse-tags filterable <el-select v-model="repaymentObj.litigants" multiple collapse-tags filterable
placeholder="请选择" class="width100"> placeholder="请选择" class="width100">
<el-option <el-option
@ -141,12 +141,13 @@ export default {
}, },
rulesClientRule: { rulesClientRule: {
litigants: [ litigants: [
{ type: 'array', required: true, message: '请选择', trigger: 'change' } { type: 'array', required: false, message: '请选择', trigger: 'change' }
], ],
}, },
}; };
}, },
mounted() { mounted() {
this.repaymentObj.id = this.eventDialog.id
this.getLitigantByCaseId(); this.getLitigantByCaseId();
}, },
methods: { methods: {
@ -168,12 +169,18 @@ export default {
}, },
handleSubmit() { handleSubmit() {
if(!this.$clickThrottle()) { return }// if(!this.$clickThrottle()) { return }//
const resultArr = this.litigantsOptions
.filter(item => this.repaymentObj.litigants.includes(item.id))
.map(({name, phone, identity}) => ({name, phone, identity}));
if(resultArr.length == 0 && this.repaymentObj.members.length == 0){
this.$message.warning("请添加或选择需要邀请的人员!");
return false
}
this.$refs.ruleFormRepayment.validate((valid) => { this.$refs.ruleFormRepayment.validate((valid) => {
if (valid) { if (valid) {
// identity ,name ,phone // identity ,name ,phone
const resultArr = this.litigantsOptions
.filter(item => this.repaymentObj.litigants.includes(item.id))
.map(({name, phone, identity}) => ({name, phone, identity}));
videoTelephone.videoInvite({...this.repaymentObj, litigants: resultArr}).then(res => { videoTelephone.videoInvite({...this.repaymentObj, litigants: resultArr}).then(res => {
this.handleClose() this.handleClose()
this.$message.success("邀请成功"); this.$message.success("邀请成功");

View File

@ -48,6 +48,8 @@
<a class="case-status0" v-if="item.documentStaus.code == 2 && item.signStatus != null && item.signStatus.code == 2">签字中</a> <a class="case-status0" v-if="item.documentStaus.code == 2 && item.signStatus != null && item.signStatus.code == 2">签字中</a>
<a class="case-status3" v-if="item.documentStaus.code == 2 && item.signStatus != null && item.signStatus.code == 3">已签字</a> <a class="case-status3" v-if="item.documentStaus.code == 2 && item.signStatus != null && item.signStatus.code == 3">已签字</a>
<a class="result-status0" v-if="item.documentStaus.code == 2 && item.signStatus != null && item.signStatus.code == 1">签字失败</a> <a class="result-status0" v-if="item.documentStaus.code == 2 && item.signStatus != null && item.signStatus.code == 1">签字失败</a>
<a class="case-status3" v-if="item.documentStaus.code == 2 && item.signStatus != null && item.signStatus.code == 3 && item.sealStatus != null && item.sealStatus.code == 2">已签章</a>
<a class="result-status0" v-if="item.documentStaus.code == 2 && item.signStatus != null && item.signStatus.code == 3 && item.sealStatus != null && item.sealStatus.code == 3">签章失败</a>
</span> </span>
</a> </a>
<!-- sealStatus 签章状态 <!-- sealStatus 签章状态

View File

@ -28,34 +28,42 @@
<span class="case-pro1"> <span class="case-pro1">
<p>案件总量</p> <p>案件总量</p>
<p><a>{{caseprogressObj.caseTotal}}</a></p> <p><a>{{caseprogressObj.caseTotal}}</a></p>
<img src="../../../assets/image/workbench/progress1.png">
</span> </span>
<span class="case-pro2"> <span class="case-pro2">
<p>已办结案件</p> <p>已办结案件</p>
<p><a>{{caseprogressObj.finishTotal}}</a></p> <p><a>{{caseprogressObj.finishTotal}}</a></p>
<img src="../../../assets/image/workbench/progress8.png">
</span> </span>
<span class="case-pro3"> <span class="case-pro3">
<p>未触达</p> <p>未触达</p>
<p><a>{{caseprogressObj.notReachTotal}}</a></p> <p><a>{{caseprogressObj.notReachTotal}}</a></p>
<img src="../../../assets/image/workbench/progress3.png">
</span> </span>
<span class="case-pro1"> <span class="case-pro4">
<p>调解中</p> <p>调解中</p>
<p><a>{{caseprogressObj.mediatingTotal}}</a></p> <p><a>{{caseprogressObj.mediatingTotal}}</a></p>
<img src="../../../assets/image/workbench/progress2.png">
</span> </span>
<span class="case-pro2"> <span class="case-pro5">
<p>调解成功</p> <p>调解成功</p>
<p><a>{{caseprogressObj.mediateSuccess}}</a></p> <p><a>{{caseprogressObj.mediateSuccess}}</a></p>
<img src="../../../assets/image/workbench/progress5.png">
</span> </span>
<span class="case-pro3"> <span class="case-pro6">
<p>已签署协议</p> <p>已签署协议</p>
<p><a>{{caseprogressObj.signTotal}}</a></p> <p><a>{{caseprogressObj.signTotal}}</a></p>
<img src="../../../assets/image/workbench/progress6.png">
</span> </span>
<span class="case-pro1"> <span class="case-pro7">
<p>已司法确认</p> <p>已司法确认</p>
<p><a>{{caseprogressObj.judicialTotal}}</a></p> <p><a>{{caseprogressObj.judicialTotal}}</a></p>
<img src="../../../assets/image/workbench/progress4.png">
</span> </span>
<span class="case-pro2"> <span class="case-pro8">
<p>已赋强公证</p> <p>已赋强公证</p>
<p><a>{{caseprogressObj.notarizationTotal}}</a></p> <p><a>{{caseprogressObj.notarizationTotal}}</a></p>
<img src="../../../assets/image/workbench/progress7.png">
</span> </span>
</div> </div>
</div> </div>
@ -88,16 +96,32 @@
</div> </div>
<div class="case-follow-cont flex-row "> <div class="case-follow-cont flex-row ">
<div class="donotfollowup1"> <div class="donotfollowup1">
<span class="flex-column cursor-pointer" @click="jumpUrl('/mediation-management')"><a class="f20 mb-32">今日待跟进案件</a><a class="f48">{{statisticCasesData.todayCasesToFollowUp == undefined ? 0 : statisticCasesData.todayCasesToFollowUp}}</a></span> <span class="flex-column cursor-pointer" @click="jumpUrl('/mediation-management')">
<a><img src="../../../assets/image/workbench/Follow4.png" width="80"></a>
<a class="f24 mt-16 mb-16">今日待跟进案件</a>
<a class="f48 color-165DFF">{{statisticCasesData.todayCasesToFollowUp == undefined ? 0 : statisticCasesData.todayCasesToFollowUp}}</a>
</span>
</div> </div>
<div class="donotfollowup2"> <div class="donotfollowup2">
<span class="flex-column cursor-pointer" @click="jumpUrl('/mediation-management')"><a class="f20 mb-32">超3天未跟进案件</a><a class="f48">{{statisticCasesData.overThreeDaysUnfollowedCases == undefined ? 0 : statisticCasesData.overThreeDaysUnfollowedCases}}</a></span> <span class="flex-column cursor-pointer" @click="jumpUrl('/mediation-management')">
<a><img src="../../../assets/image/workbench/Follow1.png" width="80"></a>
<a class="f24 mt-16 mb-16">超3天未跟进案件</a>
<a class="f48 color-165DFF">{{statisticCasesData.overThreeDaysUnfollowedCases == undefined ? 0 : statisticCasesData.overThreeDaysUnfollowedCases}}</a>
</span>
</div> </div>
<div class="donotfollowup3"> <div class="donotfollowup3">
<span class="flex-column cursor-pointer" @click="jumpUrl('/mediation-management')"><a class="f20 mb-32">超5天未跟进案件</a><a class="f48">{{statisticCasesData.overFiveDaysUnfollowedCases == undefined ? 0 : statisticCasesData.overFiveDaysUnfollowedCases}}</a></span> <span class="flex-column cursor-pointer" @click="jumpUrl('/mediation-management')">
<a><img src="../../../assets/image/workbench/Follow2.png" width="80"></a>
<a class="f24 mt-16 mb-16">超5天未跟进案件</a>
<a class="f48 color-165DFF">{{statisticCasesData.overFiveDaysUnfollowedCases == undefined ? 0 : statisticCasesData.overFiveDaysUnfollowedCases}}</a>
</span>
</div> </div>
<div class="donotfollowup4"> <div class="donotfollowup4">
<span class="flex-column cursor-pointer" @click="jumpUrl('/mediation-management')"><a class="f20 mb-32">新案未跟进案件</a><a class="f48">{{statisticCasesData.newUnfollowedCases == undefined ? 0 : statisticCasesData.newUnfollowedCases}}</a></span> <span class="flex-column cursor-pointer" @click="jumpUrl('/mediation-management')">
<a><img src="../../../assets/image/workbench/Follow3.png" width="80"></a>
<a class="f24 mt-16 mb-16">新案未跟进案件</a>
<a class="f48 color-165DFF">{{statisticCasesData.newUnfollowedCases == undefined ? 0 : statisticCasesData.newUnfollowedCases}}</a>
</span>
</div> </div>
</div> </div>
</div> </div>
@ -118,29 +142,29 @@
<span>事项追踪</span> <span>事项追踪</span>
</div> </div>
<div class="case-pk-cont"> <div class="case-pk-cont">
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:0,title:'短信发送追踪'}"> <div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:0,title:'发送短信追踪'}">
<span>短信发送追踪</span><span><a>{{traceData.smsTrackingCount.failed ? traceData.smsTrackingCount.failed :'0'}}</a>/<a>{{traceData.smsTrackingCount.total}}</a></span> <span><i class="el-icon-message f16 mr-4"></i>发送短信</span><span><a>{{traceData.smsTrackingCount.failed ? traceData.smsTrackingCount.failed :'0'}}</a>/<a>{{traceData.smsTrackingCount.total}}</a></span>
</div> </div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:1,title:'外呼事项追踪'}"> <div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:1,title:'智能电话外呼追踪'}">
<span>外呼事项追踪</span><span><a>{{traceData.intelligentCallTrackingCount.failed ? traceData.intelligentCallTrackingCount.failed :'0'}}</a>/<a>{{traceData.intelligentCallTrackingCount.total}}</a></span> <span><i class="el-icon-service f16 mr-4"></i>智能电话外呼</span><span><a>{{traceData.intelligentCallTrackingCount.failed ? traceData.intelligentCallTrackingCount.failed :'0'}}</a>/<a>{{traceData.intelligentCallTrackingCount.total}}</a></span>
</div> </div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:2,title:'视频调解追踪'}"> <div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:2,title:'在线视频调解追踪'}">
<span>视频调解追踪</span><span><a>{{traceData.videoAppointmentTrackingCount.failed ? traceData.videoAppointmentTrackingCount.failed :'0'}}</a>/<a>{{traceData.videoAppointmentTrackingCount.total}}</a></span> <span><i class="el-icon-video-camera f16 mr-4"></i>在线视频调解</span><span><a>{{traceData.videoAppointmentTrackingCount.failed ? traceData.videoAppointmentTrackingCount.failed :'0'}}</a>/<a>{{traceData.videoAppointmentTrackingCount.total}}</a></span>
</div> </div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:3,title:'文书生成追踪'}"> <div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:3,title:'文书生成追踪'}">
<span>文书生成追踪</span><span><a>{{traceData.documentGenerationTrackingCount.failed ? traceData.documentGenerationTrackingCount.failed :'0'}}</a>/<a>{{traceData.documentGenerationTrackingCount.total}}</a></span> <span><i class="el-icon-document-checked f16 mr-4"></i>文书生成</span><span><a>{{traceData.documentGenerationTrackingCount.failed ? traceData.documentGenerationTrackingCount.failed :'0'}}</a>/<a>{{traceData.documentGenerationTrackingCount.total}}</a></span>
</div> </div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:4,title:'文书签字追踪'}"> <div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:4,title:'文书签字追踪'}">
<span>文书签字追踪</span><span><a>{{traceData.documentSignatureTrackingCount.failed ? traceData.documentSignatureTrackingCount.failed :'0'}}</a>/<a>{{traceData.documentSignatureTrackingCount.total}}</a></span> <span><i class="el-icon-reading f16 mr-4"></i>文书签字</span><span><a>{{traceData.documentSignatureTrackingCount.failed ? traceData.documentSignatureTrackingCount.failed :'0'}}</a>/<a>{{traceData.documentSignatureTrackingCount.total}}</a></span>
</div> </div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:5,title:'文书签章追踪'}"> <div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:5,title:'协议文书签章追踪'}">
<span>文书签章追踪</span><span><a>{{traceData.electronicSealTrackingCount.failed ? traceData.electronicSealTrackingCount.failed :'0'}}</a>/<a>{{traceData.electronicSealTrackingCount.total}}</a></span> <span><i class="el-icon-coordinate f16 mr-4"></i>协议文书签章</span><span><a>{{traceData.electronicSealTrackingCount.failed ? traceData.electronicSealTrackingCount.failed :'0'}}</a>/<a>{{traceData.electronicSealTrackingCount.total}}</a></span>
</div> </div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:6,title:'文书送达追踪'}"> <div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:6,title:'文书送达追踪'}">
<span>文书送达追踪</span><span><a>{{traceData.documentDeliveryTrackingCount.failed ? traceData.documentDeliveryTrackingCount.failed :'0'}}</a>/<a>{{traceData.documentDeliveryTrackingCount.total}}</a></span> <span><i class="el-icon-mobile-phone f16 mr-4"></i>文书送达</span><span><a>{{traceData.documentDeliveryTrackingCount.failed ? traceData.documentDeliveryTrackingCount.failed :'0'}}</a>/<a>{{traceData.documentDeliveryTrackingCount.total}}</a></span>
</div> </div>
<div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:7,title:'还款凭证登记'}"> <div class="flex-row justify-content-between cursor-pointer" @click="eventTraDialog={traceType:7,title:'还款凭证登记'}">
<span>还款凭证登记</span><span><a>{{traceData.repaymentRecordTrackingCount.failed ? traceData.repaymentRecordTrackingCount.failed :'0'}}</a>/<a>{{traceData.repaymentRecordTrackingCount.total}}</a></span> <span><i class="el-icon-school f16 mr-4"></i>还款凭证登记</span><span><a>{{traceData.repaymentRecordTrackingCount.failed ? traceData.repaymentRecordTrackingCount.failed :'0'}}</a>/<a>{{traceData.repaymentRecordTrackingCount.total}}</a></span>
</div> </div>
</div> </div>
</div> </div>
@ -399,8 +423,8 @@
show: false show: false
}, },
data: [ data: [
{ value: this.mediation_success_rate.mediateFail, name: '调解失败',itemStyle:{color:'#FFE7E0'} }, { value: this.mediation_success_rate.mediateFail, name: '调解失败',itemStyle:{color:'#a7e054'} },
{ value: this.mediation_success_rate.mediateSuccess, name: '调解成功' ,itemStyle:{color:'#E4F3CE'}}, { value: this.mediation_success_rate.mediateSuccess, name: '调解成功' ,itemStyle:{color:'#bee18adb'}},
] ]
} }
] ]
@ -453,8 +477,8 @@
show: false show: false
}, },
data: [ data: [
{ value: 0, name: '未触达债务人数',itemStyle:{color:'#E1EDF4'} }, { value: 0, name: '未触达债务人数',itemStyle:{color:'#c0def0'} },
{ value: 0, name: '已触达债务人数' ,itemStyle:{color:'#E4F3CE'}}, { value: 0, name: '已触达债务人数' ,itemStyle:{color:'#cdeaa2'}},
] ]
} }
] ]
@ -533,7 +557,7 @@
background:url(../../../assets/image/workbench/work-left-bg.png) no-repeat; background:url(../../../assets/image/workbench/work-left-bg.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
// min-height:496px; // min-height:496px;
width: 400px; width: 412px;
padding: 20px; padding: 20px;
.case-title{ .case-title{
height: 60px; height: 60px;
@ -545,13 +569,14 @@
.case-progress-cont{ .case-progress-cont{
background-color: #fff; background-color: #fff;
border-radius: 5px; border-radius: 5px;
font-size: 18px;
} }
.case-progress{ .case-progress{
background:url(../../../assets/image/workbench/icon-bg.png) no-repeat; // background:url(../../../assets/image/workbench/icon-bg.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
height: 460px; height: 460px;
margin: auto; margin: auto;
color: #4E5969; color: #fff;
span{ span{
padding: 15px 0 0px 15px; padding: 15px 0 0px 15px;
width: 153px; width: 153px;
@ -564,12 +589,56 @@
margin-left: 20px; margin-left: 20px;
} }
span p{padding: 0;margin: 0;} span p{padding: 0;margin: 0;}
span a{color: #1D2129;font-size: 22px;} span a{color: #fff;font-size: 22px;}
.case-pro1,.case-pro2,.case-pro3,.case-pro4,.case-pro5,.case-pro6,
.case-pro7,.case-pro8
{
width: 157px;height: 105px;
position: relative;
border-radius: 8px;
img{
width:50px ;
right:10px;
position:absolute;
}
}
.case-pro1
{
background-image: linear-gradient(to right,#0fdfdc,pink)
}
.case-pro2
{
background-image: linear-gradient(to right,pink,#ffd900)
}
.case-pro3
{
background-image: linear-gradient(to right,#ffd900,#ff0000cb)
}
.case-pro4
{
background-image: linear-gradient(to right,#ff0000cb,#59a8ff)
}
.case-pro5
{
background-image: linear-gradient(to right,#59a8ff,#b0d65e)
}
.case-pro6
{
background-image: linear-gradient(to right,#b0d65e,#dbf41e)
}
.case-pro7
{
background-image: linear-gradient(to right,#dbf41e,#df5964a7)
}
.case-pro8
{
background-image: linear-gradient(to right,#df5964a7,#df313fc2)
}
} }
.case-pro1{width: 155px;height: 105px;}
} }
.casework-1{ .casework-1{
background-color: #fff; background-color: #ec9dd82b;
border-radius: 8px; border-radius: 8px;
margin-top: 15px; margin-top: 15px;
@ -603,7 +672,7 @@
} }
.casework2{ .casework2{
width: calc(100% - 830px); width: calc(100% - 850px);
.casework2-1{ .casework2-1{
background-color: #E1EDF4; background-color: #E1EDF4;
min-height:496px; min-height:496px;
@ -636,17 +705,21 @@
background-size: 100% 100%; background-size: 100% 100%;
width: calc(50% - 10px); width: calc(50% - 10px);
height: 462px; height: 462px;
padding-top: 140px; padding-top: 100px;
text-align: center; text-align: center;
float: left; float: left;
margin-top: 20px; margin-top: 20px;
// .ollowupimg{
// background:url(../../../assets/image/workbench/donotfollowup1.png) no-repeat;
// }
} }
.donotfollowup2{ .donotfollowup2{
background:url(../../../assets/image/workbench/donotfollowup2.png) no-repeat; background:url(../../../assets/image/workbench/donotfollowup2.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
width: calc(50% - 10px); width: calc(50% - 10px);
height: 462px; height: 462px;
padding-top: 140px; padding-top: 100px;
text-align: center; text-align: center;
float: left; float: left;
margin-left: 20px; margin-left: 20px;
@ -657,7 +730,7 @@
background-size: 100% 100%; background-size: 100% 100%;
width: calc(50% - 10px); width: calc(50% - 10px);
height: 462px; height: 462px;
padding-top: 140px; padding-top: 100px;
text-align: center; text-align: center;
float: left; float: left;
margin-left: 20px; margin-left: 20px;
@ -668,7 +741,7 @@
background-size: 100% 100%; background-size: 100% 100%;
width: calc(50% - 10px); width: calc(50% - 10px);
height: 462px; height: 462px;
padding-top: 140px; padding-top: 100px;
text-align: center; text-align: center;
float: left; float: left;
margin-left: 20px; margin-left: 20px;
@ -681,7 +754,7 @@
} }
.casework2-2{ .casework2-2{
background-color: #fff; background-color: #e2eb5321;
border-radius: 8px; border-radius: 8px;
margin-top: 15px; margin-top: 15px;
} }
@ -694,7 +767,7 @@
.pie-chart{ .pie-chart{
margin-top: 18px; margin-top: 18px;
padding: 18px; padding: 18px;
background-color: #fff; background-color: #ef806d42;
border-radius: 8px; border-radius: 8px;
.case-pk-title{ .case-pk-title{
@ -725,8 +798,8 @@
} }
.item-trace{ .item-trace{
padding: 18px; padding: 14px 18px;
background-color: #fff; background-color: #d1f1dc4f;
border-radius: 8px; border-radius: 8px;
.case-pk-title{ .case-pk-title{
span:first-child{ span:first-child{
@ -737,7 +810,7 @@
} }
.case-pk-cont{ .case-pk-cont{
padding: 21px 0 0px 0; padding: 20px 0 0px 0;
position: relative; position: relative;
.resultplan{ .resultplan{
font-size: 32px; font-size: 32px;
@ -764,6 +837,7 @@
a:first-child{ a:first-child{
color: #E8535A; color: #E8535A;
} }
span i{color: red;}
} }
} }
} }
@ -776,6 +850,6 @@ position: relative;
.caseworkicon1{background: linear-gradient(165.96deg, #FFFFFF 0%, rgba(255, 255, 255, 0) 100%); .caseworkicon1{background: linear-gradient(165.96deg, #FFFFFF 0%, rgba(255, 255, 255, 0) 100%);
opacity: 0.1;width: 80px; opacity: 0.1;width: 80px;
} }
.casework1 img,.casework2 img,.casework3 img,.casework4 img{position: absolute;right:25px;top:45px} .casework1 img,.casework3 img,.casework4 img{position: absolute;right:25px;top:45px}
</style> </style>

View File

@ -251,6 +251,8 @@
queryParamJZ: { queryParamJZ: {
pkgName:'',// pkgName:'',//
id:'', id:'',
allCase:true
}, },
caseprogressObj:{}, caseprogressObj:{},
queryParamFP: { queryParamFP: {
@ -363,7 +365,7 @@
}, },
// //
getCaseapkStatistics(){ getCaseapkStatistics(){
workApi.getmy_case_pkg_statistics({id:this.queryParamJZ.id}).then(res => { workApi.getmy_case_pkg_statistics({id:this.queryParamJZ.id,allCase:true}).then(res => {
if (!res.code) { if (!res.code) {
this.caseprogressObj = res; this.caseprogressObj = res;
} }
@ -449,7 +451,7 @@
}, },
// //
async drawCharts () { async drawCharts () {
this.mediation_success_rate = await workApi.getmy_case_pkg_statistics({id:this.queryParamCGL.id}) this.mediation_success_rate = await workApi.getmy_case_pkg_statistics({id:this.queryParamCGL.id,allCase:true})
if (this.myEcharts) { if (this.myEcharts) {
this.myEcharts.clear(); this.myEcharts.clear();
} }
@ -492,8 +494,8 @@
show: false show: false
}, },
data: [ data: [
{ value: this.mediation_success_rate.mediateFail, name: '调解失败',itemStyle:{color:'#FFE7E0'} }, { value: this.mediation_success_rate.mediateFail, name: '调解失败',itemStyle:{color:'#a7e054'} },
{ value: this.mediation_success_rate.mediateSuccess, name: '调解成功' ,itemStyle:{color:'#E4F3CE'}}, { value: this.mediation_success_rate.mediateSuccess, name: '调解成功' ,itemStyle:{color:'#bee18adb'}},
] ]
} }
] ]
@ -677,35 +679,35 @@
} }
.case-pro1 .case-pro1
{ {
background-color: #0fdfdc; background-image: linear-gradient(to right,#0fdfdc,pink)
} }
.case-pro2 .case-pro2
{ {
background-color: #ffd900; background-image: linear-gradient(to right,pink,#ffd900)
} }
.case-pro3 .case-pro3
{ {
background-color: #59a8ff; background-image: linear-gradient(to right,#ffd900,#ff0000cb)
} }
.case-pro4 .case-pro4
{ {
background-color: #ff87b1; background-image: linear-gradient(to right,#ff0000cb,#59a8ff)
} }
.case-pro5 .case-pro5
{ {
background-color: #978bff; background-image: linear-gradient(to right,#59a8ff,#b0d65e)
} }
.case-pro6 .case-pro6
{ {
background-color: #ffb048; background-image: linear-gradient(to right,#b0d65e,#dbf41e)
} }
.case-pro7 .case-pro7
{ {
background-color: #df5965; background-image: linear-gradient(to right,#dbf41e,#df5964a7)
} }
.case-pro8 .case-pro8
{ {
background-color: #d69a5e; background-image: linear-gradient(to right,#df5964a7,#df313fc2)
} }
} }

View File

@ -211,6 +211,7 @@ const util = {
case 'xlsx': case 'xlsx':
return require('../assets/image/util/excel_img.jpg'); return require('../assets/image/util/excel_img.jpg');
case 'mp3': case 'mp3':
return require('../assets/image/util/audio_img.jpg');
case 'm3u8': case 'm3u8':
case 'mp4': case 'mp4':
return require('../assets/image/util/video_img.jpg'); return require('../assets/image/util/video_img.jpg');