Ver código fonte

更新题库

openlockPPP 9 meses atrás
pai
commit
26506b9ca5
64 arquivos alterados com 4153 adições e 107 exclusões
  1. 196 4
      jiaPei.xcodeproj/project.pbxproj
  2. BIN
      jiaPei.xcworkspace/xcuserdata/mimasigeling.xcuserdatad/UserInterfaceState.xcuserstate
  3. 5 0
      jiaPei/AppDelegate.m
  4. 6 0
      jiaPei/Images.xcassets/Modules/ExaminationModule/Contents.json
  5. 22 0
      jiaPei/Images.xcassets/Modules/ExaminationModule/examination_km1.imageset/Contents.json
  6. BIN
      jiaPei/Images.xcassets/Modules/ExaminationModule/examination_km1.imageset/examination_km1@2x.png
  7. BIN
      jiaPei/Images.xcassets/Modules/ExaminationModule/examination_km1.imageset/examination_km1@3x.png
  8. 22 0
      jiaPei/Images.xcassets/Modules/ExaminationModule/examination_km4.imageset/Contents.json
  9. BIN
      jiaPei/Images.xcassets/Modules/ExaminationModule/examination_km4.imageset/examination_km4@2x.png
  10. BIN
      jiaPei/Images.xcassets/Modules/ExaminationModule/examination_km4.imageset/examination_km4@3x.png
  11. 77 77
      jiaPei/Info.plist
  12. 22 10
      jiaPei/Modules/HomePageModule/ViewModel/HomePage/itemViewModel/RQHomePageOneOrFourSmallItemViewModel.m
  13. 17 0
      jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationRoomViewController.h
  14. 441 0
      jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationRoomViewController.m
  15. 478 0
      jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationRoomViewController.xib
  16. 43 0
      jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationTipsViewController.h
  17. 134 0
      jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationTipsViewController.m
  18. 316 0
      jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationTipsViewController.xib
  19. 17 0
      jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationViewController.h
  20. 95 0
      jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationViewController.m
  21. 352 0
      jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationViewController.xib
  22. 32 0
      jiaPei/Modules/OtherModules/ExaminationModule/NYExaminationModule.h
  23. 15 0
      jiaPei/Modules/OtherModules/ExaminationModule/NYExaminationModule.m
  24. 21 0
      jiaPei/Modules/OtherModules/ExaminationModule/View/NYChartView/NYChartMatrixView/CellView/NYChartMatrixViewCell.h
  25. 50 0
      jiaPei/Modules/OtherModules/ExaminationModule/View/NYChartView/NYChartMatrixView/CellView/NYChartMatrixViewCell.m
  26. 27 0
      jiaPei/Modules/OtherModules/ExaminationModule/View/NYChartView/NYChartMatrixView/NYChartMatrixView.h
  27. 138 0
      jiaPei/Modules/OtherModules/ExaminationModule/View/NYChartView/NYChartMatrixView/NYChartMatrixView.m
  28. 11 0
      jiaPei/Modules/OtherModules/ExaminationModule/View/NYChartView/NYChartView.h
  29. 113 0
      jiaPei/Modules/OtherModules/ExaminationModule/View/NYChartView/NYCommonView/NYBaseChartView.h
  30. 39 0
      jiaPei/Modules/OtherModules/ExaminationModule/View/NYChartView/NYCommonView/NYBaseChartView.m
  31. 18 0
      jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYExerciseOptionCell.h
  32. 51 0
      jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYExerciseOptionCell.m
  33. 44 0
      jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYExerciseOptionCell.xib
  34. 17 0
      jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYExerciseQuestionCell.h
  35. 115 0
      jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYExerciseQuestionCell.m
  36. 60 0
      jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYExerciseQuestionCell.xib
  37. 21 0
      jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYQuestionContentView.h
  38. 321 0
      jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYQuestionContentView.m
  39. 24 0
      jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/ExerciseQuestion/NYExerciseOptionItemViewModel.h
  40. 271 0
      jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/ExerciseQuestion/NYExerciseOptionItemViewModel.m
  41. 26 0
      jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/ExerciseQuestion/NYExerciseQuestionItemViewModel.h
  42. 230 0
      jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/ExerciseQuestion/NYExerciseQuestionItemViewModel.m
  43. 22 0
      jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/ExerciseQuestion/NYQuestionContentViewModel.h
  44. 113 0
      jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/ExerciseQuestion/NYQuestionContentViewModel.m
  45. 17 0
      jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/NYExaminationRoomViewModel.h
  46. 13 0
      jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/NYExaminationRoomViewModel.m
  47. 19 0
      jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/NYExaminationViewModel.h
  48. 13 0
      jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/NYExaminationViewModel.m
  49. 1 1
      jiaPei/Modules/OtherModules/ExerciseModule/Model/RQExerciseModel.h
  50. 1 1
      jiaPei/Modules/OtherModules/ExerciseModule/ViewModel/ExercisePage/itemViewModel/RQExerciseOptionItemViewModel.m
  51. 2 0
      jiaPei/Modules/OtherModules/VideoModule/RQVideoModule.h
  52. 3 1
      jiaPei/Modules/OtherModules/VideoModule/RQVideoModule.m
  53. BIN
      jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/hc.db
  54. BIN
      jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/js.db
  55. BIN
      jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/kc.db
  56. BIN
      jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/mtc.db
  57. BIN
      jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/xc.db
  58. 10 0
      jiaPei/NewTheory/NYBasetjTimeVC.m
  59. 34 13
      jiaPei/NewTheory/View/NYClassRoomPeiCell.m
  60. 1 0
      jiaPei/PrefixHeader.pch
  61. 4 0
      jiaPei/Utils/Category/ZFPlayer/ZFPlayerControlView+RQExtension.h
  62. 10 0
      jiaPei/Utils/Category/ZFPlayer/ZFPlayerControlView+RQExtension.m
  63. 2 0
      jiaPei/Utils/Router/RQRouter.m
  64. 1 0
      jiaPei/Vendor/SmallVideo/General/Tool/PrefixHeader.pch

+ 196 - 4
jiaPei.xcodeproj/project.pbxproj

@@ -91,6 +91,9 @@
 		900A2DE62A1FA89700395C1F /* RQBaseAppEventModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 900A2DE12A1FA89700395C1F /* RQBaseAppEventModule.m */; };
 		9017E8DA2A6F97DC00571501 /* NYADViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9017E8D92A6F97DC00571501 /* NYADViewManager.m */; };
 		9019427D2C743FA100AD65E9 /* NYKaoMockExaminationModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9019427C2C743FA100AD65E9 /* NYKaoMockExaminationModel.m */; };
+		902614CA2CD21A1D007A7E1A /* NYQuestionContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 902614C92CD21A1D007A7E1A /* NYQuestionContentView.m */; };
+		902614D32CD232F1007A7E1A /* NYExerciseQuestionCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 902614D12CD232F1007A7E1A /* NYExerciseQuestionCell.m */; };
+		902614D42CD232F1007A7E1A /* NYExerciseQuestionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 902614D22CD232F1007A7E1A /* NYExerciseQuestionCell.xib */; };
 		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 */; };
@@ -98,9 +101,23 @@
 		9040D28D2B6F8ACB002F4686 /* NYClassRoomPeiCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9040D28B2B6F8ACB002F4686 /* NYClassRoomPeiCell.xib */; };
 		9040D2902B6F94DA002F4686 /* NYClassRoomPeiViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9040D28F2B6F94DA002F4686 /* NYClassRoomPeiViewModel.m */; };
 		9040D2932B70E504002F4686 /* CultivateInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9040D2922B70E504002F4686 /* CultivateInfoModel.m */; };
+		90439AEE2CD354BA00BEC26C /* NYExerciseQuestionItemViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90439AED2CD354BA00BEC26C /* NYExerciseQuestionItemViewModel.m */; };
+		90439AF72CD36AE000BEC26C /* NYExerciseOptionCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 90439AF52CD36AE000BEC26C /* NYExerciseOptionCell.m */; };
+		90439AF82CD36AE000BEC26C /* NYExerciseOptionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90439AF62CD36AE000BEC26C /* NYExerciseOptionCell.xib */; };
+		90439AFB2CD36F2D00BEC26C /* NYExerciseOptionItemViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90439AFA2CD36F2D00BEC26C /* NYExerciseOptionItemViewModel.m */; };
+		90439AFE2CD37BA800BEC26C /* NYQuestionContentViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90439AFD2CD37BA800BEC26C /* NYQuestionContentViewModel.m */; };
 		9043ADB42A56C739005F6F81 /* NYChooseTypeAlertViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9043ADB32A56C739005F6F81 /* NYChooseTypeAlertViewController.m */; };
+		905CF7A62CDA1FEC00DE1B7F /* NYExaminationTipsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 905CF7A42CDA1FEC00DE1B7F /* NYExaminationTipsViewController.m */; };
+		905CF7A72CDA1FEC00DE1B7F /* NYExaminationTipsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 905CF7A52CDA1FEC00DE1B7F /* NYExaminationTipsViewController.xib */; };
 		90626F3D2A204BC400C8FA05 /* kt_jq.db in Resources */ = {isa = PBXBuildFile; fileRef = 90626F3C2A204BC300C8FA05 /* kt_jq.db */; };
 		90626F402A20540600C8FA05 /* YNYDTJQQuestionModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 90626F3F2A20540600C8FA05 /* YNYDTJQQuestionModule.m */; };
+		906D06A62CCF8F6F004F51B4 /* NYChartMatrixViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 906D06A32CCF8F6E004F51B4 /* NYChartMatrixViewCell.m */; };
+		906D06A72CCF8F6F004F51B4 /* NYChartMatrixView.m in Sources */ = {isa = PBXBuildFile; fileRef = 906D06A42CCF8F6E004F51B4 /* NYChartMatrixView.m */; };
+		906D06AB2CCFC4FB004F51B4 /* NYBaseChartView.m in Sources */ = {isa = PBXBuildFile; fileRef = 906D06A92CCFC4FB004F51B4 /* NYBaseChartView.m */; };
+		9074E7EE2CBD025600283D4D /* NYExaminationViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9074E7ED2CBD025600283D4D /* NYExaminationViewModel.m */; };
+		9074E7F12CBD047300283D4D /* NYExaminationModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 9074E7F02CBD047300283D4D /* NYExaminationModule.m */; };
+		9074E7F52CBD123D00283D4D /* NYExaminationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9074E7F32CBD123D00283D4D /* NYExaminationViewController.m */; };
+		9074E7F62CBD123D00283D4D /* NYExaminationViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9074E7F42CBD123D00283D4D /* NYExaminationViewController.xib */; };
 		9078D9462C50FEF500B37D58 /* NYWPViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9078D9452C50FEF500B37D58 /* NYWPViewModel.m */; };
 		90798AFE2A5159BB00E68461 /* CollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 90798AFD2A5159BB00E68461 /* CollectionViewCell.m */; };
 		90798B012A517B2500E68461 /* NYSerialQueueManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 90798B002A517B2500E68461 /* NYSerialQueueManager.m */; };
@@ -134,6 +151,9 @@
 		90BA2EA72A3316510029A54A /* NYGetjobStartRuleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BA2EA52A3316510029A54A /* NYGetjobStartRuleCell.m */; };
 		90BA2EA82A3316510029A54A /* NYGetjobStartRuleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90BA2EA62A3316510029A54A /* NYGetjobStartRuleCell.xib */; };
 		90BA2EAB2A3317510029A54A /* NYGetjobStartRuleViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BA2EAA2A3317510029A54A /* NYGetjobStartRuleViewModel.m */; };
+		90D356C62CC0B736002B52B9 /* NYExaminationRoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 90D356C42CC0B736002B52B9 /* NYExaminationRoomViewController.m */; };
+		90D356C72CC0B736002B52B9 /* NYExaminationRoomViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90D356C52CC0B736002B52B9 /* NYExaminationRoomViewController.xib */; };
+		90D356CA2CC0B7C2002B52B9 /* NYExaminationRoomViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90D356C92CC0B7C2002B52B9 /* NYExaminationRoomViewModel.m */; };
 		90EF40692B71DBA9007EA477 /* CultivatePhotoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90EF40682B71DBA9007EA477 /* CultivatePhotoModel.m */; };
 		90FCD6A72BB517AF00E0CB61 /* NYTcarStudentLiveModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90FCD6A62BB517AF00E0CB61 /* NYTcarStudentLiveModel.m */; };
 		D00177E22886A6F70078949E /* RQExerciseExplainHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = D00177E12886A6F70078949E /* RQExerciseExplainHeaderView.m */; };
@@ -1814,6 +1834,11 @@
 		9017E8D92A6F97DC00571501 /* NYADViewManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYADViewManager.m; sourceTree = "<group>"; };
 		9019427B2C743FA100AD65E9 /* NYKaoMockExaminationModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYKaoMockExaminationModel.h; sourceTree = "<group>"; };
 		9019427C2C743FA100AD65E9 /* NYKaoMockExaminationModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYKaoMockExaminationModel.m; sourceTree = "<group>"; };
+		902614C82CD21A1D007A7E1A /* NYQuestionContentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYQuestionContentView.h; sourceTree = "<group>"; };
+		902614C92CD21A1D007A7E1A /* NYQuestionContentView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYQuestionContentView.m; sourceTree = "<group>"; };
+		902614D02CD232F1007A7E1A /* NYExerciseQuestionCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYExerciseQuestionCell.h; sourceTree = "<group>"; };
+		902614D12CD232F1007A7E1A /* NYExerciseQuestionCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYExerciseQuestionCell.m; sourceTree = "<group>"; };
+		902614D22CD232F1007A7E1A /* NYExerciseQuestionCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYExerciseQuestionCell.xib; 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>"; };
@@ -1827,11 +1852,37 @@
 		9040D28F2B6F94DA002F4686 /* NYClassRoomPeiViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYClassRoomPeiViewModel.m; sourceTree = "<group>"; };
 		9040D2912B70E504002F4686 /* CultivateInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CultivateInfoModel.h; sourceTree = "<group>"; };
 		9040D2922B70E504002F4686 /* CultivateInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CultivateInfoModel.m; sourceTree = "<group>"; };
+		90439AEC2CD354BA00BEC26C /* NYExerciseQuestionItemViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYExerciseQuestionItemViewModel.h; sourceTree = "<group>"; };
+		90439AED2CD354BA00BEC26C /* NYExerciseQuestionItemViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYExerciseQuestionItemViewModel.m; sourceTree = "<group>"; };
+		90439AF42CD36AE000BEC26C /* NYExerciseOptionCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYExerciseOptionCell.h; sourceTree = "<group>"; };
+		90439AF52CD36AE000BEC26C /* NYExerciseOptionCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYExerciseOptionCell.m; sourceTree = "<group>"; };
+		90439AF62CD36AE000BEC26C /* NYExerciseOptionCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYExerciseOptionCell.xib; sourceTree = "<group>"; };
+		90439AF92CD36F2D00BEC26C /* NYExerciseOptionItemViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYExerciseOptionItemViewModel.h; sourceTree = "<group>"; };
+		90439AFA2CD36F2D00BEC26C /* NYExerciseOptionItemViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYExerciseOptionItemViewModel.m; sourceTree = "<group>"; };
+		90439AFC2CD37BA800BEC26C /* NYQuestionContentViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYQuestionContentViewModel.h; sourceTree = "<group>"; };
+		90439AFD2CD37BA800BEC26C /* NYQuestionContentViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYQuestionContentViewModel.m; sourceTree = "<group>"; };
 		9043ADB22A56C739005F6F81 /* NYChooseTypeAlertViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYChooseTypeAlertViewController.h; sourceTree = "<group>"; };
 		9043ADB32A56C739005F6F81 /* NYChooseTypeAlertViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYChooseTypeAlertViewController.m; sourceTree = "<group>"; };
+		905CF7A32CDA1FEC00DE1B7F /* NYExaminationTipsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYExaminationTipsViewController.h; sourceTree = "<group>"; };
+		905CF7A42CDA1FEC00DE1B7F /* NYExaminationTipsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYExaminationTipsViewController.m; sourceTree = "<group>"; };
+		905CF7A52CDA1FEC00DE1B7F /* NYExaminationTipsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYExaminationTipsViewController.xib; sourceTree = "<group>"; };
 		90626F3C2A204BC300C8FA05 /* kt_jq.db */ = {isa = PBXFileReference; lastKnownFileType = file; path = kt_jq.db; sourceTree = "<group>"; };
 		90626F3E2A20540600C8FA05 /* YNYDTJQQuestionModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YNYDTJQQuestionModule.h; sourceTree = "<group>"; };
 		90626F3F2A20540600C8FA05 /* YNYDTJQQuestionModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YNYDTJQQuestionModule.m; sourceTree = "<group>"; };
+		906D06A22CCF8F6E004F51B4 /* NYChartMatrixViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYChartMatrixViewCell.h; sourceTree = "<group>"; };
+		906D06A32CCF8F6E004F51B4 /* NYChartMatrixViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYChartMatrixViewCell.m; sourceTree = "<group>"; };
+		906D06A42CCF8F6E004F51B4 /* NYChartMatrixView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYChartMatrixView.m; sourceTree = "<group>"; };
+		906D06A52CCF8F6E004F51B4 /* NYChartMatrixView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYChartMatrixView.h; sourceTree = "<group>"; };
+		906D06A92CCFC4FB004F51B4 /* NYBaseChartView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYBaseChartView.m; sourceTree = "<group>"; };
+		906D06AA2CCFC4FB004F51B4 /* NYBaseChartView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYBaseChartView.h; sourceTree = "<group>"; };
+		906D06AD2CCFC581004F51B4 /* NYChartView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYChartView.h; sourceTree = "<group>"; };
+		9074E7EC2CBD025600283D4D /* NYExaminationViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYExaminationViewModel.h; sourceTree = "<group>"; };
+		9074E7ED2CBD025600283D4D /* NYExaminationViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYExaminationViewModel.m; sourceTree = "<group>"; };
+		9074E7EF2CBD047300283D4D /* NYExaminationModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYExaminationModule.h; sourceTree = "<group>"; };
+		9074E7F02CBD047300283D4D /* NYExaminationModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYExaminationModule.m; sourceTree = "<group>"; };
+		9074E7F22CBD123D00283D4D /* NYExaminationViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYExaminationViewController.h; sourceTree = "<group>"; };
+		9074E7F32CBD123D00283D4D /* NYExaminationViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYExaminationViewController.m; sourceTree = "<group>"; };
+		9074E7F42CBD123D00283D4D /* NYExaminationViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYExaminationViewController.xib; sourceTree = "<group>"; };
 		9078D9442C50FEF500B37D58 /* NYWPViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYWPViewModel.h; sourceTree = "<group>"; };
 		9078D9452C50FEF500B37D58 /* NYWPViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYWPViewModel.m; sourceTree = "<group>"; };
 		90798AFC2A5159BB00E68461 /* CollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionViewCell.h; sourceTree = "<group>"; };
@@ -1889,6 +1940,11 @@
 		90BA2EA62A3316510029A54A /* NYGetjobStartRuleCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYGetjobStartRuleCell.xib; sourceTree = "<group>"; };
 		90BA2EA92A3317510029A54A /* NYGetjobStartRuleViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYGetjobStartRuleViewModel.h; sourceTree = "<group>"; };
 		90BA2EAA2A3317510029A54A /* NYGetjobStartRuleViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYGetjobStartRuleViewModel.m; sourceTree = "<group>"; };
+		90D356C32CC0B736002B52B9 /* NYExaminationRoomViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYExaminationRoomViewController.h; sourceTree = "<group>"; };
+		90D356C42CC0B736002B52B9 /* NYExaminationRoomViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYExaminationRoomViewController.m; sourceTree = "<group>"; };
+		90D356C52CC0B736002B52B9 /* NYExaminationRoomViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYExaminationRoomViewController.xib; sourceTree = "<group>"; };
+		90D356C82CC0B7C2002B52B9 /* NYExaminationRoomViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYExaminationRoomViewModel.h; sourceTree = "<group>"; };
+		90D356C92CC0B7C2002B52B9 /* NYExaminationRoomViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYExaminationRoomViewModel.m; sourceTree = "<group>"; };
 		90EF40672B71DBA9007EA477 /* CultivatePhotoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CultivatePhotoModel.h; sourceTree = "<group>"; };
 		90EF40682B71DBA9007EA477 /* CultivatePhotoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CultivatePhotoModel.m; sourceTree = "<group>"; };
 		90FCD6A52BB517AF00E0CB61 /* NYTcarStudentLiveModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYTcarStudentLiveModel.h; sourceTree = "<group>"; };
@@ -4599,6 +4655,121 @@
 			path = RQAPPEventModuleComponent;
 			sourceTree = "<group>";
 		};
+		902614C72CD21994007A7E1A /* NYQuestionView */ = {
+			isa = PBXGroup;
+			children = (
+				902614C82CD21A1D007A7E1A /* NYQuestionContentView.h */,
+				902614C92CD21A1D007A7E1A /* NYQuestionContentView.m */,
+				902614D02CD232F1007A7E1A /* NYExerciseQuestionCell.h */,
+				902614D12CD232F1007A7E1A /* NYExerciseQuestionCell.m */,
+				902614D22CD232F1007A7E1A /* NYExerciseQuestionCell.xib */,
+				90439AF42CD36AE000BEC26C /* NYExerciseOptionCell.h */,
+				90439AF52CD36AE000BEC26C /* NYExerciseOptionCell.m */,
+				90439AF62CD36AE000BEC26C /* NYExerciseOptionCell.xib */,
+			);
+			path = NYQuestionView;
+			sourceTree = "<group>";
+		};
+		90439AEB2CD3544800BEC26C /* ExerciseQuestion */ = {
+			isa = PBXGroup;
+			children = (
+				90439AEC2CD354BA00BEC26C /* NYExerciseQuestionItemViewModel.h */,
+				90439AED2CD354BA00BEC26C /* NYExerciseQuestionItemViewModel.m */,
+				90439AF92CD36F2D00BEC26C /* NYExerciseOptionItemViewModel.h */,
+				90439AFA2CD36F2D00BEC26C /* NYExerciseOptionItemViewModel.m */,
+				90439AFC2CD37BA800BEC26C /* NYQuestionContentViewModel.h */,
+				90439AFD2CD37BA800BEC26C /* NYQuestionContentViewModel.m */,
+			);
+			path = ExerciseQuestion;
+			sourceTree = "<group>";
+		};
+		906D06A02CCF8F6E004F51B4 /* NYChartMatrixView */ = {
+			isa = PBXGroup;
+			children = (
+				906D06A12CCF8F6E004F51B4 /* CellView */,
+				906D06A42CCF8F6E004F51B4 /* NYChartMatrixView.m */,
+				906D06A52CCF8F6E004F51B4 /* NYChartMatrixView.h */,
+			);
+			path = NYChartMatrixView;
+			sourceTree = "<group>";
+		};
+		906D06A12CCF8F6E004F51B4 /* CellView */ = {
+			isa = PBXGroup;
+			children = (
+				906D06A22CCF8F6E004F51B4 /* NYChartMatrixViewCell.h */,
+				906D06A32CCF8F6E004F51B4 /* NYChartMatrixViewCell.m */,
+			);
+			path = CellView;
+			sourceTree = "<group>";
+		};
+		906D06A82CCFC4FB004F51B4 /* NYCommonView */ = {
+			isa = PBXGroup;
+			children = (
+				906D06A92CCFC4FB004F51B4 /* NYBaseChartView.m */,
+				906D06AA2CCFC4FB004F51B4 /* NYBaseChartView.h */,
+			);
+			path = NYCommonView;
+			sourceTree = "<group>";
+		};
+		906D06AC2CCFC52C004F51B4 /* NYChartView */ = {
+			isa = PBXGroup;
+			children = (
+				906D06AD2CCFC581004F51B4 /* NYChartView.h */,
+				906D06A82CCFC4FB004F51B4 /* NYCommonView */,
+				906D06A02CCF8F6E004F51B4 /* NYChartMatrixView */,
+			);
+			path = NYChartView;
+			sourceTree = "<group>";
+		};
+		9074E7E52CBCF27E00283D4D /* ExaminationModule */ = {
+			isa = PBXGroup;
+			children = (
+				9074E7EB2CBD015300283D4D /* ViewModel */,
+				9074E7E72CBCF2C000283D4D /* View */,
+				9074E7E62CBCF2A800283D4D /* Controller */,
+				9074E7EF2CBD047300283D4D /* NYExaminationModule.h */,
+				9074E7F02CBD047300283D4D /* NYExaminationModule.m */,
+			);
+			path = ExaminationModule;
+			sourceTree = "<group>";
+		};
+		9074E7E62CBCF2A800283D4D /* Controller */ = {
+			isa = PBXGroup;
+			children = (
+				9074E7F22CBD123D00283D4D /* NYExaminationViewController.h */,
+				9074E7F32CBD123D00283D4D /* NYExaminationViewController.m */,
+				9074E7F42CBD123D00283D4D /* NYExaminationViewController.xib */,
+				90D356C32CC0B736002B52B9 /* NYExaminationRoomViewController.h */,
+				90D356C42CC0B736002B52B9 /* NYExaminationRoomViewController.m */,
+				90D356C52CC0B736002B52B9 /* NYExaminationRoomViewController.xib */,
+				905CF7A32CDA1FEC00DE1B7F /* NYExaminationTipsViewController.h */,
+				905CF7A42CDA1FEC00DE1B7F /* NYExaminationTipsViewController.m */,
+				905CF7A52CDA1FEC00DE1B7F /* NYExaminationTipsViewController.xib */,
+			);
+			path = Controller;
+			sourceTree = "<group>";
+		};
+		9074E7E72CBCF2C000283D4D /* View */ = {
+			isa = PBXGroup;
+			children = (
+				902614C72CD21994007A7E1A /* NYQuestionView */,
+				906D06AC2CCFC52C004F51B4 /* NYChartView */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
+		9074E7EB2CBD015300283D4D /* ViewModel */ = {
+			isa = PBXGroup;
+			children = (
+				90439AEB2CD3544800BEC26C /* ExerciseQuestion */,
+				9074E7EC2CBD025600283D4D /* NYExaminationViewModel.h */,
+				9074E7ED2CBD025600283D4D /* NYExaminationViewModel.m */,
+				90D356C82CC0B7C2002B52B9 /* NYExaminationRoomViewModel.h */,
+				90D356C92CC0B7C2002B52B9 /* NYExaminationRoomViewModel.m */,
+			);
+			path = ViewModel;
+			sourceTree = "<group>";
+		};
 		90798B0C2A529F3A00E68461 /* Model */ = {
 			isa = PBXGroup;
 			children = (
@@ -6702,6 +6873,7 @@
 				D00A16B027557D0800793046 /* OtherModules.h */,
 				D00DFB072934A2BD0049B050 /* ADModule */,
 				D01CF39F28921BFE009EEA12 /* BDQuestionModule */,
+				9074E7E52CBCF27E00283D4D /* ExaminationModule */,
 				D0D1F5DD283F84DD0086C6AE /* ExerciseModule */,
 				D0180C3528069DA700ED8E4E /* RetrainModule */,
 				D004D7FC27FFCE9300A96946 /* PTObjectMolule */,
@@ -9878,6 +10050,7 @@
 				D0A927DA27078CF4005902DB /* com.baidu.idl.face.faceSDK.bundle in Resources */,
 				D0324DA228237262004A7DF5 /* RQProfileLogoutCell.xib in Resources */,
 				D0295C99243F0B8B00B46AB1 /* 1-4-101.jpg in Resources */,
+				905CF7A72CDA1FEC00DE1B7F /* NYExaminationTipsViewController.xib in Resources */,
 				D0295C23243F0B8B00B46AB1 /* 1-4-32.jpg in Resources */,
 				D0295B6C243F0B8A00B46AB1 /* 2-12-12.jpg in Resources */,
 				D0295CB2243F0B8B00B46AB1 /* 1-1-21.jpg in Resources */,
@@ -10281,6 +10454,7 @@
 				D0295CDF243F0B8C00B46AB1 /* 1-2-6.jpg in Resources */,
 				D029481C243F07E300B46AB1 /* bt_star_a.png in Resources */,
 				D081CCFF27F15A2C0054317F /* zgzwxp.db in Resources */,
+				902614D42CD232F1007A7E1A /* NYExerciseQuestionCell.xib in Resources */,
 				D0294816243F07E300B46AB1 /* 评价1@2x.png in Resources */,
 				D0295D13243F0B8C00B46AB1 /* 6-16-15.jpg in Resources */,
 				D0295D55243F0B8C00B46AB1 /* img16.png in Resources */,
@@ -10297,6 +10471,7 @@
 				D0D1F69C283F84E00086C6AE /* RQExerciseAnswerCell.xib in Resources */,
 				D07C7B3E22EE982600D3CD34 /* TrainHoursSubTableViewCell.xib in Resources */,
 				D0295CD1243F0B8B00B46AB1 /* 1-6-3.jpg in Resources */,
+				90439AF82CD36AE000BEC26C /* NYExerciseOptionCell.xib in Resources */,
 				D0295D4E243F0B8C00B46AB1 /* img09.png in Resources */,
 				D0ED401E28F6BF1B00086901 /* RQVipContentNewCell.xib in Resources */,
 				D0295C2C243F0B8B00B46AB1 /* 1-4-18.jpg in Resources */,
@@ -10362,6 +10537,7 @@
 				D0295BA9243F0B8A00B46AB1 /* 1-8-2.jpg in Resources */,
 				D0295B88243F0B8A00B46AB1 /* 1-10-8.jpg in Resources */,
 				D0295D57243F0B8C00B46AB1 /* img15.png in Resources */,
+				9074E7F62CBD123D00283D4D /* NYExaminationViewController.xib in Resources */,
 				D0295B6B243F0B8A00B46AB1 /* 1-4-57.jpg in Resources */,
 				D0295B92243F0B8A00B46AB1 /* 1-4-44.jpg in Resources */,
 				D0295BF8243F0B8B00B46AB1 /* 1-1-12.jpg in Resources */,
@@ -10412,6 +10588,7 @@
 				D0295CF8243F0B8C00B46AB1 /* 2-12-18.jpg in Resources */,
 				D0295C08243F0B8B00B46AB1 /* 1-4-23.jpg in Resources */,
 				D0295C22243F0B8B00B46AB1 /* 1-3-13.jpg in Resources */,
+				90D356C72CC0B736002B52B9 /* NYExaminationRoomViewController.xib in Resources */,
 				D0295BE1243F0B8B00B46AB1 /* 1-11-8.jpg in Resources */,
 				D0D5BF182976A0C6004DC669 /* RQVipTrainPriceCell.xib in Resources */,
 				D0295D5B243F0B8C00B46AB1 /* animate02.png in Resources */,
@@ -10681,6 +10858,7 @@
 				D04DF6BD27006C56006E3633 /* RQCollectionView.m in Sources */,
 				D0E8D7BB28D854D000107E40 /* RQVipReminderCell.m in Sources */,
 				D05FC78C27CDEA2D00DA3209 /* RQVipAuthorityCell.m in Sources */,
+				9074E7F52CBD123D00283D4D /* NYExaminationViewController.m in Sources */,
 				D087A19928DBF79A001EB517 /* RQVipCenterItemViewModel.m in Sources */,
 				D0354B11230E352300E1C54D /* BMKClusterManager.m in Sources */,
 				D0D1F698283F84E00086C6AE /* RQExerciseAnswerCell.m in Sources */,
@@ -10705,6 +10883,7 @@
 				18ABA2F11C3A899F0089E0A0 /* PicSymbolTableViewCell.m in Sources */,
 				18D3A6CC1C08463300A12123 /* SubTitleCell.m in Sources */,
 				D04DF6D827006C57006E3633 /* RQCommonCollectionViewController.m in Sources */,
+				902614D32CD232F1007A7E1A /* NYExerciseQuestionCell.m in Sources */,
 				D04DF6D927006C57006E3633 /* RQCommonViewController.m in Sources */,
 				D0870D5D2701A6B9004EC94E /* NSMutableArray+BlocksKit.m in Sources */,
 				D0536B972930B0A60042AED6 /* RQTimeRuleCell.m in Sources */,
@@ -10719,6 +10898,7 @@
 				D081CCEA27F156180054317F /* RQYDTQuestionModule.m in Sources */,
 				D0D1F696283F84E00086C6AE /* RQHTTPService+RQGetWrongList.m in Sources */,
 				D04DF6D527006C57006E3633 /* RQCommonCell.m in Sources */,
+				90D356CA2CC0B7C2002B52B9 /* NYExaminationRoomViewModel.m in Sources */,
 				D0DA26CC219DB9E40093CD42 /* RQShareFunction.m in Sources */,
 				D074575929272C680050BE10 /* QMFileCollectionCell.m in Sources */,
 				D092510525A6422500820F82 /* CheckBodyManager.m in Sources */,
@@ -10777,6 +10957,7 @@
 				D00A15002754A41C00793046 /* RQVideoDetailViewController.m in Sources */,
 				D0870D572701A6B9004EC94E /* LCActionSheetCell.m in Sources */,
 				D02010BC29373AE8001B9F4D /* SLBlurView.m in Sources */,
+				90439AEE2CD354BA00BEC26C /* NYExerciseQuestionItemViewModel.m in Sources */,
 				D0C4E30B28BE03EA005EAE9A /* RQExamResultModel.m in Sources */,
 				D05CB3DC2763216A006895F3 /* RQHomePageModule.m in Sources */,
 				D074574729272C680050BE10 /* TCMessageManagerFaceView.m in Sources */,
@@ -10872,6 +11053,7 @@
 				D0EF8FFE288A72BE00CC4F96 /* RQCacheManager.m in Sources */,
 				D0870D5E2701A6B9004EC94E /* NSMutableIndexSet+BlocksKit.m in Sources */,
 				D00DFB0F2934A3190049B050 /* RQADCell.m in Sources */,
+				906D06A72CCF8F6F004F51B4 /* NYChartMatrixView.m in Sources */,
 				D01F24FD292600AA0014E209 /* RQVipTimeCell.m in Sources */,
 				D004D7E827FD9CB400A96946 /* RQYDTMTCQuestionModule.m in Sources */,
 				185C0D471F3F05CE009082AD /* ShiCaoPeriodVC.m in Sources */,
@@ -11062,6 +11244,7 @@
 				D02010CB29373AE8001B9F4D /* SLMethod.m in Sources */,
 				18C45BA61C4663DF0017FCFA /* DetailMarkCell.m in Sources */,
 				D074574229272C680050BE10 /* QMChatRoomTextCell.m in Sources */,
+				90439AFE2CD37BA800BEC26C /* NYQuestionContentViewModel.m in Sources */,
 				D0295EBF243F1CAF00B46AB1 /* Util.m in Sources */,
 				D0481FE3286318B600BD0E4E /* RQSpecialPracticeItemViewModel.m in Sources */,
 				D057C20929F5116B002F4AB2 /* RQHTTPService+RQGetPlaceList.m in Sources */,
@@ -11073,6 +11256,7 @@
 				D04DF7B527006F72006E3633 /* RQFileManager.m in Sources */,
 				D04DF79227006F72006E3633 /* UIButton+RQExtension.m in Sources */,
 				D0D1F681283F84DF0086C6AE /* RQCatalogueViewController.m in Sources */,
+				905CF7A62CDA1FEC00DE1B7F /* NYExaminationTipsViewController.m in Sources */,
 				D02010CF29373AE8001B9F4D /* SLKeyChain.m in Sources */,
 				D0870D862701A6B9004EC94E /* UIScrollView+YYAdd.m in Sources */,
 				D05A6FBE27F6CCCF00C096DB /* RQYDTExamRuleModel.m in Sources */,
@@ -11134,6 +11318,7 @@
 				D0665706262D6969007F2946 /* RQConstant.m in Sources */,
 				D09E5D3D25E3AA260099E87C /* BDFaceCalculateTool.m in Sources */,
 				D048E21928191B3C005D606F /* RQSwitch.m in Sources */,
+				906D06AB2CCFC4FB004F51B4 /* NYBaseChartView.m in Sources */,
 				D029D5242249F8A10094B99A /* APPdelegateModularForVendor.m in Sources */,
 				D0870DB62701AA85004EC94E /* RQNewFeatureViewController.m in Sources */,
 				D0295ECC243F1EC800B46AB1 /* ApiXml.mm in Sources */,
@@ -11201,6 +11386,7 @@
 				D07426D6280D5E8B00CD7EFF /* RQRetrainOrderViewController.m in Sources */,
 				D02010D929373AE8001B9F4D /* SLShotFocusView.m in Sources */,
 				D02010C329373AE8001B9F4D /* SLAvCaptureSession.m in Sources */,
+				90439AFB2CD36F2D00BEC26C /* NYExerciseOptionItemViewModel.m in Sources */,
 				D0870D5F2701A6B9004EC94E /* NSObject+BKBlockObservation.m in Sources */,
 				D04DF7AC27006F72006E3633 /* NSDateFormatter+RQExtension.m in Sources */,
 				D04DF6B727006C56006E3633 /* RQBaseViewModel.m in Sources */,
@@ -11249,6 +11435,7 @@
 				D02DC4A428AF5C4500750E51 /* RQHTTPService+RQDeleteFav.m in Sources */,
 				D04DF6B327006C56006E3633 /* RQTabBarViewModel.m in Sources */,
 				D074573629272C670050BE10 /* QMChatRoomCellFactory.m in Sources */,
+				90D356C62CC0B736002B52B9 /* NYExaminationRoomViewController.m in Sources */,
 				18541E001C018CF20097606A /* CommentCell.m in Sources */,
 				D0354AFD230E333200E1C54D /* MyWebViewVC.m in Sources */,
 				D073984628D46F2A003496F9 /* RQAboutUsHeaderView.m in Sources */,
@@ -11338,6 +11525,7 @@
 				186038F01BF5A5B800256B01 /* UIFormatter.m in Sources */,
 				D07ED7D1246934B0002CEA1A /* YostarKeychain.m in Sources */,
 				D00A14AB2754A39900793046 /* RQADViewManager.m in Sources */,
+				902614CA2CD21A1D007A7E1A /* NYQuestionContentView.m in Sources */,
 				90798AFE2A5159BB00E68461 /* CollectionViewCell.m in Sources */,
 				D00A150F2754A41C00793046 /* CGXRefreshFooter.m in Sources */,
 				D0B699E9292E102D00DE2C69 /* RQExerciseVideoExplainItemViewModel.m in Sources */,
@@ -11420,6 +11608,7 @@
 				D02010D329373AE8001B9F4D /* SLEditImageController.m in Sources */,
 				D05CB3D82763216A006895F3 /* RQHomeSubPageVideoHeaderCollectionReusableView.m in Sources */,
 				D00A14B92754A3D600793046 /* ZFLandscapeViewController+RQExtension.m in Sources */,
+				906D06A62CCF8F6F004F51B4 /* NYChartMatrixViewCell.m in Sources */,
 				D04DF7B427006F72006E3633 /* RQConfigureManager.m in Sources */,
 				D0180C43280826D900ED8E4E /* RQRetrainViewModel.m in Sources */,
 				9019427D2C743FA100AD65E9 /* NYKaoMockExaminationModel.m in Sources */,
@@ -11442,6 +11631,7 @@
 				D04DF6B927006C56006E3633 /* RQEXTRuntimeExtensions.m in Sources */,
 				D0180C3828069F8900ED8E4E /* RQRetrainModule.m in Sources */,
 				D03BCAA128C9E35A00094B7F /* RQHomePageSubjectModuleItemViewModel.m in Sources */,
+				9074E7EE2CBD025600283D4D /* NYExaminationViewModel.m in Sources */,
 				D0D1F69B283F84E00086C6AE /* RQCountdownView.m in Sources */,
 				D0870D9D2701A6BA004EC94E /* CALayer+YYAdd.m in Sources */,
 				D0DF83D627CF541700547504 /* RQHTTPService+RQGetType.m in Sources */,
@@ -11449,6 +11639,7 @@
 				1864B5CC1BFF456800D91A73 /* Grade.m in Sources */,
 				D04DF79B27006F72006E3633 /* NSError+RQExtension.m in Sources */,
 				90BA2E872A3177DE0029A54A /* NYGetjobTimeVC.m in Sources */,
+				90439AF72CD36AE000BEC26C /* NYExerciseOptionCell.m in Sources */,
 				18886FEC1C3B700000E61BE2 /* symbolCollectionCell.m in Sources */,
 				D04DF6C727006C57006E3633 /* RQCommonQRCodeItemViewModel.m in Sources */,
 				90AC53AB2A935EF90073D90F /* NYTestingCentreCell.m in Sources */,
@@ -11480,6 +11671,7 @@
 				D0D1F6AF283F84E00086C6AE /* RQExerciseCatalogueToolBarView.m in Sources */,
 				D0CE9AE028575ADE00EBDCCF /* RQHomePageSectionOneGroupViewModel.m in Sources */,
 				D0294804243F07E300B46AB1 /* RGCardViewLayout.m in Sources */,
+				9074E7F12CBD047300283D4D /* NYExaminationModule.m in Sources */,
 				D02010C029373AE8001B9F4D /* SLAvEditExport.m in Sources */,
 				D05CB3B12763216A006895F3 /* RQHomeSubPageViewModel.m in Sources */,
 				90BA2EA32A330D180029A54A /* NYGetjobTimeViewModel.m in Sources */,
@@ -11704,7 +11896,7 @@
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_RESOURCE_RULES_PATH[sdk=*]" = "";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 2242024101401;
+				CURRENT_PROJECT_VERSION = 2252024102402;
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				DEVELOPMENT_TEAM = K7T6CU5SW5;
 				ENABLE_BITCODE = NO;
@@ -11742,7 +11934,7 @@
 					"$(PROJECT_DIR)/jiaPei/Vendor/BaiDuFaceSDK/BDFaceSDK/lib",
 					"$(PROJECT_DIR)/jiaPei/Vendor/QiNiu_IMSDK/Vendors/Voice",
 				);
-				MARKETING_VERSION = 2.2.4;
+				MARKETING_VERSION = 2.2.5;
 				ONLY_ACTIVE_ARCH = YES;
 				OTHER_CFLAGS = (
 					"$(inherited)",
@@ -11787,7 +11979,7 @@
 				CODE_SIGN_IDENTITY = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 2242024101401;
+				CURRENT_PROJECT_VERSION = 2252024102402;
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				DEVELOPMENT_TEAM = K7T6CU5SW5;
 				ENABLE_BITCODE = NO;
@@ -11825,7 +12017,7 @@
 					"$(PROJECT_DIR)/jiaPei/Vendor/BaiDuFaceSDK/BDFaceSDK/lib",
 					"$(PROJECT_DIR)/jiaPei/Vendor/QiNiu_IMSDK/Vendors/Voice",
 				);
-				MARKETING_VERSION = 2.2.4;
+				MARKETING_VERSION = 2.2.5;
 				ONLY_ACTIVE_ARCH = NO;
 				OTHER_CFLAGS = (
 					"$(inherited)",

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


+ 5 - 0
jiaPei/AppDelegate.m

@@ -81,6 +81,11 @@
     if (orientationMask != ZFInterfaceOrientationMaskUnknow) {
         return (UIInterfaceOrientationMask)orientationMask;
     }
+    UIViewController *current_VC = RQControllerHelper.currentViewController;
+    if([current_VC isKindOfClass:[NYExaminationViewController class]]||
+       [current_VC isKindOfClass:[NYExaminationRoomViewController class]]){
+        return UIInterfaceOrientationMaskLandscapeLeft|UIInterfaceOrientationMaskPortrait;
+    }
     /// 这里是非播放器VC支持的方向
     return UIInterfaceOrientationMaskPortrait;
 }

+ 6 - 0
jiaPei/Images.xcassets/Modules/ExaminationModule/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 22 - 0
jiaPei/Images.xcassets/Modules/ExaminationModule/examination_km1.imageset/Contents.json

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

BIN
jiaPei/Images.xcassets/Modules/ExaminationModule/examination_km1.imageset/examination_km1@2x.png


BIN
jiaPei/Images.xcassets/Modules/ExaminationModule/examination_km1.imageset/examination_km1@3x.png


+ 22 - 0
jiaPei/Images.xcassets/Modules/ExaminationModule/examination_km4.imageset/Contents.json

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

BIN
jiaPei/Images.xcassets/Modules/ExaminationModule/examination_km4.imageset/examination_km4@2x.png


BIN
jiaPei/Images.xcassets/Modules/ExaminationModule/examination_km4.imageset/examination_km4@3x.png


+ 77 - 77
jiaPei/Info.plist

@@ -98,6 +98,83 @@
 	</array>
 	<key>CFBundleVersion</key>
 	<string>$(CURRENT_PROJECT_VERSION)</string>
+	<key>LSApplicationQueriesSchemes</key>
+	<array>
+		<string>com.suning.SuningEBuy</string>
+		<string>openapp.jdmobile</string>
+		<string>openjd</string>
+		<string>jdmobile</string>
+		<string>vmall</string>
+		<string>vipshop</string>
+		<string>suning</string>
+		<string>yohobuy</string>
+		<string>kaola</string>
+		<string>yanxuan</string>
+		<string>wbmain</string>
+		<string>dianping</string>
+		<string>imeituan</string>
+		<string>beibeiapp</string>
+		<string>taobao</string>
+		<string>tmall</string>
+		<string>wireless1688</string>
+		<string>tbopen</string>
+		<string>taobaolite</string>
+		<string>taobaoliveshare</string>
+		<string>koubei</string>
+		<string>eleme</string>
+		<string>alipays</string>
+		<string>kfcapplinkurl</string>
+		<string>pddopen</string>
+		<string>pinduoduo</string>
+		<string>mogujie</string>
+		<string>lianjiabeike</string>
+		<string>lianjia</string>
+		<string>openanjuke</string>
+		<string>zhuanzhuan</string>
+		<string>farfetchCN</string>
+		<string>weibo</string>
+		<string>xhsdiscover</string>
+		<string>uclink</string>
+		<string>wechat</string>
+		<string>weixin</string>
+		<string>weixinULAPI</string>
+		<string>weixinURLParamsAPI</string>
+		<string>momochat</string>
+		<string>blued</string>
+		<string>zhihu</string>
+		<string>baiduboxapp</string>
+		<string>yidui</string>
+		<string>sinanews</string>
+		<string>snssdk141</string>
+		<string>newsapp</string>
+		<string>igetApp</string>
+		<string>kuaikan</string>
+		<string>youku</string>
+		<string>snssdk1128</string>
+		<string>gifshow</string>
+		<string>snssdk1112</string>
+		<string>miguvideo</string>
+		<string>iqiyi</string>
+		<string>bilibili</string>
+		<string>tenvideo</string>
+		<string>baiduhaokan</string>
+		<string>yykiwi</string>
+		<string>qqmusic</string>
+		<string>orpheus</string>
+		<string>kugouURL</string>
+		<string>qmkege</string>
+		<string>changba</string>
+		<string>iting</string>
+		<string>ctrip</string>
+		<string>QunarAlipay</string>
+		<string>diditaxi</string>
+		<string>didicommon</string>
+		<string>taobaotravel</string>
+		<string>OneTravel</string>
+		<string>kfhxztravel</string>
+		<string>gengmei</string>
+		<string>app.soyoung</string>
+	</array>
 	<key>LSRequiresIPhoneOS</key>
 	<true/>
 	<key>MOBAppKey</key>
@@ -238,83 +315,6 @@
 			<string>hs6bdukanm.skadnetwork</string>
 		</dict>
 	</array>
-	<key>LSApplicationQueriesSchemes</key>
-	<array>
-		<string>com.suning.SuningEBuy</string>
-		<string>openapp.jdmobile</string>
-		<string>openjd</string>
-		<string>jdmobile</string>
-		<string>vmall</string>
-		<string>vipshop</string>
-		<string>suning</string>
-		<string>yohobuy</string>
-		<string>kaola</string>
-		<string>yanxuan</string>
-		<string>wbmain</string>
-		<string>dianping</string>
-		<string>imeituan</string>
-		<string>beibeiapp</string>
-		<string>taobao</string>
-		<string>tmall</string>
-		<string>wireless1688</string>
-		<string>tbopen</string>
-		<string>taobaolite</string>
-		<string>taobaoliveshare</string>
-		<string>koubei</string>
-		<string>eleme</string>
-		<string>alipays</string>
-		<string>kfcapplinkurl</string>
-		<string>pddopen</string>
-		<string>pinduoduo</string>
-		<string>mogujie</string>
-		<string>lianjiabeike</string>
-		<string>lianjia</string>
-		<string>openanjuke</string>
-		<string>zhuanzhuan</string>
-		<string>farfetchCN</string>
-		<string>weibo</string>
-		<string>xhsdiscover</string>
-		<string>uclink</string>
-		<string>wechat</string>
-		<string>weixin</string>
-		<string>weixinULAPI</string>
-		<string>weixinURLParamsAPI</string>
-		<string>momochat</string>
-		<string>blued</string>
-		<string>zhihu</string>
-		<string>baiduboxapp</string>
-		<string>yidui</string>
-		<string>sinanews</string>
-		<string>snssdk141</string>
-		<string>newsapp</string>
-		<string>igetApp</string>
-		<string>kuaikan</string>
-		<string>youku</string>
-		<string>snssdk1128</string>
-		<string>gifshow</string>
-		<string>snssdk1112</string>
-		<string>miguvideo</string>
-		<string>iqiyi</string>
-		<string>bilibili</string>
-		<string>tenvideo</string>
-		<string>baiduhaokan</string>
-		<string>yykiwi</string>
-		<string>qqmusic</string>
-		<string>orpheus</string>
-		<string>kugouURL</string>
-		<string>qmkege</string>
-		<string>changba</string>
-		<string>iting</string>
-		<string>ctrip</string>
-		<string>QunarAlipay</string>
-		<string>diditaxi</string>
-		<string>didicommon</string>
-		<string>taobaotravel</string>
-		<string>OneTravel</string>
-		<string>kfhxztravel</string>
-		<string>gengmei</string>
-		<string>app.soyoung</string>
-	</array>
 	<key>UIBackgroundModes</key>
 	<array>
 		<string>bluetooth-central</string>

+ 22 - 10
jiaPei/Modules/HomePageModule/ViewModel/HomePage/itemViewModel/RQHomePageOneOrFourSmallItemViewModel.m

@@ -38,21 +38,33 @@
         } else if ([self.title isEqualToString:@"真实考场"]) {
             self.operation = ^{
                 [RQ_VIP_Module isVipWithSubject:RQ_YDTQuestion_Module.subject + 1 complete:^(BOOL isVip) {
+                    isVip = YES;
                     if (isVip) {
 //                        username subject headimg gs 替换-> model
-                        NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
-                        NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
-                        RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
-                        webViewModel.prefersNavigationBarHidden = YES;
-                        [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
+//                        NSString *urlStr = [NSString stringWithFormat:@"                                                            %@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
+//                        NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
+//                        RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
+//                        webViewModel.prefersNavigationBarHidden = YES;
+//                        [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
+                        
+                        //显示真实考场
+                        NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
+                        examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
+                        [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+                        
                     } else {
                         if (RQ_VIP_Module.freeLookSimExamNum == 1||
                             RQ_COMMON_MANAGER.APP_SWITCH) {//审核状态不用看广告
-                            NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
-                            NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
-                            RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
-                            webViewModel.prefersNavigationBarHidden = YES;
-                            [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
+//                            NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
+//                            NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
+//                            RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
+//                            webViewModel.prefersNavigationBarHidden = YES;
+//                            [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
+                            
+                            //显示真实考场
+                            NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
+                            examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
+                            [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
                             RQ_VIP_Module.freeLookSimExamNum = 0;
                         } else {
                             if(!RQ_COMMON_MANAGER.APP_SWITCH){

+ 17 - 0
jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationRoomViewController.h

@@ -0,0 +1,17 @@
+//
+//  NYExaminationRoomViewController.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/17.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYExaminationRoomViewController : RQBaseViewController
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 441 - 0
jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationRoomViewController.m

@@ -0,0 +1,441 @@
+//
+//  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;
+                }
+            }
+            NSData *mediaData = [RQ_YDTQuestion_Module getMediaDataWithMediaName:media_name];
+            if (mediaData) {
+                NSString *imageStr = [mediaData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
+                UIImage *sinaImage = [UIImage sd_imageWithData:[NSData dataWithBase64EncodedString:imageStr] scale:1 firstFrameOnly:YES];
+                exerciseModel.ydtQuestionModel.sinaImage = sinaImage;
+            }
+        }
+        
+    } else if (RQStringIsNotEmpty(exerciseModel.ydtQuestionModel.video_url) && RQStringIsNotEmpty(exerciseModel.ydtQuestionModel.media_url)) {
+        NSString *media_name;
+        if ([exerciseModel.ydtQuestionModel.video_url containsString:@"https://"]) {
+            media_name = [exerciseModel.ydtQuestionModel.video_url componentsSeparatedByString:@"/"].lastObject;
+        } else {
+            media_name = exerciseModel.ydtQuestionModel.video_url;
+        }
+        NSURL *video_filePath_Url;
+        if (!RQObjectIsNil(exerciseModel.ydtQuestionModel.media_content) && !RQ_COMMON_MANAGER.JSJP_Is_Online_Media_Video) {
+            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+            NSString *documentsDirectory = [paths objectAtIndex:0];
+            NSString *path = [documentsDirectory stringByAppendingPathComponent:media_name];
+            [[NSFileManager defaultManager] createFileAtPath:path contents:exerciseModel.ydtQuestionModel.media_content attributes:nil];
+            video_filePath_Url = [NSURL fileURLWithPath:path];
+        }
+        exerciseModel.ydtQuestionModel.video_filePath_Url = video_filePath_Url;
+    }
+    if (RQStringIsNotEmpty(imageString)) {
+        self.image_btn.hidden = NO;
+        if (!RQObjectIsNil(exerciseModel.ydtQuestionModel.sinaImage) && !RQ_COMMON_MANAGER.JSJP_Is_Online_Media_Image) {
+            [self.image_btn setImage:exerciseModel.ydtQuestionModel.sinaImage forState:UIControlStateNormal];
+            [self.image_big_btn setImage:exerciseModel.ydtQuestionModel.sinaImage forState:UIControlStateNormal];
+        } else {
+            __block UIImage *getImage;
+            UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.image_btn.frame];
+            [imageView yy_setImageWithURL:[NSURL URLWithString:imageString] placeholder:RQWebImagePlaceholder() options:RQWebImageOptionAutomatic completion:^(UIImage * _Nullable image, NSURL * _Nonnull url, YYWebImageFromType from, YYWebImageStage stage, NSError * _Nullable error) {
+                getImage = [image qmui_imageResizedInLimitedSize:CGSizeMake(RQ_SCREEN_WIDTH, RQ_SCREEN_WIDTH * ((image.size.height / image.size.width) * 1.00)) resizingMode:QMUIImageResizingModeScaleAspectFill];
+            }];
+            [self.image_btn setImage:getImage forState:UIControlStateNormal];
+            [self.image_big_btn setImage:getImage forState:UIControlStateNormal];
+        }
+    }
+
+}
+
+- (void)setUserLeft {
+    @weakify(self)
+    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:@"科目:%@",RQ_YDTQuestion_Module.subjectStr];
+    
+}
+
+//题目-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];
+    for (int i=0; i<self.exercise_array.count; i++) {
+        NSString *count = [NSString stringWithFormat:@"%d",i+1];
+        [dataSource addObject:@{
+             @"count":count,
+             @"color":@(arc4random()%6)
+         }];
+    }
+    @weakify(self)
+    NYChartMatrixView *chartMatrixView = [[NYChartMatrixView alloc] init];
+    chartMatrixView.dataSource = dataSource;
+    chartMatrixView.matrixItemClickBlock = ^(id  _Nonnull obj, int index) {
+        NSLog(@"点击了 cell=%@    index=%d",obj,index);
+        @strongify(self)
+        self.index = index;
+        [self exerciseLoadData];
+    };
+    [self.right_bk_view addSubview:chartMatrixView];
+    self.chartMatrixView = chartMatrixView;
+    [chartMatrixView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.top.bottom.mas_equalTo(self.right_bk_view);
+//        make.centerY.mas_equalTo(self.view.mas_centerY);
+//        make.height.mas_equalTo(KRealValue(401-20));
+    }];
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+        [chartMatrixView loadView];
+        chartMatrixView.selectIndex = 0;
+    });
+}
+
+- (void)setupTimeLabel{
+    RQ_Exercise_Module.count = 45 * 60;
+    [RQ_Exercise_Module startTimer];
+    RAC(_timeLabel, text) = [RACObserve(RQ_Exercise_Module, count) map:^id _Nullable(id  _Nullable value) {
+        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" : @"";
+        return [NSString stringWithFormat:@"%@%lu:%@%lu",min0,(unsigned long)min,sec0,(unsigned long)sec];
+    }];
+}
+
+- (void)viewWillAppear:(BOOL)animated {
+    [super viewWillAppear:animated];
+
+    [self.navigationController.navigationBar setHidden:YES];
+}
+- (void)viewWillDisappear:(BOOL)animated {
+    [super viewWillDisappear:animated];
+    if(!RQ_Exercise_Module.isShow_CatalogueView){
+        if (RQ_Exercise_Module.timer) {
+            [RQ_Exercise_Module.timer setFireDate:[NSDate distantFuture]];
+        }
+    }
+}
+
+- (void)viewDidDisappear:(BOOL)animated {
+    [super viewDidDisappear:animated];
+    if(!RQ_Exercise_Module.isShow_CatalogueView){
+        [RQ_Exercise_Module.timer invalidate];
+        RQ_Exercise_Module.timer = nil;
+        RQ_Exercise_Module.count = 0;
+        RQ_Exercise_Module.beginDate = nil;
+    }
+}
+
+- (NYExaminationTipsViewController *)examinationTipsViewController {
+    if(!_examinationTipsViewController){
+        _examinationTipsViewController = [[NYExaminationTipsViewController alloc ]init];
+    }
+    return _examinationTipsViewController;
+}
+
+- (IBAction)backAtciondo:(id)sender {
+    [self.navigationController.navigationBar setHidden:NO];
+    [self.navigationController popToRootViewControllerAnimated:YES];
+}
+
+
+- (void)enterLandscapeFullScreen:(UIInterfaceOrientation)orientation animated:(BOOL)animated {
+    [[UIDevice currentDevice] setValue:[NSNumber numberWithInt:UIInterfaceOrientationUnknown] forKey:@"orientation"];
+    NSNumber *orientationUnknown = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft];
+    [[UIDevice currentDevice] setValue:orientationUnknown forKey:@"orientation"];
+}
+
+//支持的方向
+- (UIInterfaceOrientationMask)supportedInterfaceOrientations
+{
+    return UIInterfaceOrientationMaskLandscapeLeft|UIInterfaceOrientationMaskLandscapeRight;
+}
+
+- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation
+{
+    return UIInterfaceOrientationPortrait;
+}
+
+#pragma mark  ######事件######
+
+//上一题
+- (IBAction)previousActiondo:(id)sender {
+    if(self.index<0)return;
+    self.index--;
+    [self exerciseLoadData];
+}
+
+//下一题
+- (IBAction)nextActiondo:(id)sender {
+    if(self.index>self.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];//进入下一题
+    }else if(type==1){//答错了
+        RQExerciseModel *exercise = self.exercise_array[self.index];
+        [self.examinationTipsViewController showTypeTipsView:0 invView:self.view inModel:exercise];
+    }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 backAtciondo:nil];
+    }
+}
+
+
+@end

+ 478 - 0
jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationRoomViewController.xib

@@ -0,0 +1,478 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina5_5" orientation="landscape" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="NYExaminationRoomViewController">
+            <connections>
+                <outlet property="bottom_view" destination="uG3-mO-Msg" id="dnV-ps-q3g"/>
+                <outlet property="center_view" destination="6Rd-pm-g94" id="ZDC-sf-3lf"/>
+                <outlet property="content01_view" destination="4RP-zw-Uj0" id="0Np-8l-IEf"/>
+                <outlet property="content_view" destination="zuP-cL-hVb" id="T2r-7G-UeN"/>
+                <outlet property="image_big_btn" destination="iRO-7E-qJ4" id="FcK-y5-YOs"/>
+                <outlet property="image_btn" destination="UpU-Sk-9TN" id="DCO-fb-PI1"/>
+                <outlet property="km_label" destination="nfh-zc-aL9" id="TEN-9w-nBm"/>
+                <outlet property="next_btn" destination="iUI-un-H3Y" id="9wS-7h-7Vf"/>
+                <outlet property="previous_btn" destination="ZLF-4T-y8I" id="enF-4c-eBb"/>
+                <outlet property="right_bk_view" destination="hri-P2-UAQ" id="XvZ-rA-BXa"/>
+                <outlet property="right_view" destination="RAb-DG-j0h" id="F61-KD-k4J"/>
+                <outlet property="sex_label" destination="uKP-0R-qa3" id="N8y-Da-8PG"/>
+                <outlet property="showtips_label" destination="nqM-wk-uKo" id="94Y-ih-KZh"/>
+                <outlet property="submit_btn" destination="xRO-se-eAH" id="Xid-oI-lUh"/>
+                <outlet property="timeLabel" destination="hnX-ma-ZsW" id="N3F-fn-nYD"/>
+                <outlet property="type_label" destination="oug-1K-1BV" id="hhf-gf-mWt"/>
+                <outlet property="usericon_view" destination="nv5-EK-iRb" id="DNa-HC-U8S"/>
+                <outlet property="username_label" destination="InR-jg-n0T" id="k3B-4P-r4r"/>
+                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
+            <rect key="frame" x="0.0" y="0.0" width="736" height="414"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zuP-cL-hVb" userLabel="View-content">
+                    <rect key="frame" x="20" y="0.0" width="696" height="414"/>
+                    <subviews>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4RP-zw-Uj0" userLabel="View-ct">
+                            <rect key="frame" x="16" y="16" width="664" height="382"/>
+                            <subviews>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="shS-pl-Cf3" userLabel="View-bottom">
+                                    <rect key="frame" x="0.0" y="302" width="674" height="80"/>
+                                    <subviews>
+                                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aF4-O0-P0A" userLabel="View-line">
+                                            <rect key="frame" x="0.0" y="0.0" width="674" height="1"/>
+                                            <color key="backgroundColor" red="0.85098039215686272" green="0.85098039215686272" blue="0.85098039215686272" alpha="1" colorSpace="calibratedRGB"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="1" id="MZf-y5-0o6"/>
+                                            </constraints>
+                                        </view>
+                                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cYT-p4-fYr">
+                                            <rect key="frame" x="18" y="21" width="38" height="38"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="38" id="ZUe-8w-omo"/>
+                                                <constraint firstAttribute="height" constant="38" id="dFM-17-xIw"/>
+                                            </constraints>
+                                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                            <state key="normal" image="zfplayer_back"/>
+                                            <connections>
+                                                <action selector="backAtciondo:" destination="-1" eventType="touchUpInside" id="jBe-zK-8lz"/>
+                                            </connections>
+                                        </button>
+                                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="UpU-Sk-9TN">
+                                            <rect key="frame" x="237" y="1" width="200" height="79"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="200" id="gnC-gM-o4U"/>
+                                            </constraints>
+                                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                            <connections>
+                                                <action selector="imageBigActiondo:" destination="-1" eventType="touchUpInside" id="pfZ-Jn-6ay"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <constraints>
+                                        <constraint firstItem="aF4-O0-P0A" firstAttribute="leading" secondItem="shS-pl-Cf3" secondAttribute="leading" id="8eB-jG-FYB"/>
+                                        <constraint firstItem="cYT-p4-fYr" firstAttribute="centerY" secondItem="shS-pl-Cf3" secondAttribute="centerY" id="BkJ-e2-Rd6"/>
+                                        <constraint firstItem="UpU-Sk-9TN" firstAttribute="centerX" secondItem="shS-pl-Cf3" secondAttribute="centerX" id="DEW-LZ-QXW"/>
+                                        <constraint firstAttribute="trailing" secondItem="aF4-O0-P0A" secondAttribute="trailing" id="ETc-Ic-cLv"/>
+                                        <constraint firstAttribute="bottom" secondItem="UpU-Sk-9TN" secondAttribute="bottom" id="bgB-hI-zim"/>
+                                        <constraint firstItem="cYT-p4-fYr" firstAttribute="leading" secondItem="shS-pl-Cf3" secondAttribute="leading" constant="18" id="icO-YL-Hqi"/>
+                                        <constraint firstItem="UpU-Sk-9TN" firstAttribute="top" secondItem="aF4-O0-P0A" secondAttribute="bottom" id="mym-fe-0Dp"/>
+                                        <constraint firstAttribute="height" constant="80" id="r0D-F5-0x3"/>
+                                        <constraint firstItem="aF4-O0-P0A" firstAttribute="top" secondItem="shS-pl-Cf3" secondAttribute="top" id="smM-Gs-bfN"/>
+                                    </constraints>
+                                </view>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="WfC-ox-b6Q" userLabel="View-left">
+                                    <rect key="frame" x="0.0" y="0.0" width="131" height="302"/>
+                                    <subviews>
+                                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="PkR-GP-1ay" userLabel="View-line">
+                                            <rect key="frame" x="130" y="0.0" width="1" height="302"/>
+                                            <color key="backgroundColor" red="0.85098039219999999" green="0.85098039219999999" blue="0.85098039219999999" alpha="1" colorSpace="calibratedRGB"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="1" id="BjH-Fa-KqD"/>
+                                            </constraints>
+                                        </view>
+                                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9aO-8N-Y0s" userLabel="View-01">
+                                            <rect key="frame" x="0.0" y="0.0" width="130" height="50"/>
+                                            <subviews>
+                                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="OxO-wr-Wfo" userLabel="View-line">
+                                                    <rect key="frame" x="0.0" y="49" width="130" height="1"/>
+                                                    <color key="backgroundColor" red="0.85098039219999999" green="0.85098039219999999" blue="0.85098039219999999" alpha="1" colorSpace="calibratedRGB"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="1" id="iws-58-Bz9"/>
+                                                    </constraints>
+                                                </view>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="极速驾考" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2WZ-69-M2r">
+                                                    <rect key="frame" x="35" y="8" width="60" height="18"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" constant="60" id="UVG-kI-tbp"/>
+                                                        <constraint firstAttribute="height" constant="18" id="xkq-KG-YWW"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="13"/>
+                                                    <color key="textColor" red="0.16862745098039217" green="0.41960784313725491" blue="0.80000000000000004" alpha="1" colorSpace="calibratedRGB"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="第01考台" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="j53-nF-i5c">
+                                                    <rect key="frame" x="35" y="26" width="60" height="18"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" constant="60" id="0e9-iF-elV"/>
+                                                        <constraint firstAttribute="height" constant="18" id="ymR-4q-x0C"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
+                                                    <color key="textColor" red="0.23921568627450979" green="0.23529411764705882" blue="0.2196078431372549" alpha="1" colorSpace="calibratedRGB"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                            </subviews>
+                                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                            <constraints>
+                                                <constraint firstItem="j53-nF-i5c" firstAttribute="top" secondItem="2WZ-69-M2r" secondAttribute="bottom" id="7cR-s9-2zK"/>
+                                                <constraint firstItem="2WZ-69-M2r" firstAttribute="top" secondItem="9aO-8N-Y0s" secondAttribute="top" constant="8" id="Dm1-Z1-xXE"/>
+                                                <constraint firstItem="2WZ-69-M2r" firstAttribute="centerX" secondItem="9aO-8N-Y0s" secondAttribute="centerX" id="JKv-8O-GNU"/>
+                                                <constraint firstAttribute="height" constant="50" id="Jew-7V-AOH"/>
+                                                <constraint firstAttribute="trailing" secondItem="OxO-wr-Wfo" secondAttribute="trailing" id="T0a-vz-t8d"/>
+                                                <constraint firstItem="j53-nF-i5c" firstAttribute="centerX" secondItem="9aO-8N-Y0s" secondAttribute="centerX" id="k2e-vq-e2z"/>
+                                                <constraint firstAttribute="bottom" secondItem="OxO-wr-Wfo" secondAttribute="bottom" id="ouG-v7-86p"/>
+                                                <constraint firstItem="OxO-wr-Wfo" firstAttribute="leading" secondItem="9aO-8N-Y0s" secondAttribute="leading" id="vZ1-cY-baY"/>
+                                            </constraints>
+                                        </view>
+                                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FEy-KR-cdz" userLabel="View-02">
+                                            <rect key="frame" x="0.0" y="50" width="130" height="207"/>
+                                            <subviews>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="考生信息" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eCu-gr-Hcs">
+                                                    <rect key="frame" x="35" y="8" width="60" height="18"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="18" id="5o3-MO-Z1W"/>
+                                                        <constraint firstAttribute="width" constant="60" id="yfc-tr-TpR"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="13"/>
+                                                    <color key="textColor" red="0.16862745100000001" green="0.41960784309999999" blue="0.80000000000000004" alpha="1" colorSpace="calibratedRGB"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="defaultUserIcon" translatesAutoresizingMaskIntoConstraints="NO" id="nv5-EK-iRb">
+                                                    <rect key="frame" x="36" y="37" width="58" height="58"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="58" id="JUf-bR-xoU"/>
+                                                        <constraint firstAttribute="width" constant="58" id="gCx-bB-bSF"/>
+                                                    </constraints>
+                                                </imageView>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="考生姓名:极速驾培" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="InR-jg-n0T">
+                                                    <rect key="frame" x="10" y="103" width="110" height="15"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="15" id="RFB-s9-hd9"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="10"/>
+                                                    <color key="textColor" red="0.23921568627450979" green="0.23529411764705882" blue="0.2196078431372549" alpha="1" colorSpace="calibratedRGB"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="性别:男" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uKP-0R-qa3">
+                                                    <rect key="frame" x="10" y="118" width="110" height="15"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="15" id="rpd-cD-9B3"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="10"/>
+                                                    <color key="textColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="考试类型:C1" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oug-1K-1BV">
+                                                    <rect key="frame" x="10" y="133" width="110" height="15"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="15" id="akF-y6-3FO"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="10"/>
+                                                    <color key="textColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="科目:科一" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nfh-zc-aL9">
+                                                    <rect key="frame" x="10" y="148" width="110" height="15"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="15" id="oat-Cw-Mmt"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="10"/>
+                                                    <color key="textColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                            </subviews>
+                                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                            <constraints>
+                                                <constraint firstItem="InR-jg-n0T" firstAttribute="leading" secondItem="FEy-KR-cdz" secondAttribute="leading" constant="10" id="2Kx-TO-r05"/>
+                                                <constraint firstItem="eCu-gr-Hcs" firstAttribute="top" secondItem="FEy-KR-cdz" secondAttribute="top" constant="8" id="4br-q2-jHS"/>
+                                                <constraint firstAttribute="trailing" secondItem="uKP-0R-qa3" secondAttribute="trailing" constant="10" id="BYW-Xn-t8h"/>
+                                                <constraint firstItem="oug-1K-1BV" firstAttribute="top" secondItem="uKP-0R-qa3" secondAttribute="bottom" id="HX0-Ve-Cds"/>
+                                                <constraint firstItem="uKP-0R-qa3" firstAttribute="top" secondItem="InR-jg-n0T" secondAttribute="bottom" id="Jdw-cy-Qrc"/>
+                                                <constraint firstItem="nfh-zc-aL9" firstAttribute="leading" secondItem="FEy-KR-cdz" secondAttribute="leading" constant="10" id="N5c-ze-a0h"/>
+                                                <constraint firstItem="nfh-zc-aL9" firstAttribute="top" secondItem="oug-1K-1BV" secondAttribute="bottom" id="Ufb-AB-qaT"/>
+                                                <constraint firstItem="uKP-0R-qa3" firstAttribute="leading" secondItem="FEy-KR-cdz" secondAttribute="leading" constant="10" id="dfk-Ym-P3c"/>
+                                                <constraint firstAttribute="trailing" secondItem="nfh-zc-aL9" secondAttribute="trailing" constant="10" id="eMb-C9-ut0"/>
+                                                <constraint firstItem="nv5-EK-iRb" firstAttribute="centerX" secondItem="FEy-KR-cdz" secondAttribute="centerX" id="eU5-lu-olB"/>
+                                                <constraint firstItem="eCu-gr-Hcs" firstAttribute="centerX" secondItem="FEy-KR-cdz" secondAttribute="centerX" id="fAE-kI-rp2"/>
+                                                <constraint firstAttribute="trailing" secondItem="oug-1K-1BV" secondAttribute="trailing" constant="10" id="nw9-PL-rlu"/>
+                                                <constraint firstAttribute="trailing" secondItem="InR-jg-n0T" secondAttribute="trailing" constant="10" id="ocT-ul-DgX"/>
+                                                <constraint firstItem="nv5-EK-iRb" firstAttribute="top" secondItem="eCu-gr-Hcs" secondAttribute="bottom" constant="11" id="s85-x7-tZc"/>
+                                                <constraint firstItem="InR-jg-n0T" firstAttribute="top" secondItem="nv5-EK-iRb" secondAttribute="bottom" constant="8" id="uuA-HJ-lde"/>
+                                                <constraint firstItem="oug-1K-1BV" firstAttribute="leading" secondItem="FEy-KR-cdz" secondAttribute="leading" constant="10" id="y56-lk-NIe"/>
+                                            </constraints>
+                                        </view>
+                                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1tT-ss-tfv" userLabel="View-03">
+                                            <rect key="frame" x="0.0" y="257" width="130" height="45"/>
+                                            <subviews>
+                                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1XW-DM-Ot2" userLabel="View-line">
+                                                    <rect key="frame" x="0.0" y="0.0" width="130" height="1"/>
+                                                    <color key="backgroundColor" red="0.85098039219999999" green="0.85098039219999999" blue="0.85098039219999999" alpha="1" colorSpace="calibratedRGB"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="1" id="jax-5X-YMo"/>
+                                                    </constraints>
+                                                </view>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="剩余时间" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RFR-Xc-VPc">
+                                                    <rect key="frame" x="35" y="5" width="60" height="18"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" constant="60" id="Abw-Vv-bgR"/>
+                                                        <constraint firstAttribute="height" constant="18" id="uMY-Yv-voE"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="13"/>
+                                                    <color key="textColor" red="0.16862745100000001" green="0.41960784309999999" blue="0.80000000000000004" alpha="1" colorSpace="calibratedRGB"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="45:00" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hnX-ma-ZsW">
+                                                    <rect key="frame" x="38.666666666666671" y="23" width="53" height="18"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" constant="53" id="g7P-R2-dSC"/>
+                                                        <constraint firstAttribute="height" constant="18" id="txa-FM-8Fc"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+                                                    <color key="textColor" red="0.23921568627450979" green="0.23529411764705882" blue="0.2196078431372549" alpha="1" colorSpace="calibratedRGB"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                            </subviews>
+                                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                            <constraints>
+                                                <constraint firstItem="hnX-ma-ZsW" firstAttribute="top" secondItem="RFR-Xc-VPc" secondAttribute="bottom" id="3xD-A8-nPX"/>
+                                                <constraint firstItem="1XW-DM-Ot2" firstAttribute="leading" secondItem="1tT-ss-tfv" secondAttribute="leading" id="6hx-TQ-1IA"/>
+                                                <constraint firstAttribute="height" constant="45" id="Nuh-fh-Yin"/>
+                                                <constraint firstItem="1XW-DM-Ot2" firstAttribute="top" secondItem="1tT-ss-tfv" secondAttribute="top" id="aGI-Zq-Dlf"/>
+                                                <constraint firstItem="RFR-Xc-VPc" firstAttribute="centerX" secondItem="1tT-ss-tfv" secondAttribute="centerX" id="f7W-Ez-Q7U"/>
+                                                <constraint firstItem="RFR-Xc-VPc" firstAttribute="top" secondItem="1XW-DM-Ot2" secondAttribute="bottom" constant="4" id="htj-8d-oh8"/>
+                                                <constraint firstAttribute="trailing" secondItem="1XW-DM-Ot2" secondAttribute="trailing" id="jdd-hJ-1iC"/>
+                                                <constraint firstItem="hnX-ma-ZsW" firstAttribute="centerX" secondItem="1tT-ss-tfv" secondAttribute="centerX" id="xtM-wZ-OuY"/>
+                                            </constraints>
+                                        </view>
+                                    </subviews>
+                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <constraints>
+                                        <constraint firstItem="FEy-KR-cdz" firstAttribute="leading" secondItem="WfC-ox-b6Q" secondAttribute="leading" id="0za-aM-fkJ"/>
+                                        <constraint firstItem="PkR-GP-1ay" firstAttribute="top" secondItem="WfC-ox-b6Q" secondAttribute="top" id="49T-f5-t7K"/>
+                                        <constraint firstAttribute="bottom" secondItem="1tT-ss-tfv" secondAttribute="bottom" id="8XU-cF-YEf"/>
+                                        <constraint firstAttribute="trailing" secondItem="PkR-GP-1ay" secondAttribute="trailing" id="BjW-Cf-3vp"/>
+                                        <constraint firstAttribute="bottom" secondItem="PkR-GP-1ay" secondAttribute="bottom" id="Ioo-ig-DJk"/>
+                                        <constraint firstItem="1tT-ss-tfv" firstAttribute="top" secondItem="FEy-KR-cdz" secondAttribute="bottom" id="SAb-bj-m22"/>
+                                        <constraint firstItem="9aO-8N-Y0s" firstAttribute="top" secondItem="WfC-ox-b6Q" secondAttribute="top" id="SwQ-v3-Ibx"/>
+                                        <constraint firstAttribute="width" constant="131" id="aJM-kI-rmH"/>
+                                        <constraint firstItem="PkR-GP-1ay" firstAttribute="leading" secondItem="1tT-ss-tfv" secondAttribute="trailing" id="abP-Zq-mVK"/>
+                                        <constraint firstItem="PkR-GP-1ay" firstAttribute="leading" secondItem="9aO-8N-Y0s" secondAttribute="trailing" id="eby-zQ-naM"/>
+                                        <constraint firstItem="PkR-GP-1ay" firstAttribute="leading" secondItem="FEy-KR-cdz" secondAttribute="trailing" id="fo1-gE-wVm"/>
+                                        <constraint firstItem="1tT-ss-tfv" firstAttribute="leading" secondItem="WfC-ox-b6Q" secondAttribute="leading" id="g2h-3b-rlb"/>
+                                        <constraint firstItem="9aO-8N-Y0s" firstAttribute="leading" secondItem="WfC-ox-b6Q" secondAttribute="leading" id="oSu-2z-5l7"/>
+                                        <constraint firstItem="FEy-KR-cdz" firstAttribute="top" secondItem="9aO-8N-Y0s" secondAttribute="bottom" id="sqt-Ap-KNC"/>
+                                    </constraints>
+                                </view>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="RAb-DG-j0h" userLabel="View-right">
+                                    <rect key="frame" x="441" y="0.0" width="223" height="302"/>
+                                    <subviews>
+                                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5Yo-gm-91p" userLabel="View-line">
+                                            <rect key="frame" x="0.0" y="0.0" width="1" height="302"/>
+                                            <color key="backgroundColor" red="0.85098039219999999" green="0.85098039219999999" blue="0.85098039219999999" alpha="1" colorSpace="calibratedRGB"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="1" id="T2T-fH-0GY"/>
+                                            </constraints>
+                                        </view>
+                                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hri-P2-UAQ" userLabel="View-bk">
+                                            <rect key="frame" x="12" y="12" width="199" height="278"/>
+                                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                        </view>
+                                    </subviews>
+                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <constraints>
+                                        <constraint firstItem="5Yo-gm-91p" firstAttribute="top" secondItem="RAb-DG-j0h" secondAttribute="top" id="Hb8-di-HqX"/>
+                                        <constraint firstItem="hri-P2-UAQ" firstAttribute="top" secondItem="RAb-DG-j0h" secondAttribute="top" constant="12" id="J74-D0-Pyt"/>
+                                        <constraint firstAttribute="width" constant="223" id="Khg-1A-4Zq"/>
+                                        <constraint firstItem="hri-P2-UAQ" firstAttribute="leading" secondItem="RAb-DG-j0h" secondAttribute="leading" constant="12" id="OaQ-1X-IeW"/>
+                                        <constraint firstAttribute="trailing" secondItem="hri-P2-UAQ" secondAttribute="trailing" constant="12" id="XOs-Mc-AdT"/>
+                                        <constraint firstAttribute="bottom" secondItem="5Yo-gm-91p" secondAttribute="bottom" id="aCM-Cx-PY7"/>
+                                        <constraint firstItem="5Yo-gm-91p" firstAttribute="leading" secondItem="RAb-DG-j0h" secondAttribute="leading" id="kCU-Hf-zT2"/>
+                                        <constraint firstAttribute="bottom" secondItem="hri-P2-UAQ" secondAttribute="bottom" constant="12" id="vub-te-979"/>
+                                    </constraints>
+                                </view>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6Rd-pm-g94" userLabel="View-center">
+                                    <rect key="frame" x="131" y="0.0" width="310" height="302"/>
+                                    <subviews>
+                                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="uG3-mO-Msg" userLabel="View-bottom">
+                                            <rect key="frame" x="0.0" y="257" width="310" height="45"/>
+                                            <subviews>
+                                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="f7W-Zy-efa" userLabel="View-line">
+                                                    <rect key="frame" x="0.0" y="0.0" width="310" height="1"/>
+                                                    <color key="backgroundColor" red="0.85098039219999999" green="0.85098039219999999" blue="0.85098039219999999" alpha="1" colorSpace="calibratedRGB"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="1" id="nKs-Ia-rzo"/>
+                                                    </constraints>
+                                                </view>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="操作提示:判断题" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nqM-wk-uKo">
+                                                    <rect key="frame" x="9" y="8" width="82" height="12"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" constant="82" id="HCq-FL-vLR"/>
+                                                        <constraint firstAttribute="height" constant="12" id="R1L-Tq-WwJ"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="10"/>
+                                                    <color key="textColor" red="0.73725490196078436" green="0.19607843137254902" blue="0.1764705882352941" alpha="1" colorSpace="calibratedRGB"/>
+                                                    <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="rxn-4u-y2P">
+                                                    <rect key="frame" x="9" y="25" width="185" height="12"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="12" id="1B5-2l-47S"/>
+                                                        <constraint firstAttribute="width" constant="185" id="EZ1-Wc-zy6"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="10"/>
+                                                    <color key="textColor" red="0.23921568627450979" green="0.23529411764705882" blue="0.2196078431372549" alpha="1" colorSpace="calibratedRGB"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="iUI-un-H3Y">
+                                                    <rect key="frame" x="180" y="7.6666666666666856" width="54" height="30"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="30" id="5Io-st-tUS"/>
+                                                        <constraint firstAttribute="width" constant="54" id="HRz-vf-VuG"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="11"/>
+                                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                                    <state key="normal" title="下一题">
+                                                        <color key="titleColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                                    </state>
+                                                    <state key="selected" title="下一题">
+                                                        <color key="titleColor" red="0.60392156860000001" green="0.60784313729999995" blue="0.61568627450000002" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
+                                                    </state>
+                                                    <connections>
+                                                        <action selector="nextActiondo:" destination="-1" eventType="touchUpInside" id="nB6-u0-fcE"/>
+                                                    </connections>
+                                                </button>
+                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xRO-se-eAH">
+                                                    <rect key="frame" x="244" y="7.6666666666666856" width="54" height="30"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" constant="54" id="BeH-f0-AIh"/>
+                                                        <constraint firstAttribute="height" constant="30" id="IgL-JC-130"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="11"/>
+                                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                                    <state key="normal" title="交卷">
+                                                        <color key="titleColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                                    </state>
+                                                    <connections>
+                                                        <action selector="submitActiondo:" destination="-1" eventType="touchUpInside" id="Te5-xZ-Qdd"/>
+                                                    </connections>
+                                                </button>
+                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ZLF-4T-y8I">
+                                                    <rect key="frame" x="116" y="7.6666666666666856" width="54" height="30"/>
+                                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="30" id="7oH-wu-Iib"/>
+                                                        <constraint firstAttribute="width" constant="54" id="k8R-OS-HjG"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="11"/>
+                                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                                    <state key="normal" title="上一题">
+                                                        <color key="titleColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                                    </state>
+                                                    <state key="selected" title="上一题">
+                                                        <color key="titleColor" red="0.60392156860000001" green="0.60784313729999995" blue="0.61568627450000002" alpha="1" colorSpace="calibratedRGB"/>
+                                                    </state>
+                                                    <connections>
+                                                        <action selector="previousActiondo:" destination="-1" eventType="touchUpInside" id="40G-nW-J4H"/>
+                                                    </connections>
+                                                </button>
+                                            </subviews>
+                                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                            <constraints>
+                                                <constraint firstItem="rxn-4u-y2P" firstAttribute="top" secondItem="nqM-wk-uKo" secondAttribute="bottom" constant="5" id="5ej-5c-88z"/>
+                                                <constraint firstItem="nqM-wk-uKo" firstAttribute="leading" secondItem="uG3-mO-Msg" secondAttribute="leading" constant="9" id="5us-Ng-I90"/>
+                                                <constraint firstAttribute="height" constant="45" id="716-pl-EiS"/>
+                                                <constraint firstItem="nqM-wk-uKo" firstAttribute="top" secondItem="f7W-Zy-efa" secondAttribute="bottom" constant="7" id="Hmm-wR-xiB"/>
+                                                <constraint firstItem="xRO-se-eAH" firstAttribute="centerY" secondItem="uG3-mO-Msg" secondAttribute="centerY" id="KU9-ye-jir"/>
+                                                <constraint firstItem="f7W-Zy-efa" firstAttribute="top" secondItem="uG3-mO-Msg" secondAttribute="top" id="Kj6-45-9Fk"/>
+                                                <constraint firstItem="iUI-un-H3Y" firstAttribute="centerY" secondItem="uG3-mO-Msg" secondAttribute="centerY" id="MXB-Nd-v4C"/>
+                                                <constraint firstItem="iUI-un-H3Y" firstAttribute="leading" secondItem="ZLF-4T-y8I" secondAttribute="trailing" constant="10" id="UAh-I7-tJz"/>
+                                                <constraint firstAttribute="trailing" secondItem="xRO-se-eAH" secondAttribute="trailing" constant="12" id="Yr1-Ad-94M"/>
+                                                <constraint firstAttribute="trailing" secondItem="f7W-Zy-efa" secondAttribute="trailing" id="Z55-1J-c8z"/>
+                                                <constraint firstItem="xRO-se-eAH" firstAttribute="leading" secondItem="iUI-un-H3Y" secondAttribute="trailing" constant="10" id="e15-QH-xf9"/>
+                                                <constraint firstItem="ZLF-4T-y8I" firstAttribute="centerY" secondItem="uG3-mO-Msg" secondAttribute="centerY" id="ea5-mx-hea"/>
+                                                <constraint firstItem="f7W-Zy-efa" firstAttribute="leading" secondItem="uG3-mO-Msg" secondAttribute="leading" id="k1r-Pn-1LP"/>
+                                                <constraint firstItem="rxn-4u-y2P" firstAttribute="leading" secondItem="uG3-mO-Msg" secondAttribute="leading" constant="9" id="x0i-28-GS9"/>
+                                            </constraints>
+                                        </view>
+                                    </subviews>
+                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <constraints>
+                                        <constraint firstAttribute="trailing" secondItem="uG3-mO-Msg" secondAttribute="trailing" id="8IR-8c-4YL"/>
+                                        <constraint firstItem="uG3-mO-Msg" firstAttribute="leading" secondItem="6Rd-pm-g94" secondAttribute="leading" id="PaF-X3-LBW"/>
+                                        <constraint firstAttribute="bottom" secondItem="uG3-mO-Msg" secondAttribute="bottom" id="hmj-r1-aOa"/>
+                                    </constraints>
+                                </view>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstAttribute="trailing" secondItem="shS-pl-Cf3" secondAttribute="trailing" constant="-10" id="1Dm-z8-mFz"/>
+                                <constraint firstAttribute="bottom" secondItem="shS-pl-Cf3" secondAttribute="bottom" id="EjS-I8-lfS"/>
+                                <constraint firstItem="WfC-ox-b6Q" firstAttribute="leading" secondItem="4RP-zw-Uj0" secondAttribute="leading" id="FVZ-aV-Usv"/>
+                                <constraint firstAttribute="trailing" secondItem="RAb-DG-j0h" secondAttribute="trailing" id="GWg-Br-kRr"/>
+                                <constraint firstItem="RAb-DG-j0h" firstAttribute="leading" secondItem="6Rd-pm-g94" secondAttribute="trailing" id="Neu-uU-HJY"/>
+                                <constraint firstItem="WfC-ox-b6Q" firstAttribute="top" secondItem="4RP-zw-Uj0" secondAttribute="top" id="f3g-IA-ltL"/>
+                                <constraint firstItem="RAb-DG-j0h" firstAttribute="top" secondItem="4RP-zw-Uj0" secondAttribute="top" id="fqw-1S-saF"/>
+                                <constraint firstItem="shS-pl-Cf3" firstAttribute="top" secondItem="WfC-ox-b6Q" secondAttribute="bottom" id="glY-bF-Ldx"/>
+                                <constraint firstItem="6Rd-pm-g94" firstAttribute="leading" secondItem="WfC-ox-b6Q" secondAttribute="trailing" id="gm4-bb-WbA"/>
+                                <constraint firstItem="6Rd-pm-g94" firstAttribute="top" secondItem="4RP-zw-Uj0" secondAttribute="top" id="uuk-rN-2Gl"/>
+                                <constraint firstItem="shS-pl-Cf3" firstAttribute="top" secondItem="RAb-DG-j0h" secondAttribute="bottom" id="wP4-KB-nN0"/>
+                                <constraint firstItem="shS-pl-Cf3" firstAttribute="top" secondItem="6Rd-pm-g94" secondAttribute="bottom" id="wm0-W2-9w2"/>
+                                <constraint firstItem="shS-pl-Cf3" firstAttribute="leading" secondItem="4RP-zw-Uj0" secondAttribute="leading" id="x7x-X3-zo8"/>
+                            </constraints>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" red="0.96078431372549022" green="0.96470588235294119" blue="0.97254901960784312" alpha="1" colorSpace="calibratedRGB"/>
+                    <constraints>
+                        <constraint firstItem="4RP-zw-Uj0" firstAttribute="top" secondItem="zuP-cL-hVb" secondAttribute="top" constant="16" id="9Qc-U1-GVp"/>
+                        <constraint firstAttribute="trailing" secondItem="4RP-zw-Uj0" secondAttribute="trailing" constant="16" id="AVt-aq-Auw"/>
+                        <constraint firstAttribute="bottom" secondItem="4RP-zw-Uj0" secondAttribute="bottom" constant="16" id="Arw-YT-sgP"/>
+                        <constraint firstItem="4RP-zw-Uj0" firstAttribute="leading" secondItem="zuP-cL-hVb" secondAttribute="leading" constant="16" id="MwN-K8-Vnt"/>
+                    </constraints>
+                </view>
+                <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="iRO-7E-qJ4">
+                    <rect key="frame" x="0.0" y="0.0" width="736" height="414"/>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <connections>
+                        <action selector="imageBigActiondo:" destination="-1" eventType="touchUpInside" id="AMv-6N-GUf"/>
+                    </connections>
+                </button>
+            </subviews>
+            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="iRO-7E-qJ4" secondAttribute="bottom" id="0oA-38-cqL"/>
+                <constraint firstItem="iRO-7E-qJ4" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="Cbb-44-6pR"/>
+                <constraint firstAttribute="trailing" secondItem="zuP-cL-hVb" secondAttribute="trailing" constant="20" id="Szi-IN-IeB"/>
+                <constraint firstItem="iRO-7E-qJ4" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="bnw-Cx-kJU"/>
+                <constraint firstAttribute="trailing" secondItem="iRO-7E-qJ4" secondAttribute="trailing" id="hrG-xS-axa"/>
+                <constraint firstAttribute="bottom" secondItem="zuP-cL-hVb" secondAttribute="bottom" id="jxj-Nt-VcA"/>
+                <constraint firstItem="zuP-cL-hVb" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="20" id="xhV-1w-hRv"/>
+                <constraint firstItem="zuP-cL-hVb" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="yko-oH-4ST"/>
+            </constraints>
+            <point key="canvasLocation" x="123.91304347826087" y="-13.043478260869566"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="defaultUserIcon" width="50" height="50"/>
+        <image name="zfplayer_back" width="36" height="36"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 43 - 0
jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationTipsViewController.h

@@ -0,0 +1,43 @@
+//
+//  NYExaminationTipsViewController.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/11/5.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYExaminationTipsViewController : UIViewController
+
+@property (weak, nonatomic) IBOutlet UILabel *title_label;
+
+@property (weak, nonatomic) IBOutlet UIView *t0_View;
+
+@property (weak, nonatomic) IBOutlet UILabel *t0_jq_label;
+
+@property (weak, nonatomic) IBOutlet UILabel *t0_answer_label;
+
+@property (weak, nonatomic) IBOutlet UIButton *t0_close_btn;
+
+
+@property (weak, nonatomic) IBOutlet UIView *t1_View;
+
+@property (weak, nonatomic) IBOutlet UILabel *t1_centont_label;
+
+@property (weak, nonatomic) IBOutlet UIButton *t1_submit_btn;
+@property (weak, nonatomic) IBOutlet UIButton *t1_jxks_btn;
+
+@property (weak, nonatomic) IBOutlet UIView *t2_View;
+
+@property (weak, nonatomic) IBOutlet UILabel *t2_centont_label;
+
+@property (weak, nonatomic) IBOutlet UIButton *t2_close_btn;
+
+-(void)showTypeTipsView:(int)type invView:(UIView*)view inModel:(RQExerciseModel*)model;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 134 - 0
jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationTipsViewController.m

@@ -0,0 +1,134 @@
+//
+//  NYExaminationTipsViewController.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/11/5.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "NYExaminationTipsViewController.h"
+
+@interface NYExaminationTipsViewController ()
+@property (nonatomic, readwrite, strong) RQYDTJSModel *ydtJSModel;
+@property (nonatomic, assign) int type;
+@end
+
+@implementation NYExaminationTipsViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view from its nib.
+    self.view.layer.backgroundColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.5].CGColor;
+}
+
+- (void)viewWillAppear:(BOOL)animated {
+    [super viewWillAppear:animated];
+
+    [self.navigationController.navigationBar setHidden:YES];
+}
+
+- (void)enterLandscapeFullScreen:(UIInterfaceOrientation)orientation animated:(BOOL)animated {
+    [[UIDevice currentDevice] setValue:[NSNumber numberWithInt:UIInterfaceOrientationUnknown] forKey:@"orientation"];
+    NSNumber *orientationUnknown = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft];
+    [[UIDevice currentDevice] setValue:orientationUnknown forKey:@"orientation"];
+}
+
+//支持的方向
+- (UIInterfaceOrientationMask)supportedInterfaceOrientations
+{
+    return UIInterfaceOrientationMaskLandscapeLeft|UIInterfaceOrientationMaskLandscapeRight;
+}
+
+- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation
+{
+    return UIInterfaceOrientationPortrait;
+}
+
+//show 函数
+- (void)showTypeTipsView:(int)type invView:(UIView*)view inModel:(RQExerciseModel *)model  {
+    self.type = type;
+    [self.view removeFromSuperview];
+    [view insertSubview:self.view atIndex:999];
+    [self.view mas_remakeConstraints:^(MASConstraintMaker *make) {
+        make.top.left.right.bottom.mas_equalTo(view);
+    }];
+    [self.view setNeedsLayout];
+    [self.view layoutIfNeeded];
+    switch (type) {
+        case 0:{
+            self.ydtJSModel = [RQ_YDT_JS_Question_Module getQuestionJSWithQuestionId:model.ydtQuestionModel.ID];
+            model.ydtQuestionModel.explain = self.ydtJSModel.best_explain_new;//2023.9.25
+            self.t0_View.hidden = NO;
+            self.t1_View.hidden = YES;
+            self.t2_View.hidden = YES;
+            self.title_label.text = @"错题学习";
+            NSDictionary *dicts = @{
+                @"1":@"A",
+                @"2":@"B",
+                @"3":@"C",
+                @"4":@"D",
+                
+                @"12":@"AB",
+                @"13":@"AC",
+                @"14":@"AD",
+                @"23":@"BC",
+                @"24":@"BD",
+                @"34":@"CD",
+                
+                @"123":@"ABC",
+                @"124":@"ABD",
+                @"134":@"ACD",
+                @"234":@"BCD",
+                
+                @"1234":@"ABCD",
+            };
+            
+            self.t0_answer_label.text = [NSString stringWithFormat:@"正确答案:%@   您的答案:%@", dicts[model.ydtQuestionModel.AnswerTrue],model.userAnswerStr];
+            self.t0_jq_label.text = model.ydtQuestionModel.explain;
+        }break;
+        case 1:{
+            self.t0_View.hidden = YES;
+            self.t1_View.hidden = NO;
+            self.t2_View.hidden = YES;
+            self.title_label.text = @"考试确认窗口";
+        }break;
+        case 2:{
+            self.title_label.text = @"信息提示";
+            self.t0_View.hidden = YES;
+            self.t1_View.hidden = YES;
+            self.t2_View.hidden = NO;
+        }break;
+        default:{
+            self.t1_centont_label.text = [NSString stringWithFormat:@"你当前考试答对0题,答错0题,未答100题"];
+            self.t0_View.hidden = YES;
+            self.t1_View.hidden = YES;
+            self.t2_View.hidden = YES;
+        }break;
+    }
+    
+}
+
+//关闭
+- (IBAction)closeActiondo:(UIButton *)sender {
+    if(self.type==2){//交卷-退出
+        [RQNotificationCenter postNotificationName:NYExerciseOptionDTNotification object:@"3"];
+    }
+    [self.view removeFromSuperview];
+    [self.view setNeedsLayout];
+    [self.view layoutIfNeeded];
+}
+
+//确认交卷
+- (IBAction)submitActiondo:(UIButton *)sender {
+    [RQNotificationCenter postNotificationName:NYExerciseOptionDTNotification object:@"2"];
+}
+
+
+//继续考试
+- (IBAction)continueActiondo:(UIButton *)sender {
+    [self closeActiondo:sender];
+}
+
+
+
+@end

+ 316 - 0
jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationTipsViewController.xib

@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina5_5" orientation="landscape" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="NYExaminationTipsViewController">
+            <connections>
+                <outlet property="t0_View" destination="fwq-cB-rzB" id="QSV-nf-T2h"/>
+                <outlet property="t0_answer_label" destination="z4z-Kj-1BH" id="fQb-3T-eCk"/>
+                <outlet property="t0_close_btn" destination="FmO-Ob-IyW" id="Nd9-wV-v5k"/>
+                <outlet property="t0_jq_label" destination="pST-gF-kiq" id="h4Q-GE-OWj"/>
+                <outlet property="t1_View" destination="ViY-Ta-Mcb" id="9j6-cu-tyg"/>
+                <outlet property="t1_centont_label" destination="tf6-6e-xJV" id="gvE-yy-FFk"/>
+                <outlet property="t1_jxks_btn" destination="lqT-Gs-Xgc" id="LlG-vk-0qp"/>
+                <outlet property="t1_submit_btn" destination="nCG-ZR-bHa" id="bHe-ex-HQX"/>
+                <outlet property="t2_View" destination="gXH-tV-XV4" id="7O0-XV-Jja"/>
+                <outlet property="t2_centont_label" destination="PT7-B1-YY2" id="nDG-gI-bn1"/>
+                <outlet property="t2_close_btn" destination="00p-Vm-zKS" id="KLe-aJ-hcs"/>
+                <outlet property="title_label" destination="hYF-rl-Cfz" id="NDn-E6-ex9"/>
+                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
+            <rect key="frame" x="0.0" y="0.0" width="736" height="414"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yn1-xh-zbU" userLabel="View-tips">
+                    <rect key="frame" x="180" y="80" width="376" height="254"/>
+                    <subviews>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="提示" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hYF-rl-Cfz">
+                            <rect key="frame" x="0.0" y="10" width="376" height="20"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="20" id="ILv-D6-SyT"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fwq-cB-rzB" userLabel="View-t0">
+                            <rect key="frame" x="0.0" y="40" width="376" height="214"/>
+                            <subviews>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kfA-lj-axT" userLabel="View-centont">
+                                    <rect key="frame" x="10" y="10" width="356" height="124"/>
+                                    <subviews>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案我是答案" textAlignment="justified" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pST-gF-kiq">
+                                            <rect key="frame" x="5" y="5" width="346" height="114"/>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.23921568627450979" green="0.23529411764705882" blue="0.2196078431372549" alpha="1" colorSpace="calibratedRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                    </subviews>
+                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                    <constraints>
+                                        <constraint firstItem="pST-gF-kiq" firstAttribute="top" secondItem="kfA-lj-axT" secondAttribute="top" constant="5" id="AmA-BI-3xm"/>
+                                        <constraint firstItem="pST-gF-kiq" firstAttribute="leading" secondItem="kfA-lj-axT" secondAttribute="leading" constant="5" id="Rc4-yp-OOG"/>
+                                        <constraint firstAttribute="bottom" secondItem="pST-gF-kiq" secondAttribute="bottom" constant="5" id="p49-aM-bn2"/>
+                                        <constraint firstAttribute="trailing" secondItem="pST-gF-kiq" secondAttribute="trailing" constant="5" id="yAu-YT-fbS"/>
+                                    </constraints>
+                                </view>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FmO-Ob-IyW">
+                                    <rect key="frame" x="128" y="164" width="120" height="40"/>
+                                    <color key="backgroundColor" red="0.96078431372549022" green="0.96470588235294119" blue="0.97254901960784312" alpha="1" colorSpace="calibratedRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="40" id="h0Z-su-ECo"/>
+                                        <constraint firstAttribute="width" constant="120" id="izN-iQ-LkP"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                    <state key="normal" title="关闭">
+                                        <color key="titleColor" red="0.23921568627450979" green="0.23529411764705882" blue="0.2196078431372549" alpha="1" colorSpace="calibratedRGB"/>
+                                    </state>
+                                    <connections>
+                                        <action selector="closeActiondo:" destination="-1" eventType="touchUpInside" id="pwg-Rd-TX9"/>
+                                    </connections>
+                                </button>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="正确答案:A   您的答案:B" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="z4z-Kj-1BH">
+                                    <rect key="frame" x="10" y="139" width="356" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="d57-nL-Fqm"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.96078431369999995" green="0.96470588239999999" blue="0.97254901959999995" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstItem="kfA-lj-axT" firstAttribute="top" secondItem="fwq-cB-rzB" secondAttribute="top" constant="10" id="3nO-88-yKl"/>
+                                <constraint firstItem="FmO-Ob-IyW" firstAttribute="top" secondItem="kfA-lj-axT" secondAttribute="bottom" constant="30" id="AvK-mf-ikp"/>
+                                <constraint firstItem="kfA-lj-axT" firstAttribute="leading" secondItem="fwq-cB-rzB" secondAttribute="leading" constant="10" id="ITD-mU-av7"/>
+                                <constraint firstAttribute="trailing" secondItem="z4z-Kj-1BH" secondAttribute="trailing" constant="10" id="IUK-TL-GgR"/>
+                                <constraint firstAttribute="bottom" secondItem="FmO-Ob-IyW" secondAttribute="bottom" constant="10" id="etn-qo-LXh"/>
+                                <constraint firstItem="z4z-Kj-1BH" firstAttribute="top" secondItem="kfA-lj-axT" secondAttribute="bottom" constant="5" id="m0H-I2-eHg"/>
+                                <constraint firstItem="z4z-Kj-1BH" firstAttribute="leading" secondItem="fwq-cB-rzB" secondAttribute="leading" constant="10" id="pc9-gJ-KmV"/>
+                                <constraint firstAttribute="trailing" secondItem="kfA-lj-axT" secondAttribute="trailing" constant="10" id="y1m-I8-O8Y"/>
+                                <constraint firstItem="FmO-Ob-IyW" firstAttribute="centerX" secondItem="fwq-cB-rzB" secondAttribute="centerX" id="z7I-Pa-Sy6"/>
+                            </constraints>
+                        </view>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ViY-Ta-Mcb" userLabel="View-t1">
+                            <rect key="frame" x="0.0" y="35" width="376" height="219"/>
+                            <subviews>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eE4-ky-BqY" userLabel="View-centont">
+                                    <rect key="frame" x="15" y="10" width="346" height="139"/>
+                                    <subviews>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="操作提示:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YDv-xX-hm4">
+                                            <rect key="frame" x="20" y="10" width="150" height="18"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="18" id="qHM-WH-UNI"/>
+                                                <constraint firstAttribute="width" constant="150" id="sAc-Pw-HeS"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.23921568627450979" green="0.23529411764705882" blue="0.2196078431372549" alpha="1" colorSpace="calibratedRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="你当前考试答对0题,答错0题,未答100题" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tf6-6e-xJV">
+                                            <rect key="frame" x="20" y="38" width="350" height="18"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="18" id="6By-4C-BfR"/>
+                                                <constraint firstAttribute="width" constant="350" id="R1k-II-Jmv"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1.点击【确认交卷】,将提交考试成绩,考试结束!" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3Re-56-jy4">
+                                            <rect key="frame" x="20" y="64" width="350" height="18"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="18" id="NmP-Yi-W4D"/>
+                                                <constraint firstAttribute="width" constant="350" id="ope-Vg-AsD"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2.点击【继续考试】,将关闭本窗口,继续考试!" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ssd-lN-Ei9">
+                                            <rect key="frame" x="20" y="92" width="300" height="18"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="18" id="GmP-yQ-8BM"/>
+                                                <constraint firstAttribute="width" constant="300" id="lON-ZE-0WA"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                    </subviews>
+                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                    <constraints>
+                                        <constraint firstItem="ssd-lN-Ei9" firstAttribute="leading" secondItem="eE4-ky-BqY" secondAttribute="leading" constant="20" id="01t-xI-30O"/>
+                                        <constraint firstItem="YDv-xX-hm4" firstAttribute="top" secondItem="eE4-ky-BqY" secondAttribute="top" constant="10" id="Mzj-EU-2RA"/>
+                                        <constraint firstItem="tf6-6e-xJV" firstAttribute="top" secondItem="YDv-xX-hm4" secondAttribute="bottom" constant="10" id="RhL-O0-5vN"/>
+                                        <constraint firstItem="3Re-56-jy4" firstAttribute="top" secondItem="tf6-6e-xJV" secondAttribute="bottom" constant="8" symbolic="YES" id="X5y-Ij-Cps"/>
+                                        <constraint firstItem="ssd-lN-Ei9" firstAttribute="top" secondItem="3Re-56-jy4" secondAttribute="bottom" constant="10" id="awy-Wi-j1s"/>
+                                        <constraint firstItem="3Re-56-jy4" firstAttribute="leading" secondItem="eE4-ky-BqY" secondAttribute="leading" constant="20" id="f9K-7i-37Y"/>
+                                        <constraint firstItem="tf6-6e-xJV" firstAttribute="leading" secondItem="eE4-ky-BqY" secondAttribute="leading" constant="20" id="i9w-Is-NlG"/>
+                                        <constraint firstItem="YDv-xX-hm4" firstAttribute="leading" secondItem="eE4-ky-BqY" secondAttribute="leading" constant="20" id="oqJ-xl-xEX"/>
+                                    </constraints>
+                                </view>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="nCG-ZR-bHa">
+                                    <rect key="frame" x="52.666666666666657" y="164" width="120" height="40"/>
+                                    <color key="backgroundColor" red="0.96078431369999995" green="0.96470588239999999" blue="0.97254901959999995" alpha="1" colorSpace="calibratedRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="40" id="H6M-ek-3hi"/>
+                                        <constraint firstAttribute="width" constant="120" id="TwF-RU-Wes"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" 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" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    </state>
+                                    <connections>
+                                        <action selector="submitActiondo:" destination="-1" eventType="touchUpInside" id="vZ1-SA-nLa"/>
+                                    </connections>
+                                </button>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dqD-EL-WWk">
+                                    <rect key="frame" x="187.66666666666669" y="169" width="1" height="40"/>
+                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="40" id="6bB-vT-RHz"/>
+                                        <constraint firstAttribute="width" constant="1" id="ZA9-Xx-xqC"/>
+                                    </constraints>
+                                </view>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lqT-Gs-Xgc">
+                                    <rect key="frame" x="203.66666666666669" y="164" width="120" height="40"/>
+                                    <color key="backgroundColor" red="0.96078431369999995" green="0.96470588239999999" blue="0.97254901959999995" alpha="1" colorSpace="calibratedRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="40" id="7hn-uF-D5s"/>
+                                        <constraint firstAttribute="width" constant="120" id="W8M-Oc-lBv"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" 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" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    </state>
+                                    <connections>
+                                        <action selector="continueActiondo:" destination="-1" eventType="touchUpInside" id="oUa-Xa-sRa"/>
+                                    </connections>
+                                </button>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstItem="dqD-EL-WWk" firstAttribute="centerX" secondItem="ViY-Ta-Mcb" secondAttribute="centerX" id="0SN-P9-njb"/>
+                                <constraint firstItem="dqD-EL-WWk" firstAttribute="leading" secondItem="nCG-ZR-bHa" secondAttribute="trailing" constant="15" id="KJ0-XZ-V7B"/>
+                                <constraint firstItem="eE4-ky-BqY" firstAttribute="leading" secondItem="ViY-Ta-Mcb" secondAttribute="leading" constant="15" id="LTX-UW-vSv"/>
+                                <constraint firstItem="nCG-ZR-bHa" firstAttribute="top" secondItem="eE4-ky-BqY" secondAttribute="bottom" constant="15" id="e41-kG-j6M"/>
+                                <constraint firstAttribute="bottom" secondItem="dqD-EL-WWk" secondAttribute="bottom" constant="10" id="gyD-e8-J8H"/>
+                                <constraint firstAttribute="trailing" secondItem="eE4-ky-BqY" secondAttribute="trailing" constant="15" id="iPs-6P-ruV"/>
+                                <constraint firstItem="eE4-ky-BqY" firstAttribute="top" secondItem="ViY-Ta-Mcb" secondAttribute="top" constant="10" id="kdR-EV-bSc"/>
+                                <constraint firstAttribute="bottom" secondItem="nCG-ZR-bHa" secondAttribute="bottom" constant="15" id="lX9-dN-5br"/>
+                                <constraint firstItem="lqT-Gs-Xgc" firstAttribute="leading" secondItem="dqD-EL-WWk" secondAttribute="trailing" constant="15" id="qzE-BW-kdg"/>
+                                <constraint firstAttribute="bottom" secondItem="lqT-Gs-Xgc" secondAttribute="bottom" constant="15" id="xV1-TG-XIb"/>
+                            </constraints>
+                        </view>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gXH-tV-XV4" userLabel="View-t2">
+                            <rect key="frame" x="0.0" y="40" width="376" height="214"/>
+                            <subviews>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="K1A-N4-ppI" userLabel="View-centont">
+                                    <rect key="frame" x="15" y="15" width="346" height="129"/>
+                                    <subviews>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="亲爱的考生" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fuP-GH-uU7">
+                                            <rect key="frame" x="20" y="20" width="150" height="22"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="22" id="S4e-2Z-8A8"/>
+                                                <constraint firstAttribute="width" constant="150" id="wFg-d5-BE8"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PT7-B1-YY2">
+                                            <rect key="frame" x="20" y="52" width="306" height="33.666666666666657"/>
+                                            <string key="text">您本次模拟考试得0分。不及格!祝你下次
+考试成功!</string>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                    </subviews>
+                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                    <constraints>
+                                        <constraint firstItem="PT7-B1-YY2" firstAttribute="leading" secondItem="K1A-N4-ppI" secondAttribute="leading" constant="20" id="3o8-QL-szP"/>
+                                        <constraint firstItem="fuP-GH-uU7" firstAttribute="leading" secondItem="K1A-N4-ppI" secondAttribute="leading" constant="20" id="V6R-0x-TaF"/>
+                                        <constraint firstItem="PT7-B1-YY2" firstAttribute="top" secondItem="fuP-GH-uU7" secondAttribute="bottom" constant="10" id="Z4o-Qo-DO2"/>
+                                        <constraint firstAttribute="trailing" secondItem="PT7-B1-YY2" secondAttribute="trailing" constant="20" id="eEA-Xt-tcF"/>
+                                        <constraint firstItem="fuP-GH-uU7" firstAttribute="top" secondItem="K1A-N4-ppI" secondAttribute="top" constant="20" id="g4y-0t-HP6"/>
+                                    </constraints>
+                                </view>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="00p-Vm-zKS">
+                                    <rect key="frame" x="128" y="159" width="120" height="40"/>
+                                    <color key="backgroundColor" red="0.96078431369999995" green="0.96470588239999999" blue="0.97254901959999995" alpha="1" colorSpace="calibratedRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="40" id="x65-UD-IDD"/>
+                                        <constraint firstAttribute="width" constant="120" id="xSs-dl-L3U"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                    <state key="normal" title="关闭">
+                                        <color key="titleColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    </state>
+                                    <connections>
+                                        <action selector="closeActiondo:" destination="-1" eventType="touchUpInside" id="niS-7A-93Z"/>
+                                    </connections>
+                                </button>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstItem="00p-Vm-zKS" firstAttribute="top" secondItem="K1A-N4-ppI" secondAttribute="bottom" constant="15" id="BRV-zO-MzO"/>
+                                <constraint firstItem="K1A-N4-ppI" firstAttribute="leading" secondItem="gXH-tV-XV4" secondAttribute="leading" constant="15" id="FZc-aH-mVv"/>
+                                <constraint firstItem="00p-Vm-zKS" firstAttribute="centerX" secondItem="gXH-tV-XV4" secondAttribute="centerX" id="MYb-lN-RqQ"/>
+                                <constraint firstAttribute="trailing" secondItem="K1A-N4-ppI" secondAttribute="trailing" constant="15" id="YmG-LD-vFE"/>
+                                <constraint firstItem="K1A-N4-ppI" firstAttribute="top" secondItem="gXH-tV-XV4" secondAttribute="top" constant="15" id="Z7b-f0-htc"/>
+                                <constraint firstAttribute="bottom" secondItem="00p-Vm-zKS" secondAttribute="bottom" constant="15" id="rI4-NB-QHW"/>
+                            </constraints>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" red="0.18823529411764706" green="0.41568627450980389" blue="0.80784313725490198" alpha="1" colorSpace="calibratedRGB"/>
+                    <constraints>
+                        <constraint firstAttribute="trailing" secondItem="gXH-tV-XV4" secondAttribute="trailing" id="0U3-yp-l9Z"/>
+                        <constraint firstItem="fwq-cB-rzB" firstAttribute="leading" secondItem="yn1-xh-zbU" secondAttribute="leading" id="1bK-Uv-YpN"/>
+                        <constraint firstAttribute="trailing" secondItem="hYF-rl-Cfz" secondAttribute="trailing" id="CrB-nf-Odn"/>
+                        <constraint firstItem="gXH-tV-XV4" firstAttribute="leading" secondItem="yn1-xh-zbU" secondAttribute="leading" id="DO8-8f-nEd"/>
+                        <constraint firstAttribute="bottom" secondItem="fwq-cB-rzB" secondAttribute="bottom" id="Dbl-c1-Ptu"/>
+                        <constraint firstItem="fwq-cB-rzB" firstAttribute="top" secondItem="hYF-rl-Cfz" secondAttribute="bottom" constant="10" id="HkU-4G-w7h"/>
+                        <constraint firstItem="hYF-rl-Cfz" firstAttribute="top" secondItem="yn1-xh-zbU" secondAttribute="top" constant="10" id="I4z-0S-hAV"/>
+                        <constraint firstItem="gXH-tV-XV4" firstAttribute="top" secondItem="hYF-rl-Cfz" secondAttribute="bottom" constant="10" id="OYq-iI-J0a"/>
+                        <constraint firstAttribute="bottom" secondItem="gXH-tV-XV4" secondAttribute="bottom" id="Vff-dp-4Xz"/>
+                        <constraint firstItem="hYF-rl-Cfz" firstAttribute="leading" secondItem="yn1-xh-zbU" secondAttribute="leading" id="aRq-2f-WFb"/>
+                        <constraint firstItem="ViY-Ta-Mcb" firstAttribute="leading" secondItem="yn1-xh-zbU" secondAttribute="leading" id="i3f-nw-s15"/>
+                        <constraint firstAttribute="bottom" secondItem="ViY-Ta-Mcb" secondAttribute="bottom" id="lDz-KG-KxX"/>
+                        <constraint firstItem="ViY-Ta-Mcb" firstAttribute="top" secondItem="hYF-rl-Cfz" secondAttribute="bottom" constant="5" id="lZ0-Hq-snA"/>
+                        <constraint firstAttribute="trailing" secondItem="ViY-Ta-Mcb" secondAttribute="trailing" id="mjN-cH-Tii"/>
+                        <constraint firstAttribute="trailing" secondItem="fwq-cB-rzB" secondAttribute="trailing" id="rHa-Ki-Bnv"/>
+                    </constraints>
+                </view>
+            </subviews>
+            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+            <constraints>
+                <constraint firstItem="yn1-xh-zbU" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="180" id="F6B-ps-sX0"/>
+                <constraint firstAttribute="trailing" secondItem="yn1-xh-zbU" secondAttribute="trailing" constant="180" id="JU3-Hb-okR"/>
+                <constraint firstItem="yn1-xh-zbU" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="80" id="bS8-WS-x9q"/>
+                <constraint firstAttribute="bottom" secondItem="yn1-xh-zbU" secondAttribute="bottom" constant="80" id="hUG-Ti-PNo"/>
+            </constraints>
+            <point key="canvasLocation" x="-48.097826086956523" y="-13.043478260869566"/>
+        </view>
+    </objects>
+    <resources>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 17 - 0
jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationViewController.h

@@ -0,0 +1,17 @@
+//
+//  NYExaminationViewController.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/14.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYExaminationViewController : RQBaseViewController
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 95 - 0
jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationViewController.m

@@ -0,0 +1,95 @@
+//
+//  NYExaminationViewController.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/14.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "NYExaminationViewController.h"
+
+@interface NYExaminationViewController ()
+
+@property (weak, nonatomic) IBOutlet UIView *view01;
+
+@property (weak, nonatomic) IBOutlet UIButton *back_btn;
+
+@property (weak, nonatomic) IBOutlet UIImageView *top_imageView;
+
+@property (weak, nonatomic) IBOutlet UIView *content_view;
+
+@property (weak, nonatomic) IBOutlet UILabel *id_card_label;
+
+@property (weak, nonatomic) IBOutlet UILabel *username_label;
+
+@property (weak, nonatomic) IBOutlet UIButton *submit_btn;
+
+
+@end
+
+@implementation NYExaminationViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view from its nib.
+    
+    NYExaminationViewModel *model = self.viewModel;
+    self.top_imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"examination_km%d",model.km]];
+    self.id_card_label.text = RQ_USER_MANAGER.currentUser.loginCode;
+    self.username_label.text = RQ_USER_MANAGER.currentUser.userName;
+    self.content_view.layer.borderWidth = 1.0f;
+    self.content_view.layer.borderColor = UIColorHex(0xD9D9D9).CGColor;
+    self.submit_btn.layer.borderWidth = 1.0f;
+    self.submit_btn.layer.borderColor = UIColorHex(0xA1A2A4).CGColor;
+    [self enterLandscapeFullScreen:UIInterfaceOrientationLandscapeLeft animated:YES];
+    [self.view01 setNeedsLayout];
+    [self.view01 layoutIfNeeded];
+    
+}
+
+- (void)viewWillAppear:(BOOL)animated {
+    [super viewWillAppear:animated];
+
+    [self.navigationController.navigationBar setHidden:YES];
+}
+
+- (IBAction)submitActionClickdo:(UIButton *)sender {
+    NYExaminationRoomViewModel *examinationroomViewModel = [[NYExaminationRoomViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
+    [RQ_APPDELEGATE.services pushViewModel:examinationroomViewModel animated:YES];
+}
+
+
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+- (IBAction)backAtciondo:(id)sender {
+    [self.navigationController.navigationBar setHidden:NO];
+    [self.navigationController popViewControllerAnimated:YES];
+}
+
+
+- (void)enterLandscapeFullScreen:(UIInterfaceOrientation)orientation animated:(BOOL)animated {
+    [[UIDevice currentDevice] setValue:[NSNumber numberWithInt:UIInterfaceOrientationUnknown] forKey:@"orientation"];
+    NSNumber *orientationUnknown = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft];
+    [[UIDevice currentDevice] setValue:orientationUnknown forKey:@"orientation"];
+}
+
+//支持的方向
+- (UIInterfaceOrientationMask)supportedInterfaceOrientations
+{
+    return UIInterfaceOrientationMaskLandscapeLeft|UIInterfaceOrientationMaskLandscapeRight;
+}
+
+- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation
+{
+    return UIInterfaceOrientationPortrait;
+}
+
+@end

+ 352 - 0
jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationViewController.xib

@@ -0,0 +1,352 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina5_5" orientation="landscape" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="NYExaminationViewController">
+            <connections>
+                <outlet property="back_btn" destination="T9g-CM-bnB" id="y1V-X9-yq4"/>
+                <outlet property="content_view" destination="hzi-vI-QgG" id="Rli-My-FUy"/>
+                <outlet property="id_card_label" destination="r5I-uh-iaQ" id="9Uc-ie-tUT"/>
+                <outlet property="submit_btn" destination="Q3x-lP-ztI" id="WoD-bC-3yd"/>
+                <outlet property="top_imageView" destination="5MF-Sw-nKu" id="6Lq-ii-FiZ"/>
+                <outlet property="username_label" destination="YhI-G8-4dD" id="ngw-Wf-384"/>
+                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
+                <outlet property="view01" destination="inv-VC-ytd" id="vDb-Pi-kfa"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
+            <rect key="frame" x="0.0" y="0.0" width="736" height="414"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="inv-VC-ytd" userLabel="View-bp6">
+                    <rect key="frame" x="0.0" y="0.0" width="736" height="414"/>
+                    <subviews>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jEi-pQ-wRS" userLabel="View-top">
+                            <rect key="frame" x="20" y="0.0" width="696" height="85"/>
+                            <subviews>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="examination_km1" translatesAutoresizingMaskIntoConstraints="NO" id="5MF-Sw-nKu">
+                                    <rect key="frame" x="0.0" y="14" width="696" height="57"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="57" id="iI9-Ue-XeN"/>
+                                    </constraints>
+                                </imageView>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sub of a Driver Training System" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="av4-ow-9Dh">
+                                    <rect key="frame" x="0.0" y="0.0" width="150" height="14"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="150" id="8St-ja-DfN"/>
+                                        <constraint firstAttribute="height" constant="14" id="MQJ-5o-iOP"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="8"/>
+                                    <color key="textColor" red="0.66274509803921566" green="0.66274509803921566" blue="0.63137254901960782" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sub of a Driver Training System" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RZg-Jz-tdU">
+                                    <rect key="frame" x="571" y="71" width="125" height="14"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="14" id="yZA-rS-LAO"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="8"/>
+                                    <color key="textColor" red="0.66274509800000003" green="0.66274509800000003" blue="0.63137254899999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gJL-uc-EzP" userLabel="View-line">
+                                    <rect key="frame" x="0.0" y="84" width="696" height="1"/>
+                                    <color key="backgroundColor" red="0.84705882352941175" green="0.84313725490196079" blue="0.82745098039215681" alpha="1" colorSpace="calibratedRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="1" id="KM7-ln-8bN"/>
+                                    </constraints>
+                                </view>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="T9g-CM-bnB">
+                                    <rect key="frame" x="14" y="27.666666666666671" width="30" height="30"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="30" id="D95-zx-7y3"/>
+                                        <constraint firstAttribute="width" constant="30" id="KGw-p1-0UZ"/>
+                                    </constraints>
+                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                    <state key="normal" image="zfplayer_back"/>
+                                    <connections>
+                                        <action selector="backAtciondo:" destination="-1" eventType="touchUpInside" id="bn0-hc-Yjn"/>
+                                    </connections>
+                                </button>
+                            </subviews>
+                            <color key="backgroundColor" red="0.95294117647058818" green="0.95686274509803915" blue="0.97254901960784312" alpha="1" colorSpace="calibratedRGB"/>
+                            <constraints>
+                                <constraint firstItem="T9g-CM-bnB" firstAttribute="leading" secondItem="jEi-pQ-wRS" secondAttribute="leading" constant="14" id="3Z4-Rc-yFB"/>
+                                <constraint firstItem="av4-ow-9Dh" firstAttribute="leading" secondItem="jEi-pQ-wRS" secondAttribute="leading" id="7LA-Ox-DfA"/>
+                                <constraint firstItem="gJL-uc-EzP" firstAttribute="leading" secondItem="jEi-pQ-wRS" secondAttribute="leading" id="IOm-Ww-mMj"/>
+                                <constraint firstAttribute="bottom" secondItem="gJL-uc-EzP" secondAttribute="bottom" id="IrQ-ja-cua"/>
+                                <constraint firstAttribute="height" constant="85" id="JeB-wB-S3T"/>
+                                <constraint firstItem="T9g-CM-bnB" firstAttribute="centerY" secondItem="jEi-pQ-wRS" secondAttribute="centerY" id="Jlk-mx-O3N"/>
+                                <constraint firstAttribute="trailing" secondItem="5MF-Sw-nKu" secondAttribute="trailing" id="K2E-KS-CCk"/>
+                                <constraint firstItem="av4-ow-9Dh" firstAttribute="top" secondItem="jEi-pQ-wRS" secondAttribute="top" id="Uv4-JS-1cF"/>
+                                <constraint firstItem="5MF-Sw-nKu" firstAttribute="leading" secondItem="jEi-pQ-wRS" secondAttribute="leading" id="YNA-UG-c7D"/>
+                                <constraint firstItem="5MF-Sw-nKu" firstAttribute="top" secondItem="av4-ow-9Dh" secondAttribute="bottom" id="ahT-ub-DPq"/>
+                                <constraint firstAttribute="trailing" secondItem="RZg-Jz-tdU" secondAttribute="trailing" id="g4i-B6-TxV"/>
+                                <constraint firstAttribute="trailing" secondItem="gJL-uc-EzP" secondAttribute="trailing" id="kVh-pc-avU"/>
+                                <constraint firstItem="RZg-Jz-tdU" firstAttribute="top" secondItem="5MF-Sw-nKu" secondAttribute="bottom" id="qHt-K3-akx"/>
+                            </constraints>
+                        </view>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hzi-vI-QgG" userLabel="View-content">
+                            <rect key="frame" x="20" y="102" width="696" height="297"/>
+                            <subviews>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="S1f-gl-Gu6" userLabel="View-line">
+                                    <rect key="frame" x="347.66666666666669" y="0.0" width="1" height="297"/>
+                                    <color key="backgroundColor" red="0.91764705882352937" green="0.92156862745098034" blue="0.92941176470588238" alpha="1" colorSpace="calibratedRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="1" id="au9-ZV-H2C"/>
+                                    </constraints>
+                                </view>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="考试须知:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KHH-BP-piu">
+                                    <rect key="frame" x="22" y="14" width="120" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="Y9a-YL-NJN"/>
+                                        <constraint firstAttribute="width" constant="120" id="etB-Wl-cRp"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+                                    <color key="textColor" red="0.23921568627450979" green="0.23529411764705882" blue="0.2196078431372549" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="驾考理论考试01号考台:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LsH-Ev-1u1">
+                                    <rect key="frame" x="364.66666666666669" y="16" width="230.00000000000006" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="ZNb-FJ-hFJ"/>
+                                        <constraint firstAttribute="width" constant="230" id="mqd-2m-RY5"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+                                    <color key="textColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    <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="zPV-9j-NZv">
+                                    <rect key="frame" x="364.66666666666669" y="49" width="75" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="jvV-oA-hbC"/>
+                                        <constraint firstAttribute="width" constant="75" id="yOI-Cz-1e2"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/>
+                                    <color key="textColor" red="0.72941176470588232" green="0.18431372549019609" blue="0.20784313725490194" alpha="1" colorSpace="calibratedRGB"/>
+                                    <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="KbE-ur-GOs">
+                                    <rect key="frame" x="364.66666666666669" y="77" width="75" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="USF-Xy-AA3"/>
+                                        <constraint firstAttribute="width" constant="75" id="klH-Cy-Ch4"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/>
+                                    <color key="textColor" red="0.72941176470588232" green="0.18431372549019609" blue="0.20784313725490194" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Q3x-lP-ztI">
+                                    <rect key="frame" x="462.33333333333326" y="114" width="120" height="30"/>
+                                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="30" id="RWB-C0-pDm"/>
+                                        <constraint firstAttribute="width" constant="120" id="iXb-Jk-Vya"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                    <state key="normal" title="确认">
+                                        <color key="titleColor" red="0.2196078431372549" green="0.22352941176470587" blue="0.23137254901960785" alpha="1" colorSpace="calibratedRGB"/>
+                                    </state>
+                                    <connections>
+                                        <action selector="submitActionClickdo:" destination="-1" eventType="touchUpInside" id="ueK-jG-usk"/>
+                                    </connections>
+                                </button>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1.遵守考场纪律,服从监考人员指挥。" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5Ic-N6-Tln">
+                                    <rect key="frame" x="22" y="42" width="280" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="L0B-VO-Dod"/>
+                                        <constraint firstAttribute="width" constant="280" id="ZMu-D7-d7j"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                    <color key="textColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2.进入考场、手机关机。禁止抽烟,禁止吃零食。" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1q1-3g-1IA">
+                                    <rect key="frame" x="22" y="70" width="280" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="280" id="gkd-GF-4eo"/>
+                                        <constraint firstAttribute="height" constant="20" id="vLa-bY-LeW"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                    <color key="textColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="3.未经工作人员允许,考生崇止抛意出入考场。" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ShM-7o-6t9">
+                                    <rect key="frame" x="22" y="98" width="280" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="D8e-jB-zo1"/>
+                                        <constraint firstAttribute="width" constant="280" id="wmA-rr-i5S"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                    <color key="textColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="4.考场内禁止大声题哗,禁止随意走动。" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gKE-Su-jSM">
+                                    <rect key="frame" x="22" y="126" width="280" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="OGl-EO-aI1"/>
+                                        <constraint firstAttribute="width" constant="280" id="WTk-o3-Svs"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                    <color key="textColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="5.考试中认真答题,不准交头接耳。" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Blp-ap-oiT">
+                                    <rect key="frame" x="22" y="154" width="280" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="280" id="Bvd-Zf-XHL"/>
+                                        <constraint firstAttribute="height" constant="20" id="KJi-qY-aOB"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                    <color key="textColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="6.考试中不准冒名顶替,不准弄虚作假。" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LTN-9n-ZGk">
+                                    <rect key="frame" x="22" y="180" width="280" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="6if-ca-SHZ"/>
+                                        <constraint firstAttribute="width" constant="280" id="E2r-Ky-NfT"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                    <color key="textColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="7.注意考场卫生,禁止随地吐痰,禁止乱扔纸屑。" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="reg-yv-Zov">
+                                    <rect key="frame" x="22" y="206" width="280" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="280" id="68T-6l-4uC"/>
+                                        <constraint firstAttribute="height" constant="20" id="dlm-hQ-tSc"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                    <color key="textColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="8.爱护公物及考试设备。" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SW8-wO-mYv">
+                                    <rect key="frame" x="22" y="232" width="280" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="280" id="Btr-eK-hkc"/>
+                                        <constraint firstAttribute="height" constant="20" id="KSt-Nt-suA"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                    <color key="textColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <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="CBL-e2-DXG">
+                                    <rect key="frame" x="368.66666666666674" y="220" width="307.33333333333326" height="51"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="51" id="fhJ-Zk-8G2"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                    <color key="textColor" red="0.40000000000000002" green="0.40392156862745099" blue="0.41176470588235292" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12343535133543513" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="r5I-uh-iaQ">
+                                    <rect key="frame" x="445.66666666666669" y="49" width="224.33333333333331" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="Cod-wp-Css"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/>
+                                    <color key="textColor" red="0.72941176470000002" green="0.1843137255" blue="0.20784313730000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    <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="YhI-G8-4dD">
+                                    <rect key="frame" x="445.66666666666669" y="75" width="224.33333333333331" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="3nr-5n-r0G"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/>
+                                    <color key="textColor" red="0.72941176470000002" green="0.1843137255" blue="0.20784313730000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="点击&quot;确认&quot;按钮开始考试" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1YN-ef-DXg">
+                                    <rect key="frame" x="368.66666666666669" y="192" width="280.00000000000006" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="Vi6-Va-ztw"/>
+                                        <constraint firstAttribute="width" constant="280" id="YfL-EH-EAm"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <color key="textColor" red="0.72941176470588232" green="0.18431372549019609" blue="0.20784313725490194" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                            </subviews>
+                            <color key="backgroundColor" red="0.96078431372549022" green="0.96470588235294119" blue="0.97254901960784312" alpha="1" colorSpace="calibratedRGB"/>
+                            <constraints>
+                                <constraint firstItem="zPV-9j-NZv" firstAttribute="leading" secondItem="S1f-gl-Gu6" secondAttribute="trailing" constant="16" id="0AU-TE-5cB"/>
+                                <constraint firstItem="Q3x-lP-ztI" firstAttribute="centerX" secondItem="CBL-e2-DXG" secondAttribute="centerX" id="0Bg-3i-pnS"/>
+                                <constraint firstItem="KbE-ur-GOs" firstAttribute="leading" secondItem="S1f-gl-Gu6" secondAttribute="trailing" constant="16" id="22e-Wg-lbo"/>
+                                <constraint firstItem="gKE-Su-jSM" firstAttribute="top" secondItem="ShM-7o-6t9" secondAttribute="bottom" constant="8" symbolic="YES" id="3Cu-Yf-T5d"/>
+                                <constraint firstItem="KHH-BP-piu" firstAttribute="top" secondItem="hzi-vI-QgG" secondAttribute="top" constant="14" id="5Qu-JL-Sx5"/>
+                                <constraint firstAttribute="trailing" secondItem="CBL-e2-DXG" secondAttribute="trailing" constant="20" id="6J7-rS-5bL"/>
+                                <constraint firstItem="CBL-e2-DXG" firstAttribute="leading" secondItem="S1f-gl-Gu6" secondAttribute="trailing" constant="20" id="7LW-Lr-OV1"/>
+                                <constraint firstItem="LsH-Ev-1u1" firstAttribute="top" secondItem="hzi-vI-QgG" secondAttribute="top" constant="16" id="DdO-6E-lZd"/>
+                                <constraint firstItem="gKE-Su-jSM" firstAttribute="leading" secondItem="hzi-vI-QgG" secondAttribute="leading" constant="22" id="DkS-w5-Dkr"/>
+                                <constraint firstItem="LTN-9n-ZGk" firstAttribute="top" secondItem="Blp-ap-oiT" secondAttribute="bottom" constant="6" id="Goh-m7-x68"/>
+                                <constraint firstItem="1q1-3g-1IA" firstAttribute="top" secondItem="5Ic-N6-Tln" secondAttribute="bottom" constant="8" symbolic="YES" id="IRD-Ok-pQ5"/>
+                                <constraint firstAttribute="trailing" secondItem="YhI-G8-4dD" secondAttribute="trailing" constant="26" id="Jwb-2y-bGw"/>
+                                <constraint firstItem="ShM-7o-6t9" firstAttribute="top" secondItem="1q1-3g-1IA" secondAttribute="bottom" constant="8" symbolic="YES" id="KHh-4o-6BZ"/>
+                                <constraint firstItem="zPV-9j-NZv" firstAttribute="top" secondItem="LsH-Ev-1u1" secondAttribute="bottom" constant="13" id="LKw-I3-jzP"/>
+                                <constraint firstItem="1q1-3g-1IA" firstAttribute="leading" secondItem="hzi-vI-QgG" secondAttribute="leading" constant="22" id="MUK-kM-juk"/>
+                                <constraint firstItem="reg-yv-Zov" firstAttribute="leading" secondItem="hzi-vI-QgG" secondAttribute="leading" constant="22" id="MZy-Qz-OC8"/>
+                                <constraint firstItem="SW8-wO-mYv" firstAttribute="leading" secondItem="hzi-vI-QgG" secondAttribute="leading" constant="22" id="NAH-ea-Ea4"/>
+                                <constraint firstItem="ShM-7o-6t9" firstAttribute="leading" secondItem="hzi-vI-QgG" secondAttribute="leading" constant="22" id="OaJ-T7-qfd"/>
+                                <constraint firstItem="Blp-ap-oiT" firstAttribute="top" secondItem="gKE-Su-jSM" secondAttribute="bottom" constant="8" symbolic="YES" id="Q1n-AM-TmE"/>
+                                <constraint firstItem="r5I-uh-iaQ" firstAttribute="leading" secondItem="zPV-9j-NZv" secondAttribute="trailing" constant="6" id="QyZ-7Z-5JH"/>
+                                <constraint firstItem="LTN-9n-ZGk" firstAttribute="leading" secondItem="hzi-vI-QgG" secondAttribute="leading" constant="22" id="Zaf-0G-CVr"/>
+                                <constraint firstAttribute="bottom" secondItem="S1f-gl-Gu6" secondAttribute="bottom" id="ZkU-ug-FY3"/>
+                                <constraint firstItem="KHH-BP-piu" firstAttribute="leading" secondItem="hzi-vI-QgG" secondAttribute="leading" constant="22" id="aNs-Ep-ECB"/>
+                                <constraint firstItem="1YN-ef-DXg" firstAttribute="leading" secondItem="S1f-gl-Gu6" secondAttribute="trailing" constant="20" id="adT-wD-Hb4"/>
+                                <constraint firstItem="reg-yv-Zov" firstAttribute="top" secondItem="LTN-9n-ZGk" secondAttribute="bottom" constant="6" id="aer-Ri-o5t"/>
+                                <constraint firstItem="5Ic-N6-Tln" firstAttribute="top" secondItem="KHH-BP-piu" secondAttribute="bottom" constant="8" symbolic="YES" id="brb-ch-0VL"/>
+                                <constraint firstItem="S1f-gl-Gu6" firstAttribute="top" secondItem="hzi-vI-QgG" secondAttribute="top" id="fFG-UW-jGH"/>
+                                <constraint firstAttribute="trailing" secondItem="r5I-uh-iaQ" secondAttribute="trailing" constant="26" id="gch-Jp-MCr"/>
+                                <constraint firstAttribute="bottom" secondItem="CBL-e2-DXG" secondAttribute="bottom" constant="26" id="kOW-RH-lkD"/>
+                                <constraint firstItem="r5I-uh-iaQ" firstAttribute="top" secondItem="LsH-Ev-1u1" secondAttribute="bottom" constant="13" id="mK6-Qr-fBb"/>
+                                <constraint firstItem="YhI-G8-4dD" firstAttribute="top" secondItem="r5I-uh-iaQ" secondAttribute="bottom" constant="6" id="mQh-MA-O9v"/>
+                                <constraint firstItem="Blp-ap-oiT" firstAttribute="leading" secondItem="hzi-vI-QgG" secondAttribute="leading" constant="22" id="nEl-QN-BdC"/>
+                                <constraint firstItem="S1f-gl-Gu6" firstAttribute="centerX" secondItem="hzi-vI-QgG" secondAttribute="centerX" id="nqy-jU-jpB"/>
+                                <constraint firstItem="Q3x-lP-ztI" firstAttribute="top" secondItem="YhI-G8-4dD" secondAttribute="bottom" constant="19" id="pa7-4O-v6w"/>
+                                <constraint firstItem="5Ic-N6-Tln" firstAttribute="leading" secondItem="hzi-vI-QgG" secondAttribute="leading" constant="22" id="pm0-LK-MFj"/>
+                                <constraint firstItem="KbE-ur-GOs" firstAttribute="top" secondItem="zPV-9j-NZv" secondAttribute="bottom" constant="8" symbolic="YES" id="rFx-e5-fXW"/>
+                                <constraint firstItem="SW8-wO-mYv" firstAttribute="top" secondItem="reg-yv-Zov" secondAttribute="bottom" constant="6" id="vVc-Q3-hto"/>
+                                <constraint firstItem="LsH-Ev-1u1" firstAttribute="leading" secondItem="S1f-gl-Gu6" secondAttribute="trailing" constant="16" id="yBD-Sd-7Nr"/>
+                                <constraint firstItem="YhI-G8-4dD" firstAttribute="leading" secondItem="KbE-ur-GOs" secondAttribute="trailing" constant="6" id="yS6-QR-sgq"/>
+                                <constraint firstItem="CBL-e2-DXG" firstAttribute="top" secondItem="1YN-ef-DXg" secondAttribute="bottom" constant="8" symbolic="YES" id="ynh-6S-jUi"/>
+                            </constraints>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstItem="hzi-vI-QgG" firstAttribute="top" secondItem="jEi-pQ-wRS" secondAttribute="bottom" constant="17" id="DgC-Km-Q8A"/>
+                        <constraint firstItem="jEi-pQ-wRS" firstAttribute="leading" secondItem="inv-VC-ytd" secondAttribute="leading" constant="20" id="KcG-FY-afm"/>
+                        <constraint firstItem="jEi-pQ-wRS" firstAttribute="top" secondItem="inv-VC-ytd" secondAttribute="top" id="KiH-ou-KIj"/>
+                        <constraint firstItem="hzi-vI-QgG" firstAttribute="leading" secondItem="inv-VC-ytd" secondAttribute="leading" constant="20" id="PXV-1p-Eqv"/>
+                        <constraint firstAttribute="trailing" secondItem="hzi-vI-QgG" secondAttribute="trailing" constant="20" id="Pnx-pH-ekM"/>
+                        <constraint firstAttribute="bottom" secondItem="hzi-vI-QgG" secondAttribute="bottom" constant="15" id="p0P-O9-Ngs"/>
+                        <constraint firstAttribute="trailing" secondItem="jEi-pQ-wRS" secondAttribute="trailing" constant="20" id="yKe-Cw-UGM"/>
+                    </constraints>
+                </view>
+            </subviews>
+            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="inv-VC-ytd" secondAttribute="bottom" id="6yu-9g-Vu6"/>
+                <constraint firstItem="inv-VC-ytd" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="SrV-OX-rvy"/>
+                <constraint firstItem="inv-VC-ytd" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="m3p-69-ec4"/>
+                <constraint firstAttribute="trailing" secondItem="inv-VC-ytd" secondAttribute="trailing" id="mb6-IH-Rax"/>
+                <constraint firstItem="inv-VC-ytd" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="vCF-WV-t5f"/>
+                <constraint firstItem="inv-VC-ytd" firstAttribute="centerY" secondItem="i5M-Pr-FkT" secondAttribute="centerY" id="zi0-K5-vze"/>
+            </constraints>
+            <point key="canvasLocation" x="119.83695652173914" y="-13.043478260869566"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="examination_km1" width="812" height="57"/>
+        <image name="zfplayer_back" width="36" height="36"/>
+    </resources>
+</document>

+ 32 - 0
jiaPei/Modules/OtherModules/ExaminationModule/NYExaminationModule.h

@@ -0,0 +1,32 @@
+//
+//  NYExaminationModule.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/14.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 题目对错答题-通知
+FOUNDATION_EXTERN NSString * const NYExerciseOptionDTNotification;
+
+#pragma mark - Model
+#import "NYExaminationViewModel.h"
+#import "NYExaminationRoomViewModel.h"
+#import "NYExerciseQuestionItemViewModel.h"
+#import "NYExerciseOptionItemViewModel.h"
+#import "NYQuestionContentViewModel.h"
+
+#pragma mark - VC
+#import "NYExaminationViewController.h"
+#import "NYExaminationRoomViewController.h"
+#import "NYExaminationTipsViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYExaminationModule : NSObject
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 15 - 0
jiaPei/Modules/OtherModules/ExaminationModule/NYExaminationModule.m

@@ -0,0 +1,15 @@
+//
+//  NYExaminationModule.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/14.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "NYExaminationModule.h"
+
+NSString * const NYExerciseOptionDTNotification = @"NYExerciseOptionDTNotification";
+
+@implementation NYExaminationModule
+
+@end

+ 21 - 0
jiaPei/Modules/OtherModules/ExaminationModule/View/NYChartView/NYChartMatrixView/CellView/NYChartMatrixViewCell.h

@@ -0,0 +1,21 @@
+//
+//  NYChartMatrixViewCell.h
+//  NYChartDemo
+//
+//  Created by kgj on 2023/3/22.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYChartMatrixViewCell : UIView
+
+//热力按钮
+@property(nonatomic,weak) UIButton *itemButton;
+//0-4
+@property(nonatomic,assign) NSInteger type;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 50 - 0
jiaPei/Modules/OtherModules/ExaminationModule/View/NYChartView/NYChartMatrixView/CellView/NYChartMatrixViewCell.m

@@ -0,0 +1,50 @@
+//
+//  NYChartMatrixViewCell.m
+//  NYChartDemo
+//
+//  Created by kgj on 2023/3/22.
+//
+
+#import "NYChartMatrixViewCell.h"
+#define ImageNamed(name) [UIImage imageNamed:name]
+
+@implementation NYChartMatrixViewCell
+
+- (instancetype)initWithFrame:(CGRect)frame{
+    if(self=[super initWithFrame:frame]){
+        [self setupUI];
+    }
+    return self;
+}
+
+
+- (void)setupUI{
+     
+    UIView *contentView = self;
+    UIButton *itemButton = [UIButton buttonWithType:UIButtonTypeCustom];
+    itemButton.layer.borderWidth = 1.0f;
+    itemButton.layer.borderColor = UIColorHex(0xD2D1CF).CGColor;
+    itemButton.titleLabel.font = [UIFont systemFontOfSize:9.f];
+    [itemButton addTarget:self action:@selector(itemButtonClickdo:) forControlEvents:UIControlEventTouchUpInside];
+    [contentView addSubview:itemButton];
+    self.itemButton = itemButton;
+    [itemButton mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.edges.equalTo(contentView);
+    }];
+}
+
+- (void)setType:(NSInteger)type
+{
+    [self.itemButton setTitleColor:UIColor.blackColor forState:UIControlStateNormal];
+    [self.itemButton setTitleColor:UIColor.whiteColor forState:UIControlStateSelected];
+    [self.itemButton setBackgroundImage:[UIImage imageWithColor:UIColor.whiteColor size:CGSizeMake(100, 100)] forState:UIControlStateNormal];
+    [self.itemButton setBackgroundImage:[UIImage imageWithColor:UIColorHex(0x3169CE) size:CGSizeMake(100, 100)] forState:UIControlStateSelected];
+}
+
+//点击
+- (void)itemButtonClickdo:(UIButton*)btn
+{
+    
+}
+
+@end

+ 27 - 0
jiaPei/Modules/OtherModules/ExaminationModule/View/NYChartView/NYChartMatrixView/NYChartMatrixView.h

@@ -0,0 +1,27 @@
+//
+//  NYChartMatrixView.h
+//  NYChartDemo
+//
+//  Created by kgj on 2023/3/17.
+//
+
+#import <UIKit/UIKit.h>
+#import "NYBaseChartView.h"
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYChartMatrixView : NYBaseChartView<NYBaseChartViewDelegate>
+
+/**
+ *  数据 list
+ */
+@property (nonatomic,strong,nullable) NSArray *dataSource;
+
+@property (nonatomic,assign) NSInteger selectIndex;
+/**
+ *  点击cell 事件block
+ */
+@property (nonatomic,copy) NYChartCellBlock matrixItemClickBlock;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 138 - 0
jiaPei/Modules/OtherModules/ExaminationModule/View/NYChartView/NYChartMatrixView/NYChartMatrixView.m

@@ -0,0 +1,138 @@
+//
+//  NYChartMatrixView.m
+//  NYChartDemo
+//
+//  Created by kgj on 2023/3/17.
+//
+
+#import "NYChartMatrixView.h"
+#import "NYChartMatrixViewCell.h"
+
+@interface NYChartMatrixView ()
+{
+    bool _isLoad;
+}
+//内容view
+@property (nonatomic,weak) UIView *contentView;
+
+@property (nonatomic,weak) UIButton *currentBtn;
+
+@end
+
+@implementation NYChartMatrixView
+
+#pragma mark --UI
+- (instancetype)initWithFrame:(CGRect)frame
+{
+    self = [super initWithFrame:frame];
+    if (self) {
+        [self setupUI];
+    }
+    return self;
+}
+
+- (instancetype)initWithCoder:(NSCoder *)decoder
+{
+    self = [super initWithCoder:decoder];
+    if (self) {
+        [self setupUI];
+    }
+    return self;
+}
+
+
+- (void)setupUI
+{
+//    self.backgroundColor = UIColor.yellowColor;
+    
+    UIView *contentView = [[UIView alloc] init];
+    [self addSubview:contentView];
+    self.contentView = contentView;
+    [contentView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.bottom.mas_equalTo(self);
+        make.left.mas_equalTo(self).offset(0);
+        make.right.mas_equalTo(self).offset(0);
+    }];
+    
+}
+
+- (void)layoutSubviews
+{
+    [super layoutSubviews];
+}
+
+#pragma mark --NYBaseChartViewDelegate
+
+- (void)loadView
+{
+    if(!_isLoad){
+        _isLoad = YES;
+        /**
+                333 333 333 333
+                333 333 333 333
+         */
+        if(self.dataSource.count){
+            NSInteger totalloc = 10;//总列
+            CGFloat itemW = floorf(KRealValue(19));
+            CGFloat itemH = floorf(KRealValue(22));
+            CGFloat margin = KRealValue(1);
+            for (int i=0; i<self.dataSource.count; i++) {
+                NSDictionary *dict = self.dataSource[i];
+                NSString *title = dict[@"count"];
+                NSInteger type = [dict[@"color"] intValue];
+                NSUInteger loc = i / totalloc;//列
+                NSUInteger row = i % totalloc;//行
+                NSLog(@"loc = %zd  row = %zd \n",loc,row);
+                CGFloat itemX = (itemW+margin)*row;
+                CGFloat itemY = (itemH+margin)*loc;
+                NYChartMatrixViewCell *cell = [[NYChartMatrixViewCell alloc] initWithFrame:CGRectMake(itemX, itemY, itemW, itemH)];
+                cell.tag = i+99;
+                cell.itemButton.tag = i;
+                cell.type = type;
+                [cell.itemButton setTitle:title forState:UIControlStateNormal];
+                [cell.itemButton addTarget:self action:@selector(itemClickdo:) forControlEvents:UIControlEventTouchUpInside];
+                [self.contentView addSubview:cell];
+            }
+        }
+    }else{
+        [self updateView];
+    }
+   
+}
+
+- (void)updateView
+{
+    if(self.dataSource.count){
+        for (int i=0; i<self.dataSource.count; i++) {
+            NSDictionary *dict = self.dataSource[i];
+            NSString *title = dict[@"count"];
+            NSInteger type = [dict[@"color"] intValue];
+            NYChartMatrixViewCell *cell = [self.contentView viewWithTag:i+99];
+            cell.type = type;
+            [cell.itemButton setTitle:title forState:UIControlStateNormal];
+        }
+    }
+}
+
+- (void)setSelectIndex:(NSInteger)selectIndex
+{
+    _selectIndex = selectIndex;
+    self.currentBtn.selected = NO;
+    NYChartMatrixViewCell *cell = [self.contentView viewWithTag:selectIndex+99];
+    cell.itemButton.selected = YES;
+    self.currentBtn = cell.itemButton;
+}
+
+//点击事件
+- (void)itemClickdo:(UIButton*)btn
+{
+    self.currentBtn.selected = NO;
+    NYChartMatrixViewCell *cell = [self.contentView viewWithTag:btn.tag+99];
+    if(self.matrixItemClickBlock){
+        self.matrixItemClickBlock(cell, (int)btn.tag);
+    }
+    btn.selected = YES;
+    self.currentBtn = btn;
+}
+
+@end

+ 11 - 0
jiaPei/Modules/OtherModules/ExaminationModule/View/NYChartView/NYChartView.h

@@ -0,0 +1,11 @@
+//
+//  NYChartView.h
+//  NYChartDemo
+//
+//  Created by kgj on 2023/3/20.
+//
+
+#ifndef NYChartView_h
+#define NYChartView_h
+#import "NYChartMatrixView.h"
+#endif /* NYChartView_h */

+ 113 - 0
jiaPei/Modules/OtherModules/ExaminationModule/View/NYChartView/NYCommonView/NYBaseChartView.h

@@ -0,0 +1,113 @@
+//
+//  NYBaseChartView.h
+//  NYChartDemo
+//
+//  Created by kgj on 2023/3/17.
+//
+
+#import <UIKit/UIKit.h>
+//竖屏
+#define KISPortrait     UIInterfaceOrientationIsPortrait(KAppInterfaceOrientation)
+//横屏
+#define KISLandscape    UIInterfaceOrientationIsLandscape(KAppInterfaceOrientation)
+//屏幕宽度
+#define KDeviceWidth [UIScreen mainScreen].bounds.size.width
+//屏幕高度
+#define KDeviceHeight [UIScreen mainScreen].bounds.size.height
+//屏幕分辨率
+#define KScreen_Resolution (KDeviceWidth * KDeviceHeight * ([UIScreen mainScreen].scale))
+//主色调 and 文本常规色调等配置
+//随机色
+#define KRandomColor    KRGBColor(arc4random_uniform(256)/255.0,arc4random_uniform(256)/255.0,arc4random_uniform(256)/255.0)
+// RGB颜色
+#define KRGBColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]
+// RGB颜色 alpha
+#define KRGBAColor(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:a]
+//16进制颜色
+#define KRGB16Color(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
+//Hex颜色  需要配置类扩展
+#define KHexColor(str) [UIColor colorWithHexString:(str)]
+//以iphone6为基础缩放系数
+#define Iphone6ScaleWidth KDeviceWidth/375.0
+//以iphone6为基础缩放系数
+#define Iphone6ScaleHeight KDeviceHeight/667.0
+//根据ip6的屏幕来拉伸宽
+#define KRealValue(x) ((x)*((KISPortrait ? KDeviceWidth : KDeviceHeight)/375.0f))
+//根据ip6的屏幕来拉伸宽Int
+#define KRealValueInt(x) ((NSInteger)((x)*((KISPortrait ? KDeviceWidth : KDeviceHeight)/375.0f)))
+//根据ip6的屏幕来拉伸高
+#define KRealHeightValue(height) ((height)*((KISPortrait ? KDeviceHeight : KDeviceWidth)/ 812.0f))
+//iphone5相对iphone6尺寸比例
+#define KIphoneSizeScale (KIs_Iphone_5?0.853:1.0)
+//屏幕方向
+#define KAppInterfaceOrientation \
+\
+^(){ \
+    UIInterfaceOrientation interfaceOrientation; \
+    if (@available(iOS 13.0, *)) { \
+        UIWindowScene *windowScene = (UIWindowScene *)[UIApplication sharedApplication].connectedScenes.allObjects.firstObject; \
+        interfaceOrientation = windowScene.interfaceOrientation; \
+    } else { \
+        interfaceOrientation = [UIApplication sharedApplication].statusBarOrientation; \
+    } \
+    return interfaceOrientation; \
+}()
+NS_ASSUME_NONNULL_BEGIN
+typedef void (^NYChartCellBlock)(id obj,int index);
+@protocol NYBaseChartViewDelegate <NSObject>
+
+@required
+- (void)loadView;
+@optional
+- (void)updateView;
+
+@end
+
+
+@interface NYBaseChartView : UIView
+
+/**
+ *  x轴数据
+ */
+@property (nonatomic,strong,nullable) NSArray *arrayX;
+/**
+ *  y轴数据
+ */
+@property (nonatomic,strong,nullable) NSArray *arrayY;
+/**
+ *  点数据
+ */
+@property (nonatomic,strong,nullable) NSMutableArray *pointArray;
+/**
+ *  间隔时间
+ */
+@property (nonatomic,assign) NSInteger interval_time;
+/**
+ *  x间隔 count  0 默认不间隔
+ */
+@property (nonatomic,assign) NSInteger x_interval;
+/**
+ *  y间隔 count  0 默认不间隔
+ */
+@property (nonatomic,assign) NSInteger y_interval;
+/**
+ *  x 字体色
+ */
+@property (nonatomic,strong) UIColor *x_fontColor;
+/**
+ *  x 字体
+ */
+@property (nonatomic,strong) UIFont *x_font;
+/**
+ *  y 字体色
+ */
+@property (nonatomic,strong) UIColor *y_fontColor;
+/**
+ *  y 字体
+ */
+@property (nonatomic,strong) UIFont *y_font;
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 39 - 0
jiaPei/Modules/OtherModules/ExaminationModule/View/NYChartView/NYCommonView/NYBaseChartView.m

@@ -0,0 +1,39 @@
+//
+//  NYBaseChartView.m
+//  NYChartDemo
+//
+//  Created by kgj on 2023/3/17.
+//
+
+#import "NYBaseChartView.h"
+
+@implementation NYBaseChartView
+
+- (instancetype)initWithFrame:(CGRect)frame
+{
+    self = [super initWithFrame:frame];
+    if (self) {
+        [self setupView];
+    }
+    return self;
+}
+
+- (instancetype)initWithCoder:(NSCoder *)decoder
+{
+    self=[super initWithCoder:decoder];
+    if (self) {
+        [self setupView];
+    }
+    return self;
+}
+
+- (void)setupView {
+    
+}
+
+-(void)layoutSubviews
+{
+    [super layoutSubviews];
+}
+
+@end

+ 18 - 0
jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYExerciseOptionCell.h

@@ -0,0 +1,18 @@
+//
+//  NYExerciseOptionCell.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/31.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class AnswerItem;
+@interface NYExerciseOptionCell : RQCommonCell
+@property (nonatomic, strong) AnswerItem *item;
+@end
+
+NS_ASSUME_NONNULL_END

+ 51 - 0
jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYExerciseOptionCell.m

@@ -0,0 +1,51 @@
+//
+//  NYExerciseOptionCell.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/31.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "NYExerciseOptionCell.h"
+
+
+@interface NYExerciseOptionCell ()
+@property (nonatomic, readwrite, strong) RQExerciseOptionItemViewModel *viewModel;
+
+@property (weak, nonatomic) IBOutlet UILabel *optionLabel;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *labelHeight;
+
+@end
+
+@implementation NYExerciseOptionCell
+#pragma mark - PublicMethods
++ (instancetype)cellWithTableView:(UITableView *)tableView {
+    static NSString *ID = @"NYExerciseOptionCell";
+    NYExerciseOptionCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
+    if (!cell) {
+        cell = [self rq_viewFromXib];
+        cell.selectionStyle = UITableViewCellSelectionStyleNone;
+    }
+    return cell;
+}
+
+- (void)bindViewModel:(RQExerciseOptionItemViewModel *)viewModel {
+    @weakify(self)
+    _viewModel = viewModel;
+    RAC(self.optionLabel, attributedText) = [[RACObserve(viewModel, optsString) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+    
+    RAC(self.labelHeight, constant) = [[RACObserve(viewModel, labelHeight) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+    
+}
+
+#pragma mark - SystemMethods
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+}
+
+@end

+ 44 - 0
jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYExerciseOptionCell.xib

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="KGk-i7-Jjw" customClass="NYExerciseOptionCell">
+            <rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
+                <rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <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="fii-77-nfb">
+                        <rect key="frame" x="16" y="11.666666666666664" width="288" height="21"/>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="21" id="31s-X5-B8Y"/>
+                        </constraints>
+                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                        <color key="textColor" red="0.039215686270000001" green="0.1019607843" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                </subviews>
+                <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                <constraints>
+                    <constraint firstItem="fii-77-nfb" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="Bl1-OV-wGM"/>
+                    <constraint firstAttribute="trailing" secondItem="fii-77-nfb" secondAttribute="trailing" constant="16" id="Ebp-HN-Wcs"/>
+                    <constraint firstItem="fii-77-nfb" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="16" id="RNb-d7-ELw"/>
+                </constraints>
+            </tableViewCellContentView>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <connections>
+                <outlet property="labelHeight" destination="31s-X5-B8Y" id="r4Y-n5-0bh"/>
+                <outlet property="optionLabel" destination="fii-77-nfb" id="1FD-Ui-SPi"/>
+            </connections>
+            <point key="canvasLocation" x="42.748091603053432" y="-11.267605633802818"/>
+        </tableViewCell>
+    </objects>
+</document>

+ 17 - 0
jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYExerciseQuestionCell.h

@@ -0,0 +1,17 @@
+//
+//  NYExerciseQuestionCell.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/30.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYExerciseQuestionCell : RQCommonCell
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 115 - 0
jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYExerciseQuestionCell.m

@@ -0,0 +1,115 @@
+//
+//  NYExerciseQuestionCell.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/30.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "NYExerciseQuestionCell.h"
+#import <ZFPlayer/ZFAVPlayerManager.h>
+
+@interface NYExerciseQuestionCell () <QMUIImagePreviewViewDelegate>
+@property  (nonatomic, readwrite, strong) NYExerciseQuestionItemViewModel *viewModel;
+@property (weak, nonatomic) IBOutlet YYLabel *questionLabel;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *labelHeight;
+
+@property (nonatomic, readwrite, strong) ZFPlayerController *zfPlayer;
+@property (nonatomic, readwrite, strong) QMUIImagePreviewViewController *imagePreviewViewController;
+@property (nonatomic, readwrite, strong) UIImage *subImage;
+@end
+
+@implementation NYExerciseQuestionCell
+
+#pragma mark - PublicMethods
++ (instancetype)cellWithTableView:(UITableView *)tableView {
+    static NSString *ID = @"NYExerciseQuestionCell";
+    NYExerciseQuestionCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
+    if (!cell) {
+        cell = [self rq_viewFromXib];
+        cell.questionLabel.backgroundColor = UIColor.clearColor;
+        cell.selectionStyle = UITableViewCellSelectionStyleNone;
+    }
+    return cell;
+}
+
+- (void)dealloc {
+}
+
+- (void)bindViewModel:(NYExerciseQuestionItemViewModel *)viewModel {
+    _viewModel = viewModel;
+    self.questionLabel.userInteractionEnabled = YES;
+    RAC(self.questionLabel, attributedText) = [[RACObserve(viewModel, qusetionString) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+    RAC(self.labelHeight, constant) = [[RACObserve(viewModel, labelHeight) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+
+}
+
+#pragma mark - SystemMethods
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+#pragma mark - LazyLoad
+- (QMUIImagePreviewViewController *)imagePreviewViewController {
+    @weakify(self)
+    if (!_imagePreviewViewController) {
+        _imagePreviewViewController = [[QMUIImagePreviewViewController alloc] init];
+        _imagePreviewViewController.presentingStyle = QMUIImagePreviewViewControllerTransitioningStyleZoom;// 将 present 动画改为 zoom,也即从某个位置放大到屏幕中央。默认样式为 fade。
+        _imagePreviewViewController.imagePreviewView.delegate = self;// 将内部的图片查看器 delegate 指向当前 viewController,以获取要查看的图片数据
+        // 当需要在退出大图预览时做一些事情的时候,可配合 UIViewController (QMUI) 的 qmui_visibleStateDidChangeBlock 来实现。
+        _imagePreviewViewController.qmui_visibleStateDidChangeBlock = ^(QMUIImagePreviewViewController *viewController, QMUIViewControllerVisibleState visibleState) {
+            if (visibleState == QMUIViewControllerWillDisappear) {
+                RQ_Exercise_Module.isShow_CatalogueView = NO;
+//                NSInteger exitAtIndex = viewController.imagePreviewView.currentImageIndex;
+            }
+        };
+        
+    }
+    return _imagePreviewViewController;
+}
+
+#pragma mark - <QMUIImagePreviewViewDelegate>
+- (NSUInteger)numberOfImagesInImagePreviewView:(QMUIImagePreviewView *)imagePreviewView {
+    return 1;
+}
+
+- (void)imagePreviewView:(QMUIImagePreviewView *)imagePreviewView renderZoomImageView:(QMUIZoomImageView *)zoomImageView atIndex:(NSUInteger)index {
+    @weakify(self)
+    zoomImageView.reusedIdentifier = @(index);
+    
+    // 模拟异步加载的情况
+    if (index == 2) {
+        [zoomImageView showLoading];
+        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+            @strongify(self)
+            if ([zoomImageView.reusedIdentifier isEqual:@(index)]) {
+                [zoomImageView hideEmptyView];
+                zoomImageView.image = self.subImage;
+                zoomImageView.contentMode = UIViewContentModeScaleAspectFill;
+                zoomImageView.maximumZoomScale = 3.f;
+            }
+        });
+    } else {
+        zoomImageView.image = self.subImage;
+    }
+}
+
+- (QMUIImagePreviewMediaType)imagePreviewView:(QMUIImagePreviewView *)imagePreviewView assetTypeAtIndex:(NSUInteger)index {
+    return QMUIImagePreviewMediaTypeImage;
+}
+
+#pragma mark - <QMUIZoomImageViewDelegate>
+
+- (void)singleTouchInZoomingImageView:(QMUIZoomImageView *)zoomImageView location:(CGPoint)location {
+    // 退出图片预览
+    [RQControllerHelper.currentViewController dismissViewControllerAnimated:YES completion:nil];
+}
+
+@end

+ 60 - 0
jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYExerciseQuestionCell.xib

@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="153" id="KGk-i7-Jjw" customClass="NYExerciseQuestionCell">
+            <rect key="frame" x="0.0" y="0.0" width="327" height="120"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
+                <rect key="frame" x="0.0" y="0.0" width="327" height="120"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fv9-iA-mxh" customClass="YYLabel">
+                        <rect key="frame" x="16" y="16" width="295" height="88"/>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="88" id="P7x-jt-CQ7"/>
+                        </constraints>
+                        <userDefinedRuntimeAttributes>
+                            <userDefinedRuntimeAttribute type="number" keyPath="numberOfLines">
+                                <integer key="value" value="0"/>
+                            </userDefinedRuntimeAttribute>
+                            <userDefinedRuntimeAttribute type="color" keyPath="textColor">
+                                <color key="value" red="0.039215686270000001" green="0.1019607843" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </userDefinedRuntimeAttribute>
+                            <userDefinedRuntimeAttribute type="number" keyPath="fontSize_">
+                                <real key="value" value="17"/>
+                            </userDefinedRuntimeAttribute>
+                            <userDefinedRuntimeAttribute type="string" keyPath="fontName_" value="PingFang SC"/>
+                        </userDefinedRuntimeAttributes>
+                    </view>
+                </subviews>
+                <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                <constraints>
+                    <constraint firstItem="fv9-iA-mxh" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="16" id="POC-xy-Ite"/>
+                    <constraint firstAttribute="trailing" secondItem="fv9-iA-mxh" secondAttribute="trailing" constant="16" id="Yup-RD-MIV"/>
+                    <constraint firstItem="fv9-iA-mxh" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="16" id="wDT-oY-GMa"/>
+                </constraints>
+            </tableViewCellContentView>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <connections>
+                <outlet property="labelHeight" destination="P7x-jt-CQ7" id="q3F-Xj-oRg"/>
+                <outlet property="questionLabel" destination="fv9-iA-mxh" id="rUh-gL-jt4"/>
+            </connections>
+            <point key="canvasLocation" x="66" y="33"/>
+        </tableViewCell>
+    </objects>
+    <resources>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 21 - 0
jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYQuestionContentView.h

@@ -0,0 +1,21 @@
+//
+//  NYQuestionContentView.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/30.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYQuestionContentView : UIView
+@property (nonatomic,weak) UITableView *me_tableView;
+@property (nonatomic, readonly, strong) NYQuestionContentViewModel *questionContentViewModel;
+
+-(void)readLodData:(RQExerciseModel *)exerciseModel;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 321 - 0
jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYQuestionContentView.m

@@ -0,0 +1,321 @@
+//
+//  NYQuestionContentView.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/30.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "NYQuestionContentView.h"
+
+@interface NYQuestionContentView ()
+
+@property (nonatomic,weak) UIView *bottom_tools;
+@property (weak, nonatomic) UILabel *titleLabel;
+@property (weak, nonatomic) UILabel *selAnswerlabel;
+@property (nonatomic,weak) UIView *answer_view;
+
+@property (nonatomic,weak) RQExerciseModel *exerciseModel;
+
+@property (nonatomic,strong) UIButton *current_btn;
+
+@end
+
+@implementation NYQuestionContentView
+
+#pragma mark --UI
+- (instancetype)initWithFrame:(CGRect)frame
+{
+    self = [super initWithFrame:frame];
+    if (self) {
+        [self setupUI];
+    }
+    return self;
+}
+
+- (instancetype)initWithCoder:(NSCoder *)decoder
+{
+    self = [super initWithCoder:decoder];
+    if (self) {
+        [self setupUI];
+    }
+    return self;
+}
+
+
+- (void)setupUI
+{
+    
+    [self bottomUI];
+    _questionContentViewModel = [[NYQuestionContentViewModel alloc] init];
+    RQTableView *tableView = [[RQTableView alloc] initWithFrame:[UIScreen mainScreen].bounds style:UITableViewStylePlain];
+    tableView.backgroundColor = [UIColor qmui_colorWithHexString:@"#F5F6F8"];
+    tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
+    // set delegate and dataSource
+    tableView.delegate = _questionContentViewModel;
+    tableView.dataSource = _questionContentViewModel;
+    [self addSubview:tableView];
+    self.me_tableView = tableView;
+    // 注册cell
+    [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"UITableViewCell"];
+    [tableView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.mas_equalTo(self);
+        make.bottom.mas_equalTo(self.bottom_tools.mas_top);
+        make.left.mas_equalTo(self).offset(0);
+        make.right.mas_equalTo(self).offset(0);
+    }];
+    
+}
+
+- (void)bottomUI{
+    UIView *bottom_tools = [[UIView alloc] init];
+    bottom_tools.backgroundColor = [UIColor qmui_colorWithHexString:@"#F5F6F8"];
+    [self addSubview:bottom_tools];
+    self.bottom_tools = bottom_tools;
+    [bottom_tools mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.bottom.mas_equalTo(self);
+        make.left.mas_equalTo(self).offset(0);
+        make.right.mas_equalTo(self).offset(0);
+        make.height.mas_equalTo(30);
+    }];
+    
+    UILabel *titleLabel = [[UILabel alloc] init];
+    titleLabel.backgroundColor = UIColor.clearColor;
+    titleLabel.text = @"您选择的答案:";
+    titleLabel.font = [UIFont boldSystemFontOfSize:14.f];
+    titleLabel.textColor = [UIColor qmui_colorWithHexString:@"#2B6BCC"];
+    [bottom_tools addSubview:titleLabel];
+    self.titleLabel = titleLabel;
+    [titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.mas_equalTo(bottom_tools);
+        make.left.mas_equalTo(bottom_tools).offset(9);
+        make.height.mas_equalTo(30);
+        make.width.mas_equalTo(98);
+    }];
+    
+    UILabel *selAnswerlabel = [[UILabel alloc] init];
+    selAnswerlabel.backgroundColor = UIColor.clearColor;
+    selAnswerlabel.text = @"";
+    selAnswerlabel.font = [UIFont systemFontOfSize:14];
+    selAnswerlabel.textColor = [UIColor qmui_colorWithHexString:@"#BC322D"];
+    [bottom_tools addSubview:selAnswerlabel];
+    self.selAnswerlabel = selAnswerlabel;
+    [selAnswerlabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.mas_equalTo(bottom_tools);
+        make.left.mas_equalTo(titleLabel.mas_right).offset(9);
+        make.height.mas_equalTo(30);
+        make.width.mas_equalTo(80);
+    }];
+    
+    UIView *answer_view = [[UIView alloc] init];
+    answer_view.backgroundColor = UIColor.clearColor;
+    [bottom_tools addSubview:answer_view];
+    self.answer_view = answer_view;
+    [answer_view mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.bottom.top.mas_equalTo(bottom_tools);
+        make.right.mas_equalTo(bottom_tools).offset(0);
+        make.width.mas_equalTo(180);
+    }];
+    
+}
+
+- (void)readLodData:(RQExerciseModel *)exerciseModel{
+    self.exerciseModel = exerciseModel;
+    [_questionContentViewModel loadQuestionContentView:exerciseModel tableView:self.me_tableView ];
+    //选项
+    if(_questionContentViewModel.dataSource.count>1){
+        [self.answer_view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
+        NSArray<NYExerciseOptionItemViewModel*> *allOptionsArr = ((RQCommonGroupViewModel*)_questionContentViewModel.dataSource[1]).itemViewModels;
+        [self showselAnswerlabel];
+        NSMutableArray *btn_list = [NSMutableArray array];
+        if(allOptionsArr.count>0){
+            CGFloat buttonWidth = 25;
+            CGFloat spacing = 10;
+            for (int i = 0; i < allOptionsArr.count; i++) {
+                NYExerciseOptionItemViewModel *item = allOptionsArr[i];
+                NSString *title = item.title;
+                UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
+                button.layer.borderWidth = 1.f;
+                button.layer.borderColor = [UIColor qmui_colorWithHexString:@"#3D3C38"].CGColor;
+                button.frame = CGRectMake(i * (buttonWidth + spacing), 2.5, buttonWidth, buttonWidth);
+                button.titleLabel.font = [UIFont systemFontOfSize:14];
+                [button setTitle:title forState:UIControlStateNormal];
+                [button setTitleColor:UIColor.blackColor forState:UIControlStateNormal];
+                [button setTitleColor:UIColor.whiteColor forState:UIControlStateSelected];
+                [button setBackgroundImage:[UIImage imageWithColor:UIColor.whiteColor size:CGSizeMake(100, 100)] forState:UIControlStateNormal];
+                [button setBackgroundImage:[UIImage imageWithColor:UIColorHex(0x3169CE) size:CGSizeMake(100, 100)] forState:UIControlStateSelected];
+                [button addTarget:self action:@selector(optionsBtnClickdo:) forControlEvents:UIControlEventTouchUpInside];
+                [self.answer_view addSubview:button];
+                [btn_list addObject:button];
+            }
+            if(self.exerciseModel.answerResultsType != RQAnswerResultsType_Unanswered){//已答题-选中
+                if(self.exerciseModel.userAnswer.count>0&&![self.exerciseModel.userAnswer containsObject:@"预选Option"]){
+                    for (NSString *optString in self.exerciseModel.userAnswer) {
+                        NSString *userTitle = @"";
+                        if ([self.exerciseModel.ydtQuestionModel.An1 isEqualToString:optString]) {
+                            userTitle = @"A";
+                        } else if ([self.exerciseModel.ydtQuestionModel.An2 isEqualToString:optString]) {
+                            userTitle = @"B";
+                        } else if ([self.exerciseModel.ydtQuestionModel.An3 isEqualToString:optString]) {
+                            userTitle = @"C";
+                        } else if ([self.exerciseModel.ydtQuestionModel.An4 isEqualToString:optString]) {
+                            userTitle = @"D";
+                        }
+                        for (UIButton *btn in btn_list) {
+                            NSLog(@"btnT =%@   uT= %@,",btn.currentTitle,userTitle);
+                            if([userTitle isEqualToString:btn.currentTitle]){
+                                btn.selected = YES;
+                            }
+                        }
+                    }
+                }
+            }
+
+            if (self.exerciseModel.ydtQuestionModel.Type == 3) {//多选题
+                //添加一个确认按钮
+                UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
+                button.tag = 99;
+                button.layer.borderWidth = 1.f;
+                button.layer.borderColor = [UIColor qmui_colorWithHexString:@"#3D3C38"].CGColor;
+                button.frame = CGRectMake(4 * (buttonWidth + spacing), 2.5, buttonWidth+10, buttonWidth);
+                button.titleLabel.font = [UIFont systemFontOfSize:12];
+                [button setTitle:@"确认" forState:UIControlStateNormal];
+                [button setTitleColor:UIColor.blackColor forState:UIControlStateNormal];
+                [button setTitleColor:UIColor.whiteColor forState:UIControlStateSelected];
+                [button setBackgroundImage:[UIImage imageWithColor:UIColor.whiteColor size:CGSizeMake(100, 100)] forState:UIControlStateNormal];
+                [button setBackgroundImage:[UIImage imageWithColor:UIColorHex(0x3169CE) size:CGSizeMake(100, 100)] forState:UIControlStateSelected];
+                [button addTarget:self action:@selector(affirmBtnClickdo:) forControlEvents:UIControlEventTouchUpInside];
+                [self.answer_view addSubview:button];
+            }
+        }
+    }
+    
+}
+//确认
+- (void)affirmBtnClickdo:(UIButton*)btn{
+    if(self.exerciseModel.answerResultsType != RQAnswerResultsType_Unanswered)return;//已答题 不可用
+    NSArray *allOptionsArr = [@[self.exerciseModel.ydtQuestionModel.An1,self.exerciseModel.ydtQuestionModel.An2,self.exerciseModel.ydtQuestionModel.An3,self.exerciseModel.ydtQuestionModel.An4].rac_sequence.signal filter:^BOOL(NSString *optStr) {
+        return RQStringIsNotEmpty(optStr);
+    }].toArray;
+    NSMutableArray *userAnswerArr = self.exerciseModel.userAnswer.mutableCopy;
+    if ([self.exerciseModel.userAnswer containsObject:@"预选Option"]) {
+        [userAnswerArr removeObject:@"预选Option"];
+    }
+    self.exerciseModel.userAnswer = userAnswerArr.copy;
+    NSString *userAnswerIndexStr = [[[userAnswerArr.rac_sequence.signal map:^id _Nullable(NSString *optStr) {
+        return @([allOptionsArr indexOfObject:optStr] + 1);
+    }].toArray arraySortASC] componentsJoinedByString:@""];
+    [NYTools saveExerciseModel:self.exerciseModel userKey:RQ_USER_MANAGER.currentUser.outId carType:RQ_YDTQuestion_Module.carType subject:RQ_YDTQuestion_Module.subject exerciseType:RQ_Exercise_Module.currentExerciseType];//记录用户做的题目
+        if (userAnswerIndexStr.integerValue == self.exerciseModel.ydtQuestionModel.AnswerTrue.integerValue) {
+            self.exerciseModel.answerResultsType = RQAnswerResultsType_Correct;
+            //做对自动下一题
+                [RQNotificationCenter postNotificationName:NYExerciseOptionDTNotification object:@"0"];
+        if (RQ_Exercise_Module.isRightAutoRemoveError) {
+            [[[RQ_HTTP_Service deleteFavQuestionWithQuestionId:self.exerciseModel.ydtQuestionModel.ID type:RQSaveFavQuestionType_Wrong] deliverOnMainThread] subscribeNext:^(id  _Nullable x) {
+                [RQ_YDT_USER_Question_Module doQuestionWithID:self.exerciseModel.ydtQuestionModel.ID myAnswer:userAnswerIndexStr.integerValue trueAnswer:self.exerciseModel.ydtQuestionModel.AnswerTrue.integerValue carType:RQ_YDTQuestion_Module.carType subject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_Sequential];
+            } error:^(NSError * _Nullable error) {
+                
+            }];
+        }
+    } else {//做错提示
+        self.exerciseModel.answerResultsType = RQAnswerResultsType_Error;
+        [RQNotificationCenter postNotificationName:NYExerciseOptionDTNotification object:@"1"];
+        [[[RQ_HTTP_Service saveFavQuestionWithQuestionId:self.exerciseModel.ydtQuestionModel.ID type:RQSaveFavQuestionType_Wrong] deliverOnMainThread] subscribeNext:^(id  _Nullable x) {
+            [RQ_YDT_USER_Question_Module doQuestionWithID:self.exerciseModel.ydtQuestionModel.ID myAnswer:userAnswerIndexStr.integerValue trueAnswer:self.exerciseModel.ydtQuestionModel.AnswerTrue.integerValue carType:RQ_YDTQuestion_Module.carType subject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_Sequential];
+        } error:^(NSError * _Nullable error) {
+        }];
+    }
+}
+//选项
+- (void)optionsBtnClickdo:(UIButton*)btn{
+    if(self.exerciseModel.answerResultsType != RQAnswerResultsType_Unanswered)return;//已答题 不可用
+    if (self.exerciseModel.ydtQuestionModel.Type == 3) {//多选题
+        btn.selected = !btn.selected;
+    }else{
+        if(self.current_btn){
+            self.current_btn.selected = NO;
+        }
+        btn.selected = !btn.selected;
+    }
+    self.current_btn = btn;
+    NSString *optString = @"";
+    NSArray *allOptionsArr = [@[self.exerciseModel.ydtQuestionModel.An1,self.exerciseModel.ydtQuestionModel.An2,self.exerciseModel.ydtQuestionModel.An3,self.exerciseModel.ydtQuestionModel.An4].rac_sequence.signal filter:^BOOL(NSString *optStr) {
+        return RQStringIsNotEmpty(optStr);
+    }].toArray;
+    if([btn.currentTitle isEqualToString:@"A"]){
+        optString = allOptionsArr[0];
+    }else if([btn.currentTitle isEqualToString:@"B"]){
+        optString = allOptionsArr[1];
+    }else if([btn.currentTitle isEqualToString:@"C"]){
+        optString = allOptionsArr[2];
+    }else if([btn.currentTitle isEqualToString:@"D"]){
+        optString = allOptionsArr[3];
+    }
+    if (self.exerciseModel.ydtQuestionModel.Type == 3) {//多选题
+        if (![self.exerciseModel.userAnswer containsObject:optString]) {
+            NSMutableArray *userAnswerArr = self.exerciseModel.userAnswer.mutableCopy;
+            [userAnswerArr addObject:optString];
+            self.exerciseModel.userAnswer = userAnswerArr.copy;
+        } else {
+            NSMutableArray *userAnswerArr = self.exerciseModel.userAnswer.mutableCopy;
+            [userAnswerArr removeObject:optString];
+            self.exerciseModel.userAnswer = userAnswerArr.copy;
+        }
+        [self showselAnswerlabel];
+    } else {
+        self.exerciseModel.userAnswer = @[optString].mutableCopy;
+        [self showselAnswerlabel];
+        [NYTools saveExerciseModel:self.exerciseModel userKey:RQ_USER_MANAGER.currentUser.outId carType:RQ_YDTQuestion_Module.carType subject:RQ_YDTQuestion_Module.subject exerciseType:RQ_Exercise_Module.currentExerciseType];//记录用户做的题目
+        if (self.exerciseModel.ydtQuestionModel.AnswerTrue.integerValue == [allOptionsArr indexOfObject:optString] + 1) {//做对自动下一题
+            self.exerciseModel.answerResultsType = RQAnswerResultsType_Correct;
+            [RQNotificationCenter postNotificationName:NYExerciseOptionDTNotification object:@"0"];
+            if (RQ_Exercise_Module.isRightAutoRemoveError) {
+                [[[RQ_HTTP_Service deleteFavQuestionWithQuestionId:self.exerciseModel.ydtQuestionModel.ID type:RQSaveFavQuestionType_Wrong] deliverOnMainThread] subscribeNext:^(id  _Nullable x) {
+                    [RQ_YDT_USER_Question_Module doQuestionWithID:self.exerciseModel.ydtQuestionModel.ID myAnswer:[allOptionsArr indexOfObject:optString] + 1 trueAnswer:self.exerciseModel.ydtQuestionModel.AnswerTrue.integerValue carType:RQ_YDTQuestion_Module.carType subject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_Sequential];
+                } error:^(NSError * _Nullable error) {
+                    
+                }];
+            }
+        } else {//做错提示
+            self.exerciseModel.answerResultsType = RQAnswerResultsType_Error;
+            [RQNotificationCenter postNotificationName:NYExerciseOptionDTNotification object:@"1"];
+            [[[RQ_HTTP_Service saveFavQuestionWithQuestionId:self.exerciseModel.ydtQuestionModel.ID type:RQSaveFavQuestionType_Wrong] deliverOnMainThread] subscribeNext:^(id  _Nullable x) {
+                [RQ_YDT_USER_Question_Module doQuestionWithID:self.exerciseModel.ydtQuestionModel.ID myAnswer:[allOptionsArr indexOfObject:optString] + 1 trueAnswer:self.exerciseModel.ydtQuestionModel.AnswerTrue.integerValue carType:RQ_YDTQuestion_Module.carType subject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_Sequential];
+            } error:^(NSError * _Nullable error) {
+            }];
+        }
+    }
+    
+}
+
+//显示用户选择答案
+- (void)showselAnswerlabel{
+
+    NSMutableString *answer_str = [NSMutableString string];
+    
+    if (self.exerciseModel.ydtQuestionModel.Type == 3) {//多选题
+        NSMutableArray *userAnswerArr = self.exerciseModel.userAnswer.mutableCopy;
+        [userAnswerArr removeObject:@"预选Option"];
+        self.exerciseModel.userAnswer = userAnswerArr.copy;
+    }
+    
+    if(self.exerciseModel.userAnswer.count>0&&![self.exerciseModel.userAnswer containsObject:@"预选Option"]){
+        for (NSString *optString in self.exerciseModel.userAnswer) {
+            if ([self.exerciseModel.ydtQuestionModel.An1 isEqualToString:optString]) {
+                [answer_str appendString:@"A,"];
+            } else if ([self.exerciseModel.ydtQuestionModel.An2 isEqualToString:optString]) {
+                [answer_str appendString:@"B,"];
+            } else if ([self.exerciseModel.ydtQuestionModel.An3 isEqualToString:optString]) {
+                [answer_str appendString:@"C,"];
+            } else if ([self.exerciseModel.ydtQuestionModel.An4 isEqualToString:optString]) {
+                [answer_str appendString:@"D,"];
+            }
+        }
+        [answer_str deleteCharactersInRange:NSMakeRange(answer_str.length - 1, 1)];
+    }
+    self.selAnswerlabel.text = answer_str;
+    self.exerciseModel.userAnswerStr = answer_str;
+    
+}
+
+@end

+ 24 - 0
jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/ExerciseQuestion/NYExerciseOptionItemViewModel.h

@@ -0,0 +1,24 @@
+//
+//  NYExerciseOptionItemViewModel.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/31.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYExerciseOptionItemViewModel : RQCommonItemViewModel
+@property (nonatomic, readonly, strong) RQExerciseModel *exerciseModel;
+@property (nonatomic, readonly, strong) NSMutableAttributedString *optsString;
+@property (nonatomic, readonly, strong) UIColor *btnBgColor;
+@property (nonatomic, readonly, assign) RQExerciseOptionItemType exerciseOptionItemType;
+//@property (nonatomic, readonly, assign) RQExerciseType exerciseType;
+@property (nonatomic, readonly, assign) CGFloat labelHeight;
+
+/// init
+- (instancetype)initWithRQExerciseModel:(RQExerciseModel *)exerciseModel allOptionsArr:(NSArray *)allOptionsArr optString:(NSString *)optString;
+@end
+NS_ASSUME_NONNULL_END

+ 271 - 0
jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/ExerciseQuestion/NYExerciseOptionItemViewModel.m

@@ -0,0 +1,271 @@
+//
+//  NYExerciseOptionItemViewModel.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/31.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "NYExerciseOptionItemViewModel.h"
+
+@interface NYExerciseOptionItemViewModel ()
+@property (nonatomic, readwrite, strong) RQExerciseModel *exerciseModel;
+@property (nonatomic, readwrite, assign) RQExerciseOptionItemType exerciseOptionItemType;
+@property (nonatomic, readwrite, strong) NSMutableAttributedString *optsString;
+@property (nonatomic, readwrite, strong) UIColor *btnBgColor;
+//@property (nonatomic, readwrite, assign) RQExerciseType exerciseType;
+
+@property (nonatomic, readwrite, strong) YYLabel *yyLabel;
+@property (nonatomic, readwrite, assign) CGFloat labelHeight;
+
+
+@end
+
+@implementation NYExerciseOptionItemViewModel
+/// init
+- (instancetype)initWithRQExerciseModel:(RQExerciseModel *)exerciseModel allOptionsArr:(NSArray *)allOptionsArr optString:(NSString *)optString; {
+    if (self = [super init]) {
+        @weakify(self)
+        self.exerciseModel = exerciseModel;
+        if ([self.exerciseModel.ydtQuestionModel.An1 isEqualToString:optString]) {
+            self.title = @"A";
+        } else if ([self.exerciseModel.ydtQuestionModel.An2 isEqualToString:optString]) {
+            self.title = @"B";
+        } else if ([self.exerciseModel.ydtQuestionModel.An3 isEqualToString:optString]) {
+            self.title = @"C";
+        } else if ([self.exerciseModel.ydtQuestionModel.An4 isEqualToString:optString]) {
+            self.title = @"D";
+        }
+        optString = [NSString stringWithFormat:@"%@.%@",self.title,optString];
+        self.optsString = [[NSMutableAttributedString alloc] initWithString:optString];
+        self.optsString.yy_font = [UIFont systemFontOfSize:RQ_Exercise_Module.exerciseFontSize];
+        self.btnBgColor = RQ_MAIN_TEXT_COLOR_WHITE;
+        self.labelHeight = [self getMessageHeightWithAttributedStr:self.optsString andLabel:self.yyLabel];
+        self.rowHeight =  ((self.labelHeight < RQ_FIT_HORIZONTAL(30.f)? RQ_FIT_HORIZONTAL(30.f) : self.labelHeight)) ;
+        NSArray *allOptionsArr = [@[self.exerciseModel.ydtQuestionModel.An1,self.exerciseModel.ydtQuestionModel.An2,self.exerciseModel.ydtQuestionModel.An3,self.exerciseModel.ydtQuestionModel.An4].rac_sequence.signal filter:^BOOL(NSString *optStr) {
+            return RQStringIsNotEmpty(optStr);
+        }].toArray;
+        
+        NSMutableArray *answerOptionArr = @[].mutableCopy;
+        for (int i = 0; i < self.exerciseModel.ydtQuestionModel.AnswerTrue.length; i ++) {
+            NSRange range;
+            range.location = i;
+            range.length = 1;
+            NSString *indexStr = [self.exerciseModel.ydtQuestionModel.AnswerTrue substringWithRange:range];
+            [answerOptionArr addObject:[allOptionsArr objectAtIndex:indexStr.integerValue - 1]];
+        }
+        
+        
+        
+        [[RACObserve(self.exerciseModel, userAnswerRecitation) deliverOnMainThread] subscribeNext:^(id  _Nullable x) {
+            @strongify(self)
+            NSArray *userAnswerArr = self.exerciseModel.userAnswer;
+            if(RQ_Exercise_Module.currentExerciseType == RQExerciseType_Recitation){//背题模式
+                userAnswerArr = self.exerciseModel.userAnswerRecitation;
+            }
+            if ([self.exerciseModel.ydtQuestionModel.An1 isEqualToString:optString]) {
+                self.title = @"A";
+            } else if ([self.exerciseModel.ydtQuestionModel.An2 isEqualToString:optString]) {
+                self.title = @"B";
+            } else if ([self.exerciseModel.ydtQuestionModel.An3 isEqualToString:optString]) {
+                self.title = @"C";
+            } else if ([self.exerciseModel.ydtQuestionModel.An4 isEqualToString:optString]) {
+                self.title = @"D";
+            }
+            if (self.exerciseModel.ydtQuestionModel.Type == 3) {
+//                NSArray *userAnswerArr = self.exerciseModel.userAnswer;
+                if ([userAnswerArr containsObject:@"预选Option"]) {
+                    if ([userAnswerArr containsObject:optString]) {
+                        [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_COLOR range:NSMakeRange(0, optString.length)];
+                        self.btnBgColor = RQ_MAIN_COLOR;
+                    } else {
+                        [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_1 range:NSMakeRange(0, optString.length)];
+                        self.btnBgColor = RQ_MAIN_TEXT_COLOR_WHITE;
+                    }
+                } else {
+                    if ([userAnswerArr containsObject:optString] && [answerOptionArr containsObject:optString]) {
+                        [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_GREEN range:NSMakeRange(0, optString.length)];
+                        self.title = @"";
+                        self.btnBgColor = RQ_MAIN_TEXT_COLOR_GREEN;
+                        if (RQ_Exercise_Module.currentExerciseType != RQExerciseType_Recitation) {
+                            self.exerciseModel.answerResultsType = (self.exerciseModel.answerResultsType == RQAnswerResultsType_Error)? RQAnswerResultsType_Error : RQAnswerResultsType_Correct;
+                        }
+                    } else if ([userAnswerArr containsObject:optString] && ![answerOptionArr containsObject:optString]) {
+                        [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_RED range:NSMakeRange(0, optString.length)];
+                        self.title = @"";
+                        self.btnBgColor = RQ_MAIN_TEXT_COLOR_RED;
+                        if (RQ_Exercise_Module.currentExerciseType != RQExerciseType_Recitation) {
+                            self.exerciseModel.answerResultsType = RQAnswerResultsType_Error;
+                        }
+                    } else if (![userAnswerArr containsObject:optString] && [answerOptionArr containsObject:optString]) {
+                        [_optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_GREEN range:NSMakeRange(0, optString.length)];
+                        self.btnBgColor = RQ_MAIN_TEXT_COLOR_GREEN;
+                        if (RQ_Exercise_Module.currentExerciseType != RQExerciseType_Recitation) {
+                            self.exerciseModel.answerResultsType = RQAnswerResultsType_Error;
+                        }
+                    } else {
+                        [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_1 range:NSMakeRange(0, optString.length)];
+                        self.btnBgColor = RQ_MAIN_TEXT_COLOR_WHITE;
+                    }
+                }
+            } else {
+                
+                NSString *answerOptionStr = allOptionsArr[self.exerciseModel.ydtQuestionModel.AnswerTrue.integerValue - 1];
+                
+//                NSArray *userAnswerArr = self.exerciseModel.userAnswer;
+                if (userAnswerArr.count > 0) {
+                    if ([answerOptionStr isEqualToString:optString]) {
+                        /// 正确选项
+                        [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_GREEN range:NSMakeRange(0, optString.length)];
+                        if ([userAnswerArr.firstObject isEqualToString:optString]) {
+                            self.title = @"";
+                            if (RQ_Exercise_Module.currentExerciseType != RQExerciseType_Recitation) {
+                                self.exerciseModel.answerResultsType = RQAnswerResultsType_Correct;
+                            }
+                        }
+                        self.btnBgColor = RQ_MAIN_TEXT_COLOR_GREEN;
+                    } else {
+                        /// 错误选项
+                        if ([userAnswerArr containsObject:optString]) {
+                            if (RQ_Exercise_Module.currentExerciseType != RQExerciseType_Recitation) {
+                                self.exerciseModel.answerResultsType = RQAnswerResultsType_Error;
+                                [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_RED range:NSMakeRange(0, optString.length)];
+                                self.title = @"";
+                                self.btnBgColor = RQ_MAIN_TEXT_COLOR_RED;
+                            } else {
+                                [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_1 range:NSMakeRange(0, optString.length)];
+                                self.btnBgColor = RQ_MAIN_TEXT_COLOR_WHITE;
+                            }
+                        } else {
+                            [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_1 range:NSMakeRange(0, optString.length)];
+                            self.btnBgColor = RQ_MAIN_TEXT_COLOR_WHITE;
+                        }
+                    }
+                } else {
+                    [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_1 range:NSMakeRange(0, optString.length)];
+                    self.btnBgColor = RQ_MAIN_TEXT_COLOR_WHITE;
+                }
+            }
+
+        }];
+        [[RACObserve(self.exerciseModel, userAnswer) deliverOnMainThread] subscribeNext:^(id  _Nullable x) {
+            @strongify(self)
+            if (self.exerciseModel.ydtQuestionModel.Type == 3) {
+                NSArray *userAnswerArr = (RQ_Exercise_Module.currentExerciseType == RQExerciseType_Recitation)? answerOptionArr.copy : self.exerciseModel.userAnswer;
+//                NSArray *userAnswerArr = self.exerciseModel.userAnswer;
+                if ([userAnswerArr containsObject:@"预选Option"]) {
+                    if ([userAnswerArr containsObject:optString]) {
+                        [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_COLOR range:NSMakeRange(0, optString.length)];
+                        self.btnBgColor = RQ_MAIN_COLOR;
+                    } else {
+                        [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_1 range:NSMakeRange(0, optString.length)];
+                        self.btnBgColor = RQ_MAIN_TEXT_COLOR_WHITE;
+                    }
+                } else {
+                    //self.operation = ^{};
+                    if ([userAnswerArr containsObject:optString] && [answerOptionArr containsObject:optString]) {
+                        [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_GREEN range:NSMakeRange(0, optString.length)];
+                        self.title = @"";
+                        self.btnBgColor = RQ_MAIN_TEXT_COLOR_GREEN;
+                        if (RQ_Exercise_Module.currentExerciseType != RQExerciseType_Recitation) {
+                            self.exerciseModel.answerResultsType = (self.exerciseModel.answerResultsType == RQAnswerResultsType_Error)? RQAnswerResultsType_Error : RQAnswerResultsType_Correct;
+                        }
+                    } else if ([userAnswerArr containsObject:optString] && ![answerOptionArr containsObject:optString]) {
+                        [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_RED range:NSMakeRange(0, optString.length)];
+                        self.title = @"";
+                        self.btnBgColor = RQ_MAIN_TEXT_COLOR_RED;
+                        if (RQ_Exercise_Module.currentExerciseType != RQExerciseType_Recitation) {
+                            self.exerciseModel.answerResultsType = RQAnswerResultsType_Error;
+                        }
+                    } else if (![userAnswerArr containsObject:optString] && [answerOptionArr containsObject:optString]) {
+                        [_optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_GREEN range:NSMakeRange(0, optString.length)];
+                        self.btnBgColor = RQ_MAIN_TEXT_COLOR_GREEN;
+                        if (RQ_Exercise_Module.currentExerciseType != RQExerciseType_Recitation) {
+                            self.exerciseModel.answerResultsType = RQAnswerResultsType_Error;
+                        }
+                    } else {
+                        [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_1 range:NSMakeRange(0, optString.length)];
+                        self.btnBgColor = RQ_MAIN_TEXT_COLOR_WHITE;
+                    }
+                }
+            } else {
+                
+                NSString *answerOptionStr = allOptionsArr[self.exerciseModel.ydtQuestionModel.AnswerTrue.integerValue - 1];
+                NSArray *userAnswerArr = (RQ_Exercise_Module.currentExerciseType == RQExerciseType_Recitation)? answerOptionArr.copy : self.exerciseModel.userAnswer;
+//                NSArray *userAnswerArr = self.exerciseModel.userAnswer;
+                if (userAnswerArr.count > 0) {
+                    //self.operation = ^{};
+                    if ([answerOptionStr isEqualToString:optString]) {
+                        /// 正确选项
+                        [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_GREEN range:NSMakeRange(0, optString.length)];
+                        if ([userAnswerArr.firstObject isEqualToString:optString]) {
+                            self.title = @"";
+                            if (RQ_Exercise_Module.currentExerciseType != RQExerciseType_Recitation) {
+                                self.exerciseModel.answerResultsType = RQAnswerResultsType_Correct;
+                            }
+                        }
+                        self.btnBgColor = RQ_MAIN_TEXT_COLOR_GREEN;
+                    } else {
+                        /// 错误选项
+                        if ([userAnswerArr containsObject:optString]) {
+                            if (RQ_Exercise_Module.currentExerciseType != RQExerciseType_Recitation) {
+                                self.exerciseModel.answerResultsType = RQAnswerResultsType_Error;
+                                [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_RED range:NSMakeRange(0, optString.length)];
+                                self.title = @"";
+                                self.btnBgColor = RQ_MAIN_TEXT_COLOR_RED;
+                            } else {
+                                [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_1 range:NSMakeRange(0, optString.length)];
+                                self.btnBgColor = RQ_MAIN_TEXT_COLOR_WHITE;
+                            }
+                        } else {
+                            [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_1 range:NSMakeRange(0, optString.length)];
+                            self.btnBgColor = RQ_MAIN_TEXT_COLOR_WHITE;
+                        }
+                    }
+                } else {
+                    [self.optsString addAttribute:NSForegroundColorAttributeName value:RQ_MAIN_TEXT_COLOR_1 range:NSMakeRange(0, optString.length)];
+                    self.btnBgColor = RQ_MAIN_TEXT_COLOR_WHITE;
+                }
+            }
+        }];
+        
+        [[[RACObserve(RQ_Exercise_Module, exerciseFontSize) takeUntil:self.rac_willDeallocSignal] deliverOnMainThread] subscribeNext:^(id  _Nullable x) {
+            @strongify(self)
+            self.optsString.yy_font = [UIFont systemFontOfSize:RQ_Exercise_Module.exerciseFontSize];
+            self.optsString = self.optsString;
+            self.labelHeight = [self getMessageHeightWithAttributedStr:self.optsString andLabel:self.yyLabel];
+        }];
+        
+        
+        RAC(self, rowHeight) = [[[RACSignal combineLatest:@[[RACObserve(RQ_Exercise_Module, exerciseFontSize) takeUntil:self.rac_willDeallocSignal],[RACObserve(self, labelHeight) takeUntil:self.rac_willDeallocSignal]] reduce:^(NSNumber *exerciseFontSize, NSNumber *labelHeight) {
+            return @(((labelHeight.floatValue < RQ_FIT_HORIZONTAL(30.f)? RQ_FIT_HORIZONTAL(30.f) : labelHeight.floatValue)));
+        }] deliverOnMainThread] takeUntil:self.rac_willDeallocSignal];
+        //答题-block
+        self.operation = ^{
+            
+        };
+    }
+    return self;
+}
+
+
+- (CGFloat)getMessageHeightWithAttributedStr:(NSMutableAttributedString *)attributedStr andLabel:(YYLabel *)lb {
+    lb.attributedText = attributedStr;
+    CGSize introSize = CGSizeMake(RQ_SCREEN_WIDTH - (16 * 3) - RQ_FIT_HORIZONTAL(30.f), CGFLOAT_MAX);
+    YYTextLayout *layout = [YYTextLayout layoutWithContainerSize:introSize text:attributedStr];
+    lb.textLayout = layout;
+    CGFloat introHeight = layout.textBoundingSize.height;
+    return  introHeight + ((RQ_Exercise_Module.exerciseFontSize - 16) * 8.f);
+}
+
+- (YYLabel *)yyLabel {
+    if (!_yyLabel) {
+        _yyLabel = [[YYLabel alloc] init];
+    }
+    return _yyLabel;
+}
+
+- (NSString *)itemClassName {
+    return @"NYExerciseOptionCell";
+}
+@end

+ 26 - 0
jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/ExerciseQuestion/NYExerciseQuestionItemViewModel.h

@@ -0,0 +1,26 @@
+//
+//  NYExerciseQuestionItemViewModel.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/31.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYExerciseQuestionItemViewModel : RQCommonItemViewModel
+@property (nonatomic, readonly, strong) RQExerciseModel *exerciseModel;
+
+@property (nonatomic, readonly, strong) NSString *typeString;
+@property (nonatomic, readonly, strong) NSMutableAttributedString *qusetionString;
+@property (nonatomic, readonly, assign) CGFloat labelHeight;
+@property (nonatomic, readonly, assign) CGFloat imageHeight;
+@property (nonatomic, readonly, strong) NSString *imageString;
+@property (nonatomic, readonly, strong) NSString *videoString;
+// init
+- (instancetype)initWithRQExerciseModel:(RQExerciseModel *)exerciseModel;
+@end
+
+NS_ASSUME_NONNULL_END

+ 230 - 0
jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/ExerciseQuestion/NYExerciseQuestionItemViewModel.m

@@ -0,0 +1,230 @@
+//
+//  NYExerciseQuestionItemViewModel.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/31.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "NYExerciseQuestionItemViewModel.h"
+#import "payRequsestHandler.h"
+
+@interface NYExerciseQuestionItemViewModel ()
+@property (nonatomic, readwrite, strong) RQExerciseModel *exerciseModel;
+@property (nonatomic, readwrite, strong) YYLabel *yyLabel;
+@property (nonatomic, readwrite, strong) NSString *typeString;
+@property (nonatomic, readwrite, strong) NSString *newString;
+@property (nonatomic, readwrite, strong) NSMutableAttributedString *qusetionString;
+@property (nonatomic, readwrite, assign) CGFloat labelHeight;
+@property (nonatomic, readwrite, assign) CGFloat imageHeight;
+@property (nonatomic, readwrite, strong) NSString *imageString;
+@property (nonatomic, readwrite, strong) NSString *videoString;
+@property (nonatomic, readwrite, strong) NSMutableAttributedString *spaceAttachment;
+
+@property (nonatomic, readwrite, strong) QMUIButton *readBtn;
+
+@property (nonatomic,assign) int readCount;
+
+@end
+
+@implementation NYExerciseQuestionItemViewModel
+- (instancetype)initWithRQExerciseModel:(RQExerciseModel *)exerciseModel {
+    if (self = [super init]) {
+        @weakify(self)
+        self.readCount = 0;
+        self.exerciseModel = exerciseModel;
+        dispatch_async(dispatch_get_main_queue(), ^{
+            @strongify(self)
+            self.qusetionString = [self dealQuestionStrWithRQExerciseModel:exerciseModel];
+            self.labelHeight = [self getMessageHeightWithAttributedStr:self.qusetionString andLabel:self.yyLabel];
+            
+        });
+        
+        
+
+        if (RQStringIsNotEmpty(exerciseModel.ydtQuestionModel.media_url)) {
+            if (RQStringIsNotEmpty(exerciseModel.ydtQuestionModel.sinaimg)) {
+                self.imageString = exerciseModel.ydtQuestionModel.media_url;
+                self.videoString = @"";
+            } else if (RQStringIsNotEmpty(exerciseModel.ydtQuestionModel.video_url)) {
+                self.imageString = @"";
+                self.videoString = exerciseModel.ydtQuestionModel.media_url;
+            } else {
+                self.imageString = @"";
+                self.videoString = @"";
+            }
+        } else {
+            self.imageString = @"";
+            self.videoString = @"";
+        }
+        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;
+                    self.imageString = exerciseModel.ydtQuestionModel.sinaimg;
+                }else{
+                    if ([exerciseModel.ydtQuestionModel.media_url containsString:@"https://"]) {
+                        media_name = [exerciseModel.ydtQuestionModel.media_url componentsSeparatedByString:@"/"].lastObject;
+                    }
+                }
+                NSData *mediaData = [RQ_YDTQuestion_Module getMediaDataWithMediaName:media_name];
+                if (mediaData) {
+                    NSString *imageStr = [mediaData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
+                    UIImage *sinaImage = [UIImage sd_imageWithData:[NSData dataWithBase64EncodedString:imageStr] scale:1 firstFrameOnly:YES];
+                    exerciseModel.ydtQuestionModel.sinaImage = sinaImage;
+                }
+            }
+            
+        } else if (RQStringIsNotEmpty(exerciseModel.ydtQuestionModel.video_url) && RQStringIsNotEmpty(exerciseModel.ydtQuestionModel.media_url)) {
+            NSString *media_name;
+            if ([exerciseModel.ydtQuestionModel.video_url containsString:@"https://"]) {
+                media_name = [exerciseModel.ydtQuestionModel.video_url componentsSeparatedByString:@"/"].lastObject;
+            } else {
+                media_name = exerciseModel.ydtQuestionModel.video_url;
+            }
+            NSURL *video_filePath_Url;
+            if (!RQObjectIsNil(exerciseModel.ydtQuestionModel.media_content) && !RQ_COMMON_MANAGER.JSJP_Is_Online_Media_Video) {
+                NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+                NSString *documentsDirectory = [paths objectAtIndex:0];
+                NSString *path = [documentsDirectory stringByAppendingPathComponent:media_name];
+                [[NSFileManager defaultManager] createFileAtPath:path contents:exerciseModel.ydtQuestionModel.media_content attributes:nil];
+                video_filePath_Url = [NSURL fileURLWithPath:path];
+            }
+            exerciseModel.ydtQuestionModel.video_filePath_Url = video_filePath_Url;
+        }
+        
+        
+        
+//        if (RQStringIsNotEmpty(self.imageString)) {
+//            __block CGSize imageSize = CGSizeMake(RQ_SCREEN_WIDTH - 32.f, (RQ_SCREEN_WIDTH - 32.f) * (175.f / 345.f));
+//            if (exerciseModel.ydtQuestionModel.sinaImage) {
+//                imageSize = exerciseModel.ydtQuestionModel.sinaImage.size;
+//            } else {
+//                NSString *cacheKeyStr = [[YYWebImageManager sharedManager] cacheKeyForURL:[NSURL URLWithString:self.imageString]];
+//                UIImage *cacheImage = [[YYImageCache sharedCache] getImageForKey:cacheKeyStr];
+//                if (cacheImage) {
+//                    imageSize = cacheImage.size;
+//                } else {
+//                    dispatch_async(dispatch_get_global_queue(0, 0), ^{
+//                        @strongify(self)
+//                        // 处理耗时操作的代码块...
+//                        imageSize = [UIImage getImageSizeWithURL:self.imageString];
+//                        //通知主线程刷新
+//                        dispatch_async(dispatch_get_main_queue(), ^{
+//                            @strongify(self)
+//                            //回调或者说是通知主线程刷新,
+//                            if (imageSize.width == 0 || imageSize.height == 0) {
+//                                self.imageHeight = (RQ_SCREEN_WIDTH - 32.f) * (175.f / 345.f);
+//                            } else {
+//                                self.imageHeight = (RQ_SCREEN_WIDTH - 32.f) * (imageSize.height / imageSize.width);
+//                            }
+//                        });
+//                    });
+//                }
+//            }
+//            if (imageSize.width == 0 || imageSize.height == 0) {
+//                self.imageHeight = (RQ_SCREEN_WIDTH - 32.f) * (175.f / 345.f);
+//            } else {
+//                self.imageHeight = (RQ_SCREEN_WIDTH - 32.f) * (imageSize.height / imageSize.width);
+//            }
+//        } else if (RQStringIsNotEmpty(self.videoString)) {
+//            self.imageHeight = (RQ_SCREEN_WIDTH - 32.f) * (175.f / 345.f);
+//        }
+        self.imageHeight = 0;
+        self.rowHeight = 16.f + self.labelHeight + ((self.imageHeight == 0)? 0 : (16.f + self.imageHeight)) + 16.f;
+        
+        [[[RACObserve(RQ_Exercise_Module, exerciseFontSize) takeUntil:self.rac_willDeallocSignal] deliverOnMainThread] subscribeNext:^(id  _Nullable x) {
+            @strongify(self)
+            self.qusetionString = [self dealQuestionStrWithRQExerciseModel:exerciseModel];
+            self.labelHeight = [self getMessageHeightWithAttributedStr:self.qusetionString andLabel:self.yyLabel];
+        }];
+        
+        
+        RAC(self, rowHeight) = [[RACSignal combineLatest:@[[RACObserve(RQ_Exercise_Module, exerciseFontSize) takeUntil:self.rac_willDeallocSignal],[RACObserve(self, imageHeight) takeUntil:self.rac_willDeallocSignal],[RACObserve(self, labelHeight) takeUntil:self.rac_willDeallocSignal]] reduce:^(NSNumber *exerciseFontSize, NSNumber *imageHeight, NSNumber *labelHeight) {
+            return @(16.f + labelHeight.floatValue + ((imageHeight.floatValue == 0)? 0 : (16.f + imageHeight.floatValue)) + 16.f);
+        }] deliverOnMainThread] ;
+        
+    }
+    return self;
+}
+
+- (NSString *)newString {
+    return @"";
+}
+
+- (NSMutableAttributedString *)dealQuestionStrWithRQExerciseModel:(RQExerciseModel *)exerciseModel {
+    
+    NSString *questionStr = [NSString stringWithFormat:@"%ld、%@",(long)exerciseModel.ydtQuestionModel.num + 1 ,exerciseModel.ydtQuestionModel.Question];
+    
+    NSMutableAttributedString *text = [NSMutableAttributedString new];
+    NSMutableAttributedString *testText = [NSMutableAttributedString new];
+    
+    [testText appendAttributedString:self.spaceAttachment];
+
+    
+    NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:questionStr];
+    attrString.yy_font = [UIFont systemFontOfSize:RQ_Exercise_Module.exerciseFontSize];
+    attrString.yy_color = RQ_MAIN_TEXT_COLOR_1;
+    
+    [testText appendAttributedString: attrString];
+    
+    
+    [text appendAttributedString:testText];
+//    [text appendAttributedString:[self padding]];
+    text.yy_lineSpacing = 8;
+    return text;
+}
+
+/**
+ *  获取lb的高度
+ *  @param mess lb.text
+ *  @param lb (YYLabel *)label
+ *  @return lb的高度
+ */
+- (CGFloat)getMessageHeight:(NSString *)mess andLabel:(YYLabel *)lb {
+    NSMutableAttributedString *introText = [[NSMutableAttributedString alloc] initWithString:mess];
+    introText.yy_font = [UIFont boldSystemFontOfSize:RQ_Exercise_Module.exerciseFontSize];
+    introText.yy_lineSpacing = 8;
+    lb.attributedText = introText;
+    CGSize introSize = CGSizeMake(RQ_SCREEN_WIDTH-131 -220 - (16 * 2), CGFLOAT_MAX);
+    YYTextLayout *layout = [YYTextLayout layoutWithContainerSize:introSize text:introText];
+    lb.textLayout = layout;
+    CGFloat introHeight = layout.textBoundingSize.height;
+    return introHeight;
+}
+
+- (CGFloat)getMessageHeightWithAttributedStr:(NSMutableAttributedString *)attributedStr andLabel:(YYLabel *)lb {
+    lb.attributedText = attributedStr;
+    CGSize introSize = CGSizeMake(RQ_SCREEN_WIDTH-131 -220 - (16 * 2), CGFLOAT_MAX);
+    YYTextLayout *layout = [YYTextLayout layoutWithContainerSize:introSize text:attributedStr];
+    lb.textLayout = layout;
+    CGFloat introHeight = layout.textBoundingSize.height;
+    return introHeight;
+}
+
+- (YYLabel *)yyLabel {
+    if (!_yyLabel) {
+        _yyLabel = [[YYLabel alloc] init];
+    }
+    return _yyLabel;
+}
+
+- (NSMutableAttributedString *)spaceAttachment {
+    if (!_spaceAttachment) {
+        UIView *spaceView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 4, 25)];
+        _spaceAttachment = [NSMutableAttributedString yy_attachmentStringWithContent:spaceView contentMode:UIViewContentModeCenter attachmentSize:CGSizeMake(4, 25) alignToFont:[UIFont boldSystemFontOfSize:RQ_Exercise_Module.exerciseFontSize] alignment:YYTextVerticalAlignmentCenter];
+    }
+    return _spaceAttachment;
+}
+
+- (NSString *)itemClassName {
+    return @"NYExerciseQuestionCell";
+}
+
+
+@end

+ 22 - 0
jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/ExerciseQuestion/NYQuestionContentViewModel.h

@@ -0,0 +1,22 @@
+//
+//  NYQuestionContentViewModel.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/31.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYQuestionContentViewModel : NSObject<UITableViewDelegate,UITableViewDataSource>
+
+@property (nonatomic,strong) NSMutableArray *dataSource;
+
+-(void)loadQuestionContentView:(RQExerciseModel*)exerciseModel tableView:(UITableView *)tableView;
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 113 - 0
jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/ExerciseQuestion/NYQuestionContentViewModel.m

@@ -0,0 +1,113 @@
+//
+//  NYQuestionContentViewModel.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/31.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "NYQuestionContentViewModel.h"
+
+@interface NYQuestionContentViewModel ()
+
+
+@end
+
+@implementation NYQuestionContentViewModel
+
+
+- (void)loadQuestionContentView:(RQExerciseModel *)exerciseModel tableView:(UITableView *)tableView {
+    [self.dataSource removeAllObjects];
+    RQCommonGroupViewModel *group0 = [RQCommonGroupViewModel groupViewModel];
+    NYExerciseQuestionItemViewModel *exerciseQuestionItemViewModel = [[NYExerciseQuestionItemViewModel alloc] initWithRQExerciseModel:exerciseModel];
+    group0.itemViewModels = @[exerciseQuestionItemViewModel];
+    [self.dataSource addObject:group0];
+    @weakify(self)
+    RQCommonGroupViewModel *group1 = [RQCommonGroupViewModel groupViewModel];
+        NSArray *allOptionsArr = [@[exerciseModel.ydtQuestionModel.An1,
+                                    exerciseModel.ydtQuestionModel.An2,
+                                    exerciseModel.ydtQuestionModel.An3,
+                                    exerciseModel.ydtQuestionModel.An4,
+                                  ].rac_sequence.signal filter:^BOOL(NSString *optionString) {
+            return RQStringIsNotEmpty(optionString);
+        }].toArray;
+    group1.itemViewModels = [allOptionsArr.rac_sequence.signal map:^id _Nullable(NSString *optionString) {
+            @strongify(self)
+            return [[NYExerciseOptionItemViewModel alloc] initWithRQExerciseModel:exerciseModel allOptionsArr:allOptionsArr optString:optionString];
+        }].toArray;
+    [self.dataSource addObject:group1];
+    [tableView reloadData];
+}
+
+#pragma mark - LazyLoad
+
+- (NSMutableArray *)dataSource {
+    if(!_dataSource){
+        _dataSource = [NSMutableArray new];
+    }
+    return _dataSource;
+}
+
+- (void)configureCell:(RQCommonCollectionViewCell *)cell atIndexPath:(NSIndexPath *)indexPath withObject:(id)object {
+    [cell bindViewModel:object];
+}
+
+#pragma mark - UITableViewDataSource
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
+    return self.dataSource ? self.dataSource.count : 0;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    return [((RQCommonGroupViewModel *)self.dataSource[section]).itemViewModels count];
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath {
+    RQCommonGroupViewModel *groupViewModel = self.dataSource[indexPath.section];
+    RQCommonCollectionItemViewModel *itemViewModel = groupViewModel.itemViewModels[indexPath.row];
+    return [NSClassFromString(itemViewModel.itemClassName) cellWithTableView:tableView];
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
+    /// fetch cell
+    RQCommonCell *cell = (RQCommonCell *)[self tableView:tableView dequeueReusableCellWithIdentifier:@"UITableViewCell" forIndexPath:indexPath];
+    RQCommonGroupViewModel *groupViewModel = self.dataSource[indexPath.section];
+    id object = groupViewModel.itemViewModels[indexPath.row];
+    /// bind model
+    [self configureCell:cell atIndexPath:indexPath withObject:(id)object];
+    [cell setIndexPath:indexPath rowsInSection:groupViewModel.itemViewModels.count];
+    return cell;
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
+    RQCommonGroupViewModel *groupViewModel = self.dataSource[indexPath.section];
+    RQCommonItemViewModel *itemViewModel = groupViewModel.itemViewModels[indexPath.row];
+    CGFloat rowH = itemViewModel.rowHeight;
+    return rowH; //itemViewModel.rowHeight;
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
+    RQCommonGroupViewModel *groupViewModel = self.dataSource[section];
+    if (groupViewModel.groupModel) {
+        return groupViewModel.groupModel.headerHeight;
+    } else {
+        return groupViewModel.headerHeight;
+    }
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
+    RQCommonGroupViewModel *groupViewModel = self.dataSource[section];
+    if (groupViewModel.groupModel) {
+        return groupViewModel.groupModel.footerHeight;
+    } else {
+        return groupViewModel.footerHeight;
+    }
+}
+
+#pragma mark      UITableViewDelegate
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    NSLog(@"indexPath==%zd",indexPath.row);
+}
+
+
+@end

+ 17 - 0
jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/NYExaminationRoomViewModel.h

@@ -0,0 +1,17 @@
+//
+//  NYExaminationRoomViewModel.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/17.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYExaminationRoomViewModel : RQBaseViewModel
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 13 - 0
jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/NYExaminationRoomViewModel.m

@@ -0,0 +1,13 @@
+//
+//  NYExaminationRoomViewModel.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/17.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "NYExaminationRoomViewModel.h"
+
+@implementation NYExaminationRoomViewModel
+
+@end

+ 19 - 0
jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/NYExaminationViewModel.h

@@ -0,0 +1,19 @@
+//
+//  NYExaminationViewModel.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/14.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYExaminationViewModel : RQBaseViewModel
+
+@property (nonatomic,assign) int km;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 13 - 0
jiaPei/Modules/OtherModules/ExaminationModule/ViewModel/NYExaminationViewModel.m

@@ -0,0 +1,13 @@
+//
+//  NYExaminationViewModel.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/10/14.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "NYExaminationViewModel.h"
+
+@implementation NYExaminationViewModel
+
+@end

+ 1 - 1
jiaPei/Modules/OtherModules/ExerciseModule/Model/RQExerciseModel.h

@@ -33,7 +33,7 @@ NS_ASSUME_NONNULL_BEGIN
  *  用户选项
  */
 @property (nonatomic, readwrite, copy) NSArray *userAnswer;
-
+@property (nonatomic, readwrite, copy) NSString *userAnswerStr;
 /**
  *  用户(背题)-选项
  */

+ 1 - 1
jiaPei/Modules/OtherModules/ExerciseModule/ViewModel/ExercisePage/itemViewModel/RQExerciseOptionItemViewModel.m

@@ -287,7 +287,7 @@
 
 - (CGFloat)getMessageHeightWithAttributedStr:(NSMutableAttributedString *)attributedStr andLabel:(YYLabel *)lb {
     lb.attributedText = attributedStr;
-    CGSize introSize = CGSizeMake(RQ_SCREEN_WIDTH - (16 * 3) - RQ_FIT_HORIZONTAL(30.f), CGFLOAT_MAX);
+    CGSize introSize = CGSizeMake(RQ_SCREEN_WIDTH - (16 * 2) - RQ_FIT_HORIZONTAL(30.f), CGFLOAT_MAX);
     YYTextLayout *layout = [YYTextLayout layoutWithContainerSize:introSize text:attributedStr];
     lb.textLayout = layout;
     CGFloat introHeight = layout.textBoundingSize.height;

+ 2 - 0
jiaPei/Modules/OtherModules/VideoModule/RQVideoModule.h

@@ -97,4 +97,6 @@ typedef NS_ENUM(NSUInteger, RQVideoDetailSubPageUpdateDataType) {
 
 - (BOOL)isCanWatchWithVideosItem:(VideosItem *)videosItem;
 - (void)playVideoWithVideosItem:(VideosItem *)videosItem videosItemArr:(NSArray *)videosItemArr playView:(UIView *)playView scrollView:(UIScrollView *)scrollView;
+- (void)backBtnClickActiondo;
+
 @end

+ 3 - 1
jiaPei/Modules/OtherModules/VideoModule/RQVideoModule.m

@@ -325,7 +325,9 @@ static id rq_VideoModule = nil;
     RQ_Video_Module.currentpPlayVideosItem = videoItem;
 }
 
-
+- (void)backBtnClickActiondo{
+    [self.controlView backBtnClickActiondo];
+}
 #pragma mark - LazyLoad
 - (ZFPlayerControlView *)controlView {
     if (!_controlView) {

BIN
jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/hc.db


BIN
jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/js.db


BIN
jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/kc.db


BIN
jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/mtc.db


BIN
jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/xc.db


+ 10 - 0
jiaPei/NewTheory/NYBasetjTimeVC.m

@@ -418,7 +418,17 @@ typedef enum {
             pxkm = @"4";
         }
         int remainder1 = [RQ_USER_MANAGER.currentUser.city isEqualToString:@"3303"]? (int)(self.seconds)%1200 : (int)(self.seconds)%780;
+//        int remainder1 = (int)(self.seconds)%120;
         if (remainder1 == 0) {
+            NSLog(@"在视频的时候-切换成竖屏%zd",RQ_Video_Module.playerController.player.isFullScreen);
+            if(RQ_Video_Module.playerController.player.isFullScreen){//在视频的时候-切换成竖屏
+                [RQ_Video_Module backBtnClickActiondo];
+            }
+            UIViewController *current_VC = RQControllerHelper.currentViewController;
+            if([current_VC isKindOfClass:[NYExaminationViewController class]]||
+               [current_VC isKindOfClass:[NYExaminationRoomViewController class]]){
+                return ;//在考试模式下不显示人脸拍照
+            }
             [self.timer setFireDate:[NSDate distantFuture]];
             SCLAlertView *alert = [[SCLAlertView alloc] initWithNewWindow];
             alert.backgroundViewColor = backGroundColor;

+ 34 - 13
jiaPei/NewTheory/View/NYClassRoomPeiCell.m

@@ -27,6 +27,8 @@
 
 @property (nonatomic ,strong) CultivateInfoModel *cultivateInfo;
 
+@property (nonatomic ,copy) NSString *qrcodeData;
+
 // 在头文件中定义一个属性来跟踪扫描状态
 @property (nonatomic, assign) BOOL isScanning;
 @property (nonatomic, assign) int gotoType;
@@ -89,6 +91,11 @@
     if(code==99){
         self.signInOrsignOutItem.hidden = YES;
     }
+    if(code==98){
+        self.signInOrsignOutItem.hidden = YES;
+        //提示-签退
+        ShowMsg(@"后台签退了");
+    }
     [self.signInOrsignOutItem setTitleNormal:@"签到"];
     if(_cultivateInfo){
         [self.signInOrsignOutItem setTitleNormal:@"签退"];
@@ -135,6 +142,7 @@
 
 //获取课堂 照片
 - (void)getPhotoArray{
+    __weak typeof(self) weakSelf = self;
     NSString *classid = self.cultivateInfo.classid;
     NSString *type = self.viewModel.classType;
     NSMutableArray *arr = [NSMutableArray array];
@@ -155,12 +163,22 @@
         NSArray<CultivatePhotoModel*> *photo_array = [CultivatePhotoModel modelArrayWithJSON:dict[@"body"][@"photos"]];
         [self.photosArray addObjectsFromArray:photo_array];
         [self.collectionView reloadData];
+        NSLog(@"gotoType====%d",weakSelf.gotoType);
+        if(weakSelf.gotoType!=1){//非签退状态-进行判断是否存在签退照片
+            //判断遇见有签退-照片 - 直接签退
+            NSPredicate *predicate = [NSPredicate predicateWithFormat:@"event=%d",18];
+            NSArray *filterdArray = [photo_array filteredArrayUsingPredicate:predicate];
+            if(filterdArray.count>0){
+                [weakSelf gotoSignOutdo:weakSelf.cultivateInfo.qrcodeData];//签退
+                return;
+            }
+        }
     }];
 }
 
 //过程照片
 - (IBAction)submit_clickdo:(UIButton *)sender {
-    
+    self.gotoType = 0;
     self.submit_btn.userInteractionEnabled = NO;
     //定位功能
     __weak typeof(self) weakSelf = self;
@@ -171,7 +189,7 @@
             _myLocation = location.coordinate;
             NSString *photoType = @"19";
             if(weakSelf.photosArray.count==0){//如果没有签到记录
-                photoType = @"17";
+                photoType = @"17";//17签到照片18签退照片19过程照片
             }
             [weakSelf photoCoursedo:photoType];
         }else{
@@ -306,9 +324,9 @@
         self.submit_btn.userInteractionEnabled = YES;
         if ([dict[@"code"] intValue] == 0) {
             ShowMsg(@"上传照片成功!");
-            if(self.gotoType==1){//签退
+            if(self.gotoType==1&&[photoType isEqualToString:@"18"]){//签退
                 if(self.cultivateInfo.isQrcodeQt){
-                    [self QRCodeScanningdo];
+                    [self gotoSignOutdo:self.qrcodeData];//签退
                 }else{
                     [self gotoSignOutdo:self.cultivateInfo.qrcodeData];//签退
                 }
@@ -343,15 +361,15 @@
             [MBProgressHUD rq_hideHUD];
             if (success) {
                 _myLocation = location.coordinate;
-                //判断遇见有签退-照片 - 直接签退
-                NSPredicate *predicate = [NSPredicate predicateWithFormat:@"event=%d",18];
-                NSArray *filterdArray = [self.photosArray filteredArrayUsingPredicate:predicate];
-                if(filterdArray.count>0){
-                    [weakSelf QRCodeScanningdo];//扫码签退
-                    return;
+                //先扫二维码
+                if(weakSelf.gotoType==1){//签退
+                    if(weakSelf.cultivateInfo.isQrcodeQt){
+                        [weakSelf QRCodeScanningdo];
+                    }else{
+                        //签退-距离提示
+                        [weakSelf photoCoursedo:@"18"];
+                    }
                 }
-                //签退-距离提示
-                [weakSelf photoCoursedo:@"18"];
             }
         }];
         return;
@@ -391,7 +409,10 @@
         if (isSuccess) {
             NSLog(@"二维码扫码成功");
             if(weakSelf.gotoType==1){
-                [weakSelf gotoSignOutdo:result];//签退
+                weakSelf.qrcodeData = result;
+                weakSelf.isScanning = NO;
+                //签退-距离提示
+                [weakSelf photoCoursedo:@"18"];
             }else{
                 [weakSelf gotoSignIndo:result];//签到
             }

+ 1 - 0
jiaPei/PrefixHeader.pch

@@ -115,6 +115,7 @@
 #import "RQDiscoverModule.h"
 #import "RQProfileModule.h"
 #import "MainModule.h"
+#import "NYExaminationModule.h"
 
 #pragma mark - VC
 #import "NYBasetjTimeVC.h"

+ 4 - 0
jiaPei/Utils/Category/ZFPlayer/ZFPlayerControlView+RQExtension.h

@@ -19,6 +19,10 @@ NS_ASSUME_NONNULL_BEGIN
  @param fullScreenMode 全屏模式
  */
 - (void)updateTitle:(NSString *)title coverURLString:(NSString *)coverUrl placeholderImage:(UIImage *)placeholder fullScreenMode:(ZFFullScreenMode)fullScreenMode;
+/**
+ 返回- 回到竖屏
+ **/
+- (void)backBtnClickActiondo;
 @end
 
 NS_ASSUME_NONNULL_END

+ 10 - 0
jiaPei/Utils/Category/ZFPlayer/ZFPlayerControlView+RQExtension.m

@@ -22,4 +22,14 @@
     [self.portraitControlView showTitle:title fullScreenMode:fullScreenMode];
     [self.landScapeControlView showTitle:title fullScreenMode:fullScreenMode];
 }
+
+- (void)backBtnClickActiondo {
+    NSString *methodName = @"backBtnClickAction:"; //直接注入-方法
+    SEL selector = NSSelectorFromString(methodName);
+    if ([self.landScapeControlView respondsToSelector:selector]) {
+        [self.landScapeControlView  performSelector:selector withObject:self.landScapeControlView.backBtn];
+    } else {
+        NSLog(@"Method %@ not found", methodName);
+    }
+}
 @end

+ 2 - 0
jiaPei/Utils/Router/RQRouter.m

@@ -130,6 +130,8 @@ static RQRouter *sharedInstance_ = nil;
              @"RQRetrainOrderViewModel"             :               @"RQRetrainOrderViewController",
              @"RQStudentChangeSchoolViewModel"      :               @"StudentChangeSchoolVC",
              @"RQExplainVideoViewModel"             :               @"RQExplainVideoViewController",
+             @"NYExaminationViewModel"              :               @"NYExaminationViewController",
+             @"NYExaminationRoomViewModel"          :               @"NYExaminationRoomViewController",
     };
 }
 @end

+ 1 - 0
jiaPei/Vendor/SmallVideo/General/Tool/PrefixHeader.pch

@@ -131,6 +131,7 @@
 /// 16进制 颜色
 #define SL_UIColorFromHex(rgbValue, a) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:(a)]
 
+
 //---------------------- About Log 打印日志 ----------------------------
 /// 打印
 #ifdef DEBUG