// // NewInstallReceiptVC.m // IBOSS // // Created by guanhh on 17/7/14. // Copyright © 2017年 沈阳东科云信软件有限公司. All rights reserved. // // 功能描述:新增安装回执 #import "NewInstallReceiptVC.h" #import "StatusInfo.h" #import "StatusInfoTextVC.h" #import "NIDropDown.h" #import "NewInstallIItemModel.h" #import "NewInstallDetailListsCell.h" #import "DKUICollectionViewCell.h" #import "DKCamera.h" #import "DKCameraViewController.h" #import "DKPhotoPickerViewController.h" #import "RegularExpression.h" #import "Util.h" #import "LeslieAsyncImageDownloader.h" #import "CustomButton.h" #define kTextFont [UIFont systemFontOfSize: LabelAndTextFontOfSize] @interface NewInstallReceiptVC (){ NSMutableArray* _arrayStatus; NSMutableArray* _arrayReceiptType; BOOL _isHaveDian; UIView *_contentView; UIScrollView *_scroll; NSInteger _imagesHeight; NSInteger _cellHeight; UIView *_vCollectionView; UIView *_vImage; NSInteger _btnImageHeight; NSInteger _positionHeight; UIView *_positionImage; UILabel *_lblPosition; UIImageView* _ivPosition; CGFloat _initHeight; BOOL _keyboardShow; } /** 下载管理器 */ @property (nonatomic,strong) ASIDownManager *mDownManager; /** 保存管理器 */ @property (nonatomic,strong) ASIDownManager *mSaveManager; @end @implementation NewInstallReceiptVC @synthesize vCustomTableView; #pragma mark - 公共函数 /** 视图加载完成函数 */ - (void)viewDidLoad { [super viewDidLoad]; [self initUI]; [self initStatus]; self.model = [[ParseNewInstallItem alloc]init]; self.model.detailsArr = [[NSMutableArray alloc]init]; self.mSaveManager = [[ASIDownManager alloc] init]; self.mSaveManager.delegate = self; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onFocusPeopleEditingChanged:) name:@"UITextFieldTextDidChangeNotification" object:self.receiptAmount ]; self.navigationItem.title = @"新增安装回执"; //返回 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setImage:[UIImage imageNamed:@"icon_back"] forState:UIControlStateNormal]; [button addTarget:self action:@selector(goBack) forControlEvents:UIControlEventTouchUpInside]; button.frame = CGRectMake(0, 0,45,22); UIBarButtonItem *menuButton = [[UIBarButtonItem alloc] initWithCustomView:button]; self.navigationItem.leftBarButtonItem = menuButton; if(_sCode != nil && _sCode.length > 0){ self.code.enabled = NO; [self reloadDataWithOnlyCode:_sCode]; } } /** 安全区视图发生变化 */ -(void)viewSafeAreaInsetsDidChange{ [self.view setBackgroundColor:[UIColor whiteColor]]; UIImage *pic = [UIImage imageNamed:@"bt_datasave"]; CGFloat h = (Screen_Width - 40) * pic.size.height / pic.size.width; _scroll.frame =CGRectMake(0, 0, Screen_Width, self.view.safeAreaLayoutGuide.layoutFrame.size.height -h); _saveBtn.frame = CGRectMake(20, self.view.safeAreaLayoutGuide.layoutFrame.size.height -h-15, Screen_Width-40, h); [super viewSafeAreaInsetsDidChange]; } /** 内存释放函数 */ - (void)dealloc{ // [self cancel]; // [[NSNotificationCenter defaultCenter]removeObserver:self name:@"UITextFieldTextDidChangeNotification" object:self.receiptAmount]; } /** 初始化相册数组 @return <#return value description#> */ - (NSMutableArray *)assets{ if (!_assets) { _assets = [NSMutableArray array]; } return _assets; } /** 初始化图片路径数组 @return <#return value description#> */ - (NSMutableArray *)imagePaths{ if (!_imagePaths) { _imagePaths = [NSMutableArray array]; } return _imagePaths; } /** 初始化回执类型数组 */ - (void)initStatus{ _arrayStatus = [[NSMutableArray alloc]init]; StatusInfo *s = [[StatusInfo alloc]init]; s.statusId = @"1"; s.name = @"完成"; [_arrayStatus addObject:s]; s = [[StatusInfo alloc]init]; s.statusId = @"3"; s.name = @"推迟安装"; [_arrayStatus addObject:s]; } - (void) initStatus2 :(BOOL) flag{ _arrayReceiptType = [[NSMutableArray alloc]init]; StatusInfo *s = [[StatusInfo alloc]init]; s.statusId = @"1"; s.name = @"完成"; s.tagName = @"ReceiptType"; [_arrayReceiptType addObject:s]; if(flag){ s = [[StatusInfo alloc]init]; s.statusId = @"5"; s.tagName = @"ReceiptType"; s.name = @"再安装"; [_arrayReceiptType addObject:s]; } } /** 初始化collectionView */ - (void)setupCollectionView{ UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init]; flowLayout.itemSize = CGSizeMake(85, 85); flowLayout.minimumInteritemSpacing = 5; flowLayout.minimumLineSpacing = 10; flowLayout.scrollDirection = UICollectionViewScrollDirectionVertical; flowLayout.sectionInset = UIEdgeInsetsMake(7, 20, 0, 20); self.collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, Screen_Width, (85 + 15) * 3) collectionViewLayout:flowLayout]; self.collectionView.backgroundColor = [UIColor clearColor]; self.collectionView.dataSource = self; self.collectionView.delegate = self; [self.collectionView registerNib:[UINib nibWithNibName:@"DKUICollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"DKUICollectionViewCell"]; [_vCollectionView addSubview:self.collectionView]; } #pragma mark - 委托函数 /** 保存完成后更新数据 @param sender <#sender description#> */ - (void)onLoadFinish:(ASIDownManager *)sender { RequestResultModel *resultModel = [RequestResultModel dk_modelWithJSON:sender.mWebStr]; [self cancel]; int iStatus = resultModel.status; NSString *message = resultModel.message; self.navigationItem.rightBarButtonItem.enabled=YES; if (iStatus == 0) { //[self clearData];//新增后 清除画面的值 UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"保存成功!" preferredStyle:UIAlertControllerStyleAlert ]; [alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action){ [_parentVC ReloadList]; [self.navigationController popViewControllerAnimated:YES]; }]]; // 3.显示alertController:presentViewController [self presentViewController:alert animated:YES completion:nil]; } else if(iStatus == ActionResultStatusAuthError || iStatus == ActionResultStatusNoLogin || iStatus == ActionResultStatusLogined||iStatus==ActionResultSessionOverdue){ [self showReLoginDialog:message]; return; } else { [self showAlertViewText:message]; } } /** 保存加载失败函数 @param sender <#sender description#> */ - (void)onLoadFail:(ASIDownManager *)sender { [self cancel]; [self showAlertViewText:@"网络异常"]; } /** 回执数据加载成功接口 @param sender <#sender description#> */ - (void)onRequestSuccess:(ASIDownManager *)sender { RequestResultModel *resultModel = [RequestResultModel dk_modelWithJSON:sender.mWebStr]; [self cancel]; self.sCode = @""; int iStatus = resultModel.status; NSString *message = resultModel.message; if (iStatus == 0) { self.sCode=self.code.text; NSArray * infoArr; NSArray * infoHead; NSDictionary *dicResult = (NSDictionary*)resultModel.result; [self.model.detailsArr removeAllObjects]; if(dicResult != nil){ infoArr = [dicResult objectForKey:@"Table1"]; infoHead = [dicResult objectForKey:@"Table"]; } if (infoHead == nil|| infoHead.count == 0) { self.code.text = @""; self.sCode = @""; [self clearData]; [self showAlertViewText:@"该安装单未建安排单,请重新建安排单"]; return; } //单据信息 一条数据 BOOL receiptFlag=false; for (int i = 0; i < infoHead.count; i++) { NSDictionary *h = infoHead[i]; receiptFlag = [[h objectForKey:@"ReceiptFlag"] boolValue] ; if (receiptFlag) { self.sReceiptType = @"1"; break; }else{ self.sReceiptType = @"0"; } self.customerId = [[h objectForKey:@"CustomerID"]stringValue]; self.installationId = [[h objectForKey:@"InstallationID"]stringValue]; self.orgId = [[h objectForKey:@"BusinessOrganization"]stringValue]; self.salesman = [[h objectForKey:@"SalesMan"]stringValue]; self.lblCustomerNameValue.text = [h objectForKey:@"CustomerName"]; self.receivablesValue.text = [NSString stringWithFormat:@"%.2f",[[h objectForKey:@"Receivables"] doubleValue] - [[h objectForKey:@"ReceiptedAmount"] doubleValue]]; self.lblServiceStaffName.text = [h objectForKey:@"ServiceStaffName"]; if ([self.sReceiptType isEqualToString:@"3"]) { self.sDelayDate = [h objectForKey:@"NextinstallDate"]; [self.delayDate setTitle:self.sDelayDate forState:UIControlStateNormal]; [self.receiptType setTitle:@"推迟安装" forState:UIControlStateNormal]; }else{ [self.receiptType setTitle:@"完成" forState:UIControlStateNormal]; self.sReceiptType = @"1"; [self.delayDate setTitle:@"请选择推迟日期" forState:UIControlStateNormal]; self.sDelayDate = @""; } if (self.receivablesValue.text != nil && [self.receivablesValue.text doubleValue] > 0) { self.receiptAmount.enabled = YES; }else{ self.receiptAmount.enabled = NO; } self.receiptAmount.text = @"0"; self.sSettlementType = @""; [self.settlementType setTitle:@"请选择收款方式" forState:UIControlStateNormal]; } if (receiptFlag) { self.code.text = @""; self.sCode = @""; [self clearData]; [self showAlertViewText:@"该安装单已经回执"]; return; } //详细信息 for (int i = 0; i */ - (void)onRequestFail:(ASIDownManager *)sender{ [self cancel]; [self showAlertViewText:@"网络异常"]; } /** 限制用户输入小数点后位数的方法 @param textField <#textField description#> @param range <#range description#> @param string <#string description#> @return <#return value description#> */ - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ if ([textField.text rangeOfString:@"."].location == NSNotFound) { _isHaveDian = NO; } if ([string length] > 0) { unichar single = [string characterAtIndex:0];//当前输入的字符 if ((single >= '0' && single <= '9') || single == '.') {//数据格式正确 //首字母不能为0和小数点 if([textField.text length] == 0){ if(single == '.') { [self showAlertViewText:@"第一个数字不能为小数点"]; [textField.text stringByReplacingCharactersInRange:range withString:@""]; return NO; } } if([textField.text length] == 1 && [[textField.text substringToIndex:1] isEqualToString: @"0"]){ if(!(single == '.')) { [textField.text stringByReplacingCharactersInRange:range withString:@""]; return NO; } } //输入的字符是否是小数点 if (single == '.') { if(!_isHaveDian)//text中还没有小数点 { _isHaveDian = YES; return YES; }else{ [self showAlertViewText:@"您已经输入过小数点了"]; [textField.text stringByReplacingCharactersInRange:range withString:@""]; return NO; } }else{ if (_isHaveDian) {//存在小数点 //判断小数点的位数 NSRange ran = [textField.text rangeOfString:@"."]; if (range.location - ran.location <= 6) { return YES; } else{ return NO; } }else{ return YES; } } }else{ //输入的数据格式不正确 [self showAlertViewText:@"您输入的格式不正确"]; [textField.text stringByReplacingCharactersInRange:range withString:@""]; return NO; } } else { return YES; } } /** 选中位置回调事件 @param name <#name description#> */ - (void)relocationData:(NSString *)name{ _lblPosition.text = name; _positionImage.hidden = NO; if (_lblPosition.text.length > 0){ _ivPosition.image = [UIImage imageNamed:@"log_position"]; vCustomTableView.frame = CGRectMake(0, CGRectGetMaxY(_separatorView.frame), self.view.frame.size.width, [self getDataViewHeight:self.model.detailsArr]); _vCollectionView.frame = CGRectMake(0,CGRectGetMaxY(vCustomTableView.frame), self.view.frame.size.width, [Util getPhotoCollectionViewHeightWithPhotos:self.assets]); _positionImage.frame = CGRectMake(0,CGRectGetMaxY(_vCollectionView.frame)-10, Screen_Width, 30); _vImage.frame = CGRectMake(0,CGRectGetMaxY(_positionImage.frame)+5, Screen_Width,30); _contentView.frame = CGRectMake(0, 0, Screen_Width, CGRectGetMaxY(_vImage.frame)); _scroll.contentSize = CGSizeMake(Screen_Width, _contentView.frame.size.height + 150); } } /** 单据信息中收款方式的回调函数 @param model <#model description#> */ - (void)showProtocolValue:(SettlementTypeModel *)model{ self.sSettlementType = model.settlementId; self.sSettlementTypeName = model.settlementName; self.sExitsHandleFee = model.isNotHand; self.sEarnestFee = model.handAmount; self.sRemarks = model.remark; [self.settlementType setTitle:model.settlementName forState:UIControlStateNormal]; } /** 详细信息中铺贴方式,回执类型,单据信息中回执类型的回调函数 @param s <#s description#> */ - (void)showStatusValue:(StatusInfo *)s{ if (s == nil) { return; } if ([s.tagName isEqualToString: @"PayStyle"]) { //详细cell中铺贴方式返回值 [self.model btnGoPayStyle:s.statusId Name:s.name CellIndex:self.cellIndex]; //一个cell刷新 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:self.cellIndex inSection:0]; [self.vCustomTableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone]; } else if ([s.tagName isEqualToString: @"ReceiptType"]) { [self.model btnGoReceiptType:s.statusId Name:s.name CellIndex:self.cellIndex]; NSIndexPath *indexPath = [NSIndexPath indexPathForRow:self.cellIndex inSection:0]; [self.vCustomTableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone]; } else{ self.sReceiptType = s.statusId; [self.receiptType setTitle:s.name forState:UIControlStateNormal]; if (![self.sReceiptType isEqualToString:@"3"]) { self.sDelayDate = @""; [self.delayDate setTitle:@"请选择回执开始日期" forState:UIControlStateNormal]; [self.model updateCellInfo:NO]; } else{ [self.model updateCellInfo:YES]; } [self.vCustomTableView reloadData]; } } /** 键盘隐藏回调 @param cell <#cell description#> */ - (void)keyboardWillHide:(NewInstallDetailListsCell *)cell{ if (cell.cellIndex == self.model.detailsArr.count - 1) { [self keyboardWillHide]; } } /** 键盘弹出回调 @param cell <#cell description#> */ - (void)keyboardWillShow:(NewInstallDetailListsCell *)cell{ if (cell.cellIndex == self.model.detailsArr.count - 1) { [self keyboardWillShow]; } } /** 编辑完成回调 @param cell <#cell description#> */ - (void)endEdit:(NewInstallDetailListsCell *)cell{ NewInstallIItemModel *m = self.model.detailsArr[self.cellIndex]; cell.receiptQuantity.text = m.receiptQuantity; } /** 选中相片回调事件 @param assets <#assets description#> */ - (void)pickerViewControllerDoneAsstes:(NSArray *)assets{ // __weak typeof(self) weakSelf = self; for (int i = (int)self.assets.count - 1;i >= 0;i-- ) { if ([self.assets[i] isKindOfClass:[DKPhotoAssets class]]) { [self.assets removeObject:self.assets[i]]; } } for (DKPhotoAssets* asset in assets ) { if ([asset isKindOfClass:[DKPhotoAssets class]]) { [self.assets addObject:asset]; } } [self.collectionView reloadData]; } /** 详细信息中文本信息编辑 @param cell <#cell description#> @param txtfield <#txtfield description#> @param qualityTxt <#qualityTxt description#> @param remark <#remark description#> */ - (void)textValueChange:(NewInstallDetailListsCell *)cell txtField:(UITextField *)txtfield qualityField:(UITextField *)qualityTxt remarkField:(UITextField *)remark{ self.cellIndex = cell.cellIndex; [self.model updateCellText:txtfield CellIndex:cell.cellIndex qualityField:qualityTxt remarkField:remark]; if(txtfield.tag == 1110) //数量 { NewInstallIItemModel *m = self.model.detailsArr[self.cellIndex]; cell.receiptBox.text = m.box; cell.receiptPiece.text= m .piece; cell.mm.text = m.mm; } } /** tableview的分区数 @param tableView <#tableView description#> @return <#return value description#> */ - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } /** tableview的行数 @param tableView <#tableView description#> @param section <#section description#> @return <#return value description#> */ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { NSInteger rowcount = [self.model.detailsArr count]; vCustomTableView.frame = CGRectMake(0, CGRectGetMaxY(_separatorView.frame), self.view.frame.size.width, [self getDataViewHeight:self.model.detailsArr]); _vCollectionView.frame = CGRectMake(0,CGRectGetMaxY(vCustomTableView.frame), self.view.frame.size.width, [Util getPhotoCollectionViewHeightWithPhotos:self.assets]); _positionImage.frame = CGRectMake(0,CGRectGetMaxY(_vCollectionView.frame), Screen_Width, 0); _vImage.frame = CGRectMake(0,CGRectGetMaxY(_positionImage.frame), Screen_Width,30); _contentView.frame = CGRectMake(0, 0, Screen_Width, CGRectGetMaxY(_vImage.frame)); _scroll.contentSize = CGSizeMake(Screen_Width, _contentView.frame.size.height + 150); return rowcount; } /** tableview的高度 @param tableView <#tableView description#> @param indexPath <#indexPath description#> @return <#return value description#> */ - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 262; } /** 获取tableview的cell @param tableView <#tableView description#> @param indexPath <#indexPath description#> @return <#return value description#> */ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *identifier = @"NewInstallDetailListsCell"; NewInstallDetailListsCell* cell = [[NewInstallDetailListsCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]; NSUInteger row = [indexPath row]; cell.installDelegate = self; cell.cellIndex = row; [cell parseInfoModel:self.model.detailsArr[row]type:_sReceiptType]; if (!self.model.isDelay && [cell.receiptType isEqualToString:@"1"]) { cell.remark.enabled = YES; } return cell; } /** 获取collection view的分区数 @param collectionView <#collectionView description#> @return <#return value description#> */ - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{ return 1; } /** 获取collection view的项数 @param collectionView <#collectionView description#> @param section <#section description#> @return <#return value description#> */ - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ vCustomTableView.frame = CGRectMake(0, CGRectGetMaxY(_separatorView.frame), self.view.frame.size.width, [self getDataViewHeight:self.model.detailsArr]); _vCollectionView.frame = CGRectMake(0,CGRectGetMaxY(vCustomTableView.frame), self.view.frame.size.width, [Util getPhotoCollectionViewHeightWithPhotos:self.assets]); if(_lblPosition.text.length > 0){ _positionImage.frame = CGRectMake(0,CGRectGetMaxY(_vCollectionView.frame), Screen_Width, 30); }else{ _positionImage.frame = CGRectMake(0,CGRectGetMaxY(_vCollectionView.frame), Screen_Width, 0); } _vImage.frame = CGRectMake(0,CGRectGetMaxY(_positionImage.frame)+5, Screen_Width,30); _contentView.frame = CGRectMake(0, 0, Screen_Width, CGRectGetMaxY(_vImage.frame)); _scroll.contentSize = CGSizeMake(Screen_Width,_contentView.frame.size.height + 150); return [self.assets count]; } /** 获取collection view的cell @param collectionView <#collectionView description#> @param indexPath <#indexPath description#> @return <#return value description#> */ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ DKUICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"DKUICollectionViewCell" forIndexPath:indexPath]; // 判断类型来获取Image DKPhotoAssets *asset = self.assets[indexPath.item]; if ([asset isKindOfClass:[DKPhotoAssets class]]) { cell.imageView.image = asset.thumbImage; } else if ([asset isKindOfClass:[NSString class]]){ [cell.imageView sd_setImageWithURL:[NSURL URLWithString:(NSString *)asset] placeholderImage:[UIImage imageNamed:@"wallpaper_placeholder"]]; } else if([asset isKindOfClass:[UIImage class]]){ cell.imageView.image = (UIImage *)asset; } else if ([asset isKindOfClass:[DKCamera class]]){ cell.imageView.image = [asset thumbImage]; } return cell; } /** collection view的点击事件 @param collectionView <#collectionView description#> @param indexPath <#indexPath description#> */ - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ DKUICollectionViewCell *cell = (DKUICollectionViewCell *)[self.collectionView cellForItemAtIndexPath:indexPath]; // 图片游览器 DKPhotoPickerBrowserViewController *pickerBrowser = [[DKPhotoPickerBrowserViewController alloc] init]; // 传入点击图片View的话,会有微信朋友圈照片的风格 pickerBrowser.toView = cell.imageView; // 数据源/delegate pickerBrowser.delegate = self; pickerBrowser.dataSource = self; // 是否可以删除照片 pickerBrowser.editing = YES; // 当前选中的值 pickerBrowser.currentIndexPath = [NSIndexPath indexPathForItem:indexPath.row inSection:0]; // 展示控制器 [pickerBrowser show]; } /** collection view的分区数 @param pickerBrowser <#pickerBrowser description#> @return <#return value description#> */ - (NSInteger)numberOfSectionInPhotosInPickerBrowser:(DKPhotoPickerBrowserViewController *)pickerBrowser{ return 1; } - (NSInteger)photoBrowser:(DKPhotoPickerBrowserViewController *)photoBrowser numberOfItemsInSection:(NSUInteger)section{ return [self.assets count]; } - (DKPhotoPickerBrowserPhoto *)photoBrowser:(DKPhotoPickerBrowserViewController *)pickerBrowser photoAtIndexPath:(NSIndexPath *)indexPath{ id imageObj = [self.assets objectAtIndex:indexPath.item]; DKPhotoPickerBrowserPhoto *photo = [DKPhotoPickerBrowserPhoto photoAnyImageObjWith:imageObj]; // 包装下imageObj 成 DKPhotoPickerBrowserPhoto 传给数据源 DKUICollectionViewCell *cell = (DKUICollectionViewCell *)[self.collectionView cellForItemAtIndexPath:indexPath]; // 缩略图 photo.thumbImage = cell.imageView.image; return photo; } #pragma mark - - (void)photoBrowser:(DKPhotoPickerBrowserViewController *)photoBrowser removePhotoAtIndexPath:(NSIndexPath *)indexPath{ if (indexPath.row > [self.assets count]) return; [self.assets removeObjectAtIndex:indexPath.row]; [self.collectionView reloadData]; } #pragma mark - 私有函数 /** 弹出键盘函数 */ - (void)keyboardWillShow { if(!_keyboardShow){ [UIView animateWithDuration:0.3f animations:^ { self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y - 190, self.view.frame.size.width, self.view.frame.size.height); }];} _keyboardShow=YES; } /** 隐藏键盘函数 */ - (void)keyboardWillHide { self.view.backgroundColor = [UIColor colorWithWhite:0.96 alpha:1.0]; if(_keyboardShow){ [UIView animateWithDuration:0.1f animations:^ { self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y + 190, self.view.frame.size.width, self.view.frame.size.height); }];} _keyboardShow=NO; } /** 初始化界面 */ - (void)initUI{ _scroll = [UIScrollView new]; _scroll.frame = self.view.bounds; _scroll.tag = 1000; UITapGestureRecognizer *singleRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKey)]; singleRecognizer.cancelsTouchesInView = NO; [_scroll addGestureRecognizer:singleRecognizer]; [self.view addSubview:_scroll]; if(Screen_Height2 <= 480){ _scroll.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height + 80); } _contentView = [[UIView alloc]init]; _contentView.frame = CGRectZero; _contentView.backgroundColor = [UIColor whiteColor]; [_scroll addSubview:_contentView]; UIView *vCode = [UIView new]; vCode.frame = CGRectMake(0, 0, Screen_Width, 51); [_contentView addSubview:vCode]; UILabel *lblCode = [UILabel new]; lblCode.frame = CGRectMake(20, 16, 90, 25); lblCode.text = @"安装单号:"; lblCode.font = kTextFont; [vCode addSubview:lblCode]; self.code = [UITextField new]; self.code.enabled = NO; self.code.font = kTextFont; self.code.frame = CGRectMake(95, 16, 200, 25); [vCode addSubview:self.code]; UIView *vSeparator = [UIView new]; vSeparator.frame = CGRectMake(0,CGRectGetMaxY(vCode.frame), Screen_Width, 5); vSeparator.backgroundColor = LineBackgroundColor; [_contentView addSubview:vSeparator]; UIView *vCustomerName = [UIView new]; vCustomerName.frame = CGRectMake(0,CGRectGetMaxY(vSeparator.frame), Screen_Width, 31); [_contentView addSubview:vCustomerName]; UILabel *lblCustomerName = [UILabel new]; lblCustomerName.frame = CGRectMake(20, 3, 100, 25); lblCustomerName.text = @"客户名称:"; lblCustomerName.font = kTextFont; [vCustomerName addSubview:lblCustomerName]; self.lblCustomerNameValue = [UILabel new]; self.lblCustomerNameValue.font = kTextFont; self.lblCustomerNameValue.frame = CGRectMake(95, 3,200, 25); [vCustomerName addSubview:self.lblCustomerNameValue]; UIView *vReceivables = [UIView new]; vReceivables.frame=CGRectMake(0,CGRectGetMaxY(vCustomerName.frame), Screen_Width, 31); [_contentView addSubview:vReceivables]; UILabel *lblReceivables = [UILabel new]; lblReceivables.font = kTextFont; lblReceivables.frame = CGRectMake(20, 3, 100, 25); lblReceivables.text = @"应收金额:"; [vReceivables addSubview:lblReceivables]; self.receivablesValue = [UILabel new]; self.receivablesValue.font = kTextFont; self.receivablesValue.frame = CGRectMake(95, 3,200, 25); [vReceivables addSubview:self.receivablesValue]; UIView *vServiceStaffName = [UIView new]; vServiceStaffName.frame = CGRectMake(0,CGRectGetMaxY(vReceivables.frame), Screen_Width, 31); [_contentView addSubview:vServiceStaffName]; UILabel *lblServiceStaffNameTitle = [UILabel new]; lblServiceStaffNameTitle.frame = CGRectMake(20, 3, 100, 25); lblServiceStaffNameTitle.text = @"客服人员:"; lblServiceStaffNameTitle.font = kTextFont; [vServiceStaffName addSubview:lblServiceStaffNameTitle]; self.lblServiceStaffName = [UILabel new]; self.lblServiceStaffName.font = kTextFont; self.lblServiceStaffName.frame = CGRectMake(95, 3,200, 25); [vServiceStaffName addSubview:self.lblServiceStaffName]; UIView *vReceiptType = [UIView new]; vReceiptType.frame=CGRectMake(0,CGRectGetMaxY(vServiceStaffName.frame), Screen_Width, 31); [_contentView addSubview:vReceiptType]; UILabel *lblType = [UILabel new]; lblType.frame = CGRectMake(20, 3, 100, 25); lblType.text = @"回执类型:"; lblType.font = kTextFont; [vReceiptType addSubview:lblType]; self.receiptType = [UIButton buttonWithType:UIButtonTypeCustom]; self.receiptType.frame = CGRectMake(95, 3,200, 25); self.receiptType.titleLabel.font = kTextFont; [self.receiptType setTitle:@"请选择回执类型" forState:UIControlStateNormal]; self.receiptType.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft; [self.receiptType setTitleColor:[UIColor colorWithWhite:0 alpha:1.0] forState:UIControlStateNormal]; [self.receiptType addTarget:self action:@selector(btnTypeCilck) forControlEvents:UIControlEventTouchUpInside]; [vReceiptType addSubview:self.receiptType]; UIButton *btnReceiptTypeArrow = [UIButton buttonWithType:UIButtonTypeCustom]; btnReceiptTypeArrow.frame = CGRectMake(Screen_Width-15,8,7,12); [btnReceiptTypeArrow setImage:[UIImage imageNamed:@"rightarrow"] forState:UIControlStateNormal]; [vReceiptType addSubview:btnReceiptTypeArrow]; //收款方式-------------- UIView *vSettlementType = [UIView new]; vSettlementType.frame = CGRectMake(0,CGRectGetMaxY(vReceiptType.frame), Screen_Width, 31); [_contentView addSubview:vSettlementType]; UILabel *lblSettlementType = [UILabel new]; lblSettlementType.frame = CGRectMake(20, 3, 100, 25); lblSettlementType.text = @"收款方式:"; lblSettlementType.font = kTextFont; [vSettlementType addSubview:lblSettlementType]; self.settlementType = [UIButton buttonWithType:UIButtonTypeCustom]; self.settlementType.frame = CGRectMake(95, 3,200, 25); self.settlementType.titleLabel.font = kTextFont; [self.settlementType setTitle:@"请选择收款方式" forState:UIControlStateNormal]; self.settlementType.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft; [self.settlementType setTitleColor:[UIColor colorWithWhite:0.5 alpha:0.5] forState:UIControlStateNormal]; [self.settlementType addTarget:self action:@selector(settlementTypeCilck) forControlEvents:UIControlEventTouchUpInside]; [vSettlementType addSubview:self.settlementType]; UIButton *btnSettlementTypeArrow = [UIButton buttonWithType:UIButtonTypeCustom]; btnSettlementTypeArrow.frame = CGRectMake(Screen_Width-15,8,7,12); [btnSettlementTypeArrow setImage:[UIImage imageNamed:@"rightarrow"] forState:UIControlStateNormal]; [vSettlementType addSubview:btnSettlementTypeArrow]; UIView *vReceiptAmount = [UIView new]; vReceiptAmount.frame = CGRectMake(0,CGRectGetMaxY(vSettlementType.frame), Screen_Width, 31); [_contentView addSubview:vReceiptAmount]; UILabel *lblreceiptamount = [UILabel new]; lblreceiptamount.frame = CGRectMake(20, 3, 100, 25); lblreceiptamount.text = @"回执金额:"; lblreceiptamount.font = kTextFont; [vReceiptAmount addSubview:lblreceiptamount]; self.receiptAmount = [UITextField new]; self.receiptAmount.placeholder = @"请输入回执金额"; self.receiptAmount.keyboardType = UIKeyboardTypeDecimalPad; self.receiptAmount.font = kTextFont; self.receiptAmount.delegate = self; self.receiptAmount.enabled = NO; self.receiptAmount.frame = CGRectMake(95, 3,200, 25); [vReceiptAmount addSubview:self.receiptAmount]; //清除按钮 UILabel *lblMoney = [[UILabel alloc]init]; lblMoney.frame = CGRectMake(Screen_Width-20, 3, 22, 22); lblMoney.font = kTextFont; lblMoney.text = @"元"; [vReceiptAmount addSubview:lblMoney]; //start日期-------------- UIView *vReceiptDate = [UIView new]; vReceiptDate.frame = CGRectMake(0,CGRectGetMaxY(vReceiptAmount.frame), Screen_Width, 31); [_contentView addSubview:vReceiptDate]; UILabel *lblDelayDate = [UILabel new]; lblDelayDate.frame = CGRectMake(20, 3, 100, 25); lblDelayDate.text = @"推迟日期:"; lblDelayDate.font = kTextFont; [vReceiptDate addSubview:lblDelayDate]; self.delayDate = [UIButton buttonWithType:UIButtonTypeCustom]; self.delayDate.frame = CGRectMake(95, 3,200, 25); self.delayDate.titleLabel.font = kTextFont; self.delayDate.tag = 1002; [self.delayDate setTitle:@"请选择推迟日期" forState:UIControlStateNormal]; self.delayDate.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft; [self.delayDate setTitleColor:[UIColor colorWithWhite:0.5 alpha:0.5] forState:UIControlStateNormal]; [self.delayDate addTarget:self action:@selector(btnDateClick:) forControlEvents:UIControlEventTouchUpInside]; [vReceiptDate addSubview:self.delayDate]; UIButton *btnStrDateClear = [UIButton buttonWithType:UIButtonTypeCustom]; btnStrDateClear.frame = CGRectMake(Screen_Width-15,8,7,12); btnStrDateClear.tag = 1003; [ btnStrDateClear setImage:[UIImage imageNamed:@"rightarrow"] forState:UIControlStateNormal]; [vReceiptDate addSubview:btnStrDateClear]; _separatorView = [UIView new]; _separatorView.frame = CGRectMake(0,CGRectGetMaxY(vReceiptDate.frame), Screen_Width, 5); _separatorView.backgroundColor = LineBackgroundColor; [_contentView addSubview:_separatorView]; vCustomTableView = [[UITableView alloc] initWithFrame:CGRectMake(0,CGRectGetMaxY(_separatorView.frame), self.view.frame.size.width, 0) style:UITableViewStylePlain]; vCustomTableView.separatorStyle = NO; vCustomTableView.autoresizingMask = UIViewAutoresizingFlexibleHeight; vCustomTableView.delegate = self; vCustomTableView.dataSource = self; [_contentView addSubview:vCustomTableView]; vCustomTableView.hidden = YES; _btnImageHeight = 0; _positionHeight=0; /////////图片 _vCollectionView = [UIView new]; _vCollectionView.frame=CGRectMake(0,CGRectGetMaxY(vCustomTableView.frame), Screen_Width, 0); [_contentView addSubview:_vCollectionView]; [self setupCollectionView]; ////////位置view _positionImage = [UIView new]; _positionImage.frame=CGRectMake(0,CGRectGetMaxY(_vCollectionView.frame), Screen_Width, 0); [_contentView addSubview:_positionImage]; //星号 _ivPosition = [UIImageView new]; _ivPosition.frame=CGRectMake(12, 18,9,12); [_positionImage addSubview:_ivPosition]; _lblPosition = [UILabel new]; _lblPosition.font=kTextFont; _lblPosition.frame=CGRectMake(32, 13, Screen_Width - 32, 20); [_positionImage addSubview:_lblPosition]; //照相和相册 ————————— _vImage = [UIView new]; _vImage.frame = CGRectMake(0,CGRectGetMaxY(_positionImage.frame), Screen_Width, _btnImageHeight); [_contentView addSubview:_vImage]; CGFloat width = (SCREENWIDTH-70)/2; CustomButton *btnPhoto = [[CustomButton alloc]initWithFrame:CGRectMake(width-90, 0, 70, 20) andImage:[UIImage imageNamed:@"icon_takephoto"] addText:@"照相" addImageWidth:15 addImageHeight:12]; [btnPhoto addTarget:self action:@selector(selectCamera) forControlEvents:(UIControlEventTouchUpInside)]; [_vImage addSubview:btnPhoto]; CustomButton *btn = [[CustomButton alloc]initWithFrame:CGRectMake(width, 0,70 , 20) andImage:[UIImage imageNamed:@"icon_photo"] addText:@"相册" addImageWidth:14 addImageHeight:15]; [btn addTarget:self action:@selector(selectPhotos) forControlEvents:(UIControlEventTouchUpInside)]; [_vImage addSubview:btn]; CustomButton *btnLoaction = [[CustomButton alloc]initWithFrame:CGRectMake(width+85, 0,100 , 20) andImage:[UIImage imageNamed:@"icon_position"] addText:@"所在位置" addImageWidth:13 addImageHeight:16]; [btnLoaction addTarget:self action:@selector(newMap) forControlEvents:(UIControlEventTouchUpInside)]; [_vImage addSubview:btnLoaction]; _vImage.hidden=YES; //保存按钮 UIImage *pic = [UIImage imageNamed:@"bt_datasave"]; CGFloat h = (Screen_Width - 40) * pic.size.height / pic.size.width; _saveBtn = [UIButton buttonWithType:UIButtonTypeCustom]; _saveBtn.frame = CGRectMake(20, Screen_Height - h - 5 - rectStatusHeight -10- rectNavHeight, Screen_Width - 40,h) ; [_saveBtn setBackgroundImage:pic forState:UIControlStateNormal]; [_saveBtn addTarget:self action:@selector(saveData) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:_saveBtn]; } /** 加载回执数据 */ - (void)loadData{ [self startLoading]; NSString *urlStr = ServerURL; NSMutableDictionary *dict = [NSMutableDictionary new]; [dict setObject:@"GetInstallationForNewReceiptIphone" forKey:@"Action"]; [dict setObject:kkAccountCode forKey:@"AccountCode"]; [dict setObject:kkUserCode forKey:@"UserCode"]; [dict setObject:kkUserPwd forKey:@"UserPassword"]; [dict setObject:kkSessionKey forKey:@"SessionKey"]; [dict setObject:self.code.text forKey:@"InstallationNo"]; self.mDownManager = [[ASIDownManager alloc] init]; self.mDownManager.delegate=self; self.mDownManager.onRequestSuccess=@selector(onRequestSuccess:); self.mDownManager.onRequestFail=@selector(onRequestFail:); [_mDownManager postHttpRequest:urlStr dic:dict path:nil fileName:nil]; } /** 保存图片到沙盒 @param currentImage <#currentImage description#> @param imageName <#imageName description#> @return <#return value description#> */ - (DKCamera *) saveImage:(UIImage *)currentImage withName:(NSString *)imageName { if (!currentImage) { return nil; } NSDateFormatter *formater = [[NSDateFormatter alloc] init]; formater.dateFormat = @"yyyyMMddHHmmss"; NSString *currentTimeStr = [[formater stringFromDate:[NSDate date]] stringByAppendingFormat:@"_%d_.jpg" ,arc4random_uniform(10000)]; NSData *imageData= [LeslieAsyncImageDownloader resetSizeOfImageData:currentImage maxSize:500]; // 获取沙盒目录 NSString *fullPath ; if([imageName isEqualToString:@""] || imageName == nil){ fullPath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:currentTimeStr]; } else{ fullPath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:imageName]; } // 将图片写入文件 [imageData writeToFile:fullPath atomically:NO]; UIImage *savedImage = [[UIImage alloc] initWithContentsOfFile:fullPath]; DKCamera *camera = [[DKCamera alloc] init]; camera.imagePath = fullPath; camera.thumbImage = savedImage;// [UIImage imageWithData:data]; return camera; } /** 保存图片数据 @return <#return value description#> */ - (BOOL)savePicsManager{ self.mDownManager = [[ASIDownManager alloc] init]; self.mDownManager.delegate = self; //////////////上传图片 NSString *urlStr = ServerURL; NSMutableDictionary *dict = [NSMutableDictionary dictionary]; [dict setObject:@"SaveImg" forKey:@"Action"]; [dict setObject:[NSString stringWithFormat:@"%@",kkAccountCode]forKey:@"AccountCode"]; [dict setObject:kkUserCode forKey:@"UserCode"]; [dict setObject:kkUserPwd forKey:@"UserPassword"]; [dict setObject:kkSessionKey forKey:@"SessionKey"]; [self.imagePaths removeAllObjects]; for (int i=0; i0) { [dict setObject:[self.imagePaths componentsJoinedByString:@"," ] forKey:@"ImagePath"]; } [self.mDownManager postHttpRequest:urlStr dic:dict files:nil]; } /** 隐藏进度条 */ - (void)cancel { [self stopLoading]; } /** 返回按钮 */ - (void)goBack { [self.navigationController popViewControllerAnimated:YES]; if([self.refreshDelegate respondsToSelector:@selector(refreshFollowUpData)]){ [self.refreshDelegate refreshFollowUpData]; } } /** 保存前的校验 @return <#return value description#> */ - (BOOL)check{ if(self.code.text == nil||[self.code.text isEqualToString:@""]){ [self showAlertViewText:@"请输入或扫描单号"]; return NO; } if(self.sCode == nil || [self.sCode isEqualToString:@""] ) { [self showAlertViewText:@"请按回车加载数据!"]; return NO; } if(self.receivablesValue != nil && [self.receivablesValue.text doubleValue] > 0 && self.receiptAmount.text.length == 0) { [self showAlertViewText:@"请输入回执金额"]; return NO; } if(self.receiptAmount.text != nil||![self.receiptAmount.text isEqualToString:@""]){ RegularExpression *regularExpr = [[RegularExpression alloc]init]; bool receiptAmountCheck = [regularExpr AmountRegular:self.receiptAmount.text]; if(!receiptAmountCheck){ [self showAlertViewText:@"回执金额格式不正确"]; self.receiptAmount.text = @""; return NO; } } if(self.receivablesValue != nil && [self.receivablesValue.text doubleValue] > 0 && self.receiptAmount.text.length != 0 &&[self.receivablesValue.text doubleValue] < [self.receiptAmount.text doubleValue]) { [self showAlertViewText:@"回执金额不能大于应收金额"]; return NO; } if([self.sReceiptType isEqualToString:@"3"] && (self.sDelayDate == nil||[self.sDelayDate isEqualToString:@""])) { [self showAlertViewText:@"请选择推迟日期"]; return NO; } NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];//实例化一个NSDateFormatter对象 [dateFormat setDateFormat:@"yyyy-MM-dd"]; NSDate *date = [dateFormat dateFromString:self.sDelayDate]; NSDate *lastDay = [NSDate dateWithTimeInterval:-24*60*60 sinceDate:[self getCurrentTime]]; if([self.sReceiptType isEqualToString:@"3"] && [self compareOneDay:date withAnotherDay:lastDay] != 1){ [self showAlertViewText:@"推迟日期不能小于当前日期"]; return NO; } for (NewInstallIItemModel *m in self.model.detailsArr) { if(m.receiptQuantity == nil || m.receiptQuantity.length == 0) { [self showAlertViewText:@"请输入回执数量"]; return NO; } if(m.completeQuantity == nil || m.completeQuantity.length == 0) { m.completeQuantity = @"0"; } if(m.installQuantity == nil || m.installQuantity.length == 0) { m.installQuantity = @"0"; } if([m.receiptQuantity doubleValue] > [MAX_COUNT doubleValue]) { [self showAlertViewText:[NSString stringWithFormat:@"回执数量的最大值为%@",MAX_COUNT ]]; return NO; } if([m.receiptQuantity doubleValue] > [m.installQuantity doubleValue]-[m.completeQuantity doubleValue]) { [self showAlertViewText:@"回执数量不能大于安装数量减去完成数量"]; return NO; } //0为传过来的是@“”;20211110 // if(m.salesDetailType != 2 || m.salesDetailType == 0){ // if([m.outQuantity doubleValue] <= 0){ // [self showAlertViewText:@"出库数量不能小于等于0"]; // return NO; // } // } // if([_sReceiptType intValue] == 1 && [m.receiptType intValue] == 5){ if([m.receiptQuantity doubleValue] < 0){ [self showAlertViewText:@"回执数量不能小于0"]; return NO; } double min; if([m.installQuantity doubleValue]>[m.outQuantity doubleValue]){ min =[m.outQuantity doubleValue]; }else{ min = [m.installQuantity doubleValue]; } if([m.receiptQuantity doubleValue]>= min){ [self showAlertViewText:@"回执数量不能大于或等于(安装数量或出库数量的最小值)"]; return NO; } if([m.receiptQuantity doubleValue] >= [m.maxReceiptQuantity doubleValue]){ [self showAlertViewText:@"回执数量不能大于或等于最大允许回执数量"]; return NO; } } } return YES; } /** 保存数据 */ - (void)saveData{ [self.view endEditing:YES]; if (![self check]) { return; } self.navigationItem.rightBarButtonItem.enabled=NO; [self startLoading]; dispatch_async(dispatch_get_global_queue(0, 0), ^{ if ([self savePicsManager]) { [self saveDataManager]; } }); } /** 收款方式的画面跳转 */ - (void)settlementTypeCilck{ if (self.sCode == nil || self.sCode.length == 0 | self.receivablesValue.text == nil || [self.receivablesValue.text doubleValue] == 0) { return; } [self.view endEditing:YES]; self.hidesBottomBarWhenPushed = YES; SettlementTypeVC *tc = [[SettlementTypeVC alloc] init]; tc.sDelegate = self; [self.navigationController pushViewController:tc animated:YES]; self.hidesBottomBarWhenPushed=NO; } /** 单据回执类型画面跳转 */ - (void)btnTypeCilck{ if (self.sCode == nil || self.sCode.length == 0) { return; } [self.view endEditing:YES]; self.hidesBottomBarWhenPushed=YES; StatusInfoTextVC *tc = [[StatusInfoTextVC alloc] init]; tc.sdelegate = self; [tc.arrFilter addObjectsFromArray:_arrayStatus]; [self.navigationController pushViewController:tc animated:YES]; self.hidesBottomBarWhenPushed=NO; } /** 清空画面 */ - (void)clearData{ self.code.enabled=YES; self.code.text = @""; self.sCode = @""; self.receiptAmount.text = @""; self.lblCustomerNameValue.text = @""; self.receivablesValue.text = @""; self.lblServiceStaffName.text = @""; self.sDelayDate = @""; [self.delayDate setTitle:@"请选择推迟日期" forState:UIControlStateNormal]; self.sReceiptType = @""; [self.receiptType setTitle:@"请选择回执类型" forState:UIControlStateNormal]; self.sSettlementType = @""; self.sSettlementTypeName = @""; [self.settlementType setTitle:@"请选择收款方式" forState:UIControlStateNormal]; _lblPosition.text = @""; _positionImage.hidden=YES; _vImage.hidden=YES; _btnImageHeight=0; _positionHeight=0; [self.imagePaths removeAllObjects]; [self.model.detailsArr removeAllObjects]; [self.assets removeAllObjects]; [self.vCustomTableView reloadData]; [self.collectionView reloadData]; } /** 清空单个控件数据 @param sender <#sender description#> */ - (void)clearData:(id)sender{ UIButton *btn=sender; [self.view endEditing:YES]; switch (btn.tag) { case 1001: { self.code.text = @""; } break; case 1003: { self.sDelayDate = @""; [self.delayDate setTitle:@"请选择回执开始日期" forState:UIControlStateNormal]; } break; default: break; } } /** 日历点击事件 @param sender <#sender description#> */ - (void)btnDateClick:(id)sender{ UIButton *btn=sender; [self.view endEditing:YES]; if (self.sCode == nil || self.sCode.length == 0 || ![self.sReceiptType isEqualToString: @"3"]) { return; } __weak typeof(self) weakself=self; switch (btn.tag) { case 1002: { _dealDatePicker = [BRDatePickerView PickerAlertWithTitle:@""]; [_dealDatePicker configureSelectionBlock:^(NSString *date){ self.sDelayDate = date; } andCompletionBlock:^(void){ [weakself.delayDate setTitle:self.sDelayDate forState:UIControlStateNormal]; } andCancelBlock:^(void){ self.sDelayDate = weakself.delayDate.titleLabel.text; if([self.sDelayDate isEqualToString:@"请选择回执开始日期"]||[self.sDelayDate isEqualToString:@"请选择推迟日期"]){ self.sDelayDate = @""; } }]; [_dealDatePicker show]; } break; default: break; } } /** 隐藏键盘 */ - (void)hideKey { [self.view endEditing:YES]; } /** 文本框的长度限制 实现监听方法 @param sender <#sender description#> */ - (void)onFocusPeopleEditingChanged:(NSNotification *)sender { UITextField *textField = (UITextField *)sender.object; NSString *toBeString = textField.text; NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; int kMaxLength = 0; //费用 if ([textField isEqual:self.receiptAmount ]) { kMaxLength = 17; if (toBeString != nil && toBeString.length>0 && [toBeString floatValue]-MAXIMUM_QUANTITY>0.0000000001f) { textField.text = MAX_COUNT; toBeString = MAX_COUNT; } } if ([lang isEqualToString:@"zh-Hans"]) { UITextRange *selectedRange = [textField markedTextRange]; UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0]; if (!position) { if (toBeString.length > kMaxLength) { textField.text = [toBeString substringToIndex:kMaxLength]; } } }else{ if (toBeString.length > kMaxLength) { textField.text = [toBeString substringToIndex:kMaxLength]; } } } /** 加载数据函数 @param code <#code description#> */ - (void)reloadDataWithOnlyCode:(NSString *)code { self.code.text = code; self.sCode = code; self.receiptAmount.enabled = YES; double delayInSeconds = 0.5; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ //刷新 [self loadData]; }); } /** 详细信息中回执类型点击 @param cell <#cell description#> */ - (void)btnGoReceiptType:(NewInstallDetailListsCell *)cell{ if (self.model.isDelay) { return; } self.hidesBottomBarWhenPushed=YES; self.cellIndex = cell.cellIndex; NewInstallIItemModel *model = self.model.detailsArr[self.cellIndex]; if([model.sourceFrom intValue] == 1||[model.sourceFrom intValue] == 0){ [self initStatus2:YES]; }else{ [self initStatus2:NO]; } StatusInfoTextVC *tc = [[StatusInfoTextVC alloc] init]; tc.sdelegate = self; [tc.arrFilter addObjectsFromArray: _arrayReceiptType]; [self.navigationController pushViewController:tc animated:YES]; self.hidesBottomBarWhenPushed = NO; } /** 获取照片数 @return <#return value description#> */ - (NSInteger)cameraCount{ NSInteger count = 0; for (int i = 0; i < self.assets.count; i++) { id asset = self.assets[i]; if ([asset isKindOfClass:[DKCamera class]]) { count++; } } return count; } /** 拍照事件 */ - (void)selectCamera{ DKCameraViewController *cameraVc = [[DKCameraViewController alloc] init]; __weak typeof(self) weakSelf = self; // 多选相册+相机多拍 回调 [cameraVc startCameraOrPhotoFileWithViewController:self complate:^(NSArray *object) { // 选择完照片、拍照完回调 [object enumerateObjectsUsingBlock:^(id asset, NSUInteger idx, BOOL *stop) { if(weakSelf.assets.count < 9){ if ([asset isKindOfClass:[DKCamera class]]) { [weakSelf.assets addObject:asset]; }else{ [weakSelf.assets addObject:asset]; } }else{ [self showAlertViewText:@"最多只能选择9张图片"]; } }]; [weakSelf.collectionView reloadData]; }]; } /** 获取table view的高度 @param dataArray <#dataArray description#> @return <#return value description#> */ - (CGFloat)getDataViewHeight:(NSArray *)dataArray { // 上下间隔已经在frame上做了 NSInteger row = dataArray.count; return (row * 262); } /** 选择相册事件 */ - (void)selectPhotos { // 创建控制器 DKPhotoPickerViewController *pickerVc = [[DKPhotoPickerViewController alloc] init]; // 默认显示相册里面的内容SavePhotos pickerVc.status = PickerViewShowStatusCameraRoll; pickerVc.selectPickers = self.assets; // 最多能选9张图片 pickerVc.minCount = 9; pickerVc.cameraCount = [self cameraCount]; pickerVc.delegate = self; [pickerVc show]; } /** 打开地图界面 关宏厚删除高德地图 2018-11-14 */ - (void)newMap{ // self.hidesBottomBarWhenPushed = YES; // MapViewController *mc = [[MapViewController alloc] init]; // mc.pDelegate = self; // [self.navigationController pushViewController:mc animated:YES]; } #pragma mark -得到当前时间 /** 获得当前日期 @return <#return value description#> */ - (NSDate *)getCurrentTime{ NSDateFormatter *formatter=[[NSDateFormatter alloc]init]; [formatter setDateFormat:@"yyyy-MM-dd"]; NSString *dateTime=[formatter stringFromDate:[NSDate date]]; NSDate *date = [formatter dateFromString:dateTime]; return date; } /** 比较时间 @param oneDay <#oneDay description#> @param anotherDay <#anotherDay description#> @return <#return value description#> */ - (int)compareOneDay:(NSDate *)oneDay withAnotherDay:(NSDate *)anotherDay { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"dd-MM-yyyy-HHmmss"]; NSString *oneDayStr = [dateFormatter stringFromDate:oneDay]; NSString *anotherDayStr = [dateFormatter stringFromDate:anotherDay]; NSDate *dateA = [dateFormatter dateFromString:oneDayStr]; NSDate *dateB = [dateFormatter dateFromString:anotherDayStr]; NSComparisonResult result = [dateA compare:dateB]; NSLog(@"date1 : %@, date2 : %@", oneDay, anotherDay); if (result == NSOrderedDescending) { //NSLog(@"Date1 is in the future"); return 1; } else if (result == NSOrderedAscending){ //NSLog(@"Date1 is in the past"); return -1; } //NSLog(@"Both dates are the same"); return 0; } @end