Browse Source

收集库打印/退回预归档库 档案利用页面

master
xuhuajiao 1 year ago
parent
commit
a92d53d4fb
  1. 21
      src/api/collect/collect.js
  2. BIN
      src/assets/images/archives/bg.png
  3. BIN
      src/assets/images/archives/bgw.png
  4. BIN
      src/assets/images/archives/icon-js.png
  5. BIN
      src/assets/images/archives/icon-ls.png
  6. BIN
      src/assets/images/archives/ys1.png
  7. BIN
      src/assets/images/archives/ys2.png
  8. BIN
      src/assets/images/archives/ys3.png
  9. BIN
      src/assets/images/archives/ys4.png
  10. 33
      src/assets/styles/archives-manage.scss
  11. 31
      src/views/archiveKeeping/deviceManage/module/childDevice.vue
  12. 125
      src/views/archiveKeeping/deviceManage/module/detail.vue
  13. 36
      src/views/archiveKeeping/deviceManage/tableList.vue
  14. 20
      src/views/archiveUtilize/archiveEditing/index.vue
  15. 286
      src/views/archiveUtilize/archiveSearch/index.vue
  16. 20
      src/views/archiveUtilize/utillizeRecord/index.vue
  17. 70
      src/views/collectReorganizi/collectionLibrary/module/collectHeader.vue
  18. 123
      src/views/collectReorganizi/collectionLibrary/module/print/index.vue
  19. 22
      src/views/components/category/PreviewForm.vue
  20. 15
      src/views/prearchiveLibrary/index.vue

21
src/api/collect/collect.js

@ -189,6 +189,23 @@ export function FetchMove(data) {
}) })
} }
// 获取打印数据
export function FetchPrintData(params) {
return request({
url: 'api/collect/getPrintData' + '?' + qs.stringify(params, { indices: false }),
method: 'get'
})
}
// 退回预归档库
export function FetchReturnReDocument(data) {
return request({
url: 'api/collect/returnReDocument',
method: 'post',
data
})
}
export default { export default {
collectAdd, collectAdd,
collectEdit, collectEdit,
@ -208,5 +225,7 @@ export default {
FetchDisbandArchives, FetchDisbandArchives,
FetchMergeArchives, FetchMergeArchives,
FetchInsertSingle, FetchInsertSingle,
FetchMove
FetchMove,
FetchPrintData,
FetchReturnReDocument
} }

BIN
src/assets/images/archives/bg.png

After

Width: 1624  |  Height: 941  |  Size: 632 KiB

BIN
src/assets/images/archives/bgw.png

After

Width: 1624  |  Height: 941  |  Size: 720 KiB

BIN
src/assets/images/archives/icon-js.png

After

Width: 33  |  Height: 28  |  Size: 1.6 KiB

BIN
src/assets/images/archives/icon-ls.png

After

Width: 32  |  Height: 33  |  Size: 2.0 KiB

BIN
src/assets/images/archives/ys1.png

After

Width: 236  |  Height: 116  |  Size: 21 KiB

BIN
src/assets/images/archives/ys2.png

After

Width: 472  |  Height: 377  |  Size: 58 KiB

BIN
src/assets/images/archives/ys3.png

After

Width: 136  |  Height: 152  |  Size: 22 KiB

BIN
src/assets/images/archives/ys4.png

After

Width: 170  |  Height: 136  |  Size: 15 KiB

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

@ -1029,4 +1029,37 @@
font-weight: bold !important; font-weight: bold !important;
color: #0348F3 !important; color: #0348F3 !important;
border-color: #0348F3 !important; border-color: #0348F3 !important;
}
.device-sulan-btn{
display: inline-block;
padding: 0 7px;
color: #FF8329;
background-color: #FFF3E5;
border: 1px solid #FEBD98;
border-radius: 3px;
cursor: pointer;
}
.device-edit-btn{
display: inline-block;
padding: 0 6px 0 10px;
margin: 0 4px;
text-align: center;
color: #0348F3;
background-color: #DCEDFD;
border: 1px solid #9BD1FF;
border-radius: 3px;
cursor: pointer;
}
.device-delt-btn{
display: inline-block;
padding: 0 6px 0 10px;
text-align: center;
color: #ED4A41;
background-color: #FCECE9;
border: 1px solid #FBC0B5;
border-radius: 3px;
cursor: pointer;
} }

31
src/views/archiveKeeping/deviceManage/module/childDevice.vue

@ -228,34 +228,5 @@ export default {
} }
} }
} }
.device-sulan-btn{
display: inline-block;
padding: 0 7px;
color: #FF8329;
background-color: #FFF3E5;
border: 1px solid #FEBD98;
border-radius: 3px;
cursor: pointer;
}
.device-edit-btn{
display: inline-block;
padding: 0 6px 0 10px;
margin: 0 4px;
text-align: center;
color: #0348F3;
background-color: #DCEDFD;
border: 1px solid #9BD1FF;
border-radius: 3px;
cursor: pointer;
}
.device-delt-btn{
display: inline-block;
padding: 0 6px 0 10px;
text-align: center;
color: #ED4A41;
background-color: #FCECE9;
border: 1px solid #FBC0B5;
border-radius: 3px;
cursor: pointer;
}
</style> </style>

125
src/views/archiveKeeping/deviceManage/module/detail.vue

@ -1,38 +1,81 @@
<template> <template>
<el-dialog class="detail-dialog" :title="detailTitle" append-to-body :close-on-click-modal="false" :modal-append-to-body="false" :visible.sync="detailVisible" :before-close="handleClose">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<div class="detail-tab tab-content">
<!-- tab -->
<ul class="tab-nav" style="padding: 0;">
<li :class="{'active-tab-nav': activeIndex == 0}" @click="changeActiveTab(0)">基本信息</li>
<li v-if="(selectedDeviceType==='网络视频录像机(NVR)' || selectedDeviceType==='环境监控主机')" :class="{'active-tab-nav': activeIndex == 1}" @click="changeActiveTab(1)">子设备列表</li>
</ul>
<!-- 基本信息 -->
<div v-if="activeIndex==0" class="base-info item-content">
<el-row>
<el-col v-for="(item,index) in DetailsInfoData" :key="index" class="base-info-item">
<span>{{ item.fieldCnName }}</span>
<p>{{ item.context }}</p>
</el-col>
</el-row>
<div>
<el-dialog class="detail-dialog" :title="detailTitle" append-to-body :close-on-click-modal="false" :modal-append-to-body="false" :visible.sync="detailVisible" :before-close="handleClose">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<div class="detail-tab tab-content">
<!-- tab -->
<ul class="tab-nav" style="padding: 0;">
<li :class="{'active-tab-nav': activeIndex == 0}" @click="changeActiveTab(0)">基本信息</li>
<li v-if="(selectedDeviceType==='网络视频录像机(NVR)' || selectedDeviceType==='环境监控主机')" :class="{'active-tab-nav': activeIndex == 1}" @click="changeActiveTab(1)">子设备列表</li>
</ul>
<!-- 基本信息 -->
<div v-if="activeIndex==0" class="base-info item-content">
<el-row>
<el-col v-for="(item,index) in DetailsInfoData" :key="index" class="base-info-item">
<span>{{ item.fieldCnName }}</span>
<p>{{ item.context }}</p>
</el-col>
</el-row>
</div>
<!-- 子设备列表 -->
<div v-if="activeIndex==1 && (selectedDeviceType==='网络视频录像机(NVR)' || selectedDeviceType==='环境监控主机')" class="item-content">
<el-table
ref="table"
:data="childDeviceTable"
row-key="id"
highlight-current-row
style="min-width: 100%;"
>
<el-table-column v-if="selectedDeviceType==='网络视频录像机NVR'" type="index" label="通道" align="center" width="55" />
<el-table-column v-if="selectedDeviceType==='网络视频录像机NVR'" label="摄像机名称" prop="child" min-width="80" />
<el-table-column v-if="selectedDeviceType==='环境监控主机'" label="设备编号" prop="num" align="center" width="90" />
<el-table-column v-if="selectedDeviceType==='环境监控主机'" label="设备名称" prop="deviceName" min-width="100" />
<el-table-column label="所属设备" prop="deviceTypeId.name" min-width="140" />
<el-table-column label="状态" prop="categoryName" min-width="60" align="center">
<template slot-scope="scope">
<span :class="{ 'spk-a': scope.row.deviceState === 1, 'off-line': scope.row.deviceState !== 1 }" />
</template>
</el-table-column>
<el-table-column prop="createTime" label="操作" min-width="100" align="center">
<template slot-scope="scope">
<div class="device-sulan-btn detail-sulan-btn" @click="handlePreview(scope.row)"><i class="iconfont icon-yulan" />预览</div>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<el-pagination
v-if="childDeviceTable.length !== 0"
:current-page="page.page"
:total="page.total"
:page-size="page.size"
:pager-count="5"
layout="total, prev, pager, next, sizes"
@size-change="handleSizeChange"
@current-change="handleCurrentPage"
/>
</div>
</div> </div>
<!-- 子设备列表 -->
<div v-if="activeIndex==1 && (selectedDeviceType==='网络视频录像机NVR' || selectedDeviceType==='环境监控主机')" class="item-content" />
</div> </div>
</div>
<div slot="footer" class="dialog-footer">
<el-button v-if=" selectedDeviceType === '网络视频录像机(NVR)' || selectedDeviceType ==='环境监控主机'" class="device-child-btn" @click="ChildDevice"><i class="iconfont icon-zishebeiguanli" />子设备管理</el-button>
<el-button type="primary" @click="detailVisible=false">确定</el-button>
</div>
</el-dialog>
<div slot="footer" class="dialog-footer">
<el-button v-if=" selectedDeviceType === '网络视频录像机(NVR)' || selectedDeviceType ==='环境监控主机'" class="device-child-btn" @click="ChildDevice"><i class="iconfont icon-zishebeiguanli" />子设备管理</el-button>
<el-button type="primary" @click="detailVisible=false">确定</el-button>
</div>
</el-dialog>
<!-- 监控预览 -->
<VideoPreview ref="videoModule" />
<!-- 环境监控子设备预览 -->
<DevicePreview ref="deviceModule" />
</div>
</template> </template>
<script> <script>
import VideoPreview from './videoPreview'
import DevicePreview from './devicePreview'
export default { export default {
name: 'Detail', name: 'Detail',
components: { },
components: { VideoPreview, DevicePreview },
mixins: [], mixins: [],
props: { props: {
selectedDeviceType: { selectedDeviceType: {
@ -47,10 +90,17 @@ export default {
detailTitle: '', detailTitle: '',
activeIndex: 0, activeIndex: 0,
detailVisible: false, detailVisible: false,
DetailsInfoData: []
DetailsInfoData: [],
childDeviceTable: [],
page: {
page: 1,
size: 10,
total: 0
}
} }
}, },
mounted() { mounted() {
this.childDeviceTable = [{}, {}, {}]
}, },
methods: { methods: {
changeActiveTab(index) { changeActiveTab(index) {
@ -59,6 +109,20 @@ export default {
ChildDevice() { ChildDevice() {
this.$emit('childDevice') this.$emit('childDevice')
}, },
handleSizeChange(size) {
this.page.size = size
this.page.page = 1
},
handleCurrentPage(val) {
this.page.page = val
},
handlePreview(row) {
if (this.selectedDeviceType === '环境监控主机') {
this.$refs.deviceModule.deviceVisible = true
} else {
this.$refs.videoModule.videoVisible = true
}
},
// - // -
handleClose(done) { handleClose(done) {
this.detailVisible = false this.detailVisible = false
@ -72,4 +136,9 @@ export default {
.base-info{ .base-info{
background: #F6F8FC; background: #F6F8FC;
} }
.detail-sulan-btn{
color: #0348F3;
background: #DCEDFD;
border: 1px solid #9BD1FF;
}
</style> </style>

36
src/views/archiveKeeping/deviceManage/tableList.vue

@ -139,8 +139,8 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button v-if="crud.status.cu > 0 && ( selectedDeviceType === '网络视频录像机(NVR)' || selectedDeviceType ==='环境监控主机')" class="device-child-btn" @click="handleChildDevice"><i class="iconfont icon-zishebeiguanli" />子设备管理</el-button>
<el-button type="text" @click="handleCloseDialog">取消</el-button>
<el-button v-if="crud.status.edit === 1 && ( selectedDeviceType === '网络视频录像机(NVR)' || selectedDeviceType ==='环境监控主机')" class="device-child-btn" @click="handleChildDevice"><i class="iconfont icon-zishebeiguanli" />子设备管理</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> <el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确定</el-button>
</div> </div>
</div> </div>
@ -210,7 +210,7 @@
<script> <script>
import typeJson from './type.json' import typeJson from './type.json'
import crudDevice from '@/api/storeManage/deviceManage/device' import crudDevice from '@/api/storeManage/deviceManage/device'
import CRUD, { presenter, header, form, crud } from '@crud/crud'
import CRUD, { presenter, header, form } from '@crud/crud'
import rrOperation from '@crud/RR.operation' import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation' import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination' import pagination from '@crud/Pagination'
@ -225,6 +225,7 @@ const defaultForm = {
deviceIp: null, deviceIp: null,
port: null, port: null,
remark: null, remark: null,
supplier: null,
deviceAccount: null, deviceAccount: null,
devicePassword: null, devicePassword: null,
isLinkage: { stateType: 1, lend: false, borrow: false, inBound: false, outBound: false }, isLinkage: { stateType: 1, lend: false, borrow: false, inBound: false, outBound: false },
@ -248,7 +249,7 @@ export default {
group: false group: false
}}) }})
}, },
mixins: [presenter(), header(), form(defaultForm), crud()],
mixins: [presenter(), header(), form(defaultForm)],
props: { props: {
selectedStore: { selectedStore: {
type: Object, type: Object,
@ -407,15 +408,10 @@ export default {
// { id: 6, deviceTypeId: { name: 'RFID' }} // { id: 6, deviceTypeId: { name: 'RFID' }}
// ] // ]
}, },
[CRUD.HOOK.beforeToEdit](crud, form, btn) {
console.log(crud.selections[0])
console.log(form)
this.selectedDeviceType = form.deviceTypeId.name
async [CRUD.HOOK.beforeToEdit](crud, form, btn) {
// crud.status.edit = CRUD.STATUS.PREPARED
// crud.getDataStatus(this.crud.selections[0].id).edit = CRUD.STATUS.PREPARED
this.addDeviceTitle = '编辑设备 - ' + form.deviceTypeId.name
},
//
async [CRUD.HOOK.afterValidateCU](crud) {
if (form.deviceTypeId.name === '密集架' || form.deviceTypeId.name === '回转柜') { if (form.deviceTypeId.name === '密集架' || form.deviceTypeId.name === '回转柜') {
if (form.deviceTypeId.name === '密集架') { if (form.deviceTypeId.name === '密集架') {
// //
@ -444,12 +440,15 @@ export default {
} }
}) })
} }
form.supplier = form.supplierId.id
crud.status.edit = CRUD.STATUS.PREPARED
crud.getDataStatus(this.crud.selections[0].id).edit = CRUD.STATUS.PREPARED
// form.supplier = form.supplierId.id
// this.deviceForm.deviceType = null // this.deviceForm.deviceType = null
// this.$refs.deviceForm.resetFields() // this.$refs.deviceForm.resetFields()
this.selectedDeviceType = form.deviceTypeId.name
this.addDeviceTitle = '编辑设备 - ' + form.deviceTypeId.name
},
//
[CRUD.HOOK.afterValidateCU](crud) {
return false return false
}, },
// isLinkagenull,isLinkage.lend // isLinkagenull,isLinkage.lend
@ -469,12 +468,12 @@ export default {
}, },
handleComfirmDevice() { handleComfirmDevice() {
this.$refs.deviceForm.validate((valid) => { this.$refs.deviceForm.validate((valid) => {
console.log('valid', valid)
if (valid) { if (valid) {
this.crud.toAdd()
this.deviceSelectVisible = false this.deviceSelectVisible = false
this.selectedDeviceType = this.deviceForm.deviceType.name this.selectedDeviceType = this.deviceForm.deviceType.name
this.addDeviceTitle = '新增设备 - ' + this.selectedDeviceType this.addDeviceTitle = '新增设备 - ' + this.selectedDeviceType
this.$refs.form.resetFields()
this.crud.toAdd()
} else { } else {
console.log('error submit!!') console.log('error submit!!')
return false return false
@ -532,10 +531,9 @@ export default {
this.deviceSelectVisible = false this.deviceSelectVisible = false
this.$refs.deviceForm.resetFields() this.$refs.deviceForm.resetFields()
} }
if (this.$refs.form) { if (this.$refs.form) {
this.$refs.form.resetFields()
this.crud.cancelCU() this.crud.cancelCU()
this.$refs.form.resetFields()
} }
// //
// done() // done()

20
src/views/archiveUtilize/archiveEditing/index.vue

@ -0,0 +1,20 @@
<template>
<div>档案编研</div>
</template>
<script >
export default {
name: 'ArchiveEditing',
data() {
return {
}
},
mounted() {
},
methods: {
}
}
</script>
<style lang='scss' scoped>
</style>

286
src/views/archiveUtilize/archiveSearch/index.vue

@ -0,0 +1,286 @@
<template>
<div class="archive-search-main">
<div class="search-main">
<span class="bg_icon1" />
<span class="bg_icon2" />
<span class="bg_icon3" />
<span class="bg_icon4" />
<div class="search-content">
<h2>{{ isCommon ? '档案检索': '高级检索' }}</h2>
<div v-if="isCommon" class="common-search">
<div class="search-input">
<!-- @keyup.enter.native="dimSearch" -->
<el-input v-model="keywords" placeholder="请输入检索关键字" class="input-with-select">
<!-- <el-select slot="prepend" v-model="select" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select> -->
</el-input>
<el-button slot="append" @click="handleSearch"><i class="iconfont icon-sousuo" />搜索</el-button>
<div class="advanced-search-btn" @click="isCommon=!isCommon">高级检索</div>
</div>
<div class="search-tab">
<span class="active">全部</span>
<span>项目</span>
<span>案卷</span>
<span>文件</span>
<span>原文</span>
</div>
<div class="history-keyword">
<h4>历史检索</h4>
<div class="history-tag">
<span>合同</span>
<span>科技</span>
<span>教育</span>
</div>
</div>
</div>
<div v-else class="advanced-search">
<el-form ref="form" inline :model="form" :rules="rules" size="small" label-width="100px">
<el-form-item label="字段名" prop="filedName">
<el-select v-model="form.filedName" placeholder="请选择">
<el-option
v-for="item in filedOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="运算符" prop="symbol">
<el-select v-model="form.symbol" placeholder="请选择">
<el-option
v-for="item in symbolOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="检索值" prop="keyWord">
<el-input v-model="form.keyWord" />
</el-form-item>
</el-form>
<div>
<el-button size="mini"><i class="iconfont icon-xinzeng" />新增</el-button>
<el-button class="filter-item filter-refresh" size="mini" type="warning" icon="el-icon-refresh-left">重置</el-button>
</div>
</div>
</div>
</div>
</div>
</template>
<script >
export default {
name: 'ArchiveSearch',
data() {
return {
isCommon: true,
keywords: '',
form: {
filedName: null,
symbol: null,
keyWord: null
},
filedOptions: [],
symbolOptions: [],
rules: {
filedName: [
{ required: true, message: '请选择字段名', trigger: 'change' }
],
symbol: [
{ required: true, message: '请选择运算符', trigger: 'change' }
],
keyWord: [
{ required: true, message: '检索值不可为空', trigger: 'blur' }
]
}
}
},
mounted() {
},
methods: {
dimSearch() {
},
handleSearch() {
}
}
}
</script>
<style lang='scss' scoped>
.archive-search-main{
padding: 0 20px 20px 20px;
.search-main{
position: relative;
width: 100%;
height: calc(100vh - 140px);
background: url('~@/assets/images/archives/bg.png') no-repeat;
background-size: 100% 100%;
& span{
display: block;
}
.bg_icon1{
position: absolute;
left: 110px;
top: 400px;
width: 236px;
height: 116px;
background: url('~@/assets/images/archives/ys1.png') no-repeat;
background-size: 100% 100%;
}
.bg_icon2{
position: absolute;
left: 50%;
bottom: 60px;
width: 472px;
height: 377px;
margin-left: -236px;
background: url('~@/assets/images/archives/ys2.png') no-repeat;
background-size: 100% 100%;
}
.bg_icon3{
position: absolute;
right: 240px;
bottom: 40px;
width: 136px;
height: 152px;
background: url('~@/assets/images/archives/ys3.png') no-repeat;
background-size: 100% 100%;
}
.bg_icon4{
position: absolute;
right: 110px;
top: 50%;
width: 170px;
height: 136px;
margin-top: -58px;
background: url('~@/assets/images/archives/ys4.png') no-repeat;
background-size: 100% 100%;
}
}
.search-content{
padding-top: 120px;
h2{
font-size: 40px;
text-align: center;
color: #1C1C1C;
margin-bottom: 40px;
}
}
.common-search{
width: 800px;
margin: 0 auto;
.search-input{
position: relative;
display: flex;
justify-content: space-between;
width: 800px;
height: 54px;
background-color: #fff;
border-radius: 3px;
.input-with-select{
::v-deep .el-input__inner{
width: 664px;
height: 54px !important;
font-size: 14px;
padding: 0 20px;
border: none;
}
}
.el-button{
width: 136px;
background-color: #0348F3;
font-size: 16px;
color: #fff;
border-radius: 0 3px 3px 0;
}
.advanced-search-btn{
position: absolute;
right: -80px;
top: 50%;
transform: translateY(-50%);
font-size: 16px;
color: #0348F3;
cursor:default;
}
}
.search-tab{
display: flex;
justify-content: space-around;
width: 240px;
padding: 15px 0 30px 0;
margin: 0 auto;
color: #545B65;
span{
font-size: 14px;
// padding: 0 12px;
}
span.active{
color: #0348F3;
}
}
.history-keyword{
width: 800px;
height: 280px;
padding: 10px 18px;
background: #F6F9FD;
box-shadow: 0px 4px 19px 0px rgba(0,0,0,0.06);
border-radius: 3px;
opacity: 0.8;
border: 2px solid #FFFFFF;
h4{
font-size: 16px;
height: 40px;
margin-bottom: 10px;
line-height: 33px;
padding-left: 35px;
color: #0C0E1E;
background: url('~@/assets/images/archives/icon-ls.png') no-repeat left center;
background-size: 32px 33px;
}
.history-tag{
display: flex;
justify-content: flex-start;
flex-wrap: wrap;
height: 200px;
overflow: hidden;
overflow-y: scroll;
span{
display: block;
height: 24px;
line-height: 24px;
font-size: 14px;
padding: 0 12px;
margin: 0 0 10px 10px;
color: #545B65;
background: #E6E8ED;
border-radius: 3px;
cursor:default;
}
}
}
}
.advanced-search{
position: relative;
width: 1010px;
height: 350px;
margin: 0 auto;
background-color: #fff;
border-radius: 3px;
z-index: 9999;
}
}
</style>

20
src/views/archiveUtilize/utillizeRecord/index.vue

@ -0,0 +1,20 @@
<template>
<div>借阅记录</div>
</template>
<script >
export default {
name: 'UtillizeRecord',
data() {
return {
}
},
mounted() {
},
methods: {
}
}
</script>
<style lang='scss' scoped>
</style>

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

@ -200,22 +200,8 @@
</div> </div>
</el-dialog> </el-dialog>
<!-- 退回预归档库 -->
<el-dialog class="tip-dialog" title="退回预归档库" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="returnVisible">
<div class="setting-dialog">
<div class="tip-content">
<p class="tipMsg">此移出将把会所选条目退回到预归档库</p>
<span>你是否还要继续?</span>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="returnVisible = false">取消</el-button>
<el-button type="primary" @click.native="handleReturnConfirm">确定</el-button>
</div>
</div>
</el-dialog>
<!-- 打印 --> <!-- 打印 -->
<Print ref="printRef" />
<Print ref="printRef" :selected-category="selectedCategory" :collect-level="collectLevel" :selections="selections" @close-dialog="closeDialog" />
<!-- 四性检测 --> <!-- 四性检测 -->
<FourTest ref="fourTestRef" /> <FourTest ref="fourTestRef" />
@ -272,7 +258,7 @@
import CRUD, { crud } from '@crud/crud' import CRUD, { crud } from '@crud/crud'
import { collectionLibraryCrud } from '../mixins/index' import { collectionLibraryCrud } from '../mixins/index'
import { FetchInitCategoryInputFieldByPid } from '@/api/system/category/category' import { FetchInitCategoryInputFieldByPid } from '@/api/system/category/category'
import { FetchDetailsById, collectDel, FetchRemoveArchivesSingle, FetchDeleteArchivesFile, FetchUpdateArchivesNo, FetchDisbandArchives } from '@/api/collect/collect'
import { FetchDetailsById, collectDel, FetchRemoveArchivesSingle, FetchDeleteArchivesFile, FetchUpdateArchivesNo, FetchDisbandArchives, FetchReturnReDocument } from '@/api/collect/collect'
import { FetchArchivesClassTree } from '@/api/system/archivesClass' import { FetchArchivesClassTree } from '@/api/system/archivesClass'
import { FetchDictionaryTree } from '@/api/system/dict' import { FetchDictionaryTree } from '@/api/system/dict'
import Treeselect from '@riophae/vue-treeselect' import Treeselect from '@riophae/vue-treeselect'
@ -341,7 +327,6 @@ export default {
deleteVisible: false, deleteVisible: false,
moveVisible: false, moveVisible: false,
filingVisible: false, filingVisible: false,
returnVisible: false,
downloadVisible: false, downloadVisible: false,
recoverVisible: false, recoverVisible: false,
completelyDeleteVisible: false, completelyDeleteVisible: false,
@ -895,14 +880,38 @@ export default {
}, },
// 退 // 退
handleReturn() { handleReturn() {
if (this.selections.length > 1 || this.selections.length === 0) {
this.$message('该操作只可勾选唯一目标条目,请先确认!')
if (this.selections.length === 0) {
this.$message('您还未勾选需要操作的条目,请先确认!')
return false return false
} }
this.returnVisible = true
},
handleReturnConfirm() {
this.returnVisible = false
this.$confirm('此操作将把会所选条目退回到预归档库' + '<span>你是否还要继续?</span>', '提示', {
confirmButtonText: '继续',
cancelButtonText: '取消',
type: 'warning',
dangerouslyUseHTMLString: true
}).then(() => {
const archivesIds = this.selections.map(item => item.id)
const params = {
'categoryId': this.selectedCategory.id,
'archivesIds': archivesIds
}
console.log(params)
FetchReturnReDocument(params).then((res) => {
if (res.code !== 500) {
if (res === 0) {
this.crud.notify('当前数据中不包含预归档数据,无法返回', CRUD.NOTIFICATION_TYPE.INFO)
} else {
this.crud.notify('已成功返回' + res + '条来自预归档的数据', CRUD.NOTIFICATION_TYPE.SUCCESS)
}
this.handleSearch(this.collectLevel)
} else {
this.crud.notify(res.message, CRUD.NOTIFICATION_TYPE.ERROR)
}
}).catch(err => {
console.log(err)
})
}).catch(() => {
})
}, },
// //
handleExport() { handleExport() {
@ -943,6 +952,21 @@ export default {
handlePrint() { handlePrint() {
if (this.selections.length === 0) { if (this.selections.length === 0) {
this.$refs.printRef.form.printRange = '当页条目' this.$refs.printRef.form.printRange = '当页条目'
let currentTableData = []
if (this.collectLevel === 2) {
console.log('案卷')
currentTableData = this.parentsData.$refs.anjuanEle.$refs.ajContent.$refs.tableList.anjuanData
} else if (this.collectLevel === 3) {
if (this.isTitleType === 3) {
console.log('文件')
currentTableData = this.parentsData.$refs.anjuanEle.$refs.ajContent.$refs.tableList.anjuanData
} else {
console.log('卷内')
currentTableData = this.parentsData.$refs.juanneiEle.junneiData
}
}
console.log(currentTableData)
this.$refs.printRef.currentTable = JSON.parse(JSON.stringify(currentTableData))
} else { } else {
this.$refs.printRef.form.printRange = '勾选条目' this.$refs.printRef.form.printRange = '勾选条目'
} }

123
src/views/collectReorganizi/collectionLibrary/module/print/index.vue

@ -7,17 +7,17 @@
<el-form ref="form" :model="form" :rules="rules" label-width="100px"> <el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="打印范围" prop="printRange"> <el-form-item label="打印范围" prop="printRange">
<el-radio-group v-model="form.printRange"> <el-radio-group v-model="form.printRange">
<el-radio label="勾选条目" />
<el-radio label="当页条目" />
<el-radio label="勾选条目" :disabled="form.printRange === '当页条目'" />
<el-radio label="当页条目" :disabled="form.printRange === '勾选条目'" />
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="选择模板" prop="module"> <el-form-item label="选择模板" prop="module">
<el-select v-model="form.module" placeholder="请选择" style="width: 360px;">
<el-select v-model="form.module" placeholder="请选择" value-key="value" style="width: 360px;">
<el-option <el-option
v-for="item in printModuleOptions" v-for="item in printModuleOptions"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value"
:value="item"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -29,68 +29,78 @@
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
<!-- :width="field.displayLength" -->
<div v-show="isHidden" id="print" ref="printId" class="intoExamine"> <div v-show="isHidden" id="print" ref="printId" class="intoExamine">
<h3 style="text-align: center; margin:20px 0; font-size: 24px;">{{ printTitle }}</h3> <h3 style="text-align: center; margin:20px 0; font-size: 24px;">{{ printTitle }}</h3>
<el-table :data="printData" border> <el-table :data="printData" border>
<el-table-column type="index" label="序号" width="55" align="center" /> <el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column label="档号" prop="archiveNo" align="center" width="180px" />
<el-table-column label="文号" prop="docNo" align="center" width="160" />
<el-table-column label="责任者" prop="responsibleby" align="center" />
<el-table-column label="题名" prop="maintitle" align="center" width="200px" />
<el-table-column label="日期" prop="create_time" align="center" width="100">
<el-table-column v-for="field in tableDisplayFields" :key="field.id" :label="field.fieldCnName" :align="field.displayformatType">
<template slot-scope="scope"> <template slot-scope="scope">
<div>{{ parseTime(scope.row.create_time, '{y}-{m}-{d}') }}</div>
{{ scope.row[field.fieldName] }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="密级" prop="securityClass" align="center" />
<el-table-column label="页数" prop="pageQty" align="center" width="60" />
<el-table-column label="备注" prop="remarks" align="center" width="100px" />
</el-table> </el-table>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import CRUD, { presenter } from '@crud/crud'
import { FetchPrintData } from '@/api/collect/collect'
import html2canvas from 'html2canvas' import html2canvas from 'html2canvas'
import printJS from 'print-js' import printJS from 'print-js'
import printJson from './printData.json'
export default { export default {
name: 'Print', name: 'Print',
components: { }, components: { },
mixins: [presenter()],
cruds() {
return CRUD({
url: 'api/category/menu',
title: '',
optShow: {
mixins: [],
props: {
selectedCategory: {
type: Object,
default: function() {
return {}
}
},
collectLevel: {
type: Number,
default: function() {
return null
} }
})
},
selections: {
type: Array,
default: () => []
}
}, },
data() { data() {
return { return {
isHidden: false, isHidden: false,
printData: [], printData: [],
tableDisplayFields: [],
printTitle: '', printTitle: '',
printVisible: false, printVisible: false,
currentTable: [],
form: { form: {
printRange: '勾选条目', printRange: '勾选条目',
module: ''
module: '默认模板'
}, },
printModuleOptions: [ printModuleOptions: [
{ {
value: '案卷目录',
label: '案卷目录'
},
{
value: '卷内目录',
label: '卷内目录'
},
{
value: '文件目录',
label: '文件目录'
value: '默认模板',
label: '默认模板'
} }
// {
// value: '2',
// label: ''
// },
// {
// value: '3',
// label: ''
// },
// {
// value: '4',
// label: ''
// }
], ],
rules: { rules: {
printRange: [ printRange: [
@ -103,21 +113,43 @@ export default {
} }
}, },
created() { created() {
}, },
methods: { methods: {
onSubmitPrint(formName) { onSubmitPrint(formName) {
this.printTitle = this.form.module
this.printTitle = ''
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
this.$message('submit!')
this.printVisible = false
this.$refs[formName].resetFields()
this.printData = printJson.data.archives
this.isHidden = true
this.$nextTick(() => {
this.printFn()
this.isHidden = false
let archivesIds
if (this.selections.length !== 0) {
archivesIds = this.selections.map(item => item.id)
} else {
archivesIds = this.currentTable.map(item => item.id)
}
const params = {
'categoryId': this.selectedCategory.id, // id
'archivesIds': archivesIds, // id
'templateId': null,
'categoryLevel': this.collectLevel
}
FetchPrintData(params).then((res) => {
if (res.code !== 500) {
this.printData = res.list
this.tableDisplayFields = res.queryShow
this.printVisible = false
this.isHidden = true
if (this.isHidden) {
const timer = setTimeout(() => {
this.printFn()
this.isHidden = false
clearTimeout(timer)
}, 100)
}
} else {
this.$message.error('获取打印数据失败')
}
this.$refs[formName].resetFields()
}) })
} else { } else {
console.log('error submit!!') console.log('error submit!!')
@ -210,7 +242,8 @@ export default {
height: inherit; height: inherit;
} }
.intoExamine{ .intoExamine{
margin: 0 auto;
border: 1px solid #000;
width: 100%;
} }
} }
</style> </style>

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

@ -213,8 +213,8 @@ export default {
fileJsonString: null, fileJsonString: null,
mergeFileArcIds: null, mergeFileArcIds: null,
mergeFileCategory: null, mergeFileCategory: null,
archivesType: null,
setParentsId: null
archivesType: null
// setParentsId: null
} }
}, },
computed: { computed: {
@ -231,14 +231,14 @@ export default {
}, },
isDesFormType: function(newValue, oldValue) { isDesFormType: function(newValue, oldValue) {
}, },
parentsId: {
handler(newValue, oldValue) {
console.log(newValue)
this.setParentsId = newValue
},
immediate: true,
deep: true
},
// parentsId: {
// handler(newValue, oldValue) {
// console.log(newValue)
// this.setParentsId = newValue
// },
// immediate: true,
// deep: true
// },
formPreviewData: function() { formPreviewData: function() {
this.editFormRow() this.editFormRow()
// //
@ -254,7 +254,7 @@ export default {
// if (this.isType !== 'arcives') { // if (this.isType !== 'arcives') {
// this.FetchNoFormatField(this.selectedCategory.id) // this.FetchNoFormatField(this.selectedCategory.id)
// } // }
console.log('parentsId-in', this.parentsData.parentsId)
// console.log('parentsId-in', this.parentsData.parentsId)
}, },
methods: { methods: {
checkboxT(row, rowIndex) { checkboxT(row, rowIndex) {

15
src/views/prearchiveLibrary/index.vue

@ -156,6 +156,11 @@ export default {
}) })
] ]
}, },
provide() {
return {
parentsData: this
}
},
mixins: [presenter(), header(), preLibraryCrud], mixins: [presenter(), header(), preLibraryCrud],
data() { data() {
return { return {
@ -267,7 +272,15 @@ export default {
}, },
handleFormMerge() { handleFormMerge() {
this.selectedCategory = this.selectedCategoryMerge this.selectedCategory = this.selectedCategoryMerge
FetchInitCategoryInputFieldByPid({ categoryId: this.selectedCategoryMerge.id, isType: 2 }).then((data) => {
// let categoryLevel
// if (this.selectedCategoryMerge.arrangeType === 1) {
// categoryLevel = 3
// } else if (this.selectedCategoryMerge.arrangeType === 2) {
// categoryLevel = 2
// } else {
// categoryLevel = 1
// }
FetchInitCategoryInputFieldByPid({ categoryId: this.selectedCategoryMerge.id, categoryLevel: 3, istype: 2 }).then((data) => {
const showFiledAll = data.filter(item => item.isSequence).sort((a, b) => a.isSequence - b.isSequence) const showFiledAll = data.filter(item => item.isSequence).sort((a, b) => a.isSequence - b.isSequence)
this.$nextTick(() => { this.$nextTick(() => {
this.formPreviewData = showFiledAll this.formPreviewData = showFiledAll

Loading…
Cancel
Save