// // ClientViewController.m // Lighting // // Created by 曹云霄 on 16/4/28. // Copyright © 2016年 上海勾芒科技有限公司. All rights reserved. // #import "ClientViewController.h" #import "InformationTableViewCell.h" #import "ClientdetailsViewController.h" #import "MyclientEntityModel.h" #import "DeviceDirectionManager.h" @interface ClientViewController () /** * 客户数据源 */ @property (nonatomic,strong) NSMutableArray *CustomerresultArray; /** * 当前页数 */ @property (nonatomic,assign) int indexPage; /** * 总页数 */ @property (nonatomic,assign) int totalPages; /** * 查询条件 */ @property (nonatomic,strong) ConsumerQueryCondition *condition; @end @implementation ClientViewController /** * 初始化客户数据源 */ - (NSMutableArray *)CustomerresultArray { if (_CustomerresultArray == nil) { _CustomerresultArray = [NSMutableArray array]; } return _CustomerresultArray; } - (ConsumerQueryCondition *)condition { if (!_condition) { _condition = [[ConsumerQueryCondition alloc]init]; DataPage *page = [[DataPage alloc]init]; page.sort = @"createDate"; page.order = @"desc"; self.condition.page = page; } return _condition; } - (void)viewDidLoad { [super viewDidLoad]; [self uiConfigAction]; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; self.navigationController.fd_fullscreenPopGestureRecognizer.enabled = NO; if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enabled = NO; } } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; self.navigationController.fd_fullscreenPopGestureRecognizer.enabled = YES; if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enabled = YES; } } #pragma mark -布局 - (void)uiConfigAction { //圆角 self.customerNameBack.layer.masksToBounds = YES; self.customerNameBack.layer.cornerRadius = kCornerRadius; self.phoneNumberBack.layer.masksToBounds = YES; self.phoneNumberBack.layer.cornerRadius = kCornerRadius; self.companyNameBack.layer.masksToBounds = YES; self.companyNameBack.layer.cornerRadius = kCornerRadius; self.customerAddressBack.layer.masksToBounds = YES; self.customerAddressBack.layer.cornerRadius = kCornerRadius; self.addpersonInformationButton.layer.masksToBounds = YES; self.addpersonInformationButton.layer.cornerRadius = kCornerRadius; self.changePersonInformationButton.layer.masksToBounds = YES; self.changePersonInformationButton.layer.cornerRadius = kCornerRadius; self.indexPage = 1; self.customerHeader.userInteractionEnabled = YES; [self.customerHeader addGestureRecognizer:[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(customerHeaderClckAction:)]]; //隐藏更改客户按钮 self.changePersonInformationButton.hidden = YES; //代理 self.informationTableview.delegate = self; self.informationTableview.dataSource = self; self.informationTableview.tableFooterView = [UIView new]; self.searchPersonInformationField.delegate = self; //监听键盘落下的通知 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(KeyboadrDismiss) name:UIKeyboardWillHideNotification object:nil]; //设置当前客户通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(SetupCurrentCustomer:) name:@"SETUPCURRENTCUSTOMER" object:nil]; //清空当前客户数据 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(ChangeCustomerName:) name:@"EMPTYCUSTOMERNAME" object:nil]; WS(weakSelf); //下拉刷新 MjRefreshHeaderCustom *headerRefresh = [MjRefreshHeaderCustom headerWithRefreshingBlock:^{ weakSelf.condition.resellerCodeEquals = [Shoppersmanager manager].Shoppers.employee.currentDepart.orgCode; weakSelf.condition.page.page = 1; weakSelf.condition.page.rows = KROWS; weakSelf.indexPage = 1; [weakSelf.informationTableview.mj_footer resetNoMoreData]; [weakSelf getShoppersAssociatedCustomer:weakSelf.condition isRemoveArray:YES]; }]; headerRefresh.stateLabel.hidden = YES; headerRefresh.lastUpdatedTimeLabel.hidden = YES; self.informationTableview.mj_header =headerRefresh; //进入刷新状态 [self.informationTableview.mj_header beginRefreshing]; //上拉加载 self.informationTableview.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{ if (++ weakSelf.indexPage > weakSelf.totalPages) { [weakSelf.informationTableview.mj_footer endRefreshingWithNoMoreData]; }else { weakSelf.condition.page.page = weakSelf.indexPage; weakSelf.condition.page.rows = KROWS; [weakSelf getShoppersAssociatedCustomer:weakSelf.condition isRemoveArray:NO]; } }]; self.informationTableview.mj_footer.automaticallyHidden = YES; } #pragma mark -获取导购关联客户 - (void)getShoppersAssociatedCustomer:(ConsumerQueryCondition *)condition isRemoveArray:(BOOL)remove { __weak typeof(self) weakSelf = self; [self CreateMBProgressHUDLoding]; [[NetworkRequestClassManager Manager] NetworkRequestWithURL:SERVERREQUESTURL(GETSHOPPERSCONSUMER) WithRequestType:0 WithParameter:condition WithReturnValueBlock:^(id returnValue) { weakSelf.informationTableview.emptyDataSetSource = weakSelf; weakSelf.informationTableview.emptyDataSetDelegate = weakSelf; [weakSelf RemoveMBProgressHUDLoding]; [weakSelf endRefreshingForTableView:weakSelf.informationTableview]; if ([returnValue[@"code"] isEqualToNumber:@0]) { if (remove) { [weakSelf.CustomerresultArray removeAllObjects]; } NSDictionary *datas = returnValue[@"data"]; ConsumerPageResult *Customerresult = [[ConsumerPageResult alloc]initWithDictionary:datas error:nil]; weakSelf.totalPages = [datas[@"totalpages"] intValue]; for (TOConsumerEntity *objc in Customerresult.results) { MyclientEntityModel *myclientModel = [[MyclientEntityModel alloc]init]; myclientModel.fid = objc.fid; myclientModel.createName = objc.createName; myclientModel.createBy = objc.createBy; myclientModel.createDate = objc.createDate; myclientModel.sysOrgCode = objc.sysOrgCode; myclientModel.name = objc.name; myclientModel.mobile = objc.mobile; myclientModel.province = objc.province; myclientModel.city = objc.city; myclientModel.country = objc.country; myclientModel.address = objc.address; myclientModel.picture = objc.picture; myclientModel.lastVisitedTime = objc.lastVisitedTime; myclientModel.company = objc.company; [weakSelf.CustomerresultArray addObject:myclientModel]; } //刷新后添加选中状态 for (int i=0; i *)info { [DeviceDirectionManager instance].isHorizontal=NO; [self dismissViewControllerAnimated:YES completion:nil]; UIImage *Headimage = [info objectForKey:UIImagePickerControllerOriginalImage]; __weak typeof(self) weskSelf = self; //修改并保存头像 [self uploadUserHeader:Headimage completeBlock:^(NSString *string) { weskSelf.customerHeader.image = Headimage; [Customermanager manager].model.picture = string; for (int i=0;i= 1) { dispatch_async(dispatch_get_main_queue(), ^{ weskSelf.TCHud.labelText = @"上传完成"; [weskSelf RemoveMBProgressHUDLoding]; }); }else { dispatch_async(dispatch_get_main_queue(), ^{ [weskSelf ShowProgressView:progress]; }); } } WithErrorCodeBlock:^(id errorCodeValue) { dispatch_async(dispatch_get_main_queue(), ^{ weskSelf.TCHud.labelText = @"上传失败"; [weskSelf RemoveMBProgressHUDLoding]; }); } WithFailureBlock:^(NSError *error) { dispatch_async(dispatch_get_main_queue(), ^{ weskSelf.TCHud.labelText = @"上传失败"; [weskSelf RemoveMBProgressHUDLoding]; }); }]; } #pragma mark -上传完成修改导购个人信息 - (void)modifyshoppersInformation:(NSString *)headerurl complete:(void(^)())block { [self CreateMBProgressHUDLoding]; MyclientEntityModel *customerEntity = [[MyclientEntityModel alloc]init]; customerEntity = [Customermanager manager].model; customerEntity.picture = headerurl; __weak typeof(self) weskSelf = self; [[NetworkRequestClassManager Manager] NetworkRequestWithURL:SERVERREQUESTURL(ADDCONSUMER) WithRequestType:0 WithParameter:customerEntity WithReturnValueBlock:^(id returnValue) { [weskSelf RemoveMBProgressHUDLoding]; if ([returnValue[@"code"] isEqualToNumber:@0]) { block(); [weskSelf SuccessMBProgressView:@"修改成功"]; }else { [weskSelf ErrorMBProgressView:returnValue[@"message"]]; } } WithErrorCodeBlock:^(id errorCodeValue) { [weskSelf RemoveMBProgressHUDLoding]; } WithFailureBlock:^(NSError *error) { [weskSelf RemoveMBProgressHUDLoding]; }]; } #pragma mark -更新用户名字 - (void)ChangeCustomerName { MyclientEntityModel *model = [Customermanager manager].model; [[NSNotificationCenter defaultCenter] postNotificationName:@"CHANGECUSTOMERNAME" object:model.name]; } #pragma mark -设置为当前客户、查询购物车数量 - (void)SetupUserShoppingCarNumberRequest { [self QueryShoppingCarNumber]; } #pragma mark -设置为当前用户请求、写入访问时间 - (void)SetupUserRequest { __weak typeof(self) weskSelf = self; MyclientEntityModel *model = [Customermanager manager].model; [[NetworkRequestClassManager Manager] NetworkWithDictionaryRequestWithURL:[NSString stringWithFormat:@"%@%@",SERVERREQUESTURL(SAVEVISITEDTIME),model.fid] WithRequestType:1 WithParameter:nil WithReturnValueBlock:^(id returnValue) { if ([returnValue[@"code"] isEqualToNumber:@0]) { NSLog(@"写入客户访问时间成功"); } } WithErrorCodeBlock:^(id errorCodeValue) { [weskSelf promptCustomerWithString:@"网络连接已断开"]; } WithFailureBlock:^(id error) { NSLog(@"写入客户访问时间失败"); }]; } #pragma mark -添加客户信息、或者退出当前客户 - (IBAction)addCustomerInformationORExit:(UIButton *)sender { if ([sender.currentTitle isEqualToString:@"退出当前客户"]) { [self ExitCurrentCustomer]; [sender setTitle:@"添加客户信息" forState:UIControlStateNormal]; return; } [self addCustomerInformation:NO]; } #pragma mark -退出当前客户 - (void)ExitCurrentCustomer { self.customerNameField.text = nil; self.customerAddress.text = nil; self.phoneNumberField.text = nil; self.companyNameField.text = nil; self.customerNameField.enabled = YES; self.customerAddress.enabled = YES; self.phoneNumberField.enabled = YES; self.companyNameField.enabled = YES; self.changePersonInformationButton.hidden = YES; [Shoppersmanager manager].currentCustomer = NO; [Customermanager manager].model = nil; self.customerHeader.image = TCImage(@"now"); [self.changePersonInformationButton setTitle:@"更改客户信息" forState:UIControlStateNormal]; [self ChangeCustomerName]; [self QueryShoppingCarNumber]; //全部为为选中状态 for (InformationTableViewCell *cell in self.informationTableview.visibleCells) { cell.setCurrentCustomer.selected = NO; } for (MyclientEntityModel *model in self.CustomerresultArray) { model.selectedState = NO; } } #pragma mark -添加客户信息请求 -新增、或者修改 ischange为真是新增 - (void)addCustomerInformation:(BOOL)isChange { [self.view endEditing:YES]; if (self.customerNameField.text.length == 0) { [self ErrorMBProgressView:@"客户名不能为空"]; return; } if (self.phoneNumberField.text.length == 0) { [self ErrorMBProgressView:@"手机号码不能为空"]; return; } NSString *phoneNumber = self.phoneNumberField.text; if (![HENLENSONG isValidateMobile:phoneNumber]) { [self ErrorMBProgressView:@"手机号码格式不正确"]; return; } if (self.customerAddress.text.length == 0) { [self ErrorMBProgressView:@"地址不能为空"]; return; } //客户信息类 MyclientEntityModel *customerEntity = [[MyclientEntityModel alloc]init]; customerEntity.createName = [Shoppersmanager manager].Shoppers.employee.realName; customerEntity.mobile = self.phoneNumberField.text; customerEntity.address = self.customerAddress.text; customerEntity.name = self.customerNameField.text; customerEntity.company = self.companyNameField.text; customerEntity.picture = [Customermanager manager].model.picture; //修改 if (isChange) { customerEntity.fid = [Customermanager manager].model.fid; } __weak typeof(self) weskSelf = self; [self CreateMBProgressHUDLoding]; [[NetworkRequestClassManager Manager] NetworkRequestWithURL:SERVERREQUESTURL(ADDCONSUMER) WithRequestType:0 WithParameter:customerEntity WithReturnValueBlock:^(id returnValue) { [weskSelf RemoveMBProgressHUDLoding]; if ([returnValue[@"code"] isEqualToNumber:@0]) { //进入刷新状态 [weskSelf.informationTableview.mj_header beginRefreshing]; //新增保存ID if (!isChange) { customerEntity.fid = returnValue[@"data"]; [Customermanager manager].model = customerEntity; [weskSelf SuccessMBProgressView:@"新增成功"]; [weskSelf addAddressInformationRequest]; }else { [weskSelf SuccessMBProgressView:@"修改成功"]; [weskSelf.changePersonInformationButton setTitle:@"更改客户信息" forState:UIControlStateNormal]; } //保存客户信息 [Customermanager manager].model = customerEntity; [Shoppersmanager manager].currentCustomer = YES; [weskSelf.addpersonInformationButton setTitle:@"退出当前客户" forState:UIControlStateNormal]; weskSelf.changePersonInformationButton.hidden = NO; weskSelf.customerNameField.enabled = NO; weskSelf.customerAddress.enabled = NO; weskSelf.phoneNumberField.enabled = NO; weskSelf.companyNameField.enabled = NO; [weskSelf SetupUserShoppingCarNumberRequest]; [weskSelf SetupUserRequest]; [weskSelf ChangeCustomerName]; } else { [weskSelf ErrorMBProgressView:returnValue[@"message"]]; } } WithErrorCodeBlock:^(id errorCodeValue) { [weskSelf RemoveMBProgressHUDLoding]; [weskSelf promptCustomerWithString:@"网络连接已断开"]; } WithFailureBlock:^(id error) { [weskSelf RemoveMBProgressHUDLoding]; }]; } #pragma mark -新增客户成功写入默认地址信息 - (void)addAddressInformationRequest { TOShippingAddrEntity *address = [[TOShippingAddrEntity alloc]init]; MyclientEntityModel *model = [Customermanager manager].model; address.consumerId = model.fid; address.name = self.customerNameField.text; address.miblephone = self.phoneNumberField.text; address.address = self.customerAddress.text; __weak typeof(self) weskSelf = self; [[NetworkRequestClassManager Manager] NetworkRequestWithURL:SERVERREQUESTURL(ADDADDRESS) WithRequestType:0 WithParameter:address WithReturnValueBlock:^(id returnValue) { if ([returnValue[@"code"] isEqualToNumber:@0]) { NSLog(@"写入默认收货地址成功"); } else { [weskSelf ErrorMBProgressView:returnValue[@"message"]]; } } WithErrorCodeBlock:^(id errorCodeValue) { [weskSelf promptCustomerWithString:@"网络连接已断开"]; } WithFailureBlock:^(id error) { NSLog(@"写入默认收货地址失败"); }]; } #pragma mark -更改客户信息 - (IBAction)changeCustomerInformation:(UIButton *)sender { if ([sender.currentTitle isEqualToString:@"保存"]) { [self.customerNameField resignFirstResponder]; [sender setTitle:@"更改客户信息" forState:UIControlStateNormal]; [self addCustomerInformation:YES]; }else { dispatch_async(dispatch_get_main_queue(), ^{ [self.customerNameField becomeFirstResponder]; }); [sender setTitle:@"保存" forState:UIControlStateNormal]; } self.customerNameField.enabled = YES; self.customerAddress.enabled = YES; self.phoneNumberField.enabled = YES; self.companyNameField.enabled = YES; } #pragma mark -UITextFieldDelegate代理 ----搜索 - (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; [self searchCustomerInforMation]; return YES; } #pragma amrk -搜索客户信息 - (void)searchCustomerInforMation { if (self.searchPersonInformationField.text.length == 0) { self.condition.nameEquals = nil; self.condition.mobileEquals = nil; }else { self.condition.nameEquals = self.searchPersonInformationField.text; self.condition.mobileEquals = self.searchPersonInformationField.text; } [self.informationTableview.mj_header beginRefreshing]; } #pragma mark -键盘落下,判断更改信息按钮是否可见,可见则取消输入框的响应 - (void)KeyboadrDismiss { if (!self.changePersonInformationButton.hidden) { self.customerNameField.enabled = NO; self.customerAddress.enabled = NO; self.phoneNumberField.enabled = NO; self.companyNameField.enabled = NO; [self.changePersonInformationButton setTitle:@"更改客户信息" forState:UIControlStateNormal]; } } #pragma mark -清空当前客户的数据 - (void)ChangeCustomerName:(NSNotification *)not { [self.informationTableview.mj_header beginRefreshing]; [self ExitCurrentCustomer]; } #pragma mark -友好界面 - (UIImage *)imageForEmptyDataSet:(UIScrollView *)scrollView { return kNoDataImage; } - (NSAttributedString *)titleForEmptyDataSet:(UIScrollView *)scrollView { return [[NSAttributedString alloc]initWithString:@"暂无数据" attributes:nil]; } - (BOOL)emptyDataSetShouldAllowScroll:(UIScrollView *)scrollView { return YES; } - (CGFloat)verticalOffsetForEmptyDataSet:(UIScrollView *)scrollView { return 100; } @end