You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
520 lines
19 KiB
520 lines
19 KiB
// |
|
// SelectContactVC.m |
|
// tongxin |
|
// |
|
// Created by WeiChaoZheng on 2018/6/27. |
|
// Copyright © 2018年 xTT. All rights reserved. |
|
// |
|
|
|
#import "SelectContactVC.h" |
|
#import "NewCollectionTableViewCell.h" |
|
#import "NewTableViewCell.h" |
|
#import "EditDeviceViewController.h" |
|
|
|
|
|
/** |
|
选择 绑定设备的 关系 |
|
*/ |
|
@interface SelectContactVC ()<UITextFieldDelegate> |
|
{ |
|
} |
|
|
|
@property (nonatomic ,strong) NSString *relation; |
|
|
|
/** |
|
弱引用的 关系cell |
|
*/ |
|
//添加设备的模式下才有的 关系名称cell |
|
@property (assign , nonatomic) NewTableViewCell *contactCell; |
|
|
|
@property (assign , nonatomic) NewTableViewCell *phoneCell; |
|
|
|
@property (assign , nonatomic) NewTableViewCell *dphoneCell; |
|
|
|
// 通讯录添加的模式下才有的 联系人cell |
|
@property (assign , nonatomic) NewTableViewCell *nameCell; |
|
|
|
@property (strong , nonatomic) UIBarButtonItem *rightBarButton; |
|
|
|
/** |
|
默认关系名称 |
|
*/ |
|
@property (strong , nonatomic) NSArray *contactNamrArr; |
|
|
|
@end |
|
|
|
@implementation SelectContactVC |
|
@synthesize myDataSource = _myDataSource; |
|
-(NSMutableArray *)myDataSource |
|
{ |
|
if(!_myDataSource){ |
|
if(self.isContact){ |
|
_myDataSource = [NSMutableArray arrayWithArray:@[@[@"联系人",@"电话号码",@"选择头像"]]]; |
|
} |
|
else |
|
{ |
|
_myDataSource = [NSMutableArray arrayWithArray:@[@[self.deviceType.integerValue == 3 ? @"与我的关系" : @"关系",@"电话号码",@"选择头像"]]]; |
|
} |
|
|
|
} |
|
return _myDataSource; |
|
} |
|
-(Contacts *)contactModel{ |
|
if(!_contactModel){ |
|
_contactModel = [Contacts new]; |
|
} |
|
return _contactModel; |
|
} |
|
|
|
-(void)viewWillAppear:(BOOL)animated{ |
|
[super viewWillAppear:animated]; |
|
// self.contactNamrArr = @[@"爸爸",@"妈妈",@"爷爷",@"奶奶",@"外公",@"外婆",@"叔叔",@"阿姨",@"亲人"]; |
|
self.contactNamrArr = [myHelper getRelationshipNameArr:self.deviceType.integerValue]; |
|
self.relation = self.deviceType.integerValue == 3 ? @"与我的关系" : @"关系"; |
|
|
|
if(self.isContact) |
|
{ |
|
if(self.isAddContact) |
|
self.myDataSource = [NSMutableArray arrayWithArray:@[@[@"联系人",@"电话号码",@"短号/亲情号"],@[@"选择头像"]]]; |
|
else |
|
self.myDataSource = [NSMutableArray arrayWithArray:@[@[@"联系人",@"电话号码"],@[@"选择头像"]]]; |
|
} |
|
else |
|
{ |
|
if(self.isAddDevice){ |
|
self.myDataSource = [NSMutableArray arrayWithArray:@[@[self.relation,@"我的号码"],@[@"选择头像"]]]; |
|
}else{ |
|
self.myDataSource = [NSMutableArray arrayWithArray:@[@[self.relation],@[@"选择头像"]]]; |
|
} |
|
} |
|
|
|
NSString * rightBtnName = @"保存"; |
|
if(self.isAddDevice){ |
|
rightBtnName = @"下一步"; |
|
} |
|
if(self.adminInfo){ |
|
rightBtnName = @"申请关注"; |
|
//弹框 |
|
NSString *adminPhone = self.adminInfo[@"admin_phone"]; |
|
adminPhone = [NSString stringWithFormat:@"%@****%@",[adminPhone substringToIndex:3],[adminPhone substringFromIndex:7]]; |
|
NSString *msg = [NSString stringWithFormat: @"设备已被%@绑定,请选择关系后向管理员申请关注",adminPhone]; |
|
LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:@"提示" message:msg style:LGAlertViewStyleAlert buttonTitles:@[@"确定"] cancelButtonTitle:@"" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) { |
|
|
|
} cancelHandler:nil destructiveHandler:nil]; |
|
[alertView showAnimated:YES completionHandler:nil]; |
|
} |
|
// 右保存按钮 |
|
[self zx_setRightBtnWithText:rightBtnName clickedBlock:^(ZXNavItemBtn * _Nonnull btn) { |
|
[self rightBarItemClick]; |
|
}]; |
|
if(self.isContact){ |
|
self.zx_navRightBtn.enabled = NO; |
|
[self.zx_navRightBtn setTitleColor:mainColorK forState:0]; |
|
} |
|
|
|
} |
|
- (void)viewDidLoad { |
|
[super viewDidLoad]; |
|
if(self.isContact){ |
|
if(self.isAddContact){ |
|
self.zx_navTitle = @"添加联系人"; |
|
}else{ |
|
self.zx_navTitle = @"修改联系人"; |
|
} |
|
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:nil]; |
|
}else{ |
|
self.zx_navTitle = @"选择关系"; |
|
} |
|
|
|
[self.view setBackgroundColor:[UIColor whiteColor]]; |
|
|
|
[self initTableView]; |
|
} |
|
|
|
- (void)dianhao |
|
{ |
|
self.contact = self.contactCell.aTextField.text; |
|
|
|
self.phone = self.dphoneCell.aTextField.text; |
|
self.name = [NSString stringWithFormat:@"%@(短号)",self.nameCell.aTextField.text]; |
|
|
|
// 通讯录 |
|
if(self.nameCell.aTextField.text.length == 0){ |
|
[UICommon MessageErrorText:@"请输入联系人名称"]; |
|
return; |
|
}else if (self.phoneCell.aTextField.text.length == 0 ){ |
|
[UICommon MessageErrorText:@"请输入电话号码"]; |
|
return; |
|
}else if (!self.contactId){ |
|
if (self.isContact && self.isAddContact) { |
|
[UICommon MessageErrorText:@"请选择头像"]; |
|
} else { |
|
[UICommon MessageErrorText:@"请选择与设备的关系"]; |
|
} |
|
|
|
return; |
|
} |
|
|
|
self.contactModel.name = [NSString stringWithFormat:@"%@(短号)",self.nameCell.aTextField.text]; |
|
self.contactModel.phone = self.dphoneCell.aTextField.text; |
|
self.contactModel.relationship_image_id = self.contactId; |
|
WEAKSELF |
|
//根据 模型model 的 id 是否有判断 是使用 POST(添加) 还是 PATCH(修改) |
|
[self.contactModel saveSuccess:^{ |
|
if(weakSelf.selectContactBack){ |
|
weakSelf.selectContactBack(weakSelf.contact, weakSelf.contactId, weakSelf.phone, weakSelf.name); |
|
} |
|
[weakSelf goBack:nil]; |
|
} failure:^{ |
|
xLog(@"cuo wu"); |
|
}]; |
|
|
|
} |
|
|
|
|
|
-(void)rightBarItemClick{ |
|
WEAKSELF |
|
|
|
self.contact = self.contactCell.aTextField.text; |
|
|
|
self.phone = self.phoneCell.aTextField.text; |
|
self.name = self.nameCell.aTextField.text; |
|
|
|
if(self.isContact) |
|
{ |
|
// 通讯录 |
|
if(self.nameCell.aTextField.text.length == 0){ |
|
[UICommon MessageErrorText:@"请输入联系人名称"]; |
|
return; |
|
}else if (self.phoneCell.aTextField.text.length == 0 ){ |
|
[UICommon MessageErrorText:@"请输入电话号码"]; |
|
return; |
|
}else if (!self.contactId){ |
|
if (self.isContact && self.isAddContact) { |
|
[UICommon MessageErrorText:@"请选择头像"]; |
|
} else { |
|
[UICommon MessageErrorText:@"请选择与设备的关系"]; |
|
} |
|
|
|
return; |
|
} |
|
|
|
self.contactModel.name = self.nameCell.aTextField.text; |
|
self.contactModel.phone = self.phoneCell.aTextField.text; |
|
self.contactModel.relationship_image_id = self.contactId; |
|
WEAKSELF |
|
//根据 模型model 的 id 是否有判断 是使用 POST(添加) 还是 PATCH(修改) |
|
[self.contactModel saveSuccess:^{ |
|
if(weakSelf.selectContactBack){ |
|
weakSelf.selectContactBack(weakSelf.contact, weakSelf.contactId, weakSelf.phone, weakSelf.name); |
|
} |
|
if (self.isAddContact && self.dphoneCell.aTextField.text.length > 0) |
|
[self dianhao]; |
|
else |
|
[weakSelf goBack:nil]; |
|
} failure:^{ |
|
xLog(@"cuo wu"); |
|
}]; |
|
return; |
|
|
|
}else if(!self.isAddDevice){ |
|
if(self.contactCell.aTextField.text.length == 0){ |
|
[UICommon MessageErrorText:[NSString stringWithFormat:@"请输入%@",self.relation]]; |
|
return; |
|
}else if (self.contactCell.aTextField.text.length >8) { |
|
[UICommon MessageErrorText:@"关系不能大于8位"]; |
|
return; |
|
}else if (self.isAddDevice && self.phoneCell.aTextField.text.length == 0 ){ |
|
[UICommon MessageErrorText:@"请输入电话号码"]; |
|
return; |
|
}else if (!self.contactId){ |
|
[UICommon MessageErrorText:@"请选择与设备的关系"]; |
|
return; |
|
} |
|
if(self.selectContactBack){ |
|
if(!self.phone){ |
|
self.phone = cUser.cDevice.phone; |
|
} |
|
self.selectContactBack(self.contact, self.contactId, self.phone, self.name); |
|
} |
|
[self goBack:nil]; |
|
} |
|
else |
|
{ |
|
//添加设备的情况 |
|
if(self.contactCell.aTextField.text.length == 0){ |
|
[UICommon MessageErrorText:[NSString stringWithFormat:@"请输入%@",self.relation]]; |
|
return; |
|
}else if (self.contactCell.aTextField.text.length >8) { |
|
[UICommon MessageErrorText:@"关系不能大于8位"]; |
|
return; |
|
}else if (self.isAddDevice && self.phoneCell.aTextField.text.length == 0 ){ |
|
[UICommon MessageErrorText:@"请输入你的号码"]; |
|
return; |
|
}else if (!self.contactId){ |
|
[UICommon MessageErrorText:@"请选择与设备的关系"]; |
|
return; |
|
} |
|
if([self.zx_navRightBtn.currentTitle isEqualToString:@"申请关注"]) |
|
{ |
|
NSMutableDictionary *params = [NSMutableDictionary dictionary]; |
|
[params setObject:self.adminInfo[@"admin_openid"] forKey:@"admin_openid"]; |
|
[params setObject:self.imei forKey:@"imei"]; |
|
//添加 我的手机号 phone , 关系image contactID, 和 关系名称contact |
|
|
|
[params setObject:self.phone forKey:@"my_phone"]; |
|
[params setObject:self.contactId forKey:@"relationship_image_id"]; |
|
[params setObject:self.contact forKey:@"relationship"]; |
|
|
|
|
|
[cUser postDeviceInAdmin:params success:^(id responseObject) { |
|
//弹窗提示向管理员发送关注设备申请 |
|
[weakSelf.navigationController popToRootViewControllerAnimated:YES]; |
|
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ |
|
[UICommon MessageSuccessText:@"已向管理员发送关注设备申请" isImg:YES]; |
|
}); |
|
|
|
|
|
} failure:^(id faiObject) { |
|
xLog(@"申请关注失败"); |
|
}]; |
|
|
|
}else{ |
|
//下一步 应该是 管理员初始绑定 |
|
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; |
|
EditDeviceViewController *vc = [sb instantiateViewControllerWithIdentifier:@"EditDeviceViewController"]; |
|
vc.isAdd = YES; |
|
vc.deviceType = self.deviceType; |
|
vc.IMEI = self.imei; |
|
vc.editDevice = [Device new]; |
|
vc.editDevice.imei = self.imei; |
|
vc.editDevice.my_phone = self.phone; |
|
vc.editDevice.relationship_image_id = self.contactId; |
|
vc.editDevice.relationship = self.contact; |
|
[self.navigationController pushViewController:vc animated:YES]; |
|
} |
|
} |
|
|
|
|
|
} |
|
-(void)initTableView{ |
|
self.view.backgroundColor = RGB(248, 247, 247); |
|
//self.tableView.estimatedRowHeight = 0; |
|
self.myTableView.estimatedSectionHeaderHeight = 0; |
|
self.myTableView.estimatedSectionFooterHeight = 0; |
|
self.myTableView.frame = CGRectMake(0, iPhoneX_NavHeight, SWIDTH, SHEIGHT-iPhoneX_NavHeight); |
|
[UICommon setTavleViewlink:self.myTableView distance:16]; |
|
[self.view addSubview:self.myTableView]; |
|
//注册 cell |
|
[self.myTableView registerNib:[UINib nibWithNibName:@"NewCollectionTableViewCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"NewCollectionTableViewCellID"]; |
|
[self.myTableView registerNib:[UINib nibWithNibName:@"NewTableViewCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"NewTableViewCellID"]; |
|
|
|
//去线 |
|
//self.myTableView.separatorStyle = UITableViewCellSelectionStyleNone; |
|
self.myTableView.backgroundColor = KKClearColor; |
|
} |
|
|
|
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section |
|
{ |
|
|
|
return section == 0 ? 16 : 12; |
|
} |
|
|
|
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ |
|
if (indexPath.section == 1) |
|
{ |
|
return 334+36; |
|
}else{ |
|
return 60; |
|
} |
|
} |
|
|
|
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ |
|
|
|
if(indexPath.section == 1) |
|
{ // 关系 九宫格 |
|
NewCollectionTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"NewCollectionTableViewCellID" forIndexPath:indexPath]; |
|
|
|
WEAKSELF |
|
cell.deviceType = self.deviceType; |
|
cell.contactcode = self.contactId.intValue; |
|
cell.selectContactBlock = ^(NSString *contact, int code) { |
|
// 如果输入的 名称是默认的 或者是 空的 都替换 |
|
if([weakSelf.contactNamrArr containsObject:weakSelf.contactCell.aTextField.text] |
|
|| weakSelf.contactCell.aTextField.text.length == 0) |
|
{ |
|
weakSelf.contactCell.aTextField.text = contact; |
|
} |
|
|
|
weakSelf.contact = contact; |
|
weakSelf.contactId = @(code); |
|
[weakSelf textChange]; |
|
}; |
|
return cell; |
|
} |
|
else |
|
{ |
|
NewTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"NewTableViewCellID" forIndexPath:indexPath]; |
|
|
|
[cell.backView mas_updateConstraints:^(MASConstraintMaker *make) { |
|
make.left.right.equalTo(cell).inset(16); |
|
}]; |
|
|
|
cell.lineImage.hidden = YES; |
|
cell.backgroundColor = KKWhiteColorColor; |
|
NSString * title = self.myDataSource[0][indexPath.row]; |
|
cell.aTitleLabel.text = title; |
|
cell.aTextField.textAlignment = NSTextAlignmentRight; |
|
if([title isEqualToString:self.relation]){ |
|
cell.aTextField.placeholder = @"请输入关系"; |
|
cell.aTextField.delegate = self; |
|
cell.aTextField.tag = 9527; |
|
if(cell.aTextField.text.length == 0){ |
|
cell.aTextField.text = self.contact; |
|
} |
|
self.contactCell = cell; |
|
} |
|
else if([title isEqualToString:@"联系人"]) |
|
{ |
|
cell.aTextField.placeholder = @"请输入联系人名称"; |
|
cell.aTextField.text = self.name; |
|
cell.aTextField.delegate = self; |
|
self.nameCell = cell; |
|
self.contactCell = cell; |
|
|
|
} |
|
else if([title isEqualToString:@"电话号码"]) |
|
{ |
|
cell.aTextField.placeholder = @"请输入电话号码"; |
|
cell.aTextField.delegate = self; //限制 |
|
cell.aTextField.tag = 8888; |
|
cell.aTextField.text = self.phone; |
|
cell.aTextField.keyboardType = UIKeyboardTypePhonePad; |
|
self.phoneCell =cell; |
|
} |
|
else if([title isEqualToString:@"我的号码"]) |
|
{ |
|
//我的号码 |
|
cell.aTextField.placeholder = @"请输入我的号码"; |
|
cell.aTextField.delegate = self; //限制 |
|
cell.aTextField.text = self.phone; |
|
cell.aTextField.tag = 8888; |
|
cell.aTextField.keyboardType = UIKeyboardTypePhonePad; |
|
self.phoneCell =cell; |
|
} |
|
else if([title isEqualToString:@"短号/亲情号"]){ |
|
//我的号码 |
|
cell.aTextField.placeholder = @"请输入短号/亲情号(可不输入)"; |
|
cell.aTextField.tag = 8888; |
|
cell.aTextField.delegate = self; //限制 |
|
cell.aTextField.text = self.dphone; |
|
cell.aTextField.keyboardType = UIKeyboardTypePhonePad; |
|
self.dphoneCell =cell; |
|
} |
|
|
|
CGSize size = [cell.aTitleLabel.text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:Font_(16),NSFontAttributeName,nil]]; |
|
|
|
|
|
[cell.aTitleLabel mas_remakeConstraints:^(MASConstraintMaker *make) { |
|
make.left.equalTo(cell.backView); |
|
make.centerY.equalTo(cell.contentView); |
|
make.width.mas_equalTo(Adapted(size.width+10)); |
|
}]; |
|
|
|
[cell.aTextField mas_remakeConstraints:^(MASConstraintMaker *make) { |
|
make.centerY.equalTo(cell.contentView); |
|
make.right.equalTo(cell.backView.mas_right); |
|
make.left.equalTo(cell.aTitleLabel.mas_right).offset(15); |
|
make.height.mas_equalTo(30); |
|
}]; |
|
|
|
return cell; |
|
|
|
} |
|
return nil; |
|
} |
|
|
|
//MARK: 限制字数 和输入的 字符 |
|
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ |
|
|
|
if([textField.superview isEqual:self.phoneCell]){ |
|
if([@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" containsString:string]){ |
|
// 最终的结果 |
|
NSString *str = textField.text; |
|
NSString *resultStr = [str stringByReplacingCharactersInRange:range withString:string]; |
|
self.phone = resultStr; |
|
|
|
if(resultStr.length > 15){ |
|
return NO; |
|
}else{ |
|
return YES; |
|
} |
|
}else{ |
|
if([string isEqualToString:@""]){ |
|
return YES; |
|
} |
|
return NO; |
|
} |
|
}else if ([textField.superview isEqual:self.contactCell] || [textField.superview isEqual:self.nameCell] ){ |
|
// 最终的结果 |
|
NSString *str = textField.text; |
|
NSString *resultStr = [str stringByReplacingCharactersInRange:range withString:string]; |
|
self.contact = resultStr; |
|
self.name = resultStr; |
|
|
|
} |
|
else if (textField.tag == 8888) |
|
{ |
|
NSString *str = textField.text; |
|
NSString *resultStr = [str stringByReplacingCharactersInRange:range withString:string]; |
|
if(resultStr.length > 15) |
|
{ |
|
return NO; |
|
}else{ |
|
return YES; |
|
} |
|
} |
|
|
|
else if(textField.tag == 9527) |
|
{ |
|
|
|
NSString *str = textField.text; |
|
NSString *resultStr = [str stringByReplacingCharactersInRange:range withString:string]; |
|
|
|
// add by lsz 限制 |
|
//if (resultStr.length > 8) { |
|
// return NO; |
|
//} else { |
|
// return YES; |
|
//} |
|
|
|
} |
|
|
|
|
|
return YES; |
|
|
|
} |
|
|
|
-(void)textChange |
|
{ |
|
NSLog(@"-----Change-----\n%@--\n%@--\n%@",self.contactCell.aTextField.text,self.contactId,self.phoneCell.aTextField.text); |
|
|
|
if (self.contactCell.aTextField.text.length > 0 && self.phoneCell.aTextField.text.length > 0 && self.contactId) |
|
{ |
|
self.zx_navRightBtn.enabled = YES; |
|
[self.zx_navRightBtn setTitleColor:mainColor forState:0]; |
|
} |
|
else |
|
{ |
|
self.zx_navRightBtn.enabled = NO; |
|
[self.zx_navRightBtn setTitleColor:mainColorK forState:0]; |
|
} |
|
} |
|
|
|
//当前对像要销毁的时候,创建的通知要进行移除:(否则可能报错,坏内存访问) |
|
-(void)dealloc |
|
{ |
|
[[NSNotificationCenter defaultCenter] removeObserver:self]; |
|
} |
|
|
|
@end
|
|
|