You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
470 lines
18 KiB
470 lines
18 KiB
<template>
|
|
<el-dialog class="partPackingDialog" :title="packingTitle" :visible.sync="packingVisible" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :before-close="handleClose">
|
|
<div class="setting-dialog">
|
|
<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-select slot="prepend" v-model="inputSelect" style="width: 90px" @change="querySelect">
|
|
<el-option
|
|
v-for="item in queryOption"
|
|
:key="item.value"
|
|
:label="item.label"
|
|
:value="item.value"
|
|
/>
|
|
</el-select>
|
|
</el-input>
|
|
<el-button class="filter-item filter-search" size="mini" type="success" icon="el-icon-search" @click="getCaseList">搜索</el-button>
|
|
<el-button class="filter-rfid" type="success" disabled><i class="iconfont icon-duqu" />读取</el-button>
|
|
</div>
|
|
<div class="selct-data-head">
|
|
<p v-if="selectedCategory.arrangeType === 1">数据来源:文件<span>{{ selections.length }}</span>条数据</p>
|
|
<!-- totalSumAll -->
|
|
<p v-else>数据来源:案卷<span>{{ selections.length }}</span>条数据 卷内<span>{{ 111 }}</span>条数据</p>
|
|
</div>
|
|
</div>
|
|
<!--表格渲染-->
|
|
<!-- 装盒 -->
|
|
<el-table
|
|
v-if="!isPackingOrPartType"
|
|
ref="table"
|
|
:data="tableData"
|
|
style="min-width: 100%"
|
|
height="calc(100vh - 382px)"
|
|
>
|
|
<el-table-column prop="create_date" label="操作" width="80" align="center">
|
|
<template slot-scope="scope">
|
|
<el-button class="packing-handle-btn iconfont" @click="handleCartoning(scope.row)"><svg-icon icon-class="zhuanghe" class="svg-arc-style" />装盒</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="caseNum" label="盒号" min-width="60" 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="barcode" label="条形码" min-width="120" align="center" />
|
|
<el-table-column prop="retention" label="保管期限" min-width="100" align="center" />
|
|
<el-table-column prop="security_class" label="密级" min-width="100" align="center" />
|
|
<el-table-column prop="fonds" label="全宗" min-width="100" align="center" />
|
|
<el-table-column prop="category" label="所属门类" min-width="100" align="center" />
|
|
<el-table-column prop="classify" label="所属分类" min-width="100" align="center" />
|
|
</el-table>
|
|
<!-- 分卷 -->
|
|
<div v-else class="part-packing-cont">
|
|
<div class="part-packing-item">
|
|
<h5 class="part-packing-title">盒列表-待选</h5>
|
|
<el-table
|
|
ref="table"
|
|
class="custom-table"
|
|
:data="tableData"
|
|
style="width: 100%"
|
|
height="calc(100vh/2 - 200px)"
|
|
>
|
|
<el-table-column prop="create_date" label="操作" width="80" align="center">
|
|
<template slot-scope="scope">
|
|
<el-button class="packing-handle-btn iconfont" @click="handleCartoning(scope.row)"><svg-icon icon-class="zhuanghe" class="svg-arc-style" />装盒</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="caseNum" label="盒号" min-width="60" 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="barcode" label="条形码" min-width="120" align="center" />
|
|
<el-table-column prop="retention" label="保管期限" min-width="100" align="center" />
|
|
<el-table-column prop="security_class" label="密级" min-width="100" align="center" />
|
|
<el-table-column prop="fonds" label="全宗" min-width="100" align="center" />
|
|
<el-table-column prop="category" label="所属门类" min-width="100" align="center" />
|
|
<el-table-column prop="classify" label="所属分类" min-width="100" align="center" />
|
|
</el-table>
|
|
</div>
|
|
<div class="part-packing-item">
|
|
<h5 class="part-packing-title">盒列表-已选</h5>
|
|
<el-table
|
|
ref="selectBox"
|
|
class="custom-table"
|
|
:data="selectTableData"
|
|
style="width: 100%"
|
|
height="calc(100vh/2 - 200px)"
|
|
>
|
|
<el-table-column prop="create_date" label="操作" align="center">
|
|
<template slot-scope="scope">
|
|
<el-button class="packing-recall-btn iconfont" @click="cancelParking(scope.row,scope.$index)"><svg-icon icon-class="chehui" class="svg-arc-style" />撤销</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="caseNum" label="盒号" min-width="60" 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="barcode" label="条形码" min-width="120" align="center" />
|
|
<el-table-column prop="retention" label="保管期限" min-width="100" align="center" />
|
|
<el-table-column prop="security_class" label="密级" min-width="100" align="center" />
|
|
<el-table-column prop="fonds" label="全宗" min-width="100" align="center" />
|
|
<el-table-column prop="category" label="所属门类" min-width="100" align="center" />
|
|
<el-table-column prop="classify" label="所属分类" min-width="100" align="center" />
|
|
</el-table>
|
|
</div>
|
|
<div class="part-packing-item">
|
|
<h5 class="part-packing-title">档案列表-待选</h5>
|
|
<el-table
|
|
ref="archivesList"
|
|
class="archives-table custom-table"
|
|
:data="archivesTable"
|
|
highlight-current-row
|
|
style="width: 100%;"
|
|
height="calc(100vh/2 - 200px)"
|
|
@selection-change="selectionChangeHandler"
|
|
@row-click="clickRowHandler"
|
|
>
|
|
<el-table-column type="selection" width="55" align="center" />
|
|
<!-- <el-table-column prop="fonds" label="全宗" min-width="100" align="center" /> -->
|
|
<!-- <el-table-column label="文件" prop="children_num" width="55" align="center" /> -->
|
|
<el-table-column v-for="field in tableDisplayFields" :key="field.id" :label="field.fieldCnName" :align="field.displayformatType" :width="field.displayLength" show-overflow-tooltip>
|
|
<template slot="header">
|
|
<el-tooltip
|
|
class="item"
|
|
effect="dark"
|
|
:content="field.fieldCnName"
|
|
placement="top-start"
|
|
>
|
|
<span>{{ field.fieldCnName }}</span>
|
|
</el-tooltip>
|
|
</template>
|
|
<template slot-scope="scope">
|
|
{{ scope.row[field.fieldName] }}
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</div>
|
|
<div class="part-packing-item">
|
|
<h5 class="part-packing-title">档案列表-已选</h5>
|
|
<el-table
|
|
ref="selectArchivesList"
|
|
class="archives-table custom-table"
|
|
:data="selectArchivesTable"
|
|
highlight-current-row
|
|
style="width: 100%;"
|
|
height="calc(100vh/2 - 200px)"
|
|
>
|
|
<el-table-column type="index" label="序号" width="55" align="center" />
|
|
<!-- <el-table-column label="文件" prop="children_num" width="55" align="center" /> -->
|
|
<el-table-column v-for="field in tableDisplayFields" :key="field.id" :label="field.fieldCnName" :align="field.displayformatType" :width="field.displayLength" show-overflow-tooltip>
|
|
<template slot="header">
|
|
<el-tooltip
|
|
class="item"
|
|
effect="dark"
|
|
:content="field.fieldCnName"
|
|
placement="top-start"
|
|
>
|
|
<span>{{ field.fieldCnName }}</span>
|
|
</el-tooltip>
|
|
</template>
|
|
<template slot-scope="scope">
|
|
{{ scope.row[field.fieldName] }}
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</div>
|
|
</div>
|
|
<div v-if="isPackingOrPartType" slot="footer" class="dialog-footer">
|
|
<el-button type="text">取消</el-button>
|
|
<el-button type="primary" @click="handleComfireCartoning">确定</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
|
|
</template>
|
|
|
|
<script>
|
|
// import { FetchInitCartoningList, FetchCartoning } from '@/api/archivesManage/caseManage'
|
|
// import { FetchInitArchivesView } from '@/api/archivesManage/archivesList'
|
|
import { header, form } from '@crud/crud'
|
|
const data = [
|
|
{
|
|
'id': '02877E5A6559BEDE24B227',
|
|
'caseName': 'ZL-2023-1',
|
|
'caseType': 0,
|
|
'tid': null,
|
|
'barcode': null,
|
|
'shelfId': null,
|
|
'folderLocation': null,
|
|
'folderLocationDetails': null,
|
|
'depositNum': 0,
|
|
'storageType': 0,
|
|
'storageTime': null,
|
|
'create_by': 'admin',
|
|
'update_by': 'admin',
|
|
'create_time': 1695628425000,
|
|
'update_time': 1702971551000
|
|
}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}
|
|
]
|
|
export default {
|
|
name: 'Packing',
|
|
components: { },
|
|
// inject: ['caseData', 'recycleMain'],
|
|
mixins: [
|
|
header(),
|
|
form({})
|
|
],
|
|
props: {
|
|
selectedCategory: {
|
|
type: Object,
|
|
default: function() {
|
|
return {}
|
|
}
|
|
},
|
|
selections: {
|
|
type: Array,
|
|
default: () => []
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
packingTitle: '装盒',
|
|
packingData: [],
|
|
tableData: [],
|
|
selectTableData: [],
|
|
archivesTable: [],
|
|
selectArchivesTable: [],
|
|
tid: null,
|
|
caseName: null,
|
|
barcode: null,
|
|
caseQuery: {},
|
|
inputSelect: null,
|
|
queryOption: [
|
|
{ value: 'caseName', label: '盒号' },
|
|
{ value: 'tid', label: 'TID' },
|
|
{ value: 'barcode', label: '条形码' }
|
|
],
|
|
packingVisible: false, // 装盒
|
|
isPackingOrPartType: 0
|
|
}
|
|
},
|
|
created() {
|
|
// 初始化带select的输入框的 - 搜索
|
|
this.inputSelect = this.queryOption[0].value
|
|
this.tableData = data
|
|
this.selectTableData = data
|
|
},
|
|
methods: {
|
|
// 搜索-select
|
|
querySelect(val) {
|
|
this.inputSelect = val
|
|
},
|
|
// 搜索盒列表
|
|
getCaseList() {
|
|
if (!this.caseQuery[this.inputSelect]) {
|
|
this.$message.error('请输入后再搜索!')
|
|
return
|
|
}
|
|
switch (this.inputSelect) {
|
|
case 'caseName':
|
|
this.caseName = this.caseQuery[this.inputSelect]
|
|
this.tid = null
|
|
this.barcode = null
|
|
break
|
|
case 'tid':
|
|
this.tid = this.caseQuery[this.inputSelect]
|
|
this.caseName = null
|
|
this.barcode = null
|
|
break
|
|
case 'barcode':
|
|
this.barcode = this.caseQuery[this.inputSelect]
|
|
this.caseName = null
|
|
this.tid = null
|
|
break
|
|
}
|
|
// const params = {
|
|
// 'tid': this.tid,
|
|
// 'caseName': this.caseName,
|
|
// 'barcode': this.barcode,
|
|
// 'page': 0,
|
|
// 'size': 10
|
|
// }
|
|
// FetchInitCartoningList(params).then(res => {
|
|
// this.tableData = res.content
|
|
// })
|
|
},
|
|
async getPackingFileList() {
|
|
// let categoryId
|
|
// if (this.selectedCategory.isType === 2) {
|
|
// categoryId = this.selectedCategory.children[0].children[0].id
|
|
// } else {
|
|
// categoryId = this.selectedCategory.children[0].id
|
|
// }
|
|
// const params = {
|
|
// 'categoryId': categoryId,
|
|
// 'parentsId': this.recycleMain.anjuanSelection.id,
|
|
// 'isdel': false,
|
|
// 'page': 0,
|
|
// 'size': null,
|
|
// 'sort': null,
|
|
// 'queryType': null,
|
|
// 'queryTitle': null,
|
|
// 'itemNo': null,
|
|
// 'archiveCtgNo': null,
|
|
// 'responsibleby': null,
|
|
// 'archiveNo': null,
|
|
// 'archiveYear': null,
|
|
// 'department': null,
|
|
// 'retention': null,
|
|
// 'securityClass': null,
|
|
// 'organizationMatter': null
|
|
// }
|
|
// await FetchInitArchivesView(params).then(data => {
|
|
// if (data) {
|
|
// this.packingData = data.list.content
|
|
// this.archivesTable = data.list.content
|
|
// }
|
|
// })
|
|
},
|
|
// 装盒 api
|
|
async handleCartoning(row) {
|
|
// let jnCategoryId
|
|
// let archivesParentsId
|
|
// if (this.caseData.selectedCategory.isType === 5) {
|
|
// this.packingData = this.caseData.selections
|
|
// jnCategoryId = this.caseData.selectedCategory.id
|
|
// } else {
|
|
// await this.getPackingFileList()
|
|
// if (this.caseData.selectedCategory.isType === 2) {
|
|
// jnCategoryId = this.caseData.selectedCategory.children[0].children[0].id
|
|
// } else {
|
|
// jnCategoryId = this.caseData.selectedCategory.children[0].id
|
|
// }
|
|
// archivesParentsId = this.caseData.selections[0].id
|
|
// }
|
|
// const arrParams = this.packingData.map(item => {
|
|
// const json = {}
|
|
// json.archivesId = item.id
|
|
// if (this.caseData.selectedCategory.isType === 5) {
|
|
// json.archivesParentsId = item.id
|
|
// } else {
|
|
// json.archivesParentsId = archivesParentsId
|
|
// }
|
|
// json.caseId = row.id
|
|
// json.caseName = row.caseName
|
|
// json.categoryId = jnCategoryId
|
|
// return json
|
|
// })
|
|
// await this.FetchCartioning(arrParams)
|
|
},
|
|
FetchCartioning(arrParams) {
|
|
// FetchCartoning(arrParams).then(res => {
|
|
// this.$message.success('装盒成功!')
|
|
// this.packingVisible = false
|
|
// this.crud.refresh()
|
|
// this.tableData = []
|
|
// this.caseQuery[this.inputSelect] = ''
|
|
// })
|
|
},
|
|
// 分卷装盒
|
|
handlePartParking(row, index) {
|
|
// if (!this.selections.length) {
|
|
// this.$message.error('请选择要装盒的档案!')
|
|
// return
|
|
// }
|
|
// // 分卷装盒存在未完成装盒操作,且某一个盒能一直搜索到,故添加到盒里时进行判断筛选
|
|
// if (this.selectTableData.findIndex(val => val.id === row.id) === -1) {
|
|
// this.selectTableData.push(row)
|
|
// }
|
|
// this.tableData.splice(index, 1)
|
|
// this.selections.forEach(item => {
|
|
// item.caseId = row.id
|
|
// item.caseName = row.caseName
|
|
// this.archivesTable.splice(this.archivesTable.findIndex(val => val.id === item.id), 1)
|
|
// this.selectArchivesTable.push(item)
|
|
// })
|
|
},
|
|
// 撤回装盒
|
|
cancelParking(row, index) {
|
|
// this.tableData.unshift(row)
|
|
// this.selectTableData.splice(index, 1)
|
|
// this.selectArchivesTable.forEach((item, i) => {
|
|
// if (item.caseId === row.id) {
|
|
// this.archivesTable.push(item)
|
|
// }
|
|
// })
|
|
// this.selectArchivesTable.splice(this.selectArchivesTable.findIndex((item, i) => item.caseId === row.id), this.archivesTable.length)
|
|
},
|
|
handleComfireCartoning() {
|
|
// if (this.archivesTable.length) {
|
|
// this.$message.error('左侧档案待选列表全部装盒完成才可保存')
|
|
// return
|
|
// }
|
|
// let jnCategoryId
|
|
// if (this.caseData.selectedCategory.isType === 2) {
|
|
// jnCategoryId = this.caseData.selectedCategory.children[0].children[0].id
|
|
// } else {
|
|
// jnCategoryId = this.caseData.selectedCategory.children[0].id
|
|
// }
|
|
// const arrParams = this.selectArchivesTable.map(item => {
|
|
// const json = {}
|
|
// json.archivesId = item.id
|
|
// json.archivesParentsId = this.caseData.selections[0].id
|
|
// json.caseId = item.caseId
|
|
// json.caseName = item.caseName
|
|
// json.categoryId = jnCategoryId
|
|
// return json
|
|
// })
|
|
// this.FetchCartioning(arrParams)
|
|
},
|
|
clearTableData() {
|
|
this.tableData = []
|
|
},
|
|
// table
|
|
clickRowHandler(row) {
|
|
this.$refs.archivesList.toggleRowSelection(row)
|
|
},
|
|
// table
|
|
selectionChangeHandler(val) {
|
|
this.selections = val
|
|
},
|
|
// dialog - close
|
|
handleClose(done) {
|
|
this.showCoverVisible = false
|
|
this.$set(this.caseQuery, this.inputSelect, '')
|
|
this.tableData = []
|
|
this.selectTableData = []
|
|
this.archivesTable = []
|
|
this.selectArchivesTable = []
|
|
done()
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
.filter-rfid{
|
|
margin-left: 10px;
|
|
padding: 0 13px;
|
|
height: 32px;
|
|
line-height: 30px;
|
|
&.is-disabled,
|
|
&.is-disabled:focus{
|
|
border-color: #0348F3 !important;
|
|
background-color: rgba(31, 85, 235, 0.20) !important;
|
|
color: #0348F3 !important;
|
|
opacity: 0.6;
|
|
}
|
|
.iconfont{
|
|
font-size: 20px;
|
|
}
|
|
}
|
|
.el-table .el-button{
|
|
padding: 0;
|
|
}
|
|
|
|
::v-deep .custom-table .el-table__body-wrapper::-webkit-scrollbar {
|
|
width: 5px !important;
|
|
height: 5px !important;
|
|
background-color: #DDE8FB !important;
|
|
}
|
|
|
|
::v-deep .custom-table .el-table__body-wrapper::-webkit-scrollbar-thumb {
|
|
border-radius: 3px;
|
|
background-color: #4578F6 !important;
|
|
}
|
|
|
|
::v-deep .custom-table .el-table__body-wrapper::-webkit-scrollbar-thumb:hover {
|
|
background-color: #4578F6 !important;
|
|
}
|
|
|
|
::v-deep .custom-table .el-table__body-wrapper::-webkit-scrollbar-corner {
|
|
background-color: #DDE8FB !important;
|
|
}
|
|
</style>
|