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.
950 lines
35 KiB
950 lines
35 KiB
<template>
|
|
<div>
|
|
<div class="collect-header contorl-header">
|
|
<h4 :class="classType">{{ collectTitle }} </h4>
|
|
<div class="collect-filter">
|
|
<el-select
|
|
v-if="!isRecycle && isTitleType !== 6 && isTitleType !== 2"
|
|
v-model="selectStatus"
|
|
multiple
|
|
collapse-tags
|
|
style="margin-right: 10px; width: 160px;"
|
|
placeholder="请选择状态"
|
|
@change="handleSearch(collectLevel)"
|
|
>
|
|
<el-option-group
|
|
v-for="group in statusOptions"
|
|
v-show="!(selectedCategory.arrangeType === 2 && isTitleType===3 && (group.label === '标签状态' || group.label === '借阅状态'))"
|
|
:key="group.label"
|
|
:label="group.label"
|
|
>
|
|
<el-option
|
|
v-for="item in group.options"
|
|
|
|
:key="item.value"
|
|
:label="item.label"
|
|
:value="item.value"
|
|
/>
|
|
</el-option-group>
|
|
</el-select>
|
|
<treeselect
|
|
v-if="selectedCategory.arrangeType === 3 && isTitleType !== 4 && isTitleType !== 6"
|
|
v-model="query.project_class"
|
|
:options="projectOptions"
|
|
style="width: 180px;"
|
|
flat
|
|
:multiple="false"
|
|
:normalizer="normalizerProject"
|
|
:default-expand-level="Infinity"
|
|
:placeholder="projectPlaceholder"
|
|
@input="handleSearch(collectLevel)"
|
|
@select="handleSearch(collectLevel)"
|
|
>
|
|
<p
|
|
slot="option-label"
|
|
slot-scope="{node}"
|
|
style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis; width: 100%; padding-left: 10px;"
|
|
:title="node.label"
|
|
>
|
|
<template> {{ node.label }} </template>
|
|
</p>
|
|
</treeselect>
|
|
<treeselect
|
|
v-if="isTitleType !== 6"
|
|
v-model="query.archive_ctg_no"
|
|
:options="classifyOptions"
|
|
style="width: 160px;"
|
|
flat
|
|
:multiple="false"
|
|
:normalizer="normalizer"
|
|
placeholder="请选择档案分类"
|
|
@input="handleSearch(collectLevel)"
|
|
@select="handleSearch(collectLevel)"
|
|
><p
|
|
slot="option-label"
|
|
slot-scope="{node}"
|
|
style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis; width: 100%; padding-left: 10px;"
|
|
:title="node.label"
|
|
>
|
|
<template> {{ node.label }} </template>
|
|
</p>
|
|
</treeselect>
|
|
</div>
|
|
<div v-if="isTitleType !== 6" class="head-search">
|
|
<!-- 搜索 -->
|
|
<el-input v-model="query.search" clearable size="small" :placeholder="placeholderType" prefix-icon="el-icon-search" style="width: 200px;" class="filter-item" @keyup.enter.native="handleSearch(collectLevel)" @clear="handleSearch(collectLevel)" />
|
|
<el-button class="filter-item filter-search" size="mini" type="success" icon="el-icon-search" @click="handleSearch(collectLevel)">搜索</el-button>
|
|
<el-button class="filter-item filter-refresh" size="mini" type="warning" icon="el-icon-refresh-left" @click="resetQuery">重置</el-button>
|
|
</div>
|
|
<div v-if="!isRecycle" class="collect-menu">
|
|
<el-menu
|
|
:default-active="activeMenuIndex"
|
|
mode="horizontal"
|
|
@select="handleSelect"
|
|
>
|
|
<el-submenu v-if="isTitleType !== 6" index="1">
|
|
<template slot="title">
|
|
<i class="iconfont icon-changgui" />
|
|
<span>常规</span>
|
|
</template>
|
|
<el-menu-item-group class="collect-submenu-group">
|
|
<el-menu-item v-if="isTitleType !== 6" index="1-1" @click="handleForm('edit')">编辑</el-menu-item>
|
|
</el-menu-item-group>
|
|
</el-submenu>
|
|
<el-submenu v-if="isTitleType === 3" index="2">
|
|
<template slot="title">
|
|
<i class="iconfont icon-zhengli" />
|
|
<span>整理</span>
|
|
</template>
|
|
<el-menu-item-group class="collect-submenu-group">
|
|
<el-menu-item v-if="selectedCategory.arrangeType === 1" index="2-1" @click="bindingTag(selections)">标签绑定</el-menu-item>
|
|
<el-menu-item-group class="collect-submenu-group submenu-tree">
|
|
<template slot="title">档案装盒</template>
|
|
<el-menu-item index="2-2" @click="handlePackingBox(0)">装盒</el-menu-item>
|
|
<el-menu-item v-if="selectedCategory.arrangeType !== 1" index="2-3" @click="handlePackingBox(1)">分卷装盒</el-menu-item>
|
|
</el-menu-item-group>
|
|
<el-menu-item-group class="collect-submenu-group submenu-tree">
|
|
<template slot="title">档案移交</template>
|
|
<el-menu-item index="2-4" @click="handleOnlineHandover">在线移交</el-menu-item>
|
|
<el-menu-item index="2-5" @click="handleOffLineHandover">离线移交</el-menu-item>
|
|
</el-menu-item-group>
|
|
<!-- <el-menu-item v-if="selectedCategory.isType === 2" index="2-6" @click="handleExportZip">导出ZIP包</el-menu-item> -->
|
|
<el-menu-item index="2-7" @click="handleArcReturn">档案退回</el-menu-item>
|
|
<el-menu-item index="2-8" @click="handleJD(0)">开放审核</el-menu-item>
|
|
<el-menu-item index="2-9" @click="handleJD(1)">销毁鉴定</el-menu-item>
|
|
</el-menu-item-group>
|
|
</el-submenu>
|
|
<el-submenu v-if="isTitleType === 4" index="2">
|
|
<template slot="title">
|
|
<i class="iconfont icon-zhengli" />
|
|
<span>整理</span>
|
|
</template>
|
|
<el-menu-item-group class="collect-submenu-group">
|
|
<el-menu-item index="2-1" @click="bindingTag(selections)">标签绑定</el-menu-item>
|
|
</el-menu-item-group>
|
|
</el-submenu>
|
|
<el-submenu v-if="isTitleType !== 6" index="3">
|
|
<template slot="title">
|
|
<i class="iconfont icon-gengduo" />
|
|
<span>更多</span>
|
|
</template>
|
|
<el-menu-item-group class="collect-submenu-group">
|
|
<el-menu-item v-if="isTitleType !== 6" index="3-1" @click="handleExport">导出</el-menu-item>
|
|
<el-menu-item v-if="isTitleType === 3" index="3-2" @click="handlePrint">打印</el-menu-item>
|
|
<el-menu-item v-if="isTitleType === 6" index="3-3" @click="handleOriginalDownload">下载</el-menu-item>
|
|
</el-menu-item-group>
|
|
</el-submenu>
|
|
</el-menu>
|
|
</div>
|
|
<!-- 利用权限操作 -->
|
|
<div v-if="!isRecycle && isTitleType === 6" class="collect-menu">
|
|
<el-button v-if="parentsData.authUtilize.look" class="filter-item" size="mini" type="success" @click="toPreview"><i class="iconfont icon-sulan" />预览</el-button>
|
|
<el-button v-if="parentsData.authUtilize.download" class="filter-item" size="mini" type="success" :disabled="selections.length !== 1" @click="handleOriginalDownload"><i class="iconfont icon-xiazai" :disabled="crud.selections.length !== 1" />下载</el-button>
|
|
<el-button v-if="parentsData.authUtilize.print" class="filter-item" size="mini" type="success" :disabled="selections.length !== 1"><i class="iconfont icon-dayin" />打印</el-button>
|
|
</div>
|
|
|
|
<div v-if="isRecycle && (isTitleType === 2 || isTitleType === 3)" class="collect-menu">
|
|
<el-button class="filter-item" size="mini" type="success" @click="toRecover"><i class="iconfont icon-huifu" />恢复</el-button>
|
|
<el-button class="filter-item" size="mini" type="success" @click="toCompletelyDelete"><i class="iconfont icon-shanchu" />彻底删除</el-button>
|
|
<el-button class="filter-item" size="mini" type="success" :disabled="selections.length === 0" @click="handleExport"><i class="iconfont icon-daochu" />导出</el-button>
|
|
</div>
|
|
|
|
<!--新增 / 编辑 表单组件-->
|
|
<el-dialog class="preview-dialog" :modal-append-to-body="false" :close-on-click-modal="false" append-to-body :before-close="handleClose" :visible="formVisible" :title="formTitle">
|
|
<span class="dialog-right-top" />
|
|
<span class="dialog-left-bottom" />
|
|
<div class="setting-dialog">
|
|
<PreviewForm
|
|
v-if="formPreviewData.length"
|
|
ref="previewForm"
|
|
:is-has-code="true"
|
|
:is-disabled="false"
|
|
:form-preview-data.sync="formPreviewData"
|
|
:selected-category="selectedCategory"
|
|
:arc-id="arcId"
|
|
:is-des-form-type="isDesFormType"
|
|
:is-title-type="isTitleType"
|
|
:collect-level="collectLevel"
|
|
:category-menu="categoryMenu"
|
|
:archives-type="archivesType"
|
|
@close-dialog="closeDialog"
|
|
/>
|
|
<div slot="footer" class="dialog-footer" style="margin-top: 85px !important;">
|
|
<el-button type="primary" @click="handlerArchivesSubmit">保存</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
|
|
<!-- 绑定标签 -->
|
|
<binding-tag-dlg ref="bindingTag" :binding-id="selections[0] && selections[0].id" :binding-type="1" binding-txt="档案" @close-dialog="closeDialog" />
|
|
<!-- 装盒 / 分卷装盒 -->
|
|
<PackingBox ref="packingBox" :selected-category="selectedCategory" :selections="selections" :total-sum-all="totalSumAll" @close-dialog="closeDialog" />
|
|
<!-- 在线移交 -->
|
|
<OnlineHandover ref="onlineHandover" :selected-category="selectedCategory" :collect-level="collectLevel" :selections="selections" :total-sum-all="totalSumAll" @close-dialog="closeDialog" />
|
|
<!-- 离线移交 -->
|
|
<OffLineHandover ref="offLineHandover" :selected-category="selectedCategory" :collect-level="collectLevel" :selections="selections" :total-sum-all="totalSumAll" @close-dialog="closeDialog" />
|
|
<!-- 导出zip -->
|
|
<ExportZip ref="exportZip" :selected-category="selectedCategory" :selections="selections" @close-dialog="closeDialog" />
|
|
<!-- 开放审核 / 销毁鉴定 -->
|
|
<HandOverForm ref="formModule" :selected-category="selectedCategory" :collect-level="collectLevel" :selections="selections" @close-dialog="closeDialog" />
|
|
<!-- 打印 -->
|
|
<Print ref="printRef" :selected-category="selectedCategory" :collect-level="collectLevel" :selections="selections" @close-dialog="closeDialog" />
|
|
|
|
</div>
|
|
<div style="display: flex; justify-content: space-between; height: 30px; line-height: 30px; padding: 0 10px; ">
|
|
<span v-if="(isTitleType !== 2 && selectedCategory.arrangeType === 3 ) || ((isTitleType === 4 || isTitleType === 6) && selectedCategory.arrangeType === 2) || (isTitleType === 6 && selectedCategory.arrangeType === 1)" style="font-size: 12px;">{{ test }}</span>
|
|
|
|
<div v-if="!isRecycle && isTitleType === 6 && parentsData.authUtilize.endTime" style="font-size: 12px;">
|
|
<!-- 利用开始时间:{{ parentsData.authUtilize.startTime | parseTime }} -->
|
|
利用结束时间:{{ parentsData.authUtilize.endTime | parseTime }}
|
|
</div>
|
|
|
|
<div v-if="isTitleType !== 2 && !isRecycle && isTitleType !== 6" class="mangement-fixed-top">
|
|
<el-checkbox v-model="parentsData.fixedStatusBar" @change="statusBarChecked">隐藏状态栏</el-checkbox>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { crud } from '@crud/crud'
|
|
import { manageLibraryCrud } from '../mixins/index'
|
|
import { FetchInitCategoryInputFieldByPid, FetchCategoryMenu } from '@/api/system/category/category'
|
|
import { FetchDetailsById, FetchCompleteDelArchives, FetchRestoreArchives } from '@/api/collect/collect'
|
|
import { FetchArchivesClassTree } from '@/api/system/archivesClass'
|
|
|
|
import Treeselect from '@riophae/vue-treeselect'
|
|
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
|
import PreviewForm from '@/views/components/category/PreviewForm'
|
|
import Print from './print/index'
|
|
import BindingTagDlg from '@/views/components/BindingTagDlg'
|
|
import PackingBox from './packingBox/index'
|
|
import OnlineHandover from './onlineHandover/index'
|
|
import OffLineHandover from './offLineHandover/index'
|
|
import ExportZip from './exportZip/index'
|
|
import HandOverForm from './handOverForm'
|
|
import qs from 'qs'
|
|
import { downloadFile, exportFile } from '@/utils/index'
|
|
import { mapGetters } from 'vuex'
|
|
|
|
export default {
|
|
name: 'CollectHeader',
|
|
components: { Treeselect, PreviewForm, BindingTagDlg, Print, PackingBox, OnlineHandover, OffLineHandover, ExportZip, HandOverForm },
|
|
mixins: [manageLibraryCrud, crud()],
|
|
props: {
|
|
selectedCategory: {
|
|
type: Object,
|
|
default: function() {
|
|
return {}
|
|
}
|
|
},
|
|
isTitleType: {
|
|
type: Number,
|
|
default: 2
|
|
},
|
|
test: {
|
|
type: String,
|
|
default: function() {
|
|
return ''
|
|
}
|
|
},
|
|
isRecycle: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
selections: {
|
|
type: Array,
|
|
default: function() {
|
|
return []
|
|
}
|
|
}
|
|
},
|
|
inject: ['parentsData'],
|
|
data() {
|
|
return {
|
|
permission: {
|
|
convention: ['admin', 'archives:convention'],
|
|
arrange: ['admin', 'archives:arrange'],
|
|
more: ['admin', 'archives:more']
|
|
},
|
|
value: null,
|
|
categoryMenu: [],
|
|
statusOptions: [
|
|
{
|
|
label: '标签状态',
|
|
options: [
|
|
{
|
|
value: 1,
|
|
label: '未绑定'
|
|
},
|
|
{
|
|
value: 2,
|
|
label: '已绑定'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
label: '装盒状态',
|
|
options: [
|
|
{
|
|
value: 3,
|
|
label: '未装盒'
|
|
},
|
|
{
|
|
value: 4,
|
|
label: '已装盒'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
label: '入库状态',
|
|
options: [
|
|
{
|
|
value: 5,
|
|
label: '未入库'
|
|
},
|
|
{
|
|
value: 6,
|
|
label: '待入库'
|
|
},
|
|
{
|
|
value: 7,
|
|
label: '待出库'
|
|
},
|
|
{
|
|
value: 8,
|
|
label: '已入库'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
label: '借阅状态',
|
|
options: [
|
|
{
|
|
value: 9,
|
|
label: '实体在库'
|
|
},
|
|
{
|
|
value: 10,
|
|
label: '实体待借'
|
|
},
|
|
{
|
|
value: 11,
|
|
label: '实体已借'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
label: '实体状态',
|
|
options: [
|
|
{
|
|
value: 12,
|
|
label: '无实体'
|
|
},
|
|
{
|
|
value: 13,
|
|
label: '有实体'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
label: '开放状态',
|
|
options: [
|
|
{
|
|
value: 14,
|
|
label: '未开放'
|
|
},
|
|
{
|
|
value: 15,
|
|
label: '已开放'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
label: '审批锁定',
|
|
options: [
|
|
{
|
|
value: 16,
|
|
label: '空闲'
|
|
},
|
|
{
|
|
value: 17,
|
|
label: '退回'
|
|
},
|
|
{
|
|
value: 18,
|
|
label: '开放'
|
|
},
|
|
{
|
|
value: 19,
|
|
label: '销毁'
|
|
}, {
|
|
value: 20,
|
|
label: '利用'
|
|
}, {
|
|
value: 21,
|
|
label: '内部移交'
|
|
}, {
|
|
value: 22,
|
|
label: '外部移交'
|
|
}
|
|
]
|
|
}
|
|
],
|
|
selectStatus: null,
|
|
activeMenuIndex: '1',
|
|
formVisible: false,
|
|
formTitle: '项目',
|
|
formPreviewData: [], // 预览界面data
|
|
projectOptions: [],
|
|
classifyOptions: [],
|
|
isDesFormType: 'manageArcives', // 区分是门类得还是档案得
|
|
arcId: null,
|
|
totalSumAll: 0,
|
|
archivesType: null
|
|
}
|
|
},
|
|
computed: {
|
|
...mapGetters([
|
|
'baseApi'
|
|
]),
|
|
collectTitle() {
|
|
if (this.isTitleType === 2) {
|
|
return '项目'
|
|
} else if (this.isTitleType === 3) {
|
|
if (this.selectedCategory.arrangeType === 1) {
|
|
return '文件'
|
|
} else {
|
|
return '案卷'
|
|
}
|
|
} else if (this.isTitleType === 4) {
|
|
return '卷内'
|
|
} else if (this.isTitleType === 6) {
|
|
return '原文'
|
|
}
|
|
return ''
|
|
},
|
|
collectLevel() {
|
|
if (this.isTitleType === 2) {
|
|
return 1
|
|
} else if (this.isTitleType === 3) {
|
|
if (this.selectedCategory.arrangeType === 1) {
|
|
return 3
|
|
} else {
|
|
return 2
|
|
}
|
|
} else if (this.isTitleType === 4) {
|
|
return 3
|
|
} else if (this.isTitleType === 6) {
|
|
return 4
|
|
}
|
|
return null
|
|
},
|
|
classType() {
|
|
if (this.isTitleType === 2) {
|
|
return ''
|
|
} else if (this.isTitleType === 3) {
|
|
return 'is-anjuan'
|
|
} else if (this.isTitleType === 4) {
|
|
return 'is-juannei'
|
|
} else if (this.isTitleType === 6) {
|
|
return 'is-file'
|
|
}
|
|
return ''
|
|
},
|
|
placeholderType() {
|
|
if (this.isTitleType === 2) {
|
|
return '输入项目名称或编号搜索'
|
|
} else if (this.isTitleType === 3 || this.isTitleType === 4) {
|
|
return '输入题名或档号搜索'
|
|
}
|
|
return '输入项目名称或编号搜索'
|
|
},
|
|
projectPlaceholder() {
|
|
if (this.isTitleType === 2) {
|
|
return '请选择项目分类'
|
|
} else if (this.isTitleType === 3) {
|
|
return '请选择项目阶段'
|
|
}
|
|
return '请选择项目分类'
|
|
}
|
|
},
|
|
created() {
|
|
},
|
|
mounted() {
|
|
this.getInitArchivesClass()
|
|
if (localStorage.getItem('statusBarFixedType') !== 'undefined') {
|
|
this.parentsData.fixedStatusBar = JSON.parse(localStorage.getItem('statusBarFixedType')) === true
|
|
}
|
|
this.getCategoryDataTree()
|
|
},
|
|
methods: {
|
|
getCategoryDataTree() {
|
|
FetchCategoryMenu().then(res => {
|
|
this.categoryMenu = res
|
|
})
|
|
},
|
|
resetQuery() {
|
|
this.selectStatus = []
|
|
this.query = {
|
|
'search': null,
|
|
'project_class': null,
|
|
'archive_ctg_no': null
|
|
}
|
|
this.handleSearch(this.collectLevel)
|
|
},
|
|
// 筛选 - 档案分类
|
|
getInitArchivesClass() {
|
|
this.classifyOptions = []
|
|
this.query = {
|
|
'search': null,
|
|
'project_class': null,
|
|
'archive_ctg_no': null
|
|
}
|
|
const params = {
|
|
'categoryId': this.selectedCategory.id
|
|
}
|
|
FetchArchivesClassTree(params).then((res) => {
|
|
this.classifyOptions = JSON.parse(JSON.stringify(res))
|
|
}).catch(err => {
|
|
console.log(err)
|
|
})
|
|
},
|
|
normalizer(node) {
|
|
if (node.childArchivesClass === null) {
|
|
delete node.childArchivesClass
|
|
}
|
|
return {
|
|
id: node.code,
|
|
label: `${node.name} - ${node.code}`,
|
|
children: node.childArchivesClass
|
|
}
|
|
},
|
|
handleSelect(key, keyPath) {
|
|
console.log(key, keyPath)
|
|
},
|
|
// 著录界面-form/详情-api
|
|
handleForm(type) {
|
|
if (type === 'add') {
|
|
this.formTitle = '新增' + this.collectTitle
|
|
this.arcId = null
|
|
} else if (type === 'edit') {
|
|
if (this.selections.length === 0) {
|
|
this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
|
|
return false
|
|
} else if (this.selections.length > 1) {
|
|
this.$message({ message: '编辑操作只可勾选唯一目标条目,请先确认!', offset: 8 })
|
|
return false
|
|
} else if (this.selections[0].process_status !== 1) {
|
|
this.$message({ message: '当前所选的档案处于流程中,不可操作编辑,请先确认!', offset: 8 })
|
|
return false
|
|
}
|
|
this.arcId = this.selections[0].id
|
|
this.formTitle = '编辑' + this.collectTitle
|
|
}
|
|
// this.form.dictionaryConfigId = {}
|
|
// this.formPreviewData = []
|
|
// 档案预编辑获取字段
|
|
this.formVisible = true
|
|
this.$nextTick(() => {
|
|
this.getFormInfo(type)
|
|
})
|
|
},
|
|
getFormInfo(type) {
|
|
this.archivesType = type
|
|
if (type === 'edit') {
|
|
const params = {
|
|
'categoryId': this.selectedCategory.id,
|
|
'categoryLevel': this.collectLevel,
|
|
'id': this.arcId
|
|
}
|
|
FetchDetailsById(params).then(data => {
|
|
// const showFiledAll = data.showFiled.filter(item => item.isSequence).sort((a, b) => a.isSequence - b.isSequence)
|
|
const showFiledAll = data.showFiled
|
|
this.$nextTick(() => {
|
|
this.formPreviewData = showFiledAll
|
|
this.isDesFormType = 'manageArcives'
|
|
this.$nextTick(() => {
|
|
this.$refs.previewForm.addOrUpdateForm = data.echo
|
|
this.$refs.previewForm.FetchNoFormatField(this.selectedCategory.id)
|
|
})
|
|
})
|
|
})
|
|
} else {
|
|
const params = {
|
|
'categoryId': this.selectedCategory.id,
|
|
'categoryLevel': this.collectLevel
|
|
}
|
|
FetchInitCategoryInputFieldByPid(params).then(data => {
|
|
this.formPreviewData = data
|
|
this.isDesFormType = 'manageArcives'
|
|
this.$nextTick(() => {
|
|
this.$refs.previewForm.FetchNoFormatField(this.selectedCategory.id)
|
|
})
|
|
})
|
|
}
|
|
},
|
|
// form - submit
|
|
handlerArchivesSubmit() {
|
|
this.$refs.previewForm.submitForm('addOrUpdateForm', this.selectedCategory.id,)
|
|
},
|
|
handleClose(done) {
|
|
this.formVisible = false
|
|
done()
|
|
},
|
|
// 绑定标签
|
|
bindingTag(data) {
|
|
if (this.selections.length === 0) {
|
|
this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
|
|
return false
|
|
}
|
|
if (this.selections.length > 1) {
|
|
this.$message({ message: '只可勾选唯一目标条目,请先确认!', offset: 8 })
|
|
return false
|
|
}
|
|
const isHasFillFormal = this.selections.some(item => item.process_status !== 1)
|
|
if (isHasFillFormal) {
|
|
this.$message({ message: '您所选的条目有正在流程中,不可操作绑定标签,请先确认!', offset: 8 })
|
|
return false
|
|
}
|
|
if (data[0].tid) {
|
|
// this.$refs.bindingTag.isBinding = true
|
|
this.$refs.bindingTag.tidCode = data[0].tid
|
|
this.$confirm('当前标签已被绑定,是否覆盖' + '<span>你是否还要继续?</span>', '提示', {
|
|
confirmButtonText: '继续',
|
|
cancelButtonText: '取消',
|
|
type: 'warning',
|
|
dangerouslyUseHTMLString: true
|
|
}).then(() => {
|
|
this.$refs.bindingTag.bindingVisible = true
|
|
this.$refs.bindingTag.opened()
|
|
}).catch(() => {
|
|
})
|
|
} else {
|
|
this.$refs.bindingTag.bindingVisible = true
|
|
}
|
|
},
|
|
// 导出
|
|
handleExport() {
|
|
if (this.selections.length === 0) {
|
|
this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
|
|
return false
|
|
}
|
|
this.$confirm('此操作将导出所选数据' + '<span>你是否还要继续?</span>', '提示', {
|
|
confirmButtonText: '继续',
|
|
cancelButtonText: '取消',
|
|
type: 'warning',
|
|
dangerouslyUseHTMLString: true
|
|
}).then(() => {
|
|
const archivesIds = []
|
|
this.selections.forEach(val => {
|
|
archivesIds.push(val.id)
|
|
})
|
|
const params = {
|
|
'categoryId': this.selectedCategory.id,
|
|
'categoryLevel': this.collectLevel,
|
|
'archivesIds': archivesIds
|
|
}
|
|
exportFile(this.baseApi + '/api/control/exportDate?' + qs.stringify(params, { indices: false }))
|
|
}).catch(() => {
|
|
})
|
|
},
|
|
// 打印
|
|
handlePrint() {
|
|
if (this.selections.length === 0) {
|
|
this.$refs.printRef.form.printRange = '当页条目'
|
|
let currentTableData = []
|
|
if (this.collectLevel === 2) {
|
|
currentTableData = this.parentsData.$refs.anjuanEle.$refs.ajContent.$refs.tableList.anjuanData
|
|
} else if (this.collectLevel === 3) {
|
|
if (this.isTitleType === 3) {
|
|
currentTableData = this.parentsData.$refs.anjuanEle.$refs.ajContent.$refs.tableList.anjuanData
|
|
} else {
|
|
currentTableData = this.parentsData.$refs.juanneiEle.junneiData
|
|
}
|
|
}
|
|
this.$refs.printRef.currentTable = JSON.parse(JSON.stringify(currentTableData))
|
|
} else {
|
|
this.$refs.printRef.form.printRange = '勾选条目'
|
|
}
|
|
this.$refs.printRef.printVisible = true
|
|
},
|
|
// 原文内的附件下载
|
|
handleOriginalDownload() {
|
|
if (this.selections.length > 1 || this.selections.length === 0) {
|
|
this.$message({ message: '下载操作只可勾选唯一目标条目,请先确认!', offset: 8 })
|
|
return false
|
|
}
|
|
const url = this.baseApi + '/downloadFile' + this.selections[0].file_path
|
|
fetch(url).then(res => res.blob()).then(blob => {
|
|
downloadFile(blob, this.selections[0].file_name.split('.')[0], this.selections[0].file_type)
|
|
}).catch(() => {
|
|
this.$message({ message: '下载文件失败', type: 'error', offset: 8 })
|
|
})
|
|
},
|
|
// 回收站 - 恢复
|
|
toRecover() {
|
|
if (this.selections.length === 0) {
|
|
this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
|
|
return false
|
|
}
|
|
this.$confirm('此恢复将会把所选条目及其子集一并恢复' + '<span>你是否还要继续?</span>', '提示', {
|
|
confirmButtonText: '继续',
|
|
cancelButtonText: '取消',
|
|
type: 'warning',
|
|
dangerouslyUseHTMLString: true
|
|
}).then(() => {
|
|
const archivesIds = []
|
|
this.selections.forEach(val => {
|
|
archivesIds.push(val.id)
|
|
})
|
|
const params = {
|
|
'categoryId': this.selectedCategory.id,
|
|
'categoryLevel': this.collectLevel,
|
|
'archivesIds': archivesIds,
|
|
'collectFormal': this.isTitleType === 2 ? 3 : null
|
|
}
|
|
FetchRestoreArchives(params).then((res) => {
|
|
if (res.code !== 500) {
|
|
localStorage.removeItem('currentPageSize')
|
|
localStorage.removeItem('currentPage')
|
|
this.$message({ message: res, type: 'success', offset: 8 })
|
|
this.handleSearch(this.collectLevel)
|
|
} else {
|
|
this.$message({ message: '恢复所选档案失败', type: 'error', offset: 8 })
|
|
}
|
|
}).catch(err => {
|
|
console.log(err)
|
|
})
|
|
}).catch(() => {
|
|
})
|
|
},
|
|
// 回收站 - 彻底删除
|
|
toCompletelyDelete() {
|
|
if (this.selections.length === 0) {
|
|
this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
|
|
return false
|
|
}
|
|
this.$confirm('此删除将把会所选条目与其子集彻底删除' + '<span>你是否还要继续?</span>', '提示', {
|
|
confirmButtonText: '继续',
|
|
cancelButtonText: '取消',
|
|
type: 'warning',
|
|
dangerouslyUseHTMLString: true
|
|
}).then(() => {
|
|
const archivesIds = []
|
|
this.selections.forEach(val => {
|
|
archivesIds.push(val.id)
|
|
})
|
|
const params = {
|
|
'categoryId': this.selectedCategory.id,
|
|
'categoryLevel': this.collectLevel,
|
|
'archivesIds': archivesIds
|
|
}
|
|
FetchCompleteDelArchives(params).then((res) => {
|
|
if (res.code !== 500) {
|
|
localStorage.removeItem('currentPageSize')
|
|
localStorage.removeItem('currentPage')
|
|
this.$message({ message: res, type: 'success', offset: 8 })
|
|
this.handleSearch(this.collectLevel)
|
|
} else {
|
|
this.$message({ message: '删除所选档案失败', type: 'error', offset: 8 })
|
|
}
|
|
}).catch(err => {
|
|
console.log(err)
|
|
})
|
|
}).catch(() => {
|
|
})
|
|
},
|
|
// 装盒 / 分卷装盒
|
|
handlePackingBox(type) {
|
|
if (this.selections.length === 0) {
|
|
this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
|
|
return false
|
|
}
|
|
const isHasFillFormal = this.selections.some(item => item.process_status !== 1)
|
|
if (isHasFillFormal) {
|
|
this.$message({ message: '您所选的条目有正在流程中,不可操作装盒,请先确认!', offset: 8 })
|
|
return false
|
|
}
|
|
if (this.selectedCategory.arrangeType === 2) {
|
|
if (type === 1) {
|
|
if (this.selections.length > 1) {
|
|
this.$message({ message: '只可勾选唯一目标条目,请先确认!', offset: 8 })
|
|
return false
|
|
}
|
|
}
|
|
if (this.selections[0].child === 0) {
|
|
this.$message({ message: '当前选中的档案无相关卷内文件,不可装盒!', type: 'error', offset: 8 })
|
|
return
|
|
}
|
|
}
|
|
if (this.selections[0].case_no) {
|
|
this.$message({ message: '当前档案已装盒,请勿重复操作!', type: 'error', offset: 8 })
|
|
return
|
|
}
|
|
// 后面与后端对接确定字段name
|
|
// const existsNotEmpty = this.selections.some(item => item.caseNum)
|
|
// if (existsNotEmpty) {
|
|
// this.$message('所选条目中存在已装盒档案,请勿重复操作!')
|
|
// return false
|
|
// }
|
|
this.$refs.packingBox.packingVisible = true
|
|
this.$refs.packingBox.isPackingOrPartType = type
|
|
this.$refs.packingBox.packFileCategory = this.parentsData.listCategory
|
|
if (type === 0) {
|
|
this.$refs.packingBox.packingTitle = '装盒'
|
|
} else {
|
|
this.$refs.packingBox.packingTitle = '分卷装盒'
|
|
this.$refs.packingBox.getViewTable()
|
|
}
|
|
this.getTotalSumAll()
|
|
},
|
|
getTotalSumAll() {
|
|
this.totalSumAll = 0
|
|
this.selections.map((item) => { if (!isNaN(item.child)) this.totalSumAll += item.child })
|
|
if (isNaN(this.totalSumAll)) {
|
|
return 0
|
|
}
|
|
return this.totalSumAll
|
|
},
|
|
// 在线移交
|
|
handleOnlineHandover() {
|
|
if (this.selections.length === 0) {
|
|
this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
|
|
return false
|
|
}
|
|
this.$refs.onlineHandover.handOverFileCategory = this.parentsData.listCategory
|
|
this.$refs.onlineHandover.onlineHandoverVisible = true
|
|
this.getTotalSumAll()
|
|
},
|
|
// 离线移交
|
|
handleOffLineHandover() {
|
|
if (this.selections.length === 0) {
|
|
this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
|
|
return false
|
|
}
|
|
// this.$refs.offLineHandover.offLineHandoverVisible = true
|
|
this.$refs.formModule.activeIndex = 0
|
|
this.$refs.formModule.overType = 7
|
|
this.$refs.formModule.overDetialVisible = true
|
|
this.$refs.formModule.overDetialTitle = '离线移交-流程'
|
|
},
|
|
// 导出zip包
|
|
handleExportZip() {
|
|
if (this.selections.length === 0) {
|
|
this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
|
|
return false
|
|
}
|
|
this.$refs.exportZip.exportZipVisible = true
|
|
},
|
|
// 档案退回
|
|
handleArcReturn() {
|
|
if (this.selections.length === 0) {
|
|
this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
|
|
return false
|
|
}
|
|
const isHasFillFormal = this.selections.some(item => item.process_status !== 1)
|
|
if (isHasFillFormal) {
|
|
this.$message({ message: '您所选的条目有正在流程中,不可操作档案退回,请先确认!', offset: 8 })
|
|
return false
|
|
}
|
|
this.$confirm('此移出将把会所选条目退回到收集库' + '<span>你是否还要继续?</span>', '提示', {
|
|
confirmButtonText: '继续',
|
|
cancelButtonText: '取消',
|
|
type: 'warning',
|
|
dangerouslyUseHTMLString: true
|
|
}).then(() => {
|
|
this.$refs.formModule.overType = 2
|
|
this.$refs.formModule.overDetialTitle = '退回审核-流程'
|
|
this.$refs.formModule.overDetialVisible = true
|
|
}).catch(() => {
|
|
})
|
|
},
|
|
// 开放审核 / 销毁鉴定
|
|
handleJD(type) {
|
|
if (this.selections.length === 0) {
|
|
this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
|
|
return false
|
|
}
|
|
if (type === 0) {
|
|
this.$refs.formModule.overType = 3
|
|
this.$refs.formModule.overDetialTitle = '开放审核-流程'
|
|
} else {
|
|
this.$refs.formModule.overType = 4
|
|
this.$refs.formModule.overDetialTitle = '销毁鉴定-流程'
|
|
}
|
|
this.$refs.formModule.activeIndex = 0
|
|
this.$refs.formModule.overDetialVisible = true
|
|
},
|
|
|
|
toPreview() {
|
|
const routeData = this.$router.resolve({ path: '/preview' })
|
|
window.open(routeData.href, '_blank')
|
|
},
|
|
closeDialog(data) {
|
|
this.formVisible = false
|
|
setTimeout(() => {
|
|
this.handleSearch(this.collectLevel)
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang='scss' scoped>
|
|
.collect-header{
|
|
border-top: none !important;
|
|
padding: 20px 0 0 0 !important;
|
|
}
|
|
.manage-fixed-style{
|
|
margin-bottom: 30px;
|
|
}
|
|
.contorl-header{
|
|
flex-wrap: wrap;
|
|
height: 94px;
|
|
.head-search{
|
|
height: 32px;
|
|
margin-right: 0 !important;
|
|
margin-bottom: 10px !important;
|
|
}
|
|
.collect-menu{
|
|
width: 100%;
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
.el-submenu{
|
|
margin-right: 0;
|
|
margin-left: 10px;
|
|
}
|
|
}
|
|
}
|
|
::v-deep .vue-treeselect__list-item{
|
|
width: 220px;
|
|
}
|
|
::v-deep .vue-treeselect__menu {
|
|
padding: 20px 0;
|
|
}
|
|
::v-deep .vue-treeselect__option--highlight{
|
|
background: #f5f9fc !important;
|
|
color: #0348f3 !important;
|
|
}
|
|
::v-deep .vue-treeselect__option-arrow-container .vue-treeselect__option-arrow{
|
|
color: #1c1c1c !important;
|
|
}
|
|
::v-deep .vue-treeselect__placeholder{
|
|
font-size: 14px;
|
|
}
|
|
::v-deep .vue-treeselect__label-container{
|
|
font-size: 14px;
|
|
height: 34px;
|
|
line-height: 34px;
|
|
color: #1c1c1c;
|
|
}
|
|
::v-deep .vue-treeselect__option.vue-treeselect__option--disabled{
|
|
.vue-treeselect__label-container{
|
|
color: #545b65 !important;
|
|
}
|
|
}
|
|
::v-deep.vue-treeselect--has-value .vue-treeselect__single-value{
|
|
font-size: 14px;
|
|
}
|
|
</style>
|