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

719 lines
27 KiB

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
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
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. <template>
  2. <div>
  3. <div class="collect-header">
  4. <h4 :class="classType">{{ collectTitle }} </h4>
  5. <div class="collect-filter">
  6. <el-select
  7. v-if="isTitleType === 3 && selectedCategory.arrangeType !== 3"
  8. v-model="selectStatus"
  9. multiple
  10. collapse-tags
  11. style="margin-right: 10px; width: 160px;"
  12. placeholder="请选择"
  13. >
  14. <el-option
  15. v-for="item in statusOptions"
  16. :key="item.value"
  17. :label="item.label"
  18. :value="item.value"
  19. />
  20. </el-select>
  21. <treeselect
  22. v-if="selectedCategory.arrangeType === 3 && isTitleType !== 4 && isTitleType !== 6"
  23. v-model="query.project_class"
  24. :options="projectOptions"
  25. style="width: 160px;"
  26. flat
  27. :multiple="false"
  28. :normalizer="normalizerProject"
  29. placeholder="请选择"
  30. @input="handleSearch(collectLevel)"
  31. @select="handleSearch(collectLevel)"
  32. />
  33. <treeselect
  34. v-if="isTitleType !== 6"
  35. v-model="query.archive_ctg_no"
  36. :options="classifyOptions"
  37. style="width: 160px;"
  38. flat
  39. :multiple="false"
  40. :normalizer="normalizer"
  41. placeholder="请选择档案分类"
  42. @input="handleSearch(collectLevel)"
  43. @select="handleSearch(collectLevel)"
  44. />
  45. </div>
  46. <div v-if="isTitleType !== 6" class="head-search">
  47. <!-- 搜索 -->
  48. <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)" />
  49. <el-button class="filter-item filter-search" size="mini" type="success" icon="el-icon-search" @click="handleSearch(collectLevel)">搜索</el-button>
  50. <el-button class="filter-item filter-refresh" size="mini" type="warning" icon="el-icon-refresh-left" @click="resetQuery">重置</el-button>
  51. </div>
  52. <div v-if="!isRecycle" class="collect-menu">
  53. <el-menu
  54. :default-active="activeMenuIndex"
  55. mode="horizontal"
  56. @select="handleSelect"
  57. >
  58. <el-submenu v-if="isTitleType !== 6" index="1">
  59. <template slot="title">
  60. <i class="iconfont icon-changgui" />
  61. <span>常规</span>
  62. </template>
  63. <el-menu-item-group class="collect-submenu-group">
  64. <el-menu-item v-if="isTitleType !== 6" index="1-1" @click="handleForm('edit')">编辑</el-menu-item>
  65. </el-menu-item-group>
  66. </el-submenu>
  67. <el-submenu v-if="selectedCategory.isType === 2 && isTitleType !==4 && isTitleType !== 6" index="2">
  68. <template slot="title">
  69. <i class="iconfont icon-zhengli" />
  70. <span>整理</span>
  71. </template>
  72. <el-menu-item-group class="collect-submenu-group">
  73. <el-menu-item v-if="isTitleType === 3" index="2-1" @click="bindingTag(selections)">标签绑定</el-menu-item>
  74. <el-menu-item-group v-if="isTitleType === 3" class="collect-submenu-group submenu-tree">
  75. <template slot="title">档案装盒</template>
  76. <el-menu-item index="2-2" @click="handlePackingBox(0)">装盒</el-menu-item>
  77. <el-menu-item v-if="selectedCategory.arrangeType !== 1" index="2-3" @click="handlePackingBox(1)">分卷装盒</el-menu-item>
  78. </el-menu-item-group>
  79. <el-menu-item-group v-if="selectedCategory.isType === 2" class="collect-submenu-group submenu-tree">
  80. <template slot="title">档案移交</template>
  81. <el-menu-item index="2-4" @click="handleOnlineHandover">在线移交</el-menu-item>
  82. <el-menu-item index="2-5" @click="handleOffLineHandover">离线移交</el-menu-item>
  83. </el-menu-item-group>
  84. <!-- <el-menu-item v-if="selectedCategory.isType === 2" index="2-6" @click="handleExportZip">导出ZIP包</el-menu-item> -->
  85. <el-menu-item v-if="selectedCategory.arrangeType !== 3" index="2-7" @click="handleArcReturn">档案退回</el-menu-item>
  86. <el-menu-item v-if="isTitleType === 3 " index="2-8" @click="handleJD(0)">开放审核</el-menu-item>
  87. <el-menu-item v-if="isTitleType === 3 " index="2-9" @click="handleJD(1)">销毁鉴定</el-menu-item>
  88. </el-menu-item-group>
  89. </el-submenu>
  90. <el-submenu v-if="isTitleType !== 6" index="3">
  91. <template slot="title">
  92. <i class="iconfont icon-gengduo" />
  93. <span>更多</span>
  94. </template>
  95. <el-menu-item-group class="collect-submenu-group">
  96. <el-menu-item v-if="isTitleType !== 6" index="3-1" @click="handleExport">导出</el-menu-item>
  97. <el-menu-item v-if="isTitleType === 3" index="3-2" @click="handlePrint">打印</el-menu-item>
  98. <el-menu-item v-if="isTitleType === 6" index="3-3" @click="handleOriginalDownload">下载</el-menu-item>
  99. </el-menu-item-group>
  100. </el-submenu>
  101. </el-menu>
  102. </div>
  103. <div v-if="isRecycle && (isTitleType === 2 || (isTitleType === 3 && selectedCategory.arrangeType !== 3))" class="collect-menu">
  104. <el-button class="filter-item" size="mini" type="success" @click="toRecover"><i class="iconfont icon-huifu" />恢复</el-button>
  105. <el-button class="filter-item" size="mini" type="success" @click="toCompletelyDelete"><i class="iconfont icon-shanchu" />彻底删除</el-button>
  106. <el-button class="filter-item" size="mini" type="success" :disabled="selections.length === 0" @click="handleExport"><i class="iconfont icon-daochu" />导出</el-button>
  107. </div>
  108. <!--新增 / 编辑 表单组件-->
  109. <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">
  110. <span class="dialog-right-top" />
  111. <span class="dialog-left-bottom" />
  112. <div class="setting-dialog">
  113. <PreviewForm
  114. v-if="formPreviewData.length"
  115. ref="previewForm"
  116. :is-has-code="true"
  117. :is-disabled="false"
  118. :form-preview-data.sync="formPreviewData"
  119. :selected-category="selectedCategory"
  120. :arc-id="arcId"
  121. :is-des-form-type="isDesFormType"
  122. :is-title-type="isTitleType"
  123. :collect-level="collectLevel"
  124. @close-dialog="closeDialog"
  125. />
  126. <div slot="footer" class="dialog-footer">
  127. <el-button type="primary" @click="handlerArchivesSubmit">保存</el-button>
  128. </div>
  129. </div>
  130. </el-dialog>
  131. <!-- 绑定标签 -->
  132. <binding-tag-dlg ref="bindingTag" :binding-id="selections[0] && selections[0].id" :binding-type="1" binding-txt="档案" @close-dialog="closeDialog" />
  133. <!-- 装盒 / 分卷装盒 -->
  134. <PackingBox ref="packingBox" :selected-category="selectedCategory" :selections="selections" @close-dialog="closeDialog" />
  135. <!-- 在线移交 -->
  136. <OnlineHandover ref="onlineHandover" :selected-category="selectedCategory" :selections="selections" @close-dialog="closeDialog" />
  137. <!-- 离线移交 -->
  138. <OffLineHandover ref="offLineHandover" :selected-category="selectedCategory" :selections="selections" @close-dialog="closeDialog" />
  139. <!-- 导出zip -->
  140. <ExportZip ref="exportZip" :selected-category="selectedCategory" :selections="selections" @close-dialog="closeDialog" />
  141. <!-- 开放审核 / 销毁鉴定 -->
  142. <HandOverForm ref="formModule" :selected-category="selectedCategory" :selections="selections" @close-dialog="closeDialog" />
  143. <!-- 打印 -->
  144. <Print ref="printRef" :selected-category="selectedCategory" :collect-level="collectLevel" :selections="selections" @close-dialog="closeDialog" />
  145. </div>
  146. <div style="display: flex; justify-content: space-between; height: 30px; line-height: 30px; padding: 0 10px; ">
  147. <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>
  148. <div v-if="isTitleType !== 2 && !isRecycle && isTitleType !== 6" class="mangement-fixed-top">
  149. <el-checkbox v-model="parentsData.fixedStatusBar" @change="statusBarChecked">隐藏状态栏</el-checkbox>
  150. </div>
  151. </div>
  152. </div>
  153. </template>
  154. <script>
  155. import CRUD, { crud } from '@crud/crud'
  156. import { manageLibraryCrud } from '../mixins/index'
  157. import { FetchInitCategoryInputFieldByPid } from '@/api/system/category/category'
  158. import { FetchDetailsById, FetchCompleteDelArchives, FetchRestoreArchives } from '@/api/collect/collect'
  159. import { FetchArchivesClassTree } from '@/api/system/archivesClass'
  160. import { FetchDictionaryTree } from '@/api/system/dict'
  161. import Treeselect from '@riophae/vue-treeselect'
  162. import '@riophae/vue-treeselect/dist/vue-treeselect.css'
  163. import PreviewForm from '@/views/components/category/PreviewForm'
  164. import Print from './print/index'
  165. import BindingTagDlg from '@/views/components/BindingTagDlg'
  166. import PackingBox from './packingBox/index'
  167. import OnlineHandover from './onlineHandover/index'
  168. import OffLineHandover from './offLineHandover/index'
  169. import ExportZip from './exportZip/index'
  170. import HandOverForm from './handOverForm'
  171. import qs from 'qs'
  172. import { downloadFile, exportFile } from '@/utils/index'
  173. import { mapGetters } from 'vuex'
  174. export default {
  175. name: 'CollectHeader',
  176. components: { Treeselect, PreviewForm, BindingTagDlg, Print, PackingBox, OnlineHandover, OffLineHandover, ExportZip, HandOverForm },
  177. mixins: [manageLibraryCrud, crud()],
  178. props: {
  179. selectedCategory: {
  180. type: Object,
  181. default: function() {
  182. return {}
  183. }
  184. },
  185. isTitleType: {
  186. type: Number,
  187. default: 2
  188. },
  189. test: {
  190. type: String,
  191. default: function() {
  192. return ''
  193. }
  194. },
  195. isRecycle: {
  196. type: Boolean,
  197. default: false
  198. },
  199. selections: {
  200. type: Array,
  201. default: function() {
  202. return []
  203. }
  204. }
  205. },
  206. inject: ['parentsData'],
  207. data() {
  208. return {
  209. statusOptions: [
  210. {
  211. value: '未装盒',
  212. label: '未装盒'
  213. },
  214. {
  215. value: '已装盒',
  216. label: '已装盒'
  217. },
  218. {
  219. value: '未入库',
  220. label: '未入库'
  221. },
  222. {
  223. value: '已入库',
  224. label: '已入库'
  225. },
  226. {
  227. value: '无实体',
  228. label: '无实体'
  229. },
  230. {
  231. value: '有实体',
  232. label: '有实体'
  233. },
  234. {
  235. value: '实体在库',
  236. label: '实体在库'
  237. },
  238. {
  239. value: '实体待借',
  240. label: '实体待借'
  241. },
  242. {
  243. value: '实体已借',
  244. label: '实体已借'
  245. }
  246. ],
  247. selectStatus: null,
  248. activeMenuIndex: '1',
  249. formVisible: false,
  250. formTitle: '项目',
  251. formPreviewData: [], // 预览界面data
  252. projectOptions: [],
  253. classifyOptions: [],
  254. isDesFormType: 'manageArcives', // 区分是门类得还是档案得
  255. arcId: null
  256. }
  257. },
  258. computed: {
  259. ...mapGetters([
  260. 'baseApi'
  261. ]),
  262. collectTitle() {
  263. if (this.isTitleType === 2) {
  264. return '项目'
  265. } else if (this.isTitleType === 3) {
  266. if (this.selectedCategory.arrangeType === 1) {
  267. return '文件'
  268. } else {
  269. return '案卷'
  270. }
  271. } else if (this.isTitleType === 4) {
  272. return '卷内'
  273. } else if (this.isTitleType === 6) {
  274. return '原文'
  275. }
  276. return ''
  277. },
  278. collectLevel() {
  279. if (this.isTitleType === 2) {
  280. return 1
  281. } else if (this.isTitleType === 3) {
  282. if (this.selectedCategory.arrangeType === 1) {
  283. return 3
  284. } else {
  285. return 2
  286. }
  287. } else if (this.isTitleType === 4) {
  288. return 3
  289. } else if (this.isTitleType === 6) {
  290. return 4
  291. }
  292. return null
  293. },
  294. classType() {
  295. if (this.isTitleType === 2) {
  296. return ''
  297. } else if (this.isTitleType === 3) {
  298. return 'is-anjuan'
  299. } else if (this.isTitleType === 4) {
  300. return 'is-juannei'
  301. } else if (this.isTitleType === 6) {
  302. return 'is-file'
  303. }
  304. return ''
  305. },
  306. placeholderType() {
  307. if (this.isTitleType === 2) {
  308. return '输入项目名称或编号搜索'
  309. } else if (this.isTitleType === 3 || this.isTitleType === 4) {
  310. return '输入题名或档号搜索'
  311. }
  312. return '输入项目名称或编号搜索'
  313. }
  314. },
  315. created() {
  316. },
  317. mounted() {
  318. this.getInitArchivesClass()
  319. this.getDictsList()
  320. if (localStorage.getItem('statusBarFixedType') !== 'undefined') {
  321. this.parentsData.fixedStatusBar = JSON.parse(localStorage.getItem('statusBarFixedType')) === true
  322. }
  323. },
  324. methods: {
  325. resetQuery() {
  326. this.query = {
  327. 'search': null,
  328. 'project_class': null,
  329. 'archive_ctg_no': null
  330. }
  331. this.handleSearch(this.collectLevel)
  332. },
  333. // 筛选 - 档案分类
  334. getInitArchivesClass() {
  335. this.classifyOptions = []
  336. this.query = {
  337. 'search': null,
  338. 'project_class': null,
  339. 'archive_ctg_no': null
  340. }
  341. const params = {
  342. 'categoryId': this.selectedCategory.id
  343. }
  344. FetchArchivesClassTree(params).then((res) => {
  345. this.classifyOptions = JSON.parse(JSON.stringify(res))
  346. }).catch(err => {
  347. console.log(err)
  348. })
  349. },
  350. normalizer(node) {
  351. if (node.childArchivesClass === null) {
  352. delete node.childArchivesClass
  353. }
  354. return {
  355. id: node.code,
  356. label: node.name,
  357. children: node.childArchivesClass
  358. }
  359. },
  360. // 项目级别 - 阶段分类
  361. getDictsList() {
  362. this.projectOptions = []
  363. FetchDictionaryTree().then((res) => {
  364. const filterCodes = ['project_class']
  365. let filteredItems = JSON.parse(JSON.stringify(res)).filter(item => filterCodes.includes(item.dictionaryCode))
  366. filteredItems = this.addLevelToDictionaryList(filteredItems, 1)
  367. if (this.selectedCategory.arrangeType === 3 && this.isTitleType === 3) {
  368. this.projectOptions = filteredItems
  369. // console.log(this.projectOptions)
  370. } else {
  371. this.projectOptions = this.filterData(filteredItems, filteredItems[0].id)
  372. }
  373. }).catch(err => {
  374. console.log(err)
  375. })
  376. },
  377. // 显示第一级和第二级
  378. filterData(data, targetId) {
  379. return data.filter(item => {
  380. if (item.id === targetId || item.dictionaryParents === targetId) {
  381. if (item.childDictionarys && item.childDictionarys.length > 0) {
  382. item.childDictionarys = this.filterData(item.childDictionarys, targetId)
  383. }
  384. return true
  385. }
  386. return false
  387. })
  388. },
  389. // 给筛选出来的数据加level 方便后面是否可点击
  390. addLevelToDictionaryList(dictionaryList, level) {
  391. dictionaryList.forEach(dictionary => {
  392. dictionary.level = level
  393. if (dictionary.childDictionarys) {
  394. dictionary.childDictionarys = this.addLevelToDictionaryList(dictionary.childDictionarys, level + 1)
  395. }
  396. })
  397. return dictionaryList
  398. },
  399. normalizerProject(node) {
  400. if ((node.childDictionarys && !node.childDictionarys.length) || node.childDictionarys === null) {
  401. delete node.childDictionarys
  402. }
  403. return {
  404. id: node.dictionaryName,
  405. label: node.dictionaryName,
  406. children: node.childDictionarys,
  407. isDisabled: this.isTitleType === 3 ? node.level !== 3 : node.level === 1
  408. }
  409. },
  410. handleSelect(key, keyPath) {
  411. console.log(key, keyPath)
  412. },
  413. // 著录界面-form/详情-api
  414. handleForm(type) {
  415. if (type === 'add') {
  416. this.formTitle = '新增' + this.collectTitle
  417. this.arcId = null
  418. } else if (type === 'edit') {
  419. console.log(this.selections)
  420. if (this.selections.length === 0) {
  421. this.$message('您还未勾选需要操作的条目,请先确认!')
  422. return false
  423. } else if (this.selections.length > 1) {
  424. this.$message('编辑操作只可勾选唯一目标条目,请先确认!')
  425. return false
  426. }
  427. this.arcId = this.selections[0].id
  428. this.formTitle = '编辑' + this.collectTitle
  429. }
  430. // this.form.dictionaryConfigId = {}
  431. // this.formPreviewData = []
  432. // 档案预编辑获取字段
  433. this.formVisible = true
  434. this.$nextTick(() => {
  435. this.getFormInfo(type)
  436. })
  437. },
  438. getFormInfo(type) {
  439. if (type === 'edit') {
  440. const params = {
  441. 'categoryId': this.selectedCategory.id,
  442. 'categoryLevel': this.collectLevel,
  443. 'id': this.arcId
  444. }
  445. FetchDetailsById(params).then(data => {
  446. const showFiledAll = data.showFiled.filter(item => item.isSequence).sort((a, b) => a.isSequence - b.isSequence)
  447. this.$nextTick(() => {
  448. this.formPreviewData = showFiledAll
  449. this.isDesFormType = 'manageArcives'
  450. this.$nextTick(() => {
  451. this.$refs.previewForm.archivesType = 'edit'
  452. this.$refs.previewForm.addOrUpdateForm = data.echo
  453. this.$refs.previewForm.FetchNoFormatField(this.selectedCategory.id)
  454. })
  455. })
  456. })
  457. } else {
  458. const params = {
  459. 'categoryId': this.selectedCategory.id,
  460. 'categoryLevel': this.collectLevel
  461. }
  462. FetchInitCategoryInputFieldByPid(params).then(data => {
  463. this.formPreviewData = data
  464. this.isDesFormType = 'manageArcives'
  465. this.$nextTick(() => {
  466. this.$refs.previewForm.archivesType = 'add'
  467. this.$refs.previewForm.FetchNoFormatField(this.selectedCategory.id)
  468. })
  469. })
  470. }
  471. },
  472. // form - submit
  473. handlerArchivesSubmit() {
  474. this.$refs.previewForm.submitForm('addOrUpdateForm', this.selectedCategory.id,)
  475. },
  476. // 删除 - 关闭
  477. handleClose(done) {
  478. this.formVisible = false
  479. done()
  480. },
  481. // 绑定标签
  482. bindingTag(data) {
  483. if (this.selections.length === 0) {
  484. this.$message('您还未勾选需要操作的条目,请先确认!')
  485. return false
  486. }
  487. if (this.selections.length > 1) {
  488. this.$message('只可勾选唯一目标条目,请先确认!')
  489. return false
  490. }
  491. if (data[0].tid) {
  492. // this.$refs.bindingTag.isBinding = true
  493. this.$refs.bindingTag.tidCode = data[0].tid
  494. this.$confirm('当前标签已被绑定,是否覆盖' + '<span>你是否还要继续?</span>', '提示', {
  495. confirmButtonText: '继续',
  496. cancelButtonText: '取消',
  497. type: 'warning',
  498. dangerouslyUseHTMLString: true
  499. }).then(() => {
  500. this.$refs.bindingTag.bindingVisible = true
  501. this.$refs.bindingTag.opened()
  502. }).catch(() => {
  503. })
  504. } else {
  505. this.$refs.bindingTag.bindingVisible = true
  506. }
  507. },
  508. // 导出
  509. handleExport() {
  510. if (this.selections.length === 0) {
  511. this.$message('您还未勾选需要操作的条目,请先确认!')
  512. return false
  513. }
  514. this.$confirm('此操作将导出所选数据' + '<span>你是否还要继续?</span>', '提示', {
  515. confirmButtonText: '继续',
  516. cancelButtonText: '取消',
  517. type: 'warning',
  518. dangerouslyUseHTMLString: true
  519. }).then(() => {
  520. const archivesIds = []
  521. this.selections.forEach(val => {
  522. archivesIds.push(val.id)
  523. })
  524. const params = {
  525. 'categoryId': this.selectedCategory.id,
  526. 'categoryLevel': this.collectLevel,
  527. 'archivesIds': archivesIds
  528. }
  529. exportFile(this.baseApi + '/api/collect/exportDate?' + qs.stringify(params, { indices: false }))
  530. }).catch(() => {
  531. })
  532. },
  533. // 打印
  534. handlePrint() {
  535. if (this.selections.length === 0) {
  536. this.$refs.printRef.form.printRange = '当页条目'
  537. } else {
  538. this.$refs.printRef.form.printRange = '勾选条目'
  539. }
  540. this.$refs.printRef.printVisible = true
  541. },
  542. // 原文内的附件下载
  543. handleOriginalDownload() {
  544. if (this.selections.length > 1 || this.selections.length === 0) {
  545. this.$message('下载操作只可勾选唯一目标条目,请先确认!')
  546. return false
  547. }
  548. const url = this.baseApi + '/downloadFile' + this.selections[0].file_path
  549. fetch(url).then(res => res.blob()).then(blob => {
  550. downloadFile(blob, this.selections[0].file_name.split('.')[0], this.selections[0].file_type)
  551. }).catch(() => {
  552. this.$message.error('下载文件失败!')
  553. })
  554. },
  555. // 回收站 - 恢复
  556. toRecover() {
  557. if (this.selections.length === 0) {
  558. this.$message('您还未勾选需要操作的条目,请先确认!')
  559. return false
  560. }
  561. this.$confirm('此恢复将会把所选条目及其子集一并恢复' + '<span>你是否还要继续?</span>', '提示', {
  562. confirmButtonText: '继续',
  563. cancelButtonText: '取消',
  564. type: 'warning',
  565. dangerouslyUseHTMLString: true
  566. }).then(() => {
  567. const archivesIds = []
  568. this.selections.forEach(val => {
  569. archivesIds.push(val.id)
  570. })
  571. const params = {
  572. 'categoryId': this.selectedCategory.id,
  573. 'categoryLevel': this.collectLevel,
  574. 'archivesIds': archivesIds
  575. }
  576. FetchRestoreArchives(params).then((res) => {
  577. if (res.code !== 500) {
  578. console.log(res)
  579. this.crud.notify(res, CRUD.NOTIFICATION_TYPE.SUCCESS)
  580. this.handleSearch(this.collectLevel)
  581. } else {
  582. this.crud.notify('回复所选档案失败', CRUD.NOTIFICATION_TYPE.ERROR)
  583. }
  584. }).catch(err => {
  585. console.log(err)
  586. })
  587. }).catch(() => {
  588. })
  589. },
  590. // 回收站 - 彻底删除
  591. toCompletelyDelete() {
  592. if (this.selections.length === 0) {
  593. this.$message('您还未勾选需要操作的条目,请先确认!')
  594. return false
  595. }
  596. this.$confirm('此删除将把会所选条目与其子集彻底删除' + '<span>你是否还要继续?</span>', '提示', {
  597. confirmButtonText: '继续',
  598. cancelButtonText: '取消',
  599. type: 'warning',
  600. dangerouslyUseHTMLString: true
  601. }).then(() => {
  602. const archivesIds = []
  603. this.selections.forEach(val => {
  604. archivesIds.push(val.id)
  605. })
  606. const params = {
  607. 'categoryId': this.selectedCategory.id,
  608. 'categoryLevel': this.collectLevel,
  609. 'archivesIds': archivesIds
  610. }
  611. FetchCompleteDelArchives(params).then((res) => {
  612. if (res.code !== 500) {
  613. this.crud.notify(res, CRUD.NOTIFICATION_TYPE.SUCCESS)
  614. this.handleSearch(this.collectLevel)
  615. } else {
  616. this.crud.notify('删除所选档案失败', CRUD.NOTIFICATION_TYPE.ERROR)
  617. }
  618. }).catch(err => {
  619. console.log(err)
  620. })
  621. }).catch(() => {
  622. })
  623. },
  624. // 装盒 / 分卷装盒
  625. handlePackingBox(type) {
  626. if (this.selections.length === 0) {
  627. this.$message('您还未勾选需要操作的条目,请先确认!')
  628. return false
  629. }
  630. // 后面与后端对接确定字段name
  631. // const existsNotEmpty = this.selections.some(item => item.caseNum)
  632. // if (existsNotEmpty) {
  633. // this.$message('所选条目中存在已装盒档案,请勿重复操作!')
  634. // return false
  635. // }
  636. this.$refs.packingBox.packingVisible = true
  637. this.$refs.packingBox.isPackingOrPartType = type
  638. if (type === 0) {
  639. this.$refs.packingBox.packingTitle = '装盒'
  640. } else {
  641. this.$refs.packingBox.packingTitle = '分卷装盒'
  642. }
  643. },
  644. // 在线移交
  645. handleOnlineHandover() {
  646. if (this.selections.length === 0) {
  647. this.$message('您还未勾选需要操作的条目,请先确认!')
  648. return false
  649. }
  650. this.$refs.onlineHandover.onlineHandoverVisible = true
  651. },
  652. // 离线移交
  653. handleOffLineHandover() {
  654. if (this.selections.length === 0) {
  655. this.$message('您还未勾选需要操作的条目,请先确认!')
  656. return false
  657. }
  658. this.$refs.offLineHandover.offLineHandoverVisible = true
  659. },
  660. // 导出zip包
  661. handleExportZip() {
  662. if (this.selections.length === 0) {
  663. this.$message('您还未勾选需要操作的条目,请先确认!')
  664. return false
  665. }
  666. this.$refs.exportZip.exportZipVisible = true
  667. },
  668. // 档案退回
  669. handleArcReturn() {
  670. if (this.selections.length === 0) {
  671. this.$message('您还未勾选需要操作的条目,请先确认!')
  672. return false
  673. }
  674. this.$confirm('此移出将把会所选条目退回到收集库' + '<span>你是否还要继续?</span>', '提示', {
  675. confirmButtonText: '继续',
  676. cancelButtonText: '取消',
  677. type: 'warning',
  678. dangerouslyUseHTMLString: true
  679. }).then(() => {
  680. console.log('subimit')
  681. }).catch(() => {
  682. })
  683. },
  684. // 开放审核 / 销毁鉴定
  685. handleJD(type) {
  686. if (type === 0) {
  687. this.$refs.formModule.overDetialTitle = '开放审核-流程'
  688. } else {
  689. this.$refs.formModule.overDetialTitle = '销毁鉴定-流程'
  690. }
  691. this.$refs.formModule.overDetialVisible = true
  692. },
  693. closeDialog(data) {
  694. this.formVisible = false
  695. setTimeout(() => {
  696. this.handleSearch(this.collectLevel)
  697. })
  698. }
  699. }
  700. }
  701. </script>
  702. <style lang='scss' scoped>
  703. .collect-header{
  704. border-top: none !important;
  705. padding: 20px 0 0 0 !important;
  706. }
  707. .manage-fixed-style{
  708. margin-bottom: 30px;
  709. }
  710. </style>