// // PBTaskScheduleViewController.m // IphoneBIMe // // Created by ZhangJF on 2022/8/24. // Copyright © 2022 ProBIM. All rights reserved. // #import "PBTaskScheduleViewController.h" #import "PBProjectModel.h" #import "PBSchedulePlanModel.h" #import "PBTaskHeaderView.h" #import "PBPlanTaskTableViewCell.h" #import "PBunPlanTaskTableViewCell.h" #import "PBScheduleImgTableViewCell.h" #import "PBTaskScheduleModel.h" #import "PBChooseOneTaskViewController.h" #import "PBEditTimeView.h" #import "PBScheduleListModel.h" #import "PBImageModel.h" static NSString *const ImageCellID = @"ImageCellID"; static NSString *const PlanCellID = @"PlanCellID"; static NSString *const unPlanCellID = @"unPlanCellID"; @interface PBTaskScheduleViewController () @property (nonatomic, strong) NSArray *dataList; @property (nonatomic, strong) UITableView *tableView; @property (nonatomic, strong) NSIndexPath *currentIndexPath; @property (nonatomic, strong) PBEditTimeView *editTimeView; @property (nonatomic, strong) PBTaskHeaderView *headerView; @property (nonatomic, strong) NSMutableArray *imageArrM; @property (nonatomic, strong) NSMutableArray *planTaskArrM; @property (nonatomic, strong) NSMutableArray *unplanTaskArrM; @property (nonatomic, copy) NSString *unitText; @property (nonatomic, copy) NSString *fillDate; @property (nonatomic, copy) NSString *creatName; @property (nonatomic, copy) NSString *creatId; @property (nonatomic, assign) BOOL isAdd; @end @implementation PBTaskScheduleViewController - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.f) { self.edgesForExtendedLayout = UIRectEdgeNone; self.navigationController.interactivePopGestureRecognizer.enabled = NO; //让rootView禁止滑动 } } - (void)viewDidLoad { [super viewDidLoad]; [PBNoteCenter addObserver:self selector:@selector(updateTask:) name:PBNoteCenterChooseTask object:nil]; [self setupUI]; [self loadTask]; [self loadData]; [self setupNav]; } - (void)processingRatio:(PBTaskScheduleModel *)model andFillDate:(NSString *)fillDate { if (model.Progress_Name){ NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; [formatter setDateFormat:@"yyyy-MM-dd"]; NSDate *startDate = [formatter dateFromString:model.Progress_planstarttime]; NSDate *finshDate = [formatter dateFromString:model.Progress_plannendtime]; NSDate *filDate = [formatter dateFromString:fillDate]; NSTimeInterval planTime = [finshDate timeIntervalSinceDate:startDate]; // NSInteger planDay = (NSInteger)planTime/(3600*24); NSTimeInterval time = [filDate timeIntervalSinceDate:startDate]; // NSInteger day = (NSInteger)time/(3600*24); // 计划 NSString *planString = @"0"; float planP = time / planTime; if(planP >= 1) { planString = @"100"; } else if(planP < 0) { planString = @"0"; } else { NSInteger num = planP * 100; planString = [NSString stringWithFormat:@"%zd", num]; } NSLog(@"计划所得:%f,%@",planP, planString); model.Progress_planratio = planString; // 累计 // 状态 NSInteger planProgress = [planString integerValue]; NSInteger mobileProgress = [model.Progress_MobileAddratio integerValue]; if (mobileProgress > planProgress) { model.Progress_state = @"超前"; }else if(mobileProgress == planProgress){ model.Progress_state = @"正常"; } else { model.Progress_state = @"滞后"; } } } - (void)updateTask:(NSNotification *)noti { NSDictionary *item = self.dataList[self.currentIndexPath.section]; NSArray *arr = [item valueForKey:@"child"]; PBTaskScheduleModel *model = arr[self.currentIndexPath.row]; PBSchedulePlanModel *planModel = noti.object; model.Progress_Name = planModel.Name; model.Progress_treeID = planModel.UID; model.Progress_MobilePlan = planModel.mobilePlan; model.Progress_MobileTomorrowratio = @""; model.Progress_actualratio = @""; NSRange range = [planModel.Start rangeOfString:@"T"]; NSString *start = [planModel.Start substringToIndex:range.location]; NSRange range1 = [planModel.Finish rangeOfString:@"T"]; NSString *finish = [planModel.Finish substringToIndex:range1.location]; model.Progress_planstarttime = start; model.Progress_plannendtime = finish; //获取累计 [self getTaskAddWithModel:model]; } - (void)getTaskAddWithModel:(PBTaskScheduleModel *)model { [[PBNetworkTools sharedTools] GetMobileAddWithTreeID:model.Progress_treeID andPlanId:self.schedulePlanModel.UID 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) { model.Progress_MobileAddratio = networkModel.Data; model.MobileAddratio = networkModel.Data; [self processingRatio:model andFillDate:self.fillDate]; [self.tableView reloadRowsAtIndexPaths:@[self.currentIndexPath] withRowAnimation:UITableViewRowAnimationFade]; }else { [YJProgressHUD showFailed:@"获取累计失败" inview:self.view]; } }]; } - (void)setupNav { self.title = @"任务进度"; PBBackNavItem *backNav = [PBBackNavItem backNacItem]; backNav.title = @"返回"; [backNav addTarget:self action:@selector(backItemAction) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *backNavItem = [[UIBarButtonItem alloc] initWithCustomView:backNav]; self.navigationItem.leftBarButtonItem = backNavItem; UIBarButtonItem *saveNavItem = [[UIBarButtonItem alloc] initWithTitle:@"保存" style:UIBarButtonItemStylePlain target:self action:@selector(saveAction)]; self.navigationItem.rightBarButtonItem = saveNavItem; } - (void)backItemAction { [PBNoteCenter removeObserver:self]; [self.navigationController popViewControllerAnimated:YES]; } - (void)saveAction{ // 先上传图片 NSMutableArray *files = [[NSMutableArray alloc] init]; NSMutableString *names = [[NSMutableString alloc] init]; for (PBImageModel *imageModel in self.imageArrM) { if(imageModel.image){ [files addObject:imageModel.image]; [names appendString:[NSString stringWithFormat:@"%@,", imageModel.name]]; } } // names = [names substringToIndex:([names length]-1)]; if (files.count > 0){ [[PBNetworkTools sharedTools] scheduleUploadImagesWithFiles:files andNames:names.copy andPlanID:self.schedulePlanModel.UID andUnittime:self.fillDate andorganizeId:self.projectModel.organizeid 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) { [self saveTask]; }else { [YJProgressHUD showFailed:networkModel.Msg inview:self.view]; } }]; }else { [self saveTask]; } } - (void)deleteImageWithIndex:(NSInteger)index { UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"确认删除图片" message:@"" preferredStyle:(UIAlertControllerStyleActionSheet)]; UIAlertAction *alertA = [UIAlertAction actionWithTitle:@"删除" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) { PBImageModel *model = self.imageArrM[index]; [[PBNetworkTools sharedTools] DelteImageWithGuid:model.bf_guid 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) { [self.imageArrM removeObjectAtIndex:index]; NSIndexSet *set = [[NSIndexSet alloc] initWithIndex:0]; [self.tableView reloadSections:set withRowAnimation:UITableViewRowAnimationFade]; }else { [YJProgressHUD showFailed:networkModel.Msg inview:self.view]; } }]; }]; UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]; [alertC addAction:alertA]; [alertC addAction:cancel]; [self presentViewController:alertC animated:YES completion:nil]; } - (void)saveTask { [YJProgressHUD showProgress:@"正在保存..." inView:self.view]; NSMutableArray *planArrM = [[NSMutableArray alloc] init]; NSMutableArray *unPlanArrM = [[NSMutableArray alloc] init]; for (PBTaskScheduleModel *obj in self.planTaskArrM) { // if (obj.MobileSafe_Name == nil || obj.MobileSafe_Measure == nil) { // [YJProgressHUD showMessage:@"请填写完整" inView:self.view]; // return; // } NSDictionary *dict = @{ @"Progress_MobilePlan": obj.Progress_MobilePlan == nil? @"" : obj.Progress_MobilePlan, //任务层级 @"Progress_Name": obj.Progress_Name == nil? @"" : obj.Progress_Name, // 任务项 @"Progress_treeID": obj.Progress_treeID == nil? @"" : obj.Progress_treeID, //当前任务id @"Progress_planstarttime": obj.Progress_planstarttime == nil? @"" : obj.Progress_planstarttime, // 计划开始时间 @"Progress_plannendtime": obj.Progress_plannendtime == nil? @"" : obj.Progress_plannendtime, //计划结束时间 @"Progress_state": obj.Progress_state == nil? @"" : obj.Progress_state, //任务状态 @"Progress_MobileReason": obj.Progress_MobileReason == nil? @"" : obj.Progress_MobileReason, //滞后原因 @"Progress_planratio": obj.Progress_planratio == nil? @"" : obj.Progress_planratio, //计划完成比例 @"Progress_actualratio": obj.Progress_actualratio == nil? @"" : obj.Progress_actualratio, //今日完成比例 @"Progress_MobileTomorrowratio": obj.Progress_MobileTomorrowratio == nil? @"" : obj.Progress_MobileTomorrowratio, //明日完成比例 @"Progress_MobileAddratio": obj.Progress_MobileAddratio == nil? @"" : obj.Progress_MobileAddratio, //累计完成比例 @"Progress_MobileImageID": @"", // 图片id @"Progress_ProjectID": self.schedulePlanModel.UID == nil? @"" : self.schedulePlanModel.UID, // 进度计划id @"Progress_createuser": self.creatName == nil? @"" : self.creatName, //填报人 登录人 @"Progress_unittime": self.fillDate == nil? @"" : self.fillDate, //填报时间 @"organizeId": self.projectModel.organizeid == nil? @"" :self.projectModel.organizeid, //项目编码 @"Progress_MobileCompany": self.unitText == nil? @"" : self.unitText //施工单位 }; [planArrM addObject:dict]; } for (PBTaskScheduleModel *obj in self.unplanTaskArrM) { NSDictionary *dict = @{ @"NoProgress_Name": obj.NoProgress_Name == nil? @"" : obj.NoProgress_Name, // 备注 @"NoProgress_ProjectID": self.schedulePlanModel.UID == nil? @"" : self.schedulePlanModel.UID, // 进度计划id @"NoProgress_unittime": self.fillDate == nil? @"" : self.fillDate, //填报时间 @"NoProgress_Username": self.creatName == nil? @"" : self.creatName, //填报人 @"organizeId": self.projectModel.organizeid == nil? @"" : self.projectModel.organizeid, //填报人 @"NoProgress_MobileCompany": self.unitText == nil? @"" : self.unitText }; [unPlanArrM addObject:dict]; } NSDictionary *mobile = @{ @"Plan_json" : planArrM.copy, @"NoPlan_json" : unPlanArrM.copy }; [[PBNetworkTools sharedTools] AddMobileJSONWithOrganizeId:self.projectModel.organizeid andMobile:mobile andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) { if (error) { NSLog(@"%@",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]; PBScheduleListModel *listModel = [[PBScheduleListModel alloc] init]; listModel.MobilePA_ProjectID = self.schedulePlanModel.UID; listModel.MobilePA_ProjectName = self.schedulePlanModel.Name; listModel.MobilePA_Unittime = self.fillDate; listModel.MobilePA_CreateUser = self.creatName; listModel.MobilePA_Createuserid = self.creatId; listModel.MobilePA_state = @"待提交"; if (self.AddSuccessBlock) { self.AddSuccessBlock(listModel); } [PBNoteCenter removeObserver:self]; [self.navigationController popViewControllerAnimated:YES]; }else { [YJProgressHUD showMessage:networkModel.Msg inView:self.view]; } }]; } - (void)loadTask{ if (!self.isAdd) { [[PBNetworkTools sharedTools] GetSchedualTreeWithOrganizeId:self.projectModel.bimcomposerid andUid:self.schedulePlanModel.UID andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) { if (error) { NSLog(@"%@",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]; NSArray *arr = networkModel.Data; if (arr.count > 0){ NSDictionary *obj = arr[0]; self.schedulePlanModel = [PBSchedulePlanModel yy_modelWithDictionary:obj]; self.fillDate = self.scheduleListModel.MobilePA_Unittime; self.creatName = self.scheduleListModel.MobilePA_CreateUser; self.creatId = self.scheduleListModel.MobilePA_Createuserid; self.isAdd = false; } }else { [YJProgressHUD showMessage:networkModel.Msg inView:self.view]; } }]; } } - (void)loadData { self.dataList = @[@{@"type":@"image", @"name": @"进度形象照片", @"child": self.imageArrM}, @{@"type":@"planTask", @"name": @"计划任务完成情况", @"child": self.planTaskArrM}, @{@"type":@"unplanTask", @"name": @"非计划任务完成情况", @"child": self.unplanTaskArrM}]; if(self.isAdd) { [self.tableView reloadData]; }else { [[PBNetworkTools sharedTools] GetMobileJSONWithUnittime:self.fillDate andCreateuserId:self.creatId andPlanID:self.schedulePlanModel.UID andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) { if (error) { NSLog(@"%@",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]; NSArray *imageArr = [networkModel.Data valueForKey:@"Image_Json"]; NSArray *planArr = [networkModel.Data valueForKey:@"Plan_json"]; NSArray *unplanArr = [networkModel.Data valueForKey:@"NoPlan_json"]; for (NSDictionary *obj in imageArr) { PBImageModel *model = [PBImageModel yy_modelWithDictionary:obj]; [self.imageArrM addObject:model]; } for (NSDictionary *obj in planArr) { PBTaskScheduleModel *model = [PBTaskScheduleModel yy_modelWithDictionary:obj]; model.MobileAddratio = model.Progress_MobileAddratio; [self.planTaskArrM addObject:model]; } for (NSDictionary *obj in unplanArr) { PBTaskScheduleModel *model = [PBTaskScheduleModel yy_modelWithDictionary:obj]; [self.unplanTaskArrM addObject:model]; } [self.tableView reloadData]; if (self.planTaskArrM.count > 0) { PBTaskScheduleModel *model = self.planTaskArrM[0]; self.unitText = model.Progress_MobileCompany; } else if (self.unplanTaskArrM.count > 0){ PBTaskScheduleModel *model = self.unplanTaskArrM[0]; self.unitText = model.NoProgress_MobileCompany; } else { self.unitText = nil; } self.headerView.unitText = self.unitText; }else { [YJProgressHUD showMessage:networkModel.Msg inView:self.view]; } }]; } } - (void)setupUI { self.view.backgroundColor = [UIColor whiteColor]; self.tableView = [[UITableView alloc]initWithFrame:CGRectZero style:UITableViewStyleGrouped]; // UITableViewController *tvc = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped]; // [self addChildViewController:tvc]; // self.tableView = tvc.tableView; self.tableView.dataSource = self; self.tableView.delegate = self; self.tableView.backgroundColor = [UIColor whiteColor]; self.tableView.tableFooterView = [UIView new]; self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; self.tableView.showsVerticalScrollIndicator = NO; self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.estimatedRowHeight = 100.f; [self.tableView registerClass:[PBPlanTaskTableViewCell class] forCellReuseIdentifier:PlanCellID]; [self.tableView registerClass:[PBunPlanTaskTableViewCell class] forCellReuseIdentifier:unPlanCellID]; [self.tableView registerClass:[PBScheduleImgTableViewCell class] forCellReuseIdentifier:ImageCellID]; [self.view addSubview:self.tableView]; if (@available(iOS 15.0, *)) { self.tableView.sectionHeaderTopPadding = 0; } CGFloat bottomH = 64.f; if (IS_IPHONE_X) { bottomH = 64.f + IPHONE_X_BOTTOM; } [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.bottom.left.right.equalTo(self.view); make.bottom.equalTo(self.view).offset(-bottomH); }]; UIButton *uploadImageBtn = [[UIButton alloc] init]; [uploadImageBtn setImage:[UIImage imageNamed:@"uploadImage"] forState:UIControlStateNormal]; [uploadImageBtn addTarget:self action:@selector(uploadImage) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:uploadImageBtn]; [uploadImageBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.tableView.mas_bottom).offset(7); make.left.equalTo(self.view); make.width.equalTo(@140); make.height.equalTo(@48); }]; UIButton *addTaskBtn = [[UIButton alloc] init]; [addTaskBtn setImage:[UIImage imageNamed:@"add_task"] forState:UIControlStateNormal]; [addTaskBtn addTarget:self action:@selector(addTaskAction) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:addTaskBtn]; [addTaskBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.tableView.mas_bottom).offset(7); make.left.equalTo(uploadImageBtn.mas_right); make.right.equalTo(self.view); make.height.equalTo(@48); }]; PBTaskHeaderView *headerV = [[PBTaskHeaderView alloc] initWithFrame:CGRectMake(0, 0, self.view.width, 186)]; self.headerView = headerV; headerV.schedulePlanModel = self.schedulePlanModel; headerV.fillDate = self.fillDate; headerV.unitText = self.unitText; headerV.ChooseDate = ^{ if (self.isAdd) { [self.view endEditing:YES]; [PBKeyWindow addSubview:self.editTimeView]; self.editTimeView.fillData = self.fillDate; self.editTimeView.ChooseCompleteBlock = ^(BOOL isSelsected, NSString *date){ if (isSelsected) { date = [date stringByReplacingOccurrencesOfString:@"年" withString:@"-"]; date = [date stringByReplacingOccurrencesOfString:@"月" withString:@"-"]; date = [date stringByReplacingOccurrencesOfString:@"日" withString:@""]; NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; [formatter setDateFormat:@"yyyy-MM-dd"]; NSDate *newDate = [formatter dateFromString:date]; NSString * dateStr = [formatter stringFromDate:newDate]; self.fillDate = dateStr; self.headerView.fillDate = self.fillDate; } }; [self.editTimeView show]; }else { [YJProgressHUD showMessage:@"无法修改日期" inView:self.view]; } }; headerV.textEditBlock = ^(NSString * _Nonnull text) { self.unitText = text; }; self.tableView.tableHeaderView = headerV; } - (void)addTaskAction { UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"添加任务" message:@"" preferredStyle:(UIAlertControllerStyleActionSheet)]; UIAlertAction *alertA = [UIAlertAction actionWithTitle:@"计划任务" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) { PBTaskScheduleModel *task = [[PBTaskScheduleModel alloc] init]; [self.planTaskArrM addObject:task]; [self.tableView reloadSections:[[NSIndexSet alloc] initWithIndex:1] withRowAnimation:UITableViewRowAnimationFade]; }]; UIAlertAction *alertA1 = [UIAlertAction actionWithTitle:@"非计划任务" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) { PBTaskScheduleModel *task = [[PBTaskScheduleModel alloc] init]; [self.unplanTaskArrM addObject:task]; [self.tableView reloadSections:[[NSIndexSet alloc] initWithIndex:2] withRowAnimation:UITableViewRowAnimationFade]; }]; UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]; [alertC addAction:alertA]; [alertC addAction:alertA1]; [alertC addAction:cancel]; [self presentViewController:alertC animated:YES completion:nil]; } - (void)uploadImage { [self.view endEditing:YES]; [self takePhotoLibrary]; } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return self.dataList.count; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { NSDictionary *item = self.dataList[section]; NSArray *arr = [item valueForKey:@"child"]; NSString *type = [item valueForKey:@"type"]; if ([type isEqualToString:@"image"]){ if (arr.count > 0) { return 1; }else { return 0; } } return arr.count; } - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 52; } - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { //最后一个 return 0.01; } - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { return nil; } - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView *bgView = [[UIView alloc]init]; bgView.backgroundColor = [UIColor whiteColor]; UIView *iconV = [[UIView alloc] init]; iconV.backgroundColor = PBColor(95, 158, 249); [bgView addSubview:iconV]; [iconV mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(bgView).offset(20); make.size.mas_equalTo(CGSizeMake(6, 20)); make.left.equalTo(bgView); }]; NSDictionary *dict = self.dataList[section]; UILabel *nameL = [UILabel z_labelWithText:[dict valueForKey:@"name"] Color:[UIColor z_colorWithR:95 G:158 B:249] isBold:YES Font:18]; [bgView addSubview:nameL]; [nameL mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.equalTo(iconV); make.left.equalTo(iconV.mas_right).offset(5); }]; return bgView; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSDictionary *item = self.dataList[indexPath.section]; NSString *type = [item valueForKey:@"type"]; NSArray *arr = [item valueForKey:@"child"]; if ([type isEqualToString:@"image"]) { PBScheduleImgTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ImageCellID forIndexPath:indexPath]; cell.DeleteImageBlock = ^(NSInteger index) { [self deleteImageWithIndex:index]; }; cell.imageArr = self.imageArrM; return cell; }else if ([type isEqualToString:@"planTask"]){ PBTaskScheduleModel *model = arr[indexPath.row]; PBPlanTaskTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:PlanCellID forIndexPath:indexPath]; cell.taskScheduleModel = model; cell.taskIndex = indexPath.row + 1; cell.ChooseTaskBlock = ^{ [self.view endEditing:YES]; self.currentIndexPath = indexPath; PBChooseOneTaskViewController *taskVC = [[PBChooseOneTaskViewController alloc] init]; taskVC.planModel = self.schedulePlanModel; [self.navigationController pushViewController:taskVC animated:YES]; }; cell.DeleteBlock = ^{ [self.planTaskArrM removeObjectAtIndex:indexPath.row]; [self.tableView reloadSections:[[NSIndexSet alloc] initWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationFade]; }; cell.selectionStyle = UITableViewCellSelectionStyleNone; return cell; }else { PBTaskScheduleModel *model = arr[indexPath.row]; PBunPlanTaskTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:unPlanCellID forIndexPath:indexPath]; cell.taskScheduleModel = model; cell.taskIndex = indexPath.row + 1; cell.DeleteBlock = ^{ [self.unplanTaskArrM removeObjectAtIndex:indexPath.row]; [self.tableView reloadSections:[[NSIndexSet alloc] initWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationFade]; }; cell.selectionStyle = UITableViewCellSelectionStyleNone; return cell; } } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { } - (void)takePhotoLibrary { PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus]; if (status == PHAuthorizationStatusNotDetermined) {//未作出回应 [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) { if(status == PHAuthorizationStatusAuthorized) { dispatch_async(dispatch_get_main_queue(), ^{//用户点击ok [self pushLFImagePickerController]; }); } else { dispatch_async(dispatch_get_main_queue(), ^{//点击不允许访问 NSLog(@"点击不允许访问"); }); } }]; }else if (status == PHAuthorizationStatusRestricted) {//没有被授权访问 可能家长控制 }else if (status == PHAuthorizationStatusDenied) {//已明确否认相册权限 UIAlertController * alertController = [UIAlertController alertControllerWithTitle:@"无法访问相册" message:@"请在iPhone的""设置-隐私-相册""中允许访问相册" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]; UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"设置" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { if (@available(iOS 10.0, *)) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{} completionHandler:nil]; } else { NSLog(@"选择取消"); } }]; [alertController addAction:cancelAction]; [alertController addAction:okAction]; [self presentViewController:alertController animated:YES completion:nil]; }else if (status == PHAuthorizationStatusAuthorized){//有权限访问 [self pushLFImagePickerController]; } } - (void)pushLFImagePickerController { LFImagePickerController *imagePicker = [[LFImagePickerController alloc] initWithMaxImagesCount:9 delegate:self]; imagePicker.allowTakePicture = YES;//内部显示相机 imagePicker.isSelectOriginalPhoto = YES;//是否选择原图 imagePicker.allowPickingType = LFPickingMediaTypePhoto;//用户是否可以选择视频 imagePicker.allowPickingOriginalPhoto = NO;//原图按钮将隐藏,用户将不能发送原图 imagePicker.maxPhotoBytes = 1024 * 1024 * 100;//最大图片所选字节大小 if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0f) { imagePicker.syncAlbum = YES; /** 实时同步相册 */ } // imagePicker.selectedAssets = self.selectAssetArr; [self presentViewController:imagePicker animated:YES completion:nil]; } #pragma mark - LFImagePickerControllerDelegate - (void)lf_imagePickerController:(LFImagePickerController *)picker didFinishPickingResult:(NSArray */*> *)results { NSMutableArray *imageArrM = [[NSMutableArray alloc] init]; for (NSInteger i = 0; i < results.count; i++) { LFResultObject *result = results[i]; if ([result isKindOfClass:[LFResultImage class]]){ LFResultImage *resultImage = (LFResultImage *)result; NSData *imageData = UIImageJPEGRepresentation(resultImage.originalImage, 0.5); UIImage *originalImage = [UIImage imageWithData:imageData]; PBImageModel *imageModel = [[PBImageModel alloc] init]; imageModel.image = originalImage; imageModel.name = @""; [imageArrM addObject:imageModel]; } } // NSDictionary *dict = self.dataList[self.currentIndexPath.section]; // NSArray *arr = [dict valueForKey:@"child"]; // PBTaskScheduleModel *model = arr[self.currentIndexPath.row]; // [model.imageArr addObjectsFromArray:imageArrM.copy]; // [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:self.currentIndexPath,nil] withRowAnimation:UITableViewRowAnimationFade]; [self.imageArrM addObjectsFromArray:imageArrM]; [self.tableView reloadSections:[[NSIndexSet alloc] initWithIndex:0] withRowAnimation:UITableViewRowAnimationFade]; } - (void)setSchedulePlanModel:(PBSchedulePlanModel *)schedulePlanModel{ _schedulePlanModel = schedulePlanModel; NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; [formatter setDateFormat:@"yyyy-MM-dd"]; self.fillDate = [formatter stringFromDate:[NSDate date]]; self.creatName = Realname; self.creatId = UserID; self.isAdd = true; } - (void)setScheduleListModel:(PBScheduleListModel *)scheduleListModel { _scheduleListModel = scheduleListModel; PBSchedulePlanModel *planModel = [[PBSchedulePlanModel alloc] init]; planModel.UID = scheduleListModel.MobilePA_ProjectID; planModel.Name = scheduleListModel.MobilePA_ProjectName; self.schedulePlanModel = planModel; self.fillDate = scheduleListModel.MobilePA_Unittime; self.creatName = scheduleListModel.MobilePA_CreateUser; self.creatId = scheduleListModel.MobilePA_Createuserid; self.isAdd = false; } - (void)setProjectModel:(PBProjectModel *)projectModel { _projectModel = projectModel; } - (PBEditTimeView *)editTimeView { if (_editTimeView == nil) { _editTimeView = [[PBEditTimeView alloc] initWithFrame:[UIScreen mainScreen].bounds]; _editTimeView.visualViewHeight = 300; } return _editTimeView; } -(NSMutableArray *)imageArrM { if (_imageArrM == nil) { _imageArrM = [[NSMutableArray alloc] init]; } return _imageArrM; } - (NSMutableArray *)planTaskArrM { if (_planTaskArrM == nil) { _planTaskArrM = [[NSMutableArray alloc] init]; } return _planTaskArrM; } - (NSMutableArray *)unplanTaskArrM { if (_unplanTaskArrM == nil) { _unplanTaskArrM = [[NSMutableArray alloc] init]; } return _unplanTaskArrM; } - (void)dealloc { [PBNoteCenter removeObserver:self]; } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end