Browse Source

优化/修复bug

master
xuhuajiao 7 months ago
parent
commit
6f2085f14d
  1. 9
      src/api/ai/ai.js
  2. 1
      src/assets/styles/archives-manage.scss
  3. 6
      src/views/archiveKeeping/caseManage/caseList/index.vue
  4. 2
      src/views/archiveKeeping/inventoryCheck/module/checkDetail.vue
  5. 2
      src/views/archiveKeeping/inventoryCheck/module/form.vue
  6. 43
      src/views/archivesManage/managementLibrary/anjuan/tableList.vue
  7. 3
      src/views/archivesManage/managementLibrary/index.vue
  8. 28
      src/views/archivesManage/managementLibrary/juannei/index.vue
  9. 31
      src/views/archivesManage/managementLibrary/mixins/index.js
  10. 5
      src/views/archivesManage/managementLibrary/module/fourTestInfo/index.vue
  11. 4
      src/views/archivesManage/managementLibrary/module/handleInfo/index.vue
  12. 6
      src/views/archivesManage/managementLibrary/module/packingBox/index.vue
  13. 28
      src/views/archivesManage/managementLibrary/project/index.vue
  14. 45
      src/views/collectReorganizi/collectionLibrary/anjuan/tableList.vue
  15. 16
      src/views/collectReorganizi/collectionLibrary/file/index.vue
  16. 9
      src/views/collectReorganizi/collectionLibrary/index.vue
  17. 44
      src/views/collectReorganizi/collectionLibrary/juannei/index.vue
  18. 126
      src/views/collectReorganizi/collectionLibrary/mixins/index.js
  19. 13
      src/views/collectReorganizi/collectionLibrary/module/archivesFilling/index.vue
  20. 1
      src/views/collectReorganizi/collectionLibrary/module/archivesInfo/index.vue
  21. 6
      src/views/collectReorganizi/collectionLibrary/module/blukEditing/index.vue
  22. 7
      src/views/collectReorganizi/collectionLibrary/module/bulkImport/index.vue
  23. 503
      src/views/collectReorganizi/collectionLibrary/module/collectHeader.vue
  24. 5
      src/views/collectReorganizi/collectionLibrary/module/collectMoveFile/index.vue
  25. 5
      src/views/collectReorganizi/collectionLibrary/module/combineFile/index.vue
  26. 5
      src/views/collectReorganizi/collectionLibrary/module/fileSeqAdjustment/index.vue
  27. 10
      src/views/collectReorganizi/collectionLibrary/module/fourTest/index.vue
  28. 8
      src/views/collectReorganizi/collectionLibrary/module/fourTestInfo/index.vue
  29. 8
      src/views/collectReorganizi/collectionLibrary/module/handleInfo/index.vue
  30. 5
      src/views/collectReorganizi/collectionLibrary/module/insertFile/index.vue
  31. 20
      src/views/collectReorganizi/collectionLibrary/module/markInfo/index.vue
  32. 63
      src/views/collectReorganizi/collectionLibrary/module/packingBox/index.vue
  33. 7
      src/views/collectReorganizi/collectionLibrary/module/quickPaper/index.vue
  34. 42
      src/views/collectReorganizi/collectionLibrary/project/index.vue
  35. 43
      src/views/components/category/PreviewForm.vue
  36. 2
      src/views/storeManage/levelManage/index.vue
  37. 2
      src/views/storeManage/tagManage/bindTagList/index.vue
  38. 2
      src/views/storeManage/tagManage/tagLog/index.vue

9
src/api/ai/ai.js

@ -1,6 +1,13 @@
import request from '@/utils/request'
import qs from 'qs'
export function FetchInitAssistEnter(params) {
return request({
url: 'api/ai/initAssistEnter' + '?' + qs.stringify(params, { indices: false }),
method: 'get'
})
}
// AI辅助著录预生成档案
export function FetchDoHandleEnterAnalysis(params) {
return request({
@ -44,4 +51,4 @@ export function FetchInitShowByCategory(params) {
})
}
export default { FetchDoHandleEnterAnalysis, FetchInitAssistEnterTemp, FetchDelAssistEnter, FetchHandleEnterAnalysis, FetchInitShowByCategory }
export default { FetchInitAssistEnter, FetchDoHandleEnterAnalysis, FetchInitAssistEnterTemp, FetchDelAssistEnter, FetchHandleEnterAnalysis, FetchInitShowByCategory }

1
src/assets/styles/archives-manage.scss

@ -176,6 +176,7 @@
.upload-file{
position: relative;
z-index: 1001;
overflow: hidden;
.upload-curd{
display: flex;
flex-direction: row;

6
src/views/archiveKeeping/caseManage/caseList/index.vue

@ -92,9 +92,9 @@
</template>
</el-table-column>
<el-table-column prop="cnName" label="门类" align="center" min-width="120" :show-overflow-tooltip="true" />
<el-table-column prop="caseName" label="盒名称" :show-overflow-tooltip="true" align="center" min-width="150" />
<el-table-column prop="caseName" label="盒名称" :show-overflow-tooltip="true" align="center" min-width="200" />
<el-table-column prop="caseCode" label="盒号" :show-overflow-tooltip="true" align="center" min-width="180" />
<el-table-column prop="tid" label="TID" align="center" min-width="180" />
<el-table-column prop="tid" label="电子标签" align="center" min-width="180" />
<el-table-column prop="barcode" label="条形码" align="center" min-width="140" />
<el-table-column label="存放位置" align="center" min-width="300">
<template slot-scope="scope">
@ -222,8 +222,8 @@ export default {
}
],
options: [
{ value: 'caseCode', label: '盒号' },
{ value: 'caseName', label: '盒名称' },
{ value: 'caseCode', label: '盒号' },
{ value: 'tid', label: '电子标签' },
{ value: 'barcode', label: '条码' }
],

2
src/views/archiveKeeping/inventoryCheck/module/checkDetail.vue

@ -107,7 +107,7 @@
<el-table-column prop="storageNum" align="center" label="在库" min-width="60" />
<el-table-column prop="borrowNum" align="center" label="已借" min-width="60" />
<el-table-column prop="caseName" label="盒名称" :show-overflow-tooltip="true" align="center" min-width="190" />
<el-table-column prop="tid" label="TID" align="center" min-width="220" />
<el-table-column prop="tid" label="电子标签" align="center" min-width="220" />
<el-table-column prop="barcode" label="条形码" align="center" min-width="120" />
<el-table-column label="存放位置" align="center" min-width="300">
<template slot-scope="scope">

2
src/views/archiveKeeping/inventoryCheck/module/form.vue

@ -126,7 +126,7 @@
</el-table-column>
<el-table-column prop="depositNum" label="已装" align="center" min-width="56" />
<el-table-column prop="caseName" label="盒名称" :show-overflow-tooltip="true" align="center" min-width="190" />
<el-table-column prop="tid" label="TID" align="center" min-width="180" />
<el-table-column prop="tid" label="电子标签" align="center" min-width="180" />
<el-table-column prop="barcode" label="条形码" align="center" min-width="120" />
<el-table-column label="存放位置" align="center" min-width="300">
<template slot-scope="scope">

43
src/views/archivesManage/managementLibrary/anjuan/tableList.vue

@ -15,13 +15,15 @@
@select-all="selectAll"
@selection-change="crud.selectionChangeHandler"
@row-click="clickRowHandler"
@cell-dblclick="tableDoubleClick"
@row-dblclick="tableDoubleClick"
@select="handleCurrentChange"
@mousedown.native="onMouseDown"
@mouseup.native="onMouseUp"
>
<el-table-column type="selection" :reserve-selection="true" width="55" align="center" />
<el-table-column label="序号" width="55" align="center" show-overflow-tooltip>
<template slot-scope="scope">
<span>{{ (page.page === 1 ? 0 : (page.page === 0 ? 0 : page.page - 1)) * page.size + scope.$index + 1 }}</span>
<span>{{ page.page * page.size + scope.$index + 1 }}</span>
</template>
</el-table-column>
<!-- <el-table-column type="index" label="序号" width="55" align="center" /> -->
@ -93,7 +95,7 @@
<!--分页组件-->
<el-pagination
v-if="anjuanData.length !== 0"
:current-page="page.page"
:current-page="currentPage"
:total="page.total"
:page-size="page.size"
:pager-count="5"
@ -154,7 +156,11 @@ export default {
title: '',
selections: [],
yearData: [],
parentId: null
parentId: null,
mousedownTime: 0,
mousedownX: 0,
mousedownY: 0,
currentPage: 1
}
},
computed: {
@ -230,6 +236,14 @@ export default {
selectAll(val) {
this.selections = val
},
onMouseDown(event) {
this.mousedownTime = Date.now()
this.mousedownX = event.clientX
this.mousedownY = event.clientY
},
onMouseUp() {
//
},
// table -
tableDoubleClick(row) {
if (this.timer) {
@ -269,19 +283,32 @@ export default {
} else {
this.title = '案卷'
}
const clickTime = Date.now()
const clickX = event.clientX
const clickY = event.clientY
const timeDiff = clickTime - this.mousedownTime
const distance = Math.sqrt(
Math.pow(clickX - this.mousedownX, 2) + Math.pow(clickY - this.mousedownY, 2)
)
//
if (timeDiff < 300 && distance < 10) {
this.timer = setTimeout(() => {
this.parentId = row.id
this.openJuannei('所属' + this.title + ':' + row.archive_no, this.parentId)
}, 300)
this.selections = this.crud.selections
}
},
//
handleCurrentChange(selection, row) {
this.selections = selection
},
handleSizeChange(size) {
this.currentPage = 1
this.page.size = size
this.page.page = 1
this.page.page = 0
localStorage.setItem('currentPageSize', size)
if (this.selectedCategory.arrangeType === 3) {
this.getViewTable(2, this.parentsData.parentsProjectId)
} else if (this.selectedCategory.arrangeType === 1) {
@ -290,8 +317,10 @@ export default {
this.getViewTable(2, null)
}
},
handleCurrentPage(val) {
this.page.page = val
handleCurrentPage(pageVal) {
this.currentPage = pageVal
this.page.page = pageVal - 1
localStorage.setItem('currentPage', JSON.stringify(this.page.page))
if (this.selectedCategory.arrangeType === 3) {
this.getViewTable(2, this.parentsData.parentsProjectId)
} else if (this.selectedCategory.arrangeType === 1) {

3
src/views/archivesManage/managementLibrary/index.vue

@ -335,6 +335,9 @@ export default {
}
},
handleNodeClick(val) {
localStorage.removeItem('savePrevFromData')
localStorage.removeItem('currentPageSize')
localStorage.removeItem('currentPage')
this.smartQuery = {
// 'retention': null, //
// 'security_class': null, //

28
src/views/archivesManage/managementLibrary/juannei/index.vue

@ -24,8 +24,10 @@
@select-all="selectAll"
@selection-change="crud.selectionChangeHandler"
@row-click="clickRowHandler"
@cell-dblclick="tableDoubleClick"
@row-dblclick="tableDoubleClick"
@select="handleCurrentChange"
@mousedown.native="onMouseDown"
@mouseup.native="onMouseUp"
>
<el-table-column type="selection" width="55" :reserve-selection="true" align="center" />
<el-table-column label="序号" width="55" align="center" show-overflow-tooltip>
@ -158,7 +160,10 @@ export default {
arcId: '',
test: '',
selections: [],
parentId: null
parentId: null,
mousedownTime: 0,
mousedownX: 0,
mousedownY: 0
}
},
computed: {
@ -210,6 +215,14 @@ export default {
rowKey(row) {
return row.id
},
onMouseDown(event) {
this.mousedownTime = Date.now()
this.mousedownX = event.clientX
this.mousedownY = event.clientY
},
onMouseUp() {
//
},
// table
tableRowClassName({ row, rowIndex }) {
// console.log('', row, rowIndex)
@ -254,11 +267,22 @@ export default {
if (this.timer) {
clearTimeout(this.timer)
}
const clickTime = Date.now()
const clickX = event.clientX
const clickY = event.clientY
const timeDiff = clickTime - this.mousedownTime
const distance = Math.sqrt(
Math.pow(clickX - this.mousedownX, 2) + Math.pow(clickY - this.mousedownY, 2)
)
//
if (timeDiff < 300 && distance < 10) {
this.timer = setTimeout(() => {
this.parentId = row.id
this.openFile('所属卷内:' + row.archive_no, this.parentId)
}, 300)
this.selections = this.crud.selections
}
},
//
handleCurrentChange(selection, row) {

31
src/views/archivesManage/managementLibrary/mixins/index.js

@ -16,7 +16,7 @@ export const manageLibraryCrud = {
fileData: [],
arrySort: [],
page: {
page: 1,
page: localStorage.getItem('currentPage') ? parseInt(localStorage.getItem('currentPage')) : 0,
size: 10,
total: 0
},
@ -110,6 +110,12 @@ export const manageLibraryCrud = {
})
},
getViewTableList(categoryLevel, parentsId, type) {
const currentPageSize = localStorage.getItem('currentPageSize')
if (currentPageSize) {
this.page.size = parseInt(currentPageSize)
} else {
this.page.size = 10
}
const params = {
'parentId': parentsId,
'categoryId': this.selectedCategory.id,
@ -127,7 +133,7 @@ export const manageLibraryCrud = {
'fonds_no': this.smartQuery.fonds_no,
'project_class': this.query.project_class,
'archive_ctg_no': this.query.archive_ctg_no,
'page': this.page.page === 0 ? 0 : this.page.page - 1,
'page': this.page.page,
'size': this.page.size,
'sort': this.arrySort
}
@ -145,8 +151,9 @@ export const manageLibraryCrud = {
}
if (type === 'search') {
projectObj.projectData = res.list.content
projectObj.page.page = 1
projectObj.page.size = 10
projectObj.currentPage = this.page.page + 1
// projectObj.page.page = 1
// projectObj.page.size = 10
projectObj.page.total = res.list.totalElements
projectObj.getTableDisplayFieldsLoading = false
}
@ -162,8 +169,9 @@ export const manageLibraryCrud = {
// 搜索/新增/编辑 非 案卷是主页的时候
if (type === 'search') {
anjuanObj.anjuanData = res.list.content
anjuanObj.page.page = 1
anjuanObj.page.size = 10
anjuanObj.currentPage = this.page.page + 1
// anjuanObj.page.page = 1
// anjuanObj.page.size = 10
anjuanObj.page.total = res.list.totalElements
anjuanObj.getTableDisplayFieldsLoading = false
}
@ -179,8 +187,9 @@ export const manageLibraryCrud = {
}
if (type === 'search') {
wjObj.anjuanData = res.list.content
wjObj.page.page = 1
wjObj.page.size = 10
wjObj.currentPage = this.page.page + 1
// wjObj.page.page = 1
// wjObj.page.size = 10
wjObj.page.total = res.list.totalElements
wjObj.getTableDisplayFieldsLoading = false
}
@ -190,8 +199,9 @@ export const manageLibraryCrud = {
this.page.total = res.list.totalElements
if (type === 'search') {
this.parentsData.$refs.juanneiEle.junneiData = res.list.content
this.parentsData.$refs.fileEle.page.page = 1
this.parentsData.$refs.fileEle.page.size = 10
this.parentsData.$refs.juanneiEle.currentPage = this.page.page + 1
// this.parentsData.$refs.fileEle.page.page = 1
// this.parentsData.$refs.fileEle.page.size = 10
this.parentsData.$refs.juanneiEle.page.total = res.list.totalElements
this.parentsData.$refs.juanneiEle.getTableDisplayFieldsLoading = false
}
@ -202,6 +212,7 @@ export const manageLibraryCrud = {
this.page.total = res.list.totalElements
if (type === 'search') {
this.parentsData.$refs.fileEle.fileData = res.list.content
this.parentsData.$refs.fileEle.currentPage = this.page.page + 1
this.parentsData.$refs.fileEle.page.total = res.list.totalElements
this.parentsData.$refs.fileEle.getTableDisplayFieldsLoading = false
}

5
src/views/archivesManage/managementLibrary/module/fourTestInfo/index.vue

@ -122,4 +122,9 @@ export default {
justify-content: flex-end;
margin: -6px 0 4px 0;
}
.fourTest-container{
height: calc(100vh - 380px) !important;
overflow: hidden;
}
</style>

4
src/views/archivesManage/managementLibrary/module/handleInfo/index.vue

@ -112,4 +112,8 @@ export default {
<style lang='scss' scoped>
@import "~@/assets/styles/collect-reorganizi.scss";
.fourTest-container{
height: calc(100vh - 380px) !important;
overflow: hidden;
}
</style>

6
src/views/archivesManage/managementLibrary/module/packingBox/index.vue

@ -40,7 +40,7 @@
<el-table-column prop="caseCode" label="盒号" min-width="120" align="center" />
<el-table-column prop="caseName" label="盒名称" min-width="120" align="center" />
<el-table-column prop="depositNum" label="已装" min-width="60" align="center" />
<el-table-column prop="tid" label="TID" min-width="120" align="center" />
<el-table-column prop="tid" label="电子标签" min-width="120" align="center" />
<el-table-column prop="barcode" label="条形码" min-width="120" align="center" />
<el-table-column prop="caseRetention" label="保管期限" min-width="100" align="center" />
<el-table-column prop="caseClass" label="密级" min-width="100" align="center" />
@ -67,7 +67,7 @@
<el-table-column prop="caseCode" label="盒号" min-width="120" align="center" />
<el-table-column prop="caseName" label="盒名称" min-width="120" align="center" />
<el-table-column prop="depositNum" label="已装" min-width="100" align="center" />
<el-table-column prop="tid" label="TID" min-width="120" align="center" />
<el-table-column prop="tid" label="电子标签" min-width="120" align="center" />
<el-table-column prop="barcode" label="条形码" min-width="120" align="center" />
<el-table-column prop="caseRetention" label="保管期限" min-width="100" align="center" />
<el-table-column prop="caseClass" label="密级" min-width="100" align="center" />
@ -92,7 +92,7 @@
<el-table-column prop="caseCode" label="盒号" min-width="120" align="center" />
<el-table-column prop="caseName" label="盒名称" min-width="120" align="center" />
<el-table-column prop="depositNum" label="已装" min-width="100" align="center" />
<el-table-column prop="tid" label="TID" min-width="120" align="center" />
<el-table-column prop="tid" label="电子标签" min-width="120" align="center" />
<el-table-column prop="barcode" label="条形码" min-width="120" align="center" />
<el-table-column prop="caseRetention" label="保管期限" min-width="100" align="center" />
<el-table-column prop="caseClass" label="密级" min-width="100" align="center" />

28
src/views/archivesManage/managementLibrary/project/index.vue

@ -16,8 +16,10 @@
@select-all="selectAll"
@selection-change="crud.selectionChangeHandler"
@row-click="clickRowHandler"
@cell-dblclick="tableDoubleClick"
@row-dblclick="tableDoubleClick"
@select="handleCurrentChange"
@mousedown.native="onMouseDown"
@mouseup.native="onMouseUp"
>
<el-table-column type="selection" :reserve-selection="true" width="55" align="center" />
<el-table-column label="序号" width="55" align="center" show-overflow-tooltip>
@ -109,7 +111,10 @@ export default {
activeIndex: '1',
selections: [],
yearData: [],
parentId: null
parentId: null,
mousedownTime: 0,
mousedownX: 0,
mousedownY: 0
}
},
watch: {
@ -152,6 +157,14 @@ export default {
selectAll(val) {
this.selections = val
},
onMouseDown(event) {
this.mousedownTime = Date.now()
this.mousedownX = event.clientX
this.mousedownY = event.clientY
},
onMouseUp() {
//
},
// table -
tableDoubleClick(row) {
if (this.timer) {
@ -178,12 +191,23 @@ export default {
if (this.timer) {
clearTimeout(this.timer)
}
const clickTime = Date.now()
const clickX = event.clientX
const clickY = event.clientY
const timeDiff = clickTime - this.mousedownTime
const distance = Math.sqrt(
Math.pow(clickX - this.mousedownX, 2) + Math.pow(clickY - this.mousedownY, 2)
)
//
if (timeDiff < 300 && distance < 10) {
this.timer = setTimeout(() => {
this.parentId = row.id
this.openAnjuan('所属项目:' + row.project_no, this.parentId, row)
this.getDictsList(1)
}, 300)
this.selections = this.crud.selections
}
},
//
handleCurrentChange(selection, row) {

45
src/views/collectReorganizi/collectionLibrary/anjuan/tableList.vue

@ -15,13 +15,15 @@
@select-all="selectAll"
@selection-change="crud.selectionChangeHandler"
@row-click="clickRowHandler"
@cell-dblclick="tableDoubleClick"
@row-dblclick="tableDoubleClick"
@select="handleCurrentChange"
@mousedown.native="onMouseDown"
@mouseup.native="onMouseUp"
>
<el-table-column type="selection" :reserve-selection="true" width="55" align="center" />
<el-table-column label="序号" width="55" align="center" show-overflow-tooltip>
<template slot-scope="scope">
<span>{{ (page.page === 1 ? 0 : (page.page === 0 ? 0 : page.page - 1)) * page.size + scope.$index + 1 }}</span>
<span>{{ page.page * page.size + scope.$index + 1 }}</span>
</template>
</el-table-column>
<!-- <el-table-column type="index" label="序号" width="55" align="center" /> -->
@ -60,7 +62,7 @@
<!--分页组件-->
<el-pagination
v-if="anjuanData.length !== 0"
:current-page="page.page"
:current-page="currentPage"
:total="page.total"
:page-size="page.size"
:pager-count="5"
@ -125,7 +127,11 @@ export default {
title: '',
selections: [],
yearData: [],
parentId: null
parentId: null,
currentPage: 1,
mousedownTime: 0,
mousedownX: 0,
mousedownY: 0
}
},
watch: {
@ -193,6 +199,14 @@ export default {
selectAll(val) {
this.selections = val
},
onMouseDown(event) {
this.mousedownTime = Date.now()
this.mousedownX = event.clientX
this.mousedownY = event.clientY
},
onMouseUp() {
//
},
// table -
tableDoubleClick(row) {
if (this.timer) {
@ -242,19 +256,31 @@ export default {
this.title = '案卷'
}
}
const clickTime = Date.now()
const clickX = event.clientX
const clickY = event.clientY
const timeDiff = clickTime - this.mousedownTime
const distance = Math.sqrt(
Math.pow(clickX - this.mousedownX, 2) + Math.pow(clickY - this.mousedownY, 2)
)
//
if (timeDiff < 300 && distance < 10) {
this.timer = setTimeout(() => {
this.parentId = row.id
localStorage.removeItem('currentPageSize')
this.openJuannei('所属' + this.title + ':' + row.archive_no, this.parentId, row)
}, 300)
// this.selections = this.crud.selections
}
},
//
handleCurrentChange(selection, row) {
this.selections = selection
},
handleSizeChange(size) {
this.currentPage = 1
this.page.size = size
this.page.page = 1
this.page.page = 0
localStorage.setItem('currentPageSize', size)
if (this.activeIndex === 1) {
this.getViewTable(3, null)
} else {
@ -267,8 +293,11 @@ export default {
}
}
},
handleCurrentPage(val) {
this.page.page = val
handleCurrentPage(pageVal) {
console.log('pageVal', pageVal)
this.currentPage = pageVal
this.page.page = pageVal - 1
localStorage.setItem('currentPage', JSON.stringify(this.page.page))
if (this.activeIndex === 1) {
this.getViewTable(3, null)
} else {

16
src/views/collectReorganizi/collectionLibrary/file/index.vue

@ -31,7 +31,7 @@
<el-table-column type="selection" width="55" :reserve-selection="true" align="center" />
<el-table-column label="序号" width="55" align="center" show-overflow-tooltip>
<template slot-scope="scope">
<span>{{ (page.page === 1 ? 0 : (page.page === 0 ? 0 : page.page - 1)) * page.size + scope.$index + 1 }}</span>
<span>{{ page.page * page.size + scope.$index + 1 }}</span>
</template>
</el-table-column>
<!-- <el-table-column type="index" label="序号" width="55" align="center" /> -->
@ -82,7 +82,7 @@
<!--分页组件-->
<el-pagination
v-if="fileData.length !== 0"
:current-page="page.page"
:current-page="currentPage"
:total="page.total"
:page-size="page.size"
:pager-count="5"
@ -145,7 +145,8 @@ export default {
isAjNo: 0,
selections: [],
showCoverVisible: false,
previewSrc: null
previewSrc: null,
currentPage: 1
}
},
computed: {
@ -171,6 +172,7 @@ export default {
this.getViewTable(categoryLevel, parentId, type)
},
closeDrawer() {
localStorage.removeItem('currentPageSize')
this.fileDrawer = false
if (this.selectedCategory.arrangeType === 1) {
this.$parent.parentsAnjuanId = null
@ -215,16 +217,18 @@ export default {
this.selections = selection
},
handleSizeChange(size) {
this.currentPage = 1
this.page.size = size
this.page.page = 1
this.page.page = 0
if (this.selectedCategory.arrangeType === 1) {
this.getViewTable(4, this.parentsData.parentsAnjuanId)
} else {
this.getViewTable(4, this.parentsData.parentsJuanneiId)
}
},
handleCurrentPage(val) {
this.page.page = val
handleCurrentPage(pageVal) {
this.currentPage = pageVal
this.page.page = pageVal - 1
if (this.selectedCategory.arrangeType === 1) {
this.getViewTable(4, this.parentsData.parentsAnjuanId)
} else {

9
src/views/collectReorganizi/collectionLibrary/index.vue

@ -322,6 +322,9 @@ export default {
}
},
handleNodeClick(val) {
localStorage.removeItem('savePrevFromData')
localStorage.removeItem('currentPageSize')
localStorage.removeItem('currentPage')
this.smartQuery = {
// 'retention': null, //
// 'security_class': null, //
@ -339,8 +342,6 @@ export default {
//
localStorage.setItem('currentArchivesKey', JSON.stringify(val))
this.selectedCategory = val
console.log('val', val)
console.log('selectedCategoryselectedCategoryselectedCategoryselectedCategory', val)
if (this.selectedCategory.isType !== 1) {
this.getDictionaryTreeByCategoryId(val.id)
@ -611,6 +612,7 @@ export default {
})
},
handleOpenAnjuan(data, parentId, parentsRow) {
localStorage.removeItem('savePrevFromData')
this.parentsProjectId = parentId
this.parentsProjectRow = parentsRow
this.$refs.anjuanEle.anjuanDrawer = true
@ -626,6 +628,7 @@ export default {
})
},
handleOpenJuannei(data, parentId, parentsRow) {
localStorage.removeItem('savePrevFromData')
this.parentsAnjuanId = parentId
this.parentsAnjuanRow = parentsRow
if (this.selectedCategory.arrangeType === 1 || (this.selectedCategory.arrangeType === 3 && this.$refs.anjuanEle.$refs.ajContent.activeIndex === 1) || (this.selectedCategory.arrangeType === 2 && this.$refs.anjuanEle.$refs.ajContent.activeIndex === 1)) {
@ -647,6 +650,7 @@ export default {
}
},
handleOpenFile(data, parentId) {
localStorage.removeItem('savePrevFromData')
this.parentsJuanneiId = parentId
this.$refs.fileEle.fileDrawer = true
this.$nextTick(() => {
@ -656,6 +660,7 @@ export default {
})
},
handleActive(data) {
localStorage.removeItem('savePrevFromData')
this.smartQuery = {
'retention': null, //
'security_class': null, //

44
src/views/collectReorganizi/collectionLibrary/juannei/index.vue

@ -23,13 +23,15 @@
@select-all="selectAll"
@selection-change="crud.selectionChangeHandler"
@row-click="clickRowHandler"
@cell-dblclick="tableDoubleClick"
@row-dblclick="tableDoubleClick"
@select="handleCurrentChange"
@mousedown.native="onMouseDown"
@mouseup.native="onMouseUp"
>
<el-table-column type="selection" width="55" :reserve-selection="true" align="center" />
<el-table-column label="序号" width="55" align="center" show-overflow-tooltip>
<template slot-scope="scope">
<span>{{ (page.page === 1 ? 0 : (page.page === 0 ? 0 : page.page - 1)) * page.size + scope.$index + 1 }}</span>
<span>{{ page.page * page.size + scope.$index + 1 }}</span>
</template>
</el-table-column>
<!-- <el-table-column type="index" label="序号" width="55" align="center" /> -->
@ -68,7 +70,7 @@
<!--分页组件-->
<el-pagination
v-if="junneiData.length !== 0"
:current-page="page.page"
:current-page="currentPage"
:total="page.total"
:page-size="page.size"
:pager-count="5"
@ -123,7 +125,11 @@ export default {
arcId: '',
test: '',
selections: [],
parentId: null
parentId: null,
currentPage: 1,
mousedownTime: 0,
mousedownX: 0,
mousedownY: 0
}
},
watch: {
@ -167,6 +173,14 @@ export default {
selectAll(val) {
this.selections = val
},
onMouseDown(event) {
this.mousedownTime = Date.now()
this.mousedownX = event.clientX
this.mousedownY = event.clientY
},
onMouseUp() {
//
},
// table -
tableDoubleClick(row) {
if (this.timer) {
@ -195,23 +209,37 @@ export default {
if (this.timer) {
clearTimeout(this.timer)
}
const clickTime = Date.now()
const clickX = event.clientX
const clickY = event.clientY
const timeDiff = clickTime - this.mousedownTime
const distance = Math.sqrt(
Math.pow(clickX - this.mousedownX, 2) + Math.pow(clickY - this.mousedownY, 2)
)
//
if (timeDiff < 300 && distance < 10) {
this.timer = setTimeout(() => {
this.parentId = row.id
localStorage.removeItem('currentPageSize')
this.openFile('所属卷内:' + row.archive_no, this.parentId)
}, 300)
// this.selections = this.crud.selections
}
},
//
handleCurrentChange(selection, row) {
this.selections = selection
},
handleSizeChange(size) {
this.currentPage = 1
this.page.size = size
this.page.page = 1
this.page.page = 0
localStorage.setItem('currentPageSize', size)
this.getViewTable(3, this.parentsData.parentsAnjuanId)
},
handleCurrentPage(val) {
this.page.page = val
handleCurrentPage(pageVal) {
this.currentPage = pageVal
this.page.page = pageVal - 1
localStorage.setItem('currentPage', JSON.stringify(this.page.page))
this.getViewTable(3, this.parentsData.parentsAnjuanId)
}
}

126
src/views/collectReorganizi/collectionLibrary/mixins/index.js

@ -14,7 +14,7 @@ export const collectionLibraryCrud = {
fileData: [],
arrySort: [],
page: {
page: 1,
page: localStorage.getItem('currentPage') ? parseInt(localStorage.getItem('currentPage')) : 0,
size: 10,
total: 0
},
@ -40,9 +40,12 @@ export const collectionLibraryCrud = {
localStorage.setItem('statusBarFixedType', val)
},
handleSearch(categoryLevel) {
if (localStorage.getItem('currentPage')) {
this.page.page = parseInt(localStorage.getItem('currentPage'))
} else {
this.page.page = 0
}
this.parentsData.$refs.classifyTree.setCurrentKey(null)
console.log('this.parentsData', this.parentsData)
console.log(this.parentsData.smartQuery)
// this.smartQuery = {
// 'retention': null,
// 'security_class': null,
@ -109,6 +112,12 @@ export const collectionLibraryCrud = {
})
},
getViewTableList(categoryLevel, parentsId, type) {
const currentPageSize = localStorage.getItem('currentPageSize')
if (currentPageSize) {
this.page.size = parseInt(currentPageSize)
} else {
this.page.size = 10
}
const params = {
'parentId': parentsId,
'categoryId': this.selectedCategory.id,
@ -125,33 +134,55 @@ export const collectionLibraryCrud = {
'fonds_no': this.smartQuery.fonds_no,
'project_class': this.query.project_class,
'archive_ctg_no': this.query.archive_ctg_no,
'page': this.page.page === 0 ? 0 : this.page.page - 1,
'page': this.page.page,
'size': this.page.size,
'sort': this.arrySort
}
FetchInitCategoryView(params).then((res) => {
if (res.code !== 500) {
this.parentsData.listCategory = res.category
const baseCategory = res.category.id
if (categoryLevel === 1) {
// 项目
const projectObj = this.parentsData.$refs.projectEle
this.projectData = res.list.content
// this.projectData = res.list.content
this.projectData = res.list.content.map(item => {
return {
...item,
baseCategory: baseCategory
}
})
this.page.total = res.list.totalElements
this.yearData = res.yearGroup
if (this.yearData && type !== 'quickFilter') {
this.$emit('myYearEvent', this.yearData)
}
if (type === 'search') {
projectObj.projectData = res.list.content
projectObj.page.page = 1
projectObj.page.size = 10
// projectObj.projectData = res.list.content
this.projectData = res.list.content.map(item => {
return {
...item,
baseCategory: baseCategory
}
})
projectObj.currentPage = this.page.page + 1
// projectObj.page.page = 1
// projectObj.page.size = 10
projectObj.page.total = res.list.totalElements
projectObj.getTableDisplayFieldsLoading = false
}
} else if (categoryLevel === 2) {
// 案卷
const anjuanObj = this.parentsData.$refs.anjuanEle.$refs.ajContent.$refs.tableList
this.anjuanData = res.list.content
// this.anjuanData = res.list.content
this.anjuanData = res.list.content.map(item => {
return {
...item,
baseCategory: baseCategory
}
})
this.page.total = res.list.totalElements
this.yearData = res.yearGroup
if (this.yearData && type !== 'quickFilter') {
@ -159,9 +190,16 @@ export const collectionLibraryCrud = {
}
// 搜索/新增/编辑 非 案卷是主页的时候
if (type === 'search') {
anjuanObj.anjuanData = res.list.content
anjuanObj.page.page = 1
anjuanObj.page.size = 10
// anjuanObj.anjuanData = res.list.content
anjuanObj.anjuanData = res.list.content.map(item => {
return {
...item,
baseCategory: baseCategory
}
})
anjuanObj.currentPage = this.page.page + 1
// anjuanObj.page.page = 1
// anjuanObj.page.size = 10
anjuanObj.page.total = res.list.totalElements
anjuanObj.getTableDisplayFieldsLoading = false
}
@ -169,39 +207,79 @@ export const collectionLibraryCrud = {
if (this.isTitleType === 3) {
// 案卷下的未整理 / 文件为主页时
const wjObj = this.parentsData.$refs.anjuanEle.$refs.ajContent.$refs.tableList
this.anjuanData = res.list.content
// this.anjuanData = res.list.content
this.anjuanData = res.list.content.map(item => {
return {
...item,
baseCategory: baseCategory
}
})
this.page.total = res.list.totalElements
this.yearData = res.yearGroup
if (this.yearData && type !== 'quickFilter') {
this.$parent.$parent.$emit('myYearEvent', this.yearData)
}
if (type === 'search') {
wjObj.anjuanData = res.list.content
wjObj.page.page = 1
wjObj.page.size = 10
console.log('wjObj', wjObj)
// wjObj.anjuanData = res.list.content
wjObj.anjuanData = res.list.content.map(item => {
return {
...item,
baseCategory: baseCategory
}
})
wjObj.currentPage = this.page.page + 1
// wjObj.page.page = 0
// wjObj.page.size = 10
wjObj.page.total = res.list.totalElements
wjObj.getTableDisplayFieldsLoading = false
}
} else {
// 卷内
this.junneiData = res.list.content
// this.junneiData = res.list.content
this.junneiData = res.list.content.map(item => {
return {
...item,
baseCategory: baseCategory
}
})
this.page.total = res.list.totalElements
if (type === 'search') {
this.parentsData.$refs.juanneiEle.junneiData = res.list.content
this.parentsData.$refs.juanneiEle.page.page = 1
this.parentsData.$refs.juanneiEle.page.size = 10
// this.parentsData.$refs.juanneiEle.junneiData = res.list.content
this.parentsData.$refs.juanneiEle.junneiData = res.list.content.map(item => {
return {
...item,
baseCategory: baseCategory
}
})
this.parentsData.$refs.juanneiEle.currentPage = this.page.page + 1
// this.parentsData.$refs.juanneiEle.page.page = 1
// this.parentsData.$refs.juanneiEle.page.size = 10
this.parentsData.$refs.juanneiEle.page.total = res.list.totalElements
this.parentsData.$refs.juanneiEle.getTableDisplayFieldsLoading = false
}
}
} else {
// 原文
this.fileData = res.list.content
// this.fileData = res.list.content
this.fileData = res.list.content.map(item => {
return {
...item,
baseCategory: baseCategory
}
})
this.page.total = res.list.totalElements
if (type === 'search') {
this.parentsData.$refs.fileEle.fileData = res.list.content
this.parentsData.$refs.fileEle.page.page = 1
this.parentsData.$refs.fileEle.page.size = 10
// this.parentsData.$refs.fileEle.fileData = res.list.content
this.parentsData.$refs.fileEle.fileData = res.list.content.map(item => {
return {
...item,
baseCategory: baseCategory
}
})
this.parentsData.$refs.fileEle.currentPage = this.page.page + 1
// this.parentsData.$refs.fileEle.page.page = 1
// this.parentsData.$refs.fileEle.page.size = 10
this.parentsData.$refs.fileEle.page.total = res.list.totalElements
this.parentsData.$refs.fileEle.getTableDisplayFieldsLoading = false
}

13
src/views/collectReorganizi/collectionLibrary/module/archivesFilling/index.vue

@ -35,7 +35,7 @@
<ArchivesListModule v-if="activeIndex == 0" ref="archivesListModule" :selected-category="selectedCategory" :collect-level="collectLevel" :selections="selections" />
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleComfired">确定</el-button>
<el-button :loading="btnLoading" type="primary" @click="handleComfired">确定</el-button>
</div>
</div>
</el-dialog>
@ -69,6 +69,7 @@ export default {
},
data() {
return {
btnLoading: false,
archivesFillingVisible: false,
activeIndex: 0,
form: {
@ -131,6 +132,7 @@ export default {
})
},
handleComfired() {
this.btnLoading = true
this.$refs.form.validate((valid) => {
if (valid) {
const archivesIds = []
@ -147,16 +149,23 @@ export default {
'categoryLevel': this.collectLevel
}
FetchBecomeDocument(params).then((res) => {
const resultData = JSON.parse(res.message)
console.log('resultData', resultData)
if (res.code !== 500) {
this.$message({ message: '归档操作提交成功', type: 'success', offset: 8 })
this.$emit('close-dialog')
} else {
// const message = JSON.parse(res.message)
// this.$message.error(message.fail.join(',') + '')
this.$message({ message: '归档操作提交失败', type: 'error', offset: 8 })
this.$message({ message: '四性检测未通过,归档操作提交失败', type: 'error', offset: 8 })
setTimeout(() => {
this.$emit('handleFillingToFourTest', resultData.resultList)
}, 1000)
}
this.archivesFillingVisible = false
this.btnLoading = false
}).catch(err => {
this.btnLoading = false
console.log(err)
})
}

1
src/views/collectReorganizi/collectionLibrary/module/archivesInfo/index.vue

@ -320,4 +320,5 @@ code.hljs {
.detail-tab .tab-nav{
margin: 10px 0 18px 0;
}
</style>

6
src/views/collectReorganizi/collectionLibrary/module/blukEditing/index.vue

@ -88,7 +88,7 @@
</div>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="handleCloseDialog">取消</el-button>
<el-button type="primary" @click.native="onSubmitBlukEditing('editForm')">确定</el-button>
<el-button :loading="btnLoading" type="primary" @click.native="onSubmitBlukEditing('editForm')">确定</el-button>
</div>
</div>
</el-dialog>
@ -126,6 +126,7 @@ export default {
},
data() {
return {
btnLoading: false,
//
bulkEditingVisible: false,
editForm: {
@ -334,6 +335,7 @@ export default {
}
},
onSubmitBlukEditing(formName) {
this.btnLoading = true
this.$refs[formName].validate((valid) => {
if (valid) {
const archivesIds = this.selections.map(item => item.id)
@ -349,9 +351,11 @@ export default {
FetchBatchUpdate(params).then(res => {
this.$emit('close-dialog')
this.handleCloseDialog()
this.btnLoading = false
})
} else {
console.log('error submit!!')
this.btnLoading = false
return false
}
})

7
src/views/collectReorganizi/collectionLibrary/module/bulkImport/index.vue

@ -147,6 +147,11 @@ export default {
}
FetchInitCategoryInputFieldByPid(params).then(data => {
this.fieldsOptions = data
if (data) {
this.form.replicated = ['archive_no']
} else {
this.form.replicated = []
}
})
},
downloadTemplate() {
@ -233,7 +238,9 @@ export default {
this.bulkImportVisible = false
this.excelList = []
this.form.file = null
if (this.changeFile) {
this.changeFile.target.value = ''
}
this.importLoading = false
//
// done()

503
src/views/collectReorganizi/collectionLibrary/module/collectHeader.vue

@ -157,34 +157,69 @@
:collect-level="collectLevel"
:category-menu="categoryMenu"
@close-dialog="closeDialog"
@handleForm="handleForm"
@formLoadingShow="formLoadingShow"
/>
<div v-if="isAiAutoCategory" style="flex: 1; margin-left: 10px; ">
<!-- AI辅助著录内容 -->
<!-- style="display: flex; justify-content: flex-start;" -->
<!-- <div> -->
<div class="upload-btn">
<input id="upFile" type="file" name="upFile" multiple @change="changeAiFile($event)">
<el-button :loading="aiLoading" size="small" type="primary"><i :class="['iconfont', aiLoading ? 'icon-huoqu' : 'icon-shangchuan']" />{{ aiLoading ? 'AI辅助著录识别中' : '选择文件' }}</el-button>
</div>
<!-- margin-left: 10px; line-height: 34px; height: 106px; overflow: hidden; overflow-y: scroll; -->
<div style="flex: 1; padding: 10px 0; font-size: 12px; ">
<div v-for="item in fileList" :key="item.name" class="file-list">
<i class="iconfont icon-xiaowenjian" style="font-size: 14px;" />
{{ item.name }}
</div>
</div>
<!-- </div> -->
<pre v-if="aiJsonData" ref="typingContainer" v-highlightjs="displayedText">{{ displayedText }}</pre>
<div v-if="isAiAutoCategory" v-loading="aiResultCaLoading" style="flex: 1; margin-left: 10px; ">
<pre ref="typingContainer" v-highlightjs="displayedText">{{ displayedText }}</pre>
</div>
</div>
<div slot="footer" class="dialog-footer" style="margin-top: 85px !important;">
<el-button type="text" style="width: 140px; border-color: #0348f3; color: #0348f3;">保存并新增下一条</el-button>
<el-button v-if="(isTitleType === 3 && selectedCategory.arrangeType === 1) || isTitleType === 4 || isTitleType === 6 || (isTitleType === 3 && activeIndex === 1)" type="text" style="width: 84px; border-color: #0348f3; color: #0348f3; " @click="handleAiCategory">AI辅助著录</el-button>
<el-button type="primary" @click="handlerArchivesSubmit">保存</el-button>
<el-button v-if="formIsAddOrEdit==='add' && ((isTitleType === 3 && selectedCategory.arrangeType === 1) || isTitleType === 4 || isTitleType === 6 || (isTitleType === 3 && activeIndex === 1))" type="text" style="width: 84px; border-color: #0348f3; color: #0348f3; " @click="handleAiCategory">AI辅助著录</el-button>
<el-button v-if="formIsAddOrEdit==='add'" type="primary" style="width: 140px; " @click="handlerArchivesSubmit(1)">保存并新增下一条</el-button>
<el-button :loading="archivesBtnLoading" type="primary" @click="handlerArchivesSubmit(0)">保存</el-button>
</div>
</div>
</el-dialog>
<!-- AI辅助著录未处理已解析的文件 -->
<el-dialog class="aiAssist-dialog" title="AI已解析文件" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="aIAssistEnterVisible">
<div class="setting-dialog">
<!-- @select="crud.selectChange"
@select-all="crud.selectAllChange"
@cell-dblclick="tableDoubleClick"
@selection-change="crud.selectionChangeHandler" -->
<el-table
ref="table"
v-loading="aiCategoryloading"
class="archives-table"
:data="aiCategoryData"
row-key="id"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="任务编号" prop="id" />
<el-table-column label="文件数量" prop="fileNum" />
<el-table-column label="创建人" prop="create_by" />
<el-table-column label="创建时间" prop="update_time" align="center" width="160">
<template slot-scope="scope">
<div v-if="scope.row.update_time">{{ scope.row.update_time | parseTime }}</div>
<div v-else>-</div>
</template>
</el-table-column>
<el-table-column label="解析完成时间" prop="analysisTime" align="center" width="160">
<template slot-scope="scope">
<div v-if="scope.row.analysisTime">{{ scope.row.analysisTime | parseTime }}</div>
<div v-else>-</div>
</template>
</el-table-column>
<el-table-column label="状态" prop="status" align="center" width="140">
<template slot-scope="scope">
<span v-if="!scope.row.isAnalysis" class="row-state row-warehousing state-active">解析中</span>
<span v-else class="row-state row-binding state-active">已解析</span>
</template>
</el-table-column>
<el-table-column label="操作" prop="status" align="center" width="140">
<template slot-scope="scope">
<el-button v-if="scope.row.isAnalysis" size="mini" class="check-btn" style="padding: 5px;" @click="getDoHandleEnterAnalysis(scope.row)">
<i class="iconfont icon-tianjiawenjian" />
新增档案
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-dialog>
<!--卷内移出 组件-->
<el-dialog class="tip-dialog" title="提示" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="moveVisible">
<div class="setting-dialog">
@ -229,7 +264,7 @@
<QuickPaper ref="quickPaperRef" :selected-category="selectedCategory" :arc-id="arcId" :collect-level="collectLevel" @close-dialog="closeDialog" />
<!-- 归档 -->
<ArchivesFilling ref="archivesFillingRef" :selected-category="selectedCategory" :collect-level="collectLevel" :selections="selections" @close-dialog="closeDialog" />
<ArchivesFilling ref="archivesFillingRef" :selected-category="selectedCategory" :collect-level="collectLevel" :selections="selections" @close-dialog="closeDialog" @handleFillingToFourTest="handleFillingToFourTest" />
<!-- 装盒 / 分卷装盒 -->
<PackingBox ref="packingBox" :selected-category="selectedCategory" :selections="selections" :total-sum-all="totalSumAll" @close-dialog="closeDialog" />
@ -247,7 +282,8 @@
import CRUD, { crud } from '@crud/crud'
import { collectionLibraryCrud } from '../mixins/index'
import { FetchInitCategoryInputFieldByPid, FetchCategoryMenu } from '@/api/system/category/category'
import { FetchDetailsById, collectDel, FetchRemoveArchivesSingle, FetchDeleteArchivesFile, FetchUpdateArchivesNo, FetchDisbandArchives, FetchReturnReDocument, FetchCompleteDelArchives, FetchRestoreArchives, FetchAIResultZhulu } from '@/api/collect/collect'
import { FetchDetailsById, collectDel, FetchRemoveArchivesSingle, FetchDeleteArchivesFile, FetchUpdateArchivesNo, FetchDisbandArchives, FetchReturnReDocument, FetchCompleteDelArchives, FetchRestoreArchives } from '@/api/collect/collect'
import { FetchInitAssistEnter, FetchDoHandleEnterAnalysis } from '@/api/ai/ai'
import { FetchArchivesClassTree } from '@/api/system/archivesClass'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
@ -266,8 +302,7 @@ import QuickPaper from './quickPaper/index'
import PackingBox from './packingBox/index'
import ArchivesFilling from './archivesFilling/index'
import qs from 'qs'
import { archivesUpload } from '@/utils/upload'
import { downloadFile, exportFile, getCurrentTime } from '@/utils/index'
import { downloadFile, exportFile } from '@/utils/index'
import { mapGetters } from 'vuex'
export default {
@ -309,6 +344,7 @@ export default {
inject: ['parentsData'],
data() {
return {
archivesBtnLoading: false,
activeMenuIndex: '1',
formVisible: false,
formTitle: '项目',
@ -324,15 +360,14 @@ export default {
totalSumAll: 0,
categoryMenu: [],
isAiAutoCategory: false,
aiLoading: false,
nowDate: '',
fileList: [],
aiJsonData: null,
displayedText: '',
typingInterval: null,
typingFinished: false,
currentLineIndex: 0,
shouldContinueFetching: true
formIsAddOrEdit: '',
aIAssistEnterVisible: false,
aiCategoryData: [],
aiCategoryloading: false,
aiResultCaLoading: true, // ailoading
isDialogClosed: false, //
reader: null //
}
},
computed: {
@ -489,6 +524,7 @@ export default {
},
// -form/-api
handleForm(type, isPaper) {
this.formIsAddOrEdit = type
if (type === 'add') {
if (this.parentsData.parentsProjectId && this.isTitleType === 3) {
console.log('项目下的案卷')
@ -530,6 +566,14 @@ export default {
})
},
getFormInfo(type) {
const currentPageSize = localStorage.getItem('currentPageSize')
if (currentPageSize) {
this.page.size = parseInt(currentPageSize)
} else {
this.page.size = 10
}
console.log('this.page.size', this.page.size)
console.log('this.page.page', this.page.page)
if (type === 'edit') {
const params = {
'categoryId': this.selectedCategory.id,
@ -557,38 +601,76 @@ export default {
FetchInitCategoryInputFieldByPid(params).then(data => {
this.formPreviewData = data
this.isDesFormType = 'arcives'
this.$nextTick(() => {
this.$refs.previewForm.archivesType = 'add'
this.$refs.previewForm.activeIndex = this.activeIndex
const savePrevFromData = JSON.parse(localStorage.getItem('savePrevFromData'))
console.log('savePrevFromData', savePrevFromData)
if (savePrevFromData) {
if ('record_no' in savePrevFromData && 'item_no' in savePrevFromData) {
if (savePrevFromData.item_no && !isNaN(Number(savePrevFromData.item_no))) {
savePrevFromData.item_no = (parseInt(savePrevFromData.item_no) + 1).toString()
}
} else if ('record_no' in savePrevFromData) {
if (savePrevFromData.record_no && !isNaN(Number(savePrevFromData.record_no))) {
savePrevFromData.record_no = (parseInt(savePrevFromData.record_no) + 1).toString()
}
} else if ('item_no' in savePrevFromData) {
if (savePrevFromData.item_no && !isNaN(Number(savePrevFromData.item_no))) {
savePrevFromData.item_no = (parseInt(savePrevFromData.item_no) + 1).toString()
}
}
// item_no record_no
const findAndPadField = (fieldName) => {
const field = this.formPreviewData.find(item => item.fieldName === fieldName)
if (field && field.isFilling) {
const fillingDigit = field.fillingDigit
if (savePrevFromData[fieldName]) {
savePrevFromData[fieldName] = savePrevFromData[fieldName].toString().padStart(fillingDigit, '0')
}
}
}
findAndPadField('item_no')
findAndPadField('record_no')
this.$refs.previewForm.addOrUpdateForm = savePrevFromData
}
this.$refs.previewForm.FetchNoFormatField(this.selectedCategory.id)
})
})
}
},
// form - submit
handlerArchivesSubmit() {
handlerArchivesSubmit(type) {
this.$refs.previewForm.submitForm('addOrUpdateForm', this.selectedCategory.id, this.quickPaperArcId, type)
},
handlerArchivesSubmitAndAdd() {
this.$refs.previewForm.submitForm('addOrUpdateForm', this.selectedCategory.id, this.quickPaperArcId)
},
formLoadingShow(loadingType) {
this.archivesBtnLoading = loadingType
},
//
handleClose(done) {
this.shouldContinueFetching = false
this.formVisible = false
this.quickPaper = false
localStorage.removeItem('savePrevFromData')
this.aiCategoryData = []
this.isAiAutoCategory = false
this.aiJsonData = null
this.currentLineIndex = 0
this.displayedText = ''
this.typingFinished = false
if (this.typingInterval) {
clearInterval(this.typingInterval)
this.displayedText = '' // displayedText
this.isDialogClosed = true // true
if (this.reader) {
this.reader.cancel() //
}
this.fileList = []
this.aiLoading = false
done()
},
//
toDelete() {
console.log('this.page.page333', this.page.page)
console.log('this.page.total33333', this.page.total)
if (this.selections.length === 0) {
this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
return false
@ -629,6 +711,8 @@ export default {
FetchCompleteDelArchives(params).then((res) => {
if (res.code !== 500) {
this.$message({ message: res, type: 'success', offset: 8 })
localStorage.removeItem('currentPageSize')
localStorage.removeItem('currentPage')
this.handleSearch(this.collectLevel)
} else {
this.$message({ message: '删除所选档案失败', type: 'error', offset: 8 })
@ -669,6 +753,8 @@ export default {
})
FetchDeleteArchivesFile(params).then((res) => {
if (res === 'SUCCESS') {
localStorage.removeItem('currentPageSize')
localStorage.removeItem('currentPage')
this.$message({ message: '删除成功', type: 'success', offset: 8 })
this.handleSearch(this.collectLevel)
} else {
@ -689,6 +775,8 @@ export default {
}
collectDel(params).then((res) => {
if (res.includes('成功')) {
localStorage.removeItem('currentPageSize')
localStorage.removeItem('currentPage')
this.$message({ message: '删除成功', type: 'success', offset: 8 })
this.handleSearch(this.collectLevel)
} else {
@ -713,6 +801,8 @@ export default {
}
FetchRemoveArchivesSingle(params).then((res) => {
if (res === true) {
localStorage.removeItem('currentPageSize')
localStorage.removeItem('currentPage')
this.$message({ message: '移出成功', type: 'success', offset: 8 })
this.handleSearch(this.collectLevel)
} else {
@ -996,6 +1086,12 @@ export default {
}
this.$refs.archivesFillingRef.archivesFillingVisible = true
},
handleFillingToFourTest(resultList) {
this.$refs.fourTestRef.fourTestVisible = true
this.$refs.fourTestRef.tableData = this.selections
this.$refs.fourTestRef.updateTableData(resultList, this.selections)
this.$refs.fourTestRef.isCheck = true
},
// 退
handleReturn() {
if (this.selections.length === 0) {
@ -1170,6 +1266,8 @@ export default {
// this.$message('')
// return false
// }
console.log('this.parentsData', this.parentsData)
console.log('this.parentsData.listCategory', this.parentsData.listCategory.id)
this.$refs.packingBox.packingVisible = true
this.$refs.packingBox.isPackingOrPartType = type
this.$refs.packingBox.packFileCategory = this.parentsData.listCategory
@ -1226,6 +1324,8 @@ export default {
}
FetchRestoreArchives(params).then((res) => {
if (res.code !== 500) {
localStorage.removeItem('currentPageSize')
localStorage.removeItem('currentPage')
if (res.includes('成功')) {
this.$message({ message: res, type: 'success', offset: 8 })
} else {
@ -1283,232 +1383,132 @@ export default {
})
},
handleAiCategory() {
this.isAiAutoCategory = !this.isAiAutoCategory
if (!this.isAiAutoCategory) {
this.fileList = []
this.aIAssistEnterVisible = true
this.aiCategoryloading = true
const params = {
'page': 0,
'size': 10,
'isHandle': 0
}
FetchInitAssistEnter(params).then(data => {
this.aiCategoryData = data
this.aiCategoryloading = false
setTimeout(() => {
this.getDoHandleEnterAnalysis()
}, 1000)
})
},
async changeAiFile(e) {
// aiJsonData
this.aiJsonData = null
this.currentLineIndex = 0
this.displayedText = ''
this.typingFinished = false
this.typingInterval = null
// if (this.typingInterval) {
// clearInterval(this.typingInterval);
// }
const selectedFiles = Array.from(e.target.files)
const imageFiles = selectedFiles.filter(file => file.type.startsWith('image/'))
const nonImageFiles = selectedFiles.filter(file => !file.type.startsWith('image/'))
//
if (imageFiles.length > 0 && nonImageFiles.length > 0) {
this.$message.error('不能同时选择图片和其他类型文件,请重新选择')
return
}
const existingImageFiles = this.fileList.filter(item => item.formatType === 'image')
const existingNonImageFiles = this.fileList.filter(item => item.formatType !== 'image')
if (imageFiles.length > 0) {
// if (existingImageFiles.length > 0) {
// if (existingImageFiles.length + imageFiles.length > 3) {
// // 3
// this.fileList = this.fileList.filter(item => item.formatType !== 'image')
// }
// } else if (existingNonImageFiles.length > 0) {
// //
// this.fileList = this.fileList.filter(item => item.formatType === 'image')
// }
// //
// if (imageFiles.length > 3) {
// this.$message.error(' 3 ')
// return
// }
if (existingNonImageFiles.length > 0) {
//
this.fileList = this.fileList.filter(item => item.formatType === 'image')
}
for (const file of imageFiles) {
//
if (this.fileList.some(item => item.name === file.name)) {
this.$message.warning(`文件 ${file.name} 已存在,请勿重复上传`)
continue
}
const fileInfo = {
file: file,
size: file.size,
formatType: file.type.substring(0, file.type.indexOf('/')),
name: file.name,
postfix: file.name.substring(
file.name.lastIndexOf('.') + 1,
file.name.length
),
px: ''
}
const fileBase64 = await this.getBase64(file)
const res = await this.getImgPx(fileBase64)
fileInfo.px = res.width + 'px*' + res.height + 'px'
this.fileList.push(fileInfo)
}
this.FetchAiFileUplaod(this.fileList)
} else if (nonImageFiles.length > 0) {
if (existingNonImageFiles.length > 0) {
//
this.fileList = this.fileList.filter(item => item.formatType === 'image')
} else if (existingImageFiles.length > 0) {
//
this.fileList = this.fileList.filter(item => item.formatType !== 'image')
//
getDoHandleEnterAnalysis(row) {
this.isAiAutoCategory = true
this.aIAssistEnterVisible = false
const params = {
'categoryId': this.selectedCategory.id,
'anId': null
}
FetchDoHandleEnterAnalysis(params).then(data => {
console.log(data)
// const inputMessage = data.query + '' + data.context
this.sendMessage(data.query, data.context)
})
},
// deepseek
async sendMessage(prompt, context) {
const linkSrc = process.env.NODE_ENV === 'production' ? window.g.AIDeepSeekUrl : process.env.VUE_APP_AIDEEPSEEK_API
this.displayedText = ''
this.isDialogClosed = false //
try {
// { 'role': 'system', 'content': '' },
const messages = [
{ 'role': 'user', 'content': `${context}\n\n${prompt}` }
]
const response = await fetch(linkSrc + '/api/generate', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'deepseek-r1:14b',
// model: 'qwen:7b',
prompt: messages[0].content,
stream: true
})
})
//
if (nonImageFiles.length > 1) {
this.$message.error('非图片文件最多只能选择 1 个,请重新选择')
return
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`)
}
for (const file of nonImageFiles) {
//
if (this.fileList.some(item => item.name === file.name)) {
this.$message.warning(`文件 ${file.name} 已存在,请勿重复上传`)
continue
}
this.reader = response.body.getReader() //
const decoder = new TextDecoder('utf-8')
let done = false
const fileInfo = {
file: file,
size: file.size,
formatType: file.type.substring(0, file.type.indexOf('/')),
name: file.name,
postfix: file.name.substring(
file.name.lastIndexOf('.') + 1,
file.name.length
),
px: ''
}
this.fileList.push(fileInfo)
}
this.FetchAiFileUplaod(this.fileList)
}
},
FetchAiFileUplaod(files) {
this.aiLoading = true
this.nowDate = getCurrentTime()
const promiseArray = files.map(async(item, index) => {
const json = {}
json.file_name = item.name
json.file_size = item.size
json.file_type = item.postfix
json.file_path = ''
json.archive_id = this.arcId
json.file_dpi = item.px
json.file_thumbnail = ''
json.create_time = this.nowDate
json.id = null
json.last_modified = item.file.lastModified
return json
})
console.log('promiseArray', promiseArray)
const fileDefault = files.map(item => item.file)
while (!done && !this.isDialogClosed) { //
this.aiResultCaLoading = false
const { done: isDone, value } = await this.reader.read()
done = isDone
if (done) break
Promise.all(promiseArray)
.then((arrayUpload) => {
archivesUpload(this.baseApi + '/api/collect/uploadAssistEnterFiles',
fileDefault,
this.selectedCategory.id,
this.arcId,
JSON.stringify(arrayUpload)
).then(res => {
if (res.data.data !== null) {
const params = {
'code': res.data.data.code,
'id': res.data.data.id
}
const fetchAiZhuluResult = () => {
//
if (!this.shouldContinueFetching) return
const chunk = decoder.decode(value)
const lines = chunk.split('\n')
FetchAIResultZhulu(params).then((res) => {
const data = JSON.parse(res)
console.log('data', data)
if (data.result !== null && data.status === 'success') {
this.$message({ message: '解析著录附件成功', type: 'success', offset: 8 })
this.aiJsonData = data.result
this.startTypingEffect()
} else {
setTimeout(fetchAiZhuluResult, 3000)
lines.forEach(line => {
if (line.trim() !== '') {
try {
const data = JSON.parse(line)
if (data.response && !this.isDialogClosed) { //
this.displayedText += data.response
}
}).catch(err => {
console.log(err)
})
} catch (error) {
console.error('解析JSON数据出错:', error)
}
fetchAiZhuluResult()
} else {
this.$message({ message: '著录附件传输失败', type: 'error', offset: 8 })
}
})
})
.catch((error) => {
console.error(error)
})
},
startTypingEffect() {
const lines = this.aiJsonData.split('\n')
this.currentLineIndex = 0
this.displayedText = ''
this.typingFinished = false
this.typingInterval = setInterval(() => {
if (this.currentLineIndex < lines.length) {
this.displayedText += lines[this.currentLineIndex] + '\n'
this.currentLineIndex++
} else {
clearInterval(this.typingInterval)
setTimeout(() => {
this.typingFinished = true
if (this.aiJsonData) {
// this.$refs.previewForm.archivesType = 'add'
// this.$refs.previewForm.addOrUpdateForm = JSON.parse(this.aiJsonData)
this.aiLoading = false
}
}, 1000)
}
//
const container = this.$refs.typingContainer
if (container) {
container.scrollTop = container.scrollHeight
}
}, 200)
},
// base64
getBase64(file) {
const reader = new FileReader()
reader.readAsDataURL(file)
return new Promise((resolve) => {
reader.onload = () => {
resolve(reader.result)
}
})
},
//
getImgPx(img) {
const image = new Image()
image.src = img
return new Promise((resolve) => {
image.onload = () => {
const width = image.width
const height = image.height
resolve({ width, height })
} catch (error) {
console.error('请求出错:', error)
this.displayedText = '请求出错,请稍后再试。'
this.aiResultCaLoading = false
} finally {
this.aiResultCaLoading = false
if (!this.isDialogClosed) {
console.log('this.displayedText.', this.displayedText)
// <think> </think>
const thinkStartIndex = this.displayedText.indexOf('<think>')
const thinkEndIndex = this.displayedText.indexOf('</think>')
let lastContent = this.displayedText
if (thinkStartIndex !== -1 && thinkEndIndex !== -1) {
lastContent = lastContent.slice(0, thinkStartIndex) + lastContent.slice(thinkEndIndex + '</think>'.length)
}
console.log('lastContent', lastContent)
// JSON
const startIndex = lastContent.indexOf('{')
const endIndex = lastContent.lastIndexOf('}')
if (startIndex !== -1 && endIndex !== -1 && endIndex > startIndex) {
const jsonStr = lastContent.slice(startIndex, endIndex + 1)
console.log('jsonStr', jsonStr)
const jsonData = JSON.parse(jsonStr)
console.log('提取并过滤后的 JSON 数据:', jsonData)
console.log('this.selectedCategory', this.selectedCategory)
jsonData.fonds_no = this.selectedCategory.fondsNo
jsonData.archival_category_code = this.selectedCategory.code
jsonData.is_entity = 1
console.log('jsonData', jsonData)
this.$refs.previewForm.addOrUpdateForm = jsonData
}
}
this.reader = null //
}
})
},
replaceSeparators(str) {
return str.replace(/[,,、]/g, ' ')
}
}
}
@ -1553,6 +1553,11 @@ export default {
}
}
}
.aiAssist-dialog{
::v-deep .el-dialog{
width: 1000px !important;
}
}
pre {
background-color: #f4f4f4;
@ -1561,7 +1566,7 @@ pre {
border-radius: 4px;
white-space: pre-wrap;
word-wrap: break-word;
height: calc(100vh - 430px);
height: calc(100vh - 330px);
overflow: hidden;
overflow-y: auto;
}

5
src/views/collectReorganizi/collectionLibrary/module/collectMoveFile/index.vue

@ -77,7 +77,7 @@
</div>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="handleCloseDialog">取消</el-button>
<el-button type="primary" :disabled="currentCategory&&currentCategory.arrangeType===3&&moveSelections.length===0&&collectLevel===2 " @click.native="handleComfireCollectMoveFile">确定</el-button>
<el-button :loading="btnLoading" type="primary" :disabled="currentCategory&&currentCategory.arrangeType===3&&moveSelections.length===0&&collectLevel===2 " @click.native="handleComfireCollectMoveFile">确定</el-button>
</div>
</el-dialog>
</template>
@ -108,6 +108,7 @@ export default {
},
data() {
return {
btnLoading: false,
query: {
search: null
},
@ -280,6 +281,7 @@ export default {
toArchivesId = this.moveSelections[0].id
}
}
this.btnLoading = true
const params = {
'reserve': this.isReserve, // true false
'categoryId': this.selectedCategory.id, // id
@ -299,6 +301,7 @@ export default {
this.$message({ message: '移动失败', type: 'error', offset: 8 })
}
this.handleCloseDialog()
this.btnLoading = false
})
},
handleSizeChange(size) {

5
src/views/collectReorganizi/collectionLibrary/module/combineFile/index.vue

@ -15,7 +15,7 @@
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="handleCloseDialog">取消</el-button>
<el-button type="primary" @click.native="handleComfireCombineFile">确定</el-button>
<el-button :loading="btnLoading" type="primary" @click.native="handleComfireCombineFile">确定</el-button>
</div>
</el-dialog>
</template>
@ -45,6 +45,7 @@ export default {
data() {
return {
btnLoading: false,
combineFileVisible: false,
form: {
combineNumber: ''
@ -61,6 +62,7 @@ export default {
},
methods: {
handleComfireCombineFile() {
this.btnLoading = true
const archivesIds = this.selections.map(item => item.id)
const params = {
'categoryId': this.selectedCategory.id, // id
@ -76,6 +78,7 @@ export default {
this.$message({ message: '合卷失败', type: 'error', offset: 8 })
}
this.combineFileVisible = false
this.btnLoading = false
})
},
getTargetList() {

5
src/views/collectReorganizi/collectionLibrary/module/fileSeqAdjustment/index.vue

@ -40,7 +40,7 @@
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="adjustmentVisible = false">取消</el-button>
<el-button type="primary" @click.native="handleSort">确定</el-button>
<el-button :loading="btnLoading" type="primary" @click.native="handleSort">确定</el-button>
</div>
</div>
</el-dialog>
@ -74,6 +74,7 @@ export default {
},
data() {
return {
btnLoading: false,
titleAdjustment: '',
isJuannei: false,
adjustmentVisible: false,
@ -139,6 +140,7 @@ export default {
this.rowDrop('category-sort', 'sortTableData')
},
handleSort() {
this.btnLoading = true
const archivesIds = []
const sequences = []
this.sortTableData.map((value, index) => {
@ -158,6 +160,7 @@ export default {
} else {
this.$message({ message: '调整顺序失败', type: 'error', offset: 8 })
}
this.btnLoading = false
})
},
handleCloseDialog(done) {

10
src/views/collectReorganizi/collectionLibrary/module/fourTest/index.vue

@ -1,6 +1,6 @@
<template>
<!--四性检测-->
<el-dialog v-loading="loading" class="fileUpload-dialog" title="四性检测" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="fourTestVisible" :before-close="handleCloseDialog">
<el-dialog class="fileUpload-dialog" title="四性检测" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="fourTestVisible" :before-close="handleCloseDialog">
<div class="setting-dialog">
<div class="fourTest-container">
<div v-if="isCheck" class="double-click-btn"><i class="iconfont icon-zhuyi-lan" /><span>双击列表数据查看报告详情</span></div>
@ -40,7 +40,7 @@
</div>
<div v-if="!isCheck" slot="footer" class="dialog-footer">
<el-button type="text" @click="fourTestVisible = false">取消</el-button>
<el-button type="primary" @click.native="handleComfireTest">确定</el-button>
<el-button :loading="btnLoading" type="primary" @click.native="handleComfireTest">确定</el-button>
</div>
</div>
</el-dialog>
@ -66,7 +66,7 @@ export default {
},
data() {
return {
loading: false,
btnLoading: false,
fourTestVisible: false,
isCheck: false,
tableData: [],
@ -83,7 +83,7 @@ export default {
},
methods: {
handleComfireTest() {
this.loading = true
this.btnLoading = true
const archivesId = this.tableData.map(item => item.id)
const params = {
@ -104,7 +104,7 @@ export default {
} else {
this.$message({ message: '检测失败', type: 'error', offset: 8 })
}
this.loading = false
this.btnLoading = false
setTimeout(() => {
this.isCheck = true
}, 200)

8
src/views/collectReorganizi/collectionLibrary/module/fourTestInfo/index.vue

@ -2,7 +2,7 @@
<!--四性检测-档案详情内-->
<div class="fourTest-container">
<div class="double-click-btn"><i class="iconfont icon-zhuyi-lan" /><span>双击列表数据查看报告详情</span></div>
<el-table :data="tableData" style="min-width: 100%" height="calc(100vh - 440px)" @cell-dblclick="tableDoubleClick">
<el-table :data="tableData" style="min-width: 100%" height="calc(100vh - 470px)" @cell-dblclick="tableDoubleClick">
<el-table-column prop="create_by" label="检测人" min-width="80" />
<el-table-column prop="create_time" label="检测时间" min-width="150">
<template slot-scope="scope">
@ -120,6 +120,10 @@ export default {
right: 0;
top: 0;
justify-content: flex-end;
margin: -6px 0 4px 0;
margin: 0 0 4px 0;
}
.fourTest-container{
height: calc(100vh - 380px) !important;
overflow: hidden;
}
</style>

8
src/views/collectReorganizi/collectionLibrary/module/handleInfo/index.vue

@ -9,12 +9,12 @@
</el-table-column>
<el-table-column prop="opinion" label="处理意见" min-width="60" />
<el-table-column prop="update_by" label="处理人" min-width="60" />
<el-table-column prop="update_time" label="处理时间" min-width="180">
<el-table-column prop="update_time" label="处理时间" width="180">
<template slot-scope="scope">
<div>{{ scope.row.update_time | parseTime }}</div>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" min-width="120" show-overflow-tooltip />
<el-table-column prop="remarks" label="备注" min-width="180" show-overflow-tooltip />
</el-table>
<!--分页组件-->
<el-pagination
@ -112,4 +112,8 @@ export default {
<style lang='scss' scoped>
@import "~@/assets/styles/collect-reorganizi.scss";
.fourTest-container{
height: calc(100vh - 380px) !important;
overflow: hidden;
}
</style>

5
src/views/collectReorganizi/collectionLibrary/module/insertFile/index.vue

@ -49,7 +49,7 @@
/>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="handleCloseDialog">取消</el-button>
<el-button type="primary" @click.native="handleComfireInsertFile">确定</el-button>
<el-button :loading="btnLoading" type="primary" @click.native="handleComfireInsertFile">确定</el-button>
</div>
</el-dialog>
</template>
@ -79,6 +79,7 @@ export default {
inject: ['parentsData'],
data() {
return {
btnLoading: false,
query: {
search: null
},
@ -213,6 +214,7 @@ export default {
}
},
handleComfireInsertFile() {
this.btnLoading = true
console.log('insertSelections', this.insertSelections)
let archivesIds
let params
@ -244,6 +246,7 @@ export default {
this.$message({ message: '插件失败', type: 'error', offset: 8 })
}
this.insertFileVisible = false
this.btnLoading = false
})
},
handleSizeChange(size) {

20
src/views/collectReorganizi/collectionLibrary/module/markInfo/index.vue

@ -10,7 +10,18 @@
</el-table-column>
<el-table-column prop="keyworks" label="标注">
<template slot-scope="scope">
<p>{{ scope.row.keyworks ? scope.row.keyworks:'-' }}</p>
<!-- <p>{{ scope.row.keyworks ? scope.row.keyworks:'-' }}</p> -->
<div v-if="scope.row.keyworks && scope.row.keyworks.trim()!== ''">
<el-tag
v-for="tag in scope.row.keyworks.split(',')"
:key="tag"
type="info"
>
{{ tag.trim() }}
</el-tag>
</div>
<p v-else>-</p>
</template>
</el-table-column>
</el-table>
@ -98,4 +109,11 @@ export default {
<style lang='scss' scoped>
@import "~@/assets/styles/collect-reorganizi.scss";
.fourTest-container{
height: calc(100vh - 380px) !important;
overflow: hidden;
}
::v-deep .el-tag.el-tag--info{
margin: 0 8px 0 0 !important;
}
</style>

63
src/views/collectReorganizi/collectionLibrary/module/packingBox/index.vue

@ -4,7 +4,7 @@
<div class="packing-head">
<div class="head-search">
<!-- 搜索 -->
<el-input v-model="caseQuery[inputSelect]" clearable size="small" placeholder="请输入搜索关键字" style="width: 245px; margin-right: 10px;" class="input-prepend filter-item" @keyup.enter.native="getCaseList" @clear="clearTableData">
<el-input v-model="caseQuery[inputSelect]" clearable size="small" placeholder="请输入搜索关键字" style="width: 285px; margin-right: 10px;" class="input-prepend filter-item" @keyup.enter.native="getCaseList" @clear="clearTableData">
<el-select slot="prepend" v-model="inputSelect" style="width: 90px" @change="querySelect">
<el-option
v-for="item in queryOption"
@ -40,7 +40,7 @@
<el-table-column prop="caseCode" label="盒号" min-width="120" align="center" />
<el-table-column prop="caseName" label="盒名称" min-width="120" align="center" />
<el-table-column prop="depositNum" label="已装" min-width="60" align="center" />
<el-table-column prop="tid" label="TID" min-width="120" align="center" />
<el-table-column prop="tid" label="电子标签" min-width="120" align="center" />
<el-table-column prop="barcode" label="条形码" min-width="120" align="center" />
<el-table-column prop="caseRetention" label="保管期限" min-width="100" align="center" />
<el-table-column prop="caseClass" label="密级" min-width="100" align="center" />
@ -67,7 +67,7 @@
<el-table-column prop="caseCode" label="盒号" min-width="120" align="center" />
<el-table-column prop="caseName" label="盒名称" min-width="120" align="center" />
<el-table-column prop="depositNum" label="已装" min-width="100" align="center" />
<el-table-column prop="tid" label="TID" min-width="120" align="center" />
<el-table-column prop="tid" label="电子标签" min-width="120" align="center" />
<el-table-column prop="barcode" label="条形码" min-width="120" align="center" />
<el-table-column prop="caseRetention" label="保管期限" min-width="100" align="center" />
<el-table-column prop="caseClass" label="密级" min-width="100" align="center" />
@ -92,7 +92,7 @@
<el-table-column prop="caseCode" label="盒号" min-width="120" align="center" />
<el-table-column prop="caseName" label="盒名称" min-width="120" align="center" />
<el-table-column prop="depositNum" label="已装" min-width="100" align="center" />
<el-table-column prop="tid" label="TID" min-width="120" align="center" />
<el-table-column prop="tid" label="电子标签" min-width="120" align="center" />
<el-table-column prop="barcode" label="条形码" min-width="120" align="center" />
<el-table-column prop="caseRetention" label="保管期限" min-width="100" align="center" />
<el-table-column prop="caseClass" label="密级" min-width="100" align="center" />
@ -209,14 +209,16 @@ export default {
archivesTable: [],
selectArchivesTable: [],
tid: null,
caseName: null,
caseCode: null,
barcode: null,
caseQuery: {},
inputSelect: null,
queryOption: [
{ value: 'caseName', label: '盒名称' },
{ value: 'caseCode', label: '盒号' },
{ value: 'tid', label: 'TID' },
{ value: 'barcode', label: '条码' }
{ value: 'tid', label: '电子标签' },
{ value: 'barcode', label: '条码' }
],
packingVisible: false, //
isPackingOrPartType: 0,
@ -239,23 +241,33 @@ export default {
return
}
switch (this.inputSelect) {
case 'caseName':
this.caseName = this.caseQuery[this.inputSelect]
this.caseCode = null
this.tid = null
this.barcode = null
break
case 'caseCode':
this.caseName = null
this.caseCode = this.caseQuery[this.inputSelect]
this.tid = null
this.barcode = null
break
case 'tid':
this.tid = this.caseQuery[this.inputSelect]
this.caseName = null
this.caseCode = null
this.barcode = null
break
case 'barcode':
this.barcode = this.caseQuery[this.inputSelect]
this.caseName = null
this.caseCode = null
this.tid = null
break
}
const params = {
'caseName': this.caseName,
'tid': this.tid,
'caseCode': this.caseCode,
'barcode': this.barcode,
@ -271,7 +283,7 @@ export default {
this.tableData = res.content
})
},
async getPackingFileList(id) {
async getPackingFileList(id, baseCategory) {
const parentsId = id
const params = {
'categoryId': this.selectedCategory.id,
@ -297,8 +309,12 @@ export default {
const data = await FetchInitCategoryView(params)
if (data) {
if (this.isPackingOrPartType === 1 && this.selectedCategory.arrangeType === 2) {
this.archivesTable = data.list.content
this.packingData = data.list.content
const newData = data.list.content.map(item => ({
...item,
baseCategory
}))
this.archivesTable = newData
this.packingData = newData
} else {
data.list.content.forEach(item => {
item.archivesParentsId = id
@ -309,26 +325,33 @@ export default {
},
// api
async handleCartoning(row) {
let jnCategoryId
// let jnCategoryId
console.log('this.selections', this.selections)
if (this.selectedCategory.arrangeType === 1) {
this.packingData = this.selections
jnCategoryId = this.packFileCategory.id
// jnCategoryId = this.packFileCategory.id
} else {
const combinedData = []
const promises = []
this.selections.forEach(async(item) => {
this.selections.forEach((item) => {
const promise = this.getPackingFileList(item.id)
.then(data => {
combinedData.push(...data)
const newData = data.map(subItem => {
return {
...subItem,
baseCategory: item.baseCategory
}
})
combinedData.push(...newData)
})
promises.push(promise)
})
await Promise.all(promises)
this.packingData = combinedData
jnCategoryId = this.packFileCategory.id
// jnCategoryId = this.packFileCategory.id
}
console.log('this.packingData', this.packingData)
const arrParams = this.packingData.map((item) => {
const json = {}
json.archivesId = item.id
@ -339,7 +362,7 @@ export default {
}
json.caseId = row.id
json.caseName = row.caseName
json.categoryId = jnCategoryId
json.categoryId = item.baseCategory
return json
})
console.log('ddddd', arrParams)
@ -356,6 +379,7 @@ export default {
},
//
handlePartParking(row, index) {
console.log('this.currentSelections', this.currentSelections)
if (!this.currentSelections.length) {
this.$message({ message: '请选择要装盒的档案!', type: 'error', offset: 8 })
return
@ -388,14 +412,15 @@ export default {
this.$message({ message: '左侧档案待选列表全部装盒完成才可保存', type: 'error', offset: 8 })
return
}
const jnCategoryId = this.packFileCategory.id
// const jnCategoryId = this.packFileCategory.id
console.log('this.selectArchivesTable', this.selectArchivesTable)
const arrParams = this.selectArchivesTable.map(item => {
const json = {}
json.archivesId = item.id
json.archivesParentsId = this.selections[0].id
json.caseId = item.caseId
json.caseName = item.caseName
json.categoryId = jnCategoryId
json.categoryId = item.baseCategory
return json
})
console.log('arrParams', arrParams)
@ -434,7 +459,7 @@ export default {
this.arrySort.push(item.fieldName + ',' + item.displayOrderBy)
}
})
this.getPackingFileList(this.selections[0].id)
this.getPackingFileList(this.selections[0].id, this.selections[0].baseCategory)
}
})
}

7
src/views/collectReorganizi/collectionLibrary/module/quickPaper/index.vue

@ -19,7 +19,7 @@
</div>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="quickVisible = false">取消</el-button>
<el-button type="primary" @click.native="handleComfireQuick">确定</el-button>
<el-button :loading="btnLoading" type="primary" @click.native="handleComfireQuick">确定</el-button>
</div>
</div>
</el-dialog>
@ -55,7 +55,7 @@ export default {
data() {
return {
quickVisible: false,
btnLoading: false,
form: {
date: ''
},
@ -81,14 +81,17 @@ export default {
this.$message({ message: '当前年月没有数据!', type: 'warning', offset: 8 })
return false
}
this.btnLoading = true
this.quickVisible = false
this.form.date = ''
this.searchNumber = 0
this.$nextTick(() => {
this.$parent.handleForm('add', 1)
})
this.btnLoading = false
} else {
console.log('error submit!!')
this.btnLoading = false
return false
}
})

42
src/views/collectReorganizi/collectionLibrary/project/index.vue

@ -18,11 +18,13 @@
@row-click="clickRowHandler"
@cell-dblclick="tableDoubleClick"
@select="handleCurrentChange"
@mousedown.native="onMouseDown"
@mouseup.native="onMouseUp"
>
<el-table-column type="selection" :reserve-selection="true" width="55" align="center" />
<el-table-column label="序号" width="55" align="center" show-overflow-tooltip>
<template slot-scope="scope">
<span>{{ (page.page === 1 ? 0 : (page.page === 0 ? 0 : page.page - 1)) * page.size + scope.$index + 1 }}</span>
<span>{{ page.page * page.size + scope.$index + 1 }}</span>
</template>
</el-table-column>
<!-- <el-table-column type="index" label="序号" width="55" align="center" /> -->
@ -50,7 +52,7 @@
<!--分页组件-->
<el-pagination
v-if="projectData.length !== 0"
:current-page="page.page"
:current-page="currentPage"
:total="page.total"
:page-size="page.size"
:pager-count="5"
@ -109,7 +111,11 @@ export default {
activeIndex: '1',
selections: [],
yearData: [],
parentId: null
parentId: null,
currentPage: 1,
mousedownTime: 0,
mousedownX: 0,
mousedownY: 0
}
},
watch: {
@ -150,6 +156,14 @@ export default {
selectAll(val) {
this.selections = val
},
onMouseDown(event) {
this.mousedownTime = Date.now()
this.mousedownX = event.clientX
this.mousedownY = event.clientY
},
onMouseUp() {
//
},
// table -
tableDoubleClick(row) {
if (this.timer) {
@ -176,24 +190,40 @@ export default {
if (this.timer) {
clearTimeout(this.timer)
}
const clickTime = Date.now()
const clickX = event.clientX
const clickY = event.clientY
const timeDiff = clickTime - this.mousedownTime
const distance = Math.sqrt(
Math.pow(clickX - this.mousedownX, 2) + Math.pow(clickY - this.mousedownY, 2)
)
//
if (timeDiff < 300 && distance < 10) {
this.timer = setTimeout(() => {
this.parentId = row.id
localStorage.removeItem('currentPageSize')
this.openAnjuan('所属项目:' + row.project_no, this.parentId, row)
this.getDictsList(1)
}, 300)
// this.selections = this.crud.selections
}
},
//
handleCurrentChange(selection, row) {
this.selections = selection
},
handleSizeChange(size) {
this.currentPage = 1
this.page.size = size
this.page.page = 1
this.page.page = 0
localStorage.setItem('currentPageSize', size)
this.getViewTable(1)
},
handleCurrentPage(val) {
this.page.page = val
handleCurrentPage(pageVal) {
this.currentPage = pageVal
this.page.page = pageVal - 1
localStorage.setItem('currentPage', JSON.stringify(this.page.page))
this.getViewTable(1)
}
}

43
src/views/components/category/PreviewForm.vue

@ -752,11 +752,38 @@ export default {
trigger: item.isInputClass === 'text' ? 'blur' : 'change'
}
if (item.isColumnLength) {
// archive_year
if (item.fieldName !== 'archive_year' && item.isColumnLength) {
rule.max = parseInt(item.isColumnLength) //
rule.message = `输入内容最多为${item.isColumnLength}个字符的${item.fieldCnName}`
}
// archive_year
if (item.fieldName === 'archive_year') {
rule.validator = (rule, value, callback) => {
//
if (item.isRequired === null && value === '') {
callback()
return
}
let errorMessage = null
if (isNaN(Number(value))) {
errorMessage = `请输入有效的数字的${item.fieldCnName}`
} else if (item.isColumnLength && String(value).length !== parseInt(item.isColumnLength)) {
errorMessage = `输入的${item.fieldCnName}必须是 ${item.isColumnLength} 个字符`
}
if (errorMessage) {
rule.message = errorMessage
callback(new Error(errorMessage))
} else {
callback()
}
}
}
//
const fieldValue = this.addOrUpdateForm[item.fieldName]
// isDataType
@ -796,7 +823,7 @@ export default {
this.formPreviewData[newIndex] = index
}
},
submitForm(formName, categoryId, quickPaperArcId) {
submitForm(formName, categoryId, quickPaperArcId, arcAddType) {
//
this.formPreviewData.map(item => {
if (item.isInputClass === 'date') {
@ -850,6 +877,7 @@ export default {
}
})
} else {
this.$emit('formLoadingShow', true)
//
let parentsId = null
// 2 3 / 4 6
@ -900,12 +928,22 @@ export default {
}
}
console.log(params)
console.log('this.addOrUpdateForm', this.addOrUpdateForm)
if (this.archivesType === 'add') {
collectAdd(params).then(res => {
if (res.code === 200) {
this.$message({ message: res.message, type: 'success', offset: 8 })
this.$emit('close-dialog', parentsId)
if (arcAddType === 1) {
localStorage.setItem('savePrevFromData', JSON.stringify(this.addOrUpdateForm))
setTimeout(() => {
this.$emit('handleForm', 'add', 0)
}, 1000)
} else {
localStorage.removeItem('savePrevFromData')
}
}
this.$emit('formLoadingShow', false)
})
} else {
collectEdit(params).then(res => {
@ -916,6 +954,7 @@ export default {
this.$message({ message: res.message, type: 'error', offset: 8 })
this.$emit('close-dialog', parentsId)
}
this.$emit('formLoadingShow', false)
})
}
}

2
src/views/storeManage/levelManage/index.vue

@ -42,7 +42,7 @@
<el-table-column align="center" prop="rowNo" label="层号" width="80" />
<el-table-column v-if="deviceInfo.deviceTypeId && deviceInfo.deviceTypeId.name === '回转柜'" align="center" prop="columnRowNo" label="列号" width="80" />
<el-table-column v-if="deviceInfo.deviceTypeId && deviceInfo.deviceTypeId.name === '密集架'" align="center" prop="direction" label="方向" width="80" />
<el-table-column align="center" prop="tid" label="标签" />
<el-table-column align="center" prop="tid" label="电子标签" />
<el-table-column align="center" prop="update_time" label="操作时间" width="150">
<template slot-scope="scope">
<div>{{ scope.row.update_time | parseTime }}</div>

2
src/views/storeManage/tagManage/bindTagList/index.vue

@ -23,7 +23,7 @@
<el-table ref="table" v-loading="loading" :data="bindTagList" style="width: 100%;" height="calc(100vh - 357px)" @row-click="clickRowHandler" @selection-change="selectionChangeHandler">
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column prop="tid" label="TID" align="center" />
<el-table-column prop="tid" label="电子标签" align="center" />
<el-table-column label="绑定对象" align="center">
<template slot-scope="scope">
<span v-if="scope.row.isType === 1">档案</span>

2
src/views/storeManage/tagManage/tagLog/index.vue

@ -27,7 +27,7 @@
<span v-if="scope.row.operType === 2">解绑</span>
</template>
</el-table-column>
<el-table-column prop="tid" align="center" label="TID" min-width="150" />
<el-table-column prop="tid" align="center" label="电子标签" min-width="150" />
<el-table-column prop="bindingType" align="center" label="绑定对象" min-width="100">
<template slot-scope="scope">
<span v-if="scope.row.bindingType === 1">档案</span>

Loading…
Cancel
Save