DeviceEnterFormVC.m 55 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263
  1. //
  2. // DeviceEnterFormVC.m
  3. // shiku_im
  4. //
  5. // Created by huangyp-pc on 2019/6/25.
  6. //
  7. #import "DeviceEnterFormVC.h"
  8. #import "MoreGridModel.h"
  9. #import "DeviceFormView.h"
  10. #import "DeviceSpecialView.h"
  11. #import "LYYDMDataSearchVC.h"
  12. #import "DocumentDataVC.h"
  13. #import "LYYDBfindSelctedVC.h"
  14. #import "MFselectVC.h"
  15. #import "ConfigModel.h"
  16. #import "YPSelectShenPiPersonVC.h"
  17. #import "DeviceFormVC.h"
  18. @interface DeviceEnterFormVC ()
  19. @property (nonatomic,strong) NSMutableArray *gridData;//主从表数据
  20. @property (nonatomic,strong) DeviceSpecialView *dView;//
  21. @end
  22. @implementation DeviceEnterFormVC
  23. {
  24. BOOL multidetailgrid;//判断是否有多明细表
  25. NSMutableArray *_listArr; //获取配置表的数据(主表)
  26. JXDatePicker *_date;
  27. UITableView *_acceptTableView;
  28. int _textTag; //判断哪个textView触发选择日期
  29. ConfigModel *_cModel; //单据配置时标识状态码字段
  30. UIButton *uploadBtn;//接单或提交按钮
  31. }
  32. - (void)viewDidLoad {
  33. [super viewDidLoad];
  34. _listArr = [NSMutableArray new];
  35. _gridData = [NSMutableArray new];
  36. multidetailgrid = NO;
  37. _acceptTableView = nil;
  38. /*获取配置数据*/
  39. [self getFormDataFromSever];
  40. }
  41. #pragma mark --- 提交上传操作
  42. -(void)uploadFormAction
  43. {
  44. [MBProgressHUD showMessage:@"" toView:self.view];
  45. [self.view endEditing:YES];
  46. //拼接主表上传的数据
  47. NSMutableDictionary *formParam = [NSMutableDictionary new];
  48. //拼接多明细表单上传的数据
  49. NSMutableArray *dataArr = [NSMutableArray new];
  50. for (UITableView *tableView in self.dView.tableViewArr) {
  51. [tableView endEditing:YES];
  52. id obj = tableView.dataArray[0];
  53. if ([obj isKindOfClass:[FormModel class]]) {
  54. for (int i = 0; i<_listArr.count; i++) {
  55. FormModel *model = _listArr[i];
  56. for (int j = 0; j < model.showItems.count; j++) {
  57. DetailFormModel *detailModel = model.showItems[j];
  58. /*判断必填项*/
  59. if ([detailModel.fd_allowblank isEqualToString:@"F"] || [detailModel.fd_allowblank isEqualToString:@"necessaryField"]) {
  60. if (detailModel.fd_value.length == 0) {
  61. [JOShowMessageFromNavi showDropViewWithMessage:@"必填项不能为空!" ToNavi:self.navigationController withColor:nil];
  62. [MBProgressHUD hideHUDForView:self.view];
  63. return;
  64. }else{
  65. [formParam addEntriesFromDictionary:@{detailModel.fd_field:FORMAT(@"%@",detailModel.fd_value != nil ? detailModel.fd_value:@"")}];
  66. }
  67. }else{
  68. [formParam addEntriesFromDictionary:@{detailModel.fd_field:FORMAT(@"%@",detailModel.fd_value != nil ? detailModel.fd_value:@"")}];
  69. }
  70. }
  71. for (int j = 0; j < model.hideItems.count; j++) {
  72. DetailFormModel *detailModel = model.hideItems[j];
  73. [formParam addEntriesFromDictionary:@{detailModel.fd_field:FORMAT(@"%@",detailModel.fd_value != nil ? detailModel.fd_value:@"")}];
  74. }
  75. }
  76. }else{
  77. NSMutableArray *gridDataArr = [NSMutableArray new];
  78. NSString *dgCaller = @"";
  79. for (int i = 0; i < tableView.dataArray.count; i++) {
  80. NSMutableDictionary *gridDataDic = [NSMutableDictionary new];
  81. MoreGridModel *model = tableView.dataArray[i];
  82. /*特殊处理:配件用料,当类型选择为辅材且数量大于0时,必须要输入新设备/仓库名称和编号*/
  83. NSString *typeStr = @"",*codeStr = @"",*newDevice = @"",*shuLiang = @"";
  84. for (int j = 0; j < model.showItems.count; j++) {
  85. DetailgridModel *detailModel = model.showItems[j];
  86. if ([detailModel.dg_value isEqualToString:@"PROD"] || [detailModel.dg_value isEqualToString:@"辅材"]) {
  87. typeStr = @"PROD";
  88. }
  89. if ([detailModel.dg_field isEqualToString:@"dd_ordercode"]) {
  90. codeStr = detailModel.dg_value;
  91. }
  92. if ([detailModel.dg_field isEqualToString:@"dd_othcode"]) {
  93. newDevice = detailModel.dg_value;
  94. }
  95. if ([detailModel.dg_field isEqualToString:@"dd_qty"]) {
  96. shuLiang = detailModel.dg_value;
  97. }
  98. /*判断必填项*/
  99. if ([detailModel.dg_logictype isEqualToString:@"F"] || [detailModel.dg_logictype isEqualToString:@"necessaryField"]) {
  100. if (detailModel.dg_value.length == 0) {
  101. [JOShowMessageFromNavi showDropViewWithMessage:@"明细必填项不能为空!" ToNavi:self.navigationController withColor:nil];
  102. [MBProgressHUD hideHUDForView:self.view];
  103. return;
  104. }else{
  105. [gridDataDic addEntriesFromDictionary:@{detailModel.dg_field:FORMAT(@"%@",detailModel.dg_value != nil ? detailModel.dg_value:@"")}];
  106. }
  107. }else{
  108. [gridDataDic addEntriesFromDictionary:@{detailModel.dg_field:FORMAT(@"%@",detailModel.dg_value != nil ? detailModel.dg_value:@"")}];
  109. }
  110. }
  111. /*特殊处理:配件用料,当类型选择为辅材且数量大于0时,必须要输入新设备/仓库名称和编号*/
  112. if ([typeStr isEqualToString:@"PROD"] && [shuLiang intValue] > 0) {
  113. if (newDevice.length == 0 || codeStr.length == 0) {
  114. [JOShowMessageFromNavi showDropViewWithMessage:FORMAT(@"明细%d的编号和新设备/仓库名称不能为空",i+1) ToNavi:self.navigationController withColor:nil];
  115. [MBProgressHUD hideHUDForView:self.view];
  116. return;
  117. }
  118. }
  119. for (int j = 0; j < model.hideItems.count; j++) {
  120. DetailgridModel *detailModel = model.hideItems[j];
  121. [gridDataDic addEntriesFromDictionary:@{detailModel.dg_field:FORMAT(@"%@",detailModel.dg_value != nil ? detailModel.dg_value:@"")}];
  122. }
  123. [gridDataArr addObject:gridDataDic];
  124. dgCaller = model.dgcaller;
  125. }
  126. NSDictionary *dgDic = @{
  127. @"dgcaller":dgCaller,
  128. @"dgData":gridDataArr,
  129. };
  130. if (multidetailgrid) {
  131. [dataArr addObject:dgDic];
  132. }else
  133. dataArr = gridDataArr;
  134. }
  135. }
  136. //主表
  137. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:formParam options:NSJSONWritingPrettyPrinted error:nil];
  138. NSString *formStr=[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
  139. //多明细表
  140. NSData *gridData = [NSJSONSerialization dataWithJSONObject:dataArr options:NSJSONWritingPrettyPrinted error:nil];
  141. NSString *gridStr = [[NSString alloc] initWithData:gridData encoding:NSUTF8StringEncoding];
  142. if (dataArr.count == 0) {
  143. gridStr = @"";
  144. }
  145. SLog(@"主表合并的东西:%@",formParam);
  146. SLog(@"多明细表合并的东西:%@",dataArr);
  147. NSString *url = [NSString stringWithFormat:@"%@mobile/device/saveAndSubmitDeviceChange.action",g_id];
  148. if (self.idStr) {
  149. url = [NSString stringWithFormat:@"%@mobile/device/updateAndSubmitDeviceChange.action",g_id];
  150. }
  151. NSDictionary *dic = @{
  152. @"caller":_caller,
  153. @"formStore":formStr,
  154. @"gridStore":multidetailgrid ? @"":gridStr,
  155. @"othergridStore":multidetailgrid ? gridStr:@"",
  156. @"master":g_master,
  157. @"sessionUser":g_sessionUser,
  158. @"sessionId":g_sessionId,
  159. @"id":self.idStr ? self.idStr : @"0"
  160. };
  161. SLog(@"aaaaaaaa:%@ --- url:%@",dic,url);
  162. url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  163. UASNetworkManager *manager = [UASNetworkManager shareManager];
  164. [manager request:url method:POST parameters:dic progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  165. [MBProgressHUD hideHUDForView:self.view];
  166. SLog(@"chenggong---:%@",responseObject);
  167. NSString *specialStr = responseObject[@"exceptionInfo"];
  168. //异常
  169. if (specialStr.length != 0) {
  170. [JOShowMessageFromNavi showDropViewWithMessage:specialStr ToNavi:self.navigationController withColor:nil];
  171. return;
  172. }
  173. NSDictionary *dic = responseObject;
  174. NSString *idStr = @"";
  175. idStr = FORMAT(@"%@",[dic objectForKey:_cModel.fo_keyfield]);
  176. if (idStr.length == 0 || [idStr isEqualToString:@"(null)"]) {
  177. idStr = [NSString stringWithFormat:@"%@",dic[@"keyvalue"]];
  178. }
  179. [self selectShenPiPersonWithDanJuId:idStr];
  180. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  181. [MBProgressHUD hideHUDForView:self.view];
  182. SLog(@"错误的原因:%@",error);
  183. ErrorInfomation;
  184. }];
  185. }
  186. #pragma mark --- 提交审核人
  187. -(void)selectShenPiPersonWithDanJuId:(NSString *)idStr
  188. {
  189. [MBProgressHUD showMessage:@"" toView:self.view];
  190. UASNetworkManager *manager1 = [UASNetworkManager manager];
  191. manager1.requestSerializer = [AFHTTPRequestSerializer serializer];
  192. manager1.responseSerializer = [AFHTTPResponseSerializer serializer];
  193. NSString *url = [NSString stringWithFormat:@"%@common/getMultiNodeAssigns.action?caller=%@&id=%@&sessionId=%@&master=%@&sessionUser=%@",g_id,_caller,idStr,g_sessionId,g_master,g_sessionUser];
  194. url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  195. [manager1 request:url method:GET parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  196. [MBProgressHUD hideHUDForView:self.view];
  197. NSData *data = responseObject;
  198. NSMutableArray *dataArray = [[NSMutableArray alloc]init];
  199. id rootDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
  200. NSString *idString = @"";
  201. for (id obj in rootDic[@"assigns"])
  202. {
  203. for (id obk in obj[@"JP_CANDIDATES"]) {
  204. [dataArray addObject:obk];
  205. }
  206. NSString * str = [NSString stringWithFormat:@"%@",obj[@"JP_NODEID"]];
  207. idString = str;
  208. }
  209. if (dataArray.count == 0) {
  210. /*详情页*/
  211. DeviceFormVC *vc = [DeviceFormVC new];
  212. vc.idStr = idStr;
  213. vc.caller = self.caller;
  214. vc.title = self.title;
  215. vc.status = @"已提交";
  216. [self.navigationController pushViewController:vc animated:YES];
  217. }else
  218. {
  219. YPSelectShenPiPersonVC *selectVC = [[YPSelectShenPiPersonVC alloc]init];
  220. selectVC.dataArr = dataArray;
  221. selectVC.backID = idString;
  222. selectVC.master = @"";
  223. //选择审批人之后的回调,跳转详情页
  224. selectVC.block = ^{
  225. DeviceFormVC *vc = [DeviceFormVC new];
  226. vc.idStr = idStr;
  227. vc.caller = self.caller;
  228. vc.title = self.title;
  229. vc.status = @"已提交";
  230. [self.navigationController pushViewController:vc animated:YES];
  231. };
  232. [self.navigationController pushViewController:selectVC animated:YES];
  233. }
  234. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  235. [MBProgressHUD hideHUDForView:self.view];
  236. DLog(@"什么错误呀==%@",error);
  237. }];
  238. }
  239. #pragma mark --- 获取配置数据
  240. -(void)getFormDataFromSever
  241. {
  242. [MBProgressHUD showMessage:@"" toView:self.view];
  243. NSString *url = self.idStr ? [NSString stringWithFormat:@"%@mobile/getformandgriddetail.action",g_id] : [NSString stringWithFormat:@"%@mobile/common/getformandgriddetail.action",g_id];
  244. NSDictionary *param = @{
  245. @"id":self.idStr?self.idStr:@"0",
  246. @"caller":self.caller,
  247. @"condition":@"1=1",
  248. @"sessionId":g_sessionId,
  249. };
  250. url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  251. UASNetworkManager *manager = [UASNetworkManager shareManager];
  252. manager.responseSerializer = [AFJSONResponseSerializer serializer];
  253. [manager request:url method:POST parameters:param progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  254. [MBProgressHUD hideHUDForView:self.view];
  255. SLog(@"设备管理多明细通用表单:%@",responseObject);
  256. //单据配置时标识状态码字段
  257. _cModel = [[ConfigModel alloc]initWithDic:responseObject[@"config"]];
  258. NSMutableArray *formAllDataArr = [NSMutableArray new];
  259. NSMutableArray *gridAllDataArr = [NSMutableArray new];
  260. for (id obj in responseObject[@"data"][@"formdetail"]) {
  261. [formAllDataArr addObject:obj];
  262. }
  263. formAllDataArr = [NSDictionary changeType:formAllDataArr];
  264. multidetailgrid = [responseObject[@"data"][@"multidetailgrid"] boolValue];
  265. if (multidetailgrid) {
  266. for (id obj in responseObject[@"data"][@"othergridetail"]) {
  267. [gridAllDataArr addObject:obj];
  268. }
  269. }else{
  270. NSMutableArray *arr = [NSMutableArray new];
  271. for (id obj in responseObject[@"data"][@"gridetail"]) {
  272. [arr addObject:obj];
  273. }
  274. if (arr.count != 0) {
  275. NSDictionary *dic = @{
  276. @"dgtitle":@"从属明细表",
  277. @"dgcaller":@"",
  278. @"detailgrid":arr,
  279. };
  280. [gridAllDataArr addObject:dic];
  281. }
  282. }
  283. gridAllDataArr = [NSDictionary changeType:gridAllDataArr];
  284. if (formAllDataArr.count != 0) {
  285. [self handlerDataFromDowload:formAllDataArr andGridData:gridAllDataArr];
  286. }
  287. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  288. ErrorInfomation;
  289. [MBProgressHUD hideHUDForView:self.view];
  290. SLog(@"%@",error);
  291. }];
  292. }
  293. #pragma mark --- 配置表单数据处理
  294. - (void)handlerDataFromDowload:(NSMutableArray *)dataArr andGridData:(NSMutableArray *)gridDataArr
  295. {
  296. /*先排序,后分组【坑货需求】*/
  297. NSArray *aArr ;
  298. NSArray *bArr ;
  299. aArr = [dataArr mutableCopy];
  300. // 排序key, 某个对象的属性名称,是否升序, YES-升序, NO-降序
  301. NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"fd_detno" ascending:YES];
  302. // 排序结果
  303. bArr = [aArr sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
  304. /************************************************************/
  305. /*分组*/
  306. NSMutableArray *array = [[NSMutableArray alloc]init];
  307. for (int i = 0; i < bArr.count; i++) {
  308. [array addObject:bArr[i][@"fd_group"]];
  309. }
  310. NSMutableArray *reloadArr = [[NSMutableArray alloc]init];
  311. reloadArr = [bArr mutableCopy];
  312. NSMutableArray *dateMutablearray = [[NSMutableArray alloc]init];
  313. NSMutableArray *dateMutablearray1 = [[NSMutableArray alloc]init];
  314. for (int i = 0; i < array.count; i ++) {
  315. NSString *string = array[i];
  316. //根据某个字段分组
  317. NSMutableArray *tempArray = [[NSMutableArray alloc]init];
  318. [tempArray addObject:string];
  319. //切换总体的数据
  320. NSMutableArray *tempArray1 = [[NSMutableArray alloc]init];
  321. [tempArray1 addObject:reloadArr[i]];
  322. for (int j = i+1; j < array.count; j ++) {
  323. NSString *jstring = array[j];
  324. if([string isEqualToString:jstring]){
  325. [tempArray addObject:jstring];
  326. [array removeObjectAtIndex:j];
  327. [tempArray1 addObject:reloadArr[j]];
  328. [reloadArr removeObjectAtIndex:j];
  329. j -= 1;
  330. }
  331. }
  332. [dateMutablearray addObject:tempArray];
  333. [dateMutablearray1 addObject:tempArray1];
  334. }
  335. /*构造模型*/
  336. for (int i = 0; i < dateMutablearray1.count; i++)
  337. {
  338. NSMutableArray *sub = [NSMutableArray new];
  339. sub = dateMutablearray1[i];
  340. NSMutableArray *showArr = [NSMutableArray new];
  341. NSMutableArray *hideArr = [NSMutableArray new];
  342. NSString *fdTitle = @"";
  343. for (id obj in sub) {
  344. NSString *isShow = FORMAT(@"%@",[obj objectForKey:@"mfd_isdefault"]);
  345. NSString *typeStr = FORMAT(@"%@",[obj objectForKey:@"fd_type"]);
  346. if ([isShow isEqualToString:@"-1"] && ![typeStr isEqualToString:@"H"]) {
  347. [showArr addObject:obj];
  348. }else{
  349. [hideArr addObject:obj];
  350. }
  351. fdTitle = [obj objectForKey:@"fd_group"];
  352. //知会消息->维修单特殊处理
  353. if ([self.caller isEqualToString:@"DeviceChange!Repair"]) {
  354. if ([[obj objectForKey:@"fd_field"] isEqualToString:@"dc_repairaccept"]) {
  355. NSString *dc_repairaccept = FORMAT(@"%@",[obj objectForKey:@"fd_value"]);
  356. if (dc_repairaccept.length == 0) {
  357. [uploadBtn setTitle:@"接单" forState:UIControlStateNormal];
  358. [uploadBtn removeTarget:self action:@selector(uploadFormAction) forControlEvents:UIControlEventTouchUpInside];
  359. [uploadBtn addTarget:self action:@selector(acceptRepairAction) forControlEvents:UIControlEventTouchUpInside];
  360. }
  361. }
  362. }
  363. }
  364. NSDictionary *baseDic = @{
  365. @"fdtitle":fdTitle != nil ? fdTitle:@"",
  366. @"showItems":showArr,
  367. @"hideItems":hideArr,
  368. };
  369. FormModel *model = [FormModel mj_objectWithKeyValues:baseDic];
  370. for (id obj in model.showItems) {
  371. DetailFormModel *detailFormModel = obj;
  372. CGFloat height = [self getSizeWithText:FORMAT(@"%@*",detailFormModel.fd_caption)].height;
  373. NSString *heightStr = FORMAT(@"%f",height+10);
  374. if (height < 40) {
  375. detailFormModel.cellHeight = @"40";
  376. }else{
  377. detailFormModel.cellHeight = heightStr;
  378. }
  379. if ([self.caller isEqualToString:@"DeviceChange!Maintain"]) {
  380. detailFormModel.fd_value = detailFormModel.fd_defaultvalue != nil ? detailFormModel.fd_defaultvalue:detailFormModel.fd_value;
  381. if (self.specialArr.count != 0 ) {
  382. for (int z = 0; z < self.specialArr.count; z++) {
  383. if ([[_specialArr[z] objectForKey:@"fd_field"] isEqualToString: detailFormModel.fd_field]) {
  384. detailFormModel.fd_value = FORMAT(@"%@",[_specialArr[z] objectForKey:@"fd_value"]);
  385. }
  386. }
  387. }
  388. if ([detailFormModel.fd_field isEqualToString:@"dc_emcode"]) {
  389. detailFormModel.fd_value = g_emcode;
  390. }
  391. if ([detailFormModel.fd_field isEqualToString:@"dc_emname"]) {
  392. detailFormModel.fd_value = g_personChineseName;
  393. }
  394. }else
  395. detailFormModel.fd_value = detailFormModel.fd_defaultvalue != nil ? detailFormModel.fd_defaultvalue:detailFormModel.fd_value;
  396. }
  397. for (id obj in model.hideItems) {
  398. DetailFormModel *detailFormModel = obj;
  399. detailFormModel.fd_value = detailFormModel.fd_defaultvalue != nil ? detailFormModel.fd_defaultvalue:detailFormModel.fd_value;
  400. }
  401. [_listArr addObject:model];
  402. }
  403. /*明细表的数据处理*/
  404. if (gridDataArr.count != 0) {
  405. [self handleGridDataWith:gridDataArr];
  406. }
  407. }
  408. #pragma mark --- 明细表的数据处理
  409. -(void)handleGridDataWith:(NSMutableArray *)gridDataArr
  410. {
  411. for (id allObj in gridDataArr) {
  412. NSArray *bArr = [allObj objectForKey:@"detailgrid"];
  413. /*分组*/
  414. NSMutableArray *array = [[NSMutableArray alloc]init];
  415. for (int i = 0; i < bArr.count; i++) {
  416. [array addObject:FORMAT(@"%@",bArr[i][@"dg_group"])];
  417. }
  418. NSMutableArray *reloadArr = [[NSMutableArray alloc]init];
  419. reloadArr = [bArr mutableCopy];
  420. NSMutableArray *dateMutablearray = [[NSMutableArray alloc]init];
  421. NSMutableArray *dateMutablearray1 = [[NSMutableArray alloc]init];
  422. for (int i = 0; i < array.count; i ++) {
  423. NSString *string = array[i];
  424. //根据某个字段分组
  425. NSMutableArray *tempArray = [[NSMutableArray alloc]init];
  426. [tempArray addObject:string];
  427. //切换总体的数据
  428. NSMutableArray *tempArray1 = [[NSMutableArray alloc]init];
  429. [tempArray1 addObject:reloadArr[i]];
  430. for (int j = i+1; j < array.count; j ++) {
  431. NSString *jstring = array[j];
  432. if([string isEqualToString:jstring]){
  433. [tempArray addObject:jstring];
  434. [array removeObjectAtIndex:j];
  435. [tempArray1 addObject:reloadArr[j]];
  436. [reloadArr removeObjectAtIndex:j];
  437. j -= 1;
  438. }
  439. }
  440. [dateMutablearray addObject:tempArray];
  441. [dateMutablearray1 addObject:tempArray1];
  442. }
  443. /*构造模型*/
  444. NSMutableArray <MoreGridModel *> *baseArr = [NSMutableArray new];
  445. for (int i = 0; i < dateMutablearray1.count; i++)
  446. {
  447. NSMutableArray *sub = [NSMutableArray new];
  448. sub = dateMutablearray1[i];
  449. NSMutableArray *showArr = [NSMutableArray new];
  450. NSMutableArray *hideArr = [NSMutableArray new];
  451. for (id obj in sub) {
  452. NSString *isShow = FORMAT(@"%@",[obj objectForKey:@"mdg_isdefault"]);
  453. NSString *typeStr = FORMAT(@"%@",[obj objectForKey:@"dg_type"]);
  454. if ([isShow isEqualToString:@"-1"] && ![typeStr isEqualToString:@"H"]) {
  455. [showArr addObject:obj];
  456. }else{
  457. [hideArr addObject:obj];
  458. }
  459. }
  460. NSDictionary *baseDic = @{
  461. @"dgtitle":allObj[@"dgtitle"],
  462. @"dgcaller":allObj[@"dgcaller"],
  463. @"showItems":showArr,
  464. @"hideItems":hideArr,
  465. };
  466. MoreGridModel *model = [MoreGridModel mj_objectWithKeyValues:baseDic];
  467. [baseArr addObject:model];
  468. }
  469. [self.gridData addObject:baseArr];
  470. }
  471. /**
  472. 把主表插在第一个TableView
  473. */
  474. [self.gridData insertObject:_listArr atIndex:0];
  475. [self creatFormUIWithData:self.gridData];
  476. }
  477. #pragma mark --- 配置表单页面
  478. -(void)creatFormUIWithData:(NSMutableArray *)arr
  479. {
  480. self.dView = [[DeviceSpecialView alloc]initWithFrame:CGRectMake(0, 0, self_width, self_height-50)];
  481. self.dView.statuType = Enter;
  482. self.dView.idStr = self.idStr;
  483. self.dView.gridData = arr;
  484. [self.view addSubview:self.dView];
  485. @weakify(self)
  486. self.dView.msgBlock = ^(NSString *msgStr) {
  487. @strongify(self)
  488. [JOShowMessageFromNavi showDropViewWithMessage:msgStr ToNavi:self.navigationController withColor:nil];
  489. };
  490. __weak typeof(self) weakSelf = self;
  491. self.dView.block = ^(int whichTextView,UITableView *tableView) {
  492. __strong typeof(DeviceEnterFormVC) *strongSelf = weakSelf;
  493. int a = whichTextView / 1000;
  494. int b = whichTextView % 1000;
  495. id obj = tableView.dataArray[a];
  496. NSString *typeStr,*fieldStr,*titleStr,*renderer,*value;
  497. if ([obj isKindOfClass:[MoreGridModel class]]) {
  498. MoreGridModel *model = tableView.dataArray[a];
  499. DetailgridModel *detailModel = model.showItems[b];
  500. typeStr = [NSString stringWithFormat:@"%@",detailModel.dg_type];
  501. fieldStr = [NSString stringWithFormat:@"%@",detailModel.dg_field];
  502. titleStr = [NSString stringWithFormat:@"%@",detailModel.dg_caption];
  503. renderer = [NSString stringWithFormat:@"%@",detailModel.dg_renderer];
  504. value = [NSString stringWithFormat:@"%@",detailModel.dg_value];
  505. /*保养用料-特殊处理*/
  506. if ([fieldStr isEqualToString:@"dd_ordercode"] || [fieldStr isEqualToString:@"dd_othcode"]) {//类型选择/新设备编号选择
  507. NSString *valueStr = @"";
  508. for (int i = 0; i < model.showItems.count; i ++) {
  509. DetailgridModel *detailModel = model.showItems[i];
  510. if ([detailModel.dg_field isEqualToString:@"dd_type"]) {
  511. valueStr = FORMAT(@"%@",detailModel.dg_value);
  512. }
  513. }
  514. for (int i = 0; i < model.hideItems.count; i ++) {
  515. DetailgridModel *detailModel = model.hideItems[i];
  516. if ([detailModel.dg_field isEqualToString:@"dd_type"]) {
  517. valueStr = FORMAT(@"%@",detailModel.dg_value);
  518. }
  519. }
  520. if ([valueStr isEqualToString:@"配件"]) {
  521. valueStr = @"DEVICE";
  522. }
  523. if ([valueStr isEqualToString:@"辅材"]) {
  524. valueStr = @"PROD";
  525. }
  526. if (valueStr.length == 0) {
  527. [JOShowMessageFromNavi showDropViewWithMessage:@"请先选择类型" ToNavi:strongSelf.navigationController withColor:nil];
  528. }else{
  529. LYYDBfindSelctedVC *vc = [[LYYDBfindSelctedVC alloc] init];
  530. if ([valueStr isEqualToString:@"DEVICE"]) {
  531. if ([fieldStr isEqualToString:@"dd_ordercode"]) {
  532. vc.caller = @"DeviceNew";
  533. vc.type = @"SpecialGrid";
  534. vc.mainCaller = model.dgcaller;
  535. vc.filed = @"1devcode";
  536. }
  537. if ([fieldStr isEqualToString:@"dd_othcode"]) {
  538. vc.caller = @"DeviceNew";
  539. vc.type = @"SpecialGrid";
  540. vc.mainCaller = model.dgcaller;
  541. vc.filed = @"2decode";
  542. }
  543. }
  544. if ([valueStr isEqualToString:@"PROD"]) {
  545. if ([fieldStr isEqualToString:@"dd_ordercode"]) {
  546. vc.caller = @"ProdOthDevice";
  547. vc.type = @"SpecialGrid";
  548. vc.mainCaller = model.dgcaller;
  549. vc.filed = @"2prodcode";
  550. }
  551. if ([fieldStr isEqualToString:@"dd_othcode"]) {
  552. vc.caller = @"WareHouse!Dev";
  553. vc.type = @"SpecialGrid";
  554. vc.mainCaller = model.dgcaller;
  555. vc.filed = @"1whcode";
  556. }
  557. }
  558. vc.title = titleStr;
  559. [vc setMyBlock:^(NSDictionary *dic,NSMutableArray *arr) {
  560. for (int z = 0; z < arr.count; z++) {
  561. NSDictionary *arrDic = arr[z];
  562. NSString *backField = @"";
  563. //从表回调
  564. backField = FORMAT(@"%@",[arrDic objectForKey:@"ds_gridfield"]);
  565. /*显示的*/
  566. for (int i = 0; i < model.showItems.count; i++) {
  567. DetailgridModel *dmodel = model.showItems[i];
  568. if ([dmodel.dg_field isEqualToString:backField]) {
  569. dmodel.dg_value = [dic objectForKey:[arrDic objectForKey:@"ds_dbfindfield"]];
  570. }
  571. }
  572. /*隐藏的*/
  573. for (int i = 0; i < model.hideItems.count; i++) {
  574. DetailgridModel *dmodel = model.hideItems[i];
  575. if ([dmodel.dg_field isEqualToString:backField]) {
  576. dmodel.dg_value = [dic objectForKey:[arrDic objectForKey:@"ds_dbfindfield"]];
  577. }
  578. }
  579. }
  580. [tableView reloadData];
  581. }];
  582. [strongSelf.navigationController pushViewController:vc animated:YES];
  583. }
  584. }
  585. else{
  586. if ([typeStr isEqualToString:@"C"]) { //下拉框跳转界面
  587. strongSelf->_date.hidden = YES;
  588. strongSelf->_acceptTableView = nil;
  589. [strongSelf.view endEditing:YES];
  590. DocumentDataVC *dataVC = [[DocumentDataVC alloc]init];
  591. dataVC.caller = model.dgcaller;
  592. dataVC.field = fieldStr;
  593. dataVC.type = typeStr;
  594. dataVC.block = ^(NSDictionary *listData,NSString *showKey,NSDictionary *chain){
  595. detailModel.dg_value = [listData objectForKey:@"DISPLAY"];
  596. if ([fieldStr isEqualToString:@"dd_type"]) {
  597. for (int i = 0; i < model.showItems.count; i ++) {
  598. DetailgridModel *detailModel = model.showItems[i];
  599. if (![detailModel.dg_field isEqualToString:@"dd_type"]) {
  600. detailModel.dg_value = @"";
  601. }
  602. }
  603. for (int i = 0; i < model.hideItems.count; i ++) {
  604. DetailgridModel *detailModel = model.hideItems[i];
  605. if (![detailModel.dg_field isEqualToString:@"dd_type"]) {
  606. detailModel.dg_value = @"";
  607. }
  608. }
  609. }
  610. [tableView reloadData];
  611. };
  612. dataVC.title = titleStr;
  613. [strongSelf.navigationController pushViewController:dataVC animated:YES];
  614. }
  615. else if ([typeStr isEqualToString:@"SF"] || [typeStr isEqualToString:@"DF"]) { //单选跳转界面
  616. strongSelf->_date.hidden = YES;
  617. strongSelf->_acceptTableView = nil;
  618. [strongSelf.view endEditing:YES];
  619. LYYDBfindSelctedVC *vc = [[LYYDBfindSelctedVC alloc] init];
  620. vc.caller = strongSelf->_caller;
  621. vc.type = @"grid";
  622. vc.mainCaller = strongSelf->_caller;
  623. if(strongSelf->multidetailgrid){
  624. //多明细表的要用多明细表自己的caller
  625. vc.mainCaller = model.dgcaller;
  626. }
  627. if ([[NSString stringWithFormat:@"%@",detailModel.dg_findfunctionname] containsString:@"|"]) {
  628. vc.caller = [NSString stringWithFormat:@"%@",detailModel.dg_findfunctionname];
  629. }else{
  630. [JOShowMessageFromNavi showDropViewWithMessage:@"服务器配置错误" ToNavi:strongSelf.navigationController withColor:nil];
  631. }
  632. vc.filed = fieldStr;
  633. vc.title = titleStr;
  634. [vc setMyBlock:^(NSDictionary *dic,NSMutableArray *arr) {
  635. for (int z = 0; z < arr.count; z++) {
  636. NSDictionary *arrDic = arr[z];
  637. NSString *backField = @"";
  638. //从表回调
  639. backField = FORMAT(@"%@",[arrDic objectForKey:@"ds_gridfield"]);
  640. /*显示的*/
  641. for (int i = 0; i < model.showItems.count; i++) {
  642. DetailgridModel *dmodel = model.showItems[i];
  643. if ([dmodel.dg_field isEqualToString:backField]) {
  644. dmodel.dg_value = [dic objectForKey:[arrDic objectForKey:@"ds_dbfindfield"]];
  645. }
  646. }
  647. /*隐藏的*/
  648. for (int i = 0; i < model.hideItems.count; i++) {
  649. DetailgridModel *dmodel = model.hideItems[i];
  650. if ([dmodel.dg_field isEqualToString:backField]) {
  651. dmodel.dg_value = [dic objectForKey:[arrDic objectForKey:@"ds_dbfindfield"]];
  652. }
  653. }
  654. }
  655. [tableView reloadData];
  656. }];
  657. [strongSelf.navigationController pushViewController:vc animated:YES];
  658. }
  659. else if ([typeStr isEqualToString:@"MF"]) { //多选跳转界面
  660. strongSelf->_date.hidden = YES;
  661. strongSelf->_acceptTableView = nil;
  662. [strongSelf.view endEditing:YES];
  663. MFselectVC *dataVC = [[MFselectVC alloc]init];
  664. dataVC.caller = strongSelf->_caller;
  665. dataVC.title = titleStr;
  666. dataVC.field = fieldStr;
  667. dataVC.type = typeStr;
  668. dataVC.block = ^(NSArray *backData,NSString *showKey,NSMutableArray *dgField){
  669. for (int a = 0; a < dgField.count; a++) {
  670. /*显示的*/
  671. for (int i = 0; i < model.showItems.count; i++) {
  672. DetailgridModel *dmodel = model.showItems[i];
  673. NSString *valueStr = @"";
  674. if ([dmodel.dg_field isEqualToString:[dgField[a] objectForKey:@"field"]]) {
  675. for (int i = 0; i < backData.count; i++) {
  676. valueStr = [valueStr stringByAppendingString:[backData[i] objectForKey:[dgField[a] objectForKey:@"dbGridField"]]];
  677. if (i != (backData.count-1)) {
  678. valueStr = [valueStr stringByAppendingString:@"#"];
  679. }
  680. }
  681. dmodel.dg_value = valueStr;
  682. }
  683. }
  684. /*隐藏的*/
  685. for (int i = 0; i < model.hideItems.count; i++) {
  686. DetailgridModel *dmodel = model.hideItems[i];
  687. NSString *valueStr = @"";
  688. if ([dmodel.dg_field isEqualToString:[dgField[a] objectForKey:@"field"]]) {
  689. for (int i = 0; i < backData.count; i++) {
  690. valueStr = [valueStr stringByAppendingString:[backData[i] objectForKey:[dgField[a] objectForKey:@"dbGridField"]]];
  691. if (i != (backData.count-1)) {
  692. valueStr = [valueStr stringByAppendingString:@"#"];
  693. }
  694. }
  695. dmodel.dg_value = valueStr;
  696. }
  697. }
  698. }
  699. [tableView reloadData];
  700. };
  701. [strongSelf.navigationController pushViewController:dataVC animated:YES];
  702. }
  703. else if ([typeStr isEqualToString:@"D"]) { //日期类型 - UIDatePickerModeDate
  704. _textTag = whichTextView;
  705. _acceptTableView = tableView;
  706. strongSelf->_date.datePicker.datePickerMode = UIDatePickerModeDate;
  707. [strongSelf.view addSubview:strongSelf->_date];
  708. strongSelf->_date.hidden = NO;
  709. [strongSelf.view endEditing:YES];
  710. }
  711. else if ([typeStr isEqualToString:@"DT"]) { //日期类型- UIDatePickerModeDateAndTime
  712. _textTag = whichTextView;
  713. _acceptTableView = tableView;
  714. strongSelf->_date.datePicker.datePickerMode = UIDatePickerModeDateAndTime;
  715. [strongSelf.view addSubview:strongSelf->_date];
  716. strongSelf->_date.hidden = NO;
  717. [strongSelf.view endEditing:YES];
  718. }
  719. }
  720. }
  721. else{
  722. FormModel *model = tableView.dataArray[a];
  723. DetailFormModel *detailModel = model.showItems[b];
  724. typeStr = [NSString stringWithFormat:@"%@",detailModel.fd_type];
  725. fieldStr = [NSString stringWithFormat:@"%@",detailModel.fd_field];
  726. titleStr = [NSString stringWithFormat:@"%@",detailModel.fd_caption];
  727. value = [NSString stringWithFormat:@"%@",detailModel.fd_value];
  728. if ([typeStr isEqualToString:@"C"]) { //下拉框跳转界面
  729. strongSelf->_date.hidden = YES;
  730. strongSelf->_acceptTableView = nil;
  731. [strongSelf.view endEditing:YES];
  732. DocumentDataVC *dataVC = [[DocumentDataVC alloc]init];
  733. dataVC.caller = strongSelf->_caller;
  734. dataVC.field = fieldStr;
  735. dataVC.type = typeStr;
  736. dataVC.block = ^(NSDictionary *listData,NSString *showKey,NSDictionary *chain){
  737. detailModel.fd_value = [listData objectForKey:@"VALUE"];
  738. [tableView reloadData];
  739. };
  740. dataVC.title = titleStr;
  741. [strongSelf.navigationController pushViewController:dataVC animated:YES];
  742. }
  743. else if ([typeStr isEqualToString:@"SF"] || [typeStr isEqualToString:@"DF"]) { //单选跳转界面
  744. strongSelf->_date.hidden = YES;
  745. strongSelf->_acceptTableView = nil;
  746. [strongSelf.view endEditing:YES];
  747. NSString *formType = @"";
  748. LYYDBfindSelctedVC *vc = [[LYYDBfindSelctedVC alloc] init];
  749. formType = @"form";
  750. vc.type = @"form";
  751. vc.caller = strongSelf->_caller;
  752. vc.filed = fieldStr;
  753. vc.title = titleStr;
  754. //特殊处理:保养单主表设备编号的DBFIND的condition要加上公司dc_cop
  755. if ([fieldStr isEqualToString:@"dc_devcode"]) {
  756. NSString *valueStr = @"";
  757. for (int i = 0; i < model.showItems.count; i ++) {
  758. DetailFormModel *detailModel = model.showItems[i];
  759. if ([detailModel.fd_field isEqualToString:@"dc_cop"]) {
  760. valueStr = FORMAT(@"%@",detailModel.fd_value);
  761. }
  762. }
  763. for (int i = 0; i < model.hideItems.count; i ++) {
  764. DetailFormModel *detailModel = model.hideItems[i];
  765. if ([detailModel.fd_field isEqualToString:@"dc_cop"]) {
  766. valueStr = FORMAT(@"%@",detailModel.fd_value);
  767. }
  768. }
  769. vc.specialConditon = @{@"dc_cop":valueStr};
  770. }
  771. [vc setMyBlock:^(NSDictionary *dic,NSMutableArray *arr) {
  772. for (int z = 0; z < arr.count; z++) {
  773. NSDictionary *arrDic = arr[z];
  774. NSString *backField = @"";
  775. //主表回调
  776. backField = FORMAT(@"%@",[arrDic objectForKey:@"field"]);
  777. /*显示的*/
  778. for (int i = 0; i < model.showItems.count; i++) {
  779. DetailFormModel *dmodel = model.showItems[i];
  780. if ([dmodel.fd_field isEqualToString:backField]) {
  781. dmodel.fd_value = [dic objectForKey:[arrDic objectForKey:@"dbGridField"]];
  782. }
  783. }
  784. /*隐藏的*/
  785. for (int i = 0; i < model.hideItems.count; i++) {
  786. DetailFormModel *dmodel = model.hideItems[i];
  787. if ([dmodel.fd_field isEqualToString:backField]) {
  788. dmodel.fd_value = [dic objectForKey:[arrDic objectForKey:@"dbGridField"]];
  789. }
  790. }
  791. }
  792. [tableView reloadData];
  793. }];
  794. [strongSelf.navigationController pushViewController:vc animated:YES];
  795. }
  796. else if ([typeStr isEqualToString:@"MF"]) { //多选跳转界面
  797. strongSelf->_date.hidden = YES;
  798. strongSelf->_acceptTableView = nil;
  799. [strongSelf.view endEditing:YES];
  800. MFselectVC *dataVC = [[MFselectVC alloc]init];
  801. dataVC.caller = strongSelf->_caller;
  802. dataVC.title = titleStr;
  803. dataVC.field = fieldStr;
  804. dataVC.type = typeStr;
  805. dataVC.block = ^(NSArray *backData,NSString *showKey,NSMutableArray *dgField){
  806. for (int a = 0; a < dgField.count; a++) {
  807. /*显示的*/
  808. for (int i = 0; i < model.showItems.count; i++) {
  809. DetailFormModel *dmodel = model.showItems[i];
  810. NSString *valueStr = @"";
  811. if ([dmodel.fd_field isEqualToString:[dgField[a] objectForKey:@"field"]]) {
  812. for (int i = 0; i < backData.count; i++) {
  813. valueStr = [valueStr stringByAppendingString:[backData[i] objectForKey:[dgField[a] objectForKey:@"dbGridField"]]];
  814. if (i != (backData.count-1)) {
  815. valueStr = [valueStr stringByAppendingString:@"#"];
  816. }
  817. }
  818. dmodel.fd_value = valueStr;
  819. }
  820. }
  821. /*隐藏的*/
  822. for (int i = 0; i < model.hideItems.count; i++) {
  823. DetailFormModel *dmodel = model.hideItems[i];
  824. NSString *valueStr = @"";
  825. if ([dmodel.fd_field isEqualToString:[dgField[a] objectForKey:@"field"]]) {
  826. for (int i = 0; i < backData.count; i++) {
  827. valueStr = [valueStr stringByAppendingString:[backData[i] objectForKey:[dgField[a] objectForKey:@"dbGridField"]]];
  828. if (i != (backData.count-1)) {
  829. valueStr = [valueStr stringByAppendingString:@"#"];
  830. }
  831. }
  832. dmodel.fd_value = valueStr;
  833. }
  834. }
  835. }
  836. [tableView reloadData];
  837. };
  838. [strongSelf.navigationController pushViewController:dataVC animated:YES];
  839. }
  840. else if ([typeStr isEqualToString:@"D"]) { //日期类型 - UIDatePickerModeDate
  841. _textTag = whichTextView;
  842. _acceptTableView = tableView;
  843. strongSelf->_date.datePicker.datePickerMode = UIDatePickerModeDate;
  844. [strongSelf.view addSubview:strongSelf->_date];
  845. strongSelf->_date.hidden = NO;
  846. [strongSelf.view endEditing:YES];
  847. }
  848. else if ([typeStr isEqualToString:@"DT"]) { //日期类型- UIDatePickerModeDateAndTime
  849. _textTag = whichTextView;
  850. _acceptTableView = tableView;
  851. strongSelf->_date.datePicker.datePickerMode = UIDatePickerModeDateAndTime;
  852. [strongSelf.view addSubview:strongSelf->_date];
  853. strongSelf->_date.hidden = NO;
  854. [strongSelf.view endEditing:YES];
  855. }
  856. }
  857. };
  858. }
  859. #pragma mark -- 时期选择
  860. -(void)onDateDO
  861. {
  862. NSDate *selected = [_date date];
  863. int a = _textTag / 1000;
  864. int b = _textTag % 1000;
  865. id obj = _acceptTableView.dataArray[a];
  866. if ([obj isKindOfClass:[MoreGridModel class]]) {
  867. NSString *dateStr = @"";
  868. if (_date.datePicker.datePickerMode == UIDatePickerModeDate) {
  869. dateStr = [((AppDelegate*)[[UIApplication sharedApplication] delegate]) formatdate:selected format:@"yyyy-MM-dd"];
  870. }else{
  871. dateStr = [((AppDelegate*)[[UIApplication sharedApplication] delegate]) formatdate:selected format:@"yyyy-MM-dd HH:mm:ss"];
  872. }
  873. MoreGridModel *model = _acceptTableView.dataArray[a];
  874. DetailgridModel *detailModel = model.showItems[b];
  875. detailModel.dg_value = dateStr;
  876. [_acceptTableView reloadData];
  877. }
  878. else{
  879. NSString *dateStr = @"";
  880. if (_date.datePicker.datePickerMode == UIDatePickerModeDate) {
  881. dateStr = [((AppDelegate*)[[UIApplication sharedApplication] delegate]) formatdate:selected format:@"yyyy-MM-dd"];
  882. }else{
  883. dateStr = [((AppDelegate*)[[UIApplication sharedApplication] delegate]) formatdate:selected format:@"yyyy-MM-dd HH:mm:ss"];
  884. }
  885. FormModel *model = _listArr[a];
  886. DetailFormModel *detailModel = model.showItems[b];
  887. detailModel.fd_value = dateStr;
  888. [_acceptTableView reloadData];
  889. }
  890. }
  891. -(void)onDateClear
  892. {
  893. int a = _textTag / 1000;
  894. int b = _textTag % 1000;
  895. id obj = _acceptTableView.dataArray[a];
  896. if ([obj isKindOfClass:[MoreGridModel class]]) {
  897. NSString *dateStr = @"";
  898. MoreGridModel *model = _acceptTableView.dataArray[a];
  899. DetailgridModel *detailModel = model.showItems[b];
  900. detailModel.dg_value = dateStr;
  901. [_acceptTableView reloadData];
  902. }else{
  903. NSString *dateStr = @"";
  904. FormModel *model = _listArr[a];
  905. DetailFormModel *detailModel = model.showItems[b];
  906. detailModel.fd_value = dateStr;
  907. [_acceptTableView reloadData];
  908. }
  909. }
  910. #pragma mark --- 创建UI
  911. -(void)createUI
  912. {
  913. UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
  914. btn.frame = CGRectMake(0, 0, 21, 21);
  915. UIImageView *image = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 21, 21)];
  916. image.image = [UIImage imageNamed:@"UU_device_list"];
  917. [btn addSubview:image];
  918. [btn addTarget:self action:@selector(clickRightBtn) forControlEvents:UIControlEventTouchUpInside];
  919. if (!self.idStr) {
  920. UIBarButtonItem *bbi = [[UIBarButtonItem alloc]initWithCustomView:btn];
  921. self.navigationItem.rightBarButtonItems = @[bbi];
  922. }
  923. uploadBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  924. uploadBtn.layer.masksToBounds = YES;
  925. uploadBtn.layer.cornerRadius = 5;
  926. [uploadBtn setBackgroundColor:HexColor(@"#33A2EE") forState:UIControlStateNormal];
  927. [uploadBtn setBackgroundColor:HexColor(@"#8EB2CD") forState:UIControlStateDisabled];
  928. [uploadBtn setBackgroundColor:HexColor(@"#2D84C0") forState:UIControlStateHighlighted];
  929. [uploadBtn setTitle:Localized(@"UU_custom_submit") forState:UIControlStateNormal];
  930. uploadBtn.userInteractionEnabled = YES;
  931. [uploadBtn addTarget:self action:@selector(uploadFormAction) forControlEvents:UIControlEventTouchUpInside];
  932. [self.view addSubview:uploadBtn];
  933. [uploadBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  934. make.left.equalTo(self.view).offset(20);
  935. make.right.equalTo(self.view).offset(-20);
  936. make.bottom.equalTo(self.view).offset(-5);
  937. make.height.mas_equalTo(40);
  938. }];
  939. _date = [[JXDatePicker alloc] initWithFrame:CGRectMake(0, 0, self_width, self_height)];
  940. _date.delegate = self;
  941. _date.didSelect = @selector(onDateDO);
  942. _date.didClear = @selector(onDateClear);
  943. }
  944. #pragma mark --- 维修单接单
  945. -(void)acceptRepairAction
  946. {
  947. [MBProgressHUD showMessage:@"" toView:self.view];
  948. NSString *url = [NSString stringWithFormat:@"%@mobile/device/deviceRepairTaking.action",g_id];
  949. NSDictionary *param = @{
  950. @"id":self.idStr,
  951. @"caller":self.caller,
  952. @"sessionId":g_sessionId,
  953. };
  954. url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  955. UASNetworkManager *manager = [UASNetworkManager shareManager];
  956. manager.responseSerializer = [AFJSONResponseSerializer serializer];
  957. [manager request:url method:POST parameters:param progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  958. [MBProgressHUD hideHUDForView:self.view];
  959. SLog(@"设备管理多明细通用表单:%@",responseObject);
  960. [_listArr removeAllObjects];
  961. [self.gridData removeAllObjects];
  962. [self.dView removeFromSuperview];
  963. [uploadBtn setTitle:Localized(@"UU_custom_submit") forState:UIControlStateNormal];
  964. [uploadBtn removeTarget:self action:@selector(acceptRepairAction) forControlEvents:UIControlEventTouchUpInside];
  965. [uploadBtn addTarget:self action:@selector(uploadFormAction) forControlEvents:UIControlEventTouchUpInside];
  966. //单据配置时标识状态码字段
  967. _cModel = [[ConfigModel alloc]initWithDic:responseObject[@"config"]];
  968. NSMutableArray *formAllDataArr = [NSMutableArray new];
  969. NSMutableArray *gridAllDataArr = [NSMutableArray new];
  970. for (id obj in responseObject[@"data"][@"formdetail"]) {
  971. [formAllDataArr addObject:obj];
  972. }
  973. formAllDataArr = [NSDictionary changeType:formAllDataArr];
  974. multidetailgrid = [responseObject[@"data"][@"multidetailgrid"] boolValue];
  975. if (multidetailgrid) {
  976. for (id obj in responseObject[@"data"][@"othergridetail"]) {
  977. [gridAllDataArr addObject:obj];
  978. }
  979. }else{
  980. NSMutableArray *arr = [NSMutableArray new];
  981. for (id obj in responseObject[@"data"][@"gridetail"]) {
  982. [arr addObject:obj];
  983. }
  984. if (arr.count != 0) {
  985. NSDictionary *dic = @{
  986. @"dgtitle":@"从属明细表",
  987. @"dgcaller":@"",
  988. @"detailgrid":arr,
  989. };
  990. [gridAllDataArr addObject:dic];
  991. }
  992. }
  993. gridAllDataArr = [NSDictionary changeType:gridAllDataArr];
  994. if (formAllDataArr.count != 0) {
  995. [self handlerDataFromDowload:formAllDataArr andGridData:gridAllDataArr];
  996. }
  997. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  998. ErrorInfomation;
  999. [MBProgressHUD hideHUDForView:self.view];
  1000. SLog(@"%@",error);
  1001. }];
  1002. }
  1003. #pragma mark --- 列表
  1004. -(void)clickRightBtn
  1005. {
  1006. LYYDMDataSearchVC *dListVC = [[LYYDMDataSearchVC alloc]init];
  1007. dListVC.title = self.title;
  1008. dListVC.caller = self.caller;
  1009. if ([self.title isEqualToString:Localized(@"UU_Maintenance")]) {
  1010. dListVC.mustStr = @"保养维护";
  1011. }else{
  1012. dListVC.mustStr = self.title;
  1013. }
  1014. [self.navigationController pushViewController:dListVC animated:YES];
  1015. }
  1016. #pragma mark --- 自动获取文本高度
  1017. - (CGSize)getSizeWithText:(NSString *)text
  1018. {
  1019. /**
  1020. 参数1:Size 文本显示的最大区域
  1021. 参数2:options 用什么来的换行模式来计算
  1022. 参数3:attributes 文字的大小
  1023. 参数4:context 上下文
  1024. */
  1025. return [FORMAT(@"%@",text) boundingRectWithSize:CGSizeMake(90, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : FONT_SIZE(14)} context:NULL].size;
  1026. }
  1027. @end