Commit c297edd80b2d270d83c8dc603c9bfd68e1339d0f

Authored by liushiyu
1 parent 7e195196

电商相关需求实现

Showing 52 changed files with 2357 additions and 16 deletions
metaCode.xcodeproj/project.pbxproj
@@ -54,9 +54,18 @@ @@ -54,9 +54,18 @@
54 798A44FB2A30999900815935 /* CNLiveAlertTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798A44FA2A30999900815935 /* CNLiveAlertTool.swift */; }; 54 798A44FB2A30999900815935 /* CNLiveAlertTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798A44FA2A30999900815935 /* CNLiveAlertTool.swift */; };
55 798A44FD2A309EBA00815935 /* CNLiveTypeFeedBackViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798A44FC2A309EBA00815935 /* CNLiveTypeFeedBackViewController.swift */; }; 55 798A44FD2A309EBA00815935 /* CNLiveTypeFeedBackViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798A44FC2A309EBA00815935 /* CNLiveTypeFeedBackViewController.swift */; };
56 798A44FF2A30A0A800815935 /* CNLiveInputFeedBackViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798A44FE2A30A0A800815935 /* CNLiveInputFeedBackViewController.swift */; }; 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 79A68C4A2A26E6CE00DC3B43 /* (null) in Sources */ = {isa = PBXBuildFile; }; 62 79A68C4A2A26E6CE00DC3B43 /* (null) in Sources */ = {isa = PBXBuildFile; };
58 79A68C4C2A26EA6000DC3B43 /* (null) in Sources */ = {isa = PBXBuildFile; }; 63 79A68C4C2A26EA6000DC3B43 /* (null) in Sources */ = {isa = PBXBuildFile; };
  64 + 79B2E3602AF39191002A8524 /* NSObject+CNLiveConfigModuleInline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79B2E35F2AF39191002A8524 /* NSObject+CNLiveConfigModuleInline.swift */; };
59 79BA085D2AB18E8300D01875 /* CNLiveSaveAuthDB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79BA085C2AB18E8300D01875 /* CNLiveSaveAuthDB.swift */; }; 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 79E496E32AB9357000127BF8 /* UITableViewCell+CNLiveExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E496E22AB9357000127BF8 /* UITableViewCell+CNLiveExtension.swift */; }; 69 79E496E32AB9357000127BF8 /* UITableViewCell+CNLiveExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E496E22AB9357000127BF8 /* UITableViewCell+CNLiveExtension.swift */; };
61 79E496E82AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E496E72AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift */; }; 70 79E496E82AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79E496E72AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift */; };
62 79EABB892AB4497700F3A4E2 /* CNLiveSaveStandDB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79EABB882AB4497700F3A4E2 /* CNLiveSaveStandDB.swift */; }; 71 79EABB892AB4497700F3A4E2 /* CNLiveSaveStandDB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79EABB882AB4497700F3A4E2 /* CNLiveSaveStandDB.swift */; };
@@ -166,8 +175,17 @@ @@ -166,8 +175,17 @@
166 798A44FA2A30999900815935 /* CNLiveAlertTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveAlertTool.swift; sourceTree = "<group>"; }; 175 798A44FA2A30999900815935 /* CNLiveAlertTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveAlertTool.swift; sourceTree = "<group>"; };
167 798A44FC2A309EBA00815935 /* CNLiveTypeFeedBackViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveTypeFeedBackViewController.swift; sourceTree = "<group>"; }; 176 798A44FC2A309EBA00815935 /* CNLiveTypeFeedBackViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveTypeFeedBackViewController.swift; sourceTree = "<group>"; };
168 798A44FE2A30A0A800815935 /* CNLiveInputFeedBackViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveInputFeedBackViewController.swift; sourceTree = "<group>"; }; 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 79A68C512A26F59C00DC3B43 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = metaCode/Info.plist; sourceTree = "<group>"; }; 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 79BA085C2AB18E8300D01875 /* CNLiveSaveAuthDB.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveSaveAuthDB.swift; sourceTree = "<group>"; }; 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 79E496E22AB9357000127BF8 /* UITableViewCell+CNLiveExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITableViewCell+CNLiveExtension.swift"; sourceTree = "<group>"; }; 189 79E496E22AB9357000127BF8 /* UITableViewCell+CNLiveExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITableViewCell+CNLiveExtension.swift"; sourceTree = "<group>"; };
172 79E496E72AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSMutableAttributedString+CNLiveExtensions.swift"; sourceTree = "<group>"; }; 190 79E496E72AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSMutableAttributedString+CNLiveExtensions.swift"; sourceTree = "<group>"; };
173 79EABB882AB4497700F3A4E2 /* CNLiveSaveStandDB.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveSaveStandDB.swift; sourceTree = "<group>"; }; 191 79EABB882AB4497700F3A4E2 /* CNLiveSaveStandDB.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveSaveStandDB.swift; sourceTree = "<group>"; };
@@ -424,6 +442,7 @@ @@ -424,6 +442,7 @@
424 796398902A260C0100D045EB /* Main */ = { 442 796398902A260C0100D045EB /* Main */ = {
425 isa = PBXGroup; 443 isa = PBXGroup;
426 children = ( 444 children = (
  445 + 7991722C2AF08CF100DC01A8 /* ShopPage */,
427 790D01972A2DCAE400C5978D /* MinePage */, 446 790D01972A2DCAE400C5978D /* MinePage */,
428 790D018C2A2D8C9A00C5978D /* LoginPage */, 447 790D018C2A2D8C9A00C5978D /* LoginPage */,
429 7CD675212A26F844008354C1 /* HomePage */, 448 7CD675212A26F844008354C1 /* HomePage */,
@@ -450,6 +469,8 @@ @@ -450,6 +469,8 @@
450 790D01902A2DAC5E00C5978D /* CNLiveConfigFontMacro.swift */, 469 790D01902A2DAC5E00C5978D /* CNLiveConfigFontMacro.swift */,
451 790D01A22A2DDBA300C5978D /* CNLiveConfigManager.swift */, 470 790D01A22A2DDBA300C5978D /* CNLiveConfigManager.swift */,
452 79282A3F2A2F055100B5F8CF /* CNLiveConfigUserInfo.swift */, 471 79282A3F2A2F055100B5F8CF /* CNLiveConfigUserInfo.swift */,
  472 + 79BB96A72AF223FB00AEA4AC /* CNLiveConfigAlertManager.swift */,
  473 + 79B2E35F2AF39191002A8524 /* NSObject+CNLiveConfigModuleInline.swift */,
453 ); 474 );
454 path = Config; 475 path = Config;
455 sourceTree = "<group>"; 476 sourceTree = "<group>";
@@ -504,6 +525,52 @@ @@ -504,6 +525,52 @@
504 path = CustomView; 525 path = CustomView;
505 sourceTree = "<group>"; 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 79E496E42AB936E200127BF8 /* Tool */ = { 574 79E496E42AB936E200127BF8 /* Tool */ = {
508 isa = PBXGroup; 575 isa = PBXGroup;
509 children = ( 576 children = (
@@ -880,6 +947,7 @@ @@ -880,6 +947,7 @@
880 19F1C2332AB5728B0083D06C /* CNIDCardView.swift in Sources */, 947 19F1C2332AB5728B0083D06C /* CNIDCardView.swift in Sources */,
881 7CD675292A270F6A008354C1 /* WJColorChange.m in Sources */, 948 7CD675292A270F6A008354C1 /* WJColorChange.m in Sources */,
882 79F4B11C2A33036E00993C03 /* CNLiveMineInfoAlertView.swift in Sources */, 949 79F4B11C2A33036E00993C03 /* CNLiveMineInfoAlertView.swift in Sources */,
  950 + 79BB96A82AF223FB00AEA4AC /* CNLiveConfigAlertManager.swift in Sources */,
883 796398942A260C0100D045EB /* AppDelegate.swift in Sources */, 951 796398942A260C0100D045EB /* AppDelegate.swift in Sources */,
884 7989B5C72A4BDC7200A19B10 /* CNLiveMineEarnListViewController.swift in Sources */, 952 7989B5C72A4BDC7200A19B10 /* CNLiveMineEarnListViewController.swift in Sources */,
885 79396EF12A31C21B0053E1AF /* CNLiveInfoShowViewController.swift in Sources */, 953 79396EF12A31C21B0053E1AF /* CNLiveInfoShowViewController.swift in Sources */,
@@ -890,6 +958,7 @@ @@ -890,6 +958,7 @@
890 79282A3C2A2EDC2500B5F8CF /* NSString+CNLiveExtensions.swift in Sources */, 958 79282A3C2A2EDC2500B5F8CF /* NSString+CNLiveExtensions.swift in Sources */,
891 790B1FB82A41B6A60074CF00 /* CNLiveMineMessageViewController.swift in Sources */, 959 790B1FB82A41B6A60074CF00 /* CNLiveMineMessageViewController.swift in Sources */,
892 798A44F22A30674200815935 /* CNLiveMineSubBodyListView.swift in Sources */, 960 798A44F22A30674200815935 /* CNLiveMineSubBodyListView.swift in Sources */,
  961 + 799172382AF090CD00DC01A8 /* CNLiveShopBodyListView.swift in Sources */,
893 790D01822A2D88FC00C5978D /* CNLiveConfigMacro.swift in Sources */, 962 790D01822A2D88FC00C5978D /* CNLiveConfigMacro.swift in Sources */,
894 7C83B4402A52BB2B004BF4A4 /* CNGlobalEnum.swift in Sources */, 963 7C83B4402A52BB2B004BF4A4 /* CNGlobalEnum.swift in Sources */,
895 7C83B4442A541F36004BF4A4 /* NSDate+CNLiveExtensions.swift in Sources */, 964 7C83B4442A541F36004BF4A4 /* NSDate+CNLiveExtensions.swift in Sources */,
@@ -903,6 +972,8 @@ @@ -903,6 +972,8 @@
903 19123FC12ABC11170075C883 /* CNWebViewController.swift in Sources */, 972 19123FC12ABC11170075C883 /* CNWebViewController.swift in Sources */,
904 790D019D2A2DCBD000C5978D /* UIView+CNLiveExtensions.swift in Sources */, 973 790D019D2A2DCBD000C5978D /* UIView+CNLiveExtensions.swift in Sources */,
905 7C7C62F62A4D72E9007A912E /* CNLiveIdentityDB.swift in Sources */, 974 7C7C62F62A4D72E9007A912E /* CNLiveIdentityDB.swift in Sources */,
  975 + 799172342AF08D3200DC01A8 /* CNLiveShopViewModel.swift in Sources */,
  976 + 799172362AF08D4500DC01A8 /* CNLiveShopBaseModel.swift in Sources */,
906 790B1FB62A41938F0074CF00 /* UIImage+CNLiveExtensions.swift in Sources */, 977 790B1FB62A41938F0074CF00 /* UIImage+CNLiveExtensions.swift in Sources */,
907 790D019D2A2DCBD000C5978D /* UIView+CNLiveExtensions.swift in Sources */, 978 790D019D2A2DCBD000C5978D /* UIView+CNLiveExtensions.swift in Sources */,
908 79E496E82AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift in Sources */, 979 79E496E82AB9674300127BF8 /* NSMutableAttributedString+CNLiveExtensions.swift in Sources */,
@@ -920,6 +991,7 @@ @@ -920,6 +991,7 @@
920 792E57D92A3AA2F2005834DB /* CNLiveCommonBaseModel.swift in Sources */, 991 792E57D92A3AA2F2005834DB /* CNLiveCommonBaseModel.swift in Sources */,
921 7CD6753E2A2740B0008354C1 /* CNUpSlideView.swift in Sources */, 992 7CD6753E2A2740B0008354C1 /* CNUpSlideView.swift in Sources */,
922 7CD675402A2740B0008354C1 /* CNDownSlideView.swift in Sources */, 993 7CD675402A2740B0008354C1 /* CNDownSlideView.swift in Sources */,
  994 + 79B2E3602AF39191002A8524 /* NSObject+CNLiveConfigModuleInline.swift in Sources */,
923 7C2703362A3AFD3A0061EC50 /* CNLiveEnvironment.swift in Sources */, 995 7C2703362A3AFD3A0061EC50 /* CNLiveEnvironment.swift in Sources */,
924 798A44FD2A309EBA00815935 /* CNLiveTypeFeedBackViewController.swift in Sources */, 996 798A44FD2A309EBA00815935 /* CNLiveTypeFeedBackViewController.swift in Sources */,
925 79656E382AAEBA8E00119A61 /* CNLiveMineInputViewController.swift in Sources */, 997 79656E382AAEBA8E00119A61 /* CNLiveMineInputViewController.swift in Sources */,
@@ -930,11 +1002,13 @@ @@ -930,11 +1002,13 @@
930 79F4B11A2A32F21400993C03 /* CNLiveMineNickViewController.swift in Sources */, 1002 79F4B11A2A32F21400993C03 /* CNLiveMineNickViewController.swift in Sources */,
931 798A44FF2A30A0A800815935 /* CNLiveInputFeedBackViewController.swift in Sources */, 1003 798A44FF2A30A0A800815935 /* CNLiveInputFeedBackViewController.swift in Sources */,
932 79282A442A2F1C1E00B5F8CF /* CNLiveLoginAuthView.swift in Sources */, 1004 79282A442A2F1C1E00B5F8CF /* CNLiveLoginAuthView.swift in Sources */,
  1005 + 79BB96A62AF21E2800AEA4AC /* CNLiveShopOrderDetailViewController.swift in Sources */,
933 7C2703302A36CBE30061EC50 /* CNCertificationView.swift in Sources */, 1006 7C2703302A36CBE30061EC50 /* CNCertificationView.swift in Sources */,
934 790D01A32A2DDBA300C5978D /* CNLiveConfigManager.swift in Sources */, 1007 790D01A32A2DDBA300C5978D /* CNLiveConfigManager.swift in Sources */,
935 7C2703332A36CC660061EC50 /* CNLiveGlobalBlock.swift in Sources */, 1008 7C2703332A36CC660061EC50 /* CNLiveGlobalBlock.swift in Sources */,
936 7987BF3D2A497644000A1ABC /* CNLiveMineQuestViewController.swift in Sources */, 1009 7987BF3D2A497644000A1ABC /* CNLiveMineQuestViewController.swift in Sources */,
937 798A44EA2A30135D00815935 /* CNLiveMineBodyListView.swift in Sources */, 1010 798A44EA2A30135D00815935 /* CNLiveMineBodyListView.swift in Sources */,
  1011 + 799172322AF08D1B00DC01A8 /* CNLiveShopOrderViewController.swift in Sources */,
938 798A44F92A30835400815935 /* CNLiveHelpFeedBackViewController.swift in Sources */, 1012 798A44F92A30835400815935 /* CNLiveHelpFeedBackViewController.swift in Sources */,
939 79A68C4A2A26E6CE00DC3B43 /* (null) in Sources */, 1013 79A68C4A2A26E6CE00DC3B43 /* (null) in Sources */,
940 790D01852A2D89E100C5978D /* UIColor+CNLiveExtensions.swift in Sources */, 1014 790D01852A2D89E100C5978D /* UIColor+CNLiveExtensions.swift in Sources */,
@@ -944,6 +1018,7 @@ @@ -944,6 +1018,7 @@
944 7905BB492AB0588B0089BC50 /* CNLiveMineAuthResultViewController.swift in Sources */, 1018 7905BB492AB0588B0089BC50 /* CNLiveMineAuthResultViewController.swift in Sources */,
945 798A44EC2A302DBE00815935 /* CNLiveMineAddInfoViewController.swift in Sources */, 1019 798A44EC2A302DBE00815935 /* CNLiveMineAddInfoViewController.swift in Sources */,
946 7CD675422A2740F8008354C1 /* CNCustomIndexView.swift in Sources */, 1020 7CD675422A2740F8008354C1 /* CNCustomIndexView.swift in Sources */,
  1021 + 79BB96AA2AF2330900AEA4AC /* CNLiveShopBodyDetailView.swift in Sources */,
947 790D01912A2DAC5E00C5978D /* CNLiveConfigFontMacro.swift in Sources */, 1022 790D01912A2DAC5E00C5978D /* CNLiveConfigFontMacro.swift in Sources */,
948 790D01852A2D89E100C5978D /* UIColor+CNLiveExtensions.swift in Sources */, 1023 790D01852A2D89E100C5978D /* UIColor+CNLiveExtensions.swift in Sources */,
949 790B1FB42A4153E90074CF00 /* CNLiveMineBaseModel.swift in Sources */, 1024 790B1FB42A4153E90074CF00 /* CNLiveMineBaseModel.swift in Sources */,
@@ -961,6 +1036,7 @@ @@ -961,6 +1036,7 @@
961 79A68C4C2A26EA6000DC3B43 /* (null) in Sources */, 1036 79A68C4C2A26EA6000DC3B43 /* (null) in Sources */,
962 79803E292AD6991200F05F68 /* CNLiveMineInputMessageView.swift in Sources */, 1037 79803E292AD6991200F05F68 /* CNLiveMineInputMessageView.swift in Sources */,
963 79282A462A2F457D00B5F8CF /* CNLiveMineViewController.swift in Sources */, 1038 79282A462A2F457D00B5F8CF /* CNLiveMineViewController.swift in Sources */,
  1039 + 7991723A2AF091E100DC01A8 /* CNLiveShopOrderListViewController.swift in Sources */,
964 798A44F02A305BC200815935 /* UIButton+CNLiveExtensions.swift in Sources */, 1040 798A44F02A305BC200815935 /* UIButton+CNLiveExtensions.swift in Sources */,
965 ); 1041 );
966 runOnlyForDeploymentPostprocessing = 0; 1042 runOnlyForDeploymentPostprocessing = 0;
metaCode/Classes/Common/Util/CNLiveCommonBaseModel.swift
@@ -27,4 +27,8 @@ class BaseModel: HandyJSON { @@ -27,4 +27,8 @@ class BaseModel: HandyJSON {
27 func mapping(mapper: HelpingMapper) { 27 func mapping(mapper: HelpingMapper) {
28 28
29 } 29 }
  30 +
  31 + func didFinishMapping() {
  32 +
  33 + }
30 } 34 }
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
@@ -59,6 +59,8 @@ extension UIView { @@ -59,6 +59,8 @@ extension UIView {
59 } 59 }
60 60
61 61
  62 +
  63 +
62 public var left:CGFloat{ 64 public var left:CGFloat{
63 65
64 set{ 66 set{
metaCode/Classes/Main/MinePage/Controller/CNLiveMineAddInfoViewController.swift
@@ -324,7 +324,11 @@ extension CNLiveMineAddInfoViewController { @@ -324,7 +324,11 @@ extension CNLiveMineAddInfoViewController {
324 return 324 return
325 } 325 }
326 if listModel.id == 9 { 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 } else { 332 } else {
329 self.navigationController?.pushViewController(CNLiveMineInputViewController.init(listModel: listModel), animated: true) 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,9 +150,10 @@ extension CNLiveMineViewController {
150 } 150 }
151 151
152 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 152 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
153 -// if indexPath.section == 0 { 153 + if indexPath.section == 0 {
154 // self.navigationController?.pushViewController(CNLiveMineQuestViewController.init(checkModel: checkModel), animated: true) 154 // self.navigationController?.pushViewController(CNLiveMineQuestViewController.init(checkModel: checkModel), animated: true)
155 -// } 155 + self.navigationController?.pushViewController(CNLiveShopOrderViewController.init(), animated: true)
  156 + }
156 if indexPath.section == 1 { 157 if indexPath.section == 1 {
157 self.navigationController?.pushViewController(CNLiveMineAddInfoViewController.init(show_type: .info), animated: true) 158 self.navigationController?.pushViewController(CNLiveMineAddInfoViewController.init(show_type: .info), animated: true)
158 } 159 }
@@ -165,6 +166,7 @@ extension CNLiveMineViewController { @@ -165,6 +166,7 @@ extension CNLiveMineViewController {
165 if indexPath.section == 3 && indexPath.row == 1 { 166 if indexPath.section == 3 && indexPath.row == 1 {
166 self.navigationController?.pushViewController(CNLiveTypeFeedBackViewController.init(show_type: .setting), animated: true) 167 self.navigationController?.pushViewController(CNLiveTypeFeedBackViewController.init(show_type: .setting), animated: true)
167 } 168 }
  169 +
168 } 170 }
169 171
170 func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 172 func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
metaCode/Classes/Main/MinePage/ViewModel/CNLiveMineBaseModel.swift
@@ -371,3 +371,28 @@ class MineIntegralRecordDescModel: BaseModel { @@ -371,3 +371,28 @@ class MineIntegralRecordDescModel: BaseModel {
371 var integralDesc: String? = "" 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,17 +447,6 @@ class CNLiveMineViewModel: NSObject {
447 if resp["data"] is NSNull { 447 if resp["data"] is NSNull {
448 resultBlock(NSNull(),.failed) 448 resultBlock(NSNull(),.failed)
449 } else { 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 let newsModel = dictionaryToModel(resp as! [String : Any], MineStandInfoBaseModel.self,"data") as! MineStandInfoBaseModel 450 let newsModel = dictionaryToModel(resp as! [String : Any], MineStandInfoBaseModel.self,"data") as! MineStandInfoBaseModel
462 if type == .nodate { 451 if type == .nodate {
463 let tempArray = NSMutableArray() 452 let tempArray = NSMutableArray()
@@ -881,6 +870,53 @@ class CNLiveMineViewModel: NSObject { @@ -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 static var timeStamp: Int { 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,9 +69,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
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"] 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 CNLiveNetworking.setupDefaultParam(p) 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 CNLiveNetworking.setupDSShopParam(shop_dic) 73 CNLiveNetworking.setupDSShopParam(shop_dic)
74 - 74 + CNLiveNetworking.setRequestTimeoutInterval(10)
75 CNLiveNetworking.setupShowDataResult(false) 75 CNLiveNetworking.setupShowDataResult(false)
76 CNLiveNetworking.setupSignKey(APPKey) 76 CNLiveNetworking.setupSignKey(APPKey)
77 CNLiveNetworking.setAllowRequestDefaultArgument(true) 77 CNLiveNetworking.setAllowRequestDefaultArgument(true)
metaCode/Supporting Files/Assets.xcassets/Shop/Contents.json 0 → 100644
  1 +{
  2 + "info" : {
  3 + "author" : "xcode",
  4 + "version" : 1
  5 + }
  6 +}
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