|
|
@@ -0,0 +1,1177 @@
|
|
|
+//
|
|
|
+// DeviceEnterFormVC.m
|
|
|
+// shiku_im
|
|
|
+//
|
|
|
+// Created by huangyp-pc on 2019/6/25.
|
|
|
+//
|
|
|
+
|
|
|
+#import "DeviceEnterFormVC.h"
|
|
|
+#import "MoreGridModel.h"
|
|
|
+#import "DeviceFormView.h"
|
|
|
+#import "DeviceSpecialView.h"
|
|
|
+#import "LYYDMDataSearchVC.h"
|
|
|
+#import "DocumentDataVC.h"
|
|
|
+#import "LYYDBfindSelctedVC.h"
|
|
|
+#import "MFselectVC.h"
|
|
|
+#import "ConfigModel.h"
|
|
|
+#import "YPSelectShenPiPersonVC.h"
|
|
|
+#import "DeviceFormVC.h"
|
|
|
+
|
|
|
+@interface DeviceEnterFormVC ()
|
|
|
+@property (nonatomic,strong) NSMutableArray *gridData;//主从表数据
|
|
|
+@property (nonatomic,strong) DeviceSpecialView *dView;//
|
|
|
+@end
|
|
|
+
|
|
|
+@implementation DeviceEnterFormVC
|
|
|
+{
|
|
|
+ BOOL multidetailgrid;//判断是否有多明细表
|
|
|
+ NSMutableArray *_listArr; //获取配置表的数据(主表)
|
|
|
+ JXDatePicker *_date;
|
|
|
+ UITableView *_acceptTableView;
|
|
|
+ int _textTag; //判断哪个textView触发选择日期
|
|
|
+ ConfigModel *_cModel; //单据配置时标识状态码字段
|
|
|
+}
|
|
|
+- (void)viewDidLoad {
|
|
|
+ [super viewDidLoad];
|
|
|
+
|
|
|
+ _listArr = [NSMutableArray new];
|
|
|
+ _gridData = [NSMutableArray new];
|
|
|
+ multidetailgrid = NO;
|
|
|
+ _acceptTableView = nil;
|
|
|
+
|
|
|
+ /*获取配置数据*/
|
|
|
+ [self getFormDataFromSever];
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark --- 提交上传操作
|
|
|
+-(void)uploadFormAction
|
|
|
+{
|
|
|
+ [MBProgressHUD showMessage:@"" toView:self.view];
|
|
|
+
|
|
|
+ [self.view endEditing:YES];
|
|
|
+
|
|
|
+ //拼接主表上传的数据
|
|
|
+ NSMutableDictionary *formParam = [NSMutableDictionary new];
|
|
|
+ //拼接多明细表单上传的数据
|
|
|
+ NSMutableArray *dataArr = [NSMutableArray new];
|
|
|
+
|
|
|
+ for (UITableView *tableView in self.dView.tableViewArr) {
|
|
|
+ [tableView endEditing:YES];
|
|
|
+
|
|
|
+ id obj = tableView.dataArray[0];
|
|
|
+ if ([obj isKindOfClass:[FormModel class]]) {
|
|
|
+ for (int i = 0; i<_listArr.count; i++) {
|
|
|
+ FormModel *model = _listArr[i];
|
|
|
+ for (int j = 0; j < model.showItems.count; j++) {
|
|
|
+ DetailFormModel *detailModel = model.showItems[j];
|
|
|
+ /*判断必填项*/
|
|
|
+ if ([detailModel.fd_allowblank isEqualToString:@"F"] || [detailModel.fd_allowblank isEqualToString:@"necessaryField"]) {
|
|
|
+ if (detailModel.fd_value.length == 0) {
|
|
|
+ [JOShowMessageFromNavi showDropViewWithMessage:@"必填项不能为空!" ToNavi:self.navigationController withColor:nil];
|
|
|
+ [MBProgressHUD hideHUDForView:self.view];
|
|
|
+ return;
|
|
|
+ }else{
|
|
|
+ [formParam addEntriesFromDictionary:@{detailModel.fd_field:FORMAT(@"%@",detailModel.fd_value != nil ? detailModel.fd_value:@"")}];
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ [formParam addEntriesFromDictionary:@{detailModel.fd_field:FORMAT(@"%@",detailModel.fd_value != nil ? detailModel.fd_value:@"")}];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int j = 0; j < model.hideItems.count; j++) {
|
|
|
+ DetailFormModel *detailModel = model.hideItems[j];
|
|
|
+ [formParam addEntriesFromDictionary:@{detailModel.fd_field:FORMAT(@"%@",detailModel.fd_value != nil ? detailModel.fd_value:@"")}];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }else{
|
|
|
+ NSMutableArray *gridDataArr = [NSMutableArray new];
|
|
|
+ NSString *dgCaller = @"";
|
|
|
+ for (int i = 0; i < tableView.dataArray.count; i++) {
|
|
|
+ NSMutableDictionary *gridDataDic = [NSMutableDictionary new];
|
|
|
+ MoreGridModel *model = tableView.dataArray[i];
|
|
|
+ /*特殊处理:配件用料,当类型选择为辅材且数量大于0时,必须要输入新设备/仓库名称和编号*/
|
|
|
+ NSString *typeStr = @"",*codeStr = @"",*newDevice = @"",*shuLiang = @"";
|
|
|
+ for (int j = 0; j < model.showItems.count; j++) {
|
|
|
+ DetailgridModel *detailModel = model.showItems[j];
|
|
|
+ if ([detailModel.dg_value isEqualToString:@"PROD"] || [detailModel.dg_value isEqualToString:@"辅材"]) {
|
|
|
+ typeStr = @"PROD";
|
|
|
+ }
|
|
|
+ if ([detailModel.dg_field isEqualToString:@"dd_ordercode"]) {
|
|
|
+ codeStr = detailModel.dg_value;
|
|
|
+ }
|
|
|
+ if ([detailModel.dg_field isEqualToString:@"dd_othcode"]) {
|
|
|
+ newDevice = detailModel.dg_value;
|
|
|
+ }
|
|
|
+ if ([detailModel.dg_field isEqualToString:@"dd_qty"]) {
|
|
|
+ shuLiang = detailModel.dg_value;
|
|
|
+ }
|
|
|
+ /*判断必填项*/
|
|
|
+ if ([detailModel.dg_logictype isEqualToString:@"F"] || [detailModel.dg_logictype isEqualToString:@"necessaryField"]) {
|
|
|
+ if (detailModel.dg_value.length == 0) {
|
|
|
+ [JOShowMessageFromNavi showDropViewWithMessage:@"明细必填项不能为空!" ToNavi:self.navigationController withColor:nil];
|
|
|
+ [MBProgressHUD hideHUDForView:self.view];
|
|
|
+ return;
|
|
|
+ }else{
|
|
|
+ [gridDataDic addEntriesFromDictionary:@{detailModel.dg_field:FORMAT(@"%@",detailModel.dg_value != nil ? detailModel.dg_value:@"")}];
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ [gridDataDic addEntriesFromDictionary:@{detailModel.dg_field:FORMAT(@"%@",detailModel.dg_value != nil ? detailModel.dg_value:@"")}];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /*特殊处理:配件用料,当类型选择为辅材且数量大于0时,必须要输入新设备/仓库名称和编号*/
|
|
|
+ if ([typeStr isEqualToString:@"PROD"] && [shuLiang intValue] > 0) {
|
|
|
+ if (newDevice.length == 0 || codeStr.length == 0) {
|
|
|
+ [JOShowMessageFromNavi showDropViewWithMessage:FORMAT(@"明细%d的编号和新设备/仓库名称不能为空",i+1) ToNavi:self.navigationController withColor:nil];
|
|
|
+ [MBProgressHUD hideHUDForView:self.view];
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int j = 0; j < model.hideItems.count; j++) {
|
|
|
+ DetailgridModel *detailModel = model.hideItems[j];
|
|
|
+ [gridDataDic addEntriesFromDictionary:@{detailModel.dg_field:FORMAT(@"%@",detailModel.dg_value != nil ? detailModel.dg_value:@"")}];
|
|
|
+ }
|
|
|
+ [gridDataArr addObject:gridDataDic];
|
|
|
+ dgCaller = model.dgcaller;
|
|
|
+ }
|
|
|
+ NSDictionary *dgDic = @{
|
|
|
+ @"dgcaller":dgCaller,
|
|
|
+ @"dgData":gridDataArr,
|
|
|
+ };
|
|
|
+ if (multidetailgrid) {
|
|
|
+ [dataArr addObject:dgDic];
|
|
|
+ }else
|
|
|
+ dataArr = gridDataArr;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //主表
|
|
|
+ NSData *jsonData = [NSJSONSerialization dataWithJSONObject:formParam options:NSJSONWritingPrettyPrinted error:nil];
|
|
|
+ NSString *formStr=[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
|
|
|
+
|
|
|
+ //多明细表
|
|
|
+ NSData *gridData = [NSJSONSerialization dataWithJSONObject:dataArr options:NSJSONWritingPrettyPrinted error:nil];
|
|
|
+ NSString *gridStr = [[NSString alloc] initWithData:gridData encoding:NSUTF8StringEncoding];
|
|
|
+ if (dataArr.count == 0) {
|
|
|
+ gridStr = @"";
|
|
|
+ }
|
|
|
+
|
|
|
+ SLog(@"主表合并的东西:%@",formParam);
|
|
|
+ SLog(@"多明细表合并的东西:%@",dataArr);
|
|
|
+
|
|
|
+ NSString *url = [NSString stringWithFormat:@"%@mobile/device/saveAndSubmitDeviceChange.action",g_id];
|
|
|
+
|
|
|
+ if (self.idStr) {
|
|
|
+ url = [NSString stringWithFormat:@"%@mobile/device/updateAndSubmitDeviceChange.action",g_id];
|
|
|
+ }
|
|
|
+
|
|
|
+ NSDictionary *dic = @{
|
|
|
+ @"caller":_caller,
|
|
|
+ @"formStore":formStr,
|
|
|
+ @"gridStore":multidetailgrid ? @"":gridStr,
|
|
|
+ @"othergridStore":multidetailgrid ? gridStr:@"",
|
|
|
+ @"master":g_master,
|
|
|
+ @"sessionUser":g_sessionUser,
|
|
|
+ @"sessionId":g_sessionId,
|
|
|
+ @"id":self.idStr ? self.idStr : @"0"
|
|
|
+ };
|
|
|
+
|
|
|
+ SLog(@"aaaaaaaa:%@ --- url:%@",dic,url);
|
|
|
+
|
|
|
+ url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
|
|
|
+
|
|
|
+ UASNetworkManager *manager = [UASNetworkManager shareManager];
|
|
|
+
|
|
|
+ [manager request:url method:POST parameters:dic progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
|
|
|
+ [MBProgressHUD hideHUDForView:self.view];
|
|
|
+
|
|
|
+ SLog(@"chenggong---:%@",responseObject);
|
|
|
+
|
|
|
+ NSString *specialStr = responseObject[@"exceptionInfo"];
|
|
|
+ //异常
|
|
|
+ if (specialStr.length != 0) {
|
|
|
+
|
|
|
+ [JOShowMessageFromNavi showDropViewWithMessage:specialStr ToNavi:self.navigationController withColor:nil];
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ NSDictionary *dic = responseObject;
|
|
|
+
|
|
|
+ NSString *idStr = @"";
|
|
|
+
|
|
|
+ idStr = FORMAT(@"%@",[dic objectForKey:_cModel.fo_keyfield]);
|
|
|
+
|
|
|
+ if (idStr.length == 0 || [idStr isEqualToString:@"(null)"]) {
|
|
|
+ idStr = [NSString stringWithFormat:@"%@",dic[@"keyvalue"]];
|
|
|
+ }
|
|
|
+
|
|
|
+ [self selectShenPiPersonWithDanJuId:idStr];
|
|
|
+
|
|
|
+ } failure:^(NSURLSessionDataTask *task, NSError *error) {
|
|
|
+ [MBProgressHUD hideHUDForView:self.view];
|
|
|
+
|
|
|
+ SLog(@"错误的原因:%@",error);
|
|
|
+ ErrorInfomation;
|
|
|
+
|
|
|
+ }];
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark --- 提交审核人
|
|
|
+-(void)selectShenPiPersonWithDanJuId:(NSString *)idStr
|
|
|
+{
|
|
|
+ [MBProgressHUD showMessage:@"" toView:self.view];
|
|
|
+
|
|
|
+ UASNetworkManager *manager1 = [UASNetworkManager manager];
|
|
|
+ manager1.requestSerializer = [AFHTTPRequestSerializer serializer];
|
|
|
+ manager1.responseSerializer = [AFHTTPResponseSerializer serializer];
|
|
|
+
|
|
|
+ NSString *url = [NSString stringWithFormat:@"%@common/getMultiNodeAssigns.action?caller=%@&id=%@&sessionId=%@&master=%@&sessionUser=%@",g_id,_caller,idStr,g_sessionId,g_master,g_sessionUser];
|
|
|
+
|
|
|
+ url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
|
|
|
+
|
|
|
+ [manager1 request:url method:GET parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
|
|
|
+
|
|
|
+ [MBProgressHUD hideHUDForView:self.view];
|
|
|
+
|
|
|
+ NSData *data = responseObject;
|
|
|
+
|
|
|
+ NSMutableArray *dataArray = [[NSMutableArray alloc]init];
|
|
|
+
|
|
|
+ id rootDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
|
|
|
+
|
|
|
+ NSString *idString = @"";
|
|
|
+
|
|
|
+ for (id obj in rootDic[@"assigns"])
|
|
|
+ {
|
|
|
+ for (id obk in obj[@"JP_CANDIDATES"]) {
|
|
|
+
|
|
|
+ [dataArray addObject:obk];
|
|
|
+ }
|
|
|
+
|
|
|
+ NSString * str = [NSString stringWithFormat:@"%@",obj[@"JP_NODEID"]];
|
|
|
+ idString = str;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if (dataArray.count == 0) {
|
|
|
+ /*详情页*/
|
|
|
+ DeviceFormVC *vc = [DeviceFormVC new];
|
|
|
+ vc.idStr = idStr;
|
|
|
+ vc.caller = self.caller;
|
|
|
+ vc.title = self.title;
|
|
|
+ vc.status = @"已提交";
|
|
|
+ [self.navigationController pushViewController:vc animated:YES];
|
|
|
+
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ YPSelectShenPiPersonVC *selectVC = [[YPSelectShenPiPersonVC alloc]init];
|
|
|
+ selectVC.dataArr = dataArray;
|
|
|
+ selectVC.backID = idString;
|
|
|
+ selectVC.master = @"";
|
|
|
+ //选择审批人之后的回调,跳转详情页
|
|
|
+ selectVC.block = ^{
|
|
|
+ DeviceFormVC *vc = [DeviceFormVC new];
|
|
|
+ vc.idStr = idStr;
|
|
|
+ vc.caller = self.caller;
|
|
|
+ vc.title = self.title;
|
|
|
+ vc.status = @"已提交";
|
|
|
+ [self.navigationController pushViewController:vc animated:YES];
|
|
|
+ };
|
|
|
+ [self.navigationController pushViewController:selectVC animated:YES];
|
|
|
+ }
|
|
|
+
|
|
|
+ } failure:^(NSURLSessionDataTask *task, NSError *error) {
|
|
|
+
|
|
|
+ [MBProgressHUD hideHUDForView:self.view];
|
|
|
+
|
|
|
+ DLog(@"什么错误呀==%@",error);
|
|
|
+ }];
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark --- 获取配置数据
|
|
|
+-(void)getFormDataFromSever
|
|
|
+{
|
|
|
+ [MBProgressHUD showMessage:@"" toView:self.view];
|
|
|
+
|
|
|
+ NSString *url = self.idStr ? [NSString stringWithFormat:@"%@mobile/getformandgriddetail.action",g_id] : [NSString stringWithFormat:@"%@mobile/common/getformandgriddetail.action",g_id];
|
|
|
+ NSDictionary *param = @{
|
|
|
+ @"id":self.idStr?self.idStr:@"0",
|
|
|
+ @"caller":self.caller,
|
|
|
+ @"condition":@"1=1",
|
|
|
+ @"sessionId":g_sessionId,
|
|
|
+ };
|
|
|
+
|
|
|
+ url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
|
|
|
+
|
|
|
+ UASNetworkManager *manager = [UASNetworkManager shareManager];
|
|
|
+ manager.responseSerializer = [AFJSONResponseSerializer serializer];
|
|
|
+ [manager request:url method:POST parameters:param progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
|
|
|
+ [MBProgressHUD hideHUDForView:self.view];
|
|
|
+ SLog(@"设备管理多明细通用表单:%@",responseObject);
|
|
|
+
|
|
|
+ //单据配置时标识状态码字段
|
|
|
+ _cModel = [[ConfigModel alloc]initWithDic:responseObject[@"config"]];
|
|
|
+
|
|
|
+ NSMutableArray *formAllDataArr = [NSMutableArray new];
|
|
|
+ NSMutableArray *gridAllDataArr = [NSMutableArray new];
|
|
|
+
|
|
|
+ for (id obj in responseObject[@"data"][@"formdetail"]) {
|
|
|
+
|
|
|
+ [formAllDataArr addObject:obj];
|
|
|
+ }
|
|
|
+
|
|
|
+ formAllDataArr = [NSDictionary changeType:formAllDataArr];
|
|
|
+
|
|
|
+ multidetailgrid = [responseObject[@"data"][@"multidetailgrid"] boolValue];
|
|
|
+ if (multidetailgrid) {
|
|
|
+ for (id obj in responseObject[@"data"][@"othergridetail"]) {
|
|
|
+ [gridAllDataArr addObject:obj];
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ NSMutableArray *arr = [NSMutableArray new];
|
|
|
+ for (id obj in responseObject[@"data"][@"gridetail"]) {
|
|
|
+ [arr addObject:obj];
|
|
|
+ }
|
|
|
+ if (arr.count != 0) {
|
|
|
+ NSDictionary *dic = @{
|
|
|
+ @"dgtitle":@"从属明细表",
|
|
|
+ @"dgcaller":@"",
|
|
|
+ @"detailgrid":arr,
|
|
|
+ };
|
|
|
+ [gridAllDataArr addObject:dic];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ gridAllDataArr = [NSDictionary changeType:gridAllDataArr];
|
|
|
+
|
|
|
+ if (formAllDataArr.count != 0) {
|
|
|
+ [self handlerDataFromDowload:formAllDataArr andGridData:gridAllDataArr];
|
|
|
+ }
|
|
|
+
|
|
|
+ } failure:^(NSURLSessionDataTask *task, NSError *error) {
|
|
|
+ ErrorInfomation;
|
|
|
+ [MBProgressHUD hideHUDForView:self.view];
|
|
|
+ SLog(@"%@",error);
|
|
|
+ }];
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark --- 配置表单数据处理
|
|
|
+- (void)handlerDataFromDowload:(NSMutableArray *)dataArr andGridData:(NSMutableArray *)gridDataArr
|
|
|
+{
|
|
|
+ /*先排序,后分组【坑货需求】*/
|
|
|
+ NSArray *aArr ;
|
|
|
+ NSArray *bArr ;
|
|
|
+ aArr = [dataArr mutableCopy];
|
|
|
+ // 排序key, 某个对象的属性名称,是否升序, YES-升序, NO-降序
|
|
|
+ NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"fd_detno" ascending:YES];
|
|
|
+ // 排序结果
|
|
|
+ bArr = [aArr sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
|
|
|
+ /************************************************************/
|
|
|
+
|
|
|
+ /*分组*/
|
|
|
+ NSMutableArray *array = [[NSMutableArray alloc]init];
|
|
|
+ for (int i = 0; i < bArr.count; i++) {
|
|
|
+ [array addObject:bArr[i][@"fd_group"]];
|
|
|
+ }
|
|
|
+ NSMutableArray *reloadArr = [[NSMutableArray alloc]init];
|
|
|
+ reloadArr = [bArr mutableCopy];
|
|
|
+
|
|
|
+ NSMutableArray *dateMutablearray = [[NSMutableArray alloc]init];
|
|
|
+ NSMutableArray *dateMutablearray1 = [[NSMutableArray alloc]init];
|
|
|
+ for (int i = 0; i < array.count; i ++) {
|
|
|
+
|
|
|
+ NSString *string = array[i];
|
|
|
+
|
|
|
+ //根据某个字段分组
|
|
|
+ NSMutableArray *tempArray = [[NSMutableArray alloc]init];
|
|
|
+
|
|
|
+ [tempArray addObject:string];
|
|
|
+
|
|
|
+ //切换总体的数据
|
|
|
+ NSMutableArray *tempArray1 = [[NSMutableArray alloc]init];
|
|
|
+
|
|
|
+ [tempArray1 addObject:reloadArr[i]];
|
|
|
+
|
|
|
+ for (int j = i+1; j < array.count; j ++) {
|
|
|
+
|
|
|
+ NSString *jstring = array[j];
|
|
|
+
|
|
|
+ if([string isEqualToString:jstring]){
|
|
|
+
|
|
|
+ [tempArray addObject:jstring];
|
|
|
+
|
|
|
+ [array removeObjectAtIndex:j];
|
|
|
+
|
|
|
+ [tempArray1 addObject:reloadArr[j]];
|
|
|
+
|
|
|
+ [reloadArr removeObjectAtIndex:j];
|
|
|
+
|
|
|
+ j -= 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ [dateMutablearray addObject:tempArray];
|
|
|
+ [dateMutablearray1 addObject:tempArray1];
|
|
|
+ }
|
|
|
+
|
|
|
+ /*构造模型*/
|
|
|
+ for (int i = 0; i < dateMutablearray1.count; i++)
|
|
|
+ {
|
|
|
+ NSMutableArray *sub = [NSMutableArray new];
|
|
|
+ sub = dateMutablearray1[i];
|
|
|
+
|
|
|
+ NSMutableArray *showArr = [NSMutableArray new];
|
|
|
+ NSMutableArray *hideArr = [NSMutableArray new];
|
|
|
+ NSString *fdTitle = @"";
|
|
|
+ for (id obj in sub) {
|
|
|
+ NSString *isShow = FORMAT(@"%@",[obj objectForKey:@"mfd_isdefault"]);
|
|
|
+ NSString *typeStr = FORMAT(@"%@",[obj objectForKey:@"fd_type"]);
|
|
|
+ if ([isShow isEqualToString:@"-1"] && ![typeStr isEqualToString:@"H"]) {
|
|
|
+ [showArr addObject:obj];
|
|
|
+ }else{
|
|
|
+ [hideArr addObject:obj];
|
|
|
+ }
|
|
|
+ fdTitle = [obj objectForKey:@"fd_group"];
|
|
|
+ }
|
|
|
+ NSDictionary *baseDic = @{
|
|
|
+ @"fdtitle":fdTitle != nil ? fdTitle:@"",
|
|
|
+ @"showItems":showArr,
|
|
|
+ @"hideItems":hideArr,
|
|
|
+ };
|
|
|
+ FormModel *model = [FormModel mj_objectWithKeyValues:baseDic];
|
|
|
+
|
|
|
+ for (id obj in model.showItems) {
|
|
|
+ DetailFormModel *detailFormModel = obj;
|
|
|
+ CGFloat height = [self getSizeWithText:FORMAT(@"%@*",detailFormModel.fd_caption)].height;
|
|
|
+ NSString *heightStr = FORMAT(@"%f",height+10);
|
|
|
+ if (height < 40) {
|
|
|
+ detailFormModel.cellHeight = @"40";
|
|
|
+ }else{
|
|
|
+ detailFormModel.cellHeight = heightStr;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ([self.caller isEqualToString:@"DeviceChange!Maintain"]) {
|
|
|
+ detailFormModel.fd_value = detailFormModel.fd_defaultvalue != nil ? detailFormModel.fd_defaultvalue:detailFormModel.fd_value;
|
|
|
+ if (self.specialArr.count != 0 ) {
|
|
|
+ for (int z = 0; z < self.specialArr.count; z++) {
|
|
|
+ if ([[_specialArr[z] objectForKey:@"fd_field"] isEqualToString: detailFormModel.fd_field]) {
|
|
|
+ detailFormModel.fd_value = FORMAT(@"%@",[_specialArr[z] objectForKey:@"fd_value"]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ([detailFormModel.fd_field isEqualToString:@"dc_emcode"]) {
|
|
|
+ detailFormModel.fd_value = g_emcode;
|
|
|
+ }
|
|
|
+ if ([detailFormModel.fd_field isEqualToString:@"dc_emname"]) {
|
|
|
+ detailFormModel.fd_value = g_personChineseName;
|
|
|
+ }
|
|
|
+ }else
|
|
|
+ detailFormModel.fd_value = detailFormModel.fd_defaultvalue != nil ? detailFormModel.fd_defaultvalue:detailFormModel.fd_value;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (id obj in model.hideItems) {
|
|
|
+ DetailFormModel *detailFormModel = obj;
|
|
|
+ detailFormModel.fd_value = detailFormModel.fd_defaultvalue != nil ? detailFormModel.fd_defaultvalue:detailFormModel.fd_value;
|
|
|
+ }
|
|
|
+
|
|
|
+ [_listArr addObject:model];
|
|
|
+ }
|
|
|
+
|
|
|
+ /*明细表的数据处理*/
|
|
|
+ if (gridDataArr.count != 0) {
|
|
|
+ [self handleGridDataWith:gridDataArr];
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark --- 明细表的数据处理
|
|
|
+-(void)handleGridDataWith:(NSMutableArray *)gridDataArr
|
|
|
+{
|
|
|
+ for (id allObj in gridDataArr) {
|
|
|
+ NSArray *bArr = [allObj objectForKey:@"detailgrid"];
|
|
|
+
|
|
|
+ /*分组*/
|
|
|
+ NSMutableArray *array = [[NSMutableArray alloc]init];
|
|
|
+ for (int i = 0; i < bArr.count; i++) {
|
|
|
+ [array addObject:FORMAT(@"%@",bArr[i][@"dg_group"])];
|
|
|
+ }
|
|
|
+ NSMutableArray *reloadArr = [[NSMutableArray alloc]init];
|
|
|
+ reloadArr = [bArr mutableCopy];
|
|
|
+
|
|
|
+ NSMutableArray *dateMutablearray = [[NSMutableArray alloc]init];
|
|
|
+ NSMutableArray *dateMutablearray1 = [[NSMutableArray alloc]init];
|
|
|
+ for (int i = 0; i < array.count; i ++) {
|
|
|
+
|
|
|
+ NSString *string = array[i];
|
|
|
+
|
|
|
+ //根据某个字段分组
|
|
|
+ NSMutableArray *tempArray = [[NSMutableArray alloc]init];
|
|
|
+
|
|
|
+ [tempArray addObject:string];
|
|
|
+
|
|
|
+ //切换总体的数据
|
|
|
+ NSMutableArray *tempArray1 = [[NSMutableArray alloc]init];
|
|
|
+
|
|
|
+ [tempArray1 addObject:reloadArr[i]];
|
|
|
+
|
|
|
+ for (int j = i+1; j < array.count; j ++) {
|
|
|
+
|
|
|
+ NSString *jstring = array[j];
|
|
|
+
|
|
|
+ if([string isEqualToString:jstring]){
|
|
|
+
|
|
|
+ [tempArray addObject:jstring];
|
|
|
+
|
|
|
+ [array removeObjectAtIndex:j];
|
|
|
+
|
|
|
+ [tempArray1 addObject:reloadArr[j]];
|
|
|
+
|
|
|
+ [reloadArr removeObjectAtIndex:j];
|
|
|
+
|
|
|
+ j -= 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ [dateMutablearray addObject:tempArray];
|
|
|
+ [dateMutablearray1 addObject:tempArray1];
|
|
|
+ }
|
|
|
+
|
|
|
+ /*构造模型*/
|
|
|
+ NSMutableArray <MoreGridModel *> *baseArr = [NSMutableArray new];
|
|
|
+ for (int i = 0; i < dateMutablearray1.count; i++)
|
|
|
+ {
|
|
|
+ NSMutableArray *sub = [NSMutableArray new];
|
|
|
+ sub = dateMutablearray1[i];
|
|
|
+
|
|
|
+ NSMutableArray *showArr = [NSMutableArray new];
|
|
|
+ NSMutableArray *hideArr = [NSMutableArray new];
|
|
|
+ for (id obj in sub) {
|
|
|
+ NSString *isShow = FORMAT(@"%@",[obj objectForKey:@"mdg_isdefault"]);
|
|
|
+ NSString *typeStr = FORMAT(@"%@",[obj objectForKey:@"dg_type"]);
|
|
|
+ if ([isShow isEqualToString:@"-1"] && ![typeStr isEqualToString:@"H"]) {
|
|
|
+ [showArr addObject:obj];
|
|
|
+ }else{
|
|
|
+ [hideArr addObject:obj];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ NSDictionary *baseDic = @{
|
|
|
+ @"dgtitle":allObj[@"dgtitle"],
|
|
|
+ @"dgcaller":allObj[@"dgcaller"],
|
|
|
+ @"showItems":showArr,
|
|
|
+ @"hideItems":hideArr,
|
|
|
+ };
|
|
|
+ MoreGridModel *model = [MoreGridModel mj_objectWithKeyValues:baseDic];
|
|
|
+ [baseArr addObject:model];
|
|
|
+
|
|
|
+ }
|
|
|
+ [self.gridData addObject:baseArr];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ 把主表插在第一个TableView
|
|
|
+ */
|
|
|
+ [self.gridData insertObject:_listArr atIndex:0];
|
|
|
+
|
|
|
+ [self creatFormUIWithData:self.gridData];
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark --- 配置表单页面
|
|
|
+-(void)creatFormUIWithData:(NSMutableArray *)arr
|
|
|
+{
|
|
|
+ self.dView = [[DeviceSpecialView alloc]initWithFrame:CGRectMake(0, 0, self_width, self_height-50)];
|
|
|
+ self.dView.statuType = Enter;
|
|
|
+ self.dView.idStr = self.idStr;
|
|
|
+ self.dView.gridData = arr;
|
|
|
+ [self.view addSubview:self.dView];
|
|
|
+
|
|
|
+ @weakify(self)
|
|
|
+ self.dView.msgBlock = ^(NSString *msgStr) {
|
|
|
+ @strongify(self)
|
|
|
+ [JOShowMessageFromNavi showDropViewWithMessage:msgStr ToNavi:self.navigationController withColor:nil];
|
|
|
+ };
|
|
|
+
|
|
|
+ __weak typeof(self) weakSelf = self;
|
|
|
+ self.dView.block = ^(int whichTextView,UITableView *tableView) {
|
|
|
+ __strong typeof(DeviceEnterFormVC) *strongSelf = weakSelf;
|
|
|
+ int a = whichTextView / 1000;
|
|
|
+ int b = whichTextView % 1000;
|
|
|
+
|
|
|
+ id obj = tableView.dataArray[a];
|
|
|
+ NSString *typeStr,*fieldStr,*titleStr,*renderer,*value;
|
|
|
+
|
|
|
+ if ([obj isKindOfClass:[MoreGridModel class]]) {
|
|
|
+ MoreGridModel *model = tableView.dataArray[a];
|
|
|
+ DetailgridModel *detailModel = model.showItems[b];
|
|
|
+ typeStr = [NSString stringWithFormat:@"%@",detailModel.dg_type];
|
|
|
+ fieldStr = [NSString stringWithFormat:@"%@",detailModel.dg_field];
|
|
|
+ titleStr = [NSString stringWithFormat:@"%@",detailModel.dg_caption];
|
|
|
+ renderer = [NSString stringWithFormat:@"%@",detailModel.dg_renderer];
|
|
|
+ value = [NSString stringWithFormat:@"%@",detailModel.dg_value];
|
|
|
+
|
|
|
+ /*保养用料-特殊处理*/
|
|
|
+ if ([fieldStr isEqualToString:@"dd_ordercode"] || [fieldStr isEqualToString:@"dd_othcode"]) {//类型选择/新设备编号选择
|
|
|
+ NSString *valueStr = @"";
|
|
|
+ for (int i = 0; i < model.showItems.count; i ++) {
|
|
|
+ DetailgridModel *detailModel = model.showItems[i];
|
|
|
+ if ([detailModel.dg_field isEqualToString:@"dd_type"]) {
|
|
|
+ valueStr = FORMAT(@"%@",detailModel.dg_value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (int i = 0; i < model.hideItems.count; i ++) {
|
|
|
+ DetailgridModel *detailModel = model.hideItems[i];
|
|
|
+ if ([detailModel.dg_field isEqualToString:@"dd_type"]) {
|
|
|
+ valueStr = FORMAT(@"%@",detailModel.dg_value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ([valueStr isEqualToString:@"配件"]) {
|
|
|
+ valueStr = @"DEVICE";
|
|
|
+ }
|
|
|
+ if ([valueStr isEqualToString:@"辅材"]) {
|
|
|
+ valueStr = @"PROD";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (valueStr.length == 0) {
|
|
|
+ [JOShowMessageFromNavi showDropViewWithMessage:@"请先选择类型" ToNavi:strongSelf.navigationController withColor:nil];
|
|
|
+ }else{
|
|
|
+ LYYDBfindSelctedVC *vc = [[LYYDBfindSelctedVC alloc] init];
|
|
|
+ if ([valueStr isEqualToString:@"DEVICE"]) {
|
|
|
+ if ([fieldStr isEqualToString:@"dd_ordercode"]) {
|
|
|
+ vc.caller = @"DeviceNew";
|
|
|
+ vc.type = @"SpecialGrid";
|
|
|
+ vc.mainCaller = model.dgcaller;
|
|
|
+ vc.filed = @"1devcode";
|
|
|
+ }
|
|
|
+ if ([fieldStr isEqualToString:@"dd_othcode"]) {
|
|
|
+ vc.caller = @"DeviceNew";
|
|
|
+ vc.type = @"SpecialGrid";
|
|
|
+ vc.mainCaller = model.dgcaller;
|
|
|
+ vc.filed = @"2decode";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ([valueStr isEqualToString:@"PROD"]) {
|
|
|
+ if ([fieldStr isEqualToString:@"dd_ordercode"]) {
|
|
|
+ vc.caller = @"ProdOthDevice";
|
|
|
+ vc.type = @"SpecialGrid";
|
|
|
+ vc.mainCaller = model.dgcaller;
|
|
|
+ vc.filed = @"2prodcode";
|
|
|
+ }
|
|
|
+ if ([fieldStr isEqualToString:@"dd_othcode"]) {
|
|
|
+ vc.caller = @"WareHouse!Dev";
|
|
|
+ vc.type = @"SpecialGrid";
|
|
|
+ vc.mainCaller = model.dgcaller;
|
|
|
+ vc.filed = @"1whcode";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ vc.title = titleStr;
|
|
|
+
|
|
|
+ [vc setMyBlock:^(NSDictionary *dic,NSMutableArray *arr) {
|
|
|
+
|
|
|
+ for (int z = 0; z < arr.count; z++) {
|
|
|
+ NSDictionary *arrDic = arr[z];
|
|
|
+
|
|
|
+ NSString *backField = @"";
|
|
|
+
|
|
|
+ //从表回调
|
|
|
+ backField = FORMAT(@"%@",[arrDic objectForKey:@"ds_gridfield"]);
|
|
|
+ /*显示的*/
|
|
|
+ for (int i = 0; i < model.showItems.count; i++) {
|
|
|
+ DetailgridModel *dmodel = model.showItems[i];
|
|
|
+ if ([dmodel.dg_field isEqualToString:backField]) {
|
|
|
+ dmodel.dg_value = [dic objectForKey:[arrDic objectForKey:@"ds_dbfindfield"]];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /*隐藏的*/
|
|
|
+ for (int i = 0; i < model.hideItems.count; i++) {
|
|
|
+ DetailgridModel *dmodel = model.hideItems[i];
|
|
|
+ if ([dmodel.dg_field isEqualToString:backField]) {
|
|
|
+ dmodel.dg_value = [dic objectForKey:[arrDic objectForKey:@"ds_dbfindfield"]];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [tableView reloadData];
|
|
|
+ }];
|
|
|
+
|
|
|
+ [strongSelf.navigationController pushViewController:vc animated:YES];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ else{
|
|
|
+ if ([typeStr isEqualToString:@"C"]) { //下拉框跳转界面
|
|
|
+ strongSelf->_date.hidden = YES;
|
|
|
+ strongSelf->_acceptTableView = nil;
|
|
|
+ [strongSelf.view endEditing:YES];
|
|
|
+
|
|
|
+ DocumentDataVC *dataVC = [[DocumentDataVC alloc]init];
|
|
|
+
|
|
|
+ dataVC.caller = model.dgcaller;
|
|
|
+
|
|
|
+ dataVC.field = fieldStr;
|
|
|
+
|
|
|
+ dataVC.type = typeStr;
|
|
|
+
|
|
|
+ dataVC.block = ^(NSDictionary *listData,NSString *showKey,NSDictionary *chain){
|
|
|
+
|
|
|
+ detailModel.dg_value = [listData objectForKey:@"DISPLAY"];
|
|
|
+
|
|
|
+ if ([fieldStr isEqualToString:@"dd_type"]) {
|
|
|
+ for (int i = 0; i < model.showItems.count; i ++) {
|
|
|
+ DetailgridModel *detailModel = model.showItems[i];
|
|
|
+ if (![detailModel.dg_field isEqualToString:@"dd_type"]) {
|
|
|
+ detailModel.dg_value = @"";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (int i = 0; i < model.hideItems.count; i ++) {
|
|
|
+ DetailgridModel *detailModel = model.hideItems[i];
|
|
|
+ if (![detailModel.dg_field isEqualToString:@"dd_type"]) {
|
|
|
+ detailModel.dg_value = @"";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [tableView reloadData];
|
|
|
+ };
|
|
|
+
|
|
|
+ dataVC.title = titleStr;
|
|
|
+
|
|
|
+ [strongSelf.navigationController pushViewController:dataVC animated:YES];
|
|
|
+ }
|
|
|
+
|
|
|
+ else if ([typeStr isEqualToString:@"SF"] || [typeStr isEqualToString:@"DF"]) { //单选跳转界面
|
|
|
+ strongSelf->_date.hidden = YES;
|
|
|
+ strongSelf->_acceptTableView = nil;
|
|
|
+ [strongSelf.view endEditing:YES];
|
|
|
+
|
|
|
+ LYYDBfindSelctedVC *vc = [[LYYDBfindSelctedVC alloc] init];
|
|
|
+ vc.caller = strongSelf->_caller;
|
|
|
+ vc.type = @"grid";
|
|
|
+ vc.mainCaller = strongSelf->_caller;
|
|
|
+
|
|
|
+ if(strongSelf->multidetailgrid){
|
|
|
+ //多明细表的要用多明细表自己的caller
|
|
|
+ vc.mainCaller = model.dgcaller;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ([[NSString stringWithFormat:@"%@",detailModel.dg_findfunctionname] containsString:@"|"]) {
|
|
|
+ vc.caller = [NSString stringWithFormat:@"%@",detailModel.dg_findfunctionname];
|
|
|
+
|
|
|
+ }else{
|
|
|
+ [JOShowMessageFromNavi showDropViewWithMessage:@"服务器配置错误" ToNavi:strongSelf.navigationController withColor:nil];
|
|
|
+ }
|
|
|
+
|
|
|
+ vc.filed = fieldStr;
|
|
|
+ vc.title = titleStr;
|
|
|
+
|
|
|
+ [vc setMyBlock:^(NSDictionary *dic,NSMutableArray *arr) {
|
|
|
+
|
|
|
+ for (int z = 0; z < arr.count; z++) {
|
|
|
+ NSDictionary *arrDic = arr[z];
|
|
|
+
|
|
|
+ NSString *backField = @"";
|
|
|
+
|
|
|
+ //从表回调
|
|
|
+ backField = FORMAT(@"%@",[arrDic objectForKey:@"ds_gridfield"]);
|
|
|
+ /*显示的*/
|
|
|
+ for (int i = 0; i < model.showItems.count; i++) {
|
|
|
+ DetailgridModel *dmodel = model.showItems[i];
|
|
|
+ if ([dmodel.dg_field isEqualToString:backField]) {
|
|
|
+ dmodel.dg_value = [dic objectForKey:[arrDic objectForKey:@"ds_dbfindfield"]];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /*隐藏的*/
|
|
|
+ for (int i = 0; i < model.hideItems.count; i++) {
|
|
|
+ DetailgridModel *dmodel = model.hideItems[i];
|
|
|
+ if ([dmodel.dg_field isEqualToString:backField]) {
|
|
|
+ dmodel.dg_value = [dic objectForKey:[arrDic objectForKey:@"ds_dbfindfield"]];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [tableView reloadData];
|
|
|
+ }];
|
|
|
+
|
|
|
+ [strongSelf.navigationController pushViewController:vc animated:YES];
|
|
|
+ }
|
|
|
+
|
|
|
+ else if ([typeStr isEqualToString:@"MF"]) { //多选跳转界面
|
|
|
+
|
|
|
+ strongSelf->_date.hidden = YES;
|
|
|
+ strongSelf->_acceptTableView = nil;
|
|
|
+ [strongSelf.view endEditing:YES];
|
|
|
+
|
|
|
+ MFselectVC *dataVC = [[MFselectVC alloc]init];
|
|
|
+
|
|
|
+ dataVC.caller = strongSelf->_caller;
|
|
|
+
|
|
|
+ dataVC.title = titleStr;
|
|
|
+
|
|
|
+ dataVC.field = fieldStr;
|
|
|
+
|
|
|
+ dataVC.type = typeStr;
|
|
|
+
|
|
|
+ dataVC.block = ^(NSArray *backData,NSString *showKey,NSMutableArray *dgField){
|
|
|
+ for (int a = 0; a < dgField.count; a++) {
|
|
|
+ /*显示的*/
|
|
|
+ for (int i = 0; i < model.showItems.count; i++) {
|
|
|
+ DetailgridModel *dmodel = model.showItems[i];
|
|
|
+ NSString *valueStr = @"";
|
|
|
+ if ([dmodel.dg_field isEqualToString:[dgField[a] objectForKey:@"field"]]) {
|
|
|
+ for (int i = 0; i < backData.count; i++) {
|
|
|
+ valueStr = [valueStr stringByAppendingString:[backData[i] objectForKey:[dgField[a] objectForKey:@"dbGridField"]]];
|
|
|
+ if (i != (backData.count-1)) {
|
|
|
+ valueStr = [valueStr stringByAppendingString:@"#"];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ dmodel.dg_value = valueStr;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /*隐藏的*/
|
|
|
+ for (int i = 0; i < model.hideItems.count; i++) {
|
|
|
+ DetailgridModel *dmodel = model.hideItems[i];
|
|
|
+ NSString *valueStr = @"";
|
|
|
+ if ([dmodel.dg_field isEqualToString:[dgField[a] objectForKey:@"field"]]) {
|
|
|
+ for (int i = 0; i < backData.count; i++) {
|
|
|
+ valueStr = [valueStr stringByAppendingString:[backData[i] objectForKey:[dgField[a] objectForKey:@"dbGridField"]]];
|
|
|
+ if (i != (backData.count-1)) {
|
|
|
+ valueStr = [valueStr stringByAppendingString:@"#"];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ dmodel.dg_value = valueStr;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [tableView reloadData];
|
|
|
+ };
|
|
|
+
|
|
|
+ [strongSelf.navigationController pushViewController:dataVC animated:YES];
|
|
|
+ }
|
|
|
+
|
|
|
+ else if ([typeStr isEqualToString:@"D"]) { //日期类型 - UIDatePickerModeDate
|
|
|
+
|
|
|
+ _textTag = whichTextView;
|
|
|
+ _acceptTableView = tableView;
|
|
|
+ strongSelf->_date.datePicker.datePickerMode = UIDatePickerModeDate;
|
|
|
+ [strongSelf.view addSubview:strongSelf->_date];
|
|
|
+ strongSelf->_date.hidden = NO;
|
|
|
+ [strongSelf.view endEditing:YES];
|
|
|
+ }
|
|
|
+
|
|
|
+ else if ([typeStr isEqualToString:@"DT"]) { //日期类型- UIDatePickerModeDateAndTime
|
|
|
+
|
|
|
+ _textTag = whichTextView;
|
|
|
+ _acceptTableView = tableView;
|
|
|
+ strongSelf->_date.datePicker.datePickerMode = UIDatePickerModeDateAndTime;
|
|
|
+ [strongSelf.view addSubview:strongSelf->_date];
|
|
|
+ strongSelf->_date.hidden = NO;
|
|
|
+ [strongSelf.view endEditing:YES];
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ FormModel *model = tableView.dataArray[a];
|
|
|
+ DetailFormModel *detailModel = model.showItems[b];
|
|
|
+ typeStr = [NSString stringWithFormat:@"%@",detailModel.fd_type];
|
|
|
+ fieldStr = [NSString stringWithFormat:@"%@",detailModel.fd_field];
|
|
|
+ titleStr = [NSString stringWithFormat:@"%@",detailModel.fd_caption];
|
|
|
+ value = [NSString stringWithFormat:@"%@",detailModel.fd_value];
|
|
|
+
|
|
|
+ if ([typeStr isEqualToString:@"C"]) { //下拉框跳转界面
|
|
|
+ strongSelf->_date.hidden = YES;
|
|
|
+ strongSelf->_acceptTableView = nil;
|
|
|
+ [strongSelf.view endEditing:YES];
|
|
|
+
|
|
|
+ DocumentDataVC *dataVC = [[DocumentDataVC alloc]init];
|
|
|
+
|
|
|
+ dataVC.caller = strongSelf->_caller;
|
|
|
+
|
|
|
+ dataVC.field = fieldStr;
|
|
|
+
|
|
|
+ dataVC.type = typeStr;
|
|
|
+
|
|
|
+ dataVC.block = ^(NSDictionary *listData,NSString *showKey,NSDictionary *chain){
|
|
|
+
|
|
|
+ detailModel.fd_value = [listData objectForKey:@"VALUE"];
|
|
|
+
|
|
|
+ [tableView reloadData];
|
|
|
+ };
|
|
|
+
|
|
|
+ dataVC.title = titleStr;
|
|
|
+
|
|
|
+ [strongSelf.navigationController pushViewController:dataVC animated:YES];
|
|
|
+ }
|
|
|
+
|
|
|
+ else if ([typeStr isEqualToString:@"SF"] || [typeStr isEqualToString:@"DF"]) { //单选跳转界面
|
|
|
+ strongSelf->_date.hidden = YES;
|
|
|
+ strongSelf->_acceptTableView = nil;
|
|
|
+ [strongSelf.view endEditing:YES];
|
|
|
+
|
|
|
+ NSString *formType = @"";
|
|
|
+ LYYDBfindSelctedVC *vc = [[LYYDBfindSelctedVC alloc] init];
|
|
|
+ formType = @"form";
|
|
|
+ vc.type = @"form";
|
|
|
+ vc.caller = strongSelf->_caller;
|
|
|
+ vc.filed = fieldStr;
|
|
|
+ vc.title = titleStr;
|
|
|
+
|
|
|
+ //特殊处理:保养单主表设备编号的DBFIND的condition要加上公司dc_cop
|
|
|
+ if ([fieldStr isEqualToString:@"dc_devcode"]) {
|
|
|
+ NSString *valueStr = @"";
|
|
|
+ for (int i = 0; i < model.showItems.count; i ++) {
|
|
|
+ DetailFormModel *detailModel = model.showItems[i];
|
|
|
+ if ([detailModel.fd_field isEqualToString:@"dc_cop"]) {
|
|
|
+ valueStr = FORMAT(@"%@",detailModel.fd_value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (int i = 0; i < model.hideItems.count; i ++) {
|
|
|
+ DetailFormModel *detailModel = model.hideItems[i];
|
|
|
+ if ([detailModel.fd_field isEqualToString:@"dc_cop"]) {
|
|
|
+ valueStr = FORMAT(@"%@",detailModel.fd_value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ vc.specialConditon = @{@"dc_cop":valueStr};
|
|
|
+ }
|
|
|
+
|
|
|
+ [vc setMyBlock:^(NSDictionary *dic,NSMutableArray *arr) {
|
|
|
+
|
|
|
+ for (int z = 0; z < arr.count; z++) {
|
|
|
+ NSDictionary *arrDic = arr[z];
|
|
|
+
|
|
|
+ NSString *backField = @"";
|
|
|
+ //主表回调
|
|
|
+ backField = FORMAT(@"%@",[arrDic objectForKey:@"field"]);
|
|
|
+ /*显示的*/
|
|
|
+ for (int i = 0; i < model.showItems.count; i++) {
|
|
|
+ DetailFormModel *dmodel = model.showItems[i];
|
|
|
+ if ([dmodel.fd_field isEqualToString:backField]) {
|
|
|
+ dmodel.fd_value = [dic objectForKey:[arrDic objectForKey:@"dbGridField"]];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /*隐藏的*/
|
|
|
+ for (int i = 0; i < model.hideItems.count; i++) {
|
|
|
+ DetailFormModel *dmodel = model.hideItems[i];
|
|
|
+ if ([dmodel.fd_field isEqualToString:backField]) {
|
|
|
+ dmodel.fd_value = [dic objectForKey:[arrDic objectForKey:@"dbGridField"]];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [tableView reloadData];
|
|
|
+ }];
|
|
|
+
|
|
|
+ [strongSelf.navigationController pushViewController:vc animated:YES];
|
|
|
+ }
|
|
|
+
|
|
|
+ else if ([typeStr isEqualToString:@"MF"]) { //多选跳转界面
|
|
|
+
|
|
|
+ strongSelf->_date.hidden = YES;
|
|
|
+ strongSelf->_acceptTableView = nil;
|
|
|
+ [strongSelf.view endEditing:YES];
|
|
|
+
|
|
|
+ MFselectVC *dataVC = [[MFselectVC alloc]init];
|
|
|
+
|
|
|
+ dataVC.caller = strongSelf->_caller;
|
|
|
+
|
|
|
+ dataVC.title = titleStr;
|
|
|
+
|
|
|
+ dataVC.field = fieldStr;
|
|
|
+
|
|
|
+ dataVC.type = typeStr;
|
|
|
+
|
|
|
+ dataVC.block = ^(NSArray *backData,NSString *showKey,NSMutableArray *dgField){
|
|
|
+ for (int a = 0; a < dgField.count; a++) {
|
|
|
+ /*显示的*/
|
|
|
+ for (int i = 0; i < model.showItems.count; i++) {
|
|
|
+ DetailFormModel *dmodel = model.showItems[i];
|
|
|
+ NSString *valueStr = @"";
|
|
|
+ if ([dmodel.fd_field isEqualToString:[dgField[a] objectForKey:@"field"]]) {
|
|
|
+ for (int i = 0; i < backData.count; i++) {
|
|
|
+ valueStr = [valueStr stringByAppendingString:[backData[i] objectForKey:[dgField[a] objectForKey:@"dbGridField"]]];
|
|
|
+ if (i != (backData.count-1)) {
|
|
|
+ valueStr = [valueStr stringByAppendingString:@"#"];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ dmodel.fd_value = valueStr;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /*隐藏的*/
|
|
|
+ for (int i = 0; i < model.hideItems.count; i++) {
|
|
|
+ DetailFormModel *dmodel = model.hideItems[i];
|
|
|
+ NSString *valueStr = @"";
|
|
|
+ if ([dmodel.fd_field isEqualToString:[dgField[a] objectForKey:@"field"]]) {
|
|
|
+ for (int i = 0; i < backData.count; i++) {
|
|
|
+ valueStr = [valueStr stringByAppendingString:[backData[i] objectForKey:[dgField[a] objectForKey:@"dbGridField"]]];
|
|
|
+ if (i != (backData.count-1)) {
|
|
|
+ valueStr = [valueStr stringByAppendingString:@"#"];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ dmodel.fd_value = valueStr;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [tableView reloadData];
|
|
|
+ };
|
|
|
+
|
|
|
+ [strongSelf.navigationController pushViewController:dataVC animated:YES];
|
|
|
+ }
|
|
|
+
|
|
|
+ else if ([typeStr isEqualToString:@"D"]) { //日期类型 - UIDatePickerModeDate
|
|
|
+
|
|
|
+ _textTag = whichTextView;
|
|
|
+ _acceptTableView = tableView;
|
|
|
+ strongSelf->_date.datePicker.datePickerMode = UIDatePickerModeDate;
|
|
|
+ [strongSelf.view addSubview:strongSelf->_date];
|
|
|
+ strongSelf->_date.hidden = NO;
|
|
|
+ [strongSelf.view endEditing:YES];
|
|
|
+ }
|
|
|
+
|
|
|
+ else if ([typeStr isEqualToString:@"DT"]) { //日期类型- UIDatePickerModeDateAndTime
|
|
|
+
|
|
|
+ _textTag = whichTextView;
|
|
|
+ _acceptTableView = tableView;
|
|
|
+ strongSelf->_date.datePicker.datePickerMode = UIDatePickerModeDateAndTime;
|
|
|
+ [strongSelf.view addSubview:strongSelf->_date];
|
|
|
+ strongSelf->_date.hidden = NO;
|
|
|
+ [strongSelf.view endEditing:YES];
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark -- 时期选择
|
|
|
+-(void)onDateDO
|
|
|
+{
|
|
|
+ NSDate *selected = [_date date];
|
|
|
+
|
|
|
+ int a = _textTag / 1000;
|
|
|
+ int b = _textTag % 1000;
|
|
|
+
|
|
|
+ id obj = _acceptTableView.dataArray[a];
|
|
|
+ if ([obj isKindOfClass:[MoreGridModel class]]) {
|
|
|
+ NSString *dateStr = @"";
|
|
|
+ if (_date.datePicker.datePickerMode == UIDatePickerModeDate) {
|
|
|
+ dateStr = [((AppDelegate*)[[UIApplication sharedApplication] delegate]) formatdate:selected format:@"yyyy-MM-dd"];
|
|
|
+ }else{
|
|
|
+ dateStr = [((AppDelegate*)[[UIApplication sharedApplication] delegate]) formatdate:selected format:@"yyyy-MM-dd HH:mm:ss"];
|
|
|
+ }
|
|
|
+
|
|
|
+ MoreGridModel *model = _acceptTableView.dataArray[a];
|
|
|
+ DetailgridModel *detailModel = model.showItems[b];
|
|
|
+ detailModel.dg_value = dateStr;
|
|
|
+ [_acceptTableView reloadData];
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ NSString *dateStr = @"";
|
|
|
+ if (_date.datePicker.datePickerMode == UIDatePickerModeDate) {
|
|
|
+ dateStr = [((AppDelegate*)[[UIApplication sharedApplication] delegate]) formatdate:selected format:@"yyyy-MM-dd"];
|
|
|
+ }else{
|
|
|
+ dateStr = [((AppDelegate*)[[UIApplication sharedApplication] delegate]) formatdate:selected format:@"yyyy-MM-dd HH:mm:ss"];
|
|
|
+ }
|
|
|
+
|
|
|
+ FormModel *model = _listArr[a];
|
|
|
+ DetailFormModel *detailModel = model.showItems[b];
|
|
|
+ detailModel.fd_value = dateStr;
|
|
|
+ [_acceptTableView reloadData];
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+-(void)onDateClear
|
|
|
+{
|
|
|
+ int a = _textTag / 1000;
|
|
|
+ int b = _textTag % 1000;
|
|
|
+ id obj = _acceptTableView.dataArray[a];
|
|
|
+ if ([obj isKindOfClass:[MoreGridModel class]]) {
|
|
|
+ NSString *dateStr = @"";
|
|
|
+
|
|
|
+ MoreGridModel *model = _acceptTableView.dataArray[a];
|
|
|
+ DetailgridModel *detailModel = model.showItems[b];
|
|
|
+ detailModel.dg_value = dateStr;
|
|
|
+ [_acceptTableView reloadData];
|
|
|
+
|
|
|
+ }else{
|
|
|
+ NSString *dateStr = @"";
|
|
|
+
|
|
|
+ FormModel *model = _listArr[a];
|
|
|
+ DetailFormModel *detailModel = model.showItems[b];
|
|
|
+ detailModel.fd_value = dateStr;
|
|
|
+ [_acceptTableView reloadData];
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark --- 创建UI
|
|
|
+-(void)createUI
|
|
|
+{
|
|
|
+ UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
|
|
|
+ btn.frame = CGRectMake(0, 0, 21, 21);
|
|
|
+ UIImageView *image = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 21, 21)];
|
|
|
+ image.image = [UIImage imageNamed:@"UU_device_list"];
|
|
|
+ [btn addSubview:image];
|
|
|
+ [btn addTarget:self action:@selector(clickRightBtn) forControlEvents:UIControlEventTouchUpInside];
|
|
|
+
|
|
|
+ if (!self.idStr) {
|
|
|
+ UIBarButtonItem *bbi = [[UIBarButtonItem alloc]initWithCustomView:btn];
|
|
|
+ self.navigationItem.rightBarButtonItems = @[bbi];
|
|
|
+ }
|
|
|
+
|
|
|
+ UIButton *uploadBtn = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
|
+ uploadBtn.layer.masksToBounds = YES;
|
|
|
+ uploadBtn.layer.cornerRadius = 5;
|
|
|
+ [uploadBtn setBackgroundColor:HexColor(@"#33A2EE") forState:UIControlStateNormal];
|
|
|
+ [uploadBtn setBackgroundColor:HexColor(@"#8EB2CD") forState:UIControlStateDisabled];
|
|
|
+ [uploadBtn setBackgroundColor:HexColor(@"#2D84C0") forState:UIControlStateHighlighted];
|
|
|
+ [uploadBtn setTitle:Localized(@"UU_custom_submit") forState:UIControlStateNormal];
|
|
|
+ uploadBtn.userInteractionEnabled = YES;
|
|
|
+ [uploadBtn addTarget:self action:@selector(uploadFormAction) forControlEvents:UIControlEventTouchUpInside];
|
|
|
+ [self.view addSubview:uploadBtn];
|
|
|
+ [uploadBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.left.equalTo(self.view).offset(20);
|
|
|
+ make.right.equalTo(self.view).offset(-20);
|
|
|
+ make.bottom.equalTo(self.view).offset(-5);
|
|
|
+ make.height.mas_equalTo(40);
|
|
|
+ }];
|
|
|
+
|
|
|
+ _date = [[JXDatePicker alloc] initWithFrame:CGRectMake(0, 0, self_width, self_height)];
|
|
|
+ _date.delegate = self;
|
|
|
+ _date.didSelect = @selector(onDateDO);
|
|
|
+ _date.didClear = @selector(onDateClear);
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark --- 列表
|
|
|
+-(void)clickRightBtn
|
|
|
+{
|
|
|
+ LYYDMDataSearchVC *dListVC = [[LYYDMDataSearchVC alloc]init];
|
|
|
+ dListVC.title = self.title;
|
|
|
+ dListVC.caller = self.caller;
|
|
|
+ if ([self.title isEqualToString:Localized(@"UU_Maintenance")]) {
|
|
|
+ dListVC.mustStr = @"保养维护";
|
|
|
+ }else{
|
|
|
+ dListVC.mustStr = self.title;
|
|
|
+ }
|
|
|
+ [self.navigationController pushViewController:dListVC animated:YES];
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark --- 自动获取文本高度
|
|
|
+- (CGSize)getSizeWithText:(NSString *)text
|
|
|
+{
|
|
|
+ /**
|
|
|
+ 参数1:Size 文本显示的最大区域
|
|
|
+ 参数2:options 用什么来的换行模式来计算
|
|
|
+ 参数3:attributes 文字的大小
|
|
|
+ 参数4:context 上下文
|
|
|
+ */
|
|
|
+
|
|
|
+ return [FORMAT(@"%@",text) boundingRectWithSize:CGSizeMake(90, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : FONT_SIZE(14)} context:NULL].size;
|
|
|
+}
|
|
|
+
|
|
|
+@end
|