// pages/common/comTree/index.js
/**
value = [
{
id: 1,
name: '一级名称',
children: []
}
]
*/
Component({
/**
* 组件的属性列表
*/
properties: {
dataTree: {
type: Array,
value: []
},
selectKey: { // 选中的节点id
type: String,
value: ''
},
isSelectLastNode: { //是否必须选中最后一节点
type: Boolean,
value: false
},
isOpenAll: { //是否展开全部节点
type: Boolean,
value: false
}
},
observers: {
'dataTree': function(params) {
params.forEach(v => {
v.open = this.properties.isOpenAll // 是否展开
})
this.setData({
tree: params
})
}
},
/**
* 组件的初始数据
*/
data: {
tree: []
},
/**
* 组件的方法列表
*/
methods: {
isOpen(e) {
const open = 'tree[' + e.currentTarget.dataset.index + '].open'
this.setData({
[open]: !this.data.tree[e.currentTarget.dataset.index].open
})
},
select(e) {
const item = e.currentTarget.dataset.item
if(this.properties.isSelectLastNode) {
console.log(item)
if (!item.children || item.children.length == 0) {
this.triggerEvent('select', { item: item }, { bubbles: true, composed: true })
} else {
this.triggerEvent('select', { tips: '必须选择最后一个节点' }, { bubbles: true, composed: true })
}
} else {
this.triggerEvent('select', { item: item }, { bubbles: true, composed: true })
}
}
}
})