NewDeliveryRequirementCell.m 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501
  1. //
  2. // NewDeliveryRequirementCell.m
  3. // IBOSSHSH
  4. //
  5. // Created by ssl on 2018/1/15.
  6. // Copyright © 2018年 elongtian. All rights reserved.
  7. //
  8. #import "NewDeliveryRequirementCell.h"
  9. #import "OrderQuantity.h"
  10. #define kTextFont [UIFont systemFontOfSize:LabelAndTextFontOfSize]
  11. @implementation NewDeliveryRequirementCell
  12. #pragma mark - 公共函数
  13. /**
  14. 初始化单元格
  15. @param style <#style description#>
  16. @param reuseIdentifier <#reuseIdentifier description#>
  17. @return <#return value description#>
  18. */
  19. - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
  20. self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
  21. if (self) {
  22. }
  23. return self;
  24. }
  25. /**
  26. 单元格选中事件
  27. @param selected <#selected description#>
  28. @param animated <#animated description#>
  29. */
  30. - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
  31. }
  32. #pragma mark - 委托函数
  33. /**
  34. 限制用户输入小数点后位数的方法
  35. @param textField <#textField description#>
  36. @param range <#range description#>
  37. @param string <#string description#>
  38. @return <#return value description#>
  39. */
  40. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
  41. if([textField isEqual:self.remark]){
  42. return YES;
  43. }
  44. if ([textField.text rangeOfString:@"."].location == NSNotFound) {
  45. _isHaveDian = NO;
  46. }
  47. if ([string length] > 0) {
  48. unichar single = [string characterAtIndex:0];//当前输入的字符
  49. if ((single >= '0' && single <= '9') || single == '.') {//数据格式正确
  50. //首字母不能为0和小数点
  51. if([textField.text length] == 0){
  52. if(single == '.') {
  53. [self showAlertViewText:@"第一个数字不能为小数点"];
  54. [textField.text stringByReplacingCharactersInRange:range withString:@""];
  55. return NO;
  56. }
  57. }
  58. if([textField.text length] == 1 && [[textField.text substringToIndex:1] isEqualToString: @"0"]){
  59. if(!(single == '.')) {
  60. [textField.text stringByReplacingCharactersInRange:range withString:@""];
  61. return NO;
  62. }
  63. }
  64. //输入的字符是否是小数点
  65. if (single == '.') {
  66. if(!_isHaveDian)//text中还没有小数点
  67. {
  68. _isHaveDian = YES;
  69. return YES;
  70. }else{
  71. [self showAlertViewText:@"您已经输入过小数点了"];
  72. [textField.text stringByReplacingCharactersInRange:range withString:@""];
  73. return NO;
  74. }
  75. }else{
  76. if (_isHaveDian) {//存在小数点
  77. //判断小数点的位数
  78. NSRange ran = [textField.text rangeOfString:@"."];
  79. if (range.location - ran.location <= 6) {
  80. return YES;
  81. }
  82. else{
  83. return NO;
  84. }
  85. }else{
  86. return YES;
  87. }
  88. }
  89. }else{//输入的数据格式不正确
  90. [self showAlertViewText:@"您输入的格式不正确"];
  91. [textField.text stringByReplacingCharactersInRange:range withString:@""];
  92. return NO;
  93. }
  94. }
  95. else
  96. {
  97. return YES;
  98. }
  99. }
  100. /**
  101. 文本字段开始编辑回调
  102. @param textField <#textField description#>
  103. */
  104. - (void)textFieldDidBeginEditing:(UITextField *)textField{
  105. NSLog(@"textFieldDidBeginEditing");
  106. if([textField isEqual:self.remark]||[textField isEqual:self.receiptQuantity]||[textField isEqual:self.installReceiptQuantity]){
  107. if([self.nddelegate respondsToSelector:@selector(keyboardWillShow:)])
  108. {
  109. [self.nddelegate keyboardWillShow:self];
  110. }
  111. }
  112. }
  113. /**
  114. 文本字段结束编辑回调
  115. @param textField <#textField description#>
  116. */
  117. - (void)textFieldDidEndEditing:(UITextField *)textField{
  118. if([textField isEqual:self.remark]){
  119. if([self.nddelegate respondsToSelector:@selector(keyboardWillHide:)])
  120. {
  121. [self.nddelegate keyboardWillHide:self];
  122. }
  123. }else
  124. if([textField isEqual:self.receiptQuantity]){
  125. OrderQuantity *quantity = [OrderQuantity new];
  126. NSInteger decimalPlaces= self.model.decimalPlaces;
  127. NSString *receiptQuantity = [quantity calculateReceiptQuantity:[self.model.circulateType integerValue] decimalPlaces:[NSString stringWithFormat:@"%ld",(long)decimalPlaces] quantity:self.receiptQuantity.text acreage:[self.model.acreage doubleValue]];
  128. self.receiptQuantity.text = receiptQuantity;
  129. self.model.receiptQuantity = receiptQuantity;
  130. [self.nddelegate keyboardWillHide:self];
  131. }
  132. else if([textField isEqual:self.installReceiptQuantity]){
  133. OrderQuantity *quantity = [OrderQuantity new];
  134. NSInteger decimalPlaces= self.model.decimalPlaces;
  135. NSString *receiptQuantity = [quantity calculateReceiptQuantity:[self.model.circulateType integerValue] decimalPlaces:[NSString stringWithFormat:@"%ld",(long)decimalPlaces] quantity:self.installReceiptQuantity.text acreage:[self.model.acreage doubleValue]];
  136. self.installReceiptQuantity.text = receiptQuantity;
  137. self.model.installReceiptQuantity = receiptQuantity;
  138. [self.nddelegate keyboardWillHide:self];
  139. }
  140. if([self.nddelegate respondsToSelector:@selector(endEdit:)])
  141. {
  142. [self.nddelegate endEdit:self];
  143. }
  144. return ;
  145. }
  146. #pragma mark - 私有函数
  147. /**
  148. 设置回执类型
  149. @param receiptType <#receiptType description#>
  150. */
  151. - (void)setReceiptType:(NSString *)receiptType{
  152. _receiptType=receiptType;
  153. }
  154. /**
  155. 设置配送回执单元格UI和数据
  156. @param model <#model description#>
  157. @param receiptType <#receiptType description#>
  158. */
  159. - (void)parseInfoModel:(NewDeliveryRequirementModel *)model receiptType:(NSString*)receiptType{
  160. if(model != nil){
  161. UILabel *lblCode = [UILabel new];
  162. lblCode.frame=CGRectMake(20, 8, 80,21);
  163. lblCode.text = @"商品编码:";
  164. lblCode.font=kTextFont;
  165. [self.contentView addSubview:lblCode];
  166. self.code = [UILabel new];
  167. self.code.font=kTextFont;
  168. self.code.frame=CGRectMake(95, 8,SCREENWIDTH-CGRectGetMaxX(lblCode.frame),21);
  169. [self addSubview:self.code];
  170. UILabel *lblDeliveryQuantity = [UILabel new];
  171. lblDeliveryQuantity.frame=CGRectMake(20, CGRectGetMaxY(lblCode.frame)+10,80, 21);
  172. lblDeliveryQuantity.font=kTextFont;
  173. lblDeliveryQuantity.text = @"送货数量:";
  174. [self addSubview:lblDeliveryQuantity];
  175. self.deliveryQuantity = [UILabel new];
  176. self.deliveryQuantity.font=kTextFont;
  177. self.deliveryQuantity.frame=CGRectMake(95, CGRectGetMaxY(lblCode.frame)+10, 200, 21);
  178. [self.contentView addSubview:self.deliveryQuantity];
  179. UILabel *lblOutQuantity = [UILabel new];
  180. lblOutQuantity.text = @"出库数量:";
  181. lblOutQuantity.font=kTextFont;
  182. lblOutQuantity.frame=CGRectMake(Screen_Width/2, CGRectGetMaxY(lblCode.frame)+10, 75, 21);
  183. [self.contentView addSubview:lblOutQuantity];
  184. self.outQuantity = [UILabel new];
  185. self.outQuantity.font=kTextFont;
  186. self.outQuantity.frame=CGRectMake(CGRectGetMaxX(lblOutQuantity.frame), CGRectGetMaxY(lblCode.frame)+10, 200, 21);
  187. [self.contentView addSubview:self.outQuantity];
  188. UILabel *lbInstallQuantity = [UILabel new];
  189. lbInstallQuantity.frame=CGRectMake(20,CGRectGetMaxY(lblOutQuantity.frame)+10,SCREENWIDTH-20,21);
  190. lbInstallQuantity.text = [NSString stringWithFormat:@"安装数量: %@",model.installQuantity];
  191. lbInstallQuantity.font=kTextFont;
  192. [self.contentView addSubview:lbInstallQuantity];
  193. UILabel *lbCompleteReceiptQuantity = [UILabel new];
  194. lbCompleteReceiptQuantity.frame=CGRectMake(20,CGRectGetMaxY(lbInstallQuantity.frame)+10,SCREENWIDTH-20,21);
  195. NSString *str = [NSString stringWithFormat:@"已配送回执数量: %@%d%@",@"%.",model.decimalPlaces,@"f"];
  196. lbCompleteReceiptQuantity.text = [NSString stringWithFormat:str,model.completeReceiptQuantity];
  197. lbCompleteReceiptQuantity.font=kTextFont;
  198. [self.contentView addSubview:lbCompleteReceiptQuantity];
  199. UILabel *lbCompleteQuantity = [UILabel new];
  200. lbCompleteQuantity.frame=CGRectMake(20,CGRectGetMaxY(lbCompleteReceiptQuantity.frame)+10,SCREENWIDTH-20,21);
  201. NSString *str1 = [NSString stringWithFormat:@"已安装回执数量: %@%d%@",@"%.",model.decimalPlaces,@"f"];
  202. lbCompleteQuantity.text = [NSString stringWithFormat:str1,model.finishQuantity];
  203. lbCompleteQuantity.font=kTextFont;
  204. [self.contentView addSubview:lbCompleteQuantity];
  205. UILabel *lblReceiptType = [UILabel new];
  206. lblReceiptType.frame=CGRectMake(20,CGRectGetMaxY(lbCompleteQuantity.frame)+10, 100,21);
  207. lblReceiptType.text = @"配送回执类型:";
  208. lblReceiptType.font=kTextFont;
  209. [self.contentView addSubview:lblReceiptType];
  210. self.btstate = [UIButton buttonWithType:UIButtonTypeCustom];
  211. self.btstate.frame=CGRectMake(CGRectGetMaxX(lblReceiptType.frame),CGRectGetMaxY(lbCompleteQuantity.frame)+10,80, 21);
  212. self.btstate.titleLabel.font=kTextFont;
  213. self.btstate.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
  214. [self.btstate setTitle:@"完成" forState:UIControlStateNormal];
  215. [self.btstate setTitleColor:[UIColor blackColor]forState:UIControlStateNormal];
  216. [self.contentView addSubview:self.btstate];
  217. UILabel *lblReceiptQuantity = [UILabel new];
  218. lblReceiptQuantity.frame=CGRectMake(20,CGRectGetMaxY(lblReceiptType.frame)+10,100,21);
  219. lblReceiptQuantity.text = @"配送回执数量:";
  220. lblReceiptQuantity.font=kTextFont;
  221. [self.contentView addSubview:lblReceiptQuantity];
  222. self.receiptQuantity = [[UITextField alloc]initWithFrame:CGRectMake(CGRectGetMaxX(lblReceiptQuantity.frame),CGRectGetMaxY(lblReceiptType.frame)+10,200,21)];
  223. self.receiptQuantity.font=kTextFont;
  224. [self.contentView addSubview:self.receiptQuantity];
  225. UILabel *lblInstallReceiptType = [UILabel new];
  226. lblInstallReceiptType.frame=CGRectMake(20,CGRectGetMaxY(lblReceiptQuantity.frame)+10, 100,21);
  227. lblInstallReceiptType.text = @"安装回执类型:";
  228. lblInstallReceiptType.font=kTextFont;
  229. [self.contentView addSubview:lblInstallReceiptType];
  230. self.btnInstallState = [UIButton buttonWithType:UIButtonTypeCustom];
  231. self.btnInstallState.frame=CGRectMake(CGRectGetMaxX(lblInstallReceiptType.frame),CGRectGetMaxY(lblReceiptQuantity.frame)+10,80, 21);
  232. self.btnInstallState.titleLabel.font=kTextFont;
  233. self.btnInstallState.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
  234. [self.btnInstallState setTitle:@"完成" forState:UIControlStateNormal];
  235. [self.btnInstallState setTitleColor:[UIColor blackColor]forState:UIControlStateNormal];
  236. [self.contentView addSubview:self.btnInstallState];
  237. UILabel *lblInstallQuantity = [UILabel new];
  238. lblInstallQuantity.frame=CGRectMake(20,CGRectGetMaxY(lblInstallReceiptType.frame)+10,100,21);
  239. lblInstallQuantity.text = @"安装回执数量:";
  240. lblInstallQuantity.font=kTextFont;
  241. [self.contentView addSubview:lblInstallQuantity];
  242. self.installReceiptQuantity = [[UITextField alloc]initWithFrame:CGRectMake(CGRectGetMaxX(lblInstallQuantity.frame),CGRectGetMaxY(lblInstallReceiptType.frame)+10,200,21)];
  243. self.installReceiptQuantity.font=kTextFont;
  244. self.installReceiptQuantity.placeholder = @"请输入安装回执数量";
  245. [self.contentView addSubview:self.installReceiptQuantity];
  246. UILabel *lblRemarks = [UILabel new];
  247. lblRemarks.frame=CGRectMake(20,CGRectGetMaxY(lblInstallQuantity.frame)+10,80,21);
  248. lblRemarks.text = @"回执备注:";
  249. lblRemarks.font=kTextFont;
  250. [self.contentView addSubview:lblRemarks];
  251. self.remark = [[UITextField alloc]initWithFrame:CGRectMake(95,CGRectGetMaxY(lblInstallQuantity.frame)+10,200,21)];
  252. self.remark.font=kTextFont;
  253. [self.contentView addSubview:self.remark];
  254. UIView *separatorView = [UIView new];
  255. separatorView.frame=CGRectMake(0,CGRectGetMaxY(lblRemarks.frame)+10, Screen_Width, 3);
  256. separatorView.backgroundColor=LineBackgroundColor;
  257. [self.contentView addSubview:separatorView];
  258. if([receiptType intValue] == 1){
  259. [self.btstate setEnabled:YES];
  260. [self.btnInstallState setEnabled:YES];
  261. }
  262. else if([receiptType intValue] == 2){
  263. [self.btstate setEnabled:NO];
  264. [self.btnInstallState setEnabled:NO];
  265. }
  266. self.sCode=model.code;
  267. self.sDeliveryQuantity=model.deliveryQuantity;
  268. self.sReceiptType=model.receiptType;
  269. self.sReceiptRemarks=model.receiptRemarks;
  270. self.sOutQuantity=model.outQuantity;
  271. self.sDetailID=model.detailId;
  272. self.sInvoiceID=model.invoiceId;
  273. self.sInvoiceDetailID=model.invoiceDetailId;
  274. self.code.text=_sCode;
  275. self.deliveryQuantity.text=_sDeliveryQuantity;
  276. self.outQuantity.text=_sOutQuantity;
  277. self.remark.text=_sReceiptRemarks;
  278. self.remark.placeholder = @"请输入回执备注";
  279. self.remark.delegate=self;
  280. self.remark.tag=1001;
  281. self.receiptQuantity.delegate=self;
  282. self.receiptQuantity.placeholder = @"请输入回执数量";
  283. self.receiptQuantity.keyboardType=UIKeyboardTypeDecimalPad;
  284. self.receiptQuantity.tag=1000;
  285. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onFocusPeopleEditingChanged:) name:@"UITextFieldTextDidChangeNotification" object: self.receiptQuantity];
  286. [self.receiptQuantity addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
  287. [self.remark addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
  288. [self.btstate addTarget:self action:@selector(btnCilck) forControlEvents:UIControlEventTouchUpInside];
  289. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onFocusPeopleEditingChanged:) name:@"UITextFieldTextDidChangeNotification" object: self.installReceiptQuantity];
  290. self.installReceiptQuantity.delegate=self;
  291. self.installReceiptQuantity.tag = 2000;
  292. self.installReceiptQuantity.keyboardType=UIKeyboardTypeDecimalPad;
  293. [self.installReceiptQuantity addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
  294. _model=model;
  295. switch ([_sReceiptType intValue]) {
  296. case 1:
  297. [self.btstate setTitle:@"完成" forState:UIControlStateNormal];
  298. [self.receiptQuantity setEnabled:NO];
  299. if([model.circulateType intValue] == 1){
  300. self.receiptQuantity.text=[NSString stringWithFormat:@"%.0f",model.maxReceiptQuantity];
  301. model.receiptQuantity = [NSString stringWithFormat:@"%.0f",model.maxReceiptQuantity];
  302. }else{
  303. self.receiptQuantity.text=[NSString stringWithFormat:@"%.6f",model.maxReceiptQuantity];
  304. model.receiptQuantity = [NSString stringWithFormat:@"%.6f",model.maxReceiptQuantity];
  305. }
  306. if([receiptType intValue] == 2){
  307. self.receiptQuantity.text=@"0";
  308. model.receiptQuantity = @"0";
  309. }
  310. break;
  311. case 2:
  312. [self.btstate setTitle:@"再送" forState:UIControlStateNormal];
  313. [self.receiptQuantity setEnabled:YES];
  314. self.receiptQuantity.text = model.receiptQuantity;
  315. break;
  316. case 3:
  317. [self.btstate setTitle:@"换货" forState:UIControlStateNormal];
  318. [self.receiptQuantity setEnabled:NO];
  319. self.receiptQuantity.text = @"0";
  320. _model.receiptQuantity = @"0";
  321. break;
  322. case 4:
  323. [self.btstate setTitle:@"退货" forState:UIControlStateNormal];
  324. [self.receiptQuantity setEnabled:NO];
  325. self.receiptQuantity.text = @"0";
  326. _model.receiptQuantity = @"0";
  327. break;
  328. default:
  329. break;
  330. }
  331. if ([model.installReceiptType isEqualToString:@"5"]) {
  332. [self.btnInstallState setTitle:@"再安装" forState:UIControlStateNormal];
  333. self.installReceiptQuantity.enabled= YES;
  334. self.installReceiptQuantity.text = model.installReceiptQuantity;
  335. }
  336. if([model.installReceiptType isEqualToString:@"1"]){
  337. [self.btnInstallState setTitle:@"完成" forState:UIControlStateNormal];
  338. self.installReceiptQuantity.enabled= NO;
  339. self.installReceiptQuantity.text = model.installReceiptQuantity;
  340. model.installReceiptQuantity = model.installReceiptQuantity;
  341. }
  342. [self.btnInstallState addTarget:self action:@selector(btnInstallStateCilck) forControlEvents:UIControlEventTouchUpInside];
  343. }
  344. }
  345. /**
  346. 安装状态
  347. */
  348. -(void) btnInstallStateCilck{
  349. if ([self.delegate respondsToSelector:@selector(setInstallReceiptType:)]) {
  350. [self.delegate setInstallReceiptType:_myIndexPath];
  351. }
  352. }
  353. - (void)setback:(int)mytage:(NSString *)mystateid{
  354. [self.btstate setTitle:@"退货" forState:UIControlStateNormal];
  355. self.outQuantity.text = @"5";
  356. _model.outQuantity = @"5";
  357. }
  358. /**
  359. 文本框长度限制
  360. @param sender <#sender description#>
  361. */
  362. - (void)onFocusPeopleEditingChanged:(NSNotification *)sender
  363. {
  364. UITextField *textField = (UITextField *)sender.object;
  365. NSString *toBeString = textField.text;
  366. NSString *lang = [[UIApplication sharedApplication]textInputMode].primaryLanguage;
  367. int kMaxLength=0;
  368. if([textField isEqual:self.remark]){
  369. return;
  370. }
  371. if([textField isEqual:self.receiptQuantity]||[textField isEqual:self.installReceiptQuantity]){
  372. kMaxLength=17;
  373. if (toBeString != nil && toBeString.length>0 && [toBeString floatValue]-MAXIMUM_QUANTITY>0.0000000001f) {
  374. textField.text = MAX_COUNT ;
  375. toBeString = MAX_COUNT;
  376. }
  377. }
  378. if ([lang isEqualToString:@"zh-Hans"]) {
  379. UITextRange *selectedRange = [textField markedTextRange];
  380. UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
  381. if (!position) {
  382. if (toBeString.length > kMaxLength) {
  383. textField.text = [toBeString substringToIndex:kMaxLength];
  384. }
  385. }
  386. }else{
  387. if (toBeString.length > kMaxLength) {
  388. textField.text = [toBeString substringToIndex:kMaxLength];
  389. }
  390. }
  391. }
  392. /**
  393. 出示警告对话框
  394. @param text <#text description#>
  395. */
  396. - (void)showAlertViewText:(NSString *)text
  397. {
  398. UIAlertView*alert = [[UIAlertView alloc]initWithTitle:@"提示"
  399. message:text
  400. delegate:nil
  401. cancelButtonTitle:@"确定"
  402. otherButtonTitles:nil];
  403. [alert show];
  404. }
  405. /**
  406. 回执类型点击事件
  407. */
  408. - (void)btnCilck{
  409. if ([self.delegate respondsToSelector:@selector(setReceiptType:)]) {
  410. [self.delegate setReceiptType:_myIndexPath];
  411. }
  412. }
  413. /**
  414. 文本字段变化事件
  415. @param sender <#sender description#>
  416. */
  417. - (void)textFieldDidChange:(UITextField*) sender{
  418. UITextField* txt=sender;
  419. if([self.nddelegate respondsToSelector:@selector(textValueChange:txtField:qualityField:remarkField:)])
  420. {
  421. [self.nddelegate textValueChange:self txtField:txt qualityField:nil remarkField:nil];
  422. }
  423. }
  424. @end