RQTimeSingleItemViewModel.m 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. //
  2. // RQTimeSingleItemViewModel.m
  3. // jiaPei
  4. //
  5. // Created by 张嵘 on 2022/11/25.
  6. // Copyright © 2022 JCZ. All rights reserved.
  7. //
  8. #import "RQTimeSingleItemViewModel.h"
  9. #import "TrainInfoVC.h"//我的学时
  10. #import "RQCustomWebViewViewController.h"
  11. #import "ScanVC.h"
  12. @interface RQTimeSingleItemViewModel () {
  13. PeriodVC *KVOPeriodVC;
  14. ShiCaoPeriodVC *KVOSCPeriodVC;
  15. NSString *orderId; // 订单ID
  16. NSString *classCode; // 课程编码
  17. NSString *subject; // 科目
  18. NSString *coachOrderId; // 教练订单ID
  19. NSDictionary *coachQRCodeDic;
  20. }
  21. @end
  22. @implementation RQTimeSingleItemViewModel
  23. - (instancetype)init {
  24. if (self = [super init]) {
  25. @weakify(self)
  26. self.itemSize = CGSizeMake(RQ_FIT_HORIZONTAL(90.f), RQ_FIT_HORIZONTAL(120.f) - 8.f);
  27. self.operation = ^{
  28. if (RQ_USER_MANAGER.isShouldLogin) {
  29. [RQ_VIP_Module isActiveWithCcomplete:^(RQActivationModel * _Nullable activationModel, BOOL isSuccess) {
  30. @strongify(self)
  31. if (isSuccess) {
  32. if (activationModel.isShare) {
  33. if (activationModel.isActive == 1) {
  34. [self gotoVCWithStr:self.title];
  35. } else {
  36. [RQ_VIP_Module gotoVipViewWithDictType:RQ_USER_MANAGER.currentUser.city];
  37. }
  38. } else {
  39. [self gotoVCWithStr:self.title];
  40. }
  41. }
  42. }];
  43. }
  44. };
  45. }
  46. return self;
  47. }
  48. - (NSString *)itemClassName {
  49. return @"RQTimeSingleCell";
  50. }
  51. - (void)gotoVCWithStr:(NSString *)str {
  52. if ([str isEqualToString:@"理论计时"]) {
  53. [self gotoPeriod];
  54. } else if ([str isEqualToString:@"从业考核"]||[str isEqualToString:@"从业计时"]) {
  55. [self gotoPeriod];
  56. } else if ([str isEqualToString:@"我的学时"]) {
  57. [self gotoTrainInfo];
  58. } else {
  59. }
  60. }
  61. - (void)gotoPeriod {
  62. PeriodVC *vc = nil;
  63. if (myDelegate.tPeriodVC) {
  64. vc = myDelegate.tPeriodVC;
  65. }else {
  66. KVOPeriodVC = [[PeriodVC alloc] init];
  67. vc = KVOPeriodVC;
  68. }
  69. [self navPushHideTabbarToVC:vc];
  70. }
  71. - (void)gotoTimi {
  72. SCLAlertView *alert = [[SCLAlertView alloc] initWithNewWindowWidth:RQ_SCREEN_WIDTH - 32];
  73. alert.backgroundViewColor = backGroundColor;
  74. alert.customViewColor = RQ_MAIN_COLOR;
  75. UITextView *view = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, RQ_SCREEN_WIDTH - 64, RQ_SCREEN_HEIGHT * 0.5)];
  76. view.font = [UIFont systemFontOfSize:15];
  77. NSMutableString *content = [NSMutableString string];
  78. content.string = @"请注意:\n\n 本系统是按照2016驾驶员培训新国标要求,严格照规范设计,终端上传分钟学时来计算,在计时过程中请注意以下几点: \n\n1、如果所在地市有开启围栏,请注意确保您当前的位置在规定的围栏内训练,否则分钟学时无效 \n\n2、如果所在地市有开启培训时段,请确保您当前训练时间符合规定,比如早上6:00-20:00 \n\n3、确保教练手机是正常联网且安装支持3G以上的移动,联通和电信的SIM,否则无法采集到手机终端的位置,系统会判定分钟学时无效 \n\n4、系统为防止特殊情况,教练带教过程接到电话,允许断网一段时间,默认15分钟,如果超过15分钟,所带教学员的分钟学时无效 \n\n5、学员和教练的有效距离不能超过规定距离,否则分钟学时无效,详情请咨询教练或您所在的驾校 \n\n6、系统默认在2分钟及以上时间段内,如果移动距离为0米,视为无效分钟学时 \n\n7、根据规定,学员科目二和科目三1分钟内移动距离不能低于规定的数值,否则分钟学时无效,具体询问驾校或教练 \n\n8、如果您选择计时收费训练,您可以在训练结束且支付完成后对教练进行评价和投诉,如果训练完成后不支付,您的学时将无效且无法进行下一次训练 \n\n 为了保证您的合法利益,请遵守规定,同时也请提醒您的教练,手机不能断网或在带教过程中长时间接听电话,否则会影响您的学时有效性判断,导致学时无效";
  79. view.text = content.mutableCopy;
  80. view.backgroundColor = backGroundColor;
  81. CGFloat textHeight = [view.text heightForWid:view.width Font:15];
  82. view.height = (textHeight > RQ_SCREEN_HEIGHT/2)? RQ_SCREEN_HEIGHT/2 : textHeight;
  83. [alert addCustomView:view];
  84. [alert addButton:@"不再显示" actionBlock:^(void) {
  85. [[NSUserDefaults standardUserDefaults] setValue:@"doNotShowNotice" forKey:@"isShowNotice"];
  86. [self gotoScanVCAction];
  87. }];
  88. [alert addButton:@"同意" actionBlock:^(void) {
  89. [self gotoScanVCAction];
  90. }];
  91. if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"isShowNotice"] isKindOfClass:[NSString class]] && [[[NSUserDefaults standardUserDefaults] objectForKey:@"isShowNotice"] isEqualToString:@"doNotShowNotice"]) {
  92. [self gotoScanVCAction];
  93. }else {
  94. [alert showInfo:RQControllerHelper.currentViewController title:@"" subTitle:@"" closeButtonTitle:@"不同意" duration:0.0f];
  95. }
  96. }
  97. - (void)gotoTrainInfo {
  98. if (RQ_USER_MANAGER.isycbd == 1 && RQ_USER_MANAGER.ycbdFaceCount == 0) {
  99. NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"http://fj.jppt.com.cn/jsjp/wechat/toClassHourQueryByStuId.html?stuId=%@&dqbh=%@&app=ios",RQ_USER_MANAGER.currentUser.outId, RQ_USER_MANAGER.currentUser.city]];
  100. RQCustomWebViewViewController *vc = [[RQCustomWebViewViewController alloc] init];
  101. vc.url = URL.absoluteString;
  102. vc.webView.scrollView.bounces = NO;
  103. RQBaseNavigationController *nav = [[RQBaseNavigationController alloc] initWithRootViewController:vc];
  104. [RQControllerHelper.topViewController presentViewController:nav animated:YES completion:nil];
  105. } else {
  106. TrainInfoVC * tvc = [[TrainInfoVC alloc]init];
  107. [self navPushHideTabbarToVC:tvc];
  108. }
  109. }
  110. // 跳转至扫码页面
  111. - (void)gotoScanVCAction {
  112. ScanVC *scan = [[ScanVC alloc] init];
  113. scan.type = 1;
  114. scan.homeVC = RQControllerHelper.currentViewController;
  115. [scan scanBlock:^(NSDictionary *scanQRCodeResultDic) {
  116. coachQRCodeDic = scanQRCodeResultDic;
  117. if ([scanQRCodeResultDic[@"scanType"] isEqualToString:@"allSignOut"]) {
  118. [self updateReserveEnd];
  119. }else if ([scanQRCodeResultDic[@"scanType"] isEqualToString:@"jhPeriod"]) {
  120. [self uploadReserveOrder];
  121. }
  122. }];
  123. [self navPushHideTabbarToVC:scan];
  124. }
  125. - (void)navPushHideTabbarToVC:(UIViewController*)vc {
  126. //判断是否是homebase的子视图控制器(它的子视图控制器直接设置self.hidesBottomBarWhenPushed = YES;会无效)
  127. dispatch_async(dispatch_get_main_queue(), ^{
  128. UIViewController *mVc = RQControllerHelper.currentViewController;
  129. mVc.hidesBottomBarWhenPushed = YES;
  130. [mVc.navigationController pushViewController:vc animated:YES];
  131. if (!mVc.navigationController.tabBarController.tabBar.isHidden) {
  132. mVc.hidesBottomBarWhenPushed = NO;
  133. }
  134. });
  135. }
  136. #pragma mark - Net Methodds
  137. //生成订单
  138. - (void)uploadReserveOrder {
  139. [LoadingView showHUD];
  140. if (![Util connectedToNetWork]) {
  141. showMsgUnconnect();
  142. return;
  143. }
  144. NSMutableArray *arr=[NSMutableArray array];
  145. [arr addPro:@"reserveId" Value:[coachQRCodeDic[@"dataString"] componentsSeparatedByString:@";"][3]];
  146. [arr addPro:@"userId" Value:RQ_USER_MANAGER.currentUser._id];
  147. [arr addPro:@"dqbh" Value:RQ_USER_MANAGER.currentUser.city];
  148. [arr addPro:@"coachId" Value:[coachQRCodeDic[@"dataString"] componentsSeparatedByString:@";"].lastObject];
  149. [arr addPro:@"sim" Value:RQ_USER_MANAGER.currentUser.telphone];
  150. [arr addPro:@"stuOutId" Value:RQ_USER_MANAGER.currentUser.outId];
  151. [arr addPro:@"coachOutId" Value:[coachQRCodeDic[@"dataString"] componentsSeparatedByString:@";"][0]];
  152. NSString* method = @"uploadReserveOrder";
  153. [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary * root) {
  154. RemoveHUD();
  155. if (!root) {
  156. ShowMsg(@"开始计时失败,请重试!");
  157. [Tools playAudioWithString:@"开始计时失败,请崇试!"];
  158. return;
  159. }
  160. if ([root[@"code"] isEqualToString:@"1"]) {
  161. ShowMsg(root[@"body"]);
  162. [Tools playAudioWithString:root[@"body"]];
  163. return;
  164. }
  165. orderId = [root[@"body"] objectForKey:@"id"];
  166. subject = [root[@"body"] objectForKey:@"subject"];
  167. ShowMsg(@"签到成功!");
  168. [Tools playAudioWithString:@"签到成功,开始实操计时,请系好安全带"];
  169. }];
  170. }
  171. - (void)updateReserveEnd {
  172. [LoadingView showHUD];
  173. if (![Util connectedToNetWork]) {
  174. showMsgUnconnect();
  175. return;
  176. }
  177. NSMutableArray *arr = [NSMutableArray array];
  178. [arr addPro:@"orderId" Value:[coachQRCodeDic[@"dataString"] componentsSeparatedByString:@";"].lastObject];
  179. [arr addPro:@"userId" Value:RQ_USER_MANAGER.currentUser._id];
  180. [arr addPro:@"coachId" Value:[coachQRCodeDic[@"dataString"] componentsSeparatedByString:@";"][0]];
  181. NSString* method = @"updateReserveEnd";
  182. [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary * root) {
  183. RemoveHUD();
  184. if (!root) {
  185. ShowMsg(@"签退失败!");
  186. [Tools playAudioWithString:@"签退失败!"];
  187. return;
  188. }
  189. if ([root[@"code"] isEqualToString:@"1"]) {
  190. ShowMsg(root[@"body"]);
  191. [Tools playAudioWithString:root[@"body"]];
  192. return;
  193. }
  194. ShowMsg(@"签退成功!");
  195. [Tools playAudioWithString:@"签退成功!"];
  196. }];
  197. }
  198. @end