xuhuajiao
1 year ago
28 changed files with 1324 additions and 97 deletions
-
100src/api/archivesKeeping/caseManage.js
-
4src/api/archivesManage/library.js
-
17src/assets/styles/archives-manage.scss
-
368src/views/archiveKeeping/caseManage/caseList/index.vue
-
107src/views/archiveKeeping/caseManage/caseList/module/detailDialog.vue
-
248src/views/archiveKeeping/caseManage/caseList/module/form.vue
-
54src/views/archiveKeeping/caseManage/caseList/module/openCaseDlg.vue
-
57src/views/archiveKeeping/caseManage/index.vue
-
197src/views/archiveKeeping/caseManage/module/caseLog.vue
-
1src/views/archiveUtilize/archiveEditing/module/materialSelected.vue
-
2src/views/archivesManage/managementLibrary/anjuan/tableList.vue
-
3src/views/archivesManage/managementLibrary/index.vue
-
2src/views/archivesManage/managementLibrary/juannei/index.vue
-
7src/views/archivesManage/managementLibrary/mixins/index.js
-
6src/views/archivesManage/managementLibrary/module/archivesInfo/index.vue
-
25src/views/archivesManage/managementLibrary/module/collectHeader.vue
-
160src/views/archivesManage/managementLibrary/module/packingBox/index.vue
-
2src/views/archivesManage/managementLibrary/project/index.vue
-
2src/views/collectReorganizi/collectionLibrary/anjuan/tableList.vue
-
2src/views/collectReorganizi/collectionLibrary/juannei/index.vue
-
1src/views/collectReorganizi/collectionLibrary/mixins/index.js
-
6src/views/collectReorganizi/collectionLibrary/module/archivesInfo/index.vue
-
1src/views/collectReorganizi/collectionLibrary/module/collectMoveFile/index.vue
-
1src/views/collectReorganizi/collectionLibrary/module/insertFile/index.vue
-
2src/views/collectReorganizi/collectionLibrary/project/index.vue
-
30src/views/components/archivesListModule/index.vue
-
6src/views/components/category/PreviewForm.vue
-
10src/views/prearchiveLibrary/module/moveFile.vue
@ -0,0 +1,100 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
import qs from 'qs' |
||||
|
|
||||
|
export function add(form) { |
||||
|
return edit(form) |
||||
|
} |
||||
|
|
||||
|
export function edit(parameter) { |
||||
|
return request({ |
||||
|
url: 'api/archivesDeposit/editCase', |
||||
|
method: 'post', |
||||
|
data: parameter |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 删除档案盒
|
||||
|
export function del(data) { |
||||
|
return request({ |
||||
|
url: 'api/archivesDeposit/del', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 判断盒名称是否重复
|
||||
|
export function caseNameIsRepeat(parameter) { |
||||
|
return request({ |
||||
|
url: 'api/archivesDeposit/caseNameIsRepeat', |
||||
|
method: 'get', |
||||
|
params: parameter |
||||
|
}) |
||||
|
} |
||||
|
// 判断条形码值是否重复
|
||||
|
export function barcodeIsRepeat(parameter) { |
||||
|
return request({ |
||||
|
url: 'api/archivesDeposit/barcodeIsRepeat', |
||||
|
method: 'get', |
||||
|
params: parameter |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 档案盒列表
|
||||
|
export function FetchInitCaseList(parameter) { |
||||
|
return request({ |
||||
|
url: 'api/archivesDeposit/initCaseList', |
||||
|
method: 'get', |
||||
|
params: parameter |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 档案盒装盒列表
|
||||
|
export function FetchInitCartoningList(parameter) { |
||||
|
return request({ |
||||
|
url: 'api/archivesDeposit/initCartoningList', |
||||
|
method: 'get', |
||||
|
params: parameter |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 装盒
|
||||
|
export function FetchCartoning(data) { |
||||
|
return request({ |
||||
|
url: 'api/archivesDeposit/cartoning', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
// 拆盒
|
||||
|
export function unpacking(data) { |
||||
|
return request({ |
||||
|
url: 'api/archivesDeposit/unpacking', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
// 盒详情
|
||||
|
export function findInCase(params) { |
||||
|
return request({ |
||||
|
url: 'api/archivesDeposit/findInCase' + '?' + qs.stringify(params, { indices: false }), |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 获取新条码号
|
||||
|
export function getNewBarcode(params) { |
||||
|
return request({ |
||||
|
url: 'api/archivesDeposit/getNewBarcode' + '?' + qs.stringify(params, { indices: false }), |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 获取新盒号
|
||||
|
export function getNewCaseCode(params) { |
||||
|
return request({ |
||||
|
url: 'api/archivesDeposit/getNewCaseCode' + '?' + qs.stringify(params, { indices: false }), |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
export default { add, edit, del, unpacking, findInCase, getNewBarcode, getNewCaseCode } |
@ -0,0 +1,368 @@ |
|||||
|
<template> |
||||
|
<div class="recordList-main"> |
||||
|
<div class="head-container"> |
||||
|
<div class="head-search"> |
||||
|
<el-select |
||||
|
v-model="selectStatus" |
||||
|
style="margin-right: 10px; width: 110px;" |
||||
|
placeholder="请选择" |
||||
|
@change="crud.toQuery" |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="item in stateOptions" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value" |
||||
|
/> |
||||
|
</el-select> |
||||
|
<el-input |
||||
|
v-model="crud.query[inputSelect]" |
||||
|
size="small" |
||||
|
clearable |
||||
|
placeholder="请输入搜索关键字" |
||||
|
style="width: 300px;" |
||||
|
class="input-prepend filter-item" |
||||
|
@clear="crud.toQuery" |
||||
|
@keyup.enter.native="crud.toQuery" |
||||
|
> |
||||
|
<el-select slot="prepend" v-model="inputSelect" style="width: 92px"> |
||||
|
<el-option |
||||
|
v-for="item in options" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value" |
||||
|
/> |
||||
|
</el-select> |
||||
|
</el-input> |
||||
|
<rrOperation /> |
||||
|
</div> |
||||
|
<div class="handle-container"> |
||||
|
<crudOperation :permission="permission"> |
||||
|
<template v-slot:middle> |
||||
|
<el-button slot="reference" size="mini" :loading="crud.delAllLoading" :disabled="!crud.selections.length" @click="handleDel(crud.selections)"> |
||||
|
<i class="iconfont icon-shanchu" /> |
||||
|
删除 |
||||
|
</el-button> |
||||
|
</template> |
||||
|
</crudOperation> |
||||
|
<div> |
||||
|
<el-button size="mini" :disabled="crud.selections.length === 0" @click="openCase(crud.selections)"> |
||||
|
<i class="iconfont icon-chaihe" /> |
||||
|
拆盒 |
||||
|
</el-button> |
||||
|
<el-button size="mini" :disabled="crud.selections.length !== 1" @click="bindingTag(crud.selections)"> |
||||
|
<i class="iconfont icon-bendiguajie" /> |
||||
|
绑定标签 |
||||
|
</el-button> |
||||
|
<el-button size="mini" :disabled="crud.selections.length !== 1" @click="getPrintData"> |
||||
|
<i class="iconfont icon-dayin" /> |
||||
|
打印目录 |
||||
|
</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<el-table |
||||
|
ref="table" |
||||
|
:data="crud.data" |
||||
|
style="width: 100%;" |
||||
|
height="calc(100vh - 346px)" |
||||
|
@cell-dblclick="tableDoubleClick" |
||||
|
@selection-change="crud.selectionChangeHandler" |
||||
|
> |
||||
|
<el-table-column type="selection" width="55" align="center" /> |
||||
|
<el-table-column type="index" label="序号" width="55" align="center" /> |
||||
|
<el-table-column prop="createTime" label="状态" align="center" width="110"> |
||||
|
<template slot-scope="scope"> |
||||
|
<span :class="getClassByStorageType(scope.row)">{{ scope.row.storageType | storageTypeStatus }}</span> |
||||
|
</template> |
||||
|
</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="150" /> |
||||
|
<el-table-column prop="tid" label="TID" 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"> |
||||
|
<span v-if="!scope.row.folderLocationDetails">-</span> |
||||
|
<span v-else> |
||||
|
<el-tag effect="dark">{{ scope.row.folderLocationDetails }}</el-tag> |
||||
|
</span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="update_time" width="175" label="操作时间" align="center"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div>{{ scope.row.update_time | parseTime }}</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
<pagination v-if="crud.data.length !== 0" /> |
||||
|
|
||||
|
<eForm /> |
||||
|
<binding-tag-dlg ref="bindingTag" :binding-id="crud.selections[0] && crud.selections[0].id" :binding-type="2" binding-txt="档案盒" @refresh="crud.refresh" /> |
||||
|
<open-case-dlg ref="openCase" @refresh="crud.refresh" /> |
||||
|
<detailDialog ref="detailDom" /> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import CRUD, { presenter, crud } from '@crud/crud' |
||||
|
import caseCurd from '@/api/archivesKeeping/caseManage' |
||||
|
import { getNewBarcode, getNewCaseCode } from '@/api/archivesKeeping/caseManage' |
||||
|
import { FetchFondsDetail } from '@/api/system/fonds' |
||||
|
import rrOperation from '@crud/RR.operation' |
||||
|
import crudOperation from '@crud/CRUD.operation' |
||||
|
import pagination from '@crud/Pagination' |
||||
|
|
||||
|
import BindingTagDlg from '@/views/components/BindingTagDlg' |
||||
|
import eForm from './module/form' |
||||
|
import openCaseDlg from './module/openCaseDlg' |
||||
|
import detailDialog from './module/detailDialog' |
||||
|
|
||||
|
import html2canvas from 'html2canvas' |
||||
|
import printJS from 'print-js' |
||||
|
import { mapGetters } from 'vuex' |
||||
|
|
||||
|
export default { |
||||
|
name: 'RecordList', |
||||
|
filters: { |
||||
|
storageTypeStatus(val) { |
||||
|
switch (val) { |
||||
|
case 0: |
||||
|
return '未入' |
||||
|
case 1: |
||||
|
return '待入' |
||||
|
case 2: |
||||
|
return '已入' |
||||
|
case 3: |
||||
|
return '待出' |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
components: { pagination, rrOperation, crudOperation, BindingTagDlg, eForm, openCaseDlg, detailDialog }, |
||||
|
mixins: [presenter(), crud()], |
||||
|
cruds() { |
||||
|
return CRUD({ |
||||
|
url: 'api/archivesDeposit/initCaseList', |
||||
|
crudMethod: { ...caseCurd }, |
||||
|
title: '档案盒', |
||||
|
optShow: { |
||||
|
add: true, |
||||
|
edit: true, |
||||
|
del: false, |
||||
|
download: false, |
||||
|
reset: false, |
||||
|
group: false |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
props: { |
||||
|
activeIndex: { |
||||
|
type: Number, |
||||
|
default: 0 |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
data() { |
||||
|
return { |
||||
|
permission: { |
||||
|
add: ['admin', 'caseManage:add'], |
||||
|
edit: ['admin', 'caseManage:edit'], |
||||
|
del: ['admin', 'caseManage:del'] |
||||
|
}, |
||||
|
selectStatus: null, |
||||
|
stateOptions: [ |
||||
|
{ |
||||
|
value: 1, |
||||
|
label: '空盒' |
||||
|
}, |
||||
|
{ |
||||
|
value: 2, |
||||
|
label: '未入库' |
||||
|
}, |
||||
|
{ |
||||
|
value: 3, |
||||
|
label: '待入库' |
||||
|
}, |
||||
|
{ |
||||
|
value: 4, |
||||
|
label: '已入库' |
||||
|
}, { |
||||
|
value: 5, |
||||
|
label: '待出库' |
||||
|
} |
||||
|
], |
||||
|
options: [ |
||||
|
{ value: 'caseCode', label: '盒号' }, |
||||
|
{ value: 'caseName', label: '盒名称' }, |
||||
|
{ value: 'tid', label: '电子标签' }, |
||||
|
{ value: 'barcode', label: '条码' } |
||||
|
], |
||||
|
inputSelect: 'caseCode' |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
...mapGetters([ |
||||
|
'user' |
||||
|
]) |
||||
|
}, |
||||
|
watch: { |
||||
|
activeIndex: function(newValue, oldValue) { |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
}, |
||||
|
methods: { |
||||
|
getClassByStorageType(row) { |
||||
|
if (row.storageType === 0) { // 未入 |
||||
|
return 'row-state cancel-state' |
||||
|
} else if (row.storageType === 1) { // 待入 |
||||
|
return 'row-state ing-state' |
||||
|
} else if (row.storageType === 2) { // 已入 |
||||
|
return 'row-state end-state' |
||||
|
} else if (row.storageType === 3) { // 待出 |
||||
|
return 'row-state ing-state' |
||||
|
} |
||||
|
}, |
||||
|
[CRUD.HOOK.beforeRefresh]() { |
||||
|
this.crud.query.storageType = this.selectStatus |
||||
|
}, |
||||
|
// 新增 - 判断当前节点类型 |
||||
|
[CRUD.HOOK.beforeToAdd](crud, form, btn) { |
||||
|
getNewBarcode().then(res => { |
||||
|
form.barcode = res |
||||
|
}) |
||||
|
getNewCaseCode().then(res => { |
||||
|
form.caseCode = res |
||||
|
}) |
||||
|
if (this.user.fonds.id) { |
||||
|
FetchFondsDetail({ id: this.user.fonds.id }).then((res) => { |
||||
|
form.caseFonds = res.fondsNo |
||||
|
}).catch(err => { |
||||
|
console.log(err) |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
[CRUD.HOOK.beforeToCU](crud, form, btn) { |
||||
|
console.log(form) |
||||
|
}, |
||||
|
// 提交前的验证 |
||||
|
[CRUD.HOOK.afterValidateCU](crud) { |
||||
|
console.log(crud.form) |
||||
|
return true |
||||
|
}, |
||||
|
resetQuery() { |
||||
|
}, |
||||
|
tableDoubleClick(row) { |
||||
|
}, |
||||
|
handleCloseDialog(done) { |
||||
|
}, |
||||
|
// 打印 |
||||
|
getPrintData() { |
||||
|
const params = { |
||||
|
caseId: this.crud.selections[0].id |
||||
|
} |
||||
|
this.crud.crudMethod.findInCase(params).then(res => { |
||||
|
if (res) { |
||||
|
this.printData = res.archives |
||||
|
} |
||||
|
this.isHidden = true |
||||
|
this.$nextTick(() => { |
||||
|
this.printFn() |
||||
|
this.isHidden = false |
||||
|
}) |
||||
|
}) |
||||
|
}, |
||||
|
printFn() { |
||||
|
const printContent = this.$refs.printId |
||||
|
// 获取dom 宽度 高度 |
||||
|
const width = printContent.clientWidth |
||||
|
const height = printContent.clientHeight |
||||
|
// 创建一个canvas节点 |
||||
|
const canvas = document.createElement('canvas') |
||||
|
|
||||
|
const scale = 4 // 定义任意放大倍数,支持小数;越大,图片清晰度越高,生成图片越慢。 |
||||
|
canvas.width = width * scale // 定义canvas 宽度 * 缩放 |
||||
|
canvas.height = height * scale // 定义canvas高度 *缩放 |
||||
|
canvas.style.width = width * scale + 'px' |
||||
|
canvas.style.height = height * scale + 'px' |
||||
|
canvas.getContext('2d').scale(scale, scale) // 获取context,设置scale |
||||
|
|
||||
|
const scrollTop = document.documentElement.scrollTop || document.body.scrollTop // 获取滚动轴滚动的长度 |
||||
|
const scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft // 获取水平滚动轴的长度 |
||||
|
|
||||
|
html2canvas(printContent, { |
||||
|
canvas, |
||||
|
backgroundColor: null, |
||||
|
useCORS: true, |
||||
|
windowHeight: document.body.scrollHeight, |
||||
|
scrollX: -scrollLeft, // 解决水平偏移问题,防止打印的内容不全 |
||||
|
scrollY: -scrollTop |
||||
|
}).then((canvas) => { |
||||
|
const url = canvas.toDataURL('image/png') |
||||
|
printJS({ |
||||
|
printable: url, |
||||
|
type: 'image', |
||||
|
documentTitle: '', // 标题 |
||||
|
style: '@page{size:auto;margin: 0cm 1cm 0cm 1cm;}' // 去除页眉页脚 |
||||
|
}) |
||||
|
}).catch(err => { |
||||
|
console.error(err) |
||||
|
}) |
||||
|
}, |
||||
|
bindingTag(data) { |
||||
|
if (data[0].tid) { |
||||
|
this.$refs.bindingTag.isBinding = true |
||||
|
this.$refs.bindingTag.tidCode = data[0].tid |
||||
|
} |
||||
|
this.$refs.bindingTag.bindingVisible = true |
||||
|
}, |
||||
|
openCase(data) { |
||||
|
const isBool = data.every(item => item.storageType === 0) |
||||
|
if (isBool) { |
||||
|
const bool = data.some(item => item.depositNum === 0) |
||||
|
if (bool) { |
||||
|
this.$message({ |
||||
|
message: '存在空档案盒不可拆盒!', |
||||
|
type: 'warning' |
||||
|
}) |
||||
|
} else { |
||||
|
this.$refs.openCase.openCaseVisible = true |
||||
|
this.$refs.openCase.caseData = data |
||||
|
} |
||||
|
} else { |
||||
|
this.msgVisible = true |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.head-container{ |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
.head-search{ |
||||
|
margin-bottom: 0 !important; |
||||
|
} |
||||
|
.handle-container{ |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
.crud-opts{ |
||||
|
margin-right: 80px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
::v-deep .el-pagination{ |
||||
|
margin: 24px 0 10px 0 !important |
||||
|
} |
||||
|
|
||||
|
::v-deep .input-prepend .el-input__inner{ |
||||
|
padding-left: 100px; |
||||
|
} |
||||
|
.filter-rfid{ |
||||
|
border: 1px solid #0348F3 !important; |
||||
|
background-color: #fff !important; |
||||
|
color: #0348F3 !important; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,107 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<el-dialog title="档案盒详情" :visible.sync="detailVisible"> |
||||
|
<span class="dialog-right-top" /> |
||||
|
<span class="dialog-left-bottom" /> |
||||
|
<div class="setting-dialog"> |
||||
|
<div style="padding:0 10px"> |
||||
|
<div class="dpflex"> |
||||
|
<p class="left"><span class="color-blue">盒名称:</span><span class="color-white">{{ rowData.caseName }}</span></p> |
||||
|
<p class="right"><span class="color-blue">盒条码:</span><span class="color-white">{{ rowData.barcode }}</span></p> |
||||
|
</div> |
||||
|
<div class="dpflex"> |
||||
|
<p class="left"><span class="color-blue">存放位置:</span> |
||||
|
<span class="color-white"> |
||||
|
<div v-if="!rowData.folderLocationDetails">-</div> |
||||
|
<div v-else> |
||||
|
<el-tag effect="dark">{{ rowData.folderLocationDetails }}</el-tag> |
||||
|
</div> |
||||
|
</span> |
||||
|
</p> |
||||
|
<p class="right"><span class="color-blue">TID:</span><span class="color-white">{{ rowData.tid }}</span></p> |
||||
|
</div> |
||||
|
<p class="left"><span class="color-blue">创建时间:</span><span class="color-white">{{ rowData.create_time | parseTime }}</span></p> |
||||
|
</div> |
||||
|
<el-table :data="tableData" style="margin-top:15px;" height="342px"> |
||||
|
<el-table-column type="index" label="序号" align="center" width="80" /> |
||||
|
<el-table-column prop="docNo" label="发文字号" show-overflow-tooltip width="140" align="center" /> |
||||
|
<el-table-column prop="child" label="子条数目" align="center" width="100" /> |
||||
|
<el-table-column prop="categoryType" label="门类级别" align="center" width="100"> |
||||
|
<template slot-scope="scope"> |
||||
|
<span v-if="scope.row.categoryType === 5" style="width:56px">文件级</span> |
||||
|
<span v-if="scope.row.categoryType === 4" style="width:56px">卷内级</span> |
||||
|
<span v-if="scope.row.categoryType === 3" style="width:56px">案卷级</span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="categoryName" label="门类名称" align="center" width="140" :show-overflow-tooltip="true" /> |
||||
|
<el-table-column prop="fondsNo" label="全宗号" align="center" width="180" /> |
||||
|
<el-table-column prop="archiveNo" label="档号" align="center" width="220" /> |
||||
|
<el-table-column prop="archiveYear" label="归档年度" align="center" width="150" /> |
||||
|
<el-table-column prop="maintitle" :show-overflow-tooltip="true" align="center" label="题名" width="180" /> |
||||
|
<el-table-column prop="securityClass" label="保密程度" align="center" width="150" /> |
||||
|
<el-table-column prop="department" label="部门名称" align="center" width="150" /> |
||||
|
<el-table-column prop="caseName" label="盒名称" :show-overflow-tooltip="true" align="center" width="190" /> |
||||
|
<el-table-column prop="folderLocationDetails" align="center" label="所在位置" width="300"> |
||||
|
<template slot-scope="scope"> |
||||
|
<span v-if="!scope.row.folderLocationDetails">-</span> |
||||
|
<span v-else> |
||||
|
<el-tag effect="dark">{{ scope.row.folderLocationDetails }}</el-tag> |
||||
|
</span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="create_time" align="center" label="创建时间" width="150"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div>{{ scope.row.create_time | parseTime }}</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
detailVisible: false, |
||||
|
rowData: {}, |
||||
|
tableData: [] |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
::v-deep .el-dialog{ |
||||
|
width: 950px; |
||||
|
// height: 520px; |
||||
|
} |
||||
|
::v-deep .el-dialog__body{ |
||||
|
padding: 20px 0; |
||||
|
} |
||||
|
::v-deep .el-dialog .el-dialog__header .el-dialog__close::before{ |
||||
|
position: absolute; |
||||
|
right: -160px; |
||||
|
bottom: -10px; |
||||
|
} |
||||
|
p{ |
||||
|
margin-bottom: 24px; |
||||
|
} |
||||
|
.dpflex{ |
||||
|
display: flex; |
||||
|
.left{ |
||||
|
width: 400px; |
||||
|
} |
||||
|
} |
||||
|
.color-blue{ |
||||
|
width: 86px; |
||||
|
display: inline-block; |
||||
|
text-align: right; |
||||
|
color: #339CFF; |
||||
|
} |
||||
|
.color-white{ |
||||
|
display: inline-block; |
||||
|
color: #fff; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,248 @@ |
|||||
|
<template> |
||||
|
<el-dialog append-to-body :close-on-click-modal="false" :modal-append-to-body="false" :before-close="crud.cancelCU" :visible="crud.status.cu > 0" :title="crud.status.title"> |
||||
|
<span class="dialog-right-top" /> |
||||
|
<span class="dialog-left-bottom" /> |
||||
|
<div class="setting-dialog"> |
||||
|
<el-form ref="form" :model="form" inline :rules="rules" size="small" label-width="105px"> |
||||
|
<el-row> |
||||
|
<el-form-item label="盒号" prop="caseCode"> |
||||
|
<el-input v-model="form.caseCode" placeholder="请输入" disabled /> |
||||
|
</el-form-item> |
||||
|
</el-row> |
||||
|
<el-form-item label="盒名称" prop="caseName"> |
||||
|
<el-input v-model="form.caseName" placeholder="请输入" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="规格" prop="caseSpecs"> |
||||
|
<el-select |
||||
|
v-model="form.caseSpecs" |
||||
|
placeholder="请选择" |
||||
|
style="width: 225px;" |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="item in specsOptions" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value" |
||||
|
/> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="全宗" prop="caseFonds"> |
||||
|
<el-select v-model="form.caseFonds" placeholder="请选择" style="width: 225px;"> |
||||
|
<el-option |
||||
|
v-for="(item,index) in fondsOptions" |
||||
|
:key="index" |
||||
|
:label="item.fondsName" |
||||
|
:value="item.fondsNo" |
||||
|
/> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="年度" prop="caseYear"> |
||||
|
<el-input v-model="form.caseYear" placeholder="请输入" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="保管期限" prop="caseRetention"> |
||||
|
<el-select |
||||
|
v-model="form.caseRetention" |
||||
|
placeholder="请选择" |
||||
|
style="width: 225px;" |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="item in retentionOptions" |
||||
|
:key="item.dictionaryName" |
||||
|
:label="item.dictionaryName" |
||||
|
:value="item.dictionaryName" |
||||
|
/> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="密级" prop="caseClass"> |
||||
|
<el-select |
||||
|
v-model="form.caseClass" |
||||
|
placeholder="请选择" |
||||
|
style="width: 225px;" |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="item in calssOptions" |
||||
|
:key="item.dictionaryName" |
||||
|
:label="item.dictionaryName" |
||||
|
:value="item.dictionaryName" |
||||
|
/> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="开始件号" prop="startItemNo"> |
||||
|
<el-input v-model="form.startItemNo" placeholder="请输入" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="结束件号" prop="endItemNo"> |
||||
|
<el-input v-model="form.endItemNo" placeholder="请输入" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="装盒人" prop="packing"> |
||||
|
<el-input v-model="form.packing" placeholder="请输入" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="装盒日期" prop="packDate"> |
||||
|
<el-date-picker |
||||
|
v-model="form.packDate" |
||||
|
type="date" |
||||
|
placeholder="选择日期" |
||||
|
style="width: 225px;" |
||||
|
/> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="检查人" prop="check"> |
||||
|
<el-input v-model="form.check" placeholder="请输入" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="检查日期" prop="checkDate"> |
||||
|
<el-date-picker |
||||
|
v-model="form.checkDate" |
||||
|
type="date" |
||||
|
placeholder="选择日期" |
||||
|
style="width: 225px;" |
||||
|
/> |
||||
|
</el-form-item> |
||||
|
<el-row> |
||||
|
<el-form-item label="电子标签" prop="tid"> |
||||
|
<el-input v-model="form.tid" style="width: 568px;" placeholder="请输入" disabled /> |
||||
|
</el-form-item> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-form-item label="条码" prop="barcode"> |
||||
|
<el-input v-model="form.barcode" style="width: 568px;" placeholder="请输入" disabled /> |
||||
|
</el-form-item> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-form-item label="备注" prop="caseNotes"> |
||||
|
<el-input v-model="form.caseNotes" type="textarea" :rows="2" style="width: 568px;" placeholder="请输入" /> |
||||
|
</el-form-item> |
||||
|
</el-row> |
||||
|
</el-form> |
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button class="auto-gx-btn"><i class="iconfont icon-zidonggengxin" />自动更新</el-button> |
||||
|
<el-button type="text" @click="crud.cancelCU">取消</el-button> |
||||
|
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU"> |
||||
|
保存 |
||||
|
</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { form } from '@crud/crud' |
||||
|
import { caseNameIsRepeat, barcodeIsRepeat } from '@/api/archivesKeeping/caseManage' |
||||
|
import { FetchDictionaryTree } from '@/api/system/dict' |
||||
|
import { FetchFondsAll } from '@/api/system/fonds' |
||||
|
|
||||
|
const defaultForm = { |
||||
|
id: null, |
||||
|
caseCode: null, |
||||
|
caseName: null, |
||||
|
caseSpecs: null, |
||||
|
caseFonds: null, |
||||
|
caseYear: null, |
||||
|
caseRetention: null, |
||||
|
caseClass: null, |
||||
|
startItemNo: null, |
||||
|
endItemNo: null, |
||||
|
tid: null, |
||||
|
barcode: null, |
||||
|
caseNotes: null |
||||
|
} |
||||
|
export default { |
||||
|
mixins: [form(defaultForm)], |
||||
|
data() { |
||||
|
var checkCaseName = (rule, value, callback) => { |
||||
|
if (!value) { |
||||
|
callback(new Error('请输入盒名称')) |
||||
|
} else { |
||||
|
caseNameIsRepeat({ caseId: this.form.id, caseName: value }).then((res) => { |
||||
|
if (res) { |
||||
|
callback(new Error('盒名称重复')) |
||||
|
} else { |
||||
|
callback() |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
var checkBarcode = (rule, value, callback) => { |
||||
|
if (value) { |
||||
|
barcodeIsRepeat({ caseId: this.form.id, barcode: value }).then((res) => { |
||||
|
if (res) { |
||||
|
callback(new Error('条形码重复')) |
||||
|
} else { |
||||
|
callback() |
||||
|
} |
||||
|
}) |
||||
|
} else { |
||||
|
callback() |
||||
|
} |
||||
|
} |
||||
|
return { |
||||
|
specsOptions: [ |
||||
|
{ |
||||
|
label: '20mm', |
||||
|
value: 20 |
||||
|
}, |
||||
|
{ |
||||
|
label: '30mm', |
||||
|
value: 30 |
||||
|
}, |
||||
|
{ |
||||
|
label: '40mm', |
||||
|
value: 40 |
||||
|
}, |
||||
|
{ |
||||
|
label: '50mm', |
||||
|
value: 50 |
||||
|
} |
||||
|
], |
||||
|
fondsOptions: [], |
||||
|
retentionOptions: [], |
||||
|
calssOptions: [], |
||||
|
rules: { |
||||
|
caseCode: [{ required: true, message: '盒号不可为空', trigger: 'blur' }], |
||||
|
caseName: [{ validator: checkCaseName, trigger: 'blur' }], |
||||
|
barcode: [{ validator: checkBarcode, trigger: 'blur' }] |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
created() { |
||||
|
|
||||
|
}, |
||||
|
mounted() { |
||||
|
this.getFondsDatas() |
||||
|
this.getDictsList() |
||||
|
}, |
||||
|
methods: { |
||||
|
getFondsDatas() { |
||||
|
FetchFondsAll().then(res => { |
||||
|
this.fondsOptions = res |
||||
|
}) |
||||
|
}, |
||||
|
getDictsList() { |
||||
|
FetchDictionaryTree().then((res) => { |
||||
|
const filterCodes = ['retention'] |
||||
|
const filteredItems = JSON.parse(JSON.stringify(res)).filter(item => filterCodes.includes(item.dictionaryCode)) |
||||
|
this.retentionOptions = filteredItems[0].childDictionarys |
||||
|
|
||||
|
const filterCodes2 = ['security_class'] |
||||
|
const filteredItems2 = JSON.parse(JSON.stringify(res)).filter(item => filterCodes2.includes(item.dictionaryCode)) |
||||
|
this.calssOptions = filteredItems2[0].childDictionarys |
||||
|
}).catch(err => { |
||||
|
console.log(err) |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
::v-deep .el-dialog .el-dialog__body .el-form-item:nth-child(odd){ |
||||
|
margin-right: 0 !important; |
||||
|
} |
||||
|
.auto-gx-btn{ |
||||
|
width: 104px; |
||||
|
line-height: 30px; |
||||
|
border: 1px solid #0348F3; |
||||
|
color: #0348F3; |
||||
|
} |
||||
|
::v-deep .dialog-footer{ |
||||
|
margin-top: 30px 22px 20px 0 !important; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,54 @@ |
|||||
|
<template> |
||||
|
<el-dialog :close-on-click-modal="false" title="拆盒" :visible.sync="openCaseVisible"> |
||||
|
<span class="dialog-right-top" /> |
||||
|
<span class="dialog-left-bottom" /> |
||||
|
<div class="setting-dialog"> |
||||
|
<div class="dialog-delt"> |
||||
|
<p><span>确定拆除当前选择的所有档案盒吗?</span></p> |
||||
|
<p class="delt-tip"> |
||||
|
<svg-icon icon-class="tishijinggao" /> |
||||
|
<span>提示:1.确定拆盒后,当前盒号下绑定的所有档案数据将一并清除;</span> |
||||
|
<span>2.若案卷存在多个盒,选择其中一个分盒则自动拆掉该案卷的全部档案盒</span> |
||||
|
</p> |
||||
|
</div> |
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button type="primary" @click.native="handleConfirm">确定</el-button> |
||||
|
<!-- <el-button @click.native="handleCancel">取消</el-button> --> |
||||
|
</div> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { unpacking } from '@/api/archivesManage/caseManage' |
||||
|
import { crud } from '@crud/crud' |
||||
|
|
||||
|
export default { |
||||
|
mixins: [crud()], |
||||
|
data() { |
||||
|
return { |
||||
|
caseData: [], |
||||
|
openCaseVisible: false |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
handleConfirm() { |
||||
|
// console.log(this.caseData) |
||||
|
const caseIds = this.caseData.map(item => item.id) |
||||
|
unpacking(JSON.stringify(caseIds)).then(res => { |
||||
|
this.$message.success('拆盒成功!') |
||||
|
this.caseData = [] |
||||
|
this.openCaseVisible = false |
||||
|
this.crud.refresh() |
||||
|
}) |
||||
|
}, |
||||
|
handleCancel() { |
||||
|
this.caseData = [] |
||||
|
this.openCaseVisible = false |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style rel="stylesheet/scss" lang="scss" scoped> |
||||
|
</style> |
@ -0,0 +1,57 @@ |
|||||
|
<template> |
||||
|
<div class="app-container tab-container"> |
||||
|
<div class="tab-content"> |
||||
|
<span class="right-top-line" /> |
||||
|
<span class="left-bottom-line" /> |
||||
|
<span class="right-bottom-line" /> |
||||
|
<ul class="tab-nav"> |
||||
|
<li :class="{ 'active-tab-nav': activeIndex == 0 }" @click="changeActiveTab(0)">档案盒列表<i /></li> |
||||
|
<li :class="{ 'active-tab-nav': activeIndex == 1 }" @click="changeActiveTab(1)">使用记录<i /></li> |
||||
|
<!-- 最右侧装饰img --> |
||||
|
<span class="tab-right-img" /> |
||||
|
</ul> |
||||
|
<!-- <RecordList :active-index="activeIndex" @handleTab="getRecordId" /> --> |
||||
|
<component :is="comName" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import caseList from './caseList/index' |
||||
|
import caseLog from './module/caseLog' |
||||
|
export default { |
||||
|
name: 'CaseManage', |
||||
|
components: { |
||||
|
caseList, |
||||
|
caseLog |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
activeIndex: 0, |
||||
|
currentRecordId: null |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
comName: function() { |
||||
|
if (this.activeIndex === 0) { |
||||
|
return 'caseList' |
||||
|
} else if (this.activeIndex === 1) { |
||||
|
return 'caseLog' |
||||
|
} |
||||
|
return 'caseList' |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
getRecordId(index, id) { |
||||
|
this.changeActiveTab(index) |
||||
|
this.currentRecordId = id |
||||
|
}, |
||||
|
changeActiveTab(data) { |
||||
|
this.activeIndex = data |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
</style> |
@ -0,0 +1,197 @@ |
|||||
|
<template> |
||||
|
<div class="recordList-main"> |
||||
|
<div class="head-container"> |
||||
|
<div class="head-search"> |
||||
|
<el-select |
||||
|
v-model="selectStatus" |
||||
|
style="margin-right: 10px; width: 110px;" |
||||
|
placeholder="请选择" |
||||
|
@change="crud.toQuery" |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="item in stateOptions" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value" |
||||
|
/> |
||||
|
</el-select> |
||||
|
<el-input |
||||
|
v-model="crud.query[inputSelect]" |
||||
|
size="small" |
||||
|
clearable |
||||
|
placeholder="请输入搜索关键字" |
||||
|
style="width: 300px;" |
||||
|
class="input-prepend filter-item" |
||||
|
@clear="crud.toQuery" |
||||
|
@keyup.enter.native="crud.toQuery" |
||||
|
> |
||||
|
<el-select slot="prepend" v-model="inputSelect" style="width: 92px"> |
||||
|
<el-option |
||||
|
v-for="item in options" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value" |
||||
|
/> |
||||
|
</el-select> |
||||
|
</el-input> |
||||
|
<rrOperation /> |
||||
|
</div> |
||||
|
<div class="handle-container"> |
||||
|
<el-button slot="reference" size="mini" :disabled="!crud.selections.length"> |
||||
|
<i class="iconfont icon-daochu" /> |
||||
|
导出 |
||||
|
</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
|
<el-table |
||||
|
ref="table" |
||||
|
:data="crud.data" |
||||
|
style="width: 100%;" |
||||
|
height="calc(100vh - 346px)" |
||||
|
@selection-change="crud.selectionChangeHandler" |
||||
|
> |
||||
|
<el-table-column type="selection" width="55" align="center" /> |
||||
|
<el-table-column type="index" label="序号" width="55" align="center" /> |
||||
|
<el-table-column prop="operationType" label="类型" align="center" width="110"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div>{{ scope.row.operationType === 1 ? '装盒' : '拆盒' }}</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="caseCode" label="盒号" align="center" min-width="120" /> |
||||
|
<el-table-column prop="caseName" label="盒名称" :show-overflow-tooltip="true" align="center" min-width="150" /> |
||||
|
<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 prop="create_by" label="操作人" align="center" min-width="300" /> |
||||
|
<el-table-column prop="create_time" width="175" label="操作时间" align="center"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div>{{ scope.row.create_time | parseTime }}</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
<pagination v-if="crud.data.length !== 0" /> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import CRUD, { presenter, crud } from '@crud/crud' |
||||
|
import caseCurd from '@/api/archivesKeeping/caseManage' |
||||
|
import rrOperation from '@crud/RR.operation' |
||||
|
import pagination from '@crud/Pagination' |
||||
|
|
||||
|
export default { |
||||
|
name: 'RecordList', |
||||
|
filters: { |
||||
|
storageTypeStatus(val) { |
||||
|
switch (val) { |
||||
|
case 0: |
||||
|
return '未入' |
||||
|
case 1: |
||||
|
return '待入' |
||||
|
case 2: |
||||
|
return '已入' |
||||
|
case 3: |
||||
|
return '待出' |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
components: { pagination, rrOperation }, |
||||
|
mixins: [presenter(), crud()], |
||||
|
cruds() { |
||||
|
return CRUD({ |
||||
|
url: 'api/archivesDeposit/initCaseLog', |
||||
|
crudMethod: { ...caseCurd }, |
||||
|
title: '档案盒记录', |
||||
|
optShow: { |
||||
|
add: false, |
||||
|
edit: false, |
||||
|
del: false, |
||||
|
download: false, |
||||
|
reset: false, |
||||
|
group: false |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
props: { |
||||
|
activeIndex: { |
||||
|
type: Number, |
||||
|
default: 0 |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
selectStatus: 0, |
||||
|
stateOptions: [ |
||||
|
{ |
||||
|
value: 0, |
||||
|
label: '全部' |
||||
|
}, |
||||
|
{ |
||||
|
value: 1, |
||||
|
label: '装盒' |
||||
|
}, |
||||
|
{ |
||||
|
value: 2, |
||||
|
label: '拆盒' |
||||
|
} |
||||
|
], |
||||
|
options: [ |
||||
|
{ value: 'caseCode', label: '盒号' }, |
||||
|
{ value: 'caseName', label: '盒名称' }, |
||||
|
{ value: 'tid', label: '电子标签' }, |
||||
|
{ value: 'barcode', label: '条码' } |
||||
|
], |
||||
|
inputSelect: 'caseCode' |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
// ...mapGetters([ |
||||
|
// 'user' |
||||
|
// ]) |
||||
|
}, |
||||
|
watch: { |
||||
|
activeIndex: function(newValue, oldValue) { |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
}, |
||||
|
methods: { |
||||
|
[CRUD.HOOK.beforeRefresh]() { |
||||
|
this.crud.query.storageType = this.selectStatus |
||||
|
}, |
||||
|
resetQuery() { |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.head-container{ |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
.head-search{ |
||||
|
margin-bottom: 0 !important; |
||||
|
} |
||||
|
.handle-container{ |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
.crud-opts{ |
||||
|
margin-right: 80px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
::v-deep .el-pagination{ |
||||
|
margin: 24px 0 10px 0 !important |
||||
|
} |
||||
|
|
||||
|
::v-deep .input-prepend .el-input__inner{ |
||||
|
padding-left: 100px; |
||||
|
} |
||||
|
.filter-rfid{ |
||||
|
border: 1px solid #0348F3 !important; |
||||
|
background-color: #fff !important; |
||||
|
color: #0348F3 !important; |
||||
|
} |
||||
|
</style> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue