文书生成、签字、签章
This commit is contained in:
parent
bec9446859
commit
13efcf95fe
@ -26,4 +26,12 @@ $--button-primary-border-color: #1960F4 !default;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.el-popover{padding: 0 !important;
|
||||
.el-popover__title{
|
||||
padding: 12px 10px;
|
||||
border-bottom: solid 1px #E5E6EB;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
@import "~element-ui/packages/theme-chalk/src/index";
|
||||
@ -1,330 +0,0 @@
|
||||
<template>
|
||||
<div class="upload-file-wrap">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="span" v-if="isInCount">
|
||||
<div class="el-col-ctn-box">
|
||||
<div class="el-col-upload-box">
|
||||
<el-upload
|
||||
class="el-upload-box"
|
||||
ref="upload"
|
||||
action=""
|
||||
:accept="accept"
|
||||
:show-file-list="false"
|
||||
:http-request="httpRequest"
|
||||
>
|
||||
<div class="upload-file">
|
||||
<i class="el-icon-plus uploader-file-icon"></i>
|
||||
<div class="f14 color-text-secondary text-center">上传</div>
|
||||
</div>
|
||||
</el-upload>
|
||||
<div class="f12 text-center color-text-regular line-height-20">{{uploadName}}</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</el-col>
|
||||
<!--上传的图片预览-->
|
||||
<el-col :span="span" v-for="(item,i) in lists" :key="i" >
|
||||
<div class="el-col-ctn-box "
|
||||
@click="handlePreview(item)">
|
||||
<div class="el-col-upload-box">
|
||||
<div class="upload-preview-box">
|
||||
<img v-if="item.deletable && !readOnly"
|
||||
class="upload-delete-icon" src="../assets/image/icon_close.png" alt=""
|
||||
@click.stop.prevent="handleDelete(item, i)">
|
||||
<div class="upload-file">
|
||||
<el-image class="el-image-upload" :src="item.iconFrontSrc" fit="scale-down"></el-image>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="f12 text-center color-text-regular line-height-20">
|
||||
{{showFileName ? item.fileName : uploadName}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- 大图预览 -->
|
||||
<dialogPreview v-if="editImgFlag" :visible.sync="editImgFlag" :previewUrl="previewPath" :isSvg="isSvg" />
|
||||
<pdfPreview v-if="editPdfFlag" :visible.sync="editPdfFlag" :previewUrl="previewPath"/>
|
||||
<videoPreview v-if="editMp4Flag" :visible.sync="editMp4Flag" :previewUrl="previewPath"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import projectConfig from "../services/projectConfig";
|
||||
export default {
|
||||
name: "uploadFile",
|
||||
components: {
|
||||
svgViewer: () => import('./svg-viewer'),
|
||||
dialogPreview: () => import('./dialogPreview'),
|
||||
pdfPreview: () => import('./pdfPreview.vue'),//查看PDF文件
|
||||
videoPreview: () => import('./videoPreview.vue'),//查看视频文件
|
||||
},
|
||||
props: {
|
||||
span: {
|
||||
// layout组件参数,每排排列几个
|
||||
type: Number,
|
||||
default: 5
|
||||
},
|
||||
accept: {
|
||||
type: String,
|
||||
default: '*',
|
||||
},
|
||||
imageHeight: {
|
||||
// 图片、上传框的高度
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
imageMode: {
|
||||
// 图片裁剪、缩放的模式,具体参考uni image
|
||||
type: String,
|
||||
default: 'aspectFit'
|
||||
},
|
||||
readOnly: {
|
||||
// 只读,true-是,false-否
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
|
||||
fileList: {
|
||||
// 已上传的文件列表
|
||||
type: [Array, Object],
|
||||
default: () => {
|
||||
return [
|
||||
//{ url:文件地址, fileName: 文件名}
|
||||
]
|
||||
}
|
||||
},
|
||||
uploadName: {
|
||||
// 要上传的文件昵称
|
||||
type: String,
|
||||
default: '上传'
|
||||
},
|
||||
maxCount: {
|
||||
// 允许上传文件的最大总数
|
||||
type: Number,
|
||||
default: 1
|
||||
},
|
||||
selectCount: {
|
||||
// 每次上传时,允许用户选择的文件数量
|
||||
type: Number,
|
||||
default: 1
|
||||
},
|
||||
customUpload: {
|
||||
// 自定义上传按钮的样式
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
autoUpload: {
|
||||
// 是否自动上传
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
showFileName: {
|
||||
// 是否显示文件名
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
splitFileTitle: {
|
||||
// 是否在显示效果上分割文件、文件名
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
lists: [
|
||||
//{url: 文件地址, fileName: 文件名, deletable: 是否可删除, readStatus: 是否显示阅读状态, iconFrontSrc: 图标样式}
|
||||
],
|
||||
srcList: [],
|
||||
dialogVisible: false,
|
||||
isSvg: true,
|
||||
editPdfFlag:false,
|
||||
editMp4Flag:false,
|
||||
editImgFlag: false,
|
||||
previewPath:'',
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isInCount() {
|
||||
return (this.lists.length < this.maxCount) && !this.readOnly
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
// 监听文件列表的变化,重新整理内部数据
|
||||
fileList: {
|
||||
immediate: true,
|
||||
handler() {
|
||||
this.formatFileList()
|
||||
}
|
||||
},
|
||||
|
||||
},
|
||||
methods: {
|
||||
formatFileList() {
|
||||
let fileList = this.fileList || []
|
||||
this.srcList = []
|
||||
fileList = JSON.parse(JSON.stringify(fileList))
|
||||
// console.log('upload===========formatFileList()方法==========fileList:', fileList)
|
||||
const lists = fileList.map(item => {
|
||||
let obj = Object.assign(item)
|
||||
obj.deletable = typeof(obj.deletable) === 'boolean' ? obj.deletable : true
|
||||
let text = obj.url || obj.fileName
|
||||
obj.fileType = this.$util.getFileExtension(text)
|
||||
// 统一显示文件对应的图标(前端图片地址)
|
||||
obj.iconFrontSrc = this.$util.getIcon(obj)
|
||||
|
||||
// let previewUrl = `${projectConfig.fileHost}${obj.url}`
|
||||
let previewUrl = `/mediate/minio/preview/${obj.url}`
|
||||
if(obj.url.includes('http')){
|
||||
previewUrl = obj.url
|
||||
}
|
||||
obj.previewUrl = previewUrl
|
||||
if(this.$util.getFileType(text) === 'image') {
|
||||
// 如果是图片,直接显示图片
|
||||
obj.iconFrontSrc = obj.previewUrl
|
||||
}
|
||||
this.srcList.push(obj.iconFrontSrc)
|
||||
return obj
|
||||
});
|
||||
this.lists = lists
|
||||
// console.log('uploadFile----:', this.lists)
|
||||
// this.isInCount = (lists.length < this.maxCount) && !this.readOnly
|
||||
},
|
||||
async httpRequest(param) {
|
||||
// console.log('httpRequest上传文件:',param)
|
||||
let fileType = this.$util.getFileExtension(param.file.name)
|
||||
if(this.accept !== '*' && this.accept.indexOf(fileType) === -1) {
|
||||
this.$message.warning(`不能上传${fileType}格式的文件`)
|
||||
return
|
||||
}
|
||||
|
||||
try{
|
||||
let formData = new FormData()
|
||||
formData.append('file', param.file)
|
||||
// let uploadFileRes = await fetchApi.uploadFile(formData);
|
||||
let uploadFileRes = await this.$fetchApi.uploadFile(formData);
|
||||
// console.log(uploadFileRes)
|
||||
let fileList = JSON.parse(JSON.stringify(this.fileList))
|
||||
fileList.push({
|
||||
url: uploadFileRes.url,
|
||||
fileSize: uploadFileRes.size
|
||||
})
|
||||
this.$emit('handleUploadFile', fileList)
|
||||
|
||||
}catch (e) {
|
||||
this.$message.error(e.msg)
|
||||
}
|
||||
},
|
||||
async handlePreview(item) {
|
||||
// try {
|
||||
// let res = await this.$fetchApi.getMinioToken({objectName: item.url})
|
||||
// window.open(`${item.previewUrl}?token=${res}`, '_target')
|
||||
// }catch (e) {
|
||||
// this.$message.error(e.msg || e)
|
||||
// }
|
||||
if (!this.isImg) {return}
|
||||
this.isSvg = false;
|
||||
let analysisType = this.$util.getFileType(item.fileType);
|
||||
console.log(analysisType,'analysisType')
|
||||
if (item.fileType === 'svg'){
|
||||
this.previewPath = item.iconFrontSrc
|
||||
this.isSvg = true;
|
||||
this.editImgFlag = true;
|
||||
}else if (analysisType === 'image'){
|
||||
if (item.previewUrl) {
|
||||
this.previewPath = item.previewUrl
|
||||
}else {
|
||||
this.previewPath = await commonFun.viewFile2({url: item.url})
|
||||
}
|
||||
this.editImgFlag = true;
|
||||
}else if(analysisType.toLowerCase() === 'mp4' || analysisType.toLowerCase() === 'video'){
|
||||
if (item.previewUrl) {
|
||||
this.previewPath = item.previewUrl
|
||||
}else {
|
||||
this.previewPath = await commonFun.viewFile2({url: item.url})
|
||||
}
|
||||
this.editMp4Flag = true;
|
||||
}else if(analysisType.toLowerCase() === 'pdf'){
|
||||
if (item.previewUrl) {
|
||||
this.previewPath = item.previewUrl
|
||||
}else {
|
||||
this.previewPath = await commonFun.viewFile2({url: item.url})
|
||||
}
|
||||
this.editPdfFlag = true;
|
||||
}else {
|
||||
let res = await commonFun.viewFile2({url: item.url})
|
||||
window.open(`${res}`, '_target')
|
||||
}
|
||||
},
|
||||
handleDelete(item, i) {
|
||||
this.lists.splice(i, 1)
|
||||
let fileList = JSON.parse(JSON.stringify(this.fileList))
|
||||
fileList.splice(i, 1)
|
||||
this.$emit('handleUploadFile', fileList)
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.el-col-ctn-box{
|
||||
width: 100%;
|
||||
height: 160px;
|
||||
}
|
||||
.el-col-upload-box{
|
||||
width: 120px;
|
||||
height: 160px;
|
||||
border-radius: 4px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.el-upload-box{
|
||||
width: 100%;
|
||||
height: 120px;
|
||||
background: #F5F7FA;
|
||||
border: 1px dashed #EBEEF5;
|
||||
}
|
||||
.el-col-ctn-box .el-upload,
|
||||
.el-col-ctn-box .upload-file{
|
||||
width: 100% !important;
|
||||
}
|
||||
.el-col-ctn-box .upload-preview-box{
|
||||
position: relative;
|
||||
height: 120px;
|
||||
border: 1px dashed #EBEEF5;
|
||||
}
|
||||
.el-col-ctn-box .upload-delete-icon{
|
||||
width: 30px;
|
||||
height: auto;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
cursor: pointer;
|
||||
z-index: 11111;
|
||||
}
|
||||
.el-col-ctn-box .upload-file{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
height: 120px;
|
||||
}
|
||||
.el-col-ctn-box .uploader-file-icon{
|
||||
font-size: 32px;
|
||||
color: $color-text-secondary;
|
||||
}
|
||||
.el-col-ctn-box .el-image-upload{
|
||||
border-radius: 4px;
|
||||
padding: 5px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.el-col-ctn-box .txt-center{
|
||||
height: 40px;
|
||||
line-height: 20px;
|
||||
}
|
||||
.line-height-30{
|
||||
line-height: 30px;
|
||||
}
|
||||
</style>
|
||||
218
src/components/uploadSingleFile.vue
Normal file
218
src/components/uploadSingleFile.vue
Normal file
@ -0,0 +1,218 @@
|
||||
<template>
|
||||
<div class="upload-single-file-wrap">
|
||||
<el-upload
|
||||
class="el-upload-box"
|
||||
ref="upload"
|
||||
action=""
|
||||
:accept="accept"
|
||||
:show-file-list="false"
|
||||
:http-request="httpRequest">
|
||||
<div class="upload-file">
|
||||
<i class="el-icon-plus uploader-file-icon"></i>上传模板
|
||||
</div>
|
||||
</el-upload>
|
||||
<!-- <div class="f12 text-center color-text-regular line-height-20">{{uploadName}}</div> -->
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import caseManagement from "@/services/caseManagement";
|
||||
export default {
|
||||
name: "uploadFile",
|
||||
components: {
|
||||
|
||||
},
|
||||
props: {
|
||||
caseId: {
|
||||
// 案件ID
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
documentType: {
|
||||
// 文件类型
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
span: {
|
||||
// layout组件参数,每排排列几个
|
||||
type: Number,
|
||||
default: 5
|
||||
},
|
||||
accept: {
|
||||
type: String,
|
||||
default: '*',
|
||||
},
|
||||
imageHeight: {
|
||||
// 图片、上传框的高度
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
imageMode: {
|
||||
// 图片裁剪、缩放的模式,具体参考uni image
|
||||
type: String,
|
||||
default: 'aspectFit'
|
||||
},
|
||||
readOnly: {
|
||||
// 只读,true-是,false-否
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
|
||||
fileList: {
|
||||
// 已上传的文件列表
|
||||
type: [Array, Object],
|
||||
default: () => {
|
||||
return [
|
||||
//{ url:文件地址, fileName: 文件名}
|
||||
]
|
||||
}
|
||||
},
|
||||
uploadName: {
|
||||
// 要上传的文件昵称
|
||||
type: String,
|
||||
default: '上传'
|
||||
},
|
||||
maxCount: {
|
||||
// 允许上传文件的最大总数
|
||||
type: Number,
|
||||
default: 1
|
||||
},
|
||||
selectCount: {
|
||||
// 每次上传时,允许用户选择的文件数量
|
||||
type: Number,
|
||||
default: 1
|
||||
},
|
||||
customUpload: {
|
||||
// 自定义上传按钮的样式
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
autoUpload: {
|
||||
// 是否自动上传
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
showFileName: {
|
||||
// 是否显示文件名
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
splitFileTitle: {
|
||||
// 是否在显示效果上分割文件、文件名
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
lists: [
|
||||
//{url: 文件地址, fileName: 文件名, deletable: 是否可删除, readStatus: 是否显示阅读状态, iconFrontSrc: 图标样式}
|
||||
],
|
||||
srcList: [],
|
||||
dialogVisible: false,
|
||||
isSvg: true,
|
||||
editPdfFlag:false,
|
||||
editMp4Flag:false,
|
||||
editImgFlag: false,
|
||||
previewPath:'',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async httpRequest(param) {
|
||||
// console.log('httpRequest上传文件:',param)
|
||||
let fileType = this.$util.getFileExtension(param.file.name)
|
||||
if(this.accept !== '*' && this.accept.indexOf(fileType) === -1) {
|
||||
this.$message.warning(`不能上传${fileType}格式的文件`)
|
||||
return
|
||||
}
|
||||
|
||||
try{
|
||||
let formData = new FormData()
|
||||
formData.append('file', param.file)
|
||||
formData.append('caseId', this.caseId)
|
||||
formData.append('documentType', this.documentType)
|
||||
|
||||
// caseManagement.customFileUpload({caseId:this.caseId,documentType:Filedata.documentType,file:Filedata.fileObj.url}).then((res) => {
|
||||
// this.$message.success("上传模板成功");
|
||||
// this.getWritCaseList()
|
||||
// });
|
||||
|
||||
// let uploadFileRes = await fetchApi.uploadFile(formData);
|
||||
let uploadFileRes = await caseManagement.customFileUpload(formData);
|
||||
// console.log(uploadFileRes)
|
||||
// let fileInfo = {
|
||||
// url: uploadFileRes.url,
|
||||
// fileSize: uploadFileRes.size
|
||||
// }
|
||||
this.$emit('handleUploadFile')
|
||||
|
||||
}catch (e) {
|
||||
this.$message.error(e.msg)
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.upload-single-file-wrap{
|
||||
float: left;
|
||||
.el-col-ctn-box{
|
||||
width: 100%;
|
||||
height: 160px;
|
||||
}
|
||||
.el-col-upload-box{
|
||||
width: 120px;
|
||||
height: 160px;
|
||||
border-radius: 4px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.el-upload-box{
|
||||
width: 80px;
|
||||
}
|
||||
.el-col-ctn-box .el-upload,
|
||||
.el-col-ctn-box .upload-file{
|
||||
width: 100% !important;
|
||||
}
|
||||
.el-col-ctn-box .upload-preview-box{
|
||||
position: relative;
|
||||
height: 120px;
|
||||
border: 1px dashed #EBEEF5;
|
||||
}
|
||||
.el-col-ctn-box .upload-delete-icon{
|
||||
width: 30px;
|
||||
height: auto;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
cursor: pointer;
|
||||
z-index: 11111;
|
||||
}
|
||||
.el-col-ctn-box .upload-file{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
height: 120px;
|
||||
}
|
||||
.el-col-ctn-box .uploader-file-icon{
|
||||
font-size: 32px;
|
||||
color: $color-text-secondary;
|
||||
}
|
||||
.el-col-ctn-box .el-image-upload{
|
||||
border-radius: 4px;
|
||||
padding: 5px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.el-col-ctn-box .txt-center{
|
||||
height: 40px;
|
||||
line-height: 20px;
|
||||
}
|
||||
.line-height-30{
|
||||
line-height: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
@ -55,10 +55,10 @@ export default {
|
||||
{label: '调解申请书', value: 'MEDIATE_APPLICATION'},
|
||||
{label: '调解询问笔录', value: 'MEDIATE_RECORD'},
|
||||
{label: '调解协议', value: 'MEDIATE_AGREEMENT'},
|
||||
{label: '司法申请书', value: 'JUDICATURE_APPLICATION'},
|
||||
{label: '司法承诺书', value: 'JUDICATURE_PROMISE'},
|
||||
// {label: '司法申请书', value: 'JUDICATURE_APPLICATION'},
|
||||
// {label: '司法承诺书', value: 'JUDICATURE_PROMISE'},
|
||||
{label: '送达地址确认书', value: 'CONFIRMATION_OF_ADDRESS'},
|
||||
{label: '身份识别报告', value: 'VERIFY_IDD'}
|
||||
// {label: '身份识别报告', value: 'VERIFY_IDD'}
|
||||
],
|
||||
ObjectInfo: {
|
||||
documentTypes: ['MEDIATE_NOTE', 'MEDIATE_APPLICATION', 'MEDIATE_RECORD', 'MEDIATE_AGREEMENT',
|
||||
|
||||
@ -60,10 +60,10 @@ export default {
|
||||
// {label: '司法申请书', value: 'JUDICATURE_APPLICATION'},
|
||||
// {label: '司法承诺书', value: 'JUDICATURE_PROMISE'},
|
||||
{label: '送达地址确认书', value: 'CONFIRMATION_OF_ADDRESS'},
|
||||
{label: '身份识别报告', value: 'VERIFY_IDD'}
|
||||
// {label: '身份识别报告', value: 'VERIFY_IDD'}
|
||||
],
|
||||
ObjectInfo: {
|
||||
documentTypes: [],
|
||||
documentTypes: ['MEDIATE_NOTE','MEDIATE_APPLICATION','CONFIRMATION_OF_ADDRESS'],
|
||||
},
|
||||
};
|
||||
},
|
||||
@ -83,7 +83,12 @@ export default {
|
||||
this.$emit('update:eventTraDialog', null)
|
||||
},
|
||||
handleSubmit() {
|
||||
if (!this.ObjectInfo.documentTypes.length){ return; }
|
||||
|
||||
if (this.ObjectInfo.documentTypes.length == 0){
|
||||
this.$message.warning("请选择文书类型!");
|
||||
return
|
||||
}
|
||||
|
||||
if(!this.$clickThrottle()) { return }//防止重复点击
|
||||
let dataJson = {
|
||||
caseIdList: this.eventTraDialog.caseids,
|
||||
|
||||
@ -16,8 +16,8 @@
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<div class="mb-24 officelist">
|
||||
<el-checkbox-group v-model="ObjectInfo.methodIds">
|
||||
<el-checkbox border v-for="(item,index) in officeOptions" :label="item.label" :key="index" ></el-checkbox>
|
||||
<el-checkbox-group v-model="ObjectInfo.fileTypes">
|
||||
<el-checkbox border v-for="(item,index) in officeOptions" :label="item.value" :key="index" >{{item.label}}</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
<el-col :span="24">
|
||||
<div class="flex-row-center align-items-center height-40 mb-24">
|
||||
<span class="tabs__search-criteria-title flex-shrink-0 pr-16" style="width:100px">签字有效时间</span>
|
||||
<el-select v-model="ObjectInfo.methodId"
|
||||
<el-select v-model="ObjectInfo.deadline"
|
||||
placeholder="请选择签字有效期限" class="width100">
|
||||
<el-option label="1天" value="1"></el-option>
|
||||
<el-option label="2天" value="2"></el-option>
|
||||
@ -64,12 +64,19 @@ import api from "@/services/caseManagement";
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
officeOptions:[{label:'调解告知书',value:'1'},{label:'调解申请书',value:'2'},
|
||||
{label:'送达地址确认书',value:'3'},{label:'调解笔录',value:'4'},{label:'调解协议',value:'5'}],
|
||||
officeOptions:[
|
||||
{label: '调解告知书', value: 'MEDIATE_NOTE'},
|
||||
{label: '调解申请书', value: 'MEDIATE_APPLICATION'},
|
||||
{label: '送达地址确认书', value: 'CONFIRMATION_OF_ADDRESS'},
|
||||
{label: '调解询问笔录', value: 'MEDIATE_RECORD'},
|
||||
{label: '调解协议', value: 'MEDIATE_AGREEMENT'},
|
||||
],
|
||||
|
||||
|
||||
ObjectInfo:{
|
||||
methodIds:['调解告知书','调解申请书','送达地址确认书'],
|
||||
users:'',
|
||||
content:''
|
||||
fileTypes:['MEDIATE_NOTE','MEDIATE_APPLICATION','CONFIRMATION_OF_ADDRESS'],
|
||||
deadline:'1',
|
||||
caseId:[]
|
||||
},
|
||||
tableData:[],
|
||||
total:0,
|
||||
@ -87,6 +94,31 @@ import api from "@/services/caseManagement";
|
||||
this.ObjectInfo.users = jsonData.users
|
||||
this.ObjectInfo.content = jsonData.content
|
||||
},
|
||||
handleSubmit(){
|
||||
if(!this.$clickThrottle()) { return }//防止重复点击
|
||||
if (this.ObjectInfo.fileTypes.length == 0){
|
||||
this.$message.warning("请选择文书类型!");
|
||||
return
|
||||
}
|
||||
// 获取当前日期
|
||||
let currentDate = new Date();
|
||||
// 获取昨天的日期
|
||||
const nextDate = currentDate
|
||||
currentDate.setDate(currentDate.getDate() + (this.ObjectInfo.deadline*1))
|
||||
const year = nextDate.getFullYear();
|
||||
const month = (nextDate.getMonth() + 1).toString().padStart(2, '0');
|
||||
const day = nextDate.getDate().toString().padStart(2, '0');
|
||||
this.ObjectInfo.deadline = year +'-'+ month +'-'+ day + ' 23:23:59'
|
||||
|
||||
this.ObjectInfo.caseId = this.eventTraDialog.caseids;
|
||||
api.traceSignBatchCreate(this.ObjectInfo).then((res) => {
|
||||
this.$message.success("批量发起签字成功");
|
||||
this.handleClose()
|
||||
this.$parent.getCaseInfoList()
|
||||
});
|
||||
},
|
||||
|
||||
// traceSignBatchCreate
|
||||
|
||||
handleClose() {
|
||||
this.$emit('update:eventTraDialog', null)
|
||||
|
||||
@ -567,18 +567,48 @@
|
||||
<i class="f24 el-icon-document color-4E5969"></i>
|
||||
<div class="pl-4 f14">协议</div>
|
||||
</div>
|
||||
<div class="flex-row justify-content-between align-items-center cursor-pointer">
|
||||
<i class="f24 el-icon-document-remove color-4E5969"></i>
|
||||
<div class="pl-4 f14">签字</div>
|
||||
</div>
|
||||
<div class="flex-row justify-content-between align-items-center cursor-pointer">
|
||||
<i class="f24 el-icon-s-check color-4E5969"></i>
|
||||
<div class="pl-4 f14">签章</div>
|
||||
</div>
|
||||
<div class="flex-row justify-content-between align-items-center cursor-pointer">
|
||||
<i class="f24 el-icon-s-claim color-4E5969"></i>
|
||||
<div class="pl-4 f14">送达</div>
|
||||
</div>
|
||||
|
||||
<el-popover
|
||||
placement="top"
|
||||
width="500"
|
||||
v-model="singleofficevisible"
|
||||
title="发起签字"
|
||||
trigger="click">
|
||||
<singleofficeWritPopover :caseId="caseId" :singleofficevisible.sync="singleofficevisible"/>
|
||||
<span slot="reference" class="flex-row justify-content-between align-items-center cursor-pointer">
|
||||
<i class="f24 el-icon-document-remove color-4E5969"></i>
|
||||
<a class="pl-4 f14">签字</a>
|
||||
</span>
|
||||
</el-popover>
|
||||
|
||||
|
||||
<el-popover
|
||||
placement="top"
|
||||
width="500"
|
||||
v-model="singlesealvisible"
|
||||
title="发起签章"
|
||||
trigger="click">
|
||||
<singleofficeSealPopover :caseId="caseId" :singlesealvisible.sync="singlesealvisible"/>
|
||||
<span slot="reference" class="flex-row justify-content-between align-items-center cursor-pointer">
|
||||
<i class="f24 el-icon-s-check color-4E5969"></i>
|
||||
<a class="pl-4 f14">签章</a>
|
||||
</span>
|
||||
</el-popover>
|
||||
|
||||
<el-popover
|
||||
placement="top"
|
||||
width="500"
|
||||
v-model="singledeliveryvisible"
|
||||
title="发起签章"
|
||||
trigger="click">
|
||||
<singleofficeDeliveryPopover :caseId="caseId" :singledeliveryvisible.sync="singledeliveryvisible"/>
|
||||
<span slot="reference" class="flex-row justify-content-between align-items-center cursor-pointer">
|
||||
<i class="f24 el-icon-s-claim color-4E5969"></i>
|
||||
<a class="pl-4 f14">送达</a>
|
||||
</span>
|
||||
</el-popover>
|
||||
|
||||
|
||||
<div class="flex-row justify-content-between align-items-center cursor-pointer">
|
||||
<i class="f24 el-icon-wallet color-4E5969"></i>
|
||||
<div class="pl-4 f14">类案</div>
|
||||
@ -621,9 +651,16 @@ export default {
|
||||
contactPerson: () => import('./contactPerson'),//联系人左
|
||||
cassWrit: () => import('./cassWrit'),//
|
||||
caseVideoReservationDialog: () => import('./caseVideoReservationDialog'),//
|
||||
|
||||
singleofficeWritPopover: () => import('./singleofficeWritPopover.vue'),//发起签字
|
||||
singleofficeSealPopover: () => import('./singleofficeSealPopover.vue'),//发起签章
|
||||
singleofficeDeliveryPopover: () => import('./singleofficeDeliveryPopover.vue'),//发起送达
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
singledeliveryvisible:false,
|
||||
singlesealvisible:false,
|
||||
singleofficevisible:false,
|
||||
eventDialog: {caseId: this.$route.query.caseId},
|
||||
leftActive: 1,
|
||||
rightActive: 1,
|
||||
|
||||
@ -2,31 +2,82 @@
|
||||
<div>
|
||||
<div class="mb-16 flex-row justify-content-between">
|
||||
<span class="f-weight500 f18">案件文书</span>
|
||||
<!-- <span class="cursor-pointer"><i class="el-icon-tickets"></i> 文书生成</span>-->
|
||||
<div class="case-office-btn">
|
||||
<el-popover
|
||||
placement="bottom"
|
||||
width="500"
|
||||
v-model="singleofficevisible"
|
||||
title="发起签字"
|
||||
trigger="click">
|
||||
|
||||
<singleofficeWritPopover :caseId="caseId" :singleofficevisible.sync="singleofficevisible"/>
|
||||
|
||||
<span slot="reference" class="cursor-pointer border-E5E6EB"><i class="el-icon-edit-outline"></i> 发起签字</span>
|
||||
</el-popover>
|
||||
|
||||
<el-popover
|
||||
placement="bottom"
|
||||
width="500"
|
||||
v-model="singlesealvisible"
|
||||
title="发起签章"
|
||||
trigger="click">
|
||||
|
||||
<singleofficeSealPopover :caseId="caseId" :singlesealvisible.sync="singlesealvisible"/>
|
||||
|
||||
<span slot="reference" class="cursor-pointer border-E5E6EB"><i class="el-icon-medal"></i> 文书签章</span>
|
||||
</el-popover>
|
||||
|
||||
<!-- <span class="cursor-pointer border-E5E6EB"><i class="el-icon-medal"></i> 文书签章</span> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="case-detail-des flex-column mb-16 border-E5E6EB" v-for="(item, index) in tableData" :key="index">
|
||||
<div class="background-color-F5F5F5 p-16 flex-row align-items-center border-radius-8">
|
||||
<a class="case-img"><img :src="reg_img(item.documentUrl)"/></a>
|
||||
<a class="case-img"><img :src="$util.reg_img(item.documentUrl)"/></a>
|
||||
<div class="flex-column pl-8">
|
||||
<a class="f-weight500">{{item.fileName}}</a>
|
||||
<a class="color-86909C f12 pt-6 pb-6">{{ $util.formatDate(item.signTime, 'YYYY-MM-DD HH:mm:ss')}}</a>
|
||||
<div class="flex-row justify-content-between align-items-center">
|
||||
<a class="f-weight500">{{item.fileName}}
|
||||
<span class="case-lable">
|
||||
<!-- documentStaus 0 未生成文书 1 生成中 2 完成生成 3 生成失败 -->
|
||||
<!-- signStatus 0 未发起 1签字中 2签字完成 3签字失败 -->
|
||||
<a class="case-status1" v-if="item.documentStaus.code == 1">生成中</a>
|
||||
<a class="result-status0" v-if="item.documentStaus.code == 3">生成失败</a>
|
||||
<a class="case-status2" v-if="item.documentStaus.code == 2 && item.signStatus == null">已生成</a>
|
||||
<a class="case-status1" v-if="item.documentStaus.code == 2 && item.signStatus == 1">签字中</a>
|
||||
<a class="case-status2" v-if="item.documentStaus.code == 2 && item.signStatus == 2">已签字</a>
|
||||
<a class="result-status0" v-if="item.signStatus == 3">签字失败</a>
|
||||
</span>
|
||||
</a>
|
||||
<!-- sealStatus 签章状态
|
||||
handleBy 操作人
|
||||
handleTime 操作时间 -->
|
||||
<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">
|
||||
<div>签字</div>
|
||||
<el-tag class="ml-4" size="small" type="success" effect="plain"
|
||||
v-for="(item1, index1) in item.signList" :key="index1">{{item1.signed}}</el-tag>
|
||||
v-for="(item1, index1) in item.signList" :key="index1">{{item1.signed}}</el-tag>
|
||||
<el-tag class="ml-4" size="small" type="info" effect="plain"
|
||||
v-for="(item2, index2) in item.unsignList" :key="index2">{{item2.unsigned}}</el-tag>
|
||||
v-for="(item2, index2) in item.unsignList" :key="index2">{{item2.unsigned}}</el-tag>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-86909C mt-8">
|
||||
<a class="mr-16 ml-16 cursor-pointer"><i class="el-icon-plus"></i>模板</a>
|
||||
<a class="mr-16 cursor-pointer"><i class="el-icon-document"></i>文书</a>
|
||||
<a class="mr-16 cursor-pointer" @click="handleDelete(item)"><i class="el-icon-delete"></i>删除</a>
|
||||
<a class="mr-16 cursor-pointer" v-if="item.documentStaus.code == 2" @click="handlePreview(item)">
|
||||
<i class="el-icon-view"></i>预览</a>
|
||||
<a class="mr-16 cursor-pointer" v-if="item.documentStaus.code == 2" @click="handleDownload(item)">
|
||||
<i class="el-icon-download"></i>下载</a>
|
||||
<upload-file v-if="item.documentStaus.code == 0 || item.documentStaus.code == 1" :max-count="1" :show-file-name="false"
|
||||
uploadName="支持文件大小不超过10M"
|
||||
accept=".docx,.doc"
|
||||
:span="6"
|
||||
:fileSize="10"
|
||||
:documentType="item.type"
|
||||
:caseId="caseId"
|
||||
@handleUploadFile="handleUploadFile">
|
||||
</upload-file>
|
||||
<!-- <a class="mr-16 ml-16 cursor-pointer"><i class="el-icon-plus"></i>上传模板</a> -->
|
||||
<!-- documentStaus 0 未生成文书 1 生成中 2 完成生成 3 生成失败 -->
|
||||
<!-- signStatus 0 未发起 1签字中 2签字完成 3签字失败 -->
|
||||
<a class="mr-16 cursor-pointer" v-if="item.documentStaus.code == 0" @click="handleFileGenerate(item)"><i class="el-icon-document"></i>生成文书</a>
|
||||
<a class="mr-16 cursor-pointer" v-if="item.documentStaus.code == 1" @click="handleFileGenerate(item)"><i class="el-icon-document"></i>重新生成文书</a>
|
||||
<a class="mr-16 cursor-pointer" v-if="item.documentStaus.code == 2" @click="handleDelete(item)"><i class="el-icon-delete"></i>删除</a>
|
||||
<a class="mr-16 cursor-pointer" v-if="item.documentStaus.code == 2" @click="handlePreview(item)"><i class="el-icon-view"></i>预览</a>
|
||||
<a class="mr-16 cursor-pointer" v-if="item.documentStaus.code == 0 || item.documentStaus.code == 1" @click="handleDownload(item)"><i class="el-icon-download"></i>下载模板</a>
|
||||
<a class="mr-16 cursor-pointer" v-else @click="handleDownload(item)"><i class="el-icon-download"></i>下载文件</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -39,6 +90,9 @@ import caseManagement from "@/services/caseManagement";
|
||||
export default {
|
||||
components: {
|
||||
pdfPreview: () => import('@/components/pdfPreview.vue'),//查看PDF文件
|
||||
uploadFile: () => import('@/components/uploadSingleFile.vue'),//上传
|
||||
singleofficeWritPopover: () => import('./singleofficeWritPopover.vue'),//发起签字
|
||||
singleofficeSealPopover: () => import('./singleofficeSealPopover.vue'),//发起签章
|
||||
},
|
||||
name: "cassWrit",
|
||||
props: {
|
||||
@ -51,38 +105,25 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return{
|
||||
singlesealvisible:false,
|
||||
singleofficevisible:false,
|
||||
tableData: [],
|
||||
previewPath: '',
|
||||
editPdfFlag: false
|
||||
editPdfFlag: false,
|
||||
|
||||
officeOptions:[{label:'调解告知书',value:'1'},{label:'调解申请书',value:'2'},
|
||||
{label:'送达地址确认书',value:'3'},{label:'调解笔录',value:'4'},{label:'调解协议',value:'5'}],
|
||||
ObjectInfo:{
|
||||
methodIds:['调解告知书','调解申请书','送达地址确认书'],
|
||||
users:'',
|
||||
content:''
|
||||
},
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
await this.getWritCaseList();
|
||||
},
|
||||
methods: {
|
||||
reg_img(item) {
|
||||
if(item==null||item=='') {
|
||||
return item
|
||||
}
|
||||
// console.log(/.(xls|xlsx)$/.test(fileUrl.toLowerCase()),'111')
|
||||
if(/.(pdf)$/.test(item.toLowerCase())) {
|
||||
return require('@/assets/image/util/pdf_img.jpg')
|
||||
}
|
||||
else if(/.(xls|xlsx)$/.test(item.toLowerCase())) {
|
||||
return require('@/assets/image/util/excel_img.jpg')
|
||||
}
|
||||
else if(/.(doc|docx)$/.test(item.toLowerCase())) {
|
||||
return require('@/assets/image/util/word_img.jpg')
|
||||
}
|
||||
else if(/.(zip|rar)$/.test(item.toLowerCase())) {
|
||||
return require('@/assets/image/util/yswj.jpg')
|
||||
}
|
||||
else {
|
||||
// let previewUrl = `/mediate/minio/preview/${fileUrl}`
|
||||
// return service.service.serviceurl+fileUrl
|
||||
return item
|
||||
}
|
||||
},
|
||||
// 列表数据
|
||||
getWritCaseList() {
|
||||
let dataJson = {
|
||||
@ -96,6 +137,27 @@ export default {
|
||||
}
|
||||
})
|
||||
},
|
||||
// 上传文书模板
|
||||
handleUploadFile(){
|
||||
this.$message.success("上传模板成功");
|
||||
this.getWritCaseList()
|
||||
},
|
||||
// 生成文书
|
||||
handleFileGenerate(item){
|
||||
console.log(item,'item')
|
||||
this.$confirm("请确定是否生成文件?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
}).then(() => {
|
||||
if(!this.$clickThrottle()) { return }//防止重复点击
|
||||
let data = {caseId: this.caseId,documentTypes:[item.type]}
|
||||
caseManagement.traceGenerateCreate(data).then((res) => {
|
||||
this.$message.success("生成文件成功");
|
||||
this.getWritCaseList()
|
||||
});
|
||||
}).catch(() => {});
|
||||
},
|
||||
handleDelete(item) {
|
||||
this.$confirm("请确定是否删除?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
@ -105,7 +167,7 @@ export default {
|
||||
if(!this.$clickThrottle()) { return }//防止重复点击
|
||||
let data = {id: item.id}
|
||||
caseManagement.traceGenerateDelete(data).then((res) => {
|
||||
this.$message.success("成功");
|
||||
this.$message.success("文书删除成功");
|
||||
this.getWritCaseList()
|
||||
});
|
||||
}).catch(() => {});
|
||||
@ -133,6 +195,11 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.case-office-btn{
|
||||
margin-top: 6px;
|
||||
margin-right: 2px;
|
||||
span{color: #BC6F60; padding: 3px 5px; border-radius: 5px;margin-right: 5px;}
|
||||
}
|
||||
.background-color-F5F5F5 {
|
||||
background-color: #F5F5F5;
|
||||
}
|
||||
@ -160,4 +227,5 @@ export default {
|
||||
margin-right: 4px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
</style>
|
||||
|
||||
@ -0,0 +1,127 @@
|
||||
<template>
|
||||
<div class="dialog-content dialog-office-batch">
|
||||
<div class="p-16">
|
||||
<div class="flex-row align-items-center justify-content-between mb-16 case-batch-num">
|
||||
<span>系统将对当前案件进行电子短信送达!</span>
|
||||
</div>
|
||||
<el-collapse-transition>
|
||||
<el-row :gutter="56">
|
||||
<el-col :span="24">
|
||||
<div class="flex-row-center align-items-center height-40 mb-8">
|
||||
<span class="tabs__search-criteria-title flex-shrink-0 pr-16 f18">选择文书类型(多选)</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<div class="mb-24 officelist">
|
||||
<el-checkbox-group v-model="ObjectInfo.documentTypes">
|
||||
<el-checkbox border v-for="(item,index) in officeOptions" :label="item.type" :key="index" :disabled="item.documentStaus.code != 2 ? true : false">{{ item.documentType.desc }}</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-collapse-transition>
|
||||
</div>
|
||||
<span class="dialog-footer">
|
||||
<el-button size="small" @click="handleClose()">取消</el-button>
|
||||
<el-button size="small" type="primary" @click="handleSubmit()">发起送达</el-button>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import api from "@/services/caseManagement";
|
||||
export default {
|
||||
components: {
|
||||
},
|
||||
props: {
|
||||
caseId: {
|
||||
type: String,
|
||||
default: () => {},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
officeOptions:[],
|
||||
ObjectInfo:{
|
||||
documentTypes: ['MEDIATE_NOTE', 'MEDIATE_APPLICATION', 'MEDIATE_RECORD', 'MEDIATE_AGREEMENT',
|
||||
'JUDICATURE_APPLICATION', 'JUDICATURE_PROMISE' , 'CONFIRMATION_OF_ADDRESS', 'VERIFY_IDD'],
|
||||
servedType: 'SMS',
|
||||
caseId:''
|
||||
},
|
||||
};
|
||||
},
|
||||
mounted () {
|
||||
this.getWritCaseList()
|
||||
},
|
||||
methods: {
|
||||
// 列表数据
|
||||
getWritCaseList() {
|
||||
let dataJson = {
|
||||
id: this.caseId
|
||||
}
|
||||
api.getCaseGenerateList(dataJson).then(res => {
|
||||
if (!res.code) {
|
||||
this.officeOptions = res
|
||||
}
|
||||
})
|
||||
},
|
||||
handleSubmit(){
|
||||
if(!this.$clickThrottle()) { return }//防止重复点击
|
||||
if (this.ObjectInfo.fileTypes.length == 0){
|
||||
this.$message.warning("请选择文书类型!");
|
||||
return
|
||||
}
|
||||
|
||||
this.ObjectInfo.caseId = this.caseId
|
||||
api.traceServedCreate(this.ObjectInfo).then((res) => {
|
||||
this.$message.success("发起签字成功");
|
||||
this.handleClose()
|
||||
this.$parent.getWritCaseList()
|
||||
});
|
||||
},
|
||||
|
||||
handleClose() {
|
||||
this.$emit('update:singledeliveryvisible', false)
|
||||
},
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.dialog-office-batch {
|
||||
width: 495px;
|
||||
max-height: 500px;
|
||||
|
||||
.tabs__search-criteria-title {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.case-batch-num {
|
||||
background-color: rgba(236, 238, 241, 0.8196078431);
|
||||
padding: 15px 20px;
|
||||
border-radius: 4px;
|
||||
|
||||
a {
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #C66A5B;
|
||||
}
|
||||
}
|
||||
|
||||
.officelist {
|
||||
background-color: rgba(236, 238, 241, 0.8196078431);
|
||||
padding: 20px 20px;
|
||||
|
||||
.el-checkbox {
|
||||
width: 180px;
|
||||
margin: 10px;
|
||||
}
|
||||
}
|
||||
.dialog-footer{
|
||||
display: inline-block;
|
||||
width: 500px;
|
||||
text-align: right;
|
||||
border-top: solid 1px #E5E6EB;
|
||||
padding: 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
120
src/pages/mediation-page/components/singleofficeSealPopover.vue
Normal file
120
src/pages/mediation-page/components/singleofficeSealPopover.vue
Normal file
@ -0,0 +1,120 @@
|
||||
<template>
|
||||
<div class="dialog-content dialog-seal-batch">
|
||||
<div class="p-16">
|
||||
<div class="flex-row align-items-center justify-content-between mb-16 case-batch-num">
|
||||
<span>系统将对当前案件中,符合签字条件(已经完成在线签字)的调解协议文书发起电子签章!</span>
|
||||
</div>
|
||||
<el-collapse-transition>
|
||||
<el-row :gutter="56">
|
||||
<el-col :span="24">
|
||||
<div class="flex-row-center align-items-center height-40 mb-8">
|
||||
<span class="tabs__search-criteria-title flex-shrink-0 pr-16 f18">完成签章后,是否进行文书的自动送达</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<div class="mb-24 officelist">
|
||||
<el-radio-group v-model="ObjectInfo.autoServed">
|
||||
<el-radio :label="1" border>自动送达</el-radio>
|
||||
<el-radio :label="0" border>不自动送达(后续可单独发起送达)</el-radio>
|
||||
</el-radio-group>
|
||||
|
||||
</div>
|
||||
<!-- :disabled="item.documentStaus.code != 2 ? true : false" -->
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-collapse-transition>
|
||||
</div>
|
||||
<span class="dialog-footer">
|
||||
<el-button size="small" @click="handleClose()">取消</el-button>
|
||||
<el-button size="small" type="primary" @click="handleSubmit()">发起签章</el-button>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import api from "@/services/caseManagement";
|
||||
export default {
|
||||
components: {
|
||||
},
|
||||
props: {
|
||||
eventTraDialog: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {}
|
||||
},
|
||||
},
|
||||
caseId: {
|
||||
type: String,
|
||||
default: () => {},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
officeOptions:[],
|
||||
ObjectInfo:{
|
||||
ids:[],
|
||||
autoServed:0
|
||||
},
|
||||
tableData:[]
|
||||
};
|
||||
},
|
||||
mounted () {
|
||||
|
||||
},
|
||||
methods: {
|
||||
handleSubmit(){
|
||||
if(!this.$clickThrottle()) { return }//防止重复点击
|
||||
|
||||
this.ObjectInfo.ids.push(this.caseId)
|
||||
api.traceSeal_launch(this.ObjectInfo).then((res) => {
|
||||
this.$message.success("发起签章成功");
|
||||
this.handleClose()
|
||||
this.$parent.getWritCaseList()
|
||||
});
|
||||
},
|
||||
|
||||
handleClose() {
|
||||
this.$emit('update:singlesealvisible', false)
|
||||
},
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.dialog-seal-batch {
|
||||
width: 495px;
|
||||
max-height: 330px;
|
||||
|
||||
.tabs__search-criteria-title {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.case-batch-num {
|
||||
background-color: rgba(236, 238, 241, 0.8196078431);
|
||||
padding: 15px 20px;
|
||||
border-radius: 4px;
|
||||
|
||||
a {
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #C66A5B;
|
||||
}
|
||||
}
|
||||
|
||||
.officelist {
|
||||
background-color: rgba(236, 238, 241, 0.8196078431);
|
||||
padding: 20px 20px;
|
||||
|
||||
.el-checkbox {
|
||||
width: 180px;
|
||||
margin: 10px;
|
||||
}
|
||||
}
|
||||
.dialog-footer{
|
||||
display: inline-block;
|
||||
width: 500px;
|
||||
text-align: right;
|
||||
border-top: solid 1px #E5E6EB;
|
||||
padding: 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
158
src/pages/mediation-page/components/singleofficeWritPopover.vue
Normal file
158
src/pages/mediation-page/components/singleofficeWritPopover.vue
Normal file
@ -0,0 +1,158 @@
|
||||
<template>
|
||||
<div class="dialog-content dialog-office-batch">
|
||||
<div class="p-16">
|
||||
<div class="flex-row align-items-center justify-content-between mb-16 case-batch-num">
|
||||
<span>系统将对当前案件中,符合签字条件(已经完成文书生成)的文书发起电子签字!</span>
|
||||
</div>
|
||||
<el-collapse-transition>
|
||||
<el-row :gutter="56">
|
||||
<el-col :span="24">
|
||||
<div class="flex-row-center align-items-center height-40 mb-8">
|
||||
<span class="tabs__search-criteria-title flex-shrink-0 pr-16 f18">选择文书类型(多选)</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<div class="mb-24 officelist">
|
||||
<el-checkbox-group v-model="ObjectInfo.fileTypes">
|
||||
<el-checkbox border v-for="(item,index) in officeOptions" :label="item.type" :key="index" :disabled="item.documentStaus.code != 2 ? true : false">{{ item.documentType.desc }}</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
<!-- :disabled="item.documentStaus.code != 2 ? true : false" -->
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<div class="flex-row-center align-items-center height-40">
|
||||
<span class="tabs__search-criteria-title flex-shrink-0 pr-16" style="width:100px">签字有效时间</span>
|
||||
<el-select v-model="ObjectInfo.deadline" size="small"
|
||||
placeholder="请选择签字有效期限" class="width100">
|
||||
<el-option label="1天" value="1"></el-option>
|
||||
<el-option label="2天" value="2"></el-option>
|
||||
<el-option label="3天" value="3"></el-option>
|
||||
<el-option label="4天" value="4"></el-option>
|
||||
<el-option label="5天" value="5"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-collapse-transition>
|
||||
</div>
|
||||
<span class="dialog-footer">
|
||||
<el-button size="small" @click="handleClose()">取消</el-button>
|
||||
<el-button size="small" type="primary" @click="handleSubmit()">发起签字</el-button>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import api from "@/services/caseManagement";
|
||||
export default {
|
||||
components: {
|
||||
},
|
||||
props: {
|
||||
eventTraDialog: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {}
|
||||
},
|
||||
},
|
||||
caseId: {
|
||||
type: String,
|
||||
default: () => {},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
officeOptions:[],
|
||||
ObjectInfo:{
|
||||
fileTypes:[],
|
||||
caseId:'',
|
||||
deadline:'1'
|
||||
},
|
||||
tableData:[]
|
||||
|
||||
};
|
||||
},
|
||||
mounted () {
|
||||
this.getWritCaseList()
|
||||
},
|
||||
methods: {
|
||||
// 列表数据
|
||||
getWritCaseList() {
|
||||
let dataJson = {
|
||||
id: this.caseId
|
||||
}
|
||||
api.getCaseGenerateList(dataJson).then(res => {
|
||||
if (!res.code) {
|
||||
this.officeOptions = res
|
||||
}
|
||||
})
|
||||
},
|
||||
handleSubmit(){
|
||||
if(!this.$clickThrottle()) { return }//防止重复点击
|
||||
if (this.ObjectInfo.fileTypes.length == 0){
|
||||
this.$message.warning("请选择文书类型!");
|
||||
return
|
||||
}
|
||||
|
||||
// 获取当前日期
|
||||
let currentDate = new Date();
|
||||
// 获取昨天的日期
|
||||
const nextDate = currentDate
|
||||
currentDate.setDate(currentDate.getDate() + (this.ObjectInfo.deadline*1))
|
||||
const year = nextDate.getFullYear();
|
||||
const month = (nextDate.getMonth() + 1).toString().padStart(2, '0');
|
||||
const day = nextDate.getDate().toString().padStart(2, '0');
|
||||
this.ObjectInfo.deadline = year +'-'+ month +'-'+ day + ' 23:23:59'
|
||||
|
||||
this.ObjectInfo.caseId = this.caseId
|
||||
api.traceSignCreate(this.ObjectInfo).then((res) => {
|
||||
this.$message.success("发起签字成功");
|
||||
this.handleClose()
|
||||
this.$parent.getWritCaseList()
|
||||
});
|
||||
},
|
||||
|
||||
handleClose() {
|
||||
this.$emit('update:singleofficevisible', false)
|
||||
},
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.dialog-office-batch {
|
||||
width: 495px;
|
||||
max-height: 500px;
|
||||
|
||||
.tabs__search-criteria-title {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.case-batch-num {
|
||||
background-color: rgba(236, 238, 241, 0.8196078431);
|
||||
padding: 15px 20px;
|
||||
border-radius: 4px;
|
||||
|
||||
a {
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #C66A5B;
|
||||
}
|
||||
}
|
||||
|
||||
.officelist {
|
||||
background-color: rgba(236, 238, 241, 0.8196078431);
|
||||
padding: 20px 20px;
|
||||
|
||||
.el-checkbox {
|
||||
width: 180px;
|
||||
margin: 10px;
|
||||
}
|
||||
}
|
||||
.dialog-footer{
|
||||
display: inline-block;
|
||||
width: 500px;
|
||||
text-align: right;
|
||||
border-top: solid 1px #E5E6EB;
|
||||
padding: 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -209,7 +209,10 @@ const caseManagementApi = {
|
||||
},
|
||||
// 案件文书-上传模板
|
||||
customFileUpload: data => {
|
||||
return service.service.post(`${apiAdmin}api/trace/traceGenerate/customFile/upload`, data)
|
||||
return service.service.post(`${apiAdmin}api/trace/traceGenerate/customFile/upload`, data, {
|
||||
headers:
|
||||
{'Content-Type': 'multipart/form-data'},
|
||||
},)
|
||||
},
|
||||
// 案件文书-生成文书
|
||||
traceGenerateCreate: data => {
|
||||
@ -232,6 +235,18 @@ const caseManagementApi = {
|
||||
return service.service.post(`${apiAdmin}api/trace/traceGenerate/batch-retry`, data)
|
||||
},
|
||||
|
||||
//
|
||||
// 案件签字-发起签字
|
||||
traceSignCreate: data => {
|
||||
return service.service.post(`${apiAdmin}api/trace/traceSign/create`, data)
|
||||
},
|
||||
// 案件签字-批量发起签字
|
||||
traceSignBatchCreate: data => {
|
||||
return service.service.post(`${apiAdmin}api/trace/traceSign/batch-create`, data)
|
||||
},
|
||||
|
||||
|
||||
|
||||
//========================end::案件管理======================================
|
||||
}
|
||||
export default caseManagementApi;
|
||||
@ -171,9 +171,9 @@ const util = {
|
||||
reg_img(fileUrl) {
|
||||
console.log(fileUrl,'---fileUrl')
|
||||
if(fileUrl==null||fileUrl=='') {
|
||||
return fileUrl
|
||||
// return fileUrl
|
||||
return require('../assets/image/util/word_img.jpg')
|
||||
}
|
||||
console.log(/.(pdf)$/.test(fileUrl.toLowerCase()),'111')
|
||||
if(/.(pdf)$/.test(fileUrl.toLowerCase())) {
|
||||
return require('../assets/image/util/pdf_img.jpg')
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user