// // MyTDTopicDetailVC.m // smartRhino // // Created by niuzhen on 2019/12/19. // Copyright © 2019 tederen. All rights reserved. // #import "MyTDTopicDetailVC.h" #import "NoteBookDetailCell.h" #import "NoteBookShareVC.h" #import "MoveViewController.h" #import "ChangeTopicVC.h" #import "TDGroupInfoListVC.h" #import "TextInputView.h" #import "MHTopicCell.h" #import "MHTopic.h" #import "MHTopicFrame.h" #import "ClickOKViewController.h" #import "ReadListVC.h" #import "HomeDetailController.h" #import "ChatMsgNoticeDetailVC.h" #import "NoteBookDetailVC.h" #import "MyFavoriteVC.h" #import "NoteBookVC.h" #import "TDInterLeterDetailVC.h" #import "FileOpenViewController.h" #import "EMChatFileShowVC.h" #import "MyTDTopicCreateVC.h" #import "NoticeUnreadVC.h" #import "DownFileViewController.h" #import "CountDataVC.h" #import "WorkFlowDetailsController.h" #import "MyTDGroupViewController.h" #import "MoveViewController.h" #import "MyApprovalPageDetail.h" #import "WorkFlowDetailsController.h" #import "OtherFavoriteVC.h" #import "OtherNoteBookVC.h" #import "MailListDetailVC.h" #import "ReadListVC.h" @interface MyTDTopicDetailVC () @property (strong,nonatomic) IBOutlet UITableView *tableView; @property (nonatomic,assign) NSUInteger currentPage; @property (nonatomic,strong) MyNoteBookDetailModel *currentNoteModel; @property (nonatomic,strong) MyNodeBookZanModel *currentZanModel; @property (nonatomic,strong) MyNoteBookCommentModel *currentNoteCommentModel; @property (nonatomic,strong) NSMutableArray *commentArray; @property (nonatomic,assign) BOOL isFresh; @property (weak, nonatomic) IBOutlet UILabel *titleL; @property (weak, nonatomic) IBOutlet UIButton *commentButton; @property (weak, nonatomic) IBOutlet UIButton *commentScrollBtn; @property (weak, nonatomic) IBOutlet UILabel *commentNumberLabel; @property (weak, nonatomic) IBOutlet UIButton *zanButton; @property (weak, nonatomic) IBOutlet UILabel *zanNumberLabel; @property (weak, nonatomic) IBOutlet UIButton *collectButton; @property (weak, nonatomic) IBOutlet UILabel *collectNumberLabel; @property (weak, nonatomic) IBOutlet UIButton *shareButton; @property (weak, nonatomic) IBOutlet UILabel *shareNumberLabel; @property (weak, nonatomic) IBOutlet UILabel *commentCountL; @property (weak, nonatomic) IBOutlet UIImageView *zanImgV; @property (weak, nonatomic) IBOutlet UILabel *zanCountL; @property (weak, nonatomic) IBOutlet UIImageView *collectImgV; @property (weak, nonatomic) IBOutlet UILabel *collectL; @property (weak, nonatomic) IBOutlet UIImageView *shareImgV; @property (weak, nonatomic) IBOutlet UILabel *shareCountL; @property (weak, nonatomic) IBOutlet UIView *TalkView; @property (weak, nonatomic) IBOutlet UIView *ReplayView; @property (weak, nonatomic) IBOutlet UIButton *ReplayBtn; @property (weak, nonatomic) IBOutlet UIView *BottomView; @property (nonatomic, strong) TextInputView *commentInputView; @property (assign, nonatomic) NSInteger countComment; @property (strong, nonatomic) NoteBookShareVC *noteBookShareVC; @property (nonatomic,assign) BOOL isSort; @property (nonatomic,assign) BOOL isScrComment; @property (nonatomic,assign) CGFloat webH; @property (nonatomic,strong) WKWebView * webView; @property (nonatomic,assign) BOOL dismissSelf; @property (nonatomic,copy) NSString * shareText; @property (nonatomic,assign) BOOL IsShareText; @property (nonatomic,assign) NSInteger commentId; @property (nonatomic,assign) NSInteger sendUserId; @end @implementation MyTDTopicDetailVC +(MyTDTopicDetailVC *)initMyTDTopicDetailVC{ MyTDTopicDetailVC *controller = [StoryboardManager.shared.myTDTopic instantiateViewControllerWithIdentifier:@"MyTDTopicDetailVC"]; return controller; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; WS(weakSelf); switch (self.type) { case CollectModel_InterMail: { [self setMailBottomView:YES]; [self.ReplayBtn setAction:^{ [weakSelf ReplayAction]; }]; self.titleL.text = @"站内信"; } break; case CollectModel_NewTopic: { self.titleL.text = @"话题"; [self setMailBottomView:NO]; } break; case CollectModel_Toipc: { self.titleL.text = @"话题"; [self setMailBottomView:NO]; } break; case CollectModel_Notice: { self.titleL.text = @"通知"; [self setMailBottomView:NO]; } break; case CollectModel_NoteBook: { self.titleL.text = @"笔记"; [self setMailBottomView:NO]; } break; default: { self.titleL.text = @"话题"; [self setMailBottomView:NO]; } break; } } - (void)setMailBottomView:(BOOL)isSet { if (isSet) { self.TalkView.hidden = YES; self.ReplayView.hidden = NO; self.ReplayBtn.layer.cornerRadius = 5.f; self.ReplayBtn.layer.masksToBounds = YES; self.ReplayBtn.layer.borderColor = UIColorHex(0x0F8AE3).CGColor; self.ReplayBtn.layer.borderWidth = 0.5f; [self.BottomView setBackgroundColor:UIColorHex(0xF5F5F5)]; }else{ [self.BottomView setBackgroundColor:[UIColor whiteColor]]; self.TalkView.hidden = NO; self.TalkView.layer.cornerRadius = 4.f; self.TalkView.layer.masksToBounds = YES; self.TalkView.layer.borderColor = UIColorHex(0xE5E5E5).CGColor; self.TalkView.layer.borderWidth = 0.5f; self.ReplayView.hidden = YES; } } - (void)ReplayAction{ UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet]; UIAlertAction *alertAction1 = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { }]; [alertAction1 setValue:UIColorHex(#0A0A0A) forKey:@"titleTextColor"]; WS(weakSelf); UIAlertAction *alertAction2 = [UIAlertAction actionWithTitle:@"回复" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { weakSelf.webH = 0; MyTDTopicCreateVC * vc = [MyTDTopicCreateVC initMyTDTopicCreateVC]; vc.upDateBlock = ^{ [weakSelf headRefresh]; }; vc.replayType = MailReplayOne; vc.type = weakSelf.type; vc.isEdit = YES; vc.Id = weakSelf.Id; [weakSelf.navigationController pushViewController:vc animated:YES]; }]; [alertAction2 setValue:UIColorHex(#0A0A0A) forKey:@"titleTextColor"]; UIAlertAction *alertAction3 = [UIAlertAction actionWithTitle:@"回复全部" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { weakSelf.webH = 0; MyTDTopicCreateVC * vc = [MyTDTopicCreateVC initMyTDTopicCreateVC]; vc.upDateBlock = ^{ [weakSelf headRefresh]; }; vc.replayType = MailReplayAll; vc.isEdit = YES; vc.type = weakSelf.type; vc.Id = weakSelf.Id; [weakSelf.navigationController pushViewController:vc animated:YES]; }]; [alertAction3 setValue:UIColorHex(#0A0A0A) forKey:@"titleTextColor"]; [alert addAction:alertAction2]; [alert addAction:alertAction3]; [alert addAction:alertAction1]; [self presentViewController:alert animated:YES completion:^{ }]; } - (void)viewDidLoad { [super viewDidLoad]; self.fd_prefersNavigationBarHidden = YES; [self setTableViewRefresh]; WS(weakSelf); [self.shareButton setAction:^{ [weakSelf ShareDetail]; }]; [self.zanButton setAction:^{ [weakSelf gotoZanHander]; }]; if (self.type != CollectModel_InterMail) { [self.commentButton setAction:^{ [weakSelf commentHander]; }]; [self.commentScrollBtn setAction:^{ weakSelf.isScrComment = !weakSelf.isScrComment; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [weakSelf scrollToCommentViewTop]; }); }]; } [self.view addSubview:self.noteBookShareVC.view]; [self.view addSubview:self.commentInputView]; self.tableView.tableHeaderView = self.webView; self.webView.UIDelegate = self; self.webView.navigationDelegate = self; self.webView.scrollView.delegate = self; [self headRefresh]; // [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(menuShow) name:UIMenuControllerDidShowMenuNotification object:nil]; // // [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(menuHide) name:UIMenuControllerWillHideMenuNotification object:nil]; // 通知-监听键盘弹出事件 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeKeyboardWillShowNotification:) name:UIKeyboardWillShowNotification object:nil]; // 通知-监听键盘回收事 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeKeyboardWillHideNotification:) name:UIKeyboardWillHideNotification object:nil]; } #pragma mark - UIKeyBoradNotification - (void)changeKeyboardWillShowNotification:(NSNotification*)notification { WS(weakSelf); NSDictionary *userInfo = [notification userInfo]; // 键盘弹出后的frame的结构体对象 NSValue *valueEndFrame = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]; // 得到键盘弹出后的键盘视图所在y坐标 CGFloat keyBoardEndY = valueEndFrame.CGRectValue.origin.y; // 键盘弹出的动画时间 NSNumber *duration = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]; // 键盘弹出的动画曲线 NSNumber *curve = [userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey]; // 添加移动动画,使视图跟随键盘移动(动画时间和曲线都保持一致) [UIView animateWithDuration:[duration doubleValue] animations:^{ [UIView setAnimationBeginsFromCurrentState:YES]; [UIView setAnimationCurve:[curve intValue]]; [UIView animateWithDuration:0.5 animations:^{ [weakSelf.commentInputView startAnimationWithY:keyBoardEndY - 150.f]; }]; } completion:^(BOOL finished) { }]; } - (void)changeKeyboardWillHideNotification:(NSNotification*)notification { WS(weakSelf); NSDictionary *userInfo = [notification userInfo]; // 键盘弹出的动画时间 NSNumber *duration = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]; // 键盘弹出的动画曲线 NSNumber *curve = [userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey]; [UIView animateWithDuration:[duration doubleValue]animations:^{ [weakSelf.commentInputView startAnimationWithY:SCREEN_HEIGHT]; [UIView setAnimationBeginsFromCurrentState:YES]; [UIView setAnimationCurve:[curve intValue]]; } completion:^(BOOL finished) { }]; } - (void)setTableViewRefresh{ WS(weakSelf); self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ [weakSelf headRefresh]; }]; self.tableView.mj_footer = [MJRefreshBackStateFooter footerWithRefreshingBlock:^{ [weakSelf footerRefresh]; }]; } - (void)setBottomViewData:(MyNoteBookDetailModel *)model { self.countComment = model.CommentCount; if (model.CommentCount == 0) { self.commentCountL.text = [NSString stringWithFormat:@"评 论"]; }else{ if (model.CommentCount > 10000) { self.commentCountL.text = [NSString stringWithFormat:@"%.1f万\n评 论",model.CommentCount / 10000.0]; }else{ self.commentCountL.text = [NSString stringWithFormat:@"%ld\n评 论",(long)model.CommentCount]; } } self.zanCountL.text = [NSString stringWithFormat:@"%ld",(long)model.PraiseCount]; self.collectL.text = [NSString stringWithFormat:@"%ld",(long)model.CollectCount]; self.shareCountL.text = [NSString stringWithFormat:@"%ld",(long)model.RetransmissionCount]; self.zanCountL.hidden = model.PraiseCount == 0 ? YES : NO; self.collectL.hidden = model.CollectCount == 0 ? YES : NO; self.shareCountL.hidden = model.RetransmissionCount == 0 ? YES : NO; self.zanImgV.image = model.IsPraise ? IMG(@"zan_yes"):IMG(@"zan_no"); self.collectImgV.image = model.IsCollect ? IMG(@"icon_collect_off"):IMG(@"收藏五角星"); self.shareImgV.image = IMG(@"icon_share"); WS(weakSelf); [self.collectButton setAction:^{ if (model.IsCollect) { UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"真的取消收藏吗?" message:nil preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *actionYes = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { NSMutableDictionary *dic = [[NSMutableDictionary alloc]init]; [dic setValue:@(self.Id) forKey:@"CollectionDataId"]; /// 1文章 2话题 3 收藏 4笔记 5通知 6站内信 7小组 8 会议详情 14工作流审批 300 文件 400 会议纪要 [dic setValue:@(self.type) forKey:@"CollectionType"]; [dic setValue:@(0) forKey:@"FolderId"]; [dic setValue:@(0) forKey:@"SourceUserId"]; [[HttpManager sharedHttpManager] PUTUrl:Host(API_CreateCollect) parameters:dic success:^(id _Nonnull responseObject) { [weakSelf refreshData]; } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; }]; UIAlertAction *actionNo = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { }]; [alert addAction:actionYes]; [alert addAction:actionNo]; [weakSelf presentViewController:alert animated:YES completion:^{ }]; }else{ [weakSelf gotoCollectHander]; } }]; self.zanCountL.textColor = model.IsPraise ? UIColorHex(#009AFF):UIColorHex(#999999); self.collectL.textColor = model.IsCollect ? UIColorHex(#009AFF):UIColorHex(#999999); self.shareCountL.textColor = UIColorHex(#009AFF); } #pragma mark - 网络请求数据 - (void)getNoticeData { WS(weakSelf); dispatch_semaphore_t sem = dispatch_semaphore_create(0); __block NSInteger httpFinishCount = 0; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [[HttpManager sharedHttpManager] GETUrl:[NSString stringWithFormat:@"%@%ld",Host(API_Notice_Detail),(long)self.Id] parameters:@{} responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"通知正文%@",responseObject); weakSelf.currentNoteModel = [[MyNoteBookDetailModel alloc]initWithDictionary:responseObject error:nil]; weakSelf.sendUserId = weakSelf.currentNoteModel.UserId; if (++httpFinishCount == 3) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; NSDictionary * comParaDict = @{@"ArticleId":@(self.Id), @"TypeValue":@(2),//通知 2 @"Page":@(self.currentPage), @"PerPage":@(20), @"sort":weakSelf.isSort ? @"asc":@"desc" }; [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Comment_List) parameters:comParaDict responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"评论数据列表%@",responseObject); if ([responseObject[@"Items"] isKindOfClass:[NSArray class]]) { for (NSDictionary * dict in responseObject[@"Items"]) { MHTopic * topic = [MHTopic modelWithDictionary:dict]; if ([[dict objectForKey:@"TopicCommentReplyResults"] isKindOfClass:[NSArray class]]) { NSMutableArray * subArray = [NSMutableArray array]; for (NSDictionary * subDict in dict[@"TopicCommentReplyResults"]) { MHComment * commentModel = [MHComment modelWithDictionary:subDict]; [subArray addObject:commentModel]; } topic.CommentReplyResults = [NSMutableArray arrayWithArray:subArray]; } [weakSelf.commentArray addObject:[weakSelf _topicFrameWithTopic:topic]]; } } if (++httpFinishCount == 3) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; NSDictionary * AnaParaDict = @{@"SourceId":@(self.Id), @"TypeValue":@(2),//通知 2 @"Page":@(1), @"PerPage":@(20), @"sort":@"" }; [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Analyze_List) parameters:AnaParaDict responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"点赞列表%@",responseObject); weakSelf.currentZanModel = [[MyNodeBookZanModel alloc]initWithDictionary:responseObject error:nil]; if (++httpFinishCount == 3) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER); dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf.tableView.mj_header endRefreshing]; [weakSelf.tableView.mj_footer endRefreshing]; }); }); } - (void)getTopic{ WS(weakSelf); dispatch_semaphore_t sem = dispatch_semaphore_create(0); __block NSInteger httpFinishCount = 0; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [[HttpManager sharedHttpManager] POSTUrl:Host(APP_Topic_App_Detail) parameters:@{@"Id":@(self.Id),@"UserId":@([AppUserModel sharedAppUserModel].Id)} responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"话题正文%@",responseObject); weakSelf.currentNoteModel = [[MyNoteBookDetailModel alloc]initWithDictionary:responseObject error:nil]; if (++httpFinishCount == 3) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; NSDictionary * comParaDict = @{@"ArticleId":@(self.Id), @"TypeValue":@(1),//话题 1 @"Page":@(self.currentPage), @"PerPage":@(20), @"sort":weakSelf.isSort ? @"asc":@"desc" }; [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Comment_List) parameters:comParaDict responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"评论数据列表%@",responseObject); if ([responseObject[@"Items"] isKindOfClass:[NSArray class]]) { for (NSDictionary * dict in responseObject[@"Items"]) { MHTopic * topic = [MHTopic modelWithDictionary:dict]; if ([[dict objectForKey:@"TopicCommentReplyResults"] isKindOfClass:[NSArray class]]) { NSMutableArray * subArray = [NSMutableArray array]; for (NSDictionary * subDict in dict[@"TopicCommentReplyResults"]) { MHComment * commentModel = [MHComment modelWithDictionary:subDict]; [subArray addObject:commentModel]; } topic.CommentReplyResults = [NSMutableArray arrayWithArray:subArray]; } [weakSelf.commentArray addObject:[weakSelf _topicFrameWithTopic:topic]]; } } if (++httpFinishCount == 3) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; NSDictionary * AnaParaDict = @{@"SourceId":@(self.Id), @"TypeValue":@(1),//话题 1 @"Page":@(1), @"PerPage":@(20), @"sort":@"" }; [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Analyze_List) parameters:AnaParaDict responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"点赞列表%@",responseObject); weakSelf.currentZanModel = [[MyNodeBookZanModel alloc]initWithDictionary:responseObject error:nil]; if (++httpFinishCount == 3) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER); dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf.tableView.mj_header endRefreshing]; [weakSelf.tableView.mj_footer endRefreshing]; }); }); } - (void)getMeeting{ WS(weakSelf); dispatch_semaphore_t sem = dispatch_semaphore_create(0); __block NSInteger httpFinishCount = 0; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSString * meetId = [NSString stringWithFormat:@"%ld",(long)weakSelf.Id]; [[HttpManager sharedHttpManager] GETUrl:Host(UpdateMeeting(meetId)) parameters:@{} responseStyle:JOSN success:^(id _Nonnull responseObject) { weakSelf.currentNoteModel = [[MyNoteBookDetailModel alloc]initWithDictionary:responseObject error:nil]; if (++httpFinishCount == 3) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; NSDictionary * comParaDict = @{@"ArticleId":@(self.Id), @"TypeValue":@(10),//会议 10 @"Page":@(self.currentPage), @"PerPage":@(20), @"sort":weakSelf.isSort ? @"asc":@"desc" }; [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Comment_List) parameters:comParaDict responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"评论数据列表%@",responseObject); if ([responseObject[@"Items"] isKindOfClass:[NSArray class]]) { for (NSDictionary * dict in responseObject[@"Items"]) { MHTopic * topic = [MHTopic modelWithDictionary:dict]; if ([[dict objectForKey:@"TopicCommentReplyResults"] isKindOfClass:[NSArray class]]) { NSMutableArray * subArray = [NSMutableArray array]; for (NSDictionary * subDict in dict[@"TopicCommentReplyResults"]) { MHComment * commentModel = [MHComment modelWithDictionary:subDict]; [subArray addObject:commentModel]; } topic.CommentReplyResults = [NSMutableArray arrayWithArray:subArray]; } [weakSelf.commentArray addObject:[weakSelf _topicFrameWithTopic:topic]]; } } if (++httpFinishCount == 3) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; NSDictionary * AnaParaDict = @{@"SourceId":@(self.Id), @"TypeValue":@(10),//会议 10 @"Page":@(1), @"PerPage":@(20), @"sort":@"" }; [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Analyze_List) parameters:AnaParaDict responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"点赞列表%@",responseObject); weakSelf.currentZanModel = [[MyNodeBookZanModel alloc]initWithDictionary:responseObject error:nil]; if (++httpFinishCount == 3) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER); dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf.tableView.mj_header endRefreshing]; [weakSelf.tableView.mj_footer endRefreshing]; }); }); } - (void)getNote{ WS(weakSelf); dispatch_semaphore_t sem = dispatch_semaphore_create(0); __block NSInteger httpFinishCount = 0; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [[HttpManager sharedHttpManager] GETUrl:[NSString stringWithFormat:@"%@%@%ld",BaseUrl,API_NoteBook_Detail,(long)self.Id] parameters:@{} responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"笔记正文%@",responseObject); weakSelf.currentNoteModel = [[MyNoteBookDetailModel alloc]initWithDictionary:responseObject error:nil]; if (++httpFinishCount == 3) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; NSDictionary * comParaDict = @{@"ArticleId":@(self.Id), @"TypeValue":@(3),//会议 10 @"Page":@(self.currentPage), @"PerPage":@(20), @"sort":weakSelf.isSort ? @"asc":@"desc" }; [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Comment_List) parameters:comParaDict responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"评论数据列表%@",responseObject); if ([responseObject[@"Items"] isKindOfClass:[NSArray class]]) { for (NSDictionary * dict in responseObject[@"Items"]) { MHTopic * topic = [MHTopic modelWithDictionary:dict]; if ([[dict objectForKey:@"TopicCommentReplyResults"] isKindOfClass:[NSArray class]]) { NSMutableArray * subArray = [NSMutableArray array]; for (NSDictionary * subDict in dict[@"TopicCommentReplyResults"]) { MHComment * commentModel = [MHComment modelWithDictionary:subDict]; [subArray addObject:commentModel]; } topic.CommentReplyResults = [NSMutableArray arrayWithArray:subArray]; } [weakSelf.commentArray addObject:[weakSelf _topicFrameWithTopic:topic]]; } } if (++httpFinishCount == 3) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; NSDictionary * AnaParaDict = @{@"SourceId":@(self.Id), @"TypeValue":@(3),//会议 10 @"Page":@(1), @"PerPage":@(20), @"sort":@"" }; [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Analyze_List) parameters:AnaParaDict responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"点赞列表%@",responseObject); weakSelf.currentZanModel = [[MyNodeBookZanModel alloc]initWithDictionary:responseObject error:nil]; if (++httpFinishCount == 3) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER); dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf.tableView.mj_header endRefreshing]; [weakSelf.tableView.mj_footer endRefreshing]; }); }); } - (void)getMail { WS(weakSelf); [[HttpManager sharedHttpManager] GETUrl:[NSString stringWithFormat:@"%@%ld",Host(API_InterLetterDetail),(long)self.Id] parameters:@{} responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"%@",responseObject); if ([responseObject isKindOfClass:[NSDictionary class]]) { [weakSelf.tableView.mj_header endRefreshing]; [weakSelf.tableView.mj_footer endRefreshing]; NSArray * array = responseObject[@"Items"]; if ([array.firstObject isKindOfClass:[NSDictionary class]]) { weakSelf.sendUserId = [[array.firstObject objectForKey:@"UserId"] integerValue]; } weakSelf.currentNoteModel = [[MyNoteBookDetailModel alloc]initWithDictionary:array.firstObject error:nil]; dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf setBottomViewData:weakSelf.currentNoteModel]; [weakSelf.tableView reloadData]; }); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; } #pragma mark - 刷新点赞数据 - (void)refreshNoticeData { WS(weakSelf); dispatch_semaphore_t sem = dispatch_semaphore_create(0); __block NSInteger httpFinishCount = 0; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [[HttpManager sharedHttpManager] GETUrl:[NSString stringWithFormat:@"%@%ld",Host(API_Notice_Detail),(long)self.Id] parameters:@{} responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"通知正文%@",responseObject); weakSelf.currentNoteModel = [[MyNoteBookDetailModel alloc]initWithDictionary:responseObject error:nil]; if (++httpFinishCount == 2) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; NSDictionary * AnaParaDict = @{@"SourceId":@(self.Id), @"TypeValue":@(2),//通知 2 @"Page":@(1), @"PerPage":@(20), @"sort":@"" }; [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Analyze_List) parameters:AnaParaDict responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"点赞列表%@",responseObject); weakSelf.currentZanModel = [[MyNodeBookZanModel alloc]initWithDictionary:responseObject error:nil]; if (++httpFinishCount == 2) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER); dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf setBottomViewData:weakSelf.currentNoteModel]; [weakSelf.tableView reloadData]; }); }); } - (void)refreshTopicData { WS(weakSelf); dispatch_semaphore_t sem = dispatch_semaphore_create(0); __block NSInteger httpFinishCount = 0; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [[HttpManager sharedHttpManager] POSTUrl:Host(APP_Topic_App_Detail) parameters:@{@"Id":@(self.Id),@"UserId":@([AppUserModel sharedAppUserModel].Id)} responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"话题正文%@",responseObject); weakSelf.currentNoteModel = [[MyNoteBookDetailModel alloc]initWithDictionary:responseObject error:nil]; if (++httpFinishCount == 2) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; NSDictionary * AnaParaDict = @{@"SourceId":@(self.Id), @"TypeValue":@(1),//话题 1 @"Page":@(1), @"PerPage":@(20), @"sort":@"" }; [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Analyze_List) parameters:AnaParaDict responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"点赞列表%@",responseObject); weakSelf.currentZanModel = [[MyNodeBookZanModel alloc]initWithDictionary:responseObject error:nil]; if (++httpFinishCount == 2) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER); dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf setBottomViewData:weakSelf.currentNoteModel]; [weakSelf.tableView reloadData]; }); }); } - (void)refreshMeetingData { WS(weakSelf); dispatch_semaphore_t sem = dispatch_semaphore_create(0); __block NSInteger httpFinishCount = 0; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSString * meetId = [NSString stringWithFormat:@"%ld",(long)weakSelf.Id]; [[HttpManager sharedHttpManager] GETUrl:Host(UpdateMeeting(meetId)) parameters:@{} responseStyle:JOSN success:^(id _Nonnull responseObject) { weakSelf.currentNoteModel = [[MyNoteBookDetailModel alloc]initWithDictionary:responseObject error:nil]; if (++httpFinishCount == 2) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; NSDictionary * AnaParaDict = @{@"SourceId":@(self.Id), @"TypeValue":@(10),//话题 1 @"Page":@(1), @"PerPage":@(20), @"sort":@"" }; [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Analyze_List) parameters:AnaParaDict responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"点赞列表%@",responseObject); weakSelf.currentZanModel = [[MyNodeBookZanModel alloc]initWithDictionary:responseObject error:nil]; if (++httpFinishCount == 2) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER); dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf setBottomViewData:weakSelf.currentNoteModel]; [weakSelf.tableView reloadData]; }); }); } - (void)refreshNoteData { WS(weakSelf); dispatch_semaphore_t sem = dispatch_semaphore_create(0); __block NSInteger httpFinishCount = 0; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [[HttpManager sharedHttpManager] GETUrl:[NSString stringWithFormat:@"%@%@%ld",BaseUrl,API_NoteBook_Detail,(long)self.Id] parameters:@{} responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"话题正文%@",responseObject); weakSelf.currentNoteModel = [[MyNoteBookDetailModel alloc]initWithDictionary:responseObject error:nil]; if (++httpFinishCount == 2) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; NSDictionary * AnaParaDict = @{@"SourceId":@(self.Id), @"TypeValue":@(3),//话题 1 @"Page":@(1), @"PerPage":@(20), @"sort":@"" }; [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Analyze_List) parameters:AnaParaDict responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"点赞列表%@",responseObject); weakSelf.currentZanModel = [[MyNodeBookZanModel alloc]initWithDictionary:responseObject error:nil]; if (++httpFinishCount == 2) { dispatch_semaphore_signal(sem); } } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER); dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf setBottomViewData:weakSelf.currentNoteModel]; [weakSelf.tableView reloadData]; }); }); } - (MHTopicFrame *)_topicFrameWithTopic:(MHTopic *)topic { MHTopicFrame *topicFrame = [[MHTopicFrame alloc] init]; // 传递微博模型数据,计算所有子控件的frame topicFrame.topic = topic; return topicFrame; } - (void)sortCommentList { WS(weakSelf); NSArray * array = self.commentArray; self.commentArray =[NSMutableArray arrayWithArray:[[array reverseObjectEnumerator] allObjects]]; dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf.tableView reloadData]; }); } - (void)RefreshCommentList { WS(weakSelf); [self.commentArray removeAllObjects]; self.currentPage = 1; NSDictionary * paraDict = @{@"ArticleId":@(self.Id), @"TypeValue":@([self backTypeValue]),//话题 1 @"Page":@(self.currentPage), @"PerPage":@(20), @"sort":weakSelf.isSort ? @"asc":@"desc" }; [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Comment_List) parameters:paraDict responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"评论数据列表%@",responseObject); if ([responseObject[@"Items"] isKindOfClass:[NSArray class]]) { for (NSDictionary * dict in responseObject[@"Items"]) { MHTopic * topic = [MHTopic modelWithDictionary:dict]; if ([[dict objectForKey:@"TopicCommentReplyResults"] isKindOfClass:[NSArray class]]) { NSMutableArray * subArray = [NSMutableArray array]; for (NSDictionary * subDict in dict[@"TopicCommentReplyResults"]) { MHComment * commentModel = [MHComment modelWithDictionary:subDict]; [subArray addObject:commentModel]; } topic.CommentReplyResults = [NSMutableArray arrayWithArray:subArray]; } [weakSelf.commentArray addObject:[weakSelf _topicFrameWithTopic:topic]]; } } dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf.tableView reloadData]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ weakSelf.isScrComment = YES; [weakSelf scrollToCommentViewTop]; }); }); } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; } - (void)headRefresh{ self.isFresh = YES; self.currentPage = 1; [self.commentArray removeAllObjects]; [self loadDataWebView]; switch (self.type) { case CollectModel_Notice: { [self getNoticeData]; } break; case CollectModel_Toipc: { [self getTopic]; } break; case CollectModel_NewTopic: { [self getNote]; } break; case CollectModel_Group: { [self getTopic]; } break; case CollectModel_meetMian: { [self getMeeting]; } break; case CollectModel_NoteBook: { [self getNote]; } break; case CollectModel_InterMail: { [self getMail]; } break; case CollectModel_Aritle: { [self getTopic]; } break; default: break; } } - (void)footerRefresh{ self.isFresh = NO; self.currentPage += 1; if (self.commentArray.count == self.currentNoteCommentModel.Total) { self.tableView.mj_footer.hidden = YES; [self.tableView.mj_footer resetNoMoreData]; return; } NSDictionary * paraDict = @{@"ArticleId":@(self.Id), @"TypeValue":@([self backTypeValue]),//话题 1 @"Page":@(self.currentPage), @"PerPage":@(20), @"sort":self.isSort ? @"asc":@"desc" }; WS(weakSelf); [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Comment_List) parameters:paraDict responseStyle:JOSN success:^(id _Nonnull responseObject) { NSLog(@"评论数据列表%@",responseObject); if ([responseObject[@"Items"] isKindOfClass:[NSArray class]]) { for (NSDictionary * dict in responseObject[@"Items"]) { MHTopic * topic = [MHTopic modelWithDictionary:dict]; if ([[dict objectForKey:@"TopicCommentReplyResults"] isKindOfClass:[NSArray class]]) { NSMutableArray * subArray = [NSMutableArray array]; for (NSDictionary * subDict in dict[@"TopicCommentReplyResults"]) { MHComment * commentModel = [MHComment modelWithDictionary:subDict]; [subArray addObject:commentModel]; } topic.CommentReplyResults = [NSMutableArray arrayWithArray:subArray]; } [weakSelf.commentArray addObject:[weakSelf _topicFrameWithTopic:topic]]; } } dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf.tableView reloadData]; }); } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); weakSelf.currentPage -= 1; }]; [self.tableView.mj_footer endRefreshing]; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ if (self.type == CollectModel_InterMail) { return 0; } return 2; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ if (self.currentZanModel.Items.count == 0 && self.commentArray.count == 0) { switch (section) { case 0: return 0; break; default: return self.commentArray.count; break; } }else{ switch (section) { case 0: return 1; break; default: return self.commentArray.count; break; } } } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { if (self.currentZanModel.Items.count == 0 && self.commentArray.count == 0) { MHTopicFrame *topicFrame = self.commentArray[indexPath.row]; if (topicFrame.tableViewFrame.size.height == 0) { return topicFrame.height+topicFrame.tableViewFrame.size.height; }else{ return topicFrame.height+topicFrame.tableViewFrame.size.height+MHTopicVerticalSpace; } }else{ switch (indexPath.section) { case 0: return UITableViewAutomaticDimension; break; default: { MHTopicFrame *topicFrame = self.commentArray[indexPath.row]; if (topicFrame.tableViewFrame.size.height == 0) { return topicFrame.height + topicFrame.tableViewFrame.size.height; }else{ return topicFrame.height + topicFrame.tableViewFrame.size.height; } } break; } } } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ WS(weakSelf); if (self.currentZanModel.Items.count == 0 && self.commentArray.count == 0) { MHTopicCell *cell = [MHTopicCell cellWithTableView:tableView]; cell.backgroundColor = [UIColor whiteColor]; MHTopicFrame *topicFrame = self.commentArray[indexPath.row]; cell.topicFrame = topicFrame; cell.createTimeLabel.text = [NSString stringWithFormat:@"%@ %@",topicFrame.topic.FloorCount,topicFrame.topic.CreatedTime]; [cell.thumbBtn setAction:^{ [weakSelf gotoZanCommentHanderModel:topicFrame.topic indexPath:indexPath]; }]; cell.replyContentBlock = ^{ [weakSelf replyCommentName:topicFrame.topic.Name andId:[NSString stringWithFormat:@"%ld",(long)topicFrame.topic.Id]]; // if (topicFrame.topic.UserId != [AppUserModel sharedAppUserModel].Id) { // [weakSelf replyCommentName:topicFrame.topic.Name andId:[NSString stringWithFormat:@"%ld",(long)topicFrame.topic.Id]]; // } }; __block MHTopicCell * bCell = cell; cell.longBlock = ^{ weakSelf.commentId = topicFrame.topic.Id; [weakSelf longDeleteSelf:bCell]; }; cell.longSubBlock = ^(NSInteger commentId,UILabel * label) { weakSelf.commentId = commentId; [weakSelf longDeleteSubCell:label]; }; cell.delegate = self; return cell; }else{ switch (indexPath.section) { case 0:{ WS(weakSelf); NoteBookDetailCell *cell = [NoteBookDetailCell configCell3:tableView indexPath:indexPath]; cell.commentSortBtn.hidden = self.commentArray.count == 0 ? YES : NO; [cell.commentSortBtn setAction:^{ weakSelf.isSort = !weakSelf.isSort; cell.commentSortBtn.selected = !cell.commentSortBtn.isSelected; [weakSelf sortCommentList]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ weakSelf.isScrComment = YES; [weakSelf scrollToCommentViewTop]; }); }]; switch (self.currentZanModel.Items.count) { case 0:{ cell.zanNameLabel.text = @""; cell.zanNumberlabel.text = @""; }break; case 1:{ MyNoteBookZanSubModel *model = self.currentZanModel.Items[0]; cell.zanNameLabel.text = model.UserName; cell.zanNumberlabel.text = [NSString stringWithFormat:@" %lu人点赞",(unsigned long)self.currentZanModel.Items.count]; }break; case 2:{ MyNoteBookZanSubModel *model = self.currentZanModel.Items[0]; MyNoteBookZanSubModel *model1 = self.currentZanModel.Items[1]; cell.zanNameLabel.text = [NSString stringWithFormat:@"%@、%@",model.UserName,model1.UserName]; cell.zanNumberlabel.text = [NSString stringWithFormat:@" %lu人点赞",(unsigned long)self.currentZanModel.Items.count]; }break; case 3:{ MyNoteBookZanSubModel *model = self.currentZanModel.Items[0]; MyNoteBookZanSubModel *model1 = self.currentZanModel.Items[1]; MyNoteBookZanSubModel *model2 = self.currentZanModel.Items[2]; cell.zanNameLabel.text = [NSString stringWithFormat:@"%@、%@、%@",model.UserName,model1.UserName,model2.UserName]; cell.zanNumberlabel.text = [NSString stringWithFormat:@" %lu人点赞",(unsigned long)self.currentZanModel.Items.count]; }break; default:{ MyNoteBookZanSubModel *model = self.currentZanModel.Items[0]; MyNoteBookZanSubModel *model1 = self.currentZanModel.Items[1]; MyNoteBookZanSubModel *model2 = self.currentZanModel.Items[2]; cell.zanNameLabel.text = [NSString stringWithFormat:@"%@、%@、%@",model.UserName,model1.UserName,model2.UserName]; cell.zanNumberlabel.text = [NSString stringWithFormat:@" 等%lu人点赞",(unsigned long)self.currentZanModel.Total]; }break; } return cell; }break; default:{ MHTopicCell *cell = [MHTopicCell cellWithTableView:tableView]; MHTopicFrame *topicFrame = self.commentArray[indexPath.row]; cell.topicFrame = topicFrame; cell.createTimeLabel.text = [NSString stringWithFormat:@"%@ %@",topicFrame.topic.FloorCount,topicFrame.topic.CreatedTime]; [cell.thumbBtn setAction:^{ [weakSelf gotoZanCommentHanderModel:topicFrame.topic indexPath:indexPath]; }]; cell.replyContentBlock = ^{ [weakSelf replyCommentName:topicFrame.topic.Name andId:[NSString stringWithFormat:@"%ld",(long)topicFrame.topic.Id]]; // if (topicFrame.topic.UserId != [AppUserModel sharedAppUserModel].Id) { // [weakSelf replyCommentName:topicFrame.topic.Name andId:[NSString stringWithFormat:@"%ld",(long)topicFrame.topic.Id]]; // } }; __block MHTopicCell * bCell = cell; cell.longBlock = ^{ weakSelf.commentId = topicFrame.topic.Id; [weakSelf longDeleteSelf:bCell]; }; cell.longSubBlock = ^(NSInteger commentId,UILabel * label) { weakSelf.commentId = commentId; [weakSelf longDeleteSubCell:label]; }; cell.delegate = self; return cell; }break; } } } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ if (self.currentZanModel.Items.count > 0) { switch (indexPath.section) { case 0://点赞 { ClickOKViewController *vc = [ClickOKViewController initClickOKViewController]; vc.indexId = self.Id; vc.zanToTal = self.currentZanModel.Items.count; vc.type = [self backTypeValue]; [self.navigationController pushViewController:vc animated:YES]; } break; default: break; } } } #pragma mark - 点击文件跳转 - (void)pushVCWithDict:(NSDictionary *)dict { NSInteger Id = [dict[@"id"] integerValue]; NSInteger userId = [dict[@"userId"] integerValue]; NSString * title = dict[@"title"]; WS(weakSelf); switch ([dict[@"type"] integerValue]) { case CollectModel_Group: { TDGroupInfoListVC * vc = [TDGroupInfoListVC initTDGroupInfoListVC]; vc.GroupId = Id; vc.titleStr = title; [self.navigationController pushViewController:vc animated:YES]; } break; case CollectModel_file:{ DownFileViewController * vc = [[DownFileViewController alloc] init]; FlowAttachmentsModel * model = [[FlowAttachmentsModel alloc] init]; model.Title = title; model.SoureId = Id; model.Url = dict[@"bigurl"]; model.MinUrl = dict[@"smallurl"]; model.SoureTypeId = CollectModel_file; vc.model = model; [self.navigationController pushViewController:vc animated:YES]; }break; case CollectModel_Image:{ DownFileViewController * vc = [[DownFileViewController alloc] init]; FlowAttachmentsModel * model = [[FlowAttachmentsModel alloc] init]; model.Title = title; model.SoureId = Id; model.Url = dict[@"bigurl"]; model.MinUrl = dict[@"smallurl"]; model.SoureTypeId = CollectModel_Image; vc.model = model; [self.navigationController pushViewController:vc animated:YES]; }break; case CollectModel_Aritle:{ SHOWLOADING [[HttpManager sharedHttpManager] GETWithUrl:[NSString stringWithFormat:@"%@%ld",Article_Detail_Get,(long)Id] parameters:@{} success:^(id _Nonnull responseObject) { REMOVESHOW; Item *itemModel = [[Item alloc]initWithDictionary:responseObject error:nil]; HomeDetailController *homeDetail = [[HomeDetailController alloc] init]; [homeDetail loadCurrentModel:itemModel]; [weakSelf.navigationController pushViewController:homeDetail animated:YES]; } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; }break; case CollectModel_Notice:{ MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC]; vc.type = CollectModel_Notice; vc.Id = Id; [self.navigationController pushViewController:vc animated:YES]; }break; case CollectModel_Toipc:{ MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC]; vc.type = CollectModel_Toipc; vc.Id = Id; [self.navigationController pushViewController:vc animated:YES]; }break; case CollectModel_NewTopic:{ MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC]; vc.type = CollectModel_NewTopic; vc.Id = Id; [self.navigationController pushViewController:vc animated:YES]; }break; case CollectModel_NoteBook:{ MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC]; vc.type = CollectModel_NoteBook; vc.Id = Id; [self.navigationController pushViewController:vc animated:YES]; }break; case CollectModel_Collect:{ }break; case CollectModel_CollectFile:{ if (userId == [AppUserModel sharedAppUserModel].Id) { MyFavoriteVC *vc = [MyFavoriteVC initMyFavoriteVC]; vc.listType = Id == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB; vc.ParentId = 0; vc.FolderId = Id; vc.myTitle = title; [self.navigationController pushViewController:vc animated:YES]; }else{ OtherFavoriteVC *vc = [OtherFavoriteVC initOtherFavoriteVC]; vc.listType = Id == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB; vc.ParentId = 0; vc.FolderId = Id; vc.myTitle = title; vc.VisitUserId = userId; [self.navigationController pushViewController:vc animated:YES]; } }break; case CollectModel_NoteFile:{ if (userId == [AppUserModel sharedAppUserModel].Id) { NoteBookVC *vc = [NoteBookVC initNoteBookVC]; vc.listType = Id == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB; vc.ParentId = 0; vc.FolderId = Id; vc.myTitle = title; vc.VisitUserId = 0; [self.navigationController pushViewController:vc animated:YES]; }else{ OtherNoteBookVC *vc = [OtherNoteBookVC initOtherNoteBookVC]; vc.listType = Id == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB; vc.ParentId = 0; vc.FolderId = Id; vc.myTitle = title; vc.VisitUserId = userId; [self.navigationController pushViewController:vc animated:YES]; } }break; case CollectModel_InterMail:{ TDInterLeterDetailVC * vc = [TDInterLeterDetailVC initTDInterLeterDetailVC]; vc.detailType = InterLeterDetialType_Sign; vc.interLeterID = Id; [self.navigationController pushViewController:vc animated:YES]; }break; case CollectModel_work:{ MyApprovalPageDetail * vc = [[MyApprovalPageDetail alloc]init]; vc.pageType = Type_ONEC; vc.indexId = Id; vc.title = title; vc.TodoId = Id; [self.navigationController pushViewController:vc animated:YES]; }break; case CollectModel_meetDetail:{ WorkFlowDetailsController *vc = [[WorkFlowDetailsController alloc] initWithId:Id]; [self.navigationController pushViewController:vc animated:YES]; }break; case CollectModel_meetMian:{ MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC]; vc.type = CollectModel_meetMian; vc.Id = Id; [self.navigationController pushViewController:vc animated:YES]; }break; case CollectModel_financeCount:{ CountDataVC *vc = [CountDataVC initCountDataVC]; vc.index = 0; vc.titleStr = @"财务统计"; [self.navigationController pushViewController:vc animated:YES]; }break; case CollectModel_affairsCount:{ CountDataVC *vc = [CountDataVC initCountDataVC]; vc.index = 1; vc.titleStr = @"人事统计"; [self.navigationController pushViewController:vc animated:YES]; }break; case CollectModel_publishCount:{ CountDataVC *vc = [CountDataVC initCountDataVC]; vc.index = 2; vc.titleStr = @"出版统计"; [self.navigationController pushViewController:vc animated:YES]; }break; default: break; } } #pragma mark - 操作 (删除 | 编辑 | 点赞列表 | 点赞正文 | 评论正文 | 转发正文 | 点赞评论 ) /// 删除 - (void)deleteButtonHander{ WS(weakSelf); UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:@"确认撤回" preferredStyle:(UIAlertControllerStyleAlert)]; UIAlertAction * sureAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) { [weakSelf cancelAction]; }]; UIAlertAction * cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { }]; [alert addAction:sureAction]; [alert addAction:cancelAction]; [weakSelf presentViewController:alert animated:YES completion:^{ }]; } - (void)cancelAction { WS(weakSelf); switch (self.type) { case CollectModel_Toipc: { NSString * url = [NSString stringWithFormat:@"%@%ld",Host(API_APP_Topic),(long)self.Id]; [[HttpManager sharedHttpManager] DeleteUrl:url parameters:@{} responseStyle:DATA success:^(id _Nonnull responseObject) { SHOWSUCCESS(@"撤回成功"); if (weakSelf.deleteTopicBlock) { weakSelf.deleteTopicBlock(); } [weakSelf.navigationController popViewControllerAnimated:YES]; } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; } break; case CollectModel_NewTopic: { NSString * url = [NSString stringWithFormat:@"%@%ld",Host(API_NoteBook_Detail),(long)self.Id]; [[HttpManager sharedHttpManager] DeleteUrl:url parameters:@{} responseStyle:DATA success:^(id _Nonnull responseObject) { SHOWSUCCESS(@"撤回成功"); if (weakSelf.deleteTopicBlock) { weakSelf.deleteTopicBlock(); } [weakSelf.navigationController popViewControllerAnimated:YES]; } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; } break; case CollectModel_Group: { NSString * url = [NSString stringWithFormat:@"%@%ld",Host(API_NoteBook_Detail),(long)self.Id]; [[HttpManager sharedHttpManager] DeleteUrl:url parameters:@{} responseStyle:DATA success:^(id _Nonnull responseObject) { SHOWSUCCESS(@"撤回成功"); if (weakSelf.deleteTopicBlock) { weakSelf.deleteTopicBlock(); } [weakSelf.navigationController popViewControllerAnimated:YES]; } failure:^(NSError * _Nonnull error) { }]; } break; case CollectModel_Notice: { NSString * url = [NSString stringWithFormat:@"%@%ld",Host(API_NOTICE_RECALL),(long)self.Id]; [[HttpManager sharedHttpManager] PUTUrl:url parameters:@{} responseStyle:DATA success:^(id _Nonnull responseObject) { SHOWSUCCESS(@"撤回成功"); if (weakSelf.deleteTopicBlock) { weakSelf.deleteTopicBlock(); } [weakSelf.navigationController popViewControllerAnimated:YES]; } failure:^(NSError * _Nonnull error) { }]; } break; case CollectModel_NoteBook: { NSString * url = [NSString stringWithFormat:@"%@%ld",Host(API_NoteBook_Detail),(long)self.Id]; [[HttpManager sharedHttpManager] DeleteUrl:url parameters:@{} responseStyle:DATA success:^(id _Nonnull responseObject) { SHOWSUCCESS(@"撤回成功"); if (weakSelf.deleteTopicBlock) { weakSelf.deleteTopicBlock(); } [weakSelf.navigationController popViewControllerAnimated:YES]; } failure:^(NSError * _Nonnull error) { }]; } break; case CollectModel_meetMian: { NSString * url = [NSString stringWithFormat:@"%@%ld",Host(@"/api/app/meeting/summary/"),(long)self.Id]; [[HttpManager sharedHttpManager] DeleteUrl:url parameters:@{} responseStyle:DATA success:^(id _Nonnull responseObject) { SHOWSUCCESS(@"撤回成功"); if (weakSelf.deleteTopicBlock) { weakSelf.deleteTopicBlock(); } [weakSelf.navigationController popViewControllerAnimated:YES]; } failure:^(NSError * _Nonnull error) { }]; } break; default: break; } } /// 编辑 - (void)editorButtonHander{ self.webH = 0; WS(weakSelf); MyTDTopicCreateVC * vc = [MyTDTopicCreateVC initMyTDTopicCreateVC]; vc.upDateBlock = ^{ [weakSelf headRefresh]; }; vc.isEdit = YES; vc.FolderId = self.currentNoteModel.FolderId; vc.FolderName = self.currentNoteModel.FolderId == 0 ? @"根目录" :self.currentNoteModel.FolderName; vc.replayType = MailReplayEdit; vc.type = self.type; vc.Id = self.Id; [self.navigationController pushViewController:vc animated:YES]; } /// 转发正文 - (void)ShareDetail{ SHOWLOADING NSMutableDictionary *dic = [NSMutableDictionary dictionary]; [dic setValue:@(self.Id) forKey:@"SourceId"]; [dic setValue:@([AppUserModel sharedAppUserModel].Id) forKey:@"UserId"]; [dic setValue:@(4) forKey:@"AnalyzeType"];///转发 [dic setValue:@(0) forKey:@"CommentId"]; [dic setValue:@([self backTypeValue]) forKey:@"TypeValue"];//话题 1 WS(weakSelf); [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Analyze_Set) parameters:dic responseStyle:DATA success:^(id _Nonnull responseObject) { REMOVESHOW [weakSelf refreshData]; weakSelf.IsShareText = NO; [weakSelf shareHander]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ weakSelf.isScrComment = YES; [weakSelf scrollToCommentViewTop]; }); } failure:^(NSError * _Nonnull error) { REMOVESHOW // SHOWERROR([ZYCTool handerResultData:error]); }]; } /// 点赞正文 - (void)gotoZanHander{ SHOWLOADING NSMutableDictionary *dic = [NSMutableDictionary dictionary]; [dic setValue:@(self.Id) forKey:@"SourceId"]; [dic setValue:@([AppUserModel sharedAppUserModel].Id) forKey:@"UserId"]; [dic setValue:@(1) forKey:@"AnalyzeType"];//详情点赞 [dic setValue:@(0) forKey:@"CommentId"]; [dic setValue:@([self backTypeValue]) forKey:@"TypeValue"];//话题 1 WS(weakSelf); [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Analyze_Set) parameters:dic responseStyle:DATA success:^(id _Nonnull responseObject) { REMOVESHOW [weakSelf refreshData]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ weakSelf.isScrComment = YES; [weakSelf scrollToCommentViewTop]; }); } failure:^(NSError * _Nonnull error) { REMOVESHOW // SHOWERROR([ZYCTool handerResultData:error]); }]; } /// 评论正文 - (void)commentHander{ [_commentInputView startEditing]; WEAKSELF self.commentInputView.inputBlock = ^(NSString * _Nonnull content) { NSLog(@"%@",content); [weakSelf sendCommentToServerWithcontent:content]; }; } - (void)sendCommentToServerWithcontent:(NSString *)content { WS(weakSelf); NSMutableDictionary *dicc = [NSMutableDictionary dictionary]; [dicc setValue:@(self.Id) forKey:@"ArticleId"]; [dicc setValue:@([AppUserModel sharedAppUserModel].Id) forKey:@"UserId"]; [dicc setValue:content forKey:@"Content"]; [dicc setValue:@(0) forKey:@"Pid"];//回复评论时用到的ID [dicc setValue:@([self backTypeValue]) forKey:@"TypeValue"];//话题 1 NSLog(@"%@",dicc); [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Comment_Add) parameters:dicc responseStyle:DATA success:^(id _Nonnull responseObject) { SHOWSUCCESS(@"评论成功"); weakSelf.countComment ++; if (weakSelf.countComment == 0) { self.commentCountL.text = [NSString stringWithFormat:@"评 论"]; }else{ if (weakSelf.countComment > 10000) { weakSelf.commentCountL.text = [NSString stringWithFormat:@"%.1f万\n评 论",weakSelf.countComment / 10000.0]; }else{ weakSelf.commentCountL.text = [NSString stringWithFormat:@"%ld\n评 论",(long)weakSelf.countComment]; } } [weakSelf RefreshCommentList]; } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; } /// 转发正文 - (void)shareHander{ [self.noteBookShareVC initNoteBookShareData]; self.noteBookShareVC.view.hidden = !self.noteBookShareVC.view.hidden; } - (NoteBookShareVC *)noteBookShareVC{ if (_noteBookShareVC == nil) { _noteBookShareVC = [NoteBookShareVC initNoteBookShareVC]; [_noteBookShareVC.view setFrame:CGRectMake(0,0, SCREEN_WIDTH, SCREEN_HEIGHT)]; [_noteBookShareVC.view setHidden:YES]; _noteBookShareVC.delegate = self; } return _noteBookShareVC; } -(void)userSelectType:(NSString *)typeName WithIndexPath:(NSIndexPath *)indexPath{ self.noteBookShareVC.view.hidden = !self.noteBookShareVC.view.hidden; if ([typeName isEqualToString:@"发给微信好友"]) { }else if ([typeName isEqualToString:@"发到朋友圈"]){ }else if ([typeName isEqualToString:@"发到微博"]){ }else if ([typeName isEqualToString:@"发给QQ好友"]){ }else if ([typeName isEqualToString:@"发到消息"]){ }else if ([typeName isEqualToString:@"发到小组"]){ [self returnToGroup]; }else if ([typeName isEqualToString:@"发到笔记"]){ [self returnToNote]; }else if ([typeName isEqualToString:@"发到话题"]){ [self returnToTopic]; }else{ } } #pragma mark - 分享功能 - (void)returnToGroup { MyTDGroupViewController * vc = [[MyTDGroupViewController alloc] init]; vc.type = CollectModel_Group; FlowAttachmentsModel * model = [[FlowAttachmentsModel alloc] init]; model.SoureId = self.Id; model.SoureTypeId = self.type; model.Title = self.currentNoteModel.Title; model.Author = self.currentNoteModel.UserName; vc.sendModel = model; vc.isReturn = YES; [self.navigationController pushViewController:vc animated:YES]; } - (void)returnToNote { MoveViewController * vc = [MoveViewController initMoveViewController]; vc.isFromCreateBookVc = YES; vc.TypeId = CreateNotesType; vc.ParentId = 0; FlowAttachmentsModel * model = [[FlowAttachmentsModel alloc] init]; if (self.IsShareText) { model.Title = self.shareText; model.SoureTypeId = 1; }else{ model.SoureId = self.Id; model.SoureTypeId = self.type; model.Title = self.currentNoteModel.Title; model.Author = self.currentNoteModel.UserName; vc.type = CollectModel_NoteBook; } vc.sendModel = model; vc.isReturn = YES; [self.navigationController pushViewController:vc animated:YES]; } - (void)returnToTopic { MyTDTopicCreateVC * vc = [MyTDTopicCreateVC initMyTDTopicCreateVC]; vc.type = CollectModel_NewTopic; FlowAttachmentsModel * model = [[FlowAttachmentsModel alloc] init]; if (self.IsShareText) { model.Title = self.shareText; model.SoureTypeId = 1; }else{ model.SoureId = self.Id; model.SoureTypeId = self.type; model.Title = self.currentNoteModel.Title; model.Author = self.currentNoteModel.UserName; vc.type = CollectModel_NewTopic; } vc.sendModel = model; vc.isReturn = YES; [self.navigationController pushViewController:vc animated:YES]; } /// 点赞评论 - (void)gotoZanCommentHanderModel:(MHTopic *)model indexPath:(NSIndexPath *)indexPath{ NSMutableDictionary *dic = [NSMutableDictionary dictionary]; [dic setValue:@(self.Id) forKey:@"SourceId"]; [dic setValue:@([AppUserModel sharedAppUserModel].Id) forKey:@"UserId"]; [dic setValue:@(2) forKey:@"AnalyzeType"];//详情点赞 [dic setValue:@(model.Id) forKey:@"CommentId"]; [dic setValue:@([self backTypeValue]) forKey:@"TypeValue"];//话题 1 WS(weakSelf); [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Analyze_Set) parameters:dic responseStyle:DATA success:^(id _Nonnull responseObject) { model.IsLaud = !model.IsLaud; if (model.IsLaud) { SHOWSUCCESS(@"点赞成功"); }else{ SHOWSUCCESS(@"取消点赞"); } dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf.tableView reloadRow:indexPath.row inSection:indexPath.section withRowAnimation:UITableViewRowAnimationNone]; }); } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; } - (void)gotoCollectHander{ MoveViewController *vc = [MoveViewController initMoveViewController]; // NSInteger meetId = [self.dataDict[@"MeetingId"] integerValue]; vc.CollectionDataId = self.Id; vc.collectType = CollectHanderType_Collect; vc.ParentId = 0; vc.titleStr = @"我的收藏"; vc.TypeId = CreateCollectionType; vc.FolderIds = @[].mutableCopy; // 收藏类型 1文章 2话题 3 收藏 4笔记 5通知 6站内信 7小组 8 会议详情 14工作流审批 300 文件 400 会议纪要 vc.CollectionType = self.type == CreateMeetingType ? 400 : self.type; WS(weakSelf); vc.actionSuss = ^(NSString * _Nonnull status) { if ([status isEqualToString:@"YES"]) { [weakSelf refreshData]; } }; [self.navigationController pushViewController:vc animated:YES]; } - (NSMutableArray *)commentArray{ if (!_commentArray) { _commentArray = [NSMutableArray array]; } return _commentArray; } - (TextInputView *)commentInputView { if (!_commentInputView) { _commentInputView = [[TextInputView alloc] initWithFrame:[UIScreen mainScreen].bounds]; } return _commentInputView; } #pragma mark - MHTopicCellDelegate - (void)topicCellForClickedThumbAction:(MHTopicCell *)topicCell { /** * 这里点击事件自行根据自己UI处理 * */ NSLog(@"---点击👍按钮---"); } - (void)topicCellForClickedMoreAction:(MHTopicCell *)topicCell { /** * 这里点击事件自行根据自己UI处理 * */ // 修改数据源方法 MHTopic *topic = topicCell.topicFrame.topic; topic.IsLaud = !topic.IsLaud; if (topic.IsLaud) { // topic.thumbNums+=1; // }else{ // topic.thumbNums-=1; } // 刷新数据 [self.tableView reloadData]; } - (void)topicCellDidClickedUser:(MHTopicCell *)topicCell { NSLog(@"======%ld",(long)topicCell.topicFrame.topic.UserId); MailListDetailVC * vc = [MailListDetailVC initMailListDetailVC]; vc.indexId = topicCell.topicFrame.topic.UserId; [self.navigationController pushViewController:vc animated:YES]; // MHUserInfoController *userInfo = [[MHUserInfoController alloc] init]; // userInfo.user = topicCell.topicFrame.topic.user; // [self.navigationController pushViewController:userInfo animated:YES]; } - (void)topicCell:(MHTopicCell *)topicCell didClickedUser:(NSString *)userId { NSLog(@"======%@",userId); // MHUserInfoController *userInfo = [[MHUserInfoController alloc] init]; // userInfo.user = user; // [self.navigationController pushViewController:userInfo animated:YES]; } - (void)topicCell:(MHTopicCell *)topicCell didSelectRowAtIndexPath:(NSIndexPath *)indexPath { MHTopicFrame *topicFrame = topicCell.topicFrame; MHCommentFrame *commentFrame = topicFrame.commentFrames[indexPath.row]; NSLog(@"这里回复 -- :%@",commentFrame.comment.Id); if (commentFrame.comment.UserId != [AppUserModel sharedAppUserModel].Id) { [self replyCommentName:commentFrame.comment.Name andId:commentFrame.comment.Id]; } } #pragma mark - 长按删除评论Cell - (void)longDeleteSelf:(MHTopicCell *)cell { [self becomeFirstResponder]; UIMenuController *menu = [UIMenuController sharedMenuController]; UIMenuItem *deleteItem = [[UIMenuItem alloc] initWithTitle:@"删除" action:@selector(deleteItemAction:)]; [menu setMenuItems: @[deleteItem]]; NSLog(@"%@",NSStringFromCGRect(cell.frame)); [menu setTargetRect:cell.contentLabel.frame inView:cell]; [menu setMenuVisible:YES animated:NO]; } - (void)longDeleteSubCell:(UILabel *)label { [self becomeFirstResponder]; UIMenuController *menu = [UIMenuController sharedMenuController]; UIMenuItem *deleteItem = [[UIMenuItem alloc] initWithTitle:@"删除" action:@selector(deleteItemAction:)]; [menu setMenuItems: @[deleteItem]]; [menu setTargetRect:label.frame inView:label]; [menu setMenuVisible:YES animated:NO]; } -(BOOL)canBecomeFirstResponder { return YES; } //是否可以接收某些菜单的某些交互操作 -(BOOL)canPerformAction:(SEL)action withSender:(id)sender{ return (action == @selector(deleteItemAction:)); } - (void)deleteItemAction:(UIMenuItem *)item { WS(weakSelf); SHOWLOADING [[HttpManager sharedHttpManager] DeleteUrl:Host(API_APP_Comment_Delete) parameters:@{@"ArticleId":@(self.Id),@"CommentId":@(self.commentId)} responseStyle:DATA success:^(id _Nonnull responseObject) { REMOVESHOW SHOWSUCCESS(@"删除成功"); [weakSelf RefreshCommentList]; } failure:^(NSError * _Nonnull error) { REMOVESHOW }]; } - (void)replyCommentName:(NSString *)name andId:(NSString *)commentId{ [_commentInputView startEditing]; [_commentInputView setPlaceText:[NSString stringWithFormat:@"回复%@:",name]]; WEAKSELF self.commentInputView.inputBlock = ^(NSString * _Nonnull content) { NSLog(@"%@",content); [weakSelf replyCommentWithcontent:content andId:commentId]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ weakSelf.isScrComment = YES; [weakSelf scrollToCommentViewTop]; }); }; } - (void)replyCommentWithcontent:(NSString *)content andId:(NSString *)commentId { WS(weakSelf); NSMutableDictionary *dicc = [NSMutableDictionary dictionary]; [dicc setValue:@(self.Id) forKey:@"ArticleId"]; [dicc setValue:@([AppUserModel sharedAppUserModel].Id) forKey:@"UserId"]; [dicc setValue:content forKey:@"Content"]; [dicc setValue:commentId forKey:@"Pid"];//回复评论时用到的ID [dicc setValue:@([self backTypeValue]) forKey:@"TypeValue"];//话题 1 NSLog(@"%@",dicc); [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Comment_Add) parameters:dicc responseStyle:DATA success:^(id _Nonnull responseObject) { SHOWSUCCESS(@"评论成功"); [weakSelf RefreshCommentList]; } failure:^(NSError * _Nonnull error) { // SHOWERROR([ZYCTool handerResultData:error]); }]; } - (void)scrollToCommentViewTop { if (self.isScrComment) { if (self.commentArray.count > 0 || self.currentZanModel.Items.count > 0) { NSIndexPath * indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES]; } }else{ [self.tableView scrollToTop]; } } - (WKWebView *)webView { if (!_webView) { WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init]; // 实例化对象 WKUserContentController* userContent = [[WKUserContentController alloc] init]; [userContent addScriptMessageHandler:self name:@"delelteAction"]; [userContent addScriptMessageHandler:self name:@"editAction"]; [userContent addScriptMessageHandler:self name:@"postTopicDetailsData"]; [userContent addScriptMessageHandler:self name:@"alreadyRead"]; [userContent addScriptMessageHandler:self name:@"to"]; [userContent addScriptMessageHandler:self name:@"goMeeting"]; [userContent addScriptMessageHandler:self name:@"goUser"]; [userContent addScriptMessageHandler:self name:@"goRead"]; [userContent addScriptMessageHandler:self name:@"postH"]; [userContent addScriptMessageHandler:self name:@"postSave"]; NSMutableString *javascript = [NSMutableString string]; [javascript appendString:@"document.documentElement.style.webkitTouchCallout='none';"];//禁止长按 // [javascript appendString:@"document.documentElement.style.webkitUserSelect='none';"];//禁止选择 WKUserScript *noneSelectScript = [[WKUserScript alloc] initWithSource:javascript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES]; [userContent addUserScript:noneSelectScript]; configuration.userContentController = userContent; WKPreferences *preferences = [WKPreferences new]; preferences.javaScriptCanOpenWindowsAutomatically = YES; preferences.minimumFontSize = 10.0; configuration.preferences = preferences; // 初始化WKWebView _webView = [[WKWebView alloc]initWithFrame:CGRectZero configuration:configuration]; _webView.scrollView.scrollEnabled = NO; _webView.scrollView.bounces = NO; _webView.scrollView.showsVerticalScrollIndicator = NO; _webView.autoresizingMask = UIViewAutoresizingFlexibleHeight; } return _webView; } - (void)loadDataWebView { NSString * url = nil; switch (self.type) { case CollectModel_Group: { url = @"/mobile/topicDetails"; } break; case CollectModel_Toipc: { url = @"/mobile/topicDetails"; } break; case CollectModel_NewTopic: { url = @"/mobile/topicDetails"; } break; case CollectModel_NoteBook: { url = @"/mobile/topicDetails"; } break; case CollectModel_Notice: { url = @"/mobile/noticeDetails"; } break; case CollectModel_InterMail: { url = @"/mobile/mail"; } break; case CollectModel_meetMian: { url = @"/mobile/minutesMeeting"; } break; default: { url = @"/mobile/topicDetails"; } break; } NSURL *pathUrl = [NSURL URLWithString:HtmlHost(url)]; // NSURL *pathUrl = [NSURL URLWithString:[NSString stringWithFormat:@"http://192.168.0.119:8080%@",url]]; NSURLRequest *request = [NSURLRequest requestWithURL:pathUrl]; [self.webView loadRequest:request]; [self.webView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil]; } - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { /** < 法2 > */ /** < loading:防止滚动一直刷新,出现闪屏 > */ if ([keyPath isEqualToString:@"contentSize"]) { CGFloat H = self.webView.scrollView.contentSize.height; NSLog(@"=========== webH :%f",H); if (self.webH != H && H != 0) { self.webH = H; self.tableView.sectionHeaderHeight = self.webH; [self.webView setFrame:CGRectMake(0, 0, SCREEN_WIDTH, self.webH)]; [self setBottomViewData:self.currentNoteModel]; [self.tableView reloadData]; } } } #pragma mark - WKScriptMessageHandler - (void)userContentController:(nonnull WKUserContentController *)userContentController didReceiveScriptMessage:(nonnull WKScriptMessage *)message { if ([message.name isEqualToString:@"delelteAction"]) { [self deleteButtonHander]; } if ([message.name isEqualToString:@"editAction"]) { [self editorButtonHander]; } if ([message.name isEqualToString:@"postTopicDetailsData"]) { NSString *jsonString = [NSString stringWithFormat:@"getData('%ld','%@','%ld')",(long)self.Id,USERDEFAULTSGET(@"LOGINTOKEN"),(long)self.type]; [self.webView evaluateJavaScript:jsonString completionHandler:^(id _Nullable data, NSError * _Nullable error) { NSLog(@"data:%@",data); NSLog(@"error:%@",error); }]; } if ([message.name isEqualToString:@"postH"]) { NSLog(@"msgBody:%@",message.body); NSInteger H = [message.body integerValue]; self.tableView.sectionHeaderHeight = self.webH - H; [self.webView setFrame:CGRectMake(0, 0, SCREEN_WIDTH, self.webH - H)]; [self.tableView reloadData]; } if ([message.name isEqualToString:@"postSave"]) { NSString * imgUrl = message.body; UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet]; UIAlertAction *actionYes = [UIAlertAction actionWithTitle:@"保存图片" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { UIImage * img = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imgUrl]]]; [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ [PHAssetChangeRequest creationRequestForAssetFromImage:img]; } completionHandler:^(BOOL success, NSError * _Nullable error) { dispatch_async(dispatch_get_main_queue(), ^{ if (success) { SHOWSUCCESS(@"图片保存成功"); }else{ SHOWERROR(@"图片保存失败"); } }); }]; }]; UIAlertAction *actionNo = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { }]; [alert addAction:actionYes]; [alert addAction:actionNo]; [self presentViewController:alert animated:YES completion:^{ }]; } if ([message.name isEqualToString:@"alreadyRead"]) { NSLog(@"msgBody:%@",message.body); NSDictionary * dict = (NSDictionary *)message.body; NoticeUnreadVC *vc = [NoticeUnreadVC initNoticeUnreadVC]; vc.Id = self.Id; switch (self.type) { case CollectModel_Notice: vc.type = ReadNoticeType; break; case CollectModel_InterMail: vc.type = ReadMissiveType; break; default: vc.type = ReadNoticeType; break; } vc.readCount = [dict[@"ReadCount"] integerValue]; vc.unReadCount = [dict[@"AllCount"] integerValue] - [dict[@"ReadCount"] integerValue]; [self.navigationController pushViewController:vc animated:YES]; } if ([message.name isEqualToString:@"to"]) { NSLog(@"msgBody:%@",message.body); NSDictionary * dict = (NSDictionary *)message.body; [self pushVCWithDict:dict]; } if ([message.name isEqualToString:@"goMeeting"]) { NSLog(@"msgBody:%@",message.body); NSInteger meetId = [message.body integerValue]; WorkFlowDetailsController *vc = [[WorkFlowDetailsController alloc] initWithId:meetId]; [self.navigationController pushViewController:vc animated:YES]; } if ([message.name isEqualToString:@"goUser"]) { NSLog(@"msgBody:%@",message.body); MailListDetailVC *vc = [MailListDetailVC initMailListDetailVC]; vc.indexId = self.sendUserId; [self.navigationController pushViewController:vc animated:YES]; } if ([message.name isEqualToString:@"goRead"]) { NSLog(@"msgBody:%@",message.body); NSInteger count = [message.body integerValue]; ReadListVC * vc = [ReadListVC initReadListVC]; vc.type = self.type == CollectModel_Aritle ? 1 : self.type; vc.indexId = self.Id; vc.ReadTotal = count; [self.navigationController pushViewController:vc animated:YES]; } } #pragma mark - WKScriptMessageHandler - (NSString *)convertToJson:(NSDictionary *)dict { NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error]; NSString *jsonString; if (!jsonData) { NSLog(@"%@",error); }else{ jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding]; } NSMutableString *mutStr = [NSMutableString stringWithString:jsonString]; NSRange range = {0,jsonString.length}; //去掉字符串中的空格 [mutStr replaceOccurrencesOfString:@" " withString:@"" options:NSLiteralSearch range:range]; NSRange range2 = {0,mutStr.length}; //去掉字符串中的换行符 [mutStr replaceOccurrencesOfString:@"\n" withString:@"" options:NSLiteralSearch range:range2]; return mutStr; } #pragma mark - WKUIDelegete - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(nonnull NSString *)message initiatedByFrame:(nonnull WKFrameInfo *)frame completionHandler:(nonnull void (^)(void))completionHandler { NSLog(@"Aleart=========%@",message); completionHandler(); } - (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage:(nonnull NSString *)message initiatedByFrame:(nonnull WKFrameInfo *)frame completionHandler:(nonnull void (^)(BOOL))completionHandler { completionHandler(YES); } - (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt:(nonnull NSString *)prompt defaultText:(nullable NSString *)defaultText initiatedByFrame:(nonnull WKFrameInfo *)frame completionHandler:(nonnull void (^)(NSString * _Nullable))completionHandler { completionHandler(@"111"); } - (NSString *)arrayToJSONString:(NSArray *)array { NSError *error = nil; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:array options:NSJSONWritingPrettyPrinted error:&error]; NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; return jsonString; } - (void)dealloc { WKWebsiteDataStore *dateStore = [WKWebsiteDataStore defaultDataStore]; [dateStore fetchDataRecordsOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] completionHandler:^(NSArray * __nonnull records) { for (WKWebsiteDataRecord *record in records) { [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:record.dataTypes forDataRecords:@[record] completionHandler:^{ NSLog(@"Cookies for %@ deleted successfully",record.displayName); }]; } }]; WKUserContentController *userCC = self.webView.configuration.userContentController; [userCC removeScriptMessageHandlerForName:@"delelteAction"]; [userCC removeScriptMessageHandlerForName:@"editAction"]; [userCC removeScriptMessageHandlerForName:@"postTopicDetailsData"]; [userCC removeScriptMessageHandlerForName:@"alreadyRead"]; [userCC removeScriptMessageHandlerForName:@"to"]; [userCC removeScriptMessageHandlerForName:@"goMeeting"]; [userCC removeScriptMessageHandlerForName:@"goUser"]; [userCC removeScriptMessageHandlerForName:@"goRead"]; [userCC removeScriptMessageHandlerForName:@"postH"]; [userCC removeScriptMessageHandlerForName:@"postSave"]; [self.webView.scrollView removeObserver:self forKeyPath:@"contentSize"]; [[NSNotificationCenter defaultCenter] removeObserver:self]; [self.webView stopLoading]; self.webView.UIDelegate = nil; self.webView.navigationDelegate = nil; self.webView.scrollView.delegate = nil; [self.webView removeFromSuperview]; } - (NSInteger)backTypeValue { switch (self.type) { case CollectModel_Group: { return 1; } break; case CollectModel_Toipc: { return 1; } break; case CollectModel_Notice: { return 2; } break; case CollectModel_NewTopic: { return 3; } break; case CollectModel_NoteBook: { return 3; } break; case CollectModel_meetMian: { return 10; } break; case CollectModel_InterMail: { return 4; } break; default: { return 1; } break; } } - (void)refreshData { switch (self.type) { case CollectModel_Group: { [self refreshTopicData]; } break; case CollectModel_Toipc: { [self refreshTopicData]; } break; case CollectModel_NewTopic: { [self refreshNoteData]; } break; case CollectModel_Notice: { [self refreshNoticeData]; } break; case CollectModel_NoteBook: { [self refreshNoteData]; } break; case CollectModel_InterMail: { [self getMail]; } break; case CollectModel_meetMian: { [self refreshMeetingData]; } break; default: { [self refreshTopicData]; } break; } } #pragma mark - UIMenuController //指定menu响应事件 屏蔽系统自带响应事件 //- (BOOL)canPerformAction:(SEL)action withSender:(id)sender { // NSLog(@"%@", NSStringFromSelector(action)); // if (action == @selector(tySelectedAll:) // ||action == @selector(shareSelectedText:)) { // return YES; // } // if (action == @selector(cut:) // ||action == @selector(select:) // ||action == @selector(selectAll:) // ||action == @selector(paste:) // ||action == @selector(delete:) // ||action == @selector(makeTextWritingDirectionRightToLeft:) // ||action == @selector(makeTextWritingDirectionLeftToRight:)) { // return NO; // } // return NO; //} //- (void)viewWillDisappear:(BOOL)animated{ // [super viewWillDisappear:animated]; // self.dismissSelf = YES; //} ////允许成为第一响应 //- (BOOL)canBecomeFirstResponder { // return YES; //} //- (BOOL)canResignFirstResponder { // if (self.dismissSelf) { // return YES; // } // return NO; //} // //- (void)tySelectedAll:(UIMenuController *)menu{ // // [self.webView selectAll:menu]; // self.dismissSelf = YES; //} //#pragma mark 实现自定义方法 //- (void)shareSelectedText:(UIMenuController *)menu { // WS(weakSelf); // [self.webView evaluateJavaScript:@"window.getSelection().toString()" completionHandler:^(id _Nullable data, NSError * _Nullable error) { // NSLog(@"选中的文字为:%@", data); // [self.webView copy:data]; // weakSelf.shareText = data; // if (weakSelf.shareText.length > 0) { // weakSelf.IsShareText = YES; // [weakSelf shareHander]; // } // }]; //} //- (void)createMenuItems //{ // UIMenuController * menu = [UIMenuController sharedMenuController]; // UIMenuItem *item1 = [[UIMenuItem alloc]initWithTitle:@"全选" action:@selector(tySelectedAll:)]; // UIMenuItem *item2 = [[UIMenuItem alloc]initWithTitle:@"转发" action:@selector(shareSelectedText:)]; // [menu setMenuItems:@[item1, item2]]; // menu.menuVisible = YES; //} @end