// // NYExaminationRoomViewController.m // jiaPei // // Created by Ning.ge on 2024/10/17. // Copyright © 2024 JCZ. All rights reserved. // #import "NYExaminationRoomViewController.h" #import "NYChartView.h" #import "NYQuestionContentView.h" @interface NYExaminationRoomViewController () @property (weak, nonatomic) IBOutlet UIView *content_view; @property (weak, nonatomic) IBOutlet UIView *content01_view; @property (weak, nonatomic) IBOutlet UIView *right_view; @property (weak, nonatomic) IBOutlet UIView *center_view; @property (weak, nonatomic) IBOutlet UIView *right_bk_view; @property (weak, nonatomic) IBOutlet UIView *bottom_view; @property (weak, nonatomic) IBOutlet UIImageView *usericon_view; @property (weak, nonatomic) IBOutlet UILabel *username_label; @property (weak, nonatomic) IBOutlet UILabel *timeLabel; @property (weak, nonatomic) IBOutlet UILabel *sex_label; @property (weak, nonatomic) IBOutlet UILabel *type_label; @property (weak, nonatomic) IBOutlet UILabel *km_label; @property (weak, nonatomic) IBOutlet UILabel *showtips_label; @property (weak, nonatomic) IBOutlet UIButton *previous_btn; @property (weak, nonatomic) IBOutlet UIButton *next_btn; @property (weak, nonatomic) IBOutlet UIButton *submit_btn; @property (weak, nonatomic) IBOutlet UIButton *image_btn; @property (weak, nonatomic) IBOutlet UIButton *image_big_btn; @property (nonatomic,weak) NYChartMatrixView *chartMatrixView; @property (nonatomic,strong) NYQuestionContentView *questionContentView; @property (nonatomic,strong) NYExaminationTipsViewController *examinationTipsViewController; @property (nonatomic,strong) NSArray *exercise_array; @property (nonatomic,assign) int index; //成绩 @property (nonatomic,assign) NSInteger score; @end @implementation NYExaminationRoomViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. self.previous_btn.layer.borderWidth = 1.0f; self.previous_btn.layer.borderColor = UIColorHex(0x9A9B9D).CGColor; self.next_btn.layer.borderWidth = 1.0f; self.next_btn.layer.borderColor = UIColorHex(0x9A9B9D).CGColor; self.submit_btn.layer.borderWidth = 1.0f; self.submit_btn.layer.borderColor = UIColorHex(0x9A9B9D).CGColor; self.content01_view.layer.borderWidth = 1.0f; self.content01_view.layer.borderColor = UIColorHex(0xD9D9D9).CGColor; [self enterLandscapeFullScreen:UIInterfaceOrientationLandscapeLeft animated:YES]; [self.view setNeedsLayout]; [self.view layoutIfNeeded]; [self initYDTQuestiondata]; [self setUserLeft]; [self setRightChartView]; [self setupTimeLabel]; [self setQuestionContentView]; [self exerciseLoadData]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(optionDTNotification:) name:NYExerciseOptionDTNotification object:nil]; } - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; } - (void)initYDTQuestiondata{ self.score = 0; NSArray *arr = [RQ_YDTQuestion_Module getQuestionWithExerciseType:RQExerciseType_Exam]; __block NSInteger num = 0; arr = [arr.rac_sequence.signal map:^id _Nullable(RQYDTQuestionModel *ydtQuestionModel) { ydtQuestionModel.num = num; num ++; return [RQExerciseModel exerciseModelWithRQYDTQuestionModel:ydtQuestionModel]; }].toArray; self.exercise_array = arr; self.index = 0; } - (void)exerciseLoadData{ self.previous_btn.selected = NO; self.next_btn.selected = NO; self.previous_btn.userInteractionEnabled = YES; self.next_btn.userInteractionEnabled = YES; if(self.exercise_array.count>0){ RQExerciseModel *exercise = self.exercise_array[self.index]; [self.questionContentView readLodData:exercise]; [self imageLoadData:exercise]; [self showtipsLoadData:exercise]; [self rightLoadData]; } if(self.index==0){ self.previous_btn.selected = YES; self.previous_btn.userInteractionEnabled = NO; self.next_btn.userInteractionEnabled = YES; } if(self.index==self.exercise_array.count-1){ self.next_btn.selected = YES; self.previous_btn.userInteractionEnabled = YES; self.next_btn.userInteractionEnabled = NO; } } - (void)rightLoadData{ self.chartMatrixView.selectIndex = self.index; } - (void)showtipsLoadData:(RQExerciseModel *)exerciseModel{ NSString *typeString = @""; switch (exerciseModel.ydtQuestionModel.Type) { case 1: typeString = @"判断题"; break; case 2: typeString = @"单选题"; break; case 3: typeString = @"多选题"; break; default: typeString = @""; break; } self.showtips_label.text = [NSString stringWithFormat:@"操作提示:%@",typeString]; } - (void)imageLoadData:(RQExerciseModel *)exerciseModel{ self.image_btn.hidden = YES; NSString *imageString = @""; if (RQStringIsNotEmpty(exerciseModel.ydtQuestionModel.media_url)) { if (RQStringIsNotEmpty(exerciseModel.ydtQuestionModel.sinaimg)) { imageString = exerciseModel.ydtQuestionModel.media_url; } else if (RQStringIsNotEmpty(exerciseModel.ydtQuestionModel.video_url)) { imageString = @""; } else { imageString = @""; } } else { imageString = @""; } if (RQStringIsNotEmpty(exerciseModel.ydtQuestionModel.sinaimg) || RQStringIsNotEmpty(exerciseModel.ydtQuestionModel.media_url)) { if (!RQObjectIsNil(exerciseModel.ydtQuestionModel.media_content)) { NSString *imageStr = [exerciseModel.ydtQuestionModel.media_content base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; UIImage *sinaImage = [UIImage sd_imageWithData:[NSData dataWithBase64EncodedString:imageStr] scale:1 firstFrameOnly:YES]; exerciseModel.ydtQuestionModel.sinaImage = sinaImage; } else { NSString *media_name; if(RQStringIsNotEmpty(exerciseModel.ydtQuestionModel.sinaimg)){//不为空 media_name = exerciseModel.ydtQuestionModel.sinaimg; imageString = exerciseModel.ydtQuestionModel.sinaimg; }else{ if ([exerciseModel.ydtQuestionModel.media_url containsString:@"https://"]) { media_name = [exerciseModel.ydtQuestionModel.media_url componentsSeparatedByString:@"/"].lastObject; } } //本地无数据-使用网络url-本地图片有水印 直接用url imageString = exerciseModel.ydtQuestionModel.media_url; } } if (RQStringIsNotEmpty(imageString)) { self.image_btn.hidden = NO; [self.image_btn yy_setImageWithURL:[NSURL URLWithString:imageString] forState:UIControlStateNormal placeholder:RQWebImagePlaceholder()]; [self.image_big_btn yy_setImageWithURL:[NSURL URLWithString:imageString] forState:UIControlStateNormal placeholder:RQWebImagePlaceholder()]; } } - (void)setUserLeft { @weakify(self) NSArray *titls = @[@"科目一",@"科目二",@"科目三",@"科目四"]; self.usericon_view.layer.cornerRadius = 58*0.5; self.usericon_view.layer.masksToBounds = YES; [self.usericon_view yy_setImageWithURL:[NSURL URLWithString:RQ_USER_MANAGER.currentUser.photo] placeholder:RQWebAvatarImagePlaceholder() options:RQWebImageOptionAutomatic completion:^(UIImage * _Nullable image, NSURL * _Nonnull url, YYWebImageFromType from, YYWebImageStage stage, NSError * _Nullable error) { @strongify(self); if(image) { image = [image qmui_imageResizedInLimitedSize:CGSizeMake(RQ_FIT_HORIZONTAL(54.f), RQ_FIT_HORIZONTAL(54.f)) resizingMode:QMUIImageResizingModeScaleAspectFill]; image = [image qmui_imageWithBorderColor:UIColor.whiteColor borderWidth:1 cornerRadius:RQ_FIT_HORIZONTAL(54.f) / 2.f]; self.usericon_view.image = image; } }]; self.username_label.text = [NSString stringWithFormat:@"考生姓名:%@",RQ_USER_MANAGER.currentUser.userName]; NSString *sexStr = @"女"; if([RQ_USER_MANAGER.currentUser.sex isEqualToString:@"1"]){ sexStr = @"男"; } self.sex_label.text = [NSString stringWithFormat:@"性别:%@",sexStr]; self.type_label.text = [NSString stringWithFormat:@"考试类型:%@",RQ_USER_MANAGER.currentUser.carType]; self.km_label.text = [NSString stringWithFormat:@"科目:%@",titls[RQ_YDTQuestion_Module.subject]]; } //题目-tableview - (void)setQuestionContentView { NYQuestionContentView *questionContentView = [[NYQuestionContentView alloc] init]; [self.center_view addSubview:questionContentView]; self.questionContentView = questionContentView; [questionContentView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.top.mas_equalTo(self.center_view); make.bottom.mas_equalTo(self.bottom_view.mas_top); }]; } - (void)setRightChartView { NSMutableArray *dataSource = [NSMutableArray array]; UIColor *color = UIColorHex(0x3D3C38); for (int i=0; iself.exercise_array.count)return; self.index++; [self exerciseLoadData]; } //交卷 - (IBAction)submitActiondo:(id)sender { // self.exerciseModel.answerResultsType = RQAnswerResultsType_Error; NSPredicate *predicateE = [NSPredicate predicateWithFormat:@"answerResultsType == %@", @(RQAnswerResultsType_Error)]; NSUInteger errorCount = [[self.exercise_array filteredArrayUsingPredicate:predicateE] count]; NSPredicate *predicateC = [NSPredicate predicateWithFormat:@"answerResultsType == %@", @(RQAnswerResultsType_Correct)]; NSUInteger correctount = [[self.exercise_array filteredArrayUsingPredicate:predicateC] count]; NSInteger totalNum = self.exercise_array.count; NSInteger errorNum = errorCount; NSInteger rightNum = correctount; NSInteger hasdoNum = errorNum + rightNum; NSInteger undoNum = totalNum - hasdoNum; NSInteger perScore = 100 / totalNum; NSInteger score = rightNum * perScore; CGFloat progress = (hasdoNum * 1.00) / (totalNum * 1.00); BOOL isSuccess = (score >= 90); self.score = score; self.examinationTipsViewController.t1_centont_label.text = [NSString stringWithFormat:@"你当前考试答对%zd题,答错%zd题,未答%zd题",rightNum,errorNum,undoNum]; self.examinationTipsViewController.t2_centont_label.text = isSuccess ? [NSString stringWithFormat:@"您本次模拟考试得%zd分。恭喜您及格了!",score]:[NSString stringWithFormat:@"您本次模拟考试得%zd分。不及格!祝你下次考试成功!",score]; [self.examinationTipsViewController showTypeTipsView:1 invView:self.view inModel:nil]; } //放大图片 - (IBAction)imageBigActiondo:(UIButton *)sender { self.image_big_btn.hidden = ! self.image_big_btn.hidden; } //通知-事件-答题结果-交卷 - (void)optionDTNotification:(NSNotification*)notif{ int type = [notif.object intValue]; if(type==0){//答对了 [self nextActiondo:nil];//进入下一题 [self rightChartViewLoadData]; }else if(type==1){//答错了 RQExerciseModel *exercise = self.exercise_array[self.index]; [self.examinationTipsViewController showTypeTipsView:0 invView:self.view inModel:exercise]; [self rightChartViewLoadData]; }else if(type==2){//交卷 NSUInteger sec = RQ_Exercise_Module.count%60; NSUInteger min = RQ_Exercise_Module.count/60; NSString* sec0,*min0; sec0 = sec<10 ? @"0" : @""; min0 = min<10 ? @"0" : @""; //提交做题记录 NSInteger allTimeCount = (RQ_YDTQuestion_Module.carType == RQHomePageCarType_Motorcycle)? 30 * 60 : 45 * 60; NSInteger useCount = allTimeCount - min * 60 - sec; NSString *beginDateStr = [[NSDateFormatter rq_defaultDateFormatter] stringFromDate:RQ_Exercise_Module.beginDate]; NSDate *endDte = [NSDate dateWithTimeInterval:useCount sinceDate:RQ_Exercise_Module.beginDate]; NSString *endDateStr = [[NSDateFormatter rq_defaultDateFormatter] stringFromDate:endDte]; @weakify(self) [[[RQ_HTTP_Service saveFavQuestionWithScore:self.score startDate:beginDateStr endDate:endDateStr] deliverOnMainThread] subscribeNext:^(id _Nullable x) { NSLog(@"交卷成功-成绩%zd",self.score); } error:^(NSError * _Nullable error) { NSLog(@"交卷失败-成绩%zd",self.score); }]; [self.examinationTipsViewController showTypeTipsView:2 invView:self.view inModel:nil]; }else if(type==3){//关闭退出 [self gobackAtciondo]; } } @end