阅行客电子档案
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.

1271 lines
53 KiB

2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
2 years ago
  1. <template>
  2. <div>
  3. <div class="collect-header">
  4. <h4 :class="classType">{{ collectTitle }} </h4>
  5. <div class="collect-filter">
  6. <treeselect
  7. v-if="selectedCategory.arrangeType === 3 && isTitleType !== 4 && isTitleType !== 6 && activeIndex !== 1"
  8. v-model="query.project_class"
  9. :options="projectOptions"
  10. style="width: 180px;"
  11. flat
  12. :multiple="false"
  13. :normalizer="normalizerProject"
  14. :default-expand-level="Infinity"
  15. :placeholder="projectPlaceholder"
  16. @input="handleSearch(collectLevel)"
  17. @select="handleSearch(collectLevel)"
  18. >
  19. <p
  20. slot="option-label"
  21. slot-scope="{node}"
  22. style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis; width: 100%; padding-left: 10px;"
  23. :title="node.label"
  24. >
  25. <template> {{ node.label }} </template>
  26. </p>
  27. </treeselect>
  28. <treeselect
  29. v-if="isTitleType !== 6 && isTitleType !== 2"
  30. v-model="query.archive_ctg_no"
  31. :options="classifyOptions"
  32. style="width: 180px;"
  33. flat
  34. :multiple="false"
  35. :normalizer="normalizer"
  36. placeholder="请选择档案分类"
  37. @input="handleSearch(collectLevel)"
  38. @select="handleSearch(collectLevel)"
  39. >
  40. <p
  41. slot="option-label"
  42. slot-scope="{node}"
  43. style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis; width: 100%; padding-left: 10px;"
  44. :title="node.label"
  45. >
  46. <template> {{ node.label }} </template>
  47. </p>
  48. </treeselect>
  49. </div>
  50. <div v-if="isTitleType !== 6" class="head-search">
  51. <!-- 搜索 -->
  52. <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)" />
  53. <el-button class="filter-item filter-search" size="mini" type="success" icon="el-icon-search" @click="handleSearch(collectLevel)">搜索</el-button>
  54. <el-button class="filter-item filter-refresh" size="mini" type="warning" icon="el-icon-refresh-left" @click="resetQuery">重置</el-button>
  55. </div>
  56. <div v-if="!isRecycle" class="collect-menu">
  57. <el-menu
  58. :default-active="activeMenuIndex"
  59. mode="horizontal"
  60. @select="handleSelect"
  61. >
  62. <el-submenu index="1">
  63. <template slot="title">
  64. <i class="iconfont icon-changgui" />
  65. <span>常规</span>
  66. </template>
  67. <el-menu-item-group class="collect-submenu-group">
  68. <el-menu-item v-if="isTitleType !== 6" index="1-1" @click="handleForm('add',0)">新增</el-menu-item>
  69. <el-menu-item v-if="isTitleType !== 6" index="1-2" @click="handleForm('edit',0)">编辑</el-menu-item>
  70. <el-menu-item v-if="isTitleType !== 4" index="1-3" @click="toDelete">删除</el-menu-item>
  71. <el-menu-item v-if="isTitleType === 4" index="1-4" @click="toMove">移出</el-menu-item>
  72. </el-menu-item-group>
  73. <el-menu-item-group v-if="(isTitleType === 3 && selectedCategory.arrangeType === 1) || isTitleType === 4 || isTitleType === 6 || (isTitleType === 3 && activeIndex === 1)" class="collect-submenu-group submenu-tree">
  74. <template slot="title">原文上传</template>
  75. <el-menu-item index="1-5" @click="fileUpload(0)">普通上传</el-menu-item>
  76. <el-menu-item index="1-6" @click="fileUpload(1)">大文件上传</el-menu-item>
  77. </el-menu-item-group>
  78. </el-submenu>
  79. <el-submenu v-if="isTitleType !== 6" index="2">
  80. <template slot="title">
  81. <i class="iconfont icon-zhengli" />
  82. <span>整理</span>
  83. </template>
  84. <el-menu-item-group class="collect-submenu-group">
  85. <el-menu-item v-if="isTitleType !== 2" index="2-1" @click="handleBlukImport">批量导入</el-menu-item>
  86. <!-- 项目 / 案卷 / 卷内 / 文件-->
  87. <el-menu-item v-if="activeIndex !== 1 || (isTitleType === 3 && selectedCategory.arrangeType === 1 && activeIndex === 1)" index="2-2" @click="handleBlukEditing">批量修改</el-menu-item>
  88. <el-menu-item v-if="isTitleType === 3 && activeIndex === 0 && selectedCategory.arrangeType !== 1" index="2-3" @click="handleJnSeqAdjustment('anjuan')">案卷顺序调整</el-menu-item>
  89. <el-menu-item v-if="isTitleType === 3 && activeIndex === 0 && selectedCategory.arrangeType !== 1 " index="2-12" @click="handleJnSeqAdjustment('juannei')">卷内顺序调整</el-menu-item>
  90. <el-menu-item v-if="isTitleType === 3 && selectedCategory.arrangeType === 1" index="2-3" @click="handleJnSeqAdjustment('file')">文件顺序调整</el-menu-item>
  91. <el-menu-item v-if="isTitleType !== 2 && !(isTitleType === 3 && (selectedCategory.arrangeType === 1|| selectedCategory.arrangeType === 2) && activeIndex === 1) && isTitleType !== 4" index="2-4" @click="handleFileNumberUpdate(0)">档号更新</el-menu-item>
  92. <!-- 案卷 -->
  93. <el-menu-item v-if="isTitleType === 3 && activeIndex === 0 && selectedCategory.arrangeType !== 1 " index="2-5" @click="handleFileNumberUpdate(1)">卷内档号更新</el-menu-item>
  94. <el-menu-item v-if="isTitleType === 3 && activeIndex === 0 && selectedCategory.arrangeType !== 1" index="2-6" @click="handleUncoil">拆卷</el-menu-item>
  95. <el-menu-item v-if="isTitleType === 3 && activeIndex === 0 && selectedCategory.arrangeType !== 1" index="2-7" @click="handleCombineFile">合卷</el-menu-item>
  96. <el-menu-item v-if="isTitleType === 3 && selectedCategory.arrangeType !== 1" index="2-8" @click="handleInsertFile">插件</el-menu-item>
  97. <!-- 案卷 / 卷内 / 文件 -->
  98. <el-menu-item v-if="isTitleType !== 2" index="2-9" @click="handleCollectMoveFile">移动</el-menu-item>
  99. <!-- 案卷 -->
  100. <el-menu-item v-if="isTitleType === 3 && activeIndex === 0" index="2-10" @click="handleFiling">归档</el-menu-item>
  101. <!-- 文件 -->
  102. <el-menu-item v-if="(isTitleType === 3 && selectedCategory.arrangeType === 1) || (isTitleType === 3 && activeIndex === 1)" index="2-11" @click="handleReturn">退回预归档库</el-menu-item>
  103. </el-menu-item-group>
  104. <el-menu-item-group v-if="isTitleType === 3 && activeIndex === 1 && selectedCategory.arrangeType !== 1" class="collect-submenu-group submenu-tree">
  105. <template slot="title">组卷</template>
  106. <el-menu-item index="2-12" @click="handleQuickPaper">快速组卷</el-menu-item>
  107. <el-menu-item index="2-13" @click="handlePaper">手工组卷</el-menu-item>
  108. </el-menu-item-group>
  109. <el-menu-item-group v-if="isTitleType !== 4" class="collect-submenu-group submenu-tree">
  110. <template slot="title">档案装盒</template>
  111. <el-menu-item index="2-2" @click="handlePackingBox(0)">装盒</el-menu-item>
  112. <el-menu-item v-if="selectedCategory.arrangeType !== 1 " index="2-3" @click="handlePackingBox(1)">分卷装盒</el-menu-item>
  113. </el-menu-item-group>
  114. </el-submenu>
  115. <el-submenu index="3">
  116. <template slot="title">
  117. <i class="iconfont icon-gengduo" />
  118. <span>更多</span>
  119. </template>
  120. <el-menu-item-group class="collect-submenu-group">
  121. <el-menu-item v-if="isTitleType !== 6" index="3-1" @click="handleExport">导出</el-menu-item>
  122. <el-menu-item v-if="!(isTitleType === 3 && (selectedCategory.arrangeType === 3 || selectedCategory.arrangeType === 2) && activeIndex === 1) && (isTitleType !== 2 && isTitleType !== 6)" index="3-2" @click="handlePrint">打印</el-menu-item>
  123. <el-menu-item v-if="!(isTitleType === 3 && (selectedCategory.arrangeType === 3 || selectedCategory.arrangeType === 2) && activeIndex === 1) && (isTitleType !== 2 && isTitleType !== 6) && isTitleType !== 4" index="3-3" @click="handleFourTest">四性检测</el-menu-item>
  124. <el-menu-item v-if="isTitleType === 6" index="3-4" @click="handleOriginalDownload">下载</el-menu-item>
  125. </el-menu-item-group>
  126. <el-menu-item-group v-if="!(isTitleType === 3 && (selectedCategory.arrangeType === 3 || selectedCategory.arrangeType === 2) && activeIndex === 1) && (isTitleType !== 2 && isTitleType !== 4 && isTitleType !== 6)" class="collect-submenu-group submenu-tree">
  127. <template slot="title">电子文件目录</template>
  128. <el-menu-item index="3-5" @click="handleCatalogDownload">目录下载</el-menu-item>
  129. <el-menu-item index="3-6" @click="fileUpload(2)">目录上传</el-menu-item>
  130. </el-menu-item-group>
  131. </el-submenu>
  132. </el-menu>
  133. </div>
  134. <div v-if="isRecycle && (isTitleType === 2 || isTitleType === 3)" class="collect-menu">
  135. <el-button class="filter-item" size="mini" type="success" @click="toRecover"><i class="iconfont icon-huifu" />恢复</el-button>
  136. <el-button class="filter-item" size="mini" type="success" @click="toCompletelyDelete"><i class="iconfont icon-shanchu" />彻底删除</el-button>
  137. </div>
  138. <!--新增 / 编辑 表单组件-->
  139. <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">
  140. <span class="dialog-right-top" />
  141. <span class="dialog-left-bottom" />
  142. <div class="setting-dialog">
  143. <!-- form @emitTableList="getTableList" -->
  144. <PreviewForm
  145. v-if="formPreviewData.length"
  146. ref="previewForm"
  147. :is-has-code="true"
  148. :is-disabled="false"
  149. :form-preview-data.sync="formPreviewData"
  150. :selected-category="selectedCategory"
  151. :arc-id="arcId"
  152. :is-des-form-type="isDesFormType"
  153. :is-title-type="isTitleType"
  154. :collect-level="collectLevel"
  155. :category-menu="categoryMenu"
  156. @close-dialog="closeDialog"
  157. />
  158. <div slot="footer" class="dialog-footer" style="margin-top: 85px !important;">
  159. <el-button type="primary" @click="handlerArchivesSubmit">保存</el-button>
  160. </div>
  161. </div>
  162. </el-dialog>
  163. <!--卷内移出 组件-->
  164. <el-dialog class="tip-dialog" title="提示" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="moveVisible">
  165. <div class="setting-dialog">
  166. <div class="tip-content">
  167. <p class="tipMsg">此移出将把会所选条目返还到未整理列表</p>
  168. <span>你是否还要继续?</span>
  169. </div>
  170. <div slot="footer" class="dialog-footer">
  171. <el-button type="text" @click="moveVisible = false">取消</el-button>
  172. <el-button type="primary" @click.native="handleMoveConfirm">确定</el-button>
  173. </div>
  174. </div>
  175. </el-dialog>
  176. <!-- 原文上传 -->
  177. <UploadOriginal ref="uploadOriginalRef" :selected-category="selectedCategory" :arc-id="arcId" @close-dialog="closeDialog" />
  178. <!-- 大文件上传 -->
  179. <BigUpload ref="uploadBigRef" :selected-category="selectedCategory" :arc-id="arcId" @close-dialog="closeDialog" />
  180. <!-- 批量导入 -->
  181. <BlukImport ref="blukImportRef" :selected-category="selectedCategory" :collect-level="collectLevel" :selections="selections" @close-dialog="closeDialog" />
  182. <!-- 批量修改 -->
  183. <BlukEditing ref="blukEditingRef" :selected-category="selectedCategory" :collect-level="collectLevel" :selections="selections" @close-dialog="closeDialog" />
  184. <!-- 档案调整 -->
  185. <!-- <FileNumberAdjustment ref="fileNumberAdjustmentRef" :selected-category="selectedCategory" :collect-level="collectLevel" /> -->
  186. <!-- 案卷/文件/卷内 顺序调整 -->
  187. <FileSeqAdjustment ref="fileSeqAdjustmentRef" :selected-category="selectedCategory" :collect-level="collectLevel" :selections="selections" @close-dialog="closeDialog" />
  188. <!-- 合卷 -->
  189. <CombineFile ref="combineFileRef" :selected-category="selectedCategory" :collect-level="collectLevel" :selections="selections" @close-dialog="closeDialog" />
  190. <!-- 插件 -->
  191. <InsertFile ref="insertFileRef" :selected-category="selectedCategory" :collect-level="collectLevel" :selections="selections" @close-dialog="closeDialog" />
  192. <!-- 移动 -->
  193. <CollectMoveFile ref="collectMoveFileRef" :selected-category="selectedCategory" :collect-level="collectLevel" :selections="selections" @close-dialog="closeDialog" />
  194. <!-- 打印 -->
  195. <Print ref="printRef" :selected-category="selectedCategory" :collect-level="collectLevel" :selections="selections" @close-dialog="closeDialog" />
  196. <!-- 四性检测 -->
  197. <FourTest ref="fourTestRef" :selected-category="selectedCategory" :collect-level="collectLevel" @close-dialog="closeDialog" />
  198. <!-- 快速组卷 -->
  199. <QuickPaper ref="quickPaperRef" :selected-category="selectedCategory" :arc-id="arcId" :collect-level="collectLevel" @close-dialog="closeDialog" />
  200. <!-- 归档 -->
  201. <ArchivesFilling ref="archivesFillingRef" :selected-category="selectedCategory" :collect-level="collectLevel" :selections="selections" @close-dialog="closeDialog" />
  202. <!-- 装盒 / 分卷装盒 -->
  203. <PackingBox ref="packingBox" :selected-category="selectedCategory" :selections="selections" :total-sum-all="totalSumAll" @close-dialog="closeDialog" />
  204. </div>
  205. <div style="display: flex; justify-content: space-between; height: 30px; line-height: 30px; padding: 0 20px; ">
  206. <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>
  207. <div v-if="isTitleType !== 2 && !isRecycle && isTitleType !== 6 && !(isTitleType === 3 && activeIndex === 1 && selectedCategory.arrangeType !== 1 )" class="mangement-fixed-top">
  208. <el-checkbox v-model="parentsData.fixedStatusBar" @change="statusBarChecked">隐藏状态栏</el-checkbox>
  209. </div>
  210. </div>
  211. </div>
  212. </template>
  213. <script>
  214. import CRUD, { crud } from '@crud/crud'
  215. import { collectionLibraryCrud } from '../mixins/index'
  216. import { FetchInitCategoryInputFieldByPid, FetchCategoryMenu } from '@/api/system/category/category'
  217. import { FetchDetailsById, collectDel, FetchRemoveArchivesSingle, FetchDeleteArchivesFile, FetchUpdateArchivesNo, FetchDisbandArchives, FetchReturnReDocument, FetchCompleteDelArchives, FetchRestoreArchives } from '@/api/collect/collect'
  218. import { FetchArchivesClassTree } from '@/api/system/archivesClass'
  219. import Treeselect from '@riophae/vue-treeselect'
  220. import '@riophae/vue-treeselect/dist/vue-treeselect.css'
  221. import PreviewForm from '@/views/components/category/PreviewForm'
  222. import UploadOriginal from './uploadOriginal/index'
  223. import BigUpload from './uploadOriginal/bigUpload'
  224. import BlukImport from './bulkImport/index'
  225. import BlukEditing from './blukEditing/index'
  226. import FileSeqAdjustment from './fileSeqAdjustment/index'
  227. import CombineFile from './combineFile/index'
  228. import InsertFile from './insertFile/index'
  229. import CollectMoveFile from './collectMoveFile/index'
  230. import Print from './print/index'
  231. import FourTest from './fourTest/index'
  232. import QuickPaper from './quickPaper/index'
  233. import PackingBox from './packingBox/index'
  234. import ArchivesFilling from './archivesFilling/index'
  235. import qs from 'qs'
  236. import { downloadFile, exportFile } from '@/utils/index'
  237. import { mapGetters } from 'vuex'
  238. export default {
  239. name: 'CollectHeader',
  240. components: { Treeselect, PreviewForm, UploadOriginal, BigUpload, BlukImport, BlukEditing, FileSeqAdjustment, CombineFile, InsertFile, CollectMoveFile, Print, FourTest, QuickPaper, PackingBox, ArchivesFilling },
  241. mixins: [collectionLibraryCrud, crud()],
  242. props: {
  243. selectedCategory: {
  244. type: Object,
  245. default: function() {
  246. return {}
  247. }
  248. },
  249. isTitleType: {
  250. type: Number,
  251. default: 2
  252. },
  253. selections: {
  254. type: Array,
  255. default: () => []
  256. },
  257. activeIndex: {
  258. type: Number,
  259. default: 0
  260. },
  261. isTabFile: {
  262. type: Boolean,
  263. default: false
  264. },
  265. isRecycle: {
  266. type: Boolean,
  267. default: false
  268. },
  269. test: {
  270. type: String,
  271. default: ''
  272. }
  273. },
  274. inject: ['parentsData'],
  275. data() {
  276. return {
  277. activeMenuIndex: '1',
  278. formVisible: false,
  279. formTitle: '项目',
  280. formPreviewData: [], // 预览界面data
  281. projectOptions: [],
  282. classifyOptions: [],
  283. moveVisible: false,
  284. recoverVisible: false,
  285. isDesFormType: 'arcives', // 区分是门类得还是档案得
  286. arcId: null,
  287. quickPaper: false,
  288. quickPaperArcId: [],
  289. totalSumAll: 0,
  290. categoryMenu: []
  291. }
  292. },
  293. computed: {
  294. ...mapGetters([
  295. 'baseApi'
  296. ]),
  297. collectTitle() {
  298. if (this.isTitleType === 2) {
  299. return '项目'
  300. } else if (this.isTitleType === 3) {
  301. if (this.selectedCategory.arrangeType === 1) {
  302. return '文件'
  303. } else {
  304. if (this.activeIndex === 1) {
  305. return '文件'
  306. } else {
  307. return '案卷'
  308. }
  309. }
  310. } else if (this.isTitleType === 4) {
  311. return '卷内'
  312. } else if (this.isTitleType === 6) {
  313. return '原文'
  314. }
  315. return ''
  316. },
  317. collectLevel() {
  318. if (this.isTitleType === 2) {
  319. return 1
  320. } else if (this.isTitleType === 3) {
  321. if (this.selectedCategory.arrangeType === 1) {
  322. return 3
  323. } else {
  324. if (this.activeIndex === 1) {
  325. if (this.quickPaper) {
  326. return 2
  327. } else {
  328. return 3
  329. }
  330. } else {
  331. return 2
  332. }
  333. }
  334. } else if (this.isTitleType === 4) {
  335. return 3
  336. } else if (this.isTitleType === 6) {
  337. return 4
  338. }
  339. return null
  340. },
  341. classType() {
  342. if (this.isTitleType === 2) {
  343. return ''
  344. } else if (this.isTitleType === 3) {
  345. if (this.selectedCategory.arrangeType === 1) {
  346. return 'is-juannei'
  347. } else {
  348. if (this.activeIndex === 1) {
  349. return 'is-juannei'
  350. } else {
  351. return 'is-anjuan'
  352. }
  353. }
  354. } else if (this.isTitleType === 4) {
  355. return 'is-juannei'
  356. } else if (this.isTitleType === 6) {
  357. return 'is-file'
  358. }
  359. return ''
  360. },
  361. placeholderType() {
  362. if (this.isTitleType === 2) {
  363. return '输入项目名称或编号'
  364. } else if (this.isTitleType === 3 || this.isTitleType === 4) {
  365. return '输入题名或档号'
  366. }
  367. return '输入项目名称或编号'
  368. },
  369. projectPlaceholder() {
  370. if (this.isTitleType === 2) {
  371. return '请选择项目分类'
  372. } else if (this.isTitleType === 3) {
  373. return '请选择项目阶段'
  374. }
  375. return '请选择项目分类'
  376. }
  377. },
  378. watch: {
  379. selectedCategory: function(newValue, oldValue) {
  380. if (newValue && newValue.id) {
  381. this.getInitArchivesClass()
  382. }
  383. },
  384. isTitleType: function(newValue, oldValue) {
  385. console.log('isTitleType', newValue)
  386. },
  387. activeIndex: function(newValue, oldValue) {
  388. if (newValue === 1) {
  389. this.parentsData.isTabFile = true
  390. } else {
  391. this.parentsData.isTabFile = false
  392. }
  393. }
  394. },
  395. created() {
  396. },
  397. mounted() {
  398. this.getInitArchivesClass()
  399. this.getCategoryDataTree()
  400. },
  401. methods: {
  402. getCategoryDataTree() {
  403. FetchCategoryMenu().then(res => {
  404. this.categoryMenu = res
  405. })
  406. },
  407. resetQuery() {
  408. this.query = {
  409. 'search': null,
  410. 'project_class': null,
  411. 'archive_ctg_no': null
  412. }
  413. this.handleSearch(this.collectLevel)
  414. },
  415. // 筛选 - 档案分类
  416. getInitArchivesClass() {
  417. this.classifyOptions = []
  418. this.query = {
  419. 'search': null,
  420. 'project_class': null,
  421. 'archive_ctg_no': null
  422. }
  423. const params = {
  424. 'categoryId': this.selectedCategory.id
  425. }
  426. FetchArchivesClassTree(params).then((res) => {
  427. this.classifyOptions = JSON.parse(JSON.stringify(res))
  428. }).catch(err => {
  429. console.log(err)
  430. })
  431. },
  432. normalizer(node) {
  433. if (node.childArchivesClass === null) {
  434. delete node.childArchivesClass
  435. }
  436. return {
  437. id: node.code,
  438. label: `${node.name} - ${node.code}`,
  439. children: node.childArchivesClass
  440. }
  441. },
  442. handleSelect(key, keyPath) {
  443. console.log(key, keyPath)
  444. },
  445. // 著录界面-form/详情-api
  446. handleForm(type, isPaper) {
  447. if (type === 'add') {
  448. if (this.parentsData.parentsProjectId && this.isTitleType === 3) {
  449. console.log('项目下的案卷')
  450. } else {
  451. if (this.parentsData.parentsAnjuanRow && this.parentsData.parentsAnjuanRow.collect_formal === 2) {
  452. this.$message({ message: '当前档案处于归档流程中,不可操作新增,请先确认!', offset: 8 })
  453. return false
  454. }
  455. }
  456. this.arcId = null
  457. if (isPaper) {
  458. this.quickPaper = true
  459. this.formTitle = '新增案卷'
  460. } else {
  461. this.formTitle = '新增' + this.collectTitle
  462. this.quickPaper = false
  463. }
  464. } else if (type === 'edit') {
  465. this.quickPaper = false
  466. if (this.selections.length === 0) {
  467. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  468. return false
  469. } else if (this.selections.length > 1) {
  470. this.$message({ message: '编辑操作只可勾选唯一目标条目,请先确认!', offset: 8 })
  471. return false
  472. } else if (this.selections[0].collect_formal === 2) {
  473. this.$message({ message: '当前所选的档案处于归档流程中,不可操作编辑,请先确认!', offset: 8 })
  474. return false
  475. }
  476. this.arcId = this.selections[0].id
  477. this.formTitle = '编辑' + this.collectTitle
  478. }
  479. // this.form.dictionaryConfigId = {}
  480. // this.formPreviewData = []
  481. // 档案预编辑获取字段
  482. this.formVisible = true
  483. this.$nextTick(() => {
  484. this.getFormInfo(type)
  485. })
  486. },
  487. getFormInfo(type) {
  488. if (type === 'edit') {
  489. const params = {
  490. 'categoryId': this.selectedCategory.id,
  491. 'categoryLevel': this.collectLevel,
  492. 'id': this.arcId
  493. }
  494. FetchDetailsById(params).then(data => {
  495. // const showFiledAll = data.showFiled.filter(item => item.isSequence).sort((a, b) => a.isSequence - b.isSequence)
  496. const showFiledAll = data.showFiled
  497. this.$nextTick(() => {
  498. this.formPreviewData = showFiledAll
  499. this.isDesFormType = 'arcives'
  500. this.$nextTick(() => {
  501. this.$refs.previewForm.archivesType = 'edit'
  502. this.$refs.previewForm.addOrUpdateForm = data.echo
  503. this.$refs.previewForm.FetchNoFormatField(this.selectedCategory.id)
  504. })
  505. })
  506. })
  507. } else {
  508. const params = {
  509. 'categoryId': this.selectedCategory.id,
  510. 'categoryLevel': this.collectLevel
  511. }
  512. FetchInitCategoryInputFieldByPid(params).then(data => {
  513. this.formPreviewData = data
  514. this.isDesFormType = 'arcives'
  515. this.$nextTick(() => {
  516. this.$refs.previewForm.archivesType = 'add'
  517. this.$refs.previewForm.activeIndex = this.activeIndex
  518. this.$refs.previewForm.FetchNoFormatField(this.selectedCategory.id)
  519. })
  520. })
  521. }
  522. },
  523. // form - submit
  524. handlerArchivesSubmit() {
  525. this.$refs.previewForm.submitForm('addOrUpdateForm', this.selectedCategory.id, this.quickPaperArcId)
  526. },
  527. // 关闭
  528. handleClose(done) {
  529. this.formVisible = false
  530. this.quickPaper = false
  531. done()
  532. },
  533. // 删除
  534. toDelete() {
  535. if (this.selections.length === 0) {
  536. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  537. return false
  538. }
  539. const isHasFillFormal = this.selections.some(item => item.collect_formal === 2)
  540. if (isHasFillFormal) {
  541. this.$message({ message: '您所选的条目有正在归档流程中,不可操作删除,请先确认!', offset: 8 })
  542. return false
  543. }
  544. if (this.collectLevel === 4) {
  545. if (this.parentsData.parentsAnjuanRow && this.parentsData.parentsAnjuanRow.collect_formal === 2) {
  546. this.$message({ message: '当前档案处于归档流程中,不可操作删除,请先确认!', offset: 8 })
  547. return false
  548. }
  549. }
  550. let messageTip
  551. if (this.activeIndex === 1) {
  552. messageTip = '此删除将把会所选条目与其子集彻底删除'
  553. } else {
  554. messageTip = '此删除将把会所选条目与其子集放入回收站'
  555. }
  556. this.$confirm(messageTip + '<span>你是否还要继续?</span>', '提示', {
  557. confirmButtonText: '继续',
  558. cancelButtonText: '取消',
  559. type: 'warning',
  560. dangerouslyUseHTMLString: true
  561. }).then(() => {
  562. if (this.activeIndex === 1) {
  563. const archivesIds = []
  564. this.selections.forEach(val => {
  565. archivesIds.push(val.id)
  566. })
  567. const params = {
  568. 'categoryId': this.selectedCategory.id,
  569. 'categoryLevel': this.collectLevel,
  570. 'archivesIds': archivesIds
  571. }
  572. FetchCompleteDelArchives(params).then((res) => {
  573. if (res.code !== 500) {
  574. this.$message({ message: res, type: 'success', offset: 8 })
  575. this.handleSearch(this.collectLevel)
  576. } else {
  577. this.$message({ message: '删除所选档案失败', type: 'error', offset: 8 })
  578. }
  579. }).catch(err => {
  580. console.log(err)
  581. })
  582. } else {
  583. this.handleDelConfirm()
  584. }
  585. }).catch(() => {
  586. })
  587. },
  588. // 卷内 - 移除
  589. toMove() {
  590. if (this.selections.length === 0) {
  591. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  592. return false
  593. }
  594. const isHasFillFormal = this.selections.some(item => item.collect_formal === 2)
  595. if (isHasFillFormal) {
  596. this.$message({ message: '您所选的条目有正在归档流程中,不可操作删除,请先确认!', offset: 8 })
  597. return false
  598. }
  599. this.moveVisible = true
  600. },
  601. // 删除 - 确认
  602. handleDelConfirm() {
  603. if (this.collectLevel === 4) {
  604. const params = this.selections.map((item) => {
  605. const json = {}
  606. json.archivesId = item.archive_id
  607. json.categoryId = this.selectedCategory.id
  608. json.documentFileId = item.document_file_id
  609. json.documentId = item.document_id
  610. json.id = item.id
  611. return json
  612. })
  613. FetchDeleteArchivesFile(params).then((res) => {
  614. if (res === 'SUCCESS') {
  615. this.$message({ message: '删除成功', type: 'success', offset: 8 })
  616. this.handleSearch(this.collectLevel)
  617. } else {
  618. this.$message({ message: '删除所选电子原文失败', type: 'error', offset: 8 })
  619. }
  620. }).catch(err => {
  621. console.log(err)
  622. })
  623. } else {
  624. const archivesIds = []
  625. this.selections.forEach(val => {
  626. archivesIds.push(val.id)
  627. })
  628. const params = {
  629. 'categoryId': this.selectedCategory.id,
  630. 'categoryLevel': this.collectLevel,
  631. 'archivesIds': archivesIds
  632. }
  633. collectDel(params).then((res) => {
  634. if (res.includes('成功')) {
  635. this.$message({ message: '删除成功', type: 'success', offset: 8 })
  636. this.handleSearch(this.collectLevel)
  637. } else {
  638. this.$message({ message: res, type: 'error', offset: 8 })
  639. }
  640. }).catch(err => {
  641. console.log(err)
  642. })
  643. }
  644. },
  645. // 卷内 - 移出 确认
  646. handleMoveConfirm() {
  647. const archivesIds = []
  648. this.selections.forEach(val => {
  649. archivesIds.push(val.id)
  650. })
  651. const params = {
  652. 'categoryId': this.selectedCategory.id,
  653. 'categoryLevel': this.collectLevel,
  654. 'archivesIds': archivesIds,
  655. 'parentsId': this.parentsData.parentsAnjuanId
  656. }
  657. FetchRemoveArchivesSingle(params).then((res) => {
  658. if (res === true) {
  659. this.$message({ message: '移出成功', type: 'success', offset: 8 })
  660. this.handleSearch(this.collectLevel)
  661. } else {
  662. this.$message({ message: '移出失败', type: 'error', offset: 8 })
  663. }
  664. this.moveVisible = false
  665. }).catch(err => {
  666. console.log(err)
  667. })
  668. },
  669. // 原文上传
  670. fileUpload(uploadType) {
  671. if (uploadType !== 2) {
  672. if (this.isTitleType !== 6) {
  673. if (this.selections.length === 0) {
  674. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  675. return false
  676. }
  677. if (this.selections.length > 1) {
  678. this.$message({ message: '上传操作只可勾选唯一目标条目,请先确认!', offset: 8 })
  679. return false
  680. }
  681. const isHasFillFormal = this.selections.some(item => item.collect_formal === 2)
  682. if (isHasFillFormal) {
  683. this.$message({ message: '您所选的条目有正在归档流程中,不可操作原文上传,请先确认!', offset: 8 })
  684. return false
  685. }
  686. this.arcId = this.selections[0].id
  687. } else {
  688. if (this.parentsData.parentsAnjuanRow && this.parentsData.parentsAnjuanRow.collect_formal === 2) {
  689. this.$message({ message: '当前档案处于归档流程中,不可操作原文上传,请先确认!', offset: 8 })
  690. return false
  691. }
  692. if (this.selectedCategory.arrangeType === 1) {
  693. this.arcId = this.parentsData.parentsAnjuanId
  694. } else {
  695. if (this.parentsData.isTabFile) {
  696. this.arcId = this.parentsData.parentsAnjuanId
  697. } else {
  698. this.arcId = this.parentsData.parentsJuanneiId
  699. }
  700. }
  701. }
  702. }
  703. if (uploadType === 0) {
  704. this.$refs.uploadOriginalRef.uploadTitle = '普通上传'
  705. this.$refs.uploadOriginalRef.uploadVisible = true
  706. } else if (uploadType === 1) {
  707. this.$refs.uploadBigRef.uploadBigVisible = true
  708. } else if (uploadType === 2) {
  709. this.$refs.uploadOriginalRef.uploadTitle = '原文目录上传'
  710. this.$refs.uploadOriginalRef.uploadVisible = true
  711. }
  712. if (this.$refs.uploadOriginalRef.uploadVisible) {
  713. this.$refs.uploadOriginalRef.uploadType = uploadType
  714. this.$refs.uploadOriginalRef.fileList = []
  715. }
  716. },
  717. // 批量导入
  718. handleBlukImport() {
  719. if (this.parentsData.parentsAnjuanRow && this.parentsData.parentsAnjuanRow.collect_formal === 2) {
  720. this.$message({ message: '当前档案处于归档流程中,不可操作批量导入,请先确认!', offset: 8 })
  721. return false
  722. }
  723. this.$refs.blukImportRef.bulkImportVisible = true
  724. },
  725. // 批量修改
  726. handleBlukEditing() {
  727. if (this.selections.length === 0) {
  728. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  729. return false
  730. }
  731. const isHasFillFormal = this.selections.some(item => item.collect_formal === 2)
  732. if (isHasFillFormal) {
  733. this.$message({ message: '您所选的条目有正在归档流程中,不可操作批量修改,请先确认!', offset: 8 })
  734. return false
  735. }
  736. this.$nextTick(() => {
  737. this.$refs.blukEditingRef.bulkEditingVisible = true
  738. })
  739. },
  740. // 案卷/文件/卷内顺序调整
  741. handleJnSeqAdjustment(type) {
  742. if (type === 'juannei') {
  743. if (this.selections.length === 0) {
  744. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  745. return false
  746. }
  747. if (this.selections.length > 1) {
  748. this.$message({ message: '卷内顺序调整操作只可勾选唯一目标条目,请先确认!', offset: 8 })
  749. return false
  750. }
  751. const isHasFillFormal = this.selections.some(item => item.collect_formal === 2)
  752. if (isHasFillFormal) {
  753. this.$message({ message: '您所选的条目有正在归档流程中,不可操作卷内顺序调整,请先确认!', offset: 8 })
  754. return false
  755. }
  756. this.$nextTick(() => {
  757. this.$refs.fileSeqAdjustmentRef.titleAdjustment = '卷内顺序调整'
  758. this.$refs.fileSeqAdjustmentRef.isJuannei = true
  759. })
  760. } else {
  761. if (this.selections.length < 2) {
  762. this.$message({ message: '请选择多个' + (type === 'file' ? '文件' : '案卷') + '后进行操作!', offset: 8 })
  763. return false
  764. }
  765. const isHasFillFormal = this.selections.some(item => item.collect_formal === 2)
  766. if (isHasFillFormal) {
  767. this.$message({ message: '您所选的条目有正在归档流程中,不可操作案卷/文件顺序调整,请先确认!', offset: 8 })
  768. return false
  769. }
  770. this.$nextTick(() => {
  771. if (type === 'anjuan') {
  772. this.$refs.fileSeqAdjustmentRef.titleAdjustment = '案卷顺序调整'
  773. } else {
  774. this.$refs.fileSeqAdjustmentRef.titleAdjustment = '文件顺序调整'
  775. }
  776. this.$refs.fileSeqAdjustmentRef.isJuannei = false
  777. })
  778. }
  779. this.$nextTick(() => {
  780. this.$refs.fileSeqAdjustmentRef.getDoArchivesAdjust()
  781. })
  782. },
  783. // 档号更新
  784. handleFileNumberUpdate(type) {
  785. if (this.selections.length === 0) {
  786. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  787. return false
  788. }
  789. const isHasFillFormal = this.selections.some(item => item.collect_formal === 2)
  790. if (isHasFillFormal) {
  791. this.$message({ message: '您所选的条目有正在归档流程中,不可操作档号更新,请先确认!', offset: 8 })
  792. return false
  793. }
  794. this.$confirm('此操作将会自动重新生成档号' + '<span>你是否还要继续?</span>', '提示', {
  795. confirmButtonText: '继续',
  796. cancelButtonText: '取消',
  797. type: 'warning',
  798. dangerouslyUseHTMLString: true
  799. }).then(() => {
  800. // updateType 更新类别 1.档号更新 2.卷内档号更新
  801. let updateType
  802. if (type === 0) {
  803. updateType = 1
  804. } else {
  805. updateType = 2
  806. }
  807. const archivesIds = []
  808. this.selections.forEach(val => {
  809. archivesIds.push(val.id)
  810. })
  811. const params = {
  812. 'categoryId': this.selectedCategory.id,
  813. 'categoryLevel': this.collectLevel,
  814. 'archivesIds': archivesIds,
  815. 'updateType': updateType
  816. }
  817. FetchUpdateArchivesNo(params).then((res) => {
  818. if (res.code !== 500) {
  819. this.$message({ message: '档号更新成功', type: 'success', offset: 8 })
  820. this.handleSearch(this.collectLevel)
  821. } else {
  822. this.$message({ message: res.message, type: 'error', offset: 8 })
  823. }
  824. }).catch(err => {
  825. console.log(err)
  826. })
  827. }).catch(() => {
  828. })
  829. },
  830. // 拆卷
  831. handleUncoil() {
  832. if (this.selections.length === 0) {
  833. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  834. return false
  835. }
  836. const isHasFillFormal = this.selections.some(item => item.collect_formal === 2)
  837. if (isHasFillFormal) {
  838. this.$message({ message: '您所选的条目有正在归档流程中,不可操作拆卷,请先确认!', offset: 8 })
  839. return false
  840. }
  841. this.$confirm('拆卷之后,对应的案卷数据将会自动删除' + '<span>你是否还要继续?</span>', '提示', {
  842. confirmButtonText: '继续',
  843. cancelButtonText: '取消',
  844. type: 'warning',
  845. dangerouslyUseHTMLString: true
  846. }).then(() => {
  847. const archivesIds = []
  848. this.selections.forEach(val => {
  849. archivesIds.push(val.id)
  850. })
  851. const params = {
  852. 'categoryId': this.selectedCategory.id,
  853. 'archivesIds': archivesIds
  854. }
  855. FetchDisbandArchives(params).then((res) => {
  856. if (res.code !== 500) {
  857. this.$message({ message: '拆卷成功', type: 'success', offset: 8 })
  858. this.handleSearch(this.collectLevel)
  859. } else {
  860. this.$message({ message: '拆卷失败', type: 'error', offset: 8 })
  861. }
  862. }).catch(err => {
  863. console.log(err)
  864. })
  865. }).catch(() => {
  866. })
  867. },
  868. // 合卷
  869. handleCombineFile() {
  870. if (this.selections.length < 2) {
  871. this.$message({ message: '合卷操作至少勾选2个案卷,请重试!', offset: 8 })
  872. return false
  873. }
  874. const isHasFillFormal = this.selections.some(item => item.collect_formal === 2)
  875. if (isHasFillFormal) {
  876. this.$message({ message: '您所选的条目有正在归档流程中,不可操作合卷,请先确认!', offset: 8 })
  877. return false
  878. }
  879. this.$refs.combineFileRef.getTargetList()
  880. },
  881. // 插件
  882. handleInsertFile() {
  883. if (this.collectLevel === 3) {
  884. if (this.selections.length === 0) {
  885. this.$confirm('您未勾选条目,否则直接选择所有条目' + '<span>你是否还要继续?</span>', '提示', {
  886. confirmButtonText: '继续',
  887. cancelButtonText: '取消',
  888. type: 'warning',
  889. dangerouslyUseHTMLString: true
  890. }).then(() => {
  891. this.$refs.insertFileRef.fileNoSelectionData = this.parentsData.$refs.anjuanEle.$refs.ajContent.$refs.tableList.anjuanData
  892. this.$refs.insertFileRef.getInsertViewTable()
  893. }).catch(() => {
  894. })
  895. } else {
  896. this.$refs.insertFileRef.getInsertViewTable()
  897. }
  898. } else {
  899. const isHasFillFormal = this.selections.some(item => item.collect_formal === 2)
  900. if (this.selections.length !== 1) {
  901. this.$message({ message: '插卷操作只可勾选唯一目标条目,请先确认!', offset: 8 })
  902. return false
  903. } else if (isHasFillFormal) {
  904. this.$message({ message: '您所选的条目有正在归档流程中,不可操作插件,请先确认!', offset: 8 })
  905. return false
  906. } else {
  907. this.$refs.insertFileRef.getInsertViewTable()
  908. }
  909. }
  910. },
  911. // 移动
  912. handleCollectMoveFile() {
  913. if (this.selections.length === 0) {
  914. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  915. return false
  916. }
  917. const isHasFillFormal = this.selections.some(item => item.collect_formal === 2)
  918. if (isHasFillFormal) {
  919. this.$message({ message: '您所选的条目有正在归档流程中,不可操作移动,请先确认!', offset: 8 })
  920. return false
  921. }
  922. this.$refs.collectMoveFileRef.collectMoveFileVisible = true
  923. },
  924. // 归档
  925. handleFiling() {
  926. if (this.selections.length === 0) {
  927. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  928. return false
  929. }
  930. const isHasFillFormal = this.selections.some(item => item.collect_formal === 2)
  931. if (isHasFillFormal) {
  932. this.$message({ message: '您所选的条目有正在归档流程中,勿重复操作,请先确认!!', offset: 8 })
  933. return false
  934. }
  935. this.$refs.archivesFillingRef.archivesFillingVisible = true
  936. },
  937. // 退回预归档库
  938. handleReturn() {
  939. if (this.selections.length === 0) {
  940. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  941. return false
  942. }
  943. const isHasFillFormal = this.selections.some(item => item.collect_formal === 2)
  944. if (isHasFillFormal) {
  945. this.$message({ message: '您所选的条目有正在归档流程中,不可操作退回预归档库,请先确认!!', offset: 8 })
  946. return false
  947. }
  948. this.$confirm('此操作将把会所选条目退回到预归档库' + '<span>你是否还要继续?</span>', '提示', {
  949. confirmButtonText: '继续',
  950. cancelButtonText: '取消',
  951. type: 'warning',
  952. dangerouslyUseHTMLString: true
  953. }).then(() => {
  954. const archivesIds = this.selections.map(item => item.id)
  955. const params = {
  956. 'categoryId': this.selectedCategory.id,
  957. 'archivesIds': archivesIds
  958. }
  959. FetchReturnReDocument(params).then((res) => {
  960. if (res.code !== 500) {
  961. if (res === 0) {
  962. this.crud.notify('', CRUD.NOTIFICATION_TYPE.INFO)
  963. this.$message({ message: '当前数据中不包含预归档数据,无法返回', offset: 8 })
  964. } else {
  965. this.$message({ message: '已成功返回' + res + '条来自预归档的数据', type: 'success', offset: 8 })
  966. }
  967. this.handleSearch(this.collectLevel)
  968. } else {
  969. this.$message({ message: res.message, type: 'error', offset: 8 })
  970. }
  971. }).catch(err => {
  972. console.log(err)
  973. })
  974. }).catch(() => {
  975. })
  976. },
  977. // 导出
  978. handleExport() {
  979. if (this.selections.length === 0) {
  980. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  981. return false
  982. }
  983. this.$confirm('此操作将导出所选数据' + '<span>你是否还要继续?</span>', '提示', {
  984. confirmButtonText: '继续',
  985. cancelButtonText: '取消',
  986. type: 'warning',
  987. dangerouslyUseHTMLString: true
  988. }).then(() => {
  989. const archivesIds = []
  990. this.selections.forEach(val => {
  991. archivesIds.push(val.id)
  992. })
  993. const params = {
  994. 'categoryId': this.selectedCategory.id,
  995. 'categoryLevel': this.collectLevel,
  996. 'archivesIds': archivesIds
  997. }
  998. exportFile(this.baseApi + '/api/collect/exportDate?' + qs.stringify(params, { indices: false }))
  999. }).catch(() => {
  1000. })
  1001. },
  1002. // 打印
  1003. handlePrint() {
  1004. if (this.selections.length === 0) {
  1005. this.$refs.printRef.form.printRange = '当页条目'
  1006. let currentTableData = []
  1007. if (this.collectLevel === 2) {
  1008. currentTableData = this.parentsData.$refs.anjuanEle.$refs.ajContent.$refs.tableList.anjuanData
  1009. } else if (this.collectLevel === 3) {
  1010. if (this.isTitleType === 3) {
  1011. currentTableData = this.parentsData.$refs.anjuanEle.$refs.ajContent.$refs.tableList.anjuanData
  1012. } else {
  1013. currentTableData = this.parentsData.$refs.juanneiEle.junneiData
  1014. }
  1015. }
  1016. this.$refs.printRef.currentTable = JSON.parse(JSON.stringify(currentTableData))
  1017. } else {
  1018. this.$refs.printRef.form.printRange = '勾选条目'
  1019. }
  1020. this.$refs.printRef.printVisible = true
  1021. },
  1022. // 四性检测
  1023. handleFourTest() {
  1024. if (this.selections.length === 0) {
  1025. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  1026. return false
  1027. }
  1028. const isHasFillFormal = this.selections.some(item => item.collect_formal === 2)
  1029. if (isHasFillFormal) {
  1030. this.$message({ message: '您所选的条目有正在归档流程中,不可操作四性检测,请先确认!', offset: 8 })
  1031. return false
  1032. }
  1033. this.$refs.fourTestRef.fourTestVisible = true
  1034. this.selections.forEach((item, index) => {
  1035. this.$set(this.selections[index], 'reportResult', {})
  1036. })
  1037. this.$refs.fourTestRef.tableData = this.selections
  1038. },
  1039. // 目录下载
  1040. handleCatalogDownload() {
  1041. if (this.selections.length === 0) {
  1042. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  1043. return false
  1044. }
  1045. this.$confirm('此操作将下载所选条目目录' + '<span>你是否还要继续?</span>', '提示', {
  1046. confirmButtonText: '继续',
  1047. cancelButtonText: '取消',
  1048. type: 'warning',
  1049. dangerouslyUseHTMLString: true
  1050. }).then(() => {
  1051. const archivesIds = []
  1052. this.selections.forEach(val => {
  1053. archivesIds.push(val.id)
  1054. })
  1055. const params = {
  1056. 'categoryId': this.selectedCategory.id,
  1057. 'categoryLevel': this.collectLevel,
  1058. 'archivesIds': archivesIds
  1059. }
  1060. exportFile(this.baseApi + '/api/collect/catalogDownload?' + qs.stringify(params, { indices: false }))
  1061. }).catch(() => {
  1062. })
  1063. },
  1064. // 快速组卷
  1065. handleQuickPaper() {
  1066. this.$refs.quickPaperRef.quickVisible = true
  1067. },
  1068. // 手工组卷
  1069. handlePaper() {
  1070. if (this.selections.length === 0) {
  1071. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  1072. return false
  1073. }
  1074. this.quickPaperArcId = this.selections.map(item => item.id)
  1075. this.handleForm('add', 1)
  1076. },
  1077. // 装盒 / 分卷装盒
  1078. handlePackingBox(type) {
  1079. if (this.selections.length === 0) {
  1080. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  1081. return false
  1082. }
  1083. const isHasFillFormal = this.selections.some(item => item.collect_formal === 2)
  1084. if (isHasFillFormal) {
  1085. this.$message({ message: '您所选的条目有正在归档流程中,不可操作装盒,请先确认!!', offset: 8 })
  1086. return false
  1087. }
  1088. if (this.selectedCategory.arrangeType === 2) {
  1089. if (type === 1) {
  1090. if (this.selections.length > 1) {
  1091. this.$message({ message: '只可勾选唯一目标条目,请先确认!', offset: 8 })
  1092. return false
  1093. }
  1094. }
  1095. if (this.selections[0].child === 0) {
  1096. this.$message({ message: '当前选中的档案无相关卷内文件,不可装盒!', type: 'error', offset: 8 })
  1097. return
  1098. }
  1099. }
  1100. if (this.selections[0].case_no) {
  1101. this.$message({ message: '当前档案已装盒,请勿重复操作!', type: 'error', offset: 8 })
  1102. return
  1103. }
  1104. // 后面与后端对接确定字段name
  1105. // const existsNotEmpty = this.selections.some(item => item.caseNum)
  1106. // if (existsNotEmpty) {
  1107. // this.$message('所选条目中存在已装盒档案,请勿重复操作!')
  1108. // return false
  1109. // }
  1110. this.$refs.packingBox.packingVisible = true
  1111. this.$refs.packingBox.isPackingOrPartType = type
  1112. this.$refs.packingBox.packFileCategory = this.parentsData.listCategory
  1113. if (type === 0) {
  1114. this.$refs.packingBox.packingTitle = '装盒'
  1115. } else {
  1116. this.$refs.packingBox.packingTitle = '分卷装盒'
  1117. this.$refs.packingBox.getViewTable()
  1118. }
  1119. this.getTotalSumAll()
  1120. },
  1121. getTotalSumAll() {
  1122. this.totalSumAll = 0
  1123. this.selections.map((item) => { if (!isNaN(item.child)) this.totalSumAll += item.child })
  1124. if (isNaN(this.totalSumAll)) {
  1125. return 0
  1126. }
  1127. return this.totalSumAll
  1128. },
  1129. // 原文内的附件下载
  1130. handleOriginalDownload() {
  1131. if (this.selections.length > 1 || this.selections.length === 0) {
  1132. this.$message({ message: '下载操作只可勾选唯一目标条目,请先确认!', offset: 8 })
  1133. return false
  1134. }
  1135. const url = this.baseApi + '/downloadFile' + this.selections[0].file_path
  1136. fetch(url).then(res => res.blob()).then(blob => {
  1137. downloadFile(blob, this.selections[0].file_name.split('.')[0], this.selections[0].file_type)
  1138. }).catch(() => {
  1139. this.$message({ message: '下载文件失败!', type: 'error', offset: 8 })
  1140. })
  1141. },
  1142. // 回收站 - 恢复
  1143. toRecover() {
  1144. if (this.selections.length === 0) {
  1145. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  1146. return false
  1147. }
  1148. this.$confirm('此恢复将会把所选条目及其子集一并恢复' + '<span>你是否还要继续?</span>', '提示', {
  1149. confirmButtonText: '继续',
  1150. cancelButtonText: '取消',
  1151. type: 'warning',
  1152. dangerouslyUseHTMLString: true
  1153. }).then(() => {
  1154. const archivesIds = []
  1155. this.selections.forEach(val => {
  1156. archivesIds.push(val.id)
  1157. })
  1158. const params = {
  1159. 'categoryId': this.selectedCategory.id,
  1160. 'categoryLevel': this.collectLevel,
  1161. 'archivesIds': archivesIds,
  1162. 'collectFormal': this.isTitleType === 2 ? 1 : null
  1163. }
  1164. FetchRestoreArchives(params).then((res) => {
  1165. if (res.code !== 500) {
  1166. if (res.includes('成功')) {
  1167. this.$message({ message: res, type: 'success', offset: 8 })
  1168. } else {
  1169. this.$message({ message: res, type: 'error', offset: 8 })
  1170. }
  1171. this.handleSearch(this.collectLevel)
  1172. } else {
  1173. this.$message({ message: '恢复所选档案失败', type: 'error', offset: 8 })
  1174. }
  1175. }).catch(err => {
  1176. console.log(err)
  1177. })
  1178. }).catch(() => {
  1179. })
  1180. },
  1181. // 回收站 - 彻底删除
  1182. toCompletelyDelete() {
  1183. if (this.selections.length === 0) {
  1184. this.$message({ message: '您还未勾选需要操作的条目,请先确认!', offset: 8 })
  1185. return false
  1186. }
  1187. this.$confirm('此删除将把会所选条目与其子集彻底删除' + '<span>你是否还要继续?</span>', '提示', {
  1188. confirmButtonText: '继续',
  1189. cancelButtonText: '取消',
  1190. type: 'warning',
  1191. dangerouslyUseHTMLString: true
  1192. }).then(() => {
  1193. const archivesIds = []
  1194. this.selections.forEach(val => {
  1195. archivesIds.push(val.id)
  1196. })
  1197. const params = {
  1198. 'categoryId': this.selectedCategory.id,
  1199. 'categoryLevel': this.collectLevel,
  1200. 'archivesIds': archivesIds
  1201. }
  1202. FetchCompleteDelArchives(params).then((res) => {
  1203. if (res.code !== 500) {
  1204. this.$message({ message: res, type: 'success', offset: 8 })
  1205. this.handleSearch(this.collectLevel)
  1206. } else {
  1207. this.$message({ message: '删除所选档案失败', type: 'error', offset: 8 })
  1208. }
  1209. }).catch(err => {
  1210. console.log(err)
  1211. })
  1212. }).catch(() => {
  1213. })
  1214. },
  1215. closeDialog(data) {
  1216. this.formVisible = false
  1217. this.quickPaper = false
  1218. setTimeout(() => {
  1219. this.handleSearch(this.collectLevel)
  1220. })
  1221. }
  1222. }
  1223. }
  1224. </script>
  1225. <style lang='scss' scoped>
  1226. ::v-deep .vue-treeselect__list-item{
  1227. width: 220px;
  1228. }
  1229. ::v-deep .vue-treeselect__menu {
  1230. padding: 20px 0;
  1231. }
  1232. ::v-deep .vue-treeselect__option--highlight{
  1233. background: #f5f9fc !important;
  1234. color: #0348f3 !important;
  1235. }
  1236. ::v-deep .vue-treeselect__option-arrow-container .vue-treeselect__option-arrow{
  1237. color: #1c1c1c !important;
  1238. }
  1239. ::v-deep .vue-treeselect__placeholder{
  1240. font-size: 14px;
  1241. }
  1242. ::v-deep .vue-treeselect__label-container{
  1243. font-size: 14px;
  1244. height: 34px;
  1245. line-height: 34px;
  1246. color: #1c1c1c;
  1247. }
  1248. ::v-deep .vue-treeselect__option.vue-treeselect__option--disabled{
  1249. .vue-treeselect__label-container{
  1250. color: #545b65 !important;
  1251. }
  1252. }
  1253. ::v-deep.vue-treeselect--has-value .vue-treeselect__single-value{
  1254. font-size: 14px;
  1255. }
  1256. </style>