Steven před 3 roky
rodič
revize
35d5f24c40
22 změnil soubory, kde provedl 662 přidání a 126 odebrání
  1. 16 0
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj
  2. binární
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate
  3. 20 4
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 1 1
      KulexiuForTeacher/KulexiuForTeacher/AppDelegate.m
  5. 12 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSBaseWKWebViewController.m
  6. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/KSChatListViewController.m
  7. 14 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/Controller/GroupSettingViewController.m
  8. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/Controller/KSSelectConversationViewController.m
  9. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Search/Controller/KSSearchHistoryMessageController.m
  10. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/View/KSChatGroupListCell.m
  11. 18 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/Controller/MusicRoomHomeworkStudentController.h
  12. 109 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/Controller/MusicRoomHomeworkStudentController.m
  13. 16 10
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/Model/HomeworkListModel.h
  14. 110 68
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/Model/HomeworkListModel.m
  15. 30 12
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/View/HomeworkBodyView.m
  16. 17 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/View/HomeworkListCell.m
  17. 19 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/View/MusicRoomHomeworkCell.h
  18. 79 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/View/MusicRoomHomeworkCell.m
  19. 193 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/View/MusicRoomHomeworkCell.xib
  20. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/MyCourse/View/MusicRoomCourseCell.m
  21. 2 25
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/MyCourse/View/MusicRoomCourseCell.xib
  22. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineBodyView.m

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

@@ -603,6 +603,9 @@
 		BCA353E0285976CF00377661 /* MusicRoomCourseInfoCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCA353DE285976CF00377661 /* MusicRoomCourseInfoCell.xib */; };
 		BCA353E42859797500377661 /* MusicRoomStudentCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA353E22859797400377661 /* MusicRoomStudentCell.m */; };
 		BCA353E52859797500377661 /* MusicRoomStudentCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCA353E32859797400377661 /* MusicRoomStudentCell.xib */; };
+		BCA353E92859A6FB00377661 /* MusicRoomHomeworkCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA353E72859A6FA00377661 /* MusicRoomHomeworkCell.m */; };
+		BCA353EA2859A6FB00377661 /* MusicRoomHomeworkCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCA353E82859A6FA00377661 /* MusicRoomHomeworkCell.xib */; };
+		BCA353ED2859B4EC00377661 /* MusicRoomHomeworkStudentController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA353EC2859B4EC00377661 /* MusicRoomHomeworkStudentController.m */; };
 		BCA723FB2806A96000DA0D0D /* HomeworkDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA723FA2806A96000DA0D0D /* HomeworkDetailViewController.m */; };
 		BCA723FF2806AEA000DA0D0D /* AccompanyHomeworkCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA723FD2806AEA000DA0D0D /* AccompanyHomeworkCell.m */; };
 		BCA724002806AEA000DA0D0D /* AccompanyHomeworkCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCA723FE2806AEA000DA0D0D /* AccompanyHomeworkCell.xib */; };
@@ -1891,6 +1894,11 @@
 		BCA353E12859797400377661 /* MusicRoomStudentCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MusicRoomStudentCell.h; sourceTree = "<group>"; };
 		BCA353E22859797400377661 /* MusicRoomStudentCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MusicRoomStudentCell.m; sourceTree = "<group>"; };
 		BCA353E32859797400377661 /* MusicRoomStudentCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MusicRoomStudentCell.xib; sourceTree = "<group>"; };
+		BCA353E62859A6FA00377661 /* MusicRoomHomeworkCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MusicRoomHomeworkCell.h; sourceTree = "<group>"; };
+		BCA353E72859A6FA00377661 /* MusicRoomHomeworkCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MusicRoomHomeworkCell.m; sourceTree = "<group>"; };
+		BCA353E82859A6FA00377661 /* MusicRoomHomeworkCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MusicRoomHomeworkCell.xib; sourceTree = "<group>"; };
+		BCA353EB2859B4EC00377661 /* MusicRoomHomeworkStudentController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MusicRoomHomeworkStudentController.h; sourceTree = "<group>"; };
+		BCA353EC2859B4EC00377661 /* MusicRoomHomeworkStudentController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MusicRoomHomeworkStudentController.m; sourceTree = "<group>"; };
 		BCA723F92806A96000DA0D0D /* HomeworkDetailViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeworkDetailViewController.h; sourceTree = "<group>"; };
 		BCA723FA2806A96000DA0D0D /* HomeworkDetailViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeworkDetailViewController.m; sourceTree = "<group>"; };
 		BCA723FC2806AEA000DA0D0D /* AccompanyHomeworkCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AccompanyHomeworkCell.h; sourceTree = "<group>"; };
@@ -4340,6 +4348,8 @@
 				BC41103728066C2F00800BD9 /* HomeworkListViewController.m */,
 				BCA723F92806A96000DA0D0D /* HomeworkDetailViewController.h */,
 				BCA723FA2806A96000DA0D0D /* HomeworkDetailViewController.m */,
+				BCA353EB2859B4EC00377661 /* MusicRoomHomeworkStudentController.h */,
+				BCA353EC2859B4EC00377661 /* MusicRoomHomeworkStudentController.m */,
 			);
 			path = Controller;
 			sourceTree = "<group>";
@@ -4363,6 +4373,9 @@
 				BC4110462806706800800BD9 /* HomeworkListCell.h */,
 				BC4110472806706800800BD9 /* HomeworkListCell.m */,
 				BC4110482806706800800BD9 /* HomeworkListCell.xib */,
+				BCA353E62859A6FA00377661 /* MusicRoomHomeworkCell.h */,
+				BCA353E72859A6FA00377661 /* MusicRoomHomeworkCell.m */,
+				BCA353E82859A6FA00377661 /* MusicRoomHomeworkCell.xib */,
 				BC41104B280678E600800BD9 /* HomeworkSortView.h */,
 				BC41104C280678E600800BD9 /* HomeworkSortView.m */,
 				BC41104E280678ED00800BD9 /* HomeworkSortView.xib */,
@@ -5864,6 +5877,7 @@
 				BCC03F9F280579A500461B7C /* MyLiveCourseCell.xib in Resources */,
 				BCB6340627F6A2F000ACFDCF /* tick.wav in Resources */,
 				BC8B6E522856ED0600866917 /* UMCommonLog.bundle in Resources */,
+				BCA353EA2859A6FB00377661 /* MusicRoomHomeworkCell.xib in Resources */,
 				2755C07127EC7F21007D9070 /* ChatComplainBodyView.xib in Resources */,
 				BC1365C9280D476500EB03E2 /* NotiferMessageCell.xib in Resources */,
 				BC5EB5B7280402CB00B4A3B0 /* MyStyleInstrumentCell.xib in Resources */,
@@ -6301,6 +6315,7 @@
 				BCB6340927F6A35700ACFDCF /* LiveroomTimeManager.m in Sources */,
 				27F9030627E86CBD00C08A19 /* DeviceCheckView.m in Sources */,
 				275B16EF27EAF9B20081FDEF /* ChatNavView.m in Sources */,
+				BCA353E92859A6FB00377661 /* MusicRoomHomeworkCell.m in Sources */,
 				BCEA752028190CEB00886A86 /* CardBandResultViewController.m in Sources */,
 				BCC9F43627F69BD200647449 /* SongDownloadMessage.m in Sources */,
 				275B170527EB13420081FDEF /* KSChatListViewController.m in Sources */,
@@ -6457,6 +6472,7 @@
 				BC542E3628406F7700633781 /* UserAuthBodyView.m in Sources */,
 				2779321827E30FC30010E277 /* SkipTextField.m in Sources */,
 				BCC9F41C27F69BD200647449 /* RecentSharedView.m in Sources */,
+				BCA353ED2859B4EC00377661 /* MusicRoomHomeworkStudentController.m in Sources */,
 				27A2F63027E70E57009E2380 /* UserInfo.m in Sources */,
 				BCEA751A2818D59300886A86 /* BankNameModel.m in Sources */,
 				277932E827E310070010E277 /* NSBundle+TZImagePicker.m in Sources */,

binární
KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate


+ 20 - 4
KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -218,8 +218,8 @@
             filePath = "KulexiuForTeacher/Common/Base/KSBaseWKWebViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1173"
-            endingLineNumber = "1173"
+            startingLineNumber = "1185"
+            endingLineNumber = "1185"
             landmarkName = "-documentPicker:didPickDocumentAtURL:"
             landmarkType = "7">
          </BreakpointContent>
@@ -234,8 +234,8 @@
             filePath = "KulexiuForTeacher/Common/Base/KSBaseWKWebViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1143"
-            endingLineNumber = "1143"
+            startingLineNumber = "1155"
+            endingLineNumber = "1155"
             landmarkName = "-documentPicker:didPickDocumentAtURL:"
             landmarkType = "7">
          </BreakpointContent>
@@ -592,5 +592,21 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "7D20DFA9-B712-455D-904D-1A8D77BB7501"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Home/Homework/View/HomeworkBodyView.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "115"
+            endingLineNumber = "115"
+            landmarkName = "-requestData"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/AppDelegate.m

@@ -450,7 +450,7 @@ didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
     if (message.conversationType == ConversationType_CHATROOM) { // 聊天室类型为直播
         [[KSIMService sharedService] ksOnReceivedChatroom:message left:left object:@""];
     }
-    if (message.conversationType == ConversationType_GROUP && ![message.targetId containsString:@"LIVE"] && ![message.targetId containsString:@"FAN"]) { // 网络教室视频聊天
+    if (message.conversationType == ConversationType_GROUP && ![message.targetId containsString:@"COURSE"] && ![message.targetId containsString:@"FAN"]) { // 网络教室视频聊天
         [[RCIMClient sharedRCIMClient] clearMessagesUnreadStatus:ConversationType_GROUP targetId:message.targetId];
         [[KSIMService sharedService] ksOnReceived:message left:left object:@""];
     }

+ 12 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSBaseWKWebViewController.m

@@ -27,6 +27,7 @@
 #import "KSEnterLiveroomManager.h"
 #import "KSUMShareManager.h"
 #import "TZImageManager.h"
+#import "MusicRoomViewController.h"
 
 typedef NS_ENUM(NSInteger, CHOOSETYPE) {
     CHOOSETYPE_XML,
@@ -489,6 +490,17 @@ typedef NS_ENUM(NSInteger, CHOOSETYPE) {
             }
         }
     }
+    else if ([[parm stringValueForKey:@"api"] isEqualToString:@"openCourseDetail"]) {
+        NSDictionary *valueDic = [parm dictionaryValueForKey:@"content"];
+        NSString *type = [valueDic stringValueForKey:@"type"];
+        if ([type isEqualToString:@"pianoRoom"]) { // 琴房
+            NSString *courseId = [valueDic stringValueForKey:@"courseId"];
+            MusicRoomViewController *ctrl = [[MusicRoomViewController alloc] init];
+            ctrl.courseId = courseId;
+            [self.navigationController pushViewController:ctrl animated:YES];
+        }
+        
+    }
 }
 
 - (void)savePicCallback:(NSString *)uuid isSuccess:(BOOL)isSuccess {

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/KSChatListViewController.m

@@ -135,7 +135,7 @@
 - (NSMutableArray *)willReloadTableData:(NSMutableArray *)dataSource {
     NSMutableArray *array = [NSMutableArray array];
     for (RCConversationModel *model in dataSource) {
-        if (model.conversationType == ConversationType_GROUP && ![model.targetId containsString:@"FAN"] && ![model.targetId containsString:@"LIVE"]) {
+        if (model.conversationType == ConversationType_GROUP && ![model.targetId containsString:@"FAN"] && ![model.targetId containsString:@"COURSE"]) {
             [[RCIMClient sharedRCIMClient] clearMessagesUnreadStatus:ConversationType_GROUP targetId:model.targetId];
         }
         else {

+ 14 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/Controller/GroupSettingViewController.m

@@ -16,6 +16,7 @@
 #import "GroupNoticeViewController.h"
 #import "GroupApplyViewController.h"
 #import "ModifyNameViewController.h"
+#import "KSNormalAlertView.h"
 
 @interface GroupSettingViewController ()
 
@@ -27,6 +28,8 @@
 
 @property (nonatomic, assign) NSInteger applyCount;
 
+@property (nonatomic, strong) KSNormalAlertView *alertView;
+
 @end
 
 @implementation GroupSettingViewController
@@ -207,7 +210,7 @@
             break;
         case GROUPSETTING_DISMISS: // 解散群聊
         {
-            [self dismissGroup];
+            [self showDismissAlert];
         }
             break;
         default:
@@ -215,8 +218,17 @@
     }
 }
 
+- (void)showDismissAlert {
+    MJWeakSelf;
+    self.alertView = [KSNormalAlertView ks_showAlertWithTitle:@"确认解散群聊吗" leftTitle:@"取消" rightTitle:@"确认" inView:self.view cancel:^{
+        
+    } confirm:^{
+        [weakSelf dismissGroup];
+    }];
+}
+
 - (void)dismissGroup {
-#warning 二次弹窗确认
+
     [KSNetworkingManager imGroupDismiss:KS_POST groupId:self.groupId success:^(NSDictionary * _Nonnull dic) {
         if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
             MJWeakSelf;

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/Controller/KSSelectConversationViewController.m

@@ -53,7 +53,7 @@ typedef void (^CompleteBlock)(NSArray *conversationList);
     NSArray *conversationArray = [[RCIMClient sharedRCIMClient] getConversationList:@[@(ConversationType_PRIVATE), @(ConversationType_GROUP)]];
     
     for (RCConversation *conversation in conversationArray) {
-        if (conversation.conversationType == ConversationType_GROUP && ![conversation.targetId containsString:@"FAN"] && ![conversation.targetId containsString:@"LIVE"]) { // 视频聊天群不添加
+        if (conversation.conversationType == ConversationType_GROUP && ![conversation.targetId containsString:@"FAN"] && ![conversation.targetId containsString:@"COURSE"]) { // 视频聊天群不添加
             
         }
         else {

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Search/Controller/KSSearchHistoryMessageController.m

@@ -169,7 +169,7 @@
                 messegeModel.portraitUri = group.portraitUri;
             }
             messegeModel.count = searchResult.matchCount;
-            if (messegeModel.conversationType == ConversationType_GROUP && ![messegeModel.targetId containsString:@"FAN"] && ![messegeModel.targetId containsString:@"LIVE"]) { // 视频课聊天群不添加
+            if (messegeModel.conversationType == ConversationType_GROUP && ![messegeModel.targetId containsString:@"FAN"] && ![messegeModel.targetId containsString:@"COURSE"]) { // 视频课聊天群不添加
                 
             }
             else {

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/View/KSChatGroupListCell.m

@@ -35,7 +35,7 @@
 - (void)setDataModel:(RCConversationModel *)model {
     NSString *defaultLogo = @"";
     NSString *typeLogo = @"";
-    if ([model.targetId containsString:@"FAN"]) {
+    if ([model.targetId containsString:@"COURSE"]) {
         defaultLogo = @"chat_fansGroup_logo";
         typeLogo = @"group_fans";
     }

+ 18 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/Controller/MusicRoomHomeworkStudentController.h

@@ -0,0 +1,18 @@
+//
+//  MusicRoomHomeworkStudentController.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/6/15.
+//
+
+#import "KSBaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MusicRoomHomeworkStudentController : KSBaseViewController
+
+@property (nonatomic, strong) NSString *courseId;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 109 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/Controller/MusicRoomHomeworkStudentController.m

@@ -0,0 +1,109 @@
+//
+//  MusicRoomHomeworkStudentController.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/6/15.
+//
+
+#import "MusicRoomHomeworkStudentController.h"
+#import "MusicRoomDetailModel.h"
+#import "MusicRoomStudentCell.h"
+#import "HomeworkDetailViewController.h"
+
+@interface MusicRoomHomeworkStudentController ()<UITableViewDelegate,UITableViewDataSource>
+@property (nonatomic, strong) MusicRoomDetailModel *detailModel;
+
+@property (nonatomic, strong) UITableView *tableView;
+
+@property (nonatomic, strong) NSMutableArray *studentArray;
+
+@end
+
+@implementation MusicRoomHomeworkStudentController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    [self allocTitle:@"课程学员"];
+    [self configUI];
+}
+
+- (void)configUI {
+    [self.scrollView removeFromSuperview];
+    [self.view addSubview:self.tableView];
+    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.mas_equalTo(self.view);
+        make.top.mas_equalTo(self.view.mas_top).offset(10);
+        make.bottom.mas_equalTo(self.view.mas_bottom).offset(-iPhoneXSafeBottomMargin);
+    }];
+}
+
+
+- (void)viewWillAppear:(BOOL)animated {
+    [super viewWillAppear:animated];
+    [self requestData];
+}
+
+- (void)requestData {
+    [self showhud];
+    [KSNetworkingManager musicRoomDetailRequest:KS_POST courseId:self.courseId success:^(NSDictionary * _Nonnull dic) {
+        [self removehub];
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            self.detailModel = [[MusicRoomDetailModel alloc] initWithDictionary:[dic dictionaryValueForKey:@"data"]];
+            self.studentArray = [NSMutableArray arrayWithArray:self.detailModel.studentHomeworkList.records];
+        }
+        else {
+            [self MBPShow:MESSAGEKEY];
+        }
+        [self.tableView reloadData];
+    } faliure:^(NSError * _Nonnull error) {
+        [self removehub];
+    }];
+}
+#pragma mark ----- tablb data source
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    return self.studentArray.count;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+    
+    Records *studentModel = self.studentArray[indexPath.row];
+    MusicRoomStudentCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MusicRoomStudentCell"];
+    [cell configWithStudentInfo:studentModel];
+    return cell;
+}
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+    Records *studentModel = self.studentArray[indexPath.row];
+    HomeworkDetailViewController *detailCtrl = [[HomeworkDetailViewController alloc] init];
+    detailCtrl.courseId = self.detailModel.courseId;
+    detailCtrl.studentId = studentModel.studentId;
+    [self.navigationController pushViewController:detailCtrl animated:YES];
+}
+
+- (UITableView *)tableView {
+    if (!_tableView) {
+        _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
+        _tableView.delegate = self;
+        _tableView.dataSource = self;
+        _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
+        _tableView.showsVerticalScrollIndicator = NO;
+        _tableView.showsHorizontalScrollIndicator = NO;
+        _tableView.backgroundColor = [UIColor clearColor];
+        _tableView.rowHeight = UITableViewAutomaticDimension;
+        _tableView.estimatedRowHeight = 136.0f;
+        [_tableView registerNib:[UINib nibWithNibName:@"MusicRoomStudentCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"MusicRoomStudentCell"];
+    }
+    return _tableView;
+}
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 16 - 10
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/Model/HomeworkListModel.h

@@ -1,7 +1,7 @@
 //
 //  HomeworkListModel.h
 //
-//  Created by Steven  on 2022/4/18
+//  Created by Steven  on 2022/6/15
 //  Copyright (c) 2022 __MyCompanyName__. All rights reserved.
 //
 
@@ -11,20 +11,26 @@
 
 @interface HomeworkListModel : NSObject <NSCoding, NSCopying>
 
-@property (nonatomic, strong) NSString *courseGroupId;
-@property (nonatomic, strong) NSString *classDate;
-@property (nonatomic, strong) NSString *teacherAvatar;
-@property (nonatomic, strong) NSString *decorateTime;
+@property (nonatomic, strong) NSString *backgroundPic;
 @property (nonatomic, assign) double absenteeism;
-@property (nonatomic, strong) NSString *courseId;
-@property (nonatomic, strong) NSString *teacherName;
-@property (nonatomic, strong) NSString *studentId;
 @property (nonatomic, strong) NSString *studentName;
-@property (nonatomic, strong) NSString *subjectName;
+@property (nonatomic, assign) double classNum;
+@property (nonatomic, strong) NSString *courseGroupName;
+@property (nonatomic, strong) NSString *homeworkId;
+@property (nonatomic, strong) NSString *teacherName;
+@property (nonatomic, strong) NSString *decorateTime;
 @property (nonatomic, strong) NSString *endTime;
-@property (nonatomic, strong) NSString *studentAvatar;
+@property (nonatomic, strong) NSString *subjectName;
+@property (nonatomic, strong) NSString *type;
+@property (nonatomic, strong) NSString *teacherId;
 @property (nonatomic, strong) NSString *submitTime;
+@property (nonatomic, strong) NSString *studentId;
+@property (nonatomic, strong) NSString *courseId;
+@property (nonatomic, strong) NSString *courseGroupId;
+@property (nonatomic, strong) NSString *studentAvatar;
+@property (nonatomic, strong) NSString *classDate;
 @property (nonatomic, strong) NSString *startTime;
+@property (nonatomic, strong) NSString *teacherAvatar;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;

+ 110 - 68
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/Model/HomeworkListModel.m

@@ -1,27 +1,34 @@
 //
 //  HomeworkListModel.m
 //
-//  Created by Steven  on 2022/4/18
+//  Created by Steven  on 2022/6/15
 //  Copyright (c) 2022 __MyCompanyName__. All rights reserved.
 //
 
 #import "HomeworkListModel.h"
 
 
-NSString *const kHomeworkListModelCourseGroupId = @"courseGroupId";
-NSString *const kHomeworkListModelClassDate = @"classDate";
-NSString *const kHomeworkListModelTeacherAvatar = @"teacherAvatar";
-NSString *const kHomeworkListModelDecorateTime = @"decorateTime";
+NSString *const kHomeworkListModelBackgroundPic = @"backgroundPic";
 NSString *const kHomeworkListModelAbsenteeism = @"absenteeism";
-NSString *const kHomeworkListModelCourseId = @"courseId";
-NSString *const kHomeworkListModelTeacherName = @"teacherName";
 NSString *const kHomeworkListModelStudentName = @"studentName";
-NSString *const kHomeworkListModelSubjectName = @"subjectName";
+NSString *const kHomeworkListModelClassNum = @"classNum";
+NSString *const kHomeworkListModelCourseGroupName = @"courseGroupName";
+NSString *const kHomeworkListModelHomeworkId = @"homeworkId";
+NSString *const kHomeworkListModelTeacherName = @"teacherName";
+NSString *const kHomeworkListModelDecorateTime = @"decorateTime";
 NSString *const kHomeworkListModelEndTime = @"endTime";
-NSString *const kHomeworkListModelStudentAvatar = @"studentAvatar";
+NSString *const kHomeworkListModelSubjectName = @"subjectName";
+NSString *const kHomeworkListModelType = @"type";
+NSString *const kHomeworkListModelTeacherId = @"teacherId";
 NSString *const kHomeworkListModelSubmitTime = @"submitTime";
-NSString *const kHomeworkListModelStartTime = @"startTime";
 NSString *const kHomeworkListModelStudentId = @"studentId";
+NSString *const kHomeworkListModelCourseId = @"courseId";
+NSString *const kHomeworkListModelCourseGroupId = @"courseGroupId";
+NSString *const kHomeworkListModelStudentAvatar = @"studentAvatar";
+NSString *const kHomeworkListModelClassDate = @"classDate";
+NSString *const kHomeworkListModelStartTime = @"startTime";
+NSString *const kHomeworkListModelTeacherAvatar = @"teacherAvatar";
+
 
 @interface HomeworkListModel ()
 
@@ -31,20 +38,27 @@ NSString *const kHomeworkListModelStudentId = @"studentId";
 
 @implementation HomeworkListModel
 
-@synthesize courseGroupId = _courseGroupId;
-@synthesize classDate = _classDate;
-@synthesize teacherAvatar = _teacherAvatar;
-@synthesize decorateTime = _decorateTime;
+@synthesize backgroundPic = _backgroundPic;
 @synthesize absenteeism = _absenteeism;
-@synthesize courseId = _courseId;
-@synthesize teacherName = _teacherName;
 @synthesize studentName = _studentName;
-@synthesize subjectName = _subjectName;
+@synthesize classNum = _classNum;
+@synthesize courseGroupName = _courseGroupName;
+@synthesize homeworkId = _homeworkId;
+@synthesize teacherName = _teacherName;
+@synthesize decorateTime = _decorateTime;
 @synthesize endTime = _endTime;
-@synthesize studentAvatar = _studentAvatar;
+@synthesize subjectName = _subjectName;
+@synthesize type = _type;
+@synthesize teacherId = _teacherId;
 @synthesize submitTime = _submitTime;
-@synthesize startTime = _startTime;
 @synthesize studentId = _studentId;
+@synthesize courseId = _courseId;
+@synthesize courseGroupId = _courseGroupId;
+@synthesize studentAvatar = _studentAvatar;
+@synthesize classDate = _classDate;
+@synthesize startTime = _startTime;
+@synthesize teacherAvatar = _teacherAvatar;
+
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
 {
@@ -58,20 +72,27 @@ NSString *const kHomeworkListModelStudentId = @"studentId";
     // This check serves to make sure that a non-NSDictionary object
     // passed into the model class doesn't break the parsing.
     if(self && [dict isKindOfClass:[NSDictionary class]]) {
-            self.courseGroupId = [self objectOrNilForKey:kHomeworkListModelCourseGroupId fromDictionary:dict];
-            self.classDate = [self objectOrNilForKey:kHomeworkListModelClassDate fromDictionary:dict];
-            self.teacherAvatar = [self objectOrNilForKey:kHomeworkListModelTeacherAvatar fromDictionary:dict];
-            self.decorateTime = [self objectOrNilForKey:kHomeworkListModelDecorateTime fromDictionary:dict];
+            self.backgroundPic = [self objectOrNilForKey:kHomeworkListModelBackgroundPic fromDictionary:dict];
             self.absenteeism = [[self objectOrNilForKey:kHomeworkListModelAbsenteeism fromDictionary:dict] doubleValue];
-            self.courseId = [self objectOrNilForKey:kHomeworkListModelCourseId fromDictionary:dict];
-            self.teacherName = [self objectOrNilForKey:kHomeworkListModelTeacherName fromDictionary:dict];
             self.studentName = [self objectOrNilForKey:kHomeworkListModelStudentName fromDictionary:dict];
-            self.subjectName = [self objectOrNilForKey:kHomeworkListModelSubjectName fromDictionary:dict];
+            self.classNum = [[self objectOrNilForKey:kHomeworkListModelClassNum fromDictionary:dict] doubleValue];
+            self.courseGroupName = [self objectOrNilForKey:kHomeworkListModelCourseGroupName fromDictionary:dict];
+            self.homeworkId = [self objectOrNilForKey:kHomeworkListModelHomeworkId fromDictionary:dict];
+            self.teacherName = [self objectOrNilForKey:kHomeworkListModelTeacherName fromDictionary:dict];
+            self.decorateTime = [self objectOrNilForKey:kHomeworkListModelDecorateTime fromDictionary:dict];
             self.endTime = [self objectOrNilForKey:kHomeworkListModelEndTime fromDictionary:dict];
-            self.studentAvatar = [self objectOrNilForKey:kHomeworkListModelStudentAvatar fromDictionary:dict];
+            self.subjectName = [self objectOrNilForKey:kHomeworkListModelSubjectName fromDictionary:dict];
+            self.type = [self objectOrNilForKey:kHomeworkListModelType fromDictionary:dict];
+            self.teacherId = [self objectOrNilForKey:kHomeworkListModelTeacherId fromDictionary:dict];
             self.submitTime = [self objectOrNilForKey:kHomeworkListModelSubmitTime fromDictionary:dict];
-            self.startTime = [self objectOrNilForKey:kHomeworkListModelStartTime fromDictionary:dict];
             self.studentId = [self objectOrNilForKey:kHomeworkListModelStudentId fromDictionary:dict];
+            self.courseId = [self objectOrNilForKey:kHomeworkListModelCourseId fromDictionary:dict];
+            self.courseGroupId = [self objectOrNilForKey:kHomeworkListModelCourseGroupId fromDictionary:dict];
+            self.studentAvatar = [self objectOrNilForKey:kHomeworkListModelStudentAvatar fromDictionary:dict];
+            self.classDate = [self objectOrNilForKey:kHomeworkListModelClassDate fromDictionary:dict];
+            self.startTime = [self objectOrNilForKey:kHomeworkListModelStartTime fromDictionary:dict];
+            self.teacherAvatar = [self objectOrNilForKey:kHomeworkListModelTeacherAvatar fromDictionary:dict];
+
     }
     
     return self;
@@ -81,20 +102,27 @@ NSString *const kHomeworkListModelStudentId = @"studentId";
 - (NSDictionary *)dictionaryRepresentation
 {
     NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
-    [mutableDict setValue:self.courseGroupId forKey:kHomeworkListModelCourseGroupId];
-    [mutableDict setValue:self.classDate forKey:kHomeworkListModelClassDate];
-    [mutableDict setValue:self.teacherAvatar forKey:kHomeworkListModelTeacherAvatar];
-    [mutableDict setValue:self.decorateTime forKey:kHomeworkListModelDecorateTime];
+    [mutableDict setValue:self.backgroundPic forKey:kHomeworkListModelBackgroundPic];
     [mutableDict setValue:[NSNumber numberWithDouble:self.absenteeism] forKey:kHomeworkListModelAbsenteeism];
-    [mutableDict setValue:self.courseId forKey:kHomeworkListModelCourseId];
-    [mutableDict setValue:self.teacherName forKey:kHomeworkListModelTeacherName];
     [mutableDict setValue:self.studentName forKey:kHomeworkListModelStudentName];
-    [mutableDict setValue:self.subjectName forKey:kHomeworkListModelSubjectName];
+    [mutableDict setValue:[NSNumber numberWithDouble:self.classNum] forKey:kHomeworkListModelClassNum];
+    [mutableDict setValue:self.courseGroupName forKey:kHomeworkListModelCourseGroupName];
+    [mutableDict setValue:self.homeworkId forKey:kHomeworkListModelHomeworkId];
+    [mutableDict setValue:self.teacherName forKey:kHomeworkListModelTeacherName];
+    [mutableDict setValue:self.decorateTime forKey:kHomeworkListModelDecorateTime];
     [mutableDict setValue:self.endTime forKey:kHomeworkListModelEndTime];
-    [mutableDict setValue:self.studentAvatar forKey:kHomeworkListModelStudentAvatar];
+    [mutableDict setValue:self.subjectName forKey:kHomeworkListModelSubjectName];
+    [mutableDict setValue:self.type forKey:kHomeworkListModelType];
+    [mutableDict setValue:self.teacherId forKey:kHomeworkListModelTeacherId];
     [mutableDict setValue:self.submitTime forKey:kHomeworkListModelSubmitTime];
-    [mutableDict setValue:self.startTime forKey:kHomeworkListModelStartTime];
     [mutableDict setValue:self.studentId forKey:kHomeworkListModelStudentId];
+    [mutableDict setValue:self.courseId forKey:kHomeworkListModelCourseId];
+    [mutableDict setValue:self.courseGroupId forKey:kHomeworkListModelCourseGroupId];
+    [mutableDict setValue:self.studentAvatar forKey:kHomeworkListModelStudentAvatar];
+    [mutableDict setValue:self.classDate forKey:kHomeworkListModelClassDate];
+    [mutableDict setValue:self.startTime forKey:kHomeworkListModelStartTime];
+    [mutableDict setValue:self.teacherAvatar forKey:kHomeworkListModelTeacherAvatar];
+
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
 
@@ -107,10 +135,6 @@ NSString *const kHomeworkListModelStudentId = @"studentId";
 - (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict
 {
     id object = [dict objectForKey:aKey];
-    if ([object isKindOfClass:[NSNumber class]]) {
-        NSNumber *number = object;
-        object = [number stringValue];
-    }
     return [object isEqual:[NSNull null]] ? nil : object;
 }
 
@@ -121,40 +145,52 @@ NSString *const kHomeworkListModelStudentId = @"studentId";
 {
     self = [super init];
 
-    self.courseGroupId = [aDecoder decodeObjectForKey:kHomeworkListModelCourseGroupId];
-    self.classDate = [aDecoder decodeObjectForKey:kHomeworkListModelClassDate];
-    self.teacherAvatar = [aDecoder decodeObjectForKey:kHomeworkListModelTeacherAvatar];
-    self.decorateTime = [aDecoder decodeObjectForKey:kHomeworkListModelDecorateTime];
+    self.backgroundPic = [aDecoder decodeObjectForKey:kHomeworkListModelBackgroundPic];
     self.absenteeism = [aDecoder decodeDoubleForKey:kHomeworkListModelAbsenteeism];
-    self.courseId = [aDecoder decodeObjectForKey:kHomeworkListModelCourseId];
-    self.teacherName = [aDecoder decodeObjectForKey:kHomeworkListModelTeacherName];
     self.studentName = [aDecoder decodeObjectForKey:kHomeworkListModelStudentName];
-    self.subjectName = [aDecoder decodeObjectForKey:kHomeworkListModelSubjectName];
+    self.classNum = [aDecoder decodeDoubleForKey:kHomeworkListModelClassNum];
+    self.courseGroupName = [aDecoder decodeObjectForKey:kHomeworkListModelCourseGroupName];
+    self.homeworkId = [aDecoder decodeObjectForKey:kHomeworkListModelHomeworkId];
+    self.teacherName = [aDecoder decodeObjectForKey:kHomeworkListModelTeacherName];
+    self.decorateTime = [aDecoder decodeObjectForKey:kHomeworkListModelDecorateTime];
     self.endTime = [aDecoder decodeObjectForKey:kHomeworkListModelEndTime];
-    self.studentAvatar = [aDecoder decodeObjectForKey:kHomeworkListModelStudentAvatar];
+    self.subjectName = [aDecoder decodeObjectForKey:kHomeworkListModelSubjectName];
+    self.type = [aDecoder decodeObjectForKey:kHomeworkListModelType];
+    self.teacherId = [aDecoder decodeObjectForKey:kHomeworkListModelTeacherId];
     self.submitTime = [aDecoder decodeObjectForKey:kHomeworkListModelSubmitTime];
-    self.startTime = [aDecoder decodeObjectForKey:kHomeworkListModelStartTime];
     self.studentId = [aDecoder decodeObjectForKey:kHomeworkListModelStudentId];
+    self.courseId = [aDecoder decodeObjectForKey:kHomeworkListModelCourseId];
+    self.courseGroupId = [aDecoder decodeObjectForKey:kHomeworkListModelCourseGroupId];
+    self.studentAvatar = [aDecoder decodeObjectForKey:kHomeworkListModelStudentAvatar];
+    self.classDate = [aDecoder decodeObjectForKey:kHomeworkListModelClassDate];
+    self.startTime = [aDecoder decodeObjectForKey:kHomeworkListModelStartTime];
+    self.teacherAvatar = [aDecoder decodeObjectForKey:kHomeworkListModelTeacherAvatar];
     return self;
 }
 
 - (void)encodeWithCoder:(NSCoder *)aCoder
 {
 
-    [aCoder encodeObject:_courseGroupId forKey:kHomeworkListModelCourseGroupId];
-    [aCoder encodeObject:_classDate forKey:kHomeworkListModelClassDate];
-    [aCoder encodeObject:_teacherAvatar forKey:kHomeworkListModelTeacherAvatar];
-    [aCoder encodeObject:_decorateTime forKey:kHomeworkListModelDecorateTime];
+    [aCoder encodeObject:_backgroundPic forKey:kHomeworkListModelBackgroundPic];
     [aCoder encodeDouble:_absenteeism forKey:kHomeworkListModelAbsenteeism];
-    [aCoder encodeObject:_courseId forKey:kHomeworkListModelCourseId];
-    [aCoder encodeObject:_teacherName forKey:kHomeworkListModelTeacherName];
     [aCoder encodeObject:_studentName forKey:kHomeworkListModelStudentName];
-    [aCoder encodeObject:_subjectName forKey:kHomeworkListModelSubjectName];
+    [aCoder encodeDouble:_classNum forKey:kHomeworkListModelClassNum];
+    [aCoder encodeObject:_courseGroupName forKey:kHomeworkListModelCourseGroupName];
+    [aCoder encodeObject:_homeworkId forKey:kHomeworkListModelHomeworkId];
+    [aCoder encodeObject:_teacherName forKey:kHomeworkListModelTeacherName];
+    [aCoder encodeObject:_decorateTime forKey:kHomeworkListModelDecorateTime];
     [aCoder encodeObject:_endTime forKey:kHomeworkListModelEndTime];
-    [aCoder encodeObject:_studentAvatar forKey:kHomeworkListModelStudentAvatar];
+    [aCoder encodeObject:_subjectName forKey:kHomeworkListModelSubjectName];
+    [aCoder encodeObject:_type forKey:kHomeworkListModelType];
+    [aCoder encodeObject:_teacherId forKey:kHomeworkListModelTeacherId];
     [aCoder encodeObject:_submitTime forKey:kHomeworkListModelSubmitTime];
-    [aCoder encodeObject:_startTime forKey:kHomeworkListModelStartTime];
     [aCoder encodeObject:_studentId forKey:kHomeworkListModelStudentId];
+    [aCoder encodeObject:_courseId forKey:kHomeworkListModelCourseId];
+    [aCoder encodeObject:_courseGroupId forKey:kHomeworkListModelCourseGroupId];
+    [aCoder encodeObject:_studentAvatar forKey:kHomeworkListModelStudentAvatar];
+    [aCoder encodeObject:_classDate forKey:kHomeworkListModelClassDate];
+    [aCoder encodeObject:_startTime forKey:kHomeworkListModelStartTime];
+    [aCoder encodeObject:_teacherAvatar forKey:kHomeworkListModelTeacherAvatar];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -163,20 +199,26 @@ NSString *const kHomeworkListModelStudentId = @"studentId";
     
     if (copy) {
 
-        copy.courseGroupId = [self.courseGroupId copyWithZone:zone];
-        copy.classDate = [self.classDate copyWithZone:zone];
-        copy.teacherAvatar = [self.teacherAvatar copyWithZone:zone];
-        copy.decorateTime = [self.decorateTime copyWithZone:zone];
+        copy.backgroundPic = [self.backgroundPic copyWithZone:zone];
         copy.absenteeism = self.absenteeism;
-        copy.courseId = [self.courseId copyWithZone:zone];
-        copy.teacherName = [self.teacherName copyWithZone:zone];
         copy.studentName = [self.studentName copyWithZone:zone];
-        copy.subjectName = [self.subjectName copyWithZone:zone];
+        copy.classNum = self.classNum;
+        copy.courseGroupName = [self.courseGroupName copyWithZone:zone];
+        copy.homeworkId = [self.homeworkId copyWithZone:zone];
+        copy.teacherName = [self.teacherName copyWithZone:zone];
+        copy.decorateTime = [self.decorateTime copyWithZone:zone];
         copy.endTime = [self.endTime copyWithZone:zone];
-        copy.studentAvatar = [self.studentAvatar copyWithZone:zone];
+        copy.subjectName = [self.subjectName copyWithZone:zone];
+        copy.type = [self.type copyWithZone:zone];
+        copy.teacherId = [self.teacherId copyWithZone:zone];
         copy.submitTime = [self.submitTime copyWithZone:zone];
-        copy.startTime = [self.startTime copyWithZone:zone];
         copy.studentId = [self.studentId copyWithZone:zone];
+        copy.courseId = [self.courseId copyWithZone:zone];
+        copy.courseGroupId = [self.courseGroupId copyWithZone:zone];
+        copy.studentAvatar = [self.studentAvatar copyWithZone:zone];
+        copy.classDate = [self.classDate copyWithZone:zone];
+        copy.startTime = [self.startTime copyWithZone:zone];
+        copy.teacherAvatar = [self.teacherAvatar copyWithZone:zone];
     }
     
     return copy;

+ 30 - 12
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/View/HomeworkBodyView.m

@@ -12,6 +12,8 @@
 #import "KSFullDatePicker.h"
 #import "HomeworkDetailViewController.h"
 #import "HomeworkListModel.h"
+#import "MusicRoomHomeworkCell.h"
+#import "MusicRoomHomeworkStudentController.h"
 
 @interface HomeworkBodyView ()<UITableViewDelegate,UITableViewDataSource>
 
@@ -60,7 +62,8 @@
         self.tableView.tableFooterView = bottomView;
         
         [self.tableView registerNib:[UINib nibWithNibName:@"HomeworkListCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"HomeworkListCell"];
-
+        [self.tableView registerNib:[UINib nibWithNibName:@"MusicRoomHomeworkCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"MusicRoomHomeworkCell"];
+        
         [self.dateFormatter setDateFormat:@"yyyy-MM"];
         NSDate *currentDate = [NSDate date];
         self.chooseDate = [self.dateFormatter stringFromDate:currentDate];
@@ -181,13 +184,20 @@
 
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
     HomeworkListModel *model = self.dataArray[indexPath.row];
-    HomeworkListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"HomeworkListCell"];
-    [cell configWithSource:model];
-    MJWeakSelf;
-    [cell chatWithStudent:^(NSString * _Nonnull userId, NSString * _Nonnull userName) {
-        [weakSelf chatStudent:userId name:userName];
-    }];
-    return cell;
+    if ([model.type isEqualToString:@"PIANO_ROOM_CLASS"]) { // 琴房课作业
+        MusicRoomHomeworkCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MusicRoomHomeworkCell"];
+        [cell configWithSource:model];
+        return cell;
+    }
+    else {
+        HomeworkListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"HomeworkListCell"];
+        [cell configWithSource:model];
+        MJWeakSelf;
+        [cell chatWithStudent:^(NSString * _Nonnull userId, NSString * _Nonnull userName) {
+            [weakSelf chatStudent:userId name:userName];
+        }];
+        return cell;
+    }
 }
 
 - (void)chatStudent:(NSString *)studentId name:(NSString *)name {
@@ -201,10 +211,18 @@
 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
     // 进入作业详情
     HomeworkListModel *model = self.dataArray[indexPath.row];
-    HomeworkDetailViewController *detailVC = [[HomeworkDetailViewController alloc] init];
-    detailVC.courseId = model.courseId;
-    detailVC.studentId = model.studentId;
-    [self.naviController pushViewController:detailVC animated:YES];
+    if ([model.type isEqualToString:@"PIANO_ROOM_CLASS"]) { // 琴房课详情
+        MusicRoomHomeworkStudentController *ctrl = [[MusicRoomHomeworkStudentController alloc] init];
+        ctrl.courseId = model.courseId;
+        [self.naviController pushViewController:ctrl animated:YES];
+    }
+    else {
+        HomeworkDetailViewController *detailVC = [[HomeworkDetailViewController alloc] init];
+        detailVC.courseId = model.courseId;
+        detailVC.studentId = model.studentId;
+        [self.naviController pushViewController:detailVC animated:YES];
+    }
+    
 }
 
 /**

+ 17 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/View/HomeworkListCell.m

@@ -58,6 +58,23 @@
 
     self.userId = sourceModel.studentId;
     self.userName = sourceModel.studentName;
+    // 课程状态
+    NSDate *date = [NSDate date];
+    NSTimeInterval beginTimeInteval = [startDate timeIntervalSince1970];
+    NSTimeInterval endTimeInterval = [endDate timeIntervalSince1970];
+    NSTimeInterval currentInterval = [date timeIntervalSince1970];
+    if (currentInterval < beginTimeInteval) { // 未开始
+        self.statusLabel.text = @"未开始";
+        self.statusLabel.textColor = HexRGB(0xff802c);
+    }
+    else if (currentInterval > beginTimeInteval && currentInterval < endTimeInterval) {
+        self.statusLabel.text = @"进行中";
+        self.statusLabel.textColor = THEMECOLOR;
+    }
+    else {
+        self.statusLabel.text = @"已结束";
+        self.statusLabel.textColor = HexRGB(0x999999);
+    }
 }
 
 - (void)chatWithStudent:(HomeworkChatCallback)callback {

+ 19 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/View/MusicRoomHomeworkCell.h

@@ -0,0 +1,19 @@
+//
+//  MusicRoomHomeworkCell.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/6/15.
+//
+
+#import <UIKit/UIKit.h>
+#import "HomeworkListModel.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MusicRoomHomeworkCell : UITableViewCell
+
+- (void)configWithSource:(HomeworkListModel *)sourceModel;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 79 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/View/MusicRoomHomeworkCell.m

@@ -0,0 +1,79 @@
+//
+//  MusicRoomHomeworkCell.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/6/15.
+//
+
+#import "MusicRoomHomeworkCell.h"
+
+@interface MusicRoomHomeworkCell ()
+
+@property (weak, nonatomic) IBOutlet UILabel *courseDesc;
+
+@property (weak, nonatomic) IBOutlet UIView *colorView;
+
+@property (weak, nonatomic) IBOutlet UILabel *courseTimeLabel;
+
+@property (weak, nonatomic) IBOutlet UILabel *courseName;
+
+@property (weak, nonatomic) IBOutlet UILabel *subjectName;
+
+@property (weak, nonatomic) IBOutlet UILabel *statusLabel;
+
+@end
+
+@implementation MusicRoomHomeworkCell
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+    self.selectionStyle = UITableViewCellSelectionStyleNone;
+    CAGradientLayer * gradientLayer = [CAGradientLayer layer];
+    gradientLayer.colors = @[(__bridge id)HexRGB(0xFFBC90).CGColor,(__bridge id)HexRGB(0xFF7021).CGColor];
+    gradientLayer.startPoint = CGPointMake(0, 0);
+    gradientLayer.endPoint = CGPointMake(0, 1);
+    gradientLayer.frame = CGRectMake(0, 0, 42, 42);
+    [self.colorView.layer addSublayer:gradientLayer];
+    [self.colorView bringSubviewToFront:self.courseDesc];
+}
+
+- (void)configWithSource:(HomeworkListModel *)sourceModel {
+    // time
+    NSDateFormatter *formatter = [NSObject getDateformatter];
+    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
+    NSDate *startDate = [formatter dateFromString:sourceModel.startTime];
+    NSDate *endDate = [formatter dateFromString:sourceModel.endTime];
+    [formatter setDateFormat:@"yyyy/MM/dd HH:mm"];
+    NSString *lessonBegin = [formatter stringFromDate:startDate];
+    [formatter setDateFormat:@"HH:mm"];
+    NSString *lessonEnd = [formatter stringFromDate:endDate];
+    self.courseTimeLabel.text = [NSString stringWithFormat:@"%@~%@",[NSString returnNoNullStringWithString:lessonBegin],[NSString returnNoNullStringWithString:lessonEnd]];
+    self.subjectName.text = [NSString returnNoNullStringWithString:sourceModel.subjectName];
+    self.courseName.text = [NSString stringWithFormat:@"%@第%.0f课",sourceModel.courseGroupName, sourceModel.classNum];
+    NSDate *date = [NSDate date];
+    NSTimeInterval beginTimeInteval = [startDate timeIntervalSince1970];
+    NSTimeInterval endTimeInterval = [endDate timeIntervalSince1970];
+    NSTimeInterval currentInterval = [date timeIntervalSince1970];
+    if (currentInterval < beginTimeInteval) { // 未开始
+        self.statusLabel.text = @"未开始";
+        self.statusLabel.textColor = HexRGB(0xff802c);
+    }
+    else if (currentInterval > beginTimeInteval && currentInterval < endTimeInterval) {
+        self.statusLabel.text = @"进行中";
+        self.statusLabel.textColor = THEMECOLOR;
+    }
+    else {
+        self.statusLabel.text = @"已结束";
+        self.statusLabel.textColor = HexRGB(0x999999);
+    }
+}
+
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+@end

+ 193 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/View/MusicRoomHomeworkCell.xib

@@ -0,0 +1,193 @@
+<?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">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <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"/>
+    </dependencies>
+    <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="127" id="KGk-i7-Jjw" customClass="MusicRoomHomeworkCell">
+            <rect key="frame" x="0.0" y="0.0" width="320" height="132"/>
+            <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="320" height="132"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4SI-GM-z1M">
+                        <rect key="frame" x="14" y="0.0" width="292" height="120"/>
+                        <subviews>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SWi-YI-jAG">
+                                <rect key="frame" x="10" y="38" width="272" height="1"/>
+                                <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="calibratedRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="1" id="UMX-8u-esT"/>
+                                </constraints>
+                            </view>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="course_time" translatesAutoresizingMaskIntoConstraints="NO" id="iE8-Ec-UaX">
+                                <rect key="frame" x="11" y="12" width="16" height="16"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="16" id="7DX-sN-F8C"/>
+                                    <constraint firstAttribute="width" constant="16" id="8wC-mz-8t6"/>
+                                </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="gLO-02-Vhb">
+                                <rect key="frame" x="34" y="12" width="147" height="16"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
+                                <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="b6m-xf-3vf">
+                                <rect key="frame" x="231" y="11.5" width="50" height="17"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="50" id="Wja-wS-7nK"/>
+                                </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 hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_default_avatal" translatesAutoresizingMaskIntoConstraints="NO" id="vbJ-lB-Z7m">
+                                <rect key="frame" x="11" y="56" width="47" height="47"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="47" id="GJE-kv-Q75"/>
+                                    <constraint firstAttribute="height" constant="47" id="zsp-wi-eXy"/>
+                                </constraints>
+                                <userDefinedRuntimeAttributes>
+                                    <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                        <real key="value" value="5"/>
+                                    </userDefinedRuntimeAttribute>
+                                </userDefinedRuntimeAttributes>
+                            </imageView>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="张豆豆" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="INl-R7-pRX">
+                                <rect key="frame" x="68" y="56" width="49" height="24"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="24" id="Sgg-XH-ZuZ"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
+                                <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="calibratedRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2XU-rf-TDq">
+                                <rect key="frame" x="68" y="83" width="44" height="20"/>
+                                <subviews>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="单簧管" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sRr-14-Xr7">
+                                        <rect key="frame" x="5" y="0.0" width="34" height="20"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="11"/>
+                                        <color key="textColor" red="1" green="0.54901960780000003" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" red="1" green="0.94509803920000002" blue="0.87058823529999996" alpha="1" colorSpace="calibratedRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="bottom" secondItem="sRr-14-Xr7" secondAttribute="bottom" id="62u-1c-4Ht"/>
+                                    <constraint firstItem="sRr-14-Xr7" firstAttribute="top" secondItem="2XU-rf-TDq" secondAttribute="top" id="ItB-8F-k6H"/>
+                                    <constraint firstAttribute="trailing" secondItem="sRr-14-Xr7" secondAttribute="trailing" constant="5" id="ash-PZ-YaK"/>
+                                    <constraint firstAttribute="height" constant="20" id="hfQ-rY-myD"/>
+                                    <constraint firstItem="sRr-14-Xr7" firstAttribute="leading" secondItem="2XU-rf-TDq" secondAttribute="leading" constant="5" id="s0g-O1-kWv"/>
+                                </constraints>
+                                <userDefinedRuntimeAttributes>
+                                    <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                        <real key="value" value="4"/>
+                                    </userDefinedRuntimeAttribute>
+                                </userDefinedRuntimeAttributes>
+                            </view>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="C9U-yd-Bp1">
+                                <rect key="frame" x="117" y="48" width="40" height="40"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="40" id="GAR-wZ-GHE"/>
+                                    <constraint firstAttribute="width" constant="40" id="ob0-NF-cC9"/>
+                                </constraints>
+                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                <state key="normal" image="course_chat"/>
+                            </button>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hEb-LU-Yhq">
+                                <rect key="frame" x="13.5" y="58.5" width="42" height="42"/>
+                                <subviews>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="小课" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="w4g-yi-Rgm">
+                                        <rect key="frame" x="6.5" y="12.5" width="29" height="17"/>
+                                        <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/>
+                                        <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" systemColor="systemRedColor"/>
+                                <constraints>
+                                    <constraint firstItem="w4g-yi-Rgm" firstAttribute="centerX" secondItem="hEb-LU-Yhq" secondAttribute="centerX" id="7Ef-7w-7xf"/>
+                                    <constraint firstAttribute="width" constant="42" id="RF4-uX-Llf"/>
+                                    <constraint firstItem="w4g-yi-Rgm" firstAttribute="centerY" secondItem="hEb-LU-Yhq" secondAttribute="centerY" id="V92-9D-dCP"/>
+                                    <constraint firstAttribute="height" constant="42" id="nRB-hb-MeR"/>
+                                </constraints>
+                                <userDefinedRuntimeAttributes>
+                                    <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                        <real key="value" value="21"/>
+                                    </userDefinedRuntimeAttribute>
+                                </userDefinedRuntimeAttributes>
+                            </view>
+                        </subviews>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <constraints>
+                            <constraint firstAttribute="trailing" secondItem="SWi-YI-jAG" secondAttribute="trailing" constant="10" id="1Li-Ou-Yjs"/>
+                            <constraint firstItem="hEb-LU-Yhq" firstAttribute="centerX" secondItem="vbJ-lB-Z7m" secondAttribute="centerX" id="4ma-pa-KEI"/>
+                            <constraint firstItem="INl-R7-pRX" firstAttribute="leading" secondItem="vbJ-lB-Z7m" secondAttribute="trailing" constant="10" id="8Ab-GY-KQu"/>
+                            <constraint firstItem="2XU-rf-TDq" firstAttribute="leading" secondItem="INl-R7-pRX" secondAttribute="leading" id="EZc-vw-yP4"/>
+                            <constraint firstItem="C9U-yd-Bp1" firstAttribute="leading" secondItem="INl-R7-pRX" secondAttribute="trailing" id="Hzp-VS-u2x"/>
+                            <constraint firstItem="C9U-yd-Bp1" firstAttribute="centerY" secondItem="INl-R7-pRX" secondAttribute="centerY" id="JW2-D5-JLA"/>
+                            <constraint firstItem="hEb-LU-Yhq" firstAttribute="centerY" secondItem="vbJ-lB-Z7m" secondAttribute="centerY" id="KWd-9i-iwF"/>
+                            <constraint firstItem="2XU-rf-TDq" firstAttribute="bottom" secondItem="vbJ-lB-Z7m" secondAttribute="bottom" id="MMw-W4-Rrg"/>
+                            <constraint firstItem="b6m-xf-3vf" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="gLO-02-Vhb" secondAttribute="trailing" constant="10" id="NmB-fs-yGE"/>
+                            <constraint firstAttribute="trailing" secondItem="b6m-xf-3vf" secondAttribute="trailing" constant="11" id="Qf3-Bp-lGs"/>
+                            <constraint firstItem="iE8-Ec-UaX" firstAttribute="leading" secondItem="4SI-GM-z1M" secondAttribute="leading" constant="11" id="RLi-vc-ZMJ"/>
+                            <constraint firstItem="b6m-xf-3vf" firstAttribute="centerY" secondItem="gLO-02-Vhb" secondAttribute="centerY" id="WGE-OQ-sct"/>
+                            <constraint firstItem="vbJ-lB-Z7m" firstAttribute="top" secondItem="SWi-YI-jAG" secondAttribute="bottom" constant="17" id="XBT-EP-tQo"/>
+                            <constraint firstItem="INl-R7-pRX" firstAttribute="top" secondItem="vbJ-lB-Z7m" secondAttribute="top" id="c6S-fa-CFf"/>
+                            <constraint firstItem="gLO-02-Vhb" firstAttribute="leading" secondItem="iE8-Ec-UaX" secondAttribute="trailing" constant="7" id="dCl-vd-6HX"/>
+                            <constraint firstItem="gLO-02-Vhb" firstAttribute="centerY" secondItem="iE8-Ec-UaX" secondAttribute="centerY" id="eSU-5Q-NAP"/>
+                            <constraint firstItem="SWi-YI-jAG" firstAttribute="top" secondItem="iE8-Ec-UaX" secondAttribute="bottom" constant="10" id="eTS-hd-Agb"/>
+                            <constraint firstItem="SWi-YI-jAG" firstAttribute="leading" secondItem="4SI-GM-z1M" secondAttribute="leading" constant="10" id="f8r-hl-KRD"/>
+                            <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="C9U-yd-Bp1" secondAttribute="trailing" constant="10" id="iuT-SI-8kI"/>
+                            <constraint firstItem="vbJ-lB-Z7m" firstAttribute="leading" secondItem="4SI-GM-z1M" secondAttribute="leading" constant="11" id="jNl-xA-tEn"/>
+                            <constraint firstItem="iE8-Ec-UaX" firstAttribute="top" secondItem="4SI-GM-z1M" secondAttribute="top" constant="12" id="x2b-X4-miJ"/>
+                        </constraints>
+                        <userDefinedRuntimeAttributes>
+                            <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                <real key="value" value="10"/>
+                            </userDefinedRuntimeAttribute>
+                        </userDefinedRuntimeAttributes>
+                    </view>
+                </subviews>
+                <constraints>
+                    <constraint firstAttribute="bottom" secondItem="4SI-GM-z1M" secondAttribute="bottom" constant="12" id="VNf-kA-vJc"/>
+                    <constraint firstItem="4SI-GM-z1M" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="gKF-98-9vT"/>
+                    <constraint firstAttribute="trailing" secondItem="4SI-GM-z1M" secondAttribute="trailing" constant="14" id="hh3-xM-YLx"/>
+                    <constraint firstItem="4SI-GM-z1M" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="14" id="vtM-Xn-P7B"/>
+                </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="colorView" destination="hEb-LU-Yhq" id="F3m-Ji-dhf"/>
+                <outlet property="courseDesc" destination="w4g-yi-Rgm" id="Y90-kI-6Pv"/>
+                <outlet property="courseName" destination="INl-R7-pRX" id="06n-hn-rxq"/>
+                <outlet property="courseTimeLabel" destination="gLO-02-Vhb" id="QXE-ZO-p5s"/>
+                <outlet property="statusLabel" destination="b6m-xf-3vf" id="2wd-As-SVx"/>
+                <outlet property="subjectName" destination="sRr-14-Xr7" id="vRG-Mv-uzU"/>
+            </connections>
+            <point key="canvasLocation" x="128.98550724637681" y="102.79017857142857"/>
+        </tableViewCell>
+    </objects>
+    <resources>
+        <image name="course_chat" width="19" height="18"/>
+        <image name="course_time" width="16" height="16"/>
+        <image name="user_default_avatal" width="52" height="52"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+        <systemColor name="systemRedColor">
+            <color red="1" green="0.23137254901960785" blue="0.18823529411764706" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+        </systemColor>
+    </resources>
+</document>

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/MyCourse/View/MusicRoomCourseCell.m

@@ -10,6 +10,7 @@
 #import "TableCourseModel.h"
 
 @interface MusicRoomCourseCell ()
+
 @property (weak, nonatomic) IBOutlet UILabel *courseDesc;
 
 @property (weak, nonatomic) IBOutlet UILabel *courseTimeLabel;

+ 2 - 25
KulexiuForTeacher/KulexiuForTeacher/Module/Home/MyCourse/View/MusicRoomCourseCell.xib

@@ -2,7 +2,6 @@
 <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">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
-        <deployment identifier="iOS"/>
         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="System colors in document resources" minToolsVersion="11.0"/>
@@ -29,7 +28,7 @@
                                 </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="UxS-Xs-zTk">
-                                <rect key="frame" x="34" y="11" width="147" height="18"/>
+                                <rect key="frame" x="34" y="11" width="313" height="18"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="18" id="iT4-St-ibp"/>
                                 </constraints>
@@ -37,22 +36,6 @@
                                 <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="6人" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IdU-Te-VFw">
-                                <rect key="frame" x="308" y="11.5" width="30" height="17"/>
-                                <constraints>
-                                    <constraint firstAttribute="width" constant="30" id="UXQ-qE-PN9"/>
-                                </constraints>
-                                <fontDescription key="fontDescription" type="system" 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="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="course_member" translatesAutoresizingMaskIntoConstraints="NO" id="ryL-Bc-GJQ">
-                                <rect key="frame" x="339" y="11" width="18" height="18"/>
-                                <constraints>
-                                    <constraint firstAttribute="width" constant="18" id="3mV-q5-U7p"/>
-                                    <constraint firstAttribute="height" constant="18" id="PjQ-RL-p6f"/>
-                                </constraints>
-                            </imageView>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="t3h-kH-4md">
                                 <rect key="frame" x="357" y="0.0" width="40" height="40"/>
                                 <constraints>
@@ -153,7 +136,6 @@
                         </subviews>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
-                            <constraint firstItem="ryL-Bc-GJQ" firstAttribute="centerY" secondItem="IdU-Te-VFw" secondAttribute="centerY" id="3UU-Gv-EOP"/>
                             <constraint firstItem="4jM-hU-dts" firstAttribute="leading" secondItem="Wl9-sn-VK0" secondAttribute="leading" constant="12" id="55F-l8-Qg1"/>
                             <constraint firstItem="4jM-hU-dts" firstAttribute="top" secondItem="89l-Qb-VVR" secondAttribute="bottom" constant="15" id="5TE-2w-8xg"/>
                             <constraint firstItem="VjP-WA-4SG" firstAttribute="leading" secondItem="Wl9-sn-VK0" secondAttribute="leading" constant="12" id="76s-eU-Ril"/>
@@ -163,11 +145,8 @@
                             <constraint firstItem="UxS-Xs-zTk" firstAttribute="leading" secondItem="VjP-WA-4SG" secondAttribute="trailing" constant="6" id="Ct9-78-SuQ"/>
                             <constraint firstAttribute="trailing" secondItem="89l-Qb-VVR" secondAttribute="trailing" constant="10" id="J29-HZ-el6"/>
                             <constraint firstAttribute="trailing" secondItem="t3h-kH-4md" secondAttribute="trailing" constant="10" id="Mvo-kN-6G0"/>
-                            <constraint firstItem="ryL-Bc-GJQ" firstAttribute="leading" secondItem="IdU-Te-VFw" secondAttribute="trailing" constant="1" id="U4p-qV-v44"/>
                             <constraint firstItem="t3h-kH-4md" firstAttribute="top" secondItem="Wl9-sn-VK0" secondAttribute="top" id="UrD-2D-HXJ"/>
-                            <constraint firstItem="t3h-kH-4md" firstAttribute="leading" secondItem="ryL-Bc-GJQ" secondAttribute="trailing" id="VyO-Ow-aW3"/>
-                            <constraint firstItem="t3h-kH-4md" firstAttribute="centerY" secondItem="ryL-Bc-GJQ" secondAttribute="centerY" id="Yt0-TJ-55n"/>
-                            <constraint firstItem="IdU-Te-VFw" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="UxS-Xs-zTk" secondAttribute="trailing" constant="10" id="h3i-Bo-NfI"/>
+                            <constraint firstItem="t3h-kH-4md" firstAttribute="leading" secondItem="UxS-Xs-zTk" secondAttribute="trailing" constant="10" id="fbH-VF-UbO"/>
                             <constraint firstItem="Dys-CR-rsC" firstAttribute="leading" secondItem="l2B-EY-GWY" secondAttribute="leading" id="h8r-WE-IEp"/>
                             <constraint firstAttribute="bottom" secondItem="4jM-hU-dts" secondAttribute="bottom" constant="19" id="kBX-xJ-Bc3"/>
                             <constraint firstItem="89l-Qb-VVR" firstAttribute="leading" secondItem="Wl9-sn-VK0" secondAttribute="leading" constant="10" id="pgO-Fi-Mwz"/>
@@ -198,7 +177,6 @@
                 <outlet property="courseDesc" destination="n6Q-Lb-t2R" id="6EB-Qw-D3R"/>
                 <outlet property="courseName" destination="l2B-EY-GWY" id="D00-Cj-zrr"/>
                 <outlet property="courseTimeLabel" destination="UxS-Xs-zTk" id="dkq-PI-dck"/>
-                <outlet property="memberCount" destination="IdU-Te-VFw" id="1Lu-Rg-nb5"/>
                 <outlet property="statusButton" destination="Vxw-2k-cqR" id="0Ra-cW-84Y"/>
                 <outlet property="subjectName" destination="TPd-JA-v98" id="HaG-Uj-2h3"/>
             </connections>
@@ -207,7 +185,6 @@
     </objects>
     <resources>
         <image name="course_chat" width="19" height="18"/>
-        <image name="course_member" width="18" height="18"/>
         <image name="course_time" width="16" height="16"/>
         <systemColor name="systemBackgroundColor">
             <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineBodyView.m

@@ -104,6 +104,7 @@
         else {
             self.authLabel.text = @"认证老师";
         }
+        self.starView.hidden = YES;
     }
     
     if (![NSString isEmptyString:infoMessage.heardUrl]) {