// // SOPViewController.m // redstar // // Created by admin on 15/12/25. // Copyright © 2015年 ZWF. All rights reserved. // #import "SOPViewController.h" #import "GroupTabBar.h" #import "GroupItems.h" #import "SOPTableView.h" #import "HttpClient.h" #import "AttachmentTableViewCell.h" #import "AttachmentModel.h" #define kAttachmentTableCell @"sopAttachmentCell" #define SELECTED_VIEW_CONTROLLER_TAG 39998 @interface SOPViewController () @property (nonatomic, strong) GroupTabBar *groupTabBar; @property (nonatomic, strong) NSArray *titleArray; @property (nonatomic, strong) NSArray *titleArray1; @property (nonatomic, strong) NSArray *titleArray2; @property (nonatomic, strong) NSArray *titleArray3; @property (nonatomic, strong) NSArray *titleArray4; @property (nonatomic, strong) NSArray *titleArray5; @property (nonatomic, strong) NSArray *titleArray6; @property (nonatomic, strong) NSArray *titleArray7; @property (nonatomic, strong) NSArray *titleArray8; @property (nonatomic, strong) NSString *detailTitle; @property (nonatomic, strong) UIButton *resetBtn; @property (nonatomic, strong) UIButton *queryBtn; @property (nonatomic, strong) UIView *bgView; @property (nonatomic, strong) UITableView *tableView; @property (nonatomic, strong) NSMutableArray *attachmentArray; @end @implementation SOPViewController - (void)viewDidLoad { [super viewDidLoad]; if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { self.edgesForExtendedLayout = UIRectEdgeNone; self.extendedLayoutIncludesOpaqueBars = NO; self.modalPresentationCapturesStatusBarAppearance = NO; self.navigationController.navigationBar.translucent = NO; } self.attachmentArray = [NSMutableArray array]; self.titleArray = [NSArray arrayWithObjects:@"质量管理",@"价格管理",@"现场服务",@"售后服务",@"环境管理",@"现场管理", @"400呼叫管理",@"单品管理",nil]; self.titleArray1 = [NSArray arrayWithObjects:@"商品环保、质量检测管理规定",@"商品资质管理规定",@"三年质保管理规定",@"商品绿色展陈管理规定",@" 附件:绿色展陈操作手册", nil]; self.titleArray2 = [NSArray arrayWithObjects:@"商品标价签管理规定",@"商品调价管理规定",@"商场全国大促活动执行管理规定",@"商户促销活动管理规定",@"“全场最低七折”管理规定", nil]; self.titleArray3 = [NSArray arrayWithObjects:@"商场现场服务基本规定",@"便民服务管理规定",@"营业员管理规定",@"播音管理规定",@"商场实施管理者“顾客之声VOC”管理规定", @"30天无理由退货管理规定",@"15分钟退单管理规定",@"商场全员顾客服务规范管理规定",@" 附件:停车场安全员岗位车辆指挥标准手势手册",@"设计免费咨询管理规定",nil]; self.titleArray4 = [NSArray arrayWithObjects:@"商场客诉处理管理规定",@"先行赔付管理规定",@"商品质量保证金管理规定",@"送货跟单回访管理规定", nil]; self.titleArray5 = [NSArray arrayWithObjects:@"商场基础环境管理规定",@"口碑商场环境管理规定",@" 附件:室内地面维修养护规范",@" 附件:商户装修“五区管理法”规定",@" 附件:喷水池管理规范", @"商场停车场管理规定",@"商场洗手间管理规范",@"商场综合物料管理规定",nil]; self.titleArray6 = [NSArray arrayWithObjects:@"楼层日常巡场管理规定",@"商户进/出货管理规定",@"商户进场管理规定",@"商户撤场管理规定",@"商户信用等级评定管理规定", nil]; self.titleArray7 = [NSArray arrayWithObjects:@"呼叫中心商场虚拟座席远程管理规定", nil]; self.titleArray8 = [NSArray arrayWithObjects:@"商品信息管理规定", nil]; [self setupNav]; [self setGroupBar]; [self.resetBtn addTarget:self action:@selector(resetClick:) forControlEvents:UIControlEventTouchUpInside]; [self.queryBtn addTarget:self action:@selector(queryClick:) forControlEvents:UIControlEventTouchUpInside]; } - (void)resetClick:(UIButton *)sender { } - (void)queryClick:(UIButton *)sender { NSString *url = [NSString stringWithFormat:@"%@%@", kRedStarURL, kGetAttachmentsURL]; HttpClient *http = [[HttpClient alloc] initWithUrl:url]; NSDictionary *parameters = @{@"type":@"sop", @"encode":@"123" }; [http getAttachmentsWithParameters:parameters completion:^(id response, NSError *error) { NSLog(@"7.1 口碑标注附件列表 = %@, error = %@", response, error); NSArray *dataArray = response[@"data"]; for (NSDictionary *attaDict in dataArray) { AttachmentModel *atta = [[AttachmentModel alloc] init]; [atta setValuesForKeysWithDictionary:attaDict]; [_attachmentArray addObject:atta]; } CGFloat tableH = _attachmentArray.count * 45; if (!_bgView) { _bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)]; UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(closeRedView)]; [_bgView addGestureRecognizer:tapGR]; } CGRect toFrame = CGRectMake(0, 0, kScreenWidth - 50, tableH + 40); if (!_tableView) { _tableView = [[UITableView alloc] initWithFrame:toFrame style:UITableViewStyleGrouped]; _tableView.backgroundColor = [UIColor whiteColor]; } _tableView.delegate = self; _tableView.dataSource = self; [self.view addSubview:_bgView]; [self.view insertSubview:_tableView aboveSubview:_bgView]; _bgView.alpha = 0; _bgView.backgroundColor = [UIColor blackColor]; _tableView.alpha = 0.0; _tableView.center = CGPointMake( _bgView.center.x, _bgView.center.y - 74); [UIView animateWithDuration:0.3 animations:^{ _bgView.alpha = 0.6; _tableView.alpha = 1.0; }]; }]; } - (void)closeRedView { [UIView animateWithDuration:0.3 animations:^{ _bgView.alpha = .0f; _tableView.alpha = 0.0; } completion:^(BOOL finished) { [_bgView removeFromSuperview]; [_tableView removeFromSuperview]; }]; } - (void)showFile:(UIButton *)sender { NSInteger row = sender.tag - 998473; AttachmentModel *atta = _attachmentArray[row]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *path = paths.lastObject; NSString *url = [NSString stringWithFormat:@"%@/%@", path, atta.fileName]; NSFileManager *fileManager = [NSFileManager defaultManager]; if ([fileManager fileExistsAtPath:url]) { UIDocumentInteractionController *docController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:url]];//为该对象初始化一个加载路径 docController.delegate = self;//设置代理 [docController presentPreviewAnimated:YES]; } else { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"文件不存在,请先下载在查看!" delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定", nil]; [alert show]; } } - (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller { return self; } - (void)downloadFile:(UIButton *)sender { NSInteger row = sender.tag - 998473; AttachmentModel *atta = _attachmentArray[row]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *path = paths.lastObject; [self downloadFileURL:[NSString stringWithFormat:@"%@%@", kRedStarURL, atta.fileUrl] savePath:path fileName:atta.fileName]; } - (void)downloadFileURL:(NSString *)aUrl savePath:(NSString *)aSavePath fileName:(NSString *)aFileName { NSFileManager *fileManager = [NSFileManager defaultManager]; //检查本地文件是否已存在 NSString *fileName = [NSString stringWithFormat:@"%@/%@", aSavePath, aFileName]; //检查附件是否存在 if ([fileManager fileExistsAtPath:fileName]) { NSLog(@"存在了"); }else{ NSLog(@"不存在"); //创建附件存储目录 if (![fileManager fileExistsAtPath:aSavePath]) { [fileManager createDirectoryAtPath:aSavePath withIntermediateDirectories:YES attributes:nil error:nil]; } //下载附件 NSURL *url = [[NSURL alloc] initWithString:aUrl]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; operation.inputStream = [NSInputStream inputStreamWithURL:url]; operation.outputStream = [NSOutputStream outputStreamToFileAtPath:fileName append:NO]; //下载进度控制 //已完成下载 [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"下载成功"); [self.tableView reloadData]; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"下载失败"); }]; [operation start]; } } - (void)setupNav { UILabel *customLab = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 30)]; [customLab setTextColor:[UIColor whiteColor]]; [customLab setText:@"SOP分类查询"]; customLab.font = [UIFont boldSystemFontOfSize:19]; self.navigationItem.titleView = customLab; 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; } - (void)setGroupBar { self.groupTabBar = [[GroupTabBar alloc] initWithFrame:CGRectMake(0, 0, 120, kScreenHeight - 64 - 60)]; _groupTabBar.delegate = self; [self.view addSubview:_groupTabBar]; NSInteger selectedIndex = 0; NSIndexPath *selectedIndexPath = [NSIndexPath indexPathForRow:selectedIndex inSection:0]; SOPTableView *tableView1 = [[SOPTableView alloc] initWithTitleArray:_titleArray1]; tableView1.sop_delegate = self; GroupItems *tableItem1 = [[GroupItems alloc] initWithTitle:_titleArray[0] view:tableView1]; SOPTableView *tableView2 = [[SOPTableView alloc] initWithTitleArray:_titleArray2]; tableView2.sop_delegate = self; GroupItems *tableItem2 = [[GroupItems alloc] initWithTitle:_titleArray[1] view:tableView2]; SOPTableView *tableView3 = [[SOPTableView alloc] initWithTitleArray:_titleArray3]; tableView3.sop_delegate = self; GroupItems *tableItem3 = [[GroupItems alloc] initWithTitle:_titleArray[2] view:tableView3]; SOPTableView *tableView4 = [[SOPTableView alloc] initWithTitleArray:_titleArray4]; tableView4.sop_delegate = self; GroupItems *tableItem4 = [[GroupItems alloc] initWithTitle:_titleArray[3] view:tableView4]; SOPTableView *tableView5 = [[SOPTableView alloc] initWithTitleArray:_titleArray5]; tableView5.sop_delegate = self; GroupItems *tableItem5 = [[GroupItems alloc] initWithTitle:_titleArray[4] view:tableView5]; SOPTableView *tableView6 = [[SOPTableView alloc] initWithTitleArray:_titleArray6]; tableView6.sop_delegate = self; GroupItems *tableItem6 = [[GroupItems alloc] initWithTitle:_titleArray[5] view:tableView6]; SOPTableView *tableView7 = [[SOPTableView alloc] initWithTitleArray:_titleArray7]; tableView7.sop_delegate = self; GroupItems *tableItem7 = [[GroupItems alloc] initWithTitle:_titleArray[6] view:tableView7]; SOPTableView *tableView8 = [[SOPTableView alloc] initWithTitleArray:_titleArray8]; tableView8.sop_delegate = self; GroupItems *tableItem8 = [[GroupItems alloc] initWithTitle:_titleArray[7] view:tableView8]; [tableView1 selectRowAtIndexPath:selectedIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; [tableView2 selectRowAtIndexPath:selectedIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; [tableView3 selectRowAtIndexPath:selectedIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; [tableView4 selectRowAtIndexPath:selectedIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; [tableView5 selectRowAtIndexPath:selectedIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; [tableView6 selectRowAtIndexPath:selectedIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; [tableView7 selectRowAtIndexPath:selectedIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; [tableView8 selectRowAtIndexPath:selectedIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; [self.view insertSubview:tableView1 belowSubview:_groupTabBar]; [self.view insertSubview:tableView2 belowSubview:_groupTabBar]; [self.view insertSubview:tableView3 belowSubview:_groupTabBar]; [self.view insertSubview:tableView4 belowSubview:_groupTabBar]; [self.view insertSubview:tableView5 belowSubview:_groupTabBar]; [self.view insertSubview:tableView6 belowSubview:_groupTabBar]; [self.view insertSubview:tableView7 belowSubview:_groupTabBar]; [self.view insertSubview:tableView8 belowSubview:_groupTabBar]; _groupTabBar.items = @[tableItem1, tableItem2, tableItem3, tableItem4, tableItem5, tableItem6, tableItem7, tableItem8]; [_groupTabBar showIndex:0]; } -(void)doBack:(id)sender { [self.navigationController dismissViewControllerAnimated:YES completion:nil]; } #pragma mark - UITableView Delegate/DataSource - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return _attachmentArray.count; } // cell显示的内容 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { AttachmentTableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:kAttachmentTableCell]; if (!cell) { cell = [[AttachmentTableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:kAttachmentTableCell]; } AttachmentModel *atta = _attachmentArray[indexPath.row]; NSString *name = atta.fileName; [cell.nameBtn setTitle:name forState:UIControlStateNormal]; [cell.nameBtn addTarget:self action:@selector(showFile:) forControlEvents:UIControlEventTouchUpInside]; [cell.downloadBtn addTarget:self action:@selector(downloadFile:) forControlEvents:UIControlEventTouchUpInside]; cell.downloadBtn.tag = 998473 + indexPath.row; cell.nameBtn.tag = 998473 + indexPath.row; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *path = paths.lastObject; NSString *url = [NSString stringWithFormat:@"%@/%@", path, atta.fileName]; NSFileManager *fileManager = [NSFileManager defaultManager]; if ([fileManager fileExistsAtPath:url]) { cell.downloadBtn.selected = YES; cell.downloadBtn.backgroundColor = [UIColor grayColor]; } else { cell.downloadBtn.selected = NO; cell.downloadBtn.backgroundColor = [UIColor colorWithRed:47 / 255.0 green:209/ 255.0 blue:92 / 255.0 alpha:1.0]; } return cell; } - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 40)]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, kScreenWidth - 20, 40)]; label.text = @"附件"; label.textColor = kNavigationBarColor; label.font = [UIFont systemFontOfSize:14.0]; [view addSubview:label]; return view; } - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 40; } #pragma mark - SOPTableViewDelegate - (void)selectRowWithDetailTitle:(NSString *)detailTitle { _detailTitle = detailTitle; } #pragma mark - GroupTabBarDelegate - (void)switchView:(UIView *)view { UIView *currentView = [self.view viewWithTag:SELECTED_VIEW_CONTROLLER_TAG]; [currentView removeFromSuperview]; currentView = nil; view.frame = CGRectMake(self.groupTabBar.frame.size.width,0,kScreenWidth - self.groupTabBar.frame.size.width, self.groupTabBar.size.height); view.tag = SELECTED_VIEW_CONTROLLER_TAG; [self.view insertSubview:view belowSubview:_groupTabBar]; } #pragma mark - lazy loading - (UIButton *)resetBtn { if (!_resetBtn) { _resetBtn = [[UIButton alloc] init]; _resetBtn.backgroundColor = [UIColor grayColor]; _resetBtn.translatesAutoresizingMaskIntoConstraints = NO; [_resetBtn setTitle:@"重置" forState:UIControlStateNormal]; _resetBtn.layer.cornerRadius = 4.0; [self.view addSubview:_resetBtn]; NSLayoutConstraint *lineViewHeight = [NSLayoutConstraint constraintWithItem:_resetBtn attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:45]; [self.view addConstraint:lineViewHeight]; NSLayoutConstraint *lineViewRight = [NSLayoutConstraint constraintWithItem:_resetBtn attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:-10]; [self.view addConstraint:lineViewRight]; NSLayoutConstraint *lineViewBottom = [NSLayoutConstraint constraintWithItem:_resetBtn attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0 constant:-7.5]; [self.view addConstraint:lineViewBottom]; NSLayoutConstraint *lineViewLeft = [NSLayoutConstraint constraintWithItem:_resetBtn attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:20]; [self.view addConstraint:lineViewLeft]; } return _resetBtn; } - (UIButton *)queryBtn { if (!_queryBtn) { _queryBtn = [[UIButton alloc] init]; _queryBtn.backgroundColor = kNavigationBarColor; _queryBtn.translatesAutoresizingMaskIntoConstraints = NO; [_queryBtn setTitle:@"查看附件" forState:UIControlStateNormal]; _queryBtn.layer.cornerRadius = 4.0; [self.view addSubview:_queryBtn]; NSLayoutConstraint *lineViewHeight = [NSLayoutConstraint constraintWithItem:_queryBtn attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:45]; [self.view addConstraint:lineViewHeight]; NSLayoutConstraint *lineViewRight = [NSLayoutConstraint constraintWithItem:_queryBtn attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:-20]; [self.view addConstraint:lineViewRight]; NSLayoutConstraint *lineViewBottom = [NSLayoutConstraint constraintWithItem:_queryBtn attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0 constant:-7.5]; [self.view addConstraint:lineViewBottom]; NSLayoutConstraint *lineViewLeft = [NSLayoutConstraint constraintWithItem:_queryBtn attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:10]; [self.view addConstraint:lineViewLeft]; } return _queryBtn; } @end