diff --git a/ParentAssistant/ParentAssistant.xcodeproj/project.pbxproj b/ParentAssistant/ParentAssistant.xcodeproj/project.pbxproj index 67f7dd9..b07f378 100644 --- a/ParentAssistant/ParentAssistant.xcodeproj/project.pbxproj +++ b/ParentAssistant/ParentAssistant.xcodeproj/project.pbxproj @@ -452,7 +452,6 @@ 599364E0204E62E700C8B371 /* Information */, 599364E6204E62E700C8B371 /* Grow */, 599364E2204E62E700C8B371 /* my */, - 599364FD204E941900C8B371 /* userCenter */, ); path = controllers; sourceTree = ""; @@ -481,6 +480,7 @@ isa = PBXGroup; children = ( BF621CAB205660E90040D2C1 /* My.storyboard */, + 599364FD204E941900C8B371 /* userCenter */, BFCED886205280B700055373 /* Controller */, BFCED889205280C900055373 /* Model */, 599364E4204E62E700C8B371 /* View */, diff --git a/ParentAssistant/ParentAssistant.xcworkspace/xcuserdata/caoyang.xcuserdatad/UserInterfaceState.xcuserstate b/ParentAssistant/ParentAssistant.xcworkspace/xcuserdata/caoyang.xcuserdatad/UserInterfaceState.xcuserstate index 4b01b4c..d334cf8 100644 Binary files a/ParentAssistant/ParentAssistant.xcworkspace/xcuserdata/caoyang.xcuserdatad/UserInterfaceState.xcuserstate and b/ParentAssistant/ParentAssistant.xcworkspace/xcuserdata/caoyang.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/Grow/GrowViewController.swift b/ParentAssistant/ParentAssistant/Classes/controllers/Grow/GrowViewController.swift index 6715fb5..42be8a4 100644 --- a/ParentAssistant/ParentAssistant/Classes/controllers/Grow/GrowViewController.swift +++ b/ParentAssistant/ParentAssistant/Classes/controllers/Grow/GrowViewController.swift @@ -99,6 +99,7 @@ class GrowViewController: UIViewController,UIScrollViewDelegate { } //设置scrollview滑动范围 contentScrollView.contentSize = CGSize.init(width: width*CGFloat(titleArr.count), height: 0) + contentScrollView.setContentOffset(CGPoint.init(x: 0, y: 0), animated: true) } override func viewWillAppear(_ animated: Bool) { @@ -119,6 +120,10 @@ class GrowViewController: UIViewController,UIScrollViewDelegate { title = "未绑定" }else{ title = array[0].studentName + let index = UserDefaults.standard.value(forKey: "SELECT_CHILDREN") as? Int + if index == nil { + UserDefaults.standard.set(0, forKey: "SELECT_CHILDREN") + } } }else{ title = "未登录" @@ -178,12 +183,9 @@ class GrowViewController: UIViewController,UIScrollViewDelegate { let view = AlertShowView.init(frame: CGRect.init(x: 10, y: Int((navigationBarHeight!+statusBarHeight)+5), width: Int(screenHeight*0.2), height: 50*arr.count)) view.setUpDataResource(arr:arr) view.showView() - view.AlertBlock = { object in - if object is StudentClassInfoModel { - let model = object as! StudentClassInfoModel - self.titleLeftLab.text = model.studentName - self.childDataModel = model - } + view.AlertBlock = { index in + //MARK:缓存孩子索引 + UserDefaults.standard.set(index, forKey: "SELECT_CHILDREN") } }else{ let alertView = UIAlertController.init(title: "提示", message: "您尚未绑定孩子信息,是否前往绑定?", preferredStyle: UIAlertControllerStyle.alert) @@ -212,20 +214,11 @@ class GrowViewController: UIViewController,UIScrollViewDelegate { //MARK: - 设置控制器子视图 private func setChildViewContent(){ - print("scrollView width === \(contentScrollView.bounds.size.width)") - if AccountManager.shared.isOnline() { - let array = AccountManager.shared.getChildClassInfo() - if !array.isEmpty{ - let model = array[0] - childDataModel = model - } - } //添加子控制器 for i in 0.. StudentClassInfoModel in + var model = StudentClassInfoModel() + let index = UserDefaults.standard.value(forKey: "SELECT_CHILDREN") as! Int + let array = AccountManager.shared.getChildClassInfo() + if array.count > 0 && index UIView in @@ -33,12 +41,21 @@ class ProgramCardViewController: UIViewController,UITextFieldDelegate { @objc func applyAction(){ DebugLog( "补卡提交") - let studentID = self.studentData.studentId - let params = ["studentid":studentID,"onecard":self.cardInputTextField.text!] as [String : AnyObject] - HTTPServer.shared.postStudentMendCard(parameters: params as [String : AnyObject]) { (backData, error) in + SVProgressHUD.show() + let studentID = Int(self.studentData.studentId) + let params = ["studentid":studentID!,"onecard":self.cardInputTextField.text!] as [String : AnyObject] + HTTPServer.shared.getStudentMendCard(parameters: params as [String : AnyObject]) { (backData, error) in print(backData!) + SVProgressHUD.dismiss() if error == nil && JSON.fromString(backData)!["status"].intValue == 1 { - + let isSuccess = JSON.fromString(backData)!["data"].boolValue + if isSuccess{ + self.view.makeToast("补卡成功!", duration: 2, position: self.view.center) + }else{ + self.view.makeToast("补卡失败!", duration: 2, position: self.view.center) + } + }else{ + appDelegate.window?.makeToast("\(backData!)") } } } diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/Grow/Program/ProgramCheckViewController.swift b/ParentAssistant/ParentAssistant/Classes/controllers/Grow/Program/ProgramCheckViewController.swift index 78e65ba..06d261d 100644 --- a/ParentAssistant/ParentAssistant/Classes/controllers/Grow/Program/ProgramCheckViewController.swift +++ b/ParentAssistant/ParentAssistant/Classes/controllers/Grow/Program/ProgramCheckViewController.swift @@ -29,8 +29,17 @@ class ProgramCheckViewController: UIViewController,UITableViewDelegate,UITableVi }() //考勤数据 var viewData = Array() - //孩子数据模型 - var studentModel = StudentClassInfoModel() + + //孩子数据 + lazy var studentModel = {()-> StudentClassInfoModel in + var model = StudentClassInfoModel() + let index = UserDefaults.standard.value(forKey: "SELECT_CHILDREN") as! Int + let array = AccountManager.shared.getChildClassInfo() + if array.count > 0 && index() - //孩子数据 - var studentModel = StudentClassInfoModel() var titleImage = Array() @@ -122,12 +120,10 @@ class ProgramViewController: UIViewController,UITableViewDelegate,UITableViewDat case 0: let vc = ProgramCheckViewController() vc.title = "考勤" - vc.studentModel = studentModel self.navigationController?.pushViewController(vc, animated: true) case 1: let vc = ProgramCardViewController() vc.title = "补卡" - vc.studentData = studentModel self.navigationController?.pushViewController(vc, animated: true) case 2: let vc = ProgramVacateViewController() diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/MessageViewController.swift b/ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/MessageViewController.swift index 541c717..ebd5e39 100644 --- a/ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/MessageViewController.swift +++ b/ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/MessageViewController.swift @@ -36,6 +36,7 @@ class MessageViewController: UIViewController { } // MARK: - 收到新通知时 @objc func receivedNewNotificationAction(){ + setupWithModel() } diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/BaseCityChooseSchoolViewController.swift b/ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/BaseCityChooseSchoolViewController.swift new file mode 100644 index 0000000..1235508 --- /dev/null +++ b/ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/BaseCityChooseSchoolViewController.swift @@ -0,0 +1,255 @@ +// +// BaseCityChooseSchoolViewController.swift +// ParentAssistant +// +// Created by 左丞 on 2018/3/9. +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved. +// + +import UIKit +class BaseCityChooseSchoolViewController: UIViewController,UISearchBarDelegate { + + @IBOutlet weak var tableView: UITableView! + let firstLetterArr:[String] = ["#","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"] + var keys:[String] = [] + var schoolDic:[String:[School]] = [:] + var schoolArray:[School] = [] + @IBOutlet weak var citySelectbtn: UILabel! + + override func viewDidLoad() { + super.viewDidLoad() + + citySelectbtn.text = localAddress + getData() + // Do any additional setup after loading the view. + } + + //根据关键字获取学校 + func getData(_ keyword:String=""){ + var dic:[String:AnyObject] = ["areaName":localAddress as AnyObject,"keyword":keyword as AnyObject] + if keyword == ""{ + dic.removeValue(forKey: "keyword") + } + HTTPServer.shared.getAreaSchool(parameters: dic) { (str, error) in + let json=JSON.fromString(str) + if let ret=json{ + let er=ret["error"].string + if let errorStr=er{ + appDelegate.window!.makeToast(errorStr) + }else{ + self.schoolArray.removeAll() + for item in ret.contentData().arrayValue { + self.schoolArray.append(School(j: item)) + } + self.sortData(self.schoolArray) + } + }else{ + + } + } + } + + //对给定的学校分组 + func sortData(_ array:[School]){ + schoolDic = [:] + for letter in firstLetterArr { + var arr:[School] = [] + for school in array{ + if String(format: "%c",pinyinFirstLetter((school.name as NSString).character(at: 0))).uppercased() == letter{ + arr.append(school) + } + } + if arr.count > 0{ + schoolDic.updateValue(arr, forKey: letter) + } + } + keys = Array(schoolDic.keys) + keys.sort { (key1, key2) -> Bool in + return key1 < key2 + } + tableView.reloadData() + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + //h获取已经选中的学校 + func getSelectSchool() -> School? { + for (_,item) in schoolDic{ + for school in item{ + if school.isSelect{ + return school + } + } + } + return nil + } + + //下一步 + @IBAction func nextStep(_ sender: UIButton) { + let school = getSelectSchool() + if school == nil{ + appDelegate.window!.makeToast("请先选择学校") + return + } + if !AccountManager.shared.isOnline(){ + appDelegate.window!.makeToast("请先登录") + return + } + + if school!.isNew == 1{ + let vc = Story.instantiateViewControllerWithIdentifier("BindingViewControllerVC", storyName: "UserCenter") as! BindingViewController + vc.from = .select + vc.school = school! + self.navigationController?.pushViewController(vc, animated: true) + }else{ + if AccountManager.shared.isNew() == 1{ + let vc = Story.instantiateViewControllerWithIdentifier("BindingViewControllerVC", storyName: "UserCenter") as! BindingViewController + vc.from = .unReserved + vc.school = school! + self.navigationController?.pushViewController(vc, animated: true) + return + } + let vc = Story.instantiateViewControllerWithIdentifier("InvitationCodeVerificationViewControllerVC", storyName: "UserCenter") as! InvitationCodeVerificationViewController + vc.school = school! + self.navigationController?.pushViewController(vc, animated: true) + + } + } + + func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { + searchBar.showsCancelButton = true + } + + func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { + searchData(searchBar) + } + + func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { + searchData(searchBar) + } + + //搜索学校 + func searchData(_ searchBar: UISearchBar){ + getData(searchBar.text!) + searchBar.resignFirstResponder() + searchBar.showsCancelButton = false + + } + + //左上角城市选择按钮点击事件 + @IBAction func citySelectBtnClick(_ sender: UITapGestureRecognizer) { + sender.view?.isUserInteractionEnabled = false + LZCityPickerController.showPicker(in: self + , select: { (address, province, city, area, isSelect) in + if isSelect{ + sender.view?.isUserInteractionEnabled = true + self.selectCity(city: area!) + } + }) { + sender.view?.isUserInteractionEnabled = true + + } + } + + func selectCity(city: String) { + localAddress = city + + citySelectbtn.text = city + self.getData() + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + citySelectbtn.text = localAddress + } + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + + //根据indexPath找到相对应的model + func getSchoolByIndexpath(indexPath:IndexPath)->School{ + return schoolDic[keys[indexPath.section]]![indexPath.row] + + } + + //所有数据全部取消选中 + func changeSchoolSelectState(){ + for (_,value) in schoolDic { + for item in value{ + item.isSelect = false + } + } + } +} + +extension BaseCityChooseSchoolViewController:UITableViewDelegate,UITableViewDataSource{ + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SelectSchoolList + let item = getSchoolByIndexpath(indexPath: indexPath) + cell.schoolName.text = item.name + if item.isSelect{ + cell.isSelect.isHidden = false + }else{ + cell.isSelect.isHidden = true + } + return cell + } + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + + return schoolDic[keys[section]]!.count + } + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + let item = getSchoolByIndexpath(indexPath: indexPath) + changeSchoolSelectState() + item.isSelect = !item.isSelect + tableView.reloadData() + } + + func sectionIndexTitles(for tableView: UITableView) -> [String]? { + return keys + } + + func numberOfSections(in tableView: UITableView) -> Int { + return keys.count + } + + func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { + return keys[section] + } +} + +class SelectSchoolList: UITableViewCell { + + @IBOutlet weak var isSelect: UIImageView! + @IBOutlet weak var schoolName: UILabel! +} + +class School:NSObject{ + var schoolArea:String=""//学校所在地区 , + var schoolId:Int = 0//学校id , + var name:String=""//学校名称 , + var state:Int=0//状态,1正常,0关闭 + var isNew:Int=0////1非合作学校,0合作学校 + var isSelect:Bool = false + init(j:JSON){ + schoolArea = j["school_area"].stringValue + schoolId = j["school_id"].intValue + name = j["school_name"].stringValue + state = j["state"].intValue + } + init(names:String,id:Int) { + name = names + schoolId=id + } +} + diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/BindingViewController.swift b/ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/BindingViewController.swift new file mode 100644 index 0000000..a0217e3 --- /dev/null +++ b/ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/BindingViewController.swift @@ -0,0 +1,344 @@ +// +// BindingViewController.swift +// ParentAssistant +// +// Created by 左丞 on 2018/3/6. +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved. +// + +import UIKit +enum FromVC:Int{ + //信息确认 + case selfVC = 1//从当前类的对象push过来的(非合作学校) + case reserved = 2//合作学校预留 + case unReserved = 3//合作学校非预留 + //选择 + case select = 4 //选择 +} + +enum SelectType:Int{ + case gender=1//性别 + case grade=2//年级 + case classes=3//班级 +} + +class BindingViewController: UIViewController { + + var from:FromVC = .selfVC + @IBOutlet weak var confirmBtn: UIButton!//确定按钮 + @IBOutlet weak var phoneNumberLabel: UILabel!//电话号码显示的label + @IBOutlet weak var firstLineLabel: UILabel!//第一行(绑定手机号码为)所在的label + @IBOutlet weak var nameTextFiled: UITextField! + + @IBOutlet weak var selectTableView: UITableView! + @IBOutlet weak var selectImageHeight: NSLayoutConstraint!//三个image高度是相等的 + @IBOutlet weak var classLabel: UILabel! + @IBOutlet weak var gradeLabel: UILabel! + @IBOutlet weak var genderLabel: UILabel! + var boyName:String="" + var gender:String = "" + var school:School! + var selecttype:SelectType = .gender + var genderArr:[String] = ["男","女"] + var gradeArr:[GradeAndClasses] = [] + var classesArr:[GradeAndClasses]=[] + var selectGrade:GradeAndClasses! + var selectClass:GradeAndClasses! + var account = AccountManager.shared + override func viewDidLoad() { + super.viewDidLoad() + stepUI() + if selectGrade == nil && selectClass == nil{ + getGradeOrClassData(type: 1) + } + setLabelValue() + if from == .reserved || from == .unReserved{ + getData() + } + // Do any additional setup after loading the view. + } + + func getData(){ + HTTPServer.shared.getParentInfo(["mobile":account.phone() as AnyObject,"school_id":school.schoolId as AnyObject]) { (str, error) in + let json=JSON.fromString(str) + if let ret=json{ + let er=ret["error"].string + if let errorStr=er{ + appDelegate.window!.makeToast(errorStr) + }else{ + self.account.rawUserInfo = json + self.setValueForLabel() + } + }else{ + + } + } + } + + func setValueForLabel(){ + if account.studentClass().count == 0{ + appDelegate.window!.makeToast("该账号下已经没有需要绑定的孩子") + return + } + let student = account.studentClass()[0] + nameTextFiled.text = student["studentName"].stringValue + classLabel.text = student["className"].stringValue + gradeLabel.text = student["gradename"].stringValue + genderLabel.text = student["sex"].intValue == 1 ? "男" : "女" + } + + func stepUI(){ + setViewLayer(view: classLabel) + setViewLayer(view: gradeLabel) + setViewLayer(view: genderLabel) + setViewRadius(view: confirmBtn) + if from == .selfVC{ + phoneNumberLabel.isHidden = false + phoneNumberLabel.text = account.phone() + firstLineLabel.isHidden = false + } + if from != .select{ + selectImageHeight.constant = 0 + nameTextFiled.isUserInteractionEnabled = false + } + } + + @IBAction func cancleSelectTableView(_ sender: UIControl) { + selectTableView.isHidden = true + } + func getGradeOrClassData(type:Int,gradeid:Int=0){//1,年级,2班级 + HTTPServer.shared.getClassOrGrade(["state":type as AnyObject,"schoolid":school.schoolId as AnyObject,"gradeid":gradeid as AnyObject]) { (str, error) in + let json=JSON.fromString(str) + if let ret=json{ + let er=ret["error"].string + if let errorStr=er{ + appDelegate.window!.makeToast(errorStr) + }else{ + for item in ret.contentData().arrayValue{ + if type == 1{ + self.gradeArr.append(GradeAndClasses(j: item)) + }else{ + self.classesArr.append(GradeAndClasses(j: item)) + } + } + } + }else{ + + } + } + } + + func setLabelValue(){ + nameTextFiled.text = boyName + classLabel.text = selectClass != nil ? selectClass.className : "" + gradeLabel.text = selectGrade != nil ? selectGrade.gradeName : "" + genderLabel.text = gender + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + //绑定孩子信息 + func bindlingChildren(){ + var dic:[String:AnyObject] = [:] + switch from { + case .selfVC: + dic = ["parentId": account.parentId() as AnyObject, + "cooperateFlag": "false" as AnyObject, + "schoolId": school.schoolId as AnyObject, + "classId": selectClass.classId as AnyObject, + "studentName": boyName as AnyObject, + "sex": (gender == "男" ? 1 : 2) as AnyObject] + case .reserved: + dic = ["cooperateFlag": "true" as AnyObject, + "mobileFlag": "true" as AnyObject, + "studentId": account.studentClass()[0]["studentId"].stringValue as AnyObject] + default: + dic = ["cooperateFlag": "true" as AnyObject, + "classId": account.studentClass()[0]["classId"].intValue as AnyObject, + "mobileFlag": "false" as AnyObject, + "studentId": account.studentClass()[0]["studentId"].stringValue as AnyObject] + } + dic.updateValue(account.parentId() as AnyObject, forKey: "parentId") + HTTPServer.shared.bindlingChildren(parameters: dic) { (str, error) in + if JSON.fromString(str)!["status"] == 1 && error == nil{ + appDelegate.window!.makeToast("绑定成功") + let vc = BindlingSuccessViewController() + self.navigationController?.pushViewController(vc, animated: true) + }else{ + appDelegate.window!.makeToast("绑定失败") + + } + } + } + + //确定按钮 + @IBAction func confirmBtnClcik(_ sender: UIButton) { + if (from == .reserved || from == .unReserved) && account.studentClass().count == 0{ + appDelegate.window!.makeToast("该账号下已经没有需要绑定的孩子") + return + } + if from == .select && (selectClass == nil || boyName == "" || gender == ""){//班级选择完成则年级肯定已经完成 + appDelegate.window!.makeToast("请先填写姓名并选择班级,年级,性别") + return + } + //确认信息的确认按钮 + if from != .select{ + bindlingChildren() + return + } + let vc = Story.instantiateViewControllerWithIdentifier("BindingViewControllerVC", storyName: "UserCenter") as! BindingViewController + vc.boyName = boyName + vc.gender = gender + vc.from = .selfVC + vc.selectClass = selectClass + vc.selectGrade = selectGrade + self.navigationController?.pushViewController(vc, animated: true) + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + switch from { + case .select: + self.navigationItem.title = "填写孩子信息" + default: + self.navigationItem.title = "信息核对" + } + } + + @IBAction func selectTapAction(_ sender: UITapGestureRecognizer) { + boyName = nameTextFiled.text ?? "" + if from != .select { + return + } + getSelectTableViewRect(sender) + selectTableView.isHidden = false + switch sender.view!.tag { + case 1000: + selecttype = .gender + selectTableView.frame.size.height = 88 + case 1001: + selecttype = .grade + if gradeArr.count > 3{ + selectTableView.frame.size.height = 132 + }else{ + selectTableView.frame.size.height = 44*CGFloat(gradeArr.count) + } + + case 1002: + if selectGrade == nil{ + selectTableView.isHidden = true + appDelegate.window!.makeToast("请先选择年级") + return + } + selecttype = .classes + if classesArr.count > 3{ + selectTableView.frame.size.height = 132 + }else{ + selectTableView.frame.size.height = 44*CGFloat(classesArr.count) + } + + default: + break + } + selectTableView.reloadData() + } + + func getSelectTableViewRect(_ sender: UITapGestureRecognizer){ + let locaViewFrame = sender.view!.frame + selectTableView.frame.origin = CGPoint(x: locaViewFrame.origin.x+sender.view!.superview!.frame.origin.x, y: locaViewFrame.maxY+sender.view!.superview!.frame.origin.y) + + } + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} + +extension BindingViewController:UITableViewDelegate,UITableViewDataSource{ + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + switch selecttype { + case .gender: + return genderArr.count + case .grade: + return gradeArr.count + default: + return classesArr.count + } + } + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + switch selecttype { + case .gender: + tableView.isHidden = true + gender = genderArr[indexPath.row] + case .grade: + tableView.isHidden = true + let items = gradeArr[indexPath.row] + for item in gradeArr{ + item.isSelect = false + } + items.isSelect = true + selectGrade = items + getGradeOrClassData(type: 2, gradeid: items.gradeid) + default: + let items = classesArr[indexPath.row] + + tableView.isHidden = true + for item in classesArr{ + item.isSelect = false + } + items.isSelect = true + selectClass = items + } + setLabelValue() + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) + switch selecttype { + case .gender: + cell.textLabel?.text = genderArr[indexPath.row] + case .grade: + cell.textLabel?.text = gradeArr[indexPath.row].gradeName + default: + cell.textLabel?.text = classesArr[indexPath.row].className + } + return cell + } + + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + return 44 + } +} + +extension BindingViewController:UITextFieldDelegate{ + func textFieldShouldReturn(_ textField: UITextField) -> Bool { + boyName = textField.text! + textField.resignFirstResponder() + return true + } +} + +class GradeAndClasses: NSObject { + var gradeid:Int=0 + var gradeName:String = "" + var classId:Int=0 + var className:String = "" + var isSelect:Bool = false + init(j:JSON){ + gradeid = j["gradeId"].intValue + gradeName = j["gradeName"].stringValue + classId = j["classId"].intValue + className = j["className"].stringValue + } +} diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/BindlingSuccessViewController.swift b/ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/BindlingSuccessViewController.swift new file mode 100644 index 0000000..0a9b22d --- /dev/null +++ b/ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/BindlingSuccessViewController.swift @@ -0,0 +1,133 @@ +// +// BindlingSuccessViewController.swift +// ParentAssistant +// +// Created by 左丞 on 2018/3/16. +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved. +// + +import UIKit + +class BindlingSuccessViewController: UIViewController ,UIWebViewDelegate,UIScrollViewDelegate{ + var webView:UIWebView! + var header:UIView! + var webBrowserView:UIView! + var urlStr:String="http://60.190.202.57:8101/RecommendOrder.aspx?userid=" + var bindlingType:Int = 1 + override func viewDidLoad() { + super.viewDidLoad() + self.view.backgroundColor = UIColor.white + // Do any additional setup after loading the view. + webView = UIWebView() + webView.frame = CGRect(x: 10, y: 0, width: getScreenWidth()-20, height: getScreenHeight()) + webView.delegate = self; + webView.backgroundColor = UIColor.clear + self.view.addSubview(webView) + + let request = URLRequest(url: URL(string: urlStr)!) + webView.loadRequest(request) + + if bindlingType == 0{ + header = UIView() + header.frame = CGRect(x: 10, y: 0, width: getScreenWidth()-20, height: 80) + header.backgroundColor = UIColor.clear + let backView = UIView() + let image = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 40)) + image.image = #imageLiteral(resourceName: "my_icon_bindlingSuccess") + backView.addSubview(image) + let label = UILabel(frame: CGRect(x: 50, y: 10, width: header.frame.width - 20, height: 20)) + label.text = "绑定成功" + label.numberOfLines = 0 + label.textColor = UIColor.darkGray + label.font = UIFont.systemFont(ofSize: 15) + label.sizeToFit() + backView.addSubview(label) + backView.frame.size = CGSize(width: label.frame.maxX, height: 40) + backView.center.y = header.center.y + backView.center.x = header.center.x-10 + header.addSubview(label) + }else{ + header = UIView() + header.frame = CGRect(x: 10, y: 0, width: getScreenWidth()-20, height: 150) + header.backgroundColor = UIColor.clear + let label = UILabel(frame: CGRect(x: 10, y: 10, width: header.frame.width - 20, height: 100)) + label.text = "生成孩子\"汇作业\"账号为:\(urlStr),\n初始密码为:\(urlStr)(与账号相同),\n孩子可以下载\"汇作业\"app进行使用,\n" + label.numberOfLines = 0 + label.textColor = UIColor.darkGray + label.font = UIFont.systemFont(ofSize: 15) + label.sizeToFit() + header.addSubview(label) + + let backView = UIView() + let label2 = UILabel(frame: CGRect(x: 0, y: 5, width: header.frame.width - 20, height: 20)) + label2.text = "下载地址:" + label2.textColor = UIColor.darkGray + label2.font = UIFont.systemFont(ofSize: 15) + label2.sizeToFit() + backView.addSubview(label2) + let btn = UIButton(frame: CGRect(x: label2.frame.maxX, y: 0, width: 70, height: 30)) + + let str = NSMutableAttributedString(string: "汇作业") + let strRange = NSRange(location: 0, length: str.length) + str.addAttributes([NSAttributedStringKey.underlineStyle: NSNumber(integerLiteral: NSUnderlineStyle.styleSingle.rawValue), + NSAttributedStringKey.foregroundColor: Theme.topBarColor(), + NSAttributedStringKey.font: UIFont.systemFont(ofSize: 15)], + range: strRange) + btn.setAttributedTitle(str, for: .normal) + btn.addTarget(self, action: #selector(BindlingSuccessViewController.pushToAppStore), for: .touchUpInside) + backView.addSubview(btn) + backView.frame.size = CGSize(width: btn.frame.width+label2.frame.width+10, height: 30) + backView.center = CGPoint(x: header.center.x-10, y: label.frame.maxY+10) + header.frame.size.height = backView.frame.maxY + 10 + header.addSubview(backView) + } + + webBrowserView = webView.scrollView.subviews[0] + var rect = self.webBrowserView.frame + rect.origin.y = header.frame.maxY+10 + webBrowserView.frame = rect + + //添加 + webView.scrollView.addSubview(header) + + webView.scrollView.addObserver(self, forKeyPath: "contentSize", options: NSKeyValueObservingOptions.new, context: nil) + + // Do any additional setup after loading the view. + } + + @objc func pushToAppStore(){ + + } + + override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { + webView.scrollView.removeObserver(self, forKeyPath: "contentSize") + _ = self.view.viewWithTag(100) + let contentSize = webView.scrollView.contentSize + let vi = UIView() + vi.backgroundColor = UIColor.purple + vi.tag = 100 + vi.frame = CGRect(x: 0, y: contentSize.height, width: getScreenWidth()-20, height: 150) + webView.scrollView.addSubview(vi) + webView.scrollView.contentSize = CGSize(width: contentSize.width, height: contentSize.height+150) + + webView.scrollView.addObserver(self, forKeyPath: "contentSize", options: NSKeyValueObservingOptions.new, context: nil) + + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/InvitationCodeVerificationViewController.swift b/ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/InvitationCodeVerificationViewController.swift new file mode 100644 index 0000000..a5ed54a --- /dev/null +++ b/ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/InvitationCodeVerificationViewController.swift @@ -0,0 +1,58 @@ +// +// InvitationCodeVerificationViewController.swift +// ParentAssistant +// +// Created by 左丞 on 2018/3/13. +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved. +// + +import UIKit + +class InvitationCodeVerificationViewController: UIViewController ,UITextFieldDelegate{ + + @IBOutlet weak var instructions: UILabel! + @IBOutlet weak var nextBtn: UIButton! + @IBOutlet weak var inputInvitationCode: UITextField! + var school:School! + override func viewDidLoad() { + super.viewDidLoad() + instructions.text = "注:填写需要绑定的孩子的邀请码(非合作学校无邀请码.请更换手机号码的方式验证)\n\n如不知道邀请码请拨打电话: 400-826-2468进行查询" + nextBtn.layer.cornerRadius = 10 + nextBtn.layer.masksToBounds = true + + // Do any additional setup after loading the view. + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + @IBAction func nextBtnClick(_ sender: UIButton) { + if inputInvitationCode.text != ""{ + let vc = Story.instantiateViewControllerWithIdentifier("BindingViewControllerVC", storyName: "UserCenter") as! BindingViewController + vc.from = .reserved + vc.school = school! + self.navigationController?.pushViewController(vc, animated: true) + }else{ + appDelegate.window!.makeToast("请填写邀请码") + return + } + } + + func textFieldShouldReturn(_ textField: UITextField) -> Bool { + textField.resignFirstResponder() + return true + } + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/UserCenter.storyboard b/ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/UserCenter.storyboard new file mode 100644 index 0000000..fa3babf --- /dev/null +++ b/ParentAssistant/ParentAssistant/Classes/controllers/my/userCenter/UserCenter.storyboard @@ -0,0 +1,606 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Title + Title + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/userCenter/BaseCityChooseSchoolViewController.swift b/ParentAssistant/ParentAssistant/Classes/controllers/userCenter/BaseCityChooseSchoolViewController.swift deleted file mode 100644 index 1235508..0000000 --- a/ParentAssistant/ParentAssistant/Classes/controllers/userCenter/BaseCityChooseSchoolViewController.swift +++ /dev/null @@ -1,255 +0,0 @@ -// -// BaseCityChooseSchoolViewController.swift -// ParentAssistant -// -// Created by 左丞 on 2018/3/9. -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved. -// - -import UIKit -class BaseCityChooseSchoolViewController: UIViewController,UISearchBarDelegate { - - @IBOutlet weak var tableView: UITableView! - let firstLetterArr:[String] = ["#","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"] - var keys:[String] = [] - var schoolDic:[String:[School]] = [:] - var schoolArray:[School] = [] - @IBOutlet weak var citySelectbtn: UILabel! - - override func viewDidLoad() { - super.viewDidLoad() - - citySelectbtn.text = localAddress - getData() - // Do any additional setup after loading the view. - } - - //根据关键字获取学校 - func getData(_ keyword:String=""){ - var dic:[String:AnyObject] = ["areaName":localAddress as AnyObject,"keyword":keyword as AnyObject] - if keyword == ""{ - dic.removeValue(forKey: "keyword") - } - HTTPServer.shared.getAreaSchool(parameters: dic) { (str, error) in - let json=JSON.fromString(str) - if let ret=json{ - let er=ret["error"].string - if let errorStr=er{ - appDelegate.window!.makeToast(errorStr) - }else{ - self.schoolArray.removeAll() - for item in ret.contentData().arrayValue { - self.schoolArray.append(School(j: item)) - } - self.sortData(self.schoolArray) - } - }else{ - - } - } - } - - //对给定的学校分组 - func sortData(_ array:[School]){ - schoolDic = [:] - for letter in firstLetterArr { - var arr:[School] = [] - for school in array{ - if String(format: "%c",pinyinFirstLetter((school.name as NSString).character(at: 0))).uppercased() == letter{ - arr.append(school) - } - } - if arr.count > 0{ - schoolDic.updateValue(arr, forKey: letter) - } - } - keys = Array(schoolDic.keys) - keys.sort { (key1, key2) -> Bool in - return key1 < key2 - } - tableView.reloadData() - } - - override func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() - // Dispose of any resources that can be recreated. - } - - //h获取已经选中的学校 - func getSelectSchool() -> School? { - for (_,item) in schoolDic{ - for school in item{ - if school.isSelect{ - return school - } - } - } - return nil - } - - //下一步 - @IBAction func nextStep(_ sender: UIButton) { - let school = getSelectSchool() - if school == nil{ - appDelegate.window!.makeToast("请先选择学校") - return - } - if !AccountManager.shared.isOnline(){ - appDelegate.window!.makeToast("请先登录") - return - } - - if school!.isNew == 1{ - let vc = Story.instantiateViewControllerWithIdentifier("BindingViewControllerVC", storyName: "UserCenter") as! BindingViewController - vc.from = .select - vc.school = school! - self.navigationController?.pushViewController(vc, animated: true) - }else{ - if AccountManager.shared.isNew() == 1{ - let vc = Story.instantiateViewControllerWithIdentifier("BindingViewControllerVC", storyName: "UserCenter") as! BindingViewController - vc.from = .unReserved - vc.school = school! - self.navigationController?.pushViewController(vc, animated: true) - return - } - let vc = Story.instantiateViewControllerWithIdentifier("InvitationCodeVerificationViewControllerVC", storyName: "UserCenter") as! InvitationCodeVerificationViewController - vc.school = school! - self.navigationController?.pushViewController(vc, animated: true) - - } - } - - func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { - searchBar.showsCancelButton = true - } - - func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { - searchData(searchBar) - } - - func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { - searchData(searchBar) - } - - //搜索学校 - func searchData(_ searchBar: UISearchBar){ - getData(searchBar.text!) - searchBar.resignFirstResponder() - searchBar.showsCancelButton = false - - } - - //左上角城市选择按钮点击事件 - @IBAction func citySelectBtnClick(_ sender: UITapGestureRecognizer) { - sender.view?.isUserInteractionEnabled = false - LZCityPickerController.showPicker(in: self - , select: { (address, province, city, area, isSelect) in - if isSelect{ - sender.view?.isUserInteractionEnabled = true - self.selectCity(city: area!) - } - }) { - sender.view?.isUserInteractionEnabled = true - - } - } - - func selectCity(city: String) { - localAddress = city - - citySelectbtn.text = city - self.getData() - } - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - citySelectbtn.text = localAddress - } - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destinationViewController. - // Pass the selected object to the new view controller. - } - */ - - //根据indexPath找到相对应的model - func getSchoolByIndexpath(indexPath:IndexPath)->School{ - return schoolDic[keys[indexPath.section]]![indexPath.row] - - } - - //所有数据全部取消选中 - func changeSchoolSelectState(){ - for (_,value) in schoolDic { - for item in value{ - item.isSelect = false - } - } - } -} - -extension BaseCityChooseSchoolViewController:UITableViewDelegate,UITableViewDataSource{ - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SelectSchoolList - let item = getSchoolByIndexpath(indexPath: indexPath) - cell.schoolName.text = item.name - if item.isSelect{ - cell.isSelect.isHidden = false - }else{ - cell.isSelect.isHidden = true - } - return cell - } - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - - return schoolDic[keys[section]]!.count - } - - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - let item = getSchoolByIndexpath(indexPath: indexPath) - changeSchoolSelectState() - item.isSelect = !item.isSelect - tableView.reloadData() - } - - func sectionIndexTitles(for tableView: UITableView) -> [String]? { - return keys - } - - func numberOfSections(in tableView: UITableView) -> Int { - return keys.count - } - - func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { - return keys[section] - } -} - -class SelectSchoolList: UITableViewCell { - - @IBOutlet weak var isSelect: UIImageView! - @IBOutlet weak var schoolName: UILabel! -} - -class School:NSObject{ - var schoolArea:String=""//学校所在地区 , - var schoolId:Int = 0//学校id , - var name:String=""//学校名称 , - var state:Int=0//状态,1正常,0关闭 - var isNew:Int=0////1非合作学校,0合作学校 - var isSelect:Bool = false - init(j:JSON){ - schoolArea = j["school_area"].stringValue - schoolId = j["school_id"].intValue - name = j["school_name"].stringValue - state = j["state"].intValue - } - init(names:String,id:Int) { - name = names - schoolId=id - } -} - diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/userCenter/BindingViewController.swift b/ParentAssistant/ParentAssistant/Classes/controllers/userCenter/BindingViewController.swift deleted file mode 100644 index a0217e3..0000000 --- a/ParentAssistant/ParentAssistant/Classes/controllers/userCenter/BindingViewController.swift +++ /dev/null @@ -1,344 +0,0 @@ -// -// BindingViewController.swift -// ParentAssistant -// -// Created by 左丞 on 2018/3/6. -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved. -// - -import UIKit -enum FromVC:Int{ - //信息确认 - case selfVC = 1//从当前类的对象push过来的(非合作学校) - case reserved = 2//合作学校预留 - case unReserved = 3//合作学校非预留 - //选择 - case select = 4 //选择 -} - -enum SelectType:Int{ - case gender=1//性别 - case grade=2//年级 - case classes=3//班级 -} - -class BindingViewController: UIViewController { - - var from:FromVC = .selfVC - @IBOutlet weak var confirmBtn: UIButton!//确定按钮 - @IBOutlet weak var phoneNumberLabel: UILabel!//电话号码显示的label - @IBOutlet weak var firstLineLabel: UILabel!//第一行(绑定手机号码为)所在的label - @IBOutlet weak var nameTextFiled: UITextField! - - @IBOutlet weak var selectTableView: UITableView! - @IBOutlet weak var selectImageHeight: NSLayoutConstraint!//三个image高度是相等的 - @IBOutlet weak var classLabel: UILabel! - @IBOutlet weak var gradeLabel: UILabel! - @IBOutlet weak var genderLabel: UILabel! - var boyName:String="" - var gender:String = "" - var school:School! - var selecttype:SelectType = .gender - var genderArr:[String] = ["男","女"] - var gradeArr:[GradeAndClasses] = [] - var classesArr:[GradeAndClasses]=[] - var selectGrade:GradeAndClasses! - var selectClass:GradeAndClasses! - var account = AccountManager.shared - override func viewDidLoad() { - super.viewDidLoad() - stepUI() - if selectGrade == nil && selectClass == nil{ - getGradeOrClassData(type: 1) - } - setLabelValue() - if from == .reserved || from == .unReserved{ - getData() - } - // Do any additional setup after loading the view. - } - - func getData(){ - HTTPServer.shared.getParentInfo(["mobile":account.phone() as AnyObject,"school_id":school.schoolId as AnyObject]) { (str, error) in - let json=JSON.fromString(str) - if let ret=json{ - let er=ret["error"].string - if let errorStr=er{ - appDelegate.window!.makeToast(errorStr) - }else{ - self.account.rawUserInfo = json - self.setValueForLabel() - } - }else{ - - } - } - } - - func setValueForLabel(){ - if account.studentClass().count == 0{ - appDelegate.window!.makeToast("该账号下已经没有需要绑定的孩子") - return - } - let student = account.studentClass()[0] - nameTextFiled.text = student["studentName"].stringValue - classLabel.text = student["className"].stringValue - gradeLabel.text = student["gradename"].stringValue - genderLabel.text = student["sex"].intValue == 1 ? "男" : "女" - } - - func stepUI(){ - setViewLayer(view: classLabel) - setViewLayer(view: gradeLabel) - setViewLayer(view: genderLabel) - setViewRadius(view: confirmBtn) - if from == .selfVC{ - phoneNumberLabel.isHidden = false - phoneNumberLabel.text = account.phone() - firstLineLabel.isHidden = false - } - if from != .select{ - selectImageHeight.constant = 0 - nameTextFiled.isUserInteractionEnabled = false - } - } - - @IBAction func cancleSelectTableView(_ sender: UIControl) { - selectTableView.isHidden = true - } - func getGradeOrClassData(type:Int,gradeid:Int=0){//1,年级,2班级 - HTTPServer.shared.getClassOrGrade(["state":type as AnyObject,"schoolid":school.schoolId as AnyObject,"gradeid":gradeid as AnyObject]) { (str, error) in - let json=JSON.fromString(str) - if let ret=json{ - let er=ret["error"].string - if let errorStr=er{ - appDelegate.window!.makeToast(errorStr) - }else{ - for item in ret.contentData().arrayValue{ - if type == 1{ - self.gradeArr.append(GradeAndClasses(j: item)) - }else{ - self.classesArr.append(GradeAndClasses(j: item)) - } - } - } - }else{ - - } - } - } - - func setLabelValue(){ - nameTextFiled.text = boyName - classLabel.text = selectClass != nil ? selectClass.className : "" - gradeLabel.text = selectGrade != nil ? selectGrade.gradeName : "" - genderLabel.text = gender - } - - override func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() - // Dispose of any resources that can be recreated. - } - - //绑定孩子信息 - func bindlingChildren(){ - var dic:[String:AnyObject] = [:] - switch from { - case .selfVC: - dic = ["parentId": account.parentId() as AnyObject, - "cooperateFlag": "false" as AnyObject, - "schoolId": school.schoolId as AnyObject, - "classId": selectClass.classId as AnyObject, - "studentName": boyName as AnyObject, - "sex": (gender == "男" ? 1 : 2) as AnyObject] - case .reserved: - dic = ["cooperateFlag": "true" as AnyObject, - "mobileFlag": "true" as AnyObject, - "studentId": account.studentClass()[0]["studentId"].stringValue as AnyObject] - default: - dic = ["cooperateFlag": "true" as AnyObject, - "classId": account.studentClass()[0]["classId"].intValue as AnyObject, - "mobileFlag": "false" as AnyObject, - "studentId": account.studentClass()[0]["studentId"].stringValue as AnyObject] - } - dic.updateValue(account.parentId() as AnyObject, forKey: "parentId") - HTTPServer.shared.bindlingChildren(parameters: dic) { (str, error) in - if JSON.fromString(str)!["status"] == 1 && error == nil{ - appDelegate.window!.makeToast("绑定成功") - let vc = BindlingSuccessViewController() - self.navigationController?.pushViewController(vc, animated: true) - }else{ - appDelegate.window!.makeToast("绑定失败") - - } - } - } - - //确定按钮 - @IBAction func confirmBtnClcik(_ sender: UIButton) { - if (from == .reserved || from == .unReserved) && account.studentClass().count == 0{ - appDelegate.window!.makeToast("该账号下已经没有需要绑定的孩子") - return - } - if from == .select && (selectClass == nil || boyName == "" || gender == ""){//班级选择完成则年级肯定已经完成 - appDelegate.window!.makeToast("请先填写姓名并选择班级,年级,性别") - return - } - //确认信息的确认按钮 - if from != .select{ - bindlingChildren() - return - } - let vc = Story.instantiateViewControllerWithIdentifier("BindingViewControllerVC", storyName: "UserCenter") as! BindingViewController - vc.boyName = boyName - vc.gender = gender - vc.from = .selfVC - vc.selectClass = selectClass - vc.selectGrade = selectGrade - self.navigationController?.pushViewController(vc, animated: true) - } - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - switch from { - case .select: - self.navigationItem.title = "填写孩子信息" - default: - self.navigationItem.title = "信息核对" - } - } - - @IBAction func selectTapAction(_ sender: UITapGestureRecognizer) { - boyName = nameTextFiled.text ?? "" - if from != .select { - return - } - getSelectTableViewRect(sender) - selectTableView.isHidden = false - switch sender.view!.tag { - case 1000: - selecttype = .gender - selectTableView.frame.size.height = 88 - case 1001: - selecttype = .grade - if gradeArr.count > 3{ - selectTableView.frame.size.height = 132 - }else{ - selectTableView.frame.size.height = 44*CGFloat(gradeArr.count) - } - - case 1002: - if selectGrade == nil{ - selectTableView.isHidden = true - appDelegate.window!.makeToast("请先选择年级") - return - } - selecttype = .classes - if classesArr.count > 3{ - selectTableView.frame.size.height = 132 - }else{ - selectTableView.frame.size.height = 44*CGFloat(classesArr.count) - } - - default: - break - } - selectTableView.reloadData() - } - - func getSelectTableViewRect(_ sender: UITapGestureRecognizer){ - let locaViewFrame = sender.view!.frame - selectTableView.frame.origin = CGPoint(x: locaViewFrame.origin.x+sender.view!.superview!.frame.origin.x, y: locaViewFrame.maxY+sender.view!.superview!.frame.origin.y) - - } - - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destinationViewController. - // Pass the selected object to the new view controller. - } - */ - -} - -extension BindingViewController:UITableViewDelegate,UITableViewDataSource{ - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - switch selecttype { - case .gender: - return genderArr.count - case .grade: - return gradeArr.count - default: - return classesArr.count - } - } - - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - switch selecttype { - case .gender: - tableView.isHidden = true - gender = genderArr[indexPath.row] - case .grade: - tableView.isHidden = true - let items = gradeArr[indexPath.row] - for item in gradeArr{ - item.isSelect = false - } - items.isSelect = true - selectGrade = items - getGradeOrClassData(type: 2, gradeid: items.gradeid) - default: - let items = classesArr[indexPath.row] - - tableView.isHidden = true - for item in classesArr{ - item.isSelect = false - } - items.isSelect = true - selectClass = items - } - setLabelValue() - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) - switch selecttype { - case .gender: - cell.textLabel?.text = genderArr[indexPath.row] - case .grade: - cell.textLabel?.text = gradeArr[indexPath.row].gradeName - default: - cell.textLabel?.text = classesArr[indexPath.row].className - } - return cell - } - - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { - return 44 - } -} - -extension BindingViewController:UITextFieldDelegate{ - func textFieldShouldReturn(_ textField: UITextField) -> Bool { - boyName = textField.text! - textField.resignFirstResponder() - return true - } -} - -class GradeAndClasses: NSObject { - var gradeid:Int=0 - var gradeName:String = "" - var classId:Int=0 - var className:String = "" - var isSelect:Bool = false - init(j:JSON){ - gradeid = j["gradeId"].intValue - gradeName = j["gradeName"].stringValue - classId = j["classId"].intValue - className = j["className"].stringValue - } -} diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/userCenter/BindlingSuccessViewController.swift b/ParentAssistant/ParentAssistant/Classes/controllers/userCenter/BindlingSuccessViewController.swift deleted file mode 100644 index 0a9b22d..0000000 --- a/ParentAssistant/ParentAssistant/Classes/controllers/userCenter/BindlingSuccessViewController.swift +++ /dev/null @@ -1,133 +0,0 @@ -// -// BindlingSuccessViewController.swift -// ParentAssistant -// -// Created by 左丞 on 2018/3/16. -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved. -// - -import UIKit - -class BindlingSuccessViewController: UIViewController ,UIWebViewDelegate,UIScrollViewDelegate{ - var webView:UIWebView! - var header:UIView! - var webBrowserView:UIView! - var urlStr:String="http://60.190.202.57:8101/RecommendOrder.aspx?userid=" - var bindlingType:Int = 1 - override func viewDidLoad() { - super.viewDidLoad() - self.view.backgroundColor = UIColor.white - // Do any additional setup after loading the view. - webView = UIWebView() - webView.frame = CGRect(x: 10, y: 0, width: getScreenWidth()-20, height: getScreenHeight()) - webView.delegate = self; - webView.backgroundColor = UIColor.clear - self.view.addSubview(webView) - - let request = URLRequest(url: URL(string: urlStr)!) - webView.loadRequest(request) - - if bindlingType == 0{ - header = UIView() - header.frame = CGRect(x: 10, y: 0, width: getScreenWidth()-20, height: 80) - header.backgroundColor = UIColor.clear - let backView = UIView() - let image = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 40)) - image.image = #imageLiteral(resourceName: "my_icon_bindlingSuccess") - backView.addSubview(image) - let label = UILabel(frame: CGRect(x: 50, y: 10, width: header.frame.width - 20, height: 20)) - label.text = "绑定成功" - label.numberOfLines = 0 - label.textColor = UIColor.darkGray - label.font = UIFont.systemFont(ofSize: 15) - label.sizeToFit() - backView.addSubview(label) - backView.frame.size = CGSize(width: label.frame.maxX, height: 40) - backView.center.y = header.center.y - backView.center.x = header.center.x-10 - header.addSubview(label) - }else{ - header = UIView() - header.frame = CGRect(x: 10, y: 0, width: getScreenWidth()-20, height: 150) - header.backgroundColor = UIColor.clear - let label = UILabel(frame: CGRect(x: 10, y: 10, width: header.frame.width - 20, height: 100)) - label.text = "生成孩子\"汇作业\"账号为:\(urlStr),\n初始密码为:\(urlStr)(与账号相同),\n孩子可以下载\"汇作业\"app进行使用,\n" - label.numberOfLines = 0 - label.textColor = UIColor.darkGray - label.font = UIFont.systemFont(ofSize: 15) - label.sizeToFit() - header.addSubview(label) - - let backView = UIView() - let label2 = UILabel(frame: CGRect(x: 0, y: 5, width: header.frame.width - 20, height: 20)) - label2.text = "下载地址:" - label2.textColor = UIColor.darkGray - label2.font = UIFont.systemFont(ofSize: 15) - label2.sizeToFit() - backView.addSubview(label2) - let btn = UIButton(frame: CGRect(x: label2.frame.maxX, y: 0, width: 70, height: 30)) - - let str = NSMutableAttributedString(string: "汇作业") - let strRange = NSRange(location: 0, length: str.length) - str.addAttributes([NSAttributedStringKey.underlineStyle: NSNumber(integerLiteral: NSUnderlineStyle.styleSingle.rawValue), - NSAttributedStringKey.foregroundColor: Theme.topBarColor(), - NSAttributedStringKey.font: UIFont.systemFont(ofSize: 15)], - range: strRange) - btn.setAttributedTitle(str, for: .normal) - btn.addTarget(self, action: #selector(BindlingSuccessViewController.pushToAppStore), for: .touchUpInside) - backView.addSubview(btn) - backView.frame.size = CGSize(width: btn.frame.width+label2.frame.width+10, height: 30) - backView.center = CGPoint(x: header.center.x-10, y: label.frame.maxY+10) - header.frame.size.height = backView.frame.maxY + 10 - header.addSubview(backView) - } - - webBrowserView = webView.scrollView.subviews[0] - var rect = self.webBrowserView.frame - rect.origin.y = header.frame.maxY+10 - webBrowserView.frame = rect - - //添加 - webView.scrollView.addSubview(header) - - webView.scrollView.addObserver(self, forKeyPath: "contentSize", options: NSKeyValueObservingOptions.new, context: nil) - - // Do any additional setup after loading the view. - } - - @objc func pushToAppStore(){ - - } - - override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { - webView.scrollView.removeObserver(self, forKeyPath: "contentSize") - _ = self.view.viewWithTag(100) - let contentSize = webView.scrollView.contentSize - let vi = UIView() - vi.backgroundColor = UIColor.purple - vi.tag = 100 - vi.frame = CGRect(x: 0, y: contentSize.height, width: getScreenWidth()-20, height: 150) - webView.scrollView.addSubview(vi) - webView.scrollView.contentSize = CGSize(width: contentSize.width, height: contentSize.height+150) - - webView.scrollView.addObserver(self, forKeyPath: "contentSize", options: NSKeyValueObservingOptions.new, context: nil) - - } - - override func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() - // Dispose of any resources that can be recreated. - } - - - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destinationViewController. - // Pass the selected object to the new view controller. - } - */ - -} diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/userCenter/InvitationCodeVerificationViewController.swift b/ParentAssistant/ParentAssistant/Classes/controllers/userCenter/InvitationCodeVerificationViewController.swift deleted file mode 100644 index a5ed54a..0000000 --- a/ParentAssistant/ParentAssistant/Classes/controllers/userCenter/InvitationCodeVerificationViewController.swift +++ /dev/null @@ -1,58 +0,0 @@ -// -// InvitationCodeVerificationViewController.swift -// ParentAssistant -// -// Created by 左丞 on 2018/3/13. -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved. -// - -import UIKit - -class InvitationCodeVerificationViewController: UIViewController ,UITextFieldDelegate{ - - @IBOutlet weak var instructions: UILabel! - @IBOutlet weak var nextBtn: UIButton! - @IBOutlet weak var inputInvitationCode: UITextField! - var school:School! - override func viewDidLoad() { - super.viewDidLoad() - instructions.text = "注:填写需要绑定的孩子的邀请码(非合作学校无邀请码.请更换手机号码的方式验证)\n\n如不知道邀请码请拨打电话: 400-826-2468进行查询" - nextBtn.layer.cornerRadius = 10 - nextBtn.layer.masksToBounds = true - - // Do any additional setup after loading the view. - } - - override func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() - // Dispose of any resources that can be recreated. - } - - @IBAction func nextBtnClick(_ sender: UIButton) { - if inputInvitationCode.text != ""{ - let vc = Story.instantiateViewControllerWithIdentifier("BindingViewControllerVC", storyName: "UserCenter") as! BindingViewController - vc.from = .reserved - vc.school = school! - self.navigationController?.pushViewController(vc, animated: true) - }else{ - appDelegate.window!.makeToast("请填写邀请码") - return - } - } - - func textFieldShouldReturn(_ textField: UITextField) -> Bool { - textField.resignFirstResponder() - return true - } - - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destinationViewController. - // Pass the selected object to the new view controller. - } - */ - -} diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/userCenter/UserCenter.storyboard b/ParentAssistant/ParentAssistant/Classes/controllers/userCenter/UserCenter.storyboard deleted file mode 100644 index fa3babf..0000000 --- a/ParentAssistant/ParentAssistant/Classes/controllers/userCenter/UserCenter.storyboard +++ /dev/null @@ -1,606 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Title - Title - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ParentAssistant/ParentAssistant/Classes/util/AccountManager.swift b/ParentAssistant/ParentAssistant/Classes/util/AccountManager.swift index 100b767..6fba814 100644 --- a/ParentAssistant/ParentAssistant/Classes/util/AccountManager.swift +++ b/ParentAssistant/ParentAssistant/Classes/util/AccountManager.swift @@ -222,13 +222,13 @@ class AccountManager: NSObject { import HandyJSON class UserInfoModel: HandyJSON { - var parentId = Int() + var parentId = String() var name = String() var bindSchoolFlag = Bool() var mobile = String() var image = String() var userid = String() - var sex = Int() + var sex = String() required init(){} } class StudentClassInfoModel: HandyJSON { @@ -236,21 +236,21 @@ class StudentClassInfoModel: HandyJSON { var photo = String() var cityName = String() var cardNumber = String() - var classId = Int() - var grade = Int() + var classId = String() + var grade = String() var studentName = String() var studentCode = String() - var parentId = Int() + var parentId = String() var className = String() var areaName = String() var gradename = String() - var count = Int() - var schollId = Int() + var count = String() + var schoolId = String() var schoolName = String() var studentUserId = String() - var studentId = Int() - var parentMobile = Int() - var sex = Int() + var studentId = String() + var parentMobile = String() + var sex = String() required init(){} } diff --git a/ParentAssistant/ParentAssistant/Classes/util/HTTPServer.swift b/ParentAssistant/ParentAssistant/Classes/util/HTTPServer.swift index 3bdf3b9..9ee4f50 100644 --- a/ParentAssistant/ParentAssistant/Classes/util/HTTPServer.swift +++ b/ParentAssistant/ParentAssistant/Classes/util/HTTPServer.swift @@ -239,8 +239,8 @@ final class HTTPServer{ //MARK: - 成长 //MARK: 应用 ///补卡 - func postStudentMendCard(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){ - KHttp.POST(url: URL_POST_MEND_CARD, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler) + func getStudentMendCard(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){ + KHttp.GET(url: URL_POST_MEND_CARD, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler) } ///考勤 func getStudentCheckList(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){ diff --git a/ParentAssistant/ParentAssistant/Classes/util/view/AlertShowView.swift b/ParentAssistant/ParentAssistant/Classes/util/view/AlertShowView.swift index 928b1da..ca09630 100644 --- a/ParentAssistant/ParentAssistant/Classes/util/view/AlertShowView.swift +++ b/ParentAssistant/ParentAssistant/Classes/util/view/AlertShowView.swift @@ -10,7 +10,7 @@ import UIKit class AlertShowView: UIView,UITableViewDelegate,UITableViewDataSource { - typealias AlertBackBlock = (AnyObject)->() + typealias AlertBackBlock = (Int)->() lazy var tableView = { ()-> UITableView in @@ -107,8 +107,7 @@ class AlertShowView: UIView,UITableViewDelegate,UITableViewDataSource { return cell! } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - let selectData = self.dataArr[indexPath.row] - self.AlertBlock!(selectData) + self.AlertBlock!(indexPath.row) closeView() } required init?(coder aDecoder: NSCoder) { -- libgit2 0.21.0