var app = getApp() var that; Component({ mixins: [], data: { all_rule_list: {}, isShow:false, terr:[ {name: '全部', id:0} ], rule_tree: [], activeId:'', ids:[], }, props: { onConfirm: (data) => console.log(data), onClose:(data) => console.log(data), defaultSection:'', isAll:false, selectIds:[], }, didMount() { that = this; this.setData({ isShow:this.props.isShow, activeId:this.props.defaultSection, ids:this.props.selectIds, terr:[{name: '全部', id:0}], selectTissue:{name:'全公司',id:''} }) this.getBmData(); }, didUpdate() { }, didUnmount() { }, methods: { onConfirm(){ if(!this.data.selectTissue){ app.globalData.showToast("请选择部门"); return; } this.props.onConfirm(this.data.selectTissue,this.data.ids); this.props.onClose(); }, //点击导航栏 activeItem(e){ var item=e.target.dataset.item; var index=e.target.dataset.index; var terr=this.data.terr; if((index+1)==terr.length){return false}; this.setData({ rule_tree:[]}); if(index==0){ this.setData({ terr:[{name: '全部', id:0}], rule_tree:this.data.all_rule_list }) }else{ var arr=terr.slice(0,index+1); this.setData({ rule_tree:item._child, terr:arr }) } }, // 点击下一级 openDown(e){ this.setData({ rule_tree:[]}); var item=e.target.dataset.item; var terr=this.data.terr; terr.push(item); if(item._child.length>0){ item._child.map(item=>{ if(item.id==this.props.defaultSection){ item.checked=true; } }) that.setData({ rule_tree:item._child, terr:terr }) } }, radioChange: function(e) { let ids=[e.target.dataset.item.id]; if(this.props.isAll&&e.target.dataset.item._child){ this.returnArr(e.target.dataset.item._child,ids) } this.setData({ ids:ids, selectTissue:e.target.dataset.item, activeId:e.target.dataset.item.id, }) }, returnArr(child,arr){ if(child.length>0){ child.forEach(item=>{ arr.push(item.id) this.returnArr(item._child,arr) }) } }, //获取部门列表 getBmData() { app.$get("api/department/tree", {}).then((res) => { var list = res.data.data.list||[]; list.unshift({ name:'全公司', id:'' }) this.setData({ rule_tree: list, all_rule_list:list, }) if(this.data.activeId){ this.returnItem(list,this.data.activeId,(item)=>{ if(item.id){ this.radioChange({target:{dataset:{item:item}}}) } }) } }) }, returnItem(arr,id,fun){ if(arr&&arr.length>0){ arr.forEach(e=>{ if(e.id==id){ fun(e) }else{ this.returnItem(e._child,id,fun); } }) } }, //关闭 onClose(e) { this.props.onClose(); }, }, });