NewRepairReceiptVC.m 60 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689
  1. //
  2. // NewRepairReceiptVC.m
  3. // IBOSS
  4. //
  5. // Created by apple on 16/1/8.
  6. // Copyright © 2017年 沈阳东科云信软件有限公司. All rights reserved.
  7. //
  8. // 功能描述:新增维修回执控制器
  9. #import "NewRepairReceiptVC.h"
  10. #import "StatusInfo.h"
  11. #import "StatusInfoTextVC.h"
  12. #import "NIDropDown.h"
  13. #import "NewRepairItemModel.h"
  14. #import "NewRepairDetailListsCell.h"
  15. #import "DKUICollectionViewCell.h"
  16. #import "DKPhotoPickerViewController.h"
  17. #import "DateFormat.h"
  18. #import "RegularExpression.h"
  19. #import "Util.h"
  20. #import "DKCamera.h"
  21. #import "DKCameraViewController.h"
  22. #import "LeslieAsyncImageDownloader.h"
  23. #import "CustomButton.h"
  24. #define kTextFont [UIFont systemFontOfSize:LabelAndTextFontOfSize]
  25. @interface NewRepairReceiptVC ()<StatusInfoTextDelegate,UITextFieldDelegate,NewRepairDetailListsCellDelegate,SettlementTypeProtocol,UITableViewDataSource,UITableViewDelegate,UICollectionViewDataSource,UICollectionViewDelegate,DKPhotoPickerBrowserViewControllerDataSource,DKPhotoPickerViewControllerDelegate, DKPhotoPickerBrowserViewControllerDelegate>
  26. {
  27. //回执类型
  28. NSMutableArray* _arrayStatus;
  29. //是否有小数点
  30. BOOL _isHaveDian;
  31. //content view
  32. UIView *_contentView;
  33. //scroll view
  34. UIScrollView *_scroll;
  35. //collection view视图
  36. UIView *_vCollectionView;
  37. //拍照和相册视图
  38. UIView *_vImage;
  39. //地图位置的高度
  40. NSInteger _positionHeight;
  41. //地图定位视图
  42. UIView *_positionImage;
  43. //地图定位文本
  44. UILabel *_lblPosition;
  45. //地图定位图片标识
  46. UIImageView *_ivPosition;
  47. //是否弹出键盘
  48. BOOL _keyboardShow;
  49. }
  50. /**
  51. 下载管理器
  52. */
  53. @property (nonatomic,strong) ASIDownManager *mDownManager;
  54. /**
  55. 保存管理器
  56. */
  57. @property (nonatomic,strong) ASIDownManager *mSaveManager;
  58. @end
  59. @implementation NewRepairReceiptVC
  60. @synthesize vCustomTableView;
  61. #pragma 公有函数
  62. /**
  63. 视图加载后函数
  64. */
  65. - (void)viewDidLoad {
  66. [super viewDidLoad];
  67. [self initUI];
  68. [self initStatus];
  69. self.model = [[ParseNewRepairItem alloc]init];
  70. self.model.detailsArr = [[NSMutableArray alloc]init];
  71. self.mSaveManager = [[ASIDownManager alloc] init];
  72. self.mSaveManager.delegate=self;
  73. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onFocusPeopleEditingChanged:) name:@"UITextFieldTextDidChangeNotification" object:self.receiptAmount ];
  74. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onFocusPeopleEditingChanged:) name:@"UITextFieldTextDidChangeNotification" object:self.code ];
  75. self.navigationItem.title = @"新增维修回执";
  76. //返回
  77. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  78. [button setImage:[UIImage imageNamed:@"icon_back"] forState:UIControlStateNormal];
  79. [button addTarget:self action:@selector(goBack)
  80. forControlEvents:UIControlEventTouchUpInside];
  81. button.frame = CGRectMake(0, 0,45,22);
  82. UIBarButtonItem *menuButton = [[UIBarButtonItem alloc] initWithCustomView:button];
  83. self.navigationItem.leftBarButtonItem = menuButton;
  84. if(self.sCode != nil&&self.sCode.length>0){
  85. self.code.enabled=NO;
  86. [self reloadDataWithOnlyCode:self.sCode];
  87. }
  88. }
  89. /**
  90. 安全区视图发生变化
  91. */
  92. -(void)viewSafeAreaInsetsDidChange{
  93. [self.view setBackgroundColor:[UIColor whiteColor]];
  94. UIImage *pic = [UIImage imageNamed:@"bt_datasave"];
  95. CGFloat h = (Screen_Width - 40) * pic.size.height / pic.size.width;
  96. _scroll.frame =CGRectMake(0, 0, Screen_Width, self.view.safeAreaLayoutGuide.layoutFrame.size.height-h);
  97. _saveBtn.frame = CGRectMake(20,
  98. self.view.safeAreaLayoutGuide.layoutFrame.size.height -h-15,
  99. Screen_Width-40,
  100. h);
  101. [super viewSafeAreaInsetsDidChange];
  102. }
  103. /**
  104. 内存释放函数
  105. */
  106. - (void)dealloc{
  107. // [self cancel];
  108. //[[NSNotificationCenter defaultCenter]removeObserver:self name:@"UITextFieldTextDidChangeNotification" object:self.receiptAmount];
  109. }
  110. /**
  111. 初始化相册数组
  112. @return <#return value description#>
  113. */
  114. - (NSMutableArray *)assets{
  115. if (!_assets) {
  116. _assets = [NSMutableArray array];
  117. }
  118. return _assets;
  119. }
  120. /**
  121. 初始化图片路径数组
  122. @return <#return value description#>
  123. */
  124. - (NSMutableArray *)imagePaths{
  125. if (!_imagePaths) {
  126. _imagePaths = [NSMutableArray array];
  127. }
  128. return _imagePaths;
  129. }
  130. /**
  131. 初始化回执类型
  132. */
  133. - (void)initStatus{
  134. _arrayStatus = [[NSMutableArray alloc]init];
  135. StatusInfo* s = [[StatusInfo alloc]init];
  136. s.statusId = @"1";
  137. s.name = @"完成";
  138. [_arrayStatus addObject:s];
  139. s = [[StatusInfo alloc]init];
  140. s.statusId = @"5";
  141. s.name = @"再次安排";
  142. [_arrayStatus addObject:s];
  143. }
  144. /**
  145. 初始化collection view
  146. */
  147. - (void)setupCollectionView{
  148. UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
  149. flowLayout.itemSize = CGSizeMake(85, 85);
  150. flowLayout.minimumInteritemSpacing = 5;
  151. flowLayout.minimumLineSpacing = 10;
  152. flowLayout.scrollDirection = UICollectionViewScrollDirectionVertical;
  153. flowLayout.sectionInset = UIEdgeInsetsMake(7, 20, 0, 20);
  154. self.collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, Screen_Width, (85+15)*3) collectionViewLayout:flowLayout];
  155. self.collectionView.backgroundColor = [UIColor clearColor];
  156. self.collectionView.dataSource = self;
  157. self.collectionView.delegate = self;
  158. [self.collectionView registerNib:[UINib nibWithNibName:@"DKUICollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"DKUICollectionViewCell"];
  159. [_vCollectionView addSubview:self.collectionView];
  160. }
  161. #pragma 委托函数
  162. /**
  163. 保存数据完成更新画面
  164. @param sender <#sender description#>
  165. */
  166. - (void)onLoadFinish:(ASIDownManager *)sender {
  167. RequestResultModel *resultModel = [RequestResultModel dk_modelWithJSON:sender.mWebStr];
  168. [self cancel];
  169. int iStatus = resultModel.status;
  170. NSString *message =resultModel.message;
  171. self.navigationItem.rightBarButtonItem.enabled=YES;
  172. if (iStatus == 0) {
  173. [self clearData];//新增后 清除画面的值
  174. UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"保存成功!" preferredStyle:UIAlertControllerStyleAlert ];
  175. [alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action){
  176. [_parentVC ReloadList];
  177. [self.navigationController popViewControllerAnimated:YES];
  178. }]];
  179. // 3.显示alertController:presentViewController
  180. [self presentViewController:alert animated:YES completion:nil];
  181. }
  182. else if(iStatus == ActionResultStatusAuthError
  183. ||iStatus == ActionResultStatusNoLogin
  184. ||iStatus == ActionResultStatusLogined||iStatus==ActionResultSessionOverdue){
  185. [self showReLoginDialog:message];
  186. return;
  187. }
  188. else {
  189. [self showAlertViewText:message];
  190. }
  191. }
  192. /**
  193. 数据加载成功回调
  194. @param sender <#sender description#>
  195. */
  196. - (void)onRequestLoadSuccess:(ASIDownManager *)sender {
  197. RequestResultModel *resultModel = [RequestResultModel dk_modelWithJSON:sender.mWebStr]; self.sCode = @"";
  198. [self cancel];
  199. int iStatus =resultModel.status;
  200. NSString *message = resultModel.message;
  201. if (iStatus == 0) {
  202. self.sCode=self.code.text;
  203. NSArray * infoArr;
  204. NSArray * infoHead;
  205. NSDictionary *dicResult =(NSDictionary*)resultModel.result;
  206. [self.model.detailsArr removeAllObjects];
  207. if(dicResult != nil){
  208. infoArr = [dicResult objectForKey:@"Table1"];
  209. infoHead = [dicResult objectForKey:@"Table"];
  210. }
  211. if (infoHead == nil|| infoHead.count == 0) {
  212. self.code.text = @"";
  213. self.sCode = @"";
  214. [self clearData];
  215. [self showAlertViewText:@"该维修单未建安排单,请重新建安排单"];
  216. return;
  217. }
  218. //单据信息 一条数据
  219. BOOL receiptFlag=false;
  220. for (int i=0; i<infoHead.count; i++) {
  221. NSDictionary *h=infoHead[i];
  222. receiptFlag = [[h objectForKey:@"ReceiptFlag"] boolValue] ;
  223. if (receiptFlag ) {
  224. self.sReceiptType = @"1";
  225. break;
  226. }else{
  227. self.sReceiptType = @"0";
  228. }
  229. self.customerId = [[h objectForKey:@"CustomerID"]stringValue];
  230. _questionDesc= [h objectForKey:@"Question"];
  231. self.arrangementId = [[h objectForKey:@"ArrangementID"]stringValue];
  232. self.repairId = [[h objectForKey:@"RepairID"]stringValue];
  233. self.organizationId = [[h objectForKey:@"BusinessOrganization"]stringValue];
  234. self.salesman = [[h objectForKey:@"SalesMan"]stringValue];
  235. self.lblStaffNameValue.text = [h objectForKey:@"CustomerServiceStaffName"];
  236. self.lblReceivablesValue.text = [[h objectForKey:@"Receivables"]stringValue];
  237. self.lblCompleteAmountValue.text = [[h objectForKey:@"ReceiptedAmount"]stringValue];
  238. if ([h objectForKey:@"RepairDate"] != nil) {
  239. self.lblRepairDateValue.text = [DateFormat dateFormatSplit:[h objectForKey:@"RepairDate"]] ;
  240. }else{
  241. self.lblRepairDateValue.text = @"";
  242. }
  243. [self.delayDate setTitle:@"请选择再次安排日期" forState:UIControlStateNormal];
  244. self.sDelayDate = @"";
  245. if ([self.sReceiptType isEqualToString: @"5"]) {
  246. [self.receiptType setTitle:@"再次安排" forState:UIControlStateNormal];
  247. }else{
  248. [self.receiptType setTitle:@"完成" forState:UIControlStateNormal];
  249. self.sReceiptType = @"1";
  250. }
  251. if(self.questionDesc==nil||[self.questionDesc isEqualToString:@""]){
  252. _vQuestionDesc.frame=CGRectMake(0,CGRectGetMaxY(_vRescheduleDate.frame), Screen_Width, 0);
  253. _vQuestionDesc.hidden=YES;
  254. _vMiddleSeparator.frame=CGRectMake(0,CGRectGetMaxY(_vRescheduleDate.frame), Screen_Width, 2);
  255. }
  256. else
  257. {
  258. _vQuestionDesc.hidden=NO;
  259. NSDictionary *unRepairDict = @{NSFontAttributeName:kTextFont};
  260. CGRect questionDescFrame = [_questionDesc textRectWithSize:CGSizeMake(Screen_Width-95-15, MAXFLOAT) attributes:unRepairDict];
  261. questionDescFrame.origin.x =95;
  262. questionDescFrame.origin.y= 6;
  263. _lblQuestionDesc.font=kTextFont;
  264. _lblQuestionDesc.numberOfLines=0;
  265. _lblQuestionDesc.frame=questionDescFrame;
  266. _vQuestionDesc.frame=CGRectMake(0,CGRectGetMaxY(_vRescheduleDate.frame), Screen_Width,CGRectGetMaxY(_lblQuestionDesc.frame));
  267. _lblQuestionDesc.text=_questionDesc;
  268. _lblTitleQuestionDesc.frame=CGRectMake(20, 3,90, 25);
  269. _lblTitleQuestionDesc.text = @"问题描述:";
  270. _vMiddleSeparator.frame=CGRectMake(0,CGRectGetMaxY(_vQuestionDesc.frame)+10, Screen_Width, 2);
  271. }
  272. if (self.lblReceivablesValue.text != nil && [self.lblReceivablesValue.text doubleValue]>0) {
  273. self.receiptAmount.enabled=YES;
  274. }else{
  275. self.receiptAmount.enabled=NO;
  276. }
  277. self.receiptAmount.text = @"0";
  278. self.sSettlementType = @"";
  279. [self.settlementType setTitle:@"请选择收款方式" forState:UIControlStateNormal];
  280. }
  281. if (receiptFlag) {
  282. self.code.text = @"";
  283. self.sCode = @"";
  284. [self clearData];
  285. [self showAlertViewText:@"该维修单已经回执"];
  286. return;
  287. }
  288. for (int i=0; i<infoArr.count; i++) {
  289. NSDictionary *info=infoArr[i];
  290. NewRepairItemModel * m = [NewRepairItemModel dk_modelWithDictionary:info];
  291. [self.model.detailsArr addObject:m];
  292. }
  293. vCustomTableView.hidden=NO;
  294. _vImage.hidden=NO;
  295. [self.vCustomTableView reloadData];
  296. }
  297. else {
  298. [self showAlertViewText:message];
  299. }
  300. }
  301. /**
  302. 数据加载失败函数回调
  303. @param sender <#sender description#>
  304. */
  305. - (void)onRequestLoadFail:(ASIDownManager *)sender{
  306. [self cancel];
  307. [self showAlertViewText:@"网络异常"];
  308. }
  309. /**
  310. 数据加载失败函数回调
  311. @param sender <#sender description#>
  312. */
  313. - (void)onLoadFail:(ASIDownManager *)sender {
  314. [self cancel];
  315. [self showAlertViewText:@"网络异常"];
  316. }
  317. /**
  318. 键盘隐藏
  319. @param cell <#cell description#>
  320. */
  321. - (void)keyboardWillHide:(NewRepairDetailListsCell *)cell{
  322. if (cell.cellIndex == self.model.detailsArr.count-1) {
  323. [self keyboardWillHide];
  324. }
  325. }
  326. /**
  327. 键盘弹出
  328. @param cell <#cell description#>
  329. */
  330. - (void)keyboardWillShow:(NewRepairDetailListsCell *)cell{
  331. if (cell.cellIndex == self.model.detailsArr.count-1) {
  332. [self keyboardWillShow];
  333. }
  334. }
  335. /**
  336. 编辑完成
  337. @param cell <#cell description#>
  338. */
  339. - (void)endEdit:(NewRepairDetailListsCell *)cell{
  340. NewRepairItemModel *m = self.model.detailsArr[self.cellIndex];
  341. cell.receiptQuantity.text=m.receiptQuantity;
  342. }
  343. /**
  344. 限制用户输入小数点后位数的方法
  345. @param textField <#textField description#>
  346. @param range <#range description#>
  347. @param string <#string description#>
  348. @return <#return value description#>
  349. */
  350. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
  351. if ([textField.text rangeOfString:@"."].location == NSNotFound) {
  352. _isHaveDian = NO;
  353. }
  354. if ([string length] > 0) {
  355. unichar single = [string characterAtIndex:0];//当前输入的字符
  356. if ((single >= '0' && single <= '9') || single == '.') {//数据格式正确
  357. //首字母不能为0和小数点
  358. if([textField.text length] == 0){
  359. if(single == '.') {
  360. [self showAlertViewText:@"第一个数字不能为小数点"];
  361. [textField.text stringByReplacingCharactersInRange:range withString:@""];
  362. return NO;
  363. }
  364. }
  365. if([textField.text length] == 1 && [[textField.text substringToIndex:1] isEqualToString: @"0"]){
  366. if(!(single == '.')) {
  367. [textField.text stringByReplacingCharactersInRange:range withString:@""];
  368. return NO;
  369. }
  370. }
  371. //输入的字符是否是小数点
  372. if (single == '.') {
  373. if(!_isHaveDian)//text中还没有小数点
  374. {
  375. _isHaveDian = YES;
  376. return YES;
  377. }else{
  378. [self showAlertViewText:@"您已经输入过小数点了"];
  379. [textField.text stringByReplacingCharactersInRange:range withString:@""];
  380. return NO;
  381. }
  382. }else{
  383. if (_isHaveDian) {//存在小数点
  384. //判断小数点的位数
  385. NSRange ran = [textField.text rangeOfString:@"."];
  386. if (range.location - ran.location <= 6) {
  387. return YES;
  388. }else{
  389. //[self showAlertViewText:@"亲,您最多输入两位小数"];
  390. return NO;
  391. }
  392. }else{
  393. return YES;
  394. }
  395. }
  396. }else{//输入的数据格式不正确
  397. [self showAlertViewText:@"您输入的格式不正确"];
  398. [textField.text stringByReplacingCharactersInRange:range withString:@""];
  399. return NO;
  400. }
  401. }
  402. else
  403. {
  404. return YES;
  405. }
  406. }
  407. /**
  408. 点击位置后回调
  409. @param name <#name description#>
  410. */
  411. - (void)relocationData:(NSString *)name{
  412. _lblPosition.text=name;
  413. _positionImage.hidden=NO;
  414. if (_lblPosition.text.length>0){
  415. _ivPosition.image = [UIImage imageNamed:@"log_position"];
  416. _positionHeight=40;
  417. self.vCustomTableView.frame=CGRectMake(0,CGRectGetMaxY(_vMiddleSeparator.frame), self.view.frame.size.width,[self getDataViewHeight:self.model.detailsArr]);
  418. _vCollectionView.frame=CGRectMake(0, CGRectGetMaxY(self.vCustomTableView.frame), self.view.frame.size.width,[Util getPhotoCollectionViewHeightWithPhotos:self.assets]);
  419. _positionImage.frame=CGRectMake(0,CGRectGetMaxY(_vCollectionView.frame)-10, Screen_Width, _positionHeight);
  420. _vImage.frame=CGRectMake(0,CGRectGetMaxY(_positionImage.frame), Screen_Width,30);
  421. _contentView.frame=CGRectMake(0, 0, Screen_Width, CGRectGetMaxY(_vImage.frame));
  422. _scroll.contentSize=CGSizeMake(Screen_Width, _contentView.frame.size.height+150);
  423. }
  424. }
  425. /**
  426. 单据信息中收款方式的回调函数
  427. @param model <#model description#>
  428. */
  429. - (void)showProtocolValue:(SettlementTypeModel *)model{
  430. self.sSettlementType=model.settlementId;
  431. self.sSettlementTypeName=model.settlementName;
  432. self.sExistHandleFee=model.isNotHand;
  433. self.sEarnestFee=model.handAmount;
  434. self.sRemarks=model.remark;
  435. [self.settlementType setTitle:model.settlementName forState:UIControlStateNormal];
  436. }
  437. /**
  438. 详细信息中铺贴方式,回执类型,单据信息中回执类型的回调函数
  439. @param s <#s description#>
  440. */
  441. - (void)showStatusValue:(StatusInfo *)s{
  442. if (s == nil) {
  443. return;
  444. }
  445. if ([s.tagName isEqualToString: @"PayStyle"]) {
  446. NSIndexPath *indexPath = [NSIndexPath indexPathForRow:self.cellIndex inSection:0];
  447. [self.vCustomTableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];
  448. }
  449. else if ([s.tagName isEqualToString: @"ReceiptType"]) {
  450. NSIndexPath *indexPath = [NSIndexPath indexPathForRow:self.cellIndex inSection:0];
  451. [self.vCustomTableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];
  452. }else{
  453. self.sReceiptType=s.statusId;
  454. [self.receiptType setTitle:s.name forState:UIControlStateNormal];
  455. if (![self.sReceiptType isEqualToString:@"5"]) {
  456. self.sDelayDate = @"";
  457. [self.delayDate setTitle:@"请选择再次安排日期" forState:UIControlStateNormal];
  458. [self.model updateCellInfo:NO];
  459. }else{
  460. [self.model updateCellInfo:YES];
  461. }
  462. [self.vCustomTableView reloadData];
  463. }
  464. }
  465. /**
  466. 选中图片回调事件
  467. @param assets <#assets description#>
  468. */
  469. - (void)pickerViewControllerDoneAsstes:(NSArray *)assets{
  470. // __weak typeof(self) weakSelf = self;
  471. for (int i=(int)self.assets.count-1;i>=0;i-- ) {
  472. if ([self.assets[i] isKindOfClass:[DKPhotoAssets class]]) {
  473. [self.assets removeObject:self.assets[i]];
  474. }
  475. }
  476. for (DKPhotoAssets* asset in assets ) {
  477. if ([asset isKindOfClass:[DKPhotoAssets class]]) {
  478. [self.assets addObject:asset];
  479. }
  480. }
  481. //self.assets = [NSMutableArray arrayWithArray:assets];
  482. [self.collectionView reloadData];
  483. }
  484. /**
  485. 详细信息中文本信息编辑
  486. @param cell <#cell description#>
  487. @param txtfield <#txtfield description#>
  488. @param qualityTxt <#qualityTxt description#>
  489. @param remark <#remark description#>
  490. */
  491. - (void)textValueChange:(NewRepairDetailListsCell *)cell txtField:(UITextField *)txtfield qualityField:(UITextField *)qualityTxt remarkField:(UITextField *)remark{
  492. // NSLog(@"textValueChange......");
  493. self.cellIndex=cell.cellIndex;
  494. [self.model updateCellText:txtfield CellIndex:cell.cellIndex qualityField:qualityTxt remarkField:remark];
  495. }
  496. /**
  497. table view分区数
  498. @param tableView <#tableView description#>
  499. @return <#return value description#>
  500. */
  501. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
  502. return 1;
  503. }
  504. /**
  505. table view的行数
  506. @param tableView <#tableView description#>
  507. @param section <#section description#>
  508. @return <#return value description#>
  509. */
  510. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
  511. {
  512. NSInteger rowcount = [self.model.detailsArr count];
  513. self.vCustomTableView.frame=CGRectMake(0,CGRectGetMaxY(_vMiddleSeparator.frame), self.view.frame.size.width,[self getDataViewHeight:self.model.detailsArr]);
  514. _vCollectionView.frame=CGRectMake(0, CGRectGetMaxY(self.vCustomTableView.frame), self.view.frame.size.width,[Util getPhotoCollectionViewHeightWithPhotos:self.assets]);
  515. _positionImage.frame=CGRectMake(0,CGRectGetMaxY(_vCollectionView.frame), Screen_Width, _positionHeight);
  516. _vImage.frame=CGRectMake(0,CGRectGetMaxY(_positionImage.frame), Screen_Width,30);
  517. _contentView.frame=CGRectMake(0, 0, Screen_Width, CGRectGetMaxY(_vImage.frame));
  518. _scroll.contentSize=CGSizeMake(Screen_Width, _contentView.frame.size.height+150);
  519. return rowcount;
  520. }
  521. /**
  522. table view的高度
  523. @param tableView <#tableView description#>
  524. @param indexPath <#indexPath description#>
  525. @return <#return value description#>
  526. */
  527. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
  528. {
  529. return 260;
  530. }
  531. /**
  532. 获取table view的cell
  533. @param tableView <#tableView description#>
  534. @param indexPath <#indexPath description#>
  535. @return <#return value description#>
  536. */
  537. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
  538. static NSString *identifier = @"NewRepairDetailListsCell";
  539. NewRepairDetailListsCell* cell = [[NewRepairDetailListsCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
  540. NSUInteger row = [indexPath row];
  541. cell.delegate=self;
  542. cell.cellIndex=row;
  543. [cell parseInfoModel:self.model.detailsArr[row]];
  544. return cell;
  545. }
  546. /**
  547. collection view的分区数
  548. @param collectionView <#collectionView description#>
  549. @return <#return value description#>
  550. */
  551. - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
  552. return 1;
  553. }
  554. /**
  555. collection view的项数
  556. @param collectionView <#collectionView description#>
  557. @param section <#section description#>
  558. @return <#return value description#>
  559. */
  560. - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
  561. self.vCustomTableView.frame=CGRectMake(0,CGRectGetMaxY(_vMiddleSeparator.frame), self.view.frame.size.width,[self getDataViewHeight:self.model.detailsArr]);
  562. _vCollectionView.frame=CGRectMake(0, CGRectGetMaxY(self.vCustomTableView.frame), self.view.frame.size.width,[Util getPhotoCollectionViewHeightWithPhotos:self.assets]);
  563. _positionImage.frame=CGRectMake(0,CGRectGetMaxY(_vCollectionView.frame), Screen_Width, _positionHeight);
  564. _vImage.frame=CGRectMake(0,CGRectGetMaxY(_positionImage.frame)+10, Screen_Width,30);
  565. _contentView.frame=CGRectMake(0, 0, Screen_Width, CGRectGetMaxY(_vImage.frame));
  566. _scroll.contentSize=CGSizeMake(Screen_Width, _contentView.frame.size.height+150);
  567. return [self.assets count];
  568. }
  569. /**
  570. 获取collection view的cell
  571. @param collectionView <#collectionView description#>
  572. @param indexPath <#indexPath description#>
  573. @return <#return value description#>
  574. */
  575. - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
  576. DKUICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"DKUICollectionViewCell" forIndexPath:indexPath];
  577. // 判断类型来获取Image
  578. DKPhotoAssets *asset = self.assets[indexPath.item];
  579. if ([asset isKindOfClass:[DKPhotoAssets class]]) {
  580. cell.imageView.image = asset.thumbImage;
  581. }else if ([asset isKindOfClass:[NSString class]]){
  582. [cell.imageView sd_setImageWithURL:[NSURL URLWithString:(NSString *)asset] placeholderImage:[UIImage imageNamed:@"wallpaper_placeholder"]];
  583. }else if([asset isKindOfClass:[UIImage class]]){
  584. cell.imageView.image = (UIImage *)asset;
  585. }else if ([asset isKindOfClass:[DKCamera class]]){
  586. cell.imageView.image = [asset thumbImage];
  587. }
  588. return cell;
  589. }
  590. /**
  591. collection view的点击事件
  592. @param collectionView <#collectionView description#>
  593. @param indexPath <#indexPath description#>
  594. */
  595. - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
  596. DKUICollectionViewCell *cell = (DKUICollectionViewCell *)[self.collectionView cellForItemAtIndexPath:indexPath];
  597. // 图片游览器
  598. DKPhotoPickerBrowserViewController *pickerBrowser = [[DKPhotoPickerBrowserViewController alloc] init];
  599. // 传入点击图片View的话,会有微信朋友圈照片的风格
  600. pickerBrowser.toView = cell.imageView;
  601. // 数据源/delegate
  602. pickerBrowser.delegate = self;
  603. pickerBrowser.dataSource = self;
  604. // 是否可以删除照片
  605. pickerBrowser.editing = YES;
  606. // 当前选中的值
  607. pickerBrowser.currentIndexPath = [NSIndexPath indexPathForItem:indexPath.row inSection:0];
  608. // 展示控制器
  609. [pickerBrowser show];
  610. }
  611. /**
  612. collection view的分区数
  613. @param pickerBrowser <#pickerBrowser description#>
  614. @return <#return value description#>
  615. */
  616. - (NSInteger)numberOfSectionInPhotosInPickerBrowser:(DKPhotoPickerBrowserViewController *)pickerBrowser{
  617. return 1;
  618. }
  619. /**
  620. collection view的项数
  621. @param photoBrowser <#photoBrowser description#>
  622. @param section <#section description#>
  623. @return <#return value description#>
  624. */
  625. - (NSInteger)photoBrowser:(DKPhotoPickerBrowserViewController *)photoBrowser numberOfItemsInSection:(NSUInteger)section{
  626. return [self.assets count];
  627. }
  628. /**
  629. 图片放大代理
  630. @param pickerBrowser <#pickerBrowser description#>
  631. @param indexPath <#indexPath description#>
  632. @return <#return value description#>
  633. */
  634. - (DKPhotoPickerBrowserPhoto *)photoBrowser:(DKPhotoPickerBrowserViewController *)pickerBrowser photoAtIndexPath:(NSIndexPath *)indexPath{
  635. id imageObj = [self.assets objectAtIndex:indexPath.item];
  636. DKPhotoPickerBrowserPhoto *photo = [DKPhotoPickerBrowserPhoto photoAnyImageObjWith:imageObj];
  637. // 包装下imageObj 成 DKPhotoPickerBrowserPhoto 传给数据源
  638. DKUICollectionViewCell *cell = (DKUICollectionViewCell *)[self.collectionView cellForItemAtIndexPath:indexPath];
  639. // 缩略图
  640. photo.thumbImage = cell.imageView.image;
  641. return photo;
  642. }
  643. /**
  644. 删除照片代理
  645. @param photoBrowser <#photoBrowser description#>
  646. @param indexPath <#indexPath description#>
  647. */
  648. - (void)photoBrowser:(DKPhotoPickerBrowserViewController *)photoBrowser removePhotoAtIndexPath:(NSIndexPath *)indexPath{
  649. if (indexPath.row > [self.assets count]) return;
  650. [self.assets removeObjectAtIndex:indexPath.row];
  651. [self.collectionView reloadData];
  652. }
  653. #pragma 私有函数
  654. /**
  655. 弹出键盘
  656. */
  657. - (void)keyboardWillShow {
  658. if(!_keyboardShow){
  659. [UIView animateWithDuration:0.3f animations:^ {
  660. 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);
  661. }];}
  662. _keyboardShow=YES;
  663. }
  664. /**
  665. 隐藏键盘
  666. */
  667. - (void)keyboardWillHide {
  668. if(_keyboardShow){
  669. [UIView animateWithDuration:0.1f animations:^ {
  670. 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);
  671. }];}
  672. _keyboardShow=NO;
  673. }
  674. /**
  675. 初始化界面
  676. */
  677. - (void)initUI{
  678. _scroll = [UIScrollView new];
  679. _scroll.frame=self.view.bounds;
  680. _scroll.tag=1000;
  681. UITapGestureRecognizer* singleRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKey)];
  682. singleRecognizer.cancelsTouchesInView = NO;
  683. [_scroll addGestureRecognizer:singleRecognizer];
  684. [self.view addSubview:_scroll];
  685. if(Screen_Height2<=480){
  686. _scroll.contentSize=CGSizeMake(self.view.frame.size.width, self.view.frame.size.height+80);
  687. }
  688. _contentView = [[UIView alloc]init];
  689. _contentView.frame=CGRectZero;
  690. _contentView.backgroundColor = [UIColor whiteColor];
  691. [_scroll addSubview:_contentView];
  692. //维修单号 —————————
  693. UIView *vCode = [UIView new];
  694. vCode.frame=CGRectMake(0, 0, Screen_Width, 51);
  695. [_contentView addSubview:vCode];
  696. UILabel *lblCode = [UILabel new];
  697. lblCode.frame=CGRectMake(20, 16,90, 25);
  698. lblCode.text = @"维修单号:";
  699. lblCode.font=kTextFont;
  700. [vCode addSubview:lblCode];
  701. self.code = [UITextField new];
  702. self.code.delegate=self;
  703. self.code.font= kTextFont;
  704. self.code.frame=CGRectMake(95, 16, 200, 25);
  705. [vCode addSubview:self.code];
  706. UIView *separatorView = [UIView new];
  707. separatorView.frame=CGRectMake(0,CGRectGetMaxY(vCode.frame), Screen_Width, 5);
  708. separatorView.backgroundColor=LineBackgroundColor;
  709. [_contentView addSubview:separatorView];
  710. double wh=((Screen_Width-110));
  711. //收费金额 —————————
  712. UIView *vReceivables = [UIView new];
  713. vReceivables.frame=CGRectMake(0,CGRectGetMaxY(separatorView.frame), Screen_Width, 31);
  714. [_contentView addSubview:vReceivables];
  715. UILabel *lblReceivables = [UILabel new];
  716. lblReceivables.frame=CGRectMake(20, 3,90, 25);
  717. lblReceivables.font=kTextFont;
  718. lblReceivables.text = @"收费金额:";
  719. [vReceivables addSubview:lblReceivables];
  720. self.lblReceivablesValue = [UILabel new];
  721. self.lblReceivablesValue.font=kTextFont;
  722. self.lblReceivablesValue.frame=CGRectMake(95, 3, wh, 25);
  723. [vReceivables addSubview:self.lblReceivablesValue];
  724. UIView *vReceiptAmount = [UIView new];
  725. vReceiptAmount.frame=CGRectMake(0,CGRectGetMaxY(vReceivables.frame), Screen_Width, 31);
  726. [_contentView addSubview:vReceiptAmount];
  727. UILabel *lblReceiptAmount = [UILabel new];
  728. lblReceiptAmount.frame=CGRectMake(20, 3, 90, 25);
  729. lblReceiptAmount.text = @"回执金额:";
  730. lblReceiptAmount.font=kTextFont;
  731. [vReceiptAmount addSubview:lblReceiptAmount];
  732. self.receiptAmount = [UITextField new];
  733. self.receiptAmount.placeholder = @"请输入回执金额";
  734. self.receiptAmount.keyboardType= UIKeyboardTypeDecimalPad;
  735. self.receiptAmount.font= kTextFont;
  736. self.receiptAmount.delegate=self;
  737. self.receiptAmount.enabled=NO;
  738. self.receiptAmount.frame=CGRectMake(95, 3, wh, 25);
  739. [vReceiptAmount addSubview:self.receiptAmount];
  740. //已回执金额 —————————
  741. UIView *vCompleteAmount = [UIView new];
  742. vCompleteAmount.frame=CGRectMake(0,CGRectGetMaxY(vReceiptAmount.frame), Screen_Width, 31);
  743. [_contentView addSubview:vCompleteAmount];
  744. UILabel *lblCompleteAmount = [UILabel new];
  745. lblCompleteAmount.frame=CGRectMake(20, 3,90, 25);
  746. lblCompleteAmount.text = @"已回执金额:";
  747. lblCompleteAmount.font=kTextFont;
  748. [vCompleteAmount addSubview:lblCompleteAmount];
  749. self.lblCompleteAmountValue = [UILabel new];
  750. self.lblCompleteAmountValue.frame=CGRectMake(108, 3, wh, 25);
  751. self.lblCompleteAmountValue.font=kTextFont;
  752. [vCompleteAmount addSubview:self.lblCompleteAmountValue];
  753. //回执类型--------------
  754. UIView *vReceiptType = [UIView new];
  755. vReceiptType.frame=CGRectMake(0,CGRectGetMaxY(vCompleteAmount.frame), Screen_Width, 31);
  756. [_contentView addSubview:vReceiptType];
  757. UILabel *lblType = [UILabel new];
  758. lblType.frame=CGRectMake(20, 3,90, 25);
  759. lblType.text = @"回执类型:";
  760. lblType.font=kTextFont;
  761. [vReceiptType addSubview:lblType];
  762. self.receiptType = [UIButton buttonWithType:UIButtonTypeCustom];
  763. self.receiptType.frame=CGRectMake(95, 3, wh, 25);
  764. self.receiptType.titleLabel.font= kTextFont;
  765. [self.receiptType setTitle:@"请选择回执类型" forState:UIControlStateNormal];
  766. self.receiptType.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft;
  767. [self.receiptType setTitleColor:[UIColor colorWithWhite:0 alpha:1] forState:UIControlStateNormal];
  768. [self.receiptType addTarget:self action:@selector(btnTypeCilck) forControlEvents:UIControlEventTouchUpInside];
  769. [vReceiptType addSubview:self.receiptType];
  770. UIButton *btnReceiptTypeArrow = [UIButton buttonWithType:UIButtonTypeCustom];
  771. btnReceiptTypeArrow.frame=CGRectMake(Screen_Width-17,10,7,12);
  772. [btnReceiptTypeArrow setImage:[UIImage imageNamed:@"rightarrow"] forState:UIControlStateNormal];
  773. [vReceiptType addSubview:btnReceiptTypeArrow];
  774. //收款方式--------------
  775. UIView *vSettlementType = [UIView new];
  776. vSettlementType.frame=CGRectMake(0,CGRectGetMaxY(vReceiptType.frame), Screen_Width, 31);
  777. [_contentView addSubview:vSettlementType];
  778. UILabel *lblSettlementType = [UILabel new];
  779. lblSettlementType.frame=CGRectMake(20, 3,90, 25);
  780. lblSettlementType.text = @"收款方式:";
  781. lblSettlementType.font=kTextFont;
  782. [vSettlementType addSubview:lblSettlementType];
  783. self.settlementType = [UIButton buttonWithType:UIButtonTypeCustom];
  784. self.settlementType.frame=CGRectMake(95, 3, wh, 25);
  785. self.settlementType.titleLabel.font= kTextFont;
  786. [self.settlementType setTitle:@"请选择收款方式" forState:UIControlStateNormal];
  787. self.settlementType.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft;
  788. [self.settlementType setTitleColor:LabelGrayTextColor forState:UIControlStateNormal];
  789. [self.settlementType addTarget:self action:@selector(settlementTypeCilck) forControlEvents:UIControlEventTouchUpInside];
  790. [vSettlementType addSubview:self.settlementType];
  791. UIButton *btnSettlementTypeArrow = [UIButton buttonWithType:UIButtonTypeCustom];
  792. btnSettlementTypeArrow.frame=CGRectMake(Screen_Width-17,10,7,12);
  793. [btnSettlementTypeArrow setImage:[UIImage imageNamed:@"rightarrow"] forState:UIControlStateNormal];
  794. [vSettlementType addSubview:btnSettlementTypeArrow];
  795. UIView *vStaffName = [UIView new];
  796. vStaffName.frame=CGRectMake(0,CGRectGetMaxY(vSettlementType.frame), Screen_Width, 31);
  797. [_contentView addSubview:vStaffName];
  798. UILabel *lblStaffName = [UILabel new];
  799. lblStaffName.frame=CGRectMake(20, 3,90, 25);
  800. lblStaffName.text = @"客服人员:";
  801. lblStaffName.font=kTextFont;
  802. [vStaffName addSubview:lblStaffName];
  803. self.lblStaffNameValue = [UILabel new];
  804. self.lblStaffNameValue.font=kTextFont;
  805. self.lblStaffNameValue.frame=CGRectMake(95, 3, wh, 25);
  806. [vStaffName addSubview:self.lblStaffNameValue];
  807. //维修日期 —————————
  808. UIView *vRepairDate = [UIView new];
  809. vRepairDate.frame=CGRectMake(0,CGRectGetMaxY(vStaffName.frame), Screen_Width, 31);
  810. [_contentView addSubview:vRepairDate];
  811. UILabel *lblRepairDate = [UILabel new];
  812. lblRepairDate.frame=CGRectMake(20, 3,90, 25);
  813. lblRepairDate.text = @"维修日期:";
  814. lblRepairDate.font=kTextFont;
  815. [vRepairDate addSubview:lblRepairDate];
  816. self.lblRepairDateValue = [UILabel new];
  817. self.lblRepairDateValue.font=kTextFont;
  818. self.lblRepairDateValue.frame=CGRectMake(95, 3, wh, 25);
  819. [vRepairDate addSubview:self.lblRepairDateValue];
  820. //start日期--------------
  821. _vRescheduleDate = [UIView new];
  822. _vRescheduleDate.frame=CGRectMake(0,CGRectGetMaxY(vRepairDate.frame), Screen_Width, 31);
  823. [_contentView addSubview:_vRescheduleDate];
  824. UILabel *lblRescheduleDate = [UILabel new];
  825. lblRescheduleDate.frame=CGRectMake(20, 3,120, 25);
  826. lblRescheduleDate.text = @"再次安排日期:";
  827. lblRescheduleDate.font=kTextFont;
  828. [_vRescheduleDate addSubview:lblRescheduleDate];
  829. self.delayDate = [UIButton buttonWithType:UIButtonTypeCustom];
  830. self.delayDate.frame=CGRectMake(120, 3, wh, 25);
  831. self.delayDate.titleLabel.font=kTextFont;
  832. self.delayDate.tag=1002;
  833. [self.delayDate setTitle:@"请选择再次安排日期" forState:UIControlStateNormal];
  834. self.delayDate.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft;
  835. [self.delayDate setTitleColor:LabelGrayTextColor forState:UIControlStateNormal];
  836. [self.delayDate addTarget:self action:@selector(btnDateCilck:) forControlEvents:UIControlEventTouchUpInside];
  837. [_vRescheduleDate addSubview:self.delayDate];
  838. UIButton *btnRescheduleDateArrow = [UIButton buttonWithType:UIButtonTypeCustom];
  839. btnRescheduleDateArrow.frame=CGRectMake(Screen_Width-17,10,7,12);
  840. btnRescheduleDateArrow.tag=1003;
  841. [ btnRescheduleDateArrow setImage:[UIImage imageNamed:@"rightarrow"] forState:UIControlStateNormal];
  842. [_vRescheduleDate addSubview:btnRescheduleDateArrow];
  843. _vQuestionDesc = [UIView new];
  844. _vQuestionDesc.frame=CGRectMake(0,CGRectGetMaxY(_vRescheduleDate.frame), Screen_Width,0);
  845. [_contentView addSubview:_vQuestionDesc];
  846. _lblTitleQuestionDesc = [UILabel new];
  847. _lblTitleQuestionDesc.frame=CGRectZero;
  848. _lblTitleQuestionDesc.font=kTextFont;
  849. [_vQuestionDesc addSubview:_lblTitleQuestionDesc];
  850. _lblQuestionDesc = [UILabel new];
  851. _lblQuestionDesc.frame=CGRectZero;
  852. _lblQuestionDesc.numberOfLines=0;
  853. [_vQuestionDesc addSubview:_lblQuestionDesc];
  854. [_contentView addSubview:_vQuestionDesc];
  855. _vMiddleSeparator = [UIView new];
  856. _vMiddleSeparator.frame=CGRectMake(0,CGRectGetMaxY(_vQuestionDesc.frame), Screen_Width, 2);
  857. _vMiddleSeparator.backgroundColor=LineBackgroundColor;
  858. [_contentView addSubview:_vMiddleSeparator];
  859. vCustomTableView = [[UITableView alloc] initWithFrame:CGRectMake(0,CGRectGetMaxY(_vMiddleSeparator.frame), self.view.frame.size.width, 0)];
  860. vCustomTableView.separatorStyle=UITableViewCellSeparatorStyleNone;
  861. vCustomTableView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
  862. vCustomTableView.delegate = self;
  863. vCustomTableView.dataSource = self;
  864. [_contentView addSubview:vCustomTableView];
  865. vCustomTableView.hidden=YES;
  866. _vCollectionView = [UIView new];
  867. _vCollectionView.frame=CGRectMake(0,CGRectGetMaxY(vCustomTableView.frame), Screen_Width, 0);
  868. [_contentView addSubview:_vCollectionView];
  869. [self setupCollectionView];
  870. ////////位置view
  871. _positionImage = [UIView new];
  872. _positionImage.frame=CGRectMake(0,CGRectGetMaxY(_vCollectionView.frame), Screen_Width, 0);
  873. [_contentView addSubview:_positionImage];
  874. //星号
  875. _ivPosition = [UIImageView new];
  876. _ivPosition.frame=CGRectMake(12,20,9,12);
  877. [_positionImage addSubview:_ivPosition];
  878. _lblPosition = [UILabel new];
  879. _lblPosition.font=kTextFont;
  880. _lblPosition.frame=CGRectMake(CGRectGetMaxX(_ivPosition.frame)+3, 16,Screen_Width-24, 20);
  881. [_positionImage addSubview:_lblPosition];
  882. //照相和相册 —————————
  883. _vImage = [UIView new];
  884. _vImage.frame=CGRectMake(0,CGRectGetMaxY(_positionImage.frame), Screen_Width, 0);
  885. [_contentView addSubview:_vImage];
  886. CGFloat width = (SCREENWIDTH-70)/2;
  887. CustomButton *btnPhoto = [[CustomButton alloc]initWithFrame:CGRectMake(width-90, 0, 70, 20) andImage:[UIImage imageNamed:@"icon_takephoto"] addText:@"照相" addImageWidth:15 addImageHeight:12];
  888. [btnPhoto addTarget:self action:@selector(selectCamera) forControlEvents:(UIControlEventTouchUpInside)];
  889. [_vImage addSubview:btnPhoto];
  890. CustomButton *btn = [[CustomButton alloc]initWithFrame:CGRectMake(width, 0,70 , 20) andImage:[UIImage imageNamed:@"icon_photo"] addText:@"相册" addImageWidth:14 addImageHeight:15];
  891. [btn addTarget:self action:@selector(selectPhotos) forControlEvents:(UIControlEventTouchUpInside)];
  892. [_vImage addSubview:btn];
  893. CustomButton *btnLoaction = [[CustomButton alloc]initWithFrame:CGRectMake(width+85, 0,100 , 20) andImage:[UIImage imageNamed:@"icon_position"] addText:@"所在位置" addImageWidth:13 addImageHeight:16];
  894. [btnLoaction addTarget:self action:@selector(newMap) forControlEvents:(UIControlEventTouchUpInside)];
  895. [_vImage addSubview:btnLoaction];
  896. _vImage.hidden=YES;
  897. //保存按钮
  898. UIImage *pic = [UIImage imageNamed:@"bt_datasave"];
  899. CGFloat h = (Screen_Width-40)*pic.size.height/pic.size.width;
  900. _saveBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  901. _saveBtn.frame=CGRectMake(20, Screen_Height- h - 5 - rectStatusHeight-10-rectNavHeight, Screen_Width-40,h) ;
  902. [_saveBtn setBackgroundImage:pic forState:UIControlStateNormal];
  903. [_saveBtn addTarget:self action:@selector(saveData) forControlEvents:UIControlEventTouchUpInside];
  904. [self.view addSubview:_saveBtn];
  905. }
  906. /**
  907. 加载维修回执数据
  908. */
  909. - (void)loadData{
  910. [self startLoading];
  911. NSString *urlStr = ServerURL;
  912. NSMutableDictionary *dict = [NSMutableDictionary new];
  913. [dict setObject:@"GetRepairForNewReceiptIphone" forKey:@"Action"];
  914. [dict setObject:kkAccountCode forKey:@"AccountCode"];
  915. [dict setObject:kkUserCode forKey:@"UserCode"];
  916. [dict setObject:kkUserPwd forKey:@"UserPassword"];
  917. [dict setObject:kkSessionKey forKey:@"SessionKey"];
  918. [dict setObject:self.code.text forKey:@"RepairNo"];
  919. self.mDownManager = [[ASIDownManager alloc] init];
  920. self.mDownManager.delegate=self;
  921. self.mDownManager.onRequestSuccess=@selector(onRequestLoadSuccess:);
  922. self.mDownManager.onRequestFail=@selector(onRequestLoadFail:);
  923. [_mDownManager postHttpRequest:urlStr dic:dict path:nil fileName:nil];
  924. }
  925. /**
  926. 保存图片至沙盒
  927. @param currentImage <#currentImage description#>
  928. @param imageName <#imageName description#>
  929. @return <#return value description#>
  930. */
  931. - (DKCamera *) saveImage:(UIImage *)currentImage withName:(NSString *)imageName
  932. {
  933. if (!currentImage) {
  934. return nil;
  935. }
  936. NSDateFormatter *formater = [[NSDateFormatter alloc] init];
  937. formater.dateFormat = @"yyyyMMddHHmmss";
  938. NSString *currentTimeStr = [[formater stringFromDate:[NSDate date]] stringByAppendingFormat:@"_%d_.jpg" ,arc4random_uniform(10000)];
  939. NSData *imageData= [LeslieAsyncImageDownloader resetSizeOfImageData:currentImage maxSize:500];
  940. // 获取沙盒目录
  941. NSString *fullPath ;
  942. if([imageName isEqualToString:@""] || imageName == nil){
  943. fullPath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:currentTimeStr];
  944. }
  945. else{
  946. fullPath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:imageName];
  947. }
  948. // 将图片写入文件
  949. [imageData writeToFile:fullPath atomically:NO];
  950. UIImage *savedImage = [[UIImage alloc] initWithContentsOfFile:fullPath];
  951. DKCamera *camera = [[DKCamera alloc] init];
  952. camera.imagePath = fullPath;
  953. camera.thumbImage =savedImage;// [UIImage imageWithData:data];
  954. return camera;
  955. }
  956. /**
  957. 保存图片
  958. @return <#return value description#>
  959. */
  960. - (BOOL)savePicsManager{
  961. self.mDownManager = [[ASIDownManager alloc] init];
  962. self.mDownManager.delegate=self;
  963. NSString *urlStr = ServerURL;
  964. NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  965. [dict setObject:@"SaveImg" forKey:@"Action"];
  966. [dict setObject:[NSString stringWithFormat:@"%@",kkAccountCode]forKey:@"AccountCode"];
  967. [dict setObject:kkUserCode forKey:@"UserCode"];
  968. [dict setObject:kkUserPwd forKey:@"UserPassword"];
  969. [dict setObject:kkSessionKey forKey:@"SessionKey"];
  970. [self.imagePaths removeAllObjects];
  971. for (int i=0; i<self.assets.count; i++) {
  972. // 判断类型来获取Image
  973. DKPhotoAssets *asset = self.assets[i];
  974. DKCamera * c;
  975. if ([asset isKindOfClass:[DKPhotoAssets class]]) {
  976. c = [self saveImage:asset.originImage withName:nil];
  977. }else if ([asset isKindOfClass:[NSString class]]){
  978. }else if([asset isKindOfClass:[UIImage class]]){
  979. }else if ([asset isKindOfClass:[DKCamera class]]){
  980. c=(DKCamera *)asset;
  981. c= [self saveImage:c.thumbImage withName:nil];
  982. }
  983. //延时
  984. [NSThread sleepForTimeInterval:0.5];
  985. NSString* retValue= [_mDownManager syncPostHttpRequestUrl:urlStr dic:dict path:c.imagePath filename:nil fileType:@"image/jpeg"];
  986. if (retValue == nil || retValue.length == 0){
  987. [self cancel];
  988. [self showAlertViewText:@"上传图片失败"];
  989. self.navigationItem.rightBarButtonItem.enabled=YES;
  990. return NO;
  991. }
  992. NSDictionary *dicRetValue = [retValue JSONValue];
  993. if (dicRetValue && [dicRetValue isKindOfClass:[NSDictionary class]]) {
  994. int iStatus = [[dicRetValue objectForKey:@"Status"] intValue];
  995. if (iStatus == 0) {
  996. NSString * imgPath = [dicRetValue objectForKey:@"Result"];
  997. [self.imagePaths addObject:imgPath];
  998. }
  999. }
  1000. }
  1001. return YES;
  1002. }
  1003. /**
  1004. 保存数据
  1005. */
  1006. - (void)saveDataManager{
  1007. self.mDownManager = [[ASIDownManager alloc] init];
  1008. self.mDownManager.delegate=self;
  1009. self.mDownManager.onRequestSuccess = @selector(onLoadFinish:);
  1010. self.mDownManager.onRequestFail = @selector(onLoadFail:);
  1011. NSString *urlStr = ServerURL;
  1012. NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  1013. [dict setObject:@"SaveRepairReceiptIphone" forKey:@"Action"];
  1014. [dict setObject:[NSString stringWithFormat:@"%@",kkAccountCode]forKey:@"AccountCode"];
  1015. [dict setObject:kkUserCode forKey:@"UserCode"];
  1016. [dict setObject:kkUserPwd forKey:@"UserPassword"];
  1017. [dict setObject:kkSessionKey forKey:@"SessionKey"];
  1018. [dict setObject:kkLicenseCode forKey:@"LicenseCode"];
  1019. [dict setObject:self.repairId forKey:@"RepairID"];
  1020. [dict setObject:self.arrangementId forKey:@"ArrangementID"];
  1021. if (_lblPosition.text == nil) {
  1022. [dict setObject:@"" forKey:@"Position"];
  1023. }else{
  1024. [dict setObject:_lblPosition.text forKey:@"Position"];
  1025. }
  1026. ///////主界面
  1027. NSMutableDictionary *dicHead = [[NSMutableDictionary alloc] init];
  1028. NSMutableArray* arrHead = [[NSMutableArray alloc]init];
  1029. [dicHead setObject:self.sReceiptType forKeyedSubscript:@"ReceiptType"];
  1030. [dicHead setObject:self.sDelayDate forKeyedSubscript:@"NextRepairDate"];
  1031. [dicHead setObject:self.repairId forKeyedSubscript:@"RepairID"];
  1032. [dicHead setObject:self.sCode forKey:@"RepairNo"];
  1033. [dicHead setObject:self.customerId forKeyedSubscript:@"CustomerID"];
  1034. [dicHead setObject:self.receiptAmount.text forKeyedSubscript:@"ReceivableSum"];
  1035. [dicHead setObject:self.organizationId forKeyedSubscript:@"BusinessOrganization"];
  1036. [dicHead setObject:self.salesman forKeyedSubscript:@"SalesMan"];
  1037. [dicHead setObject:0 forKeyedSubscript:@"CreateUserID"];
  1038. [arrHead addObject:dicHead];
  1039. [dict setObject:[Util objectToJson:arrHead] forKey:@"ReceiptData"];
  1040. NSMutableDictionary *dicDetails;
  1041. NSMutableArray* arrDetails = [[NSMutableArray alloc]init];
  1042. for (NewRepairItemModel* m in self.model.detailsArr) {
  1043. dicDetails = [[NSMutableDictionary alloc] init];
  1044. [dicDetails setObject:m.detailId forKeyedSubscript:@"RepairDetailID"];
  1045. [dicDetails setObject:m.repairQuantity forKeyedSubscript:@"RepairQuantity"];
  1046. [dicDetails setObject:m.receiptQuantity forKeyedSubscript:@"ReceiptQuantity"];
  1047. [dicDetails setObject:m.completeQuantity forKeyedSubscript:@"FinishQuantity"];
  1048. if(m.remarks == nil){
  1049. [dicDetails setObject:@"" forKeyedSubscript:@"ReceiptRemarks"];
  1050. }else{
  1051. [dicDetails setObject:m.remarks forKeyedSubscript:@"ReceiptRemarks"];
  1052. }
  1053. [arrDetails addObject:dicDetails];
  1054. }
  1055. [dict setObject:[Util objectToJson:arrDetails] forKey:@"ReceiptDetailData"];
  1056. //////付款方式
  1057. NSMutableDictionary *dicSettle = [[NSMutableDictionary alloc] init];
  1058. NSMutableArray* arrSettle = [[NSMutableArray alloc]init];
  1059. if (self.sSettlementType == nil || [self.sSettlementType isEqual:@""]) {
  1060. [dict setObject:@"" forKey:@"ReceiptEarnestData"];
  1061. }else{
  1062. [dicSettle setObject:self.sSettlementType forKeyedSubscript:@"SettlementType"];
  1063. [dicSettle setObject:self.sSettlementTypeName forKeyedSubscript:@"SettlementTypeName"];
  1064. [dicSettle setObject:self.receiptAmount.text forKeyedSubscript:@"ReceivableSum"];
  1065. [dicSettle setObject:self.sEarnestFee forKeyedSubscript:@"EarnestFee"];
  1066. [dicSettle setObject:self.sExistHandleFee forKeyedSubscript:@"ExistsHandlingFee"];
  1067. [dicSettle setObject:self.sRemarks forKeyedSubscript:@"Remarks"];
  1068. [arrSettle addObject:dicSettle];
  1069. [dict setObject:[Util objectToJson:arrSettle] forKey:@"ReceiptEarnestData"];
  1070. }
  1071. if (self.imagePaths && self.imagePaths.count>0) {
  1072. [dict setObject:[self.imagePaths componentsJoinedByString:@"," ] forKey:@"ImagePath"];
  1073. }
  1074. [self.mDownManager postHttpRequest:urlStr dic:dict files:nil];
  1075. }
  1076. /**
  1077. 加载结束 隐藏进度条
  1078. */
  1079. - (void)cancel {
  1080. [self stopLoading];
  1081. }
  1082. /**
  1083. 返回
  1084. */
  1085. - (void)goBack
  1086. {
  1087. [self.navigationController popViewControllerAnimated:YES];
  1088. if([self.refreshDelegate respondsToSelector:@selector(refreshFollowUpData)]){
  1089. [self.refreshDelegate refreshFollowUpData];
  1090. }
  1091. }
  1092. /**
  1093. 保存数据前的校验
  1094. @return <#return value description#>
  1095. */
  1096. - (BOOL)check{
  1097. if(self.code.text == nil||[self.code.text isEqualToString:@""]){
  1098. [self showAlertViewText:@"请输入或扫描单号"];
  1099. return NO;
  1100. }
  1101. if(self.sCode == nil || [self.sCode isEqualToString:@""] )
  1102. {
  1103. [self showAlertViewText:@"请按回车加载数据!"];
  1104. return NO;
  1105. }
  1106. if(self.lblReceivablesValue != nil && [self.lblReceivablesValue.text doubleValue]>0&& self.receiptAmount.text.length == 0)
  1107. {
  1108. [self showAlertViewText:@"请输入回执金额"];
  1109. return NO;
  1110. }
  1111. if(self.receiptAmount.text != nil||![self.receiptAmount.text isEqualToString:@""]){
  1112. RegularExpression *re = [[RegularExpression alloc]init];
  1113. bool isMatchDiscount= [re AmountRegular:self.receiptAmount.text];
  1114. if(isMatchDiscount == NO){
  1115. [self showAlertViewText:@"请输入正确的数"];
  1116. self.receiptAmount.text = nil;
  1117. self.receiptAmount.placeholder = @"请输入回执金额";
  1118. return NO;
  1119. }
  1120. }
  1121. if(self.lblReceivablesValue != nil && [self.lblReceivablesValue.text doubleValue]>0
  1122. && self.receiptAmount.text.length != 0 &&[self.lblReceivablesValue.text doubleValue]<[self.receiptAmount.text doubleValue])
  1123. {
  1124. [self showAlertViewText:@"回执金额不能大于应收金额"];
  1125. return NO;
  1126. }
  1127. if([self.sReceiptType isEqualToString:@"5"] && (self.sDelayDate == nil||[self.sDelayDate isEqualToString:@""]))
  1128. {
  1129. [self showAlertViewText:@"请选择再次安排日期"];
  1130. return NO;
  1131. }
  1132. for (NewRepairItemModel *m in self.model.detailsArr) {
  1133. if(m.receiptQuantity == nil || m.receiptQuantity.length == 0)
  1134. {
  1135. [self showAlertViewText:@"请输入回执数量"];
  1136. return NO;
  1137. }
  1138. if(m.completeQuantity == nil || m.completeQuantity.length == 0)
  1139. {
  1140. m.completeQuantity = @"0";
  1141. }
  1142. if(m.repairQuantity == nil || m.repairQuantity.length == 0)
  1143. {
  1144. m.receiptQuantity = @"0";
  1145. }
  1146. if([self.sReceiptType isEqualToString:@"1"]){
  1147. if([m.receiptQuantity doubleValue]<=0 &&[m.repairQuantity doubleValue]-[m.completeQuantity doubleValue] != 0)
  1148. {
  1149. [self showAlertViewText:@"回执数量必须大于0"];
  1150. return NO;
  1151. }
  1152. }
  1153. if([m.receiptQuantity doubleValue]>[MAX_COUNT doubleValue])
  1154. {
  1155. [self showAlertViewText:[NSString stringWithFormat:@"回执数量的最大值为%@",MAX_COUNT ]];
  1156. return NO;
  1157. }
  1158. if([m.receiptQuantity doubleValue]>[m.repairQuantity doubleValue]-[m.completeQuantity doubleValue])
  1159. {
  1160. [self showAlertViewText:@"回执数量不能大于维修数量减去完成数量"];
  1161. return NO;
  1162. }
  1163. }
  1164. return YES;
  1165. }
  1166. /**
  1167. 保存数据
  1168. */
  1169. - (void)saveData{
  1170. [self.view endEditing:YES];
  1171. if (![self check]) {
  1172. return;
  1173. }
  1174. self.navigationItem.rightBarButtonItem.enabled=NO;
  1175. [self startLoading];
  1176. dispatch_async(dispatch_get_global_queue(0, 0), ^{
  1177. if ([self savePicsManager]) {
  1178. [self saveDataManager];
  1179. }
  1180. });
  1181. }
  1182. /**
  1183. 单据收款方式的画面跳转
  1184. */
  1185. - (void)settlementTypeCilck{
  1186. if (self.sCode == nil || self.sCode.length == 0 |
  1187. self.lblReceivablesValue.text == nil || [self.lblReceivablesValue.text doubleValue] == 0) {
  1188. return;
  1189. }
  1190. [self.view endEditing:YES];
  1191. self.hidesBottomBarWhenPushed=YES;
  1192. SettlementTypeVC *tc = [[SettlementTypeVC alloc] init];
  1193. tc.sDelegate=self;
  1194. [self.navigationController pushViewController:tc animated:YES];
  1195. self.hidesBottomBarWhenPushed=NO;
  1196. }
  1197. /**
  1198. 单据回执类型的画面跳转
  1199. */
  1200. - (void)btnTypeCilck{
  1201. if (self.sCode == nil || self.sCode.length == 0) {
  1202. return;
  1203. }
  1204. [self.view endEditing:YES];
  1205. self.hidesBottomBarWhenPushed=YES;
  1206. StatusInfoTextVC *tc = [[StatusInfoTextVC alloc] init];
  1207. tc.sdelegate=self;
  1208. [tc.arrFilter addObjectsFromArray: _arrayStatus];
  1209. [self.navigationController pushViewController:tc animated:YES];
  1210. self.hidesBottomBarWhenPushed=NO;
  1211. }
  1212. /**
  1213. 清空画面
  1214. */
  1215. - (void)clearData{
  1216. self.code.enabled=YES;
  1217. self.code.text = @"";
  1218. self.sCode = @"";
  1219. self.receiptAmount.text = @"";
  1220. self.lblStaffNameValue.text = @"";
  1221. self.lblCompleteAmountValue.text = @"";
  1222. self.lblReceivablesValue.text = @"";
  1223. self.lblRepairDateValue.text = @"";
  1224. self.sDelayDate = @"";
  1225. [self.delayDate setTitle:@"请选择再次安排日期" forState:UIControlStateNormal];
  1226. self.sReceiptType = @"";
  1227. [self.receiptType setTitle:@"请选择回执类型" forState:UIControlStateNormal];
  1228. self.sSettlementType = @"";
  1229. [self.settlementType setTitle:@"请选择收款方式" forState:UIControlStateNormal];
  1230. _lblPosition.text = @"";
  1231. _positionImage.hidden=YES;
  1232. _vImage.hidden=YES;
  1233. _positionHeight=0;
  1234. [self.model.detailsArr removeAllObjects];
  1235. [self.assets removeAllObjects];
  1236. [self.vCustomTableView reloadData];
  1237. [self.collectionView reloadData];
  1238. }
  1239. /**
  1240. 清空单个控件数据
  1241. @param sender <#sender description#>
  1242. */
  1243. - (void)clearData:(id)sender{
  1244. UIButton *btn=sender;
  1245. [self.view endEditing:YES];
  1246. switch (btn.tag) {
  1247. case 1001:
  1248. {
  1249. self.code.text = @"";
  1250. }
  1251. break;
  1252. case 1003:
  1253. {
  1254. self.sDelayDate = @"";
  1255. [self.delayDate setTitle:@"请选择再次安排日期" forState:UIControlStateNormal];
  1256. }
  1257. break;
  1258. default:
  1259. break;
  1260. }
  1261. }
  1262. /**
  1263. 时间事件
  1264. @param sender <#sender description#>
  1265. */
  1266. - (void)btnDateCilck:(id)sender{
  1267. UIButton *btn=sender;
  1268. [self.view endEditing:YES];
  1269. if (self.sCode == nil || self.sCode.length == 0 || ![self.sReceiptType isEqualToString: @"5"]) {
  1270. return;
  1271. }
  1272. __weak typeof(self) weakself=self;
  1273. switch (btn.tag) {
  1274. case 1002:
  1275. {
  1276. _dealDatePicker = [BRDatePickerView PickerAlertWithTitle:@""];
  1277. [_dealDatePicker configureSelectionBlock:^(NSString *date){
  1278. self.sDelayDate=date;
  1279. } andCompletionBlock:^(void){
  1280. [weakself.delayDate setTitle:self.sDelayDate forState:UIControlStateNormal];
  1281. } andCancelBlock:^(void){
  1282. self.sDelayDate=weakself.delayDate.titleLabel.text;
  1283. if([self.sDelayDate isEqualToString:@"请选择再次安排日期"]){
  1284. self.sDelayDate = @"";
  1285. }
  1286. }];
  1287. [_dealDatePicker show];
  1288. }
  1289. break;
  1290. default:
  1291. break;
  1292. }
  1293. }
  1294. /**
  1295. 隐藏键盘
  1296. */
  1297. - (void)hideKey
  1298. {
  1299. [self.view endEditing:YES];
  1300. }
  1301. /**
  1302. 文本框的长度限制 实现监听方法
  1303. @param sender <#sender description#>
  1304. */
  1305. - (void)onFocusPeopleEditingChanged:(NSNotification *)sender
  1306. {
  1307. UITextField *textField = (UITextField *)sender.object;
  1308. NSString *toBeString = textField.text;
  1309. NSString *lang = [[UIApplication sharedApplication]textInputMode].primaryLanguage;
  1310. int kMaxLength=0;
  1311. //费用
  1312. if ([textField isEqual:self.receiptAmount ]) {
  1313. kMaxLength=17;
  1314. if (toBeString != nil && toBeString.length>0 && [toBeString floatValue]-MAXIMUM_QUANTITY>0.0000000001f) {
  1315. textField.text = MAX_COUNT;
  1316. toBeString = MAX_COUNT;
  1317. }
  1318. }
  1319. if ([lang isEqualToString:@"zh-Hans"]) {
  1320. UITextRange *selectedRange = [textField markedTextRange];
  1321. UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
  1322. if (!position) {
  1323. if (toBeString.length > kMaxLength) {
  1324. textField.text = [toBeString substringToIndex:kMaxLength];
  1325. }
  1326. }
  1327. }else{
  1328. if (toBeString.length > kMaxLength) {
  1329. textField.text = [toBeString substringToIndex:kMaxLength];
  1330. }
  1331. }
  1332. }
  1333. /**
  1334. 加载条码数据接口
  1335. @param code <#code description#>
  1336. */
  1337. - (void)reloadDataWithOnlyCode:(NSString *)code
  1338. {
  1339. self.code.text=code;
  1340. self.sCode=code;
  1341. self.receiptAmount.enabled=YES;
  1342. double delayInSeconds = 0.5;
  1343. dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
  1344. dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
  1345. [self loadData];
  1346. });
  1347. }
  1348. /**
  1349. 获取图片总数
  1350. @return <#return value description#>
  1351. */
  1352. - (NSInteger)cameraCount{
  1353. NSInteger count=0;
  1354. for (int i=0; i<self.assets.count; i++) {
  1355. id asset=self.assets[i];
  1356. if ([asset isKindOfClass:[DKCamera class]]) {
  1357. count++;
  1358. }
  1359. }
  1360. return count;
  1361. }
  1362. /**
  1363. 选择照相机函数
  1364. */
  1365. - (void)selectCamera{
  1366. DKCameraViewController *cameraVc = [[DKCameraViewController alloc] init];
  1367. __weak typeof(self) weakSelf = self;
  1368. // 多选相册+相机多拍 回调
  1369. [cameraVc startCameraOrPhotoFileWithViewController:self complate:^(NSArray *object) {
  1370. // 选择完照片、拍照完回调
  1371. [object enumerateObjectsUsingBlock:^(id asset, NSUInteger idx, BOOL *stop) {
  1372. if(weakSelf.assets.count<9){
  1373. if ([asset isKindOfClass:[DKCamera class]]) {
  1374. [weakSelf.assets addObject:asset];
  1375. }else{
  1376. [weakSelf.assets addObject:asset];
  1377. }
  1378. }else{
  1379. [self showAlertViewText:@"最多只能选择9张图片"];
  1380. }
  1381. }];
  1382. [weakSelf.collectionView reloadData];
  1383. }];
  1384. }
  1385. /**
  1386. 选择相册函数
  1387. */
  1388. - (void)selectPhotos {
  1389. // 创建控制器
  1390. DKPhotoPickerViewController *pickerVc = [[DKPhotoPickerViewController alloc] init];
  1391. // 默认显示相册里面的内容SavePhotos
  1392. pickerVc.status = PickerViewShowStatusCameraRoll;
  1393. pickerVc.selectPickers = self.assets;
  1394. // 最多能选9张图片
  1395. pickerVc.minCount = 9;
  1396. pickerVc.cameraCount = [self cameraCount];
  1397. pickerVc.delegate = self;
  1398. [pickerVc show];
  1399. }
  1400. /**
  1401. 获取table view的高度
  1402. @param soundArray <#soundArray description#>
  1403. @return <#return value description#>
  1404. */
  1405. - (CGFloat)getDataViewHeight:(NSArray *)soundArray {
  1406. // 上下间隔已经在frame上做了
  1407. NSInteger row = soundArray.count;
  1408. return (row *270);
  1409. }
  1410. /**
  1411. 获取地图位置
  1412. 关宏厚删除高德地图
  1413. 2018-11-14
  1414. */
  1415. - (void)newMap{
  1416. // self.hidesBottomBarWhenPushed=YES;
  1417. // MapViewController *mc = [[MapViewController alloc]init];
  1418. // mc.pDelegate = self;
  1419. //[self.navigationController pushViewController:mc animated:YES];
  1420. }
  1421. @end