JXSelDepartViewController.m 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. //
  2. // JXSelDepartViewController.m
  3. // shiku_im
  4. //
  5. // Created by 1 on 17/6/1.
  6. // Copyright © 2017年 Reese. All rights reserved.
  7. //
  8. #import "JXSelDepartViewController.h"
  9. #import "DepartObject.h"
  10. #import "RATreeView.h"
  11. #import "OrganizTableViewCell.h"
  12. @interface JXSelDepartViewController ()<RATreeViewDelegate, RATreeViewDataSource>
  13. @property (nonatomic, weak) RATreeView * treeView;
  14. @end
  15. @implementation JXSelDepartViewController
  16. - (id)init
  17. {
  18. self = [super init];
  19. if (self) {
  20. self.heightHeader = JX_SCREEN_TOP;
  21. self.heightFooter = 0;
  22. self.title = Localized(@"OrganizVC_Organiz");
  23. self.tableBody.backgroundColor = THEMEBACKCOLOR;
  24. self.isFreeOnClose = YES;
  25. self.isGotoBack = YES;
  26. }
  27. return self;
  28. }
  29. //-(void)setDataArray:(NSArray *)dataArray{
  30. // for (int i = 0; i<dataArray.count; i++) {
  31. // DepartObject * depart = dataArray[i];
  32. // depart
  33. // }
  34. //}
  35. - (void)viewDidLoad {
  36. [super viewDidLoad];
  37. [self createHeadAndFoot];
  38. [self createTreeView];
  39. if (_dataArray.count > 0){
  40. [_treeView reloadData];
  41. for (DepartObject * depart in _dataArray) {
  42. [_treeView expandRowForItem:depart expandChildren:YES withRowAnimation:RATreeViewRowAnimationRight];
  43. }
  44. }
  45. }
  46. -(void)createTreeView{
  47. RATreeView *treeView = [[RATreeView alloc] initWithFrame:self.view.bounds style:RATreeViewStylePlain];
  48. treeView.delegate = self;
  49. treeView.dataSource = self;
  50. treeView.treeFooterView = [UIView new];
  51. treeView.separatorStyle = RATreeViewCellSeparatorStyleSingleLine;
  52. // UIRefreshControl *refreshControl = [UIRefreshControl new];
  53. // [refreshControl addTarget:self action:@selector(refreshControlChanged:) forControlEvents:UIControlEventValueChanged];
  54. // [treeView.scrollView addSubview:refreshControl];
  55. // [treeView reloadData];
  56. [treeView setBackgroundColor:[UIColor colorWithWhite:0.97 alpha:1.0]];
  57. self.treeView = treeView;
  58. treeView.frame = self.tableBody.bounds;
  59. treeView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
  60. [self.tableBody addSubview:treeView];
  61. [treeView registerClass:[OrganizTableViewCell class] forCellReuseIdentifier:NSStringFromClass([OrganizTableViewCell class])];
  62. }
  63. #pragma mark TreeView Delegate methods
  64. - (CGFloat)treeView:(RATreeView *)treeView heightForRowForItem:(id)item
  65. {
  66. return 44;
  67. }
  68. - (BOOL)treeView:(RATreeView *)treeView shouldExpandRowForItem:(id)item{
  69. return NO;
  70. }
  71. - (BOOL)treeView:(RATreeView *)treeView shouldCollapaseRowForItem:(id)item{
  72. return NO;
  73. }
  74. -(void)treeView:(RATreeView *)treeView didSelectRowForItem:(id)item{
  75. DepartObject * depart = item;
  76. if (depart.parentId) {
  77. [self chooesDepartment:item];
  78. }
  79. // if (depart.children.count == 0)
  80. // [g_server showMsg:Localized(@"OrgaVC_DepartNoChild") delay:1.8];
  81. }
  82. #pragma mark TreeView Data Source
  83. - (UITableViewCell *)treeView:(RATreeView *)treeView cellForItem:(id)item
  84. {
  85. NSInteger level = [self.treeView levelForCellForItem:item];
  86. // NSInteger numberOfChildren = [dataObject.children count];
  87. DepartObject * dataObject = item;
  88. BOOL expanded = [self.treeView isCellForItemExpanded:item];
  89. OrganizTableViewCell * cell = [self.treeView dequeueReusableCellWithIdentifier:NSStringFromClass([OrganizTableViewCell class])];
  90. cell.selectionStyle = UITableViewCellSelectionStyleNone;
  91. [cell setupWithData:dataObject level:level expand:expanded];
  92. cell.additionButton.hidden = YES;
  93. __weak typeof(self) weakSelf = self;
  94. cell.additionButtonTapAction = ^(id sender){
  95. if (weakSelf.treeView.isEditing) {
  96. return;
  97. }
  98. [weakSelf chooesDepartment:item];
  99. // [weakSelf showDepartDownListView:dataObject];
  100. };
  101. return cell;
  102. }
  103. - (NSInteger)treeView:(RATreeView *)treeView numberOfChildrenOfItem:(id)item
  104. {
  105. if (item == nil) {
  106. return [self.dataArray count];
  107. }
  108. if ([item isMemberOfClass:[DepartObject class]]) {
  109. DepartObject * dataObject = item;
  110. return [dataObject.departes count];
  111. }else{
  112. return 0;
  113. }
  114. }
  115. - (id)treeView:(RATreeView *)treeView child:(NSInteger)index ofItem:(id)item
  116. {
  117. if (item == nil) {
  118. return [self.dataArray objectAtIndex:index];
  119. }
  120. if ([item isMemberOfClass:[DepartObject class]]) {
  121. DepartObject * dataObject = item;
  122. return dataObject.departes[index];
  123. }else{
  124. return nil;
  125. }
  126. }
  127. /**
  128. 选择移动到的部门
  129. @param item 部门对象
  130. */
  131. -(void)chooesDepartment:(id)item{
  132. DepartObject * depart = item;
  133. if (self.delegate && [self.delegate respondsToSelector:@selector(selNewDepartmentWith:)]) {
  134. [self actionQuit];
  135. [self.delegate selNewDepartmentWith:depart];
  136. }
  137. }
  138. - (void)didReceiveMemoryWarning {
  139. [super didReceiveMemoryWarning];
  140. // Dispose of any resources that can be recreated.
  141. }
  142. /*
  143. #pragma mark - Navigation
  144. // In a storyboard-based application, you will often want to do a little preparation before navigation
  145. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  146. // Get the new view controller using [segue destinationViewController].
  147. // Pass the selected object to the new view controller.
  148. }
  149. */
  150. @end