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.
126 lines
3.5 KiB
126 lines
3.5 KiB
<template>
|
|
|
|
<div class="container-left">
|
|
<span class="right-top-line" />
|
|
<span class="left-bottom-line" />
|
|
<!--门类树状结构-->
|
|
<div class="tree-scroll">
|
|
<el-tree ref="tree" v-loading="crud.loading" :data="crud.data" :props="defaultProps" node-key="keyId" :expand-on-click-node="false" highlight-current default-expand-all @node-click="handleNodeClick">
|
|
<span slot-scope="{ node, data }" class="custom-tree-node">
|
|
<span v-if="data.isType === 1 " class="iconFolder">
|
|
{{ data.label }}
|
|
</span>
|
|
<span v-if="data.isType === 2" class="iconFile">
|
|
{{ data.label }}
|
|
</span>
|
|
</span>
|
|
</el-tree>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import CRUD, { presenter, header } from '@crud/crud'
|
|
import { preLibraryCrud } from './mixins/index'
|
|
import { mapGetters } from 'vuex'
|
|
|
|
export default {
|
|
name: 'PrearchiveTree',
|
|
components: { },
|
|
cruds() {
|
|
return [
|
|
CRUD({
|
|
title: '预归档库', url: 'api/document/menu_perpare',
|
|
crudMethod: { },
|
|
optShow: {
|
|
add: false,
|
|
edit: false,
|
|
del: false,
|
|
download: true,
|
|
group: false,
|
|
reset: true
|
|
}
|
|
})
|
|
]
|
|
},
|
|
mixins: [presenter(), header(), preLibraryCrud],
|
|
data() {
|
|
return {
|
|
permission: {
|
|
add: ['admin', 'prearchiveLibrary:add'],
|
|
edit: ['admin', 'prearchiveLibrary:edit'],
|
|
del: ['admin', 'prearchiveLibrary:del'],
|
|
sort: ['admin', 'prearchiveLibrary:sort']
|
|
},
|
|
defaultProps: {
|
|
children: 'children',
|
|
label: 'cnName'
|
|
}
|
|
}
|
|
},
|
|
computed: {
|
|
...mapGetters([
|
|
'user'
|
|
])
|
|
},
|
|
created() {
|
|
},
|
|
methods: {
|
|
[CRUD.HOOK.beforeRefresh](crud) {
|
|
this.crud.query.page = null
|
|
this.crud.query.size = null
|
|
this.crud.query.fondsId = this.user.fonds.id
|
|
const ids = this.user.roles.map(item => { return item.id })
|
|
this.crud.query.roleIds = ids.join(',')
|
|
},
|
|
[CRUD.HOOK.afterRefresh]() {
|
|
this.crud.data = this.crud.data.map((item, index) => {
|
|
const newItem = {
|
|
...item.fonds,
|
|
keyId: item.fonds.fonds_id,
|
|
isType: 1,
|
|
label: item.fonds.fonds_name,
|
|
children: item.document.map((doc, childIndex) => {
|
|
// 生成唯一的子节点 id
|
|
const uniqueChildId = `${item.fonds.fonds_id}_${doc.id}_${childIndex}`
|
|
return {
|
|
...doc,
|
|
keyId: uniqueChildId,
|
|
fondsId: item.fonds.fonds_id,
|
|
fondsNo: item.fonds.fonds_no,
|
|
label: doc.cnName
|
|
}
|
|
})
|
|
}
|
|
return newItem
|
|
})
|
|
this.$nextTick(() => {
|
|
if (this.crud.data.length > 0 && this.crud.data[0].children && this.crud.data[0].children.length > 0) {
|
|
const targetNode = this.crud.data[0].children[0]
|
|
const node = this.$refs.tree.getNode(targetNode.keyId)
|
|
if (node) {
|
|
this.$refs.tree.setCurrentKey(targetNode.keyId)
|
|
this.handleNodeClick(node.data)
|
|
}
|
|
}
|
|
})
|
|
},
|
|
// 选中门类后
|
|
handleNodeClick(val) {
|
|
console.log('val', val)
|
|
if (val) {
|
|
this.$emit('nodeClick', val)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang='scss' scoped>
|
|
[data-theme=dark] .elect-cont-left .container-left {
|
|
min-height: calc(100vh - 158px);
|
|
}
|
|
.tree-scroll{
|
|
font-size: 14px;
|
|
}
|
|
</style>
|