NewDeliveryListTableViewCell.m 16 KB

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