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

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