@ -3,17 +3,17 @@
< div class = "ai-keyword-archives" >
< div class = "ai-keyword-archives" >
< div class = "collect-header" >
< div class = "collect-header" >
< h4 class = "is-juannei" > { { collectTitle } } < / h4 >
< h4 class = "is-juannei" > { { collectTitle } } < / h4 >
< div class = "head-search" style = "align-items: center;" >
< div class = "head-search" style = "align-items: center; margin-right: 10px; " >
< treeselect
< treeselect
v - model = "query.archive_ctg_no"
v - model = "query.archive_ctg_no"
: options = "classifyOptions"
: options = "classifyOptions"
style = "width: 180px; margin-right: 10px;"
style = "width: 180px; margin-right: 10px;"
flat
flat
: multiple = "false"
: multiple = "false"
: clearable = "false"
: normalizer = "normalizer"
: normalizer = "normalizer"
placeholder = "请选择档案分类"
placeholder = "请选择档案分类"
@ input = "handleSearch(collectLevel)"
@ select = "handleSearch(collectLevel)"
@ select = "node=>treeSelectInput(node)"
>
>
< p
< p
slot = "option-label"
slot = "option-label"
@ -24,8 +24,8 @@
< template > { { node . label } } < / template >
< template > { { node . label } } < / template >
< / p >
< / p >
< / treeselect >
< / treeselect >
< el -input v -model = " query.search " clearable size = "small" placeholder = "输入题名或档号" prefix -icon = " el -icon -search " style = "width: 200px;" class = "filter-item" @keyup.enter.native ="handleSearch(collectLevel )" @clear ="handleSearch(collectLevel )" / >
< el -button class = "filter-item filter-search" size = "mini" type = "success" icon = "el-icon-search" @click ="handleSearch(collectLevel )" > 搜索 < / el -button >
< el -input v -model = " query.search " clearable size = "small" placeholder = "输入题名或档号" prefix -icon = " el -icon -search " style = "width: 200px;" class = "filter-item" @keyup.enter.native ="handleSearch()" @clear ="handleSearch()" / >
< el -button class = "filter-item filter-search" size = "mini" type = "success" icon = "el-icon-search" @click ="handleSearch()" > 搜索 < / el -button >
< el -button class = "filter-item filter-refresh" size = "mini" type = "warning" icon = "el-icon-refresh-left" @click ="resetQuery" > 重置 < / el -button >
< el -button class = "filter-item filter-refresh" size = "mini" type = "warning" icon = "el-icon-refresh-left" @click ="resetQuery" > 重置 < / el -button >
< / div >
< / div >
< / div >
< / div >
@ -40,6 +40,8 @@
height = "calc(100vh - 600px)"
height = "calc(100vh - 600px)"
: row - class - name = "tableRowClassName"
: row - class - name = "tableRowClassName"
: row - key = "rowKey"
: row - key = "rowKey"
@ row - click = "clickRowHandler"
@ cell - dblclick = "tableDoubleClick"
>
>
< el -table -column label = "序号" width = "55" align = "center" show -overflow -tooltip >
< el -table -column label = "序号" width = "55" align = "center" show -overflow -tooltip >
< template slot -scope = " scope " >
< template slot -scope = " scope " >
@ -116,7 +118,7 @@
< el -table -column type = "selection" width = "55" :reserve-selection ="true" align = "center" / >
< el -table -column type = "selection" width = "55" :reserve-selection ="true" align = "center" / >
< el -table -column label = "序号" width = "55" align = "center" show -overflow -tooltip >
< el -table -column label = "序号" width = "55" align = "center" show -overflow -tooltip >
< template slot -scope = " scope " >
< template slot -scope = " scope " >
< span > { { ( p age. page === 1 ? 0 : ( p age. page === 0 ? 0 : p age. page - 1 ) ) * p age. size + scope . $index + 1 } } < / span >
< span > { { ( fileP age. page === 1 ? 0 : ( fileP age. page === 0 ? 0 : fileP age. page - 1 ) ) * fileP age. size + scope . $index + 1 } } < / span >
< / template >
< / template >
< / e l - t a b l e - c o l u m n >
< / e l - t a b l e - c o l u m n >
< el -table -column prop = "file_name" label = "原文名称" show -overflow -tooltip min -width = " 140 " / >
< el -table -column prop = "file_name" label = "原文名称" show -overflow -tooltip min -width = " 140 " / >
@ -126,36 +128,36 @@
{ { getFileSize ( scope . row . file_size ) } }
{ { getFileSize ( scope . row . file_size ) } }
< / template >
< / template >
< / e l - t a b l e - c o l u m n >
< / e l - t a b l e - c o l u m n >
< el -table -column prop = "file_state " label = "解析状态" min -width = " 60 " align = "center" class -name = " parse -column " >
< el -table -column prop = "is_analysis " label = "解析状态" min -width = " 60 " align = "center" class -name = " parse -column " >
< template slot -scope = " scope " >
< template slot -scope = " scope " >
< span v-if ="scope.row.file_state===0 " class="row-state" > 未解析 < / span >
< span v-if ="scope.row.file_state===1 " class="row-state row-warehousing state-active" > 解析中 < / span >
< span v-if ="scope.row.file_state===2 " class="row-state row-binding state-active" > 已解析 < / span >
< span v-if ="scope.row.is_analysis===-1 " class="row-state" > 未解析 < / span >
< span v-if ="scope.row.is_analysis===0 " class="row-state row-warehousing state-active" > 解析中 < / span >
< span v-if ="scope.row.is_analysis===1 " class="row-state row-binding state-active" > 已解析 < / span >
< / template >
< / template >
< / e l - t a b l e - c o l u m n >
< / e l - t a b l e - c o l u m n >
< el -table -column prop = "file_state " label = "解析操作" min -width = " 60 " align = "center" class -name = " parse -column " >
< el -table -column prop = "is_analysis " label = "解析操作" min -width = " 60 " align = "center" class -name = " parse -column " >
< template slot -scope = " scope " >
< template slot -scope = " scope " >
< el -button v-if ="scope.row.file_state===0 " size="mini" class="check-btn" style="padding: 5px; margin: 0;" @click="handleCurrentAIOcr(scope.row)" >
< el -button v-if ="scope.row.is_analysis===-1 " size="mini" class="check-btn" style="padding: 5px; margin: 0;" @click="handleCurrentAIOcr(scope.row)" >
< i class = "iconfont icon-wenjianjiexi" / >
< i class = "iconfont icon-wenjianjiexi" / >
解析
解析
< / e l - b u t t o n >
< / e l - b u t t o n >
< el -button v-if ="scope.row.file_state===2 " size="mini" class="check-btn" style="padding: 5px; margin: 0;" @click="handleEditAIOcr(scope.row)" >
< el -button v-if ="scope.row.is_analysis===1 " size="mini" class="check-btn" style="padding: 5px; margin: 0;" @click="handleEditAIOcr(scope.row)" >
< i class = "iconfont icon-bianji" / >
< i class = "iconfont icon-bianji" / >
编辑
编辑
< / e l - b u t t o n >
< / e l - b u t t o n >
< / template >
< / template >
< / e l - t a b l e - c o l u m n >
< / e l - t a b l e - c o l u m n >
< el -table -column prop = "file_mark_state " label = "标注状态" min -width = " 60 " align = "center" class -name = " mark -column " >
< el -table -column prop = "is_mark " label = "标注状态" min -width = " 60 " align = "center" class -name = " mark -column " >
< template slot -scope = " scope " >
< template slot -scope = " scope " >
< span v-if ="scope.row.file_mark_state ===0" class="row-state" > 未标注 < / span >
< span v-if ="scope.row.file_mark_state ===1" class="row-state row-binding state-active" > 已标注 < / span >
< span v-if ="scope.row.is_mark ===0" class="row-state" > 未标注 < / span >
< span v-if ="scope.row.is_mark ===1" class="row-state row-binding state-active" > 已标注 < / span >
< / template >
< / template >
< / e l - t a b l e - c o l u m n >
< / e l - t a b l e - c o l u m n >
< el -table -column prop = "file_mark_state " label = "标注操作" min -width = " 60 " align = "center" class -name = " mark -column " >
< el -table -column prop = "is_mark " label = "标注操作" min -width = " 60 " align = "center" class -name = " mark -column " >
< template slot -scope = " scope " >
< template slot -scope = " scope " >
< el -button v-if ="scope.row.file_state===2 " size="mini" class="check-btn" style="padding: 5px; margin: 0;" @click="handleMarkKeyword(scope.row)" >
< el -button v-if ="scope.row.is_analysis===1 " size="mini" class="check-btn" style="padding: 5px; margin: 0;" @click="handleMarkKeyword(scope.row)" >
< i class = "iconfont icon-bianji" / >
< i class = "iconfont icon-bianji" / >
{ { scope . row . file_mark_state === 1 ? '编辑' : '标注' } }
{ { scope . row . is_mark === 1 ? '编辑' : '标注' } }
< / e l - b u t t o n >
< / e l - b u t t o n >
< / template >
< / template >
< / e l - t a b l e - c o l u m n >
< / e l - t a b l e - c o l u m n >
@ -175,21 +177,24 @@
< / div >
< / div >
< EditOcrContent ref = "ocrRefs" / >
< EditOcrContent ref = "ocrRefs" / >
< KeywordMark ref = "markRefs" / >
< KeywordMark ref = "markRefs" / >
<!-- 档案详情 -- >
< ArchivesInfo ref = "archivesInfo" :selected-category ="selectedCategory" :arc-id ="arcId" :is-title-type ="3" :is-collect ="true" / >
< / div >
< / div >
< / template >
< / template >
< script >
< script >
import { header , form } from '@crud/crud'
import { header , form } from '@crud/crud'
import { FetchInitCategoryViewTable , FetchInitCategoryView } from '@/api/collect/collect'
import { FetchInitCategoryViewTable , FetchInitCategoryView , FetchManualAnalysis } from '@/api/collect/collect'
import { FetchArchivesClassTree } from '@/api/system/archivesClass'
import { FetchArchivesClassTree } from '@/api/system/archivesClass'
import Treeselect from '@riophae/vue-treeselect'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import { mapGetters } from 'vuex'
import { mapGetters } from 'vuex'
import EditOcrContent from './module/editOcrContent'
import EditOcrContent from './module/editOcrContent'
import KeywordMark from './module/keywordMark'
import KeywordMark from './module/keywordMark'
import ArchivesInfo from '@/views/collectReorganizi/collectionLibrary/module/archivesInfo/index'
export default {
export default {
name : 'Sorted' ,
name : 'Sorted' ,
components : { EditOcrContent , KeywordMark , Treeselect } ,
components : { EditOcrContent , KeywordMark , Treeselect , ArchivesInfo } ,
mixins : [
mixins : [
header ( ) ,
header ( ) ,
form ( { } )
form ( { } )
@ -202,6 +207,11 @@ export default {
}
}
}
}
} ,
} ,
provide ( ) {
return {
parentsData : this
}
} ,
data ( ) {
data ( ) {
return {
return {
query : {
query : {
@ -219,64 +229,10 @@ export default {
size : 10 ,
size : 10 ,
total : 0
total : 0
} ,
} ,
currentParentRow : { } ,
parentId : null ,
fileLoading : false ,
fileLoading : false ,
fileData : [
{
'create_time' : '2025-3-6 10:29:43' ,
'file_name' : 'DAT 18-2022 档案著录规则_02.png' ,
'file_type' : 'png' ,
'file_dpi' : '1653px*2339px' ,
'id' : '6D48990DF88B21EB7609EB' ,
'archive_id' : 'EC7D3E9798DE5DD7A6DFC0' ,
'file_size' : 436989 ,
'file_state' : 0 ,
'file_mark_state' : 0
} ,
{
'create_time' : '2025-3-6 10:29:43' ,
'file_name' : 'DAT 18-2022 档案著录规则_04.png' ,
'file_type' : 'png' ,
'file_dpi' : '1653px*2339px' ,
'id' : '7A699E8D7FB01E3D7C1653' ,
'archive_id' : 'EC7D3E9798DE5DD7A6DFC0' ,
'file_size' : 512453 ,
'file_state' : 1 ,
'file_mark_state' : 0
} ,
{
'create_time' : '2025-3-6 10:29:43' ,
'file_name' : 'DAT 18-2022 档案著录规则_00.png' ,
'file_type' : 'png' ,
'file_dpi' : '1653px*2339px' ,
'id' : '8A1F52E855304609020EB3' ,
'archive_id' : 'EC7D3E9798DE5DD7A6DFC0' ,
'file_size' : 289748 ,
'file_state' : 2 ,
'file_mark_state' : 0
} ,
{
'create_time' : '2025-3-6 10:29:43' ,
'file_name' : 'DAT 18-2022 档案著录规则_01.png' ,
'file_type' : 'png' ,
'file_dpi' : '1653px*2339px' ,
'id' : 'A20895478FDC988B7EA6D5' ,
'archive_id' : 'EC7D3E9798DE5DD7A6DFC0' ,
'file_size' : 686235 ,
'file_state' : 2 ,
'file_mark_state' : 0
} ,
{
'create_time' : '2025-3-6 10:29:43' ,
'file_name' : 'DAT 18-2022 档案著录规则_03.png' ,
'file_type' : 'png' ,
'file_dpi' : '1653px*2339px' ,
'id' : 'D594A10A3C78F3A5EB17B9' ,
'archive_id' : 'EC7D3E9798DE5DD7A6DFC0' ,
'file_size' : 466450 ,
'file_state' : 2 ,
'file_mark_state' : 1
}
] ,
fileData : [ ] ,
filePage : {
filePage : {
page : 1 ,
page : 1 ,
size : 10 ,
size : 10 ,
@ -341,10 +297,11 @@ export default {
'project_class' : null ,
'project_class' : null ,
'archive_ctg_no' : null
'archive_ctg_no' : null
}
}
this . handleSearch ( this . collectLevel )
} ,
handleSearch ( collectLevel ) {
this . currentParentRow = { }
this . parentId = null
this . fileData = [ ]
this . $refs . tableFile . clearSelection ( )
this . getAiFileList ( )
} ,
} ,
rowKey ( row ) {
rowKey ( row ) {
return row . id
return row . id
@ -372,51 +329,105 @@ export default {
}
}
} )
} )
this . $nextTick ( ( ) => {
this . $nextTick ( ( ) => {
console . log ( '2222' )
this . getAiFileList ( )
this . getAiFileList ( )
} )
} )
}
}
} )
} )
} ,
} ,
async getAiFileList ( ) {
this . loading = true
this . archivesTable = [ ]
getAiFileList ( ) {
if ( ! this . parentId ) {
this . loading = true
this . archivesTable = [ ]
} else {
this . fileLoading = true
}
this . fileData = [ ]
const params = {
const params = {
'categoryId' : this . selectedCategory . id ,
'categoryId' : this . selectedCategory . id ,
'categoryLevel' : 3 ,
'parentId' : null ,
'ignore' : true ,
'categoryLevel' : this . parentId ? 4 : 3 ,
'parentId' : this . parentId ? this . parentId : null ,
'ignore' : ! this . parentId ,
'isdel' : false ,
'isdel' : false ,
'page' : this . page . page === 0 ? 0 : this . page . page - 1 ,
'page' : ! this . parentId ? ( this . page . page === 0 ? 0 : this . page . page - 1 ) : 0 ,
'size' : this . page . size ,
'size' : this . page . size ,
'sort' : this . arrySort ,
'retention' : null ,
'security_class' : null ,
'search' : this . query . search ,
'medium_type' : null ,
'doc_type' : null ,
'archive_year' : null ,
'organ_or_function' : null ,
'sort' : ! this . parentId ? this . arrySort : null ,
'search' : ! this . parentId ? this . query . search : null ,
'fonds_no' : this . selectedCategory . fondsId ,
'fonds_no' : this . selectedCategory . fondsId ,
'project_class' : this . query . project_class ,
'archive_ctg_no' : this . query . archive_ctg_no
'project_class' : ! this . parentId ? this . query . project_class : null ,
'archive_ctg_no' : ! this . parentId ? this . query . archive_ctg_no : null
}
}
const res = await FetchInitCategoryView ( params )
this . archivesTable = res . list . content
this . page . total = res . list . totalElements
this . loading = false
FetchInitCategoryView ( params ) . then ( ( res ) => {
if ( this . parentId ) {
this . fileData = res . list . content
this . filePage . total = res . list . totalElements
} else {
this . archivesTable = res . list . content
this . page . total = res . list . totalElements
}
setTimeout ( ( ) => {
this . loading = false
this . fileLoading = false
} , 500 )
} )
} ,
handleSearch ( ) {
this . parentId = null
this . fileData = [ ]
this . $refs . tableFile . clearSelection ( )
this . page . page = 1
this . getAiFileList ( )
} ,
treeSelectInput ( value ) {
console . log ( value )
this . query . archive_ctg_no = value . code
this . parentId = null
this . fileData = [ ]
this . $refs . tableFile . clearSelection ( )
this . handleSearch ( )
} ,
} ,
handleSizeChange ( size ) {
handleSizeChange ( size ) {
this . page . size = size
this . page . size = size
this . page . page = 1
this . page . page = 1
this . parentId = null
this . fileData = [ ]
this . $refs . tableFile . clearSelection ( )
this . getAiFileList ( )
this . getAiFileList ( )
} ,
} ,
handleCurrentPage ( val ) {
handleCurrentPage ( val ) {
this . page . page = val
this . page . page = val
this . parentId = null
this . fileData = [ ]
this . $refs . tableFile . clearSelection ( )
this . getAiFileList ( )
this . getAiFileList ( )
} ,
} ,
clickRowHandler ( row ) {
console . log ( 'tableRow' , row )
this . currentParentRow = row
this . parentId = row . id
this . $refs . tableFile . clearSelection ( )
this . getAiFileList ( )
} ,
tableDoubleClick ( row ) {
this . arcId = row . id
this . $nextTick ( ( ) => {
this . $refs . archivesInfo . isHasFile = true
this . $refs . archivesInfo . detailTitle = '文件详情'
this . $refs . archivesInfo . getDetial ( 3 , row . id )
this . $refs . archivesInfo . isFourTest = true
this . $refs . archivesInfo . archivesInfoVisible = true
this . $refs . archivesInfo . archivesTabIndex = 0
} )
} ,
/ / 文 件 刷 新
/ / 文 件 刷 新
refreshFile ( ) {
refreshFile ( ) {
this . parentId = this . currentParentRow . id
if ( this . parentId ) {
this . $refs . tableFile . clearSelection ( )
this . getAiFileList ( )
}
} ,
} ,
/ / t a b l e - 双 击 查 看 详 情
/ / t a b l e - 双 击 查 看 详 情
tableDoubleClickFile ( row ) {
tableDoubleClickFile ( row ) {
@ -430,8 +441,6 @@ export default {
} ,
} ,
/ / 批 量 解 析
/ / 批 量 解 析
batchAIOcrFile ( ) {
batchAIOcrFile ( ) {
console . log ( 'fileSelections' , this . fileSelections )
this . $confirm ( '当前所选文件即将进行批量解析' + '<span>你是否还要继续?</span>' , '提示' , {
this . $confirm ( '当前所选文件即将进行批量解析' + '<span>你是否还要继续?</span>' , '提示' , {
confirmButtonText : '继续' ,
confirmButtonText : '继续' ,
cancelButtonText : '取消' ,
cancelButtonText : '取消' ,
@ -440,43 +449,35 @@ export default {
} ) . then ( ( ) => {
} ) . then ( ( ) => {
/ / 筛 选 出 已 解 析 得 文 件 , 避 免 重 复 解 析
/ / 筛 选 出 已 解 析 得 文 件 , 避 免 重 复 解 析
const filteredFiles = this . fileSelections . filter ( file => file . file_state !== 2 )
const filteredFiles = this . fileSelections . filter ( file => file . file_state !== 2 )
console . log ( filteredFiles )
/ / c o n s t p a r a m s = {
/ / ' c a t e g o r y I d ' : t h i s . s e l e c t e d C a t e g o r y . i d ,
/ / ' a r c h i v e s I d s ' : a r c h i v e s I d s
/ / }
/ / F e t c h D i s b a n d A r c h i v e s ( p a r a m s ) . t h e n ( ( r e s ) = > {
/ / i f ( r e s . c o d e ! = = 5 0 0 ) {
/ / t h i s . $ m e s s a g e ( { m e s s a g e : ' 提 交 解 析 文 件 成 功 ' , t y p e : ' s u c c e s s ' , o f f s e t : 8 } )
/ / t h i s . h a n d l e S e a r c h ( t h i s . c o l l e c t L e v e l )
/ / } e l s e {
/ / t h i s . $ m e s s a g e ( { m e s s a g e : ' 提 交 解 析 文 件 失 败 ' , t y p e : ' e r r o r ' , o f f s e t : 8 } )
/ / }
/ / } ) . c a t c h ( e r r = > {
/ / c o n s o l e . l o g ( e r r )
/ / } )
this . handleAnalysis ( filteredFiles )
} ) . catch ( ( ) => {
} ) . catch ( ( ) => {
} )
} )
} ,
} ,
/ / 单 独 解 析 文 件
/ / 单 独 解 析 文 件
handleCurrentAIOcr ( row ) {
handleCurrentAIOcr ( row ) {
/ / c o n s t p a r a m s = {
/ / ' c a t e g o r y I d ' : t h i s . s e l e c t e d C a t e g o r y . i d ,
/ / ' a r c h i v e s I d s ' : a r c h i v e s I d s
/ / }
/ / F e t c h D i s b a n d A r c h i v e s ( p a r a m s ) . t h e n ( ( r e s ) = > {
/ / i f ( r e s . c o d e ! = = 5 0 0 ) {
/ / t h i s . $ m e s s a g e ( { m e s s a g e : ' 提 交 解 析 文 件 成 功 ' , t y p e : ' s u c c e s s ' , o f f s e t : 8 } )
/ / t h i s . h a n d l e S e a r c h ( t h i s . c o l l e c t L e v e l )
/ / } e l s e {
/ / t h i s . $ m e s s a g e ( { m e s s a g e : ' 提 交 解 析 文 件 失 败 ' , t y p e : ' e r r o r ' , o f f s e t : 8 } )
/ / }
/ / } ) . c a t c h ( e r r = > {
/ / c o n s o l e . l o g ( e r r )
/ / } )
this . fileSelections = [ ]
this . fileSelections . push ( row )
console . log ( 'this.fileSelections' , this . fileSelections )
this . handleAnalysis ( this . fileSelections )
} ,
handleAnalysis ( filteredFiles ) {
const params = {
'categoryId' : this . selectedCategory . id ,
'fileJsonString' : JSON . stringify ( filteredFiles )
}
FetchManualAnalysis ( params ) . then ( ( res ) => {
console . log ( 'res' , res )
if ( res . code !== 500 ) {
this . $message ( { message : '提交解析文件成功' , type : 'success' , offset : 8 } )
} else {
this . $message ( { message : '提交解析文件失败' , type : 'error' , offset : 8 } )
}
} ) . catch ( err => {
console . log ( err )
} )
} ,
} ,
handleEditAIOcr ( row ) {
handleEditAIOcr ( row ) {
this . $refs . ocrRefs . ocrVisible = true
this . $refs . ocrRefs . getFileConent ( row )
} ,
} ,
handleMarkKeyword ( row ) {
handleMarkKeyword ( row ) {
this . $refs . markRefs . markVisible = true
this . $refs . markRefs . markVisible = true