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

664 lines
23 KiB

2 years ago
2 years ago
1 year ago
1 year 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
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
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
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
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
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
  1. <template>
  2. <div class="app-container archives-container">
  3. <div class="container-main" style="justify-content: flex-start;">
  4. <div class="elect-cont-left">
  5. <div class="container-left">
  6. <span class="right-top-line" />
  7. <span class="left-bottom-line" />
  8. <div class="arc-left-tree">
  9. <h3 class="arc-title arc-title-top">档案门类</h3>
  10. <div class="tree-scroll">
  11. <el-tree ref="categroyTree" v-loading="crud.loading" class="arc-tree arc-tree-01" :data="crud.data" :props="defaultProps" node-key="id" :expand-on-click-node="false" highlight-current @node-click="handleNodeClick">
  12. <span slot-scope="{ node, data }" class="custom-tree-node">
  13. <el-tooltip :content="node.label" placement="top" :enterable="false" effect="dark">
  14. <span v-if="data.isType === 1 " class="iconFolder">
  15. {{ data.cnName }}
  16. </span>
  17. </el-tooltip>
  18. <el-tooltip :content="node.label" placement="top" :enterable="false" effect="dark">
  19. <span v-if="data.isType === 2" class="iconArch">
  20. {{ data.cnName }}
  21. </span>
  22. </el-tooltip>
  23. <el-tooltip :content="node.label" placement="top" :enterable="false" effect="dark">
  24. <span v-if="data.isType === 3" class="iconFile">
  25. {{ data.cnName }}
  26. </span>
  27. </el-tooltip>
  28. </span>
  29. </el-tree>
  30. </div>
  31. <h3 class="arc-title arc-title-bottom">快速筛选</h3>
  32. <el-tree
  33. ref="classifyTree"
  34. v-loading="classifyLoading"
  35. class="arc-tree arc-tree-02"
  36. :data="classifyTree"
  37. :props="defaultClassifyProps"
  38. node-key="id"
  39. :expand-on-click-node="false"
  40. highlight-current
  41. show-checkbox
  42. @check="handleCheckChange"
  43. >
  44. <span slot-scope="{ node, data }" class="custom-tree-node">
  45. <span v-if="data.childDictionarys || data.fondsName" class="iconClassify">
  46. {{ data.dictionaryName || data.fondsName }}
  47. </span>
  48. <span v-else class="iconClassify-child">
  49. {{ data.dictionaryName }}
  50. </span>
  51. </span>
  52. </el-tree>
  53. </div>
  54. </div>
  55. </div>
  56. <!--用户数据-->
  57. <div v-if="selectedCategory.isType !== 1" class="elect-cont-right">
  58. <div class="container-right tab-content">
  59. <span class="right-top-line" />
  60. <span class="left-bottom-line" />
  61. <Project v-if="selectedCategory.arrangeType === 3" ref="projectEle" :selected-category="selectedCategory" :data="sharedData" :is-recycle="isRecycle" :smart-query="smartQuery" @openAnjuan="handleOpenAnjuan" @myYearEvent="handleYearData" />
  62. <Anjuan v-if="selectedCategory.arrangeType === 1 || selectedCategory.arrangeType === 2 || selectedCategory.arrangeType === 3" ref="anjuanEle" :selected-category="selectedCategory" :data="sharedData" :is-recycle="isRecycle" :smart-query="smartQuery" @openJuannei="handleOpenJuannei" @myYearEvent="handleYearData" />
  63. <Juannei v-if="selectedCategory.arrangeType === 2 || selectedCategory.arrangeType === 3" ref="juanneiEle" :data="sharedData" :selected-category="selectedCategory" :is-recycle="isRecycle" :smart-query="smartQuery" @openFile="handleOpenFile" />
  64. <File v-if="selectedCategory.arrangeType === 1 || selectedCategory.arrangeType === 2 || selectedCategory.arrangeType === 3" ref="fileEle" :is-recycle="isRecycle" :selected-category="selectedCategory" :smart-query="smartQuery" />
  65. </div>
  66. </div>
  67. </div>
  68. </div>
  69. </template>
  70. <script>
  71. import crudCategory from '@/api/category/category'
  72. import crudRoles from '@/api/system/role'
  73. import { FetchInitSearchFonds } from '@/api/archiveUtilize/archiveUtilize'
  74. import { collectionLibraryCrud } from './mixins/index.js'
  75. import { FetchDictionaryTreeByCategoryId } from '@/api/system/dict'
  76. import CRUD, { presenter, header } from '@crud/crud'
  77. import Project from './project/index'
  78. import Anjuan from './anjuan/index'
  79. import Juannei from './juannei/index'
  80. import File from './file/index'
  81. import { mapGetters } from 'vuex'
  82. export default {
  83. name: 'CollectionLibrary',
  84. components: { Project, Anjuan, Juannei, File },
  85. cruds() {
  86. return [
  87. CRUD({
  88. title: '收集库', url: 'api/category/menu',
  89. crudMethod: { ...crudCategory },
  90. optShow: {
  91. add: false,
  92. edit: false,
  93. del: false,
  94. download: false,
  95. group: false
  96. }
  97. })
  98. ]
  99. },
  100. mixins: [presenter(), header(), collectionLibraryCrud],
  101. props: {
  102. isRecycle: {
  103. type: Boolean,
  104. default: false
  105. },
  106. isdel: {
  107. type: Boolean,
  108. default: false
  109. }
  110. },
  111. provide() {
  112. return {
  113. parentsData: this
  114. }
  115. },
  116. data() {
  117. return {
  118. defaultProps: {
  119. children: 'children',
  120. label: 'cnName'
  121. },
  122. defaultClassifyProps: {
  123. children: 'childDictionarys' || null,
  124. label: 'dictionaryName' || 'fondsName'
  125. },
  126. defaultFondsProps: {
  127. children: 'children',
  128. label: 'fondsName'
  129. },
  130. sharedData: '',
  131. selectedCategory: {},
  132. yearChildData: '',
  133. parentsAnjuanRow: null,
  134. parentsProjectRow: null,
  135. parentsProjectId: null,
  136. parentsAnjuanId: null,
  137. parentsJuanneiId: null,
  138. smartQuery: {
  139. 'retention': null, // 保管期限
  140. 'security_class': null, // 密级
  141. 'doc_type': null, // 文种
  142. 'medium_type': null, // 载体类型
  143. 'archive_year': null, // 年度
  144. 'organ_or_function': null, // 机构与类型
  145. 'fonds_no': null // 全宗
  146. },
  147. isTabFile: false,
  148. fixedStatusBar: false
  149. }
  150. },
  151. computed: {
  152. ...mapGetters([
  153. 'user'
  154. ])
  155. },
  156. watch: {
  157. isdel: function(newValue, oldValue) {
  158. },
  159. isRecycle: function(newValue, oldValue) {
  160. }
  161. },
  162. created() {
  163. },
  164. mounted() {
  165. },
  166. methods: {
  167. handleYearData(data) {
  168. this.yearChildData = data
  169. this.classifyLoading = true
  170. setTimeout(() => {
  171. if (this.classifyTree.length !== 0 && this.classifyTree[0].dictionaryName === '年度') {
  172. this.classifyTree = this.classifyTree.slice(1)
  173. }
  174. if (this.yearChildData.length !== 0) {
  175. const newYearArr = this.yearChildData.map((item, index) => {
  176. const json = {}
  177. json.id = item
  178. json.dictionaryName = item
  179. json.dictionaryParents = '-1'
  180. json.childDictionarys = []
  181. return json
  182. })
  183. this.classifyTree.unshift({ id: -1, dictionaryName: '年度', dictionaryCode: 'archive_year', childDictionarys: newYearArr })
  184. }
  185. this.classifyLoading = false
  186. }, 500)
  187. },
  188. filterData(data) {
  189. return data.filter(node => {
  190. if (node.children && node.children.length > 0) {
  191. node.children = this.filterData(node.children) // 递归处理子节点
  192. }
  193. return node.isType !== 3 // 过滤掉isType为3的节点
  194. })
  195. },
  196. // 逆归实现 获取指定元素
  197. findNode(tree, func) {
  198. for (const node of tree) {
  199. if (func(node)) return node
  200. if (node.children) {
  201. const res = this.findNode(node.children, func)
  202. if (res) return res
  203. }
  204. }
  205. return null
  206. },
  207. // 展开选中的父级
  208. expandParents(node) {
  209. node.expanded = true
  210. if (node.parent) {
  211. this.expandParents(node.parent)
  212. }
  213. },
  214. [CRUD.HOOK.afterRefresh]() {
  215. this.crud.data = this.filterData(this.crud.data)
  216. this.$nextTick(() => {
  217. let currentKey
  218. if (localStorage.getItem('currentArchivesKey')) {
  219. currentKey = JSON.parse(localStorage.getItem('currentArchivesKey'))
  220. // 删除门类节点后
  221. if (this.$refs.categroyTree.getCurrentKey(currentKey.id) == null) {
  222. localStorage.removeItem('currentArchivesKey')
  223. }
  224. // 缓存的门类节点判断
  225. if (currentKey.isType === 1) {
  226. if (currentKey.children.length !== 0) {
  227. currentKey = this.findNode(currentKey.children, (node) => {
  228. return node.isType !== 1
  229. })
  230. }
  231. }
  232. } else {
  233. // 默认
  234. if (this.crud.data[0].isType === 1) {
  235. currentKey = this.findNode(this.crud.data[0].children, (node) => {
  236. return node.isType !== 1
  237. })
  238. } else {
  239. currentKey = this.crud.data[0]
  240. }
  241. }
  242. if (currentKey.id) {
  243. // 设置某个节点的当前选中状态
  244. this.$refs.categroyTree.setCurrentKey(currentKey.id)
  245. this.$nextTick(() => {
  246. // 设置某个节点的父级展开
  247. const selectedKey = this.$refs.categroyTree.getCurrentNode()
  248. if (this.$refs.categroyTree.getNode(selectedKey) && this.$refs.categroyTree.getNode(selectedKey).parent) {
  249. this.expandParents(this.$refs.categroyTree.getNode(selectedKey).parent)
  250. }
  251. // 选中节点的门类详情
  252. this.handleNodeClick(selectedKey)
  253. })
  254. }
  255. })
  256. },
  257. handleNodeClick(val) {
  258. // this.smartQuery = {
  259. // 'retention': null, // 保管期限
  260. // 'security_class': null, // 密级
  261. // 'doc_type': null, // 文种
  262. // 'medium_type': null, // 载体类型
  263. // 'archive_year': null, // 年度
  264. // 'organ_or_function': null, // 机构与类型
  265. // 'fonds_no': null // 全宗
  266. // }
  267. this.parentsProjectId = null
  268. this.parentsAnjuanId = null
  269. this.parentsJuanneiId = null
  270. this.parentsAnjuanRow = null
  271. this.parentsProjectRow = null
  272. // 缓存当前的选中的
  273. localStorage.setItem('currentArchivesKey', JSON.stringify(val))
  274. this.selectedCategory = val
  275. if (this.selectedCategory.isType !== 1) {
  276. this.getDictionaryTreeByCategoryId(val.id)
  277. } else {
  278. this.classifyTree = []
  279. }
  280. this.$nextTick(() => {
  281. this.getDictsList()
  282. FetchInitSearchFonds().then(res => {
  283. const allFondsIds = res.map(item => item.fondsId)
  284. this.$refs.classifyTree.setCheckedKeys(allFondsIds)
  285. this.smartQuery.fonds_no = res.map(item => item.fondsNo).join(',')
  286. })
  287. this.handlePageList()
  288. // Promise.all(this.user.roles.map(item => this.getRole(item.id)))
  289. // .then(roles => {
  290. // const allFondsIds = []
  291. // const fondsObj = {}
  292. // console.log(roles)
  293. // roles.forEach(role => {
  294. // role.fonds.forEach(fond => {
  295. // if (!fondsObj[fond.id]) {
  296. // fondsObj[fond.id] = fond
  297. // allFondsIds.push(fond.id)
  298. // }
  299. // })
  300. // })
  301. // console.log(allFondsIds)
  302. // this.$refs.classifyTree.setCheckedKeys(allFondsIds)
  303. // if (allFondsIds.length !== 0) {
  304. // const defaultChecked = this.$refs.classifyTree.getCheckedNodes()
  305. // const fondsGroup = defaultChecked.filter(item => item.fondsId).map(item => item.fondsNo)
  306. // this.smartQuery.fonds_no = fondsGroup.join(',')
  307. // } else {
  308. // // this.smartQuery.fonds_no = null
  309. // FetchInitSearchFonds().then(res => {
  310. // this.smartQuery.fonds_no = res.map(item => item.fondsNo).join(',')
  311. // })
  312. // }
  313. // this.handlePageList()
  314. // })
  315. // .catch(error => {
  316. // console.error(error)
  317. // })
  318. })
  319. },
  320. handlePageList(isQuickFilter) {
  321. if (this.selectedCategory.arrangeType === 3) {
  322. const tablistEle = this.$refs.projectEle
  323. // 项目下
  324. if (isQuickFilter) {
  325. tablistEle.$refs.collectHeaderRef.getInitArchivesClass()
  326. tablistEle.getTableDisplayFieldsLoading = true
  327. tablistEle.getViewTableList(1, null, isQuickFilter)
  328. } else {
  329. this.$refs.projectEle.getCommonData(1)
  330. }
  331. } else if (this.selectedCategory.arrangeType === 2) {
  332. const tablistEle = this.$refs.anjuanEle.$refs.ajContent.$refs.tableList
  333. // 案卷下
  334. if (isQuickFilter) {
  335. tablistEle.$refs.collectHeaderRef.getInitArchivesClass()
  336. tablistEle.getTableDisplayFieldsLoading = true
  337. tablistEle.getViewTableList(2, null, isQuickFilter)
  338. } else {
  339. tablistEle.getCommonData(2)
  340. }
  341. } else if (this.selectedCategory.arrangeType === 1) {
  342. const tablistEle = this.$refs.anjuanEle.$refs.ajContent.$refs.tableList
  343. // 文件下
  344. if (isQuickFilter) {
  345. tablistEle.$refs.collectHeaderRef.getInitArchivesClass()
  346. tablistEle.getTableDisplayFieldsLoading = true
  347. tablistEle.getViewTableList(3, null, isQuickFilter)
  348. } else {
  349. tablistEle.getCommonData(3)
  350. }
  351. }
  352. if (this.$refs.anjuanEle) {
  353. this.$refs.anjuanEle.anjuanDrawer = false
  354. if (this.$refs.anjuanEle.$refs.ajContent) {
  355. this.$refs.anjuanEle.$refs.ajContent.activeIndex = 0
  356. }
  357. }
  358. if (this.$refs.juanneiEle) {
  359. this.$refs.juanneiEle.juanneiDrawer = false
  360. }
  361. if (this.$refs.fileEle) {
  362. this.$refs.fileEle.fileDrawer = false
  363. }
  364. },
  365. getRole(id) {
  366. return crudRoles.get(id)
  367. },
  368. getDictionaryTreeByCategoryId(categoryId) {
  369. this.classifyLoading = true
  370. const params = {
  371. 'categoryId': categoryId
  372. }
  373. FetchDictionaryTreeByCategoryId(params).then((res) => {
  374. let fonds
  375. if (res.fonds.length <= 1) {
  376. fonds = []
  377. } else {
  378. const parent = {}
  379. parent.id = 0
  380. parent.fondsName = '全宗'
  381. parent.childDictionarys = res.fonds.map(item => {
  382. return {
  383. ...item,
  384. id: item.fondsId
  385. }
  386. })
  387. fonds = parent
  388. }
  389. if (res.dictionarys.length === 0) {
  390. this.classifyTree = []
  391. if (fonds.length !== 0) {
  392. this.classifyTree.push(fonds)
  393. }
  394. } else {
  395. this.classifyTree = res.dictionarys.concat(fonds)
  396. }
  397. this.classifyLoading = false
  398. }).catch(err => {
  399. console.log(err)
  400. })
  401. },
  402. getIdByCode(dictionaryCode) {
  403. for (const dictionary of this.classifyTree) {
  404. if (dictionary.dictionaryCode === dictionaryCode) {
  405. return dictionary.id
  406. }
  407. }
  408. return null
  409. },
  410. handleCheckChange(data, checked, indeterminate) {
  411. // 获取所有选中的节点
  412. const res = this.$refs.classifyTree.getCheckedNodes()
  413. // const isFondsTop = res.some(obj => obj.fondsName === '全宗')
  414. // if (isFondsTop) {
  415. // this.smartQuery.fonds_no = null
  416. const fondsGroup = res.filter(item => item.fondsId).map(item => item.fondsNo)
  417. if (fondsGroup.length === 0) {
  418. FetchInitSearchFonds().then(res => {
  419. this.smartQuery.fonds_no = res.map(item => item.fondsNo).join(',')
  420. this.$nextTick(() => {
  421. this.handlePageList('quickFilter')
  422. })
  423. })
  424. } else {
  425. this.smartQuery.fonds_no = fondsGroup.join(',')
  426. }
  427. // }
  428. const groupedData = {}
  429. const securityId = this.getIdByCode('security_class')
  430. const retentionId = this.getIdByCode('retention')
  431. const docTypeId = this.getIdByCode('doc_type')
  432. const mediumTypeId = this.getIdByCode('medium_type')
  433. const organOrFunctionId = this.getIdByCode('organ_or_function')
  434. res.forEach(function(item) {
  435. if (item.dictionaryParents === '-1') {
  436. groupedData.archive_year = groupedData.archive_year || []
  437. groupedData.archive_year.push(item.dictionaryName)
  438. } else if (item.dictionaryParents === securityId) {
  439. groupedData.security_class = groupedData.security_class || []
  440. groupedData.security_class.push(item.dictionaryName)
  441. } else if (item.dictionaryParents === retentionId) {
  442. groupedData.retention = groupedData.retention || []
  443. groupedData.retention.push(item.dictionaryName)
  444. } else if (item.dictionaryParents === docTypeId) {
  445. groupedData.doc_type = groupedData.doc_type || []
  446. groupedData.doc_type.push(item.dictionaryName)
  447. } else if (item.dictionaryParents === mediumTypeId) {
  448. groupedData.medium_type = groupedData.medium_type || []
  449. groupedData.medium_type.push(item.dictionaryName)
  450. } else if (item.dictionaryParents === organOrFunctionId) {
  451. groupedData.organ_or_function = groupedData.organ_or_function || []
  452. groupedData.organ_or_function.push(item.dictionaryName)
  453. }
  454. })
  455. if (data.id) {
  456. const selectedParentVal = this.$refs.classifyTree.getNode(data.id).parent.data.dictionaryCode
  457. switch (selectedParentVal) {
  458. case 'security_class':
  459. if (res.find(obj => obj.dictionaryCode === 'security_class')) {
  460. this.smartQuery.security_class = null
  461. } else {
  462. if (groupedData.security_class) {
  463. this.smartQuery.security_class = groupedData.security_class.join(',')
  464. } else {
  465. this.smartQuery.security_class = null
  466. }
  467. }
  468. break
  469. case 'retention':
  470. if (res.find(obj => obj.dictionaryCode === 'retention')) {
  471. this.smartQuery.retention = null
  472. } else {
  473. if (groupedData.retention) {
  474. this.smartQuery.retention = groupedData.retention.join(',')
  475. } else {
  476. this.smartQuery.retention = null
  477. }
  478. }
  479. break
  480. case 'doc_type':
  481. if (res.find(obj => obj.dictionaryCode === 'doc_type')) {
  482. this.smartQuery.doc_type = null
  483. } else {
  484. if (groupedData.doc_type) {
  485. this.smartQuery.doc_type = groupedData.doc_type.join(',')
  486. } else {
  487. this.smartQuery.doc_type = null
  488. }
  489. }
  490. break
  491. case 'medium_type':
  492. if (res.find(obj => obj.dictionaryCode === 'medium_type')) {
  493. this.smartQuery.medium_type = null
  494. } else {
  495. if (groupedData.medium_type) {
  496. this.smartQuery.medium_type = groupedData.medium_type.join(',')
  497. } else {
  498. this.smartQuery.medium_type = null
  499. }
  500. }
  501. break
  502. case 'organ_or_function':
  503. if (res.find(obj => obj.dictionaryCode === 'organ_or_function')) {
  504. this.smartQuery.organ_or_function = null
  505. } else {
  506. if (groupedData.organ_or_function) {
  507. this.smartQuery.organ_or_function = groupedData.organ_or_function.join(',')
  508. } else {
  509. this.smartQuery.organ_or_function = null
  510. }
  511. }
  512. break
  513. default:
  514. if (groupedData.archive_year) {
  515. this.smartQuery.archive_year = groupedData.archive_year.join(',')
  516. } else {
  517. this.smartQuery.archive_year = null
  518. }
  519. }
  520. }
  521. this.$nextTick(() => {
  522. this.handlePageList('quickFilter')
  523. })
  524. },
  525. handleOpenAnjuan(data, parentId, parentsRow) {
  526. this.parentsProjectId = parentId
  527. this.parentsProjectRow = parentsRow
  528. this.$refs.anjuanEle.anjuanDrawer = true
  529. this.activeIndex = 0
  530. if (this.$refs.anjuanEle.$refs.ajContent) {
  531. this.$refs.anjuanEle.$refs.ajContent.activeIndex = 0
  532. }
  533. this.$nextTick(() => {
  534. this.$refs.anjuanEle.$refs.ajContent.$refs.tableList.getCommonData(2, this.parentsProjectId)
  535. this.$refs.anjuanEle.$refs.ajContent.test = data
  536. })
  537. },
  538. handleOpenJuannei(data, parentId, parentsRow) {
  539. this.parentsAnjuanId = parentId
  540. this.parentsAnjuanRow = parentsRow
  541. if (this.selectedCategory.arrangeType === 1 || (this.selectedCategory.arrangeType === 3 && this.$refs.anjuanEle.$refs.ajContent.activeIndex === 1) || (this.selectedCategory.arrangeType === 2 && this.$refs.anjuanEle.$refs.ajContent.activeIndex === 1)) {
  542. this.$refs.fileEle.fileDrawer = true
  543. this.$nextTick(() => {
  544. this.$refs.fileEle.getCommonData(4, this.parentsAnjuanId)
  545. this.$refs.fileEle.test = data
  546. this.$refs.fileEle.isAjNo = 1
  547. })
  548. } else {
  549. this.$refs.juanneiEle.juanneiDrawer = true
  550. this.$nextTick(() => {
  551. this.$refs.juanneiEle.getCommonData(3, this.parentsAnjuanId)
  552. this.$refs.juanneiEle.test = data
  553. this.$refs.fileEle.isAjNo = 0
  554. })
  555. }
  556. },
  557. handleOpenFile(data, parentId) {
  558. this.parentsJuanneiId = parentId
  559. this.$refs.fileEle.fileDrawer = true
  560. this.$nextTick(() => {
  561. this.$refs.fileEle.getCommonData(4, this.parentsJuanneiId)
  562. this.$refs.fileEle.test = data
  563. })
  564. }
  565. }
  566. }
  567. </script>
  568. <style lang="scss" scoped>
  569. .elect-cont-left{
  570. width: 276px;
  571. padding: 0 !important;
  572. }
  573. .hideSidebar .elect-cont-left {
  574. width: 265px !important;
  575. }
  576. [data-theme=light] .elect-cont-left .container-left {
  577. min-height: calc(100vh - 140px);
  578. }
  579. [data-theme=dark] .elect-cont-left .container-left {
  580. min-height: calc(100vh - 160px);
  581. }
  582. .openSidebar .elect-cont-right {
  583. width: calc(100vw - 592px);
  584. }
  585. [data-theme=light] .elect-cont-right .container-right.tab-content {
  586. min-height: calc(100vh - 200px) !important;
  587. }
  588. .arc-title{
  589. position: relative;
  590. height: 48px;
  591. line-height: 48px;
  592. text-align: center;
  593. font-size: 16px;
  594. color: #0C0E1E;
  595. background-color: #F3F5F8;
  596. &::after{
  597. content: "";
  598. position: absolute;
  599. right: 12px;
  600. bottom: 0;
  601. }
  602. }
  603. .arc-title-top{
  604. &::after{
  605. width: 44px;
  606. height: 35px;
  607. background: url("~@/assets/images/collect/daml.png") no-repeat;
  608. background-size: 100% 100%;
  609. }
  610. }
  611. .arc-title-bottom{
  612. &::after{
  613. width: 41px;
  614. height: 40px;
  615. background: url("~@/assets/images/collect/kssx.png") no-repeat;
  616. background-size: 100% 100%;
  617. }
  618. }
  619. .arc-tree{
  620. padding: 0 20px;
  621. }
  622. .arc-tree-01{
  623. height: 400px;
  624. overflow: hidden;
  625. overflow-y: scroll;
  626. }
  627. [data-theme=dark] .arc-tree-01{
  628. height: 370px;
  629. }
  630. .arc-tree-02{
  631. height: calc(100vh - 720px);
  632. overflow: hidden;
  633. overflow-y: scroll;
  634. .el-tree{
  635. margin: 0;
  636. }
  637. }
  638. ::v-deep .el-tree-node__children .custom-tree-node{
  639. font-size: 14px;
  640. }
  641. ::v-deep .custom-tree-node{
  642. font-size: 14px;
  643. font-weight: normal;
  644. }
  645. [data-theme=light] .elect-cont-right {
  646. padding: 15px 0 !important;
  647. }
  648. [data-theme=dark] .elect-cont-right {
  649. margin-top: 0 !important;
  650. }
  651. </style>