This commit is contained in:
张运江 2025-02-25 11:06:00 +08:00
commit 125d079a83
14 changed files with 140 additions and 29 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@ -165,7 +165,7 @@
<el-col :span="24"> <el-col :span="24">
<el-form-item label="证件号码"> <el-form-item label="证件号码">
<el-input <el-input
v-model.trim="PersonalInfo.pwd" v-model.trim="PersonalInfo.cardNo"
disabled disabled
maxlength="18" maxlength="18"
></el-input> ></el-input>

View File

@ -216,7 +216,7 @@
<div class="pt-8"> <div class="pt-8">
<div class="height-56 flex-row align-items-center justify-content-between"> <div class="height-56 flex-row align-items-center justify-content-between">
<div class="f22 color-text-primary">案件列表</div> <div class="f22 color-text-primary">案件列表</div>
<div class="flex-row"> <div class="flex-row" v-if="activeName != 'mediated'">
<el-button size="small" @click="handleConclude"><i class="el-icon-receiving f14 mr-4"></i>案件办结</el-button> <el-button size="small" @click="handleConclude"><i class="el-icon-receiving f14 mr-4"></i>案件办结</el-button>
<el-button size="small" @click="handleSMSSend"><i class="el-icon-message f14 mr-4"></i>发送短信</el-button> <el-button size="small" @click="handleSMSSend"><i class="el-icon-message f14 mr-4"></i>发送短信</el-button>
<el-button size="small" @click="handleBrainCall"><i class="el-icon-service f14 mr-4"></i>智能外呼</el-button> <el-button size="small" @click="handleBrainCall"><i class="el-icon-service f14 mr-4"></i>智能外呼</el-button>
@ -318,11 +318,17 @@
</span> </span>
<span class="cursor-pointer" @click="CaseTraceDialog = {activeName:'7',title:'还款计划',caseNo:scope.row.caseNo,caseId:scope.row.id}"> <span class="cursor-pointer" @click="CaseTraceDialog = {activeName:'7',title:'还款计划',caseNo:scope.row.caseNo,caseId:scope.row.id}">
<p>还款计划</p> <p>还款计划</p>
<p class="color-000"><a class="color-274ea4">{{scope.row.statistics.plan == 0 ? '未设置':'已设置'}}</a></p> <p class="color-000">
<a v-if="scope.row.statistics.plan == 0">未设置</a>
<a v-else class="color-274ea4">已设置</a>
</p>
</span> </span>
<span class="cursor-pointer" @click="CaseTraceDialog = {activeName:'8',title:'还款凭证',caseNo:scope.row.caseNo,caseId:scope.row.id}"> <span class="cursor-pointer" @click="CaseTraceDialog = {activeName:'8',title:'还款凭证',caseNo:scope.row.caseNo,caseId:scope.row.id}">
<p>还款凭证</p> <p>还款凭证</p>
<p class="color-000"><a class="color-274ea4">已填{{scope.row.statistics.proof}}</a></p> <p class="color-000">
<a v-if="scope.row.statistics.proof == 0">未填</a>
<a v-else class="color-274ea4">已填{{scope.row.statistics.proof}}</a>
</p>
</span> </span>
</div> </div>
<!-- <div class="flex-row justify-content-end"> <!-- <div class="flex-row justify-content-end">

View File

@ -325,6 +325,33 @@ 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') console.log(1,'handleSubmitRepayment')
this.$refs.ruleFormRepayment.validate((valid) => { this.$refs.ruleFormRepayment.validate((valid) => {

View File

@ -170,7 +170,7 @@ export default {
getRoomArgument() { getRoomArgument() {
let {roomId, sdkAppId, userId, userSig} = this.eventDialog; let {roomId, sdkAppId, userId, userSig} = this.eventDialog;
console.log(roomId, sdkAppId, userId, userSig, '---roomId, sdkAppId, userId, userSig') console.log(roomId, sdkAppId, userId, userSig, '---roomId, sdkAppId, userId, userSig')
this.roomId = parseInt(roomId, 10); this.roomId = roomId;
this.sdkAppId = parseInt(sdkAppId, 10); this.sdkAppId = parseInt(sdkAppId, 10);
this.userId = userId; this.userId = userId;
this.userSig = userSig; this.userSig = userSig;
@ -218,11 +218,16 @@ export default {
this.handleStartLocalVideo(); this.handleStartLocalVideo();
}, },
async enterRoom() { async enterRoom() {
console.log({
strRoomId: this.roomId.toString(),
sdkAppId: this.sdkAppId,
userId: this.userId,
userSig: this.userSig,
},'进入房间')
this.trtc = TRTC.create(); this.trtc = TRTC.create();
try { try {
await this.trtc.enterRoom({ await this.trtc.enterRoom({
strRoomId: this.roomId, strRoomId: this.roomId.toString(),
// sdkAppId: parseInt(this.sdkAppId, 10),
sdkAppId: this.sdkAppId, sdkAppId: this.sdkAppId,
userId: this.userId, userId: this.userId,
userSig: this.userSig, userSig: this.userSig,

View File

@ -46,6 +46,18 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row type="flex" align="middle">
<el-col :span="24">
<el-form-item label="证件号码" prop="cardNo">
<el-input
v-model.trim="userInfo.cardNo"
placeholder="请输入证件号码"
clearable
maxlength="18"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" align="middle"> <el-row type="flex" align="middle">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="电子邮箱" prop="email"> <el-form-item label="电子邮箱" prop="email">
@ -175,7 +187,8 @@ export default {
deptId:'', deptId:'',
deptIds:[], deptIds:[],
type: 2, type: 2,
status:1 status:1,
cardNo:''
}, },
rulesClient: { rulesClient: {
password: [ password: [
@ -185,6 +198,10 @@ export default {
realName: [ realName: [
{ required: true, message: '请输入员工姓名', trigger: ['blur','change'] } { required: true, message: '请输入员工姓名', trigger: ['blur','change'] }
], ],
cardNo: [
{ required: true, message: '请输入身份证号', trigger: 'change',},
{ pattern: /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/, message: '请输入正确的身份证号', trigger: ['blur', 'change']}
],
roleIds: [ roleIds: [
{ required: true, message: '请选择员工角色', trigger: ['blur','change'] } { required: true, message: '请选择员工角色', trigger: ['blur','change'] }
], ],
@ -352,6 +369,7 @@ export default {
this.userInfo.roleIds = dataJson.roleIds; this.userInfo.roleIds = dataJson.roleIds;
this.userInfo.regionId = ''; this.userInfo.regionId = '';
this.userInfo.teamId = ''; this.userInfo.teamId = '';
this.userInfo.cardNo = dataJson.cardNo;
// this.userInfo.regionId = '0' // this.userInfo.regionId = '0'
// this.userInfo.teamId = '' // this.userInfo.teamId = ''
// this.userInfo.teamId = '' // this.userInfo.teamId = ''

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.unassignTotal}}</a></p> <p><a>{{caseprogressObj.unassignTotal}}</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>
@ -149,26 +157,26 @@
<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><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> <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><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> <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><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> <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><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> <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><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> <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><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> <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><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> <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><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> <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>
@ -632,14 +640,14 @@
.case-progress-cont{ .case-progress-cont{
background-color: #fff; background-color: #fff;
border-radius: 5px; border-radius: 5px;
font-size: 16px; 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;
@ -652,9 +660,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;padding-left: 20px;}
.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-color: #0fdfdc;
}
.case-pro2
{
background-color: #ffd900;
}
.case-pro3
{
background-color: #59a8ff;
}
.case-pro4
{
background-color: #ff87b1;
}
.case-pro5
{
background-color: #978bff;
}
.case-pro6
{
background-color: #ffb048;
}
.case-pro7
{
background-color: #df5965;
}
.case-pro8
{
background-color: #d69a5e;
}
} }
.case-pro1{width: 155px;height: 105px;}
} }
.casework-1{ .casework-1{
background-color: #ec9dd82b; background-color: #ec9dd82b;