修改预约、材料上传部分

This commit is contained in:
tdg930622 2024-12-25 14:06:00 +08:00
parent ba1546b26b
commit 1f48de7a4d
5 changed files with 1054 additions and 803 deletions

View File

@ -255,7 +255,8 @@
url: uploadFileRes.url,
fileSize: uploadFileRes.size,
fileType: this.$util.getFileExtension(uploadFileRes.url),
fileName: uploadFileRes.objectName
fileName: uploadFileRes.objectName,
objectName: uploadFileRes.fileName
})
this.$emit('handleUploadFile', fileList)

View File

@ -69,12 +69,18 @@
<span><a>委案机构</a><a>{{ baseInfo.financialOrgName }}</a></span>
<span><a>委案开始日期</a><a>{{ baseInfo.planStartTime }}</a></span>
<span><a>委案到期日期</a><a>{{ baseInfo.planStartTime }}</a></span>
<span><a>债务人姓名</a><a v-for="(item,index) in baseInfo.debtorEntityList" :key="index">{{index == 0 ?'':','}}{{item.name}}</a></span>
<span><a>债务人手机号码</a><a>{{ debtorEntityCardNo(baseInfo.debtorEntityList,25).phone }} {{ baseInfo.debtorEntityList.length > 25 ? '...':'' }}</a></span>
<span><a>债务人姓名</a><a v-for="(item,index) in baseInfo.debtorEntityList"
:key="index">{{ index == 0 ? '' : ',' }}{{ item.name }}</a></span>
<span><a>债务人手机号码</a><a>{{
debtorEntityCardNo(baseInfo.debtorEntityList, 25).phone
}} {{ baseInfo.debtorEntityList.length > 25 ? '...' : '' }}</a></span>
<span><a>委案期限</a><a></a></span>
<span><a>委案渠道</a><a></a></span>
<span><a>身份证号</a><a> {{ debtorEntityCardNo(baseInfo.debtorEntityList,25).cardNo }} {{ baseInfo.debtorEntityList.length > 25 ? '...':'' }}</a></span>
<span><a>户籍地址</a><a v-for="(item,index) in baseInfo.debtorEntityList" :key="index">{{index == 0 ?'':','}}{{item.name}}</a></span>
<span><a>身份证号</a><a> {{
debtorEntityCardNo(baseInfo.debtorEntityList, 25).cardNo
}} {{ baseInfo.debtorEntityList.length > 25 ? '...' : '' }}</a></span>
<span><a>户籍地址</a><a v-for="(item,index) in baseInfo.debtorEntityList"
:key="index">{{ index == 0 ? '' : ',' }}{{ item.name }}</a></span>
<span><a>案件编号</a><a>{{ baseInfo.caseNo }}</a></span>
</div>
<div class="case-detail-label f-weight500 f18 mb-8 mt-8">申请人代理人信息</div>
@ -114,7 +120,8 @@
<div v-if="leftActive == 2" class="case-contact-person">
<div class="mb-16 flex-row justify-content-between">
<span class="f-weight500 f18">联系人信息</span>
<span class="cursor-pointer" @click="contactAddFlag = true"><i class="el-icon-plus"></i> 添加联系人</span>
<span class="cursor-pointer" @click="contactAddFlag = true"><i
class="el-icon-plus"></i> 添加联系人</span>
</div>
<div v-if="contactAddFlag" class="case-detail-des flex-column mb-16">
<div class="flex-row justify-content-between">
@ -355,7 +362,8 @@
<!-- 案件材料 -->
<div v-if="rightActive == 3" class="case-materials-record">
<div class="flex-row justify-content-between">
<span class="btn-communication background-color-fff f-weight500 p-8 border-radius-8 cursor-pointer">
<span class="btn-communication background-color-fff f-weight500 p-8 border-radius-8 cursor-pointer"
@click="caseFileVisible={caseId:caseId}">
<i class="el-icon-plus"></i>上传案件材料
</span>
</div>
@ -412,22 +420,27 @@
</div>
<!-- 视频预约 -->
<VideoReservationDialog v-if="VideoDialog" :eventDialog.sync="VideoDialog"/>
<!-- 案件材料上传 -->
<caseFileDialog v-if="caseFileVisible" :eventDialog.sync="caseFileVisible"/>
</div>
</template>
<script>
import api from "@/services/caseManagement";
import caseMaterial from "@/services/caseMaterial";
export default {
components: {
uploadFile: () => import('@/components/uploadFile.vue'),//
RepaymentSchedule: () => import('./RepaymentSchedule.vue'),//
RepaymentCertificate: () => import('./RepaymentCertificate.vue'),//
VideoReservationDialog: () => import('./VideoReservationDialog'),//
caseFileDialog: () => import('./caseFileDialog'),//
},
data() {
return {
VideoDialog: null,
eventDialog: {caseId: this.$route.query.caseId},
caseFileVisible: null,
leftActive: 1,
rightActive: 1,
fileList: [],
@ -441,20 +454,30 @@ import api from "@/services/caseManagement";
contactObj: {},
contactUpdate: false,
relationOptions: [{label: '本人', value: '本人'}, {label: '父母', value: '父母'}, {label: '配偶', value: '配偶'},
{label:'子女',value:'子女'},{label:'其他',value:'其他'},{label:'朋友',value:'朋友'},{label:'兄弟',value:'兄弟'},
{label: '子女', value: '子女'}, {label: '其他', value: '其他'}, {label: '朋友', value: '朋友'}, {
label: '兄弟',
value: '兄弟'
},
{label: '同事', value: '同事'}, {label: '同学', value: '同学'}],
//
repaymentObj: {
type: 'ALL'
},
RepaymentOptions:[{label:'一次性还款',value:'ALL'},{label:'全部分期',value:'STAGES'},{label:'部分先还加分期',value:'MIX'},{label:'其他',value:'OTHER'}],
RepaymentOptions: [{label: '一次性还款', value: 'ALL'}, {
label: '全部分期',
value: 'STAGES'
}, {label: '部分先还加分期', value: 'MIX'}, {label: '其他', value: 'OTHER'}],
rulesClientRepayment: {
type: [
{required: true, message: '请选择还款方式', trigger: 'change',},
],
totalAmount: [
{required: true, message: '请输入还款金额', trigger: 'change',},
{ pattern: /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0.\d{1,2}$/, message: '请输入2位小数金额', trigger: ['blur', 'change']}
{
pattern: /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0.\d{1,2}$/,
message: '请输入2位小数金额',
trigger: ['blur', 'change']
}
],
paybackDate: [
{required: true, message: '请选择还款截止日期', trigger: 'change',},
@ -464,7 +487,11 @@ import api from "@/services/caseManagement";
],
partAmount: [
{required: true, message: '请输入分期前偿还金额 ', trigger: 'change',},
{ pattern: /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0.\d{1,2}$/, message: '请输入2位小数金额', trigger: ['blur', 'change']}
{
pattern: /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0.\d{1,2}$/,
message: '请输入2位小数金额',
trigger: ['blur', 'change']
}
],
partDate: [
{required: true, message: '请选择分期前偿还日期', trigger: 'change',},
@ -483,7 +510,6 @@ import api from "@/services/caseManagement";
let oh = document.documentElement.clientHeight;
return oh - 100
},
//
centerContentHeight() {
let oh = document.documentElement.clientHeight;
@ -498,13 +524,11 @@ import api from "@/services/caseManagement";
OfficecontentHeight() {
let oh = document.documentElement.clientHeight;
return oh - 185
},
CommunicationcontentHeight() {
let oh = document.documentElement.clientHeight;
return oh - 150
},
},
async created() {
this.caseId = this.$route.query.caseId
@ -517,8 +541,6 @@ import api from "@/services/caseManagement";
// }
},
methods: {
debtorEntityCardNo(datalist, len) {
let datacardno = ''
let dataphone = ''
@ -526,8 +548,7 @@ import api from "@/services/caseManagement";
if (index == 0) {
datacardno = item.cardNo
dataphone = item.phone
}
else{
} else {
datacardno += ',' + item.cardNo
dataphone += ',' + item.phone
}
@ -557,7 +578,9 @@ import api from "@/services/caseManagement";
},
//
getFrontCaseById() {
if(!this.$clickThrottle()) { return }//
if (!this.$clickThrottle()) {
return
}//
api.getFrontCaseById({id: this.caseId}).then(res => {
if (!res.code) {
// let caseChangeData = res
@ -567,7 +590,9 @@ import api from "@/services/caseManagement";
},
//
getNextCaseById() {
if(!this.$clickThrottle()) { return }//
if (!this.$clickThrottle()) {
return
}//
api.getNextCaseById({id: this.caseId}).then(res => {
if (!res.code) {
this.detailData(res)
@ -576,7 +601,9 @@ import api from "@/services/caseManagement";
},
//
handleDownloadMediationTemplate() {
if(!this.$clickThrottle()) { return }//
if (!this.$clickThrottle()) {
return
}//
// console.log('url',templateUrl)
if (this.templateUrl) {
this.handlePreview({previewUrl: "/mediate/minio/preview/" + this.templateUrl, url: this.templateUrl})
@ -604,16 +631,8 @@ import api from "@/services/caseManagement";
handleBack() {
// this.$route.query.sourcePage == 'mediationManagement'
this.$router.push('/mediation-management')
},
}
};
</script>
@ -621,10 +640,12 @@ import api from "@/services/caseManagement";
.layout-center-wrap {
height: 100%;
font-size: 14px;
.layout-center-top-wrap {
font-size: 14px;
padding: 10px;
border-bottom: solid 1px #E5E6EB;
.ipphoneimg {
background: url('~@/assets/image/mediate/m-phone.png') no-repeat;
background-size: 24px;
@ -633,6 +654,7 @@ import api from "@/services/caseManagement";
height: 35px;
padding: 7px 5px 5px 35px;
}
.smsimg {
background: url('~@/assets/image/mediate/m-sms.png') no-repeat;
background-size: 24px;
@ -641,6 +663,7 @@ import api from "@/services/caseManagement";
height: 35px;
padding: 7px 5px 5px 35px;
}
.videoimg {
background: url('~@/assets/image/mediate/m-video.png') no-repeat;
background-size: 24px;
@ -649,17 +672,21 @@ import api from "@/services/caseManagement";
height: 35px;
padding: 7px 5px 5px 35px;
}
.top-case-btn-left {
padding-top: 5px;
.el-button {
height: 35px;
padding: 10px 20px;
background-color: #F2F3F5;
}
span {
margin-left: 20px;
cursor: pointer;
}
.case-send-btn {
border: solid 1px #E5E6EB;
height: 35px;
@ -668,10 +695,12 @@ import api from "@/services/caseManagement";
}
}
.top-case-btn-right {
background-color: #F2F3F5;
padding: 7px 20px;
border-radius: 8px;
span {
padding: 5px 30px;
@ -684,6 +713,7 @@ import api from "@/services/caseManagement";
.active {
background-color: #fff;
}
span:hover {
background-color: #fff;
}
@ -701,11 +731,22 @@ import api from "@/services/caseManagement";
.background-color-F5F5F5 {
background-color: #F5F5F5;
}
.border-E5E6EB{border:solid 1px #E5E6EB;}
.width120px{width: 140px;}
.width180px{width: 220px;}
.width200px{width: calc(50% - 320px);}
.border-E5E6EB {
border: solid 1px #E5E6EB;
}
.width120px {
width: 140px;
}
.width180px {
width: 220px;
}
.width200px {
width: calc(50% - 320px);
}
.layout-center-left-wrap {
background: url('~@/assets/image/mediate/m-left-bg.png') no-repeat;
@ -717,25 +758,38 @@ import api from "@/services/caseManagement";
width: 80px;
height: 100%;
text-align: center;
.left-rbobot {
width: 100%;
height: 80px;
text-align: center;
margin: 30px 0 0 0;
img{width:64px;}
img {
width: 64px;
}
}
.separation {
width: 50px;
margin: 15px 0 0 15px;
border-bottom: solid 1px #dedfe4;
}
.left-img-info {
margin-top: 15px;
width: 100%;
font-size: 12px;
cursor: pointer;
img{width: 48px;margin-left: 15px;}
a{margin-top: 5px;}
img {
width: 48px;
margin-left: 15px;
}
a {
margin-top: 5px;
}
}
.left-img-info.active {
@ -743,36 +797,43 @@ import api from "@/services/caseManagement";
background-size: 15px 30px;
background-position: 68px 10px;
}
.left-img-info:hover {
background: url('~@/assets/image/mediate/m-triangle.png') no-repeat;
background-size: 15px 30px;
background-position: 68px 10px;
}
}
.layout-center-left2-wrap {
width: 460px;
height: 100%;
background-color: #fff;
border-radius: 25px 0px 0px 25px;
padding: 20px 30px;
.case-detail-des {
border: solid 1px #E5E6EB;
padding: 10px 15px;
border-radius: 8px;
font-size: 14px;
span {
margin: 3px 0;
padding: 3px 10px;
// a:first-child{width: 120px;display: inline-block;text-align: right;}
}
span:nth-child(even) {
background-color: #F7F8FA;
}
.case-img {
width: 50px;
height: 50px;
text-align: center;
line-height: 50px;
img {
max-width: 50px;
max-height: 50px;
@ -780,11 +841,15 @@ import api from "@/services/caseManagement";
}
}
.case-materials-person {
.case-detail-des {
i{margin-right: 4px;}
i {
margin-right: 4px;
}
}
}
.case-office-person {
.case-detail-des {
@ -793,12 +858,16 @@ import api from "@/services/caseManagement";
height: 55px;
text-align: center;
line-height: 55px;
img {
max-width: 55px;
max-height: 55px;
}
}
i{margin-right: 4px;}
i {
margin-right: 4px;
}
}
}
@ -820,6 +889,7 @@ import api from "@/services/caseManagement";
border-radius: 8px;
cursor: pointer;
}
.case-communication-cont {
// background: ;
padding: 20px;
@ -831,10 +901,16 @@ import api from "@/services/caseManagement";
.case-office-record, .case-materials-record {
span a{color: #C66A5B; margin-right: 13px; cursor: pointer;}
span a:last-child{margin-right: 0;}
span a {
color: #C66A5B;
margin-right: 13px;
cursor: pointer;
}
span a:last-child {
margin-right: 0;
}
}
}

View File

@ -58,19 +58,35 @@
</el-form-item>
</el-col>
<el-col :span="24" v-for="(item,index) in repaymentObj.members" :key="index">
<el-form-item label="" prop="" label-width="0">
<el-row :gutter="10">
<el-form-item label="" prop="" label-width="0" style="margin-bottom: 10px;">
<el-row :gutter="20" style="background-color: rgb(245, 246, 250);margin-bottom: 5px;">
<el-col :span="7">
<div>身份证</div>
</el-col>
<el-col :span="7">
<div>姓名</div>
</el-col>
<el-col :span="7">
<div>电话</div>
</el-col>
<el-col :span="8">
<div>身份证</div>
</el-col>
</el-row>
<el-row :gutter="10">
<el-row :gutter="20">
<el-col :span="7">
<el-form-item
:prop="`members[${index}].identity`"
:rules="[
{ required: true, message: '请选择', trigger: ['blur','change'],},
]">
<el-select v-model="item.identity" placeholder="请选择">
<el-option
v-for="(item,index) in identityOptions"
:key="index"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item
:prop="`members[${index}].name`"
@ -94,20 +110,7 @@
></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
:prop="`members[${index}].identity`"
:rules="[
{ required: true, message: '请输入', trigger: ['blur','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
v-model="item.identity"
placeholder="请输入"
></el-input>
</el-form-item>
</el-col>
<el-col :span="2">
<el-col :span="3">
<div class="">
<el-button
icon="el-icon-delete"
@ -170,6 +173,13 @@ export default {
{ label: '120分钟', value: 120 }
],
litigantsOptions: [],
identityOptions: [
{ label: '法官', value: '法官' },
{ label: '调解专家', value: '调解专家' },
{ label: '律师', value: '律师' },
{ label: '民警', value: '民警' },
{ label: '其他', value: '其他' }
],
repaymentObj: {
litigants: [], //{name: xx, phone: xx, identity: xx}
members: [], //{name: xx, phone: xx, identity: xx}
@ -211,7 +221,7 @@ export default {
})
},
addForm() {
this.repaymentObj.members.push({name: '', phone: '', identity: ''})
this.repaymentObj.members.push({ identity: '', name: '', phone: ''})
},
deleteForm(index) {
this.repaymentObj.members.splice(index, 1)

View File

@ -0,0 +1,138 @@
<template>
<div>
<el-dialog title="视频预约" :visible="true" width="500px" append-to-body :close-on-click-modal="false"
@close="handleClose">
<div class="dialog-content dialog-office-batch">
<div class="p-16 pr-40">
<el-form ref="ruleFormRepayment"
:model="repaymentObj"
:rules="rulesClientRule"
label-width="100px">
<el-form-item label="材料分类:" prop="materialType">
<el-select v-model="repaymentObj.materialType" placeholder="请选择" class="width100">
<el-option
v-for="(item,index) in materialTypeOptions"
:key="index"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="文件上传:" prop="url">
<upload-file :file-list="fileList" :max-count="1"
:show-file-name="false"
uploadName=""
accept=".jpg,.png,.jpeg,.pdf,.docx"
:span="6"
:fileSize="50"
@handleUploadFile="handleUploadFile">
</upload-file>
</el-form-item>
<el-form-item label="上传要求:">
<div style="line-height: 20px;padding-top: 10px">
<div>请知悉</div>
<div>请上传图片或pdf或word格式材料单个文件需要在0KB以上50MB以内;文件名称中请勿包含换行符空格tab#&V:?"#*|&"<>%+'等特色字符</div>
<div>文件名称不超过45个字</div>
</div>
</el-form-item>
</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 videoTelephone from "@/services/videoTelephone";
import caseMaterial from "@/services/caseMaterial";
export default {
components: {
uploadFile: () => import('@/components/uploadFile.vue'),//
},
props: {
eventDialog: {
type: Object,
default: () => {
return {}
},
},
},
data() {
return {
materialTypeOptions: [
{ label: '身份证件', value: 'IDENTITY' },
{ label: '金融许可证', value: 'FINANCIAL_LICENSES' },
{ label: '营业执照', value: 'BUSINESS_LICENSES' },
{ label: '法定代表人身份证明', value: 'IDENTITY_LEGAL' },
{ label: '起诉状', value: 'COMPLAINTS' },
{ label: '证据清单', value: 'EVIDENCE' },
{ label: '合约', value: 'CONTRACTS' },
{ label: '申领表', value: 'APPLICATION_FORMS' },
{ label: '交易明细', value: 'TRANSACTION_DETAILS' },
{ label: '其他证据', value: 'OTHER' },
],
repaymentObj: {
caseId: '',
materialType: '',
category: 'EVIDENTIAL',
name: '',
url: '',
},
rulesClientRule: {
materialType: [
{required: true, message: '请选择', trigger: 'change',},
],
url: [
{ required: true, message: '请上传', trigger: 'change',},
],
},
fileList: [],
};
},
mounted() {
// console.log(1231)
},
methods: {
handleUploadFile(fileList){
// console.log('',fileList)
fileList = JSON.parse(JSON.stringify(fileList))
this.fileList = fileList.map((item,i) => {
return {
url: item.url,
fileName: item.fileName,
previewUrl:item.previewUrl,
objectName: item.objectName
}
})
this.repaymentObj.url = this.fileList.length?this.fileList[0].url : '';
this.repaymentObj.name = this.fileList.length?this.fileList[0].objectName : '';
console.log(this.repaymentObj, '---this.repaymentObj', this.fileList)
},
handleClose() {
this.$emit('update:eventDialog', null)
},
handleSubmit() {
if(!this.$clickThrottle()) { return }//
this.$refs.ruleFormRepayment.validate((valid) => {
if (valid) {
this.repaymentObj.caseId = this.eventDialog.caseId;
caseMaterial.addCaseFile(this.repaymentObj).then(res => {
// this.$parent.getDataList(1)
this.handleClose()
this.$message.success("操作成功");
})
}
})
}
}
};
</script>
<style scoped lang="scss">
</style>

View File

@ -0,0 +1,26 @@
import service from "./index";
const api = '/mediate/cases/caseFile/'
// caseMaterial
const apiCaseMaterial = {
// 列表
getCaseFileList: data => {
return service.service.post(`${api}getCaseFileList`, data)
},
// 查询材料
getCaseFileById: data => {
return service.service.post(`${api}getCaseFileById`, data)
},
// 删除
deleteCaseFileById: data => {
return service.service.post(`${api}deleteCaseFileById`, data)
},
// 更新
updateCaseFileById: data => {
return service.service.post(`${api}updateCaseFileById`, data)
},
// 新增
addCaseFile: data => {
return service.service.post(`${api}addCaseFile`, data)
},
}
export default apiCaseMaterial;