Commit c297edd80b2d270d83c8dc603c9bfd68e1339d0f
1 parent
7e195196
电商相关需求实现
Showing
52 changed files
with
2357 additions
and
16 deletions
metaCode.xcodeproj/project.pbxproj
| ... | ... | @@ -54,9 +54,18 @@ |
| 54 | 54 | 798A44FB2A30999900815935 /* CNLiveAlertTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798A44FA2A30999900815935 /* CNLiveAlertTool.swift */; }; |
| 55 | 55 | 798A44FD2A309EBA00815935 /* CNLiveTypeFeedBackViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798A44FC2A309EBA00815935 /* CNLiveTypeFeedBackViewController.swift */; }; |
| 56 | 56 | 798A44FF2A30A0A800815935 /* CNLiveInputFeedBackViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798A44FE2A30A0A800815935 /* CNLiveInputFeedBackViewController.swift */; }; |
| 57 | + 799172322AF08D1B00DC01A8 /* CNLiveShopOrderViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 799172312AF08D1B00DC01A8 /* CNLiveShopOrderViewController.swift */; }; | |
| 58 | + 799172342AF08D3200DC01A8 /* CNLiveShopViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 799172332AF08D3200DC01A8 /* CNLiveShopViewModel.swift */; }; | |
| 59 | + 799172362AF08D4500DC01A8 /* CNLiveShopBaseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 799172352AF08D4500DC01A8 /* CNLiveShopBaseModel.swift */; }; | |
| 60 | + 799172382AF090CD00DC01A8 /* CNLiveShopBodyListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 799172372AF090CD00DC01A8 /* CNLiveShopBodyListView.swift */; }; | |
| 61 | + 7991723A2AF091E100DC01A8 /* CNLiveShopOrderListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 799172392AF091E100DC01A8 /* CNLiveShopOrderListViewController.swift */; }; | |
| 57 | 62 | 79A68C4A2A26E6CE00DC3B43 /* (null) in Sources */ = {isa = PBXBuildFile; }; |
| 58 | 63 | 79A68C4C2A26EA6000DC3B43 /* (null) in Sources */ = {isa = PBXBuildFile; }; |
| 64 | + 79B2E3602AF39191002A8524 /* NSObject+CNLiveConfigModuleInline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79B2E35F2AF39191002A8524 /* NSObject+CNLiveConfigModuleInline.swift */; }; | |
| 59 | 65 | 79BA085D2AB18E8300D01875 /* CNLiveSaveAuthDB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79BA085C2AB18E8300D01875 /* CNLiveSaveAuthDB.swift */; }; |
| 66 | + 79BB96A62AF21E2800AEA4AC /* CNLiveShopOrderDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79BB96A52AF21E2800AEA4AC /* CNLiveShopOrderDetailViewController.swift */; }; | |
| 67 | + 79BB96A82AF223FB00AEA4AC /* CNLiveConfigAlertManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79BB96A72AF223FB00AEA4AC /* CNLiveConfigAlertManager.swift */; }; | |
| 68 | + 79BB96AA2AF2330900AEA4AC /* CNLiveShopBodyDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79BB96A92AF2330900AEA4AC /* CNLiveShopBodyDetailView.swift */; }; | |
| 60 | 69 | 79E496E32AB9357000127BF8 /* UITableViewCell+CNLiveExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E496E22AB9357000127BF8 /* UITableViewCell+CNLiveExtension.swift */; }; |
| 61 | 70 | 79E496E82AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E496E72AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift */; }; |
| 62 | 71 | 79EABB892AB4497700F3A4E2 /* CNLiveSaveStandDB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79EABB882AB4497700F3A4E2 /* CNLiveSaveStandDB.swift */; }; |
| ... | ... | @@ -166,8 +175,17 @@ |
| 166 | 175 | 798A44FA2A30999900815935 /* CNLiveAlertTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveAlertTool.swift; sourceTree = "<group>"; }; |
| 167 | 176 | 798A44FC2A309EBA00815935 /* CNLiveTypeFeedBackViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveTypeFeedBackViewController.swift; sourceTree = "<group>"; }; |
| 168 | 177 | 798A44FE2A30A0A800815935 /* CNLiveInputFeedBackViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveInputFeedBackViewController.swift; sourceTree = "<group>"; }; |
| 178 | + 799172312AF08D1B00DC01A8 /* CNLiveShopOrderViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopOrderViewController.swift; sourceTree = "<group>"; }; | |
| 179 | + 799172332AF08D3200DC01A8 /* CNLiveShopViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopViewModel.swift; sourceTree = "<group>"; }; | |
| 180 | + 799172352AF08D4500DC01A8 /* CNLiveShopBaseModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopBaseModel.swift; sourceTree = "<group>"; }; | |
| 181 | + 799172372AF090CD00DC01A8 /* CNLiveShopBodyListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopBodyListView.swift; sourceTree = "<group>"; }; | |
| 182 | + 799172392AF091E100DC01A8 /* CNLiveShopOrderListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopOrderListViewController.swift; sourceTree = "<group>"; }; | |
| 169 | 183 | 79A68C512A26F59C00DC3B43 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = metaCode/Info.plist; sourceTree = "<group>"; }; |
| 184 | + 79B2E35F2AF39191002A8524 /* NSObject+CNLiveConfigModuleInline.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSObject+CNLiveConfigModuleInline.swift"; sourceTree = "<group>"; }; | |
| 170 | 185 | 79BA085C2AB18E8300D01875 /* CNLiveSaveAuthDB.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveSaveAuthDB.swift; sourceTree = "<group>"; }; |
| 186 | + 79BB96A52AF21E2800AEA4AC /* CNLiveShopOrderDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopOrderDetailViewController.swift; sourceTree = "<group>"; }; | |
| 187 | + 79BB96A72AF223FB00AEA4AC /* CNLiveConfigAlertManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveConfigAlertManager.swift; sourceTree = "<group>"; }; | |
| 188 | + 79BB96A92AF2330900AEA4AC /* CNLiveShopBodyDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopBodyDetailView.swift; sourceTree = "<group>"; }; | |
| 171 | 189 | 79E496E22AB9357000127BF8 /* UITableViewCell+CNLiveExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITableViewCell+CNLiveExtension.swift"; sourceTree = "<group>"; }; |
| 172 | 190 | 79E496E72AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSMutableAttributedString+CNLiveExtensions.swift"; sourceTree = "<group>"; }; |
| 173 | 191 | 79EABB882AB4497700F3A4E2 /* CNLiveSaveStandDB.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveSaveStandDB.swift; sourceTree = "<group>"; }; |
| ... | ... | @@ -424,6 +442,7 @@ |
| 424 | 442 | 796398902A260C0100D045EB /* Main */ = { |
| 425 | 443 | isa = PBXGroup; |
| 426 | 444 | children = ( |
| 445 | + 7991722C2AF08CF100DC01A8 /* ShopPage */, | |
| 427 | 446 | 790D01972A2DCAE400C5978D /* MinePage */, |
| 428 | 447 | 790D018C2A2D8C9A00C5978D /* LoginPage */, |
| 429 | 448 | 7CD675212A26F844008354C1 /* HomePage */, |
| ... | ... | @@ -450,6 +469,8 @@ |
| 450 | 469 | 790D01902A2DAC5E00C5978D /* CNLiveConfigFontMacro.swift */, |
| 451 | 470 | 790D01A22A2DDBA300C5978D /* CNLiveConfigManager.swift */, |
| 452 | 471 | 79282A3F2A2F055100B5F8CF /* CNLiveConfigUserInfo.swift */, |
| 472 | + 79BB96A72AF223FB00AEA4AC /* CNLiveConfigAlertManager.swift */, | |
| 473 | + 79B2E35F2AF39191002A8524 /* NSObject+CNLiveConfigModuleInline.swift */, | |
| 453 | 474 | ); |
| 454 | 475 | path = Config; |
| 455 | 476 | sourceTree = "<group>"; |
| ... | ... | @@ -504,6 +525,52 @@ |
| 504 | 525 | path = CustomView; |
| 505 | 526 | sourceTree = "<group>"; |
| 506 | 527 | }; |
| 528 | + 7991722C2AF08CF100DC01A8 /* ShopPage */ = { | |
| 529 | + isa = PBXGroup; | |
| 530 | + children = ( | |
| 531 | + 7991722D2AF08CF100DC01A8 /* ViewModel */, | |
| 532 | + 7991722E2AF08CF100DC01A8 /* Controller */, | |
| 533 | + 7991722F2AF08CF100DC01A8 /* Model */, | |
| 534 | + 799172302AF08CF100DC01A8 /* View */, | |
| 535 | + ); | |
| 536 | + path = ShopPage; | |
| 537 | + sourceTree = "<group>"; | |
| 538 | + }; | |
| 539 | + 7991722D2AF08CF100DC01A8 /* ViewModel */ = { | |
| 540 | + isa = PBXGroup; | |
| 541 | + children = ( | |
| 542 | + 799172332AF08D3200DC01A8 /* CNLiveShopViewModel.swift */, | |
| 543 | + ); | |
| 544 | + path = ViewModel; | |
| 545 | + sourceTree = "<group>"; | |
| 546 | + }; | |
| 547 | + 7991722E2AF08CF100DC01A8 /* Controller */ = { | |
| 548 | + isa = PBXGroup; | |
| 549 | + children = ( | |
| 550 | + 799172312AF08D1B00DC01A8 /* CNLiveShopOrderViewController.swift */, | |
| 551 | + 799172392AF091E100DC01A8 /* CNLiveShopOrderListViewController.swift */, | |
| 552 | + 79BB96A52AF21E2800AEA4AC /* CNLiveShopOrderDetailViewController.swift */, | |
| 553 | + ); | |
| 554 | + path = Controller; | |
| 555 | + sourceTree = "<group>"; | |
| 556 | + }; | |
| 557 | + 7991722F2AF08CF100DC01A8 /* Model */ = { | |
| 558 | + isa = PBXGroup; | |
| 559 | + children = ( | |
| 560 | + 799172352AF08D4500DC01A8 /* CNLiveShopBaseModel.swift */, | |
| 561 | + ); | |
| 562 | + path = Model; | |
| 563 | + sourceTree = "<group>"; | |
| 564 | + }; | |
| 565 | + 799172302AF08CF100DC01A8 /* View */ = { | |
| 566 | + isa = PBXGroup; | |
| 567 | + children = ( | |
| 568 | + 799172372AF090CD00DC01A8 /* CNLiveShopBodyListView.swift */, | |
| 569 | + 79BB96A92AF2330900AEA4AC /* CNLiveShopBodyDetailView.swift */, | |
| 570 | + ); | |
| 571 | + path = View; | |
| 572 | + sourceTree = "<group>"; | |
| 573 | + }; | |
| 507 | 574 | 79E496E42AB936E200127BF8 /* Tool */ = { |
| 508 | 575 | isa = PBXGroup; |
| 509 | 576 | children = ( |
| ... | ... | @@ -880,6 +947,7 @@ |
| 880 | 947 | 19F1C2332AB5728B0083D06C /* CNIDCardView.swift in Sources */, |
| 881 | 948 | 7CD675292A270F6A008354C1 /* WJColorChange.m in Sources */, |
| 882 | 949 | 79F4B11C2A33036E00993C03 /* CNLiveMineInfoAlertView.swift in Sources */, |
| 950 | + 79BB96A82AF223FB00AEA4AC /* CNLiveConfigAlertManager.swift in Sources */, | |
| 883 | 951 | 796398942A260C0100D045EB /* AppDelegate.swift in Sources */, |
| 884 | 952 | 7989B5C72A4BDC7200A19B10 /* CNLiveMineEarnListViewController.swift in Sources */, |
| 885 | 953 | 79396EF12A31C21B0053E1AF /* CNLiveInfoShowViewController.swift in Sources */, |
| ... | ... | @@ -890,6 +958,7 @@ |
| 890 | 958 | 79282A3C2A2EDC2500B5F8CF /* NSString+CNLiveExtensions.swift in Sources */, |
| 891 | 959 | 790B1FB82A41B6A60074CF00 /* CNLiveMineMessageViewController.swift in Sources */, |
| 892 | 960 | 798A44F22A30674200815935 /* CNLiveMineSubBodyListView.swift in Sources */, |
| 961 | + 799172382AF090CD00DC01A8 /* CNLiveShopBodyListView.swift in Sources */, | |
| 893 | 962 | 790D01822A2D88FC00C5978D /* CNLiveConfigMacro.swift in Sources */, |
| 894 | 963 | 7C83B4402A52BB2B004BF4A4 /* CNGlobalEnum.swift in Sources */, |
| 895 | 964 | 7C83B4442A541F36004BF4A4 /* NSDate+CNLiveExtensions.swift in Sources */, |
| ... | ... | @@ -903,6 +972,8 @@ |
| 903 | 972 | 19123FC12ABC11170075C883 /* CNWebViewController.swift in Sources */, |
| 904 | 973 | 790D019D2A2DCBD000C5978D /* UIView+CNLiveExtensions.swift in Sources */, |
| 905 | 974 | 7C7C62F62A4D72E9007A912E /* CNLiveIdentityDB.swift in Sources */, |
| 975 | + 799172342AF08D3200DC01A8 /* CNLiveShopViewModel.swift in Sources */, | |
| 976 | + 799172362AF08D4500DC01A8 /* CNLiveShopBaseModel.swift in Sources */, | |
| 906 | 977 | 790B1FB62A41938F0074CF00 /* UIImage+CNLiveExtensions.swift in Sources */, |
| 907 | 978 | 790D019D2A2DCBD000C5978D /* UIView+CNLiveExtensions.swift in Sources */, |
| 908 | 979 | 79E496E82AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift in Sources */, |
| ... | ... | @@ -920,6 +991,7 @@ |
| 920 | 991 | 792E57D92A3AA2F2005834DB /* CNLiveCommonBaseModel.swift in Sources */, |
| 921 | 992 | 7CD6753E2A2740B0008354C1 /* CNUpSlideView.swift in Sources */, |
| 922 | 993 | 7CD675402A2740B0008354C1 /* CNDownSlideView.swift in Sources */, |
| 994 | + 79B2E3602AF39191002A8524 /* NSObject+CNLiveConfigModuleInline.swift in Sources */, | |
| 923 | 995 | 7C2703362A3AFD3A0061EC50 /* CNLiveEnvironment.swift in Sources */, |
| 924 | 996 | 798A44FD2A309EBA00815935 /* CNLiveTypeFeedBackViewController.swift in Sources */, |
| 925 | 997 | 79656E382AAEBA8E00119A61 /* CNLiveMineInputViewController.swift in Sources */, |
| ... | ... | @@ -930,11 +1002,13 @@ |
| 930 | 1002 | 79F4B11A2A32F21400993C03 /* CNLiveMineNickViewController.swift in Sources */, |
| 931 | 1003 | 798A44FF2A30A0A800815935 /* CNLiveInputFeedBackViewController.swift in Sources */, |
| 932 | 1004 | 79282A442A2F1C1E00B5F8CF /* CNLiveLoginAuthView.swift in Sources */, |
| 1005 | + 79BB96A62AF21E2800AEA4AC /* CNLiveShopOrderDetailViewController.swift in Sources */, | |
| 933 | 1006 | 7C2703302A36CBE30061EC50 /* CNCertificationView.swift in Sources */, |
| 934 | 1007 | 790D01A32A2DDBA300C5978D /* CNLiveConfigManager.swift in Sources */, |
| 935 | 1008 | 7C2703332A36CC660061EC50 /* CNLiveGlobalBlock.swift in Sources */, |
| 936 | 1009 | 7987BF3D2A497644000A1ABC /* CNLiveMineQuestViewController.swift in Sources */, |
| 937 | 1010 | 798A44EA2A30135D00815935 /* CNLiveMineBodyListView.swift in Sources */, |
| 1011 | + 799172322AF08D1B00DC01A8 /* CNLiveShopOrderViewController.swift in Sources */, | |
| 938 | 1012 | 798A44F92A30835400815935 /* CNLiveHelpFeedBackViewController.swift in Sources */, |
| 939 | 1013 | 79A68C4A2A26E6CE00DC3B43 /* (null) in Sources */, |
| 940 | 1014 | 790D01852A2D89E100C5978D /* UIColor+CNLiveExtensions.swift in Sources */, |
| ... | ... | @@ -944,6 +1018,7 @@ |
| 944 | 1018 | 7905BB492AB0588B0089BC50 /* CNLiveMineAuthResultViewController.swift in Sources */, |
| 945 | 1019 | 798A44EC2A302DBE00815935 /* CNLiveMineAddInfoViewController.swift in Sources */, |
| 946 | 1020 | 7CD675422A2740F8008354C1 /* CNCustomIndexView.swift in Sources */, |
| 1021 | + 79BB96AA2AF2330900AEA4AC /* CNLiveShopBodyDetailView.swift in Sources */, | |
| 947 | 1022 | 790D01912A2DAC5E00C5978D /* CNLiveConfigFontMacro.swift in Sources */, |
| 948 | 1023 | 790D01852A2D89E100C5978D /* UIColor+CNLiveExtensions.swift in Sources */, |
| 949 | 1024 | 790B1FB42A4153E90074CF00 /* CNLiveMineBaseModel.swift in Sources */, |
| ... | ... | @@ -961,6 +1036,7 @@ |
| 961 | 1036 | 79A68C4C2A26EA6000DC3B43 /* (null) in Sources */, |
| 962 | 1037 | 79803E292AD6991200F05F68 /* CNLiveMineInputMessageView.swift in Sources */, |
| 963 | 1038 | 79282A462A2F457D00B5F8CF /* CNLiveMineViewController.swift in Sources */, |
| 1039 | + 7991723A2AF091E100DC01A8 /* CNLiveShopOrderListViewController.swift in Sources */, | |
| 964 | 1040 | 798A44F02A305BC200815935 /* UIButton+CNLiveExtensions.swift in Sources */, |
| 965 | 1041 | ); |
| 966 | 1042 | runOnlyForDeploymentPostprocessing = 0; | ... | ... |
metaCode/Classes/Common/Util/CNLiveCommonBaseModel.swift
metaCode/Classes/Config/CNLiveConfigAlertManager.swift
0 → 100644
| 1 | +// | |
| 2 | +// CNLiveConfigAlertManager.swift | |
| 3 | +// metaCode | |
| 4 | +// | |
| 5 | +// Created by open on 2023/11/1. | |
| 6 | +// | |
| 7 | + | |
| 8 | +import Foundation | |
| 9 | + | |
| 10 | +typealias resultActionAlertBlock = (_ index: Int) -> Void | |
| 11 | +class ConfigAlertManager: NSObject { | |
| 12 | + | |
| 13 | + static let shared = ConfigAlertManager() | |
| 14 | + | |
| 15 | + /// 自定义弹框 | |
| 16 | + open func presentAlert(title: String, message: String, actionTitles: NSArray, resultBlock: @escaping resultActionAlertBlock) { | |
| 17 | + | |
| 18 | + let alert = UIAlertController(title: title, message: message, preferredStyle: .alert) | |
| 19 | + | |
| 20 | + for title in actionTitles { | |
| 21 | + let style: UIAlertAction.Style | |
| 22 | + if title as! String == "取消" { | |
| 23 | + style = .cancel | |
| 24 | + } else { | |
| 25 | + style = .default | |
| 26 | + } | |
| 27 | + let action = UIAlertAction(title: title as? String, style: style) { action in | |
| 28 | + resultBlock(actionTitles.index(of: title)) | |
| 29 | + } | |
| 30 | + alert.addAction(action) | |
| 31 | + } | |
| 32 | + | |
| 33 | + currentViewController()?.present(alert, animated: true) | |
| 34 | + } | |
| 35 | +} | ... | ... |
metaCode/Classes/Config/NSObject+CNLiveConfigModuleInline.swift
0 → 100644
| 1 | +// | |
| 2 | +// CNLiveConfigModuleInline.swift | |
| 3 | +// metaCode | |
| 4 | +// | |
| 5 | +// Created by open on 2023/11/2. | |
| 6 | +// | |
| 7 | + | |
| 8 | +import Foundation | |
| 9 | + | |
| 10 | +///!!!: pragma mark - 检测是否是iPhoneX系列 | |
| 11 | +/**判断是否是iPhone X系列*/ | |
| 12 | +var isiPhoneXSeries: Bool { | |
| 13 | + if #available(iOS 11, *) { | |
| 14 | + guard let w = UIApplication.shared.delegate?.window, let unwrapedWindow = w else { | |
| 15 | + return false | |
| 16 | + } | |
| 17 | + if unwrapedWindow.safeAreaInsets.left > 0 || unwrapedWindow.safeAreaInsets.bottom > 0 { | |
| 18 | + print(unwrapedWindow.safeAreaInsets) | |
| 19 | + return true | |
| 20 | + } | |
| 21 | + } | |
| 22 | + return false | |
| 23 | +} | |
| 24 | + | |
| 25 | +/**获取系统状态栏高度**/ | |
| 26 | +var getSystemStatusBarHeight: CGFloat { | |
| 27 | + return isiPhoneXSeries ? 44 : 20 | |
| 28 | +} | |
| 29 | + | |
| 30 | +/** 获取系统导航高度**/ | |
| 31 | +var getSystemNavHeight: CGFloat { | |
| 32 | + return isiPhoneXSeries ? (44+44) : 64 | |
| 33 | +} | |
| 34 | + | |
| 35 | +/**获取系统导航UI高度*/ | |
| 36 | +var getSystemNavUiHeight: CGFloat { | |
| 37 | + return get_system_nav_height() - get_system_statusBar_height() | |
| 38 | +} | |
| 39 | + | |
| 40 | +/**获取系统tabbar高度*/ | |
| 41 | +var getSystemTabbarHeight: CGFloat { | |
| 42 | + return is_iPhoneX_series() ? 83 : 49 | |
| 43 | +} | |
| 44 | + | |
| 45 | +/**获取系统tabbarUI高度*/ | |
| 46 | +var getSystemTabbarUiHeight: CGFloat { | |
| 47 | + return 49 | |
| 48 | +} | |
| 49 | + | |
| 50 | +/**获取系统tabbarUI增加的高度 (因iPhoneX系列底部有安全区域增加的高度)*/ | |
| 51 | +var getSystemTabbarUiOffsetHeight: CGFloat { | |
| 52 | + return get_system_tabbar_height() - get_system_tabbar_ui_height() | |
| 53 | +} | |
| 54 | + | |
| 55 | +///!!!: #pragma mark - 字体 | |
| 56 | + | |
| 57 | +/**细体*/ | |
| 58 | +func thin_font(pointSize: CGFloat) -> UIFont { | |
| 59 | + if #available(iOS 8.2, *) { | |
| 60 | + return UIFont.systemFont(ofSize: pointSize, weight: .thin) | |
| 61 | + }else { | |
| 62 | + return UIFont.systemFont(ofSize: pointSize) | |
| 63 | + } | |
| 64 | +} | |
| 65 | + | |
| 66 | +/**半细体*/ | |
| 67 | +func light_font(pointSize: CGFloat) -> UIFont { | |
| 68 | + if #available(iOS 8.2, *) { | |
| 69 | + return UIFont.systemFont(ofSize: pointSize, weight: .light) | |
| 70 | + }else { | |
| 71 | + return UIFont.systemFont(ofSize: pointSize) | |
| 72 | + } | |
| 73 | +} | |
| 74 | + | |
| 75 | +/**正常体*/ | |
| 76 | +func regular_font(pointSize: CGFloat) -> UIFont { | |
| 77 | + if #available(iOS 8.2, *) { | |
| 78 | + return UIFont.systemFont(ofSize: pointSize, weight: .regular) | |
| 79 | + }else { | |
| 80 | + return UIFont.systemFont(ofSize: pointSize) | |
| 81 | + } | |
| 82 | +} | |
| 83 | + | |
| 84 | +/**半粗体*/ | |
| 85 | +func medium_font(pointSize: CGFloat) -> UIFont { | |
| 86 | + if #available(iOS 8.2, *) { | |
| 87 | + return UIFont.systemFont(ofSize: pointSize, weight: .medium) | |
| 88 | + }else { | |
| 89 | + return UIFont.systemFont(ofSize: pointSize) | |
| 90 | + } | |
| 91 | +} | |
| 92 | + | |
| 93 | +/**粗体*/ | |
| 94 | +func semibold_font(pointSize: CGFloat) -> UIFont { | |
| 95 | + if #available(iOS 8.2, *) { | |
| 96 | + return UIFont.systemFont(ofSize: pointSize, weight: .semibold) | |
| 97 | + }else { | |
| 98 | + return UIFont.systemFont(ofSize: pointSize) | |
| 99 | + } | |
| 100 | +} | |
| 101 | + | |
| 102 | +///!!!: #pragma mark - 自适应字体 | |
| 103 | + | |
| 104 | +/**细体(自适应)*/ | |
| 105 | +func thin_adapt_font(pointSize: CGFloat) -> UIFont { | |
| 106 | + let multiple = UIScreen.main.bounds.size.width / 375 | |
| 107 | + let size = floor(pointSize*multiple) | |
| 108 | + return thin_font(pointSize: size) | |
| 109 | +} | |
| 110 | + | |
| 111 | +/**半细体(自适应)*/ | |
| 112 | +func light_adapt_font(pointSize: CGFloat) -> UIFont { | |
| 113 | + let multiple = UIScreen.main.bounds.size.width / 375 | |
| 114 | + let size = floor(pointSize*multiple) | |
| 115 | + return light_font(pointSize: size) | |
| 116 | +} | |
| 117 | + | |
| 118 | +/**正常体(自适应)*/ | |
| 119 | +func regular_adapt_font(pointSize: CGFloat) -> UIFont { | |
| 120 | + let multiple = UIScreen.main.bounds.size.width / 375 | |
| 121 | + let size = floor(pointSize*multiple) | |
| 122 | + return regular_font(pointSize: size) | |
| 123 | +} | |
| 124 | + | |
| 125 | +/**半粗体(自适应)*/ | |
| 126 | +func medium_adapt_font(pointSize: CGFloat) -> UIFont { | |
| 127 | + let multiple = UIScreen.main.bounds.size.width / 375 | |
| 128 | + let size = floor(pointSize*multiple) | |
| 129 | + return medium_font(pointSize: size) | |
| 130 | +} | |
| 131 | + | |
| 132 | +/**粗体(自适应)*/ | |
| 133 | +func semibold_adapt_font(pointSize: CGFloat) -> UIFont { | |
| 134 | + let multiple = UIScreen.main.bounds.size.width / 375 | |
| 135 | + let size = floor(pointSize*multiple) | |
| 136 | + return semibold_font(pointSize: size) | |
| 137 | +} | |
| 138 | + | |
| 139 | +///!!!: #pragma mark - 自适应长度 | |
| 140 | +func adapt_length(length: CGFloat) -> CGFloat { | |
| 141 | + let multiple = UIScreen.main.bounds.size.width / 375 | |
| 142 | + let f_adapt_length = floor(length * multiple) | |
| 143 | + return f_adapt_length | |
| 144 | +} | ... | ... |
metaCode/Classes/Extensions/UIView+CNLiveExtensions.swift
metaCode/Classes/Main/MinePage/Controller/CNLiveMineAddInfoViewController.swift
| ... | ... | @@ -324,7 +324,11 @@ extension CNLiveMineAddInfoViewController { |
| 324 | 324 | return |
| 325 | 325 | } |
| 326 | 326 | if listModel.id == 9 { |
| 327 | - self.navigationController?.pushViewController(CNLiveMineShopViewController.init(showType: .one, listModel: listModel, tempArray: []), animated: true) | |
| 327 | + CNLiveMineViewModel.requestApplyShopInfo { [weak self] result, respStatue in | |
| 328 | + if respStatue == .success { | |
| 329 | + self?.navigationController?.pushViewController(CNLiveMineShopViewController.init(showType: .one, listModel: listModel, tempArray: []), animated: true) | |
| 330 | + } | |
| 331 | + } | |
| 328 | 332 | } else { |
| 329 | 333 | self.navigationController?.pushViewController(CNLiveMineInputViewController.init(listModel: listModel), animated: true) |
| 330 | 334 | } | ... | ... |
metaCode/Classes/Main/MinePage/Controller/CNLiveMineViewController.swift
| ... | ... | @@ -150,9 +150,10 @@ extension CNLiveMineViewController { |
| 150 | 150 | } |
| 151 | 151 | |
| 152 | 152 | func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { |
| 153 | -// if indexPath.section == 0 { | |
| 153 | + if indexPath.section == 0 { | |
| 154 | 154 | // self.navigationController?.pushViewController(CNLiveMineQuestViewController.init(checkModel: checkModel), animated: true) |
| 155 | -// } | |
| 155 | + self.navigationController?.pushViewController(CNLiveShopOrderViewController.init(), animated: true) | |
| 156 | + } | |
| 156 | 157 | if indexPath.section == 1 { |
| 157 | 158 | self.navigationController?.pushViewController(CNLiveMineAddInfoViewController.init(show_type: .info), animated: true) |
| 158 | 159 | } |
| ... | ... | @@ -165,6 +166,7 @@ extension CNLiveMineViewController { |
| 165 | 166 | if indexPath.section == 3 && indexPath.row == 1 { |
| 166 | 167 | self.navigationController?.pushViewController(CNLiveTypeFeedBackViewController.init(show_type: .setting), animated: true) |
| 167 | 168 | } |
| 169 | + | |
| 168 | 170 | } |
| 169 | 171 | |
| 170 | 172 | func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { | ... | ... |
metaCode/Classes/Main/MinePage/ViewModel/CNLiveMineBaseModel.swift
| ... | ... | @@ -371,3 +371,28 @@ class MineIntegralRecordDescModel: BaseModel { |
| 371 | 371 | var integralDesc: String? = "" |
| 372 | 372 | } |
| 373 | 373 | |
| 374 | +// !!!: /api/v1/applyShopInfo 积分明细列表 | |
| 375 | +class MineApplyShopInfoModel: BaseModel { | |
| 376 | + var state: String? = ""//状态 0 未申请 1 开店 2 申请中 3 已拒绝 4 闭店 0没有下列参数 1如果没有下列参数则为店员身份 | |
| 377 | + var identity_stop_time: String? = ""//结束时间 | |
| 378 | + var registered_address: String? = "" //注册地址 | |
| 379 | + var commercial_name: String? = ""//统一社会信用代码 | |
| 380 | + var certificates_name: String? = "" //持证人姓名 | |
| 381 | + var management_stop_time: String? = ""//营业执照 结束时间戳 | |
| 382 | + var category: String? = ""//经营类目id | |
| 383 | + var addtime: String? = ""//申请时间 | |
| 384 | + var service_phone: String? = "" //服务电话 | |
| 385 | + var store_logo: String? = ""//申请时的店铺logo地址 | |
| 386 | + var identity_start_time: String? = ""//开始时间 | |
| 387 | + var certificates_code: String? = ""//法人身份证号 | |
| 388 | + var id: String? = "" | |
| 389 | + var desc: String? = ""//拒绝理由 state 等于 3 时显示 | |
| 390 | + var identification_card1_img: String? = ""//身份证正面图片地址 | |
| 391 | + var aptitude_images: String? = ""//特殊资质图片地址 | |
| 392 | + var business_licence_img: String? = "" //营业执照照片地址 | |
| 393 | + var management_start_time: String? = ""//营业执照 开始时间戳 | |
| 394 | + var credit_code: String? = ""//统一社会信用代码 | |
| 395 | + var store_name: String? = ""//申请时的店铺名称 | |
| 396 | + var identification_card2_img: String? = ""//身份证反面图片地址 | |
| 397 | +} | |
| 398 | + | ... | ... |
metaCode/Classes/Main/MinePage/ViewModel/CNLiveMineViewModel.swift
| ... | ... | @@ -447,17 +447,6 @@ class CNLiveMineViewModel: NSObject { |
| 447 | 447 | if resp["data"] is NSNull { |
| 448 | 448 | resultBlock(NSNull(),.failed) |
| 449 | 449 | } else { |
| 450 | - | |
| 451 | -// do { | |
| 452 | -// let jsonData = try JSONSerialization.data(withJSONObject: resp, options: .prettyPrinted) | |
| 453 | -// if let jsonString = String(data: jsonData, encoding: .utf8) { | |
| 454 | -// print("===>"+jsonString) | |
| 455 | -// } | |
| 456 | -// } catch { | |
| 457 | -// print("error \(error)") | |
| 458 | -// } | |
| 459 | - | |
| 460 | - | |
| 461 | 450 | let newsModel = dictionaryToModel(resp as! [String : Any], MineStandInfoBaseModel.self,"data") as! MineStandInfoBaseModel |
| 462 | 451 | if type == .nodate { |
| 463 | 452 | let tempArray = NSMutableArray() |
| ... | ... | @@ -881,6 +870,53 @@ class CNLiveMineViewModel: NSObject { |
| 881 | 870 | } |
| 882 | 871 | } |
| 883 | 872 | |
| 873 | + /// 获取商家申请信息 | |
| 874 | + /// - Parameter resultBlock: 返回结果 | |
| 875 | + static func requestApplyShopInfo(resultBlock: @escaping resultNewsBlock) { | |
| 876 | + let param = NSMutableDictionary() | |
| 877 | + param.setValue(UserInfoManager.shared.userInfo.uid, forKey: "uid") | |
| 878 | + let custom_param = NSMutableDictionary() | |
| 879 | + custom_param.setValue(APPId_wjj, forKey: "appId") | |
| 880 | + custom_param.setValue(APPKey_wjj, forKey: "appKey") | |
| 881 | + CNLiveNetworking.setAllowRequestDefaultArgument(true) | |
| 882 | + CNLiveNetworking.setupShowDataResult(false) | |
| 883 | + CNLiveNetworking.setupDSRequest(true) | |
| 884 | + CNLiveNetworking.setupCustomParam(custom_param as? [String : String]) | |
| 885 | + CNLiveNetworking.requestNetwork(with: .POST, urlString: APPBaseWjjBUrl+"/api/v1/applyShopInfo", param: param as! [String : String], cacheType: .networkOnly) { task, result, error in | |
| 886 | + hiddenLoading() | |
| 887 | + if (error == nil) { | |
| 888 | + let resp = result as! NSDictionary | |
| 889 | + let errorCode = "\(resp["code"] ?? "0")" | |
| 890 | + if (errorCode == "200") { | |
| 891 | + let listModel = dictionaryToModel(resp as! [String : Any], MineApplyShopInfoModel.self,"data") as! MineApplyShopInfoModel | |
| 892 | + resultBlock(listModel,.success) | |
| 893 | + } else { | |
| 894 | + showMessage(message: resp["message"] as! String) | |
| 895 | + resultBlock(NSNull(),.failed) | |
| 896 | + } | |
| 897 | + } else { | |
| 898 | + if CNLiveNetworking.isNetworking() { | |
| 899 | + showMessage(message: "获取失败") | |
| 900 | + resultBlock(NSNull(),.failed) | |
| 901 | + } else { | |
| 902 | + showMessage(message: "似乎与网络断开链接") | |
| 903 | + resultBlock(NSNull(),.noNetwork) | |
| 904 | + } | |
| 905 | + } | |
| 906 | + } | |
| 907 | + } | |
| 908 | + | |
| 909 | + static func log(resp: Any) { | |
| 910 | + do { | |
| 911 | + let jsonData = try JSONSerialization.data(withJSONObject: resp, options: .prettyPrinted) | |
| 912 | + if let jsonString = String(data: jsonData, encoding: .utf8) { | |
| 913 | + print("网络请求获取的数据===>"+jsonString) | |
| 914 | + } | |
| 915 | + } catch { | |
| 916 | + print("error \(error)") | |
| 917 | + } | |
| 918 | + } | |
| 919 | + | |
| 884 | 920 | |
| 885 | 921 | /// 获取十位时间戳 |
| 886 | 922 | static var timeStamp: Int { | ... | ... |
metaCode/Classes/Main/ShopPage/Controller/CNLiveShopOrderDetailViewController.swift
0 → 100644
| 1 | +// | |
| 2 | +// CNLiveShopOrderDetailViewController.swift | |
| 3 | +// metaCode | |
| 4 | +// | |
| 5 | +// Created by open on 2023/11/1. | |
| 6 | +// | |
| 7 | + | |
| 8 | +import Foundation | |
| 9 | +import EmptyDataSet_Swift | |
| 10 | +enum CNLiveShopOrderDetailShowType { | |
| 11 | + case order //订单详情 | |
| 12 | + case sale //订单售后 | |
| 13 | +} | |
| 14 | + | |
| 15 | +class CNLiveShopOrderDetailViewController: CNLiveBaseViewController, EmptyDataSetSource, EmptyDataSetDelegate, UITableViewDelegate, UITableViewDataSource{ | |
| 16 | + | |
| 17 | + let kShopBodyOrderDetailOneViewCellIdentifier = "kShopBodyOrderDetailOneViewCellIdentifier" | |
| 18 | + let kShopBodyOrderDetailTwoViewCellIdentifier = "kShopBodyOrderDetailTwoViewCellIdentifier" | |
| 19 | + let kShopBodyOrderDetailThreeViewCellIdentifier = "kShopBodyOrderDetailThreeViewCellIdentifier" | |
| 20 | + let kShopBodyOrderDetailHeaderViewCellIdentifier = "kShopBodyOrderDetailHeaderViewCellIdentifier" | |
| 21 | + let kShopBodyOrderDetailFooterViewCellIdentifier = "kShopBodyOrderDetailFooterViewCellIdentifier" | |
| 22 | + lazy var tableView : UITableView = { | |
| 23 | + let tableView = UITableView(frame: .zero, style: .grouped) | |
| 24 | + tableView.dataSource = self | |
| 25 | + tableView.delegate = self | |
| 26 | + tableView.emptyDataSetSource = self | |
| 27 | + tableView.emptyDataSetDelegate = self | |
| 28 | + tableView.backgroundColor = .clear | |
| 29 | + tableView.tableFooterView = UIView.init() | |
| 30 | + tableView.separatorStyle = .none | |
| 31 | + tableView.register(ShopBodyOrderDetailOneTableViewCell.self, forCellReuseIdentifier: kShopBodyOrderDetailOneViewCellIdentifier) | |
| 32 | + tableView.register(ShopBodyOrderDetailTwoTableViewCell.self, forCellReuseIdentifier: kShopBodyOrderDetailTwoViewCellIdentifier) | |
| 33 | + tableView.register(ShopBodyOrderDetailThreeTableViewCell.self, forCellReuseIdentifier: kShopBodyOrderDetailThreeViewCellIdentifier) | |
| 34 | + tableView.tableHeaderView = headerView | |
| 35 | + return tableView | |
| 36 | + }() | |
| 37 | + | |
| 38 | + lazy var headerView: ShopBodyOrderDetailHeaderView = { | |
| 39 | + let headerView = ShopBodyOrderDetailHeaderView.init(frame: CGRect(x: 0, y: 0, width: KSreenWidth, height: 50)) | |
| 40 | + headerView.backgroundColor = .white | |
| 41 | + return headerView | |
| 42 | + }() | |
| 43 | + | |
| 44 | + lazy var dataArray: NSMutableArray = { | |
| 45 | + let dataArray = NSMutableArray.init() | |
| 46 | + return dataArray | |
| 47 | + }() | |
| 48 | + | |
| 49 | + lazy var headerArray: NSMutableArray = { | |
| 50 | + let headerArray = NSMutableArray.init() | |
| 51 | + return headerArray | |
| 52 | + }() | |
| 53 | + | |
| 54 | + lazy var footerArray: NSMutableArray = { | |
| 55 | + let footerArray = NSMutableArray.init() | |
| 56 | + return footerArray | |
| 57 | + }() | |
| 58 | + | |
| 59 | + var _orderId: String | |
| 60 | + var detailModel: ShopOrderDetailModel! | |
| 61 | + var network_type: CNLiveMineResponseType! | |
| 62 | + var _show_type: CNLiveShopOrderDetailShowType! | |
| 63 | + init(orderId: String, show_type:CNLiveShopOrderDetailShowType) { | |
| 64 | + _orderId = orderId | |
| 65 | + _show_type = show_type | |
| 66 | + super.init(nibName:nil, bundle:nil) | |
| 67 | + } | |
| 68 | + | |
| 69 | + required init?(coder: NSCoder) { | |
| 70 | + fatalError("init(coder:) has not been implemented") | |
| 71 | + } | |
| 72 | + | |
| 73 | + override func viewDidLoad() { | |
| 74 | + super.viewDidLoad() | |
| 75 | + | |
| 76 | + navigationBarHidden = false | |
| 77 | + titleName = "订单详情" | |
| 78 | + | |
| 79 | + loadDataSourceAction() | |
| 80 | + | |
| 81 | + view.addSubview(tableView) | |
| 82 | + tableView.snp.makeConstraints { make in | |
| 83 | + make.top.equalTo(KNavigationHeight) | |
| 84 | + make.left.right.equalToSuperview() | |
| 85 | + make.bottom.equalToSuperview().offset(-KTabBarHeight) | |
| 86 | + } | |
| 87 | + } | |
| 88 | + | |
| 89 | + func loadDataSourceAction() { | |
| 90 | + CNLiveShopViewModel.requestOrderDetail(orderId: _orderId) { [weak self] result, respStatue in | |
| 91 | + if respStatue == .success { | |
| 92 | + self!.detailModel = result as? ShopOrderDetailModel | |
| 93 | + self!.dataArray.addObjects(from: (self?.detailModel.order_detail)!) | |
| 94 | + self!.tableView.reloadData() | |
| 95 | + self!.tidyHeaderDataSource() | |
| 96 | + }else if (respStatue == .noNetwork) { | |
| 97 | + self!.network_type = .noNetwork | |
| 98 | + self!.tableView.reloadEmptyDataSet() | |
| 99 | + } else { | |
| 100 | + self!.network_type = .failed | |
| 101 | + self!.tableView.reloadEmptyDataSet() | |
| 102 | + } | |
| 103 | + } | |
| 104 | + } | |
| 105 | +} | |
| 106 | + | |
| 107 | +extension CNLiveShopOrderDetailViewController { | |
| 108 | + func numberOfSections(in tableView: UITableView) -> Int { | |
| 109 | + return 2 | |
| 110 | + } | |
| 111 | + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | |
| 112 | + if section == 0 { | |
| 113 | + return headerArray.count | |
| 114 | + } | |
| 115 | + return self.dataArray.count | |
| 116 | + } | |
| 117 | + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | |
| 118 | + guard let cell = tableView.dequeueReusableCell(withIdentifier: kShopBodyOrderDetailTwoViewCellIdentifier) as? ShopBodyOrderDetailTwoTableViewCell else { | |
| 119 | + return ShopBodyOrderDetailTwoTableViewCell() | |
| 120 | + } | |
| 121 | + var isHiddenLine: Bool = false | |
| 122 | + if indexPath.row == dataArray.count - 1 { | |
| 123 | + isHiddenLine = true | |
| 124 | + } | |
| 125 | + let goodsModel = dataArray[indexPath.row] as! ShopOrderListGoodsModel | |
| 126 | + cell.setupDataSource(goodsModel: goodsModel, isHiddenLine: isHiddenLine, isRefund: false, isState: (self.detailModel.state == "3")) | |
| 127 | + return cell | |
| 128 | + } | |
| 129 | + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { | |
| 130 | + return 110 | |
| 131 | + } | |
| 132 | + func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { | |
| 133 | + return 0.01 | |
| 134 | + } | |
| 135 | + func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { | |
| 136 | + return UIView.init() | |
| 137 | + } | |
| 138 | + func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { | |
| 139 | + return 10 | |
| 140 | + } | |
| 141 | + func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { | |
| 142 | + let view = UIView.init(frame: CGRect(x: 0, y: 0, width: KSreenWidth, height: 10)) | |
| 143 | + view.backgroundColor = HexColor("#F6F6F6") | |
| 144 | + return view | |
| 145 | + } | |
| 146 | + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | |
| 147 | + | |
| 148 | + } | |
| 149 | +} | |
| 150 | + | |
| 151 | +extension CNLiveShopOrderDetailViewController { | |
| 152 | + | |
| 153 | + func image(forEmptyDataSet scrollView: UIScrollView) -> UIImage? { | |
| 154 | + if network_type == .failed || network_type == .unkonw { | |
| 155 | + return UIImage(named: "mine_list_source_unusual_failed") | |
| 156 | + } | |
| 157 | + if dataArray.count == 0 { | |
| 158 | + return UIImage(named: "mine_list_source_unusual_empty") | |
| 159 | + } | |
| 160 | + if network_type == .noNetwork { | |
| 161 | + return UIImage(named: "mine_list_source_unusual_noNet") | |
| 162 | + } | |
| 163 | + return UIImage(named: "mine_list_source_unusual_empty") | |
| 164 | + } | |
| 165 | + | |
| 166 | + func title(forEmptyDataSet scrollView: UIScrollView) -> NSAttributedString? { | |
| 167 | + var defult_string = "" | |
| 168 | + if network_type == .failed || network_type == .unkonw { | |
| 169 | + defult_string = "接口请求错误,刷新试试~" | |
| 170 | + } | |
| 171 | + if network_type == .noNetwork { | |
| 172 | + defult_string = "网络开小差了,刷新试试~" | |
| 173 | + } | |
| 174 | + if dataArray.count == 0 { | |
| 175 | + defult_string = "暂时没有数据~" | |
| 176 | + } | |
| 177 | + return NSAttributedString(string: defult_string, attributes: [.font: Font_17,.foregroundColor: HexColor("#666666")!]) | |
| 178 | + } | |
| 179 | + | |
| 180 | + func buttonTitle(forEmptyDataSet scrollView: UIScrollView, for state: UIControl.State) -> NSAttributedString? { | |
| 181 | + if network_type == .failed || network_type == .noNetwork { | |
| 182 | + let attributes = [NSAttributedString.Key.font:Font_16_Fit, | |
| 183 | + NSAttributedString.Key.foregroundColor: HexColor("#609BFF")] | |
| 184 | + return NSAttributedString(string: "刷一刷", attributes: attributes as [NSAttributedString.Key : Any]) | |
| 185 | + } | |
| 186 | + return nil | |
| 187 | + } | |
| 188 | + | |
| 189 | + func emptyDataSet(_ scrollView: UIScrollView, didTapView view: UIView) { | |
| 190 | + if network_type == .failed || network_type == .noNetwork { | |
| 191 | + loadDataSourceAction() | |
| 192 | + } | |
| 193 | + } | |
| 194 | +} | |
| 195 | + | |
| 196 | +extension CNLiveShopOrderDetailViewController { | |
| 197 | + /// 对头视图数据进行整理 | |
| 198 | + private func tidyHeaderDataSource() { | |
| 199 | + var back_image = "" | |
| 200 | + var icon_image = "" | |
| 201 | + var userTitle = "" | |
| 202 | + var userMessage = "" | |
| 203 | + var statues = "" | |
| 204 | + var isNoUser = false | |
| 205 | + var deliveryMessage = "" | |
| 206 | + if detailModel.state == "1" { | |
| 207 | + statues = "等待买家付款" | |
| 208 | + back_image = "DS_order_daifukuan" | |
| 209 | + icon_image = "DS_order_money" | |
| 210 | + } | |
| 211 | + if detailModel.state == "2" { | |
| 212 | + if detailModel.delivery == "2" { | |
| 213 | + statues = "卖家备货中" | |
| 214 | + } else { | |
| 215 | + statues = "等待卖家发货" | |
| 216 | + } | |
| 217 | + back_image = "DS_order_daifahuo" | |
| 218 | + icon_image = "DS_order_timer" | |
| 219 | + } | |
| 220 | + if detailModel.state == "3" { | |
| 221 | + if detailModel.delivery == "2" { | |
| 222 | + statues = "备货完毕" | |
| 223 | + back_image = "DS_order_yifahuo" | |
| 224 | + icon_image = "DS_order_money" | |
| 225 | + } else { | |
| 226 | + if detailModel.is_send_all { | |
| 227 | + statues = "" | |
| 228 | + back_image = "DS_order_bufen_fahuo" | |
| 229 | + icon_image = "" | |
| 230 | + } else { | |
| 231 | + statues = "卖家已发货" | |
| 232 | + back_image = "DS_order_yifahuo" | |
| 233 | + icon_image = "DS_order_timer" | |
| 234 | + } | |
| 235 | + } | |
| 236 | + } | |
| 237 | + if detailModel.state == "4" { | |
| 238 | + if detailModel.delivery == "2" { | |
| 239 | + statues = "自取完毕" | |
| 240 | + } else { | |
| 241 | + statues = "确认送达" | |
| 242 | + } | |
| 243 | + back_image = "DS_order_yiwancheng" | |
| 244 | + icon_image = "DS_order_money" | |
| 245 | + } | |
| 246 | + if detailModel.state == "5" { | |
| 247 | + statues = "已取消" | |
| 248 | + back_image = "DS_order_yiwancheng" | |
| 249 | + icon_image = "DS_order_close" | |
| 250 | + } | |
| 251 | + if detailModel.state == "6" { | |
| 252 | + statues = "已退款" | |
| 253 | + back_image = "DS_order_yiwancheng" | |
| 254 | + icon_image = "DS_order_close" | |
| 255 | + } | |
| 256 | + if detailModel.delivery == "2" { | |
| 257 | + isNoUser = false | |
| 258 | + deliveryMessage = "自取" | |
| 259 | + userTitle = "联系电话" | |
| 260 | + userMessage = detailModel.user_phone ?? "" | |
| 261 | + } else { | |
| 262 | + deliveryMessage = "物流配送" | |
| 263 | + userTitle = "\(detailModel.address_name ?? "") \(detailModel.address_phone ?? "")" | |
| 264 | + userMessage = detailModel.address_address ?? "" | |
| 265 | + if detailModel.state == "4" { | |
| 266 | + deliveryMessage = "已签收" | |
| 267 | + } | |
| 268 | + if detailModel.state == "4" { | |
| 269 | + deliveryMessage = "已取消" | |
| 270 | + } | |
| 271 | + if detailModel.state == "4" { | |
| 272 | + deliveryMessage = "已退款" | |
| 273 | + } | |
| 274 | + isNoUser = !detailModel.address_name!.isNotBlank() || !detailModel.address_name!.isNotBlank() | |
| 275 | + } | |
| 276 | + let dict01 = ["title":"下单时间:\(detailModel.orderid ?? "")","desc":"订单编号:\(detailModel.addtime ?? "")","phone":""] | |
| 277 | + let dict02 = ["title":"配送信息","desc":deliveryMessage,"phone":""] | |
| 278 | + let dict03 = ["title":userTitle,"desc":userMessage,"phone":""] | |
| 279 | + if isNoUser { | |
| 280 | + headerArray.add(dict01) | |
| 281 | + } else { | |
| 282 | + headerArray.add(dict01) | |
| 283 | + headerArray.add(dict02) | |
| 284 | + headerArray.add(dict03) | |
| 285 | + } | |
| 286 | + if detailModel.content!.isNotBlank() { | |
| 287 | + headerArray.add(["name":"备注信息","desc":detailModel.content,"phone":""]) | |
| 288 | + } | |
| 289 | + headerView.setupDataSource(dict: ["statues":statues,"back_image":back_image,"icon_image":icon_image]) | |
| 290 | + } | |
| 291 | + | |
| 292 | + /// 对尾视图数据进行整理 | |
| 293 | + private func tidyFooterDataSource() { | |
| 294 | + | |
| 295 | + } | |
| 296 | +} | ... | ... |
metaCode/Classes/Main/ShopPage/Controller/CNLiveShopOrderListViewController.swift
0 → 100644
| 1 | +// | |
| 2 | +// CNLiveShopOrderListViewController.swift | |
| 3 | +// metaCode | |
| 4 | +// | |
| 5 | +// Created by open on 2023/10/31. | |
| 6 | +// | |
| 7 | + | |
| 8 | +import Foundation | |
| 9 | +import JXSegmentedView | |
| 10 | +import JXPagingView | |
| 11 | +import EmptyDataSet_Swift | |
| 12 | +import MJRefresh | |
| 13 | + | |
| 14 | +enum CNLiveShopOrderListShowType { | |
| 15 | + case all //全部 | |
| 16 | + case will //待发货 | |
| 17 | + case have //已发货 | |
| 18 | + case end //售后退款 | |
| 19 | +} | |
| 20 | + | |
| 21 | +class CNLiveShopOrderListViewController: CNLiveBaseViewController, UITableViewDelegate, UITableViewDataSource, JXSegmentedListContainerViewListDelegate, EmptyDataSetSource, EmptyDataSetDelegate { | |
| 22 | + | |
| 23 | + func listView() -> UIView { | |
| 24 | + return view | |
| 25 | + } | |
| 26 | + | |
| 27 | + let kShopBodyOrderListViewCellIdentifier = "kShopBodyListViewCellIdentifier" | |
| 28 | + let kShopBodyOrderHeaderViewCellIdentifier = "kShopBodyOrderHeaderViewCellIdentifier" | |
| 29 | + let kShopBodyOrderFooterViewCellIdentifier = "kShopBodyOrderFooterViewCellIdentifier" | |
| 30 | + lazy var tableView : UITableView = { | |
| 31 | + let tableView = UITableView(frame: .zero, style: .grouped) | |
| 32 | + tableView.dataSource = self | |
| 33 | + tableView.delegate = self | |
| 34 | + tableView.emptyDataSetSource = self | |
| 35 | + tableView.emptyDataSetDelegate = self | |
| 36 | + tableView.backgroundColor = .clear | |
| 37 | + tableView.tableFooterView = UIView.init() | |
| 38 | + tableView.separatorStyle = .none | |
| 39 | + tableView.register(ShopBodyOrderListViewCell.self, forCellReuseIdentifier: kShopBodyOrderListViewCellIdentifier) | |
| 40 | + tableView.register(ShopBodyOrderHeaderViewCell.self, forHeaderFooterViewReuseIdentifier: kShopBodyOrderHeaderViewCellIdentifier) | |
| 41 | + tableView.register(ShopBodyOrderFooterViewCell.self, forHeaderFooterViewReuseIdentifier: kShopBodyOrderFooterViewCellIdentifier) | |
| 42 | + return tableView | |
| 43 | + }() | |
| 44 | + | |
| 45 | + lazy var dataArray: NSMutableArray = { | |
| 46 | + let dataArray = NSMutableArray.init() | |
| 47 | + return dataArray | |
| 48 | + }() | |
| 49 | + | |
| 50 | + var pageNum: NSInteger | |
| 51 | + var network_type: CNLiveMineResponseType! | |
| 52 | + var _show_type:CNLiveShopOrderListShowType! | |
| 53 | + init(show_type:CNLiveShopOrderListShowType) { | |
| 54 | + self.pageNum = 1 | |
| 55 | + super.init(nibName:nil, bundle:nil) | |
| 56 | + _show_type = show_type | |
| 57 | + } | |
| 58 | + | |
| 59 | + required init?(coder: NSCoder) { | |
| 60 | + fatalError("init(coder:) has not been implemented") | |
| 61 | + } | |
| 62 | + | |
| 63 | + override func viewDidLoad() { | |
| 64 | + super.viewDidLoad() | |
| 65 | + view.backgroundColor = HexColor("#FAFAFA") | |
| 66 | + | |
| 67 | + loadDataSourceAction(page: 1) | |
| 68 | + | |
| 69 | + view.addSubview(tableView) | |
| 70 | + tableView.snp.makeConstraints { make in | |
| 71 | + make.top.equalToSuperview() | |
| 72 | + make.bottom.left.right.equalToSuperview() | |
| 73 | + } | |
| 74 | + addRefreshView() | |
| 75 | + } | |
| 76 | + | |
| 77 | + func loadDataSourceAction(page: NSInteger) { | |
| 78 | + var state = "" | |
| 79 | + if _show_type == .will { | |
| 80 | + state = "2" | |
| 81 | + } | |
| 82 | + if _show_type == .have { | |
| 83 | + state = "3" | |
| 84 | + } | |
| 85 | + if _show_type == .end { | |
| 86 | + state = "6" | |
| 87 | + } | |
| 88 | + showLoading(message: "") | |
| 89 | + CNLiveShopViewModel.requestOrderList(state: state, page: 1) { [weak self] result, respStatue in | |
| 90 | + if respStatue == .success { | |
| 91 | + if self!.pageNum == 1 { | |
| 92 | + self!.dataArray.removeAllObjects() | |
| 93 | + self!.dataArray.addObjects(from: result as! [ShopOrderListModel]) | |
| 94 | + } | |
| 95 | + if self!.pageNum > 1 { | |
| 96 | + self!.dataArray.addObjects(from: result as! [ShopOrderListModel]) | |
| 97 | + } | |
| 98 | + self!.tableView.reloadData() | |
| 99 | + self!.tableView.mj_header?.endRefreshing() | |
| 100 | + self!.tableView.mj_footer?.endRefreshing() | |
| 101 | + if (result as! Array<Any>).count == 0 { | |
| 102 | + self!.tableView.mj_footer?.endRefreshingWithNoMoreData() | |
| 103 | + self!.tableView.reloadData() | |
| 104 | + } | |
| 105 | + }else if (respStatue == .noNetwork) { | |
| 106 | + self!.network_type = .noNetwork | |
| 107 | + self!.tableView.reloadEmptyDataSet() | |
| 108 | + } else { | |
| 109 | + self!.network_type = .failed | |
| 110 | + self!.tableView.reloadEmptyDataSet() | |
| 111 | + } | |
| 112 | + } | |
| 113 | + } | |
| 114 | + | |
| 115 | + func addRefreshView() { | |
| 116 | + tableView.mj_header = MJRefreshNormalHeader.init(refreshingBlock: {[weak self] in | |
| 117 | + self!.pageNum = 1 | |
| 118 | + self!.loadDataSourceAction(page: 1) | |
| 119 | + }) | |
| 120 | + | |
| 121 | + tableView.mj_footer = MJRefreshBackFooter.init(refreshingBlock: {[weak self] in | |
| 122 | + self!.pageNum = self!.pageNum + 1 | |
| 123 | + self!.loadDataSourceAction(page: self!.pageNum) | |
| 124 | + }) | |
| 125 | + } | |
| 126 | + | |
| 127 | + override func viewDidLayoutSubviews() { | |
| 128 | + super.viewDidLayoutSubviews() | |
| 129 | + } | |
| 130 | + | |
| 131 | +} | |
| 132 | +extension CNLiveShopOrderListViewController { | |
| 133 | + | |
| 134 | + func numberOfSections(in tableView: UITableView) -> Int { | |
| 135 | + return dataArray.count | |
| 136 | + } | |
| 137 | + | |
| 138 | + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | |
| 139 | + let order_detail = (dataArray[section] as! ShopOrderListModel).order_detail | |
| 140 | + return order_detail.count | |
| 141 | + } | |
| 142 | + | |
| 143 | + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | |
| 144 | + guard let cell = tableView.dequeueReusableCell(withIdentifier: kShopBodyOrderListViewCellIdentifier) as? ShopBodyOrderListViewCell else { | |
| 145 | + return ShopBodyOrderListViewCell() | |
| 146 | + } | |
| 147 | + let order_detail = (dataArray[indexPath.section] as! ShopOrderListModel).order_detail | |
| 148 | + let addTime = (dataArray[indexPath.section] as! ShopOrderListModel).addtime! | |
| 149 | + cell.setupDataSource(goodsModel: order_detail[indexPath.row] , addTime: addTime) | |
| 150 | + return cell | |
| 151 | + } | |
| 152 | + | |
| 153 | + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { | |
| 154 | + return 110 | |
| 155 | + } | |
| 156 | + | |
| 157 | + func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { | |
| 158 | + return 40 | |
| 159 | + } | |
| 160 | + | |
| 161 | + func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { | |
| 162 | + let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: kShopBodyOrderHeaderViewCellIdentifier) as! ShopBodyOrderHeaderViewCell | |
| 163 | + let listModel = (dataArray[section] as! ShopOrderListModel) | |
| 164 | + headerView.setupDataSource(listModel: listModel) | |
| 165 | + return headerView | |
| 166 | + } | |
| 167 | + | |
| 168 | + func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { | |
| 169 | + let listModel = (dataArray[section] as! ShopOrderListModel) | |
| 170 | + if listModel.isRefund == "1" { | |
| 171 | + return 60 | |
| 172 | + } else { | |
| 173 | + return 110 | |
| 174 | + } | |
| 175 | + } | |
| 176 | + | |
| 177 | + func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { | |
| 178 | + let footerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: kShopBodyOrderFooterViewCellIdentifier) as! ShopBodyOrderFooterViewCell | |
| 179 | + let listModel = (dataArray[section] as! ShopOrderListModel) | |
| 180 | + footerView.setupDataSource(listModel: listModel) | |
| 181 | + footerView.clickRightBtnCallBack = { [weak self] clickEvent, listModel in | |
| 182 | + self?.orderOperation(clickEvent: clickEvent, listModel: listModel) | |
| 183 | + } | |
| 184 | + return footerView | |
| 185 | + } | |
| 186 | + | |
| 187 | + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | |
| 188 | + let listModel = (dataArray[indexPath.section] as! ShopOrderListModel) | |
| 189 | + pushOrderDetail(listModel: listModel) | |
| 190 | + } | |
| 191 | +} | |
| 192 | + | |
| 193 | +extension CNLiveShopOrderListViewController { | |
| 194 | + | |
| 195 | + func image(forEmptyDataSet scrollView: UIScrollView) -> UIImage? { | |
| 196 | + if network_type == .failed || network_type == .unkonw { | |
| 197 | + return UIImage(named: "mine_list_source_unusual_failed") | |
| 198 | + } | |
| 199 | + if dataArray.count == 0 { | |
| 200 | + return UIImage(named: "mine_list_source_unusual_empty") | |
| 201 | + } | |
| 202 | + if network_type == .noNetwork { | |
| 203 | + return UIImage(named: "mine_list_source_unusual_noNet") | |
| 204 | + } | |
| 205 | + return UIImage(named: "mine_list_source_unusual_empty") | |
| 206 | + } | |
| 207 | + | |
| 208 | + func title(forEmptyDataSet scrollView: UIScrollView) -> NSAttributedString? { | |
| 209 | + var defult_string = "" | |
| 210 | + if network_type == .failed || network_type == .unkonw { | |
| 211 | + defult_string = "接口请求错误,刷新试试~" | |
| 212 | + } | |
| 213 | + if network_type == .noNetwork { | |
| 214 | + defult_string = "网络开小差了,刷新试试~" | |
| 215 | + } | |
| 216 | + if dataArray.count == 0 { | |
| 217 | + defult_string = "暂时没有数据~" | |
| 218 | + } | |
| 219 | + return NSAttributedString(string: defult_string, attributes: [.font: Font_17,.foregroundColor: HexColor("#666666")!]) | |
| 220 | + } | |
| 221 | + | |
| 222 | + func buttonTitle(forEmptyDataSet scrollView: UIScrollView, for state: UIControl.State) -> NSAttributedString? { | |
| 223 | + if network_type == .failed || network_type == .noNetwork { | |
| 224 | + let attributes = [NSAttributedString.Key.font:Font_16_Fit, | |
| 225 | + NSAttributedString.Key.foregroundColor: HexColor("#609BFF")] | |
| 226 | + return NSAttributedString(string: "刷一刷", attributes: attributes as [NSAttributedString.Key : Any]) | |
| 227 | + } | |
| 228 | + return nil | |
| 229 | + } | |
| 230 | + | |
| 231 | + func emptyDataSet(_ scrollView: UIScrollView, didTapView view: UIView) { | |
| 232 | + if network_type == .failed || network_type == .noNetwork { | |
| 233 | + loadDataSourceAction(page: 1) | |
| 234 | + } | |
| 235 | + } | |
| 236 | +} | |
| 237 | + | |
| 238 | +extension CNLiveShopOrderListViewController { | |
| 239 | + | |
| 240 | + /// 通过不同的按钮逻辑跳转不同界面 | |
| 241 | + /// - Parameters: | |
| 242 | + /// - clickEvent: 按钮类型 | |
| 243 | + /// - listModel: 数据源 | |
| 244 | + private func orderOperation(clickEvent: CNDSOrderListSectionFooterBtnClickEvent, listModel: ShopOrderListModel) { | |
| 245 | + switch clickEvent { | |
| 246 | + case .delivery: break | |
| 247 | + case .notifyOrder: | |
| 248 | + if listModel.is_tui == "2" { | |
| 249 | + showMessage(message: "此为退款订单") | |
| 250 | + return | |
| 251 | + } | |
| 252 | + pushOrderDetail(listModel: listModel) | |
| 253 | + break | |
| 254 | + default: | |
| 255 | + break | |
| 256 | + } | |
| 257 | + } | |
| 258 | + | |
| 259 | + /// 通知用户自提 | |
| 260 | + /// - Parameter listModel: 数据源 | |
| 261 | + private func notifyOrder(listModel: ShopOrderListModel) { | |
| 262 | + ConfigAlertManager.shared.presentAlert(title: "提示", message: "确认通知用户自提?", actionTitles: ["取消","确认"]) { index in | |
| 263 | + if index == 1 { | |
| 264 | + CNLiveShopViewModel.requestNotifyOrder(orderId: listModel.id!) { result, respStatue in | |
| 265 | + if respStatue == .success { | |
| 266 | + showMessage(message: "通知成功") | |
| 267 | + } | |
| 268 | + } | |
| 269 | + } | |
| 270 | + } | |
| 271 | + } | |
| 272 | + | |
| 273 | + /// 跳转到订单详情界面 | |
| 274 | + /// - Parameter listModel: 数据源 | |
| 275 | + private func pushOrderDetail(listModel: ShopOrderListModel) { | |
| 276 | + self.navigationController?.pushViewController(CNLiveShopOrderDetailViewController.init(orderId: listModel.id!, show_type: .order), animated: true) | |
| 277 | + } | |
| 278 | +} | ... | ... |
metaCode/Classes/Main/ShopPage/Controller/CNLiveShopOrderViewController.swift
0 → 100644
| 1 | +// | |
| 2 | +// CNLiveShopOrderViewController.swift | |
| 3 | +// metaCode | |
| 4 | +// | |
| 5 | +// Created by open on 2023/10/31. | |
| 6 | +// | |
| 7 | + | |
| 8 | +import Foundation | |
| 9 | +import JXSegmentedView | |
| 10 | +import JXPagingView | |
| 11 | + | |
| 12 | +let kCNLiveShopOrderListSectionTitleHeight = 49//标题显示 | |
| 13 | +class CNLiveShopOrderViewController: CNLiveBaseViewController { | |
| 14 | + | |
| 15 | + lazy var viewControllers: NSMutableArray = { | |
| 16 | + let viewControllers = NSMutableArray.init() | |
| 17 | + viewControllers.add(CNLiveShopOrderListViewController.init(show_type: .all)) | |
| 18 | + viewControllers.add(CNLiveShopOrderListViewController.init(show_type: .will)) | |
| 19 | + viewControllers.add(CNLiveShopOrderListViewController.init(show_type: .have)) | |
| 20 | + viewControllers.add(CNLiveShopOrderListViewController.init(show_type: .end)) | |
| 21 | + return viewControllers | |
| 22 | + }() | |
| 23 | + | |
| 24 | + lazy var dataSource: JXSegmentedNumberDataSource = { | |
| 25 | + let dataSource = JXSegmentedNumberDataSource() | |
| 26 | + dataSource.titles = ["全部","待发货","已发货","售后退款"] | |
| 27 | + dataSource.numbers = [0,0,0,0] | |
| 28 | + dataSource.isTitleColorGradientEnabled = true | |
| 29 | + dataSource.itemWidth = JXSegmentedViewAutomaticDimension | |
| 30 | + dataSource.itemSpacing = 0 | |
| 31 | + dataSource.titleNormalFont = Font_15_Fit | |
| 32 | + dataSource.titleSelectedFont = Font_15_Fit | |
| 33 | + dataSource.titleNormalColor = HexColor("#999999")! | |
| 34 | + dataSource.titleSelectedColor = HexColor("#28C1C6")! | |
| 35 | + return dataSource | |
| 36 | + }() | |
| 37 | + | |
| 38 | + lazy var categoryView: JXSegmentedView = { | |
| 39 | + let categoryView = JXSegmentedView.init(frame: CGRectMake(0, KNavigationHeight, KSreenWidth, CGFloat(kCNLiveShopOrderListSectionTitleHeight))) | |
| 40 | + categoryView.dataSource = dataSource | |
| 41 | + categoryView.collectionView.backgroundColor = HexColor("fafbfd") | |
| 42 | + categoryView.backgroundColor = .white | |
| 43 | + | |
| 44 | + let lineView = JXSegmentedIndicatorBackgroundView.init() | |
| 45 | + lineView.indicatorColor = HexColor("#28C1C6")! | |
| 46 | + lineView.indicatorHeight = 2 | |
| 47 | + lineView.indicatorPosition = .bottom | |
| 48 | + lineView.indicatorWidthIncrement = 0 | |
| 49 | + lineView.indicatorCornerRadius = 0 | |
| 50 | + categoryView.indicators = [lineView] | |
| 51 | + | |
| 52 | + return categoryView | |
| 53 | + }() | |
| 54 | + | |
| 55 | + lazy var listContainerView: JXSegmentedListContainerView! = { | |
| 56 | + return JXSegmentedListContainerView(dataSource: self) | |
| 57 | + }() | |
| 58 | + | |
| 59 | + override func viewDidLoad() { | |
| 60 | + super.viewDidLoad() | |
| 61 | + view.backgroundColor = .white | |
| 62 | + navigationBarHidden = false | |
| 63 | + titleName = "电商订单" | |
| 64 | + | |
| 65 | + view.addSubview(categoryView) | |
| 66 | + | |
| 67 | + categoryView.listContainer = listContainerView | |
| 68 | + view.addSubview(listContainerView) | |
| 69 | + | |
| 70 | + } | |
| 71 | + | |
| 72 | + override func viewDidLayoutSubviews() { | |
| 73 | + super.viewDidLayoutSubviews() | |
| 74 | + | |
| 75 | + categoryView.frame = CGRect(x: 0, y: KNavigationHeight, width: view.bounds.size.width, height: CGFloat(kCNLiveShopOrderListSectionTitleHeight)) | |
| 76 | + listContainerView.frame = CGRect(x: 0, y: KNavigationHeight+CGFloat(kCNLiveShopOrderListSectionTitleHeight), width: view.bounds.size.width, height: view.bounds.size.height - CGFloat(kCNLiveShopOrderListSectionTitleHeight) - KNavigationHeight) | |
| 77 | + } | |
| 78 | +} | |
| 79 | + | |
| 80 | +extension CNLiveShopOrderViewController: JXSegmentedViewDelegate { | |
| 81 | + func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) { | |
| 82 | + navigationController?.interactivePopGestureRecognizer?.isEnabled = (segmentedView.selectedIndex == 0) | |
| 83 | + } | |
| 84 | +} | |
| 85 | + | |
| 86 | +extension CNLiveShopOrderViewController: JXSegmentedListContainerViewDataSource { | |
| 87 | + func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int { | |
| 88 | + if let titleDataSource = categoryView.dataSource as? JXSegmentedBaseDataSource { | |
| 89 | + return titleDataSource.dataSource.count | |
| 90 | + } | |
| 91 | + return 0 | |
| 92 | + } | |
| 93 | + | |
| 94 | + func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate { | |
| 95 | + return viewControllers[index] as! JXSegmentedListContainerViewListDelegate | |
| 96 | + } | |
| 97 | +} | |
| 98 | + | ... | ... |
metaCode/Classes/Main/ShopPage/Model/CNLiveShopBaseModel.swift
0 → 100644
| 1 | +// | |
| 2 | +// CNLiveShopBaseModel.swift | |
| 3 | +// metaCode | |
| 4 | +// | |
| 5 | +// Created by open on 2023/10/31. | |
| 6 | +// | |
| 7 | + | |
| 8 | +import Foundation | |
| 9 | +import HandyJSON | |
| 10 | +//!!!: /api/v1/orders或者/api/v1/refundList数据返回 | |
| 11 | +class ShopOrderListModel: BaseModel { | |
| 12 | + | |
| 13 | + var isRefund: String? = "" // 是不是在退款界面 1是退款界面 2不是退款界面 | |
| 14 | + var title: String? = "" // 退款名称 | |
| 15 | + var status: String? = "" // state = 2 && status = 1 等待邮寄 state= 2 && status = 2 同意退款 | |
| 16 | + var id: String? = "" // 订单id && 退款单号 | |
| 17 | + var uid: String? = "" // 用户id | |
| 18 | + var price: String? = "" // 金额 && 申请退款的金额 | |
| 19 | + var addtime: String? = "" // 下单时间 && 申请时间戳 | |
| 20 | + var state: String? = "" // 状态 1待付款 2待发货 3待收货 4已完成 5已取消 6已退款 && 通过两个字段判断状态 state=1 申请中 state=3 已拒绝 state=5 已撤销 state = 2 时候要在判断status | |
| 21 | + var orderid: String? = "" // 付款订单号 | |
| 22 | + var buytime: String? = "" // 支付时间 | |
| 23 | + var finishtime: String? = "" // 完成时间 | |
| 24 | + var sendtime: String? = "" // 发货时间 | |
| 25 | + var is_tui: String? = "" // 2为退款中 | |
| 26 | + var delivery: String? = "" // 配送方式 1配送 2门店自提, | |
| 27 | + var address_name: String? = "" // 地址名称 或者 店铺名称 | |
| 28 | + var address_address: String? = "" // 地址 | |
| 29 | + var address_phone: String? = "" // 电话 | |
| 30 | + var ems: String? = "" // 配送费用 | |
| 31 | + var payment: String? = "" // 支付方式 1支付宝 2微信 3银联 | |
| 32 | + var content: String? = "" // 订单备注 取消状态为 取消理由 | |
| 33 | + var user_phone: String? = "" // 用户手机号 | |
| 34 | + var express_id: String? = "" // 快递公司编号 | |
| 35 | + var express_num: String? = "" // 快递号 | |
| 36 | + var express_state: String? = "" // 2在途 3签收 | |
| 37 | + var order_detail = [ShopOrderListGoodsModel]() // 商品 | |
| 38 | + var is_send: String? = "" // state为3时 is_send为 0时为部分发货 1已发货 | |
| 39 | + var send_num: String? = "" // 发货数量 | |
| 40 | + | |
| 41 | + override func mapping(mapper: HelpingMapper) { | |
| 42 | + mapper <<< | |
| 43 | + self.addtime <-- TransformOf(fromJSON: { (raw) -> String in | |
| 44 | + if raw!.count > 0 { | |
| 45 | + let date = NSDate(timeIntervalSince1970: TimeInterval(raw!)!) | |
| 46 | + let dateFormatter = DateFormatter() | |
| 47 | + dateFormatter.locale = Locale.init(identifier: "zh_CN") | |
| 48 | + dateFormatter.dateFormat = "YYYY-MM-dd hh:mm" | |
| 49 | + return dateFormatter.string(from: date as Date) | |
| 50 | + } | |
| 51 | + return raw! | |
| 52 | + }, toJSON: { (tuple) -> String? in | |
| 53 | + return tuple | |
| 54 | + }) | |
| 55 | + } | |
| 56 | +} | |
| 57 | + | |
| 58 | +//!!!: /api/v1/order数据返回 | |
| 59 | +class ShopOrderDetailModel: BaseModel { | |
| 60 | + | |
| 61 | + var id: String? = "" // 订单id && 退款单号 | |
| 62 | + var uid: String? = "" // 用户id | |
| 63 | + var price: String? = "" // 金额 | |
| 64 | + var addtime: String? = "" // 下单时间 | |
| 65 | + var state: String? = "" // 状态 1待付款 2待发货 3待收货 4已完成 5已取消 6已退款 | |
| 66 | + var orderid: String? = "" // 付款订单号 | |
| 67 | + var buytime: String? = "" // 支付时间 | |
| 68 | + var finishtime: String? = "" // 完成时间 | |
| 69 | + var sendtime: String? = "" // 发货时间 | |
| 70 | + var is_tui: String? = "" // 2为退款中 | |
| 71 | + var delivery: String? = "" // 配送方式 1配送 2门店自提, | |
| 72 | + var address_name: String? = "" // 地址名称 或者 店铺名称 | |
| 73 | + var address_address: String? = "" // 地址 | |
| 74 | + var address_phone: String? = "" // 电话 | |
| 75 | + var ems: String? = "" // 配送费用 | |
| 76 | + var pay_price: String? = "" // 实际支付金额 | |
| 77 | + var yunfei_fee: String? = "" // 配送费用 | |
| 78 | + var coupon_price: String? = "" // 优惠金额 | |
| 79 | + var coupon_type: String? = "" // 优惠类型(coupon_price > 0) 判断 1为平台优惠券 0为店铺类型 | |
| 80 | + var payment: String? = "" // 支付方式 1支付宝 2微信 3银联 4网家家支付 5货到付款 | |
| 81 | + var content: String? = "" // 订单备注 取消状态为 取消理由 | |
| 82 | + var user_phone: String? = "" // 用户手机号 | |
| 83 | + var express_id: String? = "" // 快递公司编号 | |
| 84 | + var express_num: String? = "" // 快递号 | |
| 85 | + var express_state: String? = "" // 2在途 3签收 | |
| 86 | + var order_detail = [ShopOrderListGoodsModel]() // 商品 | |
| 87 | + var username: String? = "" // 用户名 | |
| 88 | + var is_send: String? = "" // 是否拆单,state = 3时判断 | |
| 89 | + var send_num: String? = "" // 物流数量 | |
| 90 | + var refund_num: String? = "" // 已经退款数量 | |
| 91 | + var is_send_all: Bool = true // 是否是全部发货,这是自己设置的属性 | |
| 92 | + | |
| 93 | + override func mapping(mapper: HelpingMapper) { | |
| 94 | + mapper <<< | |
| 95 | + self.addtime <-- TransformOf(fromJSON: { (raw) -> String in | |
| 96 | + if raw!.count > 0 { | |
| 97 | + let date = NSDate(timeIntervalSince1970: TimeInterval(raw!)!) | |
| 98 | + let dateFormatter = DateFormatter() | |
| 99 | + dateFormatter.locale = Locale.init(identifier: "zh_CN") | |
| 100 | + dateFormatter.dateFormat = "YYYY-MM-dd hh:mm:SS" | |
| 101 | + return dateFormatter.string(from: date as Date) | |
| 102 | + } | |
| 103 | + return raw! | |
| 104 | + }, toJSON: { (tuple) -> String? in | |
| 105 | + return tuple | |
| 106 | + }) | |
| 107 | + } | |
| 108 | +} | |
| 109 | + | |
| 110 | + | |
| 111 | +class ShopOrderListGoodsModel: BaseModel { | |
| 112 | + | |
| 113 | + var id: String? = "" //清单id | |
| 114 | + var price: String? = "" // 价格 && 申请退款的金额 | |
| 115 | + var prices: String? = "" // 原价 | |
| 116 | + var simg: String? = "" // 图片 | |
| 117 | + var title: String? = "" // 名称 && 主标题 | |
| 118 | + var ads: String? = "" // 副标题 | |
| 119 | + var num: String? = "" // 数量 | |
| 120 | + var goods_id: String? = "" // 商品id | |
| 121 | + var coupon_price: String? = "" // 优惠金额 | |
| 122 | + var selectNum: String? = "" // 选中发货数量 | |
| 123 | + var send_num: String? = "" // 剩余未发货数量 | |
| 124 | + var refund_num: String? = "" // 退款成功数量 | |
| 125 | + var username: String? = "" // 用户名 | |
| 126 | +} | ... | ... |
metaCode/Classes/Main/ShopPage/View/CNLiveShopBodyDetailView.swift
0 → 100644
| 1 | +// | |
| 2 | +// CNLiveShopBodyDetailView.swift | |
| 3 | +// metaCode | |
| 4 | +// | |
| 5 | +// Created by open on 2023/11/1. | |
| 6 | +// | |
| 7 | + | |
| 8 | +import Foundation | |
| 9 | + | |
| 10 | +/// 头视图 | |
| 11 | +class ShopBodyOrderDetailHeaderView: UIView { | |
| 12 | + | |
| 13 | + lazy var iconView: UIImageView = { | |
| 14 | + let iconView = UIImageView.init() | |
| 15 | + iconView.backgroundColor = .white | |
| 16 | + iconView.contentMode = .scaleAspectFill | |
| 17 | + return iconView | |
| 18 | + }() | |
| 19 | + | |
| 20 | + lazy var smallView: UIImageView = { | |
| 21 | + let smallView = UIImageView.init() | |
| 22 | + smallView.backgroundColor = .clear | |
| 23 | + smallView.contentMode = .scaleAspectFill | |
| 24 | + return smallView | |
| 25 | + }() | |
| 26 | + | |
| 27 | + lazy var smallLabel: UILabel = { | |
| 28 | + let smallLabel = UILabel.init() | |
| 29 | + smallLabel.textColor = .white | |
| 30 | + smallLabel.font = BoldFont_18_Fit | |
| 31 | + return smallLabel | |
| 32 | + }() | |
| 33 | + | |
| 34 | + override init(frame: CGRect) { | |
| 35 | + super.init(frame: frame) | |
| 36 | + addSubview(iconView) | |
| 37 | + iconView.snp.makeConstraints { make in | |
| 38 | + make.centerX.equalToSuperview() | |
| 39 | + make.left.right.equalToSuperview() | |
| 40 | + make.height.equalTo(50) | |
| 41 | + } | |
| 42 | + iconView.addSubview(smallView) | |
| 43 | + smallView.snp.makeConstraints { make in | |
| 44 | + make.centerY.equalToSuperview() | |
| 45 | + make.left.equalToSuperview().offset(15) | |
| 46 | + make.size.equalTo(20) | |
| 47 | + } | |
| 48 | + iconView.addSubview(smallLabel) | |
| 49 | + smallLabel.snp.makeConstraints { make in | |
| 50 | + make.centerY.equalToSuperview() | |
| 51 | + make.left.equalTo(smallView.snp.right).offset(10) | |
| 52 | + make.right.equalToSuperview().offset(-15) | |
| 53 | + } | |
| 54 | + } | |
| 55 | + func setupDataSource(dict: NSDictionary) { | |
| 56 | + iconView.image = UIImage(named: dict["back_image"] as! String) | |
| 57 | + smallView.image = UIImage(named: (dict["icon_image"] as! String)) | |
| 58 | + smallLabel.text = dict["statues"] as? String | |
| 59 | + } | |
| 60 | + | |
| 61 | + required init?(coder: NSCoder) { | |
| 62 | + fatalError("init(coder:) has not been implemented") | |
| 63 | + } | |
| 64 | +} | |
| 65 | + | |
| 66 | +/// 列表图 | |
| 67 | +class ShopBodyOrderDetailOneTableViewCell: UITableViewCell { | |
| 68 | + | |
| 69 | + lazy var titleLabel: UILabel = { | |
| 70 | + let titleLabel = UILabel.init() | |
| 71 | + titleLabel.textColor = HexColor("0x222833") | |
| 72 | + titleLabel.font = regular_adapt_font(pointSize: 15) | |
| 73 | + titleLabel.numberOfLines = 1 | |
| 74 | + return titleLabel | |
| 75 | + }() | |
| 76 | + | |
| 77 | + lazy var descLabel: UILabel = { | |
| 78 | + let descLabel = UILabel.init() | |
| 79 | + descLabel.textColor = HexColor("#959595") | |
| 80 | + descLabel.font = regular_adapt_font(pointSize: 13) | |
| 81 | + descLabel.numberOfLines = 2 | |
| 82 | + return descLabel | |
| 83 | + }() | |
| 84 | + | |
| 85 | + lazy var phoneButton: UIButton = { | |
| 86 | + let phoneButton = UIButton(type: .custom) | |
| 87 | + phoneButton.setTitleColor(HexColor("4A90E2"), for: .normal) | |
| 88 | + phoneButton.titleLabel?.font = regular_adapt_font(pointSize: 14) | |
| 89 | + phoneButton.addTarget(self, action: #selector(phoneCallBtnClick), for: .touchUpInside) | |
| 90 | + return phoneButton | |
| 91 | + }() | |
| 92 | + | |
| 93 | + lazy var phoneView: UIImageView = { | |
| 94 | + let phoneView = UIImageView.init() | |
| 95 | + phoneView.backgroundColor = .white | |
| 96 | + phoneView.image = UIImage(named: "DS_order_phone") | |
| 97 | + return phoneView | |
| 98 | + }() | |
| 99 | + | |
| 100 | + lazy var lineLabel: UILabel = { | |
| 101 | + let lineLabel = UILabel.init() | |
| 102 | + lineLabel.backgroundColor = HexColor("#EAEAEA") | |
| 103 | + return lineLabel | |
| 104 | + }() | |
| 105 | + | |
| 106 | + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { | |
| 107 | + super.init(style: style, reuseIdentifier: reuseIdentifier) | |
| 108 | + contentView.backgroundColor = .clear | |
| 109 | + selectionStyle = .none | |
| 110 | + | |
| 111 | + | |
| 112 | + } | |
| 113 | + | |
| 114 | + @objc func phoneCallBtnClick() { | |
| 115 | + | |
| 116 | + } | |
| 117 | + | |
| 118 | + required init?(coder: NSCoder) { | |
| 119 | + fatalError("init(coder:) has not been implemented") | |
| 120 | + } | |
| 121 | +} | |
| 122 | + | |
| 123 | +/// 列表图 | |
| 124 | +class ShopBodyOrderDetailTwoTableViewCell: UITableViewCell { | |
| 125 | + lazy var titleLabel: UILabel = { | |
| 126 | + let titleLabel = UILabel.init() | |
| 127 | + titleLabel.textColor = HexColor("#333333") | |
| 128 | + titleLabel.font = BoldFont_16_Fit | |
| 129 | + titleLabel.numberOfLines = 2 | |
| 130 | + titleLabel.lineBreakMode = .byTruncatingTail | |
| 131 | + return titleLabel | |
| 132 | + }() | |
| 133 | + | |
| 134 | + lazy var statueLable: UILabel = { | |
| 135 | + let statueLabel = UILabel.init() | |
| 136 | + statueLabel.textColor = HexColor("#F5A623") | |
| 137 | + statueLabel.font = Font_13_Fit | |
| 138 | + statueLabel.textAlignment = .left | |
| 139 | + return statueLabel | |
| 140 | + }() | |
| 141 | + | |
| 142 | + lazy var numberLabel: UILabel = { | |
| 143 | + let numberLabel = UILabel.init(frame: CGRect.zero) | |
| 144 | + numberLabel.font = Font_12_Fit | |
| 145 | + numberLabel.textColor = HexColor("#65656") | |
| 146 | + return numberLabel | |
| 147 | + }() | |
| 148 | + | |
| 149 | + lazy var originalPriceLab: UILabel = { | |
| 150 | + let originalPriceLab = UILabel.init() | |
| 151 | + originalPriceLab.textColor = HexColor("#9c9c9c") | |
| 152 | + originalPriceLab.font = Font_10_Fit | |
| 153 | + return originalPriceLab | |
| 154 | + }() | |
| 155 | + | |
| 156 | + lazy var priceLab: UILabel = { | |
| 157 | + let priceLab = UILabel.init() | |
| 158 | + priceLab.textColor = HexColor("FF415F") | |
| 159 | + priceLab.font = BoldFont_18_Fit | |
| 160 | + return priceLab | |
| 161 | + }() | |
| 162 | + | |
| 163 | + lazy var descLabel: UILabel = { | |
| 164 | + let descLabel = UILabel.init() | |
| 165 | + descLabel.textColor = HexColor("9c9c9c") | |
| 166 | + descLabel.font = Font_14_Fit | |
| 167 | + descLabel.numberOfLines = 1 | |
| 168 | + descLabel.lineBreakMode = .byTruncatingTail | |
| 169 | + return descLabel | |
| 170 | + }() | |
| 171 | + | |
| 172 | + lazy var refundLab: UILabel = { | |
| 173 | + let refundLab = UILabel.init() | |
| 174 | + refundLab.font = Font_13_Fit | |
| 175 | + refundLab.textColor = HexColor("#F5A623") | |
| 176 | + refundLab.textAlignment = .right | |
| 177 | + return refundLab | |
| 178 | + }() | |
| 179 | + | |
| 180 | + lazy var iconView: UIImageView = { | |
| 181 | + let iconView = UIImageView.init() | |
| 182 | + iconView.backgroundColor = .white | |
| 183 | + iconView.layer.cornerRadius = 5 | |
| 184 | + iconView.layer.masksToBounds = true | |
| 185 | + iconView.image = UIImage.imageWithColor(color: HexColor("#f9f9f9")!, size: CGSize(width: 90, height: 90)) | |
| 186 | + return iconView | |
| 187 | + }() | |
| 188 | + | |
| 189 | + lazy var lineLabel: UILabel = { | |
| 190 | + let lineLabel = UILabel.init() | |
| 191 | + lineLabel.backgroundColor = HexColor("#EAEAEA") | |
| 192 | + return lineLabel | |
| 193 | + }() | |
| 194 | + | |
| 195 | + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { | |
| 196 | + super.init(style: style, reuseIdentifier: reuseIdentifier) | |
| 197 | + contentView.backgroundColor = .clear | |
| 198 | + selectionStyle = .none | |
| 199 | + | |
| 200 | + addSubview(titleLabel) | |
| 201 | + addSubview(numberLabel) | |
| 202 | + addSubview(iconView) | |
| 203 | + addSubview(lineLabel) | |
| 204 | + addSubview(statueLable) | |
| 205 | + addSubview(originalPriceLab) | |
| 206 | + addSubview(priceLab) | |
| 207 | + addSubview(refundLab) | |
| 208 | + addSubview(descLabel) | |
| 209 | + | |
| 210 | + setConstrainta() | |
| 211 | + } | |
| 212 | + | |
| 213 | + func setupDataSource(goodsModel: ShopOrderListGoodsModel, isHiddenLine: Bool, isRefund: Bool, isState: Bool) { | |
| 214 | + titleLabel.text = goodsModel.title | |
| 215 | + descLabel.text = goodsModel.ads | |
| 216 | + priceLab.text = "\(goodsModel.price ?? "")" | |
| 217 | + iconView.kf.setImage(with: URL(string: goodsModel.simg!), placeholder: UIImage.imageWithColor(color: HexColor("#f9f9f9")!, size: CGSize(width: 90, height: 90))) | |
| 218 | + | |
| 219 | + lineLabel.isHidden = isHiddenLine | |
| 220 | +// if !isRefund && isState { | |
| 221 | +// if (goodsModel.send_num == "0" || (Int(goodsModel.num) - Int(goodsModel.send_num)) + Int(goodsModel.refund_num) == Int(goodsModel.num)) { | |
| 222 | +// statueLable.text = "全部已发货" | |
| 223 | +// } else { | |
| 224 | +// statueLable.text = "\(Int(goodsModel.num) - Int(goodsModel.send_num))/\(goodsModel.num)已发货" | |
| 225 | +// } | |
| 226 | +// } | |
| 227 | + } | |
| 228 | + | |
| 229 | + func setConstrainta() { | |
| 230 | + iconView.snp.makeConstraints { make in | |
| 231 | + make.centerY.equalToSuperview() | |
| 232 | + make.left.equalToSuperview().offset(15) | |
| 233 | + make.top.equalToSuperview().offset(10) | |
| 234 | + make.size.equalTo(90) | |
| 235 | + } | |
| 236 | + titleLabel.snp.makeConstraints { make in | |
| 237 | + make.left.equalTo(iconView.snp.right).offset(10) | |
| 238 | + make.right.equalToSuperview().offset(-15) | |
| 239 | + make.top.equalTo(iconView.snp.top).offset(5) | |
| 240 | + } | |
| 241 | + numberLabel.snp.makeConstraints { make in | |
| 242 | + make.centerY.equalTo(originalPriceLab) | |
| 243 | + make.right.equalToSuperview().offset(-15) | |
| 244 | + } | |
| 245 | + refundLab.snp.makeConstraints { make in | |
| 246 | + make.left.equalToSuperview().offset(15) | |
| 247 | + make.top.equalTo(iconView.snp.bottom).offset(10) | |
| 248 | + } | |
| 249 | + priceLab.snp.makeConstraints { make in | |
| 250 | + make.left.equalTo(iconView.snp.right).offset(10) | |
| 251 | + make.bottom.equalTo(iconView.snp.bottom).offset(-5) | |
| 252 | + } | |
| 253 | + originalPriceLab.snp.makeConstraints { make in | |
| 254 | + make.left.equalTo(priceLab.snp.right).offset(10) | |
| 255 | + make.bottom.equalTo(iconView.snp.bottom).offset(-5) | |
| 256 | + } | |
| 257 | + descLabel.snp.makeConstraints { make in | |
| 258 | + make.left.equalTo(iconView.snp.right).offset(10) | |
| 259 | + make.top.equalTo(titleLabel.snp.bottom).offset(5) | |
| 260 | + } | |
| 261 | + lineLabel.snp.makeConstraints { make in | |
| 262 | + make.left.equalToSuperview().offset(15) | |
| 263 | + make.right.equalToSuperview().offset(-15) | |
| 264 | + make.bottom.equalToSuperview().offset(-1) | |
| 265 | + make.height.equalTo(1) | |
| 266 | + } | |
| 267 | + } | |
| 268 | + | |
| 269 | + required init?(coder: NSCoder) { | |
| 270 | + fatalError("init(coder:) has not been implemented") | |
| 271 | + } | |
| 272 | +} | |
| 273 | + | |
| 274 | +/// 列表图 | |
| 275 | +class ShopBodyOrderDetailThreeTableViewCell: UITableViewCell { | |
| 276 | + | |
| 277 | +} | |
| 278 | + | |
| 279 | +/// 尾视图 | |
| 280 | +class ShopBodyOrderDetailFooterViewCell: UITableViewHeaderFooterView { | |
| 281 | + | |
| 282 | +} | ... | ... |
metaCode/Classes/Main/ShopPage/View/CNLiveShopBodyListView.swift
0 → 100644
| 1 | +// | |
| 2 | +// CNLiveShopBodyListView.swift | |
| 3 | +// metaCode | |
| 4 | +// | |
| 5 | +// Created by open on 2023/10/31. | |
| 6 | +// | |
| 7 | + | |
| 8 | +import Foundation | |
| 9 | +import Kingfisher | |
| 10 | +/// 订单列表尾界面 | |
| 11 | +enum CNDSOrderListSectionFooterBtnClickEvent { | |
| 12 | + case notifyOrder //通知自提 | |
| 13 | + case delivery //发货 | |
| 14 | + case checkExpress//查快递 | |
| 15 | + case checkProgress//查进度 | |
| 16 | + case checkChat //联系买家 | |
| 17 | + case connection //查看详情 | |
| 18 | + case express //快递发货 | |
| 19 | + case expDetail //物流详情 | |
| 20 | + case none | |
| 21 | +} | |
| 22 | +typealias clickRightBtnCallBack = (_ event: CNDSOrderListSectionFooterBtnClickEvent,_ listModel :ShopOrderListModel) -> Void | |
| 23 | +class ShopBodyOrderFooterViewCell: UITableViewHeaderFooterView { | |
| 24 | + | |
| 25 | + lazy var addressLabel: UILabel = { | |
| 26 | + let addressLabel = UILabel.init() | |
| 27 | + addressLabel.textColor = HexColor("#727272") | |
| 28 | + addressLabel.font = Font_14_Fit | |
| 29 | + addressLabel.lineBreakMode = .byTruncatingTail | |
| 30 | + addressLabel.numberOfLines = 2 | |
| 31 | + return addressLabel | |
| 32 | + }() | |
| 33 | + | |
| 34 | + lazy var lineLabel: UILabel = { | |
| 35 | + let lineLabel = UILabel.init() | |
| 36 | + lineLabel.backgroundColor = HexColor("#EAEAEA") | |
| 37 | + return lineLabel | |
| 38 | + }() | |
| 39 | + | |
| 40 | + lazy var rightBtn: UIButton = { | |
| 41 | + let rightBtn = UIButton.init(type: .custom) | |
| 42 | + rightBtn.setTitleColor(HexColor("#FF3355"), for: .normal) | |
| 43 | + rightBtn.titleLabel?.font = BoldFont_14_Fit | |
| 44 | + rightBtn.layer.cornerRadius = 5 | |
| 45 | + rightBtn.layer.masksToBounds = true | |
| 46 | + rightBtn.layer.borderColor = HexColor("#FF3355")?.cgColor | |
| 47 | + rightBtn.layer.borderWidth = 1 | |
| 48 | + rightBtn.backgroundColor = .white | |
| 49 | + rightBtn.addTarget(self, action: #selector(rightBtnClick), for: .touchUpInside) | |
| 50 | + return rightBtn | |
| 51 | + }() | |
| 52 | + lazy var leftBtn: UIButton = { | |
| 53 | + let leftBtn = UIButton.init(type: .custom) | |
| 54 | + leftBtn.isHidden = true | |
| 55 | + leftBtn.setTitleColor(HexColor("#FF3355"), for: .normal) | |
| 56 | + leftBtn.titleLabel?.font = BoldFont_14_Fit | |
| 57 | + leftBtn.layer.cornerRadius = 5 | |
| 58 | + leftBtn.layer.masksToBounds = true | |
| 59 | + leftBtn.layer.borderColor = HexColor("#FF3355")?.cgColor | |
| 60 | + leftBtn.layer.borderWidth = 1 | |
| 61 | + leftBtn.backgroundColor = .white | |
| 62 | + leftBtn.addTarget(self, action: #selector(rightBtnClick), for: .touchUpInside) | |
| 63 | + return leftBtn | |
| 64 | + }() | |
| 65 | + | |
| 66 | + lazy var interView: UIView = { | |
| 67 | + let interView = UIView.init() | |
| 68 | + interView.backgroundColor = HexColor("#f8f8f8") | |
| 69 | + return interView | |
| 70 | + }() | |
| 71 | + | |
| 72 | + var clickRightBtnCallBack: clickRightBtnCallBack! | |
| 73 | + override init(reuseIdentifier: String?) { | |
| 74 | + super.init(reuseIdentifier: reuseIdentifier) | |
| 75 | + contentView.backgroundColor = .white | |
| 76 | + | |
| 77 | + addSubview(rightBtn) | |
| 78 | + rightBtn.snp.makeConstraints { make in | |
| 79 | + make.right.equalToSuperview().offset(-15) | |
| 80 | + make.bottom.equalToSuperview().offset(-20) | |
| 81 | + make.width.equalTo(70) | |
| 82 | + make.height.equalTo(30) | |
| 83 | + } | |
| 84 | + addSubview(leftBtn) | |
| 85 | + leftBtn.snp.makeConstraints { make in | |
| 86 | + make.centerY.equalTo(rightBtn) | |
| 87 | + make.right.equalTo(rightBtn.snp.left).offset(-10) | |
| 88 | + make.width.equalTo(70) | |
| 89 | + make.height.equalTo(30) | |
| 90 | + } | |
| 91 | + | |
| 92 | + addSubview(lineLabel) | |
| 93 | + lineLabel.snp.makeConstraints { make in | |
| 94 | + make.centerX.equalToSuperview() | |
| 95 | + make.left.equalToSuperview().offset(15) | |
| 96 | + make.right.equalToSuperview().offset(-15) | |
| 97 | + make.bottom.equalTo(rightBtn.snp.top).offset(-10) | |
| 98 | + make.height.equalTo(1) | |
| 99 | + } | |
| 100 | + | |
| 101 | + addSubview(addressLabel) | |
| 102 | + addressLabel.snp.makeConstraints { make in | |
| 103 | + make.centerX.equalToSuperview() | |
| 104 | + make.left.equalToSuperview().offset(15) | |
| 105 | + make.right.equalToSuperview().offset(-15) | |
| 106 | + make.bottom.equalTo(lineLabel.snp.top).offset(-10) | |
| 107 | + } | |
| 108 | + | |
| 109 | + addSubview(interView) | |
| 110 | + interView.snp.makeConstraints { make in | |
| 111 | + make.centerX.equalToSuperview() | |
| 112 | + make.left.right.equalToSuperview() | |
| 113 | + make.bottom.equalToSuperview() | |
| 114 | + make.height.equalTo(10) | |
| 115 | + } | |
| 116 | + } | |
| 117 | + | |
| 118 | + @objc func rightBtnClick(button: UIButton) { | |
| 119 | + | |
| 120 | + var clickEvent: CNDSOrderListSectionFooterBtnClickEvent! = CNDSOrderListSectionFooterBtnClickEvent.none | |
| 121 | + | |
| 122 | + if button.titleLabel?.text == "快递发货" { | |
| 123 | + if _listModel.state == "2" { | |
| 124 | + if _listModel.order_detail.count > 1 { | |
| 125 | + clickEvent = .expDetail | |
| 126 | + } else { | |
| 127 | + let goodsModel = _listModel.order_detail.first! | |
| 128 | + if Int(goodsModel.num!)! > 1 { | |
| 129 | + clickEvent = .expDetail | |
| 130 | + } else { | |
| 131 | + clickEvent = .delivery | |
| 132 | + } | |
| 133 | + } | |
| 134 | + } else { | |
| 135 | + if _listModel.is_send == "0" { | |
| 136 | + clickEvent = .expDetail | |
| 137 | + } else { | |
| 138 | + clickEvent = .delivery | |
| 139 | + } | |
| 140 | + } | |
| 141 | + } | |
| 142 | + if button.titleLabel?.text == "通知自提" { | |
| 143 | + clickEvent = .notifyOrder | |
| 144 | + } | |
| 145 | + if button.titleLabel?.text == "查看物流" { | |
| 146 | + clickEvent = .checkExpress | |
| 147 | + } | |
| 148 | + if button.titleLabel?.text == "查看进度" { | |
| 149 | + clickEvent = .checkProgress | |
| 150 | + } | |
| 151 | + if button.titleLabel?.text == "查看详情" { | |
| 152 | + clickEvent = .connection | |
| 153 | + } | |
| 154 | + if button.titleLabel?.text == "物流详情" { | |
| 155 | + clickEvent = .express | |
| 156 | + } | |
| 157 | + if clickEvent == CNDSOrderListSectionFooterBtnClickEvent.none { | |
| 158 | + return | |
| 159 | + } | |
| 160 | + | |
| 161 | + if (_listModel != nil) && (clickRightBtnCallBack != nil) { | |
| 162 | + self.clickRightBtnCallBack(clickEvent, _listModel) | |
| 163 | + } | |
| 164 | + } | |
| 165 | + | |
| 166 | + | |
| 167 | + var _listModel: ShopOrderListModel! | |
| 168 | + func setupDataSource(listModel: ShopOrderListModel) { | |
| 169 | + _listModel = listModel | |
| 170 | + | |
| 171 | + if listModel.isRefund == "1" { | |
| 172 | + addressLabel.isHidden = true | |
| 173 | + lineLabel.isHidden = true | |
| 174 | + } else { | |
| 175 | + addressLabel.isHidden = false | |
| 176 | + lineLabel.isHidden = false | |
| 177 | + | |
| 178 | + addressLabel.text = "\(listModel.address_name ?? "") \(listModel.address_phone ?? "") \(listModel.address_address ?? "")" | |
| 179 | + } | |
| 180 | + | |
| 181 | + rightBtn.isHidden = false | |
| 182 | + leftBtn.isHidden = true | |
| 183 | + | |
| 184 | + if listModel.isRefund == "1" { | |
| 185 | + rightBtn.setTitle("查看详情", for: .normal) | |
| 186 | + return | |
| 187 | + } | |
| 188 | + | |
| 189 | + switch listModel.state { | |
| 190 | + case "2": | |
| 191 | + if listModel.is_send == "0" { | |
| 192 | + leftBtn.isHidden = false | |
| 193 | + rightBtn.setTitle("快递发货", for: .normal) | |
| 194 | + leftBtn.setTitle("物流详情", for: .normal) | |
| 195 | + } else { | |
| 196 | + if listModel.delivery == "2" { | |
| 197 | + rightBtn.setTitle("通知自提", for: .normal) | |
| 198 | + } else { | |
| 199 | + rightBtn.setTitle("快递发货", for: .normal) | |
| 200 | + } | |
| 201 | + } | |
| 202 | + case "3": | |
| 203 | + if listModel.is_send == "0" { | |
| 204 | + leftBtn.isHidden = false | |
| 205 | + rightBtn.setTitle("快递发货", for: .normal) | |
| 206 | + leftBtn.setTitle("物流详情", for: .normal) | |
| 207 | + } else { | |
| 208 | + if listModel.delivery == "2" { | |
| 209 | + rightBtn.setTitle("查看进度", for: .normal) | |
| 210 | + } else { | |
| 211 | + rightBtn.setTitle("查看物流", for: .normal) | |
| 212 | + } | |
| 213 | + } | |
| 214 | + case "4": | |
| 215 | + if listModel.delivery == "2" { | |
| 216 | + rightBtn.setTitle("查看进度", for: .normal) | |
| 217 | + } else { | |
| 218 | + rightBtn.setTitle("查看物流", for: .normal) | |
| 219 | + } | |
| 220 | + case "6": | |
| 221 | + rightBtn.setTitle("查看详情", for: .normal) | |
| 222 | + default: | |
| 223 | + rightBtn.setTitle("", for: .normal) | |
| 224 | + rightBtn.isHidden = true | |
| 225 | + break | |
| 226 | + } | |
| 227 | + } | |
| 228 | + | |
| 229 | + required init?(coder: NSCoder) { | |
| 230 | + fatalError("init(coder:) has not been implemented") | |
| 231 | + } | |
| 232 | +} | |
| 233 | + | |
| 234 | +/// 订单列表首界面 | |
| 235 | +class ShopBodyOrderHeaderViewCell: UITableViewHeaderFooterView { | |
| 236 | + | |
| 237 | + lazy var orderLabel: UILabel = { | |
| 238 | + let orderLabel = UILabel.init() | |
| 239 | + orderLabel.textColor = HexColor("#3D3D3D") | |
| 240 | + orderLabel.font = Font_13_Fit | |
| 241 | + return orderLabel | |
| 242 | + }() | |
| 243 | + | |
| 244 | + lazy var statueLabel: UILabel = { | |
| 245 | + let statueLabel = UILabel.init() | |
| 246 | + statueLabel.textColor = HexColor("#FF3050") | |
| 247 | + statueLabel.font = BoldFont_14_Fit | |
| 248 | + statueLabel.textAlignment = .right | |
| 249 | + return statueLabel | |
| 250 | + }() | |
| 251 | + | |
| 252 | + lazy var lineLabel: UILabel = { | |
| 253 | + let lineLabel = UILabel.init() | |
| 254 | + lineLabel.backgroundColor = HexColor("#EAEAEA") | |
| 255 | + return lineLabel | |
| 256 | + }() | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + override init(reuseIdentifier: String?) { | |
| 261 | + super.init(reuseIdentifier: reuseIdentifier) | |
| 262 | + contentView.backgroundColor = .white | |
| 263 | + | |
| 264 | + addSubview(orderLabel) | |
| 265 | + orderLabel.snp.makeConstraints { make in | |
| 266 | + make.centerY.equalToSuperview() | |
| 267 | + make.left.equalToSuperview().offset(15) | |
| 268 | + } | |
| 269 | + addSubview(statueLabel) | |
| 270 | + statueLabel.snp.makeConstraints { make in | |
| 271 | + make.centerY.equalTo(orderLabel) | |
| 272 | + make.right.equalToSuperview().offset(-15) | |
| 273 | + } | |
| 274 | + addSubview(lineLabel) | |
| 275 | + lineLabel.snp.makeConstraints { make in | |
| 276 | + make.centerX.equalToSuperview() | |
| 277 | + make.left.equalToSuperview().offset(15) | |
| 278 | + make.right.equalToSuperview().offset(-15) | |
| 279 | + make.height.equalTo(1) | |
| 280 | + make.bottom.equalToSuperview().offset(-1) | |
| 281 | + } | |
| 282 | + } | |
| 283 | + | |
| 284 | + func setupDataSource(listModel: ShopOrderListModel) { | |
| 285 | + | |
| 286 | + if listModel.isRefund == "1" { | |
| 287 | + orderLabel.text = "退款单号:\(listModel.id ?? "")" | |
| 288 | + } else { | |
| 289 | + orderLabel.text = "订单号:\(listModel.id ?? "")" | |
| 290 | + } | |
| 291 | + if listModel.isRefund == "1" {//退款 | |
| 292 | + switch listModel.state { | |
| 293 | + case "1": | |
| 294 | + statueLabel.text = "申请中" | |
| 295 | + case "2": | |
| 296 | + if listModel.state == "2" { | |
| 297 | + statueLabel.text = "同意退款" | |
| 298 | + } else { | |
| 299 | + statueLabel.text = "等待邮寄" | |
| 300 | + } | |
| 301 | + case "3": | |
| 302 | + statueLabel.text = "已拒绝" | |
| 303 | + case "5": | |
| 304 | + statueLabel.text = "已撤销" | |
| 305 | + default: | |
| 306 | + break | |
| 307 | + } | |
| 308 | + } else { | |
| 309 | + switch listModel.state { | |
| 310 | + case "1": | |
| 311 | + statueLabel.text = "待付款" | |
| 312 | + case "2": | |
| 313 | + if listModel.is_send == "0" { | |
| 314 | + statueLabel.text = "部分发货" | |
| 315 | + } else { | |
| 316 | + if listModel.delivery == "2" { | |
| 317 | + statueLabel.text = "备货中" | |
| 318 | + } else { | |
| 319 | + statueLabel.text = "待发货" | |
| 320 | + } | |
| 321 | + } | |
| 322 | + case "3": | |
| 323 | + if listModel.is_send == "0" { | |
| 324 | + statueLabel.text = "部分发货" | |
| 325 | + } else { | |
| 326 | + if listModel.delivery == "2" { | |
| 327 | + statueLabel.text = "备货完毕" | |
| 328 | + } else { | |
| 329 | + statueLabel.text = "已发货" | |
| 330 | + } | |
| 331 | + } | |
| 332 | + case "4": | |
| 333 | + statueLabel.text = "已完成" | |
| 334 | + case "5": | |
| 335 | + statueLabel.text = "已取消" | |
| 336 | + case "6": | |
| 337 | + statueLabel.text = "已退款" | |
| 338 | + default: | |
| 339 | + break | |
| 340 | + } | |
| 341 | + } | |
| 342 | + } | |
| 343 | + | |
| 344 | + required init?(coder: NSCoder) { | |
| 345 | + fatalError("init(coder:) has not been implemented") | |
| 346 | + } | |
| 347 | +} | |
| 348 | + | |
| 349 | +/// 订单列表界面显示 | |
| 350 | +class ShopBodyOrderListViewCell: UITableViewCell { | |
| 351 | + | |
| 352 | + lazy var titleLabel: UILabel = { | |
| 353 | + let titleLabel = UILabel.init() | |
| 354 | + titleLabel.textColor = HexColor("#333333") | |
| 355 | + titleLabel.font = BoldFont_16_Fit | |
| 356 | + titleLabel.numberOfLines = 2 | |
| 357 | + titleLabel.lineBreakMode = .byTruncatingTail | |
| 358 | + return titleLabel | |
| 359 | + }() | |
| 360 | + | |
| 361 | + lazy var timeLabel: UILabel = { | |
| 362 | + let timeLabel = UILabel.init(frame: CGRect.zero) | |
| 363 | + timeLabel.font = Font_12_Fit | |
| 364 | + timeLabel.textColor = HexColor("#999999") | |
| 365 | + return timeLabel | |
| 366 | + }() | |
| 367 | + | |
| 368 | + lazy var iconView: UIImageView = { | |
| 369 | + let iconView = UIImageView.init() | |
| 370 | + iconView.backgroundColor = .white | |
| 371 | + iconView.layer.cornerRadius = 5 | |
| 372 | + iconView.layer.masksToBounds = true | |
| 373 | + iconView.image = UIImage.imageWithColor(color: HexColor("#f9f9f9")!, size: CGSize(width: 90, height: 90)) | |
| 374 | + return iconView | |
| 375 | + }() | |
| 376 | + | |
| 377 | + lazy var lineLabel: UILabel = { | |
| 378 | + let lineLabel = UILabel.init() | |
| 379 | + lineLabel.backgroundColor = HexColor("#EAEAEA") | |
| 380 | + return lineLabel | |
| 381 | + }() | |
| 382 | + | |
| 383 | + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { | |
| 384 | + super.init(style: style, reuseIdentifier: reuseIdentifier) | |
| 385 | + contentView.backgroundColor = .clear | |
| 386 | + selectionStyle = .none | |
| 387 | + | |
| 388 | + addSubview(titleLabel) | |
| 389 | + addSubview(timeLabel) | |
| 390 | + addSubview(iconView) | |
| 391 | + addSubview(lineLabel) | |
| 392 | + | |
| 393 | + setConstrainta() | |
| 394 | + } | |
| 395 | + | |
| 396 | + func setupDataSource(goodsModel: ShopOrderListGoodsModel, addTime: String) { | |
| 397 | + titleLabel.text = goodsModel.title | |
| 398 | + timeLabel.text = addTime | |
| 399 | + iconView.kf.setImage(with: URL(string: goodsModel.simg!), placeholder: UIImage.imageWithColor(color: HexColor("#f9f9f9")!, size: CGSize(width: 90, height: 90))) | |
| 400 | + } | |
| 401 | + | |
| 402 | + func setConstrainta() { | |
| 403 | + iconView.snp.makeConstraints { make in | |
| 404 | + make.centerY.equalToSuperview() | |
| 405 | + make.left.equalToSuperview().offset(15) | |
| 406 | + make.top.equalToSuperview().offset(10) | |
| 407 | + make.bottom.equalToSuperview().offset(-10) | |
| 408 | + make.width.equalTo(90) | |
| 409 | + } | |
| 410 | + titleLabel.snp.makeConstraints { make in | |
| 411 | + make.left.equalTo(iconView.snp.right).offset(10) | |
| 412 | + make.right.equalToSuperview().offset(-15) | |
| 413 | + make.top.equalTo(iconView.snp.top).offset(5) | |
| 414 | + } | |
| 415 | + timeLabel.snp.makeConstraints { make in | |
| 416 | + make.left.equalTo(iconView.snp.right).offset(10) | |
| 417 | + make.bottom.equalTo(iconView.snp.bottom).offset(-5) | |
| 418 | + } | |
| 419 | + lineLabel.snp.makeConstraints { make in | |
| 420 | + make.left.equalToSuperview().offset(15) | |
| 421 | + make.right.equalToSuperview().offset(-15) | |
| 422 | + make.bottom.equalToSuperview().offset(-1) | |
| 423 | + make.height.equalTo(1) | |
| 424 | + } | |
| 425 | + } | |
| 426 | + | |
| 427 | + required init?(coder: NSCoder) { | |
| 428 | + fatalError("init(coder:) has not been implemented") | |
| 429 | + } | |
| 430 | +} | ... | ... |
metaCode/Classes/Main/ShopPage/ViewModel/CNLiveShopViewModel.swift
0 → 100644
| 1 | +// | |
| 2 | +// CNLiveShopViewModel.swift | |
| 3 | +// metaCode | |
| 4 | +// | |
| 5 | +// Created by open on 2023/10/31. | |
| 6 | +// | |
| 7 | + | |
| 8 | +import Foundation | |
| 9 | +import CNLiveRequestBastKit | |
| 10 | + | |
| 11 | +typealias resultShopBlock = (_ result: Any,_ respStatue :CNLiveMineResponseType) -> Void | |
| 12 | +class CNLiveShopViewModel: NSObject { | |
| 13 | + | |
| 14 | + /// 请求获取订单列表数据 | |
| 15 | + /// - Parameters: | |
| 16 | + /// - state: 0全部 1待发货 2配送中 3代付款 4订单退款 | |
| 17 | + /// - resultShopBlock: 返回 | |
| 18 | + static func requestOrderList(state: String, page: NSInteger, resultBlock: @escaping resultShopBlock) { | |
| 19 | + if state == "6" { | |
| 20 | + let param = NSMutableDictionary() | |
| 21 | + param.setValue(UserInfoManager.shared.userInfo.uid, forKey: "uid") | |
| 22 | + param.setValue("\(page)", forKey: "page") | |
| 23 | + let custom_param = NSMutableDictionary() | |
| 24 | + custom_param.setValue(APPId_wjj, forKey: "appId") | |
| 25 | + custom_param.setValue(APPKey_wjj, forKey: "appKey") | |
| 26 | + CNLiveNetworking.setAllowRequestDefaultArgument(true) | |
| 27 | + CNLiveNetworking.setupShowDataResult(false) | |
| 28 | + CNLiveNetworking.setupDSRequest(true) | |
| 29 | + CNLiveNetworking.setupCustomParam(custom_param as? [String : String]) | |
| 30 | + CNLiveNetworking.requestNetwork(with: .GET, urlString: APPBaseWjjBUrl+"/api/v1/refundList", param: param as! [String : String], cacheType: .networkOnly) { task, result, error in | |
| 31 | + hiddenLoading() | |
| 32 | + if (error == nil) { | |
| 33 | + let resp = result as! NSDictionary | |
| 34 | + let errorCode = "\(resp["code"] ?? "0")" | |
| 35 | + if (errorCode == "200") { | |
| 36 | + if resp["data"] is NSNull { | |
| 37 | + resultBlock(Array<Any>(),.success) | |
| 38 | + } else { | |
| 39 | + let array = resp["data"] as! NSArray | |
| 40 | + let tempArray = NSMutableArray() | |
| 41 | + for item in array { | |
| 42 | + let listModel = dictionaryToModel(item as! [String : Any], ShopOrderListModel.self,"") as! ShopOrderListModel | |
| 43 | + listModel.isRefund = "1" | |
| 44 | + tempArray.add(listModel) | |
| 45 | + } | |
| 46 | + resultBlock(tempArray, .success) | |
| 47 | + } | |
| 48 | + } else { | |
| 49 | + showMessage(message: resp["message"] as! String) | |
| 50 | + resultBlock(NSNull(),.failed) | |
| 51 | + } | |
| 52 | + } else { | |
| 53 | + if CNLiveNetworking.isNetworking() { | |
| 54 | + showMessage(message: "获取失败") | |
| 55 | + resultBlock(NSNull(),.failed) | |
| 56 | + } else { | |
| 57 | + showMessage(message: "似乎与网络断开链接") | |
| 58 | + resultBlock(NSNull(),.noNetwork) | |
| 59 | + } | |
| 60 | + } | |
| 61 | + } | |
| 62 | + } else { | |
| 63 | + let param = NSMutableDictionary() | |
| 64 | + param.setValue(UserInfoManager.shared.userInfo.uid, forKey: "uid") | |
| 65 | + param.setValue("\(page)", forKey: "page") | |
| 66 | + param.setValue("", forKey: "delivery") | |
| 67 | + param.setValue(state, forKey: "state") | |
| 68 | + param.setValue("", forKey: "keyword") | |
| 69 | + let custom_param = NSMutableDictionary() | |
| 70 | + custom_param.setValue(APPId_wjj, forKey: "appId") | |
| 71 | + custom_param.setValue(APPKey_wjj, forKey: "appKey") | |
| 72 | + CNLiveNetworking.setAllowRequestDefaultArgument(true) | |
| 73 | + CNLiveNetworking.setupShowDataResult(false) | |
| 74 | + CNLiveNetworking.setupDSRequest(true) | |
| 75 | + CNLiveNetworking.setupCustomParam(custom_param as? [String : String]) | |
| 76 | + CNLiveNetworking.requestNetwork(with: .GET, urlString: APPBaseWjjBUrl+"/api/v1/orders", param: param as! [String : String], cacheType: .networkOnly) { task, result, error in | |
| 77 | + hiddenLoading() | |
| 78 | + if (error == nil) { | |
| 79 | + let resp = result as! NSDictionary | |
| 80 | + let errorCode = "\(resp["code"] ?? "0")" | |
| 81 | + if (errorCode == "200") { | |
| 82 | + if resp["data"] is NSNull { | |
| 83 | + resultBlock(Array<Any>(),.success) | |
| 84 | + } else { | |
| 85 | + let array = resp["data"] as! NSArray | |
| 86 | + let tempArray = NSMutableArray() | |
| 87 | + for item in array { | |
| 88 | + let listModel = dictionaryToModel(item as! [String : Any], ShopOrderListModel.self,"") as! ShopOrderListModel | |
| 89 | + tempArray.add(listModel) | |
| 90 | + } | |
| 91 | + resultBlock(tempArray, .success) | |
| 92 | + } | |
| 93 | + } else { | |
| 94 | + showMessage(message: resp["message"] as! String) | |
| 95 | + resultBlock(NSNull(),.failed) | |
| 96 | + } | |
| 97 | + } else { | |
| 98 | + if CNLiveNetworking.isNetworking() { | |
| 99 | + showMessage(message: "获取失败") | |
| 100 | + resultBlock(NSNull(),.failed) | |
| 101 | + } else { | |
| 102 | + showMessage(message: "似乎与网络断开链接") | |
| 103 | + resultBlock(NSNull(),.noNetwork) | |
| 104 | + } | |
| 105 | + } | |
| 106 | + } | |
| 107 | + } | |
| 108 | + } | |
| 109 | + | |
| 110 | + /// 通知自提 | |
| 111 | + /// - Parameters: | |
| 112 | + /// - orderId: 订单id | |
| 113 | + /// - resultBlock: 返回 | |
| 114 | + static func requestNotifyOrder(orderId: String, resultBlock: @escaping resultShopBlock) { | |
| 115 | + let param = NSMutableDictionary() | |
| 116 | + param.setValue(UserInfoManager.shared.userInfo.uid, forKey: "uid") | |
| 117 | + param.setValue(orderId, forKey: "id") | |
| 118 | + let custom_param = NSMutableDictionary() | |
| 119 | + custom_param.setValue(APPId_wjj, forKey: "appId") | |
| 120 | + custom_param.setValue(APPKey_wjj, forKey: "appKey") | |
| 121 | + CNLiveNetworking.setAllowRequestDefaultArgument(true) | |
| 122 | + CNLiveNetworking.setupShowDataResult(false) | |
| 123 | + CNLiveNetworking.setupDSRequest(true) | |
| 124 | + CNLiveNetworking.setupCustomParam(custom_param as? [String : String]) | |
| 125 | + CNLiveNetworking.requestNetwork(with: .GET, urlString: APPBaseWjjBUrl+"/api/v1/notifyOrder", param: param as! [String : String], cacheType: .networkOnly) { task, result, error in | |
| 126 | + hiddenLoading() | |
| 127 | + if (error == nil) { | |
| 128 | + let resp = result as! NSDictionary | |
| 129 | + let errorCode = "\(resp["code"] ?? "0")" | |
| 130 | + if (errorCode == "200") { | |
| 131 | + resultBlock("",.success) | |
| 132 | + } else { | |
| 133 | + showMessage(message: resp["message"] as! String) | |
| 134 | + resultBlock(NSNull(),.failed) | |
| 135 | + } | |
| 136 | + } else { | |
| 137 | + if CNLiveNetworking.isNetworking() { | |
| 138 | + showMessage(message: "获取失败") | |
| 139 | + resultBlock(NSNull(),.failed) | |
| 140 | + } else { | |
| 141 | + showMessage(message: "似乎与网络断开链接") | |
| 142 | + resultBlock(NSNull(),.noNetwork) | |
| 143 | + } | |
| 144 | + } | |
| 145 | + } | |
| 146 | + } | |
| 147 | + | |
| 148 | + /// 获取订单详情数据 | |
| 149 | + /// - Parameters: | |
| 150 | + /// - orderId: 订单id | |
| 151 | + /// - resultBlock: 返回 | |
| 152 | + static func requestOrderDetail(orderId: String, resultBlock: @escaping resultShopBlock) { | |
| 153 | + let param = NSMutableDictionary() | |
| 154 | + param.setValue(orderId, forKey: "id") | |
| 155 | + let custom_param = NSMutableDictionary() | |
| 156 | + custom_param.setValue(APPId_wjj, forKey: "appId") | |
| 157 | + custom_param.setValue(APPKey_wjj, forKey: "appKey") | |
| 158 | + CNLiveNetworking.setAllowRequestDefaultArgument(true) | |
| 159 | + CNLiveNetworking.setupShowDataResult(false) | |
| 160 | + CNLiveNetworking.setupDSRequest(true) | |
| 161 | + CNLiveNetworking.setupCustomParam(custom_param as? [String : String]) | |
| 162 | + CNLiveNetworking.requestNetwork(with: .GET, urlString: APPBaseWjjBUrl+"/api/v1/order", param: param as! [String : String], cacheType: .networkOnly) { task, result, error in | |
| 163 | + hiddenLoading() | |
| 164 | + if (error == nil) { | |
| 165 | + let resp = result as! NSDictionary | |
| 166 | + let errorCode = "\(resp["code"] ?? "0")" | |
| 167 | + if (errorCode == "200") { | |
| 168 | + if resp["data"] is NSNull { | |
| 169 | + resultBlock(NSNull(),.failed) | |
| 170 | + } else { | |
| 171 | + let model = dictionaryToModel(resp as! [String : Any], ShopOrderDetailModel.self,"data") as! ShopOrderDetailModel | |
| 172 | + var is_send_all: Bool = true | |
| 173 | + for goodsModel in model.order_detail { | |
| 174 | + if Int(goodsModel.send_num!)! > 0 { | |
| 175 | + is_send_all = false | |
| 176 | + } | |
| 177 | + } | |
| 178 | + model.is_send_all = is_send_all | |
| 179 | + resultBlock(model,.success) | |
| 180 | + } | |
| 181 | + } else { | |
| 182 | + showMessage(message: resp["message"] as! String) | |
| 183 | + resultBlock(NSNull(),.failed) | |
| 184 | + } | |
| 185 | + } else { | |
| 186 | + if CNLiveNetworking.isNetworking() { | |
| 187 | + showMessage(message: "获取失败") | |
| 188 | + resultBlock(NSNull(),.failed) | |
| 189 | + } else { | |
| 190 | + showMessage(message: "似乎与网络断开链接") | |
| 191 | + resultBlock(NSNull(),.noNetwork) | |
| 192 | + } | |
| 193 | + } | |
| 194 | + } | |
| 195 | + } | |
| 196 | + | |
| 197 | +} | ... | ... |
metaCode/Classes/Other/AppDelegate.swift
| ... | ... | @@ -69,9 +69,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate { |
| 69 | 69 | let p : Dictionary = ["platform_id":kAppBundleID,"uuid":uuid,"plat":"i","ver":ver,"appId":APPId,"timestamp":String(NSNumber(floatLiteral: Date().timeIntervalSince1970).intValue),"clientPlat":"i","frmId":"ios"] |
| 70 | 70 | CNLiveNetworking.setupDefaultParam(p) |
| 71 | 71 | |
| 72 | - let shop_dic : Dictionary = ["Phone-Model":"iPhone","Uid":UserInfoManager.shared.userInfo.uid ?? "","CFBundleShortVersionString":ver,"Shop-Version":"0.6.2"] | |
| 72 | + let shop_dic : Dictionary = ["Phone-Model":"iPhone","Uid":UserInfoManager.shared.userInfo.uid ,"CFBundleShortVersionString":ver,"Shop-Version":"0.6.2"] | |
| 73 | 73 | CNLiveNetworking.setupDSShopParam(shop_dic) |
| 74 | - | |
| 74 | + CNLiveNetworking.setRequestTimeoutInterval(10) | |
| 75 | 75 | CNLiveNetworking.setupShowDataResult(false) |
| 76 | 76 | CNLiveNetworking.setupSignKey(APPKey) |
| 77 | 77 | CNLiveNetworking.setAllowRequestDefaultArgument(true) | ... | ... |
metaCode/Supporting Files/Assets.xcassets/Shop/Contents.json
0 → 100644
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_bufen_fahuo.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "filename" : "DS_order_bufen_fahuo@2x.png", | |
| 9 | + "idiom" : "universal", | |
| 10 | + "scale" : "2x" | |
| 11 | + }, | |
| 12 | + { | |
| 13 | + "filename" : "DS_order_bufen_fahuo@3x.png", | |
| 14 | + "idiom" : "universal", | |
| 15 | + "scale" : "3x" | |
| 16 | + } | |
| 17 | + ], | |
| 18 | + "info" : { | |
| 19 | + "author" : "xcode", | |
| 20 | + "version" : 1 | |
| 21 | + } | |
| 22 | +} | ... | ... |
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_bufen_fahuo.imageset/DS_order_bufen_fahuo@2x.png
0 → 100644
29.1 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_bufen_fahuo.imageset/DS_order_bufen_fahuo@3x.png
0 → 100644
79.3 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_chexiaoshenqing.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "filename" : "DS_order_chexiaoshenqing@2x.png", | |
| 9 | + "idiom" : "universal", | |
| 10 | + "scale" : "2x" | |
| 11 | + }, | |
| 12 | + { | |
| 13 | + "filename" : "DS_order_chexiaoshenqing@3x.png", | |
| 14 | + "idiom" : "universal", | |
| 15 | + "scale" : "3x" | |
| 16 | + } | |
| 17 | + ], | |
| 18 | + "info" : { | |
| 19 | + "author" : "xcode", | |
| 20 | + "version" : 1 | |
| 21 | + } | |
| 22 | +} | ... | ... |
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_chexiaoshenqing.imageset/DS_order_chexiaoshenqing@2x.png
0 → 100644
5.73 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_chexiaoshenqing.imageset/DS_order_chexiaoshenqing@3x.png
0 → 100644
12.3 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_close.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "filename" : "DS_order_close.png", | |
| 5 | + "idiom" : "universal", | |
| 6 | + "scale" : "1x" | |
| 7 | + }, | |
| 8 | + { | |
| 9 | + "idiom" : "universal", | |
| 10 | + "scale" : "2x" | |
| 11 | + }, | |
| 12 | + { | |
| 13 | + "idiom" : "universal", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "author" : "xcode", | |
| 19 | + "version" : 1 | |
| 20 | + } | |
| 21 | +} | ... | ... |
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_close.imageset/DS_order_close.png
0 → 100644
1.75 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_daifahuo.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "filename" : "DS_order_daifahuo.png", | |
| 5 | + "idiom" : "universal", | |
| 6 | + "scale" : "1x" | |
| 7 | + }, | |
| 8 | + { | |
| 9 | + "idiom" : "universal", | |
| 10 | + "scale" : "2x" | |
| 11 | + }, | |
| 12 | + { | |
| 13 | + "idiom" : "universal", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "author" : "xcode", | |
| 19 | + "version" : 1 | |
| 20 | + } | |
| 21 | +} | ... | ... |
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_daifahuo.imageset/DS_order_daifahuo.png
0 → 100644
40.2 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_daifukuan.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "filename" : "DS_order_daifukuan.png", | |
| 5 | + "idiom" : "universal", | |
| 6 | + "scale" : "1x" | |
| 7 | + }, | |
| 8 | + { | |
| 9 | + "idiom" : "universal", | |
| 10 | + "scale" : "2x" | |
| 11 | + }, | |
| 12 | + { | |
| 13 | + "idiom" : "universal", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "author" : "xcode", | |
| 19 | + "version" : 1 | |
| 20 | + } | |
| 21 | +} | ... | ... |
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_daifukuan.imageset/DS_order_daifukuan.png
0 → 100644
87.4 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_money.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "filename" : "DS_order_money.png", | |
| 5 | + "idiom" : "universal", | |
| 6 | + "scale" : "1x" | |
| 7 | + }, | |
| 8 | + { | |
| 9 | + "idiom" : "universal", | |
| 10 | + "scale" : "2x" | |
| 11 | + }, | |
| 12 | + { | |
| 13 | + "idiom" : "universal", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "author" : "xcode", | |
| 19 | + "version" : 1 | |
| 20 | + } | |
| 21 | +} | ... | ... |
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_money.imageset/DS_order_money.png
0 → 100644
2.34 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_phone.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "filename" : "电话@2x.png", | |
| 9 | + "idiom" : "universal", | |
| 10 | + "scale" : "2x" | |
| 11 | + }, | |
| 12 | + { | |
| 13 | + "filename" : "电话@3x.png", | |
| 14 | + "idiom" : "universal", | |
| 15 | + "scale" : "3x" | |
| 16 | + } | |
| 17 | + ], | |
| 18 | + "info" : { | |
| 19 | + "author" : "xcode", | |
| 20 | + "version" : 1 | |
| 21 | + } | |
| 22 | +} | ... | ... |
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_phone.imageset/电话@2x.png
0 → 100644
1.13 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_phone.imageset/电话@3x.png
0 → 100644
2.14 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_search.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "filename" : "DS_order_search.png", | |
| 5 | + "idiom" : "universal", | |
| 6 | + "scale" : "1x" | |
| 7 | + }, | |
| 8 | + { | |
| 9 | + "idiom" : "universal", | |
| 10 | + "scale" : "2x" | |
| 11 | + }, | |
| 12 | + { | |
| 13 | + "idiom" : "universal", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "author" : "xcode", | |
| 19 | + "version" : 1 | |
| 20 | + } | |
| 21 | +} | ... | ... |
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_search.imageset/DS_order_search.png
0 → 100644
1.8 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_shenqingzhong.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "filename" : "DS_order_shenqingzhong@2x.png", | |
| 9 | + "idiom" : "universal", | |
| 10 | + "scale" : "2x" | |
| 11 | + }, | |
| 12 | + { | |
| 13 | + "filename" : "DS_order_shenqingzhong@3x.png", | |
| 14 | + "idiom" : "universal", | |
| 15 | + "scale" : "3x" | |
| 16 | + } | |
| 17 | + ], | |
| 18 | + "info" : { | |
| 19 | + "author" : "xcode", | |
| 20 | + "version" : 1 | |
| 21 | + } | |
| 22 | +} | ... | ... |
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_shenqingzhong.imageset/DS_order_shenqingzhong@2x.png
0 → 100644
6.07 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_shenqingzhong.imageset/DS_order_shenqingzhong@3x.png
0 → 100644
13.1 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_timer.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "filename" : "DS_order_timer.png", | |
| 5 | + "idiom" : "universal", | |
| 6 | + "scale" : "1x" | |
| 7 | + }, | |
| 8 | + { | |
| 9 | + "idiom" : "universal", | |
| 10 | + "scale" : "2x" | |
| 11 | + }, | |
| 12 | + { | |
| 13 | + "idiom" : "universal", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "author" : "xcode", | |
| 19 | + "version" : 1 | |
| 20 | + } | |
| 21 | +} | ... | ... |
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_timer.imageset/DS_order_timer.png
0 → 100644
2.17 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_tongyishenqing.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "filename" : "DS_order_tongyishenqing@2x.png", | |
| 9 | + "idiom" : "universal", | |
| 10 | + "scale" : "2x" | |
| 11 | + }, | |
| 12 | + { | |
| 13 | + "filename" : "DS_order_tongyishenqing@3x.png", | |
| 14 | + "idiom" : "universal", | |
| 15 | + "scale" : "3x" | |
| 16 | + } | |
| 17 | + ], | |
| 18 | + "info" : { | |
| 19 | + "author" : "xcode", | |
| 20 | + "version" : 1 | |
| 21 | + } | |
| 22 | +} | ... | ... |
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_tongyishenqing.imageset/DS_order_tongyishenqing@2x.png
0 → 100644
6.66 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_tongyishenqing.imageset/DS_order_tongyishenqing@3x.png
0 → 100644
14.5 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_tuikuanchenggong.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "filename" : "DS_order_tuikuanchenggong@2x.png", | |
| 9 | + "idiom" : "universal", | |
| 10 | + "scale" : "2x" | |
| 11 | + }, | |
| 12 | + { | |
| 13 | + "filename" : "DS_order_tuikuanchenggong@3x.png", | |
| 14 | + "idiom" : "universal", | |
| 15 | + "scale" : "3x" | |
| 16 | + } | |
| 17 | + ], | |
| 18 | + "info" : { | |
| 19 | + "author" : "xcode", | |
| 20 | + "version" : 1 | |
| 21 | + } | |
| 22 | +} | ... | ... |
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_tuikuanchenggong.imageset/DS_order_tuikuanchenggong@2x.png
0 → 100644
6.84 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_tuikuanchenggong.imageset/DS_order_tuikuanchenggong@3x.png
0 → 100644
14.7 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_yifahuo.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "filename" : "DS_order_yifahuo.png", | |
| 5 | + "idiom" : "universal", | |
| 6 | + "scale" : "1x" | |
| 7 | + }, | |
| 8 | + { | |
| 9 | + "idiom" : "universal", | |
| 10 | + "scale" : "2x" | |
| 11 | + }, | |
| 12 | + { | |
| 13 | + "idiom" : "universal", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "author" : "xcode", | |
| 19 | + "version" : 1 | |
| 20 | + } | |
| 21 | +} | ... | ... |
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_yifahuo.imageset/DS_order_yifahuo.png
0 → 100644
79.5 KB
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_yiwancheng.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "filename" : "DS_order_yiwancheng.png", | |
| 5 | + "idiom" : "universal", | |
| 6 | + "scale" : "1x" | |
| 7 | + }, | |
| 8 | + { | |
| 9 | + "idiom" : "universal", | |
| 10 | + "scale" : "2x" | |
| 11 | + }, | |
| 12 | + { | |
| 13 | + "idiom" : "universal", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "author" : "xcode", | |
| 19 | + "version" : 1 | |
| 20 | + } | |
| 21 | +} | ... | ... |
metaCode/Supporting Files/Assets.xcassets/Shop/DS_order_yiwancheng.imageset/DS_order_yiwancheng.png
0 → 100644
79.5 KB