Commit 1ec3b7df1a7e8b97895fc9b2a5ba48d8e90a4043

Authored by Cao yang
1 parent 028d32ac
Exists in parentassistant

修改成长页面

Showing 37 changed files with 1270 additions and 1153 deletions   Show diff stats
ParentAssistant/ParentAssistant.xcodeproj/project.pbxproj
... ... @@ -42,6 +42,7 @@
42 42 AD65FB7A20637F110052415B /* MoralViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD65FB7920637F110052415B /* MoralViewController.swift */; };
43 43 ADAEA3982064960300A47D2C /* SceneDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADAEA3972064960300A47D2C /* SceneDetailViewController.swift */; };
44 44 ADAEA39A2064C44900A47D2C /* LineChartView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADAEA3992064C44900A47D2C /* LineChartView.swift */; };
  45 + ADC9AB72207C55CE00348EF1 /* GrowViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC9AB71207C55CE00348EF1 /* GrowViewController.swift */; };
45 46 ADE33B312062202300BEA6E6 /* Macro.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADE33B302062202300BEA6E6 /* Macro.swift */; };
46 47 ADF159612069E00000A9485D /* CalendarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADF159602069E00000A9485D /* CalendarView.swift */; };
47 48 BF388469205A4DE900A240EF /* StudentClassInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF388468205A4DE900A240EF /* StudentClassInfo.swift */; };
... ... @@ -188,6 +189,7 @@
188 189 AD65FB7920637F110052415B /* MoralViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoralViewController.swift; sourceTree = "<group>"; };
189 190 ADAEA3972064960300A47D2C /* SceneDetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SceneDetailViewController.swift; sourceTree = "<group>"; };
190 191 ADAEA3992064C44900A47D2C /* LineChartView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineChartView.swift; sourceTree = "<group>"; };
  192 + ADC9AB71207C55CE00348EF1 /* GrowViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GrowViewController.swift; sourceTree = "<group>"; };
191 193 ADE33B302062202300BEA6E6 /* Macro.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Macro.swift; sourceTree = "<group>"; };
192 194 ADF159602069E00000A9485D /* CalendarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalendarView.swift; sourceTree = "<group>"; };
193 195 BF388468205A4DE900A240EF /* StudentClassInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudentClassInfo.swift; sourceTree = "<group>"; };
... ... @@ -375,7 +377,7 @@
375 377 BFEAAAA5205117DA0072FAAF /* main */,
376 378 599364DA204E62E700C8B371 /* evaluation */,
377 379 599364E0204E62E700C8B371 /* Information */,
378   - 599364E6204E62E700C8B371 /* report */,
  380 + 599364E6204E62E700C8B371 /* Grow */,
379 381 599364E2204E62E700C8B371 /* my */,
380 382 599364FD204E941900C8B371 /* userCenter */,
381 383 );
... ... @@ -425,15 +427,17 @@
425 427 path = View;
426 428 sourceTree = "<group>";
427 429 };
428   - 599364E6204E62E700C8B371 /* report */ = {
  430 + 599364E6204E62E700C8B371 /* Grow */ = {
429 431 isa = PBXGroup;
430 432 children = (
  433 + ADC9AB70207C558600348EF1 /* Model */,
  434 + ADC9AB71207C55CE00348EF1 /* GrowViewController.swift */,
431 435 599364E7204E62E700C8B371 /* ReportViewController.swift */,
432 436 AD65FB7920637F110052415B /* MoralViewController.swift */,
433 437 ADAEA3972064960300A47D2C /* SceneDetailViewController.swift */,
434 438 BF3B829E2050CC7E002078EA /* View */,
435 439 );
436   - path = report;
  440 + path = Grow;
437 441 sourceTree = "<group>";
438 442 };
439 443 599364F1204E632600C8B371 /* util */ = {
... ... @@ -473,6 +477,13 @@
473 477 path = userCenter;
474 478 sourceTree = "<group>";
475 479 };
  480 + ADC9AB70207C558600348EF1 /* Model */ = {
  481 + isa = PBXGroup;
  482 + children = (
  483 + );
  484 + path = Model;
  485 + sourceTree = "<group>";
  486 + };
476 487 B605235D289EDBCA5C5AF2C5 /* Frameworks */ = {
477 488 isa = PBXGroup;
478 489 children = (
... ... @@ -952,6 +963,7 @@
952 963 BFEAAAA7205118370072FAAF /* TabBarController.swift in Sources */,
953 964 BF67F3C020590A2F002FDC61 /* SwiftyJSON.swift in Sources */,
954 965 599364ED204E62E700C8B371 /* InformationViewController.swift in Sources */,
  966 + ADC9AB72207C55CE00348EF1 /* GrowViewController.swift in Sources */,
955 967 5980BF692061048A00F4A35E /* LZCityPickerView.m in Sources */,
956 968 BF388482205F5BC800A240EF /* MessageManager.swift in Sources */,
957 969 5980BF682061048A00F4A35E /* LZCityPickerController.m in Sources */,
... ...
ParentAssistant/ParentAssistant.xcworkspace/xcuserdata/caoyang.xcuserdatad/UserInterfaceState.xcuserstate
No preview for this file type
ParentAssistant/ParentAssistant/Classes/controllers/Grow/GrowViewController.swift 0 → 100644
... ... @@ -0,0 +1,211 @@
  1 +//
  2 +// GrowViewController.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by Cao yang on 2018/4/10.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class GrowViewController: UIViewController,UIScrollViewDelegate {
  12 +
  13 + var ZJBNavH = 44.0
  14 + //MARK: - 标题数据
  15 + //标题
  16 + lazy var titleView = {() -> UIView in
  17 + let title = UIScrollView()
  18 + title.frame = CGRect(x:0,y:0,width:getScreenWidth(),height:44)
  19 + title.backgroundColor = Theme.topBarColor()
  20 + return title
  21 + }()
  22 + //MARK: - 内容数据
  23 + //内容
  24 + lazy var contentScrollView = {()->UIScrollView in
  25 + let scrollView = UIScrollView.init(frame: self.view.bounds)
  26 + scrollView.delegate = self
  27 + scrollView.isPagingEnabled = true
  28 + scrollView.showsHorizontalScrollIndicator = false
  29 + return scrollView
  30 + }()
  31 + //按钮数组
  32 + var titleBtnArr = Array<UIButton>()
  33 + //titleLine初始位置
  34 + var linePoint = CGPoint()
  35 + //按钮标题数据
  36 + var titleArr = Array<String>()
  37 + //按钮下面横线
  38 + lazy var titleLine = {()->CALayer in
  39 + let lineLay = CALayer.init()
  40 + lineLay.frame.size = CGSize.init(width: 50, height: 2)
  41 + lineLay.backgroundColor = UIColor.gray.cgColor
  42 + return lineLay
  43 + }()
  44 +
  45 + override func viewDidLoad() {
  46 + super.viewDidLoad()
  47 +
  48 + titleArr = ["应用","报告"]
  49 + //设置导航栏标题
  50 + self.navigationItem.titleView = titleView
  51 + self.view.addSubview(contentScrollView)
  52 +
  53 + setUpTitle()
  54 + setChildViewContent()
  55 +
  56 + //左按钮
  57 + let leftView = UIButton.init(frame: CGRect.init(x: 0, y: 0, width: 50, height: 44))
  58 + let titleLab = UILabel.init(frame: CGRect.init(x: 0, y: 0, width: 40, height: 44))
  59 + if AccountManager.shared.isOnline() {
  60 + if AccountManager.shared.rawUserInfo!.contentData()["studentClass"].arrayValue.count == 0 {
  61 + titleLab.text = "未绑定"
  62 + }else{
  63 + titleLab.text = AccountManager.shared.rawUserInfo!.contentData()["studentClass"][0]["studentName"].stringValue
  64 + }
  65 + }else{
  66 + titleLab.text = "未登录"
  67 + }
  68 + titleLab.font = UIFont.systemFont(ofSize: 15)
  69 + titleLab.textAlignment = .center
  70 + leftView.addSubview(titleLab)
  71 +
  72 + let imageView = UIImageView.init(frame: CGRect.init(x: 40, y: 11, width: 10, height: 22))
  73 + imageView.image = UIImage.init(named: "report_pull")
  74 + imageView.contentMode = .scaleAspectFit
  75 + leftView.addSubview(imageView)
  76 +
  77 +// leftView.addTarget(self, action: #selector(showView), for: UIControlEvents.touchDown)
  78 +
  79 + let leftBtn = UIBarButtonItem.init(customView: leftView)
  80 + self.navigationItem.leftBarButtonItem = leftBtn
  81 + //右按钮
  82 + let rightView = UIButton.init(frame: CGRect.init(x: 0, y: 0, width: 50, height: 44))
  83 + let titleRLab = UILabel.init(frame: CGRect.init(x: 0, y: 0, width: 40, height: 44))
  84 + titleRLab.text = "筛选"
  85 + titleRLab.font = UIFont.systemFont(ofSize: 15)
  86 + titleRLab.textAlignment = .center
  87 + rightView.addSubview(titleRLab)
  88 +
  89 + let imageRView = UIImageView.init(frame: CGRect.init(x: 40, y: 11, width: 10, height: 22))
  90 + imageRView.image = UIImage.init(named: "report_select")
  91 + imageRView.contentMode = .scaleAspectFit
  92 + rightView.addSubview(imageRView)
  93 +
  94 +// rightView.addTarget(self, action: #selector(showView), for: UIControlEvents.touchDown)
  95 + let rightBtn = UIBarButtonItem.init(customView: rightView)
  96 + self.navigationItem.rightBarButtonItem = rightBtn
  97 +
  98 + setupNavigationBar()
  99 + }
  100 +
  101 + // MARK: - 设置顶部按钮
  102 + func setupNavigationBar(){
  103 + self.configTheme()
  104 + }
  105 +
  106 + private func setChildViewContent(){
  107 +
  108 + //添加子控制器
  109 + for _ in 0..<titleArr.count {
  110 + let vc = Story.instantiateViewControllerWithIdentifier("ReportViewController", storyName: "Main") as! ReportViewController
  111 + self.addChildViewController(vc)
  112 + }
  113 + //设置第一个控制器数据
  114 + let childVC = self.childViewControllers.first
  115 + childVC?.view.frame = self.view.bounds
  116 + self.contentScrollView.addSubview((childVC?.view)!)
  117 + //设置scrollview滑动范围
  118 + contentScrollView.contentSize = CGSize.init(width: getScreenWidth()*CGFloat(titleArr.count), height: 0)
  119 +
  120 + }
  121 + //MARK: - 设置标题
  122 + func setUpTitle(){
  123 +
  124 + let count = titleArr.count
  125 + var btnWidthArr = Array<CGFloat>()
  126 + for i in 0..<count {
  127 +
  128 + let btn = UIButton.init()
  129 + btn.setTitle(titleArr[i], for: .normal)
  130 + btn.titleLabel!.font = UIFont.systemFont(ofSize: 17)
  131 + btn.setTitleColor(UIColor.black, for: .normal)
  132 + btn.tag = i
  133 + btn.addTarget(self, action: #selector(clickTitleAction(btn:)), for:UIControlEvents.touchUpInside)
  134 + btn.frame.size = CGSize.init(width: 40, height: ZJBNavH)
  135 +
  136 + let widht = getScreenWidth()
  137 + btn.center = CGPoint.init(x: widht/4*(1+CGFloat(i))-16, y: CGFloat(ZJBNavH/2))
  138 + btnWidthArr.append(btn.frame.size.width)
  139 +
  140 + titleBtnArr.append(btn)
  141 + titleView.addSubview(btn)
  142 + if i == 0 {
  143 + //设置titleLine初始位置
  144 + titleLine.frame = CGRect.init(x: btn.frame.origin.x, y: btn.center.y+14, width: 40, height: 3)
  145 + linePoint = CGPoint.init(x: titleLine.frame.origin.x, y: titleLine.frame.origin.y)
  146 + //添加titleLine到导航
  147 + self.navigationItem.titleView?.layer.addSublayer(titleLine)
  148 + }
  149 + }
  150 + }
  151 + @objc func clickTitleAction(btn:UIButton){
  152 + //titleLine动画动作
  153 + let animal = CABasicAnimation.init(keyPath: "position")
  154 + animal.fromValue = NSValue.init(cgPoint: CGPoint.init(x: linePoint.x, y: linePoint.y))
  155 + animal.toValue = NSValue.init(cgPoint: CGPoint.init(x: btn.center.x, y: btn.center.y+14))
  156 + animal.isRemovedOnCompletion = false
  157 + animal.fillMode = kCAFillModeForwards
  158 + self.titleLine.add(animal, forKey: "move")
  159 +
  160 + //update
  161 + linePoint = CGPoint.init(x: btn.center.x, y: btn.center.y+14)
  162 + //联动contentScrollview
  163 + let index = CGFloat(btn.tag)
  164 +
  165 + if contentScrollView.contentSize.width>0 {
  166 +
  167 + let childVC = self.childViewControllers[btn.tag]
  168 +
  169 + if self.contentScrollView.subviews.contains(childVC.view){
  170 + //已有view,直接移动
  171 + //移动scrollview
  172 + contentScrollView.setContentOffset(CGPoint.init(x: index*getScreenWidth(), y: 0), animated: true)
  173 + }else{
  174 + //新加view,刷新数据
  175 + childVC.view.frame = CGRect.init(x: CGFloat(btn.tag)*getScreenWidth(), y: 0, width: getScreenWidth(),height: self.view.frame.size.height)
  176 + self.contentScrollView.addSubview(childVC.view)
  177 + //移动scrollview
  178 + contentScrollView.setContentOffset(CGPoint.init(x: index*getScreenWidth(), y: 0), animated: true)
  179 + }
  180 + }
  181 + }
  182 + //MARK: - ScrollView Delegate
  183 + func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
  184 +
  185 + if scrollView == contentScrollView {
  186 + let offsetX = scrollView.contentOffset.x
  187 + let index = Int(offsetX/getScreenWidth())
  188 + let btn = titleBtnArr[index]
  189 +
  190 + clickTitleAction(btn: btn)
  191 +
  192 + }
  193 + }
  194 +
  195 + override func didReceiveMemoryWarning() {
  196 + super.didReceiveMemoryWarning()
  197 + // Dispose of any resources that can be recreated.
  198 + }
  199 +
  200 +
  201 + /*
  202 + // MARK: - Navigation
  203 +
  204 + // In a storyboard-based application, you will often want to do a little preparation before navigation
  205 + override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  206 + // Get the new view controller using segue.destinationViewController.
  207 + // Pass the selected object to the new view controller.
  208 + }
  209 + */
  210 +
  211 +}
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/MoralViewController.swift 0 → 100644
... ... @@ -0,0 +1,106 @@
  1 +//
  2 +// MoralViewController.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by Cao yang on 2018/3/22.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class MoralViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
  12 +
  13 + @IBOutlet weak var tableView: UITableView!
  14 + var data = [String:JSON]()
  15 + override func viewDidLoad() {
  16 + super.viewDidLoad()
  17 + self.title = "德育报告"
  18 + tableView.delegate = self
  19 + tableView.dataSource = self
  20 +
  21 +
  22 + downLoadDataFromNet()
  23 + }
  24 +
  25 + private func downLoadDataFromNet(){
  26 +
  27 +
  28 + let params = ["screenId":1,"startDate":"2018-03-08","endDate":"2018-04-08","classId":"70","schoolId":1] as [String : Any]
  29 +
  30 + HTTPServer.shared.getEvaluationSceneAnalysis(parameters: params as [String : AnyObject]) { (backData, error) in
  31 +
  32 + if error == nil && JSON.fromString(backData)!["status"].intValue == 1 {
  33 +
  34 + self.data = JSON.fromString(backData)!["data"].dictionaryValue
  35 +
  36 + if !self.data.isEmpty{
  37 + print(self.data)
  38 + }
  39 + }
  40 + }
  41 + }
  42 +
  43 +
  44 +
  45 + func numberOfSections(in tableView: UITableView) -> Int {
  46 + return 3
  47 + }
  48 + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  49 +
  50 + if section == 2 {
  51 + return 3
  52 + }else{
  53 + return 1
  54 + }
  55 + }
  56 + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  57 + switch indexPath.section {
  58 + case 0:
  59 + return 240
  60 + case 1:
  61 + return 240
  62 + case 2:
  63 + return 70
  64 + default:
  65 + return 0
  66 + }
  67 + }
  68 + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  69 + var cell = UITableViewCell.init()
  70 + switch indexPath.section {
  71 + case 0:
  72 + cell = tableView.dequeueReusableCell(withIdentifier: "moralDetail", for: indexPath)
  73 + return cell
  74 + case 1:
  75 + cell = tableView.dequeueReusableCell(withIdentifier: "educationDetail", for: indexPath)
  76 + return cell
  77 + case 2:
  78 + cell = tableView.dequeueReusableCell(withIdentifier: "behaviorDetail", for: indexPath)
  79 + return cell
  80 + default:
  81 + return cell
  82 + }
  83 + }
  84 + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  85 + if indexPath.section == 2 {
  86 + let scene = Story.instantiateViewControllerWithIdentifier("SceneDetailViewController", storyName: "Main") as! SceneDetailViewController
  87 + self.navigationController?.pushViewController(scene, animated: true)
  88 + }
  89 + }
  90 + override func didReceiveMemoryWarning() {
  91 + super.didReceiveMemoryWarning()
  92 + // Dispose of any resources that can be recreated.
  93 + }
  94 +
  95 +
  96 + /*
  97 + // MARK: - Navigation
  98 +
  99 + // In a storyboard-based application, you will often want to do a little preparation before navigation
  100 + override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  101 + // Get the new view controller using segue.destinationViewController.
  102 + // Pass the selected object to the new view controller.
  103 + }
  104 + */
  105 +
  106 +}
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/ReportViewController.swift 0 → 100644
... ... @@ -0,0 +1,98 @@
  1 +//
  2 +// ReportViewController.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by 葛建军 on 2018/3/5.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class ReportViewController: UIViewController {
  12 +
  13 + @IBOutlet weak var reportTable: UITableView!
  14 +
  15 + //膜板
  16 + var keyWindow = UIWindow()
  17 + var backBotton = UIButton()
  18 + //日历
  19 + var calendar = CalendarView()
  20 +
  21 + override func viewDidLoad() {
  22 + super.viewDidLoad()
  23 + setupDateView()
  24 + }
  25 +
  26 + // MARK: - 设置日期页面
  27 + func setupDateView(){
  28 +
  29 + let headView = UIView.init(frame: CGRect.init(x: 0, y: 0, width: screenWidth, height: 60))
  30 + self.view.addSubview(headView)
  31 +
  32 + //添加手势
  33 + let recognizer = UISwipeGestureRecognizer.init(target: self, action: #selector(showView))
  34 + recognizer.direction = UISwipeGestureRecognizerDirection.down
  35 + headView.addGestureRecognizer(recognizer)
  36 +
  37 + calendar = CalendarView.init(frame: CGRect.init(x: 0, y: 30, width: screenWidth, height: 260))
  38 + }
  39 +
  40 + @objc func showView(){
  41 + keyWindow = UIApplication.shared.keyWindow!
  42 + let backBtn = UIButton.init(frame: CGRect.init(x: 0, y: calendar.frame.origin.y+260+22, width: screenWidth, height: screenHeight))
  43 + backBtn.backgroundColor = UIColor.black
  44 + backBtn.alpha = 0.4
  45 +
  46 + backBtn.addTarget(self, action: #selector(closeView(btn:)), for: UIControlEvents.allEvents)
  47 + reportTable.isUserInteractionEnabled = false
  48 +
  49 + keyWindow.addSubview(backBtn)
  50 + keyWindow.addSubview(calendar)
  51 + calendar.isHidden = false
  52 + }
  53 + @objc func closeView(btn:UIButton) {
  54 +
  55 + reportTable.isUserInteractionEnabled = true
  56 + UIView.animate(withDuration: 0.3) {
  57 + btn.removeFromSuperview()
  58 + self.calendar.isHidden = true
  59 + }
  60 + }
  61 + override func viewWillAppear(_ animated: Bool) {
  62 + super.viewWillAppear(animated)
  63 + }
  64 + override func viewWillDisappear(_ animated: Bool) {
  65 + super.viewWillDisappear(animated)
  66 + }
  67 + override func viewDidLayoutSubviews() {
  68 + super.viewDidLayoutSubviews()
  69 +
  70 + }
  71 + override func didReceiveMemoryWarning() {
  72 + super.didReceiveMemoryWarning()
  73 + }
  74 +
  75 +
  76 +}
  77 +
  78 +// MARK: - 作业报告列表
  79 +extension ReportViewController: UITableViewDelegate,UITableViewDataSource{
  80 + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  81 + return 5
  82 + }
  83 +
  84 + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  85 +
  86 + if indexPath.row == 0 {
  87 + let cell = tableView.dequeueReusableCell(withIdentifier: "MoralTableViewCell", for: indexPath) as! MoralTableViewCell
  88 + return cell
  89 + }else{
  90 + let cell = tableView.dequeueReusableCell(withIdentifier: "TaskPresentationTableViewCell", for: indexPath) as! TaskPresentationTableViewCell
  91 + return cell
  92 + }
  93 + }
  94 + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  95 + return 280
  96 + }
  97 +
  98 +}
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/SceneDetailViewController.swift 0 → 100644
... ... @@ -0,0 +1,76 @@
  1 +//
  2 +// SceneDetailViewController.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by Cao yang on 2018/3/22.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class SceneDetailViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {
  12 +
  13 + @IBOutlet weak var sceneTableView: UITableView!
  14 + override func viewDidLoad() {
  15 + super.viewDidLoad()
  16 + self.title = "场景详情"
  17 + sceneTableView.delegate = self
  18 + sceneTableView.dataSource = self
  19 + // Do any additional setup after loading the view.
  20 + }
  21 + func numberOfSections(in tableView: UITableView) -> Int {
  22 + return 3
  23 + }
  24 + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  25 + if section == 2 {
  26 + return 5
  27 + }
  28 + return 1
  29 + }
  30 + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  31 +
  32 + switch indexPath.section {
  33 + case 0:
  34 + return 240
  35 + case 1:
  36 + return 250
  37 + case 2:
  38 + return 70
  39 + default:
  40 + return 0
  41 + }
  42 + }
  43 + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  44 + var cell = UITableViewCell.init()
  45 + switch indexPath.section {
  46 + case 0:
  47 + cell = tableView.dequeueReusableCell(withIdentifier: "cultureCell", for: indexPath) as! SceneTopCell
  48 + return cell
  49 + case 1:
  50 + cell = tableView.dequeueReusableCell(withIdentifier: "scoreCell", for: indexPath) as! SceneMiddleCell
  51 + return cell
  52 + case 2:
  53 + cell = tableView.dequeueReusableCell(withIdentifier: "disciplineCell", for: indexPath) as! SceneDownCell
  54 + return cell
  55 + default:
  56 + return cell
  57 + }
  58 + }
  59 +
  60 + override func didReceiveMemoryWarning() {
  61 + super.didReceiveMemoryWarning()
  62 + // Dispose of any resources that can be recreated.
  63 + }
  64 +
  65 +
  66 + /*
  67 + // MARK: - Navigation
  68 +
  69 + // In a storyboard-based application, you will often want to do a little preparation before navigation
  70 + override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  71 + // Get the new view controller using segue.destinationViewController.
  72 + // Pass the selected object to the new view controller.
  73 + }
  74 + */
  75 +
  76 +}
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/View/BehaviorDetailCell.swift 0 → 100644
... ... @@ -0,0 +1,24 @@
  1 +//
  2 +// BehaviorDetailCell.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by Cao yang on 2018/3/23.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class BehaviorDetailCell: UITableViewCell {
  12 +
  13 + override func awakeFromNib() {
  14 + super.awakeFromNib()
  15 + // Initialization code
  16 + }
  17 +
  18 + override func setSelected(_ selected: Bool, animated: Bool) {
  19 + super.setSelected(selected, animated: animated)
  20 +
  21 + // Configure the view for the selected state
  22 + }
  23 +
  24 +}
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/View/CalendarView.swift 0 → 100644
... ... @@ -0,0 +1,72 @@
  1 +//
  2 +// CalendarView.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by Cao yang on 2018/3/27.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class CalendarView: UIView,UICollectionViewDelegate,UICollectionViewDataSource {
  12 +
  13 +
  14 + var weekLab = ["日","一","二","三","四","五","六"]
  15 +
  16 + override init(frame: CGRect) {
  17 + super.init(frame: frame)
  18 + self.drawCalendarView(frame: frame)
  19 + }
  20 +
  21 + func drawCalendarView(frame:CGRect) {
  22 + //TODO: 数据源待完成
  23 + let dayLab = ["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"]
  24 + weekLab.append(contentsOf: dayLab)
  25 + //设置layout
  26 + let flowlayout = UICollectionViewFlowLayout()
  27 + flowlayout.itemSize = CGSize.init(width: screenWidth/7, height:40)
  28 + flowlayout.minimumLineSpacing = 0
  29 + flowlayout.minimumInteritemSpacing = 0
  30 + flowlayout.headerReferenceSize = CGSize.init(width: 0, height: 0)
  31 + flowlayout.footerReferenceSize = CGSize.init(width: 0, height: 0)
  32 + flowlayout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0)
  33 +
  34 + let calendarView = UICollectionView.init(frame: frame, collectionViewLayout: flowlayout)
  35 + calendarView.delegate = self
  36 + calendarView.dataSource = self
  37 + calendarView.backgroundColor = UIColor.white
  38 + calendarView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "calendarCell")
  39 + self.addSubview(calendarView)
  40 + }
  41 +
  42 + //MARK: - Delegate
  43 + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
  44 + return weekLab.count
  45 + }
  46 +
  47 + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
  48 +
  49 + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "calendarCell", for: indexPath)
  50 + let lab = UILabel.init(frame: cell.bounds)
  51 + lab.text = weekLab[indexPath.row]
  52 + lab.textAlignment = .center
  53 + cell.addSubview(lab)
  54 + return cell
  55 +
  56 + }
  57 + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
  58 + print("点击了 第 \(weekLab[indexPath.row])")
  59 + }
  60 + required init?(coder aDecoder: NSCoder) {
  61 + fatalError("init(coder:) has not been implemented")
  62 + }
  63 +
  64 + /*
  65 + // Only override draw() if you perform custom drawing.
  66 + // An empty implementation adversely affects performance during animation.
  67 + override func draw(_ rect: CGRect) {
  68 + // Drawing code
  69 + }
  70 + */
  71 +
  72 +}
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/View/EducationDetailCell.swift 0 → 100644
... ... @@ -0,0 +1,43 @@
  1 +//
  2 +// EducationDetailCell.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by Cao yang on 2018/3/23.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class EducationDetailCell: UITableViewCell {
  12 +
  13 + @IBOutlet weak var lineChartView: UIView!
  14 +
  15 + var customLineChart = LineChartView()
  16 +
  17 + override func awakeFromNib() {
  18 + super.awakeFromNib()
  19 + let rect = self.lineChartView.bounds
  20 + print(rect)
  21 + customLineChart = LineChartView.init(frame: rect)
  22 + customLineChart.drawUI(xLableArr: nil)
  23 + let arr1 = [4,4,2,1,3]
  24 + let arr2 = [2,1,4,4,5]
  25 +
  26 + customLineChart.drawLine(point: arr1, color: UIColorWithRGB(R: 65, G: 105, B: 190))
  27 + customLineChart.drawLine(point: arr2, color: UIColorWithRGB(R: 220, G: 0, B: 16))
  28 +
  29 +
  30 +
  31 + self.lineChartView.addSubview(customLineChart)
  32 +
  33 +
  34 + // Initialization code
  35 + }
  36 +
  37 + override func setSelected(_ selected: Bool, animated: Bool) {
  38 + super.setSelected(selected, animated: animated)
  39 +
  40 + // Configure the view for the selected state
  41 + }
  42 +
  43 +}
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/View/LineChartView.swift 0 → 100644
... ... @@ -0,0 +1,220 @@
  1 +//
  2 +// LineChartView.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by Cao yang on 2018/3/23.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class LineChartView: UIView {
  12 +
  13 + //默认横坐标
  14 + private var xLabArr = ["行为","文明","课堂","作业","礼仪"]
  15 + //设置纵坐标
  16 + private let yCount = 6
  17 + //横坐标个数
  18 + private let xCount = 5
  19 + //最大绩点分数
  20 + private let GPA = 5
  21 + //储存横纵坐标,画线用
  22 + private var xCenterArr = Array<CGFloat>()
  23 + private var yCenterArr = Array<CGFloat>()
  24 + //判断是否重复点击
  25 + private var btnTouch = 10
  26 + //虚线
  27 + private let lineLayer = CAShapeLayer()
  28 + //横坐标下划线
  29 + private let xMoveLayer = CAShapeLayer()
  30 + //纵坐标Lab数组
  31 + private var yMoveLaArr = Array<UILabel>()
  32 + //折线图数据数组
  33 + private var dateArr = Array<Array<Int>>()
  34 + //显示的数字
  35 + var yLabArray = Array<UILabel>()
  36 +
  37 + override init(frame: CGRect) {
  38 + super.init(frame: frame)
  39 + print("frame==\(frame)")
  40 +
  41 + }
  42 + func drawUI(xLableArr:Array<String>?){
  43 +
  44 + if xLableArr != nil {
  45 + xLabArr = xLableArr!
  46 + }
  47 + drawX()
  48 + drawY()
  49 + }
  50 + //设置纵坐标
  51 + private func drawY() {
  52 +
  53 + let yHeight = (self.bounds.height-60)/CGFloat(yCount)
  54 + for index in 0..<yCount{
  55 + let yLab = UILabel.init(frame: CGRect.init(x: 10, y: CGFloat(index)*yHeight, width: 20, height: 20))
  56 + yLab.text = "\(GPA-index)"
  57 + yLab.textColor = UIColorWithRGB(R: 119, G: 119, B: 119)
  58 + yLab.font = UIFont.systemFont(ofSize: 14)
  59 + self.addSubview(yLab)
  60 +
  61 + let lineLab = UILabel.init(frame: CGRect.init(x: 30, y: yLab.center.y, width: screenWidth-60, height: 0.4))
  62 + lineLab.backgroundColor = UIColorWithRGB(R: 190, G: 190, B: 190)
  63 + self.addSubview(lineLab)
  64 +
  65 + yMoveLaArr.append(yLab)
  66 + yCenterArr.append(yLab.frame.origin.y+10)
  67 + }
  68 + }
  69 + //设置横坐标
  70 + private func drawX() {
  71 + let xWidth = (screenWidth-20)/CGFloat(yCount)
  72 + for index in 0..<xCount {
  73 + let nameBtn = UIButton.init(frame: CGRect.init(x: xWidth+CGFloat(index)*xWidth, y: self.bounds.height-70, width: 40, height: 25))
  74 + nameBtn.setTitle(xLabArr[index], for: UIControlState.normal)
  75 + nameBtn.setTitleColor(UIColorWithRGB(R: 119, G: 119, B: 119), for: UIControlState.normal)
  76 + nameBtn.titleLabel!.textAlignment = .center
  77 + nameBtn.titleLabel!.font = UIFont.systemFont(ofSize: 13)
  78 +// nameBtn.backgroundColor = UIColor.orange
  79 + nameBtn.tag = index
  80 + self.addSubview(nameBtn)
  81 +
  82 + nameBtn.addTarget(self, action: #selector(touchXAction(tap:)), for: UIControlEvents.touchUpInside)
  83 +
  84 + xCenterArr.append(nameBtn.frame.origin.x+20)
  85 + }
  86 + }
  87 +
  88 + //MARK: - 画折线
  89 + func drawLine(point:Array<Int>,color:UIColor){
  90 +
  91 + let pointArr = swichPoint(arr: point)
  92 +
  93 + let drawLayer = DrawLayer()
  94 + drawLayer.xPointArr = xCenterArr
  95 + drawLayer.yPointArr = [yCenterArr[pointArr[0]],yCenterArr[pointArr[1]],yCenterArr[pointArr[2]],yCenterArr[pointArr[3]],yCenterArr[pointArr[4]]]
  96 + drawLayer.bounds = self.bounds
  97 + drawLayer.position = self.center
  98 + drawLayer.lineColor = color
  99 + self.layer.addSublayer(drawLayer)
  100 + drawLayer.setNeedsDisplay()
  101 +
  102 + dateArr.append(point)
  103 +
  104 + }
  105 + //MARK: - 点击横坐标
  106 + @objc func touchXAction(tap:UIButton){
  107 +
  108 + let index = tap.tag
  109 +
  110 +
  111 + if btnTouch != index {
  112 +
  113 + //竖虚线
  114 + lineLayer.strokeColor = UIColorWithRGB(R: 92, G: 145, B: 230).cgColor
  115 + lineLayer.lineWidth = 1
  116 + let arr = [5,5]
  117 + lineLayer.lineDashPhase = 0
  118 + lineLayer.lineDashPattern = arr as [NSNumber]
  119 + self.layer.addSublayer(lineLayer)
  120 +
  121 + //X轴下划线
  122 + let movePath = CGMutablePath()
  123 + movePath.move(to: CGPoint.init(x: xCenterArr[index], y: yCenterArr[0]))
  124 + movePath.addLine(to: CGPoint.init(x: xCenterArr[index], y: 10+5*(self.bounds.height-60)/CGFloat(yCount)))
  125 + lineLayer.path = movePath
  126 +
  127 + xMoveLayer.strokeColor = UIColorWithRGB(R: 92, G: 145, B: 230).cgColor
  128 + xMoveLayer.lineWidth = 2
  129 + self.layer.addSublayer(xMoveLayer)
  130 + let movePath2 = CGMutablePath()
  131 + movePath2.move(to: CGPoint.init(x: xCenterArr[index]-15, y: self.bounds.height-45))
  132 + movePath2.addLine(to: CGPoint.init(x: xCenterArr[index]+15, y: self.bounds.height-45))
  133 + xMoveLayer.path = movePath2
  134 +
  135 + if yLabArray.count == dateArr.count {
  136 + for label in yLabArray {
  137 + label.removeFromSuperview()
  138 + }
  139 + }
  140 + yLabArray.removeAll()
  141 + //数字显示
  142 + for i in 0..<dateArr.count {
  143 + let arr = dateArr[i]
  144 + //y坐标数值
  145 + let y = arr[index]
  146 + let yLab = yMoveLaArr[GPA-y]
  147 + var rect = yLab.frame
  148 + rect.origin.x = xCenterArr[index]+10
  149 +
  150 + let newLab = UILabel()
  151 + newLab.text = yLab.text
  152 + newLab.textColor = yLab.textColor
  153 + newLab.font = yLab.font
  154 + newLab.frame = rect
  155 + self.addSubview(newLab)
  156 + yLabArray.append(newLab)
  157 + }
  158 + }else{
  159 + print(yLabArray)
  160 + }
  161 + btnTouch = index
  162 +
  163 +
  164 + }
  165 + //转换y坐标
  166 + func swichPoint(arr:Array<Int>)->Array<Int>{
  167 + var array = Array<Int>()
  168 + for index in 0..<arr.count {
  169 + let value = GPA - arr[index]
  170 + array.append(value)
  171 + }
  172 + return array
  173 + }
  174 +
  175 + required init?(coder aDecoder: NSCoder) {
  176 + fatalError("init(coder:) has not been implemented")
  177 + }
  178 +
  179 + /*
  180 + // Only override draw() if you perform custom drawing.
  181 + // An empty implementation adversely affects performance during animation.
  182 + override func draw(_ rect: CGRect) {
  183 + // Drawing code
  184 + }
  185 + */
  186 +
  187 +}
  188 +
  189 +class DrawLayer: CALayer {
  190 +
  191 + var yPointArr = Array<CGFloat>()
  192 + var xPointArr = Array<CGFloat>()
  193 + var lineColor = UIColor()
  194 +
  195 + override func draw(in ctx: CGContext) {
  196 +
  197 + let context = ctx
  198 + //点
  199 + context.setFillColor(lineColor.cgColor)
  200 +
  201 + for i in 0..<xPointArr.count {
  202 + context.fillEllipse(in: CGRect.init(x: xPointArr[i]-5, y: yPointArr[i]-5, width: 10, height: 10))
  203 +
  204 + }
  205 + //折线
  206 + context.setStrokeColor(lineColor.cgColor)
  207 + context.setLineWidth(1.5)
  208 + for i in 0..<xPointArr.count {
  209 + if i == 0 {
  210 + context.move(to: CGPoint.init(x: xPointArr[0] , y: yPointArr[0]))
  211 + }else{
  212 + context.addLine(to: CGPoint.init(x: xPointArr[i] , y: yPointArr[i]))
  213 + }
  214 + }
  215 + context.strokePath()
  216 + }
  217 +
  218 +}
  219 +
  220 +
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/View/MoralDetailCell.swift 0 → 100644
... ... @@ -0,0 +1,32 @@
  1 +//
  2 +// MoralDetailCell.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by Cao yang on 2018/3/23.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class MoralDetailCell: UITableViewCell {
  12 +
  13 + @IBOutlet weak var dateLab: UILabel!
  14 + @IBOutlet weak var pointLab: UILabel!
  15 + @IBOutlet weak var rankingLab: UILabel!
  16 + @IBOutlet weak var risingLab: UILabel!
  17 + @IBOutlet weak var risingRightLab: UILabel!
  18 + @IBOutlet weak var averageLab: UILabel!
  19 + @IBOutlet weak var averageRightLab: UILabel!
  20 + @IBOutlet weak var evaluationLab: UILabel!
  21 + override func awakeFromNib() {
  22 + super.awakeFromNib()
  23 + // Initialization code
  24 + }
  25 +
  26 + override func setSelected(_ selected: Bool, animated: Bool) {
  27 + super.setSelected(selected, animated: animated)
  28 +
  29 + // Configure the view for the selected state
  30 + }
  31 +
  32 +}
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/View/MoralTableViewCell.swift 0 → 100644
... ... @@ -0,0 +1,30 @@
  1 +//
  2 +// MoralTableViewCell.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by Cao yang on 2018/3/22.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class MoralTableViewCell: UITableViewCell {
  12 +
  13 + @IBOutlet weak var pointLab: UILabel!
  14 + @IBOutlet weak var todayReName: UILabel!
  15 + @IBOutlet weak var rankingLab: UILabel!
  16 + @IBOutlet weak var evaluateLab: UILabel!
  17 + @IBOutlet weak var rankStatusLab: UILabel!
  18 + @IBOutlet weak var reportDateLab: UILabel!
  19 + override func awakeFromNib() {
  20 + super.awakeFromNib()
  21 + // Initialization code
  22 + }
  23 +
  24 + override func setSelected(_ selected: Bool, animated: Bool) {
  25 + super.setSelected(selected, animated: animated)
  26 +
  27 + // Configure the view for the selected state
  28 + }
  29 +
  30 +}
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/View/ReportDateCollectionViewCell.swift 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +//
  2 +// ReportDateCollectionViewCell.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by 葛建军 on 2018/3/9.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +class ReportDateCollectionViewCell: UICollectionViewCell {
  11 + @IBOutlet var weekLabel: UILabel!
  12 + @IBOutlet var dateLabel: UILabel!
  13 + func setupWithDate(week:String,date:String){
  14 + weekLabel.text = week
  15 + dateLabel.text = date
  16 +
  17 +
  18 +
  19 + }
  20 +
  21 +}
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/View/ReportHeaderView.swift 0 → 100644
... ... @@ -0,0 +1,48 @@
  1 +//
  2 +// ReportHeaderView.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by 葛建军 on 2018/3/8.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class ReportHeaderView: UIView {
  12 + var delegate:ReportHeaderViewDelegate!
  13 + @IBOutlet var nameButton: UIButton!//学生名字按钮
  14 + @IBOutlet var dateButton: UIButton!//日期按钮
  15 + @IBOutlet var typeButton: UIButton!//筛选按钮
  16 + override func awakeFromNib() {
  17 + super.awakeFromNib()
  18 + }
  19 + override func layoutSubviews() {
  20 + super.layoutSubviews()
  21 + nameButton.frame.origin = CGPoint(x: 15, y: 7)
  22 + dateButton.frame.origin = CGPoint(x: (getScreenWidth()-dateButton.frame.size.width)/2, y: 7)
  23 + typeButton.frame.origin = CGPoint(x: getScreenWidth()-typeButton.frame.size.width-30, y: 7)
  24 + }
  25 + //点击学生姓名按钮
  26 + @IBAction func changeStudentAction(_ sender: UIButton) {
  27 + delegate.selectStudentButton()
  28 + }
  29 + //点击日期按钮
  30 + @IBAction func changeDateAction(_ sender: UIButton) {
  31 + delegate.selectDateButton()
  32 + }
  33 + //点击筛选按钮
  34 + @IBAction func changeTypeAction(_ sender: UIButton) {
  35 + delegate.selectTypeButton()
  36 + }
  37 +
  38 +}
  39 +protocol ReportHeaderViewDelegate {
  40 + func selectStudentButton()
  41 + func selectDateButton()
  42 + func selectTypeButton()
  43 +}
  44 +extension ReportHeaderView {
  45 + class func titleView() -> ReportHeaderView {
  46 + return Bundle.main.loadNibNamed("ReportHeaderView", owner: nil, options: nil)?.first as! ReportHeaderView
  47 + }
  48 +}
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/View/ReportHeaderView.xib 0 → 100644
... ... @@ -0,0 +1,61 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
  3 + <device id="retina4_7" orientation="portrait">
  4 + <adaptation id="fullscreen"/>
  5 + </device>
  6 + <dependencies>
  7 + <deployment identifier="iOS"/>
  8 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
  9 + <capability name="Safe area layout guides" minToolsVersion="9.0"/>
  10 + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
  11 + </dependencies>
  12 + <objects>
  13 + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
  14 + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
  15 + <view clipsSubviews="YES" contentMode="scaleToFill" id="4WE-cx-977" customClass="ReportHeaderView" customModule="ParentAssistant" customModuleProvider="target">
  16 + <rect key="frame" x="0.0" y="0.0" width="485" height="44"/>
  17 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  18 + <subviews>
  19 + <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="W6e-VK-JCE">
  20 + <rect key="frame" x="20" y="7" width="46" height="30"/>
  21 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  22 + <state key="normal" title="马伯骞">
  23 + <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  24 + </state>
  25 + <connections>
  26 + <action selector="changeStudentAction:" destination="4WE-cx-977" eventType="touchUpInside" id="Dua-XZ-hMB"/>
  27 + </connections>
  28 + </button>
  29 + <button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5Dq-Z9-eEM">
  30 + <rect key="frame" x="434" y="7" width="31" height="30"/>
  31 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  32 + <state key="normal" title="筛选">
  33 + <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  34 + </state>
  35 + <connections>
  36 + <action selector="changeTypeAction:" destination="4WE-cx-977" eventType="touchUpInside" id="XFz-ca-od2"/>
  37 + </connections>
  38 + </button>
  39 + <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7xY-bD-L7w">
  40 + <rect key="frame" x="191" y="7" width="102" height="30"/>
  41 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  42 + <state key="normal" title="12月29日">
  43 + <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  44 + </state>
  45 + <connections>
  46 + <action selector="changeDateAction:" destination="4WE-cx-977" eventType="touchUpInside" id="pCF-3R-0zv"/>
  47 + </connections>
  48 + </button>
  49 + </subviews>
  50 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
  51 + <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
  52 + <viewLayoutGuide key="safeArea" id="71B-FS-Ws9"/>
  53 + <connections>
  54 + <outlet property="dateButton" destination="7xY-bD-L7w" id="3zG-4z-eNW"/>
  55 + <outlet property="nameButton" destination="W6e-VK-JCE" id="XDD-iU-T0k"/>
  56 + <outlet property="typeButton" destination="5Dq-Z9-eEM" id="LAM-Dw-HAX"/>
  57 + </connections>
  58 + <point key="canvasLocation" x="156.5" y="93"/>
  59 + </view>
  60 + </objects>
  61 +</document>
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/View/SceneDownCell.swift 0 → 100644
... ... @@ -0,0 +1,30 @@
  1 +//
  2 +// SceneDownCell.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by Cao yang on 2018/3/24.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class SceneDownCell: UITableViewCell {
  12 +
  13 + @IBOutlet weak var evaluateLab: UILabel!
  14 + @IBOutlet weak var sceneLab: UILabel!
  15 + @IBOutlet weak var scoreLab: UILabel!
  16 + @IBOutlet weak var nameLab: UILabel!
  17 + @IBOutlet weak var classLab: UILabel!
  18 + @IBOutlet weak var dateLab: UILabel!
  19 + override func awakeFromNib() {
  20 + super.awakeFromNib()
  21 + // Initialization code
  22 + }
  23 +
  24 + override func setSelected(_ selected: Bool, animated: Bool) {
  25 + super.setSelected(selected, animated: animated)
  26 +
  27 + // Configure the view for the selected state
  28 + }
  29 +
  30 +}
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/View/SceneMiddleCell.swift 0 → 100644
... ... @@ -0,0 +1,44 @@
  1 +//
  2 +// SceneMiddleCell.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by Cao yang on 2018/3/24.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class SceneMiddleCell: UITableViewCell {
  12 +
  13 + @IBOutlet weak var lineChartView: UIView!
  14 +
  15 + var customLineChart = LineChartView()
  16 + override func awakeFromNib() {
  17 + super.awakeFromNib()
  18 + // Initialization code
  19 + let rect = self.lineChartView.bounds
  20 + customLineChart = LineChartView.init(frame: rect)
  21 + let customXLabArr = ["03/12","03/13","03/14","03/15","03/16"]
  22 +
  23 + customLineChart.drawUI(xLableArr:customXLabArr)
  24 +
  25 + let arr1 = [5,4,5,5,5]
  26 + let arr2 = [4,4,2,1,3]
  27 + let arr3 = [3,3,4,3,4]
  28 +
  29 +
  30 + customLineChart.drawLine(point: arr1, color: UIColorWithRGB(R: 129, G: 199, B: 132))
  31 + customLineChart.drawLine(point: arr2, color: UIColorWithRGB(R: 92, G: 145, B: 230))
  32 + customLineChart.drawLine(point: arr3, color: UIColorWithRGB(R: 255, G: 213, B: 79))
  33 +
  34 + self.lineChartView.addSubview(customLineChart)
  35 +
  36 + }
  37 +
  38 + override func setSelected(_ selected: Bool, animated: Bool) {
  39 + super.setSelected(selected, animated: animated)
  40 +
  41 + // Configure the view for the selected state
  42 + }
  43 +
  44 +}
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/View/SceneTopCell.swift 0 → 100644
... ... @@ -0,0 +1,28 @@
  1 +//
  2 +// SceneTopCell.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by Cao yang on 2018/3/24.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class SceneTopCell: UITableViewCell {
  12 +
  13 + @IBOutlet weak var scoreLab: UILabel! //得分
  14 + @IBOutlet weak var GPALab: UILabel! //绩点
  15 + @IBOutlet weak var LevelLab: UILabel! //等级
  16 + @IBOutlet weak var SuggestLab: UITextView! //指导意见
  17 + override func awakeFromNib() {
  18 + super.awakeFromNib()
  19 + // Initialization code
  20 + }
  21 +
  22 + override func setSelected(_ selected: Bool, animated: Bool) {
  23 + super.setSelected(selected, animated: animated)
  24 +
  25 + // Configure the view for the selected state
  26 + }
  27 +
  28 +}
... ...
ParentAssistant/ParentAssistant/Classes/controllers/Grow/View/TaskPresentationTableViewCell.swift 0 → 100644
... ... @@ -0,0 +1,82 @@
  1 +//
  2 +// TaskPresentationTableViewCell.swift
  3 +// ParentAssistant
  4 +//
  5 +// Created by 葛建军 on 2018/3/9.
  6 +// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +//func degreesToRadians(x:Double) -> CGFloat{
  11 +// return (CGFloat(Double.pi*(x)/180.0))
  12 +//} //把角度转换成PI的方式
  13 +//let PROGREESS_WIDTH = 160 //圆直径
  14 +//let PROGRESS_LINE_WIDTH = 4 //弧线的宽度
  15 +class TaskPresentationTableViewCell: UITableViewCell {
  16 +
  17 + @IBOutlet var layerLabel: UILabel!
  18 + override func awakeFromNib() {
  19 + super.awakeFromNib()
  20 + // Initialization code
  21 + //可以画出上面所示的整个轨道。这个圆形是从-210度的角度到30度。
  22 +// let path = UIBezierPath(arcCenter: CGPoint(x: 40, y: 40), radius: CGFloat((PROGREESS_WIDTH-PROGRESS_LINE_WIDTH)/2), startAngle: degreesToRadians(x: -210), endAngle: degreesToRadians(x: 30), clockwise: true)
  23 + //画出一个完成的进度的背景轨道
  24 +// let trackLayer = CAShapeLayer()//创建一个track shape layer
  25 +// trackLayer.frame = self.layerLabel.bounds
  26 +// trackLayer.fillColor = UIColor.clear.cgColor
  27 +// trackLayer.strokeColor = UIColor.red.cgColor//指定path的渲染颜色
  28 +// trackLayer.opacity = 0.25 //背景同学你就甘心做背景吧,不要太明显了,透明度小一点
  29 +// trackLayer.lineCap = kCALineCapRound//指定线的边缘是圆的
  30 +// trackLayer.lineWidth = CGFloat(PROGRESS_LINE_WIDTH)//线的宽度
  31 +// trackLayer.path = path.cgPath //把path传递給layer,然后layer会处理相应的渲染,整个逻辑和CoreGraph是一致的。
  32 +//
  33 +// self.layerLabel.layer.addSublayer(trackLayer)
  34 + //渐变进度条
  35 +// let progressLayer = CAShapeLayer()
  36 +// progressLayer.frame = self.layerLabel.bounds
  37 +// progressLayer.fillColor = UIColor.clear.cgColor
  38 +// progressLayer.strokeColor = UIColor.red.cgColor
  39 +// progressLayer.lineCap = kCALineCapRound;
  40 +// progressLayer.lineWidth = CGFloat(PROGRESS_LINE_WIDTH)
  41 +// progressLayer.path = path.cgPath
  42 +// progressLayer.strokeEnd = 50/100.0 //总进度
  43 +//
  44 +// let gradientLayer = CALayer()
  45 +// let gradientLayer1 = CAGradientLayer()
  46 +// gradientLayer1.frame = CGRect(x: 0, y: 0, width: self.layerLabel.frame.size.width/2, height: self.layerLabel.frame.size.height)
  47 +// gradientLayer1.colors = [UIColor.yellow.cgColor,UIColor.blue.cgColor]
  48 +// gradientLayer1.locations = [0.5,0.9,1]
  49 +// gradientLayer1.startPoint = CGPoint(x: 0.5, y: 1)
  50 +// gradientLayer1.endPoint = CGPoint(x: 0.5, y: 0)
  51 +// gradientLayer.addSublayer(gradientLayer1)
  52 +//
  53 +// let gradientLayer2 = CAGradientLayer()
  54 +// gradientLayer2.frame = CGRect(x: self.layerLabel.frame.size.width/2, y: 0, width: self.layerLabel.frame.size.width/2, height: self.layerLabel.frame.size.height)
  55 +// gradientLayer2.colors = [UIColor.blue.cgColor,UIColor.blue.cgColor]
  56 +// gradientLayer2.locations = [0.1,0.5,1]
  57 +// gradientLayer2.startPoint = CGPoint(x: 0.5, y: 0)
  58 +// gradientLayer2.endPoint = CGPoint(x: 0.5, y: 1)
  59 +// gradientLayer.addSublayer(gradientLayer2)
  60 +//
  61 +// gradientLayer.mask = progressLayer//用progressLayer来截取渐变层
  62 +// self.layerLabel.layer.addSublayer(gradientLayer)
  63 + }
  64 + //进度条效果 CAShapeLayer有一个strokeEnd的属性,这个属性是从0到1的浮点类型,正好可以用表达百分比,而且这个属性是animatable,可以动态的表示进度的变化。
  65 + // -(void)setPercent:(NSInteger)percent animated:(BOOL)animated
  66 + // {
  67 + // [CATransaction begin];
  68 + // [CATransaction setDisableActions:!animated];
  69 + // [CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
  70 + // [CATransaction setAnimationDuration:MAIN_SCREEN_ANIMATION_TIME];
  71 + // progressLayer.strokeEnd = percent/100.0;
  72 + // [CATransaction commit];
  73 + //
  74 + // _percent = percent;
  75 + // }
  76 + override func setSelected(_ selected: Bool, animated: Bool) {
  77 + super.setSelected(selected, animated: animated)
  78 +
  79 + // Configure the view for the selected state
  80 + }
  81 +
  82 +}
... ...
ParentAssistant/ParentAssistant/Classes/controllers/report/MoralViewController.swift
... ... @@ -1,105 +0,0 @@
1   -//
2   -// MoralViewController.swift
3   -// ParentAssistant
4   -//
5   -// Created by Cao yang on 2018/3/22.
6   -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
7   -//
8   -
9   -import UIKit
10   -
11   -class MoralViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
12   -
13   - @IBOutlet weak var tableView: UITableView!
14   - var data = Array<JSON>()
15   - override func viewDidLoad() {
16   - super.viewDidLoad()
17   - self.title = "德育报告"
18   - tableView.delegate = self
19   - tableView.dataSource = self
20   -
21   -
22   - downLoadDataFromNet()
23   - }
24   -
25   - private func downLoadDataFromNet(){
26   -
27   -
28   - let params = ["screenId":1,"startDate":"2018-03-08","endDate":"2018-04-08","classId":"70","schoolId":1] as [String : Any]
29   -
30   - HTTPServer.shared.getEvaluationSceneAnalysis(parameters: params as [String : AnyObject]) { (backData, error) in
31   - print(backData!)
32   - if error == nil && JSON.fromString(backData)!["status"].intValue == 1 {
33   -
34   -// self.data = SceneEvaluate(j: JSON.fromString(backData)!.contentData())
35   -// if self.data != nil{
36   -// print(self.data)
37   -// }
38   - }
39   - }
40   - }
41   -
42   -
43   -
44   - func numberOfSections(in tableView: UITableView) -> Int {
45   - return 3
46   - }
47   - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
48   -
49   - if section == 2 {
50   - return 3
51   - }else{
52   - return 1
53   - }
54   - }
55   - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
56   - switch indexPath.section {
57   - case 0:
58   - return 240
59   - case 1:
60   - return 240
61   - case 2:
62   - return 70
63   - default:
64   - return 0
65   - }
66   - }
67   - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
68   - var cell = UITableViewCell.init()
69   - switch indexPath.section {
70   - case 0:
71   - cell = tableView.dequeueReusableCell(withIdentifier: "moralDetail", for: indexPath)
72   - return cell
73   - case 1:
74   - cell = tableView.dequeueReusableCell(withIdentifier: "educationDetail", for: indexPath)
75   - return cell
76   - case 2:
77   - cell = tableView.dequeueReusableCell(withIdentifier: "behaviorDetail", for: indexPath)
78   - return cell
79   - default:
80   - return cell
81   - }
82   - }
83   - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
84   - if indexPath.section == 2 {
85   - let scene = Story.instantiateViewControllerWithIdentifier("SceneDetailViewController", storyName: "Main") as! SceneDetailViewController
86   - self.navigationController?.pushViewController(scene, animated: true)
87   - }
88   - }
89   - override func didReceiveMemoryWarning() {
90   - super.didReceiveMemoryWarning()
91   - // Dispose of any resources that can be recreated.
92   - }
93   -
94   -
95   - /*
96   - // MARK: - Navigation
97   -
98   - // In a storyboard-based application, you will often want to do a little preparation before navigation
99   - override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
100   - // Get the new view controller using segue.destinationViewController.
101   - // Pass the selected object to the new view controller.
102   - }
103   - */
104   -
105   -}
ParentAssistant/ParentAssistant/Classes/controllers/report/ReportViewController.swift
... ... @@ -1,223 +0,0 @@
1   -//
2   -// ReportViewController.swift
3   -// ParentAssistant
4   -//
5   -// Created by 葛建军 on 2018/3/5.
6   -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
7   -//
8   -
9   -import UIKit
10   -
11   -class ReportViewController: UIViewController {
12   - var titleView:ReportHeaderView!//navigationBar自定义view
13   - @IBOutlet weak var reportTable: UITableView!
14   - //空白页
15   - var EmptyView: UIView!
16   -
17   - //膜板
18   - var keyWindow = UIWindow()
19   - var backBotton = UIButton()
20   - //日历
21   - var calendar = CalendarView()
22   -
23   -// var dateAry:(weeks:[String],days:[String]) = ([],[])
24   -
25   - override func viewDidLoad() {
26   - super.viewDidLoad()
27   -
28   - //MARK: - 空白页面
29   - EmptyView = UIView.init(frame: self.view.bounds)
30   - EmptyView.backgroundColor = UIColor.white
31   - self.EmptyView.isHidden = true
32   - let imageV = UIImageView.init(frame: CGRect.init(x: 0, y: 80, width: screenWidth, height: screenWidth))
33   - imageV.image = UIImage.init(named: "report_none_icon")
34   - imageV.contentMode = UIViewContentMode.scaleAspectFit
35   - EmptyView.addSubview(imageV)
36   - self.view.addSubview(EmptyView)
37   - let backImage = UIImage(named: "navigationBar_backgrounImage")
38   - self.navigationController?.navigationBar.setBackgroundImage(backImage, for: UIBarMetrics.default)
39   - if self.EmptyView.isHidden {
40   - //设置顶部按钮
41   - setupNavigationBar()
42   - //设置日期页面
43   - setupDateView()
44   - }
45   - }
46   - // MARK: - 设置顶部按钮
47   - func setupNavigationBar(){
48   - self.configTheme()
49   - setuptitleView()
50   - }
51   - func setuptitleView(){
52   -
53   - //左按钮
54   - let leftView = UIButton.init(frame: CGRect.init(x: 0, y: 0, width: 80, height: 44))
55   - let titleLab = UILabel.init(frame: CGRect.init(x: 0, y: 0, width: 60, height: 44))
56   - if AccountManager.shared.isOnline() {
57   - if AccountManager.shared.rawUserInfo!.contentData()["studentClass"].arrayValue.count == 0 {
58   - titleLab.text = "未绑定"
59   - }else{
60   - titleLab.text = AccountManager.shared.rawUserInfo!.contentData()["studentClass"][0]["studentName"].stringValue
61   - }
62   - }else{
63   - titleLab.text = "未登录"
64   - }
65   - leftView.addSubview(titleLab)
66   -
67   - let imageView = UIImageView.init(frame: CGRect.init(x: 60, y: 11, width: 20, height: 22))
68   - imageView.image = UIImage.init(named: "report_pull")
69   - imageView.contentMode = .scaleAspectFit
70   - leftView.addSubview(imageView)
71   -
72   - leftView.addTarget(self, action: #selector(showView), for: UIControlEvents.touchDown)
73   -
74   - let leftBtn = UIBarButtonItem.init(customView: leftView)
75   - self.navigationItem.leftBarButtonItem = leftBtn
76   -
77   - //右按钮
78   - let rightView = UIButton.init(frame: CGRect.init(x: 0, y: 0, width: 80, height: 44))
79   - let titleRLab = UILabel.init(frame: CGRect.init(x: 0, y: 0, width: 50, height: 44))
80   - titleRLab.text = "筛选"
81   - titleRLab.textAlignment = .right
82   - rightView.addSubview(titleRLab)
83   -
84   - let imageRView = UIImageView.init(frame: CGRect.init(x: 60, y: 11, width: 20, height: 22))
85   - imageRView.image = UIImage.init(named: "report_select")
86   - imageRView.contentMode = .scaleAspectFit
87   - rightView.addSubview(imageRView)
88   -
89   - rightView.addTarget(self, action: #selector(showView), for: UIControlEvents.touchDown)
90   - let rightBtn = UIBarButtonItem.init(customView: rightView)
91   - self.navigationItem.rightBarButtonItem = rightBtn
92   -
93   - }
94   - // MARK: - 设置日期页面
95   - func setupDateView(){
96   -
97   - let headView = UIView.init(frame: CGRect.init(x: 0, y: 0, width: screenWidth, height: 60))
98   - self.view.addSubview(headView)
99   -
100   - //添加手势
101   - let recognizer = UISwipeGestureRecognizer.init(target: self, action: #selector(showView))
102   - recognizer.direction = UISwipeGestureRecognizerDirection.down
103   - headView.addGestureRecognizer(recognizer)
104   -
105   - calendar = CalendarView.init(frame: CGRect.init(x: 0, y: 30, width: screenWidth, height: 260))
106   - }
107   -
108   - @objc func showView(){
109   - keyWindow = UIApplication.shared.keyWindow!
110   - let backBtn = UIButton.init(frame: CGRect.init(x: 0, y: calendar.frame.origin.y+260+22, width: screenWidth, height: screenHeight))
111   - backBtn.backgroundColor = UIColor.black
112   - backBtn.alpha = 0.4
113   -
114   - backBtn.addTarget(self, action: #selector(closeView(btn:)), for: UIControlEvents.allEvents)
115   - reportTable.isUserInteractionEnabled = false
116   -
117   - keyWindow.addSubview(backBtn)
118   - keyWindow.addSubview(calendar)
119   - calendar.isHidden = false
120   - }
121   - @objc func closeView(btn:UIButton) {
122   -
123   - reportTable.isUserInteractionEnabled = true
124   - UIView.animate(withDuration: 0.3) {
125   - btn.removeFromSuperview()
126   - self.calendar.isHidden = true
127   - }
128   - }
129   -
130   - // MARK: - 页面将要显示时替换navigation的titleView
131   - override func viewWillAppear(_ animated: Bool) {
132   - super.viewWillAppear(animated)
133   - }
134   - override func viewWillDisappear(_ animated: Bool) {
135   - super.viewWillDisappear(animated)
136   - }
137   - override func viewDidLayoutSubviews() {
138   - super.viewDidLayoutSubviews()
139   - if titleView != nil {
140   - titleView.frame = CGRect(x: 0, y: 0, width: screenWidth, height: 44)
141   - }
142   - }
143   - override func didReceiveMemoryWarning() {
144   - super.didReceiveMemoryWarning()
145   - }
146   -
147   -
148   -}
149   -// MARK: - 点击顶部titleView按钮的代理方法
150   -//extension ReportViewController: ReportHeaderViewDelegate{
151   -// //点击孩子姓名
152   -// func selectStudentButton() {
153   -// appDelegate.window!.makeToast("该功能暂不开放", duration: 1, position: CSToastPositionCenter)
154   -// return
155   -// //如果家长未绑定孩子
156   -// if AccountManager.shared.isOnline() {
157   -// if AccountManager.shared.rawUserInfo!.contentData()["studentClass"].arrayValue.count == 0 {
158   -// appDelegate.window!.makeToast("请先绑定孩子", duration: 1, position: CSToastPositionCenter)
159   -// }else{
160   -// //切换孩子
161   -// let alert = UIAlertController(title: "切换孩子", message: "", preferredStyle: UIAlertControllerStyle.actionSheet)
162   -// for item in AccountManager.shared.rawUserInfo!.contentData()["studentClass"].arrayValue {
163   -// let action = UIAlertAction(title: item["studentName"].stringValue, style: UIAlertActionStyle.default, handler: { (action) in
164   -// //选择完孩子切换数据
165   -// })
166   -// alert.addAction(action)
167   -// }
168   -// self.present(alert, animated: true, completion: nil)
169   -// }
170   -// }else{
171   -// appDelegate.window!.makeToast("请先登录", duration: 1, position: CSToastPositionCenter)
172   -// }
173   -// }
174   -// //点击日期
175   -// func selectDateButton() {
176   -//
177   -// appDelegate.window!.makeToast("该功能暂不开放", duration: 1, position: CSToastPositionCenter)
178   -// return
179   -// }
180   -// //点击筛选
181   -// func selectTypeButton() {
182   -// appDelegate.window!.makeToast("该功能暂不开放", duration: 1, position: CSToastPositionCenter)
183   -// return
184   -// }
185   -//}
186   -//// MARK: - 顶部展示日期
187   -//extension ReportViewController: UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout {
188   -// func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
189   -// return CGSize(width: getScreenWidth()/7, height: getScreenWidth()/7)
190   -// }
191   -// func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
192   -// return 0
193   -// }
194   -//
195   -// func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
196   -// let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ReportDateCollectionViewCell", for: indexPath) as! ReportDateCollectionViewCell
197   -// cell.setupWithDate(week: dateAry.weeks[indexPath.row], date: dateAry.days[indexPath.row])
198   -// return cell
199   -// }
200   -//
201   -//
202   -//}
203   -// MARK: - 作业报告列表
204   -extension ReportViewController: UITableViewDelegate,UITableViewDataSource{
205   - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
206   - return 5
207   - }
208   -
209   - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
210   -
211   - if indexPath.row == 0 {
212   - let cell = tableView.dequeueReusableCell(withIdentifier: "MoralTableViewCell", for: indexPath) as! MoralTableViewCell
213   - return cell
214   - }else{
215   - let cell = tableView.dequeueReusableCell(withIdentifier: "TaskPresentationTableViewCell", for: indexPath) as! TaskPresentationTableViewCell
216   - return cell
217   - }
218   - }
219   - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
220   - return 280
221   - }
222   -
223   -}
ParentAssistant/ParentAssistant/Classes/controllers/report/SceneDetailViewController.swift
... ... @@ -1,76 +0,0 @@
1   -//
2   -// SceneDetailViewController.swift
3   -// ParentAssistant
4   -//
5   -// Created by Cao yang on 2018/3/22.
6   -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
7   -//
8   -
9   -import UIKit
10   -
11   -class SceneDetailViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {
12   -
13   - @IBOutlet weak var sceneTableView: UITableView!
14   - override func viewDidLoad() {
15   - super.viewDidLoad()
16   - self.title = "场景详情"
17   - sceneTableView.delegate = self
18   - sceneTableView.dataSource = self
19   - // Do any additional setup after loading the view.
20   - }
21   - func numberOfSections(in tableView: UITableView) -> Int {
22   - return 3
23   - }
24   - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
25   - if section == 2 {
26   - return 5
27   - }
28   - return 1
29   - }
30   - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
31   -
32   - switch indexPath.section {
33   - case 0:
34   - return 240
35   - case 1:
36   - return 250
37   - case 2:
38   - return 70
39   - default:
40   - return 0
41   - }
42   - }
43   - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
44   - var cell = UITableViewCell.init()
45   - switch indexPath.section {
46   - case 0:
47   - cell = tableView.dequeueReusableCell(withIdentifier: "cultureCell", for: indexPath) as! SceneTopCell
48   - return cell
49   - case 1:
50   - cell = tableView.dequeueReusableCell(withIdentifier: "scoreCell", for: indexPath) as! SceneMiddleCell
51   - return cell
52   - case 2:
53   - cell = tableView.dequeueReusableCell(withIdentifier: "disciplineCell", for: indexPath) as! SceneDownCell
54   - return cell
55   - default:
56   - return cell
57   - }
58   - }
59   -
60   - override func didReceiveMemoryWarning() {
61   - super.didReceiveMemoryWarning()
62   - // Dispose of any resources that can be recreated.
63   - }
64   -
65   -
66   - /*
67   - // MARK: - Navigation
68   -
69   - // In a storyboard-based application, you will often want to do a little preparation before navigation
70   - override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
71   - // Get the new view controller using segue.destinationViewController.
72   - // Pass the selected object to the new view controller.
73   - }
74   - */
75   -
76   -}
ParentAssistant/ParentAssistant/Classes/controllers/report/View/BehaviorDetailCell.swift
... ... @@ -1,24 +0,0 @@
1   -//
2   -// BehaviorDetailCell.swift
3   -// ParentAssistant
4   -//
5   -// Created by Cao yang on 2018/3/23.
6   -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
7   -//
8   -
9   -import UIKit
10   -
11   -class BehaviorDetailCell: UITableViewCell {
12   -
13   - override func awakeFromNib() {
14   - super.awakeFromNib()
15   - // Initialization code
16   - }
17   -
18   - override func setSelected(_ selected: Bool, animated: Bool) {
19   - super.setSelected(selected, animated: animated)
20   -
21   - // Configure the view for the selected state
22   - }
23   -
24   -}
ParentAssistant/ParentAssistant/Classes/controllers/report/View/CalendarView.swift
... ... @@ -1,72 +0,0 @@
1   -//
2   -// CalendarView.swift
3   -// ParentAssistant
4   -//
5   -// Created by Cao yang on 2018/3/27.
6   -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
7   -//
8   -
9   -import UIKit
10   -
11   -class CalendarView: UIView,UICollectionViewDelegate,UICollectionViewDataSource {
12   -
13   -
14   - var weekLab = ["日","一","二","三","四","五","六"]
15   -
16   - override init(frame: CGRect) {
17   - super.init(frame: frame)
18   - self.drawCalendarView(frame: frame)
19   - }
20   -
21   - func drawCalendarView(frame:CGRect) {
22   - //TODO: 数据源待完成
23   - let dayLab = ["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"]
24   - weekLab.append(contentsOf: dayLab)
25   - //设置layout
26   - let flowlayout = UICollectionViewFlowLayout()
27   - flowlayout.itemSize = CGSize.init(width: screenWidth/7, height:40)
28   - flowlayout.minimumLineSpacing = 0
29   - flowlayout.minimumInteritemSpacing = 0
30   - flowlayout.headerReferenceSize = CGSize.init(width: 0, height: 0)
31   - flowlayout.footerReferenceSize = CGSize.init(width: 0, height: 0)
32   - flowlayout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0)
33   -
34   - let calendarView = UICollectionView.init(frame: frame, collectionViewLayout: flowlayout)
35   - calendarView.delegate = self
36   - calendarView.dataSource = self
37   - calendarView.backgroundColor = UIColor.white
38   - calendarView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "calendarCell")
39   - self.addSubview(calendarView)
40   - }
41   -
42   - //MARK: - Delegate
43   - func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
44   - return weekLab.count
45   - }
46   -
47   - func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
48   -
49   - let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "calendarCell", for: indexPath)
50   - let lab = UILabel.init(frame: cell.bounds)
51   - lab.text = weekLab[indexPath.row]
52   - lab.textAlignment = .center
53   - cell.addSubview(lab)
54   - return cell
55   -
56   - }
57   - func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
58   - print("点击了 第 \(weekLab[indexPath.row])")
59   - }
60   - required init?(coder aDecoder: NSCoder) {
61   - fatalError("init(coder:) has not been implemented")
62   - }
63   -
64   - /*
65   - // Only override draw() if you perform custom drawing.
66   - // An empty implementation adversely affects performance during animation.
67   - override func draw(_ rect: CGRect) {
68   - // Drawing code
69   - }
70   - */
71   -
72   -}
ParentAssistant/ParentAssistant/Classes/controllers/report/View/EducationDetailCell.swift
... ... @@ -1,43 +0,0 @@
1   -//
2   -// EducationDetailCell.swift
3   -// ParentAssistant
4   -//
5   -// Created by Cao yang on 2018/3/23.
6   -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
7   -//
8   -
9   -import UIKit
10   -
11   -class EducationDetailCell: UITableViewCell {
12   -
13   - @IBOutlet weak var lineChartView: UIView!
14   -
15   - var customLineChart = LineChartView()
16   -
17   - override func awakeFromNib() {
18   - super.awakeFromNib()
19   - let rect = self.lineChartView.bounds
20   - print(rect)
21   - customLineChart = LineChartView.init(frame: rect)
22   - customLineChart.drawUI(xLableArr: nil)
23   - let arr1 = [4,4,2,1,3]
24   - let arr2 = [2,1,4,4,5]
25   -
26   - customLineChart.drawLine(point: arr1, color: UIColorWithRGB(R: 65, G: 105, B: 190))
27   - customLineChart.drawLine(point: arr2, color: UIColorWithRGB(R: 220, G: 0, B: 16))
28   -
29   -
30   -
31   - self.lineChartView.addSubview(customLineChart)
32   -
33   -
34   - // Initialization code
35   - }
36   -
37   - override func setSelected(_ selected: Bool, animated: Bool) {
38   - super.setSelected(selected, animated: animated)
39   -
40   - // Configure the view for the selected state
41   - }
42   -
43   -}
ParentAssistant/ParentAssistant/Classes/controllers/report/View/LineChartView.swift
... ... @@ -1,220 +0,0 @@
1   -//
2   -// LineChartView.swift
3   -// ParentAssistant
4   -//
5   -// Created by Cao yang on 2018/3/23.
6   -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
7   -//
8   -
9   -import UIKit
10   -
11   -class LineChartView: UIView {
12   -
13   - //默认横坐标
14   - private var xLabArr = ["行为","文明","课堂","作业","礼仪"]
15   - //设置纵坐标
16   - private let yCount = 6
17   - //横坐标个数
18   - private let xCount = 5
19   - //最大绩点分数
20   - private let GPA = 5
21   - //储存横纵坐标,画线用
22   - private var xCenterArr = Array<CGFloat>()
23   - private var yCenterArr = Array<CGFloat>()
24   - //判断是否重复点击
25   - private var btnTouch = 10
26   - //虚线
27   - private let lineLayer = CAShapeLayer()
28   - //横坐标下划线
29   - private let xMoveLayer = CAShapeLayer()
30   - //纵坐标Lab数组
31   - private var yMoveLaArr = Array<UILabel>()
32   - //折线图数据数组
33   - private var dateArr = Array<Array<Int>>()
34   - //显示的数字
35   - var yLabArray = Array<UILabel>()
36   -
37   - override init(frame: CGRect) {
38   - super.init(frame: frame)
39   - print("frame==\(frame)")
40   -
41   - }
42   - func drawUI(xLableArr:Array<String>?){
43   -
44   - if xLableArr != nil {
45   - xLabArr = xLableArr!
46   - }
47   - drawX()
48   - drawY()
49   - }
50   - //设置纵坐标
51   - private func drawY() {
52   -
53   - let yHeight = (self.bounds.height-60)/CGFloat(yCount)
54   - for index in 0..<yCount{
55   - let yLab = UILabel.init(frame: CGRect.init(x: 10, y: CGFloat(index)*yHeight, width: 20, height: 20))
56   - yLab.text = "\(GPA-index)"
57   - yLab.textColor = UIColorWithRGB(R: 119, G: 119, B: 119)
58   - yLab.font = UIFont.systemFont(ofSize: 14)
59   - self.addSubview(yLab)
60   -
61   - let lineLab = UILabel.init(frame: CGRect.init(x: 30, y: yLab.center.y, width: screenWidth-60, height: 0.4))
62   - lineLab.backgroundColor = UIColorWithRGB(R: 190, G: 190, B: 190)
63   - self.addSubview(lineLab)
64   -
65   - yMoveLaArr.append(yLab)
66   - yCenterArr.append(yLab.frame.origin.y+10)
67   - }
68   - }
69   - //设置横坐标
70   - private func drawX() {
71   - let xWidth = (screenWidth-20)/CGFloat(yCount)
72   - for index in 0..<xCount {
73   - let nameBtn = UIButton.init(frame: CGRect.init(x: xWidth+CGFloat(index)*xWidth, y: self.bounds.height-70, width: 40, height: 25))
74   - nameBtn.setTitle(xLabArr[index], for: UIControlState.normal)
75   - nameBtn.setTitleColor(UIColorWithRGB(R: 119, G: 119, B: 119), for: UIControlState.normal)
76   - nameBtn.titleLabel!.textAlignment = .center
77   - nameBtn.titleLabel!.font = UIFont.systemFont(ofSize: 13)
78   -// nameBtn.backgroundColor = UIColor.orange
79   - nameBtn.tag = index
80   - self.addSubview(nameBtn)
81   -
82   - nameBtn.addTarget(self, action: #selector(touchXAction(tap:)), for: UIControlEvents.touchUpInside)
83   -
84   - xCenterArr.append(nameBtn.frame.origin.x+20)
85   - }
86   - }
87   -
88   - //MARK: - 画折线
89   - func drawLine(point:Array<Int>,color:UIColor){
90   -
91   - let pointArr = swichPoint(arr: point)
92   -
93   - let drawLayer = DrawLayer()
94   - drawLayer.xPointArr = xCenterArr
95   - drawLayer.yPointArr = [yCenterArr[pointArr[0]],yCenterArr[pointArr[1]],yCenterArr[pointArr[2]],yCenterArr[pointArr[3]],yCenterArr[pointArr[4]]]
96   - drawLayer.bounds = self.bounds
97   - drawLayer.position = self.center
98   - drawLayer.lineColor = color
99   - self.layer.addSublayer(drawLayer)
100   - drawLayer.setNeedsDisplay()
101   -
102   - dateArr.append(point)
103   -
104   - }
105   - //MARK: - 点击横坐标
106   - @objc func touchXAction(tap:UIButton){
107   -
108   - let index = tap.tag
109   -
110   -
111   - if btnTouch != index {
112   -
113   - //竖虚线
114   - lineLayer.strokeColor = UIColorWithRGB(R: 92, G: 145, B: 230).cgColor
115   - lineLayer.lineWidth = 1
116   - let arr = [5,5]
117   - lineLayer.lineDashPhase = 0
118   - lineLayer.lineDashPattern = arr as [NSNumber]
119   - self.layer.addSublayer(lineLayer)
120   -
121   - //X轴下划线
122   - let movePath = CGMutablePath()
123   - movePath.move(to: CGPoint.init(x: xCenterArr[index], y: yCenterArr[0]))
124   - movePath.addLine(to: CGPoint.init(x: xCenterArr[index], y: 10+5*(self.bounds.height-60)/CGFloat(yCount)))
125   - lineLayer.path = movePath
126   -
127   - xMoveLayer.strokeColor = UIColorWithRGB(R: 92, G: 145, B: 230).cgColor
128   - xMoveLayer.lineWidth = 2
129   - self.layer.addSublayer(xMoveLayer)
130   - let movePath2 = CGMutablePath()
131   - movePath2.move(to: CGPoint.init(x: xCenterArr[index]-15, y: self.bounds.height-45))
132   - movePath2.addLine(to: CGPoint.init(x: xCenterArr[index]+15, y: self.bounds.height-45))
133   - xMoveLayer.path = movePath2
134   -
135   - if yLabArray.count == dateArr.count {
136   - for label in yLabArray {
137   - label.removeFromSuperview()
138   - }
139   - }
140   - yLabArray.removeAll()
141   - //数字显示
142   - for i in 0..<dateArr.count {
143   - let arr = dateArr[i]
144   - //y坐标数值
145   - let y = arr[index]
146   - let yLab = yMoveLaArr[GPA-y]
147   - var rect = yLab.frame
148   - rect.origin.x = xCenterArr[index]+10
149   -
150   - let newLab = UILabel()
151   - newLab.text = yLab.text
152   - newLab.textColor = yLab.textColor
153   - newLab.font = yLab.font
154   - newLab.frame = rect
155   - self.addSubview(newLab)
156   - yLabArray.append(newLab)
157   - }
158   - }else{
159   - print(yLabArray)
160   - }
161   - btnTouch = index
162   -
163   -
164   - }
165   - //转换y坐标
166   - func swichPoint(arr:Array<Int>)->Array<Int>{
167   - var array = Array<Int>()
168   - for index in 0..<arr.count {
169   - let value = GPA - arr[index]
170   - array.append(value)
171   - }
172   - return array
173   - }
174   -
175   - required init?(coder aDecoder: NSCoder) {
176   - fatalError("init(coder:) has not been implemented")
177   - }
178   -
179   - /*
180   - // Only override draw() if you perform custom drawing.
181   - // An empty implementation adversely affects performance during animation.
182   - override func draw(_ rect: CGRect) {
183   - // Drawing code
184   - }
185   - */
186   -
187   -}
188   -
189   -class DrawLayer: CALayer {
190   -
191   - var yPointArr = Array<CGFloat>()
192   - var xPointArr = Array<CGFloat>()
193   - var lineColor = UIColor()
194   -
195   - override func draw(in ctx: CGContext) {
196   -
197   - let context = ctx
198   - //点
199   - context.setFillColor(lineColor.cgColor)
200   -
201   - for i in 0..<xPointArr.count {
202   - context.fillEllipse(in: CGRect.init(x: xPointArr[i]-5, y: yPointArr[i]-5, width: 10, height: 10))
203   -
204   - }
205   - //折线
206   - context.setStrokeColor(lineColor.cgColor)
207   - context.setLineWidth(1.5)
208   - for i in 0..<xPointArr.count {
209   - if i == 0 {
210   - context.move(to: CGPoint.init(x: xPointArr[0] , y: yPointArr[0]))
211   - }else{
212   - context.addLine(to: CGPoint.init(x: xPointArr[i] , y: yPointArr[i]))
213   - }
214   - }
215   - context.strokePath()
216   - }
217   -
218   -}
219   -
220   -
ParentAssistant/ParentAssistant/Classes/controllers/report/View/MoralDetailCell.swift
... ... @@ -1,32 +0,0 @@
1   -//
2   -// MoralDetailCell.swift
3   -// ParentAssistant
4   -//
5   -// Created by Cao yang on 2018/3/23.
6   -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
7   -//
8   -
9   -import UIKit
10   -
11   -class MoralDetailCell: UITableViewCell {
12   -
13   - @IBOutlet weak var dateLab: UILabel!
14   - @IBOutlet weak var pointLab: UILabel!
15   - @IBOutlet weak var rankingLab: UILabel!
16   - @IBOutlet weak var risingLab: UILabel!
17   - @IBOutlet weak var risingRightLab: UILabel!
18   - @IBOutlet weak var averageLab: UILabel!
19   - @IBOutlet weak var averageRightLab: UILabel!
20   - @IBOutlet weak var evaluationLab: UILabel!
21   - override func awakeFromNib() {
22   - super.awakeFromNib()
23   - // Initialization code
24   - }
25   -
26   - override func setSelected(_ selected: Bool, animated: Bool) {
27   - super.setSelected(selected, animated: animated)
28   -
29   - // Configure the view for the selected state
30   - }
31   -
32   -}
ParentAssistant/ParentAssistant/Classes/controllers/report/View/MoralTableViewCell.swift
... ... @@ -1,30 +0,0 @@
1   -//
2   -// MoralTableViewCell.swift
3   -// ParentAssistant
4   -//
5   -// Created by Cao yang on 2018/3/22.
6   -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
7   -//
8   -
9   -import UIKit
10   -
11   -class MoralTableViewCell: UITableViewCell {
12   -
13   - @IBOutlet weak var pointLab: UILabel!
14   - @IBOutlet weak var todayReName: UILabel!
15   - @IBOutlet weak var rankingLab: UILabel!
16   - @IBOutlet weak var evaluateLab: UILabel!
17   - @IBOutlet weak var rankStatusLab: UILabel!
18   - @IBOutlet weak var reportDateLab: UILabel!
19   - override func awakeFromNib() {
20   - super.awakeFromNib()
21   - // Initialization code
22   - }
23   -
24   - override func setSelected(_ selected: Bool, animated: Bool) {
25   - super.setSelected(selected, animated: animated)
26   -
27   - // Configure the view for the selected state
28   - }
29   -
30   -}
ParentAssistant/ParentAssistant/Classes/controllers/report/View/ReportDateCollectionViewCell.swift
... ... @@ -1,21 +0,0 @@
1   -//
2   -// ReportDateCollectionViewCell.swift
3   -// ParentAssistant
4   -//
5   -// Created by 葛建军 on 2018/3/9.
6   -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
7   -//
8   -
9   -import UIKit
10   -class ReportDateCollectionViewCell: UICollectionViewCell {
11   - @IBOutlet var weekLabel: UILabel!
12   - @IBOutlet var dateLabel: UILabel!
13   - func setupWithDate(week:String,date:String){
14   - weekLabel.text = week
15   - dateLabel.text = date
16   -
17   -
18   -
19   - }
20   -
21   -}
ParentAssistant/ParentAssistant/Classes/controllers/report/View/ReportHeaderView.swift
... ... @@ -1,48 +0,0 @@
1   -//
2   -// ReportHeaderView.swift
3   -// ParentAssistant
4   -//
5   -// Created by 葛建军 on 2018/3/8.
6   -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
7   -//
8   -
9   -import UIKit
10   -
11   -class ReportHeaderView: UIView {
12   - var delegate:ReportHeaderViewDelegate!
13   - @IBOutlet var nameButton: UIButton!//学生名字按钮
14   - @IBOutlet var dateButton: UIButton!//日期按钮
15   - @IBOutlet var typeButton: UIButton!//筛选按钮
16   - override func awakeFromNib() {
17   - super.awakeFromNib()
18   - }
19   - override func layoutSubviews() {
20   - super.layoutSubviews()
21   - nameButton.frame.origin = CGPoint(x: 15, y: 7)
22   - dateButton.frame.origin = CGPoint(x: (getScreenWidth()-dateButton.frame.size.width)/2, y: 7)
23   - typeButton.frame.origin = CGPoint(x: getScreenWidth()-typeButton.frame.size.width-30, y: 7)
24   - }
25   - //点击学生姓名按钮
26   - @IBAction func changeStudentAction(_ sender: UIButton) {
27   - delegate.selectStudentButton()
28   - }
29   - //点击日期按钮
30   - @IBAction func changeDateAction(_ sender: UIButton) {
31   - delegate.selectDateButton()
32   - }
33   - //点击筛选按钮
34   - @IBAction func changeTypeAction(_ sender: UIButton) {
35   - delegate.selectTypeButton()
36   - }
37   -
38   -}
39   -protocol ReportHeaderViewDelegate {
40   - func selectStudentButton()
41   - func selectDateButton()
42   - func selectTypeButton()
43   -}
44   -extension ReportHeaderView {
45   - class func titleView() -> ReportHeaderView {
46   - return Bundle.main.loadNibNamed("ReportHeaderView", owner: nil, options: nil)?.first as! ReportHeaderView
47   - }
48   -}
ParentAssistant/ParentAssistant/Classes/controllers/report/View/ReportHeaderView.xib
... ... @@ -1,61 +0,0 @@
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
3   - <device id="retina4_7" orientation="portrait">
4   - <adaptation id="fullscreen"/>
5   - </device>
6   - <dependencies>
7   - <deployment identifier="iOS"/>
8   - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
9   - <capability name="Safe area layout guides" minToolsVersion="9.0"/>
10   - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
11   - </dependencies>
12   - <objects>
13   - <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
14   - <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
15   - <view clipsSubviews="YES" contentMode="scaleToFill" id="4WE-cx-977" customClass="ReportHeaderView" customModule="ParentAssistant" customModuleProvider="target">
16   - <rect key="frame" x="0.0" y="0.0" width="485" height="44"/>
17   - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
18   - <subviews>
19   - <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="W6e-VK-JCE">
20   - <rect key="frame" x="20" y="7" width="46" height="30"/>
21   - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
22   - <state key="normal" title="马伯骞">
23   - <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
24   - </state>
25   - <connections>
26   - <action selector="changeStudentAction:" destination="4WE-cx-977" eventType="touchUpInside" id="Dua-XZ-hMB"/>
27   - </connections>
28   - </button>
29   - <button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5Dq-Z9-eEM">
30   - <rect key="frame" x="434" y="7" width="31" height="30"/>
31   - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
32   - <state key="normal" title="筛选">
33   - <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
34   - </state>
35   - <connections>
36   - <action selector="changeTypeAction:" destination="4WE-cx-977" eventType="touchUpInside" id="XFz-ca-od2"/>
37   - </connections>
38   - </button>
39   - <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7xY-bD-L7w">
40   - <rect key="frame" x="191" y="7" width="102" height="30"/>
41   - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
42   - <state key="normal" title="12月29日">
43   - <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
44   - </state>
45   - <connections>
46   - <action selector="changeDateAction:" destination="4WE-cx-977" eventType="touchUpInside" id="pCF-3R-0zv"/>
47   - </connections>
48   - </button>
49   - </subviews>
50   - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
51   - <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
52   - <viewLayoutGuide key="safeArea" id="71B-FS-Ws9"/>
53   - <connections>
54   - <outlet property="dateButton" destination="7xY-bD-L7w" id="3zG-4z-eNW"/>
55   - <outlet property="nameButton" destination="W6e-VK-JCE" id="XDD-iU-T0k"/>
56   - <outlet property="typeButton" destination="5Dq-Z9-eEM" id="LAM-Dw-HAX"/>
57   - </connections>
58   - <point key="canvasLocation" x="156.5" y="93"/>
59   - </view>
60   - </objects>
61   -</document>
ParentAssistant/ParentAssistant/Classes/controllers/report/View/SceneDownCell.swift
... ... @@ -1,30 +0,0 @@
1   -//
2   -// SceneDownCell.swift
3   -// ParentAssistant
4   -//
5   -// Created by Cao yang on 2018/3/24.
6   -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
7   -//
8   -
9   -import UIKit
10   -
11   -class SceneDownCell: UITableViewCell {
12   -
13   - @IBOutlet weak var evaluateLab: UILabel!
14   - @IBOutlet weak var sceneLab: UILabel!
15   - @IBOutlet weak var scoreLab: UILabel!
16   - @IBOutlet weak var nameLab: UILabel!
17   - @IBOutlet weak var classLab: UILabel!
18   - @IBOutlet weak var dateLab: UILabel!
19   - override func awakeFromNib() {
20   - super.awakeFromNib()
21   - // Initialization code
22   - }
23   -
24   - override func setSelected(_ selected: Bool, animated: Bool) {
25   - super.setSelected(selected, animated: animated)
26   -
27   - // Configure the view for the selected state
28   - }
29   -
30   -}
ParentAssistant/ParentAssistant/Classes/controllers/report/View/SceneMiddleCell.swift
... ... @@ -1,44 +0,0 @@
1   -//
2   -// SceneMiddleCell.swift
3   -// ParentAssistant
4   -//
5   -// Created by Cao yang on 2018/3/24.
6   -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
7   -//
8   -
9   -import UIKit
10   -
11   -class SceneMiddleCell: UITableViewCell {
12   -
13   - @IBOutlet weak var lineChartView: UIView!
14   -
15   - var customLineChart = LineChartView()
16   - override func awakeFromNib() {
17   - super.awakeFromNib()
18   - // Initialization code
19   - let rect = self.lineChartView.bounds
20   - customLineChart = LineChartView.init(frame: rect)
21   - let customXLabArr = ["03/12","03/13","03/14","03/15","03/16"]
22   -
23   - customLineChart.drawUI(xLableArr:customXLabArr)
24   -
25   - let arr1 = [5,4,5,5,5]
26   - let arr2 = [4,4,2,1,3]
27   - let arr3 = [3,3,4,3,4]
28   -
29   -
30   - customLineChart.drawLine(point: arr1, color: UIColorWithRGB(R: 129, G: 199, B: 132))
31   - customLineChart.drawLine(point: arr2, color: UIColorWithRGB(R: 92, G: 145, B: 230))
32   - customLineChart.drawLine(point: arr3, color: UIColorWithRGB(R: 255, G: 213, B: 79))
33   -
34   - self.lineChartView.addSubview(customLineChart)
35   -
36   - }
37   -
38   - override func setSelected(_ selected: Bool, animated: Bool) {
39   - super.setSelected(selected, animated: animated)
40   -
41   - // Configure the view for the selected state
42   - }
43   -
44   -}
ParentAssistant/ParentAssistant/Classes/controllers/report/View/SceneTopCell.swift
... ... @@ -1,28 +0,0 @@
1   -//
2   -// SceneTopCell.swift
3   -// ParentAssistant
4   -//
5   -// Created by Cao yang on 2018/3/24.
6   -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
7   -//
8   -
9   -import UIKit
10   -
11   -class SceneTopCell: UITableViewCell {
12   -
13   - @IBOutlet weak var scoreLab: UILabel! //得分
14   - @IBOutlet weak var GPALab: UILabel! //绩点
15   - @IBOutlet weak var LevelLab: UILabel! //等级
16   - @IBOutlet weak var SuggestLab: UITextView! //指导意见
17   - override func awakeFromNib() {
18   - super.awakeFromNib()
19   - // Initialization code
20   - }
21   -
22   - override func setSelected(_ selected: Bool, animated: Bool) {
23   - super.setSelected(selected, animated: animated)
24   -
25   - // Configure the view for the selected state
26   - }
27   -
28   -}
ParentAssistant/ParentAssistant/Classes/controllers/report/View/TaskPresentationTableViewCell.swift
... ... @@ -1,82 +0,0 @@
1   -//
2   -// TaskPresentationTableViewCell.swift
3   -// ParentAssistant
4   -//
5   -// Created by 葛建军 on 2018/3/9.
6   -// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
7   -//
8   -
9   -import UIKit
10   -//func degreesToRadians(x:Double) -> CGFloat{
11   -// return (CGFloat(Double.pi*(x)/180.0))
12   -//} //把角度转换成PI的方式
13   -//let PROGREESS_WIDTH = 160 //圆直径
14   -//let PROGRESS_LINE_WIDTH = 4 //弧线的宽度
15   -class TaskPresentationTableViewCell: UITableViewCell {
16   -
17   - @IBOutlet var layerLabel: UILabel!
18   - override func awakeFromNib() {
19   - super.awakeFromNib()
20   - // Initialization code
21   - //可以画出上面所示的整个轨道。这个圆形是从-210度的角度到30度。
22   -// let path = UIBezierPath(arcCenter: CGPoint(x: 40, y: 40), radius: CGFloat((PROGREESS_WIDTH-PROGRESS_LINE_WIDTH)/2), startAngle: degreesToRadians(x: -210), endAngle: degreesToRadians(x: 30), clockwise: true)
23   - //画出一个完成的进度的背景轨道
24   -// let trackLayer = CAShapeLayer()//创建一个track shape layer
25   -// trackLayer.frame = self.layerLabel.bounds
26   -// trackLayer.fillColor = UIColor.clear.cgColor
27   -// trackLayer.strokeColor = UIColor.red.cgColor//指定path的渲染颜色
28   -// trackLayer.opacity = 0.25 //背景同学你就甘心做背景吧,不要太明显了,透明度小一点
29   -// trackLayer.lineCap = kCALineCapRound//指定线的边缘是圆的
30   -// trackLayer.lineWidth = CGFloat(PROGRESS_LINE_WIDTH)//线的宽度
31   -// trackLayer.path = path.cgPath //把path传递給layer,然后layer会处理相应的渲染,整个逻辑和CoreGraph是一致的。
32   -//
33   -// self.layerLabel.layer.addSublayer(trackLayer)
34   - //渐变进度条
35   -// let progressLayer = CAShapeLayer()
36   -// progressLayer.frame = self.layerLabel.bounds
37   -// progressLayer.fillColor = UIColor.clear.cgColor
38   -// progressLayer.strokeColor = UIColor.red.cgColor
39   -// progressLayer.lineCap = kCALineCapRound;
40   -// progressLayer.lineWidth = CGFloat(PROGRESS_LINE_WIDTH)
41   -// progressLayer.path = path.cgPath
42   -// progressLayer.strokeEnd = 50/100.0 //总进度
43   -//
44   -// let gradientLayer = CALayer()
45   -// let gradientLayer1 = CAGradientLayer()
46   -// gradientLayer1.frame = CGRect(x: 0, y: 0, width: self.layerLabel.frame.size.width/2, height: self.layerLabel.frame.size.height)
47   -// gradientLayer1.colors = [UIColor.yellow.cgColor,UIColor.blue.cgColor]
48   -// gradientLayer1.locations = [0.5,0.9,1]
49   -// gradientLayer1.startPoint = CGPoint(x: 0.5, y: 1)
50   -// gradientLayer1.endPoint = CGPoint(x: 0.5, y: 0)
51   -// gradientLayer.addSublayer(gradientLayer1)
52   -//
53   -// let gradientLayer2 = CAGradientLayer()
54   -// gradientLayer2.frame = CGRect(x: self.layerLabel.frame.size.width/2, y: 0, width: self.layerLabel.frame.size.width/2, height: self.layerLabel.frame.size.height)
55   -// gradientLayer2.colors = [UIColor.blue.cgColor,UIColor.blue.cgColor]
56   -// gradientLayer2.locations = [0.1,0.5,1]
57   -// gradientLayer2.startPoint = CGPoint(x: 0.5, y: 0)
58   -// gradientLayer2.endPoint = CGPoint(x: 0.5, y: 1)
59   -// gradientLayer.addSublayer(gradientLayer2)
60   -//
61   -// gradientLayer.mask = progressLayer//用progressLayer来截取渐变层
62   -// self.layerLabel.layer.addSublayer(gradientLayer)
63   - }
64   - //进度条效果 CAShapeLayer有一个strokeEnd的属性,这个属性是从0到1的浮点类型,正好可以用表达百分比,而且这个属性是animatable,可以动态的表示进度的变化。
65   - // -(void)setPercent:(NSInteger)percent animated:(BOOL)animated
66   - // {
67   - // [CATransaction begin];
68   - // [CATransaction setDisableActions:!animated];
69   - // [CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
70   - // [CATransaction setAnimationDuration:MAIN_SCREEN_ANIMATION_TIME];
71   - // progressLayer.strokeEnd = percent/100.0;
72   - // [CATransaction commit];
73   - //
74   - // _percent = percent;
75   - // }
76   - override func setSelected(_ selected: Bool, animated: Bool) {
77   - super.setSelected(selected, animated: animated)
78   -
79   - // Configure the view for the selected state
80   - }
81   -
82   -}
ParentAssistant/ParentAssistant/Classes/util/Macro.swift
... ... @@ -72,7 +72,7 @@ let URL_PARENTSERVICE_GETADS=&quot;/api/ParentService/GetAds&quot; //嘀
72 72  
73 73 //MARK: 遠
74 74 /// 敺瑁雿祕
75   -let URL_POST_EVALUATION_ANALYSIS = "/api/EvaluationLabel/GetStatisticalAnalysis"
  75 +let URL_POST_EVALUATION_ANALYSIS = "/api/EvaluationLabel/Getstatisticsanalytical"
76 76 /// 敺瑁霂行
77 77 let URL_POST_EVALUATION_ANALYSIS_DETAILS = "/api/EvaluationLabel/GetSceneAnalysisDetails"
78 78  
... ...
ParentAssistant/ParentAssistant/Supporting Files/Base.lproj/Main.storyboard
... ... @@ -527,16 +527,34 @@
527 527 </objects>
528 528 <point key="canvasLocation" x="54" y="117"/>
529 529 </scene>
  530 + <!--Grow View Controller-->
  531 + <scene sceneID="36g-8r-oze">
  532 + <objects>
  533 + <viewController id="K2D-OC-DRl" customClass="GrowViewController" customModule="ParentAssistant" customModuleProvider="target" sceneMemberID="viewController">
  534 + <view key="view" contentMode="scaleToFill" id="dfc-6f-RU1">
  535 + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
  536 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  537 + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
  538 + <viewLayoutGuide key="safeArea" id="xWd-cd-ncW"/>
  539 + </view>
  540 + <navigationItem key="navigationItem" id="9Fp-i1-vxh">
  541 + <nil key="title"/>
  542 + </navigationItem>
  543 + </viewController>
  544 + <placeholder placeholderIdentifier="IBFirstResponder" id="Pvf-SL-AwW" userLabel="First Responder" sceneMemberID="firstResponder"/>
  545 + </objects>
  546 + <point key="canvasLocation" x="1660" y="399"/>
  547 + </scene>
530 548 <!--报告-->
531 549 <scene sceneID="YFU-9r-YrN">
532 550 <objects>
533   - <viewController title="报告" id="oqH-t7-mJp" customClass="ReportViewController" customModule="ParentAssistant" customModuleProvider="target" sceneMemberID="viewController">
  551 + <viewController storyboardIdentifier="ReportViewController" title="报告" id="oqH-t7-mJp" customClass="ReportViewController" customModule="ParentAssistant" customModuleProvider="target" sceneMemberID="viewController">
534 552 <view key="view" contentMode="scaleToFill" id="5aI-3l-uAy">
535 553 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
536 554 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
537 555 <subviews>
538 556 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="EEs-Ae-t7U">
539   - <rect key="frame" x="0.0" y="134" width="375" height="484"/>
  557 + <rect key="frame" x="0.0" y="90" width="375" height="577"/>
540 558 <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
541 559 <prototypes>
542 560 <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" reuseIdentifier="MoralTableViewCell" rowHeight="280" id="mJ6-p0-1k0" customClass="MoralTableViewCell" customModule="ParentAssistant" customModuleProvider="target">
... ... @@ -769,14 +787,14 @@
769 787 </constraints>
770 788 <viewLayoutGuide key="safeArea" id="9O4-jf-dgu"/>
771 789 </view>
772   - <navigationItem key="navigationItem" title="报告" id="dVv-mJ-714"/>
  790 + <navigationItem key="navigationItem" id="dVv-mJ-714"/>
773 791 <connections>
774 792 <outlet property="reportTable" destination="EEs-Ae-t7U" id="WCp-ci-zOE"/>
775 793 </connections>
776 794 </viewController>
777 795 <placeholder placeholderIdentifier="IBFirstResponder" id="AdY-P5-857" userLabel="First Responder" sceneMemberID="firstResponder"/>
778 796 </objects>
779   - <point key="canvasLocation" x="1597.5999999999999" y="409.7451274362819"/>
  797 + <point key="canvasLocation" x="2463" y="399"/>
780 798 </scene>
781 799 <!--Moral View Controller-->
782 800 <scene sceneID="gZ8-jD-xe5">
... ... @@ -787,7 +805,7 @@
787 805 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
788 806 <subviews>
789 807 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="BRJ-Oe-fwH">
790   - <rect key="frame" x="0.0" y="64" width="375" height="544"/>
  808 + <rect key="frame" x="0.0" y="20" width="375" height="637"/>
791 809 <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
792 810 <prototypes>
793 811 <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="moralDetail" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" reuseIdentifier="moralDetail" rowHeight="280" id="edU-Xp-UQN" customClass="MoralDetailCell" customModule="ParentAssistant" customModuleProvider="target">
... ... @@ -1089,7 +1107,7 @@
1089 1107 </viewController>
1090 1108 <placeholder placeholderIdentifier="IBFirstResponder" id="dWZ-wh-hFd" userLabel="First Responder" sceneMemberID="firstResponder"/>
1091 1109 </objects>
1092   - <point key="canvasLocation" x="2357.5999999999999" y="409.7451274362819"/>
  1110 + <point key="canvasLocation" x="3182" y="410"/>
1093 1111 </scene>
1094 1112 <!--场景详情-->
1095 1113 <scene sceneID="UoQ-sj-mPR">
... ... @@ -1442,7 +1460,7 @@
1442 1460 </viewController>
1443 1461 <placeholder placeholderIdentifier="IBFirstResponder" id="msC-eZ-quK" userLabel="First Responder" sceneMemberID="firstResponder"/>
1444 1462 </objects>
1445   - <point key="canvasLocation" x="3093.5999999999999" y="409.7451274362819"/>
  1463 + <point key="canvasLocation" x="3826" y="410"/>
1446 1464 </scene>
1447 1465 <!--My View Controller-->
1448 1466 <scene sceneID="Mnt-Vb-tkB">
... ... @@ -1982,11 +2000,11 @@
1982 2000 </objects>
1983 2001 <point key="canvasLocation" x="913" y="-272"/>
1984 2002 </scene>
1985   - <!--报告-->
  2003 + <!--成长-->
1986 2004 <scene sceneID="ZBd-hB-qdB">
1987 2005 <objects>
1988 2006 <navigationController automaticallyAdjustsScrollViewInsets="NO" id="Yrp-0h-ncC" customClass="MainViewController" customModule="ParentAssistant" customModuleProvider="target" sceneMemberID="viewController">
1989   - <tabBarItem key="tabBarItem" title="报告" image="report_bar_icon" selectedImage="report_bar_icon_select" id="b8X-9h-Lep"/>
  2007 + <tabBarItem key="tabBarItem" title="成长" image="report_bar_icon" selectedImage="report_bar_icon_select" id="b8X-9h-Lep"/>
1990 2008 <toolbarItems/>
1991 2009 <navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="uLq-9a-RVg">
1992 2010 <rect key="frame" x="0.0" y="20" width="375" height="44"/>
... ... @@ -1997,7 +2015,7 @@
1997 2015 </navigationBar>
1998 2016 <nil name="viewControllers"/>
1999 2017 <connections>
2000   - <segue destination="oqH-t7-mJp" kind="relationship" relationship="rootViewController" id="1yc-lt-bJX"/>
  2018 + <segue destination="K2D-OC-DRl" kind="relationship" relationship="rootViewController" id="TDx-4W-K3j"/>
2001 2019 </connections>
2002 2020 </navigationController>
2003 2021 <placeholder placeholderIdentifier="IBFirstResponder" id="tga-hk-GVT" userLabel="First Responder" sceneMemberID="firstResponder"/>
... ...