调解成功率

This commit is contained in:
liuxi 2024-12-30 17:59:57 +08:00
parent 327b218be9
commit 26b45fcfac
8 changed files with 203 additions and 46 deletions

View File

@ -489,7 +489,9 @@ html{
.height-138{ .height-138{
height: $height138; height: $height138;
} }
.line-height-10{
line-height: 10px;
}
.line-height-20{ .line-height-20{
line-height: 20px; line-height: 20px;
} }

View File

@ -56,10 +56,10 @@
@keydown.enter.native="handleSearch" @keydown.enter.native="handleSearch"
class="width100"> class="width100">
<el-option <el-option
v-for="item in caseStatusData" v-for="item in MediateUserList"
:key="item.code" :key="item.id"
:label="item.desc" :label="item.realName"
:value="item.code"> :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
</div> </div>
@ -352,6 +352,7 @@
</template> </template>
<script> <script>
import api from "@/services/caseManagement"; import api from "@/services/caseManagement";
import smapi from "@/services/systemManage";
import { values } from "lodash"; import { values } from "lodash";
export default { export default {
components: { components: {
@ -420,6 +421,7 @@ import { values } from "lodash";
addCaseDialog:null,// addCaseDialog:null,//
editCaseDrawer:null,// editCaseDrawer:null,//
caseStatusData:[], caseStatusData:[],
MediateUserList:[]
} }
}, },
@ -441,6 +443,7 @@ import { values } from "lodash";
if (this.$route.query.pkgName != undefined) { if (this.$route.query.pkgName != undefined) {
this.queryParam.pkgName = this.$route.query.pkgName; this.queryParam.pkgName = this.$route.query.pkgName;
} }
this.getMediateUserList()
this.getCaseInfoList(1) this.getCaseInfoList(1)
}, },
computed:{ computed:{
@ -459,6 +462,18 @@ import { values } from "lodash";
jumpUrl (url) { jumpUrl (url) {
this.$router.push(url); this.$router.push(url);
}, },
//
getMediateUserList(){
let deptId = ''
if(JSON.parse(sessionStorage.getItem('userInfo'))){
deptId = JSON.parse(sessionStorage.getItem('userInfo')).deptId
}
smapi.getUserByDeptList({ids:[deptId]}).then(res => {
if (!res.code) {
this.MediateUserList = res
}
})
},
// //
handleCheckAllChange(value){ handleCheckAllChange(value){

View File

@ -64,9 +64,13 @@
<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="200" show-overflow-tooltip ></el-table-column> <el-table-column prop="caseNo" label="案件编号" width="200" show-overflow-tooltip ></el-table-column>
<el-table-column prop="respondent" label="被申请人" show-overflow-tooltip ></el-table-column> <el-table-column prop="respondent" label="被申请人" show-overflow-tooltip ></el-table-column>
<el-table-column prop="planType" label="还款方案" show-overflow-tooltip ></el-table-column> <el-table-column prop="planType" label="还款计划" show-overflow-tooltip >
<el-table-column prop="deadline" label="还款截止日期" show-overflow-tooltip ></el-table-column> <template slot-scope="scope">
<el-table-column prop="payableAmount" label="应还金额" show-overflow-tooltip ></el-table-column> <span >一次性还款{{ scope.row.createAt | formaDate("yyyy-MM-dd hh:mm:ss") }}</span>
</template>
</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="actualPayDate" label="实际还款日期" show-overflow-tooltip ></el-table-column> <el-table-column prop="actualPayDate" label="实际还款日期" show-overflow-tooltip ></el-table-column>
<el-table-column prop="amount" label="实际还款金额" show-overflow-tooltip ></el-table-column> <el-table-column prop="amount" label="实际还款金额" show-overflow-tooltip ></el-table-column>
<el-table-column prop="status" label="状态" show-overflow-tooltip ></el-table-column> <el-table-column prop="status" label="状态" show-overflow-tooltip ></el-table-column>

View File

@ -38,6 +38,10 @@
<div class="f16 color-text-regular">密码管理</div> <div class="f16 color-text-regular">密码管理</div>
<div class="f16 color-text-secondary">修改密码<i class="el-icon-arrow-right"></i></div> <div class="f16 color-text-secondary">修改密码<i class="el-icon-arrow-right"></i></div>
</div> </div>
<div class="flex-row justify-content-between align-items-center border-t-solid-lighter-1 p-16 cursor-pointer" @click="handleChangePersonal">
<div class="f16 color-text-regular">个人信息</div>
<div class="f16 color-text-secondary">查看<i class="el-icon-arrow-right"></i></div>
</div>
<div class="border-t-solid-lighter-1 p-16 f16 color-1960F4 text-center cursor-pointer" @click="handleLoginOut()">退出登录</div> <div class="border-t-solid-lighter-1 p-16 f16 color-1960F4 text-center cursor-pointer" @click="handleLoginOut()">退出登录</div>
</div> </div>
</el-collapse-transition> </el-collapse-transition>
@ -99,11 +103,91 @@
<el-button type="primary" @click="handleSubmit()"> </el-button> <el-button type="primary" @click="handleSubmit()"> </el-button>
</span> </span>
</el-dialog> </el-dialog>
<!-- 个人信息 -->
<el-dialog
title="个人信息"
:visible="changePersonalVisible"
width="30%"
:before-close="handleClose"
>
<div class="p-16">
<el-form ref="ruleForm"
:model="PersonalInfo"
:rules="rulesClient"
label-width="80px"
class="demo-ruleForm">
<el-row type="flex" align="middle">
<el-col :span="24">
<el-form-item label="姓名">
<el-input
v-model.trim="PersonalInfo.realName"
disabled
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" align="middle">
<el-col :span="24">
<el-form-item label="证件号码">
<el-input
v-model.trim="PersonalInfo.pwd"
disabled
maxlength="18"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" align="middle">
<el-col :span="24">
<el-form-item label="手机号码">
<el-input
v-model.trim="PersonalInfo.phone"
placeholder="请输入手机号码"
clearable
maxlength="11"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" align="middle">
<el-col :span="24">
<el-form-item label="回呼电话">
<el-input
v-model.trim="PersonalInfo.replyPhone"
placeholder="请输入回呼电话"
clearable
maxlength="11"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" align="middle">
<el-col :span="8">
<el-form-item v-if="PersonalInfo.signPic !=''" label="个人签名">
<img :src="signUrl" width="125px" height="125px" />
<span class="cursor-pointer color-86909C"><i class="el-icon-refresh"></i> 重新签名</span>
</el-form-item>
<el-form-item v-else label="个人签名">
<img :src="signUrl" width="125px" height="125px"/>
</el-form-item>
</el-col>
<el-col v-if="PersonalInfo.signPic ==''" :span="16" class="line-height-10 color-86909C">
请使用微信扫码完成签字及刷脸认证
<p>请保证个人信息中的姓名及身份证号信息是本人的真实信息</p>
</el-col>
</el-row>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handlePersonalSubmit()"> </el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import api from "@/services/systemManage";
export default { export default {
components: { components: {
SideMenu: () => import('./SideMenu'), SideMenu: () => import('./SideMenu'),
@ -131,12 +215,22 @@
return{ return{
showInfo:false, showInfo:false,
changePasswordVisible:false, changePasswordVisible:false,
changePersonalVisible:false,
strKey: 'trydotec', strKey: 'trydotec',
passwordInfo:{ passwordInfo:{
oldPwd:'',// oldPwd:'',//
pwd:'',// pwd:'',//
confirmPwd:'',// confirmPwd:'',//
}, },
PersonalInfo:{
realName:'',
phone:'',
id:'',
signPic:'',
replyPhone:'',
cardNo:''
},
signUrl:'',
rulesClient: { rulesClient: {
oldPwd: [ oldPwd: [
{ required: true, message: '请输入旧密码', trigger: 'change',}, { required: true, message: '请输入旧密码', trigger: 'change',},
@ -161,6 +255,30 @@
// console.log(this.userInfo.showName) // console.log(this.userInfo.showName)
}, },
methods: { methods: {
//
handleChangePersonal(){
api.getUserById({id:this.userInfo.id}).then(res => {
this.PersonalInfo.id = res.id
this.PersonalInfo.realName = res.realName
// this.PersonalInfo.realName = res.realName
this.PersonalInfo.phone = res.phone
this.PersonalInfo.signPic = res.signPic
this.PersonalInfo.replyPhone = res.replyPhone
this.PersonalInfo.cardNo = res.cardNo
})
api.getQrCode().then(res => {
this.signUrl = 'data:image/jpg;base64,'+res
})
this.changePersonalVisible =true
this.showInfo = false
},
handlePersonalSubmit(){
api.updateUserById(this.PersonalInfo).then(res => {
this.$message.success("修改成功")
this.handleClose()
})
},
// //
handleChangePassword(){ handleChangePassword(){
@ -200,6 +318,7 @@
// //
handleClose(){ handleClose(){
this.changePasswordVisible = false this.changePasswordVisible = false
this.changePersonalVisible = false
}, },
// 退 // 退
handleLoginOut(){ handleLoginOut(){

View File

@ -32,7 +32,7 @@
<el-col :span="6"> <el-col :span="6">
<div class="flex-row-center align-items-center height-40 mb-24"> <div class="flex-row-center 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>
<el-input v-model.trim="queryParam.financialOrgName" <el-input v-model.trim="queryParam.financiaOrgName"
clearable placeholder="请输入金融机构名称" clearable placeholder="请输入金融机构名称"
@keydown.enter.native="handleSearch"> @keydown.enter.native="handleSearch">
</el-input> </el-input>
@ -46,10 +46,10 @@
@keydown.enter.native="handleSearch" @keydown.enter.native="handleSearch"
class="width100"> class="width100">
<el-option <el-option
v-for="item in caseStatusData" v-for="item in MediateUserList"
:key="item.code" :key="item.id"
:label="item.desc" :label="item.realName"
:value="item.code"> :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
</div> </div>
@ -57,7 +57,7 @@
<el-col :span="6"> <el-col :span="6">
<div class="flex-row-center align-items-center height-40 mb-24"> <div class="flex-row-center 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>
<el-input v-model.trim="queryParam.creditorName" <el-input v-model.trim="queryParam.respondent"
clearable placeholder="请输入被申请人姓名" clearable placeholder="请输入被申请人姓名"
@keydown.enter.native="handleSearch"> @keydown.enter.native="handleSearch">
</el-input> </el-input>
@ -69,7 +69,7 @@
<el-col :span="6"> <el-col :span="6">
<div class="flex-row-center align-items-center height-40 mb-24"> <div class="flex-row-center 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>
<el-input v-model.trim="queryParam.creditorPhone" <el-input v-model.trim="queryParam.respondentPhone"
clearable placeholder="请输入被申请人电话" clearable placeholder="请输入被申请人电话"
@keydown.enter.native="handleSearch" @keydown.enter.native="handleSearch"
maxlength="11" maxlength="11"
@ -80,7 +80,7 @@
<el-col :span="6"> <el-col :span="6">
<div class="flex-row-center align-items-center height-40 mb-24"> <div class="flex-row-center 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>
<el-input v-model.trim="queryParam.creditorCode" <el-input v-model.trim="queryParam.respondentIdcard"
clearable placeholder="请输入被申请人证件号" clearable placeholder="请输入被申请人证件号"
@keydown.enter.native="handleSearch" @keydown.enter.native="handleSearch"
maxlength="11" maxlength="11"
@ -130,17 +130,17 @@
<div class="case-table"> <div class="case-table">
<el-table :data="tableData" :height="`${contentHeight}`" > <el-table :data="tableData" :height="`${contentHeight}`" >
<el-table-column type="index" label="序号" width="55"></el-table-column> <el-table-column type="index" label="序号" width="55"></el-table-column>
<el-table-column prop="entrustingAgencyName" label="金融机构名称" show-overflow-tooltip ></el-table-column> <el-table-column prop="financialOrgName" label="金融机构名称" show-overflow-tooltip ></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="pkgName" label="被申请人姓名" show-overflow-tooltip ></el-table-column> <el-table-column prop="respondent" label="被申请人姓名" show-overflow-tooltip ></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="pkgName" label="案件总金额" show-overflow-tooltip ></el-table-column> <el-table-column prop="moneyAmount" label="案件总金额" show-overflow-tooltip ></el-table-column>
<el-table-column prop="pkgName" label="案件逾期天数" show-overflow-tooltip ></el-table-column> <el-table-column prop="overdueTimes" label="案件逾期天数" show-overflow-tooltip ></el-table-column>
<el-table-column prop="pkgName" label="回款金额" show-overflow-tooltip ></el-table-column> <el-table-column prop="amount" label="回款金额" show-overflow-tooltip ></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="pkgName" label="上传回款凭证时间" show-overflow-tooltip ></el-table-column> <el-table-column prop="createAt" label="上传回款凭证时间" show-overflow-tooltip ></el-table-column>
<el-table-column prop="pkgName" label="所属调解员" show-overflow-tooltip ></el-table-column> <el-table-column prop="mediatorName" label="所属调解员" show-overflow-tooltip ></el-table-column>
<el-table-column prop="pkgName" label="操作" width="200" > <el-table-column label="操作" width="200" >
<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" class="case-btn" @click="handleCaseShow(scope)">查看凭证</el-button> <el-button size="mini" class="case-btn" @click="handleCaseShow(scope)">查看凭证</el-button>
@ -177,6 +177,7 @@
</template> </template>
<script> <script>
import api from "@/services/caseManagement"; import api from "@/services/caseManagement";
import smapi from "@/services/systemManage";
export default { export default {
components: { components: {
showFile: () => import('../../components/showFile.vue'),// showFile: () => import('../../components/showFile.vue'),//
@ -193,32 +194,23 @@ import api from "@/services/caseManagement";
activeUsage: '', activeUsage: '',
queryParam: { queryParam: {
pkgId:'', pkgId:'',
financialOrgName:'',// financiaOrgName:'',//
caseNo: '',// caseNo: '',//
productTypeId: '',//id respondent:'',//
caseStatus: '',// respondentPhone:'',//
creditorName:'',// respondentIdcard:'',
creditorPhone:'',//
creditorCode:'',
endTime: '',// endTime: '',//
beginTime:'',// beginTime:'',//
deptId:'',//id startTime:'',//
mediatorId:'',//id
current:1, current:1,
size:10, size:10,
dataAuthUserId:'',//id
dataAuthDeptId:'',//id
mediatorId:'',//id
caseStatus:null,//
mediateStatus:null,//
dispatch:null,//
labels:null,//
}, },
usageOption: ['今日','昨日', '近一周', '近一月', '近半年', '近一年'], usageOption: ['今日','昨日', '近一周', '近一月', '近半年', '近一年'],
tableData: [], tableData: [],
total:0, total:0,
caseStatusData:[], caseStatusData:[],
MediateUserList:[],
} }
}, },
@ -231,6 +223,8 @@ import api from "@/services/caseManagement";
if (this.$route.query.dataKey != undefined) { if (this.$route.query.dataKey != undefined) {
this.queryParam.pkgId = this.$route.query.pkgId; this.queryParam.pkgId = this.$route.query.pkgId;
} }
this.getMediateUserList()
this.getCaseInfoList(1) this.getCaseInfoList(1)
}, },
computed:{ computed:{
@ -254,17 +248,27 @@ import api from "@/services/caseManagement";
}, },
handleUpdate(){}, handleUpdate(){},
//
getMediateUserList(){
let deptId = ''
if(JSON.parse(sessionStorage.getItem('userInfo'))){
deptId = JSON.parse(sessionStorage.getItem('userInfo')).deptId
}
smapi.getUserByDeptList({ids:[deptId]}).then(res => {
if (!res.code) {
this.MediateUserList = res
}
})
},
// //
getCaseInfoList(val){ getCaseInfoList(val){
this.queryParam.current = val this.queryParam.current = val
api.getCaseInfoList(this.queryParam).then(res => { this.queryParam.startTime = this.queryParam.beginTime
api.gettraceProof_page(this.queryParam).then(res => {
if (!res.code) { if (!res.code) {
this.tableData = res.records; this.tableData = res.records;
this.total = res.total; this.total = res.total;
// enabledDataList
this.enabledDataList = this.tableData.filter(v=>!v.disabled)
} }
}) })
}, },

View File

@ -272,7 +272,6 @@
} }
}, },
mediation_success_rate:{caseTotal:0,mediateSuccess:0,mediateFail:0}, mediation_success_rate:{caseTotal:0,mediateSuccess:0,mediateFail:0},
}; };
}, },
watch: { watch: {

View File

@ -136,6 +136,10 @@ const caseManagementApi = {
gettraceProof_cancel: data => { gettraceProof_cancel: data => {
return service.service.post(`${apiAdmin}api/trace/traceProof/cancel`, data) return service.service.post(`${apiAdmin}api/trace/traceProof/cancel`, data)
}, },
// 还款凭证分页列表
gettraceProof_page: data => {
return service.service.post(`${apiAdmin}api/trace/traceProof/page`, data)
},
// 短信模板 // 短信模板

View File

@ -36,6 +36,16 @@ const systemLogApi = {
getUserById: data => { getUserById: data => {
return service.service.post(`${apiAdmin}system/user/getUserById`, data) return service.service.post(`${apiAdmin}system/user/getUserById`, data)
}, },
// 获取个人二维码
getQrCode: data => {
return service.service.get(`${apiAdmin}system/user/getQrCode`, data)
},
// 根据部门id列表查看用户列表
getUserByDeptList: data => {
return service.service.post(`${apiAdmin}system/user/getUserByDeptList`, data)
},
//========================end::用户管理====================================== //========================end::用户管理======================================
//========================start::角色相关====================================== //========================start::角色相关======================================