// // PBArtifactsViewController.m // IphoneBIMe // // Created by zjf on 2020/9/11. // Copyright © 2020 ProBIM. All rights reserved. // #import "PBTaskViewController.h" #import "PBStructureTableViewCell.h" #import "PBProjectModel.h" #import "PBArtifactsModel.h" #import "PBChooseTasksCell.h" #import "PBArtifactsInfoModel.h" #import "PBETaskModel.h" #import "PBETaskInfoModel.h" #import "PBAddExamineViewController.h" #import "PBSeleceArtifactsViewController.h" static NSString *const cellID = @"cellID"; static NSString *const tasksCellID = @"tasksCellID"; @interface PBTaskViewController () @property (nonatomic, strong) UITableView *tableView; @property (nonatomic, strong) NSArray *dataList; @property (nonatomic, weak) UIView *bottomV; @property (nonatomic, weak) UIButton *determineBtn; @property (nonatomic, weak) UIButton *arrowBtn; @property (nonatomic, weak) UILabel *selectCountL; @end @implementation PBTaskViewController - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; NSLog(@"============%zd",self.selectList.count); if (!self.isOntPage && self.tasks.count > 0 && self.selectList.count > 0) { for (PBETaskInfoModel *model in self.tasks) { if (model.Children.count > 0) { }else { for (PBETaskInfoModel *selectModel in self.selectList) { if ([model.UID_ isEqualToString:selectModel.UID_]) { model.isSelected = YES; break; }else { model.isSelected = NO; } } } } [self.tableView reloadData]; } if (self.selectList.count > 0) { self.bottomV.hidden = NO; self.arrowBtn.hidden = NO; self.selectCountL.hidden = NO; self.determineBtn.hidden = NO; self.selectCountL.text = [NSString stringWithFormat:@"已选择%zd个构件",self.selectList.count]; [self.determineBtn setTitle:[NSString stringWithFormat:@"确定(%zd)",self.selectList.count] forState:UIControlStateNormal]; }else { self.bottomV.hidden = YES; self.arrowBtn.hidden = YES; self.selectCountL.hidden = YES; self.determineBtn.hidden = YES; } } - (void)viewDidLoad { [super viewDidLoad]; if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.f) { self.edgesForExtendedLayout = UIRectEdgeNone; self.navigationController.interactivePopGestureRecognizer.enabled = YES; self.navigationController.interactivePopGestureRecognizer.delegate = self; } [self setupNav]; [self setupUI]; if (self.isOntPage) { [self loadArtifactsData]; } } - (void)loadArtifactsData { [YJProgressHUD showProgress:@"" inView:self.view]; [[PBNetworkTools sharedTools] GetCheckTaskWithOrganizeId:self.projectModel.bimcomposerid andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) { if (error) { [YJProgressHUD showMessage:@"加载失败" inView:self.view]; return; } NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str]; if (networkModel.Ret == 1) { [YJProgressHUD hide]; self.tasks = networkModel.Data; [self.tableView reloadData]; if (self.tasks.count == 0) { [YJProgressHUD showMessage:@"暂无内容" inView:self.view]; } }else { [YJProgressHUD showMessage:networkModel.Msg inView:self.view]; } }]; } - (void)setupNav { self.title = @"关联任务"; UIBarButtonItem *backNavItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"Doc_preview_back"] style:UIBarButtonItemStylePlain target:self action:@selector(backItemAction)]; self.navigationItem.leftBarButtonItem = backNavItem; } - (void)backItemAction { [self.navigationController popViewControllerAnimated:YES]; } - (void)setupUI { self.view.backgroundColor = PBColor(244, 245, 246); self.tableView = [[UITableView alloc] init]; self.tableView.backgroundColor = [UIColor whiteColor]; self.tableView.dataSource = self; self.tableView.delegate = self; self.tableView.bounces = NO; self.tableView.rowHeight = 47; self.tableView.sectionIndexColor = PBColor(97, 111, 125); UITableView *footerV = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; if (@available(iOS 15.0, *)) { footerV.sectionHeaderTopPadding = 0; }; self.tableView.tableFooterView = footerV; self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; [self.tableView registerClass:[PBStructureTableViewCell class] forCellReuseIdentifier:cellID]; [self.tableView registerClass:[PBChooseTasksCell class] forCellReuseIdentifier:tasksCellID]; self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 56, 0); [self.view addSubview:self.tableView]; CGFloat bottomH = 0.f; if (IS_IPHONE_X) { bottomH = 0.f + IPHONE_X_BOTTOM; } [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.view); make.left.right.equalTo(self.view); make.bottom.equalTo(self.view).offset(-(bottomH)); }]; // self.tableView.tableHeaderView = [self setupTableHearderView]; UIView *bottomV = [[UIView alloc] init]; bottomV.backgroundColor = [UIColor whiteColor]; [self.view addSubview:bottomV]; [bottomV mas_makeConstraints:^(MASConstraintMaker *make) { make.left.bottom.right.equalTo(self.tableView); make.height.equalTo(@54); }]; UIButton *arrowBtn = [UIButton z_bgImageButton:[UIImage imageNamed:@"arrow_top"]]; [arrowBtn addTarget:self action:@selector(arrowTopActon) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:arrowBtn]; [arrowBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(bottomV).offset(15); make.left.equalTo(bottomV).offset(12); make.size.mas_equalTo(CGSizeMake(24, 24)); }]; UILabel *selectCountL = [UILabel z_labelWithText:[NSString stringWithFormat:@"已选择%zd个构件",self.selectList.count] Color:PBColor(40, 58, 79) isBold:YES Font:14]; [self.view addSubview:selectCountL]; [selectCountL mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.equalTo(arrowBtn); make.height.equalTo(@20); make.left.equalTo(arrowBtn.mas_right).offset(15); make.right.equalTo(self.view).offset(-120); }]; UIButton *determineBtn = [UIButton z_textButton:[NSString stringWithFormat:@"确定(%zd)",self.selectList.count] boldFontSize:14 normalColor:[UIColor whiteColor]]; [determineBtn addTarget:self action:@selector(determineBtnAction) forControlEvents:UIControlEventTouchUpInside]; determineBtn.backgroundColor = PBColor(0, 122, 255); [self.view addSubview:determineBtn]; [determineBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(bottomV).offset(9); make.right.equalTo(bottomV).offset(-20); make.size.mas_equalTo(CGSizeMake(89, 34)); }]; [determineBtn circleViewWithRadius:6]; self.arrowBtn = arrowBtn; self.bottomV = bottomV; self.selectCountL = selectCountL; self.determineBtn = determineBtn; if (self.selectList.count > 0) { self.bottomV.hidden = NO; self.arrowBtn.hidden = NO; self.selectCountL.hidden = NO; self.determineBtn.hidden = NO; }else { self.bottomV.hidden = YES; self.arrowBtn.hidden = YES; self.selectCountL.hidden = YES; self.determineBtn.hidden = YES; } } - (void)determineBtnAction { [PBNoteCenter postNotificationName:PBNoteCenterUpdateTask object:self.selectList.copy]; [self backAction]; } - (UIView *)setupTableHearderView { UIView *bgV = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 52)]; bgV.backgroundColor = PBColor(244, 245, 246); UIButton *searchBtn = [UIButton z_bgImageButton:[UIImage imageNamed:@"Examine_search_background"]]; [searchBtn addTarget:self action:@selector(searchAction) forControlEvents:UIControlEventTouchUpInside]; [bgV addSubview:searchBtn]; [searchBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(bgV).offset(8); make.left.equalTo(bgV).offset(10); make.right.equalTo(bgV).offset(-10); make.height.equalTo(@36); }]; return bgV; } - (void)searchAction { } - (void)arrowTopActon { PBSeleceArtifactsViewController *selectArtifactsVC = [[PBSeleceArtifactsViewController alloc] init]; selectArtifactsVC.type = @"Task"; selectArtifactsVC.selectList = self.selectList; [self.navigationController pushViewController:selectArtifactsVC animated:YES]; } - (void)backAction{ UINavigationController *navVC = self.navigationController; NSMutableArray *viewControllers = [[NSMutableArray alloc] init]; for (UIViewController *vc in [navVC viewControllers]) { [viewControllers addObject:vc]; if ([vc isKindOfClass:[PBAddExamineViewController class]]) { break; } } [navVC setViewControllers:viewControllers animated:YES]; } #pragma mark - UITableViewDataSource - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.tasks.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if (self.isOntPage) { PBStructureTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID forIndexPath:indexPath]; NSDictionary *dict = self.tasks[indexPath.row]; PBETaskModel *taskModel = [PBETaskModel yy_modelWithDictionary:dict]; cell.taskModel = taskModel; cell.NextLevelBlock = ^{ [self getTaskItemData:taskModel]; }; return cell; }else { PBETaskInfoModel *taskInfoModel = self.tasks[indexPath.row]; PBChooseTasksCell *cell = [tableView dequeueReusableCellWithIdentifier:tasksCellID forIndexPath:indexPath]; cell.taskInfoModel = taskInfoModel; __weak typeof(cell) weakCell = cell; cell.saveBlock = ^(BOOL isSave) { if (isSave) { [self.selectList addObject:taskInfoModel]; }else { for (PBETaskInfoModel *item in self.selectList) { if ([item.UID_ isEqualToString:taskInfoModel.UID_]) { [self.selectList removeObject:item]; break; } } } if (self.selectList.count > 0) { self.bottomV.hidden = NO; self.arrowBtn.hidden = NO; self.selectCountL.hidden = NO; self.determineBtn.hidden = NO; self.selectCountL.text = [NSString stringWithFormat:@"已选择%zd个任务",self.selectList.count]; [self.determineBtn setTitle:[NSString stringWithFormat:@"确定(%zd)",self.selectList.count] forState:UIControlStateNormal]; }else { self.bottomV.hidden = YES; self.arrowBtn.hidden = YES; self.selectCountL.hidden = YES; self.determineBtn.hidden = YES; } }; cell.nextBlock = ^{ PBTaskViewController *vc = [[PBTaskViewController alloc] init]; vc.isOntPage = NO; vc.projectModel = self.projectModel; vc.tasks = taskInfoModel.Children; vc.selectList = self.selectList; [self.navigationController pushViewController:vc animated:YES]; }; return cell; } } #pragma mark - 加载任务 - (void)getTaskItemData:(PBETaskModel *)taskModel { [YJProgressHUD showProgress:@"正在加载..." inView:self.view]; [[PBNetworkTools sharedTools] GetTaskItemDataWithPlanId:taskModel.bop_planId andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) { if (error) { [YJProgressHUD showMessage:@"加载失败" inView:self.view]; return; } NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str]; if (networkModel.Ret == 1) { [YJProgressHUD hide]; NSMutableArray *newTasksData = [[NSMutableArray alloc] init]; NSMutableArray *tasks = [[NSMutableArray alloc] init]; NSArray *tasksData = [networkModel.Data valueForKey:@"Tasks"]; if (tasksData.count == 0) { [YJProgressHUD showMessage:@"暂无内容" inView:self.view]; }else { for (int i=0; i 0) { item.Children = hasChildrenData; if (item.Children.count > 0) { for (int j=0; j