Browse Source

我的评价

Steven 2 months ago
parent
commit
0010377c14
27 changed files with 1567 additions and 246 deletions
  1. 16 0
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj
  2. 5 3
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.h
  3. 7 4
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.m
  4. 93 27
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Controller/EvaluateCourseListViewController.m
  5. 5 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Controller/EvaluateDetailViewController.h
  6. 37 10
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Controller/EvaluateDetailViewController.m
  7. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Model/EvaluateDetailModel.h
  8. 7 3
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Model/EvaluateDetailModel.m
  9. 2 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Model/EvaluateListModel.h
  10. 14 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Model/EvaluateListModel.m
  11. 116 13
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateCourseBodyView.m
  12. 3 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateCouseCell.h
  13. 43 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateCouseCell.m
  14. 104 56
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateCouseCell.xib
  15. 33 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateListNavView.h
  16. 89 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateListNavView.m
  17. 143 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateListNavView.xib
  18. 18 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateReceiveBodyView.h
  19. 456 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateReceiveBodyView.m
  20. 14 5
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateSortView.h
  21. 88 15
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateSortView.m
  22. 221 53
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateSortView.xib
  23. 30 30
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/ReceiveEvaluate/Controller/ReceiveEvaluateListController.m
  24. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/ReceiveEvaluate/Model/ReceiveListModel.h
  25. 8 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/ReceiveEvaluate/Model/ReceiveListModel.m
  26. 10 20
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/ReceiveEvaluate/View/ReceiveHeaderView.xib
  27. 3 3
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/VIPProgramCreate/MineVipProgramMainView.xib

+ 16 - 0
KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj

@@ -1182,6 +1182,9 @@
 		BCF61BEC28042D1A0000ACFE /* InstrumentMessageModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF61BEB28042D1A0000ACFE /* InstrumentMessageModel.m */; };
 		BCF61BEF28042F9B0000ACFE /* InstrumentChooseBottonView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF61BEE28042F9B0000ACFE /* InstrumentChooseBottonView.m */; };
 		BCF61BF128042FA90000ACFE /* InstrumentChooseBottonView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCF61BF028042FA90000ACFE /* InstrumentChooseBottonView.xib */; };
+		BCF7485B2D156B3F00CD7EB4 /* EvaluateListNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF7485A2D156B3F00CD7EB4 /* EvaluateListNavView.m */; };
+		BCF7485D2D156B4700CD7EB4 /* EvaluateListNavView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCF7485C2D156B4700CD7EB4 /* EvaluateListNavView.xib */; };
+		BCF748602D156F4900CD7EB4 /* EvaluateReceiveBodyView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF7485F2D156F4900CD7EB4 /* EvaluateReceiveBodyView.m */; };
 		BCF7EB272C856C31006AA38C /* ScanFailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF7EB232C856C31006AA38C /* ScanFailViewController.m */; };
 		BCF7EB282C856C31006AA38C /* ScanLoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF7EB262C856C31006AA38C /* ScanLoginViewController.m */; };
 		BCF7EB322C856C53006AA38C /* ScanFailBodyView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCF7EB292C856C52006AA38C /* ScanFailBodyView.xib */; };
@@ -3176,6 +3179,11 @@
 		BCF61BED28042F9B0000ACFE /* InstrumentChooseBottonView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InstrumentChooseBottonView.h; sourceTree = "<group>"; };
 		BCF61BEE28042F9B0000ACFE /* InstrumentChooseBottonView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InstrumentChooseBottonView.m; sourceTree = "<group>"; };
 		BCF61BF028042FA90000ACFE /* InstrumentChooseBottonView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = InstrumentChooseBottonView.xib; sourceTree = "<group>"; };
+		BCF748592D156B3F00CD7EB4 /* EvaluateListNavView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EvaluateListNavView.h; sourceTree = "<group>"; };
+		BCF7485A2D156B3F00CD7EB4 /* EvaluateListNavView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EvaluateListNavView.m; sourceTree = "<group>"; };
+		BCF7485C2D156B4700CD7EB4 /* EvaluateListNavView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = EvaluateListNavView.xib; sourceTree = "<group>"; };
+		BCF7485E2D156F4900CD7EB4 /* EvaluateReceiveBodyView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EvaluateReceiveBodyView.h; sourceTree = "<group>"; };
+		BCF7485F2D156F4900CD7EB4 /* EvaluateReceiveBodyView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EvaluateReceiveBodyView.m; sourceTree = "<group>"; };
 		BCF7EB232C856C31006AA38C /* ScanFailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ScanFailViewController.m; sourceTree = "<group>"; };
 		BCF7EB242C856C31006AA38C /* ScanLoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScanLoginViewController.h; sourceTree = "<group>"; };
 		BCF7EB252C856C31006AA38C /* ScanFailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScanFailViewController.h; sourceTree = "<group>"; };
@@ -5695,8 +5703,13 @@
 		BC41103F28066E4100800BD9 /* View */ = {
 			isa = PBXGroup;
 			children = (
+				BCF748592D156B3F00CD7EB4 /* EvaluateListNavView.h */,
+				BCF7485A2D156B3F00CD7EB4 /* EvaluateListNavView.m */,
+				BCF7485C2D156B4700CD7EB4 /* EvaluateListNavView.xib */,
 				BC41104328066EF200800BD9 /* EvaluateCourseBodyView.h */,
 				BC41104428066EF200800BD9 /* EvaluateCourseBodyView.m */,
+				BCF7485E2D156F4900CD7EB4 /* EvaluateReceiveBodyView.h */,
+				BCF7485F2D156F4900CD7EB4 /* EvaluateReceiveBodyView.m */,
 				BC285831280947BA0024697C /* EvaluateSortView.h */,
 				BC285832280947BA0024697C /* EvaluateSortView.m */,
 				BC73A1F32809693F00FA8F6F /* EvaluateSortView.xib */,
@@ -8268,6 +8281,7 @@
 				BC12637E28FEB5B900509E90 /* UserDetailNavView.xib in Resources */,
 				BCC0F7052A8CF13D00C4EFA4 /* TXDanChatCell.xib in Resources */,
 				BCB9FA4F28717BBD005D766B /* MyMusicSearchView.xib in Resources */,
+				BCF7485D2D156B4700CD7EB4 /* EvaluateListNavView.xib in Resources */,
 				BCC5840A28A9FA8100BAB4CF /* cloud_animation_6.png in Resources */,
 				BC483233282A6473005F534C /* HomeRecentCourseView.xib in Resources */,
 				BCA9AC452CED91F200047BFA /* MyLiveCourseGroupListCell.xib in Resources */,
@@ -8990,6 +9004,7 @@
 				BC8DA25D2CD4BFE000D8EA32 /* KSAudioSaveAlert.m in Sources */,
 				BCA193BE282B9866004A585D /* MinePageGroupModel.m in Sources */,
 				BCB633F827F6A18200ACFDCF /* KSTipsView.m in Sources */,
+				BCF748602D156F4900CD7EB4 /* EvaluateReceiveBodyView.m in Sources */,
 				BC0A22B72847523E0065C1AB /* MemberBottomView.m in Sources */,
 				BC02BCDA28B3243F005CB483 /* LiveSeatActionView.m in Sources */,
 				BCECE21A2B3D5F0800C0D555 /* KSSortButtonView.m in Sources */,
@@ -9183,6 +9198,7 @@
 				BC332DB3284866BE005AEF95 /* KSOrderManager.m in Sources */,
 				BCB908F72850C6EF00F5FF69 /* MusicChooseCell.m in Sources */,
 				BCB633F627F6A18200ACFDCF /* LocalRenderManager.m in Sources */,
+				BCF7485B2D156B3F00CD7EB4 /* EvaluateListNavView.m in Sources */,
 				BC38C47E2AFA1F4B00ABFCC2 /* UserMusicFormalModel.m in Sources */,
 				BC38C4832AFA1F4B00ABFCC2 /* MineWorksDraftsCell.m in Sources */,
 				BC71DF0B2A89F470003F165E /* TXMainToolView.m in Sources */,

+ 5 - 3
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.h

@@ -832,13 +832,14 @@ NS_ASSUME_NONNULL_BEGIN
 /// 课后评价
 /// @param post post
 /// @param classMonth yyyy-MM
-/// @param replied 0:未评价 1:已评价
+/// @param replied 0:未评价 1:已评价 不传全部
+/// @param courseType 课程类型
 /// @param studentName 学生名称
 /// @param page 页数
 /// @param rows 条数
 /// @param success 成功
 /// @param faliure 失败
-+ (void)courseRepliedListRequest:(NSString *)post classMonth:(NSString *)classMonth replied:(NSInteger)replied studentName:(NSString *)studentName page:(NSInteger)page rows:(NSInteger)rows success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
++ (void)courseRepliedListRequest:(NSString *)post classMonth:(NSString *)classMonth replied:(NSString *)replied courseType:(NSString *)courseType studentName:(NSString *)studentName page:(NSInteger)page rows:(NSInteger)rows success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
 // /api-teacher/courseReplied/selectReplied
 
@@ -868,12 +869,13 @@ NS_ASSUME_NONNULL_BEGIN
 /// 我收到的评价
 /// @param post post
 /// @param classMonth 上课日期
+/// @param courseType 课程类型
 /// @param search search
 /// @param page 分页
 /// @param rows 条数
 /// @param success 成功
 /// @param faliure 失败
-+ (void)myReceiveRepliedRequest:(NSString *)post classMonth:(NSString *)classMonth search:(NSString *)search page:(NSInteger)page rows:(NSInteger)rows success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
++ (void)myReceiveRepliedRequest:(NSString *)post classMonth:(NSString *)classMonth courseType:(NSString *)courseType search:(NSString *)search page:(NSInteger)page rows:(NSInteger)rows success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
 #pragma mark ----- 课后作业
 // /api-teacher/homework/list

+ 7 - 4
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.m

@@ -1654,18 +1654,19 @@
 /// 课后评价
 /// @param post post
 /// @param classMonth yyyy-MM
-/// @param replied 0:未评价 1:已评价
+/// @param replied  0:未评价 1:已评价 不传就是全部
+/// @param courseType 课程类型
 /// @param studentName 学生名称
 /// @param page 页数
 /// @param rows 条数
 /// @param success 成功
 /// @param faliure 失败
-+ (void)courseRepliedListRequest:(NSString *)post classMonth:(NSString *)classMonth replied:(NSInteger)replied studentName:(NSString *)studentName page:(NSInteger)page rows:(NSInteger)rows success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
++ (void)courseRepliedListRequest:(NSString *)post classMonth:(NSString *)classMonth replied:(NSString *)replied courseType:(NSString *)courseType studentName:(NSString *)studentName page:(NSInteger)page rows:(NSInteger)rows success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
     [self configRequestMethodJSON];
     NSString *url = [NSString stringWithFormat:@"%@%@", hostURL, @"/api-teacher/courseSchedule/queryTeacherPracticeCourse"];
     NSMutableDictionary *parm = [NSMutableDictionary dictionary];
     [parm setValue:classMonth forKey:@"classMonth"];
-    [parm setValue:@(replied) forKey:@"replied"];
+    [parm setValue:replied forKey:@"replied"];
     [parm setValue:studentName forKey:@"studentName"];
     [parm setValue:@(page) forKey:@"page"];
     [parm setValue:@(rows) forKey:@"rows"];
@@ -1716,16 +1717,18 @@
 /// 我收到的评价
 /// @param post post
 /// @param classMonth 上课日期
+/// @param courseType 课程类型
 /// @param search search
 /// @param page 分页
 /// @param rows 条数
 /// @param success 成功
 /// @param faliure 失败
-+ (void) myReceiveRepliedRequest:(NSString *)post classMonth:(NSString *)classMonth search:(NSString *)search page:(NSInteger)page rows:(NSInteger)rows success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
++ (void)myReceiveRepliedRequest:(NSString *)post classMonth:(NSString *)classMonth courseType:(NSString *)courseType search:(NSString *)search page:(NSInteger)page rows:(NSInteger)rows success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
     [self configRequestMethodJSON];
     NSString *url = [NSString stringWithFormat:@"%@%@",hostURL, @"/api-teacher/courseReplied/myReplied"];
     NSMutableDictionary *parm = [NSMutableDictionary dictionary];
     [parm setValue:classMonth forKey:@"classDate"];
+    [parm setValue:courseType forKey:@"courseType"];
     [parm setValue:search forKey:@"studentName"];
     [parm setValue:@(page) forKey:@"page"];
     [parm setValue:@(rows) forKey:@"rows"];

+ 93 - 27
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Controller/EvaluateCourseListViewController.m

@@ -11,9 +11,13 @@
 #import "EvaluateCourseBodyView.h"
 #import "ReceiveEvaluateListController.h"
 #import "UserInfoManager.h"
+#import "EvaluateListNavView.h"
+#import "EvaluateReceiveBodyView.h"
 
 @interface EvaluateCourseListViewController ()<JXPagerViewDelegate, JXPagerMainTableViewGestureDelegate,JXCategoryViewDelegate>
 
+@property (nonatomic, strong) EvaluateListNavView *navView;
+
 @property (nonatomic, assign) NSInteger selectedIndex;
 
 @property (nonatomic, strong) NSMutableArray *listViewArray;
@@ -27,9 +31,9 @@
 - (void)viewDidLoad {
     [super viewDidLoad];
     // Do any additional setup after loading the view.
-    [self allocTitle:@"我的评价"];
-    [self rightButtonTitle:@"收到评价"];
-    self.titles = @[@"未评价",@"已评价"];
+    self.ks_prefersNavigationBarHidden = YES;
+
+    self.titles = @[@"",@""];
     [self setupUI];
     [self countUMEvent];
 }
@@ -38,17 +42,24 @@
     [USER_MANAGER sendUMEvent:@"klx_evaluate"];
 }
 
-- (void)rightBtnClick {
-    ReceiveEvaluateListController *ctrl = [[ReceiveEvaluateListController alloc] init];
-    [self.navigationController pushViewController:ctrl animated:YES];
-}
-
 - (void)setupUI {
-    self.headHeight = 50.0f;
     [self.scrollView removeFromSuperview];
-    self.view.backgroundColor = HexRGB(0xf8f9fc);
+    UIImage *bgImage = [UIImage imageNamed:@"homework_detail_bg"];
+    CGFloat height = bgImage.size.height / bgImage.size.width * KPortraitWidth;
+    UIImageView *imageView = [[UIImageView alloc] initWithImage:bgImage];
+    imageView.frame = CGRectMake(0, 0, KPortraitWidth, height);
+    [self.view addSubview:imageView];
     
-    _categoryView = [[JXCategoryTitleView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, self.headHeight)];
+    [self.view addSubview:self.navView];
+    CGFloat navHeight = [EvaluateListNavView getViewHeight];
+    [self.navView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.top.mas_equalTo(self.view);
+        make.height.mas_equalTo(navHeight);
+    }];
+    
+    self.headHeight = CGFLOAT_MIN;
+    
+    _categoryView = [[JXCategoryTitleView alloc] initWithFrame:CGRectMake(0, navHeight, KPortraitWidth, self.headHeight)];
     self.categoryView.titles = self.titles;
     self.categoryView.delegate = self;
     self.categoryView.titleFont = [UIFont systemFontOfSize:17.0f];
@@ -56,15 +67,10 @@
     self.categoryView.titleSelectedColor = HexRGB(0x333333);
     self.categoryView.titleColor = HexRGB(0x666666);
     self.categoryView.titleColorGradientEnabled = YES;
-    
-    JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init];
-    lineView.indicatorColor = THEMECOLOR;
-    lineView.indicatorWidth = 16;
-    lineView.indicatorHeight = 4.0f;
-    self.categoryView.indicators = @[lineView];
-    
+    self.categoryView.hidden = YES;
+
     _pagerView = [self preferredPagingView];
-    self.pagerView.frame = CGRectMake(0, 0, kScreenWidth, kScreenHeight - kNaviBarHeight - iPhoneXSafeBottomMargin);
+    self.pagerView.frame = CGRectMake(0, navHeight, KPortraitWidth, KPortraitHeight - navHeight);
     self.pagerView.backgroundColor = [UIColor clearColor];
     self.pagerView.mainTableView.backgroundColor = [UIColor clearColor];
     self.pagerView.listContainerView.backgroundColor = [UIColor clearColor];
@@ -98,6 +104,8 @@
     // 页面Disappear 启用
     [IQKeyboardManager sharedManager].enable = YES;
 }
+
+
 - (JXPagerView *)preferredPagingView {
     return [[JXPagerListRefreshView alloc] initWithDelegate:self];
 }
@@ -113,7 +121,7 @@
 }
 
 - (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
-    return self.headHeight;
+    return 1;
 }
 
 - (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
@@ -126,17 +134,31 @@
 }
 
 - (id<JXPagerViewListViewDelegate>)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index {
-    EvaluateCourseBodyView *listView = [[EvaluateCourseBodyView alloc] init];
-    listView.naviController = self.navigationController;
-    [self.listViewArray replaceObjectAtIndex:index withObject:listView];
-    self.listViewArray[index] = listView;
-    listView.selectIndex = index;
-    [listView beginFirstRefresh];
-    return listView;
+    if (index == 0) {
+        EvaluateCourseBodyView *listView = [[EvaluateCourseBodyView alloc] init];
+        listView.naviController = self.navigationController;
+        [self.listViewArray replaceObjectAtIndex:index withObject:listView];
+        self.listViewArray[index] = listView;
+        listView.selectIndex = index;
+        [listView beginFirstRefresh];
+        return listView;
+    }
+    else {
+        EvaluateReceiveBodyView *listView = [[EvaluateReceiveBodyView alloc] init];
+        listView.naviController = self.navigationController;
+        [self.listViewArray replaceObjectAtIndex:index withObject:listView];
+        self.listViewArray[index] = listView;
+        listView.selectIndex = index;
+        [listView beginFirstRefresh];
+        return listView;
+    }
+    
 }
 
 #pragma mark - JXCategoryViewDelegate
 - (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index {
+    [self changeSegIndex:index];
+    self.selectedIndex = index;
     self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0);
     if (self.listViewArray.count > index) {
         id value = self.listViewArray[index];
@@ -165,6 +187,50 @@
     }
     return _listViewArray;
 }
+
+- (EvaluateListNavView *)navView {
+    if (!_navView) {
+        _navView = [EvaluateListNavView sharedInstance];
+        MJWeakSelf;
+        [_navView navActionCallback:^(EVALUATENAV_TYPE type) {
+            [weakSelf navAction:type];
+        }];
+    }
+    return _navView;
+}
+
+- (void)changeSegIndex:(NSInteger)index {
+    if (index == self.selectedIndex) {
+        return;
+    }
+    EVALUATENAV_TYPE type = index == 0 ? EVALUATENAV_TYPE_EVALUATE : EVALUATENAV_TYPE_RECEIVE;
+    [self.navView swithPage:type];
+}
+
+- (void)navAction:(EVALUATENAV_TYPE)type {
+    switch (type) {
+        case EVALUATENAV_TYPE_BACK:
+        {
+            [self backAction];
+        }
+            break;
+        case EVALUATENAV_TYPE_EVALUATE:
+        {
+            [self.categoryView selectItemAtIndex:0];
+            self.selectedIndex = 0;
+        }
+            break;
+        case EVALUATENAV_TYPE_RECEIVE:
+        {
+            [self.categoryView selectItemAtIndex:1];
+            self.selectedIndex = 1;
+        }
+            break;
+        default:
+            break;
+    }
+}
+
 /*
 #pragma mark - Navigation
 

+ 5 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Controller/EvaluateDetailViewController.h

@@ -6,11 +6,16 @@
 //
 
 #import "KSBaseViewController.h"
+#import "ReceiveListModel.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
 @interface EvaluateDetailViewController : KSBaseViewController
 
+@property (nonatomic, assign) BOOL isReceiveReplire;
+
+@property (nonatomic, strong) ReceiveListModel *sourceModel;
+
 @property (nonatomic, strong) NSString *studentId;
 
 @property (nonatomic, strong) NSString *courseId;

+ 37 - 10
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Controller/EvaluateDetailViewController.m

@@ -10,6 +10,7 @@
 #import "AccompanyCourseInfoCell.h"
 #import "CourseGroupPlanAlertView.h"
 #import "EvaluateDetailModel.h"
+#import "AccompanyStudentEvaCell.h"
 
 @interface EvaluateDetailViewController ()<UITableViewDelegate,UITableViewDataSource>
 
@@ -29,9 +30,15 @@
     // Do any additional setup after loading the view.
     [self allocTitle:@"课后评价"];
     [self configUI];
-    [self requestData];
+    if (self.isReceiveReplire == NO) {
+        [self requestData];
+    }
+    else {
+        [self refreshView];
+    }
 }
 
+
 - (void)configUI {
     [self.scrollView removeFromSuperview];
     self.view.backgroundColor = HexRGB(0xf8f9fc);
@@ -57,6 +64,10 @@
     }];
 }
 
+- (void)refreshView {
+    [self.tableView reloadData];
+}
+
 #pragma mark ----- table data source
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
     return 2;
@@ -66,18 +77,33 @@
         AccompanyCourseInfoCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AccompanyCourseInfoCell"];
         cell.statusLabel.text = @"已结束";
         cell.statusLabel.textColor = HexRGB(0x999999);
-        [cell configWithStartTime:self.detailModel.startTime endTime:self.detailModel.endTime studentAvatar:self.detailModel.avatar studentName:self.detailModel.userName studentId:self.detailModel.studentId studentSubject:self.detailModel.subjectName courseName:@""];
+        if (self.isReceiveReplire) {
+            [cell configWithStartTime:self.sourceModel.startTime endTime:self.sourceModel.endTime studentAvatar:self.sourceModel.avatar studentName:self.sourceModel.userName studentId:self.sourceModel.userId studentSubject:self.sourceModel.subjectName courseName:self.sourceModel.courseGroupName];
+        }
+        else {
+            [cell configWithStartTime:self.detailModel.startTime endTime:self.detailModel.endTime studentAvatar:self.detailModel.avatar studentName:self.detailModel.userName studentId:self.detailModel.studentId studentSubject:self.detailModel.subjectName courseName:self.detailModel.courseGroupName];
+        }
         return cell;
     }
     else {
-        AccompanyEvaluateCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AccompanyEvaluateCell"];
-        NSString *message = self.detailModel.teacherReplied;
-        BOOL hasEvaluate = [NSString isEmptyString:self.detailModel.teacherReplied] ? NO : YES;
-        MJWeakSelf;
-        [cell configWithEvaluateMessage:message hasEvaluate:hasEvaluate courseStatus:@"COMPLETE" callback:^{
-            [weakSelf evaluateCourse];
-        }];
-        return cell;
+        if (self.isReceiveReplire) {
+            AccompanyStudentEvaCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AccompanyStudentEvaCell"];
+            NSString *message = self.sourceModel.studentRepliedStr;
+            BOOL hasEvaluate = YES;
+            [cell configWithEvaluateMessage:message courseStatus:@"COMPLETE" starNum:[self.sourceModel.score integerValue] hasEvaluate:hasEvaluate];
+            return cell;
+        }
+        else {
+            AccompanyEvaluateCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AccompanyEvaluateCell"];
+            NSString *message = self.detailModel.teacherReplied;
+            BOOL hasEvaluate = [NSString isEmptyString:self.detailModel.teacherReplied] ? NO : YES;
+            MJWeakSelf;
+            [cell configWithEvaluateMessage:message hasEvaluate:hasEvaluate courseStatus:@"COMPLETE" callback:^{
+                [weakSelf evaluateCourse];
+            }];
+            return cell;
+        }
+        
     }
 }
 
@@ -125,6 +151,7 @@
         _tableView.estimatedRowHeight = 136.0f;
         [_tableView registerNib:[UINib nibWithNibName:@"AccompanyCourseInfoCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"AccompanyCourseInfoCell"];
         [_tableView registerNib:[UINib nibWithNibName:@"AccompanyEvaluateCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"AccompanyEvaluateCell"];
+        [_tableView registerNib:[UINib nibWithNibName:@"AccompanyStudentEvaCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"AccompanyStudentEvaCell"];
     }
     return _tableView;
 }

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Model/EvaluateDetailModel.h

@@ -30,6 +30,7 @@
 @property (nonatomic, assign) double score;
 @property (nonatomic, strong) NSString *studentId;
 @property (nonatomic, strong) NSString *startTime;
+@property (nonatomic, strong) NSString *courseGroupName;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;

+ 7 - 3
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Model/EvaluateDetailModel.m

@@ -27,6 +27,7 @@ NSString *const kEvaluateDetailModelCreateTime = @"createTime";
 NSString *const kEvaluateDetailModelScore = @"score";
 NSString *const kEvaluateDetailModelStudentId = @"studentId";
 NSString *const kEvaluateDetailModelStartTime = @"startTime";
+NSString *const kEvaluateDetailModelCourseGroupName = @"courseGroupName";
 
 
 @interface EvaluateDetailModel ()
@@ -56,7 +57,7 @@ NSString *const kEvaluateDetailModelStartTime = @"startTime";
 @synthesize score = _score;
 @synthesize studentId = _studentId;
 @synthesize startTime = _startTime;
-
+@synthesize courseGroupName = _courseGroupName;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
 {
@@ -89,7 +90,7 @@ NSString *const kEvaluateDetailModelStartTime = @"startTime";
             self.score = [[self objectOrNilForKey:kEvaluateDetailModelScore fromDictionary:dict] doubleValue];
             self.studentId = [self objectOrNilForKey:kEvaluateDetailModelStudentId fromDictionary:dict];
             self.startTime = [self objectOrNilForKey:kEvaluateDetailModelStartTime fromDictionary:dict];
-
+        self.courseGroupName = [self objectOrNilForKey:kEvaluateDetailModelCourseGroupName fromDictionary:dict];
     }
     
     return self;
@@ -118,7 +119,7 @@ NSString *const kEvaluateDetailModelStartTime = @"startTime";
     [mutableDict setValue:[NSNumber numberWithDouble:self.score] forKey:kEvaluateDetailModelScore];
     [mutableDict setValue:self.studentId forKey:kEvaluateDetailModelStudentId];
     [mutableDict setValue:self.startTime forKey:kEvaluateDetailModelStartTime];
-
+    [mutableDict setValue:self.courseGroupName forKey:kEvaluateDetailModelCourseGroupName];
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
 
@@ -164,6 +165,7 @@ NSString *const kEvaluateDetailModelStartTime = @"startTime";
     self.score = [aDecoder decodeDoubleForKey:kEvaluateDetailModelScore];
     self.studentId = [aDecoder decodeObjectForKey:kEvaluateDetailModelStudentId];
     self.startTime = [aDecoder decodeObjectForKey:kEvaluateDetailModelStartTime];
+    self.courseGroupName = [aDecoder decodeObjectForKey:kEvaluateDetailModelCourseGroupName];
     return self;
 }
 
@@ -189,6 +191,7 @@ NSString *const kEvaluateDetailModelStartTime = @"startTime";
     [aCoder encodeDouble:_score forKey:kEvaluateDetailModelScore];
     [aCoder encodeObject:_studentId forKey:kEvaluateDetailModelStudentId];
     [aCoder encodeObject:_startTime forKey:kEvaluateDetailModelStartTime];
+    [aCoder encodeObject:_courseGroupName forKey:kEvaluateDetailModelCourseGroupName];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -216,6 +219,7 @@ NSString *const kEvaluateDetailModelStartTime = @"startTime";
         copy.score = self.score;
         copy.studentId = [self.studentId copyWithZone:zone];
         copy.startTime = [self.startTime copyWithZone:zone];
+        copy.courseGroupName = [self.courseGroupName copyWithZone:zone];
     }
     
     return copy;

+ 2 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Model/EvaluateListModel.h

@@ -24,6 +24,8 @@
 @property (nonatomic, strong) NSString *courseGoupId;
 @property (nonatomic, strong) NSString *startTime;
 @property (nonatomic, strong) NSString *status;
+@property (nonatomic, strong) NSString *courseGroupName;
+@property (nonatomic, strong) NSString *teacherReplied;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;

+ 14 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Model/EvaluateListModel.m

@@ -21,6 +21,8 @@ NSString *const kEvaluateListModelSignInTime = @"signInTime";
 NSString *const kEvaluateListModelCourseGoupId = @"courseGoupId";
 NSString *const kEvaluateListModelStartTime = @"startTime";
 NSString *const kEvaluateListModelStatus = @"status";
+NSString *const kEvaluateListModelCourseGroupName = @"courseGroupName";
+NSString *const kEvaluateListModelTeacherReplied = @"teacherReplied";
 
 
 @interface EvaluateListModel ()
@@ -44,6 +46,8 @@ NSString *const kEvaluateListModelStatus = @"status";
 @synthesize courseGoupId = _courseGoupId;
 @synthesize startTime = _startTime;
 @synthesize status = _status;
+@synthesize courseGroupName = _courseGroupName;
+@synthesize teacherReplied = _teacherReplied;
 
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
@@ -71,7 +75,8 @@ NSString *const kEvaluateListModelStatus = @"status";
             self.courseGoupId = [self objectOrNilForKey:kEvaluateListModelCourseGoupId fromDictionary:dict];
             self.startTime = [self objectOrNilForKey:kEvaluateListModelStartTime fromDictionary:dict];
             self.status = [self objectOrNilForKey:kEvaluateListModelStatus fromDictionary:dict];
-
+        self.courseGroupName = [self objectOrNilForKey:kEvaluateListModelCourseGroupName fromDictionary:dict];
+        self.teacherReplied = [self objectOrNilForKey:kEvaluateListModelTeacherReplied fromDictionary:dict];
     }
     
     return self;
@@ -94,7 +99,8 @@ NSString *const kEvaluateListModelStatus = @"status";
     [mutableDict setValue:self.courseGoupId forKey:kEvaluateListModelCourseGoupId];
     [mutableDict setValue:self.startTime forKey:kEvaluateListModelStartTime];
     [mutableDict setValue:self.status forKey:kEvaluateListModelStatus];
-
+    [mutableDict setValue:self.courseGroupName forKey:kEvaluateListModelCourseGroupName];
+    [mutableDict setValue:self.teacherReplied forKey:kEvaluateListModelTeacherReplied];
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
 
@@ -134,6 +140,8 @@ NSString *const kEvaluateListModelStatus = @"status";
     self.courseGoupId = [aDecoder decodeObjectForKey:kEvaluateListModelCourseGoupId];
     self.startTime = [aDecoder decodeObjectForKey:kEvaluateListModelStartTime];
     self.status = [aDecoder decodeObjectForKey:kEvaluateListModelStatus];
+    self.courseGroupName = [aDecoder decodeObjectForKey:kEvaluateListModelCourseGroupName];
+    self.teacherReplied = [aDecoder decodeObjectForKey:kEvaluateListModelTeacherReplied];
     return self;
 }
 
@@ -153,6 +161,8 @@ NSString *const kEvaluateListModelStatus = @"status";
     [aCoder encodeObject:_courseGoupId forKey:kEvaluateListModelCourseGoupId];
     [aCoder encodeObject:_startTime forKey:kEvaluateListModelStartTime];
     [aCoder encodeObject:_status forKey:kEvaluateListModelStatus];
+    [aCoder encodeObject:_courseGroupName forKey:kEvaluateListModelCourseGroupName];
+    [aCoder encodeObject:_teacherReplied forKey:kEvaluateListModelTeacherReplied];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -174,6 +184,8 @@ NSString *const kEvaluateListModelStatus = @"status";
         copy.courseGoupId = [self.courseGoupId copyWithZone:zone];
         copy.startTime = [self.startTime copyWithZone:zone];
         copy.status = [self.status copyWithZone:zone];
+        copy.courseGroupName = [self.courseGroupName copyWithZone:zone];
+        copy.teacherReplied = [self.teacherReplied copyWithZone:zone];
     }
     
     return copy;

+ 116 - 13
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateCourseBodyView.m

@@ -11,6 +11,7 @@
 #import <KSFullDatePicker.h>
 #import "EvaluateListModel.h"
 #import "EvaluateDetailViewController.h"
+#import "KSSmallChoosePicker.h"
 
 @interface EvaluateCourseBodyView ()<UITableViewDelegate,UITableViewDataSource>
 
@@ -33,6 +34,14 @@
 
 @property (nonatomic, strong) NSString *searchKey;
 
+@property (nonatomic, assign) NSInteger secondChooseIndex;
+
+@property (nonatomic, assign) NSInteger thirdChooseIndex;
+
+@property (nonatomic, strong) NSString *evaluateStatusString;
+
+@property (nonatomic, strong) NSString *courseType;
+
 @end
 
 @implementation EvaluateCourseBodyView
@@ -40,19 +49,24 @@
 - (instancetype)initWithFrame:(CGRect)frame {
     self = [super initWithFrame:frame];
     if (self) {
-        self.backgroundColor = HexRGB(0xf8f9fc);
+        self.backgroundColor = [UIColor clearColor];
         self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height) style:UITableViewStylePlain];
-        self.tableView.backgroundColor = HexRGB(0xf8f9fc);
+        self.tableView.backgroundColor = [UIColor clearColor];
         self.tableView.showsVerticalScrollIndicator = NO;
         self.tableView.showsHorizontalScrollIndicator = NO;
         self.tableView.dataSource = self;
         self.tableView.delegate = self;
         self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
-        self.tableView.rowHeight = 86;
+        self.tableView.rowHeight = UITableViewAutomaticDimension;
+        self.tableView.estimatedRowHeight = 123.0f;
         [self addSubview:self.tableView];
+        if (@available(iOS 15.0, *)) {
+            self.tableView.sectionHeaderTopPadding = 0;
+        }
+        self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
         
-        UIView *bottomView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 10)];
-        bottomView.backgroundColor = HexRGB(0xf8f9fc);
+        UIView *bottomView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KPortraitWidth, 20)];
+        bottomView.backgroundColor = [UIColor clearColor];
         self.tableView.tableFooterView = bottomView;
         
         [self.tableView registerNib:[UINib nibWithNibName:@"EvaluateCouseCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"EvaluateCouseCell"];
@@ -106,8 +120,8 @@
 }
 
 - (void)requestData {
-    NSInteger isEvaluate = self.selectIndex == 0 ? 0 : 1;
-    [KSNetworkingManager courseRepliedListRequest:KS_POST classMonth:self.chooseDate replied:isEvaluate studentName:self.searchKey page:self.pages rows:self.rows success:^(NSDictionary * _Nonnull dic) {
+    
+    [KSNetworkingManager courseRepliedListRequest:KS_POST classMonth:self.chooseDate replied:self.evaluateStatusString courseType:self.courseType studentName:self.searchKey page:self.pages rows:self.rows success:^(NSDictionary * _Nonnull dic) {
         [self endRefresh];
         if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
             NSArray *sourceArray = [[dic ks_dictionaryValueForKey:@"data"] ks_arrayValueForKey:@"rows"];
@@ -156,14 +170,14 @@
 
 - (void)layoutSubviews {
     [super layoutSubviews];
-    CGFloat topHeight = 50.0f;
+    CGFloat topHeight = [EvaluateSortView getViewHeight];
     self.tableView.frame = CGRectMake(0, topHeight, self.bounds.size.width, self.bounds.size.height - topHeight);
     if (!_sortView) {
-        self.sortView.frame = CGRectMake(0, 0, kScreenWidth, topHeight);
+        self.sortView.frame = CGRectMake(0, 0, KPortraitWidth, topHeight);
         [self addSubview:self.sortView];
         [self.dateFormatter setDateFormat:@"yyyy年MM月"];
         NSDate *currentDate = [NSDate date];
-        self.sortView.sortTitleLabel.text = [NSString returnNoNullStringWithString:[self.dateFormatter stringFromDate:currentDate]];
+        self.sortView.firstLabel.text = [NSString returnNoNullStringWithString:[self.dateFormatter stringFromDate:currentDate]];
     }
 }
 
@@ -293,7 +307,7 @@
 
                 self.chooseDate = date;
                 NSString *displayTime = [self getTimeDisplay:date];
-                [self.sortView.sortTitleLabel setText:displayTime];
+                [self.sortView.firstLabel setText:displayTime];
                 [self resetPickerStatus];
                 // 请求数据
                 [self refreshAndRequestData];
@@ -303,6 +317,48 @@
             [picker show];
         }
             break;
+        case EVALUATESORT_STATUS:
+        {
+            MJWeakSelf;
+            KSSmallChoosePicker *picker = [[KSSmallChoosePicker alloc] initWithTitle:@"" sourceData:@[@"全部",@"已评价",@"未评价"] lastChoose:self.secondChooseIndex chooseColor:THEMECOLOR chooseReturnWithBlock:^(NSString * _Nonnull returnValue, NSInteger chooseIndex) {
+                weakSelf.secondChooseIndex = chooseIndex;
+                if (chooseIndex == 1) {
+                    [weakSelf.sortView.secondLabel setText:@"全部状态"];
+                    weakSelf.evaluateStatusString = nil;
+                }
+                else {
+                    [weakSelf.sortView.secondLabel setText:returnValue];
+                    [weakSelf evaluateStatusWithIndex:chooseIndex-1 isCourseStatus:YES];
+                }
+                weakSelf.sortView.secondArrowUp = NO;
+                [weakSelf refreshAndRequestData];
+            } cancel:^{
+                weakSelf.sortView.secondArrowUp = NO;
+            }];
+            [picker showPicker];
+        }
+            break;
+        case EVALUATESORT_COURSETYPE:
+        {
+            MJWeakSelf;
+            KSSmallChoosePicker *picker = [[KSSmallChoosePicker alloc] initWithTitle:@"" sourceData:@[@"全部",@"VIP定制课",@"趣纠课"] lastChoose:self.secondChooseIndex chooseColor:THEMECOLOR chooseReturnWithBlock:^(NSString * _Nonnull returnValue, NSInteger chooseIndex) {
+                weakSelf.secondChooseIndex = chooseIndex;
+                if (chooseIndex == 1) {
+                    [weakSelf.sortView.thirdLabel setText:@"全部课程"];
+                    weakSelf.courseType = nil;
+                }
+                else {
+                    [weakSelf.sortView.thirdLabel setText:returnValue];
+                    [weakSelf evaluateStatusWithIndex:chooseIndex-1 isCourseStatus:YES];
+                }
+                weakSelf.sortView.thirdArrowUp = NO;
+                [weakSelf refreshAndRequestData];
+            } cancel:^{
+                weakSelf.sortView.thirdArrowUp = NO;
+            }];
+            [picker showPicker];
+        }
+            break;
         case EVALUATESORT_NAME:
         {
             self.searchKey = searchKey;
@@ -315,12 +371,59 @@
     }
 }
 
+- (void)evaluateStatusWithIndex:(NSInteger)chooseIndex isCourseStatus:(BOOL)isEvaluateStatus {
+    if (isEvaluateStatus) {
+        switch (chooseIndex) {
+            case 0:
+            {
+                self.evaluateStatusString = nil;
+                [self.sortView.secondLabel setText:@"全部状态"];
+            }
+                break;
+            case 1:
+            {
+                self.evaluateStatusString = @"1";
+            }
+                break;
+            case 2:
+            {
+                self.evaluateStatusString = @"0";
+            }
+                break;
+            default:
+                break;
+        }
+    }
+    else {
+        switch (chooseIndex) {
+            case 0:
+            {
+                self.courseType = nil;
+                [self.sortView.thirdLabel setText:@"全部课程"];
+            }
+                break;
+            case 1:
+            {
+                self.courseType = @"VIP";
+            }
+                break;
+            case 2:
+            {
+                self.courseType = @"PRACTICE";
+            }
+                break;
+            default:
+                break;
+        }
+    }
+}
+
 - (void)timeChooseAction {
     KSFullDatePicker *picker = [[KSFullDatePicker alloc] initWithTitle:@"" date:[NSDate date] pickMode:KSDATEPICKER_MODE_YEAR_MONTH sureButtonColor:THEMECOLOR selectDateBlock:^(NSString *date) {
 
         self.chooseDate = date;
         NSString *displayTime = [self getTimeDisplay:date];
-        [self.sortView.sortTitleLabel setText:displayTime];
+        [self.sortView.firstLabel setText:displayTime];
         [self resetPickerStatus];
         // 请求数据
         [self refreshAndRequestData];
@@ -331,7 +434,7 @@
 }
 
 - (void)resetPickerStatus {
-    self.sortView.arrowUp = NO;
+    self.sortView.firstArrowUp = NO;
 }
 
 - (NSString *)getTimeDisplay:(NSString *)chooseMonth {

+ 3 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateCouseCell.h

@@ -7,6 +7,7 @@
 
 #import <UIKit/UIKit.h>
 #import "EvaluateListModel.h"
+#import "ReceiveListModel.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -14,6 +15,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)configCellWithModel:(EvaluateListModel *)model;
 
+- (void)configCellWithRecModel:(ReceiveListModel *)model;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 43 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateCouseCell.m

@@ -8,11 +8,18 @@
 #import "EvaluateCouseCell.h"
 
 @interface EvaluateCouseCell ()
+@property (weak, nonatomic) IBOutlet UILabel *statusLabel;
+
 @property (weak, nonatomic) IBOutlet UIImageView *studentAvatar;
+
 @property (weak, nonatomic) IBOutlet UILabel *studentName;
+
 @property (weak, nonatomic) IBOutlet UILabel *courseTime;
+
 @property (weak, nonatomic) IBOutlet UILabel *subjectName;
 
+@property (weak, nonatomic) IBOutlet UILabel *courseName;
+
 @end
 
 @implementation EvaluateCouseCell
@@ -44,8 +51,44 @@
     }
     
     self.subjectName.text = [NSString returnNoNullStringWithString:model.subjectName];
+    self.courseName.text = [NSString returnNoNullStringWithString:model.courseGroupName];
+    
+    self.statusLabel.hidden = NO;
+    if ([model.teacherReplied isEqualToString:@"1"]) {
+        self.statusLabel.text = @"已评价";
+        self.statusLabel.textColor = HexRGB(0x999999);
+    }
+    else {
+        self.statusLabel.text = @"未评价";
+        self.statusLabel.textColor = HexRGB(0xFF802C);
+    }
 }
 
+- (void)configCellWithRecModel:(ReceiveListModel *)model {
+    // time
+    NSDateFormatter *formatter = [NSObject getDateformatter];
+    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
+    NSDate *startDate = [formatter dateFromString:model.startTime];
+    NSDate *endDate = [formatter dateFromString:model.endTime];
+    [formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
+    NSString *lessonBegin = [formatter stringFromDate:startDate];
+    [formatter setDateFormat:@"HH:mm"];
+    NSString *lessonEnd = [formatter stringFromDate:endDate];
+    self.courseTime.text = [NSString stringWithFormat:@"%@~%@",[NSString returnNoNullStringWithString:lessonBegin],[NSString returnNoNullStringWithString:lessonEnd]];
+    [self.studentAvatar sd_setImageWithURL:[NSURL URLWithString:[model.avatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:STUDENT_AVATAR]];
+    if ([NSString isEmptyString:model.userName]) {
+        self.studentName.text = [NSString stringWithFormat:@"游客%@",model.userId];
+    }
+    else {
+        self.studentName.text = model.userName;
+    }
+    
+    self.subjectName.text = [NSString returnNoNullStringWithString:model.subjectName];
+    self.courseName.text = [NSString returnNoNullStringWithString:model.courseGroupName];
+    self.statusLabel.hidden = YES;
+}
+
+
 - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
     [super setSelected:selected animated:animated];
 

+ 104 - 56
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateCouseCell.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
@@ -11,63 +11,87 @@
     <objects>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
-        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="109" id="KGk-i7-Jjw" customClass="EvaluateCouseCell">
-            <rect key="frame" x="0.0" y="0.0" width="343" height="109"/>
+        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="123" id="KGk-i7-Jjw" customClass="EvaluateCouseCell">
+            <rect key="frame" x="0.0" y="0.0" width="401" height="123"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
             <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
-                <rect key="frame" x="0.0" y="0.0" width="343" height="109"/>
+                <rect key="frame" x="0.0" y="0.0" width="401" height="123"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
-                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wVc-IL-Wig">
-                        <rect key="frame" x="14" y="0.0" width="315" height="99"/>
+                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xTn-AL-gQo">
+                        <rect key="frame" x="14" y="12" width="373" height="111"/>
                         <subviews>
-                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_default_avatal" translatesAutoresizingMaskIntoConstraints="NO" id="2PJ-6j-pKa">
-                                <rect key="frame" x="12" y="25.5" width="48" height="48"/>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nLM-ny-KYA">
+                                <rect key="frame" x="10" y="46" width="353" height="1"/>
+                                <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="calibratedRGB"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="48" id="aiq-PN-NrJ"/>
-                                    <constraint firstAttribute="width" constant="48" id="h3w-FG-eRR"/>
+                                    <constraint firstAttribute="height" constant="1" id="JXj-7G-d53"/>
+                                </constraints>
+                            </view>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="course_time" translatesAutoresizingMaskIntoConstraints="NO" id="cuX-cl-Xky">
+                                <rect key="frame" x="12" y="15" width="16" height="16"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="16" id="7Gh-qc-SDP"/>
+                                    <constraint firstAttribute="height" constant="16" id="QRj-a2-Cfq"/>
+                                </constraints>
+                            </imageView>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2021/09/17 14:00~14:25" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="94a-bd-HBN">
+                                <rect key="frame" x="35" y="14" width="147" height="18"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="18" id="2EZ-D3-2uf"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5tW-fX-HB7">
+                                <rect key="frame" x="312" y="12" width="50" height="22"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="50" id="1qa-1I-9DI"/>
+                                    <constraint firstAttribute="height" constant="22" id="Vy8-kt-tni"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
+                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="student_avatar" translatesAutoresizingMaskIntoConstraints="NO" id="SbX-Hi-fr5">
+                                <rect key="frame" x="12" y="59" width="40" height="40"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="40" id="Lmt-gY-eRU"/>
+                                    <constraint firstAttribute="width" constant="40" id="xBn-cU-YxS"/>
                                 </constraints>
                                 <userDefinedRuntimeAttributes>
                                     <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                        <real key="value" value="24"/>
+                                        <real key="value" value="20"/>
                                     </userDefinedRuntimeAttribute>
                                 </userDefinedRuntimeAttributes>
                             </imageView>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="749" text="张三" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4Sy-o2-aBz">
-                                <rect key="frame" x="70" y="26.5" width="31" height="28"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="VIP定制课-张涵宇" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="De5-ei-sOu">
+                                <rect key="frame" x="62" y="58" width="299" height="21"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="28" id="SEY-aB-Psm"/>
+                                    <constraint firstAttribute="height" constant="21" id="3mM-8E-PmK"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                <color key="textColor" red="0.10196078431372549" green="0.10196078431372549" blue="0.10196078431372549" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
-                                <nil key="highlightedColor"/>
-                            </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2022-3-20 14:00~14:25" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="c8k-fQ-Xg3">
-                                <rect key="frame" x="70" y="54.5" width="148" height="18"/>
-                                <constraints>
-                                    <constraint firstAttribute="height" constant="18" id="7KA-Lp-Kgv"/>
-                                </constraints>
-                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                                <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
+                                <color key="textColor" red="0.074509803920000006" green="0.078431372550000003" blue="0.08235294118" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <view contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="fbd-eQ-3mJ">
-                                <rect key="frame" x="106" y="32.5" width="32.5" height="16"/>
+                            <view contentMode="scaleToFill" horizontalCompressionResistancePriority="752" translatesAutoresizingMaskIntoConstraints="NO" id="dG4-PV-TcH">
+                                <rect key="frame" x="106" y="83" width="38" height="17"/>
                                 <subviews>
-                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="长笛" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vy9-Mn-Xf6">
-                                        <rect key="frame" x="5" y="0.0" width="22.5" height="16"/>
-                                        <fontDescription key="fontDescription" type="system" pointSize="11"/>
-                                        <color key="textColor" red="1" green="0.54901960780000003" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="752" text="单簧管" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2eV-Vt-cGm">
+                                        <rect key="frame" x="4" y="0.0" width="30" height="17"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="10"/>
+                                        <color key="textColor" red="1" green="0.54901960780000003" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                         <nil key="highlightedColor"/>
                                     </label>
                                 </subviews>
-                                <color key="backgroundColor" red="1" green="0.94509803920000002" blue="0.87058823529999996" alpha="1" colorSpace="calibratedRGB"/>
+                                <color key="backgroundColor" red="1" green="0.94509803920000002" blue="0.87058823529999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
-                                    <constraint firstAttribute="trailing" secondItem="vy9-Mn-Xf6" secondAttribute="trailing" constant="5" id="L69-sV-rPa"/>
-                                    <constraint firstItem="vy9-Mn-Xf6" firstAttribute="leading" secondItem="fbd-eQ-3mJ" secondAttribute="leading" constant="5" id="Oce-Kh-pQd"/>
-                                    <constraint firstItem="vy9-Mn-Xf6" firstAttribute="top" secondItem="fbd-eQ-3mJ" secondAttribute="top" id="VXF-EB-AWd"/>
-                                    <constraint firstAttribute="height" constant="16" id="gdT-uX-XOU"/>
-                                    <constraint firstAttribute="bottom" secondItem="vy9-Mn-Xf6" secondAttribute="bottom" id="hhp-eX-GKv"/>
+                                    <constraint firstAttribute="trailing" secondItem="2eV-Vt-cGm" secondAttribute="trailing" constant="4" id="XZr-FV-n1R"/>
+                                    <constraint firstItem="2eV-Vt-cGm" firstAttribute="top" secondItem="dG4-PV-TcH" secondAttribute="top" id="gF5-Tx-ymp"/>
+                                    <constraint firstItem="2eV-Vt-cGm" firstAttribute="leading" secondItem="dG4-PV-TcH" secondAttribute="leading" constant="4" id="mal-7e-bQe"/>
+                                    <constraint firstAttribute="height" constant="17" id="uvO-zb-3Cx"/>
+                                    <constraint firstAttribute="bottom" secondItem="2eV-Vt-cGm" secondAttribute="bottom" id="yDQ-Jk-iBX"/>
                                 </constraints>
                                 <userDefinedRuntimeAttributes>
                                     <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
@@ -75,18 +99,39 @@
                                     </userDefinedRuntimeAttribute>
                                 </userDefinedRuntimeAttributes>
                             </view>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="张涵宇" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Iog-Ql-y8M">
+                                <rect key="frame" x="62" y="83" width="39" height="17"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="17" id="ddQ-PH-lMc"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
                         </subviews>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
-                            <constraint firstItem="4Sy-o2-aBz" firstAttribute="leading" secondItem="2PJ-6j-pKa" secondAttribute="trailing" constant="10" id="6ZN-Li-mgm"/>
-                            <constraint firstItem="c8k-fQ-Xg3" firstAttribute="leading" secondItem="4Sy-o2-aBz" secondAttribute="leading" id="GlU-ts-xyc"/>
-                            <constraint firstItem="2PJ-6j-pKa" firstAttribute="leading" secondItem="wVc-IL-Wig" secondAttribute="leading" constant="12" id="R3E-dU-uNp"/>
-                            <constraint firstItem="fbd-eQ-3mJ" firstAttribute="centerY" secondItem="4Sy-o2-aBz" secondAttribute="centerY" id="eC5-CE-dvk"/>
-                            <constraint firstItem="c8k-fQ-Xg3" firstAttribute="top" secondItem="4Sy-o2-aBz" secondAttribute="bottom" id="gLd-m3-5tU"/>
-                            <constraint firstItem="4Sy-o2-aBz" firstAttribute="top" secondItem="2PJ-6j-pKa" secondAttribute="top" constant="1" id="gcZ-Ti-bmX"/>
-                            <constraint firstItem="2PJ-6j-pKa" firstAttribute="centerY" secondItem="wVc-IL-Wig" secondAttribute="centerY" id="z8k-j6-iKM"/>
-                            <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="fbd-eQ-3mJ" secondAttribute="trailing" constant="12" id="zP0-Bc-Se7"/>
-                            <constraint firstItem="fbd-eQ-3mJ" firstAttribute="leading" secondItem="4Sy-o2-aBz" secondAttribute="trailing" constant="5" id="zUM-ne-KyW"/>
+                            <constraint firstItem="Iog-Ql-y8M" firstAttribute="bottom" secondItem="SbX-Hi-fr5" secondAttribute="bottom" constant="1" id="2L3-eL-5h9"/>
+                            <constraint firstItem="5tW-fX-HB7" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="94a-bd-HBN" secondAttribute="trailing" constant="10" id="4ot-Yd-4tR"/>
+                            <constraint firstAttribute="trailing" secondItem="nLM-ny-KYA" secondAttribute="trailing" constant="10" id="Bse-4x-fCA"/>
+                            <constraint firstItem="De5-ei-sOu" firstAttribute="leading" secondItem="SbX-Hi-fr5" secondAttribute="trailing" constant="10" id="Du9-3a-mYS"/>
+                            <constraint firstItem="5tW-fX-HB7" firstAttribute="centerY" secondItem="94a-bd-HBN" secondAttribute="centerY" id="Hv5-aP-nEC"/>
+                            <constraint firstItem="dG4-PV-TcH" firstAttribute="leading" secondItem="Iog-Ql-y8M" secondAttribute="trailing" constant="5" id="JJJ-Gh-JIR"/>
+                            <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="dG4-PV-TcH" secondAttribute="trailing" constant="12" id="Jer-6M-0PT"/>
+                            <constraint firstItem="nLM-ny-KYA" firstAttribute="top" secondItem="cuX-cl-Xky" secondAttribute="bottom" constant="15" id="N0F-nQ-EYt"/>
+                            <constraint firstItem="cuX-cl-Xky" firstAttribute="top" secondItem="xTn-AL-gQo" secondAttribute="top" constant="15" id="O5h-vE-jX0"/>
+                            <constraint firstItem="SbX-Hi-fr5" firstAttribute="leading" secondItem="xTn-AL-gQo" secondAttribute="leading" constant="12" id="WFZ-L5-xoI"/>
+                            <constraint firstItem="94a-bd-HBN" firstAttribute="centerY" secondItem="cuX-cl-Xky" secondAttribute="centerY" id="c6J-Ma-Xfl"/>
+                            <constraint firstItem="nLM-ny-KYA" firstAttribute="leading" secondItem="xTn-AL-gQo" secondAttribute="leading" constant="10" id="cC3-w7-o2k"/>
+                            <constraint firstItem="94a-bd-HBN" firstAttribute="leading" secondItem="cuX-cl-Xky" secondAttribute="trailing" constant="7" id="dEx-sc-7TI"/>
+                            <constraint firstItem="De5-ei-sOu" firstAttribute="top" secondItem="SbX-Hi-fr5" secondAttribute="top" constant="-1" id="jpc-DL-6gC"/>
+                            <constraint firstItem="Iog-Ql-y8M" firstAttribute="leading" secondItem="De5-ei-sOu" secondAttribute="leading" id="pEs-AD-fzI"/>
+                            <constraint firstAttribute="bottom" secondItem="SbX-Hi-fr5" secondAttribute="bottom" constant="12" id="pLs-A4-aaI"/>
+                            <constraint firstAttribute="trailing" secondItem="De5-ei-sOu" secondAttribute="trailing" constant="12" id="qdO-r0-c5K"/>
+                            <constraint firstAttribute="trailing" secondItem="5tW-fX-HB7" secondAttribute="trailing" constant="11" id="tKE-6r-Owe"/>
+                            <constraint firstItem="dG4-PV-TcH" firstAttribute="centerY" secondItem="Iog-Ql-y8M" secondAttribute="centerY" id="trw-bR-nqg"/>
+                            <constraint firstItem="SbX-Hi-fr5" firstAttribute="top" secondItem="nLM-ny-KYA" secondAttribute="bottom" constant="12" id="xgz-wa-enL"/>
+                            <constraint firstItem="cuX-cl-Xky" firstAttribute="leading" secondItem="xTn-AL-gQo" secondAttribute="leading" constant="12" id="y79-ny-nWG"/>
                         </constraints>
                         <userDefinedRuntimeAttributes>
                             <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
@@ -96,25 +141,28 @@
                     </view>
                 </subviews>
                 <constraints>
-                    <constraint firstAttribute="trailing" secondItem="wVc-IL-Wig" secondAttribute="trailing" constant="14" id="6F7-0f-oax"/>
-                    <constraint firstAttribute="bottom" secondItem="wVc-IL-Wig" secondAttribute="bottom" constant="10" id="TNf-8a-LtP"/>
-                    <constraint firstItem="wVc-IL-Wig" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="14" id="WUg-tZ-CvC"/>
-                    <constraint firstItem="wVc-IL-Wig" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="pMN-V5-DGD"/>
+                    <constraint firstItem="xTn-AL-gQo" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="12" id="Szg-yb-d9w"/>
+                    <constraint firstItem="xTn-AL-gQo" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="14" id="bUM-Uf-I8L"/>
+                    <constraint firstAttribute="trailing" secondItem="xTn-AL-gQo" secondAttribute="trailing" constant="14" id="dw9-pc-epZ"/>
+                    <constraint firstAttribute="bottom" secondItem="xTn-AL-gQo" secondAttribute="bottom" id="ogl-Qf-BzM"/>
                 </constraints>
             </tableViewCellContentView>
             <viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <connections>
-                <outlet property="courseTime" destination="c8k-fQ-Xg3" id="wob-hy-UqN"/>
-                <outlet property="studentAvatar" destination="2PJ-6j-pKa" id="Jhr-Hi-Okj"/>
-                <outlet property="studentName" destination="4Sy-o2-aBz" id="5TY-mR-XGw"/>
-                <outlet property="subjectName" destination="vy9-Mn-Xf6" id="eFt-OJ-LeR"/>
+                <outlet property="courseName" destination="De5-ei-sOu" id="e5g-4Z-3Wu"/>
+                <outlet property="courseTime" destination="94a-bd-HBN" id="ukl-tG-U2Y"/>
+                <outlet property="statusLabel" destination="5tW-fX-HB7" id="ApR-dD-OiW"/>
+                <outlet property="studentAvatar" destination="SbX-Hi-fr5" id="2UO-O9-Shg"/>
+                <outlet property="studentName" destination="Iog-Ql-y8M" id="d3o-ro-ec4"/>
+                <outlet property="subjectName" destination="2eV-Vt-cGm" id="EWp-st-uML"/>
             </connections>
-            <point key="canvasLocation" x="148.55072463768118" y="79.352678571428569"/>
+            <point key="canvasLocation" x="190.57971014492756" y="66.629464285714278"/>
         </tableViewCell>
     </objects>
     <resources>
-        <image name="user_default_avatal" width="52" height="52"/>
+        <image name="course_time" width="16" height="16"/>
+        <image name="student_avatar" width="150" height="150"/>
         <systemColor name="systemBackgroundColor">
             <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
         </systemColor>

+ 33 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateListNavView.h

@@ -0,0 +1,33 @@
+//
+//  EvaluateListNavView.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2024/12/20.
+//
+
+#import <UIKit/UIKit.h>
+
+typedef NS_ENUM(NSInteger, EVALUATENAV_TYPE) {
+    EVALUATENAV_TYPE_BACK,       // 返回
+    EVALUATENAV_TYPE_EVALUATE,   // 我的评价
+    EVALUATENAV_TYPE_RECEIVE,    // 收到的评价
+};
+
+typedef void(^EvaluateListNavCallback)(EVALUATENAV_TYPE type);
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EvaluateListNavView : UIView
+
++ (instancetype)sharedInstance;
+
+- (void)swithPage:(EVALUATENAV_TYPE)type;
+
+- (void)navActionCallback:(EvaluateListNavCallback)callback;
+
++ (CGFloat)getViewHeight;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 89 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateListNavView.m

@@ -0,0 +1,89 @@
+//
+//  EvaluateListNavView.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2024/12/20.
+//
+
+#import "EvaluateListNavView.h"
+
+@interface EvaluateListNavView ()
+
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *dotLeft;
+
+@property (weak, nonatomic) IBOutlet UILabel *evaluateLabel;
+
+@property (weak, nonatomic) IBOutlet UILabel *receiveLabel;
+
+@property (nonatomic, copy) EvaluateListNavCallback callback;
+
+@end
+
+@implementation EvaluateListNavView
+
+
++ (instancetype)sharedInstance {
+    EvaluateListNavView *view = [[[NSBundle mainBundle] loadNibNamed:@"EvaluateListNavView" owner:nil options:nil] firstObject];
+    return view;
+}
+
+
+- (void)navActionCallback:(EvaluateListNavCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+
+- (void)swithPage:(EVALUATENAV_TYPE)type {
+    if (type == EVALUATENAV_TYPE_BACK) {
+        return;
+    }
+    else if (type == EVALUATENAV_TYPE_EVALUATE) {
+        self.dotLeft.constant = 25.0f;
+        self.evaluateLabel.textColor = HexRGB(0x333333);
+        self.evaluateLabel.font = [UIFont systemFontOfSize:16.0f weight:UIFontWeightSemibold];
+        self.receiveLabel.textColor = HexRGBAlpha(0x000000, 0.4);
+        self.receiveLabel.font = [UIFont systemFontOfSize:16.0f weight:UIFontWeightRegular];
+    }
+    else if (type == EVALUATENAV_TYPE_RECEIVE) {
+        self.dotLeft.constant = 162.0f;
+        self.evaluateLabel.textColor = HexRGBAlpha(0x000000, 0.4);
+        self.evaluateLabel.font = [UIFont systemFontOfSize:16.0f weight:UIFontWeightRegular];
+        self.receiveLabel.textColor = HexRGB(0x333333);
+        self.receiveLabel.font = [UIFont systemFontOfSize:16.0f weight:UIFontWeightSemibold];
+    }
+}
+
+- (IBAction)backAction:(id)sender {
+    if (self.callback) {
+        self.callback(EVALUATENAV_TYPE_BACK);
+    }
+}
+
+- (IBAction)toEvaluatePage:(id)sender {
+    if (self.callback) {
+        self.callback(EVALUATENAV_TYPE_EVALUATE);
+    }
+    [self swithPage:EVALUATENAV_TYPE_EVALUATE];
+}
+
+- (IBAction)toReceivePage:(id)sender {
+    if (self.callback) {
+        self.callback(EVALUATENAV_TYPE_RECEIVE);
+    }
+    [self swithPage:EVALUATENAV_TYPE_RECEIVE];
+}
+
+
++ (CGFloat)getViewHeight {
+    return kNaviBarHeight;
+}
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 143 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateListNavView.xib

@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="EvaluateListNavView">
+            <rect key="frame" x="0.0" y="0.0" width="393" height="123"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="E3T-et-5i1">
+                    <rect key="frame" x="0.0" y="79" width="393" height="44"/>
+                    <subviews>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="back_black" translatesAutoresizingMaskIntoConstraints="NO" id="JfA-9u-ziV">
+                            <rect key="frame" x="15" y="12" width="12" height="20"/>
+                        </imageView>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JTJ-8R-mLh">
+                            <rect key="frame" x="0.0" y="0.0" width="44" height="44"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="44" id="xOa-rH-1hI"/>
+                            </constraints>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <connections>
+                                <action selector="backAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="K2F-of-eNt"/>
+                            </connections>
+                        </button>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="EJy-1L-go3">
+                            <rect key="frame" x="91" y="8" width="211" height="36"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我的评价" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="l0m-dB-lpH">
+                                    <rect key="frame" x="0.0" y="0.0" width="66" height="22"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="22" id="Nud-xo-tVO"/>
+                                        <constraint firstAttribute="width" constant="66" id="pCb-Pz-zkC"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="16"/>
+                                    <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="收到的评价" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eHI-oM-7ie">
+                                    <rect key="frame" x="129" y="0.0" width="82" height="22"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="22" id="Odh-lb-iUE"/>
+                                        <constraint firstAttribute="width" constant="82" id="i8M-Jr-m7M"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yZS-61-nfD">
+                                    <rect key="frame" x="25" y="32" width="16" height="4"/>
+                                    <color key="backgroundColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="4" id="NkQ-oo-oG7"/>
+                                        <constraint firstAttribute="width" constant="16" id="ov2-VZ-WEw"/>
+                                    </constraints>
+                                    <userDefinedRuntimeAttributes>
+                                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                            <real key="value" value="2"/>
+                                        </userDefinedRuntimeAttribute>
+                                    </userDefinedRuntimeAttributes>
+                                </view>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="o5a-in-hi0">
+                                    <rect key="frame" x="0.0" y="0.0" width="80" height="36"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="80" id="lh1-Lo-TUx"/>
+                                    </constraints>
+                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                    <connections>
+                                        <action selector="toEvaluatePage:" destination="iN0-l3-epB" eventType="touchUpInside" id="XRd-12-fK4"/>
+                                    </connections>
+                                </button>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zEd-Yb-YMz">
+                                    <rect key="frame" x="131" y="0.0" width="80" height="36"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="80" id="alR-aj-oEe"/>
+                                    </constraints>
+                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                    <connections>
+                                        <action selector="toReceivePage:" destination="iN0-l3-epB" eventType="touchUpInside" id="0RN-Eq-k3m"/>
+                                    </connections>
+                                </button>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstItem="l0m-dB-lpH" firstAttribute="top" secondItem="EJy-1L-go3" secondAttribute="top" id="0qk-OG-KYt"/>
+                                <constraint firstAttribute="bottom" secondItem="yZS-61-nfD" secondAttribute="bottom" id="9CT-o5-AAK"/>
+                                <constraint firstAttribute="height" constant="36" id="HMb-lS-RsK"/>
+                                <constraint firstItem="o5a-in-hi0" firstAttribute="top" secondItem="EJy-1L-go3" secondAttribute="top" id="IX8-W8-05s"/>
+                                <constraint firstAttribute="trailing" secondItem="zEd-Yb-YMz" secondAttribute="trailing" id="KTd-VJ-tsZ"/>
+                                <constraint firstAttribute="bottom" secondItem="zEd-Yb-YMz" secondAttribute="bottom" id="PKh-nS-4ey"/>
+                                <constraint firstAttribute="bottom" secondItem="o5a-in-hi0" secondAttribute="bottom" id="h9p-PA-1Vg"/>
+                                <constraint firstItem="o5a-in-hi0" firstAttribute="leading" secondItem="EJy-1L-go3" secondAttribute="leading" id="pNw-fo-tjO"/>
+                                <constraint firstAttribute="trailing" secondItem="eHI-oM-7ie" secondAttribute="trailing" id="siX-6F-Ell"/>
+                                <constraint firstAttribute="width" constant="211" id="tjp-es-m3q"/>
+                                <constraint firstItem="eHI-oM-7ie" firstAttribute="top" secondItem="EJy-1L-go3" secondAttribute="top" id="uRa-vo-Y95"/>
+                                <constraint firstItem="zEd-Yb-YMz" firstAttribute="top" secondItem="EJy-1L-go3" secondAttribute="top" id="uwG-JK-ofA"/>
+                                <constraint firstItem="l0m-dB-lpH" firstAttribute="leading" secondItem="EJy-1L-go3" secondAttribute="leading" id="vIW-bS-VJ8"/>
+                                <constraint firstItem="yZS-61-nfD" firstAttribute="leading" secondItem="EJy-1L-go3" secondAttribute="leading" constant="25" id="yT4-Gp-f2d"/>
+                            </constraints>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstItem="JfA-9u-ziV" firstAttribute="centerY" secondItem="E3T-et-5i1" secondAttribute="centerY" id="5mA-7O-nuX"/>
+                        <constraint firstAttribute="bottom" secondItem="JTJ-8R-mLh" secondAttribute="bottom" id="8ZM-oY-QpC"/>
+                        <constraint firstAttribute="bottom" secondItem="EJy-1L-go3" secondAttribute="bottom" id="Hqz-as-NfA"/>
+                        <constraint firstItem="EJy-1L-go3" firstAttribute="centerX" secondItem="E3T-et-5i1" secondAttribute="centerX" id="RJz-Mv-7iz"/>
+                        <constraint firstAttribute="height" constant="44" id="TTL-A6-kdM"/>
+                        <constraint firstItem="JfA-9u-ziV" firstAttribute="leading" secondItem="E3T-et-5i1" secondAttribute="leading" constant="15" id="Uur-UR-Fan"/>
+                        <constraint firstItem="JTJ-8R-mLh" firstAttribute="top" secondItem="E3T-et-5i1" secondAttribute="top" id="qSl-6T-Xhe"/>
+                        <constraint firstItem="JTJ-8R-mLh" firstAttribute="leading" secondItem="E3T-et-5i1" secondAttribute="leading" id="sgh-7S-UP9"/>
+                    </constraints>
+                </view>
+            </subviews>
+            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="E3T-et-5i1" secondAttribute="bottom" id="1rW-7n-sP2"/>
+                <constraint firstItem="E3T-et-5i1" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="ZlJ-lV-Mbn"/>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="E3T-et-5i1" secondAttribute="trailing" id="dzt-f7-3LI"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="dotLeft" destination="yT4-Gp-f2d" id="lv4-5l-gur"/>
+                <outlet property="evaluateLabel" destination="l0m-dB-lpH" id="uCv-Me-whK"/>
+                <outlet property="receiveLabel" destination="eHI-oM-7ie" id="TQ2-o7-ofc"/>
+            </connections>
+            <point key="canvasLocation" x="43.511450381679388" y="84.154929577464799"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="back_black" width="12" height="20"/>
+    </resources>
+</document>

+ 18 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateReceiveBodyView.h

@@ -0,0 +1,18 @@
+//
+//  EvaluateReceiveBodyView.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2024/12/20.
+//
+
+#import "KSJXBodyView.h"
+#import "StateView.h"
+#import "Reachability.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EvaluateReceiveBodyView : KSJXBodyView
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 456 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateReceiveBodyView.m

@@ -0,0 +1,456 @@
+//
+//  EvaluateReceiveBodyView.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2024/12/20.
+//
+
+#import "EvaluateReceiveBodyView.h"
+#import "EvaluateSortView.h"
+#import "EvaluateCouseCell.h"
+#import <KSFullDatePicker.h>
+#import "EvaluateDetailViewController.h"
+#import "KSSmallChoosePicker.h"
+#import "ReceiveListModel.h"
+
+@interface EvaluateReceiveBodyView ()<UITableViewDelegate,UITableViewDataSource>
+
+@property (nonatomic, strong) NSDateFormatter *dateFormatter;
+
+@property (nonatomic, strong) NSMutableArray *dataArray;
+
+@property (nonatomic, strong) StateView *promptView;
+@property (nonatomic, strong) UIView *promptPlaceView;
+
+@property (nonatomic, assign) BOOL networkAvaiable; // 网络是否可用
+
+@property (nonatomic, assign) BOOL isLoadMore;
+@property (nonatomic, assign) NSInteger rows;
+@property (nonatomic, assign) NSInteger pages;
+
+@property (nonatomic, strong) EvaluateSortView *sortView;
+
+@property (nonatomic, strong) NSString *chooseDate;
+
+@property (nonatomic, strong) NSString *searchKey;
+
+@property (nonatomic, assign) NSInteger secondChooseIndex;
+
+@property (nonatomic, assign) NSInteger thirdChooseIndex;
+
+@property (nonatomic, strong) NSString *evaluateStatusString;
+
+@property (nonatomic, strong) NSString *courseType;
+
+@end
+
+@implementation EvaluateReceiveBodyView
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        self.backgroundColor = [UIColor clearColor];
+        self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height) style:UITableViewStylePlain];
+        self.tableView.backgroundColor = [UIColor clearColor];
+        self.tableView.showsVerticalScrollIndicator = NO;
+        self.tableView.showsHorizontalScrollIndicator = NO;
+        self.tableView.dataSource = self;
+        self.tableView.delegate = self;
+        self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
+        self.tableView.rowHeight = UITableViewAutomaticDimension;
+        self.tableView.estimatedRowHeight = 123.0f;
+        [self addSubview:self.tableView];
+        if (@available(iOS 15.0, *)) {
+            self.tableView.sectionHeaderTopPadding = 0;
+        }
+        self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
+        
+        UIView *bottomView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KPortraitWidth, 20)];
+        bottomView.backgroundColor = [UIColor clearColor];
+        self.tableView.tableFooterView = bottomView;
+        
+        [self.tableView registerNib:[UINib nibWithNibName:@"EvaluateCouseCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"EvaluateCouseCell"];
+
+        [self.dateFormatter setDateFormat:@"yyyy-MM"];
+        NSDate *currentDate = [NSDate date];
+        self.chooseDate = [self.dateFormatter stringFromDate:currentDate];
+        
+        MJWeakSelf;
+        self.tableView.mj_header = [KSGifRefreshHeader headerWithRefreshingBlock:^{
+            [weakSelf resetParamenter];
+            [weakSelf requestData];
+        }];
+        self.tableView.mj_footer = [KSGifRefreshFooter footerWithRefreshingBlock:^{
+            if (weakSelf.isLoadMore) {
+                weakSelf.pages += 1;
+                [weakSelf requestData];
+            }
+            else {
+                [weakSelf.tableView.mj_footer endRefreshingWithNoMoreData];
+            }
+        }];
+    }
+    return self;
+}
+
+
+- (void)endRefresh {
+    @weakObj(self);
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+        @strongObj(self);
+        [self.tableView.mj_header endRefreshing];
+        [self.tableView.mj_footer endRefreshing];
+    });
+}
+
+- (void)refreshAndRequestData {
+    [self resetParamenter];
+    [self requestData];
+    
+}
+
+- (void)resetParamenter {
+    self.isLoadMore = YES;
+    self.pages = 1;
+    self.rows = 10;
+    self.dataArray = [NSMutableArray array];
+    [self.tableView.mj_footer resetNoMoreData];
+    [self setPromptString:@"暂无内容" imageName:@"wd_img_zwsj" inView:self.tableView];
+    [self.tableView reloadData];
+}
+
+- (void)requestData {
+    
+    [KSNetworkingManager myReceiveRepliedRequest:KS_POST classMonth:self.chooseDate courseType:self.courseType search:self.searchKey page:self.pages rows:self.rows success:^(NSDictionary * _Nonnull dic) {
+        [self endRefresh];
+        if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
+            NSArray *sourceArray = [[dic ks_dictionaryValueForKey:@"data"] ks_arrayValueForKey:@"rows"];
+            NSLog(@"%@",[dic mj_JSONString]);
+            for (NSDictionary *parm in sourceArray) {
+                ReceiveListModel *model = [[ReceiveListModel alloc] initWithDictionary:parm];
+                [self.dataArray addObject:model];
+            }
+            if (sourceArray.count < self.rows) {
+                self.isLoadMore = NO;
+            }
+        }
+        else {
+            [LOADING_MANAGER MBShowAUTOHidingInWindow:MESSAGEKEY];
+        }
+        
+        [self.tableView reloadData];
+        [self changePromptLabelStateWithArray:self.dataArray];
+    } faliure:^(NSError * _Nonnull error) {
+        [LOADING_MANAGER removeCustomLoading];
+        [self endRefresh];
+        if (self.networkAvaiable == NO) {
+            [self setPromptString:@"暂无网络" imageName:@"no_networking" inView:self.tableView];
+        }
+        [self.dataArray removeAllObjects];
+        [self.tableView reloadData];
+        [self changePromptLabelStateWithArray:self.dataArray];
+    }];
+}
+
+- (void)beginRefreshImmediately {
+    [self.tableView.mj_header beginRefreshing];
+}
+
+- (void)selectCellAtIndexPath:(NSIndexPath *)indexPath {
+    
+    if (self.lastSelectedIndexPath == indexPath) {
+        return;
+    }
+    if (self.lastSelectedIndexPath != nil) {
+        UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:self.lastSelectedIndexPath];
+        [cell setSelected:NO animated:NO];
+    }
+    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
+    [cell setSelected:YES animated:NO];
+    self.lastSelectedIndexPath = indexPath;
+}
+
+- (void)layoutSubviews {
+    [super layoutSubviews];
+    CGFloat topHeight = [EvaluateSortView getViewHeight];
+    self.tableView.frame = CGRectMake(0, topHeight, self.bounds.size.width, self.bounds.size.height - topHeight);
+    if (!_sortView) {
+        self.sortView.frame = CGRectMake(0, 0, KPortraitWidth, topHeight);
+        [self addSubview:self.sortView];
+        [self.dateFormatter setDateFormat:@"yyyy年MM月"];
+        NSDate *currentDate = [NSDate date];
+        self.sortView.firstLabel.text = [NSString returnNoNullStringWithString:[self.dateFormatter stringFromDate:currentDate]];
+    }
+}
+
+- (void)beginFirstRefresh {
+    if (!self.isHeaderRefreshed) {
+        [self beginRefreshImmediately];
+    }
+}
+
+
+#pragma mark ----- table data source
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    return self.dataArray.count;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+    ReceiveListModel *model = self.dataArray[indexPath.row];
+    EvaluateCouseCell *cell = [tableView dequeueReusableCellWithIdentifier:@"EvaluateCouseCell"];
+    [cell configCellWithRecModel:model];
+    return cell;
+}
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+    // 跳转到评价详情
+    ReceiveListModel *model = self.dataArray[indexPath.row];
+    EvaluateDetailViewController *ctrl = [[EvaluateDetailViewController alloc] init];
+    ctrl.isReceiveReplire = YES;
+    ctrl.sourceModel = model;
+    [self.naviController pushViewController:ctrl animated:YES];
+}
+
+/**
+ 设置没有数据时的显示
+ 
+ @param promptString 提示语
+ @param imgName 图片名称
+ @param view 显示在什么地方
+ */
+- (void)setPromptString:(NSString *)promptString imageName:(NSString *)imgName inView:(UIView *)view {
+    if (self.promptView != nil) {
+        [self.promptView removeFromSuperview];
+    }
+    else {
+        self.promptView = [[StateView alloc]init];
+        self.promptView.frame = CGRectMake(0, 0, kScreenWidth, kScreenHeight - 300);
+    }
+    _promptPlaceView = view;
+    //当请求不到数据时 ,自定义提示view 将会出现;
+    self.promptView.imageName = imgName;
+    self.promptView.alpha = 0.0f;
+    [self.promptView setText:promptString];
+    [view addSubview:self.promptView];
+}
+
+// 结束刷新后调用方法
+- (void)changePromptLabelStateWithArray:(NSMutableArray *)array {
+    NSInteger count;
+    if (array.count) {
+        count = array.count;
+    } else {
+        count = 0;
+    }
+    
+    [UIView animateWithDuration:0.1 animations:^{
+        [[self promptView] setAlpha:count ? 0.0f :1.0f ] ;
+        
+    }] ;
+    
+}
+
+- (BOOL)networkAvaiable {
+    return [self checkNetworkAvaiable];
+}
+
+- (BOOL)checkNetworkAvaiable {
+    BOOL isExistenceNetwork = YES;
+    Reachability *reach = [Reachability reachabilityWithHostName:@"www.apple.com"];
+    switch ([reach currentReachabilityStatus]) {
+        case NotReachable:
+            isExistenceNetwork = NO;
+            //NSLog(@"notReachable");
+            break;
+        case ReachableViaWiFi:
+            isExistenceNetwork = YES;
+            //NSLog(@"WIFI");
+            break;
+        case ReachableViaWWAN:
+            isExistenceNetwork = YES;
+            //NSLog(@"3G");
+            break;
+    }
+    return isExistenceNetwork;
+}
+
+
+#pragma mark ---- lazying
+- (NSDateFormatter *)dateFormatter {
+    if (!_dateFormatter) {
+        _dateFormatter = [NSObject getDateformatter];
+    }
+    return _dateFormatter;
+}
+- (NSMutableArray *)dataArray {
+    if (!_dataArray) {
+        _dataArray = [NSMutableArray array];
+    }
+    return _dataArray;
+}
+
+- (EvaluateSortView *)sortView {
+    if (!_sortView) {
+        _sortView = [EvaluateSortView shareInstance];
+        MJWeakSelf;
+        [_sortView searchCallback:^(EVALUATESORT sortType, NSString * _Nullable searchKey) {
+            [weakSelf searchSource:sortType searchKey:searchKey];
+        }];
+    }
+    return _sortView;
+}
+
+- (void)searchSource:(EVALUATESORT)sortType searchKey:(NSString *)searchKey {
+    switch (sortType) {
+        case EVALUATESORT_TIME:
+        {
+            KSFullDatePicker *picker = [[KSFullDatePicker alloc] initWithTitle:@"" date:[NSDate date] pickMode:KSDATEPICKER_MODE_YEAR_MONTH sureButtonColor:THEMECOLOR selectDateBlock:^(NSString *date) {
+
+                self.chooseDate = date;
+                NSString *displayTime = [self getTimeDisplay:date];
+                [self.sortView.firstLabel setText:displayTime];
+                [self resetPickerStatus];
+                // 请求数据
+                [self refreshAndRequestData];
+            } cancleBlock:^{
+                [self resetPickerStatus];
+            }];
+            [picker show];
+        }
+            break;
+        case EVALUATESORT_STATUS:
+        {
+            MJWeakSelf;
+            KSSmallChoosePicker *picker = [[KSSmallChoosePicker alloc] initWithTitle:@"" sourceData:@[@"全部",@"已评价",@"未评价"] lastChoose:self.secondChooseIndex chooseColor:THEMECOLOR chooseReturnWithBlock:^(NSString * _Nonnull returnValue, NSInteger chooseIndex) {
+                weakSelf.secondChooseIndex = chooseIndex;
+                if (chooseIndex == 1) {
+                    [weakSelf.sortView.secondLabel setText:@"全部状态"];
+                    weakSelf.evaluateStatusString = nil;
+                }
+                else {
+                    [weakSelf.sortView.secondLabel setText:returnValue];
+                    [weakSelf evaluateStatusWithIndex:chooseIndex-1 isCourseStatus:YES];
+                }
+                weakSelf.sortView.secondArrowUp = NO;
+                [weakSelf refreshAndRequestData];
+            } cancel:^{
+                weakSelf.sortView.secondArrowUp = NO;
+            }];
+            [picker showPicker];
+        }
+            break;
+        case EVALUATESORT_COURSETYPE:
+        {
+            MJWeakSelf;
+            KSSmallChoosePicker *picker = [[KSSmallChoosePicker alloc] initWithTitle:@"" sourceData:@[@"全部",@"VIP定制课",@"趣纠课"] lastChoose:self.secondChooseIndex chooseColor:THEMECOLOR chooseReturnWithBlock:^(NSString * _Nonnull returnValue, NSInteger chooseIndex) {
+                weakSelf.secondChooseIndex = chooseIndex;
+                if (chooseIndex == 1) {
+                    [weakSelf.sortView.thirdLabel setText:@"全部课程"];
+                    weakSelf.courseType = nil;
+                }
+                else {
+                    [weakSelf.sortView.thirdLabel setText:returnValue];
+                    [weakSelf evaluateStatusWithIndex:chooseIndex-1 isCourseStatus:YES];
+                }
+                weakSelf.sortView.thirdArrowUp = NO;
+                [weakSelf refreshAndRequestData];
+            } cancel:^{
+                weakSelf.sortView.thirdArrowUp = NO;
+            }];
+            [picker showPicker];
+        }
+            break;
+        case EVALUATESORT_NAME:
+        {
+            self.searchKey = searchKey;
+            [self refreshAndRequestData];
+            
+        }
+            break;
+        default:
+            break;
+    }
+}
+
+- (void)evaluateStatusWithIndex:(NSInteger)chooseIndex isCourseStatus:(BOOL)isEvaluateStatus {
+    if (isEvaluateStatus) {
+        switch (chooseIndex) {
+            case 0:
+            {
+                self.evaluateStatusString = nil;
+                [self.sortView.secondLabel setText:@"全部状态"];
+            }
+                break;
+            case 1:
+            {
+                self.evaluateStatusString = @"1";
+            }
+                break;
+            case 2:
+            {
+                self.evaluateStatusString = @"0";
+            }
+                break;
+            default:
+                break;
+        }
+    }
+    else {
+        switch (chooseIndex) {
+            case 0:
+            {
+                self.courseType = nil;
+                [self.sortView.thirdLabel setText:@"全部课程"];
+            }
+                break;
+            case 1:
+            {
+                self.courseType = @"VIP";
+            }
+                break;
+            case 2:
+            {
+                self.courseType = @"PRACTICE";
+            }
+                break;
+            default:
+                break;
+        }
+    }
+}
+
+- (void)timeChooseAction {
+    KSFullDatePicker *picker = [[KSFullDatePicker alloc] initWithTitle:@"" date:[NSDate date] pickMode:KSDATEPICKER_MODE_YEAR_MONTH sureButtonColor:THEMECOLOR selectDateBlock:^(NSString *date) {
+
+        self.chooseDate = date;
+        NSString *displayTime = [self getTimeDisplay:date];
+        [self.sortView.firstLabel setText:displayTime];
+        [self resetPickerStatus];
+        // 请求数据
+        [self refreshAndRequestData];
+    } cancleBlock:^{
+        [self resetPickerStatus];
+    }];
+    [picker show];
+}
+
+- (void)resetPickerStatus {
+    self.sortView.firstArrowUp = NO;
+}
+
+- (NSString *)getTimeDisplay:(NSString *)chooseMonth {
+    [self.dateFormatter setDateFormat:@"yyyy-MM"];
+    NSDate *chooseDate = [self.dateFormatter dateFromString:chooseMonth];
+    [self.dateFormatter setDateFormat:@"yyyy年MM月"];
+    NSString *displayTime = [self.dateFormatter stringFromDate:chooseDate];
+    return displayTime;
+}
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 14 - 5
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateSortView.h

@@ -8,8 +8,10 @@
 #import <UIKit/UIKit.h>
 
 typedef NS_ENUM(NSInteger, EVALUATESORT) {
-    EVALUATESORT_TIME, //  搜索月份
-    EVALUATESORT_NAME, // 搜索学员姓名
+    EVALUATESORT_TIME = 1,   //  搜索月份
+    EVALUATESORT_STATUS,     // 状态
+    EVALUATESORT_COURSETYPE, // 课程类型
+    EVALUATESORT_NAME,       // 搜索学员姓名
 };
 
 typedef void(^EvaluateSortCallback)(EVALUATESORT sortType, NSString * _Nullable searchKey);
@@ -18,17 +20,24 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface EvaluateSortView : UIView
 
-@property (weak, nonatomic) IBOutlet UILabel *sortTitleLabel;
+@property (weak, nonatomic) IBOutlet UILabel *firstLabel;
+@property (weak, nonatomic) IBOutlet UILabel *secondLabel;
+@property (weak, nonatomic) IBOutlet UILabel *thirdLabel;
 
-@property (weak, nonatomic) IBOutlet UITextField *searchField;
+@property (nonatomic, assign) BOOL firstArrowUp;
+
+@property (nonatomic, assign) BOOL secondArrowUp;
 
+@property (nonatomic, assign) BOOL thirdArrowUp;
 
-@property (nonatomic, assign) BOOL arrowUp;
+@property (weak, nonatomic) IBOutlet UITextField *searchField;
 
 + (instancetype)shareInstance;
 
 - (void)searchCallback:(EvaluateSortCallback)callback;
 
++ (CGFloat)getViewHeight;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 88 - 15
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateSortView.m

@@ -7,17 +7,25 @@
 
 #import "EvaluateSortView.h"
 
-@interface EvaluateSortView ()
+@interface EvaluateSortView ()<UITextFieldDelegate>
 
-@property (weak, nonatomic) IBOutlet UIImageView *arrowImage;
+@property (weak, nonatomic) IBOutlet UIImageView *firstArrow;
+@property (weak, nonatomic) IBOutlet UIImageView *secondArrow;
+@property (weak, nonatomic) IBOutlet UIImageView *thirdArrow;
 
-@property (nonatomic, copy) EvaluateSortCallback callack;
+@property (nonatomic, copy) EvaluateSortCallback callback;
 
 @end
 
 
 @implementation EvaluateSortView
 
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    self.searchField.delegate = self;
+    self.searchField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"请输入学员昵称" attributes:@{NSForegroundColorAttributeName:HexRGBAlpha(0x000000, 0.4),NSFontAttributeName:[UIFont systemFontOfSize:14.0f]}];
+}
+
 + (instancetype)shareInstance {
     EvaluateSortView *view = [[[NSBundle mainBundle] loadNibNamed:@"EvaluateSortView" owner:nil options:nil] firstObject];
     return view;
@@ -25,29 +33,94 @@
 
 - (void)searchCallback:(EvaluateSortCallback)callback {
     if (callback) {
-        self.callack = callback;
+        self.callback = callback;
     }
 }
 
-- (IBAction)searchTime:(id)sender {
-    self.arrowUp = YES;
+- (IBAction)searchName:(id)sender {
     [self endEditing:YES];
-    if (self.callack) {
-        self.callack(EVALUATESORT_TIME, nil);
+    if (self.callback) {
+        self.callback(EVALUATESORT_NAME, self.searchField.text);
     }
 }
-- (IBAction)searchName:(id)sender {
+
+
++ (CGFloat)getViewHeight {
+    return 78.0f;
+}
+
+- (IBAction)buttonClickAction:(UIButton *)sender {
     [self endEditing:YES];
-    if (self.callack) {
-        self.callack(EVALUATESORT_NAME, self.searchField.text);
+    NSInteger index = sender.tag - 1000;
+    BOOL isHidden;
+    if (index == 1) {
+        self.firstArrowUp = !self.firstArrowUp;
+        self.secondArrowUp = NO;
+        self.thirdArrowUp = NO;
+        isHidden = !self.firstArrowUp;
+    }
+    else if (index == 2) {
+        self.secondArrowUp = !self.secondArrowUp;
+        self.firstArrowUp = NO;
+        self.thirdArrowUp = NO;
+        isHidden = !self.secondArrowUp;
+    }
+    else {
+        self.thirdArrowUp = !self.thirdArrowUp;
+        self.firstArrowUp = NO;
+        self.secondArrowUp = NO;
+        isHidden = !self.thirdArrowUp;
+    }
+    
+    if (self.callback) {
+        self.callback(index, self.searchField.text);
+    }
+}
+
+- (void)setFirstArrowUp:(BOOL)firstArrowUp {
+    _firstArrowUp = firstArrowUp;
+    NSString *imageName = firstArrowUp ? @"sort_up_blue" : @"sort_down_grey";
+    [_firstArrow setImage:[UIImage imageNamed:imageName]];
+    UIColor *titleColor = nil;
+    if (firstArrowUp) {
+        titleColor = THEMECOLOR;
+    }
+    else {
+        titleColor = HexRGB(0x131415);
+    }
+    _firstLabel.textColor = titleColor;
+}
+
+- (void)setSecondArrowUp:(BOOL)secondArrowUp {
+    _secondArrowUp = secondArrowUp;
+    NSString *imageName = secondArrowUp ? @"sort_up_blue" : @"sort_down_grey";
+    [_secondArrow setImage:[UIImage imageNamed:imageName]];
+
+    UIColor *titleColor = nil;
+    if (secondArrowUp) {
+        titleColor = THEMECOLOR;
+    }
+    else {
+        titleColor = HexRGB(0x131415);
     }
+    _secondLabel.textColor = titleColor;
 }
 
-- (void)setArrowUp:(BOOL)arrowUp {
-    _arrowUp = arrowUp;
-    NSString *imageName = arrowUp ? @"sort_up" : @"sort_down";
-    [self.arrowImage setImage:[UIImage imageNamed:imageName]];
+- (void)setThirdArrowUp:(BOOL)thirdArrowUp {
+    _thirdArrowUp = thirdArrowUp;
+    NSString *imageName = thirdArrowUp ? @"sort_up_blue" : @"sort_down_grey";
+    [_thirdArrow setImage:[UIImage imageNamed:imageName]];
+    UIColor *titleColor = nil;
+    if (thirdArrowUp) {
+        titleColor = THEMECOLOR;
+    }
+    else {
+        titleColor = HexRGB(0x131415);
+    }
+    _thirdLabel.textColor = titleColor;
 }
+
+
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 221 - 53
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateSortView.xib

@@ -1,55 +1,233 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="EvaluateSortView">
-            <rect key="frame" x="0.0" y="0.0" width="414" height="61"/>
+            <rect key="frame" x="0.0" y="0.0" width="375" height="78"/>
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
-                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2021年9月" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="M5I-2d-z3B">
-                    <rect key="frame" x="14" y="20.5" width="69" height="20"/>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="x9G-y7-iie">
+                    <rect key="frame" x="14" y="0.0" width="347" height="44"/>
+                    <subviews>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IFd-1a-y6L">
+                            <rect key="frame" x="0.0" y="0.0" width="109" height="44"/>
+                            <subviews>
+                                <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gbJ-4h-dKf">
+                                    <rect key="frame" x="5" y="11" width="127" height="22"/>
+                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="22" id="dwF-yc-GkS"/>
+                                    </constraints>
+                                    <userDefinedRuntimeAttributes>
+                                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                            <real key="value" value="11"/>
+                                        </userDefinedRuntimeAttribute>
+                                    </userDefinedRuntimeAttributes>
+                                </view>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="XXXX年XX月" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1fa-iN-45G">
+                                    <rect key="frame" x="17" y="12" width="89" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="t31-db-Fcj"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <color key="textColor" red="0.074509803920000006" green="0.078431372550000003" blue="0.08235294118" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="sort_down_grey" translatesAutoresizingMaskIntoConstraints="NO" id="SqU-Wc-6Yw">
+                                    <rect key="frame" x="111" y="19.5" width="9" height="5"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="5" id="Fi8-tj-hj2"/>
+                                        <constraint firstAttribute="width" constant="9" id="fdJ-PA-HvC"/>
+                                    </constraints>
+                                </imageView>
+                                <button opaque="NO" tag="1001" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hTC-I7-Cyo">
+                                    <rect key="frame" x="0.0" y="0.0" width="109" height="44"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <state key="normal">
+                                        <color key="titleColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    </state>
+                                    <connections>
+                                        <action selector="buttonClickAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="2YR-fV-hgH"/>
+                                    </connections>
+                                </button>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstItem="SqU-Wc-6Yw" firstAttribute="leading" secondItem="1fa-iN-45G" secondAttribute="trailing" constant="5" id="76C-Co-lbJ"/>
+                                <constraint firstItem="SqU-Wc-6Yw" firstAttribute="centerY" secondItem="IFd-1a-y6L" secondAttribute="centerY" id="8xC-90-GYf"/>
+                                <constraint firstItem="gbJ-4h-dKf" firstAttribute="leading" secondItem="1fa-iN-45G" secondAttribute="leading" constant="-12" id="FqB-Nw-qDf"/>
+                                <constraint firstAttribute="bottom" secondItem="hTC-I7-Cyo" secondAttribute="bottom" id="IAt-gl-goc"/>
+                                <constraint firstItem="hTC-I7-Cyo" firstAttribute="top" secondItem="IFd-1a-y6L" secondAttribute="top" id="JjM-3s-OhD"/>
+                                <constraint firstItem="gbJ-4h-dKf" firstAttribute="centerY" secondItem="1fa-iN-45G" secondAttribute="centerY" id="K8r-oR-GRq"/>
+                                <constraint firstItem="1fa-iN-45G" firstAttribute="centerY" secondItem="IFd-1a-y6L" secondAttribute="centerY" id="PNs-5G-8S1"/>
+                                <constraint firstItem="hTC-I7-Cyo" firstAttribute="leading" secondItem="IFd-1a-y6L" secondAttribute="leading" id="Sel-lU-8XE"/>
+                                <constraint firstAttribute="trailing" secondItem="hTC-I7-Cyo" secondAttribute="trailing" id="fKA-MM-a60"/>
+                                <constraint firstItem="1fa-iN-45G" firstAttribute="centerX" secondItem="IFd-1a-y6L" secondAttribute="centerX" constant="7" id="fSo-sh-o75"/>
+                                <constraint firstItem="SqU-Wc-6Yw" firstAttribute="trailing" secondItem="gbJ-4h-dKf" secondAttribute="trailing" constant="-12" id="uCd-HX-ekK"/>
+                            </constraints>
+                        </view>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SDP-ez-HRZ">
+                            <rect key="frame" x="119" y="0.0" width="109" height="44"/>
+                            <subviews>
+                                <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4v0-cz-am2">
+                                    <rect key="frame" x="21.5" y="11" width="94" height="22"/>
+                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="22" id="xpU-JD-z3z"/>
+                                    </constraints>
+                                    <userDefinedRuntimeAttributes>
+                                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                            <real key="value" value="11"/>
+                                        </userDefinedRuntimeAttribute>
+                                    </userDefinedRuntimeAttributes>
+                                </view>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="全部状态" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5hS-wq-oVp">
+                                    <rect key="frame" x="33.5" y="12" width="56" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="EyM-uD-sXb"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <color key="textColor" red="0.074509803920000006" green="0.078431372550000003" blue="0.08235294118" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="sort_down_grey" translatesAutoresizingMaskIntoConstraints="NO" id="w9r-et-yKk">
+                                    <rect key="frame" x="94.5" y="19.5" width="9" height="5"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="5" id="VJC-yR-RFn"/>
+                                        <constraint firstAttribute="width" constant="9" id="zvP-AK-RI9"/>
+                                    </constraints>
+                                </imageView>
+                                <button opaque="NO" tag="1002" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="BF6-nh-n2f">
+                                    <rect key="frame" x="0.0" y="0.0" width="109" height="44"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <state key="normal">
+                                        <color key="titleColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="calibratedRGB"/>
+                                    </state>
+                                    <connections>
+                                        <action selector="buttonClickAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="Ls4-H6-DYy"/>
+                                    </connections>
+                                </button>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstItem="BF6-nh-n2f" firstAttribute="leading" secondItem="SDP-ez-HRZ" secondAttribute="leading" id="H19-VD-oOe"/>
+                                <constraint firstItem="w9r-et-yKk" firstAttribute="leading" secondItem="5hS-wq-oVp" secondAttribute="trailing" constant="5" id="RMx-H6-uzL"/>
+                                <constraint firstItem="4v0-cz-am2" firstAttribute="leading" secondItem="5hS-wq-oVp" secondAttribute="leading" constant="-12" id="Rus-3A-kL6"/>
+                                <constraint firstItem="BF6-nh-n2f" firstAttribute="top" secondItem="SDP-ez-HRZ" secondAttribute="top" id="cN7-mj-BQt"/>
+                                <constraint firstAttribute="trailing" secondItem="BF6-nh-n2f" secondAttribute="trailing" id="hat-CQ-G5B"/>
+                                <constraint firstItem="5hS-wq-oVp" firstAttribute="centerY" secondItem="SDP-ez-HRZ" secondAttribute="centerY" id="kOR-2u-pot"/>
+                                <constraint firstAttribute="bottom" secondItem="BF6-nh-n2f" secondAttribute="bottom" id="pen-v5-XaT"/>
+                                <constraint firstItem="4v0-cz-am2" firstAttribute="centerY" secondItem="5hS-wq-oVp" secondAttribute="centerY" id="thk-AD-4Ym"/>
+                                <constraint firstItem="w9r-et-yKk" firstAttribute="trailing" secondItem="4v0-cz-am2" secondAttribute="trailing" constant="-12" id="wmr-rk-i4J"/>
+                                <constraint firstItem="w9r-et-yKk" firstAttribute="centerY" secondItem="SDP-ez-HRZ" secondAttribute="centerY" id="yA0-kC-SKH"/>
+                                <constraint firstItem="5hS-wq-oVp" firstAttribute="centerX" secondItem="SDP-ez-HRZ" secondAttribute="centerX" constant="7" id="yMg-YF-HMw"/>
+                            </constraints>
+                        </view>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GVT-4N-cKD">
+                            <rect key="frame" x="238" y="0.0" width="109" height="44"/>
+                            <subviews>
+                                <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="L6p-zh-qPg">
+                                    <rect key="frame" x="7.5" y="11" width="94" height="22"/>
+                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="22" id="Jco-K2-cay"/>
+                                    </constraints>
+                                    <userDefinedRuntimeAttributes>
+                                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                            <real key="value" value="11"/>
+                                        </userDefinedRuntimeAttribute>
+                                    </userDefinedRuntimeAttributes>
+                                </view>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="全部课程" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7fy-6y-8Ou">
+                                    <rect key="frame" x="19.5" y="12" width="56" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="M83-C1-0BJ"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <color key="textColor" red="0.074509803920000006" green="0.078431372550000003" blue="0.08235294118" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="sort_down_grey" translatesAutoresizingMaskIntoConstraints="NO" id="OFA-SI-iwf">
+                                    <rect key="frame" x="80.5" y="19.5" width="9" height="5"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="5" id="n6m-o2-aX2"/>
+                                        <constraint firstAttribute="width" constant="9" id="p7E-x6-HkY"/>
+                                    </constraints>
+                                </imageView>
+                                <button opaque="NO" tag="1003" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bOW-PN-AXX">
+                                    <rect key="frame" x="0.0" y="0.0" width="109" height="44"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <state key="normal">
+                                        <color key="titleColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    </state>
+                                    <connections>
+                                        <action selector="buttonClickAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="Xo2-T9-c1r"/>
+                                    </connections>
+                                </button>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstItem="L6p-zh-qPg" firstAttribute="centerY" secondItem="7fy-6y-8Ou" secondAttribute="centerY" id="3hp-jq-IGd"/>
+                                <constraint firstItem="bOW-PN-AXX" firstAttribute="leading" secondItem="GVT-4N-cKD" secondAttribute="leading" id="BmO-kZ-fPh"/>
+                                <constraint firstAttribute="trailing" secondItem="bOW-PN-AXX" secondAttribute="trailing" id="H6p-WY-1c1"/>
+                                <constraint firstItem="OFA-SI-iwf" firstAttribute="leading" secondItem="7fy-6y-8Ou" secondAttribute="trailing" constant="5" id="LeJ-tE-Gt6"/>
+                                <constraint firstItem="7fy-6y-8Ou" firstAttribute="centerY" secondItem="GVT-4N-cKD" secondAttribute="centerY" id="OL6-5t-6X4"/>
+                                <constraint firstItem="L6p-zh-qPg" firstAttribute="leading" secondItem="7fy-6y-8Ou" secondAttribute="leading" constant="-12" id="UtE-hA-4qN"/>
+                                <constraint firstItem="bOW-PN-AXX" firstAttribute="top" secondItem="GVT-4N-cKD" secondAttribute="top" id="cFr-dj-9rZ"/>
+                                <constraint firstItem="7fy-6y-8Ou" firstAttribute="centerX" secondItem="GVT-4N-cKD" secondAttribute="centerX" constant="-7" id="l8I-yj-hFR"/>
+                                <constraint firstItem="OFA-SI-iwf" firstAttribute="centerY" secondItem="GVT-4N-cKD" secondAttribute="centerY" id="mVQ-Qc-Oxi"/>
+                                <constraint firstItem="OFA-SI-iwf" firstAttribute="trailing" secondItem="L6p-zh-qPg" secondAttribute="trailing" constant="-12" id="sxc-Qo-tZf"/>
+                                <constraint firstAttribute="bottom" secondItem="bOW-PN-AXX" secondAttribute="bottom" id="ub0-Dh-9Ub"/>
+                            </constraints>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                     <constraints>
-                        <constraint firstAttribute="height" constant="20" id="u70-8J-U9I"/>
+                        <constraint firstItem="SDP-ez-HRZ" firstAttribute="width" secondItem="IFd-1a-y6L" secondAttribute="width" id="Boe-Si-gdi"/>
+                        <constraint firstItem="IFd-1a-y6L" firstAttribute="leading" secondItem="x9G-y7-iie" secondAttribute="leading" id="I4U-AO-Txb"/>
+                        <constraint firstItem="IFd-1a-y6L" firstAttribute="top" secondItem="x9G-y7-iie" secondAttribute="top" id="INn-Fg-Lrk"/>
+                        <constraint firstAttribute="bottom" secondItem="IFd-1a-y6L" secondAttribute="bottom" id="R4N-J3-nqh"/>
+                        <constraint firstItem="GVT-4N-cKD" firstAttribute="top" secondItem="IFd-1a-y6L" secondAttribute="top" id="VOP-NZ-JLb"/>
+                        <constraint firstItem="GVT-4N-cKD" firstAttribute="width" secondItem="IFd-1a-y6L" secondAttribute="width" id="dkI-oK-J7N"/>
+                        <constraint firstAttribute="trailing" secondItem="GVT-4N-cKD" secondAttribute="trailing" id="gJL-uU-20d"/>
+                        <constraint firstAttribute="height" constant="44" id="gre-bi-w9z"/>
+                        <constraint firstItem="SDP-ez-HRZ" firstAttribute="top" secondItem="IFd-1a-y6L" secondAttribute="top" id="ikR-HY-4lu"/>
+                        <constraint firstItem="GVT-4N-cKD" firstAttribute="leading" secondItem="SDP-ez-HRZ" secondAttribute="trailing" constant="10" id="k7I-6T-aqq"/>
+                        <constraint firstItem="GVT-4N-cKD" firstAttribute="bottom" secondItem="IFd-1a-y6L" secondAttribute="bottom" id="kut-EZ-Z0s"/>
+                        <constraint firstItem="SDP-ez-HRZ" firstAttribute="leading" secondItem="IFd-1a-y6L" secondAttribute="trailing" constant="10" id="vXX-eX-ASJ"/>
+                        <constraint firstItem="SDP-ez-HRZ" firstAttribute="bottom" secondItem="IFd-1a-y6L" secondAttribute="bottom" id="w9E-yB-GaI"/>
                     </constraints>
-                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
-                    <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
-                    <nil key="highlightedColor"/>
-                </label>
-                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="sort_down" translatesAutoresizingMaskIntoConstraints="NO" id="YUB-ts-V2i">
-                    <rect key="frame" x="86" y="27.5" width="8" height="6"/>
-                </imageView>
-                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="AsV-45-xOq">
-                    <rect key="frame" x="14" y="13.5" width="80" height="34"/>
-                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
-                    <connections>
-                        <action selector="searchTime:" destination="iN0-l3-epB" eventType="touchUpInside" id="qID-hI-voO"/>
-                    </connections>
-                </button>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
+                            <size key="value" width="0.0" height="2"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BEq-Bt-1Ls">
-                    <rect key="frame" x="108" y="12.5" width="292" height="36"/>
+                    <rect key="frame" x="14" y="44" width="347" height="34"/>
                     <subviews>
                         <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="search_green" translatesAutoresizingMaskIntoConstraints="NO" id="P0w-lm-3AD">
-                            <rect key="frame" x="11" y="10" width="15" height="16"/>
+                            <rect key="frame" x="11" y="9" width="15" height="16"/>
                             <constraints>
                                 <constraint firstAttribute="width" constant="15" id="ISG-3Z-SwA"/>
                                 <constraint firstAttribute="height" constant="16" id="XGT-6I-fGg"/>
                             </constraints>
                         </imageView>
                         <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入学员姓名" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="zoB-k9-KD9">
-                            <rect key="frame" x="35" y="0.0" width="192" height="36"/>
+                            <rect key="frame" x="35" y="0.0" width="247" height="34"/>
                             <fontDescription key="fontDescription" type="system" pointSize="13"/>
                             <textInputTraits key="textInputTraits"/>
                         </textField>
-                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bOe-Lg-d7s">
-                            <rect key="frame" x="232" y="4" width="56" height="28"/>
-                            <color key="backgroundColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
+                        <button opaque="NO" tag="1004" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bOe-Lg-d7s">
+                            <rect key="frame" x="287" y="3" width="56" height="28"/>
+                            <color key="backgroundColor" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="28" id="50Q-Et-0Tm"/>
                                 <constraint firstAttribute="width" constant="56" id="ioN-VE-htF"/>
@@ -63,7 +241,7 @@
                                 </userDefinedRuntimeAttribute>
                             </userDefinedRuntimeAttributes>
                             <connections>
-                                <action selector="searchName:" destination="iN0-l3-epB" eventType="touchUpInside" id="aIF-ww-mkW"/>
+                                <action selector="searchName:" destination="iN0-l3-epB" eventType="touchUpInside" id="BaO-da-viI"/>
                             </connections>
                         </button>
                     </subviews>
@@ -71,7 +249,7 @@
                     <constraints>
                         <constraint firstItem="zoB-k9-KD9" firstAttribute="top" secondItem="BEq-Bt-1Ls" secondAttribute="top" id="0jT-tu-Kvm"/>
                         <constraint firstItem="bOe-Lg-d7s" firstAttribute="centerY" secondItem="BEq-Bt-1Ls" secondAttribute="centerY" id="4fT-bY-3A6"/>
-                        <constraint firstAttribute="height" constant="36" id="P4Z-p1-cef"/>
+                        <constraint firstAttribute="height" constant="34" id="P4Z-p1-cef"/>
                         <constraint firstItem="P0w-lm-3AD" firstAttribute="centerY" secondItem="BEq-Bt-1Ls" secondAttribute="centerY" id="S5J-da-UfT"/>
                         <constraint firstAttribute="trailing" secondItem="bOe-Lg-d7s" secondAttribute="trailing" constant="4" id="To6-Ad-ECo"/>
                         <constraint firstItem="zoB-k9-KD9" firstAttribute="leading" secondItem="P0w-lm-3AD" secondAttribute="trailing" constant="9" id="bHG-PO-MnF"/>
@@ -81,47 +259,37 @@
                     </constraints>
                     <userDefinedRuntimeAttributes>
                         <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                            <real key="value" value="18"/>
+                            <real key="value" value="17"/>
                         </userDefinedRuntimeAttribute>
                     </userDefinedRuntimeAttributes>
                 </view>
-                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="D3Q-k6-VgK">
-                    <rect key="frame" x="0.0" y="0.0" width="414" height="1"/>
-                    <color key="backgroundColor" red="0.92941176470588238" green="0.92941176470588238" blue="0.92941176470588238" alpha="1" colorSpace="calibratedRGB"/>
-                    <constraints>
-                        <constraint firstAttribute="height" constant="1" id="kI5-PS-yBp"/>
-                    </constraints>
-                </view>
             </subviews>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
-                <constraint firstItem="YUB-ts-V2i" firstAttribute="centerY" secondItem="M5I-2d-z3B" secondAttribute="centerY" id="F0A-na-Ye3"/>
-                <constraint firstItem="M5I-2d-z3B" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="Nz7-Mo-tXg"/>
-                <constraint firstItem="BEq-Bt-1Ls" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="PpU-d4-ip4"/>
-                <constraint firstItem="D3Q-k6-VgK" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="SUI-8T-tUG"/>
+                <constraint firstItem="x9G-y7-iie" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="In2-es-4K8"/>
+                <constraint firstItem="x9G-y7-iie" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="Qb6-1f-NNI"/>
                 <constraint firstAttribute="trailing" secondItem="BEq-Bt-1Ls" secondAttribute="trailing" constant="14" id="Vsa-T8-3FS"/>
-                <constraint firstItem="M5I-2d-z3B" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="Xln-Cr-iSF"/>
-                <constraint firstItem="YUB-ts-V2i" firstAttribute="trailing" secondItem="AsV-45-xOq" secondAttribute="trailing" id="e3c-OI-gI2"/>
-                <constraint firstItem="D3Q-k6-VgK" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="f0l-iw-KFN"/>
-                <constraint firstItem="BEq-Bt-1Ls" firstAttribute="leading" secondItem="YUB-ts-V2i" secondAttribute="trailing" constant="14" id="fss-ae-MLg"/>
-                <constraint firstItem="M5I-2d-z3B" firstAttribute="leading" secondItem="AsV-45-xOq" secondAttribute="leading" id="khy-8M-4pv"/>
-                <constraint firstItem="YUB-ts-V2i" firstAttribute="leading" secondItem="M5I-2d-z3B" secondAttribute="trailing" constant="3" id="sPd-hx-OO0"/>
-                <constraint firstItem="YUB-ts-V2i" firstAttribute="centerY" secondItem="AsV-45-xOq" secondAttribute="centerY" id="sZi-oM-MY2"/>
-                <constraint firstAttribute="trailing" secondItem="D3Q-k6-VgK" secondAttribute="trailing" id="zy6-hu-nDV"/>
+                <constraint firstItem="BEq-Bt-1Ls" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="WUz-6x-8QT"/>
+                <constraint firstItem="BEq-Bt-1Ls" firstAttribute="top" secondItem="x9G-y7-iie" secondAttribute="bottom" id="eYT-e1-ZfK"/>
+                <constraint firstAttribute="trailing" secondItem="x9G-y7-iie" secondAttribute="trailing" constant="14" id="l00-oS-5hu"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
             <nil key="simulatedBottomBarMetrics"/>
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
             <connections>
-                <outlet property="arrowImage" destination="YUB-ts-V2i" id="g4O-R2-X4x"/>
+                <outlet property="firstArrow" destination="SqU-Wc-6Yw" id="mwW-T1-wA9"/>
+                <outlet property="firstLabel" destination="1fa-iN-45G" id="umY-dh-u49"/>
                 <outlet property="searchField" destination="zoB-k9-KD9" id="S9K-ba-s64"/>
-                <outlet property="sortTitleLabel" destination="M5I-2d-z3B" id="78R-ox-CWI"/>
+                <outlet property="secondArrow" destination="w9r-et-yKk" id="cim-TT-6yT"/>
+                <outlet property="secondLabel" destination="5hS-wq-oVp" id="LUk-mm-dgi"/>
+                <outlet property="thirdArrow" destination="OFA-SI-iwf" id="bAx-Pz-dKR"/>
+                <outlet property="thirdLabel" destination="7fy-6y-8Ou" id="5Rb-3o-dzb"/>
             </connections>
-            <point key="canvasLocation" x="137.68115942028987" y="-187.83482142857142"/>
+            <point key="canvasLocation" x="136.95652173913044" y="-180.80357142857142"/>
         </view>
     </objects>
     <resources>
-        <image name="search_green" width="15" height="16"/>
-        <image name="sort_down" width="8" height="6"/>
+        <image name="search_green" width="16" height="16"/>
+        <image name="sort_down_grey" width="9" height="5"/>
     </resources>
 </document>

+ 30 - 30
KulexiuForTeacher/KulexiuForTeacher/Module/Home/ReceiveEvaluate/Controller/ReceiveEvaluateListController.m

@@ -91,36 +91,36 @@
 }
 
 - (void)requestData {
-    [LOADING_MANAGER showCustomLoading:@"加载中..."];
-    [KSNetworkingManager myReceiveRepliedRequest:KS_POST classMonth:self.chooseDate search:self.searchKey page:self.pages rows:self.rows success:^(NSDictionary * _Nonnull dic) {
-        [LOADING_MANAGER removeCustomLoading];
-        [self endRefresh];
-        if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
-            NSArray *sourceArray = [[dic ks_dictionaryValueForKey:@"data"] ks_arrayValueForKey:@"rows"];
-            NSLog(@"%@",[dic mj_JSONString]);
-            for (NSDictionary *parm in sourceArray) {
-                ReceiveListModel *model = [[ReceiveListModel alloc] initWithDictionary:parm];
-                [self.dataArray addObject:model];
-            }
-            if (sourceArray.count < self.rows) {
-                self.isLoadMore = NO;
-            }
-        }
-        else {
-            [LOADING_MANAGER MBShowAUTOHidingInWindow:MESSAGEKEY];
-        }
-        
-        [self.tableView reloadData];
-        [self changePromptLabelState];
-    } faliure:^(NSError * _Nonnull error) {
-        [LOADING_MANAGER removeCustomLoading];
-        [self endRefresh];
-        if (self.networkAvaiable == NO) {
-            [self setPromptString:@"暂无网络" imageName:@"no_networking" inView:self.tableView];
-        }
-        [self.dataArray removeAllObjects];
-        [self.tableView reloadData];
-    }];
+//    [LOADING_MANAGER showCustomLoading:@"加载中..."];
+//    [KSNetworkingManager myReceiveRepliedRequest:KS_POST classMonth:self.chooseDate search:self.searchKey page:self.pages rows:self.rows success:^(NSDictionary * _Nonnull dic) {
+//        [LOADING_MANAGER removeCustomLoading];
+//        [self endRefresh];
+//        if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
+//            NSArray *sourceArray = [[dic ks_dictionaryValueForKey:@"data"] ks_arrayValueForKey:@"rows"];
+//            NSLog(@"%@",[dic mj_JSONString]);
+//            for (NSDictionary *parm in sourceArray) {
+//                ReceiveListModel *model = [[ReceiveListModel alloc] initWithDictionary:parm];
+//                [self.dataArray addObject:model];
+//            }
+//            if (sourceArray.count < self.rows) {
+//                self.isLoadMore = NO;
+//            }
+//        }
+//        else {
+//            [LOADING_MANAGER MBShowAUTOHidingInWindow:MESSAGEKEY];
+//        }
+//        
+//        [self.tableView reloadData];
+//        [self changePromptLabelState];
+//    } faliure:^(NSError * _Nonnull error) {
+//        [LOADING_MANAGER removeCustomLoading];
+//        [self endRefresh];
+//        if (self.networkAvaiable == NO) {
+//            [self setPromptString:@"暂无网络" imageName:@"no_networking" inView:self.tableView];
+//        }
+//        [self.dataArray removeAllObjects];
+//        [self.tableView reloadData];
+//    }];
 }
 
 - (void)resetParamenter {

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/ReceiveEvaluate/Model/ReceiveListModel.h

@@ -26,6 +26,7 @@
 @property (nonatomic, strong) NSString *userId;
 @property (nonatomic, strong) NSString *startTime;
 @property (nonatomic, strong) NSString *score;
+@property (nonatomic, strong) NSString *courseGroupName;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;

+ 8 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Home/ReceiveEvaluate/Model/ReceiveListModel.m

@@ -23,6 +23,7 @@ NSString *const kReceiveListModelSubjectName = @"subjectName";
 NSString *const kReceiveListModelUserId = @"userId";
 NSString *const kReceiveListModelStartTime = @"startTime";
 NSString *const kReceiveListModelScore = @"score";
+NSString *const kReceiveListModelCourseGroupName = @"courseGroupName";
 
 
 @interface ReceiveListModel ()
@@ -48,7 +49,7 @@ NSString *const kReceiveListModelScore = @"score";
 @synthesize userId = _userId;
 @synthesize startTime = _startTime;
 @synthesize score = _score;
-
+@synthesize courseGroupName = _courseGroupName;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
 {
@@ -77,6 +78,7 @@ NSString *const kReceiveListModelScore = @"score";
             self.userId = [self objectOrNilForKey:kReceiveListModelUserId fromDictionary:dict];
             self.startTime = [self objectOrNilForKey:kReceiveListModelStartTime fromDictionary:dict];
             self.score = [self objectOrNilForKey:kReceiveListModelScore fromDictionary:dict];
+        self.courseGroupName = [self objectOrNilForKey:kReceiveListModelCourseGroupName fromDictionary:dict];
 
     }
     
@@ -102,7 +104,8 @@ NSString *const kReceiveListModelScore = @"score";
     [mutableDict setValue:self.userId forKey:kReceiveListModelUserId];
     [mutableDict setValue:self.startTime forKey:kReceiveListModelStartTime];
     [mutableDict setValue:self.score forKey:kReceiveListModelScore];
-
+    [mutableDict setValue:self.courseGroupName forKey:kReceiveListModelCourseGroupName];
+    
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
 
@@ -144,6 +147,7 @@ NSString *const kReceiveListModelScore = @"score";
     self.userId = [aDecoder decodeObjectForKey:kReceiveListModelUserId];
     self.startTime = [aDecoder decodeObjectForKey:kReceiveListModelStartTime];
     self.score = [aDecoder decodeObjectForKey:kReceiveListModelScore];
+    self.courseGroupName = [aDecoder decodeObjectForKey:kReceiveListModelCourseGroupName];
     return self;
 }
 
@@ -165,6 +169,7 @@ NSString *const kReceiveListModelScore = @"score";
     [aCoder encodeObject:_userId forKey:kReceiveListModelUserId];
     [aCoder encodeObject:_startTime forKey:kReceiveListModelStartTime];
     [aCoder encodeObject:_score forKey:kReceiveListModelScore];
+    [aCoder encodeObject:_courseGroupName forKey:kReceiveListModelCourseGroupName];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -188,6 +193,7 @@ NSString *const kReceiveListModelScore = @"score";
         copy.userId = [self.userId copyWithZone:zone];
         copy.startTime = [self.startTime copyWithZone:zone];
         copy.score = [self.score copyWithZone:zone];
+        copy.courseGroupName = [self.courseGroupName copyWithZone:zone];
     }
     
     return copy;

+ 10 - 20
KulexiuForTeacher/KulexiuForTeacher/Module/Home/ReceiveEvaluate/View/ReceiveHeaderView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -14,7 +14,7 @@
             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
             <subviews>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2021年9月" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fme-uE-7Ow">
-                    <rect key="frame" x="14" y="26.5" width="69" height="20"/>
+                    <rect key="frame" x="14" y="26.5" width="72.5" height="20"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="20" id="HPQ-7d-UR2"/>
                     </constraints>
@@ -23,17 +23,17 @@
                     <nil key="highlightedColor"/>
                 </label>
                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="sort_down" translatesAutoresizingMaskIntoConstraints="NO" id="7fU-gS-SKP">
-                    <rect key="frame" x="86" y="33.5" width="8" height="6"/>
+                    <rect key="frame" x="89.5" y="30.5" width="12" height="12"/>
                 </imageView>
                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vqj-4K-BVm">
-                    <rect key="frame" x="14" y="19.5" width="80" height="34"/>
+                    <rect key="frame" x="14" y="19.5" width="87.5" height="34"/>
                     <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                     <connections>
                         <action selector="searchTime:" destination="iN0-l3-epB" eventType="touchUpInside" id="SP3-IV-Bv5"/>
                     </connections>
                 </button>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wXs-Bd-5S0">
-                    <rect key="frame" x="108" y="18.5" width="292" height="36"/>
+                    <rect key="frame" x="115.5" y="18.5" width="284.5" height="36"/>
                     <subviews>
                         <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="search_green" translatesAutoresizingMaskIntoConstraints="NO" id="s4c-Q0-TYc">
                             <rect key="frame" x="11" y="10" width="15" height="16"/>
@@ -43,12 +43,12 @@
                             </constraints>
                         </imageView>
                         <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入学员姓名" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Vex-QS-IHP">
-                            <rect key="frame" x="35" y="0.0" width="192" height="36"/>
+                            <rect key="frame" x="35" y="0.0" width="184.5" height="36"/>
                             <fontDescription key="fontDescription" type="system" pointSize="13"/>
                             <textInputTraits key="textInputTraits"/>
                         </textField>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DDn-7b-hcS">
-                            <rect key="frame" x="232" y="4" width="56" height="28"/>
+                            <rect key="frame" x="224.5" y="4" width="56" height="28"/>
                             <color key="backgroundColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="28" id="BPM-4T-4az"/>
@@ -85,29 +85,19 @@
                         </userDefinedRuntimeAttribute>
                     </userDefinedRuntimeAttributes>
                 </view>
-                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ybM-sf-CSV">
-                    <rect key="frame" x="0.0" y="0.0" width="414" height="1"/>
-                    <color key="backgroundColor" red="0.92941176470588238" green="0.92941176470588238" blue="0.92941176470588238" alpha="1" colorSpace="calibratedRGB"/>
-                    <constraints>
-                        <constraint firstAttribute="height" constant="1" id="EpJ-hH-Zy2"/>
-                    </constraints>
-                </view>
             </subviews>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
                 <constraint firstItem="fme-uE-7Ow" firstAttribute="leading" secondItem="vqj-4K-BVm" secondAttribute="leading" id="6dC-mx-lcV"/>
-                <constraint firstAttribute="trailing" secondItem="ybM-sf-CSV" secondAttribute="trailing" id="85v-Pd-xZM"/>
                 <constraint firstItem="7fU-gS-SKP" firstAttribute="centerY" secondItem="fme-uE-7Ow" secondAttribute="centerY" id="Pxi-av-yUO"/>
                 <constraint firstAttribute="trailing" secondItem="wXs-Bd-5S0" secondAttribute="trailing" constant="14" id="SUd-3K-vdQ"/>
                 <constraint firstItem="wXs-Bd-5S0" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="UmU-Lb-sMp"/>
-                <constraint firstItem="ybM-sf-CSV" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="X95-ZU-JBF"/>
                 <constraint firstItem="7fU-gS-SKP" firstAttribute="centerY" secondItem="vqj-4K-BVm" secondAttribute="centerY" id="g0T-wk-gGS"/>
                 <constraint firstItem="fme-uE-7Ow" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="lIV-hp-nh3"/>
                 <constraint firstItem="7fU-gS-SKP" firstAttribute="trailing" secondItem="vqj-4K-BVm" secondAttribute="trailing" id="roe-bQ-20o"/>
                 <constraint firstItem="wXs-Bd-5S0" firstAttribute="leading" secondItem="7fU-gS-SKP" secondAttribute="trailing" constant="14" id="sqH-Qp-IcS"/>
                 <constraint firstItem="7fU-gS-SKP" firstAttribute="leading" secondItem="fme-uE-7Ow" secondAttribute="trailing" constant="3" id="vNk-kT-TR0"/>
                 <constraint firstItem="fme-uE-7Ow" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="wWz-Sd-WyV"/>
-                <constraint firstItem="ybM-sf-CSV" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="xZh-XA-oV7"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
             <nil key="simulatedBottomBarMetrics"/>
@@ -121,7 +111,7 @@
         </view>
     </objects>
     <resources>
-        <image name="search_green" width="15" height="16"/>
-        <image name="sort_down" width="8" height="6"/>
+        <image name="search_green" width="16" height="16"/>
+        <image name="sort_down" width="12" height="12"/>
     </resources>
 </document>

+ 3 - 3
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/VIPProgramCreate/MineVipProgramMainView.xib

@@ -222,7 +222,7 @@
                                 <fragment content="您的课程预计收入为:单课时">
                                     <attributes>
                                         <color key="NSColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                        <font key="NSFont" size="14" name=".PingFangUITextSC-Regular"/>
+                                        <font key="NSFont" metaFont="system" size="14"/>
                                         <font key="NSOriginalFont" metaFont="system" size="14"/>
                                         <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
                                     </attributes>
@@ -251,7 +251,7 @@
                                 <fragment content="元">
                                     <attributes>
                                         <color key="NSColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                        <font key="NSFont" size="14" name=".PingFangUITextSC-Regular"/>
+                                        <font key="NSFont" metaFont="system" size="14"/>
                                         <font key="NSOriginalFont" metaFont="system" size="14"/>
                                         <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
                                     </attributes>
@@ -266,7 +266,7 @@
                                 <fragment content="节">
                                     <attributes>
                                         <color key="NSColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                        <font key="NSFont" size="14" name=".PingFangUITextSC-Regular"/>
+                                        <font key="NSFont" metaFont="system" size="14"/>
                                         <font key="NSOriginalFont" metaFont="system" size="14"/>
                                         <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
                                     </attributes>