RankDetailViewController.m 28.7 KB
Newer Older
admin's avatar
admin committed
1 2 3 4 5 6 7 8 9
//
//  RankDetailViewController.m
//  redstar
//
//  Created by admin on 15/10/29.
//  Copyright © 2015年 ZWF. All rights reserved.
//

#import "RankDetailViewController.h"
10
#import "RankDetailTableCell.h"
admin's avatar
admin committed
11 12
#import "RankSectionTableCell.h"
#import "RankScrollTableViewCell.h"
13
#import "RankDetailHeaderView.h"
14
#import <UIButton+WebCache.h>
15
#import "RankHeadView.h"
admin's avatar
admin committed
16 17 18 19 20 21 22
#import <MBProgressHUD.h>
#import "HttpClient.h"

#import "TaskGroup.h"
#import "TaskModel.h"
#import "TaskDetailModel.h"
#import "CheckPicViewController.h"
admin's avatar
admin committed
23
#import "CommentView.h"
admin's avatar
admin committed
24 25

#import <UIButton+WebCache.h>
admin's avatar
admin committed
26
#import <RATreeView.h>
27
#import "LargePictureViewController.h"
admin's avatar
admin committed
28

29
#define kRankDetailCell @"RankDetailTableCell"
admin's avatar
admin committed
30 31
#define kRankSectionTableCell @"RankSectionTableviewCell"
#define kRankScrollTableViewCell @"RankScrollTableViewCell"
32

admin's avatar
admin committed
33 34
@interface RankDetailViewController () <RATreeViewDelegate, RATreeViewDataSource, UITextViewDelegate>
@property (nonatomic, strong) RATreeView *treeView;
35

36

admin's avatar
admin committed
37
@property (nonatomic, strong) NSMutableArray *taskData;
admin's avatar
admin committed
38
@property (nonatomic, strong) RankDetailHeaderView *rankDetailHeaderView;
admin's avatar
admin committed
39 40 41 42
@property (nonatomic, strong) UIView *footerView;
@property (nonatomic, strong) UIButton *commentButton;
@property (nonatomic, strong) UIView *backGroundView;
@property (nonatomic, strong) CommentView *commentView;
43

44 45
@property (nonatomic, strong) NSMutableArray *allImageArray;

admin's avatar
admin committed
46 47 48
@end

@implementation RankDetailViewController
admin's avatar
admin committed
49 50 51 52 53 54
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    
    self.navigationController.navigationBar.hidden = NO;
    self.tabBarController.tabBar.hidden = YES;
55
    
admin's avatar
admin committed
56
}
admin's avatar
admin committed
57 58 59 60 61

- (void)viewDidLoad
{
    [super viewDidLoad];
    
admin's avatar
admin committed
62
    self.view.backgroundColor = [UIColor whiteColor];
admin's avatar
admin committed
63
    
admin's avatar
admin committed
64 65 66 67 68 69 70
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
        self.edgesForExtendedLayout = UIRectEdgeNone;
        self.extendedLayoutIncludesOpaqueBars = NO;
        self.modalPresentationCapturesStatusBarAppearance = NO;
        self.navigationController.navigationBar.translucent = NO;
    }
    
admin's avatar
admin committed
71 72 73 74 75 76
    UILabel *customLab = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 30)];
    [customLab setTextColor:[UIColor whiteColor]];
    [customLab setText:@"口碑详情"];
    customLab.font = [UIFont boldSystemFontOfSize:19];
    self.navigationItem.titleView = customLab;
    
77 78 79 80 81 82 83
    UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    backBtn.frame = CGRectMake(0, 0, 30, 44);
    [backBtn setImage:[UIImage imageNamed:@"back_btn"] forState:UIControlStateNormal];
    [backBtn addTarget:self action:@selector(doBack:) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn];
    self.navigationItem.leftBarButtonItem = backItem;

admin's avatar
admin committed
84
    [self.commentButton setTitle:@"添加评论" forState:UIControlStateNormal];
admin's avatar
admin committed
85 86
    // 请求口碑排名详情
    [self requestRankingDetail];
87 88
    self.allImageArray = [NSMutableArray array];

admin's avatar
admin committed
89
    
admin's avatar
admin committed
90 91
}

admin's avatar
admin committed
92

admin's avatar
admin committed
93
#pragma mark - Private Methods
admin's avatar
admin committed
94 95 96 97 98

- (void)requestRankingDetail
{
    NSString *url = [NSString stringWithFormat:@"%@%@%@/%@",kRedStarURL, kInspectDetailURL, self.uuid, self.store_uuid];
    HttpClient *httpClient = [[HttpClient alloc] initWithUrl:url];
99
    
admin's avatar
admin committed
100 101 102 103
    [httpClient getPraiseDetailWithParameters:nil completion:^(id response, NSError *error) {
        NSDictionary *dataDict = response[@"data"];
        TaskDetailModel *taskDetail = [TaskDetailModel taskDetailModelWithDict:dataDict];
        self.rankDetailHeaderView.taskDetail = taskDetail;
admin's avatar
admin committed
104 105 106 107
        [self.rankDetailHeaderView.showAllBtn addTarget:self action:@selector(showAllClick:) forControlEvents:UIControlEventTouchUpInside];
        [self setupScrollView];

        NSArray *dataArray = taskDetail.categories;
admin's avatar
admin committed
108 109 110 111
        
        NSMutableArray *tgArray = [NSMutableArray array];
        for (NSDictionary *dict in dataArray) {
            TaskGroup *taskGroup = [TaskGroup taskGroupWithDict:dict];
admin's avatar
admin committed
112 113 114 115 116 117
            
            for (int a = 0; a < taskGroup.answers.count; a++) {
                TaskModel *task = taskGroup.answers[a];
                task.index = a;
            }
            
admin's avatar
admin committed
118 119 120 121 122
            [tgArray addObject:taskGroup];
        }
        
        _taskData = tgArray;
        
admin's avatar
admin committed
123 124 125
        [self.treeView registerClass:[RankSectionTableCell class] forCellReuseIdentifier:kRankSectionTableCell];
        [self.treeView registerClass:[RankDetailTableCell class] forCellReuseIdentifier:kRankDetailCell];
         [self.treeView registerClass:[RankScrollTableViewCell class] forCellReuseIdentifier:kRankScrollTableViewCell];
admin's avatar
admin committed
126 127
    }];

admin's avatar
admin committed
128
}
129

admin's avatar
admin committed
130
- (void)setupScrollView
admin's avatar
admin committed
131
{
admin's avatar
admin committed
132 133 134 135 136 137 138 139
    int imageCount = (int)self.storePictures.count;
    
    CGFloat marginW = 5.0;
    CGFloat imageViewW = 90 + 2 * marginW;
    CGFloat imageViewH = self.rankDetailHeaderView.rankDetailView.showScrollView.bounds.size.height - 4;
    
    if (imageCount == 0) {
        self.rankDetailHeaderView.rankDetailView.showScrollView.contentSize = CGSizeMake(4 *imageViewW, imageViewH + 4);
admin's avatar
admin committed
140
        
admin's avatar
admin committed
141 142 143 144 145 146 147 148 149
        for (int i = 0; i < 4; i++) {
            UIButton *button = [[UIButton alloc] init];
            [button setImage:[UIImage imageNamed:@"default_pic"] forState:UIControlStateNormal];
            button.frame = CGRectMake(i * imageViewW + 2, 2, imageViewW - 2 * marginW, imageViewH);
            [button addTarget:self action:@selector(showBigPic:) forControlEvents:UIControlEventTouchUpInside];
            [self.rankDetailHeaderView.rankDetailView.showScrollView addSubview:button];
        }
    } else {
        self.rankDetailHeaderView.rankDetailView.showScrollView.contentSize = CGSizeMake(imageCount *imageViewW, imageViewH + 4);
admin's avatar
admin committed
150
        
admin's avatar
admin committed
151 152
        for (int i = 0; i < imageCount; i++) {
            UIButton *button = [[UIButton alloc] init];
153
            button.tag = 1112 + i;
admin's avatar
admin committed
154 155
            NSDictionary *dict = (NSDictionary *)self.storePictures[i];
            NSURL *imageUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", kRedStarURL ,dict[@"fileUrl"]]];
156 157 158 159
            [_allImageArray addObject:imageUrl];
            [button sd_setImageWithURL:imageUrl forState:UIControlStateNormal placeholderImage:[UIImage imageNamed:@"default_pic"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
                //[_allImageArray addObject:image];
            }];
admin's avatar
admin committed
160 161 162 163
            button.frame = CGRectMake(i * imageViewW + 2, 2, imageViewW - 2 * marginW, imageViewH);
            [button addTarget:self action:@selector(showBigPic:) forControlEvents:UIControlEventTouchUpInside];
            [self.rankDetailHeaderView.rankDetailView.showScrollView addSubview:button];
        }
admin's avatar
admin committed
164
        
admin's avatar
admin committed
165 166
    }
}
admin's avatar
admin committed
167

admin's avatar
admin committed
168
- (void)showBigPic:(UIButton *)btn
admin's avatar
admin committed
169
{
170 171
    LargePictureViewController *largePVC = [[LargePictureViewController alloc] init];
    largePVC.allImageArray = _allImageArray;
admin's avatar
admin committed
172
    largePVC.pictureSaveMode = PictureNetWorkMode;
173 174 175 176 177 178
    largePVC.index = btn.tag - 1112;
    [self.navigationController pushViewController:largePVC animated:YES];
    
//    CheckPicViewController *checkVC = [[CheckPicViewController alloc] init];
//    checkVC.checkImage = btn.imageView.image;
//    [self.navigationController pushViewController:checkVC animated:YES];
admin's avatar
admin committed
179 180
}

admin's avatar
admin committed
181 182
// 返回上一页面
- (void)doBack:(UIBarButtonItem *)sender
admin's avatar
admin committed
183
{
admin's avatar
admin committed
184
    [self.navigationController popViewControllerAnimated:YES];
admin's avatar
admin committed
185 186
}

admin's avatar
admin committed
187
- (void)addComment:(UIButton *)sender
188
{
admin's avatar
admin committed
189
    NSArray *permissions = [[NSUserDefaults standardUserDefaults] objectForKey:@"permissions"];
admin's avatar
admin committed
190
    
admin's avatar
admin committed
191
    // 口碑报告 商场风采 图说口碑 口碑标准  问题知识 口碑巡检
admin's avatar
admin committed
192
    
admin's avatar
admin committed
193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225
    if ([permissions containsObject:@"500202"]) {
        
        if (!_backGroundView) {
            _backGroundView = [[UIView alloc] initWithFrame:self.view.bounds];
            UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(closeBackGroundView)];
            [_backGroundView addGestureRecognizer:tapGR];
        }
        if (!_commentView) {
            _commentView = [[CommentView alloc] init];
            _commentView.backgroundColor = [UIColor whiteColor];
        }
        _commentView.contentTextView.text = @"";
        _commentView.contentTextView.delegate = self;
        [_commentView.quitBtn addTarget:self action:@selector(closeBackGroundView) forControlEvents:UIControlEventTouchUpInside];
        [_commentView.sureBtn addTarget:self action:@selector(submitComment:) forControlEvents:UIControlEventTouchUpInside];
        [self.view insertSubview:_backGroundView aboveSubview:_treeView];
        [self.view insertSubview:_commentView aboveSubview:_backGroundView];
        
        _backGroundView.alpha = 0;
        _backGroundView.backgroundColor = [UIColor blackColor];
        
        CGRect toFrame = CGRectMake(0, self.view.frame.size.height - kCommentViewHeight, kScreenWidth, kCommentViewHeight);
        CGRect fromFrame = CGRectMake(0, kScreenHeight, kScreenWidth, kCommentViewHeight);
        
        _commentView.frame = fromFrame;
        [UIView animateWithDuration:0.3 animations:^{
            _backGroundView.alpha = 0.6;
            _commentView.frame = toFrame;
        }];

    } else {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"您没有口碑报告的评论权限!" delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
        [alert show];
226
    }
admin's avatar
admin committed
227 228 229 230 231 232 233 234 235 236
}

// 提交评论
- (void)submitComment:(UIButton *)sender
{
    // 提示框
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"您确定要提交评论吗?" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
    alert.tag = 3652234;
    alert.delegate = self;
    [alert show];
admin's avatar
admin committed
237 238 239 240 241 242 243 244 245 246 247 248 249 250
}

- (void)closeBackGroundView
{
    CGRect fromFrame = CGRectMake(0, kScreenHeight, kScreenWidth, kCommentViewHeight);
    [UIView animateWithDuration:0.3 animations:^{
        _backGroundView.alpha = .0f;
        _commentView.frame = fromFrame;
    } completion:^(BOOL finished) {
        [_backGroundView removeFromSuperview];
        [_commentView removeFromSuperview];
    }];
}

admin's avatar
admin committed
251
- (void)showAllClick:(UIButton *)sender
252
{
admin's avatar
admin committed
253 254
    sender.selected = !sender.selected;
    if (sender.selected) {
255 256 257
        _rankDetailHeaderView.arrowImageView2.transform = CGAffineTransformMakeRotation(-M_PI);

        
admin's avatar
admin committed
258 259 260 261
        _treeView.expandsChildRowsWhenRowExpands = YES;
        
        for (TaskGroup *taskGroup in self.taskData) {
            [_treeView expandRowForItem:taskGroup expandChildren:YES withRowAnimation:RATreeViewRowAnimationFade];
admin's avatar
admin committed
262 263
        }
    } else {
264 265
        _rankDetailHeaderView.arrowImageView2.transform = CGAffineTransformMakeRotation(0);

admin's avatar
admin committed
266 267 268 269 270 271 272 273 274 275 276
        _treeView.expandsChildRowsWhenRowExpands = NO;
        
        for (TaskGroup *taskGroup in self.taskData) {
            [_treeView collapseRowForItem:taskGroup collapseChildren:YES withRowAnimation:RATreeViewRowAnimationFade];
        }
    }
    
    
    
    
}
admin's avatar
admin committed
277

admin's avatar
admin committed
278 279 280 281 282 283 284 285 286 287 288 289 290 291 292
#pragma mark - RAtreeView Delegate/DataSource
- (NSInteger)treeView:(RATreeView *)treeView numberOfChildrenOfItem:(id)item
{
    NSInteger level = [treeView levelForCellForItem:item];
    if (level == -1) {
        return [self.taskData count];
    } else if (level == 0) {
        TaskGroup *data = item;
        return data.answers.count;
    } else if (level == 1) {
        TaskModel *data = item;
        if (data.answerAttachments.count == 0) {
            return 0;
        } else {
            return 1;
admin's avatar
admin committed
293
        }
admin's avatar
admin committed
294
       // return 0;
admin's avatar
admin committed
295
        
admin's avatar
admin committed
296 297
    } else {
        return 0;
298 299 300
    }
}

admin's avatar
admin committed
301 302

- (id)treeView:(RATreeView *)treeView child:(NSInteger)index ofItem:(id)item
303
{
admin's avatar
admin committed
304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319
    NSInteger level = [treeView levelForCellForItem:item];
    if (level == -1) {
        return [self.taskData objectAtIndex:index];
    } else if (level == 0) {
        TaskGroup *data = item;
        return data.answers[index];
    } else if (level == 1) {
        TaskModel *data = item;
        if (data.answerAttachments.count == 0) {
            return nil;
        } else {
            return data.answerAttachments;
        }
    } else {
        return nil;
    }
320 321
}

admin's avatar
admin committed
322
- (UITableViewCell *)treeView:(RATreeView *)treeView cellForItem:(id)item
323
{
admin's avatar
admin committed
324
    NSInteger level = [self.treeView levelForCellForItem:item];
325
    
admin's avatar
admin committed
326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362
    if (level == 0) {
        TaskGroup *data = item;
        RankSectionTableCell *cell = [self.treeView dequeueReusableCellWithIdentifier:kRankSectionTableCell];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        
        cell.categoryLabel.text = [NSString stringWithFormat:@"%@", data.category];
        
        NSString *scoreStr = [NSString stringWithFormat:@"%@ 分", data.score];
        NSMutableAttributedString *scoreAttr = [[NSMutableAttributedString alloc] initWithString:scoreStr];
        [scoreAttr addAttributes:@{NSForegroundColorAttributeName:kNavigationBarColor,NSFontAttributeName:[UIFont systemFontOfSize:19.0f]} range:NSMakeRange(0,scoreAttr.length - 1)];
        [scoreAttr addAttributes:@{NSForegroundColorAttributeName:kDetailSmallTitleColor, NSFontAttributeName:[UIFont systemFontOfSize:14.0f]} range:NSMakeRange(scoreAttr.length - 1,1)];
        [cell.scoreLabel setAttributedText:scoreAttr];
        
        NSString *rankStr = [NSString stringWithFormat:@"第 %@ 名", data.ranking];
        NSMutableAttributedString *rankAttr = [[NSMutableAttributedString alloc] initWithString:rankStr];
        [rankAttr addAttributes:@{NSForegroundColorAttributeName:kRankHeadTitleTextColor,NSFontAttributeName:[UIFont systemFontOfSize:14.0f]} range:NSMakeRange(0,1)];
        [rankAttr addAttributes:@{NSForegroundColorAttributeName:kGradeNumberTextColor} range:NSMakeRange(1,rankStr.length - 2)];
        [rankAttr addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Arial-BoldMT" size:18.0] range:NSMakeRange(1,rankStr.length - 2)];
        [rankAttr addAttributes:@{NSForegroundColorAttributeName:kRankHeadTitleTextColor,NSFontAttributeName:[UIFont systemFontOfSize:14.0f]} range:NSMakeRange(rankStr.length - 1,1)];
        [cell.gradeLabel setAttributedText:rankAttr];
        
        cell.arrowImageView.image = [UIImage imageNamed:@"arrow_down"];
        
        return cell;
    } else if (level == 1) {// if (level == 1)
        TaskModel *data = item;
        
        RankDetailTableCell *cell = [self.treeView dequeueReusableCellWithIdentifier:kRankDetailCell];
        if (!cell) {
            cell = [[RankDetailTableCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:kRankDetailCell];
        }
        
        cell.task = data;
        
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        
        [cell.mainTitleBtn setTitle:[NSString stringWithFormat:@"%d、%@", (int)(data.index + 1) ,data.title] forState:UIControlStateNormal];
363
        if (data.score == NULL || data.score == nil || [data.score isEqual:[NSNull null]]) {
admin's avatar
admin committed
364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379
            cell.scoreLabel.text = [NSString stringWithFormat:@"0分"];
        } else {
            cell.scoreLabel.text = [NSString stringWithFormat:@"%@分", data.score];
        }
        
        return cell;
        
    } else {
        NSArray *data = item;
        RankScrollTableViewCell *cell = [self.treeView dequeueReusableCellWithIdentifier:kRankScrollTableViewCell];
        if (!cell) {
            cell = [[RankScrollTableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:kRankScrollTableViewCell];
        }
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        
        
admin's avatar
admin committed
380
        NSMutableArray *urlArray = [NSMutableArray array];
admin's avatar
admin committed
381
        for (NSDictionary *imageUrlDict in data) {
admin's avatar
admin committed
382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411
            NSString *urlStr = [NSString stringWithFormat:@"%@%@", kRedStarURL, imageUrlDict[@"fileUrl"]];
            [urlArray addObject:urlStr];
        }
        
        CGFloat marginW = 5.0;
        CGFloat imageViewW = 90 + 2 * marginW;
        cell.scrollView.contentSize = CGSizeMake((urlArray.count - 1) * imageViewW, 65);
        
        for (int i = 0; i < urlArray.count; i++) {
            UIButton *button = [[UIButton alloc] init];
            button.translatesAutoresizingMaskIntoConstraints = NO;
            NSString *urlStr = [NSString stringWithFormat:@"%@", urlArray[i]];
            NSURL *url = [NSURL URLWithString:urlStr];
            [button sd_setImageWithURL:url forState:UIControlStateNormal placeholderImage:[UIImage imageNamed:@"default_pic"]];
            [button addTarget:self action:@selector(showBigPic:) forControlEvents:UIControlEventTouchUpInside];
            [cell.scrollView addSubview:button];
            
            
            NSLayoutConstraint *urlTop = [NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:cell.scrollView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0];
            [cell.scrollView addConstraint:urlTop];
            
            NSLayoutConstraint *urlLeft = [NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:cell.scrollView attribute:NSLayoutAttributeLeft multiplier:1.0 constant:i * imageViewW];
            [cell.scrollView addConstraint:urlLeft];
            
            NSLayoutConstraint *urlWidth = [NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:imageViewW];
            [cell.scrollView  addConstraint:urlWidth];
            
            NSLayoutConstraint *urlHeight = [NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:65];
            [cell.scrollView addConstraint:urlHeight];
        }
admin's avatar
admin committed
412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444
        return cell;
    }
    
    
    
    
    
    
}

- (void)treeView:(RATreeView *)treeView willExpandRowForItem:(id)item
{
    NSInteger level = [self.treeView levelForCellForItem:item];
    if (level == 0) {
        RankSectionTableCell *cell = (RankSectionTableCell *)[_treeView cellForItem:item];
        [UIView animateWithDuration:0.2 animations:^{
            cell.arrowImageView.transform = CGAffineTransformIdentity;
            cell.arrowImageView.transform = CGAffineTransformMakeRotation(-M_PI);
        }];
    } else if (level == 1) {
        RankDetailTableCell *cell = (RankDetailTableCell *)[_treeView cellForItem:item];
        [UIView animateWithDuration:0.2 animations:^{
            cell.arrowImageView.transform = CGAffineTransformIdentity;
            cell.arrowImageView.transform = CGAffineTransformMakeRotation(M_PI / 2);
        }];
    }
}

- (void)treeView:(RATreeView *)treeView willCollapseRowForItem:(id)item
{
    NSInteger level = [self.treeView levelForCellForItem:item];
    if (level == 0) {
        RankSectionTableCell *cell = (RankSectionTableCell *)[_treeView cellForItem:item];
445 446 447 448
        [UIView animateWithDuration:0.2 animations:^{
            cell.arrowImageView.transform = CGAffineTransformIdentity;
            cell.arrowImageView.transform = CGAffineTransformMakeRotation(0);
        }];
admin's avatar
admin committed
449 450 451 452 453 454
    } else if (level == 1) {
        RankDetailTableCell *cell = (RankDetailTableCell *)[_treeView cellForItem:item];
        [UIView animateWithDuration:0.2 animations:^{
            cell.arrowImageView.transform = CGAffineTransformIdentity;
            cell.arrowImageView.transform = CGAffineTransformMakeRotation(-0);
        }];
455 456 457 458
    }
}


admin's avatar
admin committed
459 460 461
- (BOOL)treeView:(RATreeView *)treeView canEditRowForItem:(id)item
{
    return NO;
462 463
}

admin's avatar
admin committed
464 465
#pragma mark - UItextDelegate
- (void)textViewDidBeginEditing:(UITextView *)textView
admin's avatar
admin committed
466
{
admin's avatar
admin committed
467 468 469
    [UIView animateWithDuration:0.3 animations:^{
        _commentView.frame = CGRectMake(0, self.view.frame.size.height - kCommentViewHeight - 173, kScreenWidth, kCommentViewHeight);
    }];
admin's avatar
admin committed
470 471
}

admin's avatar
admin committed
472
- (void)textViewDidEndEditing:(UITextView *)textView
admin's avatar
admin committed
473
{
admin's avatar
admin committed
474 475 476
    [UIView animateWithDuration:0.3 animations:^{
        _commentView.frame = CGRectMake(0, self.view.frame.size.height - kCommentViewHeight, kScreenWidth, kCommentViewHeight);
    }];
admin's avatar
admin committed
477 478
}

admin's avatar
admin committed
479
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
admin's avatar
admin committed
480
{
admin's avatar
admin committed
481
    
admin's avatar
admin committed
482 483 484
    if (![text isEqualToString:@""]) {
        _commentView.placeholderLabel2.hidden = YES;
    }
485
    
admin's avatar
admin committed
486 487
    if ([text isEqualToString:@""] && range.location == 0 && range.length == 1) {
        _commentView.placeholderLabel2.hidden = NO;
488
    }
489
    
admin's avatar
admin committed
490 491 492 493 494 495 496 497 498
    if ([text isEqualToString:@"\n"]) {
        [_commentView.contentTextView resignFirstResponder];
        if (textView.text.length != 0) {
            _commentView.placeholderLabel2.hidden = YES;
        } else {
            _commentView.placeholderLabel2.hidden = NO;
        }
        return NO;
    }
admin's avatar
admin committed
499
    
admin's avatar
admin committed
500 501 502 503 504
    if (range.location>=200) {
        return  NO;
    }
    else {
        return YES;
505 506
    }
    
admin's avatar
admin committed
507
    return YES;
admin's avatar
admin committed
508 509
}

admin's avatar
admin committed
510 511
#pragma mark - UIAlertViewDelegate
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
admin's avatar
admin committed
512
{
admin's avatar
admin committed
513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530
    if (alertView.tag == 3652234) {
        if (buttonIndex == 0) {
            return;
        } else {
            // 提交数据
            NSDate *date = [NSDate date];
            NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
            [dateFormatter setDateFormat:@"YYYY-MM-dd+hh:mm:ss"];
            NSString *dateString = [dateFormatter stringFromDate:date];
            
            
            NSString *operId = [[NSUserDefaults standardUserDefaults] objectForKey:@"user_code"];
            NSString *operName = [[NSUserDefaults standardUserDefaults] objectForKey:@"user_name"];
            
            NSString *url  = [NSString stringWithFormat:@"%@%@?time=%@&operId=%@&operName=%@", kRedStarURL, kAddCommentURL , dateString , operId, operName];
            url = [url stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
            
            HttpClient *httpClient = [[HttpClient alloc] initWithUrl:url];
admin's avatar
admin committed
531 532
            NSDictionary *parameters = @{@"entityType":@"praise",
                                         @"entityUuid":self.commentId,
admin's avatar
admin committed
533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549
                                         @"comment":_commentView.contentTextView.text};
            [MBProgressHUD showHUDAddedTo:self.view animated:YES];
            [httpClient submitCommentWithParameters:parameters completion:^(id response, NSError *error) {
                if ([response[@"message"] isEqualToString:@"ok"]) {
                    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"添加评论成功" delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
                    alert.delegate = self;
                    [alert show];
                    [MBProgressHUD hideHUDForView:self.view animated:YES];
                } else {
                    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"警告" message:@"添加评论失败" delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
                    [alert show];
                    [MBProgressHUD hideHUDForView:self.view animated:YES];
                }
            }];
            
            [self closeBackGroundView];        }
    }
550 551 552
}


admin's avatar
admin committed
553
#pragma mark - lazy Laoding
admin's avatar
admin committed
554
- (RATreeView *)treeView
admin's avatar
admin committed
555
{
admin's avatar
admin committed
556 557 558 559 560
    if (!_treeView) {
        _treeView = [[RATreeView alloc] initWithFrame:CGRectZero];
        _treeView.translatesAutoresizingMaskIntoConstraints = NO;
        _treeView.delegate = self;
        _treeView.dataSource = self;
admin's avatar
admin committed
561 562
        //_treeView.showsVerticalScrollIndicator = NO;
        //_treeView.showsHorizontalScrollIndicator = NO;
admin's avatar
admin committed
563 564 565 566 567 568 569
        _treeView.treeHeaderView = self.rankDetailHeaderView;
        _treeView.treeFooterView = self.footerView;
        _treeView.rowHeight = UITableViewAutomaticDimension;
        _treeView.estimatedRowHeight = 300.0;
        [self.view addSubview:_treeView];
        
        NSLayoutConstraint *tableTop = [NSLayoutConstraint constraintWithItem:_treeView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:0];
admin's avatar
admin committed
570 571
        [self.view addConstraint:tableTop];
        
admin's avatar
admin committed
572
        NSLayoutConstraint *tableLeft = [NSLayoutConstraint constraintWithItem:_treeView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0];
admin's avatar
admin committed
573 574
        [self.view addConstraint:tableLeft];
        
admin's avatar
admin committed
575
        NSLayoutConstraint *tableRight = [NSLayoutConstraint constraintWithItem:_treeView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:0];
admin's avatar
admin committed
576 577
        [self.view addConstraint:tableRight];
        
admin's avatar
admin committed
578
        NSLayoutConstraint *tableBottom = [NSLayoutConstraint constraintWithItem:_treeView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0];
admin's avatar
admin committed
579 580
        [self.view addConstraint:tableBottom];
    }
admin's avatar
admin committed
581
    return _treeView;
admin's avatar
admin committed
582 583
}

584 585 586 587
- (RankDetailHeaderView *)rankDetailHeaderView
{
    if (!_rankDetailHeaderView) {
        _rankDetailHeaderView = [[RankDetailHeaderView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 298)];
588
        if (self.indexRow <= 3) {
589
            NSString *imageName = [NSString stringWithFormat:@"medal_0%ld", (long)(_indexRow)];
590 591
            _rankDetailHeaderView.rankDetailView.gradeImageView.image = [UIImage imageNamed:imageName];
        } else {
592
            NSString *rankStr = [NSString stringWithFormat:@"第 %ld 名", (long)(_indexRow)];
593 594 595 596 597 598 599
            NSMutableAttributedString *rankAttr = [[NSMutableAttributedString alloc] initWithString:rankStr];
            [rankAttr addAttributes:@{NSForegroundColorAttributeName:kRankHeadTitleTextColor,NSFontAttributeName:[UIFont systemFontOfSize:14.0f]} range:NSMakeRange(0,1)];
            [rankAttr addAttributes:@{NSForegroundColorAttributeName:kGradeNumberTextColor} range:NSMakeRange(1,rankStr.length - 2)];
            [rankAttr addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Arial-BoldMT" size:18.0] range:NSMakeRange(1,rankStr.length - 2)];
            [rankAttr addAttributes:@{NSForegroundColorAttributeName:kRankHeadTitleTextColor,NSFontAttributeName:[UIFont systemFontOfSize:14.0f]} range:NSMakeRange(rankStr.length - 1,1)];
            [_rankDetailHeaderView.rankDetailView.gradeLabel setAttributedText:rankAttr];
        }
admin's avatar
admin committed
600
        self.rankDetailHeaderView.backgroundColor = kSectionBackGroundColor;
admin's avatar
admin committed
601 602 603 604 605 606
        if (self.storeAddress == nil || self.storeAddress == NULL || [self.storeAddress isEqual:[NSNull null]] || self.storeAddress == Nil || [self.storeAddress isEqualToString:@"(null)"]) {
            self.rankDetailHeaderView.rankDetailView.addressLabel.text = @"";
        } else {
            self.rankDetailHeaderView.rankDetailView.addressLabel.text = [NSString stringWithFormat:@"%@", self.storeAddress];

        }
admin's avatar
admin committed
607
        self.rankDetailHeaderView.rankDetailView.storePictures = self.storePictures;
608 609 610 611
    }
    return _rankDetailHeaderView;
}

admin's avatar
admin committed
612 613 614
- (UIView *)footerView
{
    if (!_footerView) {
admin's avatar
admin committed
615
        _footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 80)];
admin's avatar
admin committed
616
        
admin's avatar
admin committed
617 618 619
        UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 1)];
        lineView.backgroundColor = kSeparateLineColor;
        [self.footerView addSubview:lineView];
admin's avatar
admin committed
620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654
    }
    return _footerView;
}

- (UIButton *)commentButton
{
    if (!_commentButton) {
        _commentButton = [[UIButton alloc] init];
        // 设置圆角
        _commentButton.layer.cornerRadius = 5;
        _commentButton.translatesAutoresizingMaskIntoConstraints = NO;
        _commentButton.backgroundColor = kLoginButtonBackGroundColor;
        [_commentButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        [_commentButton addTarget:self action:@selector(addComment:) forControlEvents:UIControlEventTouchUpInside];
        _commentButton.titleLabel.font = [UIFont systemFontOfSize:20.0];
        [self.footerView addSubview:_commentButton];
        
        // 顶端
        NSLayoutConstraint *loginTop = [NSLayoutConstraint constraintWithItem:_commentButton attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.footerView attribute:NSLayoutAttributeTop multiplier:1.0 constant:20];
        [self.footerView addConstraint:loginTop];
        
        // 左边
        NSLayoutConstraint *loginLeft = [NSLayoutConstraint constraintWithItem:_commentButton attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.footerView attribute:NSLayoutAttributeLeft multiplier:1.0 constant:20];
        [self.footerView addConstraint:loginLeft];
        
        // 右边
        NSLayoutConstraint *loginRight = [NSLayoutConstraint constraintWithItem:_commentButton attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.footerView attribute:NSLayoutAttributeRight multiplier:1.0 constant:-20];
        [self.footerView addConstraint:loginRight];
        
        // 高度
        NSLayoutConstraint *loginHeight = [NSLayoutConstraint constraintWithItem:_commentButton attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:40];
        [self.footerView addConstraint:loginHeight];
    }
    return _commentButton;
}
admin's avatar
admin committed
655 656

@end