Browse Source

课堂培训 完成 up 版本 2.1.4

openlockPPP 1 year ago
parent
commit
6189e02a46

+ 12 - 4
jiaPei.xcodeproj/project.pbxproj

@@ -90,6 +90,7 @@
 		900A2DE52A1FA89700395C1F /* RQAppEventAnnotation.m in Sources */ = {isa = PBXBuildFile; fileRef = 900A2DE02A1FA89700395C1F /* RQAppEventAnnotation.m */; };
 		900A2DE62A1FA89700395C1F /* RQBaseAppEventModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 900A2DE12A1FA89700395C1F /* RQBaseAppEventModule.m */; };
 		9017E8DA2A6F97DC00571501 /* NYADViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9017E8D92A6F97DC00571501 /* NYADViewManager.m */; };
+		9034A0252B80A399001FBB37 /* NYClassRoomPeiPhotoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9034A0242B80A399001FBB37 /* NYClassRoomPeiPhotoCell.m */; };
 		9040D2852B6F703E002F4686 /* NYClassRoomVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 9040D2842B6F703E002F4686 /* NYClassRoomVC.m */; };
 		9040D2882B6F7E07002F4686 /* NYClassRoomViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9040D2872B6F7E07002F4686 /* NYClassRoomViewModel.m */; };
 		9040D28C2B6F8ACB002F4686 /* NYClassRoomPeiCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9040D28A2B6F8ACB002F4686 /* NYClassRoomPeiCell.m */; };
@@ -1821,6 +1822,8 @@
 		900A2DE22A1FA89700395C1F /* RQAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RQAppDelegate.h; sourceTree = "<group>"; };
 		9017E8D82A6F97DC00571501 /* NYADViewManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYADViewManager.h; sourceTree = "<group>"; };
 		9017E8D92A6F97DC00571501 /* NYADViewManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYADViewManager.m; sourceTree = "<group>"; };
+		9034A0232B80A399001FBB37 /* NYClassRoomPeiPhotoCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYClassRoomPeiPhotoCell.h; sourceTree = "<group>"; };
+		9034A0242B80A399001FBB37 /* NYClassRoomPeiPhotoCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYClassRoomPeiPhotoCell.m; sourceTree = "<group>"; };
 		9040D2832B6F703E002F4686 /* NYClassRoomVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYClassRoomVC.h; sourceTree = "<group>"; };
 		9040D2842B6F703E002F4686 /* NYClassRoomVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYClassRoomVC.m; sourceTree = "<group>"; };
 		9040D2862B6F7E07002F4686 /* NYClassRoomViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYClassRoomViewModel.h; sourceTree = "<group>"; };
@@ -4704,6 +4707,8 @@
 				9040D2892B6F8ACB002F4686 /* NYClassRoomPeiCell.h */,
 				9040D28A2B6F8ACB002F4686 /* NYClassRoomPeiCell.m */,
 				9040D28B2B6F8ACB002F4686 /* NYClassRoomPeiCell.xib */,
+				9034A0232B80A399001FBB37 /* NYClassRoomPeiPhotoCell.h */,
+				9034A0242B80A399001FBB37 /* NYClassRoomPeiPhotoCell.m */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -11167,6 +11172,7 @@
 				D0870D882701A6B9004EC94E /* UIView+YYAdd.m in Sources */,
 				D0B2D4FE289A624B00D6C5F4 /* RQErrorViewModel.m in Sources */,
 				18CDE8181CC60439004EF0A6 /* ScanVC.m in Sources */,
+				9034A0252B80A399001FBB37 /* NYClassRoomPeiPhotoCell.m in Sources */,
 				D0870D802701A6B9004EC94E /* UITextField+YYAdd.m in Sources */,
 				D04DF6B827006C56006E3633 /* RQTableViewModel.m in Sources */,
 				90BA2E8F2A31B2430029A54A /* NYTheoryTimeViewModel.m in Sources */,
@@ -11772,7 +11778,7 @@
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_RESOURCE_RULES_PATH[sdk=*]" = "";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 2132023122802;
+				CURRENT_PROJECT_VERSION = 2142024021801;
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				DEVELOPMENT_TEAM = K7T6CU5SW5;
 				ENABLE_BITCODE = NO;
@@ -11787,6 +11793,7 @@
 					"$(PROJECT_DIR)/jiaPei/Vendor/BaiDuFaceSDK/BDFaceSDK",
 					"$(PROJECT_DIR)/jiaPei/Vendor/ADCDN_SDK",
 					"$(PROJECT_DIR)/jiaPei/Vendor/QCloudTTSSDK",
+					"$(PROJECT_DIR)/jiaPei/Resources/Aliyunface",
 				);
 				GCC_PREFIX_HEADER = "$(SRCROOT)/jiaPei/PrefixHeader.pch";
 				HEADER_SEARCH_PATHS = (
@@ -11809,7 +11816,7 @@
 					"$(PROJECT_DIR)/jiaPei/Vendor/BaiDuFaceSDK/BDFaceSDK/lib",
 					"$(PROJECT_DIR)/jiaPei/Vendor/QiNiu_IMSDK/Vendors/Voice",
 				);
-				MARKETING_VERSION = 2.1.3;
+				MARKETING_VERSION = 2.1.4;
 				ONLY_ACTIVE_ARCH = YES;
 				OTHER_CFLAGS = (
 					"$(inherited)",
@@ -11854,7 +11861,7 @@
 				CODE_SIGN_IDENTITY = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 2132023122802;
+				CURRENT_PROJECT_VERSION = 2142024021801;
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				DEVELOPMENT_TEAM = K7T6CU5SW5;
 				ENABLE_BITCODE = NO;
@@ -11869,6 +11876,7 @@
 					"$(PROJECT_DIR)/jiaPei/Vendor/BaiDuFaceSDK/BDFaceSDK",
 					"$(PROJECT_DIR)/jiaPei/Vendor/ADCDN_SDK",
 					"$(PROJECT_DIR)/jiaPei/Vendor/QCloudTTSSDK",
+					"$(PROJECT_DIR)/jiaPei/Resources/Aliyunface",
 				);
 				GCC_PREFIX_HEADER = "$(SRCROOT)/jiaPei/PrefixHeader.pch";
 				HEADER_SEARCH_PATHS = (
@@ -11891,7 +11899,7 @@
 					"$(PROJECT_DIR)/jiaPei/Vendor/BaiDuFaceSDK/BDFaceSDK/lib",
 					"$(PROJECT_DIR)/jiaPei/Vendor/QiNiu_IMSDK/Vendors/Voice",
 				);
-				MARKETING_VERSION = 2.1.3;
+				MARKETING_VERSION = 2.1.4;
 				ONLY_ACTIVE_ARCH = NO;
 				OTHER_CFLAGS = (
 					"$(inherited)",

BIN
jiaPei.xcworkspace/xcuserdata/mimasigeling.xcuserdatad/UserInterfaceState.xcuserstate


+ 4 - 0
jiaPei/CultivateInfoModel.h

@@ -62,6 +62,10 @@ NS_ASSUME_NONNULL_BEGIN
  */
 @property (nonatomic, copy) NSString* roomLng;
 
+@property (nonatomic, copy) NSString* timeAll;
+
+@property (nonatomic, copy) NSString* nextDate;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 21 - 0
jiaPei/Images.xcassets/Modules/TimeModule/classroom_camera.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "classroom_camera.jpg",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
jiaPei/Images.xcassets/Modules/TimeModule/classroom_camera.imageset/classroom_camera.jpg


+ 1 - 1
jiaPei/Modules/OtherModules/SimulateModular/ScanPage/Other/MapManager.m

@@ -90,7 +90,7 @@ static NSString *annotationViewIdentifier = @"com.Baidu.BMKPointAnnotation";
          默认是BD09(BMK_COORDTYPE_BD09LL)坐标.
          如果需要使用GCJ02坐标,需要设置CoordinateType为:BMK_COORDTYPE_COMMON.
          */
-        if ([BMKMapManager setCoordinateTypeUsedInBaiduMapSDK:BMK_COORDTYPE_GPS]) {
+        if ([BMKMapManager setCoordinateTypeUsedInBaiduMapSDK:BMK_COORDTYPE_BD09LL]) {
             NSLog(@"经纬度类型设置成功");
         } else {
             NSLog(@"经纬度类型设置失败");

+ 5 - 4
jiaPei/NewTheory/View/NYClassRoomPeiCell.h

@@ -20,17 +20,15 @@ NS_ASSUME_NONNULL_BEGIN
 
 @property (weak, nonatomic) IBOutlet UILabel *stu_name_label;
 
-@property (weak, nonatomic) IBOutlet UILabel *cat_type_label;
-
 @property (weak, nonatomic) IBOutlet UILabel *cat_num_label;
 
 @property (weak, nonatomic) IBOutlet UILabel *room_name_label;
 
-@property (weak, nonatomic) IBOutlet UILabel *school_name_label;
+@property (weak, nonatomic) IBOutlet UILabel *course_ptime_label;
 
 @property (weak, nonatomic) IBOutlet UILabel *sign_time_label;
 
-@property (weak, nonatomic) IBOutlet UILabel *pei_type_label;
+@property (weak, nonatomic) IBOutlet UILabel *exit_ptime_label;
 
 @property (weak, nonatomic) IBOutlet UIButton *submit_btn;
 
@@ -38,6 +36,9 @@ NS_ASSUME_NONNULL_BEGIN
 @property (weak, nonatomic) IBOutlet UIView *imageArrayView;
 @property (nonatomic ,strong) UICollectionView *collectionView;
 
+//暂无数据 - view
+@property (weak, nonatomic) IBOutlet UIView *not_data_view;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 117 - 51
jiaPei/NewTheory/View/NYClassRoomPeiCell.m

@@ -10,6 +10,7 @@
 #import "NYClassRoomPeiViewModel.h"
 #import "MapManager.h"
 #import "TZImagePickerController.h"//第三方相册
+#import "NYClassRoomPeiPhotoCell.h"
 
 @interface NYClassRoomPeiCell ()<TZImagePickerControllerDelegate,UICollectionViewDelegate,UICollectionViewDataSource>{
     CGFloat _itemWH;
@@ -23,6 +24,9 @@
 
 @property (nonatomic ,strong) NSMutableArray *photosArray;
 
+@property (nonatomic ,strong) CultivateInfoModel *cultivateInfo;
+
+
 @end
 
 @implementation NYClassRoomPeiCell
@@ -37,7 +41,7 @@
 }
 
 -(void)setup_UI{
-    [self.collectionView registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:@"cell"];
+    [self.collectionView registerClass:[NYClassRoomPeiPhotoCell class] forCellWithReuseIdentifier:@"cell"];
     [self.imageArrayView addSubview:self.collectionView];
     [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
         make.edges.mas_equalTo(self.imageArrayView);
@@ -50,19 +54,18 @@
     self.viewModel.cultivateInfoModel = cultInfoModel;
     RAC(self.coach_name_label, text) = [[RACObserve(cultInfoModel, coachName) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
     RAC(self.stu_name_label, text) = [[RACObserve(cultInfoModel, stuName) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
-    RAC(self.cat_type_label, text) = [[RACObserve(cultInfoModel, stuCx) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+//    RAC(self.cat_type_label, text) = [[RACObserve(cultInfoModel, stuCx) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
     RAC(self.cat_num_label, text) = [[RACObserve(cultInfoModel, licnum) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
     RAC(self.room_name_label, text) = [[RACObserve(cultInfoModel, roomName) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
-    RAC(self.school_name_label, text) = [[RACObserve(cultInfoModel, schName) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+    RAC(self.course_ptime_label, text) = [[RACObserve(cultInfoModel, timeAll) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
     RAC(self.sign_time_label, text) = [[RACObserve(cultInfoModel, signTime) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
-    RAC(self.pei_type_label, text) = [[RACObserve(cultInfoModel, typeName) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+    RAC(self.exit_ptime_label, text) = [[RACObserve(cultInfoModel, nextDate) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
     
 }
 
 - (void)bindViewModel:(NYClassRoomPeiViewModel *)viewModel {
     self.viewModel = viewModel;
     [self getClassRoomInfo];
-    [self getPhotoArray];
     //定位功能
     [MBProgressHUD rq_showProgressHUD:@"正在获取当前位置..."];
     [[MapManager sharedManager] updateLocationWithCompleteBlock:^(BOOL success, CLLocation * _Nonnull location, BMKLocation * _Nullable bmkLocation) {
@@ -81,25 +84,34 @@
     [arr property:RQ_USER_MANAGER.currentUser.city   forKey:@"dqbh"];
     NSString* method = @"getStunocarSignInfo";
     [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary * dict) {
-        if ([dict[@"code"] intValue]!=0) {
+        if (dict==nil||[dict[@"code"] intValue]!=0) {
+            self.not_data_view.hidden = NO;
             return;
         }
         CultivateInfoModel *cultInfoModel = [CultivateInfoModel modelWithDictionary:[NSMutableDictionary dictionaryWithDictionary:dict[@"body"]]];
-        [self setCultivateInfoModel:cultInfoModel];
+        self.cultivateInfo = cultInfoModel;
+        [self getPhotoArray];
     }];
 }
 
 //获取课堂 照片
 - (void)getPhotoArray{
+    NSString *classid = self.cultivateInfo.classid;
     NSMutableArray *arr = [NSMutableArray array];
     [arr property:RQ_USER_MANAGER.currentUser.outId forKey:@"outid"];
     [arr property:@"1"  forKey:@"type"];//1课堂 2模拟
     [arr property:RQ_USER_MANAGER.currentUser.city   forKey:@"dqbh"];
-    [arr property:@"183093223"   forKey:@"classid"];
+    [arr property:classid   forKey:@"classid"];
     [self.photosArray removeAllObjects];
     NSString* method = @"getStunocarPhoto";
     [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary * dict) {
-        //NSLog(@"getStunocarSignInfodict=====%@",dict);
+        if (dict==nil||[dict[@"code"] intValue]!=0) {
+            self.not_data_view.hidden = NO;
+            return;
+        }
+        self.cultivateInfo.timeAll = dict[@"body"][@"timeAll"];
+        self.cultivateInfo.nextDate = dict[@"body"][@"nextDate"];
+        [self setCultivateInfoModel:self.cultivateInfo];
         NSArray<CultivatePhotoModel*> *photo_array = [CultivatePhotoModel modelArrayWithJSON:dict[@"body"][@"photos"]];
         [self.photosArray addObjectsFromArray:photo_array];
         [self.collectionView reloadData];
@@ -108,60 +120,116 @@
 
 
 - (IBAction)submit_clickdo:(UIButton *)sender {
-    
+    if(_myLocation.latitude<=0){
+        ShowMsg(@"定位失败!请重新定位!");
+        return;
+    }
     CultivateInfoModel  *cultInfoModel = self.viewModel.cultivateInfoModel;
     //        roomLat roomLng maxDistance
-    NSString *title = [NSString stringWithFormat:@"您距离课堂超过了%@m",cultInfoModel.maxDistance];
+    //NSString *title = [NSString stringWithFormat:@"您距离课堂超过了%@m",cultInfoModel.maxDistance];
     //计算距离
     double this_distance = 0.0;
     double lat1 = cultInfoModel.roomLat.doubleValue;
     double lng1 = cultInfoModel.roomLng.doubleValue;
+//    26.122397, 119.251203
+
     if(_myLocation.latitude >0){
-        double lat2 = _myLocation.latitude;
-        double lng2 = _myLocation.longitude;
-        this_distance =  [self distanceBetweenOrderBy:lat1 :lat2 :lng1 :lng2];
+        double lat2 = _myLocation.latitude;//[[NSString stringWithFormat:@"%.6f",] doubleValue];
+        double lng2 = _myLocation.longitude;//[[NSString stringWithFormat:@"%.6f",] doubleValue];
+        this_distance = [MapManager getDistance:lat1 lng1:lng1 lat2:lat2 lng2:lng2];  // [self distanceBetweenOrderBy:lat1 :lat2 :lng1 :lng2];
     }
     if(this_distance>cultInfoModel.maxDistance.doubleValue){//超出范围
-//        if(cultInfoModel.isDistance){//是否强制 判断-范围
-//            [RQ_SHARE_FUNCTION showAlertWithTitle:@"提示" message:title alertControllerStyle:UIAlertControllerStyleAlert cancelButtonTitle:@"取消" otherButtonTitles:@[@"确定"] otherButtonStyles:nil showInWindow:NO completion:^(NSUInteger selectedOtherButtonIndex) {
-//                if (selectedOtherButtonIndex == 0) {
-//                 
-//                }
-//            }];
-//        }else{
-//            [RQ_SHARE_FUNCTION showAlertWithTitle:@"提示" message:title alertControllerStyle:UIAlertControllerStyleAlert cancelButtonTitle:nil otherButtonTitles:@[@"确定"] otherButtonStyles:@"取消" showInWindow:NO completion:^(NSUInteger selectedOtherButtonIndex) {
-//                if (selectedOtherButtonIndex == 0) {
-//                 
-//                }
-//            }];
-//        }
+        if(cultInfoModel.isDistance){//是否强制 判断-范围
+            [RQ_SHARE_FUNCTION showAlertWithTitle:@"提示" message:@"当前位置超出理论教室规定最大距离, 不能继续拍照" alertControllerStyle:UIAlertControllerStyleAlert cancelButtonTitle:@"取消" otherButtonTitles:@[@"确定"] otherButtonStyles:nil showInWindow:NO completion:^(NSUInteger selectedOtherButtonIndex) {
+                if (selectedOtherButtonIndex == 0) {
+                }
+            }];
+        }else{
+            //友好提示一下
+            [RQ_SHARE_FUNCTION showAlertWithTitle:@"提示" message:@"当前位置已超出理论教室规定最大距离, 是否继续拍照?" alertControllerStyle:UIAlertControllerStyleAlert cancelButtonTitle:@"取消" otherButtonTitles:@[@"确定"] otherButtonStyles:nil showInWindow:NO completion:^(NSUInteger selectedOtherButtonIndex) {
+                if (selectedOtherButtonIndex == 0) {
+                    [self beginCheckBodyHumanface];
+                }
+            }];
+        }
     }else{//未超出范围
         //直接-进入人脸-签到流程
-        
+        [self beginCheckBodyHumanface];
     }
     
-    //-人脸比对
+}
+
+//人脸比对流程
+-(void)beginCheckBodyHumanface{
+    @weakify(self)
     ///  1.本地活体检测
     [RQ_CHECKBODY_MANAGER beginCheckBodyWithCheckNum:RQ_USER_MANAGER.ycbdFaceCount completeBlock:^(BOOL success, NSDictionary * _Nullable dic) {
-        //@strongify(self)
         if (success) {
-            /// 2.线上活体检测
-            NSMutableArray *arr = [NSMutableArray array];
-            [arr property:RQ_USER_MANAGER.currentUser.outId forKey:@"stuId"];
-            [arr property:@"1"  forKey:@"type"];//1课堂 2模拟
-            [arr property:RQ_USER_MANAGER.currentUser.city   forKey:@"dqbh"];
-            [arr property:@"183093223"   forKey:@"photo"];
-            NSString* method = @"stunocarfaceToface";
-            [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary * dict) {
-                //NSLog(@"getStunocarSignInfodict=====%@",dict);
-       
+            //上传-课堂照片
+            __block NSMutableArray *arr = [NSMutableArray array];
+            NSData *imageData = [[NSData alloc] initWithBase64EncodedString:dic[@"normalImg"] options:NSDataBase64DecodingIgnoreUnknownCharacters];
+            NSString *method = [NSString stringWithFormat:@"education/imageup/%@/1/%@/nocar",RQ_USER_MANAGER.currentUser.city,RQ_USER_MANAGER.currentUser.outId];
+            [jiaPeiManager requestAnythingImageWithURL:method array:arr data:imageData completion:^(NSDictionary *dict) {
+                NSLog(@"%@",dict);
+                int code = [dict[@"code"] intValue];
+                if(code == 0 ){
+                    NSString *paths = dict[@"data"][@"paths"];
+                    NSString *photoid = dict[@"data"][@"id"];
+                    /// 2.线上活体检测
+                    [self stunocarfaceTofacedo:photoid];
+                }else{
+                    ShowMsg(dict[@"msg"]);
+                }
             }];
-            
-            /// 3. updateStunocarPhoto 过程上传
+        }else{
+            ShowMsg(@"活体检测失败");
+        }
+    }];
+}
+
+// 人脸线上比对
+-(void)stunocarfaceTofacedo:(NSString *)photoid {
+        NSMutableArray *arr = [NSMutableArray array];
+        [arr property:RQ_USER_MANAGER.currentUser.outId forKey:@"stuId"];
+        [arr property:RQ_USER_MANAGER.currentUser.city   forKey:@"dqbh"];
+        [arr property:photoid   forKey:@"photo"];
+        NSString* method = @"stunocarfaceToface";
+        [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary * dict) {
+            if ([dict[@"code"] intValue] == 0)
+            {
+                [self updateStunocarPhoto:photoid];
+            }
+            else
+            {
+                ShowMsg(dict[@"msg"]);
+            }
+        }];
+}
+     
+//  过程上传
+-(void)updateStunocarPhoto:(NSString *)photoid{
+    NSString *classid = self.cultivateInfo.classid;
+    NSString *lat = [NSString stringWithFormat:@"%.6f",_myLocation.latitude];
+    NSString *lng = [NSString stringWithFormat:@"%.6f",_myLocation.longitude];
+    NSMutableArray *arr = [NSMutableArray array];
+    [arr property:RQ_USER_MANAGER.currentUser.outId forKey:@"stuId"];
+    [arr property:@"1"  forKey:@"type"];//1课堂 2模拟
+    [arr property:RQ_USER_MANAGER.currentUser.city   forKey:@"dqbh"];
+    [arr property:classid   forKey:@"classid"];
+    [arr property:photoid   forKey:@"photo"];
+    [arr property:lng   forKey:@"lng"];
+    [arr property:lat   forKey:@"lat"];
+    NSString* method = @"updateStunocarPhoto";
+    [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary * dict) {
+        if ([dict[@"code"] intValue] == 0) {
+            ShowMsg(@"上传照片成功!");
+            [self getClassRoomInfo];
+        }
+        else
+        {
+            ShowMsg(dict[@"msg"]);
         }
     }];
-    //上传-课堂照片
-    
 }
 
 
@@ -172,8 +240,8 @@
     CLLocation *otherLocation = [[CLLocation alloc] initWithLatitude:latitude2 longitude:longitude2];
     
     // 计算两个坐标之间的距离
-    CLLocationDistance distance = [curLocation distanceFromLocation:otherLocation];
-    //double  distance  = [curLocation distanceFromLocation:otherLocation];
+    //CLLocationDistance distance = [curLocation distanceFromLocation:otherLocation];
+    double  distance  = [curLocation distanceFromLocation:otherLocation];
     
     return  distance;
     
@@ -182,7 +250,7 @@
 -(UICollectionView *)collectionView{
     if (!_collectionView) {
         UICollectionViewFlowLayout *flowLayOut = [[UICollectionViewFlowLayout alloc] init];
-        flowLayOut.itemSize = CGSizeMake(65, 65);
+        flowLayOut.itemSize = CGSizeMake(80, 150);
         flowLayOut.sectionInset = UIEdgeInsetsMake(5, 5, 5, 5);
         flowLayOut.scrollDirection = UICollectionViewScrollDirectionHorizontal;
         self.collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:flowLayOut];
@@ -233,11 +301,9 @@
 }
 
 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
-    CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
-    cell.deleteButton.hidden = YES;
-    cell.imagev.frame = CGRectMake(0, 0, 65, 65);
+    NYClassRoomPeiPhotoCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
     CultivatePhotoModel *photoModel = self.photosArray[indexPath.row];
-    [cell.imagev sd_setImageWithURL:[NSURL URLWithString:photoModel.filepath]];
+    cell.cultivatePhotoModel = photoModel;
     return cell;
     
 }

+ 176 - 138
jiaPei/NewTheory/View/NYClassRoomPeiCell.xib

@@ -12,14 +12,14 @@
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="gTV-IL-0wX" customClass="NYClassRoomPeiCell">
-            <rect key="frame" x="0.0" y="0.0" width="320" height="555"/>
+            <rect key="frame" x="0.0" y="0.0" width="320" height="666"/>
             <autoresizingMask key="autoresizingMask"/>
             <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
-                <rect key="frame" x="0.0" y="0.0" width="320" height="555"/>
+                <rect key="frame" x="0.0" y="0.0" width="320" height="666"/>
                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                 <subviews>
                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="lNa-sV-KWt">
-                        <rect key="frame" x="16" y="32" width="288" height="300"/>
+                        <rect key="frame" x="16" y="32" width="288" height="330"/>
                         <subviews>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="培训信息" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ct5-rH-4pJ">
                                 <rect key="frame" x="8" y="15" width="100" height="21"/>
@@ -38,7 +38,7 @@
                                     <constraint firstAttribute="height" constant="21" id="kyr-5f-Chz"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                <nil key="textColor"/>
+                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="学员姓名" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="611-v6-Zac">
@@ -48,187 +48,175 @@
                                     <constraint firstAttribute="width" constant="76" id="jjq-ru-Oij"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                <nil key="textColor"/>
-                                <nil key="highlightedColor"/>
-                            </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="培训车型" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZVI-2s-Wo3">
-                                <rect key="frame" x="8" y="109" width="76" height="21"/>
-                                <constraints>
-                                    <constraint firstAttribute="width" constant="76" id="O96-Js-1M8"/>
-                                    <constraint firstAttribute="height" constant="21" id="nMx-bV-LqT"/>
-                                </constraints>
-                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                <nil key="textColor"/>
+                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="车牌号" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f1O-Me-US2">
-                                <rect key="frame" x="8" y="138" width="76" height="21"/>
+                                <rect key="frame" x="8" y="109" width="76" height="21"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="21" id="OPj-80-Dgh"/>
-                                    <constraint firstAttribute="width" constant="76" id="n7a-cA-aDY"/>
+                                    <constraint firstAttribute="height" constant="21" id="7SX-33-ZA2"/>
+                                    <constraint firstAttribute="width" constant="76" id="JYW-St-01O"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                <nil key="textColor"/>
+                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="教室名称" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mpa-rs-d11">
-                                <rect key="frame" x="8" y="167" width="76" height="21"/>
+                                <rect key="frame" x="8" y="138" width="76" height="21"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="21" id="sEk-Co-dtC"/>
-                                    <constraint firstAttribute="width" constant="76" id="ymd-Uz-n5Q"/>
+                                    <constraint firstAttribute="width" constant="76" id="Plw-cz-k6U"/>
+                                    <constraint firstAttribute="height" constant="21" id="nCC-Vr-gyP"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                <nil key="textColor"/>
+                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="驾校简称" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Inj-0d-SuS">
-                                <rect key="frame" x="8" y="196" width="76" height="21"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="过程拍照有效时间" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Inj-0d-SuS">
+                                <rect key="frame" x="8" y="167" width="76" height="42"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="21" id="fte-Le-SbY"/>
-                                    <constraint firstAttribute="width" constant="76" id="gpR-qj-eb0"/>
+                                    <constraint firstAttribute="height" constant="42" id="QBQ-P2-xyv"/>
+                                    <constraint firstAttribute="width" constant="76" id="knu-Dq-8tM"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                <nil key="textColor"/>
+                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="签到时间" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="I87-Rq-n6E">
-                                <rect key="frame" x="8" y="225" width="76" height="21"/>
+                                <rect key="frame" x="8" y="217" width="76" height="21"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="21" id="eBp-gf-3y4"/>
-                                    <constraint firstAttribute="width" constant="76" id="vOl-cX-efg"/>
+                                    <constraint firstAttribute="height" constant="21" id="F1L-t8-bLI"/>
+                                    <constraint firstAttribute="width" constant="76" id="NeZ-dv-5Gg"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                <nil key="textColor"/>
+                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="培训类型" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6fO-G5-aFg">
-                                <rect key="frame" x="8" y="254" width="76" height="21"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="下次拍照时间" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6fO-G5-aFg">
+                                <rect key="frame" x="8" y="246" width="100" height="21"/>
                                 <constraints>
-                                    <constraint firstAttribute="width" constant="76" id="HcV-Cs-O1O"/>
-                                    <constraint firstAttribute="height" constant="21" id="j6v-XL-UVX"/>
+                                    <constraint firstAttribute="height" constant="21" id="cWS-5S-6ck"/>
+                                    <constraint firstAttribute="width" constant="100" id="yBO-80-lGn"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                <nil key="textColor"/>
+                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5bo-dI-wJO">
-                                <rect key="frame" x="92" y="52" width="188" height="18"/>
+                                <rect key="frame" x="108" y="52" width="172" height="18"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="18" id="n5I-ux-d3A"/>
+                                    <constraint firstAttribute="height" constant="18" id="wnu-kN-Oh0"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fmu-yY-xfB">
-                                <rect key="frame" x="92" y="81" width="188" height="18"/>
+                                <rect key="frame" x="108" y="81" width="172" height="18"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="18" id="5iw-FM-yAR"/>
+                                    <constraint firstAttribute="height" constant="18" id="tZM-Mg-kBt"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8rg-v2-hPZ">
-                                <rect key="frame" x="92" y="110" width="188" height="18"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ygt-6n-Mtq">
+                                <rect key="frame" x="108" y="110" width="172" height="18"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="18" id="j8y-aR-erM"/>
+                                    <constraint firstAttribute="height" constant="18" id="gPT-fT-rx3"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ygt-6n-Mtq">
-                                <rect key="frame" x="92" y="139" width="188" height="18"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="002-QM-OCW">
+                                <rect key="frame" x="108" y="139" width="172" height="18"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="18" id="75l-fE-MUZ"/>
+                                    <constraint firstAttribute="height" constant="18" id="t2L-0z-mng"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="002-QM-OCW">
-                                <rect key="frame" x="92" y="168" width="188" height="18"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AwZ-h4-8IC">
+                                <rect key="frame" x="108" y="219" width="172" height="18"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="18" id="GFF-aR-DkR"/>
+                                    <constraint firstAttribute="height" constant="18" id="G5M-J6-wnQ"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uDx-Iw-Z5O">
-                                <rect key="frame" x="92" y="197" width="188" height="18"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="P4l-Io-AnM">
+                                <rect key="frame" x="108" y="248" width="172" height="18"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="18" id="XtZ-UT-fVI"/>
+                                    <constraint firstAttribute="height" constant="18" id="YO3-P8-23V"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AwZ-h4-8IC">
-                                <rect key="frame" x="92" y="226" width="188" height="18"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="(注意:可以提前拍照过程验证,不能晚于该时间拍照验证,否则超出部分学时无效)" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PTt-AC-vc8">
+                                <rect key="frame" x="8" y="273" width="272" height="56"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="18" id="qmN-jM-1yy"/>
+                                    <constraint firstAttribute="height" constant="56" id="kHG-vB-sDj"/>
                                 </constraints>
-                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <color key="textColor" red="0.79607843140000001" green="0.1529411765" blue="0.1137254902" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="P4l-Io-AnM">
-                                <rect key="frame" x="92" y="255" width="188" height="18"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uDx-Iw-Z5O">
+                                <rect key="frame" x="108" y="179" width="172" height="18"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="18" id="Hb6-lZ-Dyd"/>
+                                    <constraint firstAttribute="height" constant="18" id="dEL-Af-HJV"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                 <nil key="highlightedColor"/>
                             </label>
                         </subviews>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
-                            <constraint firstItem="I87-Rq-n6E" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="3WJ-Dh-pPq"/>
+                            <constraint firstItem="uDx-Iw-Z5O" firstAttribute="leading" secondItem="Inj-0d-SuS" secondAttribute="trailing" constant="24" id="0TE-3W-5Ue"/>
+                            <constraint firstItem="f1O-Me-US2" firstAttribute="top" secondItem="611-v6-Zac" secondAttribute="bottom" constant="8" id="4AE-37-cGg"/>
                             <constraint firstItem="611-v6-Zac" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="9yT-Vi-XUc"/>
-                            <constraint firstItem="5bo-dI-wJO" firstAttribute="top" secondItem="ct5-rH-4pJ" secondAttribute="bottom" constant="16" id="AQp-vN-iao"/>
+                            <constraint firstAttribute="trailing" secondItem="uDx-Iw-Z5O" secondAttribute="trailing" constant="8" id="AR5-9Z-E1v"/>
                             <constraint firstItem="H5t-2o-drT" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="AYl-L1-OVu"/>
-                            <constraint firstItem="uDx-Iw-Z5O" firstAttribute="top" secondItem="002-QM-OCW" secondAttribute="bottom" constant="11" id="BUe-Qr-Twd"/>
-                            <constraint firstItem="8rg-v2-hPZ" firstAttribute="top" secondItem="fmu-yY-xfB" secondAttribute="bottom" constant="11" id="Cbf-Za-f77"/>
-                            <constraint firstItem="f1O-Me-US2" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="EC9-PU-hOv"/>
-                            <constraint firstItem="fmu-yY-xfB" firstAttribute="top" secondItem="5bo-dI-wJO" secondAttribute="bottom" constant="11" id="EG8-5a-uxp"/>
-                            <constraint firstItem="AwZ-h4-8IC" firstAttribute="top" secondItem="uDx-Iw-Z5O" secondAttribute="bottom" constant="11" id="Ebq-U9-ywT"/>
-                            <constraint firstAttribute="trailing" secondItem="P4l-Io-AnM" secondAttribute="trailing" constant="8" id="FDN-Vs-xjO"/>
-                            <constraint firstItem="I87-Rq-n6E" firstAttribute="top" secondItem="Inj-0d-SuS" secondAttribute="bottom" constant="8" symbolic="YES" id="GHi-QI-9u9"/>
-                            <constraint firstItem="ygt-6n-Mtq" firstAttribute="leading" secondItem="f1O-Me-US2" secondAttribute="trailing" constant="8" id="H9Z-EK-WU6"/>
-                            <constraint firstItem="uDx-Iw-Z5O" firstAttribute="leading" secondItem="Inj-0d-SuS" secondAttribute="trailing" constant="8" id="HIW-hv-GpT"/>
-                            <constraint firstItem="002-QM-OCW" firstAttribute="leading" secondItem="mpa-rs-d11" secondAttribute="trailing" constant="8" id="K2D-39-MPH"/>
-                            <constraint firstItem="6fO-G5-aFg" firstAttribute="top" secondItem="I87-Rq-n6E" secondAttribute="bottom" constant="8" symbolic="YES" id="Ny4-4p-d0O"/>
-                            <constraint firstItem="8rg-v2-hPZ" firstAttribute="leading" secondItem="ZVI-2s-Wo3" secondAttribute="trailing" constant="8" id="PE7-Uy-15v"/>
-                            <constraint firstItem="P4l-Io-AnM" firstAttribute="top" secondItem="AwZ-h4-8IC" secondAttribute="bottom" constant="11" id="RWZ-1S-dZJ"/>
-                            <constraint firstAttribute="trailing" secondItem="ygt-6n-Mtq" secondAttribute="trailing" constant="8" id="SHK-y9-gZb"/>
-                            <constraint firstItem="Inj-0d-SuS" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="Shb-nv-Nmt"/>
+                            <constraint firstAttribute="trailing" secondItem="ygt-6n-Mtq" secondAttribute="trailing" constant="8" id="Cwh-IZ-ZZX"/>
+                            <constraint firstAttribute="trailing" secondItem="PTt-AC-vc8" secondAttribute="trailing" constant="8" id="FP4-iZ-d3k"/>
+                            <constraint firstItem="6fO-G5-aFg" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="FgB-Oc-Grk"/>
+                            <constraint firstAttribute="trailing" secondItem="AwZ-h4-8IC" secondAttribute="trailing" constant="8" id="Jgg-Aa-9nc"/>
+                            <constraint firstItem="mpa-rs-d11" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="KRi-0S-RKN"/>
+                            <constraint firstItem="5bo-dI-wJO" firstAttribute="top" secondItem="lNa-sV-KWt" secondAttribute="top" constant="52" id="LAs-9t-pIl"/>
+                            <constraint firstItem="AwZ-h4-8IC" firstAttribute="top" secondItem="uDx-Iw-Z5O" secondAttribute="bottom" constant="22" id="NZx-fp-yCe"/>
+                            <constraint firstItem="Inj-0d-SuS" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="Ozb-8K-4Y5"/>
+                            <constraint firstItem="P4l-Io-AnM" firstAttribute="leading" secondItem="6fO-G5-aFg" secondAttribute="trailing" id="PIJ-JL-uyX"/>
+                            <constraint firstItem="ygt-6n-Mtq" firstAttribute="top" secondItem="fmu-yY-xfB" secondAttribute="bottom" constant="11" id="QC2-xB-qZv"/>
+                            <constraint firstItem="fmu-yY-xfB" firstAttribute="leading" secondItem="611-v6-Zac" secondAttribute="trailing" constant="24" id="RL7-2a-7WE"/>
+                            <constraint firstItem="AwZ-h4-8IC" firstAttribute="leading" secondItem="I87-Rq-n6E" secondAttribute="trailing" constant="24" id="Ref-FT-xnO"/>
+                            <constraint firstItem="uDx-Iw-Z5O" firstAttribute="top" secondItem="002-QM-OCW" secondAttribute="bottom" constant="22" id="SLo-al-gYK"/>
+                            <constraint firstAttribute="trailing" secondItem="fmu-yY-xfB" secondAttribute="trailing" constant="8" id="Sir-Kv-grP"/>
+                            <constraint firstItem="PTt-AC-vc8" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="Sn5-DI-YsD"/>
+                            <constraint firstAttribute="trailing" secondItem="P4l-Io-AnM" secondAttribute="trailing" constant="8" id="T2K-Mg-VMb"/>
+                            <constraint firstItem="I87-Rq-n6E" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="Ut7-nV-0OM"/>
+                            <constraint firstItem="PTt-AC-vc8" firstAttribute="top" secondItem="6fO-G5-aFg" secondAttribute="bottom" constant="6" id="VyS-IU-nMf"/>
+                            <constraint firstAttribute="trailing" secondItem="002-QM-OCW" secondAttribute="trailing" constant="8" id="WPv-cB-CFQ"/>
                             <constraint firstItem="ct5-rH-4pJ" firstAttribute="top" secondItem="lNa-sV-KWt" secondAttribute="top" constant="15" id="YAu-Vk-EPF"/>
                             <constraint firstItem="611-v6-Zac" firstAttribute="top" secondItem="H5t-2o-drT" secondAttribute="bottom" constant="8" symbolic="YES" id="a0N-xM-wZE"/>
-                            <constraint firstItem="mpa-rs-d11" firstAttribute="top" secondItem="f1O-Me-US2" secondAttribute="bottom" constant="8" symbolic="YES" id="bC1-Eo-JCM"/>
-                            <constraint firstAttribute="trailing" secondItem="uDx-Iw-Z5O" secondAttribute="trailing" constant="8" id="cKm-xb-RGv"/>
-                            <constraint firstItem="ZVI-2s-Wo3" firstAttribute="top" secondItem="611-v6-Zac" secondAttribute="bottom" constant="8" symbolic="YES" id="cMS-Wc-sOk"/>
-                            <constraint firstAttribute="trailing" secondItem="fmu-yY-xfB" secondAttribute="trailing" constant="8" id="d3C-HW-8MA"/>
+                            <constraint firstItem="6fO-G5-aFg" firstAttribute="top" secondItem="I87-Rq-n6E" secondAttribute="bottom" constant="8" id="bYI-pf-NI9"/>
+                            <constraint firstItem="Inj-0d-SuS" firstAttribute="top" secondItem="mpa-rs-d11" secondAttribute="bottom" constant="8" id="cFV-5A-xMN"/>
                             <constraint firstItem="H5t-2o-drT" firstAttribute="top" secondItem="ct5-rH-4pJ" secondAttribute="bottom" constant="15" id="ela-OM-G6k"/>
                             <constraint firstItem="ct5-rH-4pJ" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="f2N-HW-Q07"/>
-                            <constraint firstItem="5bo-dI-wJO" firstAttribute="leading" secondItem="H5t-2o-drT" secondAttribute="trailing" constant="8" id="hF6-UA-Psg"/>
-                            <constraint firstAttribute="height" constant="300" id="hV5-tY-1K7"/>
-                            <constraint firstItem="6fO-G5-aFg" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="nIM-Pc-P1n"/>
-                            <constraint firstAttribute="trailing" secondItem="002-QM-OCW" secondAttribute="trailing" constant="8" id="nqO-YT-bYL"/>
-                            <constraint firstAttribute="trailing" secondItem="AwZ-h4-8IC" secondAttribute="trailing" constant="8" id="obd-aU-M6R"/>
-                            <constraint firstItem="fmu-yY-xfB" firstAttribute="leading" secondItem="611-v6-Zac" secondAttribute="trailing" constant="8" id="piv-Ci-irf"/>
-                            <constraint firstAttribute="trailing" secondItem="8rg-v2-hPZ" secondAttribute="trailing" constant="8" id="pqh-c5-5aP"/>
-                            <constraint firstItem="AwZ-h4-8IC" firstAttribute="leading" secondItem="I87-Rq-n6E" secondAttribute="trailing" constant="8" id="py7-9Q-6cw"/>
-                            <constraint firstAttribute="trailing" secondItem="5bo-dI-wJO" secondAttribute="trailing" constant="8" id="qEs-xa-dPF"/>
-                            <constraint firstItem="Inj-0d-SuS" firstAttribute="top" secondItem="mpa-rs-d11" secondAttribute="bottom" constant="8" symbolic="YES" id="sdn-pw-pur"/>
-                            <constraint firstItem="ZVI-2s-Wo3" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="shJ-yW-cHC"/>
-                            <constraint firstItem="002-QM-OCW" firstAttribute="top" secondItem="ygt-6n-Mtq" secondAttribute="bottom" constant="11" id="vNY-Gd-Vgt"/>
-                            <constraint firstItem="ygt-6n-Mtq" firstAttribute="top" secondItem="8rg-v2-hPZ" secondAttribute="bottom" constant="11" id="voS-ls-GYH"/>
-                            <constraint firstItem="f1O-Me-US2" firstAttribute="top" secondItem="ZVI-2s-Wo3" secondAttribute="bottom" constant="8" symbolic="YES" id="xEP-Q6-TdS"/>
-                            <constraint firstItem="mpa-rs-d11" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="yrj-L5-zfj"/>
-                            <constraint firstItem="P4l-Io-AnM" firstAttribute="leading" secondItem="6fO-G5-aFg" secondAttribute="trailing" constant="8" id="zZa-Qm-CHb"/>
+                            <constraint firstItem="mpa-rs-d11" firstAttribute="top" secondItem="f1O-Me-US2" secondAttribute="bottom" constant="8" id="fPi-hc-JM6"/>
+                            <constraint firstAttribute="height" constant="330" id="hV5-tY-1K7"/>
+                            <constraint firstItem="5bo-dI-wJO" firstAttribute="leading" secondItem="H5t-2o-drT" secondAttribute="trailing" constant="24" id="hdP-iT-td5"/>
+                            <constraint firstItem="I87-Rq-n6E" firstAttribute="top" secondItem="Inj-0d-SuS" secondAttribute="bottom" constant="8" id="lBy-nx-8D7"/>
+                            <constraint firstItem="fmu-yY-xfB" firstAttribute="top" secondItem="5bo-dI-wJO" secondAttribute="bottom" constant="11" id="lWA-Mc-U6x"/>
+                            <constraint firstItem="f1O-Me-US2" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="ouT-s3-3ec"/>
+                            <constraint firstItem="002-QM-OCW" firstAttribute="top" secondItem="ygt-6n-Mtq" secondAttribute="bottom" constant="11" id="pFC-tx-V4x"/>
+                            <constraint firstItem="P4l-Io-AnM" firstAttribute="top" secondItem="AwZ-h4-8IC" secondAttribute="bottom" constant="11" id="pI7-NZ-Yxw"/>
+                            <constraint firstItem="ygt-6n-Mtq" firstAttribute="leading" secondItem="f1O-Me-US2" secondAttribute="trailing" constant="24" id="q66-2x-Ayc"/>
+                            <constraint firstItem="002-QM-OCW" firstAttribute="leading" secondItem="mpa-rs-d11" secondAttribute="trailing" constant="24" id="v7U-7a-Sbr"/>
+                            <constraint firstAttribute="trailing" secondItem="5bo-dI-wJO" secondAttribute="trailing" constant="8" id="xS3-dr-2yH"/>
                         </constraints>
                         <userDefinedRuntimeAttributes>
                             <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="NO"/>
@@ -247,7 +235,7 @@
                         </userDefinedRuntimeAttributes>
                     </view>
                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5AK-y0-nrp">
-                        <rect key="frame" x="16" y="348" width="288" height="141"/>
+                        <rect key="frame" x="16" y="378" width="288" height="280"/>
                         <subviews>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="培训照片" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kYM-KR-Vu2">
                                 <rect key="frame" x="8" y="15" width="76" height="21"/>
@@ -260,19 +248,46 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="faB-qf-mKw">
-                                <rect key="frame" x="8" y="51" width="272" height="75"/>
+                                <rect key="frame" x="8" y="51" width="272" height="154"/>
                                 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="154" id="sA0-SH-ZuI"/>
+                                </constraints>
                             </view>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="l5L-dJ-GEH">
+                                <rect key="frame" x="34" y="215" width="220" height="55"/>
+                                <color key="backgroundColor" red="0.23137254901960785" green="0.46666666666666667" blue="0.95294117647058818" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="55" id="2nM-be-qrh"/>
+                                    <constraint firstAttribute="width" constant="220" id="MXK-f7-tl0"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="boldSystem" pointSize="18"/>
+                                <inset key="titleEdgeInsets" minX="10" minY="0.0" maxX="0.0" maxY="0.0"/>
+                                <inset key="imageEdgeInsets" minX="15" minY="12" maxX="15" maxY="12"/>
+                                <state key="normal" title="过程拍照" image="classroom_camera">
+                                    <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                </state>
+                                <userDefinedRuntimeAttributes>
+                                    <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="NO"/>
+                                    <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                        <integer key="value" value="8"/>
+                                    </userDefinedRuntimeAttribute>
+                                </userDefinedRuntimeAttributes>
+                                <connections>
+                                    <action selector="submit_clickdo:" destination="gTV-IL-0wX" eventType="touchUpInside" id="mjd-pt-xsw"/>
+                                </connections>
+                            </button>
                         </subviews>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
+                            <constraint firstItem="l5L-dJ-GEH" firstAttribute="top" secondItem="faB-qf-mKw" secondAttribute="bottom" constant="10" id="Cf5-Te-eZG"/>
                             <constraint firstAttribute="trailing" secondItem="faB-qf-mKw" secondAttribute="trailing" constant="8" id="FAb-Sx-XIh"/>
                             <constraint firstItem="kYM-KR-Vu2" firstAttribute="top" secondItem="5AK-y0-nrp" secondAttribute="top" constant="15" id="WJV-83-SKh"/>
                             <constraint firstItem="kYM-KR-Vu2" firstAttribute="leading" secondItem="5AK-y0-nrp" secondAttribute="leading" constant="8" id="eiu-De-A1J"/>
-                            <constraint firstAttribute="bottom" secondItem="faB-qf-mKw" secondAttribute="bottom" constant="15" id="jPa-uk-Pya"/>
                             <constraint firstItem="faB-qf-mKw" firstAttribute="leading" secondItem="5AK-y0-nrp" secondAttribute="leading" constant="8" id="lI8-K6-W2h"/>
-                            <constraint firstAttribute="height" constant="141" id="mzc-NX-2nW"/>
+                            <constraint firstAttribute="height" constant="280" id="mzc-NX-2nW"/>
                             <constraint firstItem="faB-qf-mKw" firstAttribute="top" secondItem="kYM-KR-Vu2" secondAttribute="bottom" constant="15" id="p9m-Q2-nIO"/>
+                            <constraint firstItem="l5L-dJ-GEH" firstAttribute="centerX" secondItem="5AK-y0-nrp" secondAttribute="centerX" id="wj0-nN-akS"/>
                         </constraints>
                         <userDefinedRuntimeAttributes>
                             <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="NO"/>
@@ -290,63 +305,86 @@
                             </userDefinedRuntimeAttribute>
                         </userDefinedRuntimeAttributes>
                     </view>
-                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="开始计时bg" translatesAutoresizingMaskIntoConstraints="NO" id="7Jf-mw-lBI">
-                        <rect key="frame" x="73" y="499" width="174" height="50"/>
-                        <constraints>
-                            <constraint firstAttribute="height" constant="50" id="pHY-hZ-TMD"/>
-                            <constraint firstAttribute="width" constant="174" id="w3c-xL-BMz"/>
-                        </constraints>
-                    </imageView>
-                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="l5L-dJ-GEH">
-                        <rect key="frame" x="73" y="494" width="174" height="55"/>
+                    <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7KQ-fQ-6fM">
+                        <rect key="frame" x="16" y="32" width="288" height="634"/>
+                        <subviews>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="考场空数据占位图" translatesAutoresizingMaskIntoConstraints="NO" id="hXY-IN-lJ3">
+                                <rect key="frame" x="24" y="141" width="240" height="128"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="128" id="6sO-WC-Qlf"/>
+                                    <constraint firstAttribute="width" constant="240" id="wm0-w4-I1s"/>
+                                </constraints>
+                            </imageView>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="还没有您的课堂信息" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eqx-xY-xrX">
+                                <rect key="frame" x="61" y="319" width="166" height="22"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="166" id="9DF-rR-u80"/>
+                                    <constraint firstAttribute="height" constant="22" id="wa9-cX-8qL"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="18"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
-                            <constraint firstAttribute="height" constant="55" id="508-xR-VPe"/>
-                            <constraint firstAttribute="width" constant="174" id="ezd-zA-FXU"/>
+                            <constraint firstItem="hXY-IN-lJ3" firstAttribute="centerX" secondItem="7KQ-fQ-6fM" secondAttribute="centerX" id="ah3-pg-Bw5"/>
+                            <constraint firstItem="eqx-xY-xrX" firstAttribute="centerX" secondItem="7KQ-fQ-6fM" secondAttribute="centerX" id="hnd-dg-oMR"/>
+                            <constraint firstItem="hXY-IN-lJ3" firstAttribute="top" secondItem="7KQ-fQ-6fM" secondAttribute="top" constant="141" id="uP8-9x-q4e"/>
+                            <constraint firstItem="eqx-xY-xrX" firstAttribute="top" secondItem="hXY-IN-lJ3" secondAttribute="bottom" constant="50" id="wgG-Au-RFA"/>
                         </constraints>
-                        <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/>
-                        <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
-                        <state key="normal" title="签到">
-                            <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                        </state>
-                        <connections>
-                            <action selector="submit_clickdo:" destination="gTV-IL-0wX" eventType="touchUpInside" id="mjd-pt-xsw"/>
-                        </connections>
-                    </button>
+                        <userDefinedRuntimeAttributes>
+                            <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="NO"/>
+                            <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                <integer key="value" value="10"/>
+                            </userDefinedRuntimeAttribute>
+                            <userDefinedRuntimeAttribute type="number" keyPath="layer.shadowRadius">
+                                <integer key="value" value="8"/>
+                            </userDefinedRuntimeAttribute>
+                            <userDefinedRuntimeAttribute type="number" keyPath="layer.shadowOpacity">
+                                <integer key="value" value="1"/>
+                            </userDefinedRuntimeAttribute>
+                            <userDefinedRuntimeAttribute type="size" keyPath="layer.shadowOffset">
+                                <size key="value" width="0.0" height="0.0"/>
+                            </userDefinedRuntimeAttribute>
+                        </userDefinedRuntimeAttributes>
+                    </view>
                 </subviews>
             </view>
             <viewLayoutGuide key="safeArea" id="SEy-5g-ep8"/>
             <constraints>
-                <constraint firstItem="l5L-dJ-GEH" firstAttribute="top" secondItem="5AK-y0-nrp" secondAttribute="bottom" constant="5" id="1Cp-At-PVo"/>
                 <constraint firstItem="5AK-y0-nrp" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="16" id="1Kz-pI-qdB"/>
                 <constraint firstItem="5AK-y0-nrp" firstAttribute="top" secondItem="lNa-sV-KWt" secondAttribute="bottom" constant="16" id="3Qp-RW-Ya6"/>
-                <constraint firstItem="7Jf-mw-lBI" firstAttribute="centerX" secondItem="gTV-IL-0wX" secondAttribute="centerX" id="O8q-dI-YCe"/>
-                <constraint firstItem="7Jf-mw-lBI" firstAttribute="top" secondItem="5AK-y0-nrp" secondAttribute="bottom" constant="10" id="PoM-GS-vjq"/>
-                <constraint firstItem="l5L-dJ-GEH" firstAttribute="centerX" secondItem="gTV-IL-0wX" secondAttribute="centerX" id="bm3-EN-FxD"/>
+                <constraint firstItem="7KQ-fQ-6fM" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="16" id="aNc-Oe-caB"/>
                 <constraint firstAttribute="trailing" secondItem="lNa-sV-KWt" secondAttribute="trailing" constant="16" id="fKO-4P-bYQ"/>
+                <constraint firstAttribute="trailing" secondItem="7KQ-fQ-6fM" secondAttribute="trailing" constant="16" id="fM2-gT-bt0"/>
                 <constraint firstItem="lNa-sV-KWt" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="16" id="l13-ec-Cyn"/>
                 <constraint firstItem="lNa-sV-KWt" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="32" id="mYb-Qv-OBL"/>
                 <constraint firstAttribute="trailing" secondItem="5AK-y0-nrp" secondAttribute="trailing" constant="16" id="nZr-0X-GSf"/>
+                <constraint firstItem="7KQ-fQ-6fM" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="32" id="vZ1-97-Mck"/>
+                <constraint firstAttribute="bottom" secondItem="7KQ-fQ-6fM" secondAttribute="bottom" id="x00-Zv-otv"/>
             </constraints>
             <size key="customSize" width="308" height="505"/>
             <connections>
                 <outlet property="cat_num_label" destination="ygt-6n-Mtq" id="v6B-nU-woo"/>
-                <outlet property="cat_type_label" destination="8rg-v2-hPZ" id="hVh-Jx-Kns"/>
                 <outlet property="coach_name_label" destination="5bo-dI-wJO" id="OQp-2E-KvC"/>
+                <outlet property="course_ptime_label" destination="uDx-Iw-Z5O" id="1m5-0P-al6"/>
+                <outlet property="exit_ptime_label" destination="P4l-Io-AnM" id="GTM-ug-GWE"/>
                 <outlet property="imageArrayView" destination="faB-qf-mKw" id="2c4-B2-fuQ"/>
-                <outlet property="pei_type_label" destination="P4l-Io-AnM" id="5jT-6A-GZ9"/>
+                <outlet property="not_data_view" destination="7KQ-fQ-6fM" id="3hi-5k-Wa2"/>
                 <outlet property="px00_view" destination="lNa-sV-KWt" id="HoW-Zg-zOK"/>
                 <outlet property="px01_view" destination="5AK-y0-nrp" id="ftz-2W-xLd"/>
                 <outlet property="room_name_label" destination="002-QM-OCW" id="00u-hD-8wK"/>
-                <outlet property="school_name_label" destination="uDx-Iw-Z5O" id="fHK-rt-Emf"/>
                 <outlet property="sign_time_label" destination="AwZ-h4-8IC" id="7gY-8c-nye"/>
                 <outlet property="stu_name_label" destination="fmu-yY-xfB" id="V70-8M-m4r"/>
                 <outlet property="submit_btn" destination="l5L-dJ-GEH" id="00R-di-yWF"/>
             </connections>
-            <point key="canvasLocation" x="235.11450381679387" y="148.94366197183101"/>
+            <point key="canvasLocation" x="235.11450381679387" y="148.59154929577466"/>
         </collectionViewCell>
     </objects>
     <resources>
-        <image name="开始计时bg" width="136" height="72"/>
+        <image name="classroom_camera" width="34" height="34"/>
+        <image name="考场空数据占位图" width="302.66665649414062" height="137.66667175292969"/>
         <systemColor name="systemBackgroundColor">
             <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
         </systemColor>

+ 24 - 0
jiaPei/NewTheory/View/NYClassRoomPeiPhotoCell.h

@@ -0,0 +1,24 @@
+//
+//  NYClassRoomPeiPhotoCell.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/2/17.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "CultivatePhotoModel.h"
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYClassRoomPeiPhotoCell : UICollectionViewCell
+@property (nonatomic ,strong) UIImageView *imagev;
+@property (nonatomic ,strong) UILabel *time_label;
+@property (nonatomic ,strong) UILabel *title_label;
+@property (nonatomic ,strong) UILabel *valid_label;
+@property (nonatomic ,strong) UILabel *valid_time_label;
+
+@property (nonatomic ,strong) CultivatePhotoModel *cultivatePhotoModel;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 82 - 0
jiaPei/NewTheory/View/NYClassRoomPeiPhotoCell.m

@@ -0,0 +1,82 @@
+//
+//  NYClassRoomPeiPhotoCell.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/2/17.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "NYClassRoomPeiPhotoCell.h"
+
+@implementation NYClassRoomPeiPhotoCell
+
+- (instancetype)initWithFrame:(CGRect)frame{
+    self = [super initWithFrame:frame];
+    if (self) {
+        [self addSubview:self.imagev];
+        [self addSubview:self.time_label];
+        [self addSubview:self.title_label];
+        [self addSubview:self.valid_label];
+        [self addSubview:self.valid_time_label];
+    }
+    return self;
+}
+
+- (UIImageView *)imagev{
+    if (!_imagev) {
+        _imagev = [[UIImageView alloc] initWithFrame:CGRectMake(12.5, 5, 55, 55)];
+//        _imagev.backgroundColor = [UIColor blueColor];
+    }
+    return _imagev;
+}
+
+- (UILabel *)time_label{
+    if (!_time_label) {
+        _time_label = [[UILabel alloc]initWithFrame:CGRectMake(0, 65, 80, 40)];
+        _time_label.font = [UIFont systemFontOfSize:13.f];
+        _time_label.textAlignment = NSTextAlignmentCenter;
+        _time_label.numberOfLines = 0;
+        _time_label.textColor = UIColorGray;
+    }
+    return _time_label;
+}
+
+- (UILabel *)title_label{
+    if (!_title_label) {
+        _title_label = [[UILabel alloc]initWithFrame:CGRectMake(0, 105, 80, 20)];
+        _title_label.font = [UIFont systemFontOfSize:10.f];
+        _title_label.textAlignment = NSTextAlignmentCenter;
+        _title_label.textColor = UIColor.blackColor;
+        _title_label.text = @"训练过程照片";
+    }
+    return _title_label;
+}
+
+- (UILabel *)valid_label{
+    if (!_valid_label) {
+        _valid_label = [[UILabel alloc]initWithFrame:CGRectMake(0, 125, 55, 20)];
+        _valid_label.font = [UIFont systemFontOfSize:10.f];
+        _valid_label.textColor = UIColor.blackColor;
+        _valid_label.text = @"有效学时:";
+    }
+    return _valid_label;
+}
+
+- (UILabel *)valid_time_label{
+    if (!_valid_time_label) {
+        _valid_time_label = [[UILabel alloc]initWithFrame:CGRectMake(50, 125, 45, 20)];
+        _valid_time_label.font = [UIFont systemFontOfSize:10.f];
+        _valid_time_label.textColor = UIColorGray;
+    }
+    return _valid_time_label;
+}
+
+
+- (void)setCultivatePhotoModel:(CultivatePhotoModel *)cultivatePhotoModel{
+    _cultivatePhotoModel = cultivatePhotoModel;
+    [self.imagev sd_setImageWithURL:[NSURL URLWithString:cultivatePhotoModel.filepath]];
+    self.time_label.text = cultivatePhotoModel.ptime;
+    self.valid_time_label.text = [NSString stringWithFormat:@"%zd分钟",cultivatePhotoModel.time];
+}
+
+@end

+ 1 - 1
jiaPei/NewTheory/ViewModel/NYClassRoomPeiViewModel.m

@@ -11,7 +11,7 @@
 @implementation NYClassRoomPeiViewModel
 - (instancetype)init {
     if (self = [super init]) {
-        self.itemSize = CGSizeMake(RQ_SCREEN_WIDTH, RQ_FIT_HORIZONTAL(555.f));
+        self.itemSize = CGSizeMake(RQ_SCREEN_WIDTH, RQ_FIT_HORIZONTAL(666.f));
     }
     return self;
 }

+ 2 - 2
jiaPei/OLD/Util/jiaPeiManager/jiaPeiManager.h

@@ -36,8 +36,8 @@
 
 #pragma mark              POST 请求
 + (void)requestPostAnythingWithURL:(NSString *)urlString parameters:(NSDictionary *)parameters completion:(MyBlockType)finishBlock;
-
-
+//我也很懵逼-(一天一个变)
++ (void)requestAnythingImageWithURL:(NSString *)urlString array:(NSArray *)aAarray data:(NSData *)uplownData completion:(MyBlockType)finishBlock;
 #pragma mark              有的公共请求
 /**获取广告
  */

+ 88 - 0
jiaPei/OLD/Util/jiaPeiManager/jiaPeiManager.m

@@ -47,6 +47,7 @@
     NSString *httpUrl = isAnother? anotherDefaultHttp : defaultHttp;
     
     NSString *urlDefault = isAnother? anotherDefaultHttpUrl :defaultHttpUrl;
+
     
     //公共请求
     NSArray *commonArray = @[@"getAppAdsNew",                  //广告
@@ -132,6 +133,19 @@
     if ([imitate2Array containsObject:urlP]) {
 		urlDefault = defaultImitateUrl2;
     }
+    
+    //课堂api用特殊
+    NSArray *classroomArray = @[@"getStunocarSignInfo",
+                                @"getStunocarPhoto",
+                                @"stunocarfaceToface",
+                                @"updateStunocarPhoto",
+                                @"education/imageup",
+    ];
+
+    if ([classroomArray containsObject:urlP]) {
+        httpUrl = @"http://121.46.4.11:18081/";
+        urlDefault = @"api/";
+    }
 	
 	// 远程理论计时
 	NSArray *educationArr = @[@"getCurrentTime",			// 获取当前时间
@@ -253,6 +267,80 @@
     return dic;
 }
 
++ (void)requestAnythingImageWithURL:(NSString *)urlString array:(NSArray *)aAarray data:(NSData *)uplownData completion:(MyBlockType)finishBlock
+{
+    //比传uplownData
+    NSDictionary *dic = [jiaPeiManager getDicWithArray:aAarray];
+    if (aAarray == nil) {
+        dic = nil;
+    }else {
+        NSArray *keyArr = @[@"userOutId", @"stuOutId", @"queryValue", @"outId", @"stuId"];
+        NSPredicate * filterPredicate = [NSPredicate predicateWithFormat:@"SELF IN %@",keyArr];
+        NSArray * filter = [[dic allKeys] filteredArrayUsingPredicate:filterPredicate];
+        if (filter.count > 0) {
+            if (!dic[filter.firstObject] || [dic[filter.firstObject] length] < 1) {
+                ShowMsg(@"未绑定运管账号,无法进行此操作");
+                return;
+            }
+        }
+    }
+    //生成请求加密后的url
+    NSString *urlS = [[jiaPeiManager getURLWithDict:dic urlPre:urlString] stringByReplacingOccurrencesOfString:@"/api" withString:@""];
+    AFHTTPSessionManager *afSessionManager = [AFHTTPSessionManager manager];
+    afSessionManager.requestSerializer  = [AFHTTPRequestSerializer serializer];
+    afSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
+    afSessionManager.responseSerializer.acceptableContentTypes = [afSessionManager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
+    afSessionManager.requestSerializer.timeoutInterval = 30;
+    [afSessionManager POST:urlS parameters:nil headers:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
+        NSString *typeString = [Tools typeForImageData:uplownData];
+        NSString *fileType = [NSString stringWithFormat:@"image.%@",typeString];
+        NSString *mimeType = [NSString stringWithFormat:@"image/%@",typeString];
+        NSTimeInterval timeI = [[NSDate date] timeIntervalSince1970] * 1000;//获取时间戳 单位:s      *1000毫秒
+        NSString *timeStr = [NSString stringWithFormat:@"%.0f",timeI];
+        [formData appendPartWithFileData:uplownData
+                                    name:[NSString stringWithFormat:@"photo%@",timeStr]
+                                fileName:fileType
+                                mimeType:mimeType];
+    } progress:^(NSProgress * _Nonnull uploadProgress) {
+        
+        //NSLog(@"uploadProgress----><>%@-----><>%@",urlS,uploadProgress);
+        
+    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
+        
+        if (responseObject == nil) {
+            NSDictionary *dic = nil;
+            finishBlock(dic);
+            return;
+        }
+        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject
+                                                            options:NSJSONReadingMutableContainers
+                                                              error:nil];
+
+        //请求成功
+        //NSLog(@"上传图片-----><>%@----><>%@",urlS,dic);
+        [jiaPeiManager QMLog:urlS obj:dic];
+        RemoveHUD();
+        finishBlock(dic);
+    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
+        
+        //请求失败
+        RemoveHUD();
+        //失败的时候 要把失败的事情传输回去
+        if ([error.domain isEqualToString:NSURLErrorDomain]) {
+            // network error
+            finishBlock(@{@"code" : @"1",@"body" : @"请检查网络连接"});
+        } else {
+            NSString *errorStr = [NSError rq_tipsFromError:error];
+            if (errorStr && ![errorStr isEqualToString:@""]) {
+                finishBlock(@{@"code" : @"1",@"body" : errorStr});
+            } else {
+                NSDictionary *dic = nil;
+                finishBlock(dic);
+            }
+        }
+    }];
+}
+
 
 + (void)requestAnythingWithURL:(NSString *)urlString array:(NSArray *)aAarray data:(NSData *)uplownData completion:(MyBlockType)finishBlock
 {

+ 1 - 1
jiaPei/UserInfo.h

@@ -14,7 +14,7 @@
 /**通过设置这个量。1表示连正式库。0表示连测试库。
  */
 ///@RQ-MARK
-#define isOfficial 0
+#define isOfficial 1
 ///是否QM控制是否打印-默认0
 #define isOffQMConsole 0