// // ComplaintsListVC.m // LNManager // // Created by EchoShacolee on 2017/5/31. // Copyright © 2017年 lee. All rights reserved. // #import "ComplaintsListVC.h" #import "MJRefresh.h" #import "ComListCell.h" #import "ComDealVC.h" #import "MengBanView.h" typedef NS_ENUM(NSInteger, MyGetDataType) { //正常请求数据 MyGetDataTypeNomal=0, //下拉刷新请求数据 MyGetDataTypeHeaderRefresh, //上拉加载更多请求数据 MyGetDataTypeFooterRefresh }; @interface ComplaintsListVC () { //记录页书 NSInteger _currentPageNum; //正在加载的状态 BOOL _IS_LOADING; //加载数据的类型 MyGetDataType _getDataType; //1机构2教练 NSString * _status; // HolderView *_holderV; // MengBanView *_mengBanView; //缓存cell高度 NSMutableArray * _heightArr; UISegmentedControl *_seg; } @property (nonatomic,retain)NSMutableArray * dataurce; @property(nonatomic,retain)UITableView *tableView; @end @implementation ComplaintsListVC - (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.title = @"投诉管理"; self.view.backgroundColor = KBackGroundColor; self.navigationController.navigationBar.translucent = NO; _dataurce = [[NSMutableArray alloc]init]; _currentPageNum = 0; _IS_LOADING = NO; _getDataType = MyGetDataTypeNomal; _status = @"1"; // _seg = [[UISegmentedControl alloc]initWithItems:@[@"机构评价",@"教练评价"]]; _seg.frame = CGRectMake(0, 0, kSize.width, 40); _seg.backgroundColor = [UIColor whiteColor]; _seg.selectedSegmentIndex = 0; _seg.tintColor = RQMianColor; [_seg addTarget:self action:@selector(change:) forControlEvents:UIControlEventValueChanged]; [self.view addSubview:_seg]; _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 40, kSize.width, kSize.height-CGRectGetMaxY(_seg.frame)-kNavOffSet)]; _tableView.backgroundColor = KBackGroundColor; _tableView.dataSource = self; _tableView.delegate = self; _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; [self.view addSubview:_tableView]; self.tableView.tableFooterView = [UIView new]; // [self customRightBtn]; [self goBackByNavigation]; [self setRefreshAction];//设置刷新 [self getData]; _holderV = [[HolderView alloc]initWithFrame:_tableView.frame]; [_holderV freshBlock:^{ [self headerRefresh]; }]; [self.view addSubview:_holderV]; } -(void)change:(UISegmentedControl *)seg{ _status = [NSString stringWithFormat:@"%ld",(long)seg.selectedSegmentIndex+1]; [_heightArr removeAllObjects]; // [self.tableView setContentOffset:CGPointMake(0, -64) animated:NO]; [self headerRefresh]; } -(void)customRightBtn{ UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithTitle:@"筛选" style:UIBarButtonItemStylePlain target:self action:@selector(setMengbanView)]; item.tintColor = RQMianColor; self.navigationItem.rightBarButtonItem = item; } -(void)setMengbanView{ if (_mengBanView) { [_mengBanView showView]; return; } NSArray * btnarr = @[@"机构投诉",@"教练投诉"]; NSArray * buttonsArray = @[btnarr]; _mengBanView = [[MengBanView alloc]initWithTitileStr:nil buttonsArray:buttonsArray isAllbtn:YES block:^(NSArray *array) { if ([array[0] isEqualToString:@"机构投诉"]) { _status = @"1"; }else if ([array[0] isEqualToString:@"教练投诉"]){ _status = @"2"; } [_heightArr removeAllObjects]; [self.tableView setContentOffset:CGPointMake(0, -64) animated:NO]; [self headerRefresh]; }]; [_mengBanView showView]; } #pragma mark - 下拉刷新,上拉加载 - -(void)setRefreshAction{ // 下拉加载更多 __weak typeof(self) weakSelf = self; MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ [weakSelf headerRefresh]; }]; self.tableView.mj_header = header; MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{ [weakSelf footerRefresh]; }]; self.tableView.mj_footer = footer; } -(void)headerRefresh{ //设置获取数据的方式 _getDataType=MyGetDataTypeHeaderRefresh; //加载数据 [self getData]; [self.tableView.mj_header endRefreshing]; } -(void)footerRefresh{ //设置获取数据的方式 _getDataType=MyGetDataTypeFooterRefresh; //加载数据 [self getData]; [self.tableView.mj_footer endRefreshing]; } -(void)getData{ //判断当前是否正在加载数据。如果正在加载数据,直接return。 if (_IS_LOADING) { return; } if (![NetManager connectedToNetWork]) { showMsgUnconnect(); return; } _IS_LOADING=YES; //获取第一页数据 NSInteger needLoadPage; needLoadPage=_currentPageNum+1; if (_getDataType==MyGetDataTypeHeaderRefresh) { needLoadPage=1; } NSMutableDictionary * mDic = [NSMutableDictionary new]; [mDic setObject:_status forKey:@"type"];//1机构2教练 [mDic setObject:defUser.userDict[@"school"] forKey:@"objectId"]; [mDic setObject:@"1" forKey:@"isPage"]; [mDic setObject:@"10" forKey:@"pageSize"]; [mDic setObject:[NSString stringWithFormat:@"%ld",(long)needLoadPage] forKey:@"currentPage"]; __weak typeof(self) weakSelf = self; [NetManager requestAnythingWithURL:@"getCompls" dictionary:mDic dataArray:nil completion:^(NSDictionary *root) { _holderV.hidden = NO; //设置加载状态 _IS_LOADING=NO; if (!root) { ShowErrorMsg(@"请求失败!"); return; } if ([root[@"code"] isEqualToString:@"1"]) { ShowErrorMsg(root[@"msg"]); return; } //处理数据 //如果获取到了数据,而且是下拉刷新,清空数组。 if (_getDataType==MyGetDataTypeHeaderRefresh){ [weakSelf.dataurce removeAllObjects]; } //追加数据 [weakSelf.dataurce addObjectsFromArray:root[@"body"]]; if (weakSelf.dataurce.count != 0) { _holderV.hidden = YES; } //计数器+1 _currentPageNum=needLoadPage; //刷新界面 [weakSelf.tableView reloadData]; //恢复初始状态。 _getDataType=MyGetDataTypeNomal; }]; } #pragma mark tableView代理方法 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return self.dataurce.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ NSDictionary * dic = self.dataurce[indexPath.row]; __weak typeof(self) weakSelf = self; ComListCell * cell = [ComListCell cellForTabelView:tableView]; cell.block = ^{ __strong typeof(weakSelf) strongSelf = weakSelf; ComDealVC * vc = [[ComDealVC alloc]init]; vc.theId = dic[@"ID"]; vc.block = ^{ [_heightArr removeAllObjects]; [strongSelf headerRefresh]; }; [strongSelf.navigationController pushViewController:vc animated:YES]; }; [cell updateWithDic:dic]; return cell; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ //缓存高度 NSNumber *cellHeight = [_heightArr h_safeObjectAtIndex:indexPath.row]; if (cellHeight) { return [cellHeight floatValue]; }else{ NSDictionary * dic = self.dataurce[indexPath.row]; CGFloat h1 = [self getHeightWithString:dic[@"CONTENT"]]; CGFloat h2 = [self getHeightWithString:dic[@"SCHOPIONION"]]; CGFloat h3 = [self getHeightWithString:dic[@"DEPAOPINION"]]; CGFloat h4 = [self getHeightWithString:dic[@"OBJNAME"]]; CGFloat H = 82+h1+h2+h3+h4;//82为其它固定高度 [_heightArr addObject:@(H)]; return H; } } #pragma mark 计算高度 -(CGFloat)getHeightWithString:(NSString *)str{ if (str.length == 0) { return 0; } NSString * newStr = [NSString stringWithFormat:@"投诉管理 :%@",str]; CGFloat w = self.tableView.frame.size.width-40; CGFloat h1 = [newStr heightForWid:w Font:14]; return h1+5;//5是间隔 } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end