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>
|