RankDetailViewController.m 27.5 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>
admin's avatar
admin committed
27

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

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

35

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

admin's avatar
admin committed
43 44 45
@end

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

- (void)viewDidLoad
{
    [super viewDidLoad];
    
admin's avatar
admin committed
58
    self.view.backgroundColor = [UIColor whiteColor];
admin's avatar
admin committed
59
    
admin's avatar
admin committed
60 61 62 63 64 65 66
    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
67 68 69 70 71 72
    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;
    
73 74 75 76 77 78 79
    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
80
    [self.commentButton setTitle:@"添加评论" forState:UIControlStateNormal];
admin's avatar
admin committed
81 82
    // 请求口碑排名详情
    [self requestRankingDetail];
admin's avatar
admin committed
83
    
admin's avatar
admin committed
84 85
}

admin's avatar
admin committed
86

admin's avatar
admin committed
87
#pragma mark - Private Methods
admin's avatar
admin committed
88 89 90 91 92 93

- (void)requestRankingDetail
{
    NSString *url = [NSString stringWithFormat:@"%@%@%@/%@",kRedStarURL, kInspectDetailURL, self.uuid, self.store_uuid];
    NSLog(@"url = %@" , url);
    HttpClient *httpClient = [[HttpClient alloc] initWithUrl:url];
94
    
admin's avatar
admin committed
95 96 97 98 99
    [httpClient getPraiseDetailWithParameters:nil completion:^(id response, NSError *error) {
        NSLog(@"口碑巡检明细PraiseDetail = %@", response);
        NSDictionary *dataDict = response[@"data"];
        TaskDetailModel *taskDetail = [TaskDetailModel taskDetailModelWithDict:dataDict];
        self.rankDetailHeaderView.taskDetail = taskDetail;
admin's avatar
admin committed
100 101 102 103
        [self.rankDetailHeaderView.showAllBtn addTarget:self action:@selector(showAllClick:) forControlEvents:UIControlEventTouchUpInside];
        [self setupScrollView];

        NSArray *dataArray = taskDetail.categories;
admin's avatar
admin committed
104 105 106 107
        
        NSMutableArray *tgArray = [NSMutableArray array];
        for (NSDictionary *dict in dataArray) {
            TaskGroup *taskGroup = [TaskGroup taskGroupWithDict:dict];
admin's avatar
admin committed
108 109 110 111 112 113
            
            for (int a = 0; a < taskGroup.answers.count; a++) {
                TaskModel *task = taskGroup.answers[a];
                task.index = a;
            }
            
admin's avatar
admin committed
114 115 116 117 118
            [tgArray addObject:taskGroup];
        }
        
        _taskData = tgArray;
        
admin's avatar
admin committed
119 120 121
        [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
122 123
    }];

admin's avatar
admin committed
124
}
125

admin's avatar
admin committed
126
- (void)setupScrollView
admin's avatar
admin committed
127
{
admin's avatar
admin committed
128 129 130 131 132 133 134 135
    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
136
        
admin's avatar
admin committed
137 138 139 140 141 142 143 144 145
        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
146
        
admin's avatar
admin committed
147 148 149 150 151 152 153 154 155
        for (int i = 0; i < imageCount; i++) {
            UIButton *button = [[UIButton alloc] init];
            NSDictionary *dict = (NSDictionary *)self.storePictures[i];
            NSURL *imageUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", kRedStarURL ,dict[@"fileUrl"]]];
            [button sd_setImageWithURL:imageUrl forState:UIControlStateNormal placeholderImage:[UIImage imageNamed:@"default_pic"]];
            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
156
        
admin's avatar
admin committed
157 158
    }
}
admin's avatar
admin committed
159

admin's avatar
admin committed
160
- (void)showBigPic:(UIButton *)btn
admin's avatar
admin committed
161
{
admin's avatar
admin committed
162 163 164
    CheckPicViewController *checkVC = [[CheckPicViewController alloc] init];
    checkVC.checkImage = btn.imageView.image;
    [self.navigationController pushViewController:checkVC animated:YES];
admin's avatar
admin committed
165 166
}

admin's avatar
admin committed
167 168
// 返回上一页面
- (void)doBack:(UIBarButtonItem *)sender
admin's avatar
admin committed
169
{
admin's avatar
admin committed
170
    [self.navigationController popViewControllerAnimated:YES];
admin's avatar
admin committed
171 172
}

admin's avatar
admin committed
173
- (void)addComment:(UIButton *)sender
174
{
admin's avatar
admin committed
175 176 177 178 179 180
    
    
    if (!_backGroundView) {
        _backGroundView = [[UIView alloc] initWithFrame:self.view.bounds];
        UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(closeBackGroundView)];
        [_backGroundView addGestureRecognizer:tapGR];
181
    }
admin's avatar
admin committed
182 183 184
    if (!_commentView) {
        _commentView = [[CommentView alloc] init];
        _commentView.backgroundColor = [UIColor whiteColor];
185
    }
admin's avatar
admin committed
186 187 188 189 190 191
    _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];
admin's avatar
admin committed
192
    
admin's avatar
admin committed
193 194
    _backGroundView.alpha = 0;
    _backGroundView.backgroundColor = [UIColor blackColor];
admin's avatar
admin committed
195
    
admin's avatar
admin committed
196 197
    CGRect toFrame = CGRectMake(0, self.view.frame.size.height - kCommentViewHeight, kScreenWidth, kCommentViewHeight);
    CGRect fromFrame = CGRectMake(0, kScreenHeight, kScreenWidth, kCommentViewHeight);
admin's avatar
admin committed
198
    
admin's avatar
admin committed
199 200 201 202
    _commentView.frame = fromFrame;
    [UIView animateWithDuration:0.3 animations:^{
        _backGroundView.alpha = 0.6;
        _commentView.frame = toFrame;
admin's avatar
admin committed
203 204
    }];
    
admin's avatar
admin committed
205 206 207 208 209 210 211 212 213 214 215
    
}

// 提交评论
- (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
216 217 218 219 220 221 222 223 224 225 226 227 228 229
}

- (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
230
- (void)showAllClick:(UIButton *)sender
231
{
admin's avatar
admin committed
232 233 234 235 236 237
    sender.selected = !sender.selected;
    if (sender.selected) {
        _treeView.expandsChildRowsWhenRowExpands = YES;
        
        for (TaskGroup *taskGroup in self.taskData) {
            [_treeView expandRowForItem:taskGroup expandChildren:YES withRowAnimation:RATreeViewRowAnimationFade];
admin's avatar
admin committed
238 239
        }
    } else {
admin's avatar
admin committed
240 241 242 243 244 245 246 247 248 249 250
        _treeView.expandsChildRowsWhenRowExpands = NO;
        
        for (TaskGroup *taskGroup in self.taskData) {
            [_treeView collapseRowForItem:taskGroup collapseChildren:YES withRowAnimation:RATreeViewRowAnimationFade];
        }
    }
    
    
    
    
}
admin's avatar
admin committed
251

admin's avatar
admin committed
252 253 254 255 256 257 258 259 260 261 262 263 264 265 266
#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
267
        }
admin's avatar
admin committed
268
       // return 0;
admin's avatar
admin committed
269
        
admin's avatar
admin committed
270 271
    } else {
        return 0;
272 273 274
    }
}

admin's avatar
admin committed
275 276

- (id)treeView:(RATreeView *)treeView child:(NSInteger)index ofItem:(id)item
277
{
admin's avatar
admin committed
278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293
    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;
    }
294 295
}

admin's avatar
admin committed
296
- (UITableViewCell *)treeView:(RATreeView *)treeView cellForItem:(id)item
297
{
admin's avatar
admin committed
298
    NSInteger level = [self.treeView levelForCellForItem:item];
299
    
admin's avatar
admin committed
300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 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
    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];
        if (data.score == NULL || data.score == nil) {
            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
354
        NSMutableArray *urlArray = [NSMutableArray array];
admin's avatar
admin committed
355
        for (NSDictionary *imageUrlDict in data) {
admin's avatar
admin committed
356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385
            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
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 412 413 414 415 416 417 418
        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];
419 420 421 422
        [UIView animateWithDuration:0.2 animations:^{
            cell.arrowImageView.transform = CGAffineTransformIdentity;
            cell.arrowImageView.transform = CGAffineTransformMakeRotation(0);
        }];
admin's avatar
admin committed
423 424 425 426 427 428
    } else if (level == 1) {
        RankDetailTableCell *cell = (RankDetailTableCell *)[_treeView cellForItem:item];
        [UIView animateWithDuration:0.2 animations:^{
            cell.arrowImageView.transform = CGAffineTransformIdentity;
            cell.arrowImageView.transform = CGAffineTransformMakeRotation(-0);
        }];
429 430 431 432
    }
}


admin's avatar
admin committed
433 434 435
- (BOOL)treeView:(RATreeView *)treeView canEditRowForItem:(id)item
{
    return NO;
436 437
}

admin's avatar
admin committed
438 439
#pragma mark - UItextDelegate
- (void)textViewDidBeginEditing:(UITextView *)textView
admin's avatar
admin committed
440
{
admin's avatar
admin committed
441 442 443
    [UIView animateWithDuration:0.3 animations:^{
        _commentView.frame = CGRectMake(0, self.view.frame.size.height - kCommentViewHeight - 173, kScreenWidth, kCommentViewHeight);
    }];
admin's avatar
admin committed
444 445
}

admin's avatar
admin committed
446
- (void)textViewDidEndEditing:(UITextView *)textView
admin's avatar
admin committed
447
{
admin's avatar
admin committed
448 449 450
    [UIView animateWithDuration:0.3 animations:^{
        _commentView.frame = CGRectMake(0, self.view.frame.size.height - kCommentViewHeight, kScreenWidth, kCommentViewHeight);
    }];
admin's avatar
admin committed
451 452
}

admin's avatar
admin committed
453
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
admin's avatar
admin committed
454
{
admin's avatar
admin committed
455
    
admin's avatar
admin committed
456 457 458
    if (![text isEqualToString:@""]) {
        _commentView.placeholderLabel2.hidden = YES;
    }
459
    
admin's avatar
admin committed
460 461
    if ([text isEqualToString:@""] && range.location == 0 && range.length == 1) {
        _commentView.placeholderLabel2.hidden = NO;
462
    }
463
    
admin's avatar
admin committed
464 465 466 467 468 469 470 471 472
    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
473
    
admin's avatar
admin committed
474 475 476 477 478
    if (range.location>=200) {
        return  NO;
    }
    else {
        return YES;
479 480
    }
    
admin's avatar
admin committed
481
    return YES;
admin's avatar
admin committed
482 483
}

admin's avatar
admin committed
484 485
#pragma mark - UIAlertViewDelegate
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
admin's avatar
admin committed
486
{
admin's avatar
admin committed
487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526
    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];
            NSLog(@"url = %@", url);
            
            HttpClient *httpClient = [[HttpClient alloc] initWithUrl:url];
            NSDictionary *parameters = @{@"entityType":@"question",
                                         @"entityUuid":self.uuid,
                                         @"comment":_commentView.contentTextView.text};
            NSLog(@"parameters = %@", parameters);
            [MBProgressHUD showHUDAddedTo:self.view animated:YES];
            [httpClient submitCommentWithParameters:parameters completion:^(id response, NSError *error) {
                NSLog(@"respo = %@, error = %@", response , 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];        }
    }
527 528 529
}


admin's avatar
admin committed
530
#pragma mark - lazy Laoding
admin's avatar
admin committed
531
- (RATreeView *)treeView
admin's avatar
admin committed
532
{
admin's avatar
admin committed
533 534 535 536 537 538 539 540 541 542 543 544 545 546
    if (!_treeView) {
        _treeView = [[RATreeView alloc] initWithFrame:CGRectZero];
        _treeView.translatesAutoresizingMaskIntoConstraints = NO;
        _treeView.delegate = self;
        _treeView.dataSource = self;
        _treeView.showsVerticalScrollIndicator = NO;
        _treeView.showsHorizontalScrollIndicator = NO;
        _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
547 548
        [self.view addConstraint:tableTop];
        
admin's avatar
admin committed
549
        NSLayoutConstraint *tableLeft = [NSLayoutConstraint constraintWithItem:_treeView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0];
admin's avatar
admin committed
550 551
        [self.view addConstraint:tableLeft];
        
admin's avatar
admin committed
552
        NSLayoutConstraint *tableRight = [NSLayoutConstraint constraintWithItem:_treeView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:0];
admin's avatar
admin committed
553 554
        [self.view addConstraint:tableRight];
        
admin's avatar
admin committed
555
        NSLayoutConstraint *tableBottom = [NSLayoutConstraint constraintWithItem:_treeView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0];
admin's avatar
admin committed
556 557
        [self.view addConstraint:tableBottom];
    }
admin's avatar
admin committed
558
    return _treeView;
admin's avatar
admin committed
559 560
}

561 562 563 564
- (RankDetailHeaderView *)rankDetailHeaderView
{
    if (!_rankDetailHeaderView) {
        _rankDetailHeaderView = [[RankDetailHeaderView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 298)];
565
        if (self.indexRow <= 3) {
566
            NSString *imageName = [NSString stringWithFormat:@"medal_0%ld", (long)(_indexRow)];
567 568
            _rankDetailHeaderView.rankDetailView.gradeImageView.image = [UIImage imageNamed:imageName];
        } else {
569
            NSString *rankStr = [NSString stringWithFormat:@"第 %ld 名", (long)(_indexRow)];
570 571 572 573 574 575 576
            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
577
        self.rankDetailHeaderView.backgroundColor = kSectionBackGroundColor;
admin's avatar
admin committed
578 579 580 581 582 583
        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
584
        self.rankDetailHeaderView.rankDetailView.storePictures = self.storePictures;
585 586 587 588
    }
    return _rankDetailHeaderView;
}

admin's avatar
admin committed
589 590 591
- (UIView *)footerView
{
    if (!_footerView) {
admin's avatar
admin committed
592
        _footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 80)];
admin's avatar
admin committed
593
        
admin's avatar
admin committed
594 595 596
        UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 1)];
        lineView.backgroundColor = kSeparateLineColor;
        [self.footerView addSubview:lineView];
admin's avatar
admin committed
597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631
    }
    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
632 633

@end