<!--
* @Description:
* @Author: Ran junlin
* @Date: 2021-07-01 12:58:01
* @LastEditTime: 2021-07-14 15:38:46
* @LastEditors: Ran junlin
-->
<template>
<div class="table-wrapper">
<button @click="handleCancelSelect">取消所有</button>
<el-tree
ref="tree"
:data="treeCats"
:props="defaultProps"
@check-change="handleCheckChange"
accordion
node-key="value"
show-checkbox
></el-tree>
<!-- <div class="block">
<span class="demonstration">折叠展示Tag</span>
<el-cascader
@change="changeOrg"
:options="treeCats"
:props="props"
collapse-tags
v-model="org2"
clearable
></el-cascader>
</div> -->
</div>
</template>
<script>
import unit from '@/utils/unit'
import { makeElementTree } from '@/utils/createTree'
export default {
name: 'warehouse-manage',
data () {
return {
props: { multiple: true },
treeCats: [],
permissionIds: [],
defaultProps: {
children: 'children',
label: 'label'
},
}
},
mounted () {
console.log(unit);
const unitList = unit.unit
this.treeCats = makeElementTree({
pid: '910101',
list: unitList,
pidFiled: 'pId',
labelFiled: 'name',
valueFiled: 'id'
})
console.log(this.treeCats)
},
methods: {
changeOrg (e) {
console.log(e);
if (e.length != 0) {
this.ogr = e[e.length - 1][e.length - 1]
console.log(this.ogr)
}
},
handleCheckChange (data) {
let res = this.$refs.tree.getCheckedNodes()
let arr = []
res.forEach((item) => {
arr.push(item.value)
})
let menuArr = this.unique(arr);
this.permissionIds = menuArr.join(',')
console.log(this.permissionIds);
},
unique (arr) {
let newArr = []
let len = arr.length
for (let i = 0; i < len; i++) {
if (newArr.indexOf(arr[i]) == -1) {
newArr.push(arr[i])
}
}
return newArr
},
handleCancelSelect () {
this.$refs.tree.setCheckedKeys([]);
},
handleNodeClick (data) {
console.log(data);
}
}
}
</script>
<style lang="scss" scoped>
.table-wrapper {
width: 200px;
border: 1px solid red;
}
</style>
export const makeElementTree = (params) => {
const {
pid,
list,
pidFiled,
labelFiled,
valueFiled
} = params
const makeTree = (pid, arr) => {
const res = []
arr.forEach(i => {
if (i[pidFiled] == pid) {
const children = makeTree(i[valueFiled], list)
const child = true
const obj = {
label: i[labelFiled],
value: i[valueFiled],
}
if (children.length) {
obj.children = children
}
res.push(obj)
}
})
return res
}
return makeTree(pid, list)
}