应公司需求,在部门选择的时候,需要控制父子级不关联,且子级不能全选,选择最后一个的时候给出提示并清空当前选项。
清空的逻辑代码如下:
// this.checkedIds 是选择当前节点之前的数据,目的是为了找到当前节点,因为选中数据里面的排序是根据面板中数据的顺序来的。并不是后选择的在后面。
let currentId = valArr.find(f => this.checkedIds.indexOf(f) === -1)
let index = this.form.officeGroupId.findIndex(f => f[f.length - 1] === currentId)
this.form.officeGroupId.splice(index, 1);
//获取选择框选择的tag
const presentTags = this.$refs.cascaderDialog.presentTags;
//找到索引
const tagIndex = presentTags.findIndex(t => t.node.value === val[val.length - 1])
//删除选择框里已选择的当前节点
presentTags.splice(tagIndex, 1);
//同步面板节点状态
this.$refs.cascaderDialog.panel.syncMenuState()
//重新计算展示内容
this.$refs.cascaderDialog.computePresentContent();
这样就可以实现,选了不符合需求的节点,给出提示,清空选项。