// // NewDeliveryRequirementController.m // IBOSSHSH // // Created by ssl on 2018/1/15. // Copyright © 2018年 elongtian. All rights reserved. // #import "NewDeliveryRequirementController.h" #import "NIDropDown.h" #import "StatusInfo.h" #import "StatusInfoTextVC.h" #import "PayTypeVC.h" #import "AlbumPhotoCollectionViewCell.h" #import "XHImageViewer.h" #import "DKPhotoPickerViewController.h" //#import "MapViewController.h" #import "DKCameraViewController.h" #import "DKUICollectionViewCell.h" #import "RegularExpression.h" #import "Util.h" #import "NewDeliveryRequirementCell.h" #import "CustomButton.h" #define kTextFont [UIFont systemFontOfSize:LabelAndTextFontOfSize] #define kTitleFont [UIFont systemFontOfSize:14] @interface NewDeliveryRequirementController (){ NSInteger _positionHeight; UIView *_positionImage; UIView *_vImage; UILabel *_lblPosition; UIImageView *_ivPosition; BOOL _isHaveDian; UIView *_vCollectionView; NSIndexPath *_myRow; /** 安排单号 */ UILabel *_lbArrange; /** 联系电话 */ UILabel *_lbTelephone; /** 送货地址 */ UILabel *_lbDeliveryAddress; /** 送货日期 */ UILabel *_lbDeliveryDate; /** 回收金额 */ UILabel *_lbRecoveryAmount; /** 备注 */ UITextField *_fieldRemarks; NewDeliveryRequirementCell *_myCell; /** 分割线 */ UIView *_line; } @end @implementation NewDeliveryRequirementController @synthesize scroll; @synthesize contentView; @synthesize refreshDelegate; @synthesize keyboardShow; #pragma mark - 公共函数 /** 加载视图函数 */ - (void)viewDidLoad { [super viewDidLoad]; _dataList = [[NSMutableArray alloc]init]; [self initUI]; [[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(self.sReceiptCode != nil&&self.sReceiptCode.length > 0){ self.receiptCode.enabled=NO; [self reloadDataWithOnlyCode:self.sReceiptCode]; } } /** 安全区视图发生变化 */ -(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)initStatus2:(BOOL) flag{ _arrayStatus = [[NSMutableArray alloc]init]; StatusInfo *s = [[StatusInfo alloc]init]; s.tagName = @"cell"; s.statusId = @"1"; s.name = @"完成"; [_arrayStatus addObject:s]; if(flag){ s = [[StatusInfo alloc]init]; s.tagName = @"cell"; s.statusId = @"2"; s.name = @"再送"; [_arrayStatus addObject:s]; s = [[StatusInfo alloc]init]; s.tagName = @"cell"; s.statusId = @"3"; s.name = @"换货"; [_arrayStatus addObject:s]; s = [[StatusInfo alloc]init]; s.tagName = @"cell"; s.statusId = @"4"; s.name = @"退货"; [_arrayStatus addObject:s]; } } /** 安装回执状态 @param flag <#flag description#> */ -(void) initStatus3:(BOOL) flag{ _arrayStatus = [[NSMutableArray alloc]init]; StatusInfo *s = [[StatusInfo alloc]init]; s.tagName = @"install"; s.statusId = @"1"; s.name = @"完成"; [_arrayStatus addObject:s]; if(flag){ s = [[StatusInfo alloc]init]; s.tagName = @"install"; s.statusId = @"5"; s.name = @"再安装"; [_arrayStatus addObject:s]; } } /** 初始化图片数组 @return <#return value description#> */ - (NSMutableArray *)imagePaths{ if (!_imagePaths) { _imagePaths = [NSMutableArray array]; } return _imagePaths; } /** 初始化回执类型 */ - (void)initStatus{ _arrayDStatus = [[NSMutableArray alloc]init]; StatusInfo* s = [[StatusInfo alloc]init]; s.tagName = @"status"; s.statusId = @"1"; s.name = @"完成"; [_arrayDStatus addObject:s]; s = [[StatusInfo alloc]init]; s.tagName = @"status"; s.statusId = @"2"; s.name = @"推迟送安"; [_arrayDStatus addObject:s]; } /** 获得拍照的照片总数 @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; } /** 初始化collection view */ - (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,0) collectionViewLayout:flowLayout]; self.collectionView.scrollEnabled = NO; 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]; } /** 初始化相册数组 @return <#return value description#> */ - (NSMutableArray *)assets{ if (!_assets) { _assets = [NSMutableArray array]; } return _assets; } #pragma mark - 回调函数 /** 文本值变化回调函数 @param cell <#cell description#> @param txtfield <#txtfield description#> @param qualityTxt <#qualityTxt description#> @param remark <#remark description#> */ - (void)textValueChange:(NewDeliveryRequirementCell *)cell txtField:(UITextField *)txtfield qualityField:(UITextField *)qualityTxt remarkField:(UITextField *)remark{ self.cellIndex=cell.cellIndex; NewDeliveryRequirementModel *model = [_dataList objectAtIndex:self.cellIndex]; if(txtfield.tag == 1000){ model.receiptQuantity = txtfield.text; } if(txtfield.tag == 1001){ model.receiptRemarks = txtfield.text; } if(txtfield.tag == 2000){ model.installReceiptQuantity = txtfield.text; } } -(void)scrollViewDidScroll:(UIScrollView *)scrollView{ [self.view endEditing:NO]; } /** 键盘隐藏回调函数 @param cell <#cell description#> */ - (void)keyboardWillHide:(NewDeliveryRequirementCell *)cell{ if (cell.cellIndex == _dataList.count - 1) { [self keyboardWillHide]; } } /** 键盘弹出回调函数 @param cell <#cell description#> */ - (void)keyboardWillShow:(NewDeliveryRequirementCell *)cell{ if (cell.cellIndex == _dataList.count - 1) { [self myKeyboardWillShow]; } } /** 保存数据加载完成函数 @param sender <#sender description#> */ - (void)onSaveLoadFinish:(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){ [self goBack]; }]]; // 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]; return; } } /** 收款方式回调函数 @param model <#model description#> */ - (void)setPayTypeModel:(PayTypeModel *)model{ [ _receivablesType setTitle:model.settlementTypeName forState:UIControlStateNormal]; _settlementTypeName = model.settlementTypeName; _settlementType = model.settlementType; _existsHandlingFee = model.existsHandlingFee; _earnestFee = model.earnestFee; _remarks = model.remarks; } /** 单据数据加载完成函数 @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; if (iStatus == 0) { NSArray * infoArr; NSArray * infoHead; NSDictionary *dicResult =(NSDictionary*) resultModel.result; if(dicResult != nil){ infoArr = [dicResult objectForKey:@"Table1"]; infoHead = [dicResult objectForKey:@"Table"]; } if (infoHead == nil|| infoHead.count == 0) { self.receiptCode.text = @""; self.sReceiptCode = @""; [self showAlertViewText:@"该送货单未建安排单,请重新建安排单"]; return; } //单据信息 一条数据 BOOL receiptFlg=false; for (int i = 0; i < infoHead.count; i++) { NSDictionary *h = infoHead[i]; receiptFlg = (BOOL)[h objectForKey:@"ReceiptFlag"] ; if (receiptFlg) { self.receiptFlag = @"1"; }else{ self.receiptFlag = @"0"; } double receiptAmount = [[h objectForKey:@"ReceiptAmount"] doubleValue]; _sReceiptAmount = [NSString stringWithFormat:@"%0.2f",receiptAmount]; _sCustomerName = [h objectForKey:@"CustomerName"]; _sReceivables = [NSString stringWithFormat:@"%0.2f",[[h objectForKey:@"Receivables"] doubleValue]]; _installationReceivables = [h objectForKey:@"InstallationReceivables"]; _organizationID =[h objectForKey:@"OrganizationID"]; _organizationCode=[h objectForKey:@"OrganizationCode"] == nil ? @"":[h objectForKey:@"OrganizationCode"] ; _deliveryReceivables = [h objectForKey:@"DeliveryReceivables"]; _sReceiptType= @"1"; _sNextDeliveryDate = [h objectForKey:@"NextDeliveryDate"]; [_receiptType setEnabled:YES]; if ([_sReceiptType intValue] == 2) { self.sNextDeliveryDate = [h objectForKey:@"NextinstallDate"]; [self.nextDeliveryDate setTitle:self.sNextDeliveryDate forState:UIControlStateNormal]; [self.receiptType setTitle:@"推迟送安" forState:UIControlStateNormal]; [self.nextDeliveryDate setTitle:_sNextDeliveryDate forState:UIControlStateNormal];//推迟日期 [_nextDeliveryDate setEnabled:YES]; self.receiptAmount.enabled=NO; [_receivablesType setEnabled:NO]; }else if([_sReceiptType intValue] == 1){ [self.receiptType setTitle:@"完成" forState:UIControlStateNormal]; [self.nextDeliveryDate setTitle:@"请选择推迟日期" forState:UIControlStateNormal]; self.sNextDeliveryDate = @""; [_nextDeliveryDate setEnabled:NO]; self.receiptAmount.enabled=YES; [_receivablesType setEnabled:YES]; } if (([_sReceivables doubleValue] > 0)) { self.receiptAmount.enabled = YES; [_receivablesType setEnabled:YES]; }else{ self.receiptAmount.enabled = NO; [_receivablesType setEnabled:NO]; } _deliveryId = [NSString stringWithFormat:@"%d",[[h objectForKey:@"DeliveryID"] intValue]]; _receiptAmount.text = _sReceiptAmount;//回执金额 _customerName.text = _sCustomerName;//客户名称 _receivables.text = _sReceivables;//应收金额 _lbArrange.text = [NSString stringWithFormat:@"安排单号: %@", [h objectForKey:@"ArrangementNo"]]; _lbTelephone.text = [NSString stringWithFormat:@"联系电话: %@", [h objectForKey:@"Telephone"]]; _lbDeliveryAddress.text = [NSString stringWithFormat:@"送货地址: %@", [h objectForKey:@"DeliveryAddress"]]; NSString *j = [h objectForKey:@"DeliveryDate"]; _lbDeliveryDate.text = [NSString stringWithFormat:@"送货日期: %@",j != nil ?[j substringWithRange:NSMakeRange(0,10)]:@""]; _completeReceivables = [NSString stringWithFormat:@"%0.2f",[[h objectForKey:@"CompleteReceivables"] doubleValue]]; if(_completeReceivables == nil){ _completeReceivables = @"0"; } _lbRecoveryAmount.text = [NSString stringWithFormat:@"回收金额: %@", _completeReceivables]; } [_dataList removeAllObjects]; if(infoArr != nil){ for (int i = 0; i < infoArr.count; i++) { NSDictionary *info = infoArr[i]; NewDeliveryRequirementModel *mod = [NewDeliveryRequirementModel dk_modelWithDictionary:info]; [_dataList addObject:mod]; } _vImage.hidden=NO; [self reloadMyView]; [self.myTableView reloadData]; } } 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.navigationItem.rightBarButtonItem.enabled = YES; [self showAlertViewText:@"网络异常"]; } /** 安装回执 @param path <#path description#> */ - (void)setInstallReceiptType:(NSIndexPath*) path{ _myRow= path; NewDeliveryRequirementModel *mode = _dataList[_myRow.row]; if([mode.sourceFrom intValue] == 1){ [self initStatus3:YES]; }else{ [self initStatus3:NO]; } StatusInfoTextVC *tc = [[StatusInfoTextVC alloc] init]; tc.sdelegate=self; [tc.arrFilter addObjectsFromArray: _arrayStatus]; [self.navigationController pushViewController:tc animated:YES]; self.hidesBottomBarWhenPushed = NO; } /** 回执类型回调函数 @param s <#s description#> */ - (void)showStatusValue:(StatusInfo *)s{ _myCell = [_myTableView cellForRowAtIndexPath:_myRow]; //回执类型回调 if([s.tagName isEqualToString:@"status"]){ _sReceiptType = s.statusId; [_receiptType setTitle:s.name forState:UIControlStateNormal]; if([_sReceiptType isEqualToString:@"2"]){ //推迟送货 //收款方式 [_receivablesType setEnabled:NO]; _settlementType = @""; [_receivablesType setTitle:@"请选择收款方式" forState:UIControlStateNormal]; //回执金额 _receiptAmount.text = @"0.000000"; _sReceiptAmount = @"0.000000"; self.receiptAmount.enabled = NO; //推迟日期 [_nextDeliveryDate setEnabled:YES]; _sNextDeliveryDate = @""; [self.nextDeliveryDate setTitle:@"请选择推迟日期" forState:UIControlStateNormal]; //列表 for(NewDeliveryRequirementModel *model in _dataList){ model.receiptType = @"1"; model.installReceiptType = @"1"; model.receiptQuantity = @"0"; model.installReceiptQuantity = @"0"; } } else { //完成状态 [_nextDeliveryDate setEnabled:NO]; [self.nextDeliveryDate setTitle:@"请选择推迟日期" forState:UIControlStateNormal]; _sNextDeliveryDate = @""; if (([_sReceivables doubleValue] > 0)) { self.receiptAmount.enabled = YES; [_receivablesType setEnabled:YES]; }else{ self.receiptAmount.enabled = NO; [_receivablesType setEnabled:NO]; } for(NewDeliveryRequirementModel *model in _dataList){ model.installReceiptType = @"1" ; model.installReceiptQuantity = model.maxInstallReceiptQuantity; } } } //选择Cell回执状态回调 if([s.tagName isEqualToString:@"cell"]){ switch ([s.statusId intValue]) { case 1: [_myCell.btstate setTitle:@"完成" forState:UIControlStateNormal]; _myCell.model.receiptType = @"1"; break; case 2: [_myCell.btstate setTitle:@"再送" forState:UIControlStateNormal]; _myCell.model.receiptType = @"2"; [_myCell.receiptQuantity addTarget:self action:@selector(receiptQuantityValueChanged) forControlEvents:UIControlEventAllEditingEvents]; break; case 3: [_myCell.btstate setTitle:@"换货" forState:UIControlStateNormal]; _myCell.model.receiptType = @"3"; break; case 4: [_myCell.btstate setTitle:@"退货" forState:UIControlStateNormal]; _myCell.model.receiptType = @"4"; break; default: break; } } if([s.tagName isEqualToString:@"install"]){ switch ([s.statusId intValue]) { case 1: _myCell.model.installReceiptType = @"1" ; _myCell.model.installReceiptQuantity = _myCell.model.maxInstallReceiptQuantity; break; case 5: _myCell.model.installReceiptType = @"5" ; break; } } [_myTableView reloadData]; } /** 文本框的长度限制 实现监听方法 @param sender <#sender description#> */ - (void)onFocusPeopleEditingChanged:(NSNotification *)sender { UITextField *textField = (UITextField *)sender.object; NSString *toBeString = textField.text; NSString *lang = [[UIApplication sharedApplication]textInputMode].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 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 isEqual:self.receiptCode]){ return YES; } 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{ //[self showAlertViewText:@"亲,您最多输入两位小数"]; return NO; } }else{ return YES; } } }else{//输入的数据格式不正确 [self showAlertViewText:@"您输入的格式不正确"]; [textField.text stringByReplacingCharactersInRange:range withString:@""]; return NO; } } else { return YES; } } /** 相册回调事件 @param assets <#assets description#> */ - (void)pickerViewControllerDoneAsstes:(NSArray *)assets{ 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]; [self reloadMyView]; } /** Cell回执类型回调函数 */ - (void)setReceiptType:path{ _myRow= path; NewDeliveryRequirementModel *mode = _dataList[_myRow.row]; if([mode.sourceFrom intValue] == 1){ [self initStatus2:YES]; }else{ [self initStatus2:NO]; } StatusInfoTextVC *tc = [[StatusInfoTextVC alloc] init]; tc.sdelegate=self; [tc.arrFilter addObjectsFromArray: _arrayStatus]; [self.navigationController pushViewController:tc animated:YES]; self.hidesBottomBarWhenPushed = NO; } /** 选中位置回调事件 @param name <#name description#> */ - (void)relocationData:(NSString *)name{ _lblPosition.text = name; _positionImage.hidden = NO; [self reloadMyView]; } /** table view的分区数 @param tableView <#tableView description#> @return <#return value description#> */ - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } /** table view的行数 @param tableView <#tableView description#> @param section <#section description#> @return <#return value description#> */ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [_dataList count]; } /** table view的高度 @param tableView <#tableView description#> @param indexPath <#indexPath description#> @return <#return value description#> */ - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 320; } /** 获取tableview cell @param tableView <#tableView description#> @param indexPath <#indexPath description#> @return <#return value description#> */ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ NSString *CellIdentifier = @"DataListTableViewCell"; NewDeliveryRequirementCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; cell = [[NewDeliveryRequirementCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; cell.delegate = self; cell.nddelegate = self; cell.receiptQuantity.delegate = self; cell.receiptQuantity.tag = indexPath.row; NewDeliveryRequirementModel *datamodel = [_dataList objectAtIndex:indexPath.row]; cell.myIndexPath = indexPath; cell.cellIndex = indexPath.row; [cell parseInfoModel:datamodel receiptType:_sReceiptType]; return cell; } /** cellection 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{ return [self.assets count]; } /** 获取collectionview 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; } /** collectionview图片放大 @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]; } /** collectionview的分区数 @param pickerBrowser <#pickerBrowser description#> @return <#return value description#> */ - (NSInteger)numberOfSectionInPhotosInPickerBrowser:(DKPhotoPickerBrowserViewController *)pickerBrowser{ return 1; } /** collection view的项数 @param photoBrowser <#photoBrowser description#> @param section <#section description#> @return <#return value description#> */ - (NSInteger)photoBrowser:(DKPhotoPickerBrowserViewController *)photoBrowser numberOfItemsInSection:(NSUInteger)section{ return [self.assets count]; } /** collection view放大函数 @param pickerBrowser <#pickerBrowser description#> @param indexPath <#indexPath description#> @return <#return value description#> */ - (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; } /** collection view删除图片函数 @return <#return value description#> */ #pragma mark - - (void)photoBrowser:(DKPhotoPickerBrowserViewController *)photoBrowser removePhotoAtIndexPath:(NSIndexPath *)indexPath{ if (indexPath.row > [self.assets count]) return; [self.assets removeObjectAtIndex:indexPath.row]; [self.collectionView reloadData]; [self reloadMyView]; } #pragma mark - 私有函数 /** 加载单据信息 @param code <#code description#> */ - (void)reloadDataWithOnlyCode:(NSString *)code { self.receiptCode.text = code; self.sReceiptCode = code; 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 loadDataSource]; }); } /** 键盘隐藏函数 @param tap <#tap description#> */ - (void)keyboardHide:(UITapGestureRecognizer*)tap{ [self.view endEditing:YES]; } /** 初始化布局函数 */ - (void)initUI{ //返回 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; scroll = [UIScrollView new]; scroll.delegate = self; scroll.frame=self.view.bounds; scroll.tag=1000; [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]; UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(keyboardHide:)]; //设置成NO表示当前控件响应后会传播到其他控件上,默认为YES。 tapGestureRecognizer.cancelsTouchesInView = NO; // //将触摸事件添加到当前view [scroll addGestureRecognizer:tapGestureRecognizer]; [scroll addSubview:contentView]; //送货单号-------------- UIView *vReceiptCode = [UIView new]; vReceiptCode.frame=CGRectMake(0, 5, Screen_Width,40); [contentView addSubview:vReceiptCode]; UILabel *lblTxtReceiptCode = [UILabel new]; lblTxtReceiptCode.frame=CGRectMake(20, 5, 90, 25); lblTxtReceiptCode.text = @"送安单号:"; lblTxtReceiptCode.font=kTitleFont; [vReceiptCode addSubview:lblTxtReceiptCode]; _receiptCode = [UITextField new]; _receiptCode.frame = CGRectMake(95, 5, Screen_Width - 95 - 20, 25); _receiptCode.font = kTextFont; _receiptCode.placeholder = @"请输入送安单号"; _receiptCode.tag = 100; [vReceiptCode addSubview:_receiptCode]; UIView *fReceiptCode = [[UIView alloc] initWithFrame:CGRectMake(0, 35,Screen_Width ,5)]; fReceiptCode.backgroundColor = LineBackgroundColor; [vReceiptCode addSubview:fReceiptCode]; //安排单号 _lbArrange = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(vReceiptCode.frame), SCREENWIDTH-20, 0)]; _lbArrange.font=kTextFont; _lbArrange.hidden = YES; [contentView addSubview: _lbArrange]; _lbArrange.text = @"安排单号:"; //客户姓名-------------- UIView *vCustomerName = [UIView new]; vCustomerName.frame = CGRectMake(0,CGRectGetMaxY(_lbArrange.frame) + 8, Screen_Width, 31); [contentView addSubview:vCustomerName]; UILabel *lblTxtVCustomerName = [UILabel new]; lblTxtVCustomerName.frame = CGRectMake(20, 3, 90, 25); lblTxtVCustomerName.text = @"客户名称:"; lblTxtVCustomerName.font = kTextFont; [vCustomerName addSubview:lblTxtVCustomerName]; _customerName = [UILabel new]; _customerName.font = kTextFont; _customerName.frame = CGRectMake(95, 3, Screen_Width - 95 - 30, 25); [vCustomerName addSubview:_customerName]; //联系电话 _lbTelephone = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(vCustomerName.frame)+10, SCREENWIDTH-20, 17)]; _lbTelephone.font = kTextFont; _lbTelephone.text = @"联系电话:"; [contentView addSubview: _lbTelephone]; _lbDeliveryAddress = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(_lbTelephone.frame)+18, SCREENWIDTH-20, 17)]; _lbDeliveryAddress.font = kTextFont; _lbDeliveryAddress.text = @"送货地址:"; [contentView addSubview: _lbDeliveryAddress]; _lbDeliveryDate = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(_lbDeliveryAddress.frame)+20, SCREENWIDTH-20, 17)]; _lbDeliveryDate.font = kTextFont; _lbDeliveryDate.text = @"送货日期:"; [contentView addSubview: _lbDeliveryDate]; //应收金额-------------- UIView *vReceivables = [UIView new]; vReceivables.frame=CGRectMake(0,CGRectGetMaxY(_lbDeliveryDate.frame) + 12, Screen_Width, 31); [contentView addSubview:vReceivables]; UILabel *lblTxtVReceivables = [UILabel new]; lblTxtVReceivables.frame = CGRectMake(20, 3, 90, 25); lblTxtVReceivables.text = @"应收金额:"; lblTxtVReceivables.font = kTextFont; [vReceivables addSubview:lblTxtVReceivables]; _receivables = [UILabel new]; _receivables.font = kTextFont; _receivables.frame = CGRectMake(95, 3, Screen_Width - 95 - 30, 25); [vReceivables addSubview:_receivables]; //回收金额 _lbRecoveryAmount = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(vReceivables.frame)+10, SCREENWIDTH-20, 17)]; _lbRecoveryAmount.font = kTextFont; _lbRecoveryAmount.text = @"回收金额:"; [contentView addSubview: _lbRecoveryAmount]; //回执类型-------------- UIView *vReceiptType = [UIView new]; vReceiptType.frame = CGRectMake(0,CGRectGetMaxY(_lbRecoveryAmount.frame)+13, Screen_Width, 31); [contentView addSubview:vReceiptType]; UILabel *lblTxtVReceiptType = [UILabel new]; lblTxtVReceiptType.frame = CGRectMake(20, 3, 90, 25); lblTxtVReceiptType.text = @"回执类型:"; lblTxtVReceiptType.font = kTextFont; [vReceiptType addSubview:lblTxtVReceiptType]; _receiptType = [UIButton buttonWithType:UIButtonTypeCustom]; _receiptType.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; _receiptType.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0); _receiptType.frame=CGRectMake(95, 3, Screen_Width - 95 - 30, 25); _receiptType.titleLabel.font= kTextFont; [_receiptType setTitle:@"请选择回执类型" forState:UIControlStateNormal]; [_receiptType setTitleColor:[UIColor colorWithWhite:0 alpha:1] forState:UIControlStateNormal]; [_receiptType addTarget:self action:@selector(showReceiptType) forControlEvents:UIControlEventTouchUpInside]; [_receiptType setEnabled:NO]; [vReceiptType addSubview:_receiptType]; UIButton *jiantou1 = [UIButton buttonWithType:UIButtonTypeCustom]; jiantou1.frame=CGRectMake(Screen_Width -17,8,7,12); [ jiantou1 setImage:[UIImage imageNamed:@"rightarrow"] forState:UIControlStateNormal]; [vReceiptType addSubview:jiantou1]; //=收款方式-------------- UIView *vReceivablesType = [UIView new]; vReceivablesType.frame = CGRectMake(0,CGRectGetMaxY(vReceiptType.frame)+5, Screen_Width, 31); [contentView addSubview:vReceivablesType]; UILabel *lblTxtVReceivablesType = [UILabel new]; lblTxtVReceivablesType.frame = CGRectMake(20, 3, 90, 25); lblTxtVReceivablesType.text = @"收款方式:"; lblTxtVReceivablesType.font = kTextFont; [vReceivablesType addSubview:lblTxtVReceivablesType]; _receivablesType = [UIButton buttonWithType:UIButtonTypeCustom]; _receivablesType.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; _receivablesType.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0); _receivablesType.frame = CGRectMake(95, 3, Screen_Width - 95 - 30, 25); _receivablesType.titleLabel.font = kTextFont; [_receivablesType setTitle:@"请选择收款方式" forState:UIControlStateNormal]; [_receivablesType setTitleColor:[UIColor colorWithWhite:0.5 alpha:0.5] forState:UIControlStateNormal]; [_receivablesType addTarget:self action:@selector(showReceivablesType) forControlEvents:UIControlEventTouchUpInside]; [_receivablesType setEnabled:NO]; [vReceivablesType addSubview:_receivablesType]; UIButton *jiantou2 = [UIButton buttonWithType:UIButtonTypeCustom]; jiantou2.frame = CGRectMake(Screen_Width - 17,8,7,12); [ jiantou2 setImage:[UIImage imageNamed:@"rightarrow"] forState:UIControlStateNormal]; [vReceivablesType addSubview:jiantou2]; //回执金额-------------- UIView *vReceiptAmount = [UIView new]; vReceiptAmount.frame = CGRectMake(0,CGRectGetMaxY(vReceivablesType.frame) + 5, Screen_Width, 31); [contentView addSubview:vReceiptAmount]; UILabel *lblTxtReceiptAmount = [UILabel new]; lblTxtReceiptAmount.frame = CGRectMake(20, 3, 90, 25); lblTxtReceiptAmount.text = @"回执金额:"; lblTxtReceiptAmount.font = kTextFont; [vReceiptAmount addSubview:lblTxtReceiptAmount]; _receiptAmount = [UITextField new]; _receiptAmount.frame = CGRectMake(95, 3, Screen_Width - 95 - 30, 25); _receiptAmount.font = kTextFont; _receiptAmount.placeholder = @"请输入回执金额"; _receiptAmount.delegate = self; [_receiptAmount setEnabled:NO]; _receiptAmount.keyboardType = UIKeyboardTypeDecimalPad; [vReceiptAmount addSubview:_receiptAmount]; UILabel *lblTxtunit = [UILabel new]; lblTxtunit.frame = CGRectMake(Screen_Width - 40, 3, 30, 25); lblTxtunit.text = @"元"; lblTxtunit.font = kTextFont; lblTxtunit.textAlignment = NSTextAlignmentRight; [vReceiptAmount addSubview:lblTxtunit]; //推迟日期-------------- _vNextDeliveryDate = [UIView new]; _vNextDeliveryDate.frame = CGRectMake(0,CGRectGetMaxY(vReceiptAmount.frame) + 5, Screen_Width, 34); [contentView addSubview:_vNextDeliveryDate]; UILabel *lblTxtVNextDeliveryDate = [UILabel new]; lblTxtVNextDeliveryDate.frame = CGRectMake(20, 3, 90, 25); lblTxtVNextDeliveryDate.text = @"推迟日期:"; lblTxtVNextDeliveryDate.font = kTextFont; [_vNextDeliveryDate addSubview:lblTxtVNextDeliveryDate]; _nextDeliveryDate = [UIButton buttonWithType:UIButtonTypeCustom]; _nextDeliveryDate.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; _nextDeliveryDate.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0); _nextDeliveryDate.frame = CGRectMake(95, 3, Screen_Width - 95 - 30, 25); _nextDeliveryDate.titleLabel.font = kTextFont; [_nextDeliveryDate setTitle:@"请选择推迟日期" forState:UIControlStateNormal]; [_nextDeliveryDate setTitleColor:[UIColor colorWithWhite:0.5 alpha:0.5] forState:UIControlStateNormal]; [_nextDeliveryDate addTarget:self action:@selector(showNextDeliveryDate) forControlEvents:UIControlEventTouchUpInside]; [_nextDeliveryDate setEnabled:NO]; [_vNextDeliveryDate addSubview:_nextDeliveryDate]; UIButton *jiantou3 = [UIButton buttonWithType:UIButtonTypeCustom]; jiantou3.frame = CGRectMake(Screen_Width-17,8,7,12); [ jiantou3 setImage:[UIImage imageNamed:@"rightarrow"] forState:UIControlStateNormal]; [_vNextDeliveryDate addSubview:jiantou3]; UILabel *lbRemarksTitle = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(_vNextDeliveryDate.frame)+10, 77, 17)]; lbRemarksTitle.font = kTextFont; lbRemarksTitle.text = @"备注信息:"; [contentView addSubview: lbRemarksTitle]; _fieldRemarks = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMaxX(lbRemarksTitle.frame), CGRectGetMaxY(_vNextDeliveryDate.frame)+10, SCREENWIDTH-CGRectGetMaxX(lbRemarksTitle.frame), 17)]; _fieldRemarks.font = kTextFont; _fieldRemarks.placeholder = @"请填写备注信息"; [contentView addSubview: _fieldRemarks]; //分割线 _line = [[UIView alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(lbRemarksTitle.frame)+10, Screen_Width, 3)]; _line.backgroundColor = LineBackgroundColor; [contentView addSubview:_line]; self.myTableView = [[UITableView alloc]init]; self.myTableView.dataSource = self; self.myTableView.delegate = self; self.myTableView.scrollEnabled = NO; self.myTableView.separatorStyle = UITableViewCellSeparatorStyleNone; self.myTableView.frame = CGRectMake(0,CGRectGetMaxY(_line.frame), self.view.bounds.size.width, [self getDataViewHeight:_dataList]) ; [contentView addSubview:self.myTableView]; _vCollectionView = [UIView new]; _vCollectionView.frame = CGRectMake(0,CGRectGetMaxY(self.myTableView.frame) + 8, Screen_Width, 0); [contentView addSubview:_vCollectionView]; [self setupCollectionView]; _positionImage = [UIView new]; _positionImage.frame=CGRectMake(0, CGRectGetMaxY(_vCollectionView.frame), Screen_Width, 0); [contentView addSubview:_positionImage]; //星号 _ivPosition = [UIImageView new]; _ivPosition.frame=CGRectMake(12,20,9,12); [_positionImage addSubview:_ivPosition]; _lblPosition = [UILabel new]; _lblPosition.font=kTextFont; _lblPosition.frame=CGRectMake(32, 16, Screen_Width-32, 20); [_positionImage addSubview:_lblPosition]; //照相和相册 ————————— _vImage = [UIView new]; _vImage.frame=CGRectMake(0,CGRectGetMaxY(_positionImage.frame), Screen_Width-32, 30); contentView.frame=CGRectMake(0, 0, Screen_Width,CGRectGetMaxY(_vImage.frame)); [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; contentView.frame=CGRectMake(0,0,self.view.bounds.size.width,CGRectGetMaxY(_vImage.frame)); //保存按钮 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-rectNavHeight-10, Screen_Width - 40,h) ; [_saveBtn setBackgroundImage:pic forState:UIControlStateNormal]; [_saveBtn addTarget:self action:@selector(saveData) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:_saveBtn]; } /** 键盘弹出函数 */ - (void)myKeyboardWillShow { 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 { // Animate the current view back to its original position if(keyboardShow){ [UIView animateWithDuration:0.0f 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)showReceiptType{ self.hidesBottomBarWhenPushed=YES; [self initStatus]; StatusInfoTextVC *tc = [[StatusInfoTextVC alloc] init]; tc.sdelegate=self; [tc.arrFilter addObjectsFromArray: _arrayDStatus]; [self.navigationController pushViewController:tc animated:YES]; self.hidesBottomBarWhenPushed=NO; } /** 重新计算视图的位置 */ - (void)reloadMyView{ self.myTableView.frame=CGRectMake(0,CGRectGetMaxY(_line.frame), self.view.bounds.size.width, [self getDataViewHeight:_dataList]) ; _vCollectionView.frame=CGRectMake(0,CGRectGetMaxY(self.myTableView.frame), Screen_Width, [Util getPhotoCollectionViewHeightWithPhotos: _assets]); self.collectionView.frame=CGRectMake(0, 0,Screen_Width,[Util getPhotoCollectionViewHeightWithPhotos: _assets]); if (_lblPosition.text.length > 0){ _ivPosition.image = [UIImage imageNamed:@"log_position"]; _positionImage.frame=CGRectMake(0, CGRectGetMaxY(_vCollectionView.frame)-8, Screen_Width, 30); } else{ _positionImage.frame=CGRectMake(0, CGRectGetMaxY(_vCollectionView.frame)-8, Screen_Width,0); } _vImage.frame=CGRectMake(0,CGRectGetMaxY(_positionImage.frame)+8, Screen_Width, 30); contentView.frame=CGRectMake(0,0,self.view.bounds.size.width,CGRectGetMaxY(_vImage.frame)); scroll.contentSize=CGSizeMake(self.view.frame.size.width, contentView.frame.size.height + 150); } /** 回执数量变化函数 */ - (void)receiptQuantityValueChanged{ if([_myCell.receiptQuantity.text doubleValue] > [_myCell.outQuantity.text doubleValue]){ _myCell.receiptQuantity.text = _myCell.outQuantity.text; _myCell.model.receiptQuantity = _myCell.outQuantity.text; [self showAlertViewText:@"回执数量不能大于出库数量"]; } } /** 收款方式 */ - (void)showReceivablesType{ [self.view endEditing:YES]; PayTypeVC *pay = [[PayTypeVC alloc] init]; pay.payDelegate = self; [self.navigationController pushViewController:pay animated:YES]; self.hidesBottomBarWhenPushed = NO; } /** 保存数据函数 */ - (void)saveData{ [self.view endEditing:YES]; if(_receiptCode.text == nil || [_receiptCode.text isEqualToString:@""]){ [self showAlertViewText:@"请输入或扫描单号"]; return; } if(_sReceiptCode == nil){ [self showAlertViewText:@"请按回车加载数据!"]; return; } if([_sReceiptType intValue] == 1){ _sReceiptAmount = _receiptAmount.text; _sNextDeliveryDate = @""; } else{ _sReceiptAmount = @"0.000000"; [ _receivablesType setTitle:@"请输入收款方式" forState:UIControlStateNormal]; _settlementTypeName = @""; _settlementType = @""; _existsHandlingFee = @""; _earnestFee = @""; _remarks = @""; } if([_sReceiptType intValue] != 1){ NSString *nextDeliveryDate = _nextDeliveryDate.titleLabel.text; if([nextDeliveryDate isEqualToString:@"请选择推迟日期"]){ [self showAlertViewText:@"请选择推迟日期!"]; return; } NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];//实例化一个NSDateFormatter对象 [dateFormat setDateFormat:@"yyyy-MM-dd"]; NSDate *date = [dateFormat dateFromString:nextDeliveryDate]; NSDate *lastDay = [NSDate dateWithTimeInterval:-24*60*60 sinceDate:[self getCurrentTime]]; if([self compareOneDay:date withAnotherDay:lastDay] != 1){ [self showAlertViewText:@"推迟日期不能小于当前日期"]; return; } } 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 ; } } if([_sReceiptAmount doubleValue] > [_sReceivables doubleValue] -[_completeReceivables doubleValue] ){ [self showAlertViewText:@"回执金额不能大于应收金额-已回执金额"]; return; } for (NewDeliveryRequirementModel* model in _dataList) { NSString *receiptQuantity = model.receiptQuantity; if(receiptQuantity != nil&&[receiptQuantity length] > 0){ RegularExpression *re = [[RegularExpression alloc]init]; bool isMatchDiscount = [re QuantityRegular:receiptQuantity]; if(isMatchDiscount == NO){ [self showAlertViewText:@"请输入正确的数"]; return ; } } else{ [self showAlertViewText:@"请输入回执数量"]; return ; } } if(_dataList != nil && _dataList.count > 0){ for (NewDeliveryRequirementModel *model in _dataList) { if (model.receiptQuantity == nil || [@"" isEqualToString:model.receiptQuantity]) { [self showAlertViewText:@"请输入配送回执数量"]; return; } if (model.installReceiptQuantity == nil || [@"" isEqualToString:model.installReceiptQuantity]) { [self showAlertViewText:@"请输入安装回执数量"]; return; } //新增校验 if ([_sReceiptType doubleValue] == 1 && [model.receiptType doubleValue] == 1 && [model.installReceiptType doubleValue] == 1 && model. salesDetailType != 2) { NSString *receiptQuantity = model.receiptQuantity; NSString *installationQuantity = model.installReceiptQuantity; if ([receiptQuantity doubleValue] + [installationQuantity doubleValue] == 0) { [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"配送回执明细类型为完成,最大允许回执数量为零,请核对数据"]]; return; } } if ( // [_sReceiptType doubleValue] == 1 // && ( [model.receiptType doubleValue] == 1 || [model.receiptType doubleValue] == 2) && [model.outQuantity doubleValue] < [model.deliveryQuantity doubleValue] && model.salesDetailType != 2) { double outQuantityValue = [model.outQuantity doubleValue] ; if (outQuantityValue == 0) { [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"出库数量不能为0"]]; return; } else { if (outQuantityValue < [model.deliveryQuantity doubleValue]) { [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"出库数量小于送货数量不能保存,建议冲正对应送货单,按照出库数量重新开送货单"]]; return; } } } if ([_sReceiptType doubleValue] == 1 && [model.receiptType doubleValue] == 2) { if ([model.deliveryQuantity doubleValue] < 0) { [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"配送回执数量不能小于0"]]; return; } if ([model.sourceFrom intValue] != 4 && [model.receiptQuantity doubleValue] >= [model.deliveryQuantity doubleValue]) { [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"回执数量不能大于或等于送货数量"]]; return; } if (model.maxReceiptQuantity<= [model.receiptQuantity doubleValue]) { [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"配送明细类型为再送,送货量已超出最大允许配送回执量,请核对数据"]]; return; } } if ([model.sourceFrom intValue] != 4 && [model.receiptQuantity doubleValue] > [model.outQuantity doubleValue]) { [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"回执数量不能大于出库量"]]; return; } if ([_sReceiptType doubleValue] == 1 && [model.installReceiptType intValue] == 5) { if ([model.maxInstallReceiptQuantity doubleValue] <= [model.installReceiptQuantity doubleValue]) { [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"再安装时回执数量不能大于或等于(安装数量或出库量的最小值)"]]; return; } } if (model.salesDetailType != 2 && [model.sourceFrom intValue]!= 4) { if ([model.receiptQuantity doubleValue] > [model.outQuantity doubleValue]) { [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"回执数量不能大于出库量"]]; return; } if ([model.deliveryQuantity doubleValue] > [model.outQuantity doubleValue]) { if ([model.receiptQuantity doubleValue] > [model.outQuantity doubleValue]) { [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"回执数量不能大于出库量"]]; return; } if ([model.receiptQuantity doubleValue] > [model.deliveryQuantity doubleValue]) { [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"回执数量不能大于送货数量"]]; return; } } } if ([_sReceiptType doubleValue] == 1 && [model.installReceiptType intValue] == 5) { if ([model.installReceiptQuantity doubleValue] < 0) { [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"回执数量不能小于0"]]; return; } if ([model.installReceiptQuantity doubleValue] >= [model.maxInstallReceiptQuantity doubleValue]) { [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"回执数量不能大于或等于最大允许回执数量"]]; return; } } // if ([model.installReceiptQuantity doubleValue] > [model.installQuantity doubleValue] - model.finishQuantity) { // [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"安装回执数量不能大于安装数量-已完成数量"]]; // // return; // // } } }else{ [self showAlertViewText:@"回执明细不能为空!"]; return; } self.navigationItem.rightBarButtonItem.enabled=NO; [self saveInfo]; } /** 保存图片函数 @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; i < self.assets.count; i++) { DKPhotoAssets *asset = self.assets[i]; DKCamera * c; if ([asset isKindOfClass:[DKPhotoAssets class]]) { c = [self saveImage:asset.originImage withName:nil]; }else if ([asset isKindOfClass:[NSString class]]){ }else if([asset isKindOfClass:[UIImage class]]){ }else if ([asset isKindOfClass:[DKCamera class]]){ c = (DKCamera *)asset; c = [self saveImage:c.thumbImage withName:nil]; } //延时 [NSThread sleepForTimeInterval:0.5]; NSString* retValue= [_mDownManager syncPostHttpRequestUrl:urlStr dic:dict path:c.imagePath filename:nil fileType:@"image/jpeg"]; if (retValue == nil || retValue.length == 0){ [self cancel]; [self showAlertViewText:@"上传图片失败"]; self.navigationItem.rightBarButtonItem.enabled = YES; return NO; } NSDictionary *dicRetValue = [retValue JSONValue]; if (dicRetValue && [dicRetValue isKindOfClass:[NSDictionary class]]) { int iStatus = [[dicRetValue objectForKey:@"Status"] intValue]; if (iStatus == 0) { NSString * imgPath = [dicRetValue objectForKey:@"Result"]; [self.imagePaths addObject:imgPath]; } else{ [self cancel]; return NO; } } } return YES; } /** 保存图片到沙盒 @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; } /** 保存数据函数 */ - (void)saveInfo{ [self startLoading]; dispatch_async(dispatch_get_global_queue(0, 0), ^{ if(![self savePicsManager]){ return; } self.mDownManager = [[ASIDownManager alloc] init]; self.mDownManager.delegate = self; self.mDownManager.onRequestSuccess = @selector(onSaveLoadFinish:); self.mDownManager.onRequestFail = @selector(onLoadFail:); NSString *urlStr = ServerURL; NSMutableDictionary *dict = [NSMutableDictionary dictionary]; [dict setObject:@"SaveDeliveryReceiptDataIphone" forKey:@"Action"]; [dict setObject:[NSString stringWithFormat:@"%@",kkAccountCode]forKey:@"AccountCode"]; [dict setObject:kkUserCode forKey:@"UserCode"]; [dict setObject:kkUserPwd forKey:@"UserPassword"]; [dict setObject:kkSessionKey forKey:@"SessionKey"]; [dict setObject:kkLicenseCode forKey:@"LicenseCode"]; [dict setObject:_deliveryId forKey:@"DeliveryID"]; if (_lblPosition.text == nil) { [dict setObject:@"" forKey:@"Position"]; }else{ [dict setObject:_lblPosition.text forKey:@"Position"]; } NSMutableDictionary *dicHead = [[NSMutableDictionary alloc] init]; NSMutableArray *arrHead = [[NSMutableArray alloc]init]; [dicHead setObject:_arrangementID forKeyedSubscript:@"ArrangementID"]; [dicHead setObject:_sReceiptType forKeyedSubscript:@"ReceiptType"]; [dicHead setObject:_sReceiptAmount forKeyedSubscript:@"ReceivableSum"]; [dicHead setObject:_deliveryReceivables forKeyedSubscript:@"DeliveryReceivable"]; [dicHead setObject:_installationReceivables forKeyedSubscript:@"InstallationReceivable"]; [dicHead setObject:_sNextDeliveryDate forKeyedSubscript:@"NextDeliveryDate"]; [dicHead setObject:_sReceivables forKeyedSubscript:@"Receivables"]; [dicHead setObject:_organizationID forKeyedSubscript:@"OrganizationID"]; [dicHead setObject:_organizationCode forKeyedSubscript:@"OrganizationCode"]; [dicHead setObject:_completeReceivables forKeyedSubscript:@"CompleteReceivables"]; [dicHead setObject:_fieldRemarks.text forKeyedSubscript:@"Remarks"]; [arrHead addObject:dicHead]; [dict setObject:[Util objectToJson:arrHead] forKey:@"ReceiptData"]; //详细列表 NSMutableDictionary *dicDetails; NSMutableArray* arrDetails = [[NSMutableArray alloc]init]; for (NewDeliveryRequirementModel* me in _dataList) { dicDetails = [[NSMutableDictionary alloc] init]; [dicDetails setObject:me.detailId forKeyedSubscript:@"DetailID"]; [dicDetails setObject:me.deliveryQuantity forKeyedSubscript:@"DeliveryQuantity"]; [dicDetails setObject:me.receiptQuantity forKeyedSubscript:@"DeliveryReceiptQuantity"]; [dicDetails setObject:me.installQuantity forKeyedSubscript:@"InstallationQuantity"]; [dicDetails setObject:me.installReceiptQuantity forKeyedSubscript:@"InstallationReceiptQuantity"]; [dicDetails setObject:me.receiptType forKeyedSubscript:@"DeliveryReceiptType"]; [dicDetails setObject:me.installReceiptType forKeyedSubscript:@"InstallationReceiptType"]; [dicDetails setObject:me.invoiceId forKeyedSubscript:@"InvoiceID"]; [dicDetails setObject:me.invoiceDetailId forKeyedSubscript:@"InvoiceDetailID"]; [dicDetails setObject:me.receiptRemarks forKeyedSubscript:@"ReceiptRemarks"]; [dicDetails setObject:_deliveryId forKeyedSubscript:@"DeliveryID"]; [arrDetails addObject:dicDetails]; } [dict setObject:[Util objectToJson:arrDetails] forKey:@"ReceiptDetailData"]; //////付款方式 NSMutableDictionary *dicSettle = [[NSMutableDictionary alloc] init]; NSMutableArray* arrSettle = [[NSMutableArray alloc]init]; if ((_settlementType == nil || [_settlementType isEqual:@""] )&& [_sReceiptAmount doubleValue] <= 0) { [dict setObject:@"" forKey:@"ReceiptEarnestData"]; }else{ [dicSettle setObject:self.settlementType forKeyedSubscript:@"SettlementType"]; [dicSettle setObject:_deliveryId forKeyedSubscript:@"SalesID"]; [dicSettle setObject:_receiptAmount.text forKeyedSubscript:@"ReceivableSum"]; [dicSettle setObject:self.remarks forKeyedSubscript:@"Remarks"]; [dicSettle setObject:self.earnestFee forKeyedSubscript:@"EarnestFee"]; [arrSettle addObject:dicSettle]; [dict setObject:[Util objectToJson:arrSettle] forKey:@"ReceiptEarnestData"]; } /////////图片上传返回的地址 if (self.imagePaths && self.imagePaths.count > 0) { [dict setObject:[self.imagePaths componentsJoinedByString:@"," ] forKey:@"ImagePath"]; } [_mDownManager postHttpRequest:urlStr dic:dict path:nil fileName:nil]; }); } /** 清空画面函数 */ - (void)clearData{ self.receiptCode.text = @""; self.sReceiptCode = @""; self.customerName.text = @""; self.sCustomerName = @""; self.receivables.text = @""; self.sReceivables = @""; [self.receiptType setTitle:@"请选择回执类型" forState:UIControlStateNormal]; self.sReceiptType = @""; [self.receivablesType setTitle:@"请选择收款方式" forState:UIControlStateNormal]; _settlementTypeName = @""; _settlementType = @""; _existsHandlingFee = @""; _earnestFee = @""; _remarks = @""; self.receiptAmount.text = @""; self.sReceiptAmount = @""; self.receiptCode.text = @""; self.sReceiptCode = @""; [self.nextDeliveryDate setTitle:@"请选择推迟日期" forState:UIControlStateNormal]; self.sNextDeliveryDate = @""; _lblPosition.text = @""; _positionImage.hidden = YES; _vImage.hidden = YES; _positionHeight = 0; [_receiptType setEnabled:NO]; [_receivablesType setEnabled:NO]; [_receiptAmount setEnabled:NO]; [_nextDeliveryDate setEnabled:NO]; [self.imagePaths removeAllObjects]; [self.dataList removeAllObjects]; [self.assets removeAllObjects]; [self.myTableView reloadData]; [self.collectionView reloadData]; [self reloadMyView]; } /** 出示推迟日期函数 @return <#return value description#> */ - (void)showNextDeliveryDate{ [self.view endEditing:YES]; __weak typeof(self)weakself = self; _dealDatePicker = [BRDatePickerView PickerAlertWithTitle:@""]; [_dealDatePicker configureSelectionBlock:^(NSString *date){ _sNextDeliveryDate = date; } andCompletionBlock:^(void){ [weakself.nextDeliveryDate setTitle:_sNextDeliveryDate forState:UIControlStateNormal]; } andCancelBlock:^(void){ _sNextDeliveryDate = weakself.nextDeliveryDate.titleLabel.text; if([_sNextDeliveryDate isEqualToString:@"请选择推迟日期"]){ _sNextDeliveryDate = @""; } }]; [_dealDatePicker show]; } /** 加载单据数据函数 */ - (void)loadDataSource{ [self startLoading]; NSString *urlStr = ServerURL; NSMutableDictionary *dict = [NSMutableDictionary new]; [dict setObject:@"GetDeliveryRequirementForNewReceiptIphone" forKey:@"Action"]; [dict setObject:kkAccountCode forKey:@"AccountCode"]; [dict setObject:kkUserCode forKey:@"UserCode"]; [dict setObject:kkUserPwd forKey:@"UserPassword"]; [dict setObject:kkSessionKey forKey:@"SessionKey"]; [dict setObject:_deliveryId forKey:@"DeliveryID"]; [dict setObject: _arrangementID forKey:@"ArrangementID"]; self.mDownManager = [[ASIDownManager alloc] init]; self.mDownManager.delegate=self; self.mDownManager.onRequestSuccess=@selector(onLoadFinish:); self.mDownManager.onRequestFail=@selector(onLoadFail:); [_mDownManager postHttpRequest:urlStr dic:dict path:nil fileName:nil];} /** 取消进度条 */ - (void)cancel { [self stopLoading]; } /** 返回函数 */ - (void)goBack{ [self.navigationController popViewControllerAnimated:YES]; if([self.refreshDelegate respondsToSelector:@selector(refreshFollowUpData)]){ [self.refreshDelegate refreshFollowUpData]; } } /** 拍照函数 */ - (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]; [self reloadMyView]; }]; } /** 选择相册函数 */ - (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]; } /** 出示地图函数 */ - (void)newMap{ self.hidesBottomBarWhenPushed=YES; MapViewController *mc = [MapViewController new]; mc.pDelegate=self; [self.navigationController pushViewController:mc animated:YES]; } /** 获取table view的高度 @param soundArray <#soundArray description#> @return <#return value description#> */ - (CGFloat)getDataViewHeight:(NSArray *)soundArray { // 上下间隔已经在frame上做了 NSInteger row = soundArray.count; return (row *320); } #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