selectSection.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. var app = getApp()
  2. var that;
  3. Component({
  4. mixins: [],
  5. data: {
  6. all_rule_list: {},
  7. isShow:false,
  8. terr:[
  9. {name: '全部', id:0}
  10. ],
  11. rule_tree: [],
  12. activeId:'',
  13. ids:[],
  14. },
  15. props: {
  16. onConfirm: (data) => console.log(data),
  17. onClose:(data) => console.log(data),
  18. defaultSection:'',
  19. isAll:false,
  20. selectIds:[],
  21. },
  22. didMount() {
  23. that = this;
  24. this.setData({
  25. isShow:this.props.isShow,
  26. activeId:this.props.defaultSection,
  27. ids:this.props.selectIds,
  28. terr:[{name: '全部', id:0}],
  29. selectTissue:{name:'全公司',id:''}
  30. })
  31. this.getBmData();
  32. },
  33. didUpdate() { },
  34. didUnmount() { },
  35. methods: {
  36. onConfirm(){
  37. if(!this.data.selectTissue){
  38. app.globalData.showToast("请选择部门");
  39. return;
  40. }
  41. this.props.onConfirm(this.data.selectTissue,this.data.ids);
  42. this.props.onClose();
  43. },
  44. //点击导航栏
  45. activeItem(e){
  46. var item=e.target.dataset.item;
  47. var index=e.target.dataset.index;
  48. var terr=this.data.terr;
  49. if((index+1)==terr.length){return false};
  50. this.setData({ rule_tree:[]});
  51. if(index==0){
  52. this.setData({
  53. terr:[{name: '全部', id:0}],
  54. rule_tree:this.data.all_rule_list
  55. })
  56. }else{
  57. var arr=terr.slice(0,index+1);
  58. this.setData({
  59. rule_tree:item._child,
  60. terr:arr
  61. })
  62. }
  63. },
  64. // 点击下一级
  65. openDown(e){
  66. this.setData({ rule_tree:[]});
  67. var item=e.target.dataset.item;
  68. var terr=this.data.terr;
  69. terr.push(item);
  70. if(item._child.length>0){
  71. item._child.map(item=>{
  72. if(item.id==this.props.defaultSection){
  73. item.checked=true;
  74. }
  75. })
  76. that.setData({
  77. rule_tree:item._child,
  78. terr:terr
  79. })
  80. }
  81. },
  82. radioChange: function(e) {
  83. let ids=[e.target.dataset.item.id];
  84. if(this.props.isAll&&e.target.dataset.item._child){
  85. this.returnArr(e.target.dataset.item._child,ids)
  86. }
  87. this.setData({
  88. ids:ids,
  89. selectTissue:e.target.dataset.item,
  90. activeId:e.target.dataset.item.id,
  91. })
  92. },
  93. returnArr(child,arr){
  94. if(child.length>0){
  95. child.forEach(item=>{
  96. arr.push(item.id)
  97. this.returnArr(item._child,arr)
  98. })
  99. }
  100. },
  101. //获取部门列表
  102. getBmData() {
  103. app.$get("api/department/tree", {}).then((res) => {
  104. var list = res.data.data.list||[];
  105. list.unshift({
  106. name:'全公司',
  107. id:''
  108. })
  109. this.setData({
  110. rule_tree: list,
  111. all_rule_list:list,
  112. })
  113. if(this.data.activeId){
  114. this.returnItem(list,this.data.activeId,(item)=>{
  115. if(item.id){
  116. this.radioChange({target:{dataset:{item:item}}})
  117. }
  118. })
  119. }
  120. })
  121. },
  122. returnItem(arr,id,fun){
  123. if(arr&&arr.length>0){
  124. arr.forEach(e=>{
  125. if(e.id==id){
  126. fun(e)
  127. }else{
  128. this.returnItem(e._child,id,fun);
  129. }
  130. })
  131. }
  132. },
  133. //关闭
  134. onClose(e) {
  135. this.props.onClose();
  136. },
  137. },
  138. });