NewDeliveryRequirementController.m 72 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944
  1. //
  2. // NewDeliveryRequirementController.m
  3. // IBOSSHSH
  4. //
  5. // Created by ssl on 2018/1/15.
  6. // Copyright © 2018年 elongtian. All rights reserved.
  7. //
  8. #import "NewDeliveryRequirementController.h"
  9. #import "NIDropDown.h"
  10. #import "StatusInfo.h"
  11. #import "StatusInfoTextVC.h"
  12. #import "PayTypeVC.h"
  13. #import "AlbumPhotoCollectionViewCell.h"
  14. #import "XHImageViewer.h"
  15. #import "DKPhotoPickerViewController.h"
  16. //#import "MapViewController.h"
  17. #import "DKCameraViewController.h"
  18. #import "DKUICollectionViewCell.h"
  19. #import "RegularExpression.h"
  20. #import "Util.h"
  21. #import "NewDeliveryRequirementCell.h"
  22. #import "CustomButton.h"
  23. #define kTextFont [UIFont systemFontOfSize:LabelAndTextFontOfSize]
  24. #define kTitleFont [UIFont systemFontOfSize:14]
  25. @interface NewDeliveryRequirementController ()<DataListTableViewCellDetegate,NewDeliveryRequirementKeyBoardDelegate,UITableViewDataSource,UIScrollViewDelegate, UITableViewDelegate>{
  26. NSInteger _positionHeight;
  27. UIView *_positionImage;
  28. UIView *_vImage;
  29. UILabel *_lblPosition;
  30. UIImageView *_ivPosition;
  31. BOOL _isHaveDian;
  32. UIView *_vCollectionView;
  33. NSIndexPath *_myRow;
  34. /**
  35. 安排单号
  36. */
  37. UILabel *_lbArrange;
  38. /**
  39. 联系电话
  40. */
  41. UILabel *_lbTelephone;
  42. /**
  43. 送货地址
  44. */
  45. UILabel *_lbDeliveryAddress;
  46. /**
  47. 送货日期
  48. */
  49. UILabel *_lbDeliveryDate;
  50. /**
  51. 回收金额
  52. */
  53. UILabel *_lbRecoveryAmount;
  54. /**
  55. 备注
  56. */
  57. UITextField *_fieldRemarks;
  58. NewDeliveryRequirementCell *_myCell;
  59. /**
  60. 分割线
  61. */
  62. UIView *_line;
  63. }
  64. @end
  65. @implementation NewDeliveryRequirementController
  66. @synthesize scroll;
  67. @synthesize contentView;
  68. @synthesize refreshDelegate;
  69. @synthesize keyboardShow;
  70. #pragma mark - 公共函数
  71. /**
  72. 加载视图函数
  73. */
  74. - (void)viewDidLoad {
  75. [super viewDidLoad];
  76. _dataList = [[NSMutableArray alloc]init];
  77. [self initUI];
  78. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onFocusPeopleEditingChanged:) name:@"UITextFieldTextDidChangeNotification" object:self.receiptAmount ];
  79. self.navigationItem.title = @"新增送安回执";
  80. //返回
  81. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  82. [button setImage:[UIImage imageNamed:@"icon_back"] forState:UIControlStateNormal];
  83. [button addTarget:self action:@selector(goBack)
  84. forControlEvents:UIControlEventTouchUpInside];
  85. button.frame = CGRectMake(0, 0,45,22);
  86. UIBarButtonItem *menuButton = [[UIBarButtonItem alloc] initWithCustomView:button];
  87. self.navigationItem.leftBarButtonItem = menuButton;
  88. if(self.sReceiptCode != nil&&self.sReceiptCode.length > 0){
  89. self.receiptCode.enabled=NO;
  90. [self reloadDataWithOnlyCode:self.sReceiptCode];
  91. }
  92. }
  93. /**
  94. 安全区视图发生变化
  95. */
  96. -(void)viewSafeAreaInsetsDidChange{
  97. [self.view setBackgroundColor:[UIColor whiteColor]];
  98. UIImage *pic = [UIImage imageNamed:@"bt_datasave"];
  99. CGFloat h = (Screen_Width - 40) * pic.size.height / pic.size.width;
  100. scroll.frame =CGRectMake(0, 0, Screen_Width, self.view.safeAreaLayoutGuide.layoutFrame.size.height -h);
  101. _saveBtn.frame = CGRectMake(20,
  102. self.view.safeAreaLayoutGuide.layoutFrame.size.height -h-15,
  103. Screen_Width-40,
  104. h);
  105. [super viewSafeAreaInsetsDidChange];
  106. }
  107. /**
  108. 初始化回执类型
  109. */
  110. - (void)initStatus2:(BOOL) flag{
  111. _arrayStatus = [[NSMutableArray alloc]init];
  112. StatusInfo *s = [[StatusInfo alloc]init];
  113. s.tagName = @"cell";
  114. s.statusId = @"1";
  115. s.name = @"完成";
  116. [_arrayStatus addObject:s];
  117. if(flag){
  118. s = [[StatusInfo alloc]init];
  119. s.tagName = @"cell";
  120. s.statusId = @"2";
  121. s.name = @"再送";
  122. [_arrayStatus addObject:s];
  123. s = [[StatusInfo alloc]init];
  124. s.tagName = @"cell";
  125. s.statusId = @"3";
  126. s.name = @"换货";
  127. [_arrayStatus addObject:s];
  128. s = [[StatusInfo alloc]init];
  129. s.tagName = @"cell";
  130. s.statusId = @"4";
  131. s.name = @"退货";
  132. [_arrayStatus addObject:s];
  133. }
  134. }
  135. /**
  136. 安装回执状态
  137. @param flag <#flag description#>
  138. */
  139. -(void) initStatus3:(BOOL) flag{
  140. _arrayStatus = [[NSMutableArray alloc]init];
  141. StatusInfo *s = [[StatusInfo alloc]init];
  142. s.tagName = @"install";
  143. s.statusId = @"1";
  144. s.name = @"完成";
  145. [_arrayStatus addObject:s];
  146. if(flag){
  147. s = [[StatusInfo alloc]init];
  148. s.tagName = @"install";
  149. s.statusId = @"5";
  150. s.name = @"再安装";
  151. [_arrayStatus addObject:s];
  152. }
  153. }
  154. /**
  155. 初始化图片数组
  156. @return <#return value description#>
  157. */
  158. - (NSMutableArray *)imagePaths{
  159. if (!_imagePaths) {
  160. _imagePaths = [NSMutableArray array];
  161. }
  162. return _imagePaths;
  163. }
  164. /**
  165. 初始化回执类型
  166. */
  167. - (void)initStatus{
  168. _arrayDStatus = [[NSMutableArray alloc]init];
  169. StatusInfo* s = [[StatusInfo alloc]init];
  170. s.tagName = @"status";
  171. s.statusId = @"1";
  172. s.name = @"完成";
  173. [_arrayDStatus addObject:s];
  174. s = [[StatusInfo alloc]init];
  175. s.tagName = @"status";
  176. s.statusId = @"2";
  177. s.name = @"推迟送安";
  178. [_arrayDStatus addObject:s];
  179. }
  180. /**
  181. 获得拍照的照片总数
  182. @return <#return value description#>
  183. */
  184. - (NSInteger)cameraCount{
  185. NSInteger count = 0;
  186. for (int i = 0; i < self.assets.count; i++) {
  187. id asset = self.assets[i];
  188. if ([asset isKindOfClass:[DKCamera class]]) {
  189. count++;
  190. }
  191. }
  192. return count;
  193. }
  194. /**
  195. 初始化collection view
  196. */
  197. - (void)setupCollectionView{
  198. UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
  199. flowLayout.itemSize = CGSizeMake(85, 85);
  200. flowLayout.minimumInteritemSpacing = 5;
  201. flowLayout.minimumLineSpacing = 10;
  202. flowLayout.scrollDirection = UICollectionViewScrollDirectionVertical;
  203. flowLayout.sectionInset = UIEdgeInsetsMake(7, 20, 0, 20);
  204. self.collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, Screen_Width,0) collectionViewLayout:flowLayout];
  205. self.collectionView.scrollEnabled = NO;
  206. self.collectionView.backgroundColor = [UIColor clearColor];
  207. self.collectionView.dataSource = self;
  208. self.collectionView.delegate = self;
  209. [self.collectionView registerNib:[UINib nibWithNibName:@"DKUICollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"DKUICollectionViewCell"];
  210. [_vCollectionView addSubview:self.collectionView];
  211. }
  212. /**
  213. 初始化相册数组
  214. @return <#return value description#>
  215. */
  216. - (NSMutableArray *)assets{
  217. if (!_assets) {
  218. _assets = [NSMutableArray array];
  219. }
  220. return _assets;
  221. }
  222. #pragma mark - 回调函数
  223. /**
  224. 文本值变化回调函数
  225. @param cell <#cell description#>
  226. @param txtfield <#txtfield description#>
  227. @param qualityTxt <#qualityTxt description#>
  228. @param remark <#remark description#>
  229. */
  230. - (void)textValueChange:(NewDeliveryRequirementCell *)cell txtField:(UITextField *)txtfield qualityField:(UITextField *)qualityTxt remarkField:(UITextField *)remark{
  231. self.cellIndex=cell.cellIndex;
  232. NewDeliveryRequirementModel *model = [_dataList objectAtIndex:self.cellIndex];
  233. if(txtfield.tag == 1000){
  234. model.receiptQuantity = txtfield.text;
  235. }
  236. if(txtfield.tag == 1001){
  237. model.receiptRemarks = txtfield.text;
  238. }
  239. if(txtfield.tag == 2000){
  240. model.installReceiptQuantity = txtfield.text;
  241. }
  242. }
  243. -(void)scrollViewDidScroll:(UIScrollView *)scrollView{
  244. [self.view endEditing:NO];
  245. }
  246. /**
  247. 键盘隐藏回调函数
  248. @param cell <#cell description#>
  249. */
  250. - (void)keyboardWillHide:(NewDeliveryRequirementCell *)cell{
  251. if (cell.cellIndex == _dataList.count - 1) {
  252. [self keyboardWillHide];
  253. }
  254. }
  255. /**
  256. 键盘弹出回调函数
  257. @param cell <#cell description#>
  258. */
  259. - (void)keyboardWillShow:(NewDeliveryRequirementCell *)cell{
  260. if (cell.cellIndex == _dataList.count - 1) {
  261. [self myKeyboardWillShow];
  262. }
  263. }
  264. /**
  265. 保存数据加载完成函数
  266. @param sender <#sender description#>
  267. */
  268. - (void)onSaveLoadFinish:(ASIDownManager *)sender {
  269. RequestResultModel *resultModel = [RequestResultModel dk_modelWithJSON:sender.mWebStr];
  270. [self cancel];
  271. int iStatus =resultModel.status;
  272. NSString *message = resultModel.message;
  273. self.navigationItem.rightBarButtonItem.enabled = YES;
  274. if (iStatus == 0) {
  275. //[self clearData];//新增后 清除画面的值
  276. UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"保存成功!" preferredStyle:UIAlertControllerStyleAlert ];
  277. [alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action){
  278. [self goBack];
  279. }]];
  280. // 3.显示alertController:presentViewController
  281. [self presentViewController:alert animated:YES completion:nil];
  282. }
  283. else if(iStatus == ActionResultStatusAuthError
  284. ||iStatus == ActionResultStatusNoLogin
  285. ||iStatus == ActionResultStatusLogined||iStatus==ActionResultSessionOverdue){
  286. [self showReLoginDialog:message];
  287. return;
  288. }
  289. else {
  290. [self showAlertViewText:message];
  291. return;
  292. }
  293. }
  294. /**
  295. 收款方式回调函数
  296. @param model <#model description#>
  297. */
  298. - (void)setPayTypeModel:(PayTypeModel *)model{
  299. [ _receivablesType setTitle:model.settlementTypeName forState:UIControlStateNormal];
  300. _settlementTypeName = model.settlementTypeName;
  301. _settlementType = model.settlementType;
  302. _existsHandlingFee = model.existsHandlingFee;
  303. _earnestFee = model.earnestFee;
  304. _remarks = model.remarks;
  305. }
  306. /**
  307. 单据数据加载完成函数
  308. @param sender <#sender description#>
  309. */
  310. - (void)onLoadFinish:(ASIDownManager *)sender {
  311. RequestResultModel *resultModel = [RequestResultModel dk_modelWithJSON:sender.mWebStr];
  312. [self cancel];
  313. int iStatus =resultModel.status;
  314. NSString *message = resultModel.message;
  315. if (iStatus == 0) {
  316. NSArray * infoArr;
  317. NSArray * infoHead;
  318. NSDictionary *dicResult =(NSDictionary*) resultModel.result;
  319. if(dicResult != nil){
  320. infoArr = [dicResult objectForKey:@"Table1"];
  321. infoHead = [dicResult objectForKey:@"Table"];
  322. }
  323. if (infoHead == nil|| infoHead.count == 0) {
  324. self.receiptCode.text = @"";
  325. self.sReceiptCode = @"";
  326. [self showAlertViewText:@"该送货单未建安排单,请重新建安排单"];
  327. return;
  328. }
  329. //单据信息 一条数据
  330. BOOL receiptFlg=false;
  331. for (int i = 0; i < infoHead.count; i++) {
  332. NSDictionary *h = infoHead[i];
  333. receiptFlg = (BOOL)[h objectForKey:@"ReceiptFlag"] ;
  334. if (receiptFlg) {
  335. self.receiptFlag = @"1";
  336. }else{
  337. self.receiptFlag = @"0";
  338. }
  339. double receiptAmount = [[h objectForKey:@"ReceiptAmount"] doubleValue];
  340. _sReceiptAmount = [NSString stringWithFormat:@"%0.2f",receiptAmount];
  341. _sCustomerName = [h objectForKey:@"CustomerName"];
  342. _sReceivables = [NSString stringWithFormat:@"%0.2f",[[h objectForKey:@"Receivables"] doubleValue]];
  343. _installationReceivables = [h objectForKey:@"InstallationReceivables"];
  344. _organizationID =[h objectForKey:@"OrganizationID"];
  345. _organizationCode=[h objectForKey:@"OrganizationCode"] == nil ? @"":[h objectForKey:@"OrganizationCode"] ;
  346. _deliveryReceivables = [h objectForKey:@"DeliveryReceivables"];
  347. _sReceiptType= @"1";
  348. _sNextDeliveryDate = [h objectForKey:@"NextDeliveryDate"];
  349. [_receiptType setEnabled:YES];
  350. if ([_sReceiptType intValue] == 2) {
  351. self.sNextDeliveryDate = [h objectForKey:@"NextinstallDate"];
  352. [self.nextDeliveryDate setTitle:self.sNextDeliveryDate forState:UIControlStateNormal];
  353. [self.receiptType setTitle:@"推迟送安" forState:UIControlStateNormal];
  354. [self.nextDeliveryDate setTitle:_sNextDeliveryDate forState:UIControlStateNormal];//推迟日期
  355. [_nextDeliveryDate setEnabled:YES];
  356. self.receiptAmount.enabled=NO;
  357. [_receivablesType setEnabled:NO];
  358. }else if([_sReceiptType intValue] == 1){
  359. [self.receiptType setTitle:@"完成" forState:UIControlStateNormal];
  360. [self.nextDeliveryDate setTitle:@"请选择推迟日期" forState:UIControlStateNormal];
  361. self.sNextDeliveryDate = @"";
  362. [_nextDeliveryDate setEnabled:NO];
  363. self.receiptAmount.enabled=YES;
  364. [_receivablesType setEnabled:YES];
  365. }
  366. if (([_sReceivables doubleValue] > 0)) {
  367. self.receiptAmount.enabled = YES;
  368. [_receivablesType setEnabled:YES];
  369. }else{
  370. self.receiptAmount.enabled = NO;
  371. [_receivablesType setEnabled:NO];
  372. }
  373. _deliveryId = [NSString stringWithFormat:@"%d",[[h objectForKey:@"DeliveryID"] intValue]];
  374. _receiptAmount.text = _sReceiptAmount;//回执金额
  375. _customerName.text = _sCustomerName;//客户名称
  376. _receivables.text = _sReceivables;//应收金额
  377. _lbArrange.text = [NSString stringWithFormat:@"安排单号: %@", [h objectForKey:@"ArrangementNo"]];
  378. _lbTelephone.text = [NSString stringWithFormat:@"联系电话: %@", [h objectForKey:@"Telephone"]];
  379. _lbDeliveryAddress.text = [NSString stringWithFormat:@"送货地址: %@", [h objectForKey:@"DeliveryAddress"]];
  380. NSString *j = [h objectForKey:@"DeliveryDate"];
  381. _lbDeliveryDate.text = [NSString stringWithFormat:@"送货日期: %@",j != nil ?[j substringWithRange:NSMakeRange(0,10)]:@""];
  382. _completeReceivables = [NSString stringWithFormat:@"%0.2f",[[h objectForKey:@"CompleteReceivables"] doubleValue]];
  383. if(_completeReceivables == nil){
  384. _completeReceivables = @"0";
  385. }
  386. _lbRecoveryAmount.text = [NSString stringWithFormat:@"回收金额: %@", _completeReceivables];
  387. }
  388. [_dataList removeAllObjects];
  389. if(infoArr != nil){
  390. for (int i = 0; i < infoArr.count; i++) {
  391. NSDictionary *info = infoArr[i];
  392. NewDeliveryRequirementModel *mod = [NewDeliveryRequirementModel dk_modelWithDictionary:info];
  393. [_dataList addObject:mod];
  394. }
  395. _vImage.hidden=NO;
  396. [self reloadMyView];
  397. [self.myTableView reloadData];
  398. }
  399. }
  400. else if(iStatus == ActionResultStatusAuthError
  401. ||iStatus == ActionResultStatusNoLogin
  402. ||iStatus == ActionResultStatusLogined||iStatus==ActionResultSessionOverdue){
  403. [self showReLoginDialog:message];
  404. return;
  405. }
  406. else {
  407. [self showAlertViewText:message];
  408. }
  409. }
  410. /**
  411. 数据加载失败函数
  412. @param sender <#sender description#>
  413. */
  414. - (void)onLoadFail:(ASIDownManager *)sender {
  415. [self cancel];
  416. self.navigationItem.rightBarButtonItem.enabled = YES;
  417. [self showAlertViewText:@"网络异常"];
  418. }
  419. /**
  420. 安装回执
  421. @param path <#path description#>
  422. */
  423. - (void)setInstallReceiptType:(NSIndexPath*) path{
  424. _myRow= path;
  425. NewDeliveryRequirementModel *mode = _dataList[_myRow.row];
  426. if([mode.sourceFrom intValue] == 1){
  427. [self initStatus3:YES];
  428. }else{
  429. [self initStatus3:NO];
  430. }
  431. StatusInfoTextVC *tc = [[StatusInfoTextVC alloc] init];
  432. tc.sdelegate=self;
  433. [tc.arrFilter addObjectsFromArray: _arrayStatus];
  434. [self.navigationController pushViewController:tc animated:YES];
  435. self.hidesBottomBarWhenPushed = NO;
  436. }
  437. /**
  438. 回执类型回调函数
  439. @param s <#s description#>
  440. */
  441. - (void)showStatusValue:(StatusInfo *)s{
  442. _myCell = [_myTableView cellForRowAtIndexPath:_myRow];
  443. //回执类型回调
  444. if([s.tagName isEqualToString:@"status"]){
  445. _sReceiptType = s.statusId;
  446. [_receiptType setTitle:s.name forState:UIControlStateNormal];
  447. if([_sReceiptType isEqualToString:@"2"]){
  448. //推迟送货
  449. //收款方式
  450. [_receivablesType setEnabled:NO];
  451. _settlementType = @"";
  452. [_receivablesType setTitle:@"请选择收款方式" forState:UIControlStateNormal];
  453. //回执金额
  454. _receiptAmount.text = @"0.000000";
  455. _sReceiptAmount = @"0.000000";
  456. self.receiptAmount.enabled = NO;
  457. //推迟日期
  458. [_nextDeliveryDate setEnabled:YES];
  459. _sNextDeliveryDate = @"";
  460. [self.nextDeliveryDate setTitle:@"请选择推迟日期" forState:UIControlStateNormal];
  461. //列表
  462. for(NewDeliveryRequirementModel *model in _dataList){
  463. model.receiptType = @"1";
  464. model.installReceiptType = @"1";
  465. model.receiptQuantity = @"0";
  466. model.installReceiptQuantity = @"0";
  467. }
  468. }
  469. else {
  470. //完成状态
  471. [_nextDeliveryDate setEnabled:NO];
  472. [self.nextDeliveryDate setTitle:@"请选择推迟日期" forState:UIControlStateNormal];
  473. _sNextDeliveryDate = @"";
  474. if (([_sReceivables doubleValue] > 0)) {
  475. self.receiptAmount.enabled = YES;
  476. [_receivablesType setEnabled:YES];
  477. }else{
  478. self.receiptAmount.enabled = NO;
  479. [_receivablesType setEnabled:NO];
  480. }
  481. for(NewDeliveryRequirementModel *model in _dataList){
  482. model.installReceiptType = @"1"
  483. ; model.installReceiptQuantity = model.maxInstallReceiptQuantity;
  484. }
  485. }
  486. }
  487. //选择Cell回执状态回调
  488. if([s.tagName isEqualToString:@"cell"]){
  489. switch ([s.statusId intValue]) {
  490. case 1:
  491. [_myCell.btstate setTitle:@"完成" forState:UIControlStateNormal];
  492. _myCell.model.receiptType = @"1";
  493. break;
  494. case 2:
  495. [_myCell.btstate setTitle:@"再送" forState:UIControlStateNormal];
  496. _myCell.model.receiptType = @"2";
  497. [_myCell.receiptQuantity addTarget:self action:@selector(receiptQuantityValueChanged) forControlEvents:UIControlEventAllEditingEvents];
  498. break;
  499. case 3:
  500. [_myCell.btstate setTitle:@"换货" forState:UIControlStateNormal];
  501. _myCell.model.receiptType = @"3";
  502. break;
  503. case 4:
  504. [_myCell.btstate setTitle:@"退货" forState:UIControlStateNormal];
  505. _myCell.model.receiptType = @"4";
  506. break;
  507. default:
  508. break;
  509. }
  510. }
  511. if([s.tagName isEqualToString:@"install"]){
  512. switch ([s.statusId intValue]) {
  513. case 1:
  514. _myCell.model.installReceiptType = @"1"
  515. ; _myCell.model.installReceiptQuantity = _myCell.model.maxInstallReceiptQuantity;
  516. break;
  517. case 5:
  518. _myCell.model.installReceiptType = @"5"
  519. ;
  520. break;
  521. }
  522. }
  523. [_myTableView reloadData];
  524. }
  525. /**
  526. 文本框的长度限制 实现监听方法
  527. @param sender <#sender description#>
  528. */
  529. - (void)onFocusPeopleEditingChanged:(NSNotification *)sender
  530. {
  531. UITextField *textField = (UITextField *)sender.object;
  532. NSString *toBeString = textField.text;
  533. NSString *lang = [[UIApplication sharedApplication]textInputMode].primaryLanguage;
  534. int kMaxLength = 0;
  535. if([textField isEqual:self.receiptAmount]){
  536. kMaxLength = 17;
  537. if (toBeString != nil && toBeString.length > 0 && [toBeString floatValue] -MAXIMUM_QUANTITY > 0.0000000001f) {
  538. textField.text = MAX_COUNT;
  539. toBeString = MAX_COUNT;
  540. }
  541. }
  542. if ([lang isEqualToString:@"zh-Hans"]) {
  543. UITextRange *selectedRange = [textField markedTextRange];
  544. UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
  545. if (!position) {
  546. if (toBeString.length > kMaxLength) {
  547. textField.text = [toBeString substringToIndex:kMaxLength];
  548. }
  549. }
  550. }else{
  551. if (toBeString.length > kMaxLength) {
  552. textField.text = [toBeString substringToIndex:kMaxLength];
  553. }
  554. }
  555. }
  556. /**
  557. 限制用户输入小数点后位数的方法
  558. @param textField <#textField description#>
  559. @param range <#range description#>
  560. @param string <#string description#>
  561. @return <#return value description#>
  562. */
  563. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
  564. if ([textField isEqual:self.receiptCode]){
  565. return YES;
  566. }
  567. if ([textField.text rangeOfString:@"."].location == NSNotFound) {
  568. _isHaveDian = NO;
  569. }
  570. if ([string length] > 0) {
  571. unichar single = [string characterAtIndex:0];//当前输入的字符
  572. if ((single >= '0' && single <= '9') || single == '.') {//数据格式正确
  573. //首字母不能为0和小数点
  574. if([textField.text length] == 0){
  575. if(single == '.') {
  576. [self showAlertViewText:@"第一个数字不能为小数点"];
  577. [textField.text stringByReplacingCharactersInRange:range withString:@""];
  578. return NO;
  579. }
  580. }
  581. if([textField.text length] == 1 && [[textField.text substringToIndex:1] isEqualToString: @"0"]){
  582. if(!(single == '.')) {
  583. [textField.text stringByReplacingCharactersInRange:range withString:@""];
  584. return NO;
  585. }
  586. }
  587. //输入的字符是否是小数点
  588. if (single == '.') {
  589. if(!_isHaveDian)//text中还没有小数点
  590. {
  591. _isHaveDian = YES;
  592. return YES;
  593. }else{
  594. [self showAlertViewText:@"您已经输入过小数点了"];
  595. [textField.text stringByReplacingCharactersInRange:range withString:@""];
  596. return NO;
  597. }
  598. }else{
  599. if (_isHaveDian) {//存在小数点
  600. //判断小数点的位数
  601. NSRange ran = [textField.text rangeOfString:@"."];
  602. if (range.location - ran.location <= 6) {
  603. return YES;
  604. }else{
  605. //[self showAlertViewText:@"亲,您最多输入两位小数"];
  606. return NO;
  607. }
  608. }else{
  609. return YES;
  610. }
  611. }
  612. }else{//输入的数据格式不正确
  613. [self showAlertViewText:@"您输入的格式不正确"];
  614. [textField.text stringByReplacingCharactersInRange:range withString:@""];
  615. return NO;
  616. }
  617. }
  618. else
  619. {
  620. return YES;
  621. }
  622. }
  623. /**
  624. 相册回调事件
  625. @param assets <#assets description#>
  626. */
  627. - (void)pickerViewControllerDoneAsstes:(NSArray *)assets{
  628. for (int i = (int)self.assets.count - 1;i >= 0;i-- ) {
  629. if ([self.assets[i] isKindOfClass:[DKPhotoAssets class]]) {
  630. [self.assets removeObject:self.assets[i]];
  631. }
  632. }
  633. for (DKPhotoAssets* asset in assets ) {
  634. if ([asset isKindOfClass:[DKPhotoAssets class]]) {
  635. [self.assets addObject:asset];
  636. }
  637. }
  638. [self.collectionView reloadData];
  639. [self reloadMyView];
  640. }
  641. /**
  642. Cell回执类型回调函数
  643. */
  644. - (void)setReceiptType:path{
  645. _myRow= path;
  646. NewDeliveryRequirementModel *mode = _dataList[_myRow.row];
  647. if([mode.sourceFrom intValue] == 1){
  648. [self initStatus2:YES];
  649. }else{
  650. [self initStatus2:NO];
  651. }
  652. StatusInfoTextVC *tc = [[StatusInfoTextVC alloc] init];
  653. tc.sdelegate=self;
  654. [tc.arrFilter addObjectsFromArray: _arrayStatus];
  655. [self.navigationController pushViewController:tc animated:YES];
  656. self.hidesBottomBarWhenPushed = NO;
  657. }
  658. /**
  659. 选中位置回调事件
  660. @param name <#name description#>
  661. */
  662. - (void)relocationData:(NSString *)name{
  663. _lblPosition.text = name;
  664. _positionImage.hidden = NO;
  665. [self reloadMyView];
  666. }
  667. /**
  668. table view的分区数
  669. @param tableView <#tableView description#>
  670. @return <#return value description#>
  671. */
  672. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
  673. {
  674. return 1;
  675. }
  676. /**
  677. table view的行数
  678. @param tableView <#tableView description#>
  679. @param section <#section description#>
  680. @return <#return value description#>
  681. */
  682. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
  683. {
  684. return [_dataList count];
  685. }
  686. /**
  687. table view的高度
  688. @param tableView <#tableView description#>
  689. @param indexPath <#indexPath description#>
  690. @return <#return value description#>
  691. */
  692. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
  693. return 320;
  694. }
  695. /**
  696. 获取tableview cell
  697. @param tableView <#tableView description#>
  698. @param indexPath <#indexPath description#>
  699. @return <#return value description#>
  700. */
  701. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
  702. NSString *CellIdentifier = @"DataListTableViewCell";
  703. NewDeliveryRequirementCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  704. cell = [[NewDeliveryRequirementCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
  705. cell.delegate = self;
  706. cell.nddelegate = self;
  707. cell.receiptQuantity.delegate = self;
  708. cell.receiptQuantity.tag = indexPath.row;
  709. NewDeliveryRequirementModel *datamodel = [_dataList objectAtIndex:indexPath.row];
  710. cell.myIndexPath = indexPath;
  711. cell.cellIndex = indexPath.row;
  712. [cell parseInfoModel:datamodel receiptType:_sReceiptType];
  713. return cell;
  714. }
  715. /**
  716. cellection view的分区数
  717. @param collectionView <#collectionView description#>
  718. @return <#return value description#>
  719. */
  720. - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
  721. return 1;
  722. }
  723. /**
  724. collection view的项数
  725. @param collectionView <#collectionView description#>
  726. @param section <#section description#>
  727. @return <#return value description#>
  728. */
  729. - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
  730. return [self.assets count];
  731. }
  732. /**
  733. 获取collectionview cell
  734. @param collectionView <#collectionView description#>
  735. @param indexPath <#indexPath description#>
  736. @return <#return value description#>
  737. */
  738. - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
  739. DKUICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"DKUICollectionViewCell" forIndexPath:indexPath];
  740. // 判断类型来获取Image
  741. DKPhotoAssets *asset = self.assets[indexPath.item];
  742. if ([asset isKindOfClass:[DKPhotoAssets class]]) {
  743. cell.imageView.image = asset.thumbImage;
  744. }
  745. else if ([asset isKindOfClass:[NSString class]]){
  746. [cell.imageView sd_setImageWithURL:[NSURL URLWithString:(NSString *)asset] placeholderImage:[UIImage imageNamed:@"wallpaper_placeholder"]];
  747. }
  748. else if([asset isKindOfClass:[UIImage class]]){
  749. cell.imageView.image = (UIImage *)asset;
  750. }
  751. else if ([asset isKindOfClass:[DKCamera class]]){
  752. cell.imageView.image = [asset thumbImage];
  753. }
  754. return cell;
  755. }
  756. /**
  757. collectionview图片放大
  758. @param collectionView <#collectionView description#>
  759. @param indexPath <#indexPath description#>
  760. */
  761. - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
  762. DKUICollectionViewCell *cell = (DKUICollectionViewCell *)[self.collectionView cellForItemAtIndexPath:indexPath];
  763. // 图片游览器
  764. DKPhotoPickerBrowserViewController *pickerBrowser = [[DKPhotoPickerBrowserViewController alloc] init];
  765. // 传入点击图片View的话,会有微信朋友圈照片的风格
  766. pickerBrowser.toView = cell.imageView;
  767. // 数据源/delegate
  768. pickerBrowser.delegate = self;
  769. pickerBrowser.dataSource = self;
  770. // 是否可以删除照片
  771. pickerBrowser.editing = YES;
  772. // 当前选中的值
  773. pickerBrowser.currentIndexPath = [NSIndexPath indexPathForItem:indexPath.row inSection:0];
  774. // 展示控制器
  775. [pickerBrowser show];
  776. }
  777. /**
  778. collectionview的分区数
  779. @param pickerBrowser <#pickerBrowser description#>
  780. @return <#return value description#>
  781. */
  782. - (NSInteger)numberOfSectionInPhotosInPickerBrowser:(DKPhotoPickerBrowserViewController *)pickerBrowser{
  783. return 1;
  784. }
  785. /**
  786. collection view的项数
  787. @param photoBrowser <#photoBrowser description#>
  788. @param section <#section description#>
  789. @return <#return value description#>
  790. */
  791. - (NSInteger)photoBrowser:(DKPhotoPickerBrowserViewController *)photoBrowser numberOfItemsInSection:(NSUInteger)section{
  792. return [self.assets count];
  793. }
  794. /**
  795. collection view放大函数
  796. @param pickerBrowser <#pickerBrowser description#>
  797. @param indexPath <#indexPath description#>
  798. @return <#return value description#>
  799. */
  800. - (DKPhotoPickerBrowserPhoto *)photoBrowser:(DKPhotoPickerBrowserViewController *)pickerBrowser photoAtIndexPath:(NSIndexPath *)indexPath{
  801. id imageObj = [self.assets objectAtIndex:indexPath.item];
  802. DKPhotoPickerBrowserPhoto *photo = [DKPhotoPickerBrowserPhoto photoAnyImageObjWith:imageObj];
  803. // 包装下imageObj 成 DKPhotoPickerBrowserPhoto 传给数据源
  804. DKUICollectionViewCell *cell = (DKUICollectionViewCell *)[self.collectionView cellForItemAtIndexPath:indexPath];
  805. // 缩略图
  806. photo.thumbImage = cell.imageView.image;
  807. return photo;
  808. }
  809. /**
  810. collection view删除图片函数
  811. @return <#return value description#>
  812. */
  813. #pragma mark - <DKPhotoPickerBrowserViewControllerDelegate>
  814. - (void)photoBrowser:(DKPhotoPickerBrowserViewController *)photoBrowser removePhotoAtIndexPath:(NSIndexPath *)indexPath{
  815. if (indexPath.row > [self.assets count]) return;
  816. [self.assets removeObjectAtIndex:indexPath.row];
  817. [self.collectionView reloadData];
  818. [self reloadMyView];
  819. }
  820. #pragma mark - 私有函数
  821. /**
  822. 加载单据信息
  823. @param code <#code description#>
  824. */
  825. - (void)reloadDataWithOnlyCode:(NSString *)code
  826. {
  827. self.receiptCode.text = code;
  828. self.sReceiptCode = code;
  829. double delayInSeconds = 0.5;
  830. dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
  831. dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
  832. [self loadDataSource];
  833. });
  834. }
  835. /**
  836. 键盘隐藏函数
  837. @param tap <#tap description#>
  838. */
  839. - (void)keyboardHide:(UITapGestureRecognizer*)tap{
  840. [self.view endEditing:YES];
  841. }
  842. /**
  843. 初始化布局函数
  844. */
  845. - (void)initUI{
  846. //返回
  847. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  848. [button setImage:[UIImage imageNamed:@"icon_back"] forState:UIControlStateNormal];
  849. [button addTarget:self action:@selector(goBack)
  850. forControlEvents:UIControlEventTouchUpInside];
  851. button.frame = CGRectMake(0, 0,45,22);
  852. UIBarButtonItem *menuButton = [[UIBarButtonItem alloc] initWithCustomView:button];
  853. self.navigationItem.leftBarButtonItem = menuButton;
  854. scroll = [UIScrollView new];
  855. scroll.delegate = self;
  856. scroll.frame=self.view.bounds;
  857. scroll.tag=1000;
  858. [self.view addSubview:scroll];
  859. if(Screen_Height2 <= 480){
  860. scroll.contentSize=CGSizeMake(self.view.frame.size.width, self.view.frame.size.height + 80);
  861. }
  862. contentView = [[UIView alloc]init];
  863. contentView.frame=CGRectZero;
  864. contentView.backgroundColor = [UIColor whiteColor];
  865. UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(keyboardHide:)];
  866. //设置成NO表示当前控件响应后会传播到其他控件上,默认为YES。
  867. tapGestureRecognizer.cancelsTouchesInView = NO;
  868. // //将触摸事件添加到当前view
  869. [scroll addGestureRecognizer:tapGestureRecognizer];
  870. [scroll addSubview:contentView];
  871. //送货单号--------------
  872. UIView *vReceiptCode = [UIView new];
  873. vReceiptCode.frame=CGRectMake(0, 5, Screen_Width,40);
  874. [contentView addSubview:vReceiptCode];
  875. UILabel *lblTxtReceiptCode = [UILabel new];
  876. lblTxtReceiptCode.frame=CGRectMake(20, 5, 90, 25);
  877. lblTxtReceiptCode.text = @"送安单号:";
  878. lblTxtReceiptCode.font=kTitleFont;
  879. [vReceiptCode addSubview:lblTxtReceiptCode];
  880. _receiptCode = [UITextField new];
  881. _receiptCode.frame = CGRectMake(95, 5, Screen_Width - 95 - 20, 25);
  882. _receiptCode.font = kTextFont;
  883. _receiptCode.placeholder = @"请输入送安单号";
  884. _receiptCode.tag = 100;
  885. [vReceiptCode addSubview:_receiptCode];
  886. UIView *fReceiptCode = [[UIView alloc] initWithFrame:CGRectMake(0, 35,Screen_Width ,5)];
  887. fReceiptCode.backgroundColor = LineBackgroundColor;
  888. [vReceiptCode addSubview:fReceiptCode];
  889. //安排单号
  890. _lbArrange = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(vReceiptCode.frame), SCREENWIDTH-20, 0)];
  891. _lbArrange.font=kTextFont;
  892. _lbArrange.hidden = YES;
  893. [contentView addSubview: _lbArrange];
  894. _lbArrange.text = @"安排单号:";
  895. //客户姓名--------------
  896. UIView *vCustomerName = [UIView new];
  897. vCustomerName.frame = CGRectMake(0,CGRectGetMaxY(_lbArrange.frame) + 8, Screen_Width, 31);
  898. [contentView addSubview:vCustomerName];
  899. UILabel *lblTxtVCustomerName = [UILabel new];
  900. lblTxtVCustomerName.frame = CGRectMake(20, 3, 90, 25);
  901. lblTxtVCustomerName.text = @"客户名称:";
  902. lblTxtVCustomerName.font = kTextFont;
  903. [vCustomerName addSubview:lblTxtVCustomerName];
  904. _customerName = [UILabel new];
  905. _customerName.font = kTextFont;
  906. _customerName.frame = CGRectMake(95, 3, Screen_Width - 95 - 30, 25);
  907. [vCustomerName addSubview:_customerName];
  908. //联系电话
  909. _lbTelephone = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(vCustomerName.frame)+10, SCREENWIDTH-20, 17)];
  910. _lbTelephone.font = kTextFont;
  911. _lbTelephone.text = @"联系电话:";
  912. [contentView addSubview: _lbTelephone];
  913. _lbDeliveryAddress = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(_lbTelephone.frame)+18, SCREENWIDTH-20, 17)];
  914. _lbDeliveryAddress.font = kTextFont;
  915. _lbDeliveryAddress.text = @"送货地址:";
  916. [contentView addSubview: _lbDeliveryAddress];
  917. _lbDeliveryDate = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(_lbDeliveryAddress.frame)+20, SCREENWIDTH-20, 17)];
  918. _lbDeliveryDate.font = kTextFont;
  919. _lbDeliveryDate.text = @"送货日期:";
  920. [contentView addSubview: _lbDeliveryDate];
  921. //应收金额--------------
  922. UIView *vReceivables = [UIView new];
  923. vReceivables.frame=CGRectMake(0,CGRectGetMaxY(_lbDeliveryDate.frame) + 12, Screen_Width, 31);
  924. [contentView addSubview:vReceivables];
  925. UILabel *lblTxtVReceivables = [UILabel new];
  926. lblTxtVReceivables.frame = CGRectMake(20, 3, 90, 25);
  927. lblTxtVReceivables.text = @"应收金额:";
  928. lblTxtVReceivables.font = kTextFont;
  929. [vReceivables addSubview:lblTxtVReceivables];
  930. _receivables = [UILabel new];
  931. _receivables.font = kTextFont;
  932. _receivables.frame = CGRectMake(95, 3, Screen_Width - 95 - 30, 25);
  933. [vReceivables addSubview:_receivables];
  934. //回收金额
  935. _lbRecoveryAmount = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(vReceivables.frame)+10, SCREENWIDTH-20, 17)];
  936. _lbRecoveryAmount.font = kTextFont;
  937. _lbRecoveryAmount.text = @"回收金额:";
  938. [contentView addSubview: _lbRecoveryAmount];
  939. //回执类型--------------
  940. UIView *vReceiptType = [UIView new];
  941. vReceiptType.frame = CGRectMake(0,CGRectGetMaxY(_lbRecoveryAmount.frame)+13, Screen_Width, 31);
  942. [contentView addSubview:vReceiptType];
  943. UILabel *lblTxtVReceiptType = [UILabel new];
  944. lblTxtVReceiptType.frame = CGRectMake(20, 3, 90, 25);
  945. lblTxtVReceiptType.text = @"回执类型:";
  946. lblTxtVReceiptType.font = kTextFont;
  947. [vReceiptType addSubview:lblTxtVReceiptType];
  948. _receiptType = [UIButton buttonWithType:UIButtonTypeCustom];
  949. _receiptType.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
  950. _receiptType.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
  951. _receiptType.frame=CGRectMake(95, 3, Screen_Width - 95 - 30, 25);
  952. _receiptType.titleLabel.font= kTextFont;
  953. [_receiptType setTitle:@"请选择回执类型" forState:UIControlStateNormal];
  954. [_receiptType setTitleColor:[UIColor colorWithWhite:0 alpha:1] forState:UIControlStateNormal];
  955. [_receiptType addTarget:self action:@selector(showReceiptType) forControlEvents:UIControlEventTouchUpInside];
  956. [_receiptType setEnabled:NO];
  957. [vReceiptType addSubview:_receiptType];
  958. UIButton *jiantou1 = [UIButton buttonWithType:UIButtonTypeCustom];
  959. jiantou1.frame=CGRectMake(Screen_Width -17,8,7,12);
  960. [ jiantou1 setImage:[UIImage imageNamed:@"rightarrow"] forState:UIControlStateNormal];
  961. [vReceiptType addSubview:jiantou1];
  962. //=收款方式--------------
  963. UIView *vReceivablesType = [UIView new];
  964. vReceivablesType.frame = CGRectMake(0,CGRectGetMaxY(vReceiptType.frame)+5, Screen_Width, 31);
  965. [contentView addSubview:vReceivablesType];
  966. UILabel *lblTxtVReceivablesType = [UILabel new];
  967. lblTxtVReceivablesType.frame = CGRectMake(20, 3, 90, 25);
  968. lblTxtVReceivablesType.text = @"收款方式:";
  969. lblTxtVReceivablesType.font = kTextFont;
  970. [vReceivablesType addSubview:lblTxtVReceivablesType];
  971. _receivablesType = [UIButton buttonWithType:UIButtonTypeCustom];
  972. _receivablesType.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
  973. _receivablesType.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
  974. _receivablesType.frame = CGRectMake(95, 3, Screen_Width - 95 - 30, 25);
  975. _receivablesType.titleLabel.font = kTextFont;
  976. [_receivablesType setTitle:@"请选择收款方式" forState:UIControlStateNormal];
  977. [_receivablesType setTitleColor:[UIColor colorWithWhite:0.5 alpha:0.5] forState:UIControlStateNormal];
  978. [_receivablesType addTarget:self action:@selector(showReceivablesType) forControlEvents:UIControlEventTouchUpInside];
  979. [_receivablesType setEnabled:NO];
  980. [vReceivablesType addSubview:_receivablesType];
  981. UIButton *jiantou2 = [UIButton buttonWithType:UIButtonTypeCustom];
  982. jiantou2.frame = CGRectMake(Screen_Width - 17,8,7,12);
  983. [ jiantou2 setImage:[UIImage imageNamed:@"rightarrow"] forState:UIControlStateNormal];
  984. [vReceivablesType addSubview:jiantou2];
  985. //回执金额--------------
  986. UIView *vReceiptAmount = [UIView new];
  987. vReceiptAmount.frame = CGRectMake(0,CGRectGetMaxY(vReceivablesType.frame) + 5, Screen_Width, 31);
  988. [contentView addSubview:vReceiptAmount];
  989. UILabel *lblTxtReceiptAmount = [UILabel new];
  990. lblTxtReceiptAmount.frame = CGRectMake(20, 3, 90, 25);
  991. lblTxtReceiptAmount.text = @"回执金额:";
  992. lblTxtReceiptAmount.font = kTextFont;
  993. [vReceiptAmount addSubview:lblTxtReceiptAmount];
  994. _receiptAmount = [UITextField new];
  995. _receiptAmount.frame = CGRectMake(95, 3, Screen_Width - 95 - 30, 25);
  996. _receiptAmount.font = kTextFont;
  997. _receiptAmount.placeholder = @"请输入回执金额";
  998. _receiptAmount.delegate = self;
  999. [_receiptAmount setEnabled:NO];
  1000. _receiptAmount.keyboardType = UIKeyboardTypeDecimalPad;
  1001. [vReceiptAmount addSubview:_receiptAmount];
  1002. UILabel *lblTxtunit = [UILabel new];
  1003. lblTxtunit.frame = CGRectMake(Screen_Width - 40, 3, 30, 25);
  1004. lblTxtunit.text = @"元";
  1005. lblTxtunit.font = kTextFont;
  1006. lblTxtunit.textAlignment = NSTextAlignmentRight;
  1007. [vReceiptAmount addSubview:lblTxtunit];
  1008. //推迟日期--------------
  1009. _vNextDeliveryDate = [UIView new];
  1010. _vNextDeliveryDate.frame = CGRectMake(0,CGRectGetMaxY(vReceiptAmount.frame) + 5, Screen_Width, 34);
  1011. [contentView addSubview:_vNextDeliveryDate];
  1012. UILabel *lblTxtVNextDeliveryDate = [UILabel new];
  1013. lblTxtVNextDeliveryDate.frame = CGRectMake(20, 3, 90, 25);
  1014. lblTxtVNextDeliveryDate.text = @"推迟日期:";
  1015. lblTxtVNextDeliveryDate.font = kTextFont;
  1016. [_vNextDeliveryDate addSubview:lblTxtVNextDeliveryDate];
  1017. _nextDeliveryDate = [UIButton buttonWithType:UIButtonTypeCustom];
  1018. _nextDeliveryDate.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
  1019. _nextDeliveryDate.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
  1020. _nextDeliveryDate.frame = CGRectMake(95, 3, Screen_Width - 95 - 30, 25);
  1021. _nextDeliveryDate.titleLabel.font = kTextFont;
  1022. [_nextDeliveryDate setTitle:@"请选择推迟日期" forState:UIControlStateNormal];
  1023. [_nextDeliveryDate setTitleColor:[UIColor colorWithWhite:0.5 alpha:0.5] forState:UIControlStateNormal];
  1024. [_nextDeliveryDate addTarget:self action:@selector(showNextDeliveryDate) forControlEvents:UIControlEventTouchUpInside];
  1025. [_nextDeliveryDate setEnabled:NO];
  1026. [_vNextDeliveryDate addSubview:_nextDeliveryDate];
  1027. UIButton *jiantou3 = [UIButton buttonWithType:UIButtonTypeCustom];
  1028. jiantou3.frame = CGRectMake(Screen_Width-17,8,7,12);
  1029. [ jiantou3 setImage:[UIImage imageNamed:@"rightarrow"] forState:UIControlStateNormal];
  1030. [_vNextDeliveryDate addSubview:jiantou3];
  1031. UILabel *lbRemarksTitle = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(_vNextDeliveryDate.frame)+10, 77, 17)];
  1032. lbRemarksTitle.font = kTextFont;
  1033. lbRemarksTitle.text = @"备注信息:";
  1034. [contentView addSubview: lbRemarksTitle];
  1035. _fieldRemarks = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMaxX(lbRemarksTitle.frame), CGRectGetMaxY(_vNextDeliveryDate.frame)+10, SCREENWIDTH-CGRectGetMaxX(lbRemarksTitle.frame), 17)];
  1036. _fieldRemarks.font = kTextFont;
  1037. _fieldRemarks.placeholder = @"请填写备注信息";
  1038. [contentView addSubview: _fieldRemarks];
  1039. //分割线
  1040. _line = [[UIView alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(lbRemarksTitle.frame)+10, Screen_Width, 3)];
  1041. _line.backgroundColor = LineBackgroundColor;
  1042. [contentView addSubview:_line];
  1043. self.myTableView = [[UITableView alloc]init];
  1044. self.myTableView.dataSource = self;
  1045. self.myTableView.delegate = self;
  1046. self.myTableView.scrollEnabled = NO;
  1047. self.myTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
  1048. self.myTableView.frame = CGRectMake(0,CGRectGetMaxY(_line.frame), self.view.bounds.size.width, [self getDataViewHeight:_dataList]) ;
  1049. [contentView addSubview:self.myTableView];
  1050. _vCollectionView = [UIView new];
  1051. _vCollectionView.frame = CGRectMake(0,CGRectGetMaxY(self.myTableView.frame) + 8, Screen_Width, 0);
  1052. [contentView addSubview:_vCollectionView];
  1053. [self setupCollectionView];
  1054. _positionImage = [UIView new];
  1055. _positionImage.frame=CGRectMake(0, CGRectGetMaxY(_vCollectionView.frame), Screen_Width, 0);
  1056. [contentView addSubview:_positionImage];
  1057. //星号
  1058. _ivPosition = [UIImageView new];
  1059. _ivPosition.frame=CGRectMake(12,20,9,12);
  1060. [_positionImage addSubview:_ivPosition];
  1061. _lblPosition = [UILabel new];
  1062. _lblPosition.font=kTextFont;
  1063. _lblPosition.frame=CGRectMake(32, 16, Screen_Width-32, 20);
  1064. [_positionImage addSubview:_lblPosition];
  1065. //照相和相册 —————————
  1066. _vImage = [UIView new];
  1067. _vImage.frame=CGRectMake(0,CGRectGetMaxY(_positionImage.frame), Screen_Width-32, 30);
  1068. contentView.frame=CGRectMake(0, 0, Screen_Width,CGRectGetMaxY(_vImage.frame));
  1069. [contentView addSubview:_vImage];
  1070. CGFloat width = (SCREENWIDTH-70)/2;
  1071. CustomButton *btnPhoto = [[CustomButton alloc]initWithFrame:CGRectMake(width-90, 0, 70, 20) andImage:[UIImage imageNamed:@"icon_takephoto"] addText:@"照相" addImageWidth:15 addImageHeight:12];
  1072. [btnPhoto addTarget:self action:@selector(selectCamera) forControlEvents:(UIControlEventTouchUpInside)];
  1073. [_vImage addSubview:btnPhoto];
  1074. CustomButton *btn = [[CustomButton alloc]initWithFrame:CGRectMake(width, 0,70 , 20) andImage:[UIImage imageNamed:@"icon_photo"] addText:@"相册" addImageWidth:14 addImageHeight:15];
  1075. [btn addTarget:self action:@selector(selectPhotos) forControlEvents:(UIControlEventTouchUpInside)];
  1076. [_vImage addSubview:btn];
  1077. CustomButton *btnLoaction = [[CustomButton alloc]initWithFrame:CGRectMake(width+85, 0,100 , 20) andImage:[UIImage imageNamed:@"icon_position"] addText:@"所在位置" addImageWidth:13 addImageHeight:16];
  1078. [btnLoaction addTarget:self action:@selector(newMap) forControlEvents:(UIControlEventTouchUpInside)];
  1079. [_vImage addSubview:btnLoaction];
  1080. _vImage.hidden=YES;
  1081. contentView.frame=CGRectMake(0,0,self.view.bounds.size.width,CGRectGetMaxY(_vImage.frame));
  1082. //保存按钮
  1083. UIImage *pic = [UIImage imageNamed:@"bt_datasave"];
  1084. CGFloat h = (Screen_Width - 40) * pic.size.height / pic.size.width;
  1085. _saveBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  1086. _saveBtn.frame=CGRectMake(20, Screen_Height- h - 5 - rectStatusHeight-rectNavHeight-10, Screen_Width - 40,h) ;
  1087. [_saveBtn setBackgroundImage:pic forState:UIControlStateNormal];
  1088. [_saveBtn addTarget:self action:@selector(saveData) forControlEvents:UIControlEventTouchUpInside];
  1089. [self.view addSubview:_saveBtn];
  1090. }
  1091. /**
  1092. 键盘弹出函数
  1093. */
  1094. - (void)myKeyboardWillShow {
  1095. if(!keyboardShow){
  1096. [UIView animateWithDuration:0.3f animations:^ {
  1097. 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);
  1098. }];
  1099. }
  1100. keyboardShow=YES;
  1101. }
  1102. /**
  1103. 键盘隐藏函数
  1104. */
  1105. - (void)keyboardWillHide {
  1106. // Animate the current view back to its original position
  1107. if(keyboardShow){
  1108. [UIView animateWithDuration:0.0f animations:^ {
  1109. 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);
  1110. }];}
  1111. keyboardShow=NO;
  1112. }
  1113. /**
  1114. 总单回执类型
  1115. */
  1116. - (void)showReceiptType{
  1117. self.hidesBottomBarWhenPushed=YES;
  1118. [self initStatus];
  1119. StatusInfoTextVC *tc = [[StatusInfoTextVC alloc] init];
  1120. tc.sdelegate=self;
  1121. [tc.arrFilter addObjectsFromArray: _arrayDStatus];
  1122. [self.navigationController pushViewController:tc animated:YES];
  1123. self.hidesBottomBarWhenPushed=NO;
  1124. }
  1125. /**
  1126. 重新计算视图的位置
  1127. */
  1128. - (void)reloadMyView{
  1129. self.myTableView.frame=CGRectMake(0,CGRectGetMaxY(_line.frame), self.view.bounds.size.width, [self getDataViewHeight:_dataList]) ;
  1130. _vCollectionView.frame=CGRectMake(0,CGRectGetMaxY(self.myTableView.frame), Screen_Width, [Util getPhotoCollectionViewHeightWithPhotos: _assets]);
  1131. self.collectionView.frame=CGRectMake(0, 0,Screen_Width,[Util getPhotoCollectionViewHeightWithPhotos: _assets]);
  1132. if (_lblPosition.text.length > 0){
  1133. _ivPosition.image = [UIImage imageNamed:@"log_position"];
  1134. _positionImage.frame=CGRectMake(0, CGRectGetMaxY(_vCollectionView.frame)-8, Screen_Width, 30);
  1135. }
  1136. else{
  1137. _positionImage.frame=CGRectMake(0, CGRectGetMaxY(_vCollectionView.frame)-8, Screen_Width,0);
  1138. }
  1139. _vImage.frame=CGRectMake(0,CGRectGetMaxY(_positionImage.frame)+8, Screen_Width, 30);
  1140. contentView.frame=CGRectMake(0,0,self.view.bounds.size.width,CGRectGetMaxY(_vImage.frame));
  1141. scroll.contentSize=CGSizeMake(self.view.frame.size.width, contentView.frame.size.height + 150);
  1142. }
  1143. /**
  1144. 回执数量变化函数
  1145. */
  1146. - (void)receiptQuantityValueChanged{
  1147. if([_myCell.receiptQuantity.text doubleValue] > [_myCell.outQuantity.text doubleValue]){
  1148. _myCell.receiptQuantity.text = _myCell.outQuantity.text;
  1149. _myCell.model.receiptQuantity = _myCell.outQuantity.text;
  1150. [self showAlertViewText:@"回执数量不能大于出库数量"];
  1151. }
  1152. }
  1153. /**
  1154. 收款方式
  1155. */
  1156. - (void)showReceivablesType{
  1157. [self.view endEditing:YES];
  1158. PayTypeVC *pay = [[PayTypeVC alloc] init];
  1159. pay.payDelegate = self;
  1160. [self.navigationController pushViewController:pay animated:YES];
  1161. self.hidesBottomBarWhenPushed = NO;
  1162. }
  1163. /**
  1164. 保存数据函数
  1165. */
  1166. - (void)saveData{
  1167. [self.view endEditing:YES];
  1168. if(_receiptCode.text == nil || [_receiptCode.text isEqualToString:@""]){
  1169. [self showAlertViewText:@"请输入或扫描单号"];
  1170. return;
  1171. }
  1172. if(_sReceiptCode == nil){
  1173. [self showAlertViewText:@"请按回车加载数据!"];
  1174. return;
  1175. }
  1176. if([_sReceiptType intValue] == 1){
  1177. _sReceiptAmount = _receiptAmount.text;
  1178. _sNextDeliveryDate = @"";
  1179. }
  1180. else{
  1181. _sReceiptAmount = @"0.000000";
  1182. [ _receivablesType setTitle:@"请输入收款方式" forState:UIControlStateNormal];
  1183. _settlementTypeName = @"";
  1184. _settlementType = @"";
  1185. _existsHandlingFee = @"";
  1186. _earnestFee = @"";
  1187. _remarks = @"";
  1188. }
  1189. if([_sReceiptType intValue] != 1){
  1190. NSString *nextDeliveryDate = _nextDeliveryDate.titleLabel.text;
  1191. if([nextDeliveryDate isEqualToString:@"请选择推迟日期"]){
  1192. [self showAlertViewText:@"请选择推迟日期!"];
  1193. return;
  1194. }
  1195. NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];//实例化一个NSDateFormatter对象
  1196. [dateFormat setDateFormat:@"yyyy-MM-dd"];
  1197. NSDate *date = [dateFormat dateFromString:nextDeliveryDate];
  1198. NSDate *lastDay = [NSDate dateWithTimeInterval:-24*60*60 sinceDate:[self getCurrentTime]];
  1199. if([self compareOneDay:date withAnotherDay:lastDay] != 1){
  1200. [self showAlertViewText:@"推迟日期不能小于当前日期"];
  1201. return;
  1202. }
  1203. }
  1204. if(self.receiptAmount.text != nil||![self.receiptAmount.text isEqualToString:@""]){
  1205. RegularExpression *regularExpr = [[RegularExpression alloc]init];
  1206. bool receiptAmountCheck = [regularExpr AmountRegular:self.receiptAmount.text];
  1207. if(!receiptAmountCheck){
  1208. [self showAlertViewText:@"回执金额格式不正确"];
  1209. self.receiptAmount.text = @"";
  1210. return ;
  1211. }
  1212. }
  1213. if([_sReceiptAmount doubleValue] > [_sReceivables doubleValue] -[_completeReceivables doubleValue] ){
  1214. [self showAlertViewText:@"回执金额不能大于应收金额-已回执金额"];
  1215. return;
  1216. }
  1217. for (NewDeliveryRequirementModel* model in _dataList) {
  1218. NSString *receiptQuantity = model.receiptQuantity;
  1219. if(receiptQuantity != nil&&[receiptQuantity length] > 0){
  1220. RegularExpression *re = [[RegularExpression alloc]init];
  1221. bool isMatchDiscount = [re QuantityRegular:receiptQuantity];
  1222. if(isMatchDiscount == NO){
  1223. [self showAlertViewText:@"请输入正确的数"];
  1224. return ;
  1225. }
  1226. }
  1227. else{
  1228. [self showAlertViewText:@"请输入回执数量"];
  1229. return ;
  1230. }
  1231. }
  1232. if(_dataList != nil && _dataList.count > 0){
  1233. for (NewDeliveryRequirementModel *model in _dataList) {
  1234. if (model.receiptQuantity == nil
  1235. || [@"" isEqualToString:model.receiptQuantity]) {
  1236. [self showAlertViewText:@"请输入配送回执数量"];
  1237. return;
  1238. }
  1239. if (model.installReceiptQuantity == nil
  1240. || [@"" isEqualToString:model.installReceiptQuantity]) {
  1241. [self showAlertViewText:@"请输入安装回执数量"];
  1242. return;
  1243. }
  1244. //新增校验
  1245. if ([_sReceiptType doubleValue] == 1 && [model.receiptType doubleValue] == 1
  1246. && [model.installReceiptType doubleValue] == 1 && model. salesDetailType != 2) {
  1247. NSString *receiptQuantity = model.receiptQuantity;
  1248. NSString *installationQuantity = model.installReceiptQuantity;
  1249. if ([receiptQuantity doubleValue]
  1250. + [installationQuantity doubleValue] == 0) {
  1251. [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"配送回执明细类型为完成,最大允许回执数量为零,请核对数据"]];
  1252. return;
  1253. }
  1254. }
  1255. if (
  1256. // [_sReceiptType doubleValue] == 1
  1257. // &&
  1258. ( [model.receiptType doubleValue] == 1 || [model.receiptType doubleValue] == 2)
  1259. && [model.outQuantity doubleValue] < [model.deliveryQuantity doubleValue]
  1260. && model.salesDetailType != 2) {
  1261. double outQuantityValue = [model.outQuantity doubleValue] ;
  1262. if (outQuantityValue == 0) {
  1263. [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"出库数量不能为0"]];
  1264. return;
  1265. } else {
  1266. if (outQuantityValue < [model.deliveryQuantity doubleValue]) {
  1267. [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"出库数量小于送货数量不能保存,建议冲正对应送货单,按照出库数量重新开送货单"]];
  1268. return;
  1269. }
  1270. }
  1271. }
  1272. if ([_sReceiptType doubleValue] == 1 && [model.receiptType doubleValue] == 2) {
  1273. if ([model.deliveryQuantity doubleValue] < 0) {
  1274. [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"配送回执数量不能小于0"]];
  1275. return;
  1276. }
  1277. if ([model.sourceFrom intValue] != 4
  1278. && [model.receiptQuantity doubleValue] >= [model.deliveryQuantity doubleValue]) {
  1279. [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"回执数量不能大于或等于送货数量"]];
  1280. return;
  1281. }
  1282. if (model.maxReceiptQuantity<= [model.receiptQuantity doubleValue]) {
  1283. [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"配送明细类型为再送,送货量已超出最大允许配送回执量,请核对数据"]];
  1284. return;
  1285. }
  1286. }
  1287. if ([model.sourceFrom intValue] != 4 && [model.receiptQuantity doubleValue] > [model.outQuantity doubleValue]) {
  1288. [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"回执数量不能大于出库量"]];
  1289. return;
  1290. }
  1291. if ([_sReceiptType doubleValue] == 1 && [model.installReceiptType intValue] == 5) {
  1292. if ([model.maxInstallReceiptQuantity doubleValue] <= [model.installReceiptQuantity doubleValue]) {
  1293. [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"再安装时回执数量不能大于或等于(安装数量或出库量的最小值)"]];
  1294. return;
  1295. }
  1296. }
  1297. if (model.salesDetailType != 2 && [model.sourceFrom intValue]!= 4) {
  1298. if ([model.receiptQuantity doubleValue] > [model.outQuantity doubleValue]) {
  1299. [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"回执数量不能大于出库量"]];
  1300. return;
  1301. }
  1302. if ([model.deliveryQuantity doubleValue] > [model.outQuantity doubleValue]) {
  1303. if ([model.receiptQuantity doubleValue] > [model.outQuantity doubleValue]) {
  1304. [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"回执数量不能大于出库量"]];
  1305. return;
  1306. }
  1307. if ([model.receiptQuantity doubleValue] > [model.deliveryQuantity doubleValue]) {
  1308. [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"回执数量不能大于送货数量"]];
  1309. return;
  1310. }
  1311. }
  1312. }
  1313. if ([_sReceiptType doubleValue] == 1 && [model.installReceiptType intValue] == 5) {
  1314. if ([model.installReceiptQuantity doubleValue] < 0) {
  1315. [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"回执数量不能小于0"]];
  1316. return;
  1317. }
  1318. if ([model.installReceiptQuantity doubleValue] >= [model.maxInstallReceiptQuantity doubleValue]) {
  1319. [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"回执数量不能大于或等于最大允许回执数量"]];
  1320. return;
  1321. }
  1322. }
  1323. // if ([model.installReceiptQuantity doubleValue] > [model.installQuantity doubleValue] - model.finishQuantity) {
  1324. // [self showAlertViewText:[NSString stringWithFormat:@"%@%@",model.code,@"安装回执数量不能大于安装数量-已完成数量"]];
  1325. //
  1326. // return;
  1327. //
  1328. // }
  1329. }
  1330. }else{
  1331. [self showAlertViewText:@"回执明细不能为空!"];
  1332. return;
  1333. }
  1334. self.navigationItem.rightBarButtonItem.enabled=NO;
  1335. [self saveInfo];
  1336. }
  1337. /**
  1338. 保存图片函数
  1339. @return <#return value description#>
  1340. */
  1341. - (BOOL)savePicsManager{
  1342. self.mDownManager = [[ASIDownManager alloc] init];
  1343. self.mDownManager.delegate=self;
  1344. //////////////上传图片
  1345. NSString *urlStr = ServerURL;
  1346. NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  1347. [dict setObject:@"SaveImg" forKey:@"Action"];
  1348. [dict setObject:[NSString stringWithFormat:@"%@",kkAccountCode]forKey:@"AccountCode"];
  1349. [dict setObject:kkUserCode forKey:@"UserCode"];
  1350. [dict setObject:kkUserPwd forKey:@"UserPassword"];
  1351. [dict setObject:kkSessionKey forKey:@"SessionKey"];
  1352. [self.imagePaths removeAllObjects];
  1353. for (int i = 0; i < self.assets.count; i++) {
  1354. DKPhotoAssets *asset = self.assets[i];
  1355. DKCamera * c;
  1356. if ([asset isKindOfClass:[DKPhotoAssets class]]) {
  1357. c = [self saveImage:asset.originImage withName:nil];
  1358. }else if ([asset isKindOfClass:[NSString class]]){
  1359. }else if([asset isKindOfClass:[UIImage class]]){
  1360. }else if ([asset isKindOfClass:[DKCamera class]]){
  1361. c = (DKCamera *)asset;
  1362. c = [self saveImage:c.thumbImage withName:nil];
  1363. }
  1364. //延时
  1365. [NSThread sleepForTimeInterval:0.5];
  1366. NSString* retValue= [_mDownManager syncPostHttpRequestUrl:urlStr dic:dict path:c.imagePath filename:nil fileType:@"image/jpeg"];
  1367. if (retValue == nil || retValue.length == 0){
  1368. [self cancel];
  1369. [self showAlertViewText:@"上传图片失败"];
  1370. self.navigationItem.rightBarButtonItem.enabled = YES;
  1371. return NO;
  1372. }
  1373. NSDictionary *dicRetValue = [retValue JSONValue];
  1374. if (dicRetValue && [dicRetValue isKindOfClass:[NSDictionary class]]) {
  1375. int iStatus = [[dicRetValue objectForKey:@"Status"] intValue];
  1376. if (iStatus == 0) {
  1377. NSString * imgPath = [dicRetValue objectForKey:@"Result"];
  1378. [self.imagePaths addObject:imgPath];
  1379. }
  1380. else{
  1381. [self cancel];
  1382. return NO;
  1383. }
  1384. }
  1385. }
  1386. return YES;
  1387. }
  1388. /**
  1389. 保存图片到沙盒
  1390. @param currentImage <#currentImage description#>
  1391. @param imageName <#imageName description#>
  1392. @return <#return value description#>
  1393. */
  1394. - (DKCamera *) saveImage:(UIImage *)currentImage withName:(NSString *)imageName
  1395. {
  1396. if (!currentImage) {
  1397. return nil;
  1398. }
  1399. NSDateFormatter *formater = [[NSDateFormatter alloc] init];
  1400. formater.dateFormat = @"yyyyMMddHHmmss";
  1401. NSString *currentTimeStr = [[formater stringFromDate:[NSDate date]] stringByAppendingFormat:@"_%d_.jpg" ,arc4random_uniform(10000)];
  1402. NSData *imageData= [LeslieAsyncImageDownloader resetSizeOfImageData:currentImage maxSize:500];
  1403. // 获取沙盒目录
  1404. NSString *fullPath ;
  1405. if([imageName isEqualToString:@""] || imageName == nil){
  1406. fullPath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:currentTimeStr];
  1407. }
  1408. else{
  1409. fullPath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:imageName];
  1410. }
  1411. // 将图片写入文件
  1412. [imageData writeToFile:fullPath atomically:NO];
  1413. UIImage *savedImage = [[UIImage alloc] initWithContentsOfFile:fullPath];
  1414. DKCamera *camera = [[DKCamera alloc] init];
  1415. camera.imagePath = fullPath;
  1416. camera.thumbImage = savedImage;// [UIImage imageWithData:data];
  1417. return camera;
  1418. }
  1419. /**
  1420. 保存数据函数
  1421. */
  1422. - (void)saveInfo{
  1423. [self startLoading];
  1424. dispatch_async(dispatch_get_global_queue(0, 0), ^{
  1425. if(![self savePicsManager]){
  1426. return;
  1427. }
  1428. self.mDownManager = [[ASIDownManager alloc] init];
  1429. self.mDownManager.delegate = self;
  1430. self.mDownManager.onRequestSuccess = @selector(onSaveLoadFinish:);
  1431. self.mDownManager.onRequestFail = @selector(onLoadFail:);
  1432. NSString *urlStr = ServerURL;
  1433. NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  1434. [dict setObject:@"SaveDeliveryReceiptDataIphone" forKey:@"Action"];
  1435. [dict setObject:[NSString stringWithFormat:@"%@",kkAccountCode]forKey:@"AccountCode"];
  1436. [dict setObject:kkUserCode forKey:@"UserCode"];
  1437. [dict setObject:kkUserPwd forKey:@"UserPassword"];
  1438. [dict setObject:kkSessionKey forKey:@"SessionKey"];
  1439. [dict setObject:kkLicenseCode forKey:@"LicenseCode"];
  1440. [dict setObject:_deliveryId forKey:@"DeliveryID"];
  1441. if (_lblPosition.text == nil) {
  1442. [dict setObject:@"" forKey:@"Position"];
  1443. }else{
  1444. [dict setObject:_lblPosition.text forKey:@"Position"];
  1445. }
  1446. NSMutableDictionary *dicHead = [[NSMutableDictionary alloc] init];
  1447. NSMutableArray *arrHead = [[NSMutableArray alloc]init];
  1448. [dicHead setObject:_arrangementID forKeyedSubscript:@"ArrangementID"];
  1449. [dicHead setObject:_sReceiptType forKeyedSubscript:@"ReceiptType"];
  1450. [dicHead setObject:_sReceiptAmount forKeyedSubscript:@"ReceivableSum"];
  1451. [dicHead setObject:_deliveryReceivables forKeyedSubscript:@"DeliveryReceivable"];
  1452. [dicHead setObject:_installationReceivables forKeyedSubscript:@"InstallationReceivable"];
  1453. [dicHead setObject:_sNextDeliveryDate forKeyedSubscript:@"NextDeliveryDate"];
  1454. [dicHead setObject:_sReceivables forKeyedSubscript:@"Receivables"];
  1455. [dicHead setObject:_organizationID forKeyedSubscript:@"OrganizationID"];
  1456. [dicHead setObject:_organizationCode forKeyedSubscript:@"OrganizationCode"];
  1457. [dicHead setObject:_completeReceivables forKeyedSubscript:@"CompleteReceivables"];
  1458. [dicHead setObject:_fieldRemarks.text forKeyedSubscript:@"Remarks"];
  1459. [arrHead addObject:dicHead];
  1460. [dict setObject:[Util objectToJson:arrHead] forKey:@"ReceiptData"];
  1461. //详细列表
  1462. NSMutableDictionary *dicDetails;
  1463. NSMutableArray* arrDetails = [[NSMutableArray alloc]init];
  1464. for (NewDeliveryRequirementModel* me in _dataList) {
  1465. dicDetails = [[NSMutableDictionary alloc] init];
  1466. [dicDetails setObject:me.detailId forKeyedSubscript:@"DetailID"];
  1467. [dicDetails setObject:me.deliveryQuantity forKeyedSubscript:@"DeliveryQuantity"];
  1468. [dicDetails setObject:me.receiptQuantity forKeyedSubscript:@"DeliveryReceiptQuantity"];
  1469. [dicDetails setObject:me.installQuantity forKeyedSubscript:@"InstallationQuantity"];
  1470. [dicDetails setObject:me.installReceiptQuantity forKeyedSubscript:@"InstallationReceiptQuantity"];
  1471. [dicDetails setObject:me.receiptType forKeyedSubscript:@"DeliveryReceiptType"];
  1472. [dicDetails setObject:me.installReceiptType forKeyedSubscript:@"InstallationReceiptType"];
  1473. [dicDetails setObject:me.invoiceId forKeyedSubscript:@"InvoiceID"];
  1474. [dicDetails setObject:me.invoiceDetailId forKeyedSubscript:@"InvoiceDetailID"];
  1475. [dicDetails setObject:me.receiptRemarks forKeyedSubscript:@"ReceiptRemarks"];
  1476. [dicDetails setObject:_deliveryId forKeyedSubscript:@"DeliveryID"];
  1477. [arrDetails addObject:dicDetails];
  1478. }
  1479. [dict setObject:[Util objectToJson:arrDetails] forKey:@"ReceiptDetailData"];
  1480. //////付款方式
  1481. NSMutableDictionary *dicSettle = [[NSMutableDictionary alloc] init];
  1482. NSMutableArray* arrSettle = [[NSMutableArray alloc]init];
  1483. if ((_settlementType == nil || [_settlementType isEqual:@""] )&& [_sReceiptAmount doubleValue] <= 0) {
  1484. [dict setObject:@"" forKey:@"ReceiptEarnestData"];
  1485. }else{
  1486. [dicSettle setObject:self.settlementType forKeyedSubscript:@"SettlementType"];
  1487. [dicSettle setObject:_deliveryId forKeyedSubscript:@"SalesID"];
  1488. [dicSettle setObject:_receiptAmount.text forKeyedSubscript:@"ReceivableSum"];
  1489. [dicSettle setObject:self.remarks forKeyedSubscript:@"Remarks"];
  1490. [dicSettle setObject:self.earnestFee forKeyedSubscript:@"EarnestFee"];
  1491. [arrSettle addObject:dicSettle];
  1492. [dict setObject:[Util objectToJson:arrSettle] forKey:@"ReceiptEarnestData"];
  1493. }
  1494. /////////图片上传返回的地址
  1495. if (self.imagePaths && self.imagePaths.count > 0) {
  1496. [dict setObject:[self.imagePaths componentsJoinedByString:@"," ] forKey:@"ImagePath"];
  1497. }
  1498. [_mDownManager postHttpRequest:urlStr dic:dict path:nil fileName:nil];
  1499. });
  1500. }
  1501. /**
  1502. 清空画面函数
  1503. */
  1504. - (void)clearData{
  1505. self.receiptCode.text = @"";
  1506. self.sReceiptCode = @"";
  1507. self.customerName.text = @"";
  1508. self.sCustomerName = @"";
  1509. self.receivables.text = @"";
  1510. self.sReceivables = @"";
  1511. [self.receiptType setTitle:@"请选择回执类型" forState:UIControlStateNormal];
  1512. self.sReceiptType = @"";
  1513. [self.receivablesType setTitle:@"请选择收款方式" forState:UIControlStateNormal];
  1514. _settlementTypeName = @"";
  1515. _settlementType = @"";
  1516. _existsHandlingFee = @"";
  1517. _earnestFee = @"";
  1518. _remarks = @"";
  1519. self.receiptAmount.text = @"";
  1520. self.sReceiptAmount = @"";
  1521. self.receiptCode.text = @"";
  1522. self.sReceiptCode = @"";
  1523. [self.nextDeliveryDate setTitle:@"请选择推迟日期" forState:UIControlStateNormal];
  1524. self.sNextDeliveryDate = @"";
  1525. _lblPosition.text = @"";
  1526. _positionImage.hidden = YES;
  1527. _vImage.hidden = YES;
  1528. _positionHeight = 0;
  1529. [_receiptType setEnabled:NO];
  1530. [_receivablesType setEnabled:NO];
  1531. [_receiptAmount setEnabled:NO];
  1532. [_nextDeliveryDate setEnabled:NO];
  1533. [self.imagePaths removeAllObjects];
  1534. [self.dataList removeAllObjects];
  1535. [self.assets removeAllObjects];
  1536. [self.myTableView reloadData];
  1537. [self.collectionView reloadData];
  1538. [self reloadMyView];
  1539. }
  1540. /**
  1541. 出示推迟日期函数
  1542. @return <#return value description#>
  1543. */
  1544. - (void)showNextDeliveryDate{
  1545. [self.view endEditing:YES];
  1546. __weak typeof(self)weakself = self;
  1547. _dealDatePicker = [BRDatePickerView PickerAlertWithTitle:@""];
  1548. [_dealDatePicker configureSelectionBlock:^(NSString *date){
  1549. _sNextDeliveryDate = date;
  1550. } andCompletionBlock:^(void){
  1551. [weakself.nextDeliveryDate setTitle:_sNextDeliveryDate forState:UIControlStateNormal];
  1552. } andCancelBlock:^(void){
  1553. _sNextDeliveryDate = weakself.nextDeliveryDate.titleLabel.text;
  1554. if([_sNextDeliveryDate isEqualToString:@"请选择推迟日期"]){
  1555. _sNextDeliveryDate = @"";
  1556. }
  1557. }];
  1558. [_dealDatePicker show];
  1559. }
  1560. /**
  1561. 加载单据数据函数
  1562. */
  1563. - (void)loadDataSource{
  1564. [self startLoading];
  1565. NSString *urlStr = ServerURL;
  1566. NSMutableDictionary *dict = [NSMutableDictionary new];
  1567. [dict setObject:@"GetDeliveryRequirementForNewReceiptIphone" forKey:@"Action"];
  1568. [dict setObject:kkAccountCode forKey:@"AccountCode"];
  1569. [dict setObject:kkUserCode forKey:@"UserCode"];
  1570. [dict setObject:kkUserPwd forKey:@"UserPassword"];
  1571. [dict setObject:kkSessionKey forKey:@"SessionKey"];
  1572. [dict setObject:_deliveryId forKey:@"DeliveryID"];
  1573. [dict setObject: _arrangementID forKey:@"ArrangementID"];
  1574. self.mDownManager = [[ASIDownManager alloc] init];
  1575. self.mDownManager.delegate=self;
  1576. self.mDownManager.onRequestSuccess=@selector(onLoadFinish:);
  1577. self.mDownManager.onRequestFail=@selector(onLoadFail:);
  1578. [_mDownManager postHttpRequest:urlStr dic:dict path:nil fileName:nil];}
  1579. /**
  1580. 取消进度条
  1581. */
  1582. - (void)cancel {
  1583. [self stopLoading];
  1584. }
  1585. /**
  1586. 返回函数
  1587. */
  1588. - (void)goBack{
  1589. [self.navigationController popViewControllerAnimated:YES];
  1590. if([self.refreshDelegate respondsToSelector:@selector(refreshFollowUpData)]){
  1591. [self.refreshDelegate refreshFollowUpData];
  1592. }
  1593. }
  1594. /**
  1595. 拍照函数
  1596. */
  1597. - (void)selectCamera{
  1598. DKCameraViewController *cameraVc = [[DKCameraViewController alloc] init];
  1599. __weak typeof(self) weakSelf = self;
  1600. // 多选相册+相机多拍 回调
  1601. [cameraVc startCameraOrPhotoFileWithViewController:self complate:^(NSArray *object) {
  1602. // 选择完照片、拍照完回调
  1603. [object enumerateObjectsUsingBlock:^(id asset, NSUInteger idx, BOOL *stop) {
  1604. if(weakSelf.assets.count<9){
  1605. if ([asset isKindOfClass:[DKCamera class]]) {
  1606. [weakSelf.assets addObject:asset];
  1607. }else{
  1608. [weakSelf.assets addObject:asset];
  1609. }
  1610. }else{
  1611. [self showAlertViewText:@"最多只能选择9张图片"];
  1612. }
  1613. }];
  1614. [weakSelf.collectionView reloadData];
  1615. [self reloadMyView];
  1616. }];
  1617. }
  1618. /**
  1619. 选择相册函数
  1620. */
  1621. - (void)selectPhotos {
  1622. // 创建控制器
  1623. DKPhotoPickerViewController *pickerVc = [[DKPhotoPickerViewController alloc] init];
  1624. // 默认显示相册里面的内容SavePhotos
  1625. pickerVc.status = PickerViewShowStatusCameraRoll;
  1626. pickerVc.selectPickers = self.assets;
  1627. // 最多能选9张图片
  1628. pickerVc.minCount = 9;
  1629. pickerVc.cameraCount = [self cameraCount];
  1630. pickerVc.delegate = self;
  1631. [pickerVc show];
  1632. }
  1633. /**
  1634. 出示地图函数
  1635. */
  1636. - (void)newMap{
  1637. self.hidesBottomBarWhenPushed=YES;
  1638. MapViewController *mc = [MapViewController new];
  1639. mc.pDelegate=self;
  1640. [self.navigationController pushViewController:mc animated:YES];
  1641. }
  1642. /**
  1643. 获取table view的高度
  1644. @param soundArray <#soundArray description#>
  1645. @return <#return value description#>
  1646. */
  1647. - (CGFloat)getDataViewHeight:(NSArray *)soundArray {
  1648. // 上下间隔已经在frame上做了
  1649. NSInteger row = soundArray.count;
  1650. return (row *320);
  1651. }
  1652. #pragma mark -得到当前时间
  1653. /**
  1654. 获得当前日期
  1655. @return <#return value description#>
  1656. */
  1657. - (NSDate *)getCurrentTime{
  1658. NSDateFormatter *formatter=[[NSDateFormatter alloc]init];
  1659. [formatter setDateFormat:@"yyyy-MM-dd"];
  1660. NSString *dateTime=[formatter stringFromDate:[NSDate date]];
  1661. NSDate *date = [formatter dateFromString:dateTime];
  1662. return date;
  1663. }
  1664. /**
  1665. 比较时间
  1666. @param oneDay <#oneDay description#>
  1667. @param anotherDay <#anotherDay description#>
  1668. @return <#return value description#>
  1669. */
  1670. - (int)compareOneDay:(NSDate *)oneDay withAnotherDay:(NSDate *)anotherDay
  1671. {
  1672. NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  1673. [dateFormatter setDateFormat:@"dd-MM-yyyy-HHmmss"];
  1674. NSString *oneDayStr = [dateFormatter stringFromDate:oneDay];
  1675. NSString *anotherDayStr = [dateFormatter stringFromDate:anotherDay];
  1676. NSDate *dateA = [dateFormatter dateFromString:oneDayStr];
  1677. NSDate *dateB = [dateFormatter dateFromString:anotherDayStr];
  1678. NSComparisonResult result = [dateA compare:dateB];
  1679. NSLog(@"date1 : %@, date2 : %@", oneDay, anotherDay);
  1680. if (result == NSOrderedDescending) {
  1681. //NSLog(@"Date1 is in the future");
  1682. return 1;
  1683. }
  1684. else if (result == NSOrderedAscending){
  1685. //NSLog(@"Date1 is in the past");
  1686. return -1;
  1687. }
  1688. //NSLog(@"Both dates are the same");
  1689. return 0;
  1690. }
  1691. @end