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.
426 lines
15 KiB
426 lines
15 KiB
1 year ago
|
//
|
||
|
// StudentInfoViewController.m
|
||
|
// tongxin
|
||
|
//
|
||
|
// Created by ecell on 2021/11/17.
|
||
|
// Copyright © 2021 xTT. All rights reserved.
|
||
|
//
|
||
|
|
||
|
#import "StudentInfoViewController.h"
|
||
|
|
||
|
#import "SelectContactVC.h"
|
||
|
#import "EditDeviceHeadTableViewCell.h"
|
||
|
#import "EidtDeviceContactWithDeviceTableViewCell.h"
|
||
|
#import "NewTableViewCell.h"
|
||
|
#import "NewOrdinaryTableViewCell.h"
|
||
|
#import "LoginViewController.h"
|
||
|
#import "QRcodeViewController.h"
|
||
|
#import "MyUILabel.h"
|
||
|
#import "StudentInfoModel.h"
|
||
|
|
||
|
@interface StudentInfoViewController () <UINavigationControllerDelegate,UITextFieldDelegate>
|
||
|
{
|
||
|
NSInteger _loginType;// 登录的类型
|
||
|
}
|
||
|
|
||
|
@property (strong, nonatomic) UITextField *nameTextField;
|
||
|
@property (strong, nonatomic) StudentInfoModel *model;
|
||
|
|
||
|
@end
|
||
|
|
||
|
@implementation StudentInfoViewController
|
||
|
|
||
|
@synthesize myDataSource = _myDataSource;
|
||
|
|
||
|
- (NSMutableArray *)myDataSource{
|
||
|
if (!_myDataSource) {
|
||
|
_myDataSource = [[NSMutableArray alloc] initWithArray:@[@[@"学校",@"班级",@"学号",@"紧急联系人电话"]]];
|
||
|
}
|
||
|
return _myDataSource;
|
||
|
}
|
||
|
|
||
|
-(void)setIsAdd:(BOOL)isAdd{
|
||
|
_isAdd = isAdd;
|
||
|
if(isAdd){
|
||
|
_isEdit = YES;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
-(void)setIsShowAllInfo:(BOOL)isShowAllInfo{
|
||
|
_isShowAllInfo = isShowAllInfo;
|
||
|
if(isShowAllInfo){
|
||
|
self.myDataSource = [[NSMutableArray alloc] initWithArray:@[@[@"学校",@"班级",@"学号",@"紧急联系人电话"]]];
|
||
|
}else{
|
||
|
self.myDataSource = [[NSMutableArray alloc] initWithArray:@[@[@"学校",@"班级",@"学号",@"紧急联系人电话"]]];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
-(void)setIsEdit:(BOOL)isEdit{
|
||
|
_isEdit = isEdit;
|
||
|
[self.view endEditing:YES]; // 取消所有 文本框焦点
|
||
|
[self.myTableView reloadData];
|
||
|
}
|
||
|
|
||
|
- (Device *)editDevice{
|
||
|
_editDevice = cUser.cDevice;
|
||
|
return _editDevice;
|
||
|
}
|
||
|
|
||
|
-(UIBarButtonItem *)addBarButton{
|
||
|
if(!_addBarButton){
|
||
|
_addBarButton = [[UIBarButtonItem alloc] initWithTitle:@"添加" style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemClick:)];
|
||
|
}
|
||
|
return _addBarButton;
|
||
|
}
|
||
|
|
||
|
- (UIBarButtonItem *)editAndSaveBarButton{
|
||
|
if(!_editAndSaveBarButton){
|
||
|
_editAndSaveBarButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"icon_data_editor_orange"] style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemClick:)];
|
||
|
}
|
||
|
return _editAndSaveBarButton;
|
||
|
}
|
||
|
|
||
|
-(UIBarButtonItem *)codeBarButton{
|
||
|
if(!_codeBarButton){
|
||
|
_codeBarButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"icon_or_code"] style:UIBarButtonItemStylePlain target:self action:@selector(codeShowAction:)];
|
||
|
}
|
||
|
return _codeBarButton;
|
||
|
}
|
||
|
|
||
|
-(void)viewWillAppear:(BOOL)animated{
|
||
|
[super viewWillAppear:animated];
|
||
|
_loginType = [myHelper getNowAccoutType:cUser];
|
||
|
|
||
|
WEAKSELF
|
||
|
[_model query:^(StudentInfoModel *model) {
|
||
|
weakSelf.model = model;
|
||
|
[weakSelf.myTableView reloadData];
|
||
|
} failure:^(NSError *error) {
|
||
|
|
||
|
}];
|
||
|
}
|
||
|
|
||
|
- (void)viewDidLoad {
|
||
|
[super viewDidLoad];
|
||
|
_model = [[StudentInfoModel alloc] init];
|
||
|
|
||
|
self.title = @"学生资料";
|
||
|
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
|
||
|
negativeSpacer.width = -15;
|
||
|
self.navigationItem.rightBarButtonItems = @[self.codeBarButton,negativeSpacer,self.editAndSaveBarButton];
|
||
|
|
||
|
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[myHelper getImageWithName:@"返回"] style:UIBarButtonItemStylePlain target:self action:@selector(goBack:)];
|
||
|
|
||
|
[self initTableCellView];
|
||
|
|
||
|
[self.view addSubview:self.myTableView];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
初始化tableViewCell
|
||
|
*/
|
||
|
-(void)initTableCellView{
|
||
|
//设备头像头部
|
||
|
[self.myTableView registerNib:[UINib nibWithNibName:@"EditDeviceHeadTableViewCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"EditDeviceHeadTableViewCellID"];
|
||
|
//关系尾部
|
||
|
[self.myTableView registerNib:[UINib nibWithNibName:@"EidtDeviceContactWithDeviceTableViewCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"EidtDeviceContactWithDeviceTableViewCellID"];
|
||
|
//中间的 cell
|
||
|
[self.myTableView registerNib:[UINib nibWithNibName:@"NewOrdinaryTableViewCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"NewOrdinaryTableViewCellID"];
|
||
|
|
||
|
//去线
|
||
|
self.myTableView.separatorStyle = UITableViewCellSelectionStyleNone;
|
||
|
self.myTableView.backgroundColor = RGB(248 , 248, 248);
|
||
|
|
||
|
MyUILabel *footer = [[MyUILabel alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, 60)];
|
||
|
footer.font =[UIFont systemFontOfSize:14];
|
||
|
footer.adjustsFontSizeToFitWidth = YES;
|
||
|
footer.numberOfLines = 0;
|
||
|
footer.baselineAdjustment = UIBaselineAdjustmentAlignCenters;
|
||
|
[footer setTextColor:[UIColor systemGrayColor]];
|
||
|
[footer setText:@"温馨提示:学生资料可以更改学校、班级、学号和紧急联系人信息"];
|
||
|
|
||
|
self.myTableView.tableFooterView = footer;
|
||
|
}
|
||
|
|
||
|
-(void)codeShowAction:(UIBarButtonItem *)sender{
|
||
|
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
|
||
|
QRcodeViewController *vc = [sb instantiateViewControllerWithIdentifier:@"QRcodeViewController"];
|
||
|
[self.navigationController pushViewController:vc animated:YES];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
修改,保存 和 添加的方法
|
||
|
*/
|
||
|
- (void)rightBarItemClick:(UIBarButtonItem *)sender{
|
||
|
self.editDevice.name = self.nameTextField.text;
|
||
|
if(self.isEdit == YES ||([sender.title isEqualToString:@"添加"])){
|
||
|
[self saveAction];
|
||
|
} else if (self.isEdit == NO){
|
||
|
sender.image = [UIImage imageNamed:@"icon_equipment_information_save"];
|
||
|
self.isEdit = YES;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
-(void)saveAction {
|
||
|
self.editDevice.my_phone = cUser.phone;
|
||
|
WEAKSELF
|
||
|
[_model save:_model success:^{
|
||
|
[weakSelf quitThisVC];
|
||
|
} failure:^(NSError *error) {
|
||
|
|
||
|
}];
|
||
|
}
|
||
|
|
||
|
-(void)goBack:(id)sender{
|
||
|
[self.view endEditing:YES];
|
||
|
|
||
|
if(!self.isAdd && self.isEdit){
|
||
|
WEAKSELF
|
||
|
LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:nil message:@"是否保存修改" style:LGAlertViewStyleAlert buttonTitles:@[@"确定"] cancelButtonTitle:@"取消" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) {
|
||
|
[weakSelf rightBarItemClick:self.editAndSaveBarButton];
|
||
|
} cancelHandler:^(LGAlertView *alertView) {
|
||
|
[weakSelf quitThisVC];
|
||
|
} destructiveHandler:^(LGAlertView *alertView) {
|
||
|
}];
|
||
|
|
||
|
[alertView showAnimated:YES completionHandler:nil];
|
||
|
|
||
|
}else{
|
||
|
[self quitThisVC];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
-(void)quitThisVC{
|
||
|
[self.navigationController popViewControllerAnimated:YES];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
显示完善资料的切换
|
||
|
*/
|
||
|
-(void)perfectInformationAction{
|
||
|
self.isShowAllInfo = YES;
|
||
|
[self.myTableView reloadData];
|
||
|
}
|
||
|
|
||
|
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
|
||
|
NSString *title = self.myDataSource[indexPath.section][indexPath.row];
|
||
|
|
||
|
if (!self.isShowAllInfo && [title isEqualToString:@"完善设备资料"]){
|
||
|
return 0;
|
||
|
}
|
||
|
return 60; // 50--》60
|
||
|
}
|
||
|
|
||
|
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
|
||
|
NSString *title = self.myDataSource[indexPath.section][indexPath.row];
|
||
|
// if(indexPath.section == 0 && indexPath.row == 0){ //头部信息
|
||
|
// EditDeviceHeadTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"EditDeviceHeadTableViewCellID" forIndexPath:indexPath];
|
||
|
// [cell setDevice:self.editDevice WithStatus:self.isAdd isEdting:self.isEdit];
|
||
|
// return cell;
|
||
|
// } else {
|
||
|
|
||
|
NewOrdinaryTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"NewOrdinaryTableViewCellID" forIndexPath:indexPath];
|
||
|
cell.accessoryType = UITableViewCellAccessoryNone;
|
||
|
cell.aTextField.textAlignment = NSTextAlignmentRight;
|
||
|
cell.aTitleLabel.text = title;
|
||
|
cell.aTextField.textColor = [UIColor blackColor];
|
||
|
|
||
|
//在区域的尾部 隐藏线
|
||
|
NSInteger lastIndex = [self.myDataSource[indexPath.section] count] -1;
|
||
|
if(lastIndex < 0){
|
||
|
lastIndex = 0;
|
||
|
}
|
||
|
|
||
|
if(indexPath.section == 0 && indexPath.row == lastIndex){
|
||
|
cell.lineView.hidden = YES;
|
||
|
}else if (indexPath.section == 1 && indexPath.row == lastIndex){
|
||
|
cell.lineView.hidden = YES;
|
||
|
}else{
|
||
|
cell.lineView.hidden = NO;
|
||
|
}
|
||
|
|
||
|
// 需要设置一下默认 设置 ,防止 重用 cell input 错乱
|
||
|
[cell defaultInputView];
|
||
|
if(self.isEdit && ([self.editDevice.identity isEqualToString:@"admin"] || _loginType == 3)){
|
||
|
//需 管理员关系 或者是imei游客登录 且 在编辑状态下 才能修改
|
||
|
cell.userInteractionEnabled = YES;
|
||
|
} else {
|
||
|
if(self.isEdit){
|
||
|
//成员编辑状态下
|
||
|
/* 成员可编辑的状态
|
||
|
@"学校",
|
||
|
@"班级",
|
||
|
@"学号",
|
||
|
@"紧急联系人电话"
|
||
|
*/
|
||
|
if([title isEqualToString:@"学校"]
|
||
|
|| [title isEqualToString:@"班级"]
|
||
|
|| [title isEqualToString:@"学号"]
|
||
|
|| [title isEqualToString:@"紧急联系人电话"]){
|
||
|
|
||
|
cell.userInteractionEnabled = YES;
|
||
|
}else {
|
||
|
cell.aTextField.textColor = [UIColor lightGrayColor];
|
||
|
cell.userInteractionEnabled = NO;
|
||
|
}
|
||
|
}else{
|
||
|
cell.aTextField.textColor = [UIColor lightGrayColor];
|
||
|
cell.userInteractionEnabled = NO;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ([title isEqualToString:@"名称"]) {
|
||
|
cell.aTextField.placeholder = @"请输入名称";
|
||
|
cell.aTextField.text = self.editDevice.name;
|
||
|
self.nameTextField = cell.aTextField;
|
||
|
cell.aTextField.delegate = self;
|
||
|
//不实现回调
|
||
|
cell.block = nil;
|
||
|
return cell;
|
||
|
}
|
||
|
if ([title isEqualToString:@"性别"]) {
|
||
|
cell.aTextField.placeholder = @"选择性别";
|
||
|
NSInteger index = ([self.editDevice.sex isEqualToString: @"girl"]) ? -1 : 0;
|
||
|
[cell numberInputViewWithStartNum:-1 EndNum:1 WithIndex:index];
|
||
|
cell.aTextField.text = ([self.editDevice.sex isEqualToString: @"girl"]) ? @"女孩" : @"男孩";
|
||
|
}
|
||
|
if ([title isEqualToString:@"学校"]) {
|
||
|
cell.aTextField.keyboardType = UIKeyboardTypeDefault;
|
||
|
cell.aTextField.placeholder = @"请输入学校名称";
|
||
|
cell.aTextField.text = (_model.schoolName) ?:@"";
|
||
|
cell.aTextField.delegate = self;
|
||
|
}
|
||
|
if ([title isEqualToString:@"班级"]) {
|
||
|
cell.aTextField.keyboardType = UIKeyboardTypeDefault;
|
||
|
cell.aTextField.placeholder = @"请输入班级";
|
||
|
cell.aTextField.text = (_model.className) ?:@"";
|
||
|
cell.aTextField.delegate = self;
|
||
|
}
|
||
|
if ([title isEqualToString:@"学号"]) {
|
||
|
cell.aTextField.keyboardType = UIKeyboardTypeDefault;
|
||
|
cell.aTextField.placeholder = @"请输入学号";
|
||
|
cell.aTextField.text = (_model.sno) ?:@"";
|
||
|
cell.aTextField.delegate = self;
|
||
|
}
|
||
|
if ([title isEqualToString:@"紧急联系人电话"]) {
|
||
|
cell.aTextField.keyboardType = UIKeyboardTypePhonePad;
|
||
|
cell.aTextField.placeholder = @"亲输入紧急联系人电话";
|
||
|
cell.aTextField.text = (_model.contactPhone) ?:@"";
|
||
|
cell.aTextField.delegate = self;
|
||
|
}
|
||
|
|
||
|
WEAKSELF
|
||
|
cell.block = ^(NSString *text, NewTableViewCell *blockCell){
|
||
|
blockCell.aTextField.text = text;
|
||
|
if ([title isEqualToString:@"性别"]) {
|
||
|
weakSelf.editDevice.sex = ([text isEqualToString:@"0"]) ? @"girl" : @"boy";
|
||
|
blockCell.aTextField.text = ([text isEqualToString:@"0"]) ? @"女孩" : @"男孩";
|
||
|
//需要刷新头部信息
|
||
|
[weakSelf.myTableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:0 inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
|
||
|
}else if ([title isEqualToString:@"学校"]) {
|
||
|
weakSelf.model.schoolName = text;
|
||
|
}else if([title isEqualToString:@"班级"]){
|
||
|
weakSelf.model.className = text;
|
||
|
}else if([title isEqualToString:@"学号"]){
|
||
|
weakSelf.model.sno = text;
|
||
|
}else if ([title isEqualToString:@"紧急联系人电话"]) {
|
||
|
weakSelf.model.contactPhone = text;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
return cell;
|
||
|
// }
|
||
|
|
||
|
//return nil;
|
||
|
}
|
||
|
|
||
|
|
||
|
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
|
||
|
return [super tableView:tableView heightForHeaderInSection:section];
|
||
|
}
|
||
|
|
||
|
|
||
|
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
|
||
|
|
||
|
if (section == self.myDataSource.count-1) { //最后一个
|
||
|
if(self.isAdd){ // 是添加状态
|
||
|
if(!self.isShowAllInfo){ //且 未显示完整状态
|
||
|
return 50;
|
||
|
}
|
||
|
}else{
|
||
|
return 0.01;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
return 0.01;
|
||
|
}
|
||
|
|
||
|
|
||
|
//MARK: UITextFieldDelegate 限制字数 和输入的 字符
|
||
|
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
|
||
|
// 实时输入数据
|
||
|
NSString *resultStr = [textField.text stringByReplacingCharactersInRange:range withString:string];
|
||
|
|
||
|
NSLog(@"1=%@,2=%@", resultStr, string);
|
||
|
|
||
|
if([self.nameTextField isEqual:textField]){
|
||
|
if(resultStr.length > 8){
|
||
|
return NO;
|
||
|
}else{
|
||
|
self.editDevice.name = resultStr;
|
||
|
return YES;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if([@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" containsString:string]){
|
||
|
if(resultStr.length > 15){
|
||
|
return NO;
|
||
|
}else{
|
||
|
return YES;
|
||
|
}
|
||
|
}
|
||
|
else if([textField.placeholder isEqual:@"请输入学校名称"] || [textField.placeholder isEqual:@"班级"]) {
|
||
|
|
||
|
if ([self isInputRuleAndBlank:string] || [string isEqualToString:@""]) {
|
||
|
return YES;
|
||
|
}
|
||
|
|
||
|
if (resultStr.length >30) {
|
||
|
return NO;
|
||
|
}
|
||
|
return YES;
|
||
|
}
|
||
|
else {
|
||
|
if([string isEqualToString:@""]){
|
||
|
return YES;
|
||
|
}
|
||
|
return NO;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 字母、数字、中文正则判断(不包括空格)
|
||
|
*/
|
||
|
- (BOOL)isInputRuleNotBlank:(NSString *)str {
|
||
|
NSString *pattern = @"^[a-zA-Z\u4E00-\u9FA5\\d\\(\\)]*$";
|
||
|
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
|
||
|
BOOL isMatch = [pred evaluateWithObject:str];
|
||
|
return isMatch;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 字母、数字、中文正则判断(包括空格)【注意3】
|
||
|
*/
|
||
|
- (BOOL)isInputRuleAndBlank:(NSString *)str {
|
||
|
|
||
|
NSString *pattern = @"^[a-zA-Z\u4E00-\u9FA5\\d\\s]*$";
|
||
|
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
|
||
|
BOOL isMatch = [pred evaluateWithObject:str];
|
||
|
return isMatch;
|
||
|
}
|
||
|
|
||
|
@end
|