NewCar.m 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  1. //
  2. // NewCar.m
  3. // LN_School
  4. //
  5. // Created by apple on 2017/12/15.
  6. // Copyright © 2017年 Danson. All rights reserved.
  7. //
  8. #import "NewCar.h"
  9. #import "PureCamera.h"
  10. #import "HKClipperHelper.h"
  11. @interface NewCar ()<UIActionSheetDelegate>
  12. {
  13. XLFormRowDescriptor *btnRow;//记录当前添加照片的row
  14. NSString *photoPath,*filePath,*filePath2,*filePath3;
  15. }
  16. @end
  17. @implementation NewCar
  18. - (void)viewDidLoad {
  19. [super viewDidLoad];
  20. photoPath = filePath = filePath2 = filePath3 = @"";
  21. XLFormDescriptor *formDescriptor = [XLFormDescriptor formDescriptor];
  22. XLFormSectionDescriptor *section = [XLFormSectionDescriptor formSectionWithTitle:@"必填信息"];
  23. [formDescriptor addFormSection:section];
  24. XLFormRowDescriptor *row = [XLFormRowDescriptor formRowDescriptorWithTag:@"licnum" rowType:XLFormRowDescriptorTypeText title:@"车牌号"];
  25. row.required = YES;
  26. [row.cellConfigAtConfigure setObject:@(NSTextAlignmentRight) forKey:@"textField.textAlignment"];
  27. [row.cellConfigAtConfigure setObject:@"请输入车牌号" forKey:@"textField.placeholder"];
  28. [section addFormRow:row];
  29. row = [XLFormRowDescriptor formRowDescriptorWithTag:@"manufacture" rowType:XLFormRowDescriptorTypeText title:@"生产厂家"];
  30. row.required = YES;
  31. [row.cellConfigAtConfigure setObject:@(NSTextAlignmentRight) forKey:@"textField.textAlignment"];
  32. [row.cellConfigAtConfigure setObject:@"请输入生产厂家" forKey:@"textField.placeholder"];
  33. [section addFormRow:row];
  34. row = [XLFormRowDescriptor formRowDescriptorWithTag:@"brand" rowType:XLFormRowDescriptorTypeText title:@"车辆品牌"];
  35. row.required = YES;
  36. [row.cellConfigAtConfigure setObject:@(NSTextAlignmentRight) forKey:@"textField.textAlignment"];
  37. [row.cellConfigAtConfigure setObject:@"请输入车辆品牌" forKey:@"textField.placeholder"];
  38. [section addFormRow:row];
  39. row = [XLFormRowDescriptor formRowDescriptorWithTag:@"model" rowType:XLFormRowDescriptorTypeText title:@"车辆型号"];
  40. row.required = YES;
  41. [row.cellConfigAtConfigure setObject:@(NSTextAlignmentRight) forKey:@"textField.textAlignment"];
  42. [row.cellConfigAtConfigure setObject:@"请输入车辆型号" forKey:@"textField.placeholder"];
  43. [section addFormRow:row];
  44. row = [XLFormRowDescriptor formRowDescriptorWithTag:@"franum" rowType:XLFormRowDescriptorTypeText title:@"车架号"];
  45. row.required = YES;
  46. [row.cellConfigAtConfigure setObject:@(NSTextAlignmentRight) forKey:@"textField.textAlignment"];
  47. [row.cellConfigAtConfigure setObject:@"请输入车架号" forKey:@"textField.placeholder"];
  48. [section addFormRow:row];
  49. row = [XLFormRowDescriptor formRowDescriptorWithTag:@"platecolor" rowType:XLFormRowDescriptorTypeSelectorPush title:@"车辆颜色"];
  50. row.required = YES;
  51. row.selectorOptions = @[[XLFormOptionsObject formOptionsObjectWithValue:@(1) displayText:@"蓝色"],[XLFormOptionsObject formOptionsObjectWithValue:@(2) displayText:@"黄色"],[XLFormOptionsObject formOptionsObjectWithValue:@(3) displayText:@"黑色"],[XLFormOptionsObject formOptionsObjectWithValue:@(4) displayText:@"白色"],[XLFormOptionsObject formOptionsObjectWithValue:@(5) displayText:@"绿色"],[XLFormOptionsObject formOptionsObjectWithValue:@(9) displayText:@"其他"]];
  52. row.value = [XLFormOptionsObject formOptionsObjectWithValue:@(1) displayText:@"蓝色"];
  53. [section addFormRow:row];
  54. row = [XLFormRowDescriptor formRowDescriptorWithTag:@"perdritype" rowType:XLFormRowDescriptorTypeSelectorPush title:@"培训车型"];
  55. row.required = YES;
  56. row.selectorOptions = @[[XLFormOptionsObject formOptionsObjectWithValue:@(0) displayText:@"A1"],[XLFormOptionsObject formOptionsObjectWithValue:@(1) displayText:@"A2"],[XLFormOptionsObject formOptionsObjectWithValue:@(2) displayText:@"A3"],[XLFormOptionsObject formOptionsObjectWithValue:@(3) displayText:@"B1"],[XLFormOptionsObject formOptionsObjectWithValue:@(4) displayText:@"B2"],[XLFormOptionsObject formOptionsObjectWithValue:@(5) displayText:@"C1"],[XLFormOptionsObject formOptionsObjectWithValue:@(6) displayText:@"C2"],[XLFormOptionsObject formOptionsObjectWithValue:@(7) displayText:@"C3"],[XLFormOptionsObject formOptionsObjectWithValue:@(8) displayText:@"C4"],[XLFormOptionsObject formOptionsObjectWithValue:@(9) displayText:@"C5"],[XLFormOptionsObject formOptionsObjectWithValue:@(10) displayText:@"D"],[XLFormOptionsObject formOptionsObjectWithValue:@(11) displayText:@"E"],[XLFormOptionsObject formOptionsObjectWithValue:@(12) displayText:@"F"],[XLFormOptionsObject formOptionsObjectWithValue:@(13) displayText:@"M"],[XLFormOptionsObject formOptionsObjectWithValue:@(14) displayText:@"N"],[XLFormOptionsObject formOptionsObjectWithValue:@(15) displayText:@"P"]];
  57. row.value = [XLFormOptionsObject formOptionsObjectWithValue:@(5) displayText:@"C1"];
  58. [section addFormRow:row];
  59. row = [XLFormRowDescriptor formRowDescriptorWithTag:@"buydate" rowType:XLFormRowDescriptorTypeDate title:@"购买日期"];
  60. row.required = YES;
  61. // row.value = [NSDate new];
  62. [section addFormRow:row];
  63. row = [XLFormRowDescriptor formRowDescriptorWithTag:@"insuranceNum" rowType:XLFormRowDescriptorTypeText title:@"交强险保单号"];
  64. row.required = YES;
  65. [row.cellConfigAtConfigure setObject:@(NSTextAlignmentRight) forKey:@"textField.textAlignment"];
  66. [row.cellConfigAtConfigure setObject:@"请输入交强险保单号" forKey:@"textField.placeholder"];
  67. [section addFormRow:row];
  68. row = [XLFormRowDescriptor formRowDescriptorWithTag:@"insuranceMoney" rowType:XLFormRowDescriptorTypeNumber title:@"保险金额(元)"];
  69. row.required = YES;
  70. [row.cellConfigAtConfigure setObject:@(NSTextAlignmentRight) forKey:@"textField.textAlignment"];
  71. [row.cellConfigAtConfigure setObject:@"请输入保险金额" forKey:@"textField.placeholder"];
  72. [section addFormRow:row];
  73. row = [XLFormRowDescriptor formRowDescriptorWithTag:@"insuranceStartTime" rowType:XLFormRowDescriptorTypeDate title:@"保险缴纳时间"];
  74. row.required = YES;
  75. // row.value = [NSDate new];
  76. [section addFormRow:row];
  77. row = [XLFormRowDescriptor formRowDescriptorWithTag:@"insuranceLimitTime" rowType:XLFormRowDescriptorTypeNumber title:@"保险有效时长(年)"];
  78. row.required = YES;
  79. [row.cellConfigAtConfigure setObject:@(NSTextAlignmentRight) forKey:@"textField.textAlignment"];
  80. [row.cellConfigAtConfigure setObject:@"请输入保险有效时长" forKey:@"textField.placeholder"];
  81. [section addFormRow:row];
  82. row = [XLFormRowDescriptor formRowDescriptorWithTag:@"checkTime1" rowType:XLFormRowDescriptorTypeDate title:@"车辆年检日期"];
  83. row.required = YES;
  84. // row.value = [NSDate new];
  85. [section addFormRow:row];
  86. row = [XLFormRowDescriptor formRowDescriptorWithTag:@"nextTime1" rowType:XLFormRowDescriptorTypeDate title:@"下次车辆年检日期"];
  87. row.required = YES;
  88. // row.value = [NSDate new];
  89. [section addFormRow:row];
  90. row = [XLFormRowDescriptor formRowDescriptorWithTag:@"checkTime2" rowType:XLFormRowDescriptorTypeDate title:@"车辆综合性能检测日期"];
  91. row.required = YES;
  92. // row.value = [NSDate new];
  93. [section addFormRow:row];
  94. row = [XLFormRowDescriptor formRowDescriptorWithTag:@"nextTime2" rowType:XLFormRowDescriptorTypeDate title:@"下次车辆综合性能检测日期"];
  95. row.required = YES;
  96. // row.value = [NSDate new];
  97. [section addFormRow:row];
  98. //上传照片
  99. XLFormRowDescriptor *buttonRow = [XLFormRowDescriptor formRowDescriptorWithTag:@"photoPath" rowType:XLFormRowDescriptorTypeButton title:@"车辆照片"];
  100. buttonRow.height = 70;
  101. [buttonRow.cellConfig setObject:@(NSTextAlignmentNatural) forKey:@"textLabel.textAlignment"];
  102. [buttonRow.cellConfig setObject:[UIImage imageNamed:@"NOImg"] forKey:@"imageView.image"];
  103. buttonRow.action.formSelector = @selector(getPhotoPath:);
  104. [section addFormRow:buttonRow];
  105. buttonRow = [XLFormRowDescriptor formRowDescriptorWithTag:@"filePath" rowType:XLFormRowDescriptorTypeButton title:@"行驶证(正本)"];
  106. buttonRow.height = 70;
  107. [buttonRow.cellConfig setObject:@(NSTextAlignmentNatural) forKey:@"textLabel.textAlignment"];
  108. [buttonRow.cellConfig setObject:[UIImage imageNamed:@"NOImg"] forKey:@"imageView.image"];
  109. buttonRow.action.formSelector = @selector(getPhotoPath:);
  110. [section addFormRow:buttonRow];
  111. buttonRow = [XLFormRowDescriptor formRowDescriptorWithTag:@"filePath2" rowType:XLFormRowDescriptorTypeButton title:@"行驶证(副本)"];
  112. buttonRow.height = 70;
  113. [buttonRow.cellConfig setObject:@(NSTextAlignmentNatural) forKey:@"textLabel.textAlignment"];
  114. [buttonRow.cellConfig setObject:[UIImage imageNamed:@"NOImg"] forKey:@"imageView.image"];
  115. buttonRow.action.formSelector = @selector(getPhotoPath:);
  116. [section addFormRow:buttonRow];
  117. buttonRow = [XLFormRowDescriptor formRowDescriptorWithTag:@"filePath3" rowType:XLFormRowDescriptorTypeButton title:@"车辆综合性能检测附件"];
  118. buttonRow.height = 70;
  119. [buttonRow.cellConfig setObject:@(NSTextAlignmentNatural) forKey:@"textLabel.textAlignment"];
  120. [buttonRow.cellConfig setObject:[UIImage imageNamed:@"NOImg"] forKey:@"imageView.image"];
  121. buttonRow.action.formSelector = @selector(getPhotoPath:);
  122. [section addFormRow:buttonRow];
  123. section = [XLFormSectionDescriptor formSectionWithTitle:@"选填信息"];
  124. [formDescriptor addFormSection:section];
  125. row = [XLFormRowDescriptor formRowDescriptorWithTag:@"engnum" rowType:XLFormRowDescriptorTypeText title:@"发动机号"];
  126. [row.cellConfigAtConfigure setObject:@(NSTextAlignmentRight) forKey:@"textField.textAlignment"];
  127. [row.cellConfigAtConfigure setObject:@"请输入发动机号" forKey:@"textField.placeholder"];
  128. [section addFormRow:row];
  129. self.form = formDescriptor;
  130. CGFloat bottomBtnH = 50;
  131. self.tableView.height = kSize.height - bottomBtnH - SafeAreaBottomHeight;
  132. UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
  133. btn.frame = CGRectMake(0, kSize.height-kNavOffSet-bottomBtnH - SafeAreaBottomHeight, kSize.width, bottomBtnH);
  134. [btn setTitle:@"提交" textColor:[UIColor whiteColor] font:Font17 fotState:UIControlStateNormal];
  135. btn.backgroundColor = defGreen;
  136. [btn addTarget:self action:@selector(commitAction) forControlEvents:UIControlEventTouchUpInside];
  137. [self.view addSubview:btn];
  138. self.title = @"新增车辆";
  139. self.view.backgroundColor = KBackGroundColor;
  140. [self goBackByNavigation];
  141. }
  142. -(void)commitAction {
  143. //校验数据
  144. NSArray *arr = [self formValidationErrors];
  145. if ([arr count] != 0) {
  146. NSError *error = arr[0];
  147. ShowMsg(error.userInfo[@"NSLocalizedDescription"]);
  148. return;
  149. }
  150. // NSLog(@"%@",[self formValues]);
  151. if (filePath.length < 1 || filePath2.length < 1 || filePath3.length < 1 || photoPath.length < 1) {
  152. ShowMsg(@"请上传照片附件");
  153. return;
  154. }
  155. [self addCar];
  156. }
  157. - (void)getPhotoPath:(XLFormRowDescriptor *)row {
  158. [self deselectFormRow:row];
  159. btnRow = row;
  160. UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"选择照片" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"拍照",@"相册", nil];
  161. [sheet showInView:self.view];
  162. }
  163. -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
  164. if (buttonIndex == 0) {//拍照
  165. if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
  166. myDelegate.takePhotoAllRect = YES;
  167. PureCamera *homec = [[PureCamera alloc] init];
  168. homec.fininshcapture = ^(UIImage *photo) {
  169. //如果拍照过程取消 要另外处理
  170. myDelegate.takePhotoAllRect = NO;
  171. if (photo) {
  172. [self uploadCarImgWithImage:photo];
  173. }
  174. };
  175. [self presentViewController:homec
  176. animated:NO
  177. completion:nil];
  178. } else {
  179. NSLog(@"相机调用失败");
  180. }
  181. }else if (buttonIndex == 1){//相册
  182. if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum]) {
  183. [HKClipperHelper shareManager].nav = self.navigationController;
  184. [HKClipperHelper shareManager].clippedImgSize = CGSizeMake(4, 5);
  185. [HKClipperHelper shareManager].clipperType = ClipperTypeImgMove;
  186. [HKClipperHelper shareManager].systemEditing = NO;
  187. [HKClipperHelper shareManager].isSystemType = NO;
  188. [HKClipperHelper shareManager].clippedImageHandler = ^(UIImage *photo) {
  189. [self uploadCarImgWithImage:photo];
  190. };
  191. [[HKClipperHelper shareManager] photoWithSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
  192. }else{
  193. NSLog(@"相册调用失败");
  194. }
  195. }
  196. }
  197. #pragma mark 数据
  198. - (void)uploadCarImgWithImage:(UIImage *)img{
  199. //判断网络是否连接
  200. if (![NetManager connectedToNetWork]) {
  201. showMsgUnconnect();
  202. return;
  203. }
  204. NSString *type = @"";
  205. if ([btnRow.tag isEqualToString:@"photoPath"]) {
  206. type = @"1";
  207. }
  208. if ([btnRow.tag isEqualToString:@"filePath"]) {
  209. type = @"2";
  210. }
  211. if ([btnRow.tag isEqualToString:@"filePath2"]) {
  212. type = @"3";
  213. }
  214. if ([btnRow.tag isEqualToString:@"filePath3"]) {
  215. type = @"4";
  216. }
  217. NSData *data = UIImageJPEGRepresentation(img,1.0);
  218. if (data.length > 50*1024) {
  219. //如果图片大于50kb 就压缩
  220. data = UIImageJPEGRepresentation(img,0.5);
  221. }
  222. NSString *imgString = [data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
  223. NSMutableDictionary * mdic = [NSMutableDictionary new];
  224. [mdic setValue:@"" forKey:@"carId"];
  225. [mdic setValue:type forKey:@"type"];
  226. [mdic setValue:imgString forKey:@"content"];
  227. NSString *method = @"uploadCarImg";
  228. [MBProgressHUD showLoadToView:self.view];
  229. [NetManager requestAnythingWithURL:method dictionary:mdic dataArray:nil completion:^(NSDictionary *root) {
  230. [MBProgressHUD hideHUDForView:self.view];
  231. if (!root) {
  232. ShowMsg(@"照片上传失败,请重试");
  233. return;
  234. }
  235. ShowMsg(root[@"msg"]);
  236. if ([root[@"code"] integerValue] == 1) {
  237. return;
  238. }
  239. switch ([type integerValue]) {
  240. case 1:
  241. photoPath = root[@"body"];
  242. break;
  243. case 2:
  244. filePath = root[@"body"];
  245. break;
  246. case 3:
  247. filePath2 = root[@"body"];
  248. break;
  249. case 4:
  250. filePath3 = root[@"body"];
  251. break;
  252. default:
  253. break;
  254. }
  255. [btnRow.cellConfig setObject:img forKey:@"imageView.image"];
  256. [self.tableView reloadData];
  257. }];
  258. }
  259. - (void)addCar{
  260. //判断网络是否连接
  261. if (![NetManager connectedToNetWork]) {
  262. showMsgUnconnect();
  263. return;
  264. }
  265. NSMutableDictionary * mdic = [NSMutableDictionary new];
  266. NSDictionary *valueDic = [self formValues];
  267. [mdic setValue:defUser.userDict[@"id"] forKey:@"userId"];
  268. [mdic setValue:valueDic[@"licnum"] forKey:@"licnum"];
  269. [mdic setValue:valueDic[@"manufacture"] forKey:@"manufacture"];
  270. [mdic setValue:valueDic[@"brand"] forKey:@"brand"];
  271. [mdic setValue:valueDic[@"model"] forKey:@"model"];
  272. //颜色
  273. id option = valueDic[@"platecolor"];
  274. if (option != [NSNull null]) {
  275. [mdic setValue:[(XLFormOptionsObject *)option formValue] forKey:@"platecolor"];
  276. }else {
  277. [mdic setValue:@"" forKey:@"platecolor"];
  278. }
  279. //车型
  280. option = valueDic[@"perdritype"];
  281. if (option != [NSNull null]) {
  282. [mdic setValue:[(XLFormOptionsObject *)option formDisplayText] forKey:@"perdritype"];
  283. }else {
  284. [mdic setValue:@"" forKey:@"perdritype"];
  285. }
  286. [mdic setValue:valueDic[@"franum"] forKey:@"franum"];
  287. [mdic setValue:valueDic[@"engnum"] forKey:@"engnum"];
  288. [mdic setValue:valueDic[@"insuranceNum"] forKey:@"insuranceNum"];
  289. [mdic setValue:valueDic[@"insuranceMoney"] forKey:@"insuranceMoney"];
  290. [mdic setValue:valueDic[@"insuranceLimitTime"] forKey:@"insuranceLimitTime"];
  291. NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
  292. formatter.dateFormat = @"yyyy-MM-dd";
  293. NSString *dateString = @"";
  294. if (valueDic[@"buydate"]) {
  295. dateString = [formatter stringFromDate:valueDic[@"buydate"]];
  296. }
  297. [mdic setValue:dateString forKey:@"buydate"];
  298. dateString = @"";
  299. if (valueDic[@"insuranceStartTime"]) {
  300. dateString = [formatter stringFromDate:valueDic[@"insuranceStartTime"]];
  301. }
  302. [mdic setValue:dateString forKey:@"insuranceStartTime"];
  303. dateString = @"";
  304. if (valueDic[@"checkTime1"]) {
  305. dateString = [formatter stringFromDate:valueDic[@"checkTime1"]];
  306. }
  307. [mdic setValue:dateString forKey:@"checkTime1"];
  308. dateString = @"";
  309. if (valueDic[@"nextTime1"]) {
  310. dateString = [formatter stringFromDate:valueDic[@"nextTime1"]];
  311. }
  312. [mdic setValue:dateString forKey:@"nextTime1"];
  313. dateString = @"";
  314. if (valueDic[@"checkTime2"]) {
  315. dateString = [formatter stringFromDate:valueDic[@"checkTime2"]];
  316. }
  317. [mdic setValue:dateString forKey:@"checkTime2"];
  318. dateString = @"";
  319. if (valueDic[@"nextTime2"]) {
  320. dateString = [formatter stringFromDate:valueDic[@"nextTime2"]];
  321. }
  322. [mdic setValue:dateString forKey:@"nextTime2"];
  323. [mdic setValue:photoPath forKey:@"photoPath"];
  324. [mdic setValue:filePath forKey:@"filePath"];
  325. [mdic setValue:filePath2 forKey:@"filePath2"];
  326. [mdic setValue:filePath3 forKey:@"filePath3"];
  327. NSString *method = @"addCar";
  328. [MBProgressHUD showLoadToView:self.view];
  329. [NetManager requestAnythingWithURL:method dictionary:mdic dataArray:nil completion:^(NSDictionary *root) {
  330. [MBProgressHUD hideHUDForView:self.view];
  331. if (!root) {
  332. ShowMsg(@"数据请求失败,请重试");
  333. return;
  334. }
  335. if ([root[@"code"] integerValue] == 1) {
  336. ShowMsg(root[@"msg"]);
  337. return;
  338. }
  339. [self.navigationController popViewControllerAnimated:YES];
  340. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"温馨提示" message:root[@"msg"] delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
  341. [alert show];
  342. }];
  343. }
  344. - (void)didReceiveMemoryWarning {
  345. [super didReceiveMemoryWarning];
  346. }
  347. @end