소스 검색

琴房课详情->学生列表数据显示样式

Steven 2 달 전
부모
커밋
a53aa16ca8

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

@@ -245,6 +245,8 @@
 		BC02BCE728B324C9005CB483 /* LiveDownSeatView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC02BCE328B324C9005CB483 /* LiveDownSeatView.xib */; };
 		BC02BCEB28B324FE005CB483 /* LiveMemberSeatCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC02BCE928B324FD005CB483 /* LiveMemberSeatCell.m */; };
 		BC02BCEC28B324FE005CB483 /* LiveMemberSeatCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC02BCEA28B324FD005CB483 /* LiveMemberSeatCell.xib */; };
+		BC02F32A2D1E913F0004233D /* MusicRoomStudentListHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC02F3292D1E913F0004233D /* MusicRoomStudentListHeadView.m */; };
+		BC02F32C2D1E91470004233D /* MusicRoomStudentListHeadView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC02F32B2D1E91470004233D /* MusicRoomStudentListHeadView.xib */; };
 		BC063D842823CEFE000EB350 /* AddressListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC063D822823CEFD000EB350 /* AddressListModel.m */; };
 		BC0A22A3284751F80065C1AB /* AccompanyView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC0A228F284751F80065C1AB /* AccompanyView.m */; };
 		BC0A22A4284751F80065C1AB /* AccompanySongCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC0A2292284751F80065C1AB /* AccompanySongCell.m */; };
@@ -881,7 +883,6 @@
 		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 */; };
@@ -1642,6 +1643,9 @@
 		BC02BCE828B324FD005CB483 /* LiveMemberSeatCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LiveMemberSeatCell.h; sourceTree = "<group>"; };
 		BC02BCE928B324FD005CB483 /* LiveMemberSeatCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LiveMemberSeatCell.m; sourceTree = "<group>"; };
 		BC02BCEA28B324FD005CB483 /* LiveMemberSeatCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LiveMemberSeatCell.xib; sourceTree = "<group>"; };
+		BC02F3282D1E913F0004233D /* MusicRoomStudentListHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MusicRoomStudentListHeadView.h; sourceTree = "<group>"; };
+		BC02F3292D1E913F0004233D /* MusicRoomStudentListHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MusicRoomStudentListHeadView.m; sourceTree = "<group>"; };
+		BC02F32B2D1E91470004233D /* MusicRoomStudentListHeadView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MusicRoomStudentListHeadView.xib; sourceTree = "<group>"; };
 		BC063D822823CEFD000EB350 /* AddressListModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AddressListModel.m; sourceTree = "<group>"; };
 		BC063D832823CEFE000EB350 /* AddressListModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AddressListModel.h; sourceTree = "<group>"; };
 		BC0A228F284751F80065C1AB /* AccompanyView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AccompanyView.m; sourceTree = "<group>"; };
@@ -2675,8 +2679,6 @@
 		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>"; };
@@ -5538,8 +5540,6 @@
 				BC41103728066C2F00800BD9 /* HomeworkListViewController.m */,
 				BCA723F92806A96000DA0D0D /* HomeworkDetailViewController.h */,
 				BCA723FA2806A96000DA0D0D /* HomeworkDetailViewController.m */,
-				BCA353EB2859B4EC00377661 /* MusicRoomHomeworkStudentController.h */,
-				BCA353EC2859B4EC00377661 /* MusicRoomHomeworkStudentController.m */,
 			);
 			path = Controller;
 			sourceTree = "<group>";
@@ -6755,23 +6755,26 @@
 		BC8B6E812858879300866917 /* View */ = {
 			isa = PBXGroup;
 			children = (
+				BCFA12702CF4296E005229AC /* MusicGroupStudenListCell.h */,
+				BCFA12712CF4296E005229AC /* MusicGroupStudenListCell.m */,
+				BCFA12722CF4296E005229AC /* MusicGroupStudenListCell.xib */,
 				BCA353DC285976CF00377661 /* MusicRoomCourseInfoCell.h */,
 				BCA353DD285976CF00377661 /* MusicRoomCourseInfoCell.m */,
 				BCA353DE285976CF00377661 /* MusicRoomCourseInfoCell.xib */,
-				BCA353E12859797400377661 /* MusicRoomStudentCell.h */,
-				BCA353E22859797400377661 /* MusicRoomStudentCell.m */,
-				BCA353E32859797400377661 /* MusicRoomStudentCell.xib */,
 				BC5A4B7B2CF416D3008C2FDD /* MusicRoomCourseListCell.h */,
 				BC5A4B7C2CF416D3008C2FDD /* MusicRoomCourseListCell.m */,
 				BC5A4B7D2CF416D3008C2FDD /* MusicRoomCourseListCell.xib */,
 				BC5A4B732CF412E8008C2FDD /* MusicRoomGroupHeadView.h */,
 				BC5A4B742CF412E8008C2FDD /* MusicRoomGroupHeadView.m */,
 				BC5A4B752CF412E8008C2FDD /* MusicRoomGroupHeadView.xib */,
+				BCA353E12859797400377661 /* MusicRoomStudentCell.h */,
+				BCA353E22859797400377661 /* MusicRoomStudentCell.m */,
+				BCA353E32859797400377661 /* MusicRoomStudentCell.xib */,
 				BC5A4B782CF41392008C2FDD /* MusicRoomStudentPageView.h */,
 				BC5A4B792CF41392008C2FDD /* MusicRoomStudentPageView.m */,
-				BCFA12702CF4296E005229AC /* MusicGroupStudenListCell.h */,
-				BCFA12712CF4296E005229AC /* MusicGroupStudenListCell.m */,
-				BCFA12722CF4296E005229AC /* MusicGroupStudenListCell.xib */,
+				BC02F3282D1E913F0004233D /* MusicRoomStudentListHeadView.h */,
+				BC02F3292D1E913F0004233D /* MusicRoomStudentListHeadView.m */,
+				BC02F32B2D1E91470004233D /* MusicRoomStudentListHeadView.xib */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -8073,6 +8076,7 @@
 				BC71D1EF2887FDD40010F14B /* img_2.png in Resources */,
 				BC8B641D28F3E8D800A08D16 /* KSAwardAlertView.xib in Resources */,
 				BCD1606B2CED870700A78B43 /* MyCourseGroupNavView.xib in Resources */,
+				BC02F32C2D1E91470004233D /* MusicRoomStudentListHeadView.xib in Resources */,
 				BC8B6DBA285327EE00866917 /* MusicShareDisplayView.xib in Resources */,
 				BC58E7D5281B9637004B0893 /* PublicNoticeView.xib in Resources */,
 				BC4218022C4E43A100C70B2F /* KSUserDetailNavView.xib in Resources */,
@@ -9067,7 +9071,6 @@
 				BC106B832A8F4586000759A9 /* TXLiveMessageLeave.m in Sources */,
 				BCF425F22AB9782500BCD942 /* MineDescView.m in Sources */,
 				BC4217FB2C4E3DF700C70B2F /* KSUserDetailBottomView.m in Sources */,
-				BCA353ED2859B4EC00377661 /* MusicRoomHomeworkStudentController.m in Sources */,
 				BC6BEAA4288A4C2A00022109 /* KSHomeButton.m in Sources */,
 				27A2F63027E70E57009E2380 /* UserInfo.m in Sources */,
 				BC5A4B772CF412E8008C2FDD /* MusicRoomGroupHeadView.m in Sources */,
@@ -9177,6 +9180,7 @@
 				BC38C42F2AF900E100ABFCC2 /* KSMergeAudioControlView.m in Sources */,
 				BC41103828066C2F00800BD9 /* HomeworkListViewController.m in Sources */,
 				BC71DF172A89F470003F165E /* TXToolButtonView.m in Sources */,
+				BC02F32A2D1E913F0004233D /* MusicRoomStudentListHeadView.m in Sources */,
 				BC29AD2C2BFAFAFA00D44848 /* KSLogManager.m in Sources */,
 				BC2820EC2C918314008BD2CC /* GroupNoticeDetailViewController.m in Sources */,
 				BC0A22A4284751F80065C1AB /* AccompanySongCell.m in Sources */,

+ 12 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Course/MusicRoom/Controller/MusicRoomViewController.m

@@ -18,6 +18,7 @@
 #import "KSGroupConversationController.h"
 #import "HomeworkDetailViewController.h"
 #import "CourseGroupNavView.h"
+#import "MusicRoomStudentListHeadView.h"
 
 @interface MusicRoomViewController ()<UITableViewDelegate,UITableViewDataSource>
 
@@ -196,8 +197,9 @@
     else {
         BOOL hasArrange = [self.detailModel.decorateHomework isEqualToString:@"1"] ? YES : NO;
         Records *studentModel = self.studentArray[indexPath.row];
+        BOOL isLastRow = indexPath.row == self.studentArray.count - 1 ? YES : NO;
         MusicRoomStudentCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MusicRoomStudentCell"];
-        [cell configWithStudentInfo:studentModel hasArrangeHomework:hasArrange];
+        [cell configWithStudentInfo:studentModel isLastRow:isLastRow hasArrangeHomework:hasArrange];
         return cell;
     }
 }
@@ -217,6 +219,9 @@
 }
 
 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
+    if (section == 2) {
+        return [MusicRoomStudentListHeadView getViewHeight];
+    }
     return CGFLOAT_MIN;
 }
 
@@ -225,8 +230,14 @@
 }
 
 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
+    if (section == 2) {
+        MusicRoomStudentListHeadView *headView = [MusicRoomStudentListHeadView sharedInstance];
+        headView.frame = CGRectMake(0, 0, KPortraitWidth, [MusicRoomStudentListHeadView getViewHeight]);
+        return headView;
+    }
     return [UIView new];
 }
+
 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
 {
     return [UIView new];

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Course/MusicRoom/View/MusicRoomStudentCell.h

@@ -12,7 +12,7 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface MusicRoomStudentCell : UITableViewCell
 
-- (void)configWithStudentInfo:(Records *)studentModel hasArrangeHomework:(BOOL)hasArrange;
+- (void)configWithStudentInfo:(Records *)studentModel isLastRow:(BOOL)isLastRow hasArrangeHomework:(BOOL)hasArrange;
 
 @end
 

+ 18 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Course/MusicRoom/View/MusicRoomStudentCell.m

@@ -8,6 +8,9 @@
 #import "MusicRoomStudentCell.h"
 
 @interface MusicRoomStudentCell ()
+@property (weak, nonatomic) IBOutlet UIView *lineView;
+
+@property (weak, nonatomic) IBOutlet UIView *bgView;
 
 @property (weak, nonatomic) IBOutlet UIImageView *studentAvatar;
 
@@ -31,7 +34,17 @@
     self.selectionStyle = UITableViewCellSelectionStyleNone;
 }
 
-- (void)configWithStudentInfo:(Records *)studentModel hasArrangeHomework:(BOOL)hasArrange {
+- (void)configWithStudentInfo:(Records *)studentModel isLastRow:(BOOL)isLastRow hasArrangeHomework:(BOOL)hasArrange {
+    
+    if (isLastRow) {
+        self.lineView.hidden = YES;
+        self.bgView.layer.cornerRadius = 10.0f;
+        self.bgView.layer.maskedCorners = kCALayerMinXMaxYCorner | kCALayerMaxXMaxYCorner;
+    }
+    else {
+        self.lineView.hidden = NO;
+        self.bgView.layer.cornerRadius = 0.0f;
+    }
     [self.studentAvatar sd_setImageWithURL:[NSURL URLWithString:[studentModel.studentAvatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:STUDENT_AVATAR]];
     NSString *name;
     if ([NSString isEmptyString:studentModel.studentName]) {
@@ -54,12 +67,15 @@
 
         if ([studentModel.homeworkStatus isEqualToString:@"NOTCOMMIT"]) { // 未提交
             self.statusLabel.text = @"未提交";
+            self.statusLabel.textColor = HexRGB(0xFF802C);
         }
         else if ([studentModel.homeworkStatus isEqualToString:@"NOTREVIEW"]) { // 未点评
             self.statusLabel.text = @"未点评";
+            self.statusLabel.textColor = HexRGB(0x2DC7AA);
         }
         else if ([studentModel.homeworkStatus isEqualToString:@"REVIEWED"]) { // 已点评
             self.statusLabel.text = @"已点评";
+            self.statusLabel.textColor = HexRGB(0x999999);
         }
         else {
             self.statusLabel.hidden = YES;
@@ -67,6 +83,7 @@
         self.arrowImage.hidden = NO;
     }
     else {
+        self.statusLabel.text = @"";
         self.statusLabel.hidden = YES;
         self.arrowImage.hidden = YES;
     }

+ 45 - 29
KulexiuForTeacher/KulexiuForTeacher/Module/Course/MusicRoom/View/MusicRoomStudentCell.xib

@@ -10,50 +10,50 @@
     <objects>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
-        <tableViewCell clearsContextBeforeDrawing="NO" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="94" id="KGk-i7-Jjw" customClass="MusicRoomStudentCell">
-            <rect key="frame" x="0.0" y="0.0" width="325" height="94"/>
+        <tableViewCell clearsContextBeforeDrawing="NO" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="64" id="KGk-i7-Jjw" customClass="MusicRoomStudentCell">
+            <rect key="frame" x="0.0" y="0.0" width="325" height="64"/>
             <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="325" height="94"/>
+                <rect key="frame" x="0.0" y="0.0" width="325" height="64"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="P8b-0z-8QJ">
-                        <rect key="frame" x="14" y="0.0" width="297" height="76"/>
+                        <rect key="frame" x="14" y="0.0" width="297" height="64"/>
                         <subviews>
                             <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="student_avatar" translatesAutoresizingMaskIntoConstraints="NO" id="rmJ-FQ-1KP">
-                                <rect key="frame" x="12" y="14" width="48" height="48"/>
+                                <rect key="frame" x="12" y="12" width="40" height="40"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="48" id="WNP-yH-bmz"/>
-                                    <constraint firstAttribute="width" constant="48" id="iP1-B0-TDY"/>
+                                    <constraint firstAttribute="height" constant="40" id="WNP-yH-bmz"/>
+                                    <constraint firstAttribute="width" constant="40" id="iP1-B0-TDY"/>
                                 </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" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6av-dX-iJM">
-                                <rect key="frame" x="69" y="15" width="0.0" height="28"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="张涵宇" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6av-dX-iJM">
+                                <rect key="frame" x="61" y="13" width="42" height="17"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="28" id="7q6-e6-Bd6"/>
+                                    <constraint firstAttribute="height" constant="17" id="7q6-e6-Bd6"/>
                                 </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"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="92R-m4-gJp">
-                                <rect key="frame" x="69" y="43" width="10" height="20"/>
+                                <rect key="frame" x="61" y="33" width="10" 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="Z9W-Cn-SVh">
-                                        <rect key="frame" x="5" y="0.0" width="0.0" height="20"/>
-                                        <fontDescription key="fontDescription" type="system" pointSize="11"/>
-                                        <color key="textColor" red="1" green="0.54901960780000003" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                                        <rect key="frame" x="5" y="0.0" width="0.0" height="17"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="10"/>
+                                        <color key="textColor" red="1" green="0.5490196078431373" 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.94509803921568625" blue="0.87058823529411766" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="20" id="Bcw-BO-R1E"/>
+                                    <constraint firstAttribute="height" constant="17" id="Bcw-BO-R1E"/>
                                     <constraint firstItem="Z9W-Cn-SVh" firstAttribute="top" secondItem="92R-m4-gJp" secondAttribute="top" id="Vgl-0A-96W"/>
                                     <constraint firstAttribute="trailing" secondItem="Z9W-Cn-SVh" secondAttribute="trailing" constant="5" id="Zx6-H4-Smf"/>
                                     <constraint firstItem="Z9W-Cn-SVh" firstAttribute="leading" secondItem="92R-m4-gJp" secondAttribute="leading" constant="5" id="nbx-Nv-yh0"/>
@@ -65,35 +65,49 @@
                                     </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="R0f-XO-tQM">
-                                <rect key="frame" x="257" y="38" width="0.0" height="0.0"/>
-                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                            <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="R0f-XO-tQM">
+                                <rect key="frame" x="257" y="21" width="0.0" height="22"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="22" id="GfI-4q-9VQ"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
                                 <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="homework_next" translatesAutoresizingMaskIntoConstraints="NO" id="3Z5-jA-QVq">
-                                <rect key="frame" x="262" y="30" width="17" height="16"/>
+                                <rect key="frame" x="262" y="24" width="17" height="16"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="17" id="ScV-eQ-NnN"/>
                                     <constraint firstAttribute="height" constant="16" id="gM1-uo-ITU"/>
                                 </constraints>
                             </imageView>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="OUP-IJ-JmC">
+                                <rect key="frame" x="12" y="63" width="273" height="1"/>
+                                <color key="backgroundColor" red="0.94901960784313721" green="0.94901960784313721" blue="0.94901960784313721" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="1" id="g12-1i-NFK"/>
+                                </constraints>
+                            </view>
                         </subviews>
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                         <constraints>
                             <constraint firstItem="rmJ-FQ-1KP" firstAttribute="leading" secondItem="P8b-0z-8QJ" secondAttribute="leading" constant="12" id="2R0-lS-gDN"/>
+                            <constraint firstAttribute="bottom" secondItem="OUP-IJ-JmC" secondAttribute="bottom" id="4o6-fO-8aj"/>
                             <constraint firstItem="3Z5-jA-QVq" firstAttribute="leading" secondItem="R0f-XO-tQM" secondAttribute="trailing" constant="5" id="7gZ-OU-4je"/>
                             <constraint firstItem="rmJ-FQ-1KP" firstAttribute="centerY" secondItem="P8b-0z-8QJ" secondAttribute="centerY" id="Djd-lt-PQo"/>
                             <constraint firstItem="R0f-XO-tQM" firstAttribute="centerY" secondItem="P8b-0z-8QJ" secondAttribute="centerY" id="FPv-yy-pHk"/>
                             <constraint firstItem="3Z5-jA-QVq" firstAttribute="centerY" secondItem="P8b-0z-8QJ" secondAttribute="centerY" id="J7P-tk-hoN"/>
                             <constraint firstItem="6av-dX-iJM" firstAttribute="leading" secondItem="rmJ-FQ-1KP" secondAttribute="trailing" constant="9" id="MOZ-9b-DDB"/>
-                            <constraint firstItem="92R-m4-gJp" firstAttribute="top" secondItem="6av-dX-iJM" secondAttribute="bottom" id="SJV-T1-azv"/>
-                            <constraint firstItem="rmJ-FQ-1KP" firstAttribute="top" secondItem="P8b-0z-8QJ" secondAttribute="top" constant="14" id="T7J-S2-JPV"/>
+                            <constraint firstItem="92R-m4-gJp" firstAttribute="top" secondItem="6av-dX-iJM" secondAttribute="bottom" constant="3" id="SJV-T1-azv"/>
+                            <constraint firstItem="rmJ-FQ-1KP" firstAttribute="top" secondItem="P8b-0z-8QJ" secondAttribute="top" constant="12" id="T7J-S2-JPV"/>
                             <constraint firstItem="6av-dX-iJM" firstAttribute="top" secondItem="rmJ-FQ-1KP" secondAttribute="top" constant="1" id="Tzg-Qd-cQs"/>
-                            <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="6av-dX-iJM" secondAttribute="trailing" constant="70" id="c3m-uV-ZHk"/>
+                            <constraint firstAttribute="trailing" secondItem="OUP-IJ-JmC" secondAttribute="trailing" constant="12" id="iRO-nq-Q0R"/>
                             <constraint firstItem="92R-m4-gJp" firstAttribute="leading" secondItem="6av-dX-iJM" secondAttribute="leading" id="nTC-5a-Xwb"/>
                             <constraint firstAttribute="trailing" secondItem="3Z5-jA-QVq" secondAttribute="trailing" constant="18" id="q1p-nM-0nB"/>
-                            <constraint firstAttribute="bottom" secondItem="rmJ-FQ-1KP" secondAttribute="bottom" constant="14" id="usp-ip-tim"/>
+                            <constraint firstItem="R0f-XO-tQM" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="92R-m4-gJp" secondAttribute="trailing" constant="10" id="qck-Ao-NSt"/>
+                            <constraint firstItem="R0f-XO-tQM" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="6av-dX-iJM" secondAttribute="trailing" constant="10" id="tRv-TZ-Qld"/>
+                            <constraint firstAttribute="bottom" secondItem="rmJ-FQ-1KP" secondAttribute="bottom" constant="12" id="usp-ip-tim"/>
+                            <constraint firstItem="OUP-IJ-JmC" firstAttribute="leading" secondItem="P8b-0z-8QJ" secondAttribute="leading" constant="12" id="x48-uV-KeW"/>
                         </constraints>
                         <userDefinedRuntimeAttributes>
                             <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
@@ -104,8 +118,8 @@
                 </subviews>
                 <constraints>
                     <constraint firstItem="P8b-0z-8QJ" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="14" id="3iK-dr-jX9"/>
+                    <constraint firstAttribute="bottom" secondItem="P8b-0z-8QJ" secondAttribute="bottom" id="BC5-OC-B9w"/>
                     <constraint firstAttribute="trailing" secondItem="P8b-0z-8QJ" secondAttribute="trailing" constant="14" id="GNh-9b-Z3t"/>
-                    <constraint firstAttribute="bottom" secondItem="P8b-0z-8QJ" secondAttribute="bottom" constant="12" id="OIH-Nh-1rI"/>
                     <constraint firstItem="P8b-0z-8QJ" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="S8x-EJ-wNr"/>
                 </constraints>
             </tableViewCellContentView>
@@ -113,13 +127,15 @@
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <connections>
                 <outlet property="arrowImage" destination="3Z5-jA-QVq" id="Bxu-zU-1hE"/>
+                <outlet property="bgView" destination="P8b-0z-8QJ" id="eqd-aH-rfq"/>
+                <outlet property="lineView" destination="OUP-IJ-JmC" id="oP8-jM-e6S"/>
                 <outlet property="statusLabel" destination="R0f-XO-tQM" id="bWC-aV-hee"/>
                 <outlet property="studentAvatar" destination="rmJ-FQ-1KP" id="jFd-YZ-cAE"/>
                 <outlet property="studentName" destination="6av-dX-iJM" id="0Ca-oB-KtN"/>
                 <outlet property="subjectLabel" destination="Z9W-Cn-SVh" id="avg-Fw-k7Y"/>
                 <outlet property="subjectView" destination="92R-m4-gJp" id="Gb4-00-gaP"/>
             </connections>
-            <point key="canvasLocation" x="128.2608695652174" y="88.392857142857139"/>
+            <point key="canvasLocation" x="129.71014492753625" y="69.642857142857139"/>
         </tableViewCell>
     </objects>
     <resources>

+ 20 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Course/MusicRoom/View/MusicRoomStudentListHeadView.h

@@ -0,0 +1,20 @@
+//
+//  MusicRoomStudentListHeadView.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2024/12/27.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MusicRoomStudentListHeadView : UIView
+
++ (instancetype)sharedInstance;
+
++ (CGFloat)getViewHeight;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 40 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Course/MusicRoom/View/MusicRoomStudentListHeadView.m

@@ -0,0 +1,40 @@
+//
+//  MusicRoomStudentListHeadView.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2024/12/27.
+//
+
+#import "MusicRoomStudentListHeadView.h"
+
+@interface MusicRoomStudentListHeadView ()
+
+@property (weak, nonatomic) IBOutlet UIView *bgView;
+
+@end
+
+@implementation MusicRoomStudentListHeadView
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    self.bgView.layer.cornerRadius = 10.0f;
+    self.bgView.layer.maskedCorners = kCALayerMinXMinYCorner | kCALayerMaxXMinYCorner;
+}
+
++ (instancetype)sharedInstance {
+    MusicRoomStudentListHeadView *view = [[[NSBundle mainBundle] loadNibNamed:@"MusicRoomStudentListHeadView" owner:nil options:nil] lastObject];
+    return view;
+}
+
++ (CGFloat)getViewHeight {
+    return 30.0f;
+}
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 61 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Course/MusicRoom/View/MusicRoomStudentListHeadView.xib

@@ -0,0 +1,61 @@
+<?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" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <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="MusicRoomStudentListHeadView">
+            <rect key="frame" x="0.0" y="0.0" width="393" height="30"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8jL-kv-o4i">
+                    <rect key="frame" x="14" y="0.0" width="365" height="30"/>
+                    <subviews>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="accell_left" translatesAutoresizingMaskIntoConstraints="NO" id="DPL-69-GWP">
+                            <rect key="frame" x="12" y="14" width="3" height="12"/>
+                        </imageView>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="上课学生" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Itj-R5-4KB">
+                            <rect key="frame" x="20.999999999999996" y="10" width="55.666666666666657" height="20"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="20" id="GXV-iV-8ow"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
+                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                    </subviews>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstAttribute="bottom" secondItem="Itj-R5-4KB" secondAttribute="bottom" id="8SK-cn-dNe"/>
+                        <constraint firstItem="DPL-69-GWP" firstAttribute="leading" secondItem="8jL-kv-o4i" secondAttribute="leading" constant="12" id="KOD-s3-5eg"/>
+                        <constraint firstItem="Itj-R5-4KB" firstAttribute="leading" secondItem="DPL-69-GWP" secondAttribute="trailing" constant="6" id="jLM-bB-YIk"/>
+                        <constraint firstItem="DPL-69-GWP" firstAttribute="top" secondItem="8jL-kv-o4i" secondAttribute="top" constant="14" id="lJl-pH-6Lo"/>
+                    </constraints>
+                </view>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="8jL-kv-o4i" secondAttribute="bottom" id="Gcg-ru-TXM"/>
+                <constraint firstItem="8jL-kv-o4i" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="eZL-be-qpF"/>
+                <constraint firstItem="8jL-kv-o4i" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="msK-WI-glc"/>
+                <constraint firstAttribute="trailing" secondItem="8jL-kv-o4i" secondAttribute="trailing" constant="14" id="nmy-6Z-F7H"/>
+                <constraint firstItem="8jL-kv-o4i" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="p8P-kc-J0a"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="bgView" destination="8jL-kv-o4i" id="JEZ-JP-vIp"/>
+            </connections>
+            <point key="canvasLocation" x="32.824427480916029" y="-7.394366197183099"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="accell_left" width="3" height="12"/>
+    </resources>
+</document>

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

@@ -1,18 +0,0 @@
-//
-//  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

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

@@ -1,110 +0,0 @@
-//
-//  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 {
-    [LOADING_MANAGER showCustomLoading:@"加载中..."];
-    [KSNetworkingManager musicRoomDetailRequest:KS_POST courseId:self.courseId success:^(NSDictionary * _Nonnull dic) {
-        [LOADING_MANAGER removeCustomLoading];
-        if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
-            self.detailModel = [[MusicRoomDetailModel alloc] initWithDictionary:[dic ks_dictionaryValueForKey:@"data"]];
-            self.studentArray = [NSMutableArray arrayWithArray:self.detailModel.studentHomeworkList.records];
-        }
-        else {
-            [LOADING_MANAGER MBShowAUTOHidingInWindow:MESSAGEKEY];
-        }
-        [self.tableView reloadData];
-    } faliure:^(NSError * _Nonnull error) {
-        [LOADING_MANAGER removeCustomLoading];
-    }];
-}
-#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"];
-    BOOL hasArrange = [self.detailModel.decorateHomework isEqualToString:@"1"] ? YES : NO;
-    [cell configWithStudentInfo:studentModel hasArrangeHomework:hasArrange];
-    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

+ 0 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/View/HomeworkBodyView.m

@@ -15,7 +15,6 @@
 #import "HomeworkDetailViewController.h"
 #import "HomeworkListModel.h"
 #import "MusicRoomHomeworkCell.h"
-#import "MusicRoomHomeworkStudentController.h"
 #import "MusicRoomViewController.h"
 
 @interface HomeworkBodyView ()<UITableViewDelegate,UITableViewDataSource>