合并
This commit is contained in:
commit
1a2fb2c92d
@ -33,10 +33,19 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
socketSucc(frame) {
|
socketSucc(frame) {
|
||||||
console.log(frame, '---初始化成功app')
|
console.log(frame, '---初始化成功app')
|
||||||
|
// '/user/'+userId+'/queue/video'
|
||||||
|
let userInfo = JSON.parse(sessionStorage.getItem('userInfo'))
|
||||||
|
let url = `/user/${userInfo.phone}/queue/video`
|
||||||
|
// console.log(url, '---订阅地址')
|
||||||
|
this.$stompSocket.subscription(url, this.receivePush)
|
||||||
},
|
},
|
||||||
socketErr(frame) {
|
socketErr(frame) {
|
||||||
console.log(frame, '---初始化失败app')
|
console.log(frame, '---初始化失败app')
|
||||||
},
|
},
|
||||||
|
receivePush(message) {
|
||||||
|
console.log(message, '---接收订阅消息')
|
||||||
|
this.$store.commit('setVideoReminder', message.body)
|
||||||
|
},
|
||||||
scriptWithDataSetExists(dataId) {
|
scriptWithDataSetExists(dataId) {
|
||||||
const scriptElement = document.querySelector(`script[data-telephone="${dataId}"]`);
|
const scriptElement = document.querySelector(`script[data-telephone="${dataId}"]`);
|
||||||
return scriptElement !== null;
|
return scriptElement !== null;
|
||||||
|
|||||||
@ -68,7 +68,7 @@ import api from "@/services/caseManagement";
|
|||||||
// 如果是图片,直接显示图片
|
// 如果是图片,直接显示图片
|
||||||
this.fileType = 'image'
|
this.fileType = 'image'
|
||||||
}
|
}
|
||||||
if(this.$util.getFileType(url) === 'video') {
|
else if(this.$util.getFileType(url) === 'video') {
|
||||||
// 如果是图片,直接显示图片
|
// 如果是图片,直接显示图片
|
||||||
this.fileType = 'video'
|
this.fileType = 'video'
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,32 +10,43 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="case-table">
|
<div class="case-table">
|
||||||
<el-table :data="tableData" height="370" >
|
<el-table :data="communicationRecord" height="370" >
|
||||||
<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="pkgName" label="外呼/呼入类型" show-overflow-tooltip ></el-table-column>
|
<el-table-column label="外呼/呼入类型" show-overflow-tooltip >
|
||||||
<el-table-column prop="planStartTime" label="呼叫时间" show-overflow-tooltip >
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span >{{ scope.row.planStartTime | formaDate("yyyy-MM-dd hh:mm:ss") }}</span>
|
<span >{{ scope.row.callWay == 1 ? '呼出':'呼入' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="呼叫对象" width="300" show-overflow-tooltip >
|
||||||
<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">
|
<template slot-scope="scope">
|
||||||
<span >{{ scope.row.planStartTime | formaDate("yyyy-MM-dd hh:mm:ss") }}</span>
|
<span v-for="(item,index) in scope.row.linkedPersonInfo" :key="index">
|
||||||
|
{{ item.name}} - {{ item.phone}} - {{ item.type}}
|
||||||
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="channel" label="录音文件" show-overflow-tooltip ></el-table-column>
|
<el-table-column label="接听状态" show-overflow-tooltip >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span >
|
||||||
|
{{$util.getTelephoneTypeData(scope.row.linkedSituation).label}}
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="沟通时长" show-overflow-tooltip >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span v-if="scope.linkedType == 1">通话{{scope.linkedDuration}}秒</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="mediator" label="操作人" show-overflow-tooltip ></el-table-column>
|
||||||
|
<el-table-column label="操作时间" show-overflow-tooltip >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span >{{ scope.row.createAt | 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>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="text-center pt-16">
|
<!-- <div class="text-center pt-16">
|
||||||
<el-pagination
|
<el-pagination
|
||||||
@size-change="getCaseInfoList"
|
@size-change="getCaseInfoList"
|
||||||
@current-change="getCaseInfoList"
|
@current-change="getCaseInfoList"
|
||||||
@ -44,7 +55,7 @@
|
|||||||
layout="total, prev, pager, next, jumper"
|
layout="total, prev, pager, next, jumper"
|
||||||
:total="total">
|
:total="total">
|
||||||
</el-pagination>
|
</el-pagination>
|
||||||
</div>
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -63,18 +74,34 @@ import api from "@/services/caseManagement";
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
queryParam:{
|
||||||
queryParam:{},
|
caseId:'',
|
||||||
tableData:[],
|
linkedWay:'1'
|
||||||
total:0,
|
},
|
||||||
|
communicationRecord:[],
|
||||||
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
console.log(this.eventTraDialog,'eventTraDialog')
|
console.log(this.eventTraDialog,'this.eventTraDialog')
|
||||||
|
this.queryParam.caseId = this.eventTraDialog.caseId
|
||||||
|
this.getmediate_record()
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
// 获取调解记录
|
||||||
|
getmediate_record() {
|
||||||
|
api.mediate_record_list(this.queryParam).then(res => {
|
||||||
|
if (!res.code) {
|
||||||
|
res.forEach(element => {
|
||||||
|
element.records.forEach(item =>{
|
||||||
|
this.communicationRecord.push(item)
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
console.log(this.communicationRecord,'communicationRecord')
|
||||||
|
})
|
||||||
|
},
|
||||||
handleClose() {
|
handleClose() {
|
||||||
this.$emit('update:eventTraDialog', null)
|
this.$emit('update:eventTraDialog', null)
|
||||||
},
|
},
|
||||||
|
|||||||
@ -41,7 +41,10 @@
|
|||||||
<!-- 文书生成追踪明细 -->
|
<!-- 文书生成追踪明细 -->
|
||||||
<officeDialogDetail v-if="activeName == '4'" :DialogDetail="eventTraDialog" />
|
<officeDialogDetail v-if="activeName == '4'" :DialogDetail="eventTraDialog" />
|
||||||
<!-- 文书签字追踪明细 -->
|
<!-- 文书签字追踪明细 -->
|
||||||
<officeWDialogDetail v-if="activeName == '5'" :DialogDetail="eventTraDialog" />
|
<!-- <officeWDialogDetail v-if="activeName == '5'" :DialogDetail="eventTraDialog" /> -->
|
||||||
|
<!-- 文书签字追踪 -->
|
||||||
|
<officeWriteDialog v-if="activeName == '5'" :eventTraDialog="eventTraDialog" />
|
||||||
|
|
||||||
<!-- 文书送达追踪明细 -->
|
<!-- 文书送达追踪明细 -->
|
||||||
<officeDeliveryDialogDetail v-if="activeName == '6'" :DialogDetail="eventTraDialog" />
|
<officeDeliveryDialogDetail v-if="activeName == '6'" :DialogDetail="eventTraDialog" />
|
||||||
<!-- 还款计划 -->
|
<!-- 还款计划 -->
|
||||||
@ -78,6 +81,7 @@ import api from "@/services/caseManagement";
|
|||||||
officeDeliveryDialogDetail: () => import('../../event-tracing/dtraceDetail/officeDeliveryDialogDetail.vue'),//文书送达追踪明细
|
officeDeliveryDialogDetail: () => import('../../event-tracing/dtraceDetail/officeDeliveryDialogDetail.vue'),//文书送达追踪明细
|
||||||
officeDialogDetail: () => import('../../event-tracing/dtraceDetail/officeDialogDetail.vue'),//文书生成追踪明细
|
officeDialogDetail: () => import('../../event-tracing/dtraceDetail/officeDialogDetail.vue'),//文书生成追踪明细
|
||||||
officeWDialogDetail: () => import('../../event-tracing/dtraceDetail/officeWDialogDetail.vue'),//文书签字追踪明细
|
officeWDialogDetail: () => import('../../event-tracing/dtraceDetail/officeWDialogDetail.vue'),//文书签字追踪明细
|
||||||
|
officeWriteDialog: () => import('../../event-tracing/components/officeWriteDialog.vue'),//文书签字追踪
|
||||||
|
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
@ -104,26 +108,25 @@ import api from "@/services/caseManagement";
|
|||||||
methods: {
|
methods: {
|
||||||
// tab切换
|
// tab切换
|
||||||
handleTabClick(tab){
|
handleTabClick(tab){
|
||||||
if(tab.name == '1'){
|
// if(tab.name == '1'){
|
||||||
eventTraDialog = {caseNo:'123'}
|
// eventTraDialog = {caseNo:'123'}
|
||||||
}else if(tab.name == '2'){
|
// }else if(tab.name == '2'){
|
||||||
calllogDialog = {title:'电话呼叫记录',caseNo:'123'}
|
// calllogDialog = {title:'电话呼叫记录',caseNo:'123'}
|
||||||
}else if(tab.name == '3'){
|
// }else if(tab.name == '3'){
|
||||||
eventTraDialog = {title:'视频调解记录',caseNo:'123'}
|
// eventTraDialog = {title:'视频调解记录',caseNo:'123'}
|
||||||
}else if(tab.name == '4'){
|
// }else if(tab.name == '4'){
|
||||||
eventTraDialog = {title:'文书生成记录',caseNo:'123'}
|
// eventTraDialog = {title:'文书生成记录',caseNo:'123'}
|
||||||
}else if(tab.name == '5'){
|
// }else if(tab.name == '5'){
|
||||||
eventTraDialog = {title:'文书签字记录',caseNo:'123'}
|
// eventTraDialog = {title:'文书签字记录',caseNo:'123'}
|
||||||
}else if(tab.name == '6'){
|
// }else if(tab.name == '6'){
|
||||||
eventTraDialog = {title:'文书送达记录',caseNo:'123'}
|
// eventTraDialog = {title:'文书送达记录',caseNo:'123'}
|
||||||
}else if(tab.name == '7'){
|
// }else if(tab.name == '7'){
|
||||||
repaymentDialog = {title:'还款计划',caseNo:'123'}
|
// repaymentDialog = {title:'还款计划',caseNo:'123'}
|
||||||
}else if(tab.name == '8'){
|
// }else if(tab.name == '8'){
|
||||||
eventTraDialog = {title:'还款凭证',caseNo:'123'}
|
// eventTraDialog = {title:'还款凭证',caseNo:'123'}
|
||||||
}else {
|
// }else {
|
||||||
|
|
||||||
}
|
// }
|
||||||
// this.getCaseInfoList(1)
|
|
||||||
},
|
},
|
||||||
handleClose() {
|
handleClose() {
|
||||||
this.$emit('update:eventTraDialog', null)
|
this.$emit('update:eventTraDialog', null)
|
||||||
|
|||||||
@ -78,8 +78,13 @@ import api from "@/services/caseManagement";
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleCaseShow(scope){
|
async handleCaseShow(scope){
|
||||||
this.fileDialog = {showfile:{url:scope.row.proofUrl},filelist:[]}
|
let previewUrl = await this.getProofFile(scope.row.proofUrl)
|
||||||
|
this.fileDialog = {showfile:{fullUrl:previewUrl,url:scope.row.proofUrl},filelist:[]}
|
||||||
|
},
|
||||||
|
async getProofFile(url){
|
||||||
|
let previewUrl = await this.$fetchApi.viewFullFile({path: url})
|
||||||
|
return previewUrl
|
||||||
},
|
},
|
||||||
handleClose() {
|
handleClose() {
|
||||||
this.$emit('update:eventTraDialog', null)
|
this.$emit('update:eventTraDialog', null)
|
||||||
|
|||||||
@ -1,750 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<el-dialog
|
|
||||||
:title="addCaseDialog.title"
|
|
||||||
:visible="true"
|
|
||||||
width="880px"
|
|
||||||
append-to-body
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
@close="handleClose"
|
|
||||||
>
|
|
||||||
|
|
||||||
<div >
|
|
||||||
|
|
||||||
<el-steps :active="presentStep" align-center>
|
|
||||||
<el-step v-for="(item,inx) in transferStep" :key="inx" :title="item.title" :description="item.description"></el-step>
|
|
||||||
</el-steps>
|
|
||||||
|
|
||||||
<!-- 基本信息 -->
|
|
||||||
<div v-if="presentStep === 1">
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">基本信息</div>
|
|
||||||
<div class="p-h-24">
|
|
||||||
<el-form ref="ruleFormBase"
|
|
||||||
:model="baseInfo"
|
|
||||||
:rules="rulesClient"
|
|
||||||
label-width="150px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="金融机构名称" prop="financialOrgName">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="baseInfo.financialOrgName"
|
|
||||||
placeholder="请输入金融机构名称"
|
|
||||||
clearable
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="社会统一信用代码" prop="financialOrgCode">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="baseInfo.financialOrgCode"
|
|
||||||
placeholder="请输入社会统一信用代码"
|
|
||||||
clearable
|
|
||||||
maxlength="18"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="案件名称" prop="caseName">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入案件名称"
|
|
||||||
v-model="baseInfo.caseName">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="案件编号" prop="caseNo">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入案件编号"
|
|
||||||
v-model="baseInfo.caseNo">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="金融产品类型" prop="productTypeId">
|
|
||||||
<el-select v-model="baseInfo.productTypeId"
|
|
||||||
clearable placeholder="请选择金融产品类型"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in financialProductsTypeOptions"
|
|
||||||
:key="item.code"
|
|
||||||
:label="item.codeName"
|
|
||||||
:value="item.code">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="标的金额" prop="moneyAmount">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入内容"
|
|
||||||
v-model="baseInfo.moneyAmount">
|
|
||||||
<template slot="append">元</template>
|
|
||||||
</el-input>
|
|
||||||
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="逾期次数" prop="overdueTimes">
|
|
||||||
<!-- <el-select v-model="baseInfo.overdueTimes"
|
|
||||||
clearable placeholder="请选择逾期次数"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in operateMethodOptions"
|
|
||||||
:key="item"
|
|
||||||
:label="item"
|
|
||||||
:value="item">
|
|
||||||
</el-option>
|
|
||||||
</el-select> -->
|
|
||||||
<el-input-number v-model="baseInfo.overdueTimes" :min="0" :max="100" class="width100"></el-input-number>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="案件描述" prop="caseDescr">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入内容"
|
|
||||||
v-model="baseInfo.caseDescr">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 当事人信息 -->
|
|
||||||
<div v-else-if="presentStep === 2">
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">案件当事人</div>
|
|
||||||
<div class="p-h-24">
|
|
||||||
<div class="border-solid-lighter-1 p-h-24 mb-16">
|
|
||||||
<div class="flex-row justify-content-between height-48 line-height-48 f14 border-b-solid-lighter-1 mb-16">
|
|
||||||
<div class="color-000">债权人</div>
|
|
||||||
<div class="color-text-regular cursor-pointer" @click="handleReset">清空<i class="el-icon-close"></i></div>
|
|
||||||
</div>
|
|
||||||
<el-form ref="ruleFormCreditor"
|
|
||||||
:model="creditorInfo"
|
|
||||||
:rules="rulesClientCreditor"
|
|
||||||
label-width="150px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="债权人" prop="creditorName">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="creditorInfo.creditorName"
|
|
||||||
placeholder="请输入债权人"
|
|
||||||
clearable
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="社会统一信用代码" prop="creditorOrgCode">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="creditorInfo.creditorOrgCode"
|
|
||||||
placeholder="请输入社会统一信用代码"
|
|
||||||
clearable
|
|
||||||
maxlength="18"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="法人姓名" prop="creditorLegal">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入法人姓名"
|
|
||||||
v-model="creditorInfo.creditorLegal">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="法人身份证号" prop="creditorIdcard">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入法人身份证号"
|
|
||||||
v-model="creditorInfo.creditorIdcard"
|
|
||||||
maxlength="18">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="法人手机号" prop="creditorPhone">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入法人手机号"
|
|
||||||
v-model="creditorInfo.creditorPhone"
|
|
||||||
maxlength="11"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="公司地址" prop="creditorAddr">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入公司地址"
|
|
||||||
v-model="creditorInfo.creditorAddr">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="邮编" prop="creditorMail">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入邮编"
|
|
||||||
v-model="creditorInfo.creditorMail"
|
|
||||||
maxlength="6"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="代理人" prop="creditorAgent">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入代理人"
|
|
||||||
v-model="creditorInfo.creditorAgent">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
<div class="border-solid-lighter-1 p-h-24">
|
|
||||||
<div class="flex-row justify-content-between f14 border-b-solid-lighter-1 mb-8 p-v-8 align-items-center">
|
|
||||||
<div class="color-000">债务人</div>
|
|
||||||
<el-button size="small" type="primary" @click="handleAdd">新增债务人<i class="el-icon-plus"></i></el-button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<el-form ref="ruleFormObligor"
|
|
||||||
:model="obligorInfoForm"
|
|
||||||
label-width="150px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<div v-for="(item,inx) in obligorInfoForm.debtorEntityList" :key="inx">
|
|
||||||
<div class="flex-row justify-content-between align-items-center height-40 f14 mb-16">
|
|
||||||
<div class="color-text-primary">债务人{{inx+1}}</div>
|
|
||||||
<div class="color-text-regular cursor-pointer" @click="handleRemoveDomain(item)">删除<i class="el-icon-close"></i></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="债务人姓名" :prop="'debtorEntityList.' + inx + '.name'" :rules="{required: true, message: '请输入债权人姓名', trigger: 'blur'}">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="obligorInfoForm.debtorEntityList[inx].name"
|
|
||||||
placeholder="请输入债务人姓名"
|
|
||||||
clearable
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="证件类型" :prop="'debtorEntityList.' + inx + '.cardTypeId'" :rules="{required: true, message: '请选择证件类型', trigger: 'blur'}">
|
|
||||||
<el-select v-model="obligorInfoForm.debtorEntityList[inx].cardTypeId"
|
|
||||||
clearable placeholder="请选择证件类型"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in idTypeOptions"
|
|
||||||
:key="item.code"
|
|
||||||
:label="item.codeName"
|
|
||||||
:value="item.code">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="证件号码" :prop="'debtorEntityList.' + inx + '.cardNo'"
|
|
||||||
:rules=" [
|
|
||||||
{ 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']}
|
|
||||||
]">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入证件号码"
|
|
||||||
v-model="obligorInfoForm.debtorEntityList[inx].cardNo"
|
|
||||||
maxlength="18"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="手机号码" :prop="'debtorEntityList.' + inx + '.phone'" :rules="[
|
|
||||||
{ required: true, message: '请输入法人手机号', trigger: 'change',},
|
|
||||||
{ pattern: /^(13[0-9]{9})|(18[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})|(19[0-9]{9})$/, message: '请输入正确的手机号码', trigger: ['blur', 'change']}
|
|
||||||
]">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入手机号码"
|
|
||||||
v-model="obligorInfoForm.debtorEntityList[inx].phone"
|
|
||||||
maxlength="11"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="地址" :prop="'debtorEntityList.' + inx + '.addr'" :rules="{ required: true, message: '请输入地址', trigger: 'change',}">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入地址"
|
|
||||||
v-model="obligorInfoForm.debtorEntityList[inx].addr">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="邮编" :prop="'debtorEntityList.' + inx + '.mail'" :rules="{ required: true, message: '请输入邮编', trigger: 'change',}">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入邮编"
|
|
||||||
v-model="obligorInfoForm.debtorEntityList[inx].mail"
|
|
||||||
maxlength="6">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 模板选择 -->
|
|
||||||
<div v-else-if="presentStep === 3">
|
|
||||||
|
|
||||||
<el-form ref="ruleFormTemplate"
|
|
||||||
:model="queryParam"
|
|
||||||
:rules="rulesClientTemplate"
|
|
||||||
label-width="150px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<div>
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">模板话术</div>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="话术模板" prop="tpSpeechcraftId">
|
|
||||||
<el-select v-model="queryParam.tpSpeechcraftId"
|
|
||||||
clearable placeholder="请选择模板话术"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in speechcraftTemplateOptions"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">调解模板</div>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="调解模板" prop="tpMediateId">
|
|
||||||
<el-select v-model="queryParam.tpMediateId"
|
|
||||||
clearable placeholder="请选择调解模板"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in mediationTemplateOptions"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
</el-form>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 材料上传 -->
|
|
||||||
<div v-else-if="presentStep === 4">
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">证据材料</div>
|
|
||||||
<div class="p-h-24">
|
|
||||||
<upload-file-name :file-list="fileList" :max-count="20"
|
|
||||||
:show-file-name="true"
|
|
||||||
@handleUploadFile="handleUploadFile">
|
|
||||||
</upload-file-name>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 完成 -->
|
|
||||||
<div v-else-if="presentStep === 5">
|
|
||||||
<el-result icon="success" title="案件创建完成" subTitle="案件创建完成,继续处理其他案件">
|
|
||||||
<template slot="extra">
|
|
||||||
<el-button type="primary" size="medium" @click="handleClose">好的</el-button>
|
|
||||||
</template>
|
|
||||||
</el-result>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<span slot="footer" class="dialog-footer" v-if="presentStep<5">
|
|
||||||
<el-button @click="handleClose">取消</el-button>
|
|
||||||
<el-button
|
|
||||||
v-if="presentStep > 1 "
|
|
||||||
type="primary"
|
|
||||||
@click="presentStep--">上一步</el-button>
|
|
||||||
|
|
||||||
<el-button
|
|
||||||
type="primary"
|
|
||||||
v-show="presentStep<4"
|
|
||||||
@click="handleNextStep">下一步</el-button>
|
|
||||||
<el-button
|
|
||||||
type="primary"
|
|
||||||
v-show="presentStep === 4"
|
|
||||||
@click="handleSubmit">确认
|
|
||||||
</el-button>
|
|
||||||
</span>
|
|
||||||
</el-dialog>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import api from "@/services/caseManagement";
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
uploadFileName: () => import('@/components/uploadFileName.vue'),//上传
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
addCaseDialog: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
const moneyAmountValidate = (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('只能输入两位小数的金额!'));
|
|
||||||
}else if(!(0<parseInt(value)&&parseInt(value)<100000000)){
|
|
||||||
callback(new Error('只能输入大于1小于1亿的金额!'));
|
|
||||||
}else{
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return {
|
|
||||||
|
|
||||||
transferStep:[
|
|
||||||
{id:1,title:'基本信息',description:'录入案件基本信息'},
|
|
||||||
{id:2,title:'当事人信息',description:'录入当事人信息'},
|
|
||||||
{id:3,title:'模板选择',description:'选择模板'},
|
|
||||||
{id:4,title:'材料上传',description:'上传案件材料'},
|
|
||||||
{id:5,title:'完成',description:'完成案件创建'},
|
|
||||||
],
|
|
||||||
presentStep:1,
|
|
||||||
|
|
||||||
//-----------------------------基本信息-------------------------
|
|
||||||
baseInfo:{
|
|
||||||
financialOrgName:'',//金融机构名称
|
|
||||||
financialOrgCode:'',//社会统一信用代码
|
|
||||||
caseName:'',//案件名称
|
|
||||||
caseNo:'',//案件编号
|
|
||||||
productTypeId:'',//金融产品类型
|
|
||||||
moneyAmount:'',//标的金额
|
|
||||||
overdueTimes:0,//逾期次数
|
|
||||||
caseDescr:'',//案件描述
|
|
||||||
},
|
|
||||||
rulesClient: {
|
|
||||||
financialOrgName: [
|
|
||||||
{ required: true, message: '请输入机构名称', trigger: 'change',},
|
|
||||||
],
|
|
||||||
financialOrgCode: [
|
|
||||||
{ required: true, message: '请输入社会统一信用代码', trigger: 'change',},
|
|
||||||
],
|
|
||||||
caseName: [
|
|
||||||
{ required: true, message: '请输入案件名称', trigger: 'change',},
|
|
||||||
],
|
|
||||||
caseNo: [
|
|
||||||
{ required: true, message: '请输入案件编号', trigger: 'change',},
|
|
||||||
],
|
|
||||||
productTypeId: [
|
|
||||||
{ required: true, message: '请选择金融产品类型', trigger: 'change',},
|
|
||||||
],
|
|
||||||
moneyAmount: [
|
|
||||||
{ required: true, validator: moneyAmountValidate, trigger: 'change',},
|
|
||||||
],
|
|
||||||
caseDescr:[
|
|
||||||
{ required: true, message: '请输入案件描述', trigger: 'change',},
|
|
||||||
]
|
|
||||||
},
|
|
||||||
financialProductsTypeOptions:[],//金融产品类型
|
|
||||||
|
|
||||||
//----------------------------案件当事人-------------------
|
|
||||||
// 债权人
|
|
||||||
creditorInfo:{
|
|
||||||
creditorName:'',//债权人
|
|
||||||
creditorOrgCode:'',//债权人机构代码
|
|
||||||
creditorLegal:'',//法人
|
|
||||||
creditorIdcard:'',//法人身份证
|
|
||||||
creditorPhone:'',//法人手机
|
|
||||||
creditorAddr:'',//公司地址
|
|
||||||
creditorMail:'',//邮编
|
|
||||||
creditorAgent:'',//代理人
|
|
||||||
},
|
|
||||||
rulesClientCreditor: {
|
|
||||||
creditorName: [
|
|
||||||
{ required: true, message: '请输入债权人', trigger: 'change',},
|
|
||||||
],
|
|
||||||
creditorOrgCode: [
|
|
||||||
{ required: true, message: '请输入债权人机构代码', trigger: 'change',},
|
|
||||||
],
|
|
||||||
creditorLegal: [
|
|
||||||
{ required: true, message: '请输入法人', trigger: 'change',},
|
|
||||||
],
|
|
||||||
creditorIdcard: [
|
|
||||||
{ 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']}
|
|
||||||
],
|
|
||||||
creditorPhone: [
|
|
||||||
{ required: true, message: '请输入法人手机号', trigger: 'change',},
|
|
||||||
{ pattern: /^(13[0-9]{9})|(18[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})|(19[0-9]{9})$/, message: '请输入正确的手机号码', trigger: ['blur', 'change']}
|
|
||||||
],
|
|
||||||
creditorAddr: [
|
|
||||||
{ required: true, message: '请输入公司地址', trigger: 'change',},
|
|
||||||
],
|
|
||||||
// creditorAgent: [
|
|
||||||
// { required: true, message: '请输入代理人', trigger: 'change',},
|
|
||||||
// ],
|
|
||||||
},
|
|
||||||
// 债务人
|
|
||||||
idTypeOptions:[],
|
|
||||||
obligorInfoForm:{
|
|
||||||
debtorEntityList:[
|
|
||||||
{
|
|
||||||
name:'',//债务人姓名
|
|
||||||
phone:'',//债务人电话
|
|
||||||
cardTypeId:'',//证件类型
|
|
||||||
addr:'',//地址
|
|
||||||
cardNo:'',//证件号
|
|
||||||
mail:'',//邮编
|
|
||||||
|
|
||||||
}
|
|
||||||
],
|
|
||||||
},
|
|
||||||
|
|
||||||
obligorRulesClient:{
|
|
||||||
name: [
|
|
||||||
{ required: true, message: '请输入债务人姓名', trigger: 'change',},
|
|
||||||
],
|
|
||||||
phone: [
|
|
||||||
{ required: true, message: '请输入法人手机号', trigger: 'change',},
|
|
||||||
{ pattern: /^(13[0-9]{9})|(18[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})|(19[0-9]{9})$/, message: '请输入正确的手机号码', trigger: ['blur', 'change']}
|
|
||||||
],
|
|
||||||
cardTypeId: [
|
|
||||||
{ required: true, message: '请选择证件类型', trigger: 'change',},
|
|
||||||
],
|
|
||||||
addr: [
|
|
||||||
{ required: true, message: '请输入地址', trigger: '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']}
|
|
||||||
],
|
|
||||||
mail: [
|
|
||||||
{ required: true, message: '请输入邮编', trigger: 'change',},
|
|
||||||
{ pattern: /^\d{6}$/, message: '请输入正确的邮编', trigger: ['blur', 'change']}
|
|
||||||
],
|
|
||||||
},
|
|
||||||
|
|
||||||
//--------------------------调解模板----------------------------------
|
|
||||||
queryParam:{
|
|
||||||
tpMediateId:'',//调解模板id
|
|
||||||
tpSpeechcraftId:'',//话术模板
|
|
||||||
},
|
|
||||||
rulesClientTemplate:{
|
|
||||||
tpMediateId: [
|
|
||||||
{ required: true, message: '请选择调解模板', trigger: 'change',},
|
|
||||||
],
|
|
||||||
tpSpeechcraftId: [
|
|
||||||
{ required: true, message: '请选择话术模板', trigger: 'change',},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
fileList:[],//证据材料
|
|
||||||
speechcraftTemplateOptions:[],//话术模板
|
|
||||||
mediationTemplateOptions:[],//调解模板
|
|
||||||
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
this.getDict();//获取金融产品类型
|
|
||||||
this.getDictIdType();
|
|
||||||
this.getSpeechcraftTemplateList(),//话术模板
|
|
||||||
this.getTemplateList();//调解模板
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
|
|
||||||
// 获取金融产品类型
|
|
||||||
getDict(){
|
|
||||||
let data = {
|
|
||||||
type:'financial'
|
|
||||||
}
|
|
||||||
api.getDict(data).then(res => {
|
|
||||||
if (!res.code) {
|
|
||||||
this.financialProductsTypeOptions = res;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 获取证件类型
|
|
||||||
getDictIdType(){
|
|
||||||
let data = {
|
|
||||||
type:'certificates'
|
|
||||||
}
|
|
||||||
api.getDict(data).then(res => {
|
|
||||||
if (!res.code) {
|
|
||||||
this.idTypeOptions = res;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 新增
|
|
||||||
handleAdd(){
|
|
||||||
this.obligorInfoForm.debtorEntityList.push({
|
|
||||||
name:'',//债务人姓名
|
|
||||||
phone:'',//债务人电话
|
|
||||||
cardTypeId:'',//证件类型
|
|
||||||
addr:'',//地址
|
|
||||||
cardNo:'',//证件号
|
|
||||||
mail:'',//邮编
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 删除
|
|
||||||
handleRemoveDomain(item) {
|
|
||||||
var index = this.obligorInfoForm.debtorEntityList.indexOf(item)
|
|
||||||
if (index !== -1) {
|
|
||||||
this.obligorInfoForm.debtorEntityList.splice(index, 1)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 清空
|
|
||||||
handleReset(){
|
|
||||||
for (let key in this.creditorInfo) {
|
|
||||||
this.creditorInfo[key] = ''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 模板话术
|
|
||||||
getSpeechcraftTemplateList(){
|
|
||||||
let data = {
|
|
||||||
current: 1,
|
|
||||||
name: "",
|
|
||||||
size: 300,
|
|
||||||
type: 2,
|
|
||||||
}
|
|
||||||
api.getTemplateList(data).then(res => {
|
|
||||||
if (!res.code) {
|
|
||||||
this.speechcraftTemplateOptions = res.records;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 调解模板
|
|
||||||
getTemplateList(){
|
|
||||||
let data = {
|
|
||||||
current: 1,
|
|
||||||
name: "",
|
|
||||||
size: 300,
|
|
||||||
type: 1,
|
|
||||||
}
|
|
||||||
api.getTemplateList(data).then(res => {
|
|
||||||
if (!res.code) {
|
|
||||||
this.mediationTemplateOptions = res.records;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
// 下一步
|
|
||||||
handleNextStep(){
|
|
||||||
if(this.presentStep === 1){
|
|
||||||
this.$refs.ruleFormBase.validate((valid) => {
|
|
||||||
if (valid){this.presentStep++}
|
|
||||||
})
|
|
||||||
}else if(this.presentStep === 2){
|
|
||||||
this.$refs.ruleFormCreditor.validate((valid) => {
|
|
||||||
if (valid){
|
|
||||||
this.$refs.ruleFormObligor.validate((valid) => {
|
|
||||||
if (valid){this.presentStep++}
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}else if(this.presentStep === 3){
|
|
||||||
this.$refs.ruleFormTemplate.validate((valid) => {
|
|
||||||
if (valid){this.presentStep++}
|
|
||||||
})
|
|
||||||
}else{
|
|
||||||
this.presentStep++
|
|
||||||
}
|
|
||||||
},
|
|
||||||
handleSubmit(){
|
|
||||||
|
|
||||||
if(!this.$clickThrottle()) { return }//防止重复点击
|
|
||||||
|
|
||||||
let data = {
|
|
||||||
...this.baseInfo,//基本信息
|
|
||||||
...this.creditorInfo,//债权人信息
|
|
||||||
...this.obligorInfoForm,//债务人
|
|
||||||
...this.queryParam,//模板选择
|
|
||||||
caseFileEntityList:this.fileList//证据材料
|
|
||||||
}
|
|
||||||
console.log('获取传给后台的信息',data)
|
|
||||||
api.addCaseInfo(data).then(res => {
|
|
||||||
this.presentStep++
|
|
||||||
this.$parent.getCaseInfoList(1)
|
|
||||||
this.$parent.getCaseCount()
|
|
||||||
})
|
|
||||||
|
|
||||||
},
|
|
||||||
// 上传
|
|
||||||
handleUploadFile(fileList){
|
|
||||||
console.log('获取上传文件信息',fileList)
|
|
||||||
fileList = JSON.parse(JSON.stringify(fileList))
|
|
||||||
this.fileList = fileList.map((item,i) => {
|
|
||||||
return {
|
|
||||||
url: item.url,
|
|
||||||
fileName:item.fileName,
|
|
||||||
name:item.fileName
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleClose() {
|
|
||||||
this.$emit('update:addCaseDialog', null)
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.dialog-content{
|
|
||||||
padding: 16px 24px;
|
|
||||||
// max-height:500px
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
@ -62,7 +62,7 @@
|
|||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<!-- <el-col :span="12">
|
||||||
<el-form-item label="案件名称" prop="caseName">
|
<el-form-item label="案件名称" prop="caseName">
|
||||||
<el-input
|
<el-input
|
||||||
clearable
|
clearable
|
||||||
@ -70,10 +70,7 @@
|
|||||||
v-model="baseInfo.caseName">
|
v-model="baseInfo.caseName">
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="案件编号" prop="caseNo">
|
<el-form-item label="案件编号" prop="caseNo">
|
||||||
<el-input
|
<el-input
|
||||||
@ -83,6 +80,9 @@
|
|||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row type="flex" align="middle">
|
||||||
|
|
||||||
<!-- <el-col :span="12">
|
<!-- <el-col :span="12">
|
||||||
<el-form-item label="金融产品类型" prop="productTypeId">
|
<el-form-item label="金融产品类型" prop="productTypeId">
|
||||||
<el-select v-model="baseInfo.productTypeId"
|
<el-select v-model="baseInfo.productTypeId"
|
||||||
@ -108,15 +108,14 @@
|
|||||||
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
|
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="逾期次数" prop="overdueTimes">
|
<el-form-item label="逾期次数" prop="overdueTimes">
|
||||||
<el-input-number v-model="baseInfo.overdueTimes" :min="0" :max="100" class="width100"></el-input-number>
|
<el-input-number v-model="baseInfo.overdueTimes" :min="0" :max="100" class="width100"></el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
</el-row>
|
||||||
|
<el-row type="flex" align="middle">
|
||||||
|
<el-col :span="24">
|
||||||
<el-form-item label="案件描述" prop="caseDescr">
|
<el-form-item label="案件描述" prop="caseDescr">
|
||||||
<el-input
|
<el-input
|
||||||
clearable
|
clearable
|
||||||
@ -460,9 +459,9 @@ import cpkapi from "@/services/casePackageManagement";
|
|||||||
// financialOrgCode: [
|
// financialOrgCode: [
|
||||||
// { required: true, message: '请输入社会统一信用代码', trigger: 'change',},
|
// { required: true, message: '请输入社会统一信用代码', trigger: 'change',},
|
||||||
// ],
|
// ],
|
||||||
caseName: [
|
// caseName: [
|
||||||
{ required: true, message: '请输入案件名称', trigger: 'change',},
|
// { required: true, message: '请输入案件名称', trigger: 'change',},
|
||||||
],
|
// ],
|
||||||
caseNo: [
|
caseNo: [
|
||||||
{ required: true, message: '请输入案件编号', trigger: 'change',},
|
{ required: true, message: '请输入案件编号', trigger: 'change',},
|
||||||
],
|
],
|
||||||
@ -561,8 +560,8 @@ import cpkapi from "@/services/casePackageManagement";
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
this.getDict();//获取金融产品类型
|
// this.getDict();//获取金融产品类型
|
||||||
this.getDictIdType();
|
// this.getDictIdType();
|
||||||
this.getCasepkgList();
|
this.getCasepkgList();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@ -650,7 +649,7 @@ import cpkapi from "@/services/casePackageManagement";
|
|||||||
handleSubmit(){
|
handleSubmit(){
|
||||||
|
|
||||||
if(!this.$clickThrottle()) { return }//防止重复点击
|
if(!this.$clickThrottle()) { return }//防止重复点击
|
||||||
|
this.baseInfo.caseName = this.baseInfo.caseNo
|
||||||
let data = {
|
let data = {
|
||||||
...this.baseInfo,//基本信息
|
...this.baseInfo,//基本信息
|
||||||
...this.creditorInfo,//债权人信息
|
...this.creditorInfo,//债权人信息
|
||||||
|
|||||||
@ -1,447 +1,484 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div class="layout-header-wrap flex-row">
|
<div class="layout-header-wrap flex-row">
|
||||||
<div class="layou-header-left-box flex-row align-items-center" style="width: 300px;">
|
<div class="layou-header-left-box flex-row align-items-center" style="width: 300px;">
|
||||||
<div class="flex-row">
|
<div class="flex-row">
|
||||||
<img src="../../../assets/image/header-logo1.png" height="30" alt="">
|
<img src="../../../assets/image/header-logo1.png" height="30" alt="">
|
||||||
<span class="f20 color-fff ml-8">金桥云调</span>
|
<span class="f20 color-fff ml-8">金桥云调</span>
|
||||||
</div>
|
|
||||||
<el-divider direction="vertical"></el-divider>
|
|
||||||
<span class="f20 color-fff ">互联网人民调解</span>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="layou-header-left-box flex-row align-items-center">
|
|
||||||
<SideMenu />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mr-8 flex-row cursor-pointer layou-header-right-box" @mouseover="showInfo=true" style="">
|
|
||||||
<!-- <el-badge :value="1" :max="99" class="item">
|
|
||||||
<el-avatar size="medium" icon="el-icon-user-solid"></el-avatar>
|
|
||||||
</el-badge> -->
|
|
||||||
<el-avatar size="medium" :src="userInfo.headUrl?userInfo.headUrl:defaultHeadUrl"></el-avatar>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<el-divider direction="vertical"></el-divider>
|
||||||
<div v-show="showInfo">
|
<span class="f20 color-fff ">互联网人民调解</span>
|
||||||
<el-collapse-transition>
|
|
||||||
<div class="show-info-wrap border-radius-8" @mouseleave="showInfo=false">
|
</div>
|
||||||
<div class="flex-row align-items-center show-info-header">
|
<div class="layou-header-left-box flex-row align-items-center">
|
||||||
<el-avatar :size="56" :src="userInfo.headUrl?userInfo.headUrl:defaultHeadUrl"></el-avatar>
|
<SideMenu/>
|
||||||
<div class="ml-8 f14">
|
</div>
|
||||||
<div class="f18 color-text-primary pb-8">{{userInfo.realName || userInfo.showName ||'-'}}</div>
|
|
||||||
<div class="f14 color-text-regular">{{userInfo.phone||'-'}}</div>
|
<div class="mr-8 flex-row cursor-pointer layou-header-right-box" @mouseover="showInfo=true" style="">
|
||||||
</div>
|
<!-- <el-badge :value="1" :max="99" class="item">
|
||||||
</div>
|
<el-avatar size="medium" icon="el-icon-user-solid"></el-avatar>
|
||||||
<div class="flex-row justify-content-between align-items-center border-t-solid-lighter-1 p-16 cursor-pointer" @click="handleChangePassword">
|
</el-badge> -->
|
||||||
<div class="f16 color-text-regular">密码管理</div>
|
<el-avatar size="medium" :src="userInfo.headUrl?userInfo.headUrl:defaultHeadUrl"></el-avatar>
|
||||||
<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>
|
|
||||||
</el-collapse-transition>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- 修改密码弹框 -->
|
|
||||||
<el-dialog
|
|
||||||
title="修改密码"
|
|
||||||
:visible="changePasswordVisible"
|
|
||||||
width="30%"
|
|
||||||
:before-close="handleClose"
|
|
||||||
>
|
|
||||||
<div class="p-16">
|
|
||||||
<el-form ref="ruleForm"
|
|
||||||
:model="passwordInfo"
|
|
||||||
:rules="rulesClient"
|
|
||||||
label-width="80px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="旧密码" prop="oldPwd">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="passwordInfo.oldPwd"
|
|
||||||
placeholder="请输入旧密码"
|
|
||||||
clearable
|
|
||||||
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="新密码" prop="pwd">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="passwordInfo.pwd"
|
|
||||||
placeholder="请输入新密码"
|
|
||||||
clearable
|
|
||||||
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="确认密码" prop="confirmPwd">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="passwordInfo.confirmPwd"
|
|
||||||
placeholder="请再次输入新密码"
|
|
||||||
clearable
|
|
||||||
maxlength="18"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
<span slot="footer" class="dialog-footer">
|
|
||||||
<el-button type="primary" @click="handleSubmit()">确 定</el-button>
|
|
||||||
</span>
|
|
||||||
</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>
|
||||||
|
|
||||||
|
<div v-show="showInfo">
|
||||||
|
<el-collapse-transition>
|
||||||
|
<div class="show-info-wrap border-radius-8" @mouseleave="showInfo=false">
|
||||||
|
<div class="flex-row align-items-center show-info-header">
|
||||||
|
<el-avatar :size="56" :src="userInfo.headUrl?userInfo.headUrl:defaultHeadUrl"></el-avatar>
|
||||||
|
<div class="ml-8 f14">
|
||||||
|
<div class="f18 color-text-primary pb-8">{{ userInfo.realName || userInfo.showName || '-' }}</div>
|
||||||
|
<div class="f14 color-text-regular">{{ userInfo.phone || '-' }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex-row justify-content-between align-items-center border-t-solid-lighter-1 p-16 cursor-pointer"
|
||||||
|
@click="handleChangePassword">
|
||||||
|
<div class="f16 color-text-regular">密码管理</div>
|
||||||
|
<div class="f16 color-text-secondary">修改密码<i class="el-icon-arrow-right"></i></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>
|
||||||
|
</el-collapse-transition>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 修改密码弹框 -->
|
||||||
|
<el-dialog
|
||||||
|
title="修改密码"
|
||||||
|
:visible="changePasswordVisible"
|
||||||
|
width="30%"
|
||||||
|
:before-close="handleClose"
|
||||||
|
>
|
||||||
|
<div class="p-16">
|
||||||
|
<el-form ref="ruleForm"
|
||||||
|
:model="passwordInfo"
|
||||||
|
:rules="rulesClient"
|
||||||
|
label-width="80px"
|
||||||
|
class="demo-ruleForm">
|
||||||
|
<el-row type="flex" align="middle">
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="旧密码" prop="oldPwd">
|
||||||
|
<el-input
|
||||||
|
v-model.trim="passwordInfo.oldPwd"
|
||||||
|
placeholder="请输入旧密码"
|
||||||
|
clearable
|
||||||
|
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="新密码" prop="pwd">
|
||||||
|
<el-input
|
||||||
|
v-model.trim="passwordInfo.pwd"
|
||||||
|
placeholder="请输入新密码"
|
||||||
|
clearable
|
||||||
|
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="确认密码" prop="confirmPwd">
|
||||||
|
<el-input
|
||||||
|
v-model.trim="passwordInfo.confirmPwd"
|
||||||
|
placeholder="请再次输入新密码"
|
||||||
|
clearable
|
||||||
|
maxlength="18"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="handleSubmit()">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</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>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import api from "@/services/systemManage";
|
import api from "@/services/systemManage";
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
SideMenu: () => import('./SideMenu'),
|
|
||||||
},
|
|
||||||
data(){
|
|
||||||
var validatePass = (rule, value, callback) => {
|
|
||||||
if (value === '') {
|
|
||||||
callback(new Error('请输入密码'));
|
|
||||||
} else {
|
|
||||||
if (this.passwordInfo.confirmPwd !== '') {
|
|
||||||
this.$refs.ruleForm.validateField('confirmPwd');
|
|
||||||
}
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
var validatePass2 = (rule, value, callback) => {
|
|
||||||
if (value === '') {
|
|
||||||
callback(new Error('请再次输入密码'));
|
|
||||||
} else if (value !== this.passwordInfo.pwd) {
|
|
||||||
callback(new Error('两次输入密码不一致!'));
|
|
||||||
} else {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return{
|
|
||||||
showInfo:false,
|
|
||||||
changePasswordVisible:false,
|
|
||||||
changePersonalVisible:false,
|
|
||||||
strKey: 'trydotec',
|
|
||||||
passwordInfo:{
|
|
||||||
oldPwd:'',//旧密码
|
|
||||||
pwd:'',//新密码
|
|
||||||
confirmPwd:'',//再次
|
|
||||||
},
|
|
||||||
PersonalInfo:{
|
|
||||||
realName:'',
|
|
||||||
phone:'',
|
|
||||||
id:'',
|
|
||||||
signPic:'',
|
|
||||||
replyPhone:'',
|
|
||||||
cardNo:'',
|
|
||||||
roleIds:[]
|
|
||||||
},
|
|
||||||
signUrl:'',
|
|
||||||
rulesClient: {
|
|
||||||
oldPwd: [
|
|
||||||
{ required: true, message: '请输入旧密码', trigger: 'change',},
|
|
||||||
],
|
|
||||||
pwd: [
|
|
||||||
{ required: true, validator:validatePass, trigger: 'change',},
|
|
||||||
{ pattern: /^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\W_]).{6,18}$/, message: '只能输入由6-18个字母、数字、下划线组成的密码', trigger: ['blur', 'change']}
|
|
||||||
],
|
|
||||||
confirmPwd: [
|
|
||||||
{ required: true,validator:validatePass2, trigger: 'change',},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
userInfo:{},
|
|
||||||
defaultHeadUrl:'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png',//默认图片
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
if(JSON.parse(sessionStorage.getItem('userInfo'))){
|
|
||||||
this.userInfo = JSON.parse(sessionStorage.getItem('userInfo'))
|
|
||||||
}
|
|
||||||
// console.log('获取当前登录人的信息',this.userInfo)
|
|
||||||
// console.log(this.userInfo.showName)
|
|
||||||
},
|
|
||||||
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
|
|
||||||
|
|
||||||
this.PersonalInfo.deptId = res.deptId
|
export default {
|
||||||
this.PersonalInfo.roleIds = res.roleIds
|
components: {
|
||||||
})
|
SideMenu: () => import('./SideMenu'),
|
||||||
api.getQrCode().then(res => {
|
},
|
||||||
this.signUrl = 'data:image/jpg;base64,'+res
|
data() {
|
||||||
})
|
var validatePass = (rule, value, callback) => {
|
||||||
|
if (value === '') {
|
||||||
this.changePersonalVisible =true
|
callback(new Error('请输入密码'));
|
||||||
this.showInfo = false
|
} else {
|
||||||
},
|
if (this.passwordInfo.confirmPwd !== '') {
|
||||||
handlePersonalSubmit(){
|
this.$refs.ruleForm.validateField('confirmPwd');
|
||||||
api.updateUserById(this.PersonalInfo).then(res => {
|
|
||||||
this.$message.success("修改成功")
|
|
||||||
this.handleClose()
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
// 修改密码
|
|
||||||
handleChangePassword(){
|
|
||||||
this.changePasswordVisible =true
|
|
||||||
this.showInfo = false
|
|
||||||
for (let key in this.passwordInfo) {
|
|
||||||
this.passwordInfo[key] = ''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 确定
|
|
||||||
handleSubmit(){
|
|
||||||
this.$refs.ruleForm.validate((valid) => {
|
|
||||||
if (valid) {
|
|
||||||
|
|
||||||
// let data = {
|
|
||||||
// id:this.userInfo.id,
|
|
||||||
// ...this.passwordInfo
|
|
||||||
// }
|
|
||||||
|
|
||||||
let data = {
|
|
||||||
id:this.userInfo.id,
|
|
||||||
oldPwd:this.$util.encryptByDES(this.strKey, this.passwordInfo.oldPwd),
|
|
||||||
pwd:this.passwordInfo.pwd,
|
|
||||||
confirmPwd:this.passwordInfo.confirmPwd,
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log('修改密码数据===',data)
|
|
||||||
this.$fetchApi.updatePassword(data).then(res => {
|
|
||||||
this.$message.success("修改成功")
|
|
||||||
this.handleClose()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
},
|
|
||||||
// 关闭
|
|
||||||
handleClose(){
|
|
||||||
this.changePasswordVisible = false
|
|
||||||
this.changePersonalVisible = false
|
|
||||||
},
|
|
||||||
// 退出登录
|
|
||||||
handleLoginOut(){
|
|
||||||
// token注销失效
|
|
||||||
this.$fetchApi.logout().then(res => {
|
|
||||||
// if(!res.code){
|
|
||||||
this.$router.push('/login')
|
|
||||||
sessionStorage.removeItem('token');
|
|
||||||
this.$store.commit('setToken', '');
|
|
||||||
sessionStorage.removeItem('userInfo')
|
|
||||||
this.$store.commit('setUserInfo', '');
|
|
||||||
this.$store.commit('setRoutes','')
|
|
||||||
// }
|
|
||||||
|
|
||||||
})
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var validatePass2 = (rule, value, callback) => {
|
||||||
|
if (value === '') {
|
||||||
|
callback(new Error('请再次输入密码'));
|
||||||
|
} else if (value !== this.passwordInfo.pwd) {
|
||||||
|
callback(new Error('两次输入密码不一致!'));
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
showInfo: false,
|
||||||
|
changePasswordVisible: false,
|
||||||
|
changePersonalVisible: false,
|
||||||
|
strKey: 'trydotec',
|
||||||
|
passwordInfo: {
|
||||||
|
oldPwd: '',//旧密码
|
||||||
|
pwd: '',//新密码
|
||||||
|
confirmPwd: '',//再次
|
||||||
|
},
|
||||||
|
PersonalInfo: {
|
||||||
|
realName: '',
|
||||||
|
phone: '',
|
||||||
|
id: '',
|
||||||
|
signPic: '',
|
||||||
|
replyPhone: '',
|
||||||
|
cardNo: '',
|
||||||
|
roleIds: []
|
||||||
|
},
|
||||||
|
signUrl: '',
|
||||||
|
rulesClient: {
|
||||||
|
oldPwd: [
|
||||||
|
{required: true, message: '请输入旧密码', trigger: 'change',},
|
||||||
|
],
|
||||||
|
pwd: [
|
||||||
|
{required: true, validator: validatePass, trigger: 'change',},
|
||||||
|
{
|
||||||
|
pattern: /^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\W_]).{6,18}$/,
|
||||||
|
message: '只能输入由6-18个字母、数字、下划线组成的密码',
|
||||||
|
trigger: ['blur', 'change']
|
||||||
|
}
|
||||||
|
],
|
||||||
|
confirmPwd: [
|
||||||
|
{required: true, validator: validatePass2, trigger: 'change',},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
userInfo: {},
|
||||||
|
defaultHeadUrl: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png',//默认图片
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
if (JSON.parse(sessionStorage.getItem('userInfo'))) {
|
||||||
|
this.userInfo = JSON.parse(sessionStorage.getItem('userInfo'))
|
||||||
|
}
|
||||||
|
// console.log('获取当前登录人的信息',this.userInfo)
|
||||||
|
// console.log(this.userInfo.showName)
|
||||||
|
},
|
||||||
|
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
|
||||||
|
|
||||||
|
this.PersonalInfo.deptId = res.deptId
|
||||||
|
this.PersonalInfo.roleIds = res.roleIds
|
||||||
|
})
|
||||||
|
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() {
|
||||||
|
this.changePasswordVisible = true
|
||||||
|
this.showInfo = false
|
||||||
|
for (let key in this.passwordInfo) {
|
||||||
|
this.passwordInfo[key] = ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 确定
|
||||||
|
handleSubmit() {
|
||||||
|
this.$refs.ruleForm.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
|
||||||
|
// let data = {
|
||||||
|
// id:this.userInfo.id,
|
||||||
|
// ...this.passwordInfo
|
||||||
|
// }
|
||||||
|
|
||||||
|
let data = {
|
||||||
|
id: this.userInfo.id,
|
||||||
|
oldPwd: this.$util.encryptByDES(this.strKey, this.passwordInfo.oldPwd),
|
||||||
|
pwd: this.passwordInfo.pwd,
|
||||||
|
confirmPwd: this.passwordInfo.confirmPwd,
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('修改密码数据===', data)
|
||||||
|
this.$fetchApi.updatePassword(data).then(res => {
|
||||||
|
this.$message.success("修改成功")
|
||||||
|
this.handleClose()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
// 关闭
|
||||||
|
handleClose() {
|
||||||
|
this.changePasswordVisible = false
|
||||||
|
this.changePersonalVisible = false
|
||||||
|
},
|
||||||
|
// 退出登录
|
||||||
|
handleLoginOut() {
|
||||||
|
// token注销失效
|
||||||
|
this.$fetchApi.logout().then(res => {
|
||||||
|
// if(!res.code){
|
||||||
|
this.$router.push('/login')
|
||||||
|
sessionStorage.removeItem('token');
|
||||||
|
this.$store.commit('setToken', '');
|
||||||
|
sessionStorage.removeItem('userInfo')
|
||||||
|
this.$store.commit('setUserInfo', '');
|
||||||
|
this.$store.commit('setRoutes', '');
|
||||||
|
sessionStorage.removeItem('brokerEndpoint');
|
||||||
|
this.$store.commit('brokerEndpoint', '');
|
||||||
|
// }
|
||||||
|
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.layout-header-wrap{
|
.layout-header-wrap {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: $height56;
|
height: $height56;
|
||||||
display: flex;
|
display: flex;
|
||||||
padding: 0 $size24;
|
padding: 0 $size24;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
// background: url('~@/assets/image/header-bg-1920.png') no-repeat ;
|
// background: url('~@/assets/image/header-bg-1920.png') no-repeat ;
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
background-color: #C66A5B;
|
background-color: #C66A5B;
|
||||||
|
|
||||||
.el-badge__content{
|
.el-badge__content {
|
||||||
height: $height20;
|
|
||||||
line-height: $height20;
|
|
||||||
border: 0 !important;
|
|
||||||
top: 30px;
|
|
||||||
}
|
|
||||||
.layou-header-right-box{width: 300px;display: inline-block;text-align: right;}
|
|
||||||
.layout-side-menu-wrap .side-menu-container{border-right: 0;}
|
|
||||||
.el-menu{
|
|
||||||
border: 0;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
.el-menu--horizontal > .el-menu-item{color: #FFFFFFB2;}
|
|
||||||
.el-menu--horizontal > .el-submenu .el-submenu__title{color: #FFFFFFB2;}
|
|
||||||
|
|
||||||
.el-menu--horizontal > .el-menu-item:hover{
|
|
||||||
color: #C66A5B;
|
|
||||||
background-color: transparent;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
.el-menu--horizontal > .el-submenu:hover .el-submenu__title {
|
|
||||||
color:#C66A5B;
|
|
||||||
background-color: transparent;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
.el-submenu__title i{color:#FFFFFFB2; }
|
|
||||||
.el-menu--horizontal > .el-menu-item.is-active{
|
|
||||||
border-bottom: 2px solid #fff;
|
|
||||||
background-color: transparent;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
.el-menu--horizontal > .el-submenu.is-active .el-submenu__title {
|
|
||||||
border-bottom: 2px solid #fff;
|
|
||||||
background-color: transparent;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
.el-menu--horizontal .el-menu.el-menu--popup .el-menu-item:not(.is-disabled):hover{
|
|
||||||
color:#C66A5B;
|
|
||||||
}
|
|
||||||
.el-menu--horizontal .el-menu .el-menu-item.is-active, .el-menu--horizontal .el-menu .el-submenu.is-active > .el-submenu__title {
|
|
||||||
color:#C66A5B;
|
|
||||||
}
|
|
||||||
.layout-header-number{
|
|
||||||
position: absolute;
|
|
||||||
right: -10px;
|
|
||||||
bottom: -4px;
|
|
||||||
min-width: $height20;
|
|
||||||
height: $height20;
|
height: $height20;
|
||||||
border-radius: 50%;
|
|
||||||
background-color: $color-F56C6C;
|
|
||||||
color: $color-white;
|
|
||||||
line-height: $height20;
|
line-height: $height20;
|
||||||
white-space: nowrap;
|
border: 0 !important;
|
||||||
box-sizing: border-box;
|
top: 30px;
|
||||||
padding: 1px 5px;
|
}
|
||||||
|
|
||||||
|
.layou-header-right-box {
|
||||||
|
width: 300px;
|
||||||
|
display: inline-block;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layout-side-menu-wrap .side-menu-container {
|
||||||
|
border-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-menu {
|
||||||
|
border: 0;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-menu--horizontal > .el-menu-item {
|
||||||
|
color: #FFFFFFB2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-menu--horizontal > .el-submenu .el-submenu__title {
|
||||||
|
color: #FFFFFFB2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-menu--horizontal > .el-menu-item:hover {
|
||||||
|
color: #C66A5B;
|
||||||
|
background-color: transparent;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-menu--horizontal > .el-submenu:hover .el-submenu__title {
|
||||||
|
color: #C66A5B;
|
||||||
|
background-color: transparent;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-submenu__title i {
|
||||||
|
color: #FFFFFFB2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-menu--horizontal > .el-menu-item.is-active {
|
||||||
|
border-bottom: 2px solid #fff;
|
||||||
|
background-color: transparent;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-menu--horizontal > .el-submenu.is-active .el-submenu__title {
|
||||||
|
border-bottom: 2px solid #fff;
|
||||||
|
background-color: transparent;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.show-info-wrap{
|
.el-menu--horizontal .el-menu.el-menu--popup .el-menu-item:not(.is-disabled):hover {
|
||||||
position: absolute;
|
color: #C66A5B;
|
||||||
width: 320px;
|
|
||||||
// height: 248px;
|
|
||||||
background-color: $color-white;
|
|
||||||
top:8px;
|
|
||||||
right: 16px;
|
|
||||||
border: 1px solid $border-color-lighter;
|
|
||||||
z-index: 999;
|
|
||||||
box-shadow: 2px 2px 5px $border-color-lighter;
|
|
||||||
transition: opacity 2s;
|
|
||||||
.show-info-header{
|
|
||||||
padding: 40px 16px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.el-menu--horizontal .el-menu .el-menu-item.is-active, .el-menu--horizontal .el-menu .el-submenu.is-active > .el-submenu__title {
|
||||||
|
color: #C66A5B;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layout-header-number {
|
||||||
|
position: absolute;
|
||||||
|
right: -10px;
|
||||||
|
bottom: -4px;
|
||||||
|
min-width: $height20;
|
||||||
|
height: $height20;
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: $color-F56C6C;
|
||||||
|
color: $color-white;
|
||||||
|
line-height: $height20;
|
||||||
|
white-space: nowrap;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 1px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.show-info-wrap {
|
||||||
|
position: absolute;
|
||||||
|
width: 320px;
|
||||||
|
// height: 248px;
|
||||||
|
background-color: $color-white;
|
||||||
|
top: 8px;
|
||||||
|
right: 16px;
|
||||||
|
border: 1px solid $border-color-lighter;
|
||||||
|
z-index: 999;
|
||||||
|
box-shadow: 2px 2px 5px $border-color-lighter;
|
||||||
|
transition: opacity 2s;
|
||||||
|
|
||||||
|
.show-info-header {
|
||||||
|
padding: 40px 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 修改图标样式
|
// 修改图标样式
|
||||||
.el-icon-caret-bottom{
|
.el-icon-caret-bottom {
|
||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
color: $color-text-placeholder;
|
color: $color-text-placeholder;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 在小于或等于 1440 像素的屏幕上 */
|
/* 在小于或等于 1440 像素的屏幕上 */
|
||||||
@media screen and (max-width: 1440px) {
|
@media screen and (max-width: 1440px) {
|
||||||
.layout-header-wrap{
|
.layout-header-wrap {
|
||||||
background: url('~@/assets/image/header-bg-1440.png') no-repeat ;
|
background: url('~@/assets/image/header-bg-1440.png') no-repeat;
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
@ -306,9 +306,18 @@ export default {
|
|||||||
|
|
||||||
socketSucc(frame) {
|
socketSucc(frame) {
|
||||||
console.log(frame, '---初始化成功login')
|
console.log(frame, '---初始化成功login')
|
||||||
|
// '/user/'+userId+'/queue/video'
|
||||||
|
let userInfo = JSON.parse(sessionStorage.getItem('userInfo'))
|
||||||
|
let url = `/user/${userInfo.phone}/queue/video`
|
||||||
|
// console.log(url, '---订阅地址')
|
||||||
|
this.$stompSocket.subscription(url, this.receivePush)
|
||||||
},
|
},
|
||||||
socketErr(frame) {
|
socketErr(frame) {
|
||||||
console.log(frame, '---初始化失败login')
|
console.log(frame, '---初始化失败login')
|
||||||
|
},
|
||||||
|
receivePush(message) {
|
||||||
|
console.log(message, '---接收订阅消息')
|
||||||
|
this.$store.commit('setVideoReminder', message.body)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -479,10 +479,10 @@ import { values } from "lodash";
|
|||||||
contentHeight(){
|
contentHeight(){
|
||||||
let oh = document.documentElement.clientHeight;
|
let oh = document.documentElement.clientHeight;
|
||||||
if(this.showSearch){
|
if(this.showSearch){
|
||||||
return oh-56-48-366-145
|
return oh-56-48-366-190
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
return oh-56-48-175-75
|
return oh-56-48-175-95
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1,692 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<el-dialog
|
|
||||||
:title="addCaseDialog.title"
|
|
||||||
:visible="true"
|
|
||||||
width="880px"
|
|
||||||
append-to-body
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
@close="handleClose"
|
|
||||||
>
|
|
||||||
|
|
||||||
<div >
|
|
||||||
|
|
||||||
<el-steps :active="presentStep" align-center class="mt-16">
|
|
||||||
<el-step v-for="(item,inx) in transferStep" :key="inx" :title="item.title" :description="item.description"></el-step>
|
|
||||||
</el-steps>
|
|
||||||
|
|
||||||
<!-- 基本信息 -->
|
|
||||||
<div v-if="presentStep === 1">
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">基本信息</div>
|
|
||||||
<div class="p-h-24">
|
|
||||||
<el-form ref="ruleFormBase"
|
|
||||||
:model="baseInfo"
|
|
||||||
:rules="rulesClient"
|
|
||||||
label-width="150px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="案件包" prop="financialOrgName">
|
|
||||||
<el-select v-model="baseInfo.pkgId"
|
|
||||||
clearable placeholder="请选择案件包"
|
|
||||||
class="width100" @change="apkChange">
|
|
||||||
<el-option
|
|
||||||
v-for="item in CasepackageList"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.pkgName"
|
|
||||||
:value="item.id">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="金融机构名称" prop="financialOrgName">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="baseInfo.financialOrgName"
|
|
||||||
placeholder="请输入金融机构名称"
|
|
||||||
disabled
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="社会统一信用代码" prop="financialOrgCode">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="baseInfo.financialOrgCode"
|
|
||||||
placeholder="请输入社会统一信用代码"
|
|
||||||
clearable
|
|
||||||
maxlength="18"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="案件名称" prop="caseName">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入案件名称"
|
|
||||||
v-model="baseInfo.caseName">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="案件编号" prop="caseNo">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入案件编号"
|
|
||||||
v-model="baseInfo.caseNo">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<!-- <el-col :span="12">
|
|
||||||
<el-form-item label="金融产品类型" prop="productTypeId">
|
|
||||||
<el-select v-model="baseInfo.productTypeId"
|
|
||||||
clearable placeholder="请选择金融产品类型"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in financialProductsTypeOptions"
|
|
||||||
:key="item.code"
|
|
||||||
:label="item.codeName"
|
|
||||||
:value="item.code">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col> -->
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="标的金额" prop="moneyAmount">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入内容"
|
|
||||||
v-model="baseInfo.moneyAmount">
|
|
||||||
<template slot="append">元</template>
|
|
||||||
</el-input>
|
|
||||||
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="逾期次数" prop="overdueTimes">
|
|
||||||
<el-input-number v-model="baseInfo.overdueTimes" :min="0" :max="100" class="width100"></el-input-number>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="案件描述" prop="caseDescr">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入内容"
|
|
||||||
v-model="baseInfo.caseDescr">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 当事人信息 -->
|
|
||||||
<div v-else-if="presentStep === 2">
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">案件当事人</div>
|
|
||||||
<div class="p-h-24">
|
|
||||||
<div class="border-solid-lighter-1 p-h-24 mb-16">
|
|
||||||
<div class="flex-row justify-content-between height-48 line-height-48 f14 border-b-solid-lighter-1 mb-16">
|
|
||||||
<div class="color-000">申请人</div>
|
|
||||||
<div class="color-text-regular cursor-pointer" @click="handleReset">清空<i class="el-icon-close"></i></div>
|
|
||||||
</div>
|
|
||||||
<el-form ref="ruleFormCreditor"
|
|
||||||
:model="creditorInfo"
|
|
||||||
:rules="rulesClientCreditor"
|
|
||||||
label-width="150px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="申请人名称" prop="creditorName">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="creditorInfo.creditorName"
|
|
||||||
placeholder="请输入申请人名称"
|
|
||||||
clearable
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="社会统一信用代码" prop="creditorOrgCode">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="creditorInfo.creditorOrgCode"
|
|
||||||
placeholder="请输入社会统一信用代码"
|
|
||||||
clearable
|
|
||||||
maxlength="18"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="法人姓名" prop="creditorLegal">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入法人姓名"
|
|
||||||
v-model="creditorInfo.creditorLegal">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="法人身份证号" prop="creditorIdcard">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入法人身份证号"
|
|
||||||
v-model="creditorInfo.creditorIdcard"
|
|
||||||
maxlength="18">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="法人手机号" prop="creditorPhone">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入法人手机号"
|
|
||||||
v-model="creditorInfo.creditorPhone"
|
|
||||||
maxlength="11"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="公司地址" prop="creditorAddr">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入公司地址"
|
|
||||||
v-model="creditorInfo.creditorAddr">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="邮编" prop="creditorMail">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入邮编"
|
|
||||||
v-model="creditorInfo.creditorMail"
|
|
||||||
maxlength="6"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="代理人" prop="creditorAgent">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入代理人"
|
|
||||||
v-model="creditorInfo.creditorAgent">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="代理人手机号" prop="creditorAgentTelephone">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入代理人手机号"
|
|
||||||
v-model="creditorInfo.creditorAgentTelephone"
|
|
||||||
maxlength="11"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="代理人身份证号" prop="creditorAgentIdcard">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入代理人身份证号"
|
|
||||||
v-model="creditorInfo.creditorAgentIdcard"
|
|
||||||
maxlength="18">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
<div class="border-solid-lighter-1 p-h-24">
|
|
||||||
<div class="flex-row justify-content-between f14 border-b-solid-lighter-1 mb-8 p-v-8 align-items-center">
|
|
||||||
<div class="color-000">被申请人</div>
|
|
||||||
<el-button size="small" type="primary" @click="handleAdd">新增被申请人<i class="el-icon-plus"></i></el-button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<el-form ref="ruleFormObligor"
|
|
||||||
:model="obligorInfoForm"
|
|
||||||
label-width="150px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<div v-for="(item,inx) in obligorInfoForm.debtorEntityList" :key="inx">
|
|
||||||
<div class="flex-row justify-content-between align-items-center height-40 f14 mb-16">
|
|
||||||
<div class="color-text-primary">被申请人{{inx+1}}</div>
|
|
||||||
<div class="color-text-regular cursor-pointer" @click="handleRemoveDomain(item)">删除<i class="el-icon-close"></i></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="被申请人姓名" :prop="'debtorEntityList.' + inx + '.name'" :rules="{required: true, message: '请输入债权人姓名', trigger: 'blur'}">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="obligorInfoForm.debtorEntityList[inx].name"
|
|
||||||
placeholder="请输入被申请人姓名"
|
|
||||||
clearable
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="证件类型" :prop="'debtorEntityList.' + inx + '.cardTypeId'" :rules="{required: true, message: '请选择证件类型', trigger: 'blur'}">
|
|
||||||
<el-select v-model="obligorInfoForm.debtorEntityList[inx].cardTypeId"
|
|
||||||
clearable placeholder="请选择证件类型"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in idTypeOptions"
|
|
||||||
:key="item.code"
|
|
||||||
:label="item.codeName"
|
|
||||||
:value="item.code">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="证件号码" :prop="'debtorEntityList.' + inx + '.cardNo'"
|
|
||||||
:rules=" [
|
|
||||||
{ 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']}
|
|
||||||
]">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入证件号码"
|
|
||||||
v-model="obligorInfoForm.debtorEntityList[inx].cardNo"
|
|
||||||
maxlength="18"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="手机号码" :prop="'debtorEntityList.' + inx + '.phone'" :rules="[
|
|
||||||
{ required: true, message: '请输入法人手机号', trigger: 'change',},
|
|
||||||
{ pattern: /^(13[0-9]{9})|(18[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})|(19[0-9]{9})$/, message: '请输入正确的手机号码', trigger: ['blur', 'change']}
|
|
||||||
]">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入手机号码"
|
|
||||||
v-model="obligorInfoForm.debtorEntityList[inx].phone"
|
|
||||||
maxlength="11"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="地址" :prop="'debtorEntityList.' + inx + '.addr'" :rules="{ required: true, message: '请输入地址', trigger: 'change',}">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入地址"
|
|
||||||
v-model="obligorInfoForm.debtorEntityList[inx].addr">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="邮编" :prop="'debtorEntityList.' + inx + '.mail'" :rules="{ required: true, message: '请输入邮编', trigger: 'change',}">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入邮编"
|
|
||||||
v-model="obligorInfoForm.debtorEntityList[inx].mail"
|
|
||||||
maxlength="6">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 材料上传 -->
|
|
||||||
<div v-else-if="presentStep === 3">
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">证据材料</div>
|
|
||||||
<div class="p-h-24">
|
|
||||||
<upload-file-name :file-list="fileList" :max-count="20"
|
|
||||||
:show-file-name="true"
|
|
||||||
@handleUploadFile="handleUploadFile">
|
|
||||||
</upload-file-name>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 完成 -->
|
|
||||||
<div v-else-if="presentStep === 4">
|
|
||||||
<el-result icon="success" title="案件创建完成" subTitle="案件创建完成,继续处理其他案件">
|
|
||||||
<template slot="extra">
|
|
||||||
<el-button type="primary" size="medium" @click="handleClose">好的</el-button>
|
|
||||||
</template>
|
|
||||||
</el-result>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<span slot="footer" class="dialog-footer" v-if="presentStep<5">
|
|
||||||
<el-button @click="handleClose">取消</el-button>
|
|
||||||
<el-button
|
|
||||||
v-if="presentStep > 1 "
|
|
||||||
type="primary"
|
|
||||||
@click="presentStep--">上一步</el-button>
|
|
||||||
|
|
||||||
<el-button
|
|
||||||
type="primary"
|
|
||||||
v-show="presentStep<4"
|
|
||||||
@click="handleNextStep">下一步</el-button>
|
|
||||||
<el-button
|
|
||||||
type="primary"
|
|
||||||
v-show="presentStep === 4"
|
|
||||||
@click="handleSubmit">确认
|
|
||||||
</el-button>
|
|
||||||
</span>
|
|
||||||
</el-dialog>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import api from "@/services/caseManagement";
|
|
||||||
import cpkapi from "@/services/casePackageManagement";
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
uploadFileName: () => import('@/components/uploadFileName.vue'),//上传
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
addCaseDialog: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
const moneyAmountValidate = (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('只能输入两位小数的金额!'));
|
|
||||||
}else if(!(0<parseInt(value)&&parseInt(value)<100000000)){
|
|
||||||
callback(new Error('只能输入大于1小于1亿的金额!'));
|
|
||||||
}else{
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return {
|
|
||||||
|
|
||||||
transferStep:[
|
|
||||||
{id:1,title:'基本信息',description:'录入案件基本信息'},
|
|
||||||
{id:2,title:'当事人信息',description:'录入当事人信息'},
|
|
||||||
{id:3,title:'材料上传',description:'上传案件材料'},
|
|
||||||
{id:4,title:'完成',description:'完成案件创建'},
|
|
||||||
],
|
|
||||||
presentStep:1,
|
|
||||||
|
|
||||||
//-----------------------------基本信息-------------------------
|
|
||||||
baseInfo:{
|
|
||||||
pkgId:'',
|
|
||||||
financialOrgName:'',//金融机构名称
|
|
||||||
financialOrgCode:'',//社会统一信用代码
|
|
||||||
caseName:'',//案件名称
|
|
||||||
caseNo:'',//案件编号
|
|
||||||
productTypeId:'',//金融产品类型
|
|
||||||
moneyAmount:'',//标的金额
|
|
||||||
overdueTimes:0,//逾期次数
|
|
||||||
caseDescr:'',//案件描述
|
|
||||||
},
|
|
||||||
rulesClient: {
|
|
||||||
financialOrgName: [
|
|
||||||
{ required: true, message: '请输入机构名称', trigger: 'change',},
|
|
||||||
],
|
|
||||||
// financialOrgCode: [
|
|
||||||
// { required: true, message: '请输入社会统一信用代码', trigger: 'change',},
|
|
||||||
// ],
|
|
||||||
caseName: [
|
|
||||||
{ required: true, message: '请输入案件名称', trigger: 'change',},
|
|
||||||
],
|
|
||||||
caseNo: [
|
|
||||||
{ required: true, message: '请输入案件编号', trigger: 'change',},
|
|
||||||
],
|
|
||||||
// productTypeId: [
|
|
||||||
// { required: true, message: '请选择金融产品类型', trigger: 'change',},
|
|
||||||
// ],
|
|
||||||
moneyAmount: [
|
|
||||||
{ required: true, validator: moneyAmountValidate, trigger: 'change',},
|
|
||||||
],
|
|
||||||
caseDescr:[
|
|
||||||
{ required: true, message: '请输入案件描述', trigger: 'change',},
|
|
||||||
]
|
|
||||||
},
|
|
||||||
financialProductsTypeOptions:[],//金融产品类型
|
|
||||||
|
|
||||||
//----------------------------案件当事人-------------------
|
|
||||||
// 债权人
|
|
||||||
creditorInfo:{
|
|
||||||
creditorName:'',//债权人
|
|
||||||
creditorOrgCode:'',//债权人机构代码
|
|
||||||
creditorLegal:'',//法人
|
|
||||||
creditorIdcard:'',//法人身份证
|
|
||||||
creditorPhone:'',//法人手机
|
|
||||||
creditorAddr:'',//公司地址
|
|
||||||
creditorMail:'',//邮编
|
|
||||||
creditorAgent:'',//代理人
|
|
||||||
},
|
|
||||||
rulesClientCreditor: {
|
|
||||||
creditorName: [
|
|
||||||
{ required: true, message: '请输入申请人名称', trigger: 'change',},
|
|
||||||
],
|
|
||||||
creditorOrgCode: [
|
|
||||||
{ required: true, message: '请输入申请人机构代码', trigger: 'change',},
|
|
||||||
],
|
|
||||||
// creditorLegal: [
|
|
||||||
// { required: true, message: '请输入法人', trigger: 'change',},
|
|
||||||
// ],
|
|
||||||
// creditorIdcard: [
|
|
||||||
// { 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']}
|
|
||||||
// ],
|
|
||||||
// creditorPhone: [
|
|
||||||
// { required: true, message: '请输入法人手机号', trigger: 'change',},
|
|
||||||
// { pattern: /^(13[0-9]{9})|(18[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})|(19[0-9]{9})$/, message: '请输入正确的手机号码', trigger: ['blur', 'change']}
|
|
||||||
// ],
|
|
||||||
creditorAddr: [
|
|
||||||
{ required: true, message: '请输入公司地址', trigger: 'change',},
|
|
||||||
],
|
|
||||||
// creditorAgent: [
|
|
||||||
// { required: true, message: '请输入代理人', trigger: 'change',},
|
|
||||||
// ],
|
|
||||||
},
|
|
||||||
// 被申请人
|
|
||||||
idTypeOptions:[],
|
|
||||||
obligorInfoForm:{
|
|
||||||
debtorEntityList:[
|
|
||||||
{
|
|
||||||
name:'',//被申请人姓名
|
|
||||||
phone:'',//被申请人电话
|
|
||||||
cardTypeId:'',//证件类型
|
|
||||||
addr:'',//地址
|
|
||||||
cardNo:'',//证件号
|
|
||||||
mail:'',//邮编
|
|
||||||
|
|
||||||
}
|
|
||||||
],
|
|
||||||
},
|
|
||||||
|
|
||||||
obligorRulesClient:{
|
|
||||||
name: [
|
|
||||||
{ required: true, message: '请输入被申请人姓名', trigger: 'change',},
|
|
||||||
],
|
|
||||||
phone: [
|
|
||||||
{ required: true, message: '请输入法人手机号', trigger: 'change',},
|
|
||||||
{ pattern: /^(13[0-9]{9})|(18[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})|(19[0-9]{9})$/, message: '请输入正确的手机号码', trigger: ['blur', 'change']}
|
|
||||||
],
|
|
||||||
cardTypeId: [
|
|
||||||
{ required: true, message: '请选择证件类型', trigger: 'change',},
|
|
||||||
],
|
|
||||||
addr: [
|
|
||||||
{ required: true, message: '请输入地址', trigger: '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']}
|
|
||||||
],
|
|
||||||
mail: [
|
|
||||||
{ required: true, message: '请输入邮编', trigger: 'change',},
|
|
||||||
{ pattern: /^\d{6}$/, message: '请输入正确的邮编', trigger: ['blur', 'change']}
|
|
||||||
],
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
fileList:[],//证据材料
|
|
||||||
CasepackageList:[]
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
this.getDict();//获取金融产品类型
|
|
||||||
this.getDictIdType();
|
|
||||||
this.getCasepkgList();
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 案件包列表数据
|
|
||||||
getCasepkgList(){
|
|
||||||
cpkapi.getCasePkgQuery({current:1,size:500}).then(res => {
|
|
||||||
if (!res.code) {
|
|
||||||
this.CasepackageList = res.records;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
apkChange(){
|
|
||||||
|
|
||||||
let changeApk = this.CasepackageList.find(item =>{
|
|
||||||
return this.baseInfo.pkgId == item.id
|
|
||||||
})
|
|
||||||
this.baseInfo.financialOrgName = changeApk.entrustingAgencyName
|
|
||||||
this.baseInfo.financialOrgCode = changeApk.entrustingAgencyCode
|
|
||||||
},
|
|
||||||
// 获取金融产品类型
|
|
||||||
getDict(){
|
|
||||||
let data = {
|
|
||||||
type:'financial'
|
|
||||||
}
|
|
||||||
api.getDict(data).then(res => {
|
|
||||||
if (!res.code) {
|
|
||||||
this.financialProductsTypeOptions = res;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 获取证件类型
|
|
||||||
getDictIdType(){
|
|
||||||
let data = {
|
|
||||||
type:'certificates'
|
|
||||||
}
|
|
||||||
api.getDict(data).then(res => {
|
|
||||||
if (!res.code) {
|
|
||||||
this.idTypeOptions = res;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 新增
|
|
||||||
handleAdd(){
|
|
||||||
this.obligorInfoForm.debtorEntityList.push({
|
|
||||||
name:'',//被申请人姓名
|
|
||||||
phone:'',//被申请人电话
|
|
||||||
cardTypeId:'',//证件类型
|
|
||||||
addr:'',//地址
|
|
||||||
cardNo:'',//证件号
|
|
||||||
mail:'',//邮编
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 删除
|
|
||||||
handleRemoveDomain(item) {
|
|
||||||
var index = this.obligorInfoForm.debtorEntityList.indexOf(item)
|
|
||||||
if (index !== -1) {
|
|
||||||
this.obligorInfoForm.debtorEntityList.splice(index, 1)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 清空
|
|
||||||
handleReset(){
|
|
||||||
for (let key in this.creditorInfo) {
|
|
||||||
this.creditorInfo[key] = ''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 下一步
|
|
||||||
handleNextStep(){
|
|
||||||
if(this.presentStep === 1){
|
|
||||||
this.$refs.ruleFormBase.validate((valid) => {
|
|
||||||
if (valid){this.presentStep++}
|
|
||||||
})
|
|
||||||
}else if(this.presentStep === 2){
|
|
||||||
this.$refs.ruleFormCreditor.validate((valid) => {
|
|
||||||
if (valid){
|
|
||||||
this.$refs.ruleFormObligor.validate((valid) => {
|
|
||||||
if (valid){this.presentStep++}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}else{
|
|
||||||
this.presentStep++
|
|
||||||
}
|
|
||||||
},
|
|
||||||
handleSubmit(){
|
|
||||||
|
|
||||||
if(!this.$clickThrottle()) { return }//防止重复点击
|
|
||||||
|
|
||||||
let data = {
|
|
||||||
...this.baseInfo,//基本信息
|
|
||||||
...this.creditorInfo,//债权人信息
|
|
||||||
...this.obligorInfoForm,//被申请人
|
|
||||||
caseFileEntityList:this.fileList//证据材料
|
|
||||||
}
|
|
||||||
console.log('获取传给后台的信息',data)
|
|
||||||
api.addCaseInfo(data).then(res => {
|
|
||||||
this.presentStep++
|
|
||||||
this.$parent.getCaseInfoList(1)
|
|
||||||
// this.$parent.getCaseCount()
|
|
||||||
})
|
|
||||||
|
|
||||||
},
|
|
||||||
// 上传
|
|
||||||
handleUploadFile(fileList){
|
|
||||||
console.log('获取上传文件信息',fileList)
|
|
||||||
fileList = JSON.parse(JSON.stringify(fileList))
|
|
||||||
this.fileList = fileList.map((item,i) => {
|
|
||||||
return {
|
|
||||||
url: item.url,
|
|
||||||
fileName:item.fileName,
|
|
||||||
name:item.fileName
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleClose() {
|
|
||||||
this.$emit('update:addCaseDialog', null)
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.dialog-content{
|
|
||||||
padding: 16px 24px;
|
|
||||||
// max-height:500px
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
@ -1,392 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<el-dialog
|
|
||||||
:title="caseAllocationDialog.title"
|
|
||||||
:visible="true"
|
|
||||||
width="880px"
|
|
||||||
append-to-body
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
@close="handleClose"
|
|
||||||
>
|
|
||||||
|
|
||||||
<div class="dialog-content">
|
|
||||||
<div class="pb-16">
|
|
||||||
<el-row :gutter="20" type="flex" align="middle">
|
|
||||||
<el-col :span="24">
|
|
||||||
|
|
||||||
<div class="flex-row align-items-center">
|
|
||||||
<div class="mr-8 flex-shrink-0">区域</div>
|
|
||||||
<div class="width100">
|
|
||||||
<el-select v-model="deptId"
|
|
||||||
size="medium"
|
|
||||||
clearable placeholder="请选择区域"
|
|
||||||
@change="handleChangeDept"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in departmentOptions"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id"
|
|
||||||
class="width100"
|
|
||||||
>
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
<el-scrollbar class="bor bg-color-light min-height350">
|
|
||||||
<div class="department-wrap">
|
|
||||||
<div v-for="(item,inx) in peopleList" :key="inx" class="department-wrap-list">
|
|
||||||
<div class="department-dept">
|
|
||||||
<el-checkbox v-model="checkedAll" :label="item.deptId" @change="handleCheckChange(1,inx,item,item.deptId,$event)">{{item.name}}({{item.count}}人)</el-checkbox>
|
|
||||||
</div>
|
|
||||||
<div class="flex-row justify-content-start flex-flow-wrap ">
|
|
||||||
<div v-for="(v,i) in item.values" :key="i" class="pt-16" style="flex:0 0 25%">
|
|
||||||
<el-checkbox v-model="checkedAll" :label="v.id" @change="handleCheckChange(2,inx,v,item.deptId,$event)">{{v.realName}}</el-checkbox>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-scrollbar>
|
|
||||||
<div class="p-v-24">
|
|
||||||
<el-form ref="ruleForm"
|
|
||||||
:model="queryParam"
|
|
||||||
:rules="rulesClient"
|
|
||||||
label-width="120px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<el-row :gutter="20" type="flex" align="middle">
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="分配方式" prop="dispatchType" label-width="80px">
|
|
||||||
<template>
|
|
||||||
<el-radio v-model="queryParam.dispatchType" :label="1">平均分配</el-radio>
|
|
||||||
<el-radio v-model="queryParam.dispatchType" :label="2">调解中案件量最少</el-radio>
|
|
||||||
<el-radio v-model="queryParam.dispatchType" :label="3">当天分案量最少</el-radio>
|
|
||||||
<el-radio v-model="queryParam.dispatchType" :label="4">当月分案量最少</el-radio>
|
|
||||||
<el-radio v-model="queryParam.dispatchType" :label="5">同案由调解成功率最高</el-radio>
|
|
||||||
</template>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
|
|
||||||
</el-row>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</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";
|
|
||||||
import apipack from "@/services/casePackageManagement";
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
caseAllocationDialog: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
deptId:[],//获取区域id集合
|
|
||||||
queryParam:{
|
|
||||||
id:'',//案件包ID
|
|
||||||
dispatchType:1,//分案方式;1,平均分配;2,调解中案件量最少;3,当天分案量最少;4,当月分案量最少;5,同案由调解成功率最高
|
|
||||||
},
|
|
||||||
userList:[],
|
|
||||||
rulesClient: {
|
|
||||||
dispatchType: [
|
|
||||||
{ required: true, message: '请选择分案方式', trigger: 'change',},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
peopleList:[
|
|
||||||
{deptId:1,name:'调解一部',count:10,
|
|
||||||
values:[
|
|
||||||
{id:1,deptId:1,realName:'张三' },
|
|
||||||
{id:2,deptId:1,realName:'张三' },
|
|
||||||
{id:3,deptId:1,realName:'张三' },
|
|
||||||
{id:4,deptId:1,realName:'张三' },
|
|
||||||
{id:5,deptId:1,realName:'里面' },
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
departmentOptions:[],//区域
|
|
||||||
checkedAll:[],
|
|
||||||
chooseChecked:[],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
this.getDeptList();//获取区域
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 获取区域
|
|
||||||
getDeptList(){
|
|
||||||
let data = {
|
|
||||||
companyId: this.$store.state.userinfo.companyId,
|
|
||||||
current: 1,
|
|
||||||
size: 500,
|
|
||||||
pid:0
|
|
||||||
}
|
|
||||||
api.getDeptList(data).then(res => {
|
|
||||||
if (!res.code) {
|
|
||||||
this.departmentOptions = res.records;
|
|
||||||
this.deptId = this.departmentOptions[0].id
|
|
||||||
this.getByDeptList()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleChangeDept(e){
|
|
||||||
this.checkedAll=[]
|
|
||||||
this.chooseChecked=[]
|
|
||||||
this.getByDeptList()
|
|
||||||
this.peopleList=[]
|
|
||||||
|
|
||||||
},
|
|
||||||
// 根据区域id列表查看用户列表
|
|
||||||
getByDeptList(){
|
|
||||||
api.getDeptList({companyId:this.$store.state.userinfo.companyId,current:1,size:500,pid:this.deptId}).then(res => {
|
|
||||||
if (!res.code)
|
|
||||||
{
|
|
||||||
let deptList = []
|
|
||||||
res.records.forEach(item =>{
|
|
||||||
let userlist = []
|
|
||||||
api.getUserByDeptList({ids:[item.id]}).then(res => {
|
|
||||||
|
|
||||||
res.forEach(item =>{
|
|
||||||
userlist.push({
|
|
||||||
id:item.id,
|
|
||||||
realName:item.realName,
|
|
||||||
checked:false
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
deptList.push({
|
|
||||||
deptId:item.id,
|
|
||||||
name:item.name,
|
|
||||||
count:item.count,
|
|
||||||
checked:false,
|
|
||||||
values:userlist
|
|
||||||
})
|
|
||||||
})
|
|
||||||
this.peopleList = deptList
|
|
||||||
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleCheckChange(type,a=0,chooseItem,deptId,event){
|
|
||||||
// console.log(chooseItem,event,a,'this.peopleList')
|
|
||||||
let self = this
|
|
||||||
if(type==2){//二级菜单
|
|
||||||
let index = 0;
|
|
||||||
self.peopleList[a].values.map((item)=>{
|
|
||||||
if(self.checkedAll.indexOf(item.id)>-1){
|
|
||||||
index+=1
|
|
||||||
}
|
|
||||||
})
|
|
||||||
if(index>0){
|
|
||||||
if(self.checkedAll.indexOf(self.peopleList[a].deptId)<0){
|
|
||||||
self.checkedAll.push(self.peopleList[a].deptId)
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
if(self.checkedAll.indexOf(self.peopleList[a].deptId)>0){
|
|
||||||
self.checkedAll.splice(self.checkedAll.indexOf(self.peopleList[a].deptId),1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(event)
|
|
||||||
{
|
|
||||||
if(this.chooseChecked.length==0){self.chooseChecked.push({deptId:deptId,child:[]})}
|
|
||||||
this.chooseChecked.forEach((item,index) => {
|
|
||||||
let haveDeptId = self.chooseChecked.find(citem=>{
|
|
||||||
return citem.deptId===deptId
|
|
||||||
})
|
|
||||||
if(haveDeptId != undefined)
|
|
||||||
{
|
|
||||||
if(item.deptId==deptId)
|
|
||||||
{
|
|
||||||
item.child.push({deptId:deptId,id:chooseItem.id,realName:chooseItem.realName})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
self.chooseChecked.push({deptId:deptId,child:[{deptId:deptId,id:chooseItem.id,realName:chooseItem.realName}]})
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.chooseChecked.forEach((item,index) => {
|
|
||||||
item.child.forEach((itemchild,index) => {
|
|
||||||
if(itemchild.id==chooseItem.id)
|
|
||||||
{
|
|
||||||
item.child.splice(index,1)
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
let childnum = this.chooseChecked.find(item=>{
|
|
||||||
return item.deptId === deptId
|
|
||||||
}).child.length;
|
|
||||||
|
|
||||||
let allchildnum = this.peopleList.find(item=>{
|
|
||||||
return item.deptId === deptId
|
|
||||||
}).values.length;
|
|
||||||
if(childnum != allchildnum)
|
|
||||||
{
|
|
||||||
if(self.checkedAll.indexOf(deptId)>-1){
|
|
||||||
self.checkedAll.splice(self.checkedAll.indexOf(deptId),1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(self.checkedAll.indexOf(deptId)<0){
|
|
||||||
self.checkedAll.push(deptId)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}else{
|
|
||||||
if(self.checkedAll.indexOf(self.peopleList[a].deptId)>-1){
|
|
||||||
self.peopleList[a].values.map((item)=>{
|
|
||||||
if(self.checkedAll.findIndex((n)=> n==item.id)<0){
|
|
||||||
self.checkedAll.push(item.id)
|
|
||||||
// self.checkedAll.push({id:item.id,realName:item.realName,deptId:self.peopleList[a].deptId})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}else{
|
|
||||||
self.peopleList[a].values.map((item)=>{
|
|
||||||
if(self.checkedAll.findIndex((n)=> n==item.id)>-1){
|
|
||||||
self.checkedAll.splice(self.checkedAll.findIndex((n)=> n==item.id),1)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
let haveDeptId=self.chooseChecked.find(citem=>{
|
|
||||||
return citem.deptId === deptId
|
|
||||||
})
|
|
||||||
if(event)
|
|
||||||
{
|
|
||||||
if(haveDeptId == undefined)
|
|
||||||
{
|
|
||||||
let addchild=[]
|
|
||||||
self.peopleList.forEach((item,index) => {
|
|
||||||
if(item.deptId==deptId)
|
|
||||||
{
|
|
||||||
item.values.forEach((item,index) => {
|
|
||||||
addchild.push({deptId:deptId,id:item.id,realName:item.realName})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
self.chooseChecked.push({deptId:deptId,child:addchild})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(haveDeptId != undefined)
|
|
||||||
{
|
|
||||||
self.chooseChecked.forEach((item,index) => {
|
|
||||||
if(item.deptId==deptId)
|
|
||||||
{
|
|
||||||
self.chooseChecked.splice(index,1)
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// console.log(this.checkedAll,self.chooseChecked,'checkedAll')
|
|
||||||
},
|
|
||||||
|
|
||||||
handleSubmit(){
|
|
||||||
if(!this.$clickThrottle()) { return }//防止重复点击
|
|
||||||
let chooseUser=[]
|
|
||||||
this.chooseChecked.forEach((item,index) => {
|
|
||||||
item.child.forEach((item,index) => {
|
|
||||||
chooseUser.push({deptId:item.deptId,id:item.id,realName:item.realName})
|
|
||||||
});
|
|
||||||
});
|
|
||||||
if(chooseUser.length == 0)
|
|
||||||
{
|
|
||||||
this.$message({
|
|
||||||
showClose: true,
|
|
||||||
message: '请先选择调解员!',
|
|
||||||
type: 'warning'
|
|
||||||
});
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$refs.ruleForm.validate((valid) => {
|
|
||||||
if(valid) {
|
|
||||||
|
|
||||||
let data = {
|
|
||||||
id:this.caseAllocationDialog.ObjectInfo.id,
|
|
||||||
dispatchType:this.queryParam.dispatchType,
|
|
||||||
userList:chooseUser
|
|
||||||
}
|
|
||||||
|
|
||||||
apipack.postpkgdispatchCase(data).then(res => {
|
|
||||||
this.$message({
|
|
||||||
showClose: true,
|
|
||||||
message: '调解案件分配成功!',
|
|
||||||
type: 'success'
|
|
||||||
});
|
|
||||||
this.$parent.getCaseInfoList()
|
|
||||||
this.handleClose()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleSearch(){
|
|
||||||
|
|
||||||
},
|
|
||||||
handleChangeDate(){
|
|
||||||
let planStart = new Date(this.queryParam.planStartTime);
|
|
||||||
let planEnd = new Date(this.queryParam.planEndTime);
|
|
||||||
if (planEnd < planStart) {
|
|
||||||
this.$message({
|
|
||||||
showClose: true,
|
|
||||||
message: '开始日期不能大于结束日期!',
|
|
||||||
type: 'warning'
|
|
||||||
});
|
|
||||||
this.queryParam.planEndTime=''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
handleClose() {
|
|
||||||
this.$emit('update:caseAllocationDialog', null)
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</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>
|
|
||||||
@ -1,209 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<el-dialog
|
|
||||||
:title="importCaseDialog.title"
|
|
||||||
:visible="true"
|
|
||||||
width="580px"
|
|
||||||
append-to-body
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
@close="handleClose">
|
|
||||||
|
|
||||||
|
|
||||||
<!-- 基本信息 -->
|
|
||||||
<div>
|
|
||||||
<div class="p-h-24">
|
|
||||||
<el-form ref="ruleFormBase"
|
|
||||||
:model="baseInfo"
|
|
||||||
:rules="rulesClient"
|
|
||||||
label-width="150px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<el-row type="flex" align="middle" class="mt-16">
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="案件包名" prop="pkgName">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="baseInfo.pkgName"
|
|
||||||
placeholder="请输入案件包名"
|
|
||||||
clearable
|
|
||||||
maxlength="25"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="委案机构" prop="entrustingAgencyName">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="baseInfo.entrustingAgencyName"
|
|
||||||
placeholder="请输入委案机构"
|
|
||||||
clearable
|
|
||||||
maxlength="25"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="委案渠道" prop="channel">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="baseInfo.channel"
|
|
||||||
placeholder="请输入委案渠道"
|
|
||||||
clearable
|
|
||||||
maxlength="25"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="委案日期" prop="planStartTime">
|
|
||||||
<el-date-picker class="width100"
|
|
||||||
v-model="baseInfo.planStartTime"
|
|
||||||
type="date"
|
|
||||||
value-format="yyyy-MM-dd HH:mm:ss"
|
|
||||||
placeholder="选择委案日期">
|
|
||||||
</el-date-picker>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="委案期限(月)" prop="months">
|
|
||||||
<el-input-number v-model="baseInfo.months" :min="0" :max="100" class="width100"></el-input-number>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="上传文件" prop="fileInfo">
|
|
||||||
<upload-import :file-list="fileList" :max-count="1"
|
|
||||||
:show-file-name="true"
|
|
||||||
accept=".xls,.xlsx"
|
|
||||||
@handleUploadFile="handleUploadFile">
|
|
||||||
</upload-import>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
</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 apipk from "@/services/casePackageManagement";
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
uploadImport:() => import('@/components/uploadImportPackage.vue'),//导入上传
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
importCaseDialog: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
baseInfo:{
|
|
||||||
pkgName:'',//案件包名
|
|
||||||
entrustingAgencyName:'',//金融机构名称
|
|
||||||
planStartTime:'',//委案时间
|
|
||||||
months:1,//委案期限
|
|
||||||
fileInfo:null,
|
|
||||||
channel:'',
|
|
||||||
|
|
||||||
},
|
|
||||||
rulesClient: {
|
|
||||||
pkgName: [
|
|
||||||
{ required: true, message: '请输入案件包名', trigger: 'change',},
|
|
||||||
],
|
|
||||||
planStartTime: [
|
|
||||||
{ required: true, message: '请输入委案时间', trigger: 'change',},
|
|
||||||
],
|
|
||||||
months: [
|
|
||||||
{ required: true, message: '请输入委案期限', trigger: 'change',},
|
|
||||||
],
|
|
||||||
channel: [
|
|
||||||
{ required: true, message: '请输入委案渠道', trigger: 'change',},
|
|
||||||
],
|
|
||||||
fileInfo: [
|
|
||||||
{ required: true, message: '请上传文件', trigger: 'change',},
|
|
||||||
],
|
|
||||||
|
|
||||||
},
|
|
||||||
financialProductsTypeOptions:[],//金融产品类型
|
|
||||||
fileList:[],//证据材料
|
|
||||||
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
|
|
||||||
handleSubmit(){
|
|
||||||
if(!this.$clickThrottle()) { return }//防止重复点击
|
|
||||||
|
|
||||||
this.$refs.ruleFormBase.validate((valid) => {
|
|
||||||
if (valid){
|
|
||||||
let data = {
|
|
||||||
...this.baseInfo,//基本信息
|
|
||||||
}
|
|
||||||
apipk.CasePkgimport(data).then(res => {
|
|
||||||
this.handleClose()
|
|
||||||
this.$parent.getCaseInfoList(1)
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
},
|
|
||||||
// 上传
|
|
||||||
handleUploadFile(JsonData){
|
|
||||||
|
|
||||||
console.log('获取上传文件信息',JsonData.uploadFileRes)
|
|
||||||
let fileitem = JSON.parse(JSON.stringify(JsonData.fileList))
|
|
||||||
this.fileList = fileitem.map((item,i) => {
|
|
||||||
let time = this.$util.getTimestamp()
|
|
||||||
let fileType = this.$util.getFileExtension(item.url)
|
|
||||||
let fileName = `${time}.${fileType}`
|
|
||||||
return {
|
|
||||||
url: item.url,
|
|
||||||
fileName:fileName,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
if(fileitem.length == 0 ){
|
|
||||||
this.baseInfo.fileInfo = null
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.baseInfo.fileInfo = JsonData.uploadFileRes
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
handleClose() {
|
|
||||||
this.$emit('update:importCaseDialog', null)
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.dialog-content{
|
|
||||||
padding: 16px 24px;
|
|
||||||
// max-height:500px
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
@ -73,7 +73,11 @@
|
|||||||
<div class="descriptions-t-item-l color-86909C">被申请人姓名:</div>
|
<div class="descriptions-t-item-l color-86909C">被申请人姓名:</div>
|
||||||
<div class="descriptions-t-item-r color-1960F4">{{baseInfo.debtorEntityList.find(item => item.role == 'DEBTOR').name}}</div>
|
<div class="descriptions-t-item-r color-1960F4">{{baseInfo.debtorEntityList.find(item => item.role == 'DEBTOR').name}}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-row descriptions-t-item">
|
<div class="flex-row descriptions-t-item ">
|
||||||
|
<div class="descriptions-t-item-l color-86909C">被申请人身份证:</div>
|
||||||
|
<div class="descriptions-t-item-r">{{baseInfo.debtorEntityList.find(item => item.role == 'DEBTOR').cardNo}}</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex-row descriptions-t-item bgColor-F7F8FA">
|
||||||
<div class="descriptions-t-item-l color-86909C">被申请人手机号码:</div>
|
<div class="descriptions-t-item-l color-86909C">被申请人手机号码:</div>
|
||||||
<div class="descriptions-t-item-r">{{baseInfo.debtorEntityList.find(item => item.role == 'DEBTOR').phone}}</div>
|
<div class="descriptions-t-item-r">{{baseInfo.debtorEntityList.find(item => item.role == 'DEBTOR').phone}}</div>
|
||||||
</div>
|
</div>
|
||||||
@ -310,7 +314,7 @@ export default {
|
|||||||
caseMaterial: () => import('./caseMaterial'),//
|
caseMaterial: () => import('./caseMaterial'),//
|
||||||
caseMaterialLeft: () => import('./caseMaterialLeft'),//案件材料左
|
caseMaterialLeft: () => import('./caseMaterialLeft'),//案件材料左
|
||||||
contactPerson: () => import('./contactPerson'),//联系人左
|
contactPerson: () => import('./contactPerson'),//联系人左
|
||||||
cassWrit: () => import('./cassWrit'),//
|
cassWrit: () => import('./cassWrit'),//案件文书
|
||||||
portraitPerson: () => import('./portraitPerson.vue'),//人物画像
|
portraitPerson: () => import('./portraitPerson.vue'),//人物画像
|
||||||
SidebarTool: () => import('./SidebarTool'),
|
SidebarTool: () => import('./SidebarTool'),
|
||||||
singlesmsPopover: () => import('./singlesmsPopover.vue'),//发送短信
|
singlesmsPopover: () => import('./singlesmsPopover.vue'),//发送短信
|
||||||
@ -441,7 +445,7 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleCaseShowFile(item) {
|
handleCaseShowFile(item) {
|
||||||
//还款凭证相关
|
//查看录音录像文件相关
|
||||||
this.$fetchApi.viewFullFile({path: item}).then((res) => {
|
this.$fetchApi.viewFullFile({path: item}).then((res) => {
|
||||||
this.fileDialog = {showfile: {url: item,fullUrl: res}, filelist: []}
|
this.fileDialog = {showfile: {url: item,fullUrl: res}, filelist: []}
|
||||||
});
|
});
|
||||||
|
|||||||
@ -47,7 +47,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<span v-if="mrObj.linkedType == 2" class="f16 f-weight500 mt-8">沟通对象</span>
|
<span v-if="mrObj.linkedType == 2" class="f16 f-weight500 mt-8">沟通对象</span>
|
||||||
<div v-if="mrObj.linkedType == 2" class="mt-8">
|
<div v-if="mrObj.linkedType == 2" class="mt-8">
|
||||||
<el-select size="small" v-model="mrObj.linkedPerson" multiple placeholder="请选择沟通对象" class="width100">
|
<el-select size="small" v-model="mrObj.linkedPerson" multiple :multiple-limit="(mrObj.linkedWay==1||mrObj.linkedWay==3) ? 1:6" placeholder="请选择沟通对象" class="width100">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in PersonData"
|
v-for="item in PersonData"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@ -152,7 +152,7 @@ export default {
|
|||||||
mediateStatus:'',//调解状态
|
mediateStatus:'',//调解状态
|
||||||
linkedTime:'',//联系时间
|
linkedTime:'',//联系时间
|
||||||
linkedDuration:'',//时长
|
linkedDuration:'',//时长
|
||||||
callWay:'',//拨打方式
|
callWay:'',//拨打方式 0 呼入 1 呼出
|
||||||
callStartTime:'',//拨打开始时间
|
callStartTime:'',//拨打开始时间
|
||||||
callEndTime:'',//拨打结束时间
|
callEndTime:'',//拨打结束时间
|
||||||
nextFollowDate:1,//下次跟进时间
|
nextFollowDate:1,//下次跟进时间
|
||||||
|
|||||||
@ -115,12 +115,31 @@
|
|||||||
|
|
||||||
<div class="flex-row align-items-center pl-24 pr-24 btn-group-controls">
|
<div class="flex-row align-items-center pl-24 pr-24 btn-group-controls">
|
||||||
<div class="pt-16 pb-16 flex-row justify-content-between align-items-center btn-group-real-time">
|
<div class="pt-16 pb-16 flex-row justify-content-between align-items-center btn-group-real-time">
|
||||||
<el-badge :value="3" class="item">
|
<el-popover
|
||||||
<i class="f24 el-icon-phone cursor-pointer color-52ABF2"></i>
|
placement="top"
|
||||||
</el-badge>
|
width="400"
|
||||||
<el-badge :value="3" class="item">
|
v-model="missedCallVisible"
|
||||||
<i class="f24 el-icon-video-camera cursor-pointer color-52ABF2"></i>
|
title="未接来电"
|
||||||
</el-badge>
|
trigger="click">
|
||||||
|
<missedCallPopover :missedCallData="missedCallData" :missedCallVisible.sync="missedCallVisible"/>
|
||||||
|
<span slot="reference" class="cursor-pointer position-r">
|
||||||
|
<i class="f24 el-icon-phone color-52ABF2"></i>
|
||||||
|
<div class="ell-warn-dot" v-if="missedCallData.list.length > 0">{{missedCallData.list.length}}</div>
|
||||||
|
</span>
|
||||||
|
</el-popover>
|
||||||
|
|
||||||
|
<el-popover
|
||||||
|
placement="top"
|
||||||
|
width="400"
|
||||||
|
v-model="videoReminderVisible"
|
||||||
|
title="视频提醒"
|
||||||
|
trigger="click">
|
||||||
|
<videoReminderPopover :videoReminderData="videoReminderData" :videoReminderVisible.sync="videoReminderVisible"/>
|
||||||
|
<span slot="reference" class="cursor-pointer position-r">
|
||||||
|
<i class="f24 el-icon-video-camera color-52ABF2"></i>
|
||||||
|
<div class="ell-warn-dot" v-if="Object.keys(videoReminderData).length > 0">1</div>
|
||||||
|
</span>
|
||||||
|
</el-popover>
|
||||||
</div>
|
</div>
|
||||||
<div class="ml-24 mr-24 btn-group-interval"></div>
|
<div class="ml-24 mr-24 btn-group-interval"></div>
|
||||||
<div class="flex-row justify-content-between align-items-center btn-group-processing-event">
|
<div class="flex-row justify-content-between align-items-center btn-group-processing-event">
|
||||||
@ -223,6 +242,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import api from "@/services/caseManagement";
|
import api from "@/services/caseManagement";
|
||||||
|
import {mapState} from 'vuex'
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
caseVideoReservationDialog: () => import('./caseVideoReservationDialog'),//
|
caseVideoReservationDialog: () => import('./caseVideoReservationDialog'),//
|
||||||
@ -233,6 +253,9 @@ export default {
|
|||||||
singlesmsPopover: () => import('./singlesmsPopover.vue'),//发送短信
|
singlesmsPopover: () => import('./singlesmsPopover.vue'),//发送短信
|
||||||
VideoRoom: () => import('./VideoRoom'),
|
VideoRoom: () => import('./VideoRoom'),
|
||||||
LayoutContentNew: () => import('./LayoutContentNew'),//调解数据
|
LayoutContentNew: () => import('./LayoutContentNew'),//调解数据
|
||||||
|
|
||||||
|
missedCallPopover: () => import('./missedCallPopover'),//来电
|
||||||
|
videoReminderPopover: () => import('./videoReminderPopover'),//视频
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -344,7 +367,19 @@ export default {
|
|||||||
elapsedTime: 0,
|
elapsedTime: 0,
|
||||||
timerInterval: null,
|
timerInterval: null,
|
||||||
isRunning: false,
|
isRunning: false,
|
||||||
|
<<<<<<< HEAD
|
||||||
contactId: '',
|
contactId: '',
|
||||||
|
=======
|
||||||
|
|
||||||
|
// 未接来电
|
||||||
|
missedCallVisible: false,
|
||||||
|
missedCallData: {
|
||||||
|
list: []
|
||||||
|
},
|
||||||
|
// 视频提醒
|
||||||
|
videoReminderVisible: false,
|
||||||
|
videoReminderData: {}
|
||||||
|
>>>>>>> 5d050e83e2826b0ae129388b597928682f1bcc9a
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -377,6 +412,20 @@ export default {
|
|||||||
const seconds = totalSeconds % 60;
|
const seconds = totalSeconds % 60;
|
||||||
return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
|
return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
|
||||||
},
|
},
|
||||||
|
...mapState({
|
||||||
|
videoReminder: state => state.videoReminder
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
videoReminder: {
|
||||||
|
deep: true,
|
||||||
|
handler: function (val) {
|
||||||
|
if (val){
|
||||||
|
console.log(val, '---视频提前5分钟提醒')
|
||||||
|
this.videoReminderData = JSON.parse(val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
async created() {
|
async created() {
|
||||||
|
|
||||||
@ -705,6 +754,22 @@ export default {
|
|||||||
box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
|
box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
|
||||||
.btn-group-real-time{
|
.btn-group-real-time{
|
||||||
width: 64px;
|
width: 64px;
|
||||||
|
.ell-warn-dot{
|
||||||
|
background-color: #f56c6c;
|
||||||
|
border-radius: 11px;
|
||||||
|
color: #fff;
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 17px;
|
||||||
|
height: 18px;
|
||||||
|
padding: 0 6px;
|
||||||
|
text-align: center;
|
||||||
|
border: 1px solid #fff;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 10px;
|
||||||
|
transform: translateY(-50%) translateX(100%);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.btn-group-interval{
|
.btn-group-interval{
|
||||||
width: 1px;
|
width: 1px;
|
||||||
|
|||||||
@ -52,7 +52,10 @@
|
|||||||
<div v-if="itemrecord.linkedWay == 1" class="flex-row align-items-center pt-6">
|
<div v-if="itemrecord.linkedWay == 1" class="flex-row align-items-center pt-6">
|
||||||
<div v-if="itemrecord.linkedType == 1">通话{{itemrecord.linkedDuration}}秒</div>
|
<div v-if="itemrecord.linkedType == 1">通话{{itemrecord.linkedDuration}}秒</div>
|
||||||
<el-divider v-if="itemrecord.linkedType == 1" direction="vertical"></el-divider>
|
<el-divider v-if="itemrecord.linkedType == 1" direction="vertical"></el-divider>
|
||||||
<div class="text-center cursor-pointer"><i class="f14 el-icon-video-play"></i> 播放录音</div>
|
<div class="text-center cursor-pointer" v-for="(item,index) in itemrecord.files" :key="index" @click="handleCaseShowFile(item)">
|
||||||
|
<i class="f14 el-icon-video-play"></i> 播放录音 {{index > 0 ? index : ''}}
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>沟通备注:<span class="color-FF7D00">{{itemrecord.communicationRemarks}}</span></div>
|
<div>沟通备注:<span class="color-FF7D00">{{itemrecord.communicationRemarks}}</span></div>
|
||||||
@ -130,7 +133,10 @@
|
|||||||
<div v-if="itemrecord.linkedWay == 2" class="flex-row align-items-center pt-6">
|
<div v-if="itemrecord.linkedWay == 2" class="flex-row align-items-center pt-6">
|
||||||
<div v-if="itemrecord.linkedType == 1">视频{{itemrecord.linkedDuration}}秒</div>
|
<div v-if="itemrecord.linkedType == 1">视频{{itemrecord.linkedDuration}}秒</div>
|
||||||
<el-divider v-if="itemrecord.linkedType == 1" direction="vertical"></el-divider>
|
<el-divider v-if="itemrecord.linkedType == 1" direction="vertical"></el-divider>
|
||||||
<div class="text-center cursor-pointer"><i class="f14 el-icon-video-play"></i> 播放视频</div>
|
<div class="text-center cursor-pointer" v-for="(item,index) in itemrecord.files" :key="index" @click="handleCaseShowFile(item)">
|
||||||
|
<i class="f14 el-icon-video-play"></i> 播放视频 {{index > 0 ? index : ''}}
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -283,6 +289,8 @@
|
|||||||
<svg-icon :icon-class="rightActive === 7 ? `siderbar-7-active` : 'siderbar-7'" className="tabs-svg" />
|
<svg-icon :icon-class="rightActive === 7 ? `siderbar-7-active` : 'siderbar-7'" className="tabs-svg" />
|
||||||
</div>
|
</div>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
|
<!-- 文件预览 -->
|
||||||
|
<showFile v-if="fileDialog" :fileDialog.sync="fileDialog"/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -293,6 +301,7 @@ import contactPerson from "@/services/contactPerson";
|
|||||||
export default {
|
export default {
|
||||||
name: "SidebarTool",
|
name: "SidebarTool",
|
||||||
components: {
|
components: {
|
||||||
|
showFile: () => import('../../../components/showFile.vue'),//
|
||||||
uploadFile: () => import('@/components/uploadFile.vue'),//上传
|
uploadFile: () => import('@/components/uploadFile.vue'),//上传
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
@ -306,6 +315,7 @@ export default {
|
|||||||
},
|
},
|
||||||
data(){
|
data(){
|
||||||
return{
|
return{
|
||||||
|
fileDialog:null,
|
||||||
materialTypeOptions: this.$util.getMediationprogress(),
|
materialTypeOptions: this.$util.getMediationprogress(),
|
||||||
rightActive: 0,
|
rightActive: 0,
|
||||||
imgPdf: require('@/assets/image/util/pdf_img.jpg'),
|
imgPdf: require('@/assets/image/util/pdf_img.jpg'),
|
||||||
@ -437,6 +447,12 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
handleCaseShowFile(item) {
|
||||||
|
//查看录音录像文件相关
|
||||||
|
this.$fetchApi.viewFullFile({path: item}).then((res) => {
|
||||||
|
this.fileDialog = {showfile: {url: item,fullUrl: res}, filelist: []}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -89,6 +89,9 @@ export default {
|
|||||||
else if(/.(zip|rar)$/.test(item.url.toLowerCase())) {
|
else if(/.(zip|rar)$/.test(item.url.toLowerCase())) {
|
||||||
return require('@/assets/image/util/yswj.jpg')
|
return require('@/assets/image/util/yswj.jpg')
|
||||||
}
|
}
|
||||||
|
else if(/.(m3u8|mp4)$/.test(item.url.toLowerCase())) {
|
||||||
|
return require('@/assets/image/util/video_img.jpg')
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
// let previewUrl = `/mediate/minio/preview/${fileUrl}`
|
// let previewUrl = `/mediate/minio/preview/${fileUrl}`
|
||||||
// return service.service.serviceurl+fileUrl
|
// return service.service.serviceurl+fileUrl
|
||||||
|
|||||||
@ -52,10 +52,14 @@
|
|||||||
<a class="color-86909C f12 pt-6 pb-6">{{item.handleBy}} {{ $util.formatDate(item.handleTime, 'YYYY-MM-DD HH:mm:ss')}}</a>
|
<a class="color-86909C f12 pt-6 pb-6">{{item.handleBy}} {{ $util.formatDate(item.handleTime, 'YYYY-MM-DD HH:mm:ss')}}</a>
|
||||||
<div class="flex-row justify-content-between align-items-center color-86909C" v-if="item.signList.length > 0 || item.unsignList.length > 0">
|
<div class="flex-row justify-content-between align-items-center color-86909C" v-if="item.signList.length > 0 || item.unsignList.length > 0">
|
||||||
<div>签字</div>
|
<div>签字</div>
|
||||||
<el-tag class="ml-4" size="small" type="success" effect="plain"
|
<div class="flex-row" v-for="(item1, index1) in item.unsignList" :key="index1">
|
||||||
|
<el-tag v-if="item1.signStatus.code == 2" class="ml-4" size="small" type="success" effect="plain">{{item1.signName}}</el-tag>
|
||||||
|
<el-tag v-if="item1.signStatus.code == 0" class="ml-4" size="small" type="info" effect="plain">{{item1.signName}}</el-tag>
|
||||||
|
</div>
|
||||||
|
<!-- <el-tag class="ml-4" size="small" type="success" effect="plain"
|
||||||
v-for="(item1, index1) in item.signList" :key="index1">{{item1.signName}}</el-tag>
|
v-for="(item1, index1) in item.signList" :key="index1">{{item1.signName}}</el-tag>
|
||||||
<el-tag class="ml-4" size="small" type="info" effect="plain"
|
<el-tag class="ml-4" size="small" type="info" effect="plain"
|
||||||
v-for="(item2, index2) in item.unsignList" :key="index2">{{item2.signName}}</el-tag>
|
v-for="(item2, index2) in item.unsignList" :key="index2">{{item2.signName}}</el-tag> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
39
src/pages/mediation-page/components/missedCallPopover.vue
Normal file
39
src/pages/mediation-page/components/missedCallPopover.vue
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<template>
|
||||||
|
<div class="dialog-missed-call pl-16 pr-16 pt-16">
|
||||||
|
<div class="flex-row justify-content-between align-items-center pb-16 border-b-solid-lighter-1">
|
||||||
|
<div class="width70">
|
||||||
|
<div class="color-000 f-weight600 f16">
|
||||||
|
张三 134****9400
|
||||||
|
</div>
|
||||||
|
<!-- <div class="f12">预约时间:{{ this.$util.formatDate(videoReminderData.bookingTime, 'YYYY-MM-DD HH:mm:ss') }}</div>-->
|
||||||
|
<div class="f12">来电时间:2024-11-29 21:15:05</div>
|
||||||
|
</div>
|
||||||
|
<el-button size="small" type="primary" @click="viewCase">查看</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "missedCallPopover",
|
||||||
|
props: {
|
||||||
|
missedCallList: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {
|
||||||
|
return {}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
viewCase() {
|
||||||
|
this.$router.push(`/mediation-page?sourcePage=sourcePage&caseId=${this.videoReminderData.caseId}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.dialog-missed-call{
|
||||||
|
width: 395px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
38
src/pages/mediation-page/components/videoReminderPopover.vue
Normal file
38
src/pages/mediation-page/components/videoReminderPopover.vue
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<template>
|
||||||
|
<div class="dialog-video-reminder pl-16 pr-16 pt-16">
|
||||||
|
<div class="flex-row justify-content-between align-items-center pb-16">
|
||||||
|
<div class="width70">
|
||||||
|
<div class="color-000 f-weight600 f16">
|
||||||
|
{{videoReminderData.content}}即将要开始了
|
||||||
|
</div>
|
||||||
|
<div class="f12">预约时间:{{ this.$util.formatDate(videoReminderData.bookingTime, 'YYYY-MM-DD HH:mm:ss') }}</div>
|
||||||
|
</div>
|
||||||
|
<el-button size="small" type="primary" @click="viewCase">查看案件</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "videoReminderPopover",
|
||||||
|
props: {
|
||||||
|
videoReminderData: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {
|
||||||
|
return {}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
viewCase() {
|
||||||
|
this.$router.push(`/mediation-page?sourcePage=sourcePage&caseId=${this.videoReminderData.caseId}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.dialog-video-reminder{
|
||||||
|
width: 395px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -1,90 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<!-- table -->
|
|
||||||
<div class="pt-8">
|
|
||||||
<div class="height-56 flex-row align-items-center justify-content-between">
|
|
||||||
<div class="f18 color-text-primary">电话呼叫列表</div>
|
|
||||||
<div class="flex-row">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="case-table">
|
|
||||||
<el-table :data="tableData" height="370" >
|
|
||||||
<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="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="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 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";
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
eventTraDialog: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
|
|
||||||
queryParam:{},
|
|
||||||
tableData:[],
|
|
||||||
total:0,
|
|
||||||
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
console.log(this.eventTraDialog,'eventTraDialog')
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
|
|
||||||
handleClose() {
|
|
||||||
this.$emit('update:eventTraDialog', null)
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.dialog-trace{
|
|
||||||
padding: 16px 20px;
|
|
||||||
max-height:500px
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
@ -1,179 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<el-dialog :visible="true" width="1300px" class="dialog-case-record" append-to-body :close-on-click-modal="false"
|
|
||||||
@close="handleClose()">
|
|
||||||
|
|
||||||
<div class="dialog-content dialog-case-trace">
|
|
||||||
<el-tabs class="zd-el-tabs-custom zd-el-tabs-custom__left_padding" v-model="activeName" @tab-click="handleTabClick">
|
|
||||||
<el-tab-pane name="1">
|
|
||||||
<span slot="label"><span>短信发送记录</span></span>
|
|
||||||
</el-tab-pane>
|
|
||||||
<el-tab-pane name="2">
|
|
||||||
<span slot="label"><span>电话呼叫记录</span></span>
|
|
||||||
</el-tab-pane>
|
|
||||||
<el-tab-pane name="3">
|
|
||||||
<span slot="label"><span>视频调解记录</span></span>
|
|
||||||
</el-tab-pane>
|
|
||||||
<el-tab-pane name="4">
|
|
||||||
<span slot="label"><span>文书生成记录</span></span>
|
|
||||||
</el-tab-pane>
|
|
||||||
<el-tab-pane name="5">
|
|
||||||
<span slot="label"><span>文书签字记录</span></span>
|
|
||||||
</el-tab-pane>
|
|
||||||
<el-tab-pane name="6">
|
|
||||||
<span slot="label"><span>文书送达记录</span></span>
|
|
||||||
</el-tab-pane>
|
|
||||||
<el-tab-pane name="7">
|
|
||||||
<span slot="label"><span>还款计划</span></span>
|
|
||||||
</el-tab-pane>
|
|
||||||
<el-tab-pane name="8">
|
|
||||||
<span slot="label"><span>还款凭证</span></span>
|
|
||||||
</el-tab-pane>
|
|
||||||
</el-tabs>
|
|
||||||
|
|
||||||
<div class=" case-trace-cont">
|
|
||||||
<!-- 短信发送追踪明细 -->
|
|
||||||
<smsDialogDetail v-if="activeName == '1'" :DialogDetail="eventTraDialog" />
|
|
||||||
<!-- 呼叫记录 -->
|
|
||||||
<CalllogDialog v-if="activeName == '2'" :eventTraDialog.sync="eventTraDialog" />
|
|
||||||
<!-- 视频调解追踪 -->
|
|
||||||
<voideDialog v-if="activeName == '3'" :eventTraDialog="eventTraDialog" />
|
|
||||||
<!-- 文书生成追踪明细 -->
|
|
||||||
<officeDialogDetail v-if="activeName == '4'" :DialogDetail="eventTraDialog" />
|
|
||||||
<!-- 文书签字追踪明细 -->
|
|
||||||
<officeWDialogDetail v-if="activeName == '5'" :DialogDetail="eventTraDialog" />
|
|
||||||
<!-- 文书送达追踪明细 -->
|
|
||||||
<officeDeliveryDialogDetail v-if="activeName == '6'" :DialogDetail="eventTraDialog" />
|
|
||||||
<!-- 还款计划 -->
|
|
||||||
<!-- <RepaymentDialog v-if="activeName == '7'" :eventTraDialog.sync="repaymentDialog" /> -->
|
|
||||||
<!-- eventDialog:{caseId:this.$route.query.caseId}, -->
|
|
||||||
<RepaymentSchedule v-if="activeName == '7'" :eventDialog.sync="eventTraDialog" class="mt-16" />
|
|
||||||
|
|
||||||
<!-- 还款凭证 -->
|
|
||||||
<RepaymentRecordDialog v-if="activeName == '8'" :eventTraDialog.sync="eventTraDialog" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<span slot="footer" class="dialog-footer">
|
|
||||||
<el-button @click="handleClose()">关闭</el-button>
|
|
||||||
</span>
|
|
||||||
</el-dialog>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import api from "@/services/caseManagement";
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
eventTracingDialog: () => import('../../event-tracing/index.vue'),//事项追踪
|
|
||||||
RepaymentSchedule: () => import('../../mediation-page/components/RepaymentSchedule.vue'),//还款计划
|
|
||||||
RepaymentRecordDialog: () => import('./RepaymentRecordDialog.vue'),//还款凭证
|
|
||||||
|
|
||||||
|
|
||||||
smsDialogDetail: () => import('../../event-tracing/dtraceDetail/smsDialogDetail.vue'),//短信发送追踪明细
|
|
||||||
CalllogDialog: () => import('./CalllogDialog.vue'),//呼叫记录
|
|
||||||
|
|
||||||
voideDialog: () => import('../../event-tracing/components/voideDialog.vue'),//视频调解追踪
|
|
||||||
|
|
||||||
smsDialogDetail: () => import('../../event-tracing/dtraceDetail/smsDialogDetail.vue'),//短信发送追踪明细
|
|
||||||
|
|
||||||
officeDeliveryDialogDetail: () => import('../../event-tracing/dtraceDetail/officeDeliveryDialogDetail.vue'),//文书送达追踪明细
|
|
||||||
officeDialogDetail: () => import('../../event-tracing/dtraceDetail/officeDialogDetail.vue'),//文书生成追踪明细
|
|
||||||
officeWDialogDetail: () => import('../../event-tracing/dtraceDetail/officeWDialogDetail.vue'),//文书签字追踪明细
|
|
||||||
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
eventTraDialog: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
calllogDialog:null,//呼叫记录
|
|
||||||
activeName:'1',
|
|
||||||
queryParam:{},
|
|
||||||
tableData:[],
|
|
||||||
total:0,
|
|
||||||
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
this.activeName = this.eventTraDialog.activeName
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// tab切换
|
|
||||||
handleTabClick(tab){
|
|
||||||
if(tab.name == '1'){
|
|
||||||
eventTraDialog = {caseNo:'123'}
|
|
||||||
}else if(tab.name == '2'){
|
|
||||||
calllogDialog = {title:'电话呼叫记录',caseNo:'123'}
|
|
||||||
}else if(tab.name == '3'){
|
|
||||||
eventTraDialog = {title:'视频调解记录',caseNo:'123'}
|
|
||||||
}else if(tab.name == '4'){
|
|
||||||
eventTraDialog = {title:'文书生成记录',caseNo:'123'}
|
|
||||||
}else if(tab.name == '5'){
|
|
||||||
eventTraDialog = {title:'文书签字记录',caseNo:'123'}
|
|
||||||
}else if(tab.name == '6'){
|
|
||||||
eventTraDialog = {title:'文书送达记录',caseNo:'123'}
|
|
||||||
}else if(tab.name == '7'){
|
|
||||||
repaymentDialog = {title:'还款计划',caseNo:'123'}
|
|
||||||
}else if(tab.name == '8'){
|
|
||||||
eventTraDialog = {title:'还款凭证',caseNo:'123'}
|
|
||||||
}else {
|
|
||||||
|
|
||||||
}
|
|
||||||
// this.getCaseInfoList(1)
|
|
||||||
},
|
|
||||||
handleClose() {
|
|
||||||
this.$emit('update:eventTraDialog', null)
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.dialog-case-record{
|
|
||||||
.el-dialog .el-dialog__header{background-color: #C66A5B;}
|
|
||||||
.el-dialog__header{background-color: #C66A5B;}
|
|
||||||
}
|
|
||||||
.dialog-case-trace{
|
|
||||||
padding: 16px 20px;
|
|
||||||
min-height:500px
|
|
||||||
}
|
|
||||||
.dialog-case-trace .zd-el-tabs-custom{
|
|
||||||
margin-top: -61px ;
|
|
||||||
margin-right: 25px;
|
|
||||||
}
|
|
||||||
.dialog-case-trace .zd-el-tabs-custom span{
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: 400;
|
|
||||||
|
|
||||||
}
|
|
||||||
.dialog-case-trace .case-trace-cont
|
|
||||||
{
|
|
||||||
min-height: 500px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<style lang="scss">
|
|
||||||
.dialog-case-record{
|
|
||||||
.el-dialog .el-dialog__header {
|
|
||||||
background-color: #C66A5B;
|
|
||||||
height: 43px !important;
|
|
||||||
line-height: 50px !important;
|
|
||||||
}
|
|
||||||
.el-tabs__item{color: #FFFFFFB2;}
|
|
||||||
.zd-el-tabs-custom .el-tabs__item.is-active {
|
|
||||||
color: #fff !important;
|
|
||||||
}
|
|
||||||
.zd-el-tabs-custom .el-tabs__active-bar{
|
|
||||||
background-color: #fff !important;
|
|
||||||
}
|
|
||||||
.el-tabs__nav-wrap::after {
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
.el-dialog__headerbtn .el-dialog__close{
|
|
||||||
color: #fff !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
@ -1,93 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<!-- table -->
|
|
||||||
<div class="pt-8">
|
|
||||||
<div class="height-56 flex-row align-items-center justify-content-between">
|
|
||||||
<div class="f18 color-text-primary">还款凭证列表</div>
|
|
||||||
<div class="flex-row">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="case-table">
|
|
||||||
<el-table :data="tableData" height="390" >
|
|
||||||
<el-table-column prop="amount" label="凭证金额" show-overflow-tooltip >
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<span >{{ scope.row.amount }}(元)</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="paybackTime" 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="createAt" label="操作时间" show-overflow-tooltip >
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<span >{{ scope.row.createAt | formaDate("yyyy-MM-dd hh:mm:ss") }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="操作" width="170">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<div class="flex-row align-items-center">
|
|
||||||
<el-button size="mini" @click="handleCaseShow(scope)">查看凭证</el-button>
|
|
||||||
<el-button size="mini" @click="handleBackCase(scope)">效验</el-button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
|
|
||||||
</el-table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 文件预览 -->
|
|
||||||
<showFile v-if="fileDialog" :fileDialog.sync="fileDialog" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import api from "@/services/caseManagement";
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
showFile: () => import('../../../components/showFile.vue'),//事项追踪
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
eventTraDialog: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
fileDialog:null,
|
|
||||||
queryParam:{},
|
|
||||||
tableData:[],
|
|
||||||
total:0,
|
|
||||||
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
console.log(this.eventTraDialog,'this.eventTraDialog')
|
|
||||||
this.getProofList()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
getProofList(){
|
|
||||||
api.gettraceProof_list({caseId:this.eventTraDialog.caseId}).then(res => {
|
|
||||||
if(!res.code){
|
|
||||||
this.tableData = res
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleCaseShow(scope){
|
|
||||||
this.fileDialog = {showfile:{url:scope.row.proofUrl},filelist:[]}
|
|
||||||
},
|
|
||||||
handleClose() {
|
|
||||||
this.$emit('update:eventTraDialog', null)
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.dialog-trace{
|
|
||||||
padding: 16px 20px;
|
|
||||||
max-height:500px
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
@ -1,750 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<el-dialog
|
|
||||||
:title="addCaseDialog.title"
|
|
||||||
:visible="true"
|
|
||||||
width="880px"
|
|
||||||
append-to-body
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
@close="handleClose"
|
|
||||||
>
|
|
||||||
|
|
||||||
<div >
|
|
||||||
|
|
||||||
<el-steps :active="presentStep" align-center>
|
|
||||||
<el-step v-for="(item,inx) in transferStep" :key="inx" :title="item.title" :description="item.description"></el-step>
|
|
||||||
</el-steps>
|
|
||||||
|
|
||||||
<!-- 基本信息 -->
|
|
||||||
<div v-if="presentStep === 1">
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">基本信息</div>
|
|
||||||
<div class="p-h-24">
|
|
||||||
<el-form ref="ruleFormBase"
|
|
||||||
:model="baseInfo"
|
|
||||||
:rules="rulesClient"
|
|
||||||
label-width="150px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="金融机构名称" prop="financialOrgName">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="baseInfo.financialOrgName"
|
|
||||||
placeholder="请输入金融机构名称"
|
|
||||||
clearable
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="社会统一信用代码" prop="financialOrgCode">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="baseInfo.financialOrgCode"
|
|
||||||
placeholder="请输入社会统一信用代码"
|
|
||||||
clearable
|
|
||||||
maxlength="18"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="案件名称" prop="caseName">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入案件名称"
|
|
||||||
v-model="baseInfo.caseName">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="案件编号" prop="caseNo">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入案件编号"
|
|
||||||
v-model="baseInfo.caseNo">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="金融产品类型" prop="productTypeId">
|
|
||||||
<el-select v-model="baseInfo.productTypeId"
|
|
||||||
clearable placeholder="请选择金融产品类型"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in financialProductsTypeOptions"
|
|
||||||
:key="item.code"
|
|
||||||
:label="item.codeName"
|
|
||||||
:value="item.code">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="标的金额" prop="moneyAmount">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入内容"
|
|
||||||
v-model="baseInfo.moneyAmount">
|
|
||||||
<template slot="append">元</template>
|
|
||||||
</el-input>
|
|
||||||
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="逾期次数" prop="overdueTimes">
|
|
||||||
<!-- <el-select v-model="baseInfo.overdueTimes"
|
|
||||||
clearable placeholder="请选择逾期次数"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in operateMethodOptions"
|
|
||||||
:key="item"
|
|
||||||
:label="item"
|
|
||||||
:value="item">
|
|
||||||
</el-option>
|
|
||||||
</el-select> -->
|
|
||||||
<el-input-number v-model="baseInfo.overdueTimes" :min="0" :max="100" class="width100"></el-input-number>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="案件描述" prop="caseDescr">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入内容"
|
|
||||||
v-model="baseInfo.caseDescr">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 当事人信息 -->
|
|
||||||
<div v-else-if="presentStep === 2">
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">案件当事人</div>
|
|
||||||
<div class="p-h-24">
|
|
||||||
<div class="border-solid-lighter-1 p-h-24 mb-16">
|
|
||||||
<div class="flex-row justify-content-between height-48 line-height-48 f14 border-b-solid-lighter-1 mb-16">
|
|
||||||
<div class="color-000">债权人</div>
|
|
||||||
<div class="color-text-regular cursor-pointer" @click="handleReset">清空<i class="el-icon-close"></i></div>
|
|
||||||
</div>
|
|
||||||
<el-form ref="ruleFormCreditor"
|
|
||||||
:model="creditorInfo"
|
|
||||||
:rules="rulesClientCreditor"
|
|
||||||
label-width="150px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="债权人" prop="creditorName">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="creditorInfo.creditorName"
|
|
||||||
placeholder="请输入债权人"
|
|
||||||
clearable
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="社会统一信用代码" prop="creditorOrgCode">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="creditorInfo.creditorOrgCode"
|
|
||||||
placeholder="请输入社会统一信用代码"
|
|
||||||
clearable
|
|
||||||
maxlength="18"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="法人姓名" prop="creditorLegal">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入法人姓名"
|
|
||||||
v-model="creditorInfo.creditorLegal">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="法人身份证号" prop="creditorIdcard">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入法人身份证号"
|
|
||||||
v-model="creditorInfo.creditorIdcard"
|
|
||||||
maxlength="18">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="法人手机号" prop="creditorPhone">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入法人手机号"
|
|
||||||
v-model="creditorInfo.creditorPhone"
|
|
||||||
maxlength="11"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="公司地址" prop="creditorAddr">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入公司地址"
|
|
||||||
v-model="creditorInfo.creditorAddr">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="邮编" prop="creditorMail">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入邮编"
|
|
||||||
v-model="creditorInfo.creditorMail"
|
|
||||||
maxlength="6"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="代理人" prop="creditorAgent">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入代理人"
|
|
||||||
v-model="creditorInfo.creditorAgent">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
<div class="border-solid-lighter-1 p-h-24">
|
|
||||||
<div class="flex-row justify-content-between f14 border-b-solid-lighter-1 mb-8 p-v-8 align-items-center">
|
|
||||||
<div class="color-000">债务人</div>
|
|
||||||
<el-button size="small" type="primary" @click="handleAdd">新增债务人<i class="el-icon-plus"></i></el-button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<el-form ref="ruleFormObligor"
|
|
||||||
:model="obligorInfoForm"
|
|
||||||
label-width="150px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<div v-for="(item,inx) in obligorInfoForm.debtorEntityList" :key="inx">
|
|
||||||
<div class="flex-row justify-content-between align-items-center height-40 f14 mb-16">
|
|
||||||
<div class="color-text-primary">债务人{{inx+1}}</div>
|
|
||||||
<div class="color-text-regular cursor-pointer" @click="handleRemoveDomain(item)">删除<i class="el-icon-close"></i></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="债务人姓名" :prop="'debtorEntityList.' + inx + '.name'" :rules="{required: true, message: '请输入债权人姓名', trigger: 'blur'}">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="obligorInfoForm.debtorEntityList[inx].name"
|
|
||||||
placeholder="请输入债务人姓名"
|
|
||||||
clearable
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="证件类型" :prop="'debtorEntityList.' + inx + '.cardTypeId'" :rules="{required: true, message: '请选择证件类型', trigger: 'blur'}">
|
|
||||||
<el-select v-model="obligorInfoForm.debtorEntityList[inx].cardTypeId"
|
|
||||||
clearable placeholder="请选择证件类型"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in idTypeOptions"
|
|
||||||
:key="item.code"
|
|
||||||
:label="item.codeName"
|
|
||||||
:value="item.code">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="证件号码" :prop="'debtorEntityList.' + inx + '.cardNo'"
|
|
||||||
:rules=" [
|
|
||||||
{ 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']}
|
|
||||||
]">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入证件号码"
|
|
||||||
v-model="obligorInfoForm.debtorEntityList[inx].cardNo"
|
|
||||||
maxlength="18"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="手机号码" :prop="'debtorEntityList.' + inx + '.phone'" :rules="[
|
|
||||||
{ required: true, message: '请输入法人手机号', trigger: 'change',},
|
|
||||||
{ pattern: /^(13[0-9]{9})|(18[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})|(19[0-9]{9})$/, message: '请输入正确的手机号码', trigger: ['blur', 'change']}
|
|
||||||
]">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入手机号码"
|
|
||||||
v-model="obligorInfoForm.debtorEntityList[inx].phone"
|
|
||||||
maxlength="11"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="地址" :prop="'debtorEntityList.' + inx + '.addr'" :rules="{ required: true, message: '请输入地址', trigger: 'change',}">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入地址"
|
|
||||||
v-model="obligorInfoForm.debtorEntityList[inx].addr">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="邮编" :prop="'debtorEntityList.' + inx + '.mail'" :rules="{ required: true, message: '请输入邮编', trigger: 'change',}">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入邮编"
|
|
||||||
v-model="obligorInfoForm.debtorEntityList[inx].mail"
|
|
||||||
maxlength="6">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 模板选择 -->
|
|
||||||
<div v-else-if="presentStep === 3">
|
|
||||||
|
|
||||||
<el-form ref="ruleFormTemplate"
|
|
||||||
:model="queryParam"
|
|
||||||
:rules="rulesClientTemplate"
|
|
||||||
label-width="150px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<div>
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">模板话术</div>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="话术模板" prop="tpSpeechcraftId">
|
|
||||||
<el-select v-model="queryParam.tpSpeechcraftId"
|
|
||||||
clearable placeholder="请选择模板话术"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in speechcraftTemplateOptions"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">调解模板</div>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="调解模板" prop="tpMediateId">
|
|
||||||
<el-select v-model="queryParam.tpMediateId"
|
|
||||||
clearable placeholder="请选择调解模板"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in mediationTemplateOptions"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
</el-form>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 材料上传 -->
|
|
||||||
<div v-else-if="presentStep === 4">
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">证据材料</div>
|
|
||||||
<div class="p-h-24">
|
|
||||||
<upload-file-name :file-list="fileList" :max-count="20"
|
|
||||||
:show-file-name="true"
|
|
||||||
@handleUploadFile="handleUploadFile">
|
|
||||||
</upload-file-name>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 完成 -->
|
|
||||||
<div v-else-if="presentStep === 5">
|
|
||||||
<el-result icon="success" title="案件创建完成" subTitle="案件创建完成,继续处理其他案件">
|
|
||||||
<template slot="extra">
|
|
||||||
<el-button type="primary" size="medium" @click="handleClose">好的</el-button>
|
|
||||||
</template>
|
|
||||||
</el-result>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<span slot="footer" class="dialog-footer" v-if="presentStep<5">
|
|
||||||
<el-button @click="handleClose">取消</el-button>
|
|
||||||
<el-button
|
|
||||||
v-if="presentStep > 1 "
|
|
||||||
type="primary"
|
|
||||||
@click="presentStep--">上一步</el-button>
|
|
||||||
|
|
||||||
<el-button
|
|
||||||
type="primary"
|
|
||||||
v-show="presentStep<4"
|
|
||||||
@click="handleNextStep">下一步</el-button>
|
|
||||||
<el-button
|
|
||||||
type="primary"
|
|
||||||
v-show="presentStep === 4"
|
|
||||||
@click="handleSubmit">确认
|
|
||||||
</el-button>
|
|
||||||
</span>
|
|
||||||
</el-dialog>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import api from "@/services/caseManagement";
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
uploadFileName: () => import('@/components/uploadFileName.vue'),//上传
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
addCaseDialog: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
const moneyAmountValidate = (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('只能输入两位小数的金额!'));
|
|
||||||
}else if(!(0<parseInt(value)&&parseInt(value)<100000000)){
|
|
||||||
callback(new Error('只能输入大于1小于1亿的金额!'));
|
|
||||||
}else{
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return {
|
|
||||||
|
|
||||||
transferStep:[
|
|
||||||
{id:1,title:'基本信息',description:'录入案件基本信息'},
|
|
||||||
{id:2,title:'当事人信息',description:'录入当事人信息'},
|
|
||||||
{id:3,title:'模板选择',description:'选择模板'},
|
|
||||||
{id:4,title:'材料上传',description:'上传案件材料'},
|
|
||||||
{id:5,title:'完成',description:'完成案件创建'},
|
|
||||||
],
|
|
||||||
presentStep:1,
|
|
||||||
|
|
||||||
//-----------------------------基本信息-------------------------
|
|
||||||
baseInfo:{
|
|
||||||
financialOrgName:'',//金融机构名称
|
|
||||||
financialOrgCode:'',//社会统一信用代码
|
|
||||||
caseName:'',//案件名称
|
|
||||||
caseNo:'',//案件编号
|
|
||||||
productTypeId:'',//金融产品类型
|
|
||||||
moneyAmount:'',//标的金额
|
|
||||||
overdueTimes:0,//逾期次数
|
|
||||||
caseDescr:'',//案件描述
|
|
||||||
},
|
|
||||||
rulesClient: {
|
|
||||||
financialOrgName: [
|
|
||||||
{ required: true, message: '请输入机构名称', trigger: 'change',},
|
|
||||||
],
|
|
||||||
financialOrgCode: [
|
|
||||||
{ required: true, message: '请输入社会统一信用代码', trigger: 'change',},
|
|
||||||
],
|
|
||||||
caseName: [
|
|
||||||
{ required: true, message: '请输入案件名称', trigger: 'change',},
|
|
||||||
],
|
|
||||||
caseNo: [
|
|
||||||
{ required: true, message: '请输入案件编号', trigger: 'change',},
|
|
||||||
],
|
|
||||||
productTypeId: [
|
|
||||||
{ required: true, message: '请选择金融产品类型', trigger: 'change',},
|
|
||||||
],
|
|
||||||
moneyAmount: [
|
|
||||||
{ required: true, validator: moneyAmountValidate, trigger: 'change',},
|
|
||||||
],
|
|
||||||
caseDescr:[
|
|
||||||
{ required: true, message: '请输入案件描述', trigger: 'change',},
|
|
||||||
]
|
|
||||||
},
|
|
||||||
financialProductsTypeOptions:[],//金融产品类型
|
|
||||||
|
|
||||||
//----------------------------案件当事人-------------------
|
|
||||||
// 债权人
|
|
||||||
creditorInfo:{
|
|
||||||
creditorName:'',//债权人
|
|
||||||
creditorOrgCode:'',//债权人机构代码
|
|
||||||
creditorLegal:'',//法人
|
|
||||||
creditorIdcard:'',//法人身份证
|
|
||||||
creditorPhone:'',//法人手机
|
|
||||||
creditorAddr:'',//公司地址
|
|
||||||
creditorMail:'',//邮编
|
|
||||||
creditorAgent:'',//代理人
|
|
||||||
},
|
|
||||||
rulesClientCreditor: {
|
|
||||||
creditorName: [
|
|
||||||
{ required: true, message: '请输入债权人', trigger: 'change',},
|
|
||||||
],
|
|
||||||
creditorOrgCode: [
|
|
||||||
{ required: true, message: '请输入债权人机构代码', trigger: 'change',},
|
|
||||||
],
|
|
||||||
creditorLegal: [
|
|
||||||
{ required: true, message: '请输入法人', trigger: 'change',},
|
|
||||||
],
|
|
||||||
creditorIdcard: [
|
|
||||||
{ 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']}
|
|
||||||
],
|
|
||||||
creditorPhone: [
|
|
||||||
{ required: true, message: '请输入法人手机号', trigger: 'change',},
|
|
||||||
{ pattern: /^(13[0-9]{9})|(18[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})|(19[0-9]{9})$/, message: '请输入正确的手机号码', trigger: ['blur', 'change']}
|
|
||||||
],
|
|
||||||
creditorAddr: [
|
|
||||||
{ required: true, message: '请输入公司地址', trigger: 'change',},
|
|
||||||
],
|
|
||||||
// creditorAgent: [
|
|
||||||
// { required: true, message: '请输入代理人', trigger: 'change',},
|
|
||||||
// ],
|
|
||||||
},
|
|
||||||
// 债务人
|
|
||||||
idTypeOptions:[],
|
|
||||||
obligorInfoForm:{
|
|
||||||
debtorEntityList:[
|
|
||||||
{
|
|
||||||
name:'',//债务人姓名
|
|
||||||
phone:'',//债务人电话
|
|
||||||
cardTypeId:'',//证件类型
|
|
||||||
addr:'',//地址
|
|
||||||
cardNo:'',//证件号
|
|
||||||
mail:'',//邮编
|
|
||||||
|
|
||||||
}
|
|
||||||
],
|
|
||||||
},
|
|
||||||
|
|
||||||
obligorRulesClient:{
|
|
||||||
name: [
|
|
||||||
{ required: true, message: '请输入债务人姓名', trigger: 'change',},
|
|
||||||
],
|
|
||||||
phone: [
|
|
||||||
{ required: true, message: '请输入法人手机号', trigger: 'change',},
|
|
||||||
{ pattern: /^(13[0-9]{9})|(18[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})|(19[0-9]{9})$/, message: '请输入正确的手机号码', trigger: ['blur', 'change']}
|
|
||||||
],
|
|
||||||
cardTypeId: [
|
|
||||||
{ required: true, message: '请选择证件类型', trigger: 'change',},
|
|
||||||
],
|
|
||||||
addr: [
|
|
||||||
{ required: true, message: '请输入地址', trigger: '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']}
|
|
||||||
],
|
|
||||||
mail: [
|
|
||||||
{ required: true, message: '请输入邮编', trigger: 'change',},
|
|
||||||
{ pattern: /^\d{6}$/, message: '请输入正确的邮编', trigger: ['blur', 'change']}
|
|
||||||
],
|
|
||||||
},
|
|
||||||
|
|
||||||
//--------------------------调解模板----------------------------------
|
|
||||||
queryParam:{
|
|
||||||
tpMediateId:'',//调解模板id
|
|
||||||
tpSpeechcraftId:'',//话术模板
|
|
||||||
},
|
|
||||||
rulesClientTemplate:{
|
|
||||||
tpMediateId: [
|
|
||||||
{ required: true, message: '请选择调解模板', trigger: 'change',},
|
|
||||||
],
|
|
||||||
tpSpeechcraftId: [
|
|
||||||
{ required: true, message: '请选择话术模板', trigger: 'change',},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
fileList:[],//证据材料
|
|
||||||
speechcraftTemplateOptions:[],//话术模板
|
|
||||||
mediationTemplateOptions:[],//调解模板
|
|
||||||
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
this.getDict();//获取金融产品类型
|
|
||||||
this.getDictIdType();
|
|
||||||
this.getSpeechcraftTemplateList(),//话术模板
|
|
||||||
this.getTemplateList();//调解模板
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
|
|
||||||
// 获取金融产品类型
|
|
||||||
getDict(){
|
|
||||||
let data = {
|
|
||||||
type:'financial'
|
|
||||||
}
|
|
||||||
api.getDict(data).then(res => {
|
|
||||||
if (!res.code) {
|
|
||||||
this.financialProductsTypeOptions = res;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 获取证件类型
|
|
||||||
getDictIdType(){
|
|
||||||
let data = {
|
|
||||||
type:'certificates'
|
|
||||||
}
|
|
||||||
api.getDict(data).then(res => {
|
|
||||||
if (!res.code) {
|
|
||||||
this.idTypeOptions = res;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 新增
|
|
||||||
handleAdd(){
|
|
||||||
this.obligorInfoForm.debtorEntityList.push({
|
|
||||||
name:'',//债务人姓名
|
|
||||||
phone:'',//债务人电话
|
|
||||||
cardTypeId:'',//证件类型
|
|
||||||
addr:'',//地址
|
|
||||||
cardNo:'',//证件号
|
|
||||||
mail:'',//邮编
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 删除
|
|
||||||
handleRemoveDomain(item) {
|
|
||||||
var index = this.obligorInfoForm.debtorEntityList.indexOf(item)
|
|
||||||
if (index !== -1) {
|
|
||||||
this.obligorInfoForm.debtorEntityList.splice(index, 1)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 清空
|
|
||||||
handleReset(){
|
|
||||||
for (let key in this.creditorInfo) {
|
|
||||||
this.creditorInfo[key] = ''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 模板话术
|
|
||||||
getSpeechcraftTemplateList(){
|
|
||||||
let data = {
|
|
||||||
current: 1,
|
|
||||||
name: "",
|
|
||||||
size: 300,
|
|
||||||
type: 2,
|
|
||||||
}
|
|
||||||
api.getTemplateList(data).then(res => {
|
|
||||||
if (!res.code) {
|
|
||||||
this.speechcraftTemplateOptions = res.records;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 调解模板
|
|
||||||
getTemplateList(){
|
|
||||||
let data = {
|
|
||||||
current: 1,
|
|
||||||
name: "",
|
|
||||||
size: 300,
|
|
||||||
type: 1,
|
|
||||||
}
|
|
||||||
api.getTemplateList(data).then(res => {
|
|
||||||
if (!res.code) {
|
|
||||||
this.mediationTemplateOptions = res.records;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
// 下一步
|
|
||||||
handleNextStep(){
|
|
||||||
if(this.presentStep === 1){
|
|
||||||
this.$refs.ruleFormBase.validate((valid) => {
|
|
||||||
if (valid){this.presentStep++}
|
|
||||||
})
|
|
||||||
}else if(this.presentStep === 2){
|
|
||||||
this.$refs.ruleFormCreditor.validate((valid) => {
|
|
||||||
if (valid){
|
|
||||||
this.$refs.ruleFormObligor.validate((valid) => {
|
|
||||||
if (valid){this.presentStep++}
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}else if(this.presentStep === 3){
|
|
||||||
this.$refs.ruleFormTemplate.validate((valid) => {
|
|
||||||
if (valid){this.presentStep++}
|
|
||||||
})
|
|
||||||
}else{
|
|
||||||
this.presentStep++
|
|
||||||
}
|
|
||||||
},
|
|
||||||
handleSubmit(){
|
|
||||||
|
|
||||||
if(!this.$clickThrottle()) { return }//防止重复点击
|
|
||||||
|
|
||||||
let data = {
|
|
||||||
...this.baseInfo,//基本信息
|
|
||||||
...this.creditorInfo,//债权人信息
|
|
||||||
...this.obligorInfoForm,//债务人
|
|
||||||
...this.queryParam,//模板选择
|
|
||||||
caseFileEntityList:this.fileList//证据材料
|
|
||||||
}
|
|
||||||
console.log('获取传给后台的信息',data)
|
|
||||||
api.addCaseInfo(data).then(res => {
|
|
||||||
this.presentStep++
|
|
||||||
this.$parent.getCaseInfoList(1)
|
|
||||||
this.$parent.getCaseCount()
|
|
||||||
})
|
|
||||||
|
|
||||||
},
|
|
||||||
// 上传
|
|
||||||
handleUploadFile(fileList){
|
|
||||||
console.log('获取上传文件信息',fileList)
|
|
||||||
fileList = JSON.parse(JSON.stringify(fileList))
|
|
||||||
this.fileList = fileList.map((item,i) => {
|
|
||||||
return {
|
|
||||||
url: item.url,
|
|
||||||
fileName:item.fileName,
|
|
||||||
name:item.fileName
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleClose() {
|
|
||||||
this.$emit('update:addCaseDialog', null)
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.dialog-content{
|
|
||||||
padding: 16px 24px;
|
|
||||||
// max-height:500px
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
@ -1,393 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<el-dialog
|
|
||||||
:title="caseAllocationDialog.title"
|
|
||||||
:visible="true"
|
|
||||||
width="880px"
|
|
||||||
append-to-body
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
@close="handleClose"
|
|
||||||
>
|
|
||||||
|
|
||||||
<div class="dialog-content">
|
|
||||||
<div class="pb-16">
|
|
||||||
<el-row :gutter="20" type="flex" align="middle">
|
|
||||||
<el-col :span="24">
|
|
||||||
|
|
||||||
<div class="flex-row align-items-center">
|
|
||||||
<div class="mr-8 flex-shrink-0">区域</div>
|
|
||||||
<div class="width100">
|
|
||||||
<el-select v-model="deptId"
|
|
||||||
size="medium"
|
|
||||||
clearable placeholder="请选择区域"
|
|
||||||
@change="handleChangeDept"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in departmentOptions"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id"
|
|
||||||
class="width100"
|
|
||||||
>
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
<el-scrollbar class="bor bg-color-light min-height350">
|
|
||||||
<div class="department-wrap">
|
|
||||||
<div v-for="(item,inx) in peopleList" :key="inx" class="department-wrap-list">
|
|
||||||
<div class="department-dept">
|
|
||||||
<el-checkbox v-model="checkedAll" :label="item.deptId" @change="handleCheckChange(1,inx,item,item.deptId,$event)">{{item.name}}({{item.count}}人)</el-checkbox>
|
|
||||||
</div>
|
|
||||||
<div class="flex-row justify-content-start flex-flow-wrap ">
|
|
||||||
<div v-for="(v,i) in item.values" :key="i" class="pt-16" style="flex:0 0 25%">
|
|
||||||
<el-checkbox v-model="checkedAll" :label="v.id" @change="handleCheckChange(2,inx,v,item.deptId,$event)">{{v.realName}}</el-checkbox>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-scrollbar>
|
|
||||||
<div class="p-v-24">
|
|
||||||
<el-form ref="ruleForm"
|
|
||||||
:model="queryParam"
|
|
||||||
:rules="rulesClient"
|
|
||||||
label-width="120px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<el-row :gutter="20" type="flex" align="middle">
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="分配方式" prop="dispatchType" label-width="80px">
|
|
||||||
<template>
|
|
||||||
<el-radio v-model="queryParam.dispatchType" :label="1">平均分配</el-radio>
|
|
||||||
<el-radio v-model="queryParam.dispatchType" :label="2">调解中案件量最少</el-radio>
|
|
||||||
<el-radio v-model="queryParam.dispatchType" :label="3">当天分案量最少</el-radio>
|
|
||||||
<el-radio v-model="queryParam.dispatchType" :label="4">当月分案量最少</el-radio>
|
|
||||||
<el-radio v-model="queryParam.dispatchType" :label="5">同案由调解成功率最高</el-radio>
|
|
||||||
</template>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
|
|
||||||
</el-row>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</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";
|
|
||||||
import apipack from "@/services/casePackageManagement";
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
caseAllocationDialog: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
deptId:[],//获取区域id集合
|
|
||||||
queryParam:{
|
|
||||||
id:'',//案件包ID
|
|
||||||
dispatchType:1,//分案方式;1,平均分配;2,调解中案件量最少;3,当天分案量最少;4,当月分案量最少;5,同案由调解成功率最高
|
|
||||||
},
|
|
||||||
userList:[],
|
|
||||||
rulesClient: {
|
|
||||||
dispatchType: [
|
|
||||||
{ required: true, message: '请选择分案方式', trigger: 'change',},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
peopleList:[
|
|
||||||
{deptId:1,name:'调解一部',count:10,
|
|
||||||
values:[
|
|
||||||
{id:1,deptId:1,realName:'张三' },
|
|
||||||
{id:2,deptId:1,realName:'张三' },
|
|
||||||
{id:3,deptId:1,realName:'张三' },
|
|
||||||
{id:4,deptId:1,realName:'张三' },
|
|
||||||
{id:5,deptId:1,realName:'里面' },
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
departmentOptions:[],//区域
|
|
||||||
checkedAll:[],
|
|
||||||
chooseChecked:[],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
// console.log(this.caseAllocationDialog.choosecaseIds,'choosecaseIds')
|
|
||||||
this.getDeptList();//获取区域
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 获取区域
|
|
||||||
getDeptList(){
|
|
||||||
let data = {
|
|
||||||
companyId: this.$store.state.userinfo.companyId,
|
|
||||||
current: 1,
|
|
||||||
size: 500,
|
|
||||||
pid:0
|
|
||||||
}
|
|
||||||
api.getDeptList(data).then(res => {
|
|
||||||
if (!res.code) {
|
|
||||||
this.departmentOptions = res.records;
|
|
||||||
this.deptId = this.departmentOptions[0].id
|
|
||||||
this.getByDeptList()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleChangeDept(e){
|
|
||||||
this.checkedAll=[]
|
|
||||||
this.chooseChecked=[]
|
|
||||||
this.getByDeptList()
|
|
||||||
this.peopleList=[]
|
|
||||||
|
|
||||||
},
|
|
||||||
// 根据区域id列表查看用户列表
|
|
||||||
getByDeptList(){
|
|
||||||
api.getDeptList({companyId:this.$store.state.userinfo.companyId,current:1,size:500,pid:this.deptId}).then(res => {
|
|
||||||
if (!res.code)
|
|
||||||
{
|
|
||||||
let deptList = []
|
|
||||||
res.records.forEach(item =>{
|
|
||||||
let userlist = []
|
|
||||||
api.getUserByDeptList({ids:[item.id]}).then(res => {
|
|
||||||
|
|
||||||
res.forEach(item =>{
|
|
||||||
userlist.push({
|
|
||||||
id:item.id,
|
|
||||||
realName:item.realName,
|
|
||||||
checked:false
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
deptList.push({
|
|
||||||
deptId:item.id,
|
|
||||||
name:item.name,
|
|
||||||
count:item.count,
|
|
||||||
checked:false,
|
|
||||||
values:userlist
|
|
||||||
})
|
|
||||||
})
|
|
||||||
this.peopleList = deptList
|
|
||||||
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleCheckChange(type,a=0,chooseItem,deptId,event){
|
|
||||||
// console.log(chooseItem,event,a,'this.peopleList')
|
|
||||||
let self = this
|
|
||||||
if(type==2){//二级菜单
|
|
||||||
let index = 0;
|
|
||||||
self.peopleList[a].values.map((item)=>{
|
|
||||||
if(self.checkedAll.indexOf(item.id)>-1){
|
|
||||||
index+=1
|
|
||||||
}
|
|
||||||
})
|
|
||||||
if(index>0){
|
|
||||||
if(self.checkedAll.indexOf(self.peopleList[a].deptId)<0){
|
|
||||||
self.checkedAll.push(self.peopleList[a].deptId)
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
if(self.checkedAll.indexOf(self.peopleList[a].deptId)>0){
|
|
||||||
self.checkedAll.splice(self.checkedAll.indexOf(self.peopleList[a].deptId),1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(event)
|
|
||||||
{
|
|
||||||
if(this.chooseChecked.length==0){self.chooseChecked.push({deptId:deptId,child:[]})}
|
|
||||||
this.chooseChecked.forEach((item,index) => {
|
|
||||||
let haveDeptId = self.chooseChecked.find(citem=>{
|
|
||||||
return citem.deptId===deptId
|
|
||||||
})
|
|
||||||
if(haveDeptId != undefined)
|
|
||||||
{
|
|
||||||
if(item.deptId==deptId)
|
|
||||||
{
|
|
||||||
item.child.push({deptId:deptId,id:chooseItem.id,realName:chooseItem.realName})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
self.chooseChecked.push({deptId:deptId,child:[{deptId:deptId,id:chooseItem.id,realName:chooseItem.realName}]})
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.chooseChecked.forEach((item,index) => {
|
|
||||||
item.child.forEach((itemchild,index) => {
|
|
||||||
if(itemchild.id==chooseItem.id)
|
|
||||||
{
|
|
||||||
item.child.splice(index,1)
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
let childnum = this.chooseChecked.find(item=>{
|
|
||||||
return item.deptId === deptId
|
|
||||||
}).child.length;
|
|
||||||
|
|
||||||
let allchildnum = this.peopleList.find(item=>{
|
|
||||||
return item.deptId === deptId
|
|
||||||
}).values.length;
|
|
||||||
if(childnum != allchildnum)
|
|
||||||
{
|
|
||||||
if(self.checkedAll.indexOf(deptId)>-1){
|
|
||||||
self.checkedAll.splice(self.checkedAll.indexOf(deptId),1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(self.checkedAll.indexOf(deptId)<0){
|
|
||||||
self.checkedAll.push(deptId)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}else{
|
|
||||||
if(self.checkedAll.indexOf(self.peopleList[a].deptId)>-1){
|
|
||||||
self.peopleList[a].values.map((item)=>{
|
|
||||||
if(self.checkedAll.findIndex((n)=> n==item.id)<0){
|
|
||||||
self.checkedAll.push(item.id)
|
|
||||||
// self.checkedAll.push({id:item.id,realName:item.realName,deptId:self.peopleList[a].deptId})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}else{
|
|
||||||
self.peopleList[a].values.map((item)=>{
|
|
||||||
if(self.checkedAll.findIndex((n)=> n==item.id)>-1){
|
|
||||||
self.checkedAll.splice(self.checkedAll.findIndex((n)=> n==item.id),1)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
let haveDeptId=self.chooseChecked.find(citem=>{
|
|
||||||
return citem.deptId === deptId
|
|
||||||
})
|
|
||||||
if(event)
|
|
||||||
{
|
|
||||||
if(haveDeptId == undefined)
|
|
||||||
{
|
|
||||||
let addchild=[]
|
|
||||||
self.peopleList.forEach((item,index) => {
|
|
||||||
if(item.deptId==deptId)
|
|
||||||
{
|
|
||||||
item.values.forEach((item,index) => {
|
|
||||||
addchild.push({deptId:deptId,id:item.id,realName:item.realName})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
self.chooseChecked.push({deptId:deptId,child:addchild})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(haveDeptId != undefined)
|
|
||||||
{
|
|
||||||
self.chooseChecked.forEach((item,index) => {
|
|
||||||
if(item.deptId==deptId)
|
|
||||||
{
|
|
||||||
self.chooseChecked.splice(index,1)
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// console.log(this.checkedAll,self.chooseChecked,'checkedAll')
|
|
||||||
},
|
|
||||||
|
|
||||||
handleSubmit(){
|
|
||||||
if(!this.$clickThrottle()) { return }//防止重复点击
|
|
||||||
let chooseUser=[]
|
|
||||||
this.chooseChecked.forEach((item,index) => {
|
|
||||||
item.child.forEach((item,index) => {
|
|
||||||
chooseUser.push({deptId:item.deptId,id:item.id,realName:item.realName})
|
|
||||||
});
|
|
||||||
});
|
|
||||||
if(chooseUser.length == 0)
|
|
||||||
{
|
|
||||||
this.$message({
|
|
||||||
showClose: true,
|
|
||||||
message: '请先选择调解员!',
|
|
||||||
type: 'warning'
|
|
||||||
});
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$refs.ruleForm.validate((valid) => {
|
|
||||||
if(valid) {
|
|
||||||
|
|
||||||
let data = {
|
|
||||||
id:this.caseAllocationDialog.ObjectInfo.id,
|
|
||||||
dispatchType:this.queryParam.dispatchType,
|
|
||||||
userList:chooseUser
|
|
||||||
}
|
|
||||||
|
|
||||||
apipack.postpkgdispatchCase(data).then(res => {
|
|
||||||
this.$message({
|
|
||||||
showClose: true,
|
|
||||||
message: '调解案件分配成功!',
|
|
||||||
type: 'success'
|
|
||||||
});
|
|
||||||
this.$parent.getCaseInfoList()
|
|
||||||
this.handleClose()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleSearch(){
|
|
||||||
|
|
||||||
},
|
|
||||||
handleChangeDate(){
|
|
||||||
let planStart = new Date(this.queryParam.planStartTime);
|
|
||||||
let planEnd = new Date(this.queryParam.planEndTime);
|
|
||||||
if (planEnd < planStart) {
|
|
||||||
this.$message({
|
|
||||||
showClose: true,
|
|
||||||
message: '开始日期不能大于结束日期!',
|
|
||||||
type: 'warning'
|
|
||||||
});
|
|
||||||
this.queryParam.planEndTime=''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
handleClose() {
|
|
||||||
this.$emit('update:caseAllocationDialog', null)
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</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>
|
|
||||||
@ -1,836 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-drawer
|
|
||||||
:title="editCaseDrawer.title"
|
|
||||||
:visible="true"
|
|
||||||
direction="rtl"
|
|
||||||
size="50%"
|
|
||||||
:before-close="handleClose"
|
|
||||||
>
|
|
||||||
<div class="">
|
|
||||||
<el-tabs v-model="activeName" @tab-click="handleClick" class="zd-el-tabs-custom zd-el-tabs-custom__left_padding">
|
|
||||||
<el-tab-pane label="基本信息" name="baseInfo">
|
|
||||||
<el-scrollbar class="bor">
|
|
||||||
<div class="" :style="{'height': `${drawerContentHeight}px`}">
|
|
||||||
<div>
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">基本信息</div>
|
|
||||||
<div class="p-h-24">
|
|
||||||
<el-form ref="ruleFormBase"
|
|
||||||
:model="baseInfo"
|
|
||||||
:rules="rulesClient"
|
|
||||||
label-width="150px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="金融机构名称" prop="financialOrgName">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="baseInfo.financialOrgName"
|
|
||||||
placeholder="请输入金融机构名称"
|
|
||||||
clearable
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="社会统一信用代码" prop="financialOrgCode">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="baseInfo.financialOrgCode"
|
|
||||||
placeholder="请输入社会统一信用代码"
|
|
||||||
clearable
|
|
||||||
maxlength="18"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="案件名称" prop="caseName">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入案件名称"
|
|
||||||
v-model="baseInfo.caseName" :disabled="caseStatus != 0">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="案件编号" prop="caseNo">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入案件编号"
|
|
||||||
:disabled="caseStatus != 0"
|
|
||||||
v-model="baseInfo.caseNo">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="金融产品类型" prop="productTypeId">
|
|
||||||
<el-select v-model="baseInfo.productTypeId"
|
|
||||||
clearable placeholder="请选择金融产品类型"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in financialProductsTypeOptions"
|
|
||||||
:key="item.code"
|
|
||||||
:label="item.codeName"
|
|
||||||
:value="item.code">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="标的金额" prop="moneyAmount">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入内容"
|
|
||||||
v-model="baseInfo.moneyAmount">
|
|
||||||
<template slot="append">元</template>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="逾期次数" prop="overdueTimes">
|
|
||||||
<!-- <el-select v-model="baseInfo.overdueTimes"
|
|
||||||
clearable placeholder="请选择逾期次数"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in operateMethodOptions"
|
|
||||||
:key="item"
|
|
||||||
:label="item"
|
|
||||||
:value="item">
|
|
||||||
</el-option>
|
|
||||||
</el-select> -->
|
|
||||||
<el-input-number v-model="baseInfo.overdueTimes" :min="0" :max="100" class="width100"></el-input-number>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="案件描述" prop="caseDescr">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入内容"
|
|
||||||
v-model="baseInfo.caseDescr">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-scrollbar>
|
|
||||||
</el-tab-pane>
|
|
||||||
<el-tab-pane label="案件当事人" name="caseParty">
|
|
||||||
<el-scrollbar class="bor">
|
|
||||||
<div :style="{'height': `${drawerContentHeight}px`}">
|
|
||||||
<div>
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">案件当事人</div>
|
|
||||||
<div class="p-h-24">
|
|
||||||
<div class="border-solid-lighter-1 p-h-24 mb-16">
|
|
||||||
<div class="flex-row justify-content-between height-48 line-height-48 f14 border-b-solid-lighter-1 mb-16">
|
|
||||||
<div class="color-000">债权人</div>
|
|
||||||
<div class="color-text-regular cursor-pointer" @click="handleReset">清空<i class="el-icon-close"></i></div>
|
|
||||||
</div>
|
|
||||||
<el-form ref="ruleFormCreditor"
|
|
||||||
:model="creditorInfo"
|
|
||||||
:rules="rulesClientCreditor"
|
|
||||||
label-width="150px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="债权人" prop="creditorName">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="creditorInfo.creditorName"
|
|
||||||
placeholder="请输入债权人"
|
|
||||||
clearable
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="社会统一信用代码" prop="creditorOrgCode">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="creditorInfo.creditorOrgCode"
|
|
||||||
placeholder="请输入社会统一信用代码"
|
|
||||||
clearable
|
|
||||||
maxlength="18"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="法人姓名" prop="creditorLegal">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入法人姓名"
|
|
||||||
v-model="creditorInfo.creditorLegal">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="法人身份证号" prop="creditorIdcard">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入法人身份证号"
|
|
||||||
v-model="creditorInfo.creditorIdcard"
|
|
||||||
maxlength="18">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="法人手机号" prop="creditorPhone">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入法人手机号"
|
|
||||||
v-model="creditorInfo.creditorPhone"
|
|
||||||
maxlength="11"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="公司地址" prop="creditorAddr">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入公司地址"
|
|
||||||
v-model="creditorInfo.creditorAddr">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="邮编" prop="creditorMail">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入邮编"
|
|
||||||
v-model="creditorInfo.creditorMail"
|
|
||||||
maxlength="6"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="代理人" prop="creditorAgent">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入代理人"
|
|
||||||
v-model="creditorInfo.creditorAgent">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
<div class="border-solid-lighter-1 p-h-24">
|
|
||||||
<div class="flex-row justify-content-between f14 border-b-solid-lighter-1 mb-8 p-v-8 align-items-center">
|
|
||||||
<div class="color-000">债务人</div>
|
|
||||||
<el-button size="small" type="primary" @click="handleAdd">新增债务人<i class="el-icon-plus"></i></el-button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<el-form ref="ruleFormObligor"
|
|
||||||
:model="obligorInfoForm"
|
|
||||||
label-width="150px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<div v-for="(item,inx) in obligorInfoForm.debtorEntityList" :key="inx">
|
|
||||||
<div class="flex-row justify-content-between align-items-center height-40 f14 mb-16">
|
|
||||||
<div class="color-text-primary">债务人{{inx+1}}</div>
|
|
||||||
<div class="color-text-regular cursor-pointer" @click="handleRemoveDomain(item)">删除<i class="el-icon-close"></i></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="债务人姓名" :prop="'debtorEntityList.' + inx + '.name'" :rules="{required: true, message: '请输入债权人姓名', trigger: 'blur'}">
|
|
||||||
<el-input
|
|
||||||
v-model.trim="obligorInfoForm.debtorEntityList[inx].name"
|
|
||||||
placeholder="请输入债务人姓名"
|
|
||||||
clearable
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="证件类型" :prop="'debtorEntityList.' + inx + '.cardTypeId'" :rules="{required: true, message: '请选择证件类型', trigger: 'change'}">
|
|
||||||
<el-select v-model="obligorInfoForm.debtorEntityList[inx].cardTypeId"
|
|
||||||
clearable placeholder="请选择证件类型"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in idTypeOptions"
|
|
||||||
:key="item.code"
|
|
||||||
:label="item.codeName"
|
|
||||||
:value="item.code">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="证件号码" :prop="'debtorEntityList.' + inx + '.cardNo'"
|
|
||||||
:rules=" [
|
|
||||||
{ 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']}
|
|
||||||
]">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入证件号码"
|
|
||||||
v-model="obligorInfoForm.debtorEntityList[inx].cardNo"
|
|
||||||
maxlength="18"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="手机号码" :prop="'debtorEntityList.' + inx + '.phone'" :rules="[
|
|
||||||
{ required: true, message: '请输入法人手机号', trigger: 'change',},
|
|
||||||
{ pattern: /^(13[0-9]{9})|(18[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})|(19[0-9]{9})$/, message: '请输入正确的手机号码', trigger: ['blur', 'change']}
|
|
||||||
]">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入手机号码"
|
|
||||||
v-model="obligorInfoForm.debtorEntityList[inx].phone"
|
|
||||||
maxlength="11"
|
|
||||||
>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="地址" :prop="'debtorEntityList.' + inx + '.addr'" :rules="{ required: true, message: '请输入地址', trigger: 'change',}">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入地址"
|
|
||||||
v-model="obligorInfoForm.debtorEntityList[inx].addr">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="邮编" :prop="'debtorEntityList.' + inx + '.mail'" :rules="{ required: true, message: '请输入邮编', trigger: 'change',}">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
placeholder="请输入邮编"
|
|
||||||
v-model="obligorInfoForm.debtorEntityList[inx].mail"
|
|
||||||
maxlength="6">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-scrollbar>
|
|
||||||
</el-tab-pane>
|
|
||||||
<el-tab-pane label="模板选择" name="templateSelection">
|
|
||||||
<div :style="{'height': `${drawerContentHeight}px`}">
|
|
||||||
<el-form ref="ruleFormTemplate"
|
|
||||||
:model="queryParam"
|
|
||||||
:rules="rulesClientTemplate"
|
|
||||||
label-width="150px"
|
|
||||||
class="demo-ruleForm">
|
|
||||||
<div>
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">模板话术</div>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="话术模板" prop="tpSpeechcraftId">
|
|
||||||
<el-select v-model="queryParam.tpSpeechcraftId"
|
|
||||||
clearable placeholder="请选择模板话术"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in speechcraftTemplateOptions"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">调解模板</div>
|
|
||||||
<el-row type="flex" align="middle">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="调解模板" prop="tpMediateId">
|
|
||||||
<el-select v-model="queryParam.tpMediateId"
|
|
||||||
clearable placeholder="请选择调解模板"
|
|
||||||
class="width100">
|
|
||||||
<el-option
|
|
||||||
v-for="item in mediationTemplateOptions"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
</el-tab-pane>
|
|
||||||
<el-tab-pane label="材料上传" name="materialUpload">
|
|
||||||
<div :style="{'height': `${drawerContentHeight}px`}">
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">证据材料</div>
|
|
||||||
<div class="p-h-24">
|
|
||||||
<upload-file-name :file-list="fileList" :max-count="20"
|
|
||||||
:show-file-name="true"
|
|
||||||
@handleUploadFile="handleUploadFile">
|
|
||||||
</upload-file-name>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</el-tab-pane>
|
|
||||||
<el-tab-pane label="调解记录" name="mediationRecord">
|
|
||||||
<el-scrollbar class="bor">
|
|
||||||
<div :style="{'height': `${drawerContentHeight}px`}">
|
|
||||||
<div class="height-48 line-height-48 f18 color-000 m-v-16 p-h-24">调解记录</div>
|
|
||||||
<div class="p-h-24">
|
|
||||||
<div v-if="mediationRecord.length>0">
|
|
||||||
<div class="bg-color-light border-radius-4 p-24 mb-16" v-for="(item,inx) in mediationRecord" :key="inx">
|
|
||||||
<div class="f16 color-text-primary">{{item.createAt}}</div>
|
|
||||||
<div class="m-v-16" v-if="item.type==1">
|
|
||||||
{{item.content}}
|
|
||||||
</div>
|
|
||||||
<div class="audio_wrap m-v-16" v-else>
|
|
||||||
<audio :src="item.content.url" controls="controls" class="audio"></audio>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- <div class="color-text-primary f14"><span class="color-text-regular">备注:</span>继任人</div> -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<el-empty description="暂无调解记录" v-else></el-empty>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-scrollbar>
|
|
||||||
</el-tab-pane>
|
|
||||||
</el-tabs>
|
|
||||||
<div class="flex-row justify-content-end p-16 border-t-solid-lighter-1">
|
|
||||||
<div>
|
|
||||||
<el-button @click="handleClose">取 消</el-button>
|
|
||||||
<el-button type="primary" @click="handleSubmit">保存</el-button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-drawer>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import api from "@/services/caseManagement";
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
uploadFileName: () => import('@/components/uploadFileName.vue'),//上传
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
editCaseDrawer: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
data() {
|
|
||||||
const moneyAmountValidate = (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('只能输入两位小数的金额!'));
|
|
||||||
}else if(!(0<parseInt(value)&&parseInt(value)<100000000)){
|
|
||||||
callback(new Error('只能输入大于1小于1亿的金额!'));
|
|
||||||
}else{
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return {
|
|
||||||
caseStatus:0,
|
|
||||||
activeName:'baseInfo',
|
|
||||||
//-----------------------------基本信息-------------------------
|
|
||||||
baseInfo:{
|
|
||||||
financialOrgName:'',//金融机构名称
|
|
||||||
financialOrgCode:'',//社会统一信用代码
|
|
||||||
caseName:'',//案件名称
|
|
||||||
caseNo:'',//案件编号
|
|
||||||
productTypeId:'',//金融产品类型
|
|
||||||
moneyAmount:'',//标的金额
|
|
||||||
overdueTimes:0,//逾期次数
|
|
||||||
caseDescr:'',//案件描述
|
|
||||||
},
|
|
||||||
rulesClient: {
|
|
||||||
financialOrgName: [
|
|
||||||
{ required: true, message: '请输入机构名称', trigger: 'change',},
|
|
||||||
],
|
|
||||||
financialOrgCode: [
|
|
||||||
{ required: true, message: '请输入社会统一信用代码', trigger: 'change',},
|
|
||||||
],
|
|
||||||
caseName: [
|
|
||||||
{ required: true, message: '请输入案件名称', trigger: 'change',},
|
|
||||||
],
|
|
||||||
caseNo: [
|
|
||||||
{ required: true, message: '请输入案件编号', trigger: 'change',},
|
|
||||||
],
|
|
||||||
productTypeId: [
|
|
||||||
{ required: true, message: '请选择金融产品类型', trigger: 'change',},
|
|
||||||
],
|
|
||||||
moneyAmount: [
|
|
||||||
{ required: true, validator: moneyAmountValidate, trigger: 'change',},
|
|
||||||
],
|
|
||||||
caseDescr:[
|
|
||||||
{ required: true, message: '请输入案件描述', trigger: 'change',},
|
|
||||||
]
|
|
||||||
},
|
|
||||||
financialProductsTypeOptions:[],//金融产品类型
|
|
||||||
|
|
||||||
//----------------------------案件当事人-------------------
|
|
||||||
// 债权人
|
|
||||||
creditorInfo:{
|
|
||||||
creditorName:'',//债权人
|
|
||||||
creditorOrgCode:'',//债权人机构代码
|
|
||||||
creditorLegal:'',//法人
|
|
||||||
creditorIdcard:'',//法人身份证
|
|
||||||
creditorPhone:'',//法人手机
|
|
||||||
creditorAddr:'',//公司地址
|
|
||||||
creditorMail:'',//邮编
|
|
||||||
creditorAgent:'',//代理人
|
|
||||||
},
|
|
||||||
rulesClientCreditor: {
|
|
||||||
creditorName: [
|
|
||||||
{ required: true, message: '请输入债权人', trigger: 'change',},
|
|
||||||
],
|
|
||||||
creditorOrgCode: [
|
|
||||||
{ required: true, message: '请输入债权人机构代码', trigger: 'change',},
|
|
||||||
],
|
|
||||||
creditorLegal: [
|
|
||||||
{ required: true, message: '请输入法人', trigger: 'change',},
|
|
||||||
],
|
|
||||||
creditorIdcard: [
|
|
||||||
{ 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']}
|
|
||||||
],
|
|
||||||
creditorPhone: [
|
|
||||||
{ required: true, message: '请输入法人手机号', trigger: 'change',},
|
|
||||||
{ pattern: /^(13[0-9]{9})|(18[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})|(19[0-9]{9})$/, message: '请输入正确的手机号码', trigger: ['blur', 'change']}
|
|
||||||
],
|
|
||||||
creditorAddr: [
|
|
||||||
{ required: true, message: '请输入公司地址', trigger: 'change',},
|
|
||||||
],
|
|
||||||
// creditorAgent: [
|
|
||||||
// { required: true, message: '请输入代理人', trigger: 'change',},
|
|
||||||
// ],
|
|
||||||
},
|
|
||||||
// 债务人
|
|
||||||
idTypeOptions:[],
|
|
||||||
obligorInfoForm:{
|
|
||||||
debtorEntityList:[
|
|
||||||
{
|
|
||||||
name:'',//债务人姓名
|
|
||||||
phone:'',//债务人电话
|
|
||||||
cardTypeId:'',//证件类型
|
|
||||||
addr:'',//地址
|
|
||||||
cardNo:'',//证件号
|
|
||||||
mail:'',//邮编
|
|
||||||
|
|
||||||
}
|
|
||||||
],
|
|
||||||
},
|
|
||||||
|
|
||||||
obligorRulesClient:{
|
|
||||||
name: [
|
|
||||||
{ required: true, message: '请输入债务人姓名', trigger: 'change',},
|
|
||||||
],
|
|
||||||
phone: [
|
|
||||||
{ required: true, message: '请输入法人手机号', trigger: 'change',},
|
|
||||||
{ pattern: /^(13[0-9]{9})|(18[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})|(19[0-9]{9})$/, message: '请输入正确的手机号码', trigger: ['blur', 'change']}
|
|
||||||
],
|
|
||||||
cardTypeId: [
|
|
||||||
{ required: true, message: '请选择证件类型', trigger: 'change',},
|
|
||||||
],
|
|
||||||
addr: [
|
|
||||||
{ required: true, message: '请输入地址', trigger: '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']}
|
|
||||||
],
|
|
||||||
mail: [
|
|
||||||
{ required: true, message: '请输入邮编', trigger: 'change',},
|
|
||||||
{ pattern: /^\d{6}$/, message: '请输入正确的邮编', trigger: ['blur', 'change']}
|
|
||||||
],
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fileList:[],//证据材料
|
|
||||||
//-------------------------模板选择-----------------------------
|
|
||||||
speechcraftTemplateOptions:[],//话术模板
|
|
||||||
mediationTemplateOptions:[],//调解模板
|
|
||||||
queryParam:{
|
|
||||||
tpMediateId:'',//调解模板id
|
|
||||||
tpSpeechcraftId:'',//话术模板
|
|
||||||
},
|
|
||||||
rulesClientTemplate:{
|
|
||||||
tpMediateId: [
|
|
||||||
{ required: true, message: '请选择调解模板', trigger: 'change',},
|
|
||||||
],
|
|
||||||
tpSpeechcraftId: [
|
|
||||||
{ required: true, message: '请选择话术模板', trigger: 'change',},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
|
|
||||||
caseId:'',//案件id
|
|
||||||
mediationRecord:[],//调解记录
|
|
||||||
currentPage:'',//父级页面当前页数
|
|
||||||
|
|
||||||
};
|
|
||||||
},
|
|
||||||
async created() {
|
|
||||||
|
|
||||||
this.getDict();//获取金融产品类型
|
|
||||||
this.getDictIdType();//获取证件类型
|
|
||||||
this.getTemplateList();//调解模板
|
|
||||||
this.getSpeechcraftTemplateList(),//话术模板
|
|
||||||
this.currentPage = this.editCaseDrawer.currentPage
|
|
||||||
console.log('父级页面当前页数',this.currentPage)
|
|
||||||
this.caseId = this.editCaseDrawer.data.id
|
|
||||||
this.getCaseInfoById();//获取详情
|
|
||||||
console.log('获取基本信息',this.baseInfo)
|
|
||||||
|
|
||||||
},
|
|
||||||
computed:{
|
|
||||||
// 获取抽屉drawer的内容高度
|
|
||||||
drawerContentHeight(){
|
|
||||||
let oh = document.documentElement.clientHeight;
|
|
||||||
return oh-200
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
|
|
||||||
|
|
||||||
// 获取金融产品类型
|
|
||||||
getDict(){
|
|
||||||
let data = {
|
|
||||||
type:'financial'
|
|
||||||
}
|
|
||||||
api.getDict(data).then(res => {
|
|
||||||
if (!res.code) {
|
|
||||||
this.financialProductsTypeOptions = res;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
// 获取证件类型
|
|
||||||
getDictIdType(){
|
|
||||||
let data = {
|
|
||||||
type:'certificates'
|
|
||||||
}
|
|
||||||
api.getDict(data).then(res => {
|
|
||||||
if (!res.code) {
|
|
||||||
this.idTypeOptions = res;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 新增
|
|
||||||
handleAdd(){
|
|
||||||
this.obligorInfoForm.debtorEntityList.push({
|
|
||||||
name:'',//债务人姓名
|
|
||||||
phone:'',//债务人电话
|
|
||||||
cardTypeId:'',//证件类型
|
|
||||||
addr:'',//地址
|
|
||||||
cardNo:'',//证件号
|
|
||||||
mail:'',//邮编
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 删除
|
|
||||||
handleRemoveDomain(item) {
|
|
||||||
var index = this.obligorInfoForm.debtorEntityList.indexOf(item)
|
|
||||||
if (index !== -1) {
|
|
||||||
this.obligorInfoForm.debtorEntityList.splice(index, 1)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 清空
|
|
||||||
handleReset(){
|
|
||||||
for (let key in this.creditorInfo) {
|
|
||||||
this.creditorInfo[key] = ''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 切换tab
|
|
||||||
handleClick(tab, event) {
|
|
||||||
// console.log(tab, event);
|
|
||||||
// 为机构状态时,不显示确认按钮
|
|
||||||
// if(tab.name ==='mediationRecord'){
|
|
||||||
// this.showButton = false
|
|
||||||
// }else{
|
|
||||||
// this.showButton = true
|
|
||||||
// }
|
|
||||||
},
|
|
||||||
// 模板话术
|
|
||||||
getSpeechcraftTemplateList(){
|
|
||||||
let data = {
|
|
||||||
current: 1,
|
|
||||||
name: "",
|
|
||||||
size: 300,
|
|
||||||
type: 2,
|
|
||||||
}
|
|
||||||
api.getTemplateList(data).then(res => {
|
|
||||||
if (!res.code) {
|
|
||||||
this.speechcraftTemplateOptions = res.records;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 调解模板
|
|
||||||
getTemplateList(){
|
|
||||||
let data = {
|
|
||||||
current: 1,
|
|
||||||
name: "",
|
|
||||||
size: 300,
|
|
||||||
type: 1,
|
|
||||||
}
|
|
||||||
api.getTemplateList(data).then(res => {
|
|
||||||
if (!res.code) {
|
|
||||||
this.mediationTemplateOptions = res.records;
|
|
||||||
// console.log('1111',this.mediationTemplateOptions)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
submitFormData(type){
|
|
||||||
|
|
||||||
},
|
|
||||||
handleUploadFile(fileList){
|
|
||||||
fileList = JSON.parse(JSON.stringify(fileList))
|
|
||||||
this.fileList = fileList.map((item,i) => {
|
|
||||||
return {
|
|
||||||
url: item.url,
|
|
||||||
fileName:item.fileName,
|
|
||||||
name:item.fileName
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// console.log('文件名',this.fileList)
|
|
||||||
},
|
|
||||||
|
|
||||||
// 获取详情
|
|
||||||
getCaseInfoById(){
|
|
||||||
let _that = this
|
|
||||||
api.getCaseInfoById(this.caseId).then(res => {
|
|
||||||
if(!res.code){
|
|
||||||
_that.caseStatus=res.caseStatus
|
|
||||||
// 基本信息
|
|
||||||
_that.baseInfo = {
|
|
||||||
financialOrgName:res.financialOrgName,//金融机构名称
|
|
||||||
financialOrgCode:res.financialOrgCode,//社会统一信用代码
|
|
||||||
caseName:res.caseName,//案件名称
|
|
||||||
caseNo:res.caseNo,//案件编号
|
|
||||||
productTypeId:res.productTypeId,//金融产品类型
|
|
||||||
moneyAmount:res.moneyAmount,//标的金额
|
|
||||||
overdueTimes:res.overdueTimes,//逾期次数
|
|
||||||
caseDescr:res.caseDescr,//案件描述
|
|
||||||
};
|
|
||||||
console.log('基本信息',_that.baseInfo)
|
|
||||||
// 案件当事人
|
|
||||||
// 债务人
|
|
||||||
_that.obligorInfoForm ={
|
|
||||||
debtorEntityList:res.debtorEntityList
|
|
||||||
}
|
|
||||||
// this.obligorInfo = res.debtorEntityList
|
|
||||||
console.log('债务人',_that.obligorInfoForm)
|
|
||||||
// 债权人
|
|
||||||
_that.creditorInfo = {
|
|
||||||
creditorName:res.creditorName,//债权人
|
|
||||||
creditorOrgCode:res.creditorOrgCode,//债权人机构代码
|
|
||||||
creditorLegal:res.creditorLegal,//法人
|
|
||||||
creditorIdcard:res.creditorIdcard,//法人身份证
|
|
||||||
creditorPhone:res.creditorPhone,//法人手机
|
|
||||||
creditorAddr:res.creditorAddr,//公司地址
|
|
||||||
creditorMail:res.creditorMail,//邮编
|
|
||||||
creditorAgent:res.creditorAgent,//代理人
|
|
||||||
};
|
|
||||||
// 调解记录
|
|
||||||
this.mediationRecord = res.logEntityList
|
|
||||||
// 模板选择
|
|
||||||
_that.queryParam = {
|
|
||||||
tpMediateId:String(res.tpMediateId),//调解模板id
|
|
||||||
tpSpeechcraftId:String(res.tpSpeechcraftId),//话术模板
|
|
||||||
};
|
|
||||||
// 材料
|
|
||||||
// console.log('获取图片',res.caseFileEntityList)
|
|
||||||
let caseFileEntityList = []
|
|
||||||
res.caseFileEntityList.forEach((item)=>{
|
|
||||||
caseFileEntityList.push({name:item.name,fileName:item.name,url:item.url})
|
|
||||||
})
|
|
||||||
_that.fileList = caseFileEntityList
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 保存
|
|
||||||
handleSubmit(){
|
|
||||||
let data = {
|
|
||||||
id:this.caseId,
|
|
||||||
...this.baseInfo,//基本信息
|
|
||||||
...this.creditorInfo,//债权人信息
|
|
||||||
...this.obligorInfoForm,//债务人
|
|
||||||
...this.queryParam,//模板选择
|
|
||||||
caseFileEntityList:this.fileList//证据材料
|
|
||||||
}
|
|
||||||
let formValidates = [
|
|
||||||
this.$refs["ruleFormBase"].validate(),
|
|
||||||
this.$refs["ruleFormCreditor"].validate(),
|
|
||||||
this.$refs["ruleFormObligor"].validate(),
|
|
||||||
this.$refs["ruleFormTemplate"].validate(),
|
|
||||||
]
|
|
||||||
if(!this.$clickThrottle()) { return }//防止重复点击
|
|
||||||
Promise.all(formValidates).then(()=>{
|
|
||||||
|
|
||||||
api.updateCaseInfoById(data).then(res => {
|
|
||||||
this.$message.success("编辑成功");
|
|
||||||
this.$parent.getCaseInfoList(this.currentPage)
|
|
||||||
this.handleClose()
|
|
||||||
})
|
|
||||||
}).catch(()=>{
|
|
||||||
this.$message({ message: '请检查必填项是否填完', type: "warning",customClass:'messageZindex'});
|
|
||||||
// console.log('请检查必填项是否填完')
|
|
||||||
})
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
checkForm(formName) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
this.$refs[formName].validate(valid => {
|
|
||||||
if (valid) {
|
|
||||||
resolve();
|
|
||||||
} else reject();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
handleClose() {
|
|
||||||
this.$emit('update:editCaseDrawer', null)
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.audio_wrap{
|
|
||||||
width: 330px;
|
|
||||||
height: 40px;
|
|
||||||
.audio{
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@ -1,101 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<el-dialog
|
|
||||||
:title="importCaseDialog.title"
|
|
||||||
:visible="true"
|
|
||||||
width="480px"
|
|
||||||
append-to-body
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
@close="handleClose"
|
|
||||||
>
|
|
||||||
|
|
||||||
<div class="dialog-content">
|
|
||||||
<upload-import :file-list="fileList" :max-count="1"
|
|
||||||
:show-file-name="true"
|
|
||||||
accept=".xls,.xlsx"
|
|
||||||
@handleUploadFile="handleUploadFile"
|
|
||||||
@handleImport="handleImport">
|
|
||||||
</upload-import>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<span slot="footer" class="dialog-footer">
|
|
||||||
<el-button @click="handleClose()">取消</el-button>
|
|
||||||
<el-button @click="handleDownload()">下载</el-button>
|
|
||||||
<el-button type="primary" @click="handleSubmit()">确认</el-button>
|
|
||||||
</span>
|
|
||||||
</el-dialog>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import api from "@/services/caseManagement";
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
uploadImport:() => import('@/components/uploadImport.vue'),//导入上传
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
importCaseDialog: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
|
|
||||||
fileList:[],
|
|
||||||
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
handleUploadFile(fileList){
|
|
||||||
console.log('获取上传文件信息',fileList)
|
|
||||||
fileList = JSON.parse(JSON.stringify(fileList))
|
|
||||||
this.fileList = fileList.map((item,i) => {
|
|
||||||
let time = this.$util.getTimestamp()
|
|
||||||
let fileType = this.$util.getFileExtension(item.url)
|
|
||||||
let fileName = `${time}.${fileType}`
|
|
||||||
return {
|
|
||||||
url: item.url,
|
|
||||||
fileName:fileName,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleImport(file){
|
|
||||||
let formdata = new FormData();
|
|
||||||
formdata.append("file", file)
|
|
||||||
console.log(formdata)
|
|
||||||
api.getImportCase(formdata).then(res => {
|
|
||||||
this.$parent.getCaseInfoList(1)
|
|
||||||
this.$message.success("导入成功");
|
|
||||||
})
|
|
||||||
|
|
||||||
},
|
|
||||||
handleSubmit(){
|
|
||||||
if(!this.$clickThrottle()) { return }//防止重复点击
|
|
||||||
this.handleClose()
|
|
||||||
},
|
|
||||||
// 下载
|
|
||||||
handleDownload(){
|
|
||||||
if(!this.$clickThrottle()) { return }//防止重复点击
|
|
||||||
api.getExportTemplate({}).then(res => {
|
|
||||||
this.$util.downloadFileByBlob(res.data, '案件.xlsx')
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleClose() {
|
|
||||||
this.$emit('update:importCaseDialog', null)
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.dialog-content{
|
|
||||||
padding: 16px 64px;
|
|
||||||
max-height:500px
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
@ -251,9 +251,15 @@ import smapi from "@/services/systemManage";
|
|||||||
jumpUrl (url) {
|
jumpUrl (url) {
|
||||||
this.$router.push(url);
|
this.$router.push(url);
|
||||||
},
|
},
|
||||||
handleCaseShow(scope){
|
async handleCaseShow(scope){
|
||||||
this.fileDialog = {showfile:{url:scope.row.proofUrl},filelist:[]}
|
let previewUrl = await this.getProofFile(scope.row.proofUrl)
|
||||||
|
this.fileDialog = {showfile:{fullUrl:previewUrl,url:scope.row.proofUrl},filelist:[]}
|
||||||
},
|
},
|
||||||
|
async getProofFile(url){
|
||||||
|
let previewUrl = await this.$fetchApi.viewFullFile({path: url})
|
||||||
|
return previewUrl
|
||||||
|
},
|
||||||
|
|
||||||
UpdateClick(scope){
|
UpdateClick(scope){
|
||||||
this.UpdateDialog = scope.row
|
this.UpdateDialog = scope.row
|
||||||
this.UpdateDialog.paybackTime = scope.row.actualPayDate
|
this.UpdateDialog.paybackTime = scope.row.actualPayDate
|
||||||
|
|||||||
@ -25,6 +25,7 @@ const store = new Vuex.Store({
|
|||||||
idFrontPath: '',
|
idFrontPath: '',
|
||||||
routes: [], // 从后端获取的路由菜单
|
routes: [], // 从后端获取的路由菜单
|
||||||
brokerEndpoint: '',
|
brokerEndpoint: '',
|
||||||
|
videoReminder: '',
|
||||||
},
|
},
|
||||||
plugins: [vuexPersisted],
|
plugins: [vuexPersisted],
|
||||||
// 全局同步方法, 调用方法,this.$store.commit("xxx",'赋值数据')
|
// 全局同步方法, 调用方法,this.$store.commit("xxx",'赋值数据')
|
||||||
@ -44,6 +45,9 @@ const store = new Vuex.Store({
|
|||||||
setBrokerEndpoint(state, data) {
|
setBrokerEndpoint(state, data) {
|
||||||
state.brokerEndpoint = data;
|
state.brokerEndpoint = data;
|
||||||
},
|
},
|
||||||
|
setVideoReminder(state, data) {
|
||||||
|
state.videoReminder = data;
|
||||||
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
// 异步方法 调用方法,this.$store.dispatch("xxx")
|
// 异步方法 调用方法,this.$store.dispatch("xxx")
|
||||||
|
|||||||
@ -447,10 +447,10 @@ const util = {
|
|||||||
*/
|
*/
|
||||||
getMediationprogress() {
|
getMediationprogress() {
|
||||||
return [
|
return [
|
||||||
{label:'承诺账户',value:'1'},{label:'重点账户',value:'2'},{label:'拒联账户',value:'3'},{label:'已结清客户',value:'4'},
|
{label:'承诺账户',value:1},{label:'重点账户',value:2},{label:'拒联账户',value:3},{label:'已结清客户',value:4},
|
||||||
{label:'疑难账户',value:'5'},{label:'失联账户',value:'6'},{label:'半失联账户',value:'7'},{label:'部分还款账户',value:'8'},
|
{label:'疑难账户',value:5},{label:'失联账户',value:6},{label:'半失联账户',value:7},{label:'部分还款账户',value:8},
|
||||||
{label:'适诉案件',value:'9'},{label:'可联账户',value:'10'},{label:'投诉倾向客户',value:'11'},{label:'分期客户',value:'12'},
|
{label:'适诉案件',value:9},{label:'可联账户',value:11},{label:'投诉倾向客户',value:11},{label:'分期客户',value:12},
|
||||||
{label:'其他/无标签',value:'13'}
|
{label:'其他/无标签',value:13}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user