feat:ocr2.0开发
@ -0,0 +1,68 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
/** 案件证据分类树 */
|
||||||
|
export function getCaseEvidenceTree(data) {
|
||||||
|
return request({
|
||||||
|
url: `/caseEvidence/category/tree`,
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/** 案件证据文件目录树 */
|
||||||
|
export function getCaseEvidenceFileTree(data) {
|
||||||
|
return request({
|
||||||
|
url: `/caseEvidence/directory/tree`,
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 创建目录 */
|
||||||
|
export function createDirectory(data) {
|
||||||
|
return request({
|
||||||
|
url: `/caseEvidence/directory/save`,
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 证据识别并提取 */
|
||||||
|
export function ocrAndExtract(data) {
|
||||||
|
return request({
|
||||||
|
url: `/caseEvidence/ocrAndExtract`,
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/** 案件证据文件目录树 */
|
||||||
|
export function getCaseEvidenceDirectoryList(data) {
|
||||||
|
return request({
|
||||||
|
url: `/caseEvidence/directory/ls`,
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/** 识别并提取列表 */
|
||||||
|
export function ocrAndExtractList(data) {
|
||||||
|
return request({
|
||||||
|
url: `/caseEvidence/ocrAndExtract/list`,
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/** 查询证据详情-结果以树的方式展示 */
|
||||||
|
export function ocrAndExtractDetails(data) {
|
||||||
|
return request({
|
||||||
|
url: `/caseEvidence/ocrAndExtract/details`,
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/** 核实证据 */
|
||||||
|
export function caseEvidenceVerify(data) {
|
||||||
|
return request({
|
||||||
|
url: `/caseEvidence/verify`,
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 694 B |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 3.0 KiB |
@ -0,0 +1,7 @@
|
|||||||
|
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M20.7777 6.05V19.5556C20.7777 20.9 19.6777 22 18.3333 22H3.66661C2.32217 22 1.22217 20.9 1.22217 19.5556V2.44444C1.22217 1.1 2.32217 0 3.66661 0H14.7277L20.7777 6.05Z" fill="#4F6BF6"/>
|
||||||
|
<path d="M12.488 16.2343H13.7634L15.8889 9.43262H14.6141L12.488 16.2343Z" fill="white"/>
|
||||||
|
<path d="M14.7278 4.82778V0L20.7778 6.05H15.95C15.2778 6.05 14.7278 5.5 14.7278 4.82778Z" fill="#243EBB"/>
|
||||||
|
<path d="M13.7634 16.2343H12.488L10.3626 10.2827H11.6374L13.7634 16.2343ZM9.51192 16.2343H8.23653L6.11108 9.43262H7.38586L9.51192 16.2343Z" fill="white"/>
|
||||||
|
<path d="M8.23657 16.2338H9.51196L11.6374 10.2822H10.3626L8.23657 16.2338Z" fill="white"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 739 B |
@ -0,0 +1,99 @@
|
|||||||
|
|
||||||
|
<template>
|
||||||
|
<cs-dialog
|
||||||
|
:dialog="dialogOptions"
|
||||||
|
@onSubmit="handleSubmit"
|
||||||
|
>
|
||||||
|
<template slot="content">
|
||||||
|
<div class="move-tree">
|
||||||
|
<el-input
|
||||||
|
v-model="filterText"
|
||||||
|
prefix-icon="el-icon-search"
|
||||||
|
placeholder="搜索名称"
|
||||||
|
/>
|
||||||
|
<el-tree
|
||||||
|
:data="treeData"
|
||||||
|
highlight-current
|
||||||
|
default-expand-all
|
||||||
|
:props="defaultProps"
|
||||||
|
@node-click="handleNodeClick"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</cs-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getCaseEvidenceFileTree } from '@/api/caseDetails/evidence'
|
||||||
|
export default {
|
||||||
|
name: 'MoveFolder',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dialogOptions: {
|
||||||
|
show: false,
|
||||||
|
width: '510px',
|
||||||
|
title: {
|
||||||
|
title: '移动文件到'
|
||||||
|
},
|
||||||
|
appendToBody: true
|
||||||
|
},
|
||||||
|
selectId: '',
|
||||||
|
filterText: '',
|
||||||
|
treeData: [],
|
||||||
|
defaultProps: {
|
||||||
|
children: 'child',
|
||||||
|
label: 'directoryName'
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 显示弹窗
|
||||||
|
show() {
|
||||||
|
this.dialogOptions.show = true
|
||||||
|
this.getTreeList()
|
||||||
|
},
|
||||||
|
handleNodeClick(data) {
|
||||||
|
this.selectId = data.id
|
||||||
|
},
|
||||||
|
// 查询左侧树
|
||||||
|
getTreeList() {
|
||||||
|
getCaseEvidenceFileTree({ caseId: this.$route.params.id }).then(res => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
this.treeData = res.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleSubmit() {
|
||||||
|
this.dialogOptions.show = false
|
||||||
|
this.$emit('selectOk', this.selectId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.move-tree {
|
||||||
|
background: #F9FAFB;
|
||||||
|
::v-deep {
|
||||||
|
.el-tree {
|
||||||
|
background: #F9FAFB;
|
||||||
|
.el-tree-node {
|
||||||
|
// height: 40px;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
.el-tree-node__content {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
.el-tree-node.is-current > .el-tree-node__content {
|
||||||
|
background: #dce3ed;
|
||||||
|
color: #666666;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,162 @@
|
|||||||
|
<template>
|
||||||
|
<div class="EditEvidence">
|
||||||
|
<div class="step-list">
|
||||||
|
<div class="step-list-item">
|
||||||
|
<img :src="actUploadImg" alt="">
|
||||||
|
<span class="actived">证据上传并归档</span>
|
||||||
|
</div>
|
||||||
|
<div :class="[activeStep > 0 ?'act-step-line':'step-line']">
|
||||||
|
<span>>></span>
|
||||||
|
</div>
|
||||||
|
<div class="step-list-item">
|
||||||
|
<img v-if="activeStep > 0" :src="actIdentifyImg" alt="">
|
||||||
|
<img v-else :src="identifyImg" alt="">
|
||||||
|
<span :class="[activeStep > 0 ?'actived':'']">证据识别并提取</span>
|
||||||
|
</div>
|
||||||
|
<div :class="[activeStep > 0 ?'act-step-line':'step-line']">
|
||||||
|
<span>>></span>
|
||||||
|
</div>
|
||||||
|
<div class="step-list-item">
|
||||||
|
<img v-if="activeStep > 1" :src="actUploadImg" alt="">
|
||||||
|
<img v-else :src="uploadImg" alt="">
|
||||||
|
<span :class="[activeStep > 1 ?'actived':'']">证据确认</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<UploadEvidence v-show="activeStep === 0" ref="UploadEvidenceRef" @save="saveOk" />
|
||||||
|
<EvidenceExtract v-if="activeStep === 1" ref="EvidenceExtractRef" @save="saveOk" />
|
||||||
|
<EvidenceConfirm v-if="activeStep === 2" ref="EvidenceConfirmRef" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { baseURL } from '@/config'
|
||||||
|
import { commonDownloadFile } from '@/api/config/uploadApi'
|
||||||
|
import * as vuedraggable from 'vuedraggable'
|
||||||
|
import UploadEvidence from './components/UploadEvidence.vue'
|
||||||
|
import EvidenceExtract from './components/EvidenceExtract.vue'
|
||||||
|
import EvidenceConfirm from './components/EvidenceConfirm.vue'
|
||||||
|
export default {
|
||||||
|
name: 'EditEvidence',
|
||||||
|
components: { vuedraggable, UploadEvidence, EvidenceExtract, EvidenceConfirm },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
fileList: [],
|
||||||
|
actRecordImg: require('@/assets/record/act_record.png'),
|
||||||
|
actIdentifyImg: require('@/assets/record/act_identify.png'),
|
||||||
|
actUploadImg: require('@/assets/record/act_upload.png'),
|
||||||
|
identifyImg: require('@/assets/record/identify.png'),
|
||||||
|
uploadImg: require('@/assets/record/upload.png'),
|
||||||
|
activeStep: 0,
|
||||||
|
status: '1',
|
||||||
|
interval: undefined
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getImgUrl(id) {
|
||||||
|
return `${baseURL}${commonDownloadFile}${id}`
|
||||||
|
},
|
||||||
|
beforeUpload(file) {
|
||||||
|
const isLt5M = file.size / 1024 / 1024 < 5
|
||||||
|
const filename = file.name
|
||||||
|
const postfix = filename.substring(filename.lastIndexOf('.'))
|
||||||
|
if (!['.jpg', '.png'].includes(postfix)) {
|
||||||
|
this.$message.error('上传图片只能是 JPG,PNG 格式!')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if (!isLt5M) {
|
||||||
|
this.$message.error('上传头像图片大小不能超过 5MB!')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if (this.fileList >= 12) {
|
||||||
|
this.$message.error('上传文件数量不能超过12张!')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
del(index) {
|
||||||
|
this.fileList.splice(index, 1)
|
||||||
|
},
|
||||||
|
handleSuccess(res, file) {
|
||||||
|
const obj = {
|
||||||
|
name: file.name,
|
||||||
|
fileId: res.data
|
||||||
|
}
|
||||||
|
this.fileList.push(obj)
|
||||||
|
this.imgOcrIdentify(res.data)
|
||||||
|
},
|
||||||
|
saveOk() {
|
||||||
|
this.activeStep += 1
|
||||||
|
},
|
||||||
|
async submit() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.EditEvidence {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: #fff;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
.step-list {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
justify-content: center;
|
||||||
|
padding-top: 36px;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
.step-list-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
span {
|
||||||
|
font-size: 20px;
|
||||||
|
color: #999999;
|
||||||
|
margin-left: 16px;
|
||||||
|
margin-right: 16px;
|
||||||
|
}
|
||||||
|
.actived {
|
||||||
|
color: #3763FF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.step-line {
|
||||||
|
width: 137px;
|
||||||
|
height: 2px;
|
||||||
|
border-top: 2px dashed #999999;
|
||||||
|
display: flex;
|
||||||
|
position: relative;
|
||||||
|
margin-right: 42px;
|
||||||
|
span {
|
||||||
|
position: absolute;
|
||||||
|
right: -24px;
|
||||||
|
top: -11px;
|
||||||
|
color: #999999;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.act-step-line {
|
||||||
|
width: 137px;
|
||||||
|
height: 2px;
|
||||||
|
border-top: 2px dashed #3763FF;
|
||||||
|
display: flex;
|
||||||
|
position: relative;
|
||||||
|
margin-right: 42px;
|
||||||
|
span {
|
||||||
|
position: absolute;
|
||||||
|
right: -24px;
|
||||||
|
top: -11px;
|
||||||
|
color: #3763FF;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,90 @@
|
|||||||
|
|
||||||
|
<template>
|
||||||
|
<cs-dialog
|
||||||
|
:dialog="dialogOptions"
|
||||||
|
>
|
||||||
|
<template slot="content">
|
||||||
|
<div class="SelectImg">
|
||||||
|
<img v-for="(item,index) in imgList" :key="index" :class="[selectId === item.id ? 'actived':'']" class="img-item" :src="item.url" @click="selectItem(item.id)">
|
||||||
|
|
||||||
|
</img>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</cs-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SelectImg',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dialogOptions: {
|
||||||
|
show: false,
|
||||||
|
width: '520px',
|
||||||
|
title: {
|
||||||
|
title: '选择目录图片'
|
||||||
|
},
|
||||||
|
// hiddenFooter: true,
|
||||||
|
appendToBody: true
|
||||||
|
},
|
||||||
|
selectId: '',
|
||||||
|
imgList: [
|
||||||
|
{
|
||||||
|
url: require('@/assets/file/type1.png'),
|
||||||
|
id: 1
|
||||||
|
}, {
|
||||||
|
url: require('@/assets/file/type2.png'),
|
||||||
|
id: 2
|
||||||
|
}, {
|
||||||
|
url: require('@/assets/file/type3.png'),
|
||||||
|
id: 3
|
||||||
|
}, {
|
||||||
|
url: require('@/assets/file/type4.png'),
|
||||||
|
id: 4
|
||||||
|
}, {
|
||||||
|
url: require('@/assets/file/type5.png'),
|
||||||
|
id: 5
|
||||||
|
}, {
|
||||||
|
url: require('@/assets/file/type6.png'),
|
||||||
|
id: 6
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 显示弹窗
|
||||||
|
show() {
|
||||||
|
this.dialogOptions.show = true
|
||||||
|
},
|
||||||
|
selectItem(id) {
|
||||||
|
this.selectId = id
|
||||||
|
},
|
||||||
|
handleSelect(val) {
|
||||||
|
this.$emit('selectOk', val)
|
||||||
|
this.dialogOptions.show = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.SelectImg {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
img {
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
margin: 0 16px 16px 0;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.actived {
|
||||||
|
border: 2px solid rgba(55, 99, 255, 1);
|
||||||
|
border-radius: 8px 8px 8px 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|