HistoryOrderViewController.m 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. //
  2. // HistoryOrderViewController.m
  3. // IBOSSmini
  4. //
  5. // Created by guan hong hou on 2017/5/16.
  6. // Copyright © 2017年 elongtian. All rights reserved.
  7. //
  8. #import "HistoryOrderViewController.h"
  9. #import "SideSlipModel.h"
  10. #import "DateFormat.h"
  11. #import "HistoryOrderFrame.h"
  12. #import "HistoryOrderTableViewCell.h"
  13. #import "OrderDetailViewController.h"
  14. #define orderTextFont [UIFont systemFontOfSize:14]
  15. @interface HistoryOrderViewController ()
  16. @end
  17. @implementation HistoryOrderViewController
  18. #pragma mark - 公共函数
  19. /**
  20. viewDidLoad函数
  21. */
  22. - (void)viewDidLoad {
  23. [super viewDidLoad];
  24. [self initUI];
  25. _orderArr=[NSMutableArray new];
  26. _cartModel=[OrderModel new];
  27. }
  28. /**
  29. 修改:2017-9-25
  30. 适配机型
  31. 安全区视图发生变化
  32. */
  33. -(void)viewSafeAreaInsetsDidChange{
  34. _tbView.frame=CGRectMake(0,CGRectGetMaxY(_separatorView.frame), SCREENWIDTH,self.view.superview.frame.size.height-CGRectGetMaxY(_separatorView.frame));
  35. [super viewSafeAreaInsetsDidChange];
  36. }
  37. #pragma mark - 委托回调函数
  38. //数据加载完成回调函数
  39. - (void)onLoadFinish:(ASIDownManager *)sender {
  40. NSDictionary *dic = [sender.mWebStr JSONValue];
  41. [self cancel];
  42. if (dic && [dic isKindOfClass:[NSDictionary class]]) {
  43. int iStatus = [[dic objectForKey:@"Status"] intValue];
  44. NSString *message=[dic objectForKey:@"Message"];
  45. _tbView.backgroundView=nil;
  46. if (iStatus == 0) {
  47. NSArray * approvArr=[dic objectForKey:@"Result"];
  48. NSLog(@"arr=%@",approvArr);
  49. if(approvArr!=nil)
  50. {
  51. [_orderArr removeAllObjects];
  52. _orderArr=[[NSMutableArray alloc]initWithArray:approvArr];
  53. _separatorView.hidden=NO;
  54. [_cartModel parseWorkFlowArr:_orderArr];
  55. [_tbView reloadData];
  56. if(_orderArr.count==0){
  57. _tbView.backgroundView=nil;
  58. UIView *noDataView=[[UIView alloc]init];
  59. noDataView.frame=_tbView.bounds;
  60. UIImageView *nodataImgView=[[UIImageView alloc] initWithFrame:CGRectMake(noDataView.frame.size.width/2-16,noDataView.frame.size.height/2-16,32,32)];
  61. [nodataImgView setImage:[UIImage imageNamed:@"icon_no_data"]];
  62. [noDataView addSubview:nodataImgView];
  63. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(noDataView.frame.size.width/2-16-12,CGRectGetMaxY(nodataImgView.frame)+3,70, 25)];
  64. label.font=[UIFont systemFontOfSize:NoDataFontOfSize];
  65. label.text = @"无数据";
  66. label.numberOfLines = 2;
  67. label.textColor = [UIColor lightGrayColor];
  68. [noDataView addSubview:label];
  69. _tbView.backgroundView=noDataView;
  70. [self showAlertViewText:@"未找到匹配结果"];
  71. return;
  72. }
  73. }
  74. }
  75. else if(iStatus==ActionResultStatusAuthError
  76. ||iStatus==ActionResultStatusNoLogin
  77. ||iStatus==ActionResultStatusLogined ||iStatus == ActionResultStatusLoginedInvalid){
  78. [self showReLoginDialog:message];
  79. return;
  80. }
  81. else {
  82. [self showAlertViewText:message];
  83. }
  84. }
  85. }
  86. //数据加载失败回调函数
  87. - (void)onLoadFail:(ASIDownManager *)sender {
  88. [self cancel];
  89. [self showAlertViewText:@"加载失败"];
  90. }
  91. // tableviewcell的高度
  92. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
  93. {
  94. HistoryOrderFrame *orderFrame=_cartModel.workflowArr[indexPath.row];
  95. return orderFrame.cellHeight;
  96. }
  97. //tableview的分区数
  98. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
  99. return 1;
  100. }
  101. //tableview的行数
  102. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
  103. return _cartModel.workflowArr.count;
  104. }
  105. //获取tableviewcell
  106. -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  107. static NSString *CellIdentifier = @"OrderCell";
  108. HistoryOrderTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  109. cell=[[HistoryOrderTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
  110. cell.selectionStyle=UITableViewCellSelectionStyleNone;
  111. cell.delegate=self;
  112. HistoryOrderFrame *infoFrame=_cartModel.workflowArr[indexPath.row];
  113. [cell parseCartInfo:infoFrame];
  114. return cell;
  115. }
  116. //行点击事件
  117. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  118. {
  119. OrderDetailViewController *detailVC=[[OrderDetailViewController alloc] init];
  120. NSDictionary *dic= _orderArr[indexPath.row];
  121. NSString *orderId=[dic objectForKey:@"OrderID"];
  122. detailVC.orderId=orderId;
  123. detailVC.dicInfo=[dic copy];
  124. self.cNav.visibleViewController.hidesBottomBarWhenPushed=YES;
  125. [self.cNav pushViewController:detailVC animated:YES];
  126. }
  127. //删除订单成功
  128. - (void)onDeleteLoadFinish:(ASIDownManager *)sender {
  129. NSDictionary *dic = [sender.mWebStr JSONValue];
  130. [self cancelHUD];
  131. if (dic && [dic isKindOfClass:[NSDictionary class]]) {
  132. int iStatus = [[dic objectForKey:@"Status"] intValue];
  133. NSString *message=[dic objectForKey:@"Message"];
  134. if (iStatus == 0) {
  135. [self refreshData];
  136. }
  137. else if(iStatus==ActionResultStatusAuthError
  138. ||iStatus==ActionResultStatusNoLogin
  139. ||iStatus==ActionResultStatusLogined ||iStatus == ActionResultStatusLoginedInvalid){
  140. [self showReLoginDialog:message];
  141. return;
  142. }
  143. else {
  144. [self showAlertViewText:message];
  145. }
  146. }
  147. }
  148. //删除订单失败
  149. - (void)onDeleteLoadFail:(ASIDownManager *)sender {
  150. [self cancelHUD];
  151. [self showAlertViewText:@"请求失败"];
  152. }
  153. #pragma mark - 私有函数
  154. //初始化UI
  155. -(void)initUI{
  156. self.view.backgroundColor=[UIColor whiteColor];
  157. _btnSearch=[UIButton buttonWithType:UIButtonTypeCustom];
  158. _btnSearch.frame=CGRectMake(15, 10, Screen_Width-30, 35);
  159. [_btnSearch setTitle:@"历史订单查询" forState:UIControlStateNormal];
  160. [_btnSearch setBackgroundColor:[UIColor colorWithRed:232.0/255.0 green:233.0/255.0 blue:235.0/255.0 alpha:1]];
  161. [self.view addSubview:_btnSearch];
  162. _btnSearch.layer.cornerRadius = 10;
  163. _btnSearch.layer.masksToBounds = YES;
  164. _btnSearch.titleLabel.font=orderTextFont;
  165. [_btnSearch addTarget:self action:@selector(searchHistoryData)
  166. forControlEvents:UIControlEventTouchUpInside];
  167. [_btnSearch setTitleColor:[UIColor darkGrayColor] forState:UIControlStateNormal];
  168. _separatorView = [[UIView alloc] init];
  169. _separatorView.frame = CGRectMake(0,CGRectGetMaxY(_btnSearch.frame)+10,Screen_Width,10);
  170. _separatorView.backgroundColor = LineBackgroundColor;
  171. [self.view addSubview:_separatorView];
  172. _tbView=[UITableView new];
  173. _tbView.separatorStyle=UITableViewCellSeparatorStyleNone;
  174. if(IsiPhoneX){
  175. _tbView.frame=CGRectMake(0,CGRectGetMaxY(_separatorView.frame), Screen_Width, self.view.superview.frame.size.height-CGRectGetMaxY(_separatorView.frame));
  176. }
  177. else{
  178. _tbView.frame=CGRectMake(0,CGRectGetMaxY(_separatorView.frame), Screen_Width, self.view.frame.size.height-CGRectGetMaxY(_separatorView.frame)-105);
  179. }
  180. _tbView.delegate=self;
  181. _tbView.dataSource=self;
  182. [self.view addSubview:_tbView];
  183. __weak typeof(self) weakself=self;
  184. self.filterController = [[SideSlipFilterController alloc] initWithSponsor:self resetBlock:^(NSArray *dataList) {
  185. for (SideSlipModel *model in dataList) {
  186. model.selectedItemList = nil;
  187. model.customDict = nil;
  188. }
  189. } commitBlock:^(NSArray *dataList) {
  190. SideSlipModel *serviceRegionModel = dataList[0];
  191. _m = [serviceRegionModel.customDict objectForKey:SEARCH_RANGE_MODEL];
  192. NSString *startDate= _m.startDate;
  193. NSString *endDate=_m.endDate;
  194. if(startDate==nil){
  195. [self showAlertViewText:@"请选择开始日期"];
  196. return;
  197. }
  198. if(endDate==nil){
  199. [self showAlertViewText:@"请选择结束日期"];
  200. return;
  201. }
  202. NSUInteger result= [DateFormat compareDate:startDate withDate:endDate];
  203. if(result==-1){
  204. [self showAlertViewText:@"开始日期不能大于结束日期"];
  205. return;
  206. }
  207. NSDateFormatter *dateFormat=[[NSDateFormatter alloc] init];
  208. [dateFormat setDateFormat:@"yyyy-MM-dd"];//设定时间格式,这里可以设置成自己需要的格式
  209. NSDate *startD =[dateFormat dateFromString:startDate];
  210. NSDate *endD=[dateFormat dateFromString:endDate];
  211. NSInteger days= [DateFormat calculateDaysFromBegin:startD end:endD];
  212. if(days>31){
  213. [self showAlertViewText:@"日期间隔天数不能大于31天"];
  214. return;
  215. }
  216. [weakself.filterController dismiss];
  217. [self reloadData];
  218. }];
  219. _filterController.animationDuration = .3f;
  220. _filterController.hasHeadView = YES;
  221. _filterController.sideSlipLeading = UIScreenSideSlipLeading*[UIScreen mainScreen].bounds.size.width;
  222. _filterController.dataList = [self packageDataList];
  223. }
  224. //取消进度条
  225. - (void)cancelHUD {
  226. [_HUD hide:YES];
  227. }
  228. //删除历史订单函数
  229. -(void)deleteHistoryOrderItem:(OrderItemModel*)orderItem{
  230. UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"" message:@"确定要删除吗?" preferredStyle:UIAlertControllerStyleAlert];
  231. UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
  232. }];
  233. UIAlertAction *otherAction = [UIAlertAction actionWithTitle:@"确定"
  234. style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
  235. [self deleteOrder:orderItem];
  236. }];
  237. UIColor *cancelColor=[UIColor blackColor];
  238. UIColor *sureColor=[UIColor redColor];
  239. [cancelAction setValue:cancelColor forKey:@"titleTextColor"];
  240. [otherAction setValue:sureColor forKey:@"titleTextColor"];
  241. [alertController addAction:cancelAction];
  242. [alertController addAction:otherAction];
  243. [self presentViewController:alertController animated:YES completion:nil];
  244. }
  245. -(void)deleteOrder:(OrderItemModel*)order
  246. {
  247. self.mDownManager = [[ASIDownManager alloc] init];
  248. _mDownManager.delegate = self;
  249. _mDownManager.OnImageDown = @selector(onDeleteLoadFinish:);
  250. _mDownManager.OnImageFail = @selector(onDeleteLoadFail:);
  251. _HUD = [[MBProgressHUD alloc] initWithView:self.view];
  252. [self.view addSubview:_HUD];
  253. _HUD.dimBackground = YES;
  254. _HUD.labelText = @"删除中...";
  255. [_HUD show:YES];
  256. NSString *urlStr = ServerURL;
  257. NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  258. [dict setObject:@"DeleteIOrder" forKey:@"Action"];
  259. [dict setObject:[NSString stringWithFormat:@"%@",kkAccountCode]forKey:@"AccountCode"];
  260. [dict setObject:kkUserCode forKey:@"UserCode"];
  261. [dict setObject:kkUserPwd forKey:@"UserPassword"];
  262. [dict setObject:kkSessionKey forKey:@"SessionKey"];
  263. [dict setObject:order.orderID forKey:@"OrderIDs"];
  264. [_mDownManager postHttpRequest:urlStr dic:dict path:nil fileName:nil];
  265. }
  266. //加载历史订单数据
  267. -(void)refreshData{
  268. [self reloadData];
  269. }
  270. //加载数据
  271. -(void)reloadData{
  272. [self startLoading];
  273. NSString *urlStr = ServerURL;
  274. NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  275. [dict setObject:@"GetOrderList" forKey:@"Action"];
  276. [dict setObject:[NSString stringWithFormat:@"%@",kkAccountCode]forKey:@"AccountCode"];
  277. [dict setObject:kkUserCode forKey:@"UserCode"];
  278. [dict setObject:kkUserPwd forKey:@"UserPassword"];
  279. [dict setObject:kkSessionKey forKey:@"SessionKey"];
  280. if(_m.orderNo!=nil){
  281. [dict setObject:_m.orderNo forKey:@"OrderNo"];
  282. }
  283. else{
  284. [dict setObject:@"" forKey:@"OrderNo"];
  285. }
  286. if(_m.customerName!=nil){
  287. [dict setObject:_m.customerName forKey:@"CustomerName"];
  288. }
  289. else{
  290. [dict setObject:@"" forKey:@"CustomerName"];
  291. }
  292. if(_m.customerCode!=nil){
  293. [dict setObject:_m.customerCode forKey:@"CustomerCode"];
  294. }
  295. else{
  296. [dict setObject:@"" forKey:@"CustomerCode"];
  297. }
  298. if(_m.customerAddress!=nil){
  299. [dict setObject:_m.customerAddress forKey:@"Address"];
  300. }
  301. else{
  302. [dict setObject:@"" forKey:@"Address"];
  303. }
  304. [dict setObject:_m.startDate forKey:@"CreateTimeFrom"];
  305. [dict setObject:_m.endDate forKey:@"CreateTimeTo"];
  306. self.mDownManager = [[ASIDownManager alloc] init];
  307. _mDownManager.delegate = self;
  308. _mDownManager.OnImageDown = @selector(onLoadFinish:);
  309. _mDownManager.OnImageFail = @selector(onLoadFail:);
  310. [_mDownManager postHttpRequest:urlStr dic:dict path:nil fileName:nil];
  311. }
  312. //进度条取消
  313. - (void)cancel {
  314. [self stopLoading];
  315. }
  316. //抽屉加载布局
  317. - (NSArray *)packageDataList {
  318. NSMutableArray *dataArray = [NSMutableArray array];
  319. SideSlipModel *model = [[SideSlipModel alloc] init];
  320. model.containerCellClass = @"HistoryOrderSearchTableViewCell";
  321. model.regionTitle = @"查询条件";
  322. [dataArray addObject:model];
  323. return [dataArray mutableCopy];
  324. }
  325. // 加载抽屉
  326. - (void)searchHistoryData{
  327. [_filterController showPagerView:self.cNav];
  328. }
  329. @end