SurveyDetailViewController.m 15.3 KB
//
//  SurveyDetailViewController.m
//  XFFruit
//
//  Created by 陈俊俊 on 15/8/7.
//  Copyright (c) 2015年 Xummer. All rights reserved.
//

#import "ResultDetailViewController.h"
#import "SurveyDetailViewController.h"
#import "SurveyUser.h"
#import "UIImageView+WebCache.h"
#import <WebKit/WebKit.h>
#define BottomHeight 50
#define LeftMargin 20
#define LeftWidth 100
#define LeftHeight 20
#define TopMargin 15
#define ContentMargin 10

typedef enum : NSUInteger {
    DetailTag = 6000,
    EndTag,
} BtnTag;

@interface SurveyDetailViewController () <UIAlertViewDelegate, WKNavigationDelegate> {
    UIScrollView *_scrollView;
    UIView *_surveyView;
    UIView *_bottomView;
    UIImageView *_chartImageView;
    WKWebView *_webViewChart;
}
@property (nonatomic, strong) UILabel *billNumberLabel;
@property (nonatomic, strong) UILabel *stateLabel;
@property (nonatomic, strong) UILabel *titleLabel;
@property (nonatomic, strong) UILabel *productLabel;
@property (nonatomic, strong) UILabel *beginDateLabel;
@property (nonatomic, strong) UILabel *endDateLabel;
@property (nonatomic, strong) UILabel *userLabel;
@property (nonatomic, strong) UILabel *noteLabel;
@property (nonatomic, strong) UILabel *lefeNoteLabel;

@end

@implementation SurveyDetailViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = @"行情调研详情";
    [self bulifLayout];
    [self getDataFromServer];
}

- (void)getDataFromServer
{
    __weak typeof(self) weakSelf = self;
    void (^succ)(id) = ^(id data) {
        [IBTLoadingView hideHUDWithText:nil];
        __strong __typeof(weakSelf) strongSelf = weakSelf;
        if (data) {
            NSInteger success = [data[@"success"] integerValue];
            NSString *message = data[@"message"];
            if (success == 1) {
                NSDictionary *dictData = data[@"data"];
                Survey *survey = [[Survey alloc] init];
                [survey setValuesForKeysWithDictionary:dictData];
                self.survey = survey;
                [strongSelf fetchtSurveyDetail];
            } else {
                [IBTLoadingView showTips:message];
            }
        } else {
            [strongSelf fetchtSurveyDetail];
        }
        [self createResultChart];
    };
    void (^fail)(id) = ^(id data) {
        [IBTLoadingView hideHUDWithText:nil];
        [IBTLoadingView showTips:data];
    };
    [IBTLoadingView showProgressLabel:@"正在加载..."];
    [[ICRHTTPController sharedController] getResultWithSurveyUuid:self.surveyUuid success:succ failure:fail];
}

- (void)createResultChart
{
    
    NSString *url = [NSString stringWithFormat:@"%@/cruiser-web/chart/surveychart.thor?enterprise=%@&surveyUuid=%@",HTTP_REST_REPORT_BASE_URL, [ICRUserUtil sharedInstance].orgId, self.surveyUuid];
    [_webViewChart loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
    
//    void (^succ)(id) = ^(id data) {
//        if (data) {
//            NSInteger success = [data[@"success"] integerValue];
//            NSString *message = data[@"message"];
//            if (success == 1) {
//                NSString *dataStr = data[@"data"];
//                NSRange range = [HTTP_REST_API_BASE_URL rangeOfString:@"rest"];
//                NSString *serverURl = [HTTP_REST_API_BASE_URL substringToIndex:range.location];
//                NSString *urlStr = [NSString stringWithFormat:@"%@DisplayChart?filename=%@", serverURl, dataStr];
//                [_chartImageView sd_setImageWithURL:[NSURL URLWithString:urlStr]];
//            } else {
//                [IBTLoadingView showTips:message];
//            }
//        }
//    };
//    void (^fail)(id) = ^(id data) {
//        [IBTLoadingView hideHUDWithText:nil];
//        [IBTLoadingView showTips:data];
//    };
//    [[ICRHTTPController sharedController] resultChartWithResultUuid:self.surveyUuid
//                                                              width:[NSNumber numberWithFloat:CGRectGetWidth(_chartImageView.frame)]
//                                                             height:[NSNumber numberWithFloat:CGRectGetHeight(_chartImageView.frame)]
//                                                            success:succ
//                                                            failure:fail];
}

- (void)fetchtSurveyDetail
{
    self.billNumberLabel.text = [IBTCommon checkString:self.survey.billNumber];
    if ([self.survey.state isEqualToString:SURVEY_STATE_INITIAL]) {
        self.stateLabel.textColor = [UIColor redColor];
        self.stateLabel.text = @"未提交";
    } else if ([self.survey.state isEqualToString:SURVEY_STATE_SUBMITTED]) {
        self.stateLabel.textColor = [UIColor greenColor];
        self.stateLabel.text = @"已提交";
    } else if ([self.survey.state isEqualToString:SURVEY_STATE_INSURVEY]) {
        self.stateLabel.textColor = [UIColor grayColor];
        self.stateLabel.text = @"调研中";
    } else if ([self.survey.state isEqualToString:SURVEY_STATE_FINISHED]) {
        self.stateLabel.textColor = [UIColor blackColor];
        self.stateLabel.text = @"已完成";
    }
    NSString *user = @"";
    for (NSDictionary *userDict in self.survey.users) {
        SurveyUser *surveyUser = [[SurveyUser alloc] init];
        [surveyUser setValuesForKeysWithDictionary:userDict];
        if (user.length == 0) {
            user = [user stringByAppendingFormat:@"%@", surveyUser.userName];
        } else {
            user = [user stringByAppendingFormat:@"、%@", surveyUser.userName];
        }
    }
    self.titleLabel.text = [IBTCommon checkString:self.survey.title];
    self.productLabel.text = [IBTCommon checkString:self.survey.productName];
    self.beginDateLabel.text = [IBTCommon checkString:self.survey.beginDate];
    self.endDateLabel.text = [IBTCommon checkString:self.survey.endDate];
    self.userLabel.text = [IBTCommon checkString:user];
    self.noteLabel.text = [NSString stringWithFormat:@"%@", self.survey.remark ? self.survey.remark : @"无"];
    [self setNoteHeight];
}

- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation {
    [MBProgressHUD showHUDAddedTo:webView animated:YES];
}

- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
    [MBProgressHUD hideHUDForView:webView animated:YES];
}

#pragma mark - 视图初始化
- (void)bulifLayout
{
    _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, ScreenSize.width, ScreenSize.height - 64 - BottomHeight)];
    _scrollView.showsHorizontalScrollIndicator = NO;
    _scrollView.showsVerticalScrollIndicator = NO;
    _scrollView.backgroundColor = XXFBgColor;
    [self.view addSubview:_scrollView];

    UIButton *endBtn = [IBTCustomButtom creatButtonWithFrame:CGRectMake(LeftMargin, ScreenSize.height - 64 - BottomHeight + 5, ScreenSize.width - LeftMargin * 2, 40)
                                                      target:self
                                                         sel:@selector(btnClick:)
                                                         tag:EndTag
                                                       image:nil
                                                       title:@"结束"
                                                  titleColor:[UIColor whiteColor]
                                                    isCorner:YES
                                                      corner:8
                                                     bgColor:GXF_COMMIT_COLOR];
    [self.view addSubview:endBtn];

    _surveyView = [[UIView alloc] initWithFrame:CGRectMake(0, TopMargin, ScreenSize.width, LeftHeight * 9 + ContentMargin * 10)];
    _surveyView.backgroundColor = [UIColor whiteColor];
    [_scrollView addSubview:_surveyView];

    UILabel *tagLabel = [[UILabel alloc] initWithFrame:CGRectMake(LeftMargin / 2, ContentMargin, LeftWidth * 2, LeftHeight)];
    tagLabel.text = @"【调研内容】";
    tagLabel.font = GXF_SEVENTEENTH_SIZE;
    tagLabel.textColor = HexColor(@"7ebf74");
    [_surveyView addSubview:tagLabel];

    NSArray *leftArr = @[ @"单号:", @"状态:", @"标题:", @"商品:", @"开始日期:", @"截止日期:", @"调研人员:", @"备注:" ];
    for (NSInteger i = 0; i < leftArr.count; i++) {
        UILabel *leftLabel = [[UILabel alloc] initWithFrame:CGRectMake(LeftMargin, CGRectGetMaxY(tagLabel.frame) + ContentMargin + (LeftHeight + ContentMargin) * i, LeftWidth, LeftHeight)];
        leftLabel.font = GXF_SEVENTEENTH_SIZE;
        leftLabel.text = leftArr[i];
        leftLabel.textColor = GXF_DETAIL_COLOR;
        [_surveyView addSubview:leftLabel];

        UILabel *rightLabel = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMaxX(leftLabel.frame), CGRectGetMaxY(tagLabel.frame) + ContentMargin + (LeftHeight + ContentMargin) * i, _surveyView.frame.size.width - LeftMargin - LeftWidth, LeftHeight)];
        rightLabel.font = GXF_SEVENTEENTH_SIZE;
        rightLabel.textColor = GXF_DETAIL_COLOR;
        if (i == 0) {
            self.billNumberLabel = rightLabel;
        } else if (i == 1) {
            self.stateLabel = rightLabel;
        } else if (i == 2) {
            self.titleLabel = rightLabel;
        } else if (i == 3) {
            self.productLabel = rightLabel;
        } else if (i == 4) {
            self.beginDateLabel = rightLabel;
        } else if (i == 5) {
            self.endDateLabel = rightLabel;
        } else if (i == 6) {
            rightLabel.numberOfLines = 0;
            self.userLabel = rightLabel;
        } else if (i == 7) {
            rightLabel.numberOfLines = 0;
            self.noteLabel = rightLabel;
            self.lefeNoteLabel = leftLabel;
        }
        [_surveyView addSubview:rightLabel];
    }

    _bottomView = [[UIView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(_surveyView.frame) + TopMargin, ScreenSize.width, 500)];
    _bottomView.backgroundColor = [UIColor whiteColor];
    [_scrollView addSubview:_bottomView];

    UILabel *resultLabel = [[UILabel alloc] initWithFrame:CGRectMake(LeftMargin / 2, 10, LeftWidth * 2, LeftHeight)];
    resultLabel.text = @"【行情反馈】";
    resultLabel.font = GXF_SEVENTEENTH_SIZE;
    resultLabel.textColor = HexColor(@"7ebf74");
    [_bottomView addSubview:resultLabel];

    
    NSString *jScript;
    if (ScreenSize.width != 320) {
        jScript = @"var meta = document.createElement('meta');meta.setAttribute('name', 'viewport');meta.setAttribute('content', 'width=device-width, maximum-scale=2.0, user-scalable=no');document.getElementsByTagName('head')[0].appendChild(meta);";
    }else{
        jScript = @"var meta = document.createElement('meta');meta.setAttribute('name', 'viewport');meta.setAttribute('content', 'width=410, maximum-scale=2.0, user-scalable=no');document.getElementsByTagName('head')[0].appendChild(meta);";
    }
    WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:jScript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];
    WKUserContentController *wkUController = [[WKUserContentController alloc] init];
    [wkUController addUserScript:wkUScript];
    
    WKWebViewConfiguration *wkWebConfig = [[WKWebViewConfiguration alloc] init];
    wkWebConfig.userContentController = wkUController;
    _webViewChart = [[WKWebView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(resultLabel.frame), CGRectGetWidth(_bottomView.frame), CGRectGetHeight(_bottomView.frame) - LeftHeight ) configuration:wkWebConfig];
    [_bottomView addSubview:_webViewChart];

    UIButton *btn = [IBTCustomButtom creatButtonWithFrame:CGRectMake(CGRectGetWidth(_bottomView.frame) - 100, 10, 100, LeftHeight)
                                                   target:self
                                                      sel:@selector(btnClick:)
                                                      tag:DetailTag
                                                    image:nil
                                                    title:@">>查看详情"
                                               titleColor:HexColor(@"7ebf74")
                                                 isCorner:NO
                                                   corner:0
                                                  bgColor:nil];
    [_bottomView addSubview:btn];

    if ([self.survey.state isEqualToString:@"finished"]) {
        endBtn.hidden = YES;
        CGRect scrollViewFrame = _scrollView.frame;
        scrollViewFrame.size.height = ScreenSize.height - 64;
        _scrollView.frame = scrollViewFrame;
    }
}
- (void)btnClick:(UIButton *)btn
{
    if (btn.tag == DetailTag) {
        ResultDetailViewController *rvc = [ResultDetailViewController new];
        rvc.surveyUuid = self.surveyUuid;
        [self PushViewController:rvc animated:YES];
    } else if (btn.tag == EndTag) {
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"温馨提示" message:@"请确认结束" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确"
                                                                                                                                                                           @"认", nil];
        alertView.delegate = self;
        [alertView show];
    }
}

#pragma mark - 结束行情调研
- (void)finishSurveyRequest
{
    void (^succ)(id) = ^(id data) {
        [IBTLoadingView hideHUDWithText:nil];
        if (data) {
            NSInteger success = [data[@"success"] integerValue];
            NSString *message = data[@"message"];
            if (success == 1) {
                [self backSurvey];
            } else {
                [IBTLoadingView showTips:message];
            }
        } else {
            [IBTLoadingView showTips:@"返回异常"];
        }
    };
    void (^fail)(id) = ^(id data) {
        [IBTLoadingView hideHUDWithText:nil];
        [IBTLoadingView showTips:data];
    };
    [IBTLoadingView showProgressLabel:@"正在加载..."];
    [[ICRHTTPController sharedController] surveyFinishWithUuid:self.surveyUuid version:self.survey.version success:succ failure:fail];
}
//返回列表
- (void)backSurvey
{
    [ICRUserUtil sharedInstance].needFresh = YES;
    [self PopViewControllerAnimated:YES];
}

- (void)setNoteHeight
{
    CGFloat personHeight = [self.userLabel calculateHeight];

    CGRect personFrame = self.userLabel.frame;
    personFrame.size.height = personHeight;
    self.userLabel.frame = personFrame;

    CGFloat noteHeight = [self.noteLabel calculateHeight];

    CGRect noteFrame = self.noteLabel.frame;
    noteFrame.size.height = noteHeight;
    noteFrame.origin.y = CGRectGetMaxY(self.userLabel.frame) + ContentMargin;
    self.noteLabel.frame = noteFrame;

    CGRect leftNoteFrame = self.lefeNoteLabel.frame;
    leftNoteFrame.origin.y = CGRectGetMaxY(self.userLabel.frame) + ContentMargin;
    self.lefeNoteLabel.frame = leftNoteFrame;

    CGFloat totalHeight = noteHeight + (LeftHeight * 7 + ContentMargin * 10) + personHeight;
    CGRect surveyFrame = _surveyView.frame;
    surveyFrame.size.height = totalHeight;
    _surveyView.frame = surveyFrame;

    CGRect bottomFrame = _bottomView.frame;
    bottomFrame.origin.y = CGRectGetMaxY(_surveyView.frame) + TopMargin;
    _bottomView.frame = bottomFrame;

    _scrollView.contentSize = CGSizeMake(ScreenSize.width, totalHeight + CGRectGetHeight(_bottomView.frame) + TopMargin * 2);
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 1) {
        [self finishSurveyRequest];//结束
    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}
@end