commit f0e8a1709deb3f3acd30a1d1e35e88b9f0e206df Author: DDIsFriend Date: Fri Aug 18 17:28:57 2023 +0800 initial diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..a59dcf2 Binary files /dev/null and b/.DS_Store differ diff --git a/LocalPods/.DS_Store b/LocalPods/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/LocalPods/.DS_Store differ diff --git a/LocalPods/OrderSchedulingApi b/LocalPods/OrderSchedulingApi new file mode 160000 index 0000000..ddf3cce --- /dev/null +++ b/LocalPods/OrderSchedulingApi @@ -0,0 +1 @@ +Subproject commit ddf3cceafb00add5443e25db68f2b19ebc6f27dc diff --git a/LocalPods/OrderSchedulingAssets b/LocalPods/OrderSchedulingAssets new file mode 160000 index 0000000..8cb9945 --- /dev/null +++ b/LocalPods/OrderSchedulingAssets @@ -0,0 +1 @@ +Subproject commit 8cb99456a479e961e4be664f01298997d31ef3ad diff --git a/LocalPods/OrderSchedulingCommon b/LocalPods/OrderSchedulingCommon new file mode 160000 index 0000000..e44213d --- /dev/null +++ b/LocalPods/OrderSchedulingCommon @@ -0,0 +1 @@ +Subproject commit e44213dee5ad5405912a6ef5248f9974b72cc84e diff --git a/LocalPods/OrderSchedulingCommonLib b/LocalPods/OrderSchedulingCommonLib new file mode 160000 index 0000000..50d9b53 --- /dev/null +++ b/LocalPods/OrderSchedulingCommonLib @@ -0,0 +1 @@ +Subproject commit 50d9b536ee54f33f52e6cde4e344e7b1b6c989fd diff --git a/LocalPods/OrderSchedulingStrings b/LocalPods/OrderSchedulingStrings new file mode 160000 index 0000000..381badf --- /dev/null +++ b/LocalPods/OrderSchedulingStrings @@ -0,0 +1 @@ +Subproject commit 381badf34985392a6f7fd98d136e50766ba0e684 diff --git a/OrderScheduling.xcodeproj/project.pbxproj b/OrderScheduling.xcodeproj/project.pbxproj new file mode 100644 index 0000000..6bc4b01 --- /dev/null +++ b/OrderScheduling.xcodeproj/project.pbxproj @@ -0,0 +1,990 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 791887422A7CCCCD007EA0C1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887402A7CCCCD007EA0C1 /* AppDelegate.swift */; }; + 791887432A7CCCCD007EA0C1 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887412A7CCCCD007EA0C1 /* SceneDelegate.swift */; }; + 791887452A7CD05B007EA0C1 /* MainTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887442A7CD05B007EA0C1 /* MainTabBarController.swift */; }; + 791887792A7CD64C007EA0C1 /* RescueController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887782A7CD64C007EA0C1 /* RescueController.swift */; }; + 7918877B2A7CDD1A007EA0C1 /* Initial.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7918877A2A7CDD1A007EA0C1 /* Initial.swift */; }; + 7918877E2A7CE5AD007EA0C1 /* NotificationStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7918877D2A7CE5AD007EA0C1 /* NotificationStrings.swift */; }; + 791887802A7CE6F1007EA0C1 /* UserDefaultStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7918877F2A7CE6F1007EA0C1 /* UserDefaultStrings.swift */; }; + 791887822A7CE71D007EA0C1 /* AppKeyStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887812A7CE71D007EA0C1 /* AppKeyStrings.swift */; }; + 791887892A7CE79E007EA0C1 /* LoginController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887882A7CE79E007EA0C1 /* LoginController.swift */; }; + 7918878B2A7CE9E0007EA0C1 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7918878A2A7CE9E0007EA0C1 /* main.swift */; }; + 7918878D2A8081D4007EA0C1 /* ActionStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7918878C2A8081D4007EA0C1 /* ActionStrings.swift */; }; + 7918878F2A809E37007EA0C1 /* TimerStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7918878E2A809E37007EA0C1 /* TimerStrings.swift */; }; + 791887952A80C361007EA0C1 /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887942A80C361007EA0C1 /* WebViewController.swift */; }; + 791887972A80C6CD007EA0C1 /* LocalizedStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887962A80C6CD007EA0C1 /* LocalizedStrings.swift */; }; + 791887A02A80CA10007EA0C1 /* RequestList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7918879E2A80CA10007EA0C1 /* RequestList.swift */; }; + 791887A12A80CA10007EA0C1 /* ApiList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7918879F2A80CA10007EA0C1 /* ApiList.swift */; }; + 791887A42A80CA30007EA0C1 /* ResponseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887A32A80CA30007EA0C1 /* ResponseModel.swift */; }; + 791887A62A80D50C007EA0C1 /* ParametersList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887A52A80D50C007EA0C1 /* ParametersList.swift */; }; + 791887AE2A80F943007EA0C1 /* UserData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887AD2A80F943007EA0C1 /* UserData.swift */; }; + 791887BA2A82495D007EA0C1 /* EnvironmentStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887B92A82495D007EA0C1 /* EnvironmentStrings.swift */; }; + 791887BD2A83952D007EA0C1 /* Entry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887BC2A83952D007EA0C1 /* Entry.swift */; }; + 791887BF2A839716007EA0C1 /* EntryStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887BE2A839716007EA0C1 /* EntryStrings.swift */; }; + 791887C12A839784007EA0C1 /* RefuseOrderEntryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887C02A839784007EA0C1 /* RefuseOrderEntryView.swift */; }; + 791887C42A84BFDB007EA0C1 /* Tool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887C32A84BFDB007EA0C1 /* Tool.swift */; }; + 791887C62A84D9DF007EA0C1 /* DispatchOrderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887C52A84D9DF007EA0C1 /* DispatchOrderController.swift */; }; + 794FBB0D2A8F040D00D57BB8 /* HistoryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB0C2A8F040D00D57BB8 /* HistoryController.swift */; }; + 794FBB142A8F045F00D57BB8 /* MineController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB132A8F045F00D57BB8 /* MineController.swift */; }; + 794FBB162A8F1A3300D57BB8 /* RescuePhotoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB152A8F1A3300D57BB8 /* RescuePhotoController.swift */; }; + 794FBB192A8F4AF000D57BB8 /* MessageCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB182A8F4AF000D57BB8 /* MessageCount.swift */; }; + 794FBB1C2A8F4DE900D57BB8 /* MessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB1B2A8F4DE900D57BB8 /* MessageView.swift */; }; + 79CECC122A89BD1A00B95D8B /* MessageCenterController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79CECC112A89BD1A00B95D8B /* MessageCenterController.swift */; }; + 79CECC192A89EE6A00B95D8B /* ReviewFailedController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79CECC182A89EE6A00B95D8B /* ReviewFailedController.swift */; }; + 79CECC1B2A89F83800B95D8B /* AdditionalPhotoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79CECC1A2A89F83800B95D8B /* AdditionalPhotoController.swift */; }; + 79CECC222A8A2A2900B95D8B /* VehicleMonitoringController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79CECC212A8A2A2900B95D8B /* VehicleMonitoringController.swift */; }; + 79CECC242A8B16D400B95D8B /* VehicleMonitoringListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79CECC232A8B16D400B95D8B /* VehicleMonitoringListController.swift */; }; + 79CECC262A8C749B00B95D8B /* VehicleMonitorVideoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79CECC252A8C749B00B95D8B /* VehicleMonitorVideoController.swift */; }; + 79CECC282A8CADEA00B95D8B /* VehicleMonitoringVideoDetailController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79CECC272A8CADEA00B95D8B /* VehicleMonitoringVideoDetailController.swift */; }; + 79EAD8142A7B86610036E093 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 79EAD8132A7B86610036E093 /* Assets.xcassets */; }; + 79EAD8172A7B86610036E093 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 79EAD8152A7B86610036E093 /* LaunchScreen.storyboard */; }; + A64E95F00B82DC28C2B9306E /* libPods-OrderScheduling.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 98784A61C325B3D6C408016C /* libPods-OrderScheduling.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 791887402A7CCCCD007EA0C1 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 791887412A7CCCCD007EA0C1 /* SceneDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 791887442A7CD05B007EA0C1 /* MainTabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabBarController.swift; sourceTree = ""; }; + 791887782A7CD64C007EA0C1 /* RescueController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RescueController.swift; sourceTree = ""; }; + 7918877A2A7CDD1A007EA0C1 /* Initial.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Initial.swift; sourceTree = ""; }; + 7918877D2A7CE5AD007EA0C1 /* NotificationStrings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationStrings.swift; sourceTree = ""; }; + 7918877F2A7CE6F1007EA0C1 /* UserDefaultStrings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultStrings.swift; sourceTree = ""; }; + 791887812A7CE71D007EA0C1 /* AppKeyStrings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppKeyStrings.swift; sourceTree = ""; }; + 791887882A7CE79E007EA0C1 /* LoginController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginController.swift; sourceTree = ""; }; + 7918878A2A7CE9E0007EA0C1 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; + 7918878C2A8081D4007EA0C1 /* ActionStrings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionStrings.swift; sourceTree = ""; }; + 7918878E2A809E37007EA0C1 /* TimerStrings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimerStrings.swift; sourceTree = ""; }; + 791887942A80C361007EA0C1 /* WebViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewController.swift; sourceTree = ""; }; + 791887962A80C6CD007EA0C1 /* LocalizedStrings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizedStrings.swift; sourceTree = ""; }; + 7918879E2A80CA10007EA0C1 /* RequestList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestList.swift; sourceTree = ""; }; + 7918879F2A80CA10007EA0C1 /* ApiList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ApiList.swift; sourceTree = ""; }; + 791887A32A80CA30007EA0C1 /* ResponseModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResponseModel.swift; sourceTree = ""; }; + 791887A52A80D50C007EA0C1 /* ParametersList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParametersList.swift; sourceTree = ""; }; + 791887AD2A80F943007EA0C1 /* UserData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserData.swift; sourceTree = ""; }; + 791887B92A82495D007EA0C1 /* EnvironmentStrings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnvironmentStrings.swift; sourceTree = ""; }; + 791887BC2A83952D007EA0C1 /* Entry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Entry.swift; sourceTree = ""; }; + 791887BE2A839716007EA0C1 /* EntryStrings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EntryStrings.swift; sourceTree = ""; }; + 791887C02A839784007EA0C1 /* RefuseOrderEntryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefuseOrderEntryView.swift; sourceTree = ""; }; + 791887C32A84BFDB007EA0C1 /* Tool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tool.swift; sourceTree = ""; }; + 791887C52A84D9DF007EA0C1 /* DispatchOrderController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DispatchOrderController.swift; sourceTree = ""; }; + 794FBB0C2A8F040D00D57BB8 /* HistoryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoryController.swift; sourceTree = ""; }; + 794FBB132A8F045F00D57BB8 /* MineController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MineController.swift; sourceTree = ""; }; + 794FBB152A8F1A3300D57BB8 /* RescuePhotoController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RescuePhotoController.swift; sourceTree = ""; }; + 794FBB182A8F4AF000D57BB8 /* MessageCount.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageCount.swift; sourceTree = ""; }; + 794FBB1B2A8F4DE900D57BB8 /* MessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageView.swift; sourceTree = ""; }; + 79C638864A659A427FCD5391 /* Pods-OrderScheduling.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OrderScheduling.debug.xcconfig"; path = "Target Support Files/Pods-OrderScheduling/Pods-OrderScheduling.debug.xcconfig"; sourceTree = ""; }; + 79CECC112A89BD1A00B95D8B /* MessageCenterController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageCenterController.swift; sourceTree = ""; }; + 79CECC182A89EE6A00B95D8B /* ReviewFailedController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewFailedController.swift; sourceTree = ""; }; + 79CECC1A2A89F83800B95D8B /* AdditionalPhotoController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdditionalPhotoController.swift; sourceTree = ""; }; + 79CECC212A8A2A2900B95D8B /* VehicleMonitoringController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VehicleMonitoringController.swift; sourceTree = ""; }; + 79CECC232A8B16D400B95D8B /* VehicleMonitoringListController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VehicleMonitoringListController.swift; sourceTree = ""; }; + 79CECC252A8C749B00B95D8B /* VehicleMonitorVideoController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VehicleMonitorVideoController.swift; sourceTree = ""; }; + 79CECC272A8CADEA00B95D8B /* VehicleMonitoringVideoDetailController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VehicleMonitoringVideoDetailController.swift; sourceTree = ""; }; + 79CECC2B2A8CBD0B00B95D8B /* OrderScheduling-Bridge-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "OrderScheduling-Bridge-Header.h"; sourceTree = ""; }; + 79CECC9D2A8E03C200B95D8B /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; }; + 79CECC9F2A8E03CF00B95D8B /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + 79CECCA12A8E03D900B95D8B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 79CECCA32A8E03EA00B95D8B /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 79CECCA52A8E03F500B95D8B /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 79CECCA72A8E040500B95D8B /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; + 79CECCA92A8E040D00B95D8B /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; }; + 79CECCAB2A8E041600B95D8B /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; + 79CECCAD2A8E04CA00B95D8B /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + 79CECCAF2A8E04D100B95D8B /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + 79CECCB12A8E04D700B95D8B /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; + 79CECCB32A8E04DE00B95D8B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 79CECCB52A8E04EF00B95D8B /* libbz2.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libbz2.tbd; path = usr/lib/libbz2.tbd; sourceTree = SDKROOT; }; + 79CECCB62A8E04FA00B95D8B /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + 79CECCB72A8E050200B95D8B /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; }; + 79EAD8072A7B86600036E093 /* OrderScheduling.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OrderScheduling.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 79EAD8132A7B86610036E093 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 79EAD8162A7B86610036E093 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 79EAD8182A7B86610036E093 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 98784A61C325B3D6C408016C /* libPods-OrderScheduling.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-OrderScheduling.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + A877C0F84742D4A7077DC8CF /* Pods-OrderScheduling.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OrderScheduling.release.xcconfig"; path = "Target Support Files/Pods-OrderScheduling/Pods-OrderScheduling.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 79EAD8042A7B86600036E093 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A64E95F00B82DC28C2B9306E /* libPods-OrderScheduling.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 7918873F2A7CCCCD007EA0C1 /* Main */ = { + isa = PBXGroup; + children = ( + 791887402A7CCCCD007EA0C1 /* AppDelegate.swift */, + 791887412A7CCCCD007EA0C1 /* SceneDelegate.swift */, + 791887442A7CD05B007EA0C1 /* MainTabBarController.swift */, + 7918877A2A7CDD1A007EA0C1 /* Initial.swift */, + 7918878A2A7CE9E0007EA0C1 /* main.swift */, + 79CECC2B2A8CBD0B00B95D8B /* OrderScheduling-Bridge-Header.h */, + ); + path = Main; + sourceTree = ""; + }; + 791887732A7CD633007EA0C1 /* Rescue */ = { + isa = PBXGroup; + children = ( + 791887742A7CD633007EA0C1 /* Model */, + 791887752A7CD633007EA0C1 /* View */, + 791887762A7CD633007EA0C1 /* ViewController */, + 791887772A7CD633007EA0C1 /* Reactor */, + ); + path = Rescue; + sourceTree = ""; + }; + 791887742A7CD633007EA0C1 /* Model */ = { + isa = PBXGroup; + children = ( + ); + path = Model; + sourceTree = ""; + }; + 791887752A7CD633007EA0C1 /* View */ = { + isa = PBXGroup; + children = ( + 791887C02A839784007EA0C1 /* RefuseOrderEntryView.swift */, + ); + path = View; + sourceTree = ""; + }; + 791887762A7CD633007EA0C1 /* ViewController */ = { + isa = PBXGroup; + children = ( + 791887782A7CD64C007EA0C1 /* RescueController.swift */, + 791887C52A84D9DF007EA0C1 /* DispatchOrderController.swift */, + 794FBB152A8F1A3300D57BB8 /* RescuePhotoController.swift */, + ); + path = ViewController; + sourceTree = ""; + }; + 791887772A7CD633007EA0C1 /* Reactor */ = { + isa = PBXGroup; + children = ( + ); + path = Reactor; + sourceTree = ""; + }; + 7918877C2A7CE57D007EA0C1 /* Strings */ = { + isa = PBXGroup; + children = ( + 7918877D2A7CE5AD007EA0C1 /* NotificationStrings.swift */, + 7918877F2A7CE6F1007EA0C1 /* UserDefaultStrings.swift */, + 791887812A7CE71D007EA0C1 /* AppKeyStrings.swift */, + 7918878C2A8081D4007EA0C1 /* ActionStrings.swift */, + 7918878E2A809E37007EA0C1 /* TimerStrings.swift */, + 791887962A80C6CD007EA0C1 /* LocalizedStrings.swift */, + 791887B92A82495D007EA0C1 /* EnvironmentStrings.swift */, + 791887BE2A839716007EA0C1 /* EntryStrings.swift */, + ); + path = Strings; + sourceTree = ""; + }; + 791887832A7CE78B007EA0C1 /* Login */ = { + isa = PBXGroup; + children = ( + 791887842A7CE78B007EA0C1 /* Model */, + 791887852A7CE78B007EA0C1 /* View */, + 791887862A7CE78B007EA0C1 /* ViewController */, + 791887872A7CE78B007EA0C1 /* Reactor */, + ); + path = Login; + sourceTree = ""; + }; + 791887842A7CE78B007EA0C1 /* Model */ = { + isa = PBXGroup; + children = ( + ); + path = Model; + sourceTree = ""; + }; + 791887852A7CE78B007EA0C1 /* View */ = { + isa = PBXGroup; + children = ( + ); + path = View; + sourceTree = ""; + }; + 791887862A7CE78B007EA0C1 /* ViewController */ = { + isa = PBXGroup; + children = ( + 791887882A7CE79E007EA0C1 /* LoginController.swift */, + ); + path = ViewController; + sourceTree = ""; + }; + 791887872A7CE78B007EA0C1 /* Reactor */ = { + isa = PBXGroup; + children = ( + ); + path = Reactor; + sourceTree = ""; + }; + 791887922A80C351007EA0C1 /* Common */ = { + isa = PBXGroup; + children = ( + 794FBB1A2A8F4DDD00D57BB8 /* View */, + 794FBB172A8F4ADD00D57BB8 /* MessageCount */, + 791887932A80C351007EA0C1 /* Controller */, + ); + path = Common; + sourceTree = ""; + }; + 791887932A80C351007EA0C1 /* Controller */ = { + isa = PBXGroup; + children = ( + 791887942A80C361007EA0C1 /* WebViewController.swift */, + ); + path = Controller; + sourceTree = ""; + }; + 7918879D2A80CA10007EA0C1 /* HttpRequestCenter */ = { + isa = PBXGroup; + children = ( + 7918879E2A80CA10007EA0C1 /* RequestList.swift */, + 7918879F2A80CA10007EA0C1 /* ApiList.swift */, + 791887A52A80D50C007EA0C1 /* ParametersList.swift */, + ); + path = HttpRequestCenter; + sourceTree = ""; + }; + 791887A22A80CA18007EA0C1 /* HttpResponseModel */ = { + isa = PBXGroup; + children = ( + 791887A32A80CA30007EA0C1 /* ResponseModel.swift */, + ); + path = HttpResponseModel; + sourceTree = ""; + }; + 791887AB2A80F930007EA0C1 /* Global */ = { + isa = PBXGroup; + children = ( + 791887C22A84BFCD007EA0C1 /* Tool */, + 791887AC2A80F930007EA0C1 /* User */, + ); + path = Global; + sourceTree = ""; + }; + 791887AC2A80F930007EA0C1 /* User */ = { + isa = PBXGroup; + children = ( + 791887AD2A80F943007EA0C1 /* UserData.swift */, + ); + path = User; + sourceTree = ""; + }; + 791887BB2A83947E007EA0C1 /* Entry */ = { + isa = PBXGroup; + children = ( + 791887BC2A83952D007EA0C1 /* Entry.swift */, + ); + path = Entry; + sourceTree = ""; + }; + 791887C22A84BFCD007EA0C1 /* Tool */ = { + isa = PBXGroup; + children = ( + 791887C32A84BFDB007EA0C1 /* Tool.swift */, + ); + path = Tool; + sourceTree = ""; + }; + 794FBB072A8F03D200D57BB8 /* History */ = { + isa = PBXGroup; + children = ( + 794FBB082A8F03D200D57BB8 /* Model */, + 794FBB092A8F03D200D57BB8 /* View */, + 794FBB0A2A8F03D200D57BB8 /* ViewController */, + 794FBB0B2A8F03D200D57BB8 /* Reactor */, + ); + path = History; + sourceTree = ""; + }; + 794FBB082A8F03D200D57BB8 /* Model */ = { + isa = PBXGroup; + children = ( + ); + path = Model; + sourceTree = ""; + }; + 794FBB092A8F03D200D57BB8 /* View */ = { + isa = PBXGroup; + children = ( + ); + path = View; + sourceTree = ""; + }; + 794FBB0A2A8F03D200D57BB8 /* ViewController */ = { + isa = PBXGroup; + children = ( + 794FBB0C2A8F040D00D57BB8 /* HistoryController.swift */, + ); + path = ViewController; + sourceTree = ""; + }; + 794FBB0B2A8F03D200D57BB8 /* Reactor */ = { + isa = PBXGroup; + children = ( + ); + path = Reactor; + sourceTree = ""; + }; + 794FBB0E2A8F044F00D57BB8 /* Mine */ = { + isa = PBXGroup; + children = ( + 794FBB0F2A8F044F00D57BB8 /* Model */, + 794FBB102A8F044F00D57BB8 /* View */, + 794FBB112A8F044F00D57BB8 /* ViewController */, + 794FBB122A8F044F00D57BB8 /* Reactor */, + ); + path = Mine; + sourceTree = ""; + }; + 794FBB0F2A8F044F00D57BB8 /* Model */ = { + isa = PBXGroup; + children = ( + ); + path = Model; + sourceTree = ""; + }; + 794FBB102A8F044F00D57BB8 /* View */ = { + isa = PBXGroup; + children = ( + ); + path = View; + sourceTree = ""; + }; + 794FBB112A8F044F00D57BB8 /* ViewController */ = { + isa = PBXGroup; + children = ( + 794FBB132A8F045F00D57BB8 /* MineController.swift */, + ); + path = ViewController; + sourceTree = ""; + }; + 794FBB122A8F044F00D57BB8 /* Reactor */ = { + isa = PBXGroup; + children = ( + ); + path = Reactor; + sourceTree = ""; + }; + 794FBB172A8F4ADD00D57BB8 /* MessageCount */ = { + isa = PBXGroup; + children = ( + 794FBB182A8F4AF000D57BB8 /* MessageCount.swift */, + ); + path = MessageCount; + sourceTree = ""; + }; + 794FBB1A2A8F4DDD00D57BB8 /* View */ = { + isa = PBXGroup; + children = ( + 794FBB1B2A8F4DE900D57BB8 /* MessageView.swift */, + ); + path = View; + sourceTree = ""; + }; + 79CECC0C2A89BCFE00B95D8B /* MessageCenter */ = { + isa = PBXGroup; + children = ( + 79CECC0D2A89BCFE00B95D8B /* Model */, + 79CECC0E2A89BCFE00B95D8B /* View */, + 79CECC0F2A89BCFE00B95D8B /* ViewController */, + 79CECC102A89BCFE00B95D8B /* Reactor */, + ); + path = MessageCenter; + sourceTree = ""; + }; + 79CECC0D2A89BCFE00B95D8B /* Model */ = { + isa = PBXGroup; + children = ( + ); + path = Model; + sourceTree = ""; + }; + 79CECC0E2A89BCFE00B95D8B /* View */ = { + isa = PBXGroup; + children = ( + ); + path = View; + sourceTree = ""; + }; + 79CECC0F2A89BCFE00B95D8B /* ViewController */ = { + isa = PBXGroup; + children = ( + 79CECC112A89BD1A00B95D8B /* MessageCenterController.swift */, + ); + path = ViewController; + sourceTree = ""; + }; + 79CECC102A89BCFE00B95D8B /* Reactor */ = { + isa = PBXGroup; + children = ( + ); + path = Reactor; + sourceTree = ""; + }; + 79CECC132A89EE5600B95D8B /* ReviewFailed */ = { + isa = PBXGroup; + children = ( + 79CECC142A89EE5600B95D8B /* Model */, + 79CECC152A89EE5600B95D8B /* View */, + 79CECC162A89EE5600B95D8B /* ViewController */, + 79CECC172A89EE5600B95D8B /* Reactor */, + ); + path = ReviewFailed; + sourceTree = ""; + }; + 79CECC142A89EE5600B95D8B /* Model */ = { + isa = PBXGroup; + children = ( + ); + path = Model; + sourceTree = ""; + }; + 79CECC152A89EE5600B95D8B /* View */ = { + isa = PBXGroup; + children = ( + ); + path = View; + sourceTree = ""; + }; + 79CECC162A89EE5600B95D8B /* ViewController */ = { + isa = PBXGroup; + children = ( + 79CECC182A89EE6A00B95D8B /* ReviewFailedController.swift */, + 79CECC1A2A89F83800B95D8B /* AdditionalPhotoController.swift */, + ); + path = ViewController; + sourceTree = ""; + }; + 79CECC172A89EE5600B95D8B /* Reactor */ = { + isa = PBXGroup; + children = ( + ); + path = Reactor; + sourceTree = ""; + }; + 79CECC1C2A8A2A1600B95D8B /* VehicleMonitoring */ = { + isa = PBXGroup; + children = ( + 79CECC1D2A8A2A1600B95D8B /* Model */, + 79CECC1E2A8A2A1600B95D8B /* View */, + 79CECC1F2A8A2A1600B95D8B /* ViewController */, + 79CECC202A8A2A1600B95D8B /* Reactor */, + ); + path = VehicleMonitoring; + sourceTree = ""; + }; + 79CECC1D2A8A2A1600B95D8B /* Model */ = { + isa = PBXGroup; + children = ( + ); + path = Model; + sourceTree = ""; + }; + 79CECC1E2A8A2A1600B95D8B /* View */ = { + isa = PBXGroup; + children = ( + ); + path = View; + sourceTree = ""; + }; + 79CECC1F2A8A2A1600B95D8B /* ViewController */ = { + isa = PBXGroup; + children = ( + 79CECC212A8A2A2900B95D8B /* VehicleMonitoringController.swift */, + 79CECC232A8B16D400B95D8B /* VehicleMonitoringListController.swift */, + 79CECC252A8C749B00B95D8B /* VehicleMonitorVideoController.swift */, + 79CECC272A8CADEA00B95D8B /* VehicleMonitoringVideoDetailController.swift */, + ); + path = ViewController; + sourceTree = ""; + }; + 79CECC202A8A2A1600B95D8B /* Reactor */ = { + isa = PBXGroup; + children = ( + ); + path = Reactor; + sourceTree = ""; + }; + 79EAD7FE2A7B86600036E093 = { + isa = PBXGroup; + children = ( + 79EAD8092A7B86600036E093 /* OrderScheduling */, + 79EAD8082A7B86600036E093 /* Products */, + 8AE7BC9A61FB797B2DAF5A9C /* Pods */, + A0E8B82459C825FF917782D5 /* Frameworks */, + ); + sourceTree = ""; + }; + 79EAD8082A7B86600036E093 /* Products */ = { + isa = PBXGroup; + children = ( + 79EAD8072A7B86600036E093 /* OrderScheduling.app */, + ); + name = Products; + sourceTree = ""; + }; + 79EAD8092A7B86600036E093 /* OrderScheduling */ = { + isa = PBXGroup; + children = ( + 794FBB0E2A8F044F00D57BB8 /* Mine */, + 794FBB072A8F03D200D57BB8 /* History */, + 79CECC1C2A8A2A1600B95D8B /* VehicleMonitoring */, + 79CECC132A89EE5600B95D8B /* ReviewFailed */, + 79CECC0C2A89BCFE00B95D8B /* MessageCenter */, + 791887BB2A83947E007EA0C1 /* Entry */, + 791887AB2A80F930007EA0C1 /* Global */, + 791887A22A80CA18007EA0C1 /* HttpResponseModel */, + 7918879D2A80CA10007EA0C1 /* HttpRequestCenter */, + 791887922A80C351007EA0C1 /* Common */, + 791887832A7CE78B007EA0C1 /* Login */, + 7918877C2A7CE57D007EA0C1 /* Strings */, + 791887732A7CD633007EA0C1 /* Rescue */, + 7918873F2A7CCCCD007EA0C1 /* Main */, + 79EAD8132A7B86610036E093 /* Assets.xcassets */, + 79EAD8152A7B86610036E093 /* LaunchScreen.storyboard */, + 79EAD8182A7B86610036E093 /* Info.plist */, + ); + path = OrderScheduling; + sourceTree = ""; + }; + 8AE7BC9A61FB797B2DAF5A9C /* Pods */ = { + isa = PBXGroup; + children = ( + 79C638864A659A427FCD5391 /* Pods-OrderScheduling.debug.xcconfig */, + A877C0F84742D4A7077DC8CF /* Pods-OrderScheduling.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + A0E8B82459C825FF917782D5 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 79CECCB72A8E050200B95D8B /* libc++.tbd */, + 79CECCB62A8E04FA00B95D8B /* libz.tbd */, + 79CECCB52A8E04EF00B95D8B /* libbz2.tbd */, + 79CECCB32A8E04DE00B95D8B /* Foundation.framework */, + 79CECCB12A8E04D700B95D8B /* VideoToolbox.framework */, + 79CECCAF2A8E04D100B95D8B /* QuartzCore.framework */, + 79CECCAD2A8E04CA00B95D8B /* OpenGLES.framework */, + 79CECCAB2A8E041600B95D8B /* MobileCoreServices.framework */, + 79CECCA92A8E040D00B95D8B /* CoreVideo.framework */, + 79CECCA72A8E040500B95D8B /* CoreMedia.framework */, + 79CECCA52A8E03F500B95D8B /* CoreGraphics.framework */, + 79CECCA32A8E03EA00B95D8B /* AudioToolbox.framework */, + 79CECCA12A8E03D900B95D8B /* UIKit.framework */, + 79CECC9F2A8E03CF00B95D8B /* AVFoundation.framework */, + 79CECC9D2A8E03C200B95D8B /* MediaPlayer.framework */, + 98784A61C325B3D6C408016C /* libPods-OrderScheduling.a */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 79EAD8062A7B86600036E093 /* OrderScheduling */ = { + isa = PBXNativeTarget; + buildConfigurationList = 79EAD81B2A7B86610036E093 /* Build configuration list for PBXNativeTarget "OrderScheduling" */; + buildPhases = ( + BB88446118A3830B05D88DEC /* [CP] Check Pods Manifest.lock */, + 79EAD8032A7B86600036E093 /* Sources */, + 79EAD8042A7B86600036E093 /* Frameworks */, + 79EAD8052A7B86600036E093 /* Resources */, + 341364273A38F3D379A18C5D /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = OrderScheduling; + productName = OrderScheduling; + productReference = 79EAD8072A7B86600036E093 /* OrderScheduling.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 79EAD7FF2A7B86600036E093 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1430; + LastUpgradeCheck = 1430; + TargetAttributes = { + 79EAD8062A7B86600036E093 = { + CreatedOnToolsVersion = 14.3.1; + }; + }; + }; + buildConfigurationList = 79EAD8022A7B86600036E093 /* Build configuration list for PBXProject "OrderScheduling" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 79EAD7FE2A7B86600036E093; + productRefGroup = 79EAD8082A7B86600036E093 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 79EAD8062A7B86600036E093 /* OrderScheduling */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 79EAD8052A7B86600036E093 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 79EAD8172A7B86610036E093 /* LaunchScreen.storyboard in Resources */, + 79EAD8142A7B86610036E093 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 341364273A38F3D379A18C5D /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-OrderScheduling/Pods-OrderScheduling-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-OrderScheduling/Pods-OrderScheduling-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-OrderScheduling/Pods-OrderScheduling-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + BB88446118A3830B05D88DEC /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-OrderScheduling-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 79EAD8032A7B86600036E093 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 79CECC242A8B16D400B95D8B /* VehicleMonitoringListController.swift in Sources */, + 791887BD2A83952D007EA0C1 /* Entry.swift in Sources */, + 791887952A80C361007EA0C1 /* WebViewController.swift in Sources */, + 79CECC192A89EE6A00B95D8B /* ReviewFailedController.swift in Sources */, + 791887C62A84D9DF007EA0C1 /* DispatchOrderController.swift in Sources */, + 7918877B2A7CDD1A007EA0C1 /* Initial.swift in Sources */, + 791887C42A84BFDB007EA0C1 /* Tool.swift in Sources */, + 794FBB162A8F1A3300D57BB8 /* RescuePhotoController.swift in Sources */, + 7918878F2A809E37007EA0C1 /* TimerStrings.swift in Sources */, + 7918878B2A7CE9E0007EA0C1 /* main.swift in Sources */, + 791887A02A80CA10007EA0C1 /* RequestList.swift in Sources */, + 79CECC262A8C749B00B95D8B /* VehicleMonitorVideoController.swift in Sources */, + 791887802A7CE6F1007EA0C1 /* UserDefaultStrings.swift in Sources */, + 794FBB1C2A8F4DE900D57BB8 /* MessageView.swift in Sources */, + 794FBB142A8F045F00D57BB8 /* MineController.swift in Sources */, + 791887432A7CCCCD007EA0C1 /* SceneDelegate.swift in Sources */, + 791887C12A839784007EA0C1 /* RefuseOrderEntryView.swift in Sources */, + 7918877E2A7CE5AD007EA0C1 /* NotificationStrings.swift in Sources */, + 79CECC1B2A89F83800B95D8B /* AdditionalPhotoController.swift in Sources */, + 791887BF2A839716007EA0C1 /* EntryStrings.swift in Sources */, + 794FBB192A8F4AF000D57BB8 /* MessageCount.swift in Sources */, + 791887892A7CE79E007EA0C1 /* LoginController.swift in Sources */, + 791887A42A80CA30007EA0C1 /* ResponseModel.swift in Sources */, + 794FBB0D2A8F040D00D57BB8 /* HistoryController.swift in Sources */, + 7918878D2A8081D4007EA0C1 /* ActionStrings.swift in Sources */, + 791887972A80C6CD007EA0C1 /* LocalizedStrings.swift in Sources */, + 791887422A7CCCCD007EA0C1 /* AppDelegate.swift in Sources */, + 79CECC222A8A2A2900B95D8B /* VehicleMonitoringController.swift in Sources */, + 791887452A7CD05B007EA0C1 /* MainTabBarController.swift in Sources */, + 791887792A7CD64C007EA0C1 /* RescueController.swift in Sources */, + 79CECC122A89BD1A00B95D8B /* MessageCenterController.swift in Sources */, + 791887822A7CE71D007EA0C1 /* AppKeyStrings.swift in Sources */, + 79CECC282A8CADEA00B95D8B /* VehicleMonitoringVideoDetailController.swift in Sources */, + 791887A12A80CA10007EA0C1 /* ApiList.swift in Sources */, + 791887AE2A80F943007EA0C1 /* UserData.swift in Sources */, + 791887BA2A82495D007EA0C1 /* EnvironmentStrings.swift in Sources */, + 791887A62A80D50C007EA0C1 /* ParametersList.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 79EAD8152A7B86610036E093 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 79EAD8162A7B86610036E093 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 79EAD8192A7B86610036E093 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 79EAD81A2A7B86610036E093 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 79EAD81C2A7B86610036E093 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 79C638864A659A427FCD5391 /* Pods-OrderScheduling.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = W4SG324NS4; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/OrderScheduling/Player/Classes/ijkplayer", + ); + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = OrderScheduling/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = "中道调度"; + INFOPLIST_KEY_NSCameraUsageDescription = "补充工单照片需要访问您的相机"; + INFOPLIST_KEY_NSMicrophoneUsageDescription = "补充工单照片需要访问您的麦克风"; + INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "补充工单照片需要访问您的相册"; + INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "补充工单照片需要访问您的相册"; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.dezhong.boss; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + 79EAD81D2A7B86610036E093 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A877C0F84742D4A7077DC8CF /* Pods-OrderScheduling.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = W4SG324NS4; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/OrderScheduling/Player/Classes/ijkplayer", + ); + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = OrderScheduling/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = "中道调度"; + INFOPLIST_KEY_NSCameraUsageDescription = "补充工单照片需要访问您的相机"; + INFOPLIST_KEY_NSMicrophoneUsageDescription = "补充工单照片需要访问您的麦克风"; + INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "补充工单照片需要访问您的相册"; + INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "补充工单照片需要访问您的相册"; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.dezhong.boss; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 79EAD8022A7B86600036E093 /* Build configuration list for PBXProject "OrderScheduling" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 79EAD8192A7B86610036E093 /* Debug */, + 79EAD81A2A7B86610036E093 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 79EAD81B2A7B86610036E093 /* Build configuration list for PBXNativeTarget "OrderScheduling" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 79EAD81C2A7B86610036E093 /* Debug */, + 79EAD81D2A7B86610036E093 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 79EAD7FF2A7B86600036E093 /* Project object */; +} diff --git a/OrderScheduling.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/OrderScheduling.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/OrderScheduling.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/OrderScheduling.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/OrderScheduling.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/OrderScheduling.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/OrderScheduling.xcodeproj/project.xcworkspace/xcuserdata/zd.xcuserdatad/UserInterfaceState.xcuserstate b/OrderScheduling.xcodeproj/project.xcworkspace/xcuserdata/zd.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..79b39ea Binary files /dev/null and b/OrderScheduling.xcodeproj/project.xcworkspace/xcuserdata/zd.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/OrderScheduling.xcodeproj/xcshareddata/xcschemes/OrderScheduling.xcscheme b/OrderScheduling.xcodeproj/xcshareddata/xcschemes/OrderScheduling.xcscheme new file mode 100644 index 0000000..d0ecc95 --- /dev/null +++ b/OrderScheduling.xcodeproj/xcshareddata/xcschemes/OrderScheduling.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OrderScheduling.xcodeproj/xcuserdata/zd.xcuserdatad/xcschemes/xcschememanagement.plist b/OrderScheduling.xcodeproj/xcuserdata/zd.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..41bad84 --- /dev/null +++ b/OrderScheduling.xcodeproj/xcuserdata/zd.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + OrderScheduling.xcscheme_^#shared#^_ + + orderHint + 33 + + + SuppressBuildableAutocreation + + 79EAD8062A7B86600036E093 + + primary + + + + + diff --git a/OrderScheduling.xcworkspace/contents.xcworkspacedata b/OrderScheduling.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..21c843d --- /dev/null +++ b/OrderScheduling.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/OrderScheduling.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/OrderScheduling.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/OrderScheduling.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/UserInterfaceState.xcuserstate b/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..ff4d119 Binary files /dev/null and b/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..fea9414 --- /dev/null +++ b/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,1204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OrderScheduling/.DS_Store b/OrderScheduling/.DS_Store new file mode 100644 index 0000000..6488e66 Binary files /dev/null and b/OrderScheduling/.DS_Store differ diff --git a/OrderScheduling/Assets.xcassets/AccentColor.colorset/Contents.json b/OrderScheduling/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/AppIcon.appiconset/Contents.json b/OrderScheduling/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..13613e3 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/Common/Contents.json b/OrderScheduling/Assets.xcassets/Common/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/Common/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/Contents.json b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusy.imageset/Contents.json b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusy.imageset/Contents.json new file mode 100644 index 0000000..382b40a --- /dev/null +++ b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusy.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "vehicleMonitoring_cameraBusy.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "vehicleMonitoring_cameraBusy@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "vehicleMonitoring_cameraBusy@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusy.imageset/vehicleMonitoring_cameraBusy.png b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusy.imageset/vehicleMonitoring_cameraBusy.png new file mode 100644 index 0000000..2df9944 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusy.imageset/vehicleMonitoring_cameraBusy.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusy.imageset/vehicleMonitoring_cameraBusy@2x.png b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusy.imageset/vehicleMonitoring_cameraBusy@2x.png new file mode 100644 index 0000000..581b8f9 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusy.imageset/vehicleMonitoring_cameraBusy@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusy.imageset/vehicleMonitoring_cameraBusy@3x.png b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusy.imageset/vehicleMonitoring_cameraBusy@3x.png new file mode 100644 index 0000000..befa0b2 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusy.imageset/vehicleMonitoring_cameraBusy@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusyArrow.imageset/Contents.json b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusyArrow.imageset/Contents.json new file mode 100644 index 0000000..b985d05 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusyArrow.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "vehicleMonitoring_cameraBusyArrow.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "vehicleMonitoring_cameraBusyArrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "vehicleMonitoring_cameraBusyArrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusyArrow.imageset/vehicleMonitoring_cameraBusyArrow.png b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusyArrow.imageset/vehicleMonitoring_cameraBusyArrow.png new file mode 100644 index 0000000..a45ddf3 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusyArrow.imageset/vehicleMonitoring_cameraBusyArrow.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusyArrow.imageset/vehicleMonitoring_cameraBusyArrow@2x.png b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusyArrow.imageset/vehicleMonitoring_cameraBusyArrow@2x.png new file mode 100644 index 0000000..5c36533 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusyArrow.imageset/vehicleMonitoring_cameraBusyArrow@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusyArrow.imageset/vehicleMonitoring_cameraBusyArrow@3x.png b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusyArrow.imageset/vehicleMonitoring_cameraBusyArrow@3x.png new file mode 100644 index 0000000..7f2b653 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraBusyArrow.imageset/vehicleMonitoring_cameraBusyArrow@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdle.imageset/Contents.json b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdle.imageset/Contents.json new file mode 100644 index 0000000..783ff36 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdle.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "vehicleMonitoring_cameraIdle.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "vehicleMonitoring_cameraIdle@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "vehicleMonitoring_cameraIdle@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdle.imageset/vehicleMonitoring_cameraIdle.png b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdle.imageset/vehicleMonitoring_cameraIdle.png new file mode 100644 index 0000000..51c8570 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdle.imageset/vehicleMonitoring_cameraIdle.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdle.imageset/vehicleMonitoring_cameraIdle@2x.png b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdle.imageset/vehicleMonitoring_cameraIdle@2x.png new file mode 100644 index 0000000..fcf6b42 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdle.imageset/vehicleMonitoring_cameraIdle@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdle.imageset/vehicleMonitoring_cameraIdle@3x.png b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdle.imageset/vehicleMonitoring_cameraIdle@3x.png new file mode 100644 index 0000000..a0d577d Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdle.imageset/vehicleMonitoring_cameraIdle@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdleArrow.imageset/Contents.json b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdleArrow.imageset/Contents.json new file mode 100644 index 0000000..dc4d0ac --- /dev/null +++ b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdleArrow.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "vehicleMonitoring_cameraIdleArrow.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "vehicleMonitoring_cameraIdleArrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "vehicleMonitoring_cameraIdleArrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdleArrow.imageset/vehicleMonitoring_cameraIdleArrow.png b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdleArrow.imageset/vehicleMonitoring_cameraIdleArrow.png new file mode 100644 index 0000000..2749fc4 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdleArrow.imageset/vehicleMonitoring_cameraIdleArrow.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdleArrow.imageset/vehicleMonitoring_cameraIdleArrow@2x.png b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdleArrow.imageset/vehicleMonitoring_cameraIdleArrow@2x.png new file mode 100644 index 0000000..be8e59e Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdleArrow.imageset/vehicleMonitoring_cameraIdleArrow@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdleArrow.imageset/vehicleMonitoring_cameraIdleArrow@3x.png b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdleArrow.imageset/vehicleMonitoring_cameraIdleArrow@3x.png new file mode 100644 index 0000000..cf6ca27 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cameraIdleArrow.imageset/vehicleMonitoring_cameraIdleArrow@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cellSelected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cellSelected.imageset/Contents.json new file mode 100644 index 0000000..4b21105 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cellSelected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "vehicleMonitoring_cellSelected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "vehicleMonitoring_cellSelected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "vehicleMonitoring_cellSelected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cellSelected.imageset/vehicleMonitoring_cellSelected.png b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cellSelected.imageset/vehicleMonitoring_cellSelected.png new file mode 100644 index 0000000..41346a0 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cellSelected.imageset/vehicleMonitoring_cellSelected.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cellSelected.imageset/vehicleMonitoring_cellSelected@2x.png b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cellSelected.imageset/vehicleMonitoring_cellSelected@2x.png new file mode 100644 index 0000000..ab4f48f Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cellSelected.imageset/vehicleMonitoring_cellSelected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cellSelected.imageset/vehicleMonitoring_cellSelected@3x.png b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cellSelected.imageset/vehicleMonitoring_cellSelected@3x.png new file mode 100644 index 0000000..c940552 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/VehicleMonitoring/vehicleMonitoring_cellSelected.imageset/vehicleMonitoring_cellSelected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/Contents.json b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/Contents.json new file mode 100644 index 0000000..9d8ed8c --- /dev/null +++ b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "dispatchOrder_down.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "dispatchOrder_down@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "dispatchOrder_down@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/dispatchOrder_down.png b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/dispatchOrder_down.png new file mode 100644 index 0000000..9d201d9 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/dispatchOrder_down.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/dispatchOrder_down@2x.png b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/dispatchOrder_down@2x.png new file mode 100644 index 0000000..6ce8759 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/dispatchOrder_down@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/dispatchOrder_down@3x.png b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/dispatchOrder_down@3x.png new file mode 100644 index 0000000..b92c111 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/dispatchOrder_down@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/Contents.json b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/Contents.json new file mode 100644 index 0000000..f134f5d --- /dev/null +++ b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "dispatchOrder_up.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "dispatchOrder_up@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "dispatchOrder_up@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/dispatchOrder_up.png b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/dispatchOrder_up.png new file mode 100644 index 0000000..c5ccd54 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/dispatchOrder_up.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/dispatchOrder_up@2x.png b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/dispatchOrder_up@2x.png new file mode 100644 index 0000000..98d7d57 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/dispatchOrder_up@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/dispatchOrder_up@3x.png b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/dispatchOrder_up@3x.png new file mode 100644 index 0000000..865a96d Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/dispatchOrder_up@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/Contents.json b/OrderScheduling/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/Contents.json b/OrderScheduling/Assets.xcassets/DispatchOrder/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/DispatchOrder/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_back.imageset/Contents.json b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_back.imageset/Contents.json new file mode 100644 index 0000000..2646144 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_back.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "dispatchOrder_back.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "dispatchOrder_back@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "dispatchOrder_back@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_back.imageset/dispatchOrder_back.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_back.imageset/dispatchOrder_back.png new file mode 100644 index 0000000..2aa2bdb Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_back.imageset/dispatchOrder_back.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_back.imageset/dispatchOrder_back@2x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_back.imageset/dispatchOrder_back@2x.png new file mode 100644 index 0000000..93b7343 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_back.imageset/dispatchOrder_back@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_back.imageset/dispatchOrder_back@3x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_back.imageset/dispatchOrder_back@3x.png new file mode 100644 index 0000000..42d5ee7 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_back.imageset/dispatchOrder_back@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_selected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_selected.imageset/Contents.json new file mode 100644 index 0000000..6475046 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_selected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "dispatchOrder_offline_selected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "dispatchOrder_offline_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "dispatchOrder_offline_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_selected.imageset/dispatchOrder_offline_selected.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_selected.imageset/dispatchOrder_offline_selected.png new file mode 100644 index 0000000..bf0c464 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_selected.imageset/dispatchOrder_offline_selected.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_selected.imageset/dispatchOrder_offline_selected@2x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_selected.imageset/dispatchOrder_offline_selected@2x.png new file mode 100644 index 0000000..04db2e8 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_selected.imageset/dispatchOrder_offline_selected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_selected.imageset/dispatchOrder_offline_selected@3x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_selected.imageset/dispatchOrder_offline_selected@3x.png new file mode 100644 index 0000000..7bb5211 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_selected.imageset/dispatchOrder_offline_selected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_tap_background.imageset/Contents.json b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_tap_background.imageset/Contents.json new file mode 100644 index 0000000..deb889d --- /dev/null +++ b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_tap_background.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "dispatchOrder_offline_tap_background.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "dispatchOrder_offline_tap_background@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "dispatchOrder_offline_tap_background@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_tap_background.imageset/dispatchOrder_offline_tap_background.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_tap_background.imageset/dispatchOrder_offline_tap_background.png new file mode 100644 index 0000000..d29f2a6 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_tap_background.imageset/dispatchOrder_offline_tap_background.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_tap_background.imageset/dispatchOrder_offline_tap_background@2x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_tap_background.imageset/dispatchOrder_offline_tap_background@2x.png new file mode 100644 index 0000000..130d8b5 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_tap_background.imageset/dispatchOrder_offline_tap_background@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_tap_background.imageset/dispatchOrder_offline_tap_background@3x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_tap_background.imageset/dispatchOrder_offline_tap_background@3x.png new file mode 100644 index 0000000..950e0c7 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_tap_background.imageset/dispatchOrder_offline_tap_background@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_unselected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_unselected.imageset/Contents.json new file mode 100644 index 0000000..c0f74fc --- /dev/null +++ b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_unselected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "dispatchOrder_offline_unselected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "dispatchOrder_offline_unselected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "dispatchOrder_offline_unselected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_unselected.imageset/dispatchOrder_offline_unselected.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_unselected.imageset/dispatchOrder_offline_unselected.png new file mode 100644 index 0000000..63e02cf Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_unselected.imageset/dispatchOrder_offline_unselected.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_unselected.imageset/dispatchOrder_offline_unselected@2x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_unselected.imageset/dispatchOrder_offline_unselected@2x.png new file mode 100644 index 0000000..7846bb7 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_unselected.imageset/dispatchOrder_offline_unselected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_unselected.imageset/dispatchOrder_offline_unselected@3x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_unselected.imageset/dispatchOrder_offline_unselected@3x.png new file mode 100644 index 0000000..3ffe4ba Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_offline_unselected.imageset/dispatchOrder_offline_unselected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_selected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_selected.imageset/Contents.json new file mode 100644 index 0000000..1ec1aed --- /dev/null +++ b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_selected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "dispatchOrder_online_selected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "dispatchOrder_online_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "dispatchOrder_online_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_selected.imageset/dispatchOrder_online_selected.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_selected.imageset/dispatchOrder_online_selected.png new file mode 100644 index 0000000..4c9ea39 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_selected.imageset/dispatchOrder_online_selected.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_selected.imageset/dispatchOrder_online_selected@2x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_selected.imageset/dispatchOrder_online_selected@2x.png new file mode 100644 index 0000000..22d17c1 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_selected.imageset/dispatchOrder_online_selected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_selected.imageset/dispatchOrder_online_selected@3x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_selected.imageset/dispatchOrder_online_selected@3x.png new file mode 100644 index 0000000..98f0eab Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_selected.imageset/dispatchOrder_online_selected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_tap_background.imageset/Contents.json b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_tap_background.imageset/Contents.json new file mode 100644 index 0000000..bd67760 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_tap_background.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "dispatchOrder_online_tap_background.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "dispatchOrder_online_tap_background@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "dispatchOrder_online_tap_background@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_tap_background.imageset/dispatchOrder_online_tap_background.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_tap_background.imageset/dispatchOrder_online_tap_background.png new file mode 100644 index 0000000..4ac8421 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_tap_background.imageset/dispatchOrder_online_tap_background.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_tap_background.imageset/dispatchOrder_online_tap_background@2x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_tap_background.imageset/dispatchOrder_online_tap_background@2x.png new file mode 100644 index 0000000..4ac86be Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_tap_background.imageset/dispatchOrder_online_tap_background@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_tap_background.imageset/dispatchOrder_online_tap_background@3x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_tap_background.imageset/dispatchOrder_online_tap_background@3x.png new file mode 100644 index 0000000..ea51c02 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_tap_background.imageset/dispatchOrder_online_tap_background@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_unselected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_unselected.imageset/Contents.json new file mode 100644 index 0000000..1ff7883 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_unselected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "dispatchOrder_online_unselected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "dispatchOrder_online_unselected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "dispatchOrder_online_unselected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_unselected.imageset/dispatchOrder_online_unselected.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_unselected.imageset/dispatchOrder_online_unselected.png new file mode 100644 index 0000000..1cd8ec4 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_unselected.imageset/dispatchOrder_online_unselected.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_unselected.imageset/dispatchOrder_online_unselected@2x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_unselected.imageset/dispatchOrder_online_unselected@2x.png new file mode 100644 index 0000000..78a7bc7 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_unselected.imageset/dispatchOrder_online_unselected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_unselected.imageset/dispatchOrder_online_unselected@3x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_unselected.imageset/dispatchOrder_online_unselected@3x.png new file mode 100644 index 0000000..607fce5 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_online_unselected.imageset/dispatchOrder_online_unselected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_bottom.imageset/Contents.json b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_bottom.imageset/Contents.json new file mode 100644 index 0000000..548aea1 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_bottom.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "dispatchOrder_serviceAddress_bottom.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "dispatchOrder_serviceAddress_bottom@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "dispatchOrder_serviceAddress_bottom@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_bottom.imageset/dispatchOrder_serviceAddress_bottom.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_bottom.imageset/dispatchOrder_serviceAddress_bottom.png new file mode 100644 index 0000000..eb92b24 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_bottom.imageset/dispatchOrder_serviceAddress_bottom.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_bottom.imageset/dispatchOrder_serviceAddress_bottom@2x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_bottom.imageset/dispatchOrder_serviceAddress_bottom@2x.png new file mode 100644 index 0000000..57ab78e Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_bottom.imageset/dispatchOrder_serviceAddress_bottom@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_bottom.imageset/dispatchOrder_serviceAddress_bottom@3x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_bottom.imageset/dispatchOrder_serviceAddress_bottom@3x.png new file mode 100644 index 0000000..af09c33 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_bottom.imageset/dispatchOrder_serviceAddress_bottom@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_top.imageset/Contents.json b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_top.imageset/Contents.json new file mode 100644 index 0000000..ea18d74 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_top.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "dispatchOrder_serviceAddress_top.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "dispatchOrder_serviceAddress_top@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "dispatchOrder_serviceAddress_top@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_top.imageset/dispatchOrder_serviceAddress_top.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_top.imageset/dispatchOrder_serviceAddress_top.png new file mode 100644 index 0000000..b935bb3 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_top.imageset/dispatchOrder_serviceAddress_top.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_top.imageset/dispatchOrder_serviceAddress_top@2x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_top.imageset/dispatchOrder_serviceAddress_top@2x.png new file mode 100644 index 0000000..c9bc2c2 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_top.imageset/dispatchOrder_serviceAddress_top@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_top.imageset/dispatchOrder_serviceAddress_top@3x.png b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_top.imageset/dispatchOrder_serviceAddress_top@3x.png new file mode 100644 index 0000000..d29a179 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/DispatchOrder/dispatchOrder_serviceAddress_top.imageset/dispatchOrder_serviceAddress_top@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/Login/Contents.json b/OrderScheduling/Assets.xcassets/Login/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/Login/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/Login/login_agree_selected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/Login/login_agree_selected.imageset/Contents.json new file mode 100644 index 0000000..03c1184 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/Login/login_agree_selected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "login_agree_selected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_agree_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_agree_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/Login/login_agree_selected.imageset/login_agree_selected.png b/OrderScheduling/Assets.xcassets/Login/login_agree_selected.imageset/login_agree_selected.png new file mode 100644 index 0000000..1e4fb34 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Login/login_agree_selected.imageset/login_agree_selected.png differ diff --git a/OrderScheduling/Assets.xcassets/Login/login_agree_selected.imageset/login_agree_selected@2x.png b/OrderScheduling/Assets.xcassets/Login/login_agree_selected.imageset/login_agree_selected@2x.png new file mode 100644 index 0000000..ed20c26 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Login/login_agree_selected.imageset/login_agree_selected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/Login/login_agree_selected.imageset/login_agree_selected@3x.png b/OrderScheduling/Assets.xcassets/Login/login_agree_selected.imageset/login_agree_selected@3x.png new file mode 100644 index 0000000..647f66e Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Login/login_agree_selected.imageset/login_agree_selected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/Login/login_agree_unselected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/Login/login_agree_unselected.imageset/Contents.json new file mode 100644 index 0000000..f5e9007 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/Login/login_agree_unselected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "login_agree_unselected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_agree_unselected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_agree_unselected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/Login/login_agree_unselected.imageset/login_agree_unselected.png b/OrderScheduling/Assets.xcassets/Login/login_agree_unselected.imageset/login_agree_unselected.png new file mode 100644 index 0000000..9a6b018 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Login/login_agree_unselected.imageset/login_agree_unselected.png differ diff --git a/OrderScheduling/Assets.xcassets/Login/login_agree_unselected.imageset/login_agree_unselected@2x.png b/OrderScheduling/Assets.xcassets/Login/login_agree_unselected.imageset/login_agree_unselected@2x.png new file mode 100644 index 0000000..948f72d Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Login/login_agree_unselected.imageset/login_agree_unselected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/Login/login_agree_unselected.imageset/login_agree_unselected@3x.png b/OrderScheduling/Assets.xcassets/Login/login_agree_unselected.imageset/login_agree_unselected@3x.png new file mode 100644 index 0000000..51688ce Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Login/login_agree_unselected.imageset/login_agree_unselected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/Login/login_backgroundImage.imageset/Contents.json b/OrderScheduling/Assets.xcassets/Login/login_backgroundImage.imageset/Contents.json new file mode 100644 index 0000000..c37512d --- /dev/null +++ b/OrderScheduling/Assets.xcassets/Login/login_backgroundImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "login_backgroundImage.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_backgroundImage@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_backgroundImage@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/Login/login_backgroundImage.imageset/login_backgroundImage.png b/OrderScheduling/Assets.xcassets/Login/login_backgroundImage.imageset/login_backgroundImage.png new file mode 100644 index 0000000..2e3df52 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Login/login_backgroundImage.imageset/login_backgroundImage.png differ diff --git a/OrderScheduling/Assets.xcassets/Login/login_backgroundImage.imageset/login_backgroundImage@2x.png b/OrderScheduling/Assets.xcassets/Login/login_backgroundImage.imageset/login_backgroundImage@2x.png new file mode 100644 index 0000000..bf049ef Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Login/login_backgroundImage.imageset/login_backgroundImage@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/Login/login_backgroundImage.imageset/login_backgroundImage@3x.png b/OrderScheduling/Assets.xcassets/Login/login_backgroundImage.imageset/login_backgroundImage@3x.png new file mode 100644 index 0000000..b878d6a Binary files /dev/null and b/OrderScheduling/Assets.xcassets/Login/login_backgroundImage.imageset/login_backgroundImage@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/Mine/Contents.json b/OrderScheduling/Assets.xcassets/Mine/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/Mine/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/RefuseOrderEntry/Contents.json b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_exit.imageset/Contents.json b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_exit.imageset/Contents.json new file mode 100644 index 0000000..46503d3 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_exit.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "refuseOrder_exit.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "refuseOrder_exit@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "refuseOrder_exit@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_exit.imageset/refuseOrder_exit.png b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_exit.imageset/refuseOrder_exit.png new file mode 100644 index 0000000..d4fa453 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_exit.imageset/refuseOrder_exit.png differ diff --git a/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_exit.imageset/refuseOrder_exit@2x.png b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_exit.imageset/refuseOrder_exit@2x.png new file mode 100644 index 0000000..5b655a4 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_exit.imageset/refuseOrder_exit@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_exit.imageset/refuseOrder_exit@3x.png b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_exit.imageset/refuseOrder_exit@3x.png new file mode 100644 index 0000000..f983137 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_exit.imageset/refuseOrder_exit@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_selected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_selected.imageset/Contents.json new file mode 100644 index 0000000..650f4d5 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_selected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "refuseOrder_reason_selected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "refuseOrder_reason_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "refuseOrder_reason_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_selected.imageset/refuseOrder_reason_selected.png b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_selected.imageset/refuseOrder_reason_selected.png new file mode 100644 index 0000000..4924d0f Binary files /dev/null and b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_selected.imageset/refuseOrder_reason_selected.png differ diff --git a/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_selected.imageset/refuseOrder_reason_selected@2x.png b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_selected.imageset/refuseOrder_reason_selected@2x.png new file mode 100644 index 0000000..9857682 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_selected.imageset/refuseOrder_reason_selected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_selected.imageset/refuseOrder_reason_selected@3x.png b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_selected.imageset/refuseOrder_reason_selected@3x.png new file mode 100644 index 0000000..a6daf06 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_selected.imageset/refuseOrder_reason_selected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_unselected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_unselected.imageset/Contents.json new file mode 100644 index 0000000..3835ad4 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_unselected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "refuseOrder_reason_unselected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "refuseOrder_reason_unselected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "refuseOrder_reason_unselected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_unselected.imageset/refuseOrder_reason_unselected.png b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_unselected.imageset/refuseOrder_reason_unselected.png new file mode 100644 index 0000000..9d4a573 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_unselected.imageset/refuseOrder_reason_unselected.png differ diff --git a/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_unselected.imageset/refuseOrder_reason_unselected@2x.png b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_unselected.imageset/refuseOrder_reason_unselected@2x.png new file mode 100644 index 0000000..7106c5d Binary files /dev/null and b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_unselected.imageset/refuseOrder_reason_unselected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_unselected.imageset/refuseOrder_reason_unselected@3x.png b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_unselected.imageset/refuseOrder_reason_unselected@3x.png new file mode 100644 index 0000000..17e2531 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/RefuseOrderEntry/refuseOrder_reason_unselected.imageset/refuseOrder_reason_unselected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/ReviewFailed/Contents.json b/OrderScheduling/Assets.xcassets/ReviewFailed/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/ReviewFailed/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_delete.imageset/Contents.json b/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_delete.imageset/Contents.json new file mode 100644 index 0000000..b15f8c2 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_delete.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "additionalPhotot_delete.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "additionalPhotot_delete@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "additionalPhotot_delete@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_delete.imageset/additionalPhotot_delete.png b/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_delete.imageset/additionalPhotot_delete.png new file mode 100644 index 0000000..0a6da5a Binary files /dev/null and b/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_delete.imageset/additionalPhotot_delete.png differ diff --git a/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_delete.imageset/additionalPhotot_delete@2x.png b/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_delete.imageset/additionalPhotot_delete@2x.png new file mode 100644 index 0000000..ac16fdc Binary files /dev/null and b/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_delete.imageset/additionalPhotot_delete@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_delete.imageset/additionalPhotot_delete@3x.png b/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_delete.imageset/additionalPhotot_delete@3x.png new file mode 100644 index 0000000..92931bd Binary files /dev/null and b/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_delete.imageset/additionalPhotot_delete@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_takePhoto.imageset/Contents.json b/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_takePhoto.imageset/Contents.json new file mode 100644 index 0000000..5b34e76 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_takePhoto.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "additionalPhotot_takePhoto.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "additionalPhotot_takePhoto@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "additionalPhotot_takePhoto@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_takePhoto.imageset/additionalPhotot_takePhoto.png b/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_takePhoto.imageset/additionalPhotot_takePhoto.png new file mode 100644 index 0000000..5e46cef Binary files /dev/null and b/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_takePhoto.imageset/additionalPhotot_takePhoto.png differ diff --git a/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_takePhoto.imageset/additionalPhotot_takePhoto@2x.png b/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_takePhoto.imageset/additionalPhotot_takePhoto@2x.png new file mode 100644 index 0000000..a57912b Binary files /dev/null and b/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_takePhoto.imageset/additionalPhotot_takePhoto@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_takePhoto.imageset/additionalPhotot_takePhoto@3x.png b/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_takePhoto.imageset/additionalPhotot_takePhoto@3x.png new file mode 100644 index 0000000..056d495 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/ReviewFailed/additionalPhotot_takePhoto.imageset/additionalPhotot_takePhoto@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/Contents.json b/OrderScheduling/Assets.xcassets/TabBar/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/TabBar/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_selected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_selected.imageset/Contents.json new file mode 100644 index 0000000..51b5e90 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_selected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "tabBar_cheliangjiankong_selected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tabBar_cheliangjiankong_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tabBar_cheliangjiankong_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_selected.imageset/tabBar_cheliangjiankong_selected.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_selected.imageset/tabBar_cheliangjiankong_selected.png new file mode 100644 index 0000000..92e436f Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_selected.imageset/tabBar_cheliangjiankong_selected.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_selected.imageset/tabBar_cheliangjiankong_selected@2x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_selected.imageset/tabBar_cheliangjiankong_selected@2x.png new file mode 100644 index 0000000..4d968d3 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_selected.imageset/tabBar_cheliangjiankong_selected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_selected.imageset/tabBar_cheliangjiankong_selected@3x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_selected.imageset/tabBar_cheliangjiankong_selected@3x.png new file mode 100644 index 0000000..8d78e6c Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_selected.imageset/tabBar_cheliangjiankong_selected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_unselected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_unselected.imageset/Contents.json new file mode 100644 index 0000000..b751ba5 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_unselected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "tabBar_cheliangjiankong_unselected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tabBar_cheliangjiankong_unselected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tabBar_cheliangjiankong_unselected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_unselected.imageset/tabBar_cheliangjiankong_unselected.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_unselected.imageset/tabBar_cheliangjiankong_unselected.png new file mode 100644 index 0000000..303bfd8 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_unselected.imageset/tabBar_cheliangjiankong_unselected.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_unselected.imageset/tabBar_cheliangjiankong_unselected@2x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_unselected.imageset/tabBar_cheliangjiankong_unselected@2x.png new file mode 100644 index 0000000..5b65c5c Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_unselected.imageset/tabBar_cheliangjiankong_unselected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_unselected.imageset/tabBar_cheliangjiankong_unselected@3x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_unselected.imageset/tabBar_cheliangjiankong_unselected@3x.png new file mode 100644 index 0000000..b412523 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_cheliangjiankong_unselected.imageset/tabBar_cheliangjiankong_unselected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_selected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_selected.imageset/Contents.json new file mode 100644 index 0000000..7e8619b --- /dev/null +++ b/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_selected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "tabBar_jiuyuanzhong_selected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tabBar_jiuyuanzhong_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tabBar_jiuyuanzhong_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_selected.imageset/tabBar_jiuyuanzhong_selected.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_selected.imageset/tabBar_jiuyuanzhong_selected.png new file mode 100644 index 0000000..91427fe Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_selected.imageset/tabBar_jiuyuanzhong_selected.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_selected.imageset/tabBar_jiuyuanzhong_selected@2x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_selected.imageset/tabBar_jiuyuanzhong_selected@2x.png new file mode 100644 index 0000000..9f71577 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_selected.imageset/tabBar_jiuyuanzhong_selected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_selected.imageset/tabBar_jiuyuanzhong_selected@3x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_selected.imageset/tabBar_jiuyuanzhong_selected@3x.png new file mode 100644 index 0000000..3904674 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_selected.imageset/tabBar_jiuyuanzhong_selected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_unselected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_unselected.imageset/Contents.json new file mode 100644 index 0000000..f05e055 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_unselected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "tabBar_jiuyuanzhong_unselected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tabBar_jiuyuanzhong_unselected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tabBar_jiuyuanzhong_unselected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_unselected.imageset/tabBar_jiuyuanzhong_unselected.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_unselected.imageset/tabBar_jiuyuanzhong_unselected.png new file mode 100644 index 0000000..d5db157 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_unselected.imageset/tabBar_jiuyuanzhong_unselected.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_unselected.imageset/tabBar_jiuyuanzhong_unselected@2x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_unselected.imageset/tabBar_jiuyuanzhong_unselected@2x.png new file mode 100644 index 0000000..a405cbd Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_unselected.imageset/tabBar_jiuyuanzhong_unselected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_unselected.imageset/tabBar_jiuyuanzhong_unselected@3x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_unselected.imageset/tabBar_jiuyuanzhong_unselected@3x.png new file mode 100644 index 0000000..29ab024 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_jiuyuanzhong_unselected.imageset/tabBar_jiuyuanzhong_unselected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_selected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_selected.imageset/Contents.json new file mode 100644 index 0000000..9161aa2 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_selected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "tabBar_lishi_selected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tabBar_lishi_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tabBar_lishi_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_selected.imageset/tabBar_lishi_selected.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_selected.imageset/tabBar_lishi_selected.png new file mode 100644 index 0000000..4d07197 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_selected.imageset/tabBar_lishi_selected.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_selected.imageset/tabBar_lishi_selected@2x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_selected.imageset/tabBar_lishi_selected@2x.png new file mode 100644 index 0000000..42f66cd Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_selected.imageset/tabBar_lishi_selected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_selected.imageset/tabBar_lishi_selected@3x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_selected.imageset/tabBar_lishi_selected@3x.png new file mode 100644 index 0000000..f3de621 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_selected.imageset/tabBar_lishi_selected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_unselected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_unselected.imageset/Contents.json new file mode 100644 index 0000000..2aa73af --- /dev/null +++ b/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_unselected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "tabBar_lishi_unselected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tabBar_lishi_unselected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tabBar_lishi_unselected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_unselected.imageset/tabBar_lishi_unselected.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_unselected.imageset/tabBar_lishi_unselected.png new file mode 100644 index 0000000..5a2058a Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_unselected.imageset/tabBar_lishi_unselected.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_unselected.imageset/tabBar_lishi_unselected@2x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_unselected.imageset/tabBar_lishi_unselected@2x.png new file mode 100644 index 0000000..66deaec Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_unselected.imageset/tabBar_lishi_unselected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_unselected.imageset/tabBar_lishi_unselected@3x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_unselected.imageset/tabBar_lishi_unselected@3x.png new file mode 100644 index 0000000..8ca04c5 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_lishi_unselected.imageset/tabBar_lishi_unselected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_selected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_selected.imageset/Contents.json new file mode 100644 index 0000000..144b1b6 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_selected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "tabBar_shenhe_selected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tabBar_shenhe_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tabBar_shenhe_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_selected.imageset/tabBar_shenhe_selected.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_selected.imageset/tabBar_shenhe_selected.png new file mode 100644 index 0000000..589a1f9 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_selected.imageset/tabBar_shenhe_selected.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_selected.imageset/tabBar_shenhe_selected@2x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_selected.imageset/tabBar_shenhe_selected@2x.png new file mode 100644 index 0000000..2a37801 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_selected.imageset/tabBar_shenhe_selected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_selected.imageset/tabBar_shenhe_selected@3x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_selected.imageset/tabBar_shenhe_selected@3x.png new file mode 100644 index 0000000..7ce32b8 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_selected.imageset/tabBar_shenhe_selected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_unselected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_unselected.imageset/Contents.json new file mode 100644 index 0000000..c1062a0 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_unselected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "tabBar_shenhe_unselected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tabBar_shenhe_unselected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tabBar_shenhe_unselected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_unselected.imageset/tabBar_shenhe_unselected.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_unselected.imageset/tabBar_shenhe_unselected.png new file mode 100644 index 0000000..ab1ff61 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_unselected.imageset/tabBar_shenhe_unselected.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_unselected.imageset/tabBar_shenhe_unselected@2x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_unselected.imageset/tabBar_shenhe_unselected@2x.png new file mode 100644 index 0000000..b82218a Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_unselected.imageset/tabBar_shenhe_unselected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_unselected.imageset/tabBar_shenhe_unselected@3x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_unselected.imageset/tabBar_shenhe_unselected@3x.png new file mode 100644 index 0000000..eb41379 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_shenhe_unselected.imageset/tabBar_shenhe_unselected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_selected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_selected.imageset/Contents.json new file mode 100644 index 0000000..4ca3c71 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_selected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "tabBar_wode_selected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tabBar_wode_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tabBar_wode_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_selected.imageset/tabBar_wode_selected.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_selected.imageset/tabBar_wode_selected.png new file mode 100644 index 0000000..ceeb976 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_selected.imageset/tabBar_wode_selected.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_selected.imageset/tabBar_wode_selected@2x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_selected.imageset/tabBar_wode_selected@2x.png new file mode 100644 index 0000000..de218e7 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_selected.imageset/tabBar_wode_selected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_selected.imageset/tabBar_wode_selected@3x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_selected.imageset/tabBar_wode_selected@3x.png new file mode 100644 index 0000000..f2b55b8 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_selected.imageset/tabBar_wode_selected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_unselected.imageset/Contents.json b/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_unselected.imageset/Contents.json new file mode 100644 index 0000000..fc69be0 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_unselected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "tabBar_wode_unselected.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tabBar_wode_unselected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tabBar_wode_unselected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_unselected.imageset/tabBar_wode_unselected.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_unselected.imageset/tabBar_wode_unselected.png new file mode 100644 index 0000000..ed3cd71 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_unselected.imageset/tabBar_wode_unselected.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_unselected.imageset/tabBar_wode_unselected@2x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_unselected.imageset/tabBar_wode_unselected@2x.png new file mode 100644 index 0000000..6c70b7f Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_unselected.imageset/tabBar_wode_unselected@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_unselected.imageset/tabBar_wode_unselected@3x.png b/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_unselected.imageset/tabBar_wode_unselected@3x.png new file mode 100644 index 0000000..5b2aed8 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/TabBar/tabBar_wode_unselected.imageset/tabBar_wode_unselected@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/mine_info_arrow.imageset/Contents.json b/OrderScheduling/Assets.xcassets/mine_info_arrow.imageset/Contents.json new file mode 100644 index 0000000..79c45f5 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/mine_info_arrow.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "mine_info_arrow.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_info_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_info_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/mine_info_arrow.imageset/mine_info_arrow.png b/OrderScheduling/Assets.xcassets/mine_info_arrow.imageset/mine_info_arrow.png new file mode 100644 index 0000000..670a049 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/mine_info_arrow.imageset/mine_info_arrow.png differ diff --git a/OrderScheduling/Assets.xcassets/mine_info_arrow.imageset/mine_info_arrow@2x.png b/OrderScheduling/Assets.xcassets/mine_info_arrow.imageset/mine_info_arrow@2x.png new file mode 100644 index 0000000..822d763 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/mine_info_arrow.imageset/mine_info_arrow@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/mine_info_arrow.imageset/mine_info_arrow@3x.png b/OrderScheduling/Assets.xcassets/mine_info_arrow.imageset/mine_info_arrow@3x.png new file mode 100644 index 0000000..6ceb7e3 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/mine_info_arrow.imageset/mine_info_arrow@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/mine_info_car.imageset/Contents.json b/OrderScheduling/Assets.xcassets/mine_info_car.imageset/Contents.json new file mode 100644 index 0000000..7349a73 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/mine_info_car.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "mine_info_car.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_info_car@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_info_car@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/mine_info_car.imageset/mine_info_car.png b/OrderScheduling/Assets.xcassets/mine_info_car.imageset/mine_info_car.png new file mode 100644 index 0000000..818cc2e Binary files /dev/null and b/OrderScheduling/Assets.xcassets/mine_info_car.imageset/mine_info_car.png differ diff --git a/OrderScheduling/Assets.xcassets/mine_info_car.imageset/mine_info_car@2x.png b/OrderScheduling/Assets.xcassets/mine_info_car.imageset/mine_info_car@2x.png new file mode 100644 index 0000000..8575a21 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/mine_info_car.imageset/mine_info_car@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/mine_info_car.imageset/mine_info_car@3x.png b/OrderScheduling/Assets.xcassets/mine_info_car.imageset/mine_info_car@3x.png new file mode 100644 index 0000000..0671c3d Binary files /dev/null and b/OrderScheduling/Assets.xcassets/mine_info_car.imageset/mine_info_car@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/mine_info_driver.imageset/Contents.json b/OrderScheduling/Assets.xcassets/mine_info_driver.imageset/Contents.json new file mode 100644 index 0000000..f99f62f --- /dev/null +++ b/OrderScheduling/Assets.xcassets/mine_info_driver.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "mine_info_driver.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_info_driver@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_info_driver@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/mine_info_driver.imageset/mine_info_driver.png b/OrderScheduling/Assets.xcassets/mine_info_driver.imageset/mine_info_driver.png new file mode 100644 index 0000000..da0743e Binary files /dev/null and b/OrderScheduling/Assets.xcassets/mine_info_driver.imageset/mine_info_driver.png differ diff --git a/OrderScheduling/Assets.xcassets/mine_info_driver.imageset/mine_info_driver@2x.png b/OrderScheduling/Assets.xcassets/mine_info_driver.imageset/mine_info_driver@2x.png new file mode 100644 index 0000000..0cc120c Binary files /dev/null and b/OrderScheduling/Assets.xcassets/mine_info_driver.imageset/mine_info_driver@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/mine_info_driver.imageset/mine_info_driver@3x.png b/OrderScheduling/Assets.xcassets/mine_info_driver.imageset/mine_info_driver@3x.png new file mode 100644 index 0000000..eaeb37e Binary files /dev/null and b/OrderScheduling/Assets.xcassets/mine_info_driver.imageset/mine_info_driver@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/mine_info_separate.imageset/Contents.json b/OrderScheduling/Assets.xcassets/mine_info_separate.imageset/Contents.json new file mode 100644 index 0000000..84cd826 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/mine_info_separate.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "mine_info_separate.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_info_separate@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_info_separate@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/mine_info_separate.imageset/mine_info_separate.png b/OrderScheduling/Assets.xcassets/mine_info_separate.imageset/mine_info_separate.png new file mode 100644 index 0000000..04975ba Binary files /dev/null and b/OrderScheduling/Assets.xcassets/mine_info_separate.imageset/mine_info_separate.png differ diff --git a/OrderScheduling/Assets.xcassets/mine_info_separate.imageset/mine_info_separate@2x.png b/OrderScheduling/Assets.xcassets/mine_info_separate.imageset/mine_info_separate@2x.png new file mode 100644 index 0000000..dda2016 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/mine_info_separate.imageset/mine_info_separate@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/mine_info_separate.imageset/mine_info_separate@3x.png b/OrderScheduling/Assets.xcassets/mine_info_separate.imageset/mine_info_separate@3x.png new file mode 100644 index 0000000..c48b551 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/mine_info_separate.imageset/mine_info_separate@3x.png differ diff --git a/OrderScheduling/Base.lproj/LaunchScreen.storyboard b/OrderScheduling/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/OrderScheduling/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OrderScheduling/Common/.DS_Store b/OrderScheduling/Common/.DS_Store new file mode 100644 index 0000000..993d6b4 Binary files /dev/null and b/OrderScheduling/Common/.DS_Store differ diff --git a/OrderScheduling/Common/Controller/WebViewController.swift b/OrderScheduling/Common/Controller/WebViewController.swift new file mode 100644 index 0000000..123d41a --- /dev/null +++ b/OrderScheduling/Common/Controller/WebViewController.swift @@ -0,0 +1,62 @@ +// +// WebViewController.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/7. +// + +import Foundation +import WebKit +import SnapKit +import DDLogKit_Private +import DDToastKit_Private +import DDControlsKit_Private + +class WebViewController : DDViewController { + lazy var webView = WKWebView.init() + var vcTitle : String + var url : String? + + public init(title:String,url:String) { + self.vcTitle = title + self.url = url + super.init(nibName: nil, bundle: nil) + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + open override func viewDidLoad() { + super.viewDidLoad() + title = vcTitle + dd_navigationBarBackgroundColor = .hex("354683") + dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(17)] + + webView.navigationDelegate = self + webView.uiDelegate = self + view.addSubview(webView) + + let request = URLRequest(url: URL(string: url!)!) + webView.load(request) + + webView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + } +} + +extension WebViewController : WKNavigationDelegate,WKUIDelegate { + public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { + DDLog(message: "finish--------------------------------") + } + public func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) { + DDLog(message: "didFail--------------------------------") + view.dd_makeToast(webViewLoadFailed) {[weak self] _ in + self?.navigationController?.popViewController(animated: true) + } + } + public func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) { + DDLog(message: "didFailProvisionalNavigation--------------------------------") + } +} diff --git a/OrderScheduling/Common/MessageCount/MessageCount.swift b/OrderScheduling/Common/MessageCount/MessageCount.swift new file mode 100644 index 0000000..d48a5f9 --- /dev/null +++ b/OrderScheduling/Common/MessageCount/MessageCount.swift @@ -0,0 +1,46 @@ +// +// MessageCount.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/18. +// + +import Foundation +import RxRelay +import RxSwift + +public let MCOUNT = MessageCount.default + +open class MessageCount : NSObject { + public static let `default` = MessageCount() + private let disposeBag = DisposeBag() + private let reloadToDoMessageCountRelay = ReplayRelay.create(bufferSize: 1) + public var messageCountRelay = ReplayRelay.create(bufferSize: 1) + public var pendingCountRelay = ReplayRelay.create(bufferSize: 1) + + public override init() { + super.init() + NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: Notification_reloadRescusControolerToDoMessageCount), object: nil, queue: .main) {[weak self] note in + self?.reloadToDoMessageCountRelay.accept(nil) + } + + reloadToDoMessageCountRelay + .flatMapLatest { _ in + return RQ.toDoMessageCount() + } + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] response in + if response?.success == true { + if let messageCount = response?.data?.messageCount { + self?.messageCountRelay.accept(messageCount) + } + if let toDoCount = response?.data?.toDoCount { + self?.pendingCountRelay.accept(toDoCount) + } + }else{ + + } + }) + .disposed(by: disposeBag) + } +} diff --git a/OrderScheduling/Common/View/MessageView.swift b/OrderScheduling/Common/View/MessageView.swift new file mode 100644 index 0000000..1623cd3 --- /dev/null +++ b/OrderScheduling/Common/View/MessageView.swift @@ -0,0 +1,47 @@ +// +// MessageView.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/18. +// + +import Foundation +import DDControlsKit_Private +import DDAutoUIKit_Private +import DDColorKit_Private +import SnapKit + +class MessageView : DDView { + public let titleLabel : DDLabel + public let countLabel : DDLabel + override init(frame: CGRect) { + titleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(14)), textColor: .white.alpha(0.7)) + countLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .white) + super.init(frame: frame) + + titleLabel.textAlignment = .center + addSubview(titleLabel) + countLabel.layer.cornerRadius = 10 + countLabel.layer.masksToBounds = true + countLabel.textAlignment = .center + countLabel.backgroundColor = .red + countLabel.text = "99" + addSubview(countLabel) + + titleLabel.snp.makeConstraints { make in + make.left.top.bottom.equalToSuperview() + make.width.greaterThanOrEqualTo(30) + } + countLabel.snp.makeConstraints { make in + make.left.equalTo(titleLabel.snp.right) + make.centerY.equalToSuperview() + make.width.equalTo(0) + make.height.equalTo(20) + make.right.equalToSuperview() + } + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/OrderScheduling/Entry/Entry.swift b/OrderScheduling/Entry/Entry.swift new file mode 100644 index 0000000..e262858 --- /dev/null +++ b/OrderScheduling/Entry/Entry.swift @@ -0,0 +1,71 @@ +// +// Entry.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/9. +// + +import Foundation +import SwiftEntryKit +import DDAutoUIKit_Private + +public let ENTRY = Entry.default + +open class Entry { + public static let `default` = Entry() + + public func showRefuseOrderEntry(view:UIView,name:String? = nil){ + var attributes = EKAttributes() + attributes = .centerFloat + attributes.name = name + attributes.precedence = .override(priority: .normal, dropEnqueuedEntries: false) + attributes.displayMode = .inferred + attributes.displayDuration = .infinity + attributes.screenBackground = .color(color: .clear) + attributes.entryBackground = .color(color: .white) + attributes.screenInteraction = .absorbTouches + attributes.entryInteraction = .absorbTouches + attributes.scroll = .disabled + attributes.entranceAnimation = .init( + translate: .init( + duration: 0.25, + spring: .init(damping: 1, initialVelocity: 0) + ) + ) + attributes.exitAnimation = .init( + translate: .init(duration: 0.25) + ) + attributes.popBehavior = .animated( + animation: .init( + translate: .init(duration: 0.25) + ) + ) + attributes.shadow = .active( + with: .init( + color: .black, + opacity: 0.3, + radius: 6 + ) + ) + attributes.positionConstraints.size = .init( + width: .constant(value: auto(326)), + height: .constant(value: auto(285)) + ) + attributes.positionConstraints.verticalOffset = 0 + attributes.positionConstraints.safeArea = .overridden + attributes.statusBar = .light + SwiftEntryKit.display(entry: view, using: attributes) + } + + public func isCurrentlyDisplaying(entryNamed name: String? = nil) -> Bool { + return SwiftEntryKit.isCurrentlyDisplaying(entryNamed: name) + } + + public func dismiss(name:String? = nil,completion:(() -> Void)? = nil) { + if let name { + SwiftEntryKit.dismiss(.specific(entryName: name),with: completion) + }else{ + SwiftEntryKit.dismiss(with: completion) + } + } +} diff --git a/OrderScheduling/Global/.DS_Store b/OrderScheduling/Global/.DS_Store new file mode 100644 index 0000000..dac1171 Binary files /dev/null and b/OrderScheduling/Global/.DS_Store differ diff --git a/OrderScheduling/Global/Tool/Tool.swift b/OrderScheduling/Global/Tool/Tool.swift new file mode 100644 index 0000000..730478c --- /dev/null +++ b/OrderScheduling/Global/Tool/Tool.swift @@ -0,0 +1,84 @@ +// +// Tool.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/10. +// + +import Foundation +import UIKit +import AVFoundation + +public let TOOL = Tool.default + +open class Tool { + public static let `default` = Tool() + func getDuration(url:URL) -> CMTime { + let urlAsset = AVURLAsset(url: url) + var duration : CMTime = CMTime.zero +// if #available(iOS 16.0, *) { +// do { +// duration = try await urlAsset.load(.duration) +// }catch{ +// } +// }else{ + duration = urlAsset.duration +// } + return duration + } + + public func getVideoDateString(duration:Int) -> String { + let min = duration / 60 + var minStr = "" + if min > 9 { + minStr = String(min) + }else { + minStr = "0"+String(min) + } + + let sec = duration % 60 + var secStr = "" + if sec > 9 { + secStr = String(sec) + }else{ + secStr = "0"+String(sec) + } + + return minStr+":"+secStr + } + + public func call(phone:String) { + guard let url = URL(string: "tel:\(phone)") else { + return + } + + if #available(iOS 10.0, *) { + UIApplication.shared.open(url, options: [:],completionHandler: nil) + } else { + UIApplication.shared.openURL(url) + } + } + + public func getDateStringCompareWithNow(dateFormat:String,dateString:String) -> String { + let format = DateFormatter() + format.dateFormat = dateFormat + let date = format.date(from: dateString) ?? Date() + let dateNow = Date() + let dateNowString = format.string(from: dateNow) + let dateYMD = dateString.components(separatedBy: " ").first + let dateNowYMD = dateNowString.components(separatedBy: " ").first + if dateYMD == dateNowYMD { + let diffInterval = dateNow.timeIntervalSince1970 - date.timeIntervalSince1970 + var combineString : String + if diffInterval >= 3600 { + combineString = String(Int(diffInterval / 3600))+"小时前" + }else if diffInterval >= 60 { + combineString = String(Int(diffInterval / 60))+"分钟前" + }else{ + combineString = String(Int(diffInterval))+"秒前" + } + return combineString + } + return dateString + } +} diff --git a/OrderScheduling/Global/User/UserData.swift b/OrderScheduling/Global/User/UserData.swift new file mode 100644 index 0000000..1349808 --- /dev/null +++ b/OrderScheduling/Global/User/UserData.swift @@ -0,0 +1,36 @@ +// +// UserData.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/7. +// + +import Foundation + +public let USER = UserData.default + +open class UserData { + public static let `default` = UserData() + + public var token : String? { + return UserDefaults.standard.object(forKey: token_key) as? String + } + + func setToken(token:String?) { + UserDefaults.standard.set(token, forKey: token_key) + } + + public var supplierType : Int? { + return UserDefaults.standard.object(forKey: supplierType_key) as? Int + } + + func setSupplierType(supplierType:Int?) { + UserDefaults.standard.set(supplierType, forKey: supplierType_key) + } + + func clear() { + setToken(token: nil) + setSupplierType(supplierType: nil) + + } +} diff --git a/OrderScheduling/History/.DS_Store b/OrderScheduling/History/.DS_Store new file mode 100644 index 0000000..6cddc85 Binary files /dev/null and b/OrderScheduling/History/.DS_Store differ diff --git a/OrderScheduling/History/ViewController/HistoryController.swift b/OrderScheduling/History/ViewController/HistoryController.swift new file mode 100644 index 0000000..ec0e07a --- /dev/null +++ b/OrderScheduling/History/ViewController/HistoryController.swift @@ -0,0 +1,517 @@ +// +// HistoryController.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/18. +// + +import Foundation +import DDAutoUIKit_Private +import DDControlsKit_Private +import RxSwift +import RxRelay +import RxCocoa +import JXCategoryView +import DDToastKit_Private +import MJRefresh + +extension HistoryController { + func addActions() { + MCOUNT.messageCountRelay + .subscribe(onNext: {[weak self] count in + if count > 0 { + self?.messageView.countLabel.isHidden = false + self?.messageView.countLabel.text = String(count) + self?.messageView.countLabel.snp.updateConstraints({ make in + make.width.equalTo(20) + }) + }else{ + self?.messageView.countLabel.isHidden = true + self?.messageView.countLabel.snp.updateConstraints({ make in + make.width.equalTo(0) + }) + } + }) + .disposed(by: disposeBag) + + MCOUNT.pendingCountRelay + .subscribe(onNext: {[weak self] count in + if count > 0 { + self?.pendingView.countLabel.isHidden = false + self?.pendingView.countLabel.text = String(count) + self?.pendingView.countLabel.snp.updateConstraints({ make in + make.width.equalTo(20) + }) + }else{ + self?.pendingView.countLabel.isHidden = true + self?.pendingView.countLabel.snp.updateConstraints({ make in + make.width.equalTo(0) + }) + } + }) + .disposed(by: disposeBag) + + NotificationCenter.default.post(name: NSNotification.Name(rawValue: Notification_reloadRescusControolerToDoMessageCount), object: nil) + } +} + + +extension HistoryItemController { + func addActions() { + historyItemView.tableView.mj_header = MJRefreshNormalHeader(refreshingBlock: {[weak self] in + self?.pageNum = 1 + self?.refreshRelay.accept(self?.pageNum ?? 1) + }) + + historyItemView.tableView.mj_footer = MJRefreshBackNormalFooter(refreshingBlock: {[weak self] in + self?.pageNum+=1 + self?.refreshRelay.accept(self?.pageNum ?? 1) + }) + + refreshRelay + .flatMapLatest {[weak self] pageNum in + return Observable.zip(RQ.orderList(parameters: OrderListParameters(pageNum: pageNum, queryType: (self?.type)!)).asObservable(), Observable.just(pageNum)) + } + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] (response, pageNum) in + if response?.success == true { + if pageNum == 1 { + if response?.data?.isEmpty == false { + self?.resultArr.removeAll() + self?.historyItemView.tableView.mj_footer?.resetNoMoreData() + } + self?.historyItemView.tableView.mj_header?.endRefreshing() + }else{ + if response?.data?.isEmpty == false { + self?.historyItemView.tableView.mj_footer?.endRefreshing() + }else{ + self?.historyItemView.tableView.mj_footer?.endRefreshingWithNoMoreData() + } + } + + if let array = response?.data { + self?.resultArr.append(contentsOf: array) + self?.historyItemView.tableView.reloadData() + } + }else{ + if pageNum == 1 { + self?.historyItemView.tableView.mj_header?.endRefreshing() + }else{ + self?.historyItemView.tableView.mj_footer?.endRefreshing() + } + self?.view.dd_makeToast(response?.msg) + } + }) + .disposed(by: disposeBag) + + historyItemView.tableView.mj_header?.beginRefreshing() + } +} + +extension HistoryItemController : UITableViewDelegate, UITableViewDataSource { + func numberOfSections(in tableView: UITableView) -> Int { + return 1 + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return resultArr.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + var cell = tableView.dequeueReusableCell(withIdentifier: "cell") as? HistoryItemCell + if cell == nil { + cell = HistoryItemCell(style: .default, reuseIdentifier: "cell") + cell?.line.backgroundColor = .hex("E9E9EA").alpha(0.6) + cell?.orderDateTitleLabel.text = "工单时间:" + cell?.serviceTitleLabel.text = "故障地:" + cell?.reportButton.setTitle("报备", for: .normal) + cell?.additionalButton.setTitle("补结算单", for: .normal) + } + let model = resultArr[indexPath.row] + + cell?.typeLabel.text = model.taskServiceName + cell?.orderNumLabel.text = model.orderCode + cell?.orderStatusLabel.text = model.taskOrderStatusString + cell?.orderDateLabel.text = model.createTime + + cell?.serviceLabel.text = model.vehiclePointAddress + if model.destinationAddress?.isEmpty == false { + cell?.destinationTitleLabel.text = "目的地:" + cell?.destinationLabel.text = model.destinationAddress + cell?.destinationTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.serviceLabel.snp.bottom).offset(auto(8)) + }) + }else{ + cell?.destinationTitleLabel.text = nil + cell?.destinationLabel.text = nil + cell?.destinationTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.serviceLabel.snp.bottom).offset(0) + }) + } + + if model.isSupplierSettle?.label.isEmpty == false { + cell?.settlementLabel.text = model.isSupplierSettle?.label + cell?.settlementTitleLabel.text = "是否结算:" + cell?.settlementTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.destinationLabel.snp.bottom).offset(auto(8)) + }) + }else{ + cell?.settlementLabel.text = nil + cell?.settlementTitleLabel.text = nil + cell?.settlementTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.destinationLabel.snp.bottom).offset(0) + }) + } + + if model.supplierSettleRatio?.label.isEmpty == false { + cell?.settlementRatioLabel.text = model.supplierSettleRatio?.label + cell?.settlementRatioTitleLabel.text = "结算比例:" + cell?.settlementRatioTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.settlementLabel.snp.bottom).offset(auto(8)) + }) + }else{ + cell?.settlementRatioLabel.text = nil + cell?.settlementRatioTitleLabel.text = nil + cell?.settlementRatioTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.settlementLabel.snp.bottom).offset(0) + }) + } + + + return cell! + } +} + +// MARK: JXCategoryViewDelegate,JXCategoryListContainerViewDelegate +extension HistoryController : JXCategoryViewDelegate,JXCategoryListContainerViewDelegate { + public func number(ofListsInlistContainerView listContainerView: JXCategoryListContainerView!) -> Int { + return categoryView.titles.count + } + + public func listContainerView(_ listContainerView: JXCategoryListContainerView!, initListFor index: Int) -> JXCategoryListContentViewDelegate! { + if index == 0 { + return HistoryItemController(type: .UNCLOSED_ORDER) + } + if index == 1 { + return HistoryItemController(type: .WITHIN_30_DAYS) + } + return HistoryItemController(type: .WITHIN_3_MONTHS) + } +} + +open class HistoryController : DDViewController { + private let categoryView = JXCategoryTitleView() + private lazy var categoryContainerView = JXCategoryListContainerView(type: .scrollView, delegate: self) + private let reloadToDoMessageCountRelay = ReplayRelay.create(bufferSize: 1) + private let disposeBag = DisposeBag() + private let messageTapGes = UITapGestureRecognizer() + private let messageView = MessageView() + private let pendingTapGes = UITapGestureRecognizer() + private let pendingView = MessageView() + + public override func viewDidLoad() { + super.viewDidLoad() + dd_navigationBarBackgroundColor = .hex("354683") + dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(auto(15))] + dd_navigationItemTitle = "救援工单" + navigationItem.leftBarButtonItems = nil + addSubviews() + addActions() + } + + func addSubviews() { + categoryView.titles = ["未关闭工单","30天内工单","3个月内工单"] + categoryView.titleColor = .hex("737373").alpha(0.55) + categoryView.titleSelectedColor = .hex("3678FF") + categoryView.backgroundColor = .hex("F4F5F7") + categoryView.delegate = self + view.addSubview(categoryView) + categoryView.snp.makeConstraints { make in + make.left.right.equalToSuperview() + make.top.equalTo(CGRectGetMaxY(navigationController?.navigationBar.frame ?? CGRectZero) + CGRectGetHeight(UIApplication.shared.dd_statusBarFrame)) + make.height.equalTo(auto(44)) + } + // 指示器 + let indicator = JXCategoryIndicatorLineView() + indicator.indicatorColor = .hex("3678FF") + indicator.indicatorWidth = JXCategoryViewAutomaticDimension + indicator.verticalMargin = 7 + categoryView.indicators = [indicator] + + // 内容 + view.addSubview(categoryContainerView!) + categoryView.listContainer = categoryContainerView + categoryContainerView?.snp.makeConstraints({ make in + make.top.equalTo(categoryView.snp.bottom) + make.left.right.equalToSuperview() + make.bottom.equalTo(-(view.safeAreaInsets.bottom+CGRectGetHeight(tabBarController?.tabBar.frame ?? CGRectZero))) + }) + + messageView.titleLabel.text = "消息" + messageView.addGestureRecognizer(messageTapGes) + navigationItem.leftBarButtonItem = UIBarButtonItem(customView: messageView) + messageView.snp.makeConstraints { make in + make.height.equalTo(40) + make.width.greaterThanOrEqualTo(40) + } + + pendingView.titleLabel.text = "待办" + pendingView.addGestureRecognizer(pendingTapGes) + navigationItem.rightBarButtonItem = UIBarButtonItem(customView: pendingView) + pendingView.snp.makeConstraints { make in + make.height.equalTo(40) + make.width.greaterThanOrEqualTo(40) + } + } +} + +class HistoryItemController : DDViewController { + private let disposeBag = DisposeBag() + private let historyItemView = HistoryItemView() + private var resultArr : [OrderListDataModel] = [] + private var environmentPics : [String] = [] + private var refreshRelay = ReplayRelay.create(bufferSize: 1) + private var pageNum : Int = 1 + private var type : OrderTypeEnum + public init(type:OrderTypeEnum) { + self.type = type + super.init(nibName: nil, bundle: nil) + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func viewDidLoad() { + super.viewDidLoad() + dd_navigationBarBackgroundColor = .hex("354683") + dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(17)] + addSubviews() + addActions() + } + + func addSubviews() { + view.addSubview(historyItemView) + historyItemView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + historyItemView.tableView.delegate = self + historyItemView.tableView.dataSource = self + } +} + +class HistoryItemCell : DDTableViewCell { + public let radiusView : DDView + public let typeLabel : DDLabel + public let orderNumLabel : DDLabel + public let orderStatusLabel : DDLabel + public let line : DDView + public let orderDateTitleLabel : DDLabel + public let orderDateLabel : DDLabel + public let serviceTitleLabel : DDLabel + public let serviceLabel : DDLabel + public let destinationTitleLabel : DDLabel + public let destinationLabel : DDLabel + public let settlementTitleLabel : DDLabel + public let settlementLabel : DDLabel + public let settlementRatioTitleLabel : DDLabel + public let settlementRatioLabel : DDLabel + public let additionalButton : DDButton + public let reportButton : DDButton + public var disposeBag : DisposeBag + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + radiusView = DDView.init() + typeLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("000000").alpha(0.85)) + orderNumLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(11)), textColor: .hex("000000").alpha(0.55)) + orderStatusLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("E69B0B")) + line = DDView.init() + orderDateTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + orderDateLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("252525")) + serviceTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + serviceLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000")) + destinationTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + destinationLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000")) + settlementTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + settlementLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000")) + settlementRatioTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + settlementRatioLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000")) + additionalButton = DDButton.dd_initCustom() + additionalButton.titleLabel?.font = .mediumFont(13) + additionalButton.setTitleColor(.hex("000000").alpha(0.7), for: .normal) + reportButton = DDButton.dd_initCustom() + reportButton.titleLabel?.font = .mediumFont(13) + reportButton.setTitleColor(.hex("FFFFFF"), for: .normal) + disposeBag = DisposeBag() + super.init(style: style, reuseIdentifier: reuseIdentifier) + + contentView.backgroundColor = .hex("F4F5F7") + radiusView.layer.cornerRadius = auto(6) + radiusView.layer.shadowColor = UIColor.black(alpha: 0.1).cgColor + radiusView.layer.shadowOpacity = 1.0 + radiusView.layer.shadowRadius = 3 + radiusView.layer.shadowOffset = CGSize(width: 0, height: 3) + radiusView.backgroundColor = .white + contentView.addSubview(radiusView) + radiusView.addSubview(typeLabel) + radiusView.addSubview(orderNumLabel) + radiusView.addSubview(orderStatusLabel) + radiusView.addSubview(line) + radiusView.addSubview(orderDateTitleLabel) + radiusView.addSubview(orderDateLabel) + radiusView.addSubview(serviceTitleLabel) + serviceLabel.numberOfLines = 0 + radiusView.addSubview(serviceLabel) + radiusView.addSubview(destinationTitleLabel) + destinationLabel.numberOfLines = 0 + radiusView.addSubview(destinationLabel) + radiusView.addSubview(settlementTitleLabel) + radiusView.addSubview(settlementLabel) + radiusView.addSubview(settlementRatioTitleLabel) + radiusView.addSubview(settlementRatioLabel) + additionalButton.layer.borderColor = UIColor.hex("DDDDDD").cgColor + additionalButton.layer.borderWidth = 1 + additionalButton.layer.cornerRadius = auto(4) + radiusView.addSubview(additionalButton) + reportButton.layer.cornerRadius = auto(4) + reportButton.layer.masksToBounds = true + reportButton.backgroundColor = .hex("2A5094") + radiusView.addSubview(reportButton) + + radiusView.snp.makeConstraints { make in + make.left.equalTo(auto(12)) + make.right.equalTo(-auto(12)) + make.top.equalTo(0) + make.bottom.equalTo(-auto(12)) + } + typeLabel.snp.makeConstraints { make in + make.left.equalTo(auto(18)) + make.top.equalTo(auto(13)) + } + + orderNumLabel.snp.makeConstraints { make in + make.centerY.equalTo(typeLabel) + make.left.equalTo(typeLabel.snp.right).offset(auto(10)) + } + + orderStatusLabel.snp.makeConstraints { make in + make.right.equalTo(-auto(20)) + make.centerY.equalTo(orderNumLabel) + } + + line.snp.makeConstraints { make in + make.top.equalTo(typeLabel.snp.bottom).offset(auto(7)) + make.left.right.equalTo(0) + make.height.equalTo(0.5) + } + + orderDateTitleLabel.snp.makeConstraints { make in + make.left.equalTo(typeLabel) + make.top.equalTo(line.snp.top).offset(auto(5)) + make.width.equalTo(auto(60)) + } + + orderDateLabel.snp.makeConstraints { make in + make.left.equalTo(orderDateTitleLabel.snp.right).offset(auto(10)) + make.top.equalTo(orderDateTitleLabel) + } + + serviceTitleLabel.snp.makeConstraints { make in + make.top.equalTo(orderDateLabel.snp.bottom).offset(auto(8)) + make.left.equalTo(typeLabel) + make.width.equalTo(orderDateTitleLabel) + } + + serviceLabel.snp.makeConstraints { make in + make.top.equalTo(serviceTitleLabel) + make.left.equalTo(serviceTitleLabel.snp.right) + make.right.equalTo(-auto(20)) + } + + destinationTitleLabel.snp.makeConstraints { make in + make.top.equalTo(serviceLabel.snp.bottom).offset(auto(8)) + make.left.equalTo(typeLabel) + make.width.equalTo(orderDateTitleLabel) + } + + destinationLabel.snp.makeConstraints { make in + make.top.equalTo(destinationTitleLabel) + make.left.equalTo(destinationTitleLabel.snp.right) + make.right.equalTo(-auto(20)) + } + + settlementTitleLabel.snp.makeConstraints { make in + make.left.equalTo(typeLabel) + make.top.equalTo(destinationLabel.snp.bottom) + make.width.equalTo(orderDateTitleLabel) + } + + settlementLabel.snp.makeConstraints { make in + make.top.equalTo(settlementTitleLabel) + make.right.equalTo(-auto(20)) + make.left.equalTo(settlementTitleLabel.snp.right) + } + + settlementRatioTitleLabel.snp.makeConstraints { make in + make.left.equalTo(typeLabel) + make.top.equalTo(settlementLabel.snp.bottom).offset(auto(8)) + make.width.equalTo(orderDateTitleLabel) + } + + settlementRatioLabel.snp.makeConstraints { make in + make.top.equalTo(settlementRatioTitleLabel) + make.right.equalTo(-auto(20)) + make.left.equalTo(settlementRatioTitleLabel.snp.right) + + } + + reportButton.snp.makeConstraints { make in + make.right.equalToSuperview().offset(-auto(10)) + make.top.equalTo(settlementRatioLabel.snp.bottom).offset(auto(10)) + make.width.equalTo(auto(80)) + make.height.equalTo(auto(30)) + make.bottom.equalToSuperview().offset(-auto(10)) + } + + additionalButton.snp.makeConstraints { make in + make.right.equalTo(reportButton.snp.left).offset(-auto(10)) + make.top.equalTo(reportButton) + make.width.height.equalTo(reportButton) + } + + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func prepareForReuse() { + super.prepareForReuse() + disposeBag = DisposeBag() + } +} + +// MARK: View +class HistoryItemView : DDView { + public let tableView = DDTableView.init(frame: CGRectZero) + override init(frame: CGRect) { + super.init(frame: frame) + tableView.separatorStyle = .none + addSubview(tableView) + tableView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +// MARK: JXCategoryListContentViewDelegate +extension HistoryItemController : JXCategoryListContentViewDelegate { + func listView() -> UIView! { + return view + } +} diff --git a/OrderScheduling/HttpRequestCenter/.DS_Store b/OrderScheduling/HttpRequestCenter/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/OrderScheduling/HttpRequestCenter/.DS_Store differ diff --git a/OrderScheduling/HttpRequestCenter/ApiList.swift b/OrderScheduling/HttpRequestCenter/ApiList.swift new file mode 100644 index 0000000..f0813c2 --- /dev/null +++ b/OrderScheduling/HttpRequestCenter/ApiList.swift @@ -0,0 +1,44 @@ +// +// ApiList.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/7. +// + +import Foundation + +public let API = ApiList.default + +open class ApiList { + public static let `default` = ApiList() + + public let verifyCode = "/supplierAppV2/open/verifyCode" + + public let login = "/oauth2/token?grant_type=app&scope=all" + + public let orderList = "/supplierAppV2/dispatchApp/order/orderList" + + public let acceptDispatch = "/supplierAppV2/dispatchApp/order/acceptDispatch" + + public let refuseDispatch = "/supplierAppV2/dispatchApp/order/refuseDispatch" + + public let orderReport = "/supplierAppV2/dispatchApp/order/orderReporting" + + public let dispatchVehicleList = "/supplierAppV2/dispatchApp/order/dispatchVehicleList" + + public let dispatchVehicle = "/supplierAppV2/dispatchApp/order/dispatchVehicle" + + public let toDoMessageCount = "/supplierAppV2/dispatchApp/toDoMessage/toDoMessageCount" + + public let vehicleMonitorList = "/supplierAppV2/dispatchApp/order/vehicleMonitorList" + + public let getRtspChannel = "/gps/thirdparty-vehicle-position/getRtspUrl" + + public let orderPhotoList = "/supplierAppV2/dispatchApp/order/orderPhotoList" + + public let supplementOrderPhoto = "/supplierAppV2/dispatchApp/order/supplementOrderPhoto" + + public let logout = "/supplierAppV2/dispatchApp/user/logout" + + public let generalInfo = "/supplierAppV2/dispatchApp/user/generalInfo" +} diff --git a/OrderScheduling/HttpRequestCenter/ParametersList.swift b/OrderScheduling/HttpRequestCenter/ParametersList.swift new file mode 100644 index 0000000..193adad --- /dev/null +++ b/OrderScheduling/HttpRequestCenter/ParametersList.swift @@ -0,0 +1,116 @@ +// +// ParametersList.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/7. +// + +import Foundation + +enum OrderTypeEnum : Int, Encodable { + case TO_ACCEPT_DISPATCH = 1 + case TO_DISPATCH_VEHICLE = 3 + case TO_RESCUE = 5 + case TO_AUDIT_FAILED = 7 + case UNCLOSED_ORDER = 9 + case WITHIN_30_DAYS = 11 + case WITHIN_3_MONTHS = 12 +} + +public struct LoginCodeParameters : Encodable { + var phone : String +} + +public struct LoginParameters : Encodable { + var app_login_json : String + var client_id : Bool + + public init(app_login_json: String,client_id: Bool) { + self.app_login_json = app_login_json + self.client_id = client_id + } +} + +public struct LogoutParameters : Encodable { + var deviceId : Int +} + +public struct OrderListParameters : Encodable { + var pageNum : Int + var pageSize : Int = 12 + var queryType : OrderTypeEnum +} + +public struct AcceptDispatchParameters : Encodable { + var userOrderId : Int + var taskOrderId : Int +} + +public struct RefuseDispatchParameters : Encodable { + public enum RefuseReasonItemEnum : String, Encodable { + case time = "时间长" + case disatance = "距离远" + case cannotDispatch = "无法安排" + } + var userOrderId : Int + var taskOrderId : Int + var remarkId : String? + var refuseReasonItem : String? + var refuseReasonDesc : String? +} + +public struct OrderReportParameters : Encodable { + var queryType : OrderTypeEnum + var userOrderId : Int + var orderCode : Int + var reportingItem : String? + var reportingDesc : String? +} + +public struct DispatchVehicleListParameters : Encodable { + enum DispatchVehicleListTypeEnum: Int, Encodable { + case online = 1 + case offline = 2 + } + var type : DispatchVehicleListTypeEnum + var userOrderId : Int + var taskOrderId : Int + var driverId : Int? + var vehicleId : Int? +} + +public struct DispatchVehicleParameters : Encodable { + var type : DispatchVehicleTypeEnum + var userOrderId : Int + var taskOrderId : Int + var driverId : Int? + var vehicleId : Int? + var driverName : String? + var driverPhone : String? + var plateNumber : String? + enum DispatchVehicleTypeEnum : Int,Encodable { + case online = 1 + case offline = 2 + } +} + +public struct RtspChannelParameters : Encodable { + var vehicleId : Int + var external : Int = 1 +} + +public struct OrderPhotoList : Encodable { + var userOrderId : Int + var orderCode : String + var taskOrderId : Int +} + +public struct SupplementOrderPhoto : Encodable { + var userOrderId : Int + var orderCode : String + var taskOrderId : Int + + var taskStatus : Int + var tag : String + var file : Data +} diff --git a/OrderScheduling/HttpRequestCenter/RequestList.swift b/OrderScheduling/HttpRequestCenter/RequestList.swift new file mode 100644 index 0000000..f7e4a66 --- /dev/null +++ b/OrderScheduling/HttpRequestCenter/RequestList.swift @@ -0,0 +1,82 @@ +// +// RequestList.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/7. +// + +import Foundation +import RxSwift +import DDNetworkingOfAlamofireKit_Private +import Alamofire + +public let RQ = RequestList.default + +open class RequestList { + public static let `default` = RequestList() + + func tokenHeader() -> HTTPHeader { + let httpHeader = HTTPHeader.init(name: "Authorization", value: USER.token ?? "") + return httpHeader + } + + func loginCode(parameters:Encodable) -> Single?> { + return DDAF.post(urlString: HOST+API.verifyCode,parameters: parameters,encoding: JSONParameterEncoder.default,responseType: ResponseModel.self) + } + + func login(parameters:Encodable) -> Single?> { + return DDAF.post(urlString: HOST+API.login,parameters: parameters,headers: ["Authorization":"Basic c3VwcGxpZXItYXBwOiQyYSQxMCRXZ1pIdzVSamoxcGpIYnJucG00YlYuTWlTZ0o2aWpzYWlNeHN2OUhwZWlYR094UWtWRWVaNg=="],responseType: ResponseModel.self) + } + + func logout(parameters:Encodable) -> Single?> { + return DDAF.post(urlString: HOST+API.logout,parameters: parameters,encoding: JSONParameterEncoder.default,headers: [tokenHeader()],responseType: ResponseModel.self) + } + + func orderList(parameters:Encodable) -> Single?> { + return DDAF.post(urlString: HOST+API.orderList,parameters: parameters,encoding: JSONParameterEncoder.default,headers: [tokenHeader()],responseType: ResponseModel<[OrderListDataModel]>.self) + } + + func acceptDispatch(parameters:Encodable) -> Single?> { + return DDAF.post(urlString: HOST+API.acceptDispatch,parameters: parameters,encoding: JSONParameterEncoder.default,headers: [tokenHeader()],responseType: ResponseModel.self) + } + + func refuseDispatch(parameters:Encodable) -> Single?> { + return DDAF.post(urlString: HOST+API.refuseDispatch,parameters: parameters,encoding: JSONParameterEncoder.default,headers: [tokenHeader()],responseType: ResponseModel.self) + } + + func orderReport(parameters:Encodable) -> Single?> { + return DDAF.post(urlString: HOST+API.orderReport,parameters: parameters,encoding: JSONParameterEncoder.default,headers: [tokenHeader()],responseType: ResponseModel.self) + } + + func dispatchVehicleList(parameters:Encodable) -> Single?> { + return DDAF.post(urlString: HOST+API.dispatchVehicleList,parameters: parameters,encoding: JSONParameterEncoder.default,headers: [tokenHeader()],responseType: ResponseModel<[DispatchVehicleListDataModel]>.self) + } + + func dispatchVehicle(parameters:Encodable) -> Single?> { + return DDAF.post(urlString: HOST+API.dispatchVehicle,parameters: parameters,encoding: JSONParameterEncoder.default,headers: [tokenHeader()],responseType: ResponseModel.self) + } + + func toDoMessageCount() -> Single?> { + return DDAF.post(urlString: HOST+API.toDoMessageCount,encoding: JSONParameterEncoder.default,headers: [tokenHeader()],responseType: ResponseModel.self) + } + + func vehicleMonitorList() -> Single?> { + return DDAF.post(urlString: HOST+API.vehicleMonitorList,encoding: URLEncodedFormParameterEncoder(destination: .httpBody),headers: [tokenHeader()],responseType: ResponseModel.self) + } + + func getRtspChannel(prameters:Encodable) -> Single?> { + return DDAF.post(urlString: HOST+API.getRtspChannel,parameters: prameters,encoding: URLEncodedFormParameterEncoder(destination: .httpBody),headers: [tokenHeader()],responseType: ResponseModel<[String]>.self) + } + + func orderPhotoList(prameters:Encodable) -> Single?> { + return DDAF.post(urlString: HOST+API.orderPhotoList,parameters: prameters,encoding: JSONParameterEncoder.default,headers: [tokenHeader()],responseType: ResponseModel<[OrderPhotoListDataModel]>.self) + } + + func supplementOrderPhoto(prameters:Encodable,multipartFormData: @escaping (MultipartFormData) -> Void,uploadProgress: @escaping (Progress) -> Void) -> Single?> { + return DDAF.upload(urlString: HOST+API.supplementOrderPhoto, headers: [tokenHeader()], responseType: ResponseModel.self,multipartFormData: multipartFormData,uploadProgress: uploadProgress) + } + + func generalInfo() -> Single?> { + return DDAF.post(urlString: HOST+API.generalInfo,encoding: URLEncodedFormParameterEncoder.default,headers: [tokenHeader()],responseType: ResponseModel.self) + } +} diff --git a/OrderScheduling/HttpResponseModel/ResponseModel.swift b/OrderScheduling/HttpResponseModel/ResponseModel.swift new file mode 100644 index 0000000..5e04b29 --- /dev/null +++ b/OrderScheduling/HttpResponseModel/ResponseModel.swift @@ -0,0 +1,216 @@ +// +// ResponseModel.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/7. +// + +import Foundation + +class ResponseModel : Decodable { + typealias data = T + var code : Int + var msg : String? + var data : T? + var time : Int + var success : Bool +} + +class LoginDataModel : Decodable { + var accessToken : LoginDataAccessTokenModel + var refreshToken : LoginDataRefreshTokenModel + var additionalParameters : LoginDataAdditionalModel + public class LoginDataAccessTokenModel: Decodable { + var tokenValue : String + var issuedAt : Double? + var expiresAt : Double? + } + public class LoginDataRefreshTokenModel: Decodable { + var tokenValue : String + var issuedAt : Double? + var expiresAt : Double? + } + public class LoginDataAdditionalModel: Decodable { + var user_info : LoginDataAdditionalUserModel + } + public class LoginDataAdditionalUserModel: Decodable { + var userId : Int + var phone : String + var name : String + var supplierName : String + var supplierId : Int + var username : String + var userType : String + } +} + +class OrderListDataModel: Decodable { + var brand : String? + var model : String? + var vehiclePointAddress : String + var vehiclePointLongitude : Double + var vehiclePointLatitude : Double + var vehiclePointRemark : String? + var destinationAddress : String? + var destinationLongitude : Double? + var destinationLatitude : Double? + var destinationRemark : String? + var appointTime : String? + var contractName : String + var taskServiceName : String + var taskOrderStatusString : String? + var orderCode : String + var createTime : String + var driverName : String? + var drivePhone : String? + var environmentPic : String? + var userOrderId : Int + var taskOrderId : Int + var userPhone : String + var auditFailReason : String? + var isSupplierSettle : SupplierSettleModel? + var supplierSettleRatio : SupplierSettleRatioModel? + class SupplierSettleModel : Decodable { + var code : IsSupplierSettleEnum + var label : String + } + class SupplierSettleRatioModel : Decodable { + var code : SupplierSettleRatioEnum + var label : String + } + enum IsSupplierSettleEnum : Int,Decodable { + case NO = 0 + case YES = 1 + } + enum SupplierSettleRatioEnum : Int, Decodable { + case NO_SETTLE = 0 + case ALL_SETTLE = 1 + case DROP_SETTLE = 2 + case SERVICE_FAIL_SETTLE = 3 + case TRAIL_CAR_SETTLE = 4 + } +} + +enum VehicleStatusCodeEnum : Int, Decodable { + case offLine = 1 + case onLine = 2 + case lostConnection = 3 + case leisure = 4 + case busy = 6 + case BuyBusy = 5 +} + +class VehicleStatusModel : Decodable { + var code : VehicleStatusCodeEnum + var label : String +} + +class OnlineStatusModel : Decodable { + var code : OnlineStatusCodeEnum + var label : String + enum OnlineStatusCodeEnum : Int, Decodable { + case offLine = 1 + case onLine = 2 + case lostConnection = 3 + case leisure = 4 + case busy = 6 + case BuyBusy = 5 + } +} + +class DispatchVehicleListDataModel : Decodable { + var driverId : Int + var vehicleId : Int + var vehicleName : String? + var driverName : String? + var driverPhone : String? + var lon : String? + var lat : String? + var vehicleStatus : VehicleStatusModel + var onlineStatus : OnlineStatusModel + var distance : Double? +} + +class ToDoMessageCountDataModel : Decodable { + var messageCount : Int + var toDoCount : Int +} + +public class VehicleMonitorListDataModel : Decodable { + var vehicleMonitorCount : VehicleMonitorListCountModel + var rosterList : [ItemModel] + var onLineList : [ItemModel] + var lostConnectionList : [ItemModel] + var leisureList : [ItemModel] + var busyList : [ItemModel] + var alarmList : [ItemModel] + + class VehicleMonitorListCountModel: Decodable { + var rosterCount : Int + var onLineCount : Int + var lostConnectionCount : Int + var leisureCount : Int + var busyCount : Int + var alarmCount : Int + } + public class ItemModel : Decodable { + var vehicleId : Int? + var vehicleName : String? + var driverId : Int + var driverName : String + var driverPhone : String + var vehicleType : String? + var terminalType : TerminalTypeEnum? + var vehicleStatus : VehicleStatusModel? + var onlineStatus : OnlineStatusModel? + var alarmType : AlarmType? + var rosterStartTime : String? + var rosterEndTime : String? + var lat : String? + var lon : String? + var orderCode : String? + var serviceName : String? + var taskStatusString : String? + var workingCount : Int? + var isSelected : Bool? = false + + public enum TerminalTypeEnum : String,Decodable { + case APP = "APP" + case GPS = "GPS" + } + + public class AlarmType : Decodable { + var code : AlarmTypeEnum + var label : String + } + public enum AlarmTypeEnum : Int,Decodable { + case dropped = 1 + case busy = 2 + case empty_shift = 3 + } + + } +} + +public class OrderPhotoListDataModel : Decodable { + var taskStatus : Int + var taskStatusString : String + var photoList : [PhotoList] + class PhotoList : Decodable { + var tag : String + var imageTitle : String + var photoUrl : String? + var uploadImage : Data? + var taskStatus : Int? + } +} + +public class GeneralInfoDataModel : Decodable { + var userId : Int + var icon : String + var phone : String + var supplierId : Int + var supplierName : String + var vehicleCount : Int + var driverCount : Int +} diff --git a/OrderScheduling/Info.plist b/OrderScheduling/Info.plist new file mode 100644 index 0000000..371164a --- /dev/null +++ b/OrderScheduling/Info.plist @@ -0,0 +1,36 @@ + + + + + CFBundleLocalizations + + zh + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + + + + + UIBackgroundModes + + remote-notification + + + diff --git a/OrderScheduling/Login/.DS_Store b/OrderScheduling/Login/.DS_Store new file mode 100644 index 0000000..9d4279d Binary files /dev/null and b/OrderScheduling/Login/.DS_Store differ diff --git a/OrderScheduling/Login/ViewController/LoginController.swift b/OrderScheduling/Login/ViewController/LoginController.swift new file mode 100644 index 0000000..dd38269 --- /dev/null +++ b/OrderScheduling/Login/ViewController/LoginController.swift @@ -0,0 +1,375 @@ +// +// LoginController.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/4. +// + +import Foundation +import SnapKit +import RxRelay +import RxCocoa +import RxSwift +import DDTimerKit_Private +import DDProgressHUDKit_Private +import DDAutoUIKit_Private +import DDControlsKit_Private + +class LoginController : DDViewController { + private let disposeBag = DisposeBag() + private let loginView = LoginView.init() + private let agreeSub = ReplaySubject.create(bufferSize: 1) + + override func viewDidLoad() { + super.viewDidLoad() + dd_navigationBarBackgroundColor = .clear + navigationItem.leftBarButtonItems = nil + addSubviews() + addActions() + } +} +extension LoginController { + func addSubviews() { + view.addSubview(loginView) + loginView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + loginView.backgroundImageView.image = UIImage(named: "login_backgroundImage") + loginView.inputContentView.backgroundColor = UIColor.white + loginView.serviceProviderView.titleLabel.text = "服务商编号" + loginView.serviceProviderView.textfield.attributedPlaceholder = NSAttributedString(string: "请输入服务商编号",attributes: [.foregroundColor: UIColor.hex("203152").alpha(0.2),.font:UIFont.regularFont(auto(14))]) + loginView.phoneView.titleLabel.text = "用户手机号" + loginView.phoneView.textfield.attributedPlaceholder = NSAttributedString(string: "请输入手机号",attributes: [.foregroundColor: UIColor.hex("203152").alpha(0.2),.font:UIFont.regularFont(auto(14))]) + loginView.codeView.titleLabel.text = "验证码" + loginView.codeView.textfield.attributedPlaceholder = NSAttributedString(string: "请输入验证码",attributes: [.foregroundColor: UIColor.hex("203152").alpha(0.2),.font:UIFont.regularFont(auto(14))]) + loginView.codeView.codeButton.layer.borderColor = UIColor.hex("3364B7").alpha(0.8).cgColor + loginView.codeView.codeButton.layer.borderWidth = 1 + loginView.codeView.codeButton.setTitle("获取验证码", for: .normal) + loginView.codeView.codeButton.setTitleColor(.hex("3364B7").alpha(0.8), for: .normal) + loginView.codeView.codeButton.titleLabel?.font = .regularFont(auto(13)) + loginView.agreeButton.setImage(UIImage(named: "login_agree_unselected"), for: .normal) + loginView.agreeButton.setImage(UIImage(named: "login_agree_selected"), for: .selected) + let privacyText = NSAttributedString.init(string: "已阅读并同意",attributes: [.foregroundColor:UIColor.hex("203152"),.font:UIFont.regularFont(auto(14))]).dd_mutable() + let privacyText_appendUser = NSAttributedString.init(string: "《用户协议》",attributes: [.foregroundColor:UIColor.hex("354D93"),.font:UIFont.regularFont(auto(14))]).dd_mutable() + privacyText_appendUser.addAttribute(.link, value: login_attach_userAgreement_key, range: NSRange(location: 0, length: privacyText_appendUser.length)) + let privacyText_appendPrivacy = NSAttributedString.init(string: "《隐私协议》",attributes: [.foregroundColor:UIColor.hex("354D93"),.font:UIFont.regularFont(auto(14))]).dd_mutable() + privacyText_appendPrivacy.addAttribute(.link, value: login_attach_privacy_key, range: NSRange(location: 0, length: privacyText_appendPrivacy.length)) + loginView.agreeTextView.attributedText = privacyText.dd_append(privacyText_appendUser).dd_append(privacyText_appendPrivacy) + loginView.agreeTextView.textContainerInset = .zero + loginView.agreeTextView.isEditable = false + loginView.agreeTextView.delegate = self + + loginView.loginButton.backgroundColor = .hex("1C6CCE").alpha(0.4) + loginView.loginButton.setTitle("登录", for: .normal) + } +} +extension LoginController { + func addActions() { + loginView.codeView.codeButton.rx.tap + .observe(on: MainScheduler.instance) + .filter({[weak self] _ in + if self?.loginView.phoneView.textfield.text?.isEmpty == true { + self?.view.dd_makeToast(loginInputPhone) + } + return self?.loginView.phoneView.textfield.text?.isEmpty == false + }) + .observe(on: MainScheduler.instance) + .do(onNext: {[weak self] _ in + self?.codeButtonBinder.onNext(false) + self?.view.dd_showHUD() + }) + .flatMapLatest({[weak self] _ in + return RQ.loginCode(parameters: LoginCodeParameters(phone: self?.loginView.phoneView.textfield.text ?? "")) + }) + .observe(on: MainScheduler.instance) + .do(onNext: {[weak self] _ in + self?.view.dd_hideHUD() + }) + .flatMapLatest {[weak self] _ in + return self?.codeButtonTimer() ?? Observable.just(0) + } + .observe(on: MainScheduler.instance) + .do(onNext: {[weak self] duration in + if duration == 0 { + self?.codeButtonBinder.onNext(true) + } + }) + .observe(on: MainScheduler.instance) + .flatMapLatest {[weak self] duration in + return self?.codeButtonStateChange(duration: duration) ?? Observable.just(nil) + } + .subscribe(onNext: { _ in + }) + .disposed(by: disposeBag) + + loginView.agreeButton.rx.tap + .asDriver() + .drive(onNext: {[weak self] _ in + if let isSelected = self?.loginView.agreeButton.isSelected { + self?.agreeButtonBinder.onNext(!isSelected) + self?.agreeSub.onNext(!isSelected) + } + }) + .disposed(by: disposeBag) + + Observable.combineLatest(loginView.serviceProviderView.textfield.rx.text, loginView.phoneView.textfield.rx.text, loginView.codeView.textfield.rx.text,agreeSub) + .asDriver(onErrorJustReturn: ("","","",false)) + .drive(onNext: {[weak self] (serviceProvider,phone,code,isAgree) in + if serviceProvider?.isEmpty == false && phone?.isEmpty == false && code?.isEmpty == false && isAgree == true { + self?.loginView.loginButton.isEnabled = true + self?.loginView.loginButton.backgroundColor = .hex("1C6CCE").alpha(1) + }else{ + self?.loginView.loginButton.isEnabled = false + self?.loginView.loginButton.backgroundColor = .hex("1C6CCE").alpha(0.4) + } + }) + .disposed(by: disposeBag) + + loginView.loginButton.rx.tap + .observe(on: MainScheduler.instance) + .do(onNext: {[weak self] _ in + self?.view.dd_showHUD() + }) + .map({[weak self] _ in + let phone = self?.loginView.phoneView.textfield.text ?? "" + let code = self?.loginView.codeView.textfield.text ?? "" + let clientType = "rescueApp" + let supplierLoginCode = self?.loginView.serviceProviderView.textfield.text ?? "" + + let str = "{\"phone\":\"\(phone)\",\"code\":\"\(code)\",\"clientType\":\"\(clientType)\",\"supplierLoginCode\":\"\(supplierLoginCode)\"}" + return str + }) + .flatMapLatest({ app_login_json in + return RQ.login(parameters: LoginParameters(app_login_json: app_login_json, client_id: true)) + }) + .observe(on: MainScheduler.instance) + .do(onNext: {[weak self] _ in + self?.view.dd_hideHUD() + }) + .subscribe(onNext: { responseModel in + if responseModel?.success == true { + if let token = responseModel?.data?.accessToken.tokenValue { + USER.setToken(token: token) + } + NotificationCenter.default.post(name: NSNotification.Name(rawValue: Notification_loginSuccessToRescueController), object: nil) + }else{ + } + }) + .disposed(by: disposeBag) + } +} + +extension LoginController { + var codeButtonBinder : Binder { + return Binder(loginView.codeView.codeButton) { codeButton, isEnable in + codeButton.isEnabled = isEnable + } + } + var agreeButtonBinder : Binder { + return Binder(loginView.agreeButton) { agreeButton, isSelected in + agreeButton.isSelected = isSelected + } + } + + func codeButtonIsEnable(isEnable:Bool) -> Observable { + return Observable.create {[weak self] ob in + self?.loginView.codeView.codeButton.isEnabled = isEnable + ob.onNext(isEnable) + ob.onCompleted() + return Disposables.create() + } + } + func codeButtonStateChange(duration:Int) -> Observable{ + return Observable.create {[weak self] ob in + if duration == 0 { + self?.loginView.codeView.codeButton.layer.borderColor = UIColor.hex("3364B7").alpha(0.8).cgColor + self?.loginView.codeView.codeButton.setTitle("获取验证码", for: .normal) + self?.loginView.codeView.codeButton.setTitleColor(.hex("3364B7").alpha(0.8), for: .normal) + }else{ + self?.loginView.codeView.codeButton.setTitle("\(duration)s重新获取", for: .normal) + self?.loginView.codeView.codeButton.setTitleColor(.hex("939BAB").alpha(0.8), for: .normal) + self?.loginView.codeView.codeButton.layer.borderColor = UIColor.hex("939BAB").alpha(0.8).cgColor + } + ob.onNext(nil) + ob.onCompleted() + return Disposables.create() + } + } + + func codeButtonTimer() -> Observable { + return Observable.create { ob in + var duration = 60 + + DDTimerManager.dd_share().dd_addTimer(withName: login_code_timer_key, timeInterval: 1, repeatCount: 0, delay: 0) { (manager,obj,_) in + duration-=1 + ob.onNext(duration) + if duration == 0 { + ob.onCompleted() + } + } + + return Disposables.create { + DDTimerManager.dd_share().dd_removeTimerNamed(login_code_timer_key) + } + } + } +} + +extension LoginController : UITextViewDelegate { + public func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { + if URL.absoluteString == login_attach_userAgreement_key { + let vc = WebViewController.init(title: "用户协议",url: "https://backend.hichefu.com/agreement") + navigationController?.pushViewController(vc, animated: true) + } + if URL.absoluteString == login_attach_privacy_key { + let vc = WebViewController.init(title: "隐私协议",url: "https://backend.hichefu.com/agreement") + navigationController?.pushViewController(vc, animated: true) + } + return false + } +} + +class LoginView : DDView { + public let backgroundImageView : DDImageView + public let inputContentView : DDView + public let serviceProviderView : LoginInputView + public let phoneView : LoginInputView + public let codeView : LoginInputView + public let agreeButton : DDButton + public let agreeTextView : DDTextView + public let loginButton : DDButton + override init(frame: CGRect) { + backgroundImageView = DDImageView.init() + inputContentView = DDView.init() + serviceProviderView = LoginInputView.init() + phoneView = LoginInputView.init() + codeView = LoginInputView.init() + agreeButton = DDButton.init() + agreeTextView = DDTextView.init() + loginButton = DDButton.dd_initCustom() + super.init(frame: frame) + + addSubview(backgroundImageView) + inputContentView.layer.shadowColor = UIColor.black.alpha(0.3).cgColor + inputContentView.layer.shadowRadius = 5 + inputContentView.layer.shadowOffset = CGSize(width: 0, height: 0) + inputContentView.layer.shadowOpacity = 1 + addSubview(inputContentView) + inputContentView.addSubview(serviceProviderView) + phoneView.textfield.keyboardType = .numberPad + inputContentView.addSubview(phoneView) + codeView.textfield.keyboardType = .numberPad + inputContentView.addSubview(codeView) + inputContentView.addSubview(agreeButton) + inputContentView.addSubview(agreeTextView) + addSubview(loginButton) + + backgroundImageView.snp.makeConstraints { make in + make.top.left.right.equalToSuperview() + make.height.equalTo(auto(423)) + } + + inputContentView.layer.cornerRadius = auto(10) + inputContentView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.centerY.equalToSuperview().offset(auto(30)) + make.height.equalTo(auto(280)) + make.width.equalTo(auto(340)) + } + + serviceProviderView.snp.makeConstraints { make in + make.top.equalToSuperview() + make.left.right.equalToSuperview() + make.height.equalTo(auto(75)) + } + + phoneView.snp.makeConstraints { make in + make.left.right.equalToSuperview() + make.top.equalTo(serviceProviderView.snp.bottom) + make.height.equalTo(serviceProviderView) + } + + codeView.snp.makeConstraints { make in + make.left.right.equalToSuperview() + make.top.equalTo(phoneView.snp.bottom) + make.height.equalTo(serviceProviderView) + } + + agreeButton.snp.makeConstraints { make in + make.top.equalTo(codeView.snp.bottom).offset(auto(20)) + make.left.equalTo(auto(20)) + } + + agreeTextView.snp.makeConstraints { make in + make.centerY.equalTo(agreeButton) + make.left.equalTo(agreeButton.snp.right).offset(auto(10)) + make.right.equalToSuperview() + make.height.equalTo(17) + } + + loginButton.layer.cornerRadius = auto(25) + loginButton.snp.makeConstraints { make in + make.top.equalTo(inputContentView.snp.bottom).offset(auto(30)) + make.width.equalTo(auto(300)) + make.height.equalTo(auto(50)) + make.centerX.equalToSuperview() + } + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + +class LoginInputView : DDView { + public let titleLabel : DDLabel + public let textfield : DDTextField + public let line : DDView + public let codeButton : DDButton + override init(frame: CGRect) { + titleLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(15)), textColor: .hex("203152")) + textfield = DDTextField.init() + line = DDView.init() + line.backgroundColor = .hex("F1F2F5") + codeButton = DDButton.dd_initCustom() + super.init(frame: frame) + + addSubview(titleLabel) + addSubview(textfield) + addSubview(line) + addSubview(codeButton) + + line.snp.makeConstraints { make in + make.bottom.equalToSuperview() + make.left.equalTo(auto(20)) + make.right.equalTo(-auto(20)) + make.height.equalTo(1) + } + + titleLabel.snp.makeConstraints { make in + make.left.equalTo(line) + make.top.equalTo(auto(25)) + } + + textfield.snp.makeConstraints { make in + make.left.equalTo(titleLabel) + make.bottom.equalTo(line.snp.top).offset(-auto(5)) + make.left.equalTo(line) + make.right.equalTo(codeButton.snp.left) + } + + codeButton.layer.cornerRadius = auto(12.5) + codeButton.snp.makeConstraints { make in + make.centerY.equalTo(textfield) + make.right.equalTo(line) + make.height.equalTo(auto(25)) + make.width.equalTo(auto(90)) + } + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/OrderScheduling/Main/AppDelegate.swift b/OrderScheduling/Main/AppDelegate.swift new file mode 100644 index 0000000..f05b3f5 --- /dev/null +++ b/OrderScheduling/Main/AppDelegate.swift @@ -0,0 +1,42 @@ +// +// AppDelegate.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/3. +// + +import UIKit + +class AppDelegate: UIResponder, UIApplicationDelegate { + + public var allowOrentitaionRotation : Bool = false + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { + if allowOrentitaionRotation == true { + return .allButUpsideDown + } + return .allButUpsideDown + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } + + +} + diff --git a/OrderScheduling/Main/Initial.swift b/OrderScheduling/Main/Initial.swift new file mode 100644 index 0000000..8911d98 --- /dev/null +++ b/OrderScheduling/Main/Initial.swift @@ -0,0 +1,122 @@ +// +// Initial.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/4. +// + +import Foundation +import DDMAMapKit_Private +import IQKeyboardManagerSwift +import DDAutoUIKit_Private +import DDNetworkingOfAlamofireKit_Private +import Alamofire +import DDToastKit_Private +import DDCategoryKit_Private +import DDControlsKit_Private + +class Initial : NSObject { + static let shareInstance = Initial.init() + + // MARK: + func initThirdLib() { + // 键盘 + initIQKeyboard() + + // mamap + initMaMapKey() + + // autoUI + initAutoUI() + + // af + initAF() + } + + func initIQKeyboard(){ + IQKeyboardManager.shared.enable = true + } + + func initMaMapKey(){ + DDMAMapView.start(withAppKey: MAAppKey) + DDMAMapView.agreePrivacy() + } + + func initAutoUI() { + let _ = AutoUI.default.getScale(size: 375) + } + + func initAF() { + DDAF.delegate = self + } + + // MARK: + func initRootViewController(){ + if USER.token != nil { + NotificationCenter.default.post(name: NSNotification.Name(rawValue: Notification_loginSuccessToRescueController), object: nil) + }else{ + NotificationCenter.default.post(name: NSNotification.Name(rawValue: Notification_toLoginController), object: nil) + } + } + + func changeRootViewController(window:UIWindow?) { + + NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: Notification_toLoginController), object: nil, queue: .main) { note in + let nav = DDNavigationController(rootViewController: LoginController.init()) + window?.rootViewController = nav + } + + NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: Notification_logoutSuccessToLoginController), object: nil, queue: .main) { note in + let nav = DDNavigationController(rootViewController: LoginController.init()) + window?.rootViewController = nav + } + + NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: Notification_reLoginToLoginController), object: nil, queue: .main) { note in + let nav = DDNavigationController(rootViewController: LoginController.init()) + window?.rootViewController = nav + } + + NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: Notification_loginSuccessToRescueController), object: nil, queue: .main) { note in + window?.rootViewController = MainTabBarController.init() + } + + } +} + +extension Initial : DDAlamofireDelegate { + func networkErrorHandler(response: AFDataResponse) -> AFDataResponse where T : Decodable { + DispatchQueue.main.async { + UIApplication.shared.dd_keyWindow.dd_makeToast(networkFailed) + } + return response + } + + func errorCodeHandler(response: AFDataResponse) -> AFDataResponse where T : Decodable { + if response.response?.statusCode == 401 { + NotificationCenter.default.post(name: NSNotification.Name(rawValue: Notification_logoutSuccessToLoginController), object: nil) + } + + if let error = response.error { + DispatchQueue.main.async { + UIApplication.shared.dd_keyWindow.dd_makeToast(error.errorDescription) + } + } + + if let data = response.data { + let json = try? JSONSerialization.jsonObject(with: data, options: .mutableContainers) + let dic = json as? Dictionary + let msg = dic?["msg"] as? String + if let msg { + DispatchQueue.main.async { + UIApplication.shared.dd_keyWindow.dd_makeToast(msg) + } + } + } + + return response + } + + func completionHandler(response: AFDataResponse) -> AFDataResponse where T : Decodable { + return response + } +} diff --git a/OrderScheduling/Main/MainTabBarController.swift b/OrderScheduling/Main/MainTabBarController.swift new file mode 100644 index 0000000..5dc7403 --- /dev/null +++ b/OrderScheduling/Main/MainTabBarController.swift @@ -0,0 +1,70 @@ +// +// MainTabBarController.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/4. +// + +import Foundation +import DDCategoryKit_Private +import ESTabBarController_swift +import DDColorKit_Private +import DDFontKit_Private +import DDControlsKit_Private + +open class MainTabBarController : ESTabBarController { + + open override func viewDidLoad() { + super.viewDidLoad() + let v1 = DDNavigationController(rootViewController: RescueController.init()) + let v2 = DDNavigationController(rootViewController: ReviewFailedController.init()) + let v3 = DDNavigationController(rootViewController: HistoryController.init()) + let v4 = DDNavigationController(rootViewController: VehicleMonitoringController.init()) + let v5 = DDNavigationController(rootViewController: MineController.init()) + + v1.tabBarItem = ESTabBarItem.init(MainTabBarItemContentView(), title: "救援中", image: UIImage(named: "tabBar_jiuyuanzhong_unselected"), selectedImage: UIImage(named: "tabBar_jiuyuanzhong_selected")) + v2.tabBarItem = ESTabBarItem.init(MainTabBarItemContentView(), title: "审核失败", image: UIImage(named: "tabBar_shenhe_unselected"), selectedImage: UIImage(named: "tabBar_shenhe_selected")) + v3.tabBarItem = ESTabBarItem.init(MainTabBarItemContentView(), title: "历史", image: UIImage(named: "tabBar_lishi_unselected"), selectedImage: UIImage(named: "tabBar_lishi_selected")) + v4.tabBarItem = ESTabBarItem.init(MainTabBarItemContentView(), title: "车辆监控", image: UIImage(named: "tabBar_cheliangjiankong_unselected"), selectedImage: UIImage(named: "tabBar_cheliangjiankong_selected")) + v5.tabBarItem = ESTabBarItem.init(MainTabBarItemContentView(), title: "我的", image: UIImage(named: "tabBar_wode_unselected"), selectedImage: UIImage(named: "tabBar_wode_selected")) + self.viewControllers = [v1, v2, v3, v4, v5] + + if let tabBar = tabBar as? ESTabBar { + tabBar.itemCustomPositioning = .centered + tabBar.backgroundColor = .white + + tabBar.shadowImage = UIImage() + tabBar.backgroundImage = UIImage() + } + } + + open override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + + } +} + +class MainTabBarItemContentView : ESTabBarItemContentView{ + override init(frame: CGRect) { + super.init(frame: frame) + renderingMode = .alwaysOriginal + itemContentMode = .alwaysOriginal + + textColor = .hex("000000").alpha(0.55) + highlightTextColor = .hex("545F7D") + backdropColor = .white + highlightBackdropColor = .white + titleLabel.font = .mediumFont(13) + + } + + override func updateLayout() { + super.updateLayout() + } + + public required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + diff --git a/OrderScheduling/Main/OrderScheduling-Bridge-Header.h b/OrderScheduling/Main/OrderScheduling-Bridge-Header.h new file mode 100644 index 0000000..646b78a --- /dev/null +++ b/OrderScheduling/Main/OrderScheduling-Bridge-Header.h @@ -0,0 +1,15 @@ +// +// OrderScheduling-Bridge-Header.h +// OrderScheduling +// +// Created by 中道 on 2023/8/16. +// + +#ifndef OrderScheduling_Bridge_Header_h +#define OrderScheduling_Bridge_Header_h + +//#import +//#import +//#import + +#endif /* OrderScheduling_Bridge_Header_h */ diff --git a/OrderScheduling/Main/SceneDelegate.swift b/OrderScheduling/Main/SceneDelegate.swift new file mode 100644 index 0000000..710b8cf --- /dev/null +++ b/OrderScheduling/Main/SceneDelegate.swift @@ -0,0 +1,59 @@ +// +// SceneDelegate.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/3. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + public var window: UIWindow? + public var initial : Initial = Initial.init() + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let windowSence = (scene as? UIWindowScene) else { return } + // 初始化第三方的lib + initial.initThirdLib() + + window = UIWindow(windowScene: windowSence) + window?.makeKeyAndVisible() + initial.changeRootViewController(window: window) + initial.initRootViewController() + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/OrderScheduling/Main/main.swift b/OrderScheduling/Main/main.swift new file mode 100644 index 0000000..7d7395f --- /dev/null +++ b/OrderScheduling/Main/main.swift @@ -0,0 +1,11 @@ +// +// main.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/4. +// + +import Foundation +import UIKit + +UIApplicationMain(CommandLine.argc, UnsafeMutablePointer(CommandLine.unsafeArgv), NSStringFromClass(UIApplication.self), NSStringFromClass(AppDelegate.self)) diff --git a/OrderScheduling/MessageCenter/.DS_Store b/OrderScheduling/MessageCenter/.DS_Store new file mode 100644 index 0000000..6cddc85 Binary files /dev/null and b/OrderScheduling/MessageCenter/.DS_Store differ diff --git a/OrderScheduling/MessageCenter/ViewController/MessageCenterController.swift b/OrderScheduling/MessageCenter/ViewController/MessageCenterController.swift new file mode 100644 index 0000000..d188e87 --- /dev/null +++ b/OrderScheduling/MessageCenter/ViewController/MessageCenterController.swift @@ -0,0 +1,160 @@ +// +// MessageCenterController.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/14. +// + +import Foundation +import DDAutoUIKit_Private +import DDControlsKit_Private +import SnapKit +import RxSwift +import MJRefresh + +extension MessageCenterController { + func addActions() { + messageCenterView.tableView.mj_header = MJRefreshNormalHeader.init(refreshingBlock: { + + }) + } +} + +// MARK: UITableViewDelegate,UITableViewDataSource +extension MessageCenterController : UITableViewDelegate,UITableViewDataSource { + public func numberOfSections(in tableView: UITableView) -> Int { + return 1 + } + + public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return 2 + } + + public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + var cell = tableView.dequeueReusableCell(withIdentifier: "cell") as? MessageCenterCell + if cell == nil { + cell = MessageCenterCell(style: .default, reuseIdentifier: "cell") + } + + cell!.descLabel.text = "师傅接单已超6分钟还未发车,请尽快发车备份 2,师傅接单已超6分钟还未发车,请尽快发车备份 2" + cell!.noticeLabel.text = " 发车提醒 " + cell!.noticeLabel.backgroundColor = .hex("FA8D14") + cell!.orderNumLabel.text = "DDA2304142407036" + cell!.dateLabel.text = TOOL.getDateStringCompareWithNow(dateFormat:"yyyy/MM/dd HH:mm:ss",dateString: "2023/08/13 23:39:42") + return cell! + } +} + +open class MessageCenterController : DDViewController { + private let messageCenterView = MessageCenterView() + open override func viewDidLoad() { + super.viewDidLoad() + dd_navigationItemTitle = "消息提醒" + dd_navigationBarBackgroundColor = .hex("354683") + dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(17)] + + addSubviews() + addActions() + } + + func addSubviews() { + view.backgroundColor = .hex("F4F5F7") + view.addSubview(messageCenterView) + messageCenterView.snp.makeConstraints { make in + make.top.left.right.equalToSuperview() + make.bottom.equalTo(-view.safeAreaInsets.bottom) + } + + messageCenterView.tableView.delegate = self + messageCenterView.tableView.dataSource = self + } + + open override var preferredStatusBarStyle: UIStatusBarStyle { + return .lightContent + } +} + +open class MessageCenterView : DDView { + public let tableView : DDTableView + public override init(frame: CGRect) { + tableView = DDTableView(frame: CGRectZero, style: .plain) + super.init(frame: frame) + + tableView.backgroundColor = .hex("F4F5F7") + tableView.separatorStyle = .none + addSubview(tableView) + tableView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +open class MessageCenterCell : DDTableViewCell { + public let radiusView : DDView + public let noticeLabel : DDLabel + public let orderNumLabel : DDLabel + public let dateLabel : DDLabel + public let descLabel : DDLabel + public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + radiusView = DDView() + noticeLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(10)), textColor: .white) + orderNumLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.55)) + dateLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(11)), textColor: .hex("000000").alpha(0.55)) + descLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("000000").alpha(0.75)) + super.init(style: style, reuseIdentifier: reuseIdentifier) + + backgroundColor = .hex("F4F5F7") + selectionStyle = .none + + radiusView.backgroundColor = .white + radiusView.layer.cornerRadius = auto(6) + radiusView.layer.shadowColor = UIColor.hex("D8D8D8").cgColor + radiusView.layer.shadowOffset = CGSize(width: 0, height: 3) + radiusView.layer.shadowRadius = 5 + radiusView.layer.shadowOpacity = 1 + contentView.addSubview(radiusView) + noticeLabel.layer.cornerRadius = auto(2) + noticeLabel.layer.masksToBounds = true + radiusView.addSubview(noticeLabel) + radiusView.addSubview(orderNumLabel) + radiusView.addSubview(dateLabel) + descLabel.numberOfLines = 0 + radiusView.addSubview(descLabel) + + radiusView.snp.makeConstraints { make in + make.left.top.equalTo(auto(10)) + make.right.equalTo(-auto(10)) + make.bottom.equalTo(0) + } + + noticeLabel.snp.makeConstraints { make in + make.top.left.equalTo(auto(10)) + make.height.equalTo(auto(15)) + } + + orderNumLabel.snp.makeConstraints { make in + make.left.equalTo(noticeLabel.snp.right).offset(auto(10)) + make.centerY.equalTo(noticeLabel) + } + + dateLabel.snp.makeConstraints { make in + make.right.equalTo(-auto(10)) + make.centerY.equalTo(noticeLabel) + } + + descLabel.snp.makeConstraints { make in + make.top.equalTo(noticeLabel.snp.bottom).offset(auto(10)) + make.left.equalTo(noticeLabel) + make.right.equalTo(dateLabel) + make.bottom.equalTo(-auto(15)) + } + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/OrderScheduling/Mine/.DS_Store b/OrderScheduling/Mine/.DS_Store new file mode 100644 index 0000000..6cddc85 Binary files /dev/null and b/OrderScheduling/Mine/.DS_Store differ diff --git a/OrderScheduling/Mine/ViewController/MineController.swift b/OrderScheduling/Mine/ViewController/MineController.swift new file mode 100644 index 0000000..4e129a9 --- /dev/null +++ b/OrderScheduling/Mine/ViewController/MineController.swift @@ -0,0 +1,401 @@ +// +// MineController.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/18. +// + +import Foundation +import DDAutoUIKit_Private +import DDControlsKit_Private +import SnapKit +import RxSwift +import RxRelay +import RxCocoa +import DDToastKit_Private +import DDProgressHUDKit_Private + +extension MineController { + func addActions() { + mineView.logoutButton.rx.tap + .observe(on: MainScheduler.instance) + .do(onNext: {[weak self] _ in + self?.view.dd_showHUD() + }) + .flatMapLatest({ _ in + return RQ.logout(parameters: LogoutParameters(deviceId: 1)) + }) + .observe(on: MainScheduler.instance) + .do(onNext: {[weak self] _ in + self?.view.dd_hideHUD() + }) + .subscribe(onNext: {[weak self] response in + if response?.success == true { + USER.clear() + NotificationCenter.default.post(name: NSNotification.Name(rawValue: Notification_logoutSuccessToLoginController), object: nil) + }else{ + self?.view.dd_makeToast(response?.msg) + } + }) + .disposed(by: disposeBag) + + refreshRelay + .flatMapLatest { _ in + return RQ.generalInfo() + } + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] response in + if response?.success == true { + self?.mineView.carInfoView.descLabel.text = String(response?.data?.vehicleCount ?? 0)+"台" + self?.mineView.driverInfoView.descLabel.text = String(response?.data?.driverCount ?? 0)+"台" + if let icon = response?.data?.icon { + self?.mineView.avatar.sd_setImage(with: URL(string: icon)) + } + if let phone = response?.data?.phone{ + self?.mineView.accountLabel.text = "账号:\(phone)" + } + if let company = response?.data?.supplierName { + self?.mineView.companyLabel.text = company + } + }else{ + self?.view.dd_makeToast(response?.msg) + } + }) + .disposed(by: disposeBag) + + refreshRelay.accept(nil) + + mineView.tongzhitixingGes.rx.event + .observe(on: MainScheduler.instance) + .subscribe(onNext: { _ in + let url = URL(string: UIApplication.openSettingsURLString)! + if UIApplication.shared.canOpenURL(url) { + UIApplication.shared.open(url) + } + }) + .disposed(by: disposeBag) + } +} + +open class MineController : DDViewController { + private let mineView = MineView() + private let disposeBag = DisposeBag() + private let refreshRelay = ReplayRelay.create(bufferSize: 1) + + open override func viewDidLoad() { + super.viewDidLoad() + dd_navigationBarBackgroundColor = .hex("354683") + dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(auto(15))] + dd_navigationItemTitle = "我的" + navigationItem.leftBarButtonItems = nil + + view.addSubview(mineView) + mineView.snp.makeConstraints { make in + make.top.equalTo(CGRectGetHeight(UIApplication.shared.dd_statusBarFrame) + CGRectGetHeight(navigationController?.navigationBar.frame ?? .zero)) + make.left.right.equalToSuperview() + make.bottom.equalTo(-view.safeAreaInsets.bottom - CGRectGetHeight(tabBarController?.tabBar.frame ?? .zero)) + } + + mineView.carInfoView.titleLabel.text = "车辆管理" + mineView.carInfoView.imageView.image = UIImage(named: "mine_info_car") + mineView.driverInfoView.titleLabel.text = "师傅管理" + mineView.driverInfoView.imageView.image = UIImage(named: "mine_info_driver") + + mineView.gongdanduizhang.titleLabel.text = "工单对账" + mineView.kaipiaotongzhi.titleLabel.text = "开票通知" + mineView.peixunwendang.titleLabel.text = "培训文档" + mineView.wendangziliao.titleLabel.text = "文档资料" + mineView.banbenjiance.titleLabel.text = "版本检测" + mineView.tongzhitixing.titleLabel.text = "通知提醒" + + addActions() + } +} + +open class MineView : DDView { + private let scrollView : DDScrollView + private let scrollContentView : DDView + private let topBackgroundImageView : DDImageView + public let avatar : DDImageView + public let accountLabel : DDLabel + public let companyLabel : DDLabel + public let carInfoView : MineInfoView + public let driverInfoView : MineInfoView + public let infoRadiusView : DDView + public let infoRadiusSeparate : DDImageView + public let orderRadiusView : DDView + public let materialRadiusView : DDView + public let settingsRadiusView : DDView + public let gongdanduizhang : MineCell + public let kaipiaotongzhi : MineCell + public let peixunwendang : MineCell + public let wendangziliao : MineCell + public let banbenjiance : MineCell + public let tongzhitixingGes : UITapGestureRecognizer + public let tongzhitixing : MineCell + public let logoutButton : DDButton + + public override init(frame: CGRect) { + scrollView = DDScrollView() + scrollContentView = DDView() + topBackgroundImageView = DDImageView() + avatar = DDImageView() + accountLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(15)), textColor: .hex("FFFFFF").alpha(0.8)) + companyLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("FFFFFF").alpha(0.5)) + carInfoView = MineInfoView() + driverInfoView = MineInfoView() + infoRadiusView = DDView() + infoRadiusSeparate = DDImageView(image: UIImage(named: "mine_info_separate")) + orderRadiusView = DDView() + materialRadiusView = DDView() + settingsRadiusView = DDView() + gongdanduizhang = MineCell() + kaipiaotongzhi = MineCell() + peixunwendang = MineCell() + wendangziliao = MineCell() + banbenjiance = MineCell() + tongzhitixingGes = UITapGestureRecognizer() + tongzhitixing = MineCell() + logoutButton = DDButton.dd_initCustom() + super.init(frame: frame) + + backgroundColor = .hex("F4F5F7") + + addSubview(scrollView) + scrollView.addSubview(scrollContentView) + + topBackgroundImageView.backgroundColor = .hex("354683") + scrollContentView.addSubview(topBackgroundImageView) + avatar.layer.cornerRadius = auto(27) + avatar.layer.masksToBounds = true + scrollContentView.addSubview(avatar) + scrollContentView.addSubview(accountLabel) + scrollContentView.addSubview(companyLabel) + infoRadiusView.backgroundColor = .hex("FFFFFF") + infoRadiusView.layer.cornerRadius = auto(12) + scrollContentView.addSubview(infoRadiusView) + infoRadiusView.addSubview(carInfoView) + infoRadiusView.addSubview(driverInfoView) + scrollContentView.addSubview(infoRadiusSeparate) + orderRadiusView.backgroundColor = .hex("FFFFFF") + orderRadiusView.layer.cornerRadius = auto(6) + scrollContentView.addSubview(orderRadiusView) + materialRadiusView.backgroundColor = .hex("FFFFFF") + materialRadiusView.layer.cornerRadius = auto(6) + scrollContentView.addSubview(materialRadiusView) + settingsRadiusView.backgroundColor = .hex("FFFFFF") + settingsRadiusView.layer.cornerRadius = auto(6) + scrollContentView.addSubview(settingsRadiusView) + orderRadiusView.addSubview(gongdanduizhang) + kaipiaotongzhi.line.isHidden = true + orderRadiusView.addSubview(kaipiaotongzhi) + materialRadiusView.addSubview(peixunwendang) + wendangziliao.line.isHidden = true + materialRadiusView.addSubview(wendangziliao) + settingsRadiusView.addSubview(banbenjiance) + tongzhitixing.line.isHidden = true + settingsRadiusView.addSubview(tongzhitixing) + tongzhitixing.addGestureRecognizer(tongzhitixingGes) + logoutButton.backgroundColor = .hex("545D78").alpha(0.25) + logoutButton.layer.cornerRadius = auto(17.5) + logoutButton.setTitle("退出登录", for: .normal) + logoutButton.setTitleColor(.white, for: .normal) + logoutButton.titleLabel?.font = .mediumFont(auto(13)) + scrollContentView.addSubview(logoutButton) + + scrollView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + scrollContentView.snp.makeConstraints { make in + make.edges.equalToSuperview() + make.width.equalToSuperview() + } + + topBackgroundImageView.snp.makeConstraints { make in + make.left.top.right.equalToSuperview() + make.height.equalTo(auto(130)) + } + + avatar.snp.makeConstraints { make in + make.top.equalTo(auto(20)) + make.left.equalTo(auto(25)) + make.width.height.equalTo(auto(54)) + } + + accountLabel.snp.makeConstraints { make in + make.centerY.equalTo(avatar).offset(-auto(10)) + make.left.equalTo(avatar.snp.right).offset(auto(15)) + } + + companyLabel.snp.makeConstraints { make in + make.left.equalTo(avatar.snp.right).offset(auto(15)) + make.centerY.equalTo(avatar).offset(auto(10)) + } + + infoRadiusView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(topBackgroundImageView.snp.bottom).offset(-auto(37.5)) + make.height.equalTo(auto(73)) + make.width.equalTo(auto(350)) + } + + carInfoView.snp.makeConstraints { make in + make.left.top.bottom.equalToSuperview() + make.width.equalToSuperview().multipliedBy(0.5) + } + + driverInfoView.snp.makeConstraints { make in + make.right.top.bottom.equalToSuperview() + make.width.equalToSuperview().multipliedBy(0.5) + } + + infoRadiusSeparate.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.centerY.equalToSuperview() + } + + orderRadiusView.snp.makeConstraints { make in + make.top.equalTo(infoRadiusView.snp.bottom).offset(auto(10)) + make.width.equalTo(infoRadiusView) + make.centerX.equalToSuperview() + make.height.equalTo(auto(110)) + } + + materialRadiusView.snp.makeConstraints { make in + make.top.equalTo(orderRadiusView.snp.bottom).offset(auto(10)) + make.width.equalTo(infoRadiusView) + make.centerX.equalToSuperview() + make.height.equalTo(auto(110)) + } + + settingsRadiusView.snp.makeConstraints { make in + make.top.equalTo(materialRadiusView.snp.bottom).offset(auto(10)) + make.width.equalTo(infoRadiusView) + make.centerX.equalToSuperview() + make.height.equalTo(auto(110)) + } + + gongdanduizhang.snp.makeConstraints { make in + make.left.right.top.equalToSuperview() + make.height.equalTo(auto(55)) + } + + kaipiaotongzhi.snp.makeConstraints { make in + make.top.equalTo(gongdanduizhang.snp.bottom) + make.left.bottom.right.equalToSuperview() + } + + peixunwendang.snp.makeConstraints { make in + make.top.left.right.equalToSuperview() + make.height.equalTo(auto(55)) + } + + wendangziliao.snp.makeConstraints { make in + make.top.equalTo(peixunwendang.snp.bottom) + make.left.bottom.right.equalToSuperview() + } + + banbenjiance.snp.makeConstraints { make in + make.left.top.right.equalToSuperview() + make.height.equalTo(auto(55)) + } + + tongzhitixing.snp.makeConstraints { make in + make.top.equalTo(banbenjiance.snp.bottom) + make.left.bottom.right.equalToSuperview() + } + + logoutButton.snp.makeConstraints { make in + make.top.equalTo(settingsRadiusView.snp.bottom).offset(auto(20)) + make.bottom.equalToSuperview().offset(-auto(20)) + make.centerX.equalToSuperview() + make.width.equalTo(auto(110)) + make.height.equalTo(auto(35)) + } + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +open class MineCell : DDView { + public let titleLabel : DDLabel + public let arrow : DDImageView + public let line : DDView + + override init(frame: CGRect) { + titleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(14)), textColor: .hex("323643")) + arrow = DDImageView(image: UIImage(named: "mine_info_arrow")) + line = DDView() + super.init(frame: frame) + addSubview(titleLabel) + addSubview(arrow) + line.backgroundColor = .hex("E9E9EA") + addSubview(line) + + titleLabel.snp.makeConstraints { make in + make.left.equalTo(auto(20)) + make.centerY.equalToSuperview() + } + + arrow.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.right.equalTo(-auto(20)) + } + + line.snp.makeConstraints { make in + make.bottom.equalToSuperview() + make.left.equalTo(titleLabel) + make.right.equalTo(arrow) + make.height.equalTo(1) + } + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +public class MineInfoView : DDView { + public let imageView : DDImageView + public let titleLabel : DDLabel + public let descLabel : DDLabel + public let arrow : DDImageView + public override init(frame: CGRect) { + imageView = DDImageView() + titleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(14)), textColor: .hex("203152")) + descLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000").alpha(0.55)) + arrow = DDImageView(image: UIImage(named: "mine_info_arrow")) + super.init(frame: frame) + + addSubview(imageView) + addSubview(titleLabel) + addSubview(descLabel) + addSubview(arrow) + + imageView.snp.makeConstraints { make in + make.left.top.equalTo(auto(20)) + } + + titleLabel.snp.makeConstraints { make in + make.left.equalTo(imageView.snp.right).offset(auto(10)) + make.top.equalTo(imageView.snp.top).offset(auto(5)) + } + + descLabel.snp.makeConstraints { make in + make.left.equalTo(titleLabel) + make.top.equalTo(titleLabel.snp.bottom).offset(auto(5)) + } + + arrow.snp.makeConstraints { make in + make.right.equalTo(-auto(20)) + make.centerY.equalTo(titleLabel) + } + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/OrderScheduling/Rescue/.DS_Store b/OrderScheduling/Rescue/.DS_Store new file mode 100644 index 0000000..6cddc85 Binary files /dev/null and b/OrderScheduling/Rescue/.DS_Store differ diff --git a/OrderScheduling/Rescue/View/RefuseOrderEntryView.swift b/OrderScheduling/Rescue/View/RefuseOrderEntryView.swift new file mode 100644 index 0000000..b5311e7 --- /dev/null +++ b/OrderScheduling/Rescue/View/RefuseOrderEntryView.swift @@ -0,0 +1,298 @@ +// +// RefuseOrderEntryView.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/9. +// + +import Foundation +import DDControlsKit_Private +import DDAutoUIKit_Private +import RxSwift +import RxCocoa + +extension RefuseOrderEntryView : UITextViewDelegate{ + func addActions() { + timeView.selectButton.isSelected = true + distanceTextFieldView.isHidden = true + cannotDispatchTextViewView.isHidden = true + + timeView.selectButton.rx.tap + .subscribe(onNext: {[weak self] _ in + self?.timeView.selectButton.isSelected = true + self?.timeTextFieldView.isHidden = false + self?.distanceView.selectButton.isSelected = false + self?.cannotDispatchView.selectButton.isSelected = false + self?.distanceTextFieldView.isHidden = true + self?.cannotDispatchTextViewView.isHidden = true + }) + .disposed(by: disposeBag) + + distanceView.selectButton.rx.tap + .subscribe(onNext: {[weak self] _ in + self?.distanceView.selectButton.isSelected = true + self?.distanceTextFieldView.isHidden = false + self?.timeView.selectButton.isSelected = false + self?.cannotDispatchView.selectButton.isSelected = false + self?.timeTextFieldView.isHidden = true + self?.cannotDispatchTextViewView.isHidden = true + }) + .disposed(by: disposeBag) + + cannotDispatchView.selectButton.rx.tap + .subscribe(onNext: {[weak self] _ in + self?.cannotDispatchView.selectButton.isSelected = true + self?.cannotDispatchTextViewView.isHidden = false + self?.timeView.selectButton.isSelected = false + self?.distanceView.selectButton.isSelected = false + self?.timeTextFieldView.isHidden = true + self?.distanceTextFieldView.isHidden = true + }) + .disposed(by: disposeBag) + } + + public func textViewDidChange(_ textView: UITextView) { + if textView.text.isEmpty { + cannotDispatchTextViewView.placeHolder.isHidden = false + }else { + cannotDispatchTextViewView.placeHolder.isHidden = true + } + } +} + +open class RefuseOrderEntryView :DDView { + let radiusView : DDView + let topView : DDView + let titleLabel : DDLabel + let exitButton : DDButton + let seperateLine : DDView + public let timeView : RefuseOrderEntryReasonView + public let distanceView : RefuseOrderEntryReasonView + public let cannotDispatchView : RefuseOrderEntryReasonView + public let timeTextFieldView : RefuseOrderEntryTextFieldView + public let distanceTextFieldView : RefuseOrderEntryTextFieldView + public let cannotDispatchTextViewView : RefuseOrderEntryTextViewView + let submitButton : DDButton + let disposeBag : DisposeBag + public override init(frame: CGRect) { + radiusView = DDView() + topView = DDView() + titleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(16)), textColor: .hex("000000")) + exitButton = DDButton.dd_initCustom() + seperateLine = DDView() + timeView = RefuseOrderEntryReasonView() + distanceView = RefuseOrderEntryReasonView() + cannotDispatchView = RefuseOrderEntryReasonView() + timeTextFieldView = RefuseOrderEntryTextFieldView() + distanceTextFieldView = RefuseOrderEntryTextFieldView() + cannotDispatchTextViewView = RefuseOrderEntryTextViewView() + submitButton = DDButton.dd_initCustom() + disposeBag = DisposeBag() + super.init(frame: frame) + + addSubview(radiusView) + topView.backgroundColor = .hex("E3ECF1") + radiusView.addSubview(topView) + titleLabel.text = "拒单原因" + topView.addSubview(titleLabel) + exitButton.setImage(UIImage(named: "refuseOrder_exit"), for: .normal) + exitButton.isHidden = true + topView.addSubview(exitButton) + topView.addSubview(seperateLine) + timeView.titleLabel.text = "时间长" + radiusView.addSubview(timeView) + distanceView.titleLabel.text = "距离远" + radiusView.addSubview(distanceView) + cannotDispatchView.titleLabel.text = "无法派出" + radiusView.addSubview(cannotDispatchView) + timeTextFieldView.layer.cornerRadius = auto(3) + timeTextFieldView.layer.borderColor = UIColor.hex("3364B7").cgColor + timeTextFieldView.layer.borderWidth = 1 + timeTextFieldView.titleLabel.text = "需要" + timeTextFieldView.unitLabel.text = "分钟" + timeTextFieldView.backgroundColor = .hex("ECF4F9") + radiusView.addSubview(timeTextFieldView) + distanceTextFieldView.layer.cornerRadius = auto(3) + distanceTextFieldView.layer.borderColor = UIColor.hex("3364B7").cgColor + distanceTextFieldView.layer.borderWidth = 1 + distanceTextFieldView.backgroundColor = .hex("ECF4F9") + distanceTextFieldView.titleLabel.text = "距离" + distanceTextFieldView.unitLabel.text = "公里" + radiusView.addSubview(distanceTextFieldView) + cannotDispatchTextViewView.layer.cornerRadius = auto(3) + cannotDispatchTextViewView.layer.borderColor = UIColor.hex("3364B7").cgColor + cannotDispatchTextViewView.layer.borderWidth = 1 + cannotDispatchTextViewView.backgroundColor = .hex("ECF4F9") + cannotDispatchTextViewView.textView.delegate = self + radiusView.addSubview(cannotDispatchTextViewView) + submitButton.layer.cornerRadius = auto(20) + submitButton.backgroundColor = .hex("3364B7") + submitButton.setTitle("提交", for: .normal) + radiusView.addSubview(submitButton) + + radiusView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + topView.snp.makeConstraints { make in + make.top.left.right.equalToSuperview() + make.height.equalTo(auto(48)) + } + + titleLabel.snp.makeConstraints { make in + make.centerX.centerY.equalToSuperview() + } + + exitButton.snp.makeConstraints { make in + make.right.equalToSuperview().offset(-auto(20)) + make.centerY.equalToSuperview() + } + + seperateLine.snp.makeConstraints { make in + make.top.equalTo(topView.snp.bottom) + make.left.right.equalToSuperview() + make.height.equalTo(1) + } + + distanceView.snp.makeConstraints { make in + make.top.equalTo(seperateLine.snp.bottom).offset(auto(20)) + make.centerX.equalToSuperview() + make.height.equalTo(30) + make.width.equalTo(70) + } + + timeView.snp.makeConstraints { make in + make.centerY.equalTo(distanceView) + make.right.equalTo(distanceView.snp.left).offset(-auto(30)) + make.width.height.equalTo(distanceView) + } + + cannotDispatchView.snp.makeConstraints { make in + make.centerY.equalTo(distanceView) + make.left.equalTo(distanceView.snp.right).offset(auto(30)) + make.width.height.equalTo(distanceView) + } + + timeTextFieldView.snp.makeConstraints { make in + make.top.equalTo(distanceView.snp.bottom).offset(auto(20)) + make.centerX.equalToSuperview() + make.width.equalTo(auto(265)) + make.height.equalTo(auto(44)) + } + + distanceTextFieldView.snp.makeConstraints { make in + make.top.equalTo(distanceView.snp.bottom).offset(auto(20)) + make.centerX.equalToSuperview() + make.width.equalTo(auto(265)) + make.height.equalTo(auto(44)) + } + + cannotDispatchTextViewView.snp.makeConstraints { make in + make.top.equalTo(distanceView.snp.bottom).offset(auto(20)) + make.left.equalTo(auto(25)) + make.right.equalTo(-auto(25)) + make.height.equalTo(auto(90)) + } + + submitButton.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.bottom.equalToSuperview().offset(-auto(20)) + make.height.equalTo(auto(40)) + make.width.equalTo(auto(165)) + } + + addActions() + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +open class RefuseOrderEntryReasonView : DDView { + public let selectButton : DDButton + public let titleLabel : DDLabel + public override init(frame: CGRect) { + selectButton = DDButton.dd_initCustom() + titleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(14)), textColor: .hex("3364B7")) + super.init(frame: frame) + selectButton.setImage(UIImage(named: "refuseOrder_reason_unselected"), for: .normal) + selectButton.setImage(UIImage(named: "refuseOrder_reason_selected"), for: .selected) + addSubview(selectButton) + addSubview(titleLabel) + selectButton.snp.makeConstraints { make in + make.left.equalToSuperview() + make.centerY.equalToSuperview() + } + titleLabel.snp.makeConstraints { make in + make.left.equalTo(selectButton.snp.right).offset(5) + make.centerY.equalToSuperview() + } + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +open class RefuseOrderEntryTextFieldView : DDView { + public let titleLabel : DDLabel + public let textFiled : DDTextField + public let unitLabel : DDLabel + public override init(frame: CGRect) { + titleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("3364B7")) + textFiled = DDTextField() + unitLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("000000")) + super.init(frame: frame) + addSubview(titleLabel) + textFiled.textAlignment = .center + textFiled.keyboardType = .decimalPad + addSubview(textFiled) + addSubview(unitLabel) + titleLabel.snp.makeConstraints { make in + make.left.equalTo(auto(16)) + make.centerY.equalToSuperview() + } + + unitLabel.snp.makeConstraints { make in + make.right.equalToSuperview().offset(-auto(15)) + make.centerY.equalToSuperview() + } + + textFiled.snp.makeConstraints { make in + make.centerY.centerX.equalToSuperview() + make.width.equalTo(auto(150)) + make.height.equalTo(auto(50)) + } + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +open class RefuseOrderEntryTextViewView : DDView { + public let textView : DDTextView + public let placeHolder : DDLabel + public override init(frame: CGRect) { + textView = DDTextView() + placeHolder = DDLabel.dd_init(withText: "无法派出原因", font: .regularFont(auto(12)), textColor: .hex("3364B7").alpha(0.6)) + super.init(frame: frame) + layer.cornerRadius = auto(3) + layer.borderColor = UIColor.hex("ECF4F9").cgColor + layer.borderWidth = 1 + addSubview(textView) + textView.addSubview(placeHolder) + textView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + placeHolder.snp.makeConstraints { make in + make.left.equalToSuperview().offset(auto(10)) + make.top.equalToSuperview().offset(7) + } + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/OrderScheduling/Rescue/ViewController/DispatchOrderController.swift b/OrderScheduling/Rescue/ViewController/DispatchOrderController.swift new file mode 100644 index 0000000..e171efe --- /dev/null +++ b/OrderScheduling/Rescue/ViewController/DispatchOrderController.swift @@ -0,0 +1,803 @@ +// +// DispatchOrderController.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/10. +// + +import Foundation +import DDControlsKit_Private +import SnapKit +import RxSwift +import RxRelay +import DDAutoUIKit_Private +import DDMAMapKit_Private + +fileprivate let dispatchPannelViewHeight = auto(300) +fileprivate let dispatchPannelViewTopInset = auto(45) + +extension DispatchOrderController { + func addActions() { + + let serviceAddressCoordinate = CLLocationCoordinate2D(latitude: serviceAddressLat, longitude: serviceAddressLon) + let serviceAddressPointAnnotation = MAPointAnnotation.init() + serviceAddressPointAnnotation.annotationClass = DispatchMapSericeAddressPointAnnotation.self + serviceAddressPointAnnotation.coordinate = serviceAddressCoordinate + serviceAddressPointAnnotation.tag = 10000 + dispatchOrderView.maMapView.maMapView.addAnnotation(serviceAddressPointAnnotation) + dispatchOrderView.maMapView.maMapView.setCenter(serviceAddressCoordinate, animated: true) + + let bottomSafeArea = view.safeAreaInsets.bottom + dispatchOrderView.tapGes.rx.event + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + self?.dispatchOrderView.coverView.isHidden = true + + self?.dispatchOrderView.dispatchPannelView.snp.updateConstraints({ make in + make.bottom.equalToSuperview().offset((dispatchPannelViewHeight - dispatchPannelViewTopInset) - bottomSafeArea) + }) + + UIView.animate(withDuration: 0.25) {[weak self] in + self?.dispatchOrderView.layoutIfNeeded() + } + }) + .disposed(by: disposeBag) + + dispatchOrderView.panGes.rx.event + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + self?.dispatchOrderView.coverView.isHidden = true + + self?.dispatchOrderView.dispatchPannelView.snp.updateConstraints({ make in + make.bottom.equalToSuperview().offset((dispatchPannelViewHeight - dispatchPannelViewTopInset) - bottomSafeArea) + }) + + UIView.animate(withDuration: 0.25) {[weak self] in + self?.dispatchOrderView.layoutIfNeeded() + } + }) + .disposed(by: disposeBag) + + dispatchOrderView.dispatchPannelView.onlineButton.rx.tap + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + if let isSelected = self?.dispatchOrderView.dispatchPannelView.onlineButton.isSelected,isSelected == false { + self?.dispatchOrderView.dispatchPannelView.onlineButton.isSelected = !isSelected + self?.dispatchOrderView.dispatchPannelView.offlineButton.isSelected = false + self?.dispatchOrderView.dispatchPannelView.tapBackgroundView.image = UIImage(named: "dispatchOrder_online_tap_background") + self?.dispatchOrderView.dispatchPannelView.tableView.isHidden = false + self?.dispatchOrderView.dispatchPannelView.offlineView.isHidden = true + } + + self?.dispatchOrderView.coverView.isHidden = false + + self?.dispatchOrderView.dispatchPannelView.snp.updateConstraints({ make in + make.bottom.equalToSuperview().offset(0) + }) + + UIView.animate(withDuration: 0.25) {[weak self] in + self?.dispatchOrderView.layoutIfNeeded() + } + }) + .disposed(by: disposeBag) + + dispatchOrderView.dispatchPannelView.offlineButton.rx.tap + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + if let isSelected = self?.dispatchOrderView.dispatchPannelView.offlineButton.isSelected,isSelected == false { + self?.dispatchOrderView.dispatchPannelView.offlineButton.isSelected = !isSelected + self?.dispatchOrderView.dispatchPannelView.onlineButton.isSelected = false + self?.dispatchOrderView.dispatchPannelView.tapBackgroundView.image = UIImage(named: "dispatchOrder_offline_tap_background") + self?.dispatchOrderView.dispatchPannelView.tableView.isHidden = true + self?.dispatchOrderView.dispatchPannelView.offlineView.isHidden = false + } + + self?.dispatchOrderView.coverView.isHidden = false + + self?.dispatchOrderView.dispatchPannelView.snp.updateConstraints({ make in + make.bottom.equalToSuperview().offset(0) + }) + + UIView.animate(withDuration: 0.25) {[weak self] in + self?.dispatchOrderView.layoutIfNeeded() + } + }) + .disposed(by: disposeBag) + + dispatchOrderView.dispatchPannelView.offlineView.rewriteButton.rx.tap + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + self?.dispatchOrderView.dispatchPannelView.offlineView.name.textFiled.text = nil + self?.dispatchOrderView.dispatchPannelView.offlineView.phone.textFiled.text = nil + self?.dispatchOrderView.dispatchPannelView.offlineView.license.textFiled.text = nil + }) + .disposed(by: disposeBag) + + dispatchOrderView.dispatchPannelView.offlineView.submitButton.rx.tap + .filter({[weak self] _ in + if self?.dispatchOrderView.dispatchPannelView.offlineView.name.textFiled.text?.isEmpty != false { + self?.view.dd_makeToast(dispatchOrderInputName) + return false + } + if self?.dispatchOrderView.dispatchPannelView.offlineView.phone.textFiled.text?.isEmpty != false { + self?.view.dd_makeToast(dispatchOrderInputPhone) + return false + } + if self?.dispatchOrderView.dispatchPannelView.offlineView.license.textFiled.text?.isEmpty != false { + self?.view.dd_makeToast(dispatchOrderInputLicense) + return false + } + return self?.dispatchOrderView.dispatchPannelView.offlineView.name.textFiled.text?.isEmpty == false && self?.dispatchOrderView.dispatchPannelView.offlineView.phone.textFiled.text?.isEmpty == false && self?.dispatchOrderView.dispatchPannelView.offlineView.license.textFiled.text?.isEmpty == false + }) + .flatMapLatest {[weak self] _ in + return RQ.dispatchVehicle(parameters: DispatchVehicleParameters(type: .offline, userOrderId: (self?.userOrderId)!, taskOrderId: (self?.taskOrderId)!,driverName: (self?.dispatchOrderView.dispatchPannelView.offlineView.name.textFiled.text)!,driverPhone: (self?.dispatchOrderView.dispatchPannelView.offlineView.phone.textFiled.text)!,plateNumber: (self?.dispatchOrderView.dispatchPannelView.offlineView.license.textFiled.text)!)) + } + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] response in + self?.dispatchOrderResponse(response: response) + }) + .disposed(by: disposeBag) + + dispatchOrderRelay + .flatMapLatest {[weak self] model in + return RQ.dispatchVehicle(parameters: DispatchVehicleParameters(type: .online, userOrderId: (self?.userOrderId)!, taskOrderId: (self?.taskOrderId)!,driverId: model.driverId,vehicleId: model.vehicleId)) + } + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] response in + self?.dispatchOrderResponse(response: response) + }) + .disposed(by: disposeBag) + + RQ.dispatchVehicleList(parameters: DispatchVehicleListParameters(type:.online, userOrderId: userOrderId, taskOrderId: taskOrderId)) + .observe(on: MainScheduler.instance) + .subscribe(onSuccess: {[weak self] response in + if response?.success == true { + if let array = response?.data { + // 重新计算数组 + self?.resultArr.removeAll() + self?.resultArr.append(contentsOf: array) + self?.dispatchOrderView.maMapView.maMapView.removeAnnotations(self?.vehicleAnnotions) + self?.vehicleAnnotions.removeAll() + + for index in 0..?) { + view.dd_makeToast(response?.msg ?? dispatchOrderSuccess,completion: {[weak self] _ in + DispatchQueue.main.async { + self?.navigationController?.popViewController(animated: true) + } + + if self?.dispatchCompletionHandler != nil { + self?.dispatchCompletionHandler?((self?.userOrderId)!) + } + }) + } +} + +extension DispatchOrderController : UITableViewDelegate,UITableViewDataSource { + public func numberOfSections(in tableView: UITableView) -> Int { + return 1 + } + + public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return resultArr.count + } + + public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + var cell = tableView.dequeueReusableCell(withIdentifier: "cell") as? DispatchOrderPannelCell + if cell == nil { + cell = DispatchOrderPannelCell.init(style: .default, reuseIdentifier: "cell") + } + let model = resultArr[indexPath.item] + switch model.vehicleStatus.code { + case .offLine,.lostConnection: + cell?.stateLabel.textColor = .hex("787878") + cell?.name.textColor = .hex("787878") + cell?.phone.textColor = .hex("787878") + cell?.distance.textColor = .hex("787878") + break + default: + cell?.stateLabel.textColor = .hex("3364B7") + cell?.name.textColor = .hex("3364B7") + cell?.phone.textColor = .hex("3364B7") + cell?.distance.textColor = .hex("3364B7") + break + } + + var status = model.vehicleStatus.label + if model.onlineStatus.code == .lostConnection { + status = status + ",掉" + } + cell?.stateLabel.text = (model.vehicleName ?? "")+"/"+status + cell?.name.text = model.driverName + cell?.phone.text = model.driverPhone + if let distance = model.distance { + cell?.distance.text = String(distance)+"km" + } + + cell?.dispatchButton.rx.tap + .subscribe(onNext: {[weak self] _ in + self?.dispatchOrderRelay.accept(model) + }) + .disposed(by: cell!.disposeBag) + return cell! + } +} + +extension DispatchOrderController : DDMAMapViewDelegate { + public func dd_mapView(_ mapView: MAMapView, viewFor annotation: MAAnnotation) -> MAAnnotationView { + if annotation.isMember(of: MAPointAnnotation.self) { + let pointAnnotation = annotation as! MAPointAnnotation + if pointAnnotation.annotationClass == DispatchMapStatePointAnnotation.self{ + let DriverPointReuseIndentifier = "DispatchMapStatePointAnnotation" + var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: DriverPointReuseIndentifier) as? DispatchMapStatePointAnnotation + if annotationView == nil { + annotationView = DispatchMapStatePointAnnotation.init(annotation: pointAnnotation, reuseIdentifier: DriverPointReuseIndentifier) + } + annotationView!.annotation = pointAnnotation + let model = resultArr[pointAnnotation.tag] + annotationView?.stateLabel.text = model.vehicleStatus.label + annotationView?.nameLabel.text = model.vehicleName + + switch model.vehicleStatus.code { + case .offLine,.lostConnection: + annotationView?.pointView.backgroundColor = .hex("787878") + annotationView?.verticalView.backgroundColor = .hex("787878") + annotationView?.stateImageView.backgroundColor = .hex("787878") + break + case .onLine,.leisure: + annotationView?.pointView.backgroundColor = .hex("2956DB") + annotationView?.verticalView.backgroundColor = .hex("2956DB") + annotationView?.stateImageView.backgroundColor = .hex("2956DB") + break + case .busy: + annotationView?.pointView.backgroundColor = .hex("BA1717") + annotationView?.verticalView.backgroundColor = .hex("BA1717") + annotationView?.stateImageView.backgroundColor = .hex("BA1717") + break + case .BuyBusy: + annotationView?.pointView.backgroundColor = .hex("ffa400") + annotationView?.verticalView.backgroundColor = .hex("ffa400") + annotationView?.stateImageView.backgroundColor = .hex("ffa400") + break + } + return annotationView! + } + + if pointAnnotation.annotationClass == DispatchMapSericeAddressPointAnnotation.self{ + let DriverPointReuseIndentifier = "DispatchMapSericeAddressPointAnnotation" + var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: DriverPointReuseIndentifier) as? DispatchMapSericeAddressPointAnnotation + if annotationView == nil { + annotationView = DispatchMapSericeAddressPointAnnotation.init(annotation: pointAnnotation, reuseIdentifier: DriverPointReuseIndentifier) + } + annotationView!.annotation = pointAnnotation + return annotationView! + } + } + + return MAAnnotationView.init(annotation: annotation, reuseIdentifier: "cell") + } + + public func dd_mapView(_ mapView: MAMapView, didAnnotationViewTapped view: MAAnnotationView) { + zIndex += 1 + view.zIndex = zIndex + } +} + +open class DispatchOrderController : DDViewController { + private let disposeBag = DisposeBag() + private let dispatchOrderView = DispatchOrderView() + private let userOrderId : Int + private let taskOrderId : Int + private var resultArr : [DispatchVehicleListDataModel] = [] + private var vehicleAnnotions : [MAPointAnnotation] = [] + public var zIndex = 0 + private let serviceAddressLat : Double + private let serviceAddressLon : Double + private let dispatchOrderRelay = ReplayRelay.create(bufferSize: 1) + public var dispatchCompletionHandler: ((Int) -> Void)? + public init(userOrderId:Int,taskOrderId:Int,serviceAddressLat:Double,serviceAddressLon:Double) { + self.userOrderId = userOrderId + self.taskOrderId = taskOrderId + self.serviceAddressLat = serviceAddressLat + self.serviceAddressLon = serviceAddressLon + super.init(nibName: nil, bundle: nil) + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + open override func viewDidLoad() { + super.viewDidLoad() + let image = UIImage(named: "dispatchOrder_back")?.withRenderingMode(.alwaysOriginal) + dd_backBarButtonItem?.image = image + dd_navigationBarBackgroundColor = .clear + addSubviews() + addActions() + } + + func addSubviews() { + view.addSubview(dispatchOrderView) + dispatchOrderView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + dispatchOrderView.maMapView.delegate = self + dispatchOrderView.dispatchPannelView.tableView.delegate = self + dispatchOrderView.dispatchPannelView.tableView.dataSource = self + } + + open override var preferredStatusBarStyle: UIStatusBarStyle { + return .darkContent + } +} + +open class DispatchOrderPannelCell : DDTableViewCell { + public let stateLabel : DDLabel + public let name : DDLabel + public let phone : DDLabel + public let distance : DDLabel + public let dispatchButton : DDButton + public var dispatchLayer : CAGradientLayer = { + var layer = CAGradientLayer.init() + layer.startPoint = CGPoint(x: 0, y: 0) + layer.endPoint = CGPoint(x: 1, y: 1) + layer.locations = [0.0,1.0] + layer.colors = [UIColor.hex("FF5A2C").cgColor,UIColor.hex("FE9D4D").cgColor] + layer.cornerRadius = auto(4) + layer.masksToBounds = true + return layer + }() + public var disposeBag = DisposeBag() + + public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + stateLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("3364B7")) + name = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("3364B7")) + phone = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("3364B7")) + distance = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("3364B7")) + dispatchButton = DDButton.dd_initCustom() + super.init(style: style, reuseIdentifier: reuseIdentifier) + selectionStyle = .none + +// stateLabel.lineBreakMode = .byTruncatingMiddle + stateLabel.numberOfLines = 0 + contentView.addSubview(stateLabel) + contentView.addSubview(name) + contentView.addSubview(phone) + distance.lineBreakMode = .byTruncatingMiddle + contentView.addSubview(distance) + dispatchButton.layer.cornerRadius = auto(4) + dispatchButton.layer.masksToBounds = true + dispatchButton.setTitle("派单", for: .normal) + dispatchButton.titleLabel?.font = .mediumFont(auto(12)) + dispatchButton.layer.insertSublayer(dispatchLayer, at: 0) + contentView.addSubview(dispatchButton) + + stateLabel.snp.makeConstraints { make in + make.left.equalTo(auto(10)) + make.centerY.equalToSuperview() + make.width.equalTo(auto(95)) + } + + name.snp.makeConstraints { make in + make.left.equalTo(stateLabel.snp.right).offset(auto(5)) + make.centerY.equalToSuperview() + make.width.equalTo(auto(40)) + } + + phone.snp.makeConstraints { make in + make.left.equalTo(name.snp.right).offset(auto(5)) + make.centerY.equalToSuperview() + make.width.equalTo(auto(100)) + } + + distance.snp.makeConstraints { make in + make.left.equalTo(phone.snp.right).offset(0) + make.centerY.equalToSuperview() + make.width.equalTo(auto(60)) + } + + dispatchButton.snp.makeConstraints { make in + make.right.equalTo(-auto(10)) + make.width.equalTo(auto(50)) + make.height.equalTo(auto(20)) + make.centerY.equalToSuperview() + } + } + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + open override func layoutSubviews() { + super.layoutSubviews() + dispatchLayer.frame = CGRectMake(0, 0, auto(50), auto(20)) + } + + open override func prepareForReuse() { + super.prepareForReuse() + disposeBag = DisposeBag() + } +} + +open class DispatchOrderView : DDView { + public let dispatchPannelView : DispatchOrderPannelView + public let maMapView : DDMAMapView + public let coverView : DDView + public let tapGes : UITapGestureRecognizer + public let panGes : UIPanGestureRecognizer + public override init(frame: CGRect) { + dispatchPannelView = DispatchOrderPannelView() + maMapView = DDMAMapView() + coverView = DDView() + tapGes = UITapGestureRecognizer() + panGes = UIPanGestureRecognizer() + super.init(frame: frame) + + addSubview(maMapView) + coverView.addGestureRecognizer(tapGes) + coverView.addGestureRecognizer(panGes) + addSubview(coverView) + addSubview(dispatchPannelView) + + maMapView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + coverView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + dispatchPannelView.snp.makeConstraints { make in + make.bottom.equalToSuperview() + make.left.right.equalToSuperview() + make.height.equalTo(dispatchPannelViewHeight) + } + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +open class DispatchOrderPannelView : DDView { + private let radiusView : DDView + public let tableView : DDTableView + public let offlineView : DispatchOrderOfflineSchedulingView + public let onlineButton : DDButton + public let offlineButton : DDButton + public let tapBackgroundView : DDImageView + public override init(frame: CGRect) { + radiusView = DDView() + tableView = DDTableView.init(frame: CGRectZero, style: .plain) + offlineView = DispatchOrderOfflineSchedulingView() + onlineButton = DDButton.dd_initCustom() + offlineButton = DDButton.dd_initCustom() + tapBackgroundView = DDImageView.init() + super.init(frame: frame) + backgroundColor = .clear + radiusView.backgroundColor = .clear + addSubview(radiusView) + tapBackgroundView.contentMode = .scaleAspectFill + radiusView.addSubview(tapBackgroundView) + onlineButton.setImage(UIImage(named: "dispatchOrder_online_unselected"), for: .normal) + onlineButton.setImage(UIImage(named: "dispatchOrder_online_selected"), for: .selected) + onlineButton.setTitle("线上调度", for: .normal) + onlineButton.setTitle("线上调度", for: .selected) + onlineButton.setTitleColor(.hex("585E6F").alpha(0.7), for: .normal) + onlineButton.setTitleColor(.hex("000000"), for: .selected) + onlineButton.titleLabel?.font = .mediumFont(auto(16)) + onlineButton.dd_customize(with: .ImageLeftPaddingTitleRightWithWholeCenter, padding: auto(10)) + radiusView.addSubview(onlineButton) + offlineButton.setImage(UIImage(named: "dispatchOrder_offline_unselected"), for: .normal) + offlineButton.setImage(UIImage(named: "dispatchOrder_offline_selected"), for: .selected) + offlineButton.setTitle("线下调度", for: .normal) + offlineButton.setTitle("线下调度", for: .selected) + offlineButton.setTitleColor(.hex("585E6F").alpha(0.7), for: .normal) + offlineButton.setTitleColor(.hex("000000"), for: .selected) + offlineButton.titleLabel?.font = .mediumFont(auto(16)) + offlineButton.dd_customize(with: .ImageLeftPaddingTitleRightWithWholeCenter, padding: auto(10)) + radiusView.addSubview(offlineButton) + tableView.backgroundColor = .white + tableView.separatorStyle = .none + radiusView.addSubview(tableView) + radiusView.addSubview(offlineView) + + radiusView.layer.cornerRadius = auto(4) + radiusView.snp.makeConstraints { make in + make.top.left.right.equalToSuperview() + make.bottom.equalTo(-safeAreaInsets.bottom) + } + + tapBackgroundView.snp.makeConstraints { make in + make.left.right.equalToSuperview() + make.top.equalToSuperview().offset(-auto(20)) + make.height.equalTo(auto(65)) + } + + onlineButton.snp.makeConstraints { make in + make.top.equalToSuperview() + make.height.equalTo(auto(45)) + make.width.equalToSuperview().multipliedBy(0.5) + make.left.equalToSuperview() + } + + offlineButton.snp.makeConstraints { make in + make.top.equalToSuperview() + make.right.equalToSuperview() + make.height.equalTo(auto(45)) + make.width.equalToSuperview().multipliedBy(0.5) + } + + tableView.snp.makeConstraints { make in + make.top.equalTo(tapBackgroundView.snp.bottom) + make.left.right.bottom.equalToSuperview() + } + + offlineView.snp.makeConstraints { make in + make.top.equalTo(tapBackgroundView.snp.bottom) + make.left.right.bottom.equalToSuperview() + } + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +open class DispatchOrderOfflineSchedulingView : DDView { + public let name : DispatchOrderOfflineSchedulingItemView + public let phone : DispatchOrderOfflineSchedulingItemView + public let license : DispatchOrderOfflineSchedulingItemView + public let rewriteButton : DDButton + public let submitButton : DDButton + override init(frame: CGRect) { + name = DispatchOrderOfflineSchedulingItemView() + phone = DispatchOrderOfflineSchedulingItemView() + license = DispatchOrderOfflineSchedulingItemView() + rewriteButton = DDButton.dd_initCustom() + submitButton = DDButton.dd_initCustom() + super.init(frame: frame) + backgroundColor = .white + name.titleLabel.text = "技师姓名" + name.textFiled.attributedPlaceholder = NSAttributedString(string: dispatchOrderInputName,attributes: [.font:UIFont.mediumFont(auto(14)),.foregroundColor:UIColor.hex("A1A1A1")]) + addSubview(name) + phone.titleLabel.text = "技师电话" + phone.textFiled.attributedPlaceholder = NSAttributedString(string: dispatchOrderInputPhone,attributes: [.font:UIFont.mediumFont(auto(14)),.foregroundColor:UIColor.hex("A1A1A1")]) + addSubview(phone) + license.titleLabel.text = "车牌号码" + license.textFiled.attributedPlaceholder = NSAttributedString(string: dispatchOrderInputLicense,attributes: [.font:UIFont.mediumFont(auto(14)),.foregroundColor:UIColor.hex("A1A1A1")]) + addSubview(license) + rewriteButton.layer.cornerRadius = auto(4) + rewriteButton.layer.borderColor = UIColor.hex("DDDDDD").cgColor + rewriteButton.layer.borderWidth = 1 + rewriteButton.setTitle("重新填写", for: .normal) + rewriteButton.setTitleColor(.hex("323643").alpha(0.9), for: .normal) + rewriteButton.titleLabel?.font = .mediumFont(auto(14)) + addSubview(rewriteButton) + submitButton.layer.cornerRadius = auto(4) + submitButton.backgroundColor = .hex("2A5094") + submitButton.setTitle("确定提交", for: .normal) + submitButton.setTitleColor(.white, for: .normal) + submitButton.titleLabel?.font = .mediumFont(auto(14)) + addSubview(submitButton) + + name.snp.makeConstraints { make in + make.top.equalTo(auto(30)) + make.left.right.equalToSuperview() + make.height.equalTo(auto(40)) + } + + phone.snp.makeConstraints { make in + make.top.equalTo(name.snp.bottom) + make.left.right.equalToSuperview() + make.height.equalTo(auto(40)) + } + + license.snp.makeConstraints { make in + make.top.equalTo(phone.snp.bottom) + make.left.right.equalToSuperview() + make.height.equalTo(auto(40)) + } + + rewriteButton.snp.makeConstraints { make in + make.right.equalTo(snp.centerX).offset(-auto(5)) + make.top.equalTo(license.snp.bottom).offset(auto(30)) + make.width.equalTo(auto(150)) + make.height.equalTo(auto(40)) + } + + submitButton.snp.makeConstraints { make in + make.left.equalTo(snp.centerX).offset(auto(5)) + make.top.equalTo(rewriteButton) + make.width.equalTo(auto(150)) + make.height.equalTo(auto(40)) + } + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +open class DispatchOrderOfflineSchedulingItemView : DDView { + public let titleLabel : DDLabel + public let textFiled : DDTextField + public let line : DDView + override init(frame: CGRect) { + titleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(14)), textColor: .hex("323643").alpha(0.9)) + textFiled = DDTextField.init() + line = DDView.init() + super.init(frame: frame) + + addSubview(titleLabel) + textFiled.textAlignment = .right + textFiled.font = .mediumFont(auto(14)) + textFiled.textColor = .hex("323643").alpha(0.9) + addSubview(textFiled) + line.backgroundColor = .hex("F5F5F5") + addSubview(line) + + titleLabel.snp.makeConstraints { make in + make.left.equalTo(auto(30)) + make.centerY.equalToSuperview() + } + + textFiled.snp.makeConstraints { make in + make.right.equalTo(-auto(30)) + make.centerY.equalToSuperview() + } + + line.snp.makeConstraints { make in + make.bottom.equalToSuperview() + make.left.equalTo(auto(30)) + make.right.equalTo(-auto(30)) + make.height.equalTo(1) + } + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +class DispatchMapSericeAddressPointAnnotation : MAAnnotationView { + private let topImageView : DDImageView + private let bottonImageView : DDImageView + + override init!(annotation: MAAnnotation!, reuseIdentifier: String!) { + topImageView = DDImageView(image: UIImage(named: "dispatchOrder_serviceAddress_top")) + bottonImageView = DDImageView(image: UIImage(named: "dispatchOrder_serviceAddress_bottom")) + super.init(annotation: annotation, reuseIdentifier: reuseIdentifier) + + addSubview(bottonImageView) + addSubview(topImageView) + + topImageView.snp.makeConstraints { make in + make.top.equalToSuperview() + make.centerX.equalToSuperview() + make.height.equalTo(30) + make.width.equalTo(20) + } + + bottonImageView.snp.makeConstraints { make in + make.bottom.equalToSuperview() + make.centerX.equalToSuperview() + make.width.height.equalTo(15) + } + frame = CGRect(x: 0, y: 0, width: 20, height: 40) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +class DispatchMapStatePointAnnotation : MAAnnotationView { + public let radiusView : DDView + public let stateImageView : DDImageView + public let stateLabel : DDLabel + public let nameLabel : DDLabel + public let verticalView : UIView + public let pointView : UIView + + override init!(annotation: MAAnnotation!, reuseIdentifier: String!) { + radiusView = DDView.init() + stateImageView = DDImageView.init() + stateLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(10)), textColor: .white(alpha: 1.0)) + nameLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("#2C395F")) + verticalView = UIView.init() + pointView = UIView.init() + super.init(annotation: annotation, reuseIdentifier: reuseIdentifier) + setUpSubviews() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func setUpSubviews(){ + backgroundColor = .white + frame = CGRect(x: 0, y: 0, width: auto(100), height: auto(30)) + layer.cornerRadius = auto(4) + + radiusView.backgroundColor = .white(alpha: 1) + radiusView.layer.cornerRadius = auto(4) + radiusView.layer.masksToBounds = true + radiusView.isUserInteractionEnabled = false + addSubview(radiusView) + radiusView.snp.makeConstraints { make in + make.top.equalTo(0) + make.centerX.equalToSuperview() + make.width.equalTo(auto(100)) + make.height.equalTo(auto(30)) + } + + stateImageView.isUserInteractionEnabled = false + radiusView.addSubview(stateImageView) + stateImageView.snp.makeConstraints { make in + make.left.top.bottom.equalToSuperview() + make.centerY.equalToSuperview() + make.width.height.equalTo(auto(30)) + } + + stateLabel.textAlignment = .center + stateLabel.isUserInteractionEnabled = false + stateImageView.addSubview(stateLabel) + stateLabel.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + nameLabel.textAlignment = .center + nameLabel.numberOfLines = 0 + nameLabel.isUserInteractionEnabled = false + radiusView.addSubview(nameLabel) + nameLabel.snp.makeConstraints { make in + make.left.equalTo(stateImageView.snp.right) + make.right.equalToSuperview() + make.centerY.equalTo(stateImageView.snp.centerY) + } + + verticalView.isUserInteractionEnabled = false + addSubview(verticalView) + verticalView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(radiusView.snp.bottom) + make.width.equalTo(auto(2.5)) + make.height.equalTo(auto(15)) + } + + pointView.isUserInteractionEnabled = false + pointView.layer.cornerRadius = auto(5) + pointView.layer.borderColor = UIColor.white.cgColor + pointView.layer.borderWidth = auto(2) + addSubview(pointView) + pointView.snp.makeConstraints { make in + make.centerX.equalTo(verticalView.snp.centerX) + make.top.equalTo(verticalView.snp.bottom).offset(0) + make.width.height.equalTo(auto(10)) + } + + } +} + diff --git a/OrderScheduling/Rescue/ViewController/RescueController.swift b/OrderScheduling/Rescue/ViewController/RescueController.swift new file mode 100644 index 0000000..d4d23d5 --- /dev/null +++ b/OrderScheduling/Rescue/ViewController/RescueController.swift @@ -0,0 +1,1546 @@ +// +// RescueController.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/4. +// + +import Foundation +import JXCategoryView +import SnapKit +import DDCategoryKit_Private +import DDAutoUIKit_Private +import DDControlsKit_Private +import RxSwift +import RxRelay +import MJRefresh +import DDWebImageKit_Private + +// MARK: Action +extension RescueController { + func addActions() { + MCOUNT.messageCountRelay + .subscribe(onNext: {[weak self] count in + if count > 0 { + self?.messageView.countLabel.isHidden = false + self?.messageView.countLabel.text = String(count) + self?.messageView.countLabel.snp.updateConstraints({ make in + make.width.equalTo(20) + }) + }else{ + self?.messageView.countLabel.isHidden = true + self?.messageView.countLabel.snp.updateConstraints({ make in + make.width.equalTo(0) + }) + } + }) + .disposed(by: disposeBag) + + MCOUNT.pendingCountRelay + .subscribe(onNext: {[weak self] count in + if count > 0 { + self?.pendingView.countLabel.isHidden = false + self?.pendingView.countLabel.text = String(count) + self?.pendingView.countLabel.snp.updateConstraints({ make in + make.width.equalTo(20) + }) + }else{ + self?.pendingView.countLabel.isHidden = true + self?.pendingView.countLabel.snp.updateConstraints({ make in + make.width.equalTo(0) + }) + } + }) + .disposed(by: disposeBag) + + NotificationCenter.default.post(name: NSNotification.Name(rawValue: Notification_reloadRescusControolerToDoMessageCount), object: nil) + + messageTapGes.rx.event + .subscribe(onNext: {[weak self] _ in + let vc = MessageCenterController() + self?.navigationController?.pushViewController(vc, animated: true) + }) + .disposed(by: disposeBag) + + pendingTapGes.rx.event + .subscribe(onNext: { _ in + + }) + .disposed(by: disposeBag) + } + +} + +extension RescuePendingOrderController { + func addActions() { + pendingOrderView.tableView.mj_header = MJRefreshNormalHeader(refreshingBlock: {[weak self] in + self?.pageNum = 1 + self?.refreshRelay.accept(self?.pageNum ?? 1) + }) + + pendingOrderView.tableView.mj_footer = MJRefreshBackNormalFooter(refreshingBlock: {[weak self] in + self?.pageNum+=1 + self?.refreshRelay.accept(self?.pageNum ?? 1) + }) + + refreshRelay + .flatMapLatest { pageNum in + return Observable.zip(RQ.orderList(parameters: OrderListParameters(pageNum: pageNum, queryType: .TO_ACCEPT_DISPATCH)).asObservable(), Observable.just(pageNum)) + } + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] (response, pageNum) in + if response?.success == true { + if pageNum == 1 { + if response?.data?.isEmpty == false { + self?.resultArr.removeAll() + self?.pendingOrderView.tableView.mj_footer?.resetNoMoreData() + } + self?.pendingOrderView.tableView.mj_header?.endRefreshing() + }else{ + if response?.data?.isEmpty == false { + self?.pendingOrderView.tableView.mj_footer?.endRefreshing() + }else{ + self?.pendingOrderView.tableView.mj_footer?.endRefreshingWithNoMoreData() + } + } + + if let array = response?.data { + self?.resultArr.append(contentsOf: array) + self?.pendingOrderView.tableView.reloadData() + } + }else{ + if pageNum == 1 { + self?.pendingOrderView.tableView.mj_header?.endRefreshing() + }else{ + self?.pendingOrderView.tableView.mj_footer?.endRefreshing() + } + self?.view.dd_makeToast(response?.msg) + } + }) + .disposed(by: disposeBag) + + pendingOrderView.tableView.mj_header?.beginRefreshing() + + refuseRemarkIdRelay + .flatMapLatest { model in + return Observable.zip(RQ.refuseDispatch(parameters: RefuseDispatchParameters(userOrderId: model.userOrderId, taskOrderId: model.taskOrderId)).asObservable(), Observable.just(model)) + } + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] (response,model) in + if response?.success == true { + self?.entry(model: model,remarkId: response?.data) + }else{ + self?.view.dd_makeToast(response?.msg) + } + }) + .disposed(by: disposeBag) + + acceptOrderRelay + .flatMapLatest { model in + return Observable.zip(RQ.acceptDispatch(parameters: AcceptDispatchParameters(userOrderId: model.userOrderId, taskOrderId: model.taskOrderId)).asObservable(), Observable.just(model)) + } + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] (response,model) in + if response?.success == true { + self?.resultArr.removeAll { _model in + _model.userOrderId == model.userOrderId + } + self?.pendingOrderView.tableView.reloadData() + }else{ + self?.view.dd_makeToast(response?.msg) + } + }) + .disposed(by: disposeBag) + } + + func entry(model:OrderListDataModel,remarkId:String?) { + let view = RefuseOrderEntryView() + view.exitButton.rx.tap + .observe(on: MainScheduler.instance) + .subscribe(onNext: { _ in + ENTRY.dismiss(name: refuseOrderEntry) + }) + .disposed(by: disposeBag) + + view.submitButton.rx.tap + .flatMapLatest({[weak self] _ in + return self?.getRefuseParameters(view:view,model: model,remarkId: remarkId) ?? Observable.just(RefuseDispatchParameters(userOrderId: model.userOrderId, taskOrderId: model.taskOrderId)) + }) + .flatMapLatest({ parameters in + return RQ.refuseDispatch(parameters: parameters) + }) + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] response in + if response?.success == true { + self?.resultArr.removeAll { _model in + _model.userOrderId == model.userOrderId + } + self?.pendingOrderView.tableView.reloadData() + ENTRY.dismiss(name: refuseOrderEntry) + }else{ + self?.view.dd_makeToast(response?.msg) + } + }) + .disposed(by: disposeBag) + ENTRY.showRefuseOrderEntry(view: view,name: refuseOrderEntry) + } + + func getRefuseParameters(view:RefuseOrderEntryView,model:OrderListDataModel,remarkId:String?) -> Observable{ + return Observable.create { ob in + var refuseReasonItem : String? + var refuseReasonDesc : String? + if view.timeView.selectButton.isSelected == true { + refuseReasonItem = RefuseDispatchParameters.RefuseReasonItemEnum.time.rawValue + refuseReasonDesc = view.timeTextFieldView.textFiled.text + } + if view.distanceView.selectButton.isSelected == true { + refuseReasonItem = RefuseDispatchParameters.RefuseReasonItemEnum.disatance.rawValue + refuseReasonDesc = view.distanceTextFieldView.textFiled.text + } + if view.cannotDispatchView.selectButton.isSelected == true { + refuseReasonItem = RefuseDispatchParameters.RefuseReasonItemEnum.cannotDispatch.rawValue + refuseReasonDesc = view.cannotDispatchTextViewView.textView.text + } + let parameters = RefuseDispatchParameters(userOrderId: model.userOrderId, taskOrderId: model.taskOrderId,remarkId: remarkId,refuseReasonItem: refuseReasonItem,refuseReasonDesc: refuseReasonDesc) + ob.onNext(parameters) + ob.onCompleted() + return Disposables.create() + } + } +} + +extension RescuePendingDispatchController { + + func addActions() { + pendingDispatchView.tableView.mj_header = MJRefreshNormalHeader(refreshingBlock: {[weak self] in + self?.pageNum = 1 + self?.refreshRelay.accept(self?.pageNum ?? 1) + }) + + pendingDispatchView.tableView.mj_footer = MJRefreshBackNormalFooter(refreshingBlock: {[weak self] in + self?.pageNum+=1 + self?.refreshRelay.accept(self?.pageNum ?? 1) + }) + + refreshRelay + .flatMapLatest { pageNum in + return Observable.zip(RQ.orderList(parameters: OrderListParameters(pageNum: pageNum, queryType: .TO_DISPATCH_VEHICLE)).asObservable(), Observable.just(pageNum)) + } + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] (response, pageNum) in + if response?.success == true { + if pageNum == 1 { + if response?.data?.isEmpty == false { + self?.resultArr.removeAll() + self?.pendingDispatchView.tableView.mj_footer?.resetNoMoreData() + } + self?.pendingDispatchView.tableView.mj_header?.endRefreshing() + }else{ + if response?.data?.isEmpty == false { + self?.pendingDispatchView.tableView.mj_footer?.endRefreshing() + }else{ + self?.pendingDispatchView.tableView.mj_footer?.endRefreshingWithNoMoreData() + } + } + + if let array = response?.data { + self?.resultArr.append(contentsOf: array) + self?.pendingDispatchView.tableView.reloadData() + } + }else{ + if pageNum == 1 { + self?.pendingDispatchView.tableView.mj_header?.endRefreshing() + }else{ + self?.pendingDispatchView.tableView.mj_footer?.endRefreshing() + } + self?.view.dd_makeToast(response?.msg) + } + }) + .disposed(by: disposeBag) + + pendingDispatchView.tableView.mj_header?.beginRefreshing() + } +} + +extension RescueIsIngController { + func addActions() { + pendingIsIngView.tableView.mj_header = MJRefreshNormalHeader(refreshingBlock: {[weak self] in + self?.pageNum = 1 + self?.refreshRelay.accept(self?.pageNum ?? 1) + }) + + pendingIsIngView.tableView.mj_footer = MJRefreshBackNormalFooter(refreshingBlock: {[weak self] in + self?.pageNum+=1 + self?.refreshRelay.accept(self?.pageNum ?? 1) + }) + + refreshRelay + .flatMapLatest { pageNum in + return Observable.zip(RQ.orderList(parameters: OrderListParameters(pageNum: pageNum, queryType: .TO_RESCUE)).asObservable(), Observable.just(pageNum)) + } + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] (response, pageNum) in + if response?.success == true { + if pageNum == 1 { + if response?.data?.isEmpty == false { + self?.resultArr.removeAll() + self?.pendingIsIngView.tableView.mj_footer?.resetNoMoreData() + } + self?.pendingIsIngView.tableView.mj_header?.endRefreshing() + }else{ + if response?.data?.isEmpty == false { + self?.pendingIsIngView.tableView.mj_footer?.endRefreshing() + }else{ + self?.pendingIsIngView.tableView.mj_footer?.endRefreshingWithNoMoreData() + } + } + + if let array = response?.data { + self?.resultArr.append(contentsOf: array) + self?.pendingIsIngView.tableView.reloadData() + } + }else{ + if pageNum == 1 { + self?.pendingIsIngView.tableView.mj_header?.endRefreshing() + }else{ + self?.pendingIsIngView.tableView.mj_footer?.endRefreshing() + } + self?.view.dd_makeToast(response?.msg) + } + }) + .disposed(by: disposeBag) + + pendingIsIngView.tableView.mj_header?.beginRefreshing() + } +} + +// MARK: JXCategoryViewDelegate,JXCategoryListContainerViewDelegate +extension RescueController : JXCategoryViewDelegate,JXCategoryListContainerViewDelegate { + func number(ofListsInlistContainerView listContainerView: JXCategoryListContainerView!) -> Int { + return categoryView.titles.count + } + + func listContainerView(_ listContainerView: JXCategoryListContainerView!, initListFor index: Int) -> JXCategoryListContentViewDelegate! { + if index == 0 { + return RescuePendingOrderController.init() + } + if index == 1 { + return RescuePendingDispatchController.init() + } + return RescueIsIngController.init() + } +} + +// MARK: UITableViewDelegate,UITableViewDataSource +extension RescuePendingOrderController : UITableViewDelegate,UITableViewDataSource { + func numberOfSections(in tableView: UITableView) -> Int { + return 1 + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return resultArr.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + var cell = tableView.dequeueReusableCell(withIdentifier: "cell") as? RescuePendingOrderCell + if cell == nil { + cell = RescuePendingOrderCell(style: .default, reuseIdentifier: "cell") + cell?.line.backgroundColor = .hex("E9E9EA").alpha(0.6) + cell?.merchantTitleLabel.text = "商户名称:" + cell?.serviceTitleLabel.text = "服务地:" + cell?.acceptButton.setTitle("接单", for: .normal) + cell?.refuseButton.setTitle("拒单", for: .normal) + } +// + let model = resultArr[indexPath.row] + cell?.typeLabel.text = model.taskServiceName + cell?.orderNumLabel.text = model.orderCode + cell?.merchantLabel.text = model.contractName + if model.model?.isEmpty == false { + cell?.carTypeTitleLabel.text = "车型:" + cell?.carTypeLabel.text = model.model + cell?.carTypeTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.merchantLabel.snp.bottom).offset(auto(8)) + }) + }else{ + cell?.carTypeTitleLabel.text = nil + cell?.carTypeLabel.text = nil + cell?.carTypeTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.merchantLabel.snp.bottom).offset(0) + }) + } + cell?.serviceLabel.text = model.vehiclePointAddress + if model.destinationAddress?.isEmpty == false { + cell?.destinationTitleLabel.text = "目的地:" + cell?.destinationLabel.text = model.destinationAddress + cell?.destinationTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.serviceLabel.snp.bottom).offset(auto(8)) + }) + }else{ + cell?.destinationTitleLabel.text = nil + cell?.destinationLabel.text = nil + cell?.destinationTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.serviceLabel.snp.bottom).offset(0) + }) + } + if model.appointTime?.isEmpty == false { + cell?.reserveTitleLabel.text = "预约时间:" + cell?.reserveLabel.text = model.appointTime + cell?.reserveTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.destinationLabel.snp.bottom).offset(auto(8)) + }) + }else{ + cell?.reserveTitleLabel.text = nil + cell?.reserveLabel.text = nil + cell?.reserveTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.destinationLabel.snp.bottom).offset(0) + }) + } + + cell?.refuseButton.rx.tap + .subscribe(onNext: {[weak self] _ in + self?.refuseRemarkIdRelay.accept(model) + }) + .disposed(by: cell!.disposeBag) + + cell?.acceptButton.rx.tap + .subscribe(onNext: {[weak self] _ in + self?.acceptOrderRelay.accept(model) + }) + .disposed(by: disposeBag) + return cell! + } +} + +extension RescuePendingDispatchController : UITableViewDelegate,UITableViewDataSource { + func numberOfSections(in tableView: UITableView) -> Int { + return 1 + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return resultArr.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + var cell = tableView.dequeueReusableCell(withIdentifier: "cell") as? RescuePendingDispatchCell + if cell == nil { + cell = RescuePendingDispatchCell(style: .default, reuseIdentifier: "cell") + cell?.line.backgroundColor = .hex("E9E9EA").alpha(0.6) + cell?.merchantTitleLabel.text = "客商:" + cell?.positionTitleLabel.text = "所处位置:" + cell?.serviceTitleLabel.text = "事发地:" + cell?.contactButton.setTitle("联系客户", for: .normal) + cell?.dispatchButton.setTitle("指派车辆", for: .normal) + } + + let model = resultArr[indexPath.row] + cell?.typeLabel.text = model.taskServiceName + cell?.orderNumLabel.text = model.orderCode + cell?.merchantLabel.text = model.contractName + if model.model?.isEmpty == false { + cell?.carTypeTitleLabel.text = "车型:" + cell?.carTypeLabel.text = model.model + cell?.carTypeTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.merchantLabel.snp.bottom).offset(auto(8)) + }) + }else{ + cell?.carTypeTitleLabel.text = nil + cell?.carTypeLabel.text = nil + cell?.carTypeTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.merchantLabel.snp.bottom).offset(0) + }) + } + + cell?.serviceLabel.text = model.vehiclePointAddress + + if model.vehiclePointRemark?.isEmpty == false { + cell?.destinationNoticeView.isHidden = false + cell?.serviceNoticeLabel.text = "备注:"+(model.vehiclePointRemark ?? "") + cell?.serviceNoticeView.snp.updateConstraints({ make in + make.top.equalTo(cell!.serviceLabel.snp.bottom).offset(auto(2.5)) + }) + cell?.serviceNoticeLabel.snp.updateConstraints({ make in + make.top.equalTo(auto(5)) + make.bottom.equalTo(-auto(5)) + }) + }else{ + cell?.destinationNoticeView.isHidden = true + cell?.serviceNoticeLabel.text = nil + cell?.serviceNoticeView.snp.updateConstraints({ make in + make.top.equalTo(cell!.serviceLabel.snp.bottom).offset(0) + }) + cell?.serviceNoticeLabel.snp.updateConstraints({ make in + make.top.equalTo(0) + make.bottom.equalTo(0) + }) + } + if model.destinationAddress?.isEmpty == false { + cell?.destinationTitleLabel.text = "目的地:" + cell?.destinationLabel.text = model.destinationAddress + cell?.destinationTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.serviceNoticeView.snp.bottom).offset(auto(2.5)) + }) + }else{ + cell?.destinationTitleLabel.text = nil + cell?.destinationLabel.text = nil + cell?.destinationTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.serviceNoticeView.snp.bottom).offset(0) + }) + } + if model.destinationRemark?.isEmpty == false { + cell?.destinationNoticeView.isHidden = false + cell?.destinationNoticeLabel.text = "备注:"+(model.destinationRemark ?? "") + cell?.destinationNoticeView.snp.updateConstraints({ make in + make.top.equalTo(cell!.destinationLabel.snp.bottom).offset(auto(2.5)) + }) + cell?.destinationNoticeLabel.snp.updateConstraints({ make in + make.top.equalTo(auto(5)) + make.bottom.equalTo(-auto(5)) + }) + }else{ + cell?.destinationNoticeView.isHidden = true + cell?.destinationNoticeLabel.text = nil + cell?.destinationNoticeView.snp.updateConstraints({ make in + make.top.equalTo(cell!.destinationLabel.snp.bottom).offset(0) + }) + cell?.destinationNoticeLabel.snp.updateConstraints({ make in + make.top.equalTo(0) + make.bottom.equalTo(0) + }) + } + if model.appointTime?.isEmpty == false { + cell?.reserveTitleLabel.text = "预约时间:" + cell?.reserveLabel.text = model.appointTime + cell?.reserveTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.destinationNoticeView.snp.bottom).offset(auto(2.5)) + }) + }else{ + cell?.reserveTitleLabel.text = nil + cell?.reserveLabel.text = nil + cell?.reserveTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.destinationNoticeView.snp.bottom).offset(0) + }) + } + + cell?.photoCollectionView.delegate = self + cell?.photoCollectionView.dataSource = self + cell?.photoCollectionView.register(RescuePendingDispatchPhotoCell.self, forCellWithReuseIdentifier: "cell") + + if model.environmentPic?.isEmpty == false { + let environmentPics = model.environmentPic?.components(separatedBy: ",") + cell?.photoTitleLabel.text = "查看照片:" + cell?.photoView.isHidden = false + cell?.photoTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.reserveTitleLabel.snp.bottom).offset(auto(8)) + }) + cell?.photoView.snp.updateConstraints({ make in + make.height.equalTo(auto(50)) + }) + if let environmentPics { + self.environmentPics = environmentPics + cell?.photoCollectionView.reloadData() + } + }else{ + cell?.photoTitleLabel.text = nil + cell?.photoView.isHidden = true + cell?.photoTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.reserveTitleLabel.snp.bottom).offset(0) + }) + cell?.photoView.snp.updateConstraints({ make in + make.height.equalTo(0) + }) + } + + cell?.contactButton.rx.tap + .subscribe(onNext: { _ in + TOOL.call(phone: model.userPhone) + }) + .disposed(by: cell!.disposeBag) + cell?.dispatchButton.rx.tap + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + let vc = DispatchOrderController.init(userOrderId: model.userOrderId, taskOrderId: model.taskOrderId,serviceAddressLat: model.vehiclePointLatitude,serviceAddressLon: model.vehiclePointLongitude) + vc.dispatchCompletionHandler = {[weak self] _ in + self?.resultArr.removeAll(where: { _model in + _model.userOrderId == model.userOrderId + }) + + self?.pendingDispatchView.tableView.reloadData() + } + self?.navigationController?.pushViewController(vc, animated: true) + }) + .disposed(by: cell!.disposeBag) + return cell! + } +} + +extension RescueIsIngController : UITableViewDelegate,UITableViewDataSource { + func numberOfSections(in tableView: UITableView) -> Int { + return 1 + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return resultArr.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + var cell = tableView.dequeueReusableCell(withIdentifier: "cell") as? RescueIsIngCell + if cell == nil { + cell = RescueIsIngCell(style: .default, reuseIdentifier: "cell") + cell?.line.backgroundColor = .hex("E9E9EA").alpha(0.6) + cell?.serviceTitleLabel.text = "故障地:" + cell?.destinationTitleLabel.text = "目的地:" + cell?.reportButton.setTitle("报备", for: .normal) + cell?.dispatchButton.setTitle("改派单", for: .normal) + } + let model = resultArr[indexPath.row] + + cell?.typeLabel.text = model.taskServiceName + cell?.orderNumLabel.text = model.orderCode + cell?.orderDateLabel.text = model.createTime + + if model.driverName?.isEmpty == false && model.drivePhone?.isEmpty == false { + cell?.driverLabel.text = "\(model.driverName!)/\(model.drivePhone!)" + }else if model.driverName?.isEmpty == false { + cell?.driverLabel.text = model.driverName! + }else if model.drivePhone?.isEmpty == false { + cell?.driverLabel.text = model.drivePhone! + }else{ + cell?.driverLabel.text = nil + } + + cell?.serviceLabel.text = model.vehiclePointAddress + if model.destinationAddress?.isEmpty == false { + cell?.destinationTitleLabel.text = "目的地:" + cell?.destinationLabel.text = model.destinationAddress + cell?.destinationTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.serviceLabel.snp.bottom).offset(auto(8)) + }) + }else{ + cell?.destinationTitleLabel.text = nil + cell?.destinationLabel.text = nil + cell?.destinationTitleLabel.snp.updateConstraints({ make in + make.top.equalTo(cell!.serviceLabel.snp.bottom).offset(0) + }) + } + + cell?.dispatchButton.rx.tap + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + let vc = DispatchOrderController.init(userOrderId: model.userOrderId, taskOrderId: model.taskOrderId,serviceAddressLat: model.vehiclePointLatitude,serviceAddressLon: model.vehiclePointLongitude) + vc.dispatchCompletionHandler = {[weak self] _ in + self?.resultArr.removeAll(where: { _model in + _model.userOrderId == model.userOrderId + }) + + self?.pendingIsIngView.tableView.reloadData() + } + self?.navigationController?.pushViewController(vc, animated: true) + }) + .disposed(by: cell!.disposeBag) + return cell! + } +} + +// MARK: UICollectionViewDelegate, UICollectionViewDataSource +extension RescuePendingDispatchController : UICollectionViewDelegate, UICollectionViewDataSource { + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return environmentPics.count > 4 ? 4 : environmentPics.count + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as? RescuePendingDispatchPhotoCell + let imageUrlStr = environmentPics[indexPath.item] + if imageUrlStr.contains(".mp4?") == true { + DispatchQueue.global().async { + let image = DDImage.dd_thumbnailImage(forVideo: URL(string: imageUrlStr)!) + DispatchQueue.main.async { + cell!.imageView.image = image + } + } + let cmTime = TOOL.getDuration(url: URL(string: imageUrlStr)!) + cell!.dateLabel.text = TOOL.getVideoDateString(duration: Int(cmTime.seconds)) + }else{ + cell!.imageView.sd_setImage(with: URL(string: imageUrlStr)) + cell!.dateLabel.text = nil + } + return cell! + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + let vc = RescuePhotoController(environmentPics: environmentPics) + navigationController?.pushViewController(vc, animated: true) + } +} + +// MARK: 救援中 +class RescueController : DDViewController { + private let categoryView = JXCategoryTitleView() + private lazy var categoryContainerView = JXCategoryListContainerView(type: .scrollView, delegate: self) + private let messageTapGes = UITapGestureRecognizer() + private let messageView = MessageView() + private let pendingTapGes = UITapGestureRecognizer() + private let pendingView = MessageView() + private let disposeBag = DisposeBag() + + override func viewDidLoad() { + super.viewDidLoad() + dd_navigationBarBackgroundColor = .hex("354683") + dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(auto(15))] + dd_navigationItemTitle = "救援工单" + navigationItem.leftBarButtonItems = nil + addSubviews() + addActions() + } + + func addSubviews() { + categoryView.titles = ["待接单","待派车","救援中"] + categoryView.titleColor = .hex("737373").alpha(0.55) + categoryView.titleSelectedColor = .hex("3678FF") + categoryView.backgroundColor = .hex("F4F5F7") + categoryView.delegate = self + view.addSubview(categoryView) + categoryView.snp.makeConstraints { make in + make.left.right.equalToSuperview() + make.top.equalTo(CGRectGetMaxY(navigationController?.navigationBar.frame ?? CGRectZero) + CGRectGetHeight(UIApplication.shared.dd_statusBarFrame)) + make.height.equalTo(auto(44)) + } + // 指示器 + let indicator = JXCategoryIndicatorLineView() + indicator.indicatorColor = .hex("3678FF") + indicator.indicatorWidth = JXCategoryViewAutomaticDimension + indicator.verticalMargin = 7 + categoryView.indicators = [indicator] + + // 内容 + view.addSubview(categoryContainerView!) + categoryView.listContainer = categoryContainerView + categoryContainerView?.snp.makeConstraints({ make in + make.top.equalTo(categoryView.snp.bottom) + make.left.right.equalToSuperview() + make.bottom.equalTo(-(view.safeAreaInsets.bottom+CGRectGetHeight(tabBarController?.tabBar.frame ?? CGRectZero))) + }) + + messageView.titleLabel.text = "消息" + messageView.addGestureRecognizer(messageTapGes) + navigationItem.leftBarButtonItem = UIBarButtonItem(customView: messageView) + messageView.snp.makeConstraints { make in + make.height.equalTo(40) + make.width.greaterThanOrEqualTo(40) + } + + pendingView.titleLabel.text = "待办" + pendingView.addGestureRecognizer(pendingTapGes) + navigationItem.rightBarButtonItem = UIBarButtonItem(customView: pendingView) + pendingView.snp.makeConstraints { make in + make.height.equalTo(40) + make.width.greaterThanOrEqualTo(40) + } + } +} + +// MARK: 待派单 +class RescuePendingOrderController : DDViewController { + private let disposeBag = DisposeBag() + private let pendingOrderView = RescuePendingOrderView() + private var resultArr : [OrderListDataModel] = [] + private var refreshRelay = ReplayRelay.create(bufferSize: 1) + private var pageNum : Int = 1 + private var refuseRemarkIdRelay = ReplayRelay.create(bufferSize: 1) + private var refuseSubmitRelay = ReplayRelay.create(bufferSize: 1) + private var acceptOrderRelay = ReplayRelay.create(bufferSize: 1) + + override func viewDidLoad() { + super.viewDidLoad() + dd_navigationBarBackgroundColor = .hex("354683") + dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(17)] + addSubviews() + addActions() + } + + func addSubviews() { + view.addSubview(pendingOrderView) + pendingOrderView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + pendingOrderView.tableView.delegate = self + pendingOrderView.tableView.dataSource = self + } +} + +// MARK: 待派车 +class RescuePendingDispatchController : DDViewController { + private let disposeBag = DisposeBag() + private let pendingDispatchView = RescuePendingDispatchView() + private var resultArr : [OrderListDataModel] = [] + private var environmentPics : [String] = [] + private var refreshRelay = ReplayRelay.create(bufferSize: 1) + private var pageNum : Int = 1 + + override func viewDidLoad() { + super.viewDidLoad() + dd_navigationBarBackgroundColor = .hex("354683") + dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(17)] + addSubviews() + addActions() + } + + func addSubviews() { + view.addSubview(pendingDispatchView) + pendingDispatchView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + pendingDispatchView.tableView.delegate = self + pendingDispatchView.tableView.dataSource = self + } +} + +// MARK: 救援中 +class RescueIsIngController : DDViewController { + private let disposeBag = DisposeBag() + private let pendingIsIngView = RescueIsIngView() + private var resultArr : [OrderListDataModel] = [] + private var refreshRelay = ReplayRelay.create(bufferSize: 1) + private var pageNum : Int = 1 + + override func viewDidLoad() { + super.viewDidLoad() + dd_navigationBarBackgroundColor = .hex("354683") + dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(17)] + addSubviews() + addActions() + } + + func addSubviews() { + view.addSubview(pendingIsIngView) + pendingIsIngView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + pendingIsIngView.tableView.delegate = self + pendingIsIngView.tableView.dataSource = self + } +} + +// MARK: Cell +class RescuePendingOrderCell : DDTableViewCell { + public let radiusView : DDView + public let typeLabel : DDLabel + public let orderNumLabel : DDLabel + public let line : DDView + public let merchantTitleLabel : DDLabel + public let merchantLabel : DDLabel + public let carTypeTitleLabel : DDLabel + public let carTypeLabel : DDLabel + public let serviceTitleLabel : DDLabel + public let serviceLabel : DDLabel + public let destinationTitleLabel : DDLabel + public let destinationLabel : DDLabel + public let reserveTitleLabel : DDLabel + public let reserveLabel : DDLabel + public let refuseButton : DDButton + public let acceptButton : DDButton + public var acceptLayer : CAGradientLayer = { + var layer = CAGradientLayer.init() + layer.startPoint = CGPoint(x: 0, y: 0) + layer.endPoint = CGPoint(x: 1, y: 1) + layer.locations = [0.0,1.0] + layer.colors = [UIColor.hex("FF5A2C").cgColor,UIColor.hex("FE9D4D").cgColor] + layer.cornerRadius = auto(4) + layer.masksToBounds = true + return layer + }() + public var disposeBag : DisposeBag + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + radiusView = DDView.init() + typeLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("000000").alpha(0.85)) + orderNumLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(11)), textColor: .hex("000000").alpha(0.55)) + line = DDView.init() + merchantTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + merchantLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000")) + carTypeTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + carTypeLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000")) + serviceTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + serviceLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000")) + destinationTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + destinationLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000")) + reserveTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + reserveLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000")) + refuseButton = DDButton.dd_initCustom() + refuseButton.titleLabel?.font = .mediumFont(auto(13)) + refuseButton.setTitleColor(.hex("000000").alpha(0.7), for: .normal) + acceptButton = DDButton.dd_initCustom() + acceptButton.titleLabel?.font = .mediumFont(auto(13)) + acceptButton.setTitleColor(.hex("FFFFFF"), for: .normal) + disposeBag = DisposeBag() + super.init(style: style, reuseIdentifier: reuseIdentifier) + + contentView.backgroundColor = .hex("F4F5F7") + radiusView.layer.cornerRadius = auto(6) + radiusView.layer.shadowColor = UIColor.black(alpha: 0.1).cgColor + radiusView.layer.shadowOpacity = 1.0 + radiusView.layer.shadowRadius = 3 + radiusView.layer.shadowOffset = CGSize(width: 0, height: 3) + radiusView.backgroundColor = .white + contentView.addSubview(radiusView) + radiusView.addSubview(typeLabel) + radiusView.addSubview(orderNumLabel) + radiusView.addSubview(line) + radiusView.addSubview(merchantTitleLabel) + radiusView.addSubview(merchantLabel) + carTypeLabel.numberOfLines = 0 + radiusView.addSubview(carTypeLabel) + radiusView.addSubview(carTypeTitleLabel) + radiusView.addSubview(serviceTitleLabel) + serviceLabel.numberOfLines = 0 + radiusView.addSubview(serviceLabel) + radiusView.addSubview(destinationTitleLabel) + destinationLabel.numberOfLines = 0 + radiusView.addSubview(destinationLabel) + radiusView.addSubview(reserveTitleLabel) + radiusView.addSubview(reserveLabel) + refuseButton.layer.borderColor = UIColor.hex("DDDDDD").cgColor + refuseButton.layer.borderWidth = 1 + refuseButton.layer.cornerRadius = auto(4) + radiusView.addSubview(refuseButton) + acceptButton.layer.cornerRadius = auto(4) + acceptButton.layer.masksToBounds = true + acceptButton.backgroundColor = .hex("FF5A2C") + acceptButton.layer.insertSublayer(acceptLayer, at: 0) + radiusView.addSubview(acceptButton) + + radiusView.snp.makeConstraints { make in + make.left.equalTo(auto(12)) + make.right.equalTo(-auto(12)) + make.top.equalTo(0) + make.bottom.equalTo(-auto(12)) + } + typeLabel.snp.makeConstraints { make in + make.left.equalTo(auto(18)) + make.top.equalTo(auto(13)) + } + + orderNumLabel.snp.makeConstraints { make in + make.centerY.equalTo(typeLabel) + make.left.equalTo(typeLabel.snp.right).offset(auto(20)) + } + + line.snp.makeConstraints { make in + make.top.equalTo(typeLabel.snp.bottom).offset(auto(7)) + make.left.right.equalTo(0) + make.height.equalTo(0.5) + } + + merchantTitleLabel.snp.makeConstraints { make in + make.top.equalTo(line.snp.bottom).offset(auto(8)) + make.left.equalTo(typeLabel) + make.width.equalTo(auto(80)) + } + + merchantLabel.snp.makeConstraints { make in + make.centerY.equalTo(merchantTitleLabel) + make.left.equalTo(merchantTitleLabel.snp.right) + make.right.equalTo(-auto(20)) + } + + carTypeTitleLabel.snp.makeConstraints { make in + make.top.equalTo(merchantLabel.snp.bottom).offset(auto(8)) + make.left.equalTo(typeLabel) + make.width.equalTo(merchantTitleLabel) + } + + carTypeLabel.snp.makeConstraints { make in + make.top.equalTo(carTypeTitleLabel) + make.left.equalTo(carTypeTitleLabel.snp.right) + make.right.equalTo(-auto(20)) + } + + serviceTitleLabel.snp.makeConstraints { make in + make.top.equalTo(carTypeLabel.snp.bottom).offset(auto(8)) + make.left.equalTo(typeLabel) + make.width.equalTo(merchantTitleLabel) + } + + serviceLabel.snp.makeConstraints { make in + make.top.equalTo(serviceTitleLabel) + make.left.equalTo(serviceTitleLabel.snp.right) + make.right.equalTo(-auto(20)) + } + + destinationTitleLabel.snp.makeConstraints { make in + make.top.equalTo(serviceLabel.snp.bottom).offset(auto(8)) + make.left.equalTo(typeLabel) + make.width.equalTo(merchantTitleLabel) + } + + destinationLabel.snp.makeConstraints { make in + make.top.equalTo(destinationTitleLabel) + make.left.equalTo(destinationTitleLabel.snp.right) + make.right.equalTo(-auto(20)) + } + + reserveTitleLabel.snp.makeConstraints { make in + make.top.equalTo(destinationLabel.snp.bottom).offset(auto(8)) + make.left.equalTo(typeLabel) + make.width.equalTo(merchantTitleLabel) + } + + reserveLabel.snp.makeConstraints { make in + make.centerY.equalTo(reserveTitleLabel) + make.left.equalTo(reserveTitleLabel.snp.right) + } + + acceptButton.snp.makeConstraints { make in + make.right.equalToSuperview().offset(-auto(10)) + make.top.equalTo(reserveTitleLabel.snp.bottom).offset(auto(10)) + make.width.equalTo(auto(80)) + make.height.equalTo(auto(30)) + make.bottom.equalToSuperview().offset(-auto(10)) + } + + refuseButton.snp.makeConstraints { make in + make.right.equalTo(acceptButton.snp.left).offset(-auto(10)) + make.top.equalTo(acceptButton) + make.width.height.equalTo(acceptButton) + } + + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func layoutSubviews() { + super.layoutSubviews() + acceptLayer.frame = CGRectMake(0, 0, auto(80), auto(30)) + } + + override func prepareForReuse() { + super.prepareForReuse() + disposeBag = DisposeBag() + } +} + +class RescuePendingDispatchCell : DDTableViewCell { + public let radiusView : DDView + public let typeLabel : DDLabel + public let orderNumLabel : DDLabel + public let line : DDView + public let merchantTitleLabel : DDLabel + public let merchantLabel : DDLabel + public let carTypeTitleLabel : DDLabel + public let carTypeLabel : DDLabel + public let positionTitleLabel : DDLabel + public let positionLabel : DDLabel + public let serviceTitleLabel : DDLabel + public let serviceLabel : DDLabel + public let serviceNoticeView : DDView + public let serviceNoticeLabel : DDLabel + public let destinationTitleLabel : DDLabel + public let destinationLabel : DDLabel + public let destinationNoticeView : DDView + public let destinationNoticeLabel : DDLabel + public let reserveTitleLabel : DDLabel + public let reserveLabel : DDLabel + public let photoTitleLabel : DDLabel + public let photoView : DDView + public let photoCollectionView : DDCollectionView + public let contactButton : DDButton + public let dispatchButton : DDButton + public var dispatchLayer : CAGradientLayer = { + var layer = CAGradientLayer.init() + layer.startPoint = CGPoint(x: 0, y: 0) + layer.endPoint = CGPoint(x: 1, y: 1) + layer.locations = [0.0,1.0] + layer.colors = [UIColor.hex("FF5A2C").cgColor,UIColor.hex("FE9D4D").cgColor] + layer.cornerRadius = auto(4) + layer.masksToBounds = true + return layer + }() + public var disposeBag : DisposeBag + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + radiusView = DDView.init() + typeLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("000000").alpha(0.85)) + orderNumLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(11)), textColor: .hex("000000").alpha(0.55)) + line = DDView.init() + merchantTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + merchantLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000")) + carTypeTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + carTypeLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000")) + positionTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + positionLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000")) + serviceTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + serviceLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000")) + serviceNoticeView = DDView.init() + serviceNoticeLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(11)), textColor: .hex("FF8F37")) + destinationTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + destinationLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000")) + destinationNoticeView = DDView.init() + destinationNoticeLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(11)), textColor: .hex("FF8F37")) + reserveTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + reserveLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000")) + photoTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + photoView = DDView.init() + let flowLayout = UICollectionViewFlowLayout.init() + flowLayout.itemSize = CGSize(width: auto(60), height: auto(45)) + flowLayout.scrollDirection = .vertical + flowLayout.minimumInteritemSpacing = auto(5) + photoCollectionView = DDCollectionView(frame: CGRectZero, collectionViewLayout: flowLayout) + contactButton = DDButton.dd_initCustom() + contactButton.titleLabel?.font = .mediumFont(auto(13)) + contactButton.setTitleColor(.hex("000000").alpha(0.7), for: .normal) + dispatchButton = DDButton.dd_initCustom() + dispatchButton.setTitleColor(.hex("FFFFFF"), for: .normal) + dispatchButton.titleLabel?.font = .mediumFont(auto(13)) + disposeBag = DisposeBag() + super.init(style: style, reuseIdentifier: reuseIdentifier) + + contentView.backgroundColor = .hex("F4F5F7") + radiusView.layer.cornerRadius = auto(6) + radiusView.layer.shadowColor = UIColor.black(alpha: 0.1).cgColor + radiusView.layer.shadowOpacity = 1.0 + radiusView.layer.shadowRadius = 3 + radiusView.layer.shadowOffset = CGSize(width: 0, height: 3) + radiusView.backgroundColor = .white + contentView.addSubview(radiusView) + radiusView.addSubview(typeLabel) + radiusView.addSubview(orderNumLabel) + radiusView.addSubview(line) + radiusView.addSubview(merchantTitleLabel) + radiusView.addSubview(merchantLabel) + radiusView.addSubview(positionTitleLabel) + radiusView.addSubview(positionLabel) + carTypeLabel.numberOfLines = 0 + radiusView.addSubview(carTypeLabel) + radiusView.addSubview(carTypeTitleLabel) + radiusView.addSubview(serviceTitleLabel) + serviceLabel.numberOfLines = 0 + radiusView.addSubview(serviceLabel) + serviceNoticeView.backgroundColor = .hex("FFF7EE") + radiusView.addSubview(serviceNoticeView) + serviceNoticeLabel.numberOfLines = 0 + serviceNoticeView.addSubview(serviceNoticeLabel) + radiusView.addSubview(destinationTitleLabel) + destinationLabel.numberOfLines = 0 + radiusView.addSubview(destinationLabel) + destinationNoticeView.backgroundColor = .hex("FFF7EE") + radiusView.addSubview(destinationNoticeView) + destinationNoticeLabel.numberOfLines = 0 + destinationNoticeView.addSubview(destinationNoticeLabel) + radiusView.addSubview(reserveTitleLabel) + radiusView.addSubview(reserveLabel) + radiusView.addSubview(photoTitleLabel) + radiusView.addSubview(photoView) + photoCollectionView.backgroundColor = .white + photoView.addSubview(photoCollectionView) + contactButton.layer.borderColor = UIColor.hex("DDDDDD").cgColor + contactButton.layer.borderWidth = 1 + contactButton.layer.cornerRadius = auto(4) + radiusView.addSubview(contactButton) + dispatchButton.layer.cornerRadius = auto(4) + dispatchButton.layer.masksToBounds = true + dispatchButton.backgroundColor = .hex("FF5A2C") + dispatchButton.layer.insertSublayer(dispatchLayer, at: 0) + radiusView.addSubview(dispatchButton) + + radiusView.snp.makeConstraints { make in + make.left.equalTo(auto(12)) + make.right.equalTo(-auto(12)) + make.top.equalTo(0) + make.bottom.equalTo(-auto(12)) + } + typeLabel.snp.makeConstraints { make in + make.left.equalTo(auto(18)) + make.top.equalTo(auto(13)) + } + + orderNumLabel.snp.makeConstraints { make in + make.centerY.equalTo(typeLabel) + make.left.equalTo(typeLabel.snp.right).offset(auto(20)) + } + + line.snp.makeConstraints { make in + make.top.equalTo(typeLabel.snp.bottom).offset(auto(7)) + make.left.right.equalTo(0) + make.height.equalTo(0.5) + } + + merchantTitleLabel.snp.makeConstraints { make in + make.top.equalTo(line.snp.bottom).offset(auto(8)) + make.left.equalTo(typeLabel) + make.width.equalTo(auto(70)) + } + + merchantLabel.snp.makeConstraints { make in + make.centerY.equalTo(merchantTitleLabel) + make.left.equalTo(merchantTitleLabel.snp.right) + make.right.equalTo(-auto(20)) + } + + carTypeTitleLabel.snp.makeConstraints { make in + make.top.equalTo(merchantLabel.snp.bottom).offset(auto(8)) + make.left.equalTo(typeLabel) + make.width.equalTo(merchantTitleLabel) + } + + carTypeLabel.snp.makeConstraints { make in + make.top.equalTo(carTypeTitleLabel) + make.left.equalTo(carTypeTitleLabel.snp.right) + make.right.equalTo(-auto(20)) + } + + serviceTitleLabel.snp.makeConstraints { make in + make.top.equalTo(carTypeLabel.snp.bottom).offset(auto(8)) + make.left.equalTo(typeLabel) + make.width.equalTo(merchantTitleLabel) + } + + serviceLabel.snp.makeConstraints { make in + make.top.equalTo(serviceTitleLabel) + make.left.equalTo(serviceTitleLabel.snp.right) + make.right.equalTo(-auto(20)) + } + + serviceNoticeView.snp.makeConstraints { make in + make.top.equalTo(serviceLabel.snp.bottom).offset(auto(2.5)) + make.left.equalTo(auto(10)) + make.right.equalTo(-auto(10)) + } + + serviceNoticeLabel.snp.makeConstraints { make in + make.top.left.equalToSuperview().offset(auto(5)) + make.bottom.right.equalToSuperview().offset(-auto(5)) + } + + destinationTitleLabel.snp.makeConstraints { make in + make.top.equalTo(serviceNoticeView.snp.bottom).offset(auto(2.5)) + make.left.equalTo(typeLabel) + make.width.equalTo(merchantTitleLabel) + } + + destinationLabel.snp.makeConstraints { make in + make.top.equalTo(destinationTitleLabel) + make.left.equalTo(destinationTitleLabel.snp.right) + make.right.equalTo(-auto(20)) + } + + destinationNoticeView.snp.makeConstraints { make in + make.top.equalTo(destinationLabel.snp.bottom).offset(auto(2.5)) + make.left.equalTo(auto(10)) + make.right.equalTo(-auto(10)) + } + + destinationNoticeLabel.snp.makeConstraints { make in + make.top.left.equalToSuperview().offset(auto(5)) + make.bottom.right.equalToSuperview().offset(-auto(5)) + } + + reserveTitleLabel.snp.makeConstraints { make in + make.top.equalTo(destinationNoticeView.snp.bottom).offset(auto(2.5)) + make.left.equalTo(typeLabel) + make.width.equalTo(merchantTitleLabel) + } + + reserveLabel.snp.makeConstraints { make in + make.centerY.equalTo(reserveTitleLabel) + make.left.equalTo(reserveTitleLabel.snp.right) + } + + photoTitleLabel.snp.makeConstraints { make in + make.left.equalTo(typeLabel) + make.top.equalTo(reserveTitleLabel.snp.bottom).offset(auto(8)) + make.width.equalTo(merchantTitleLabel) + } + + photoView.snp.makeConstraints { make in + make.left.equalTo(photoTitleLabel.snp.right) + make.top.equalTo(photoTitleLabel) + make.right.equalToSuperview().offset(-auto(5)) + make.height.equalTo(auto(50)) + } + + photoCollectionView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + dispatchButton.snp.makeConstraints { make in + make.right.equalToSuperview().offset(-auto(10)) + make.top.equalTo(photoView.snp.bottom).offset(auto(10)) + make.width.equalTo(auto(80)) + make.height.equalTo(auto(30)) + make.bottom.equalToSuperview().offset(-auto(10)) + } + + contactButton.snp.makeConstraints { make in + make.right.equalTo(dispatchButton.snp.left).offset(-auto(10)) + make.top.equalTo(dispatchButton) + make.width.height.equalTo(dispatchButton) + } + + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func layoutSubviews() { + super.layoutSubviews() + dispatchLayer.frame = CGRectMake(0, 0, auto(80), auto(30)) + } + + override func prepareForReuse() { + super.prepareForReuse() + disposeBag = DisposeBag() + } +} + +class RescuePendingDispatchPhotoCell : DDCollectionViewCell { + public let imageView : DDImageView + public let dateLabel : DDLabel + + override init(frame: CGRect) { + imageView = DDImageView.init() + dateLabel = DDLabel.dd_init(withText: "", font: .regularFont(12), textColor: .white) + super.init(frame: frame) + contentView.backgroundColor = .hex("F4F5F7") + imageView.contentMode = .scaleAspectFill + imageView.layer.masksToBounds = true + addSubview(imageView) + addSubview(dateLabel) + imageView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + dateLabel.snp.makeConstraints { make in + make.right.equalToSuperview().offset(-auto(2)) + make.bottom.equalToSuperview().offset(-auto(2)) + } + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +class RescueIsIngCell : DDTableViewCell { + public let radiusView : DDView + public let typeLabel : DDLabel + public let orderNumLabel : DDLabel + public let orderStatusLabel : DDLabel + public let line : DDView + public let orderDateLabel : DDLabel + public let driverLabel : DDLabel + public let serviceTitleLabel : DDLabel + public let serviceLabel : DDLabel + public let destinationTitleLabel : DDLabel + public let destinationLabel : DDLabel + public let dispatchButton : DDButton + public let reportButton : DDButton + public var disposeBag : DisposeBag + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + radiusView = DDView.init() + typeLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("000000").alpha(0.85)) + orderNumLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(11)), textColor: .hex("000000").alpha(0.55)) + orderStatusLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("E69B0B")) + line = DDView.init() + orderDateLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("252525")) + driverLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("252525")) + serviceTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + serviceLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000")) + destinationTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5)) + destinationLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000")) + dispatchButton = DDButton.dd_initCustom() + dispatchButton.titleLabel?.font = .mediumFont(13) + dispatchButton.setTitleColor(.hex("000000").alpha(0.7), for: .normal) + reportButton = DDButton.dd_initCustom() + reportButton.titleLabel?.font = .mediumFont(13) + reportButton.setTitleColor(.hex("FFFFFF"), for: .normal) + disposeBag = DisposeBag() + super.init(style: style, reuseIdentifier: reuseIdentifier) + + contentView.backgroundColor = .hex("F4F5F7") + radiusView.layer.cornerRadius = auto(6) + radiusView.layer.shadowColor = UIColor.black(alpha: 0.1).cgColor + radiusView.layer.shadowOpacity = 1.0 + radiusView.layer.shadowRadius = 3 + radiusView.layer.shadowOffset = CGSize(width: 0, height: 3) + radiusView.backgroundColor = .white + contentView.addSubview(radiusView) + radiusView.addSubview(typeLabel) + radiusView.addSubview(orderNumLabel) + radiusView.addSubview(orderStatusLabel) + radiusView.addSubview(line) + radiusView.addSubview(orderDateLabel) + radiusView.addSubview(driverLabel) + radiusView.addSubview(serviceTitleLabel) + serviceLabel.numberOfLines = 0 + radiusView.addSubview(serviceLabel) + radiusView.addSubview(destinationTitleLabel) + destinationLabel.numberOfLines = 0 + radiusView.addSubview(destinationLabel) + dispatchButton.layer.borderColor = UIColor.hex("DDDDDD").cgColor + dispatchButton.layer.borderWidth = 1 + dispatchButton.layer.cornerRadius = auto(4) + radiusView.addSubview(dispatchButton) + reportButton.layer.cornerRadius = auto(4) + reportButton.layer.masksToBounds = true + reportButton.backgroundColor = .hex("2A5094") + radiusView.addSubview(reportButton) + + radiusView.snp.makeConstraints { make in + make.left.equalTo(auto(12)) + make.right.equalTo(-auto(12)) + make.top.equalTo(0) + make.bottom.equalTo(-auto(12)) + } + typeLabel.snp.makeConstraints { make in + make.left.equalTo(auto(18)) + make.top.equalTo(auto(13)) + } + + orderNumLabel.snp.makeConstraints { make in + make.centerY.equalTo(typeLabel) + make.left.equalTo(typeLabel.snp.right).offset(auto(20)) + } + + orderStatusLabel.snp.makeConstraints { make in + make.right.equalTo(-auto(20)) + make.centerY.equalTo(orderNumLabel) + } + + line.snp.makeConstraints { make in + make.top.equalTo(typeLabel.snp.bottom).offset(auto(7)) + make.left.right.equalTo(0) + make.height.equalTo(0.5) + } + + orderDateLabel.snp.makeConstraints { make in + make.left.equalTo(typeLabel) + make.top.equalTo(line.snp.bottom).offset(auto(5)) + } + + driverLabel.snp.makeConstraints { make in + make.left.equalTo(orderDateLabel.snp.right).offset(auto(10)) + make.centerY.equalTo(orderDateLabel) + } + + serviceTitleLabel.snp.makeConstraints { make in + make.top.equalTo(driverLabel.snp.bottom).offset(auto(8)) + make.left.equalTo(typeLabel) + make.width.equalTo(auto(60)) + } + + serviceLabel.snp.makeConstraints { make in + make.top.equalTo(serviceTitleLabel) + make.left.equalTo(serviceTitleLabel.snp.right) + make.right.equalTo(-auto(20)) + } + + destinationTitleLabel.snp.makeConstraints { make in + make.top.equalTo(serviceLabel.snp.bottom).offset(auto(8)) + make.left.equalTo(typeLabel) + make.width.equalTo(serviceTitleLabel) + } + + destinationLabel.snp.makeConstraints { make in + make.top.equalTo(destinationTitleLabel) + make.left.equalTo(destinationTitleLabel.snp.right) + make.right.equalTo(-auto(20)) + } + + reportButton.snp.makeConstraints { make in + make.right.equalToSuperview().offset(-auto(10)) + make.top.equalTo(destinationLabel.snp.bottom).offset(auto(10)) + make.width.equalTo(auto(80)) + make.height.equalTo(auto(30)) + make.bottom.equalToSuperview().offset(-auto(10)) + } + + dispatchButton.snp.makeConstraints { make in + make.right.equalTo(reportButton.snp.left).offset(-auto(10)) + make.top.equalTo(reportButton) + make.width.height.equalTo(reportButton) + } + + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func prepareForReuse() { + super.prepareForReuse() + disposeBag = DisposeBag() + } +} +// MARK: View +class RescuePendingOrderView : DDView { + public let tableView = DDTableView.init(frame: CGRectZero) + override init(frame: CGRect) { + super.init(frame: frame) + tableView.separatorStyle = .none + addSubview(tableView) + tableView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +class RescuePendingDispatchView : DDView { + public let tableView = DDTableView.init(frame: CGRectZero) + override init(frame: CGRect) { + super.init(frame: frame) + tableView.separatorStyle = .none + addSubview(tableView) + tableView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +class RescueIsIngView : DDView { + public let tableView = DDTableView.init(frame: CGRectZero) + override init(frame: CGRect) { + super.init(frame: frame) + tableView.separatorStyle = .none + addSubview(tableView) + tableView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +// MARK: JXCategoryListContentViewDelegate +extension RescuePendingOrderController : JXCategoryListContentViewDelegate { + func listView() -> UIView! { + return view + } +} + +extension RescuePendingDispatchController : JXCategoryListContentViewDelegate { + func listView() -> UIView! { + return view + } +} + +extension RescueIsIngController : JXCategoryListContentViewDelegate { + func listView() -> UIView! { + return view + } +} diff --git a/OrderScheduling/Rescue/ViewController/RescuePhotoController.swift b/OrderScheduling/Rescue/ViewController/RescuePhotoController.swift new file mode 100644 index 0000000..ba8d374 --- /dev/null +++ b/OrderScheduling/Rescue/ViewController/RescuePhotoController.swift @@ -0,0 +1,173 @@ +// +// RescuePhotoController.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/18. +// + +import Foundation +import DDControlsKit_Private +import DDAutoUIKit_Private +import RxSwift +import RxCocoa +import RxRelay +import ZFPlayer + +extension RescuePhotoController : UICollectionViewDelegate,UICollectionViewDataSource { + public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return environmentPics.count + } + + public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as? RescuePendingDispatchPhotoCell + let model = environmentPics[indexPath.item] + cell?.imageView.image = nil + + if model.url.contains(".mp4?") == true { + DispatchQueue.global().async { + let image = DDImage.dd_thumbnailImage(forVideo: URL(string: model.url)!) + DispatchQueue.main.async { + cell!.imageView.image = image + } + } + let cmTime = TOOL.getDuration(url: URL(string: model.url)!) + cell!.dateLabel.text = TOOL.getVideoDateString(duration: Int(cmTime.seconds)) + }else{ + cell!.imageView.sd_setImage(with: URL(string: model.url)) + cell!.dateLabel.text = nil + } + + if model.isSelected == true { + cell?.imageView.layer.borderColor = UIColor.white.cgColor + cell?.imageView.layer.borderWidth = 2 + }else{ + cell?.imageView.layer.borderColor = UIColor.clear.cgColor + cell?.imageView.layer.borderWidth = 0 + } + return cell! + } + + public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + if let preciousModel,let preciousIndexPath { + preciousModel.isSelected = false + collectionView.reloadItems(at: [preciousIndexPath]) + } + + let model = environmentPics[indexPath.item] + model.isSelected = true + + preciousModel = model + preciousIndexPath = indexPath + collectionView.reloadItems(at: [preciousIndexPath!]) + + if model.url.contains(".mp4?") == true { + let vc = children.first as? VehicleMonitoringVideoDetailController + vc?.playAssetURL(assetURL: URL(string: model.url)!) + vc?.view.isHidden = false + rescuePhotoView.largeImageView.isHidden = true + }else{ + rescuePhotoView.largeImageView.sd_setImage(with: URL(string: model.url)!) + let vc = children.first as? VehicleMonitoringVideoDetailController + vc?.stop() + vc?.view.isHidden = true + rescuePhotoView.largeImageView.isHidden = false + } + } +} + +open class RescuePhotoController : DDViewController { + private let rescuePhotoView = RescuePhotoView() + private var environmentPics : [RescuePhotoModel] = [] + private var preciousModel : RescuePhotoModel? + private var preciousIndexPath : IndexPath? + class RescuePhotoModel : Decodable { + var url : String + var isSelected : Bool + init(url: String, isSelected: Bool) { + self.url = url + self.isSelected = isSelected + } + } + + public init(environmentPics:[String]) { + for index in 0.. Int { + return resultArr.count + } + + public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + let model = resultArr[section] + return model.photoList.count + } + + public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as? AdditionalPhotoCell + let sectionModel = resultArr[indexPath.section] + let itemModel = sectionModel.photoList[indexPath.item] + cell?.titleLabel.text = itemModel.imageTitle + cell?.backgroundImageView.sd_setImage(with: URL(string: "")) + if let photoUrl = itemModel.photoUrl { + cell?.uploadImageView.isHidden = false + cell?.uploadImageView.sd_setImage(with: URL(string: photoUrl)) + }else{ + cell?.uploadImageView.isHidden = true + cell?.uploadImageView.sd_setImage(with: nil) + } + cell?.takePhotoButton.rx.tap + .observe(on: MainScheduler.instance) + .subscribe(onNext: { _ in + ZLPhotoConfiguration.default().allowSelectVideo = false + ZLPhotoConfiguration.default().maxSelectCount = 1 + ZLPhotoConfiguration.default().allowTakePhotoInLibrary = true + ZLPhotoConfiguration.default().allowEditImage = false + + let photoPreviewSheet = ZLPhotoPreviewSheet.init() + photoPreviewSheet.selectImageBlock = { [weak self] results, isOriginal in + let image = results.map { $0.image }.first +// let imageCreateDate = results.map { $0.asset.creationDate }.first ?? Date() + itemModel.uploadImage = image?.dd_compressedToData(withQulitySize: 1048576) + self?.uploadImageRelay.accept(itemModel) + } + photoPreviewSheet.showPhotoLibrary(sender: self) + }) + .disposed(by: cell!.disposeBag) + return cell! + } + + public func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { + let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "AdditionalPhotoHeaderView", for: indexPath) as? AdditionalPhotoHeaderView + let sectionModel = resultArr[indexPath.section] + headerView?.titleLabel.text = String(indexPath.section + 1)+"、"+sectionModel.taskStatusString + return headerView! + } +} + + +open class AdditionalPhotoController : DDViewController { + private let additionalPhotoView = AdditionalPhotoView() + private let disposeBag = DisposeBag() + private let refreshRelay = ReplayRelay.create(bufferSize: 1) + private let uploadImageRelay = ReplayRelay.create(bufferSize: 1) + private let userOrderId : Int + private let orderCode : String + private let taskOrderId : Int + private var resultArr : [OrderPhotoListDataModel] = [] + public init(userOrderId: Int, orderCode: String, taskOrderId: Int){ + self.userOrderId = userOrderId + self.orderCode = orderCode + self.taskOrderId = taskOrderId + super.init(nibName: nil, bundle: nil) + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + open override func viewDidLoad() { + super.viewDidLoad() + dd_navigationItemTitle = "工单照片" + dd_navigationBarBackgroundColor = .hex("354683") + dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(17)] + + addSubviews() + addActions() + } + + func addSubviews() { + view.backgroundColor = .white + view.addSubview(additionalPhotoView) + additionalPhotoView.snp.makeConstraints { make in + make.top.left.right.equalToSuperview() + make.bottom.equalTo(-view.safeAreaInsets.bottom - auto(10)) + } + + additionalPhotoView.collectionView.register(AdditionalPhotoCell.self, forCellWithReuseIdentifier: "cell") + additionalPhotoView.collectionView.register(AdditionalPhotoHeaderView.self, forSupplementaryViewOfKind: DDCollectionView.elementKindSectionHeader, withReuseIdentifier: "AdditionalPhotoHeaderView") + additionalPhotoView.collectionView.delegate = self + additionalPhotoView.collectionView.dataSource = self + } +} + + +open class AdditionalPhotoView : DDView { + public var collectionView : DDCollectionView + public override init(frame: CGRect) { + let flowLayout = UICollectionViewFlowLayout.init() + flowLayout.itemSize = CGSize(width: auto(165), height: auto(100)) + flowLayout.headerReferenceSize = CGSizeMake(0, auto(30)) + flowLayout.scrollDirection = .vertical + flowLayout.minimumLineSpacing = auto(10) + flowLayout.sectionInset = UIEdgeInsets(top: auto(10), left: auto(15), bottom: auto(10), right: auto(15)) + collectionView = DDCollectionView(frame: .zero, collectionViewLayout: flowLayout) + super.init(frame: frame) + + collectionView.backgroundColor = .white + addSubview(collectionView) + + collectionView.snp.makeConstraints { make in + make.top.left.right.bottom.equalToSuperview() + } + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +open class AdditionalPhotoCell : DDCollectionViewCell { + public let titleLabel : DDLabel + public let backgroundImageView : DDImageView + public let backgroundCoverView : DDView + public let stateView : DDView + public let stateLabel : DDLabel + public let takePhotoButton : DDButton + public let uploadImageView : DDImageView + public var disposeBag = DisposeBag() + + public override init(frame: CGRect) { + titleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("8B8A8B")) + backgroundImageView = DDImageView.init() + backgroundCoverView = DDView.init() + stateView = DDView.init() + stateLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .white) + takePhotoButton = DDButton.dd_initCustom() + uploadImageView = DDImageView.init() + super.init(frame: .zero) + + addSubview(titleLabel) + backgroundImageView.layer.borderColor = UIColor.hex("000000").alpha(0.1).cgColor + backgroundImageView.layer.borderWidth = 0.5 + backgroundImageView.layer.cornerRadius = auto(4) + backgroundImageView.layer.masksToBounds = true + backgroundImageView.isUserInteractionEnabled = true + addSubview(backgroundImageView) + + backgroundCoverView.backgroundColor = .white.alpha(0.3) + backgroundImageView.addSubview(backgroundCoverView) + stateView.backgroundColor = .hex("000000").alpha(0.5) + backgroundImageView.addSubview(stateView) + stateLabel.text = "补充" + backgroundImageView.addSubview(stateLabel) + uploadImageView.isHidden = true + uploadImageView.isUserInteractionEnabled = true + backgroundImageView.addSubview(uploadImageView) + + takePhotoButton.setImage(UIImage(named: "additionalPhotot_takePhoto"), for: .normal) + backgroundImageView.addSubview(takePhotoButton) + + titleLabel.snp.makeConstraints { make in + make.left.equalTo(auto(5)) + make.top.equalTo(0) + } + + backgroundImageView.snp.makeConstraints { make in + make.top.equalTo(titleLabel.snp.bottom).offset(auto(5)) + make.left.equalToSuperview().offset(auto(5)) + make.right.equalToSuperview() + make.bottom.equalToSuperview() + } + + backgroundCoverView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + stateView.snp.makeConstraints { make in + make.left.bottom.right.equalToSuperview() + make.height.equalTo(auto(25)) + } + + stateLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.centerY.equalTo(stateView) + } + + takePhotoButton.snp.makeConstraints { make in + make.centerX.centerY.equalToSuperview() + } + + uploadImageView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + open override func prepareForReuse() { + super.prepareForReuse() + disposeBag = DisposeBag() + } +} + +open class AdditionalPhotoHeaderView : DDCollectionViewCell { + public let titleLabel : DDLabel + + public override init(frame: CGRect) { + titleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(14)), textColor: .hex("000000").alpha(0.85)) + super.init(frame: .zero) + + addSubview(titleLabel) + titleLabel.snp.makeConstraints { make in + make.left.equalTo(auto(20)) + make.centerY.equalToSuperview() + } + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift b/OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift new file mode 100644 index 0000000..1144bd9 --- /dev/null +++ b/OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift @@ -0,0 +1,320 @@ +// +// ReviewFailedController.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/14. +// + +import Foundation +import DDAutoUIKit_Private +import DDControlsKit_Private +import SnapKit +import RxSwift +import RxRelay +import RxCocoa +import MJRefresh + +extension ReviewFailedController { + func addActions() { + MCOUNT.messageCountRelay + .subscribe(onNext: {[weak self] count in + if count > 0 { + self?.messageView.countLabel.isHidden = false + self?.messageView.countLabel.text = String(count) + self?.messageView.countLabel.snp.updateConstraints({ make in + make.width.equalTo(20) + }) + }else{ + self?.messageView.countLabel.isHidden = true + self?.messageView.countLabel.snp.updateConstraints({ make in + make.width.equalTo(0) + }) + } + }) + .disposed(by: disposeBag) + + MCOUNT.pendingCountRelay + .subscribe(onNext: {[weak self] count in + if count > 0 { + self?.pendingView.countLabel.isHidden = false + self?.pendingView.countLabel.text = String(count) + self?.pendingView.countLabel.snp.updateConstraints({ make in + make.width.equalTo(20) + }) + }else{ + self?.pendingView.countLabel.isHidden = true + self?.pendingView.countLabel.snp.updateConstraints({ make in + make.width.equalTo(0) + }) + } + }) + .disposed(by: disposeBag) + + NotificationCenter.default.post(name: NSNotification.Name(rawValue: Notification_reloadRescusControolerToDoMessageCount), object: nil) + + messageCenterView.tableView.mj_header = MJRefreshNormalHeader(refreshingBlock: {[weak self] in + self?.pageNum = 1 + self?.refreshRelay.accept(self?.pageNum ?? 1) + }) + + messageCenterView.tableView.mj_footer = MJRefreshBackNormalFooter(refreshingBlock: {[weak self] in + self?.pageNum+=1 + self?.refreshRelay.accept(self?.pageNum ?? 1) + }) + + refreshRelay + .flatMapLatest { pageNum in + return Observable.zip(RQ.orderList(parameters: OrderListParameters(pageNum: pageNum, queryType: .TO_AUDIT_FAILED)).asObservable(), Observable.just(pageNum)) + } + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] (response, pageNum) in + if response?.success == true { + if pageNum == 1 { + if response?.data?.isEmpty == false { + self?.resultArr.removeAll() + self?.messageCenterView.tableView.mj_footer?.resetNoMoreData() + } + self?.messageCenterView.tableView.mj_header?.endRefreshing() + }else{ + if response?.data?.isEmpty == false { + self?.messageCenterView.tableView.mj_footer?.endRefreshing() + }else{ + self?.messageCenterView.tableView.mj_footer?.endRefreshingWithNoMoreData() + } + } + + if let array = response?.data { + self?.resultArr.append(contentsOf: array) + self?.messageCenterView.tableView.reloadData() + } + }else{ + if pageNum == 1 { + self?.messageCenterView.tableView.mj_header?.endRefreshing() + }else{ + self?.messageCenterView.tableView.mj_footer?.endRefreshing() + } + self?.view.dd_makeToast(response?.msg) + } + }) + .disposed(by: disposeBag) + + messageCenterView.tableView.mj_header?.beginRefreshing() + } +} + +// MARK: UITableViewDelegate,UITableViewDataSource +extension ReviewFailedController : UITableViewDelegate,UITableViewDataSource { + public func numberOfSections(in tableView: UITableView) -> Int { + return 1 + } + + public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return resultArr.count + } + + public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + var cell = tableView.dequeueReusableCell(withIdentifier: "cell") as? ReviewFailedCell + if cell == nil { + cell = ReviewFailedCell(style: .default, reuseIdentifier: "cell") + } + let model = resultArr[indexPath.row] + cell!.descLabel.text = model.auditFailReason + cell!.typeLabel.text = model.taskServiceName + cell!.stateLabel.text = model.taskOrderStatusString + cell!.orderNumLabel.text = model.orderCode + cell!.dateLabel.text = model.createTime + + cell!.additionalButton.rx.tap + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + let vc = AdditionalPhotoController(userOrderId: model.userOrderId, orderCode: model.orderCode, taskOrderId: model.taskOrderId) + self?.navigationController?.pushViewController(vc, animated: true) + }) + .disposed(by: cell!.disposeBag) + return cell! + } +} + +open class ReviewFailedController : DDViewController { + private let messageCenterView = ReviewFailedView() + private var pageNum : Int = 1 + private var refreshRelay = ReplayRelay.create(bufferSize: 1) + private let disposeBag = DisposeBag() + private var resultArr : [OrderListDataModel] = [] + private let messageTapGes = UITapGestureRecognizer() + private let messageView = MessageView() + private let pendingTapGes = UITapGestureRecognizer() + private let pendingView = MessageView() + + open override func viewDidLoad() { + super.viewDidLoad() + dd_navigationItemTitle = "审核失败" + dd_navigationBarBackgroundColor = .hex("354683") + dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(17)] + navigationItem.leftBarButtonItems = nil + + addSubviews() + addActions() + } + + func addSubviews() { + view.backgroundColor = .hex("F4F5F7") + view.addSubview(messageCenterView) + messageCenterView.snp.makeConstraints { make in + make.top.left.right.equalToSuperview() + make.bottom.equalTo(-view.safeAreaInsets.bottom) + } + + messageCenterView.tableView.delegate = self + messageCenterView.tableView.dataSource = self + + messageView.titleLabel.text = "消息" + messageView.addGestureRecognizer(messageTapGes) + navigationItem.leftBarButtonItem = UIBarButtonItem(customView: messageView) + messageView.snp.makeConstraints { make in + make.height.equalTo(40) + make.width.greaterThanOrEqualTo(40) + } + + pendingView.titleLabel.text = "待办" + pendingView.addGestureRecognizer(pendingTapGes) + navigationItem.rightBarButtonItem = UIBarButtonItem(customView: pendingView) + pendingView.snp.makeConstraints { make in + make.height.equalTo(40) + make.width.greaterThanOrEqualTo(40) + } + } + + open override var preferredStatusBarStyle: UIStatusBarStyle { + return .lightContent + } +} + +open class ReviewFailedView : DDView { + public let tableView : DDTableView + public override init(frame: CGRect) { + tableView = DDTableView(frame: CGRectZero, style: .plain) + super.init(frame: frame) + + tableView.backgroundColor = .hex("F4F5F7") + tableView.separatorStyle = .none + addSubview(tableView) + tableView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +open class ReviewFailedCell : DDTableViewCell { + public let radiusView : DDView + public let typeLabel : DDLabel + public let orderNumLabel : DDLabel + public let stateLabel : DDLabel + public let descLabel : DDLabel + public let dateLabel : DDLabel + public let additionalButton : DDButton + public var additionalLayer : CAGradientLayer = { + var layer = CAGradientLayer.init() + layer.startPoint = CGPoint(x: 0, y: 0) + layer.endPoint = CGPoint(x: 1, y: 1) + layer.locations = [0.0,1.0] + layer.colors = [UIColor.hex("FF5A2C").cgColor,UIColor.hex("FE9D4D").cgColor] + layer.cornerRadius = auto(4) + layer.masksToBounds = true + return layer + }() + public var disposeBag = DisposeBag() + + public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + radiusView = DDView() + typeLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(14)), textColor: .hex("000000").alpha(0.85)) + orderNumLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.55)) + stateLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("09B820")) + descLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("FF8F37")) + dateLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000").alpha(0.55)) + additionalButton = DDButton.dd_initCustom() + super.init(style: style, reuseIdentifier: reuseIdentifier) + + backgroundColor = .hex("F4F5F7") + selectionStyle = .none + + radiusView.backgroundColor = .white + radiusView.layer.cornerRadius = auto(6) + radiusView.layer.shadowColor = UIColor.hex("D8D8D8").cgColor + radiusView.layer.shadowOffset = CGSize(width: 0, height: 3) + radiusView.layer.shadowRadius = 5 + radiusView.layer.shadowOpacity = 1 + contentView.addSubview(radiusView) + radiusView.addSubview(typeLabel) + radiusView.addSubview(orderNumLabel) + radiusView.addSubview(stateLabel) + descLabel.numberOfLines = 0 + radiusView.addSubview(descLabel) + radiusView.addSubview(dateLabel) + additionalButton.setTitle("补充", for: .normal) + additionalButton.setTitleColor(.white, for: .normal) + additionalButton.titleLabel?.font = .mediumFont(auto(13)) + additionalButton.layer.cornerRadius = auto(4) + additionalButton.layer.masksToBounds = true + radiusView.addSubview(additionalButton) + additionalButton.layer.insertSublayer(additionalLayer, at: 0) + + radiusView.snp.makeConstraints { make in + make.left.top.equalTo(auto(10)) + make.right.equalTo(-auto(10)) + make.bottom.equalTo(0) + } + + typeLabel.snp.makeConstraints { make in + make.top.left.equalTo(auto(10)) + make.height.equalTo(auto(15)) + } + + orderNumLabel.snp.makeConstraints { make in + make.left.equalTo(typeLabel.snp.right).offset(auto(20)) + make.centerY.equalTo(typeLabel) + } + + stateLabel.snp.makeConstraints { make in + make.right.equalTo(-auto(10)) + make.centerY.equalTo(typeLabel) + } + + descLabel.snp.makeConstraints { make in + make.top.equalTo(typeLabel.snp.bottom).offset(auto(10)) + make.left.equalTo(typeLabel) + make.right.equalTo(stateLabel) + } + + dateLabel.snp.makeConstraints { make in + make.left.equalTo(descLabel) + make.top.equalTo(descLabel.snp.bottom).offset(auto(10)) + make.bottom.equalTo(-auto(15)) + } + + additionalButton.snp.makeConstraints { make in + make.right.equalTo(stateLabel) + make.centerY.equalTo(dateLabel) + make.width.equalTo(auto(50)) + make.height.equalTo(auto(20)) + } + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + open override func prepareForReuse() { + super.prepareForReuse() + disposeBag = DisposeBag() + } + + open override func layoutSubviews() { + super.layoutSubviews() + additionalLayer.frame = CGRectMake(0, 0, auto(50), auto(20)) + } +} diff --git a/OrderScheduling/Strings/ActionStrings.swift b/OrderScheduling/Strings/ActionStrings.swift new file mode 100644 index 0000000..938d11f --- /dev/null +++ b/OrderScheduling/Strings/ActionStrings.swift @@ -0,0 +1,11 @@ +// +// ActionKey.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/7. +// + +import Foundation + +public let login_attach_userAgreement_key = "login_attach_userAgreement_key" +public let login_attach_privacy_key = "login_attach_privacy_key" diff --git a/OrderScheduling/Strings/AppKeyStrings.swift b/OrderScheduling/Strings/AppKeyStrings.swift new file mode 100644 index 0000000..d8d682e --- /dev/null +++ b/OrderScheduling/Strings/AppKeyStrings.swift @@ -0,0 +1,10 @@ +// +// AppKeyStrings.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/4. +// + +import Foundation + +public let MAAppKey = "6e13671d1444633f9fd5a407a309555a" diff --git a/OrderScheduling/Strings/EntryStrings.swift b/OrderScheduling/Strings/EntryStrings.swift new file mode 100644 index 0000000..a01713c --- /dev/null +++ b/OrderScheduling/Strings/EntryStrings.swift @@ -0,0 +1,10 @@ +// +// EntryStrings.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/9. +// + +import Foundation + +public let refuseOrderEntry = "refuseOrderEntry" diff --git a/OrderScheduling/Strings/EnvironmentStrings.swift b/OrderScheduling/Strings/EnvironmentStrings.swift new file mode 100644 index 0000000..7cad2eb --- /dev/null +++ b/OrderScheduling/Strings/EnvironmentStrings.swift @@ -0,0 +1,14 @@ +// +// EnvironmentStrings.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/8. +// + +import Foundation + +#if DEBUG +public let HOST = "https://api1.sino-assist.com" +#else +public let HOST = "https://api1.sino-assist.com" +#endif diff --git a/OrderScheduling/Strings/LocalizedStrings.swift b/OrderScheduling/Strings/LocalizedStrings.swift new file mode 100644 index 0000000..869e4cb --- /dev/null +++ b/OrderScheduling/Strings/LocalizedStrings.swift @@ -0,0 +1,24 @@ +// +// LocalizedStrings.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/7. +// + +import Foundation + +public let webViewLoadFailed = "加载失败" + +public let networkFailed = "网络连接失败" + +public let serviceFailed = "服务请求失败" + +public let loginInputPhone = "请输入手机号" + +public let dispatchOrderInputName = "请输入技师姓名" + +public let dispatchOrderInputPhone = "请输入技师电话" + +public let dispatchOrderInputLicense = "请输入救援车车牌" + +public let dispatchOrderSuccess = "派单成功" diff --git a/OrderScheduling/Strings/NotificationStrings.swift b/OrderScheduling/Strings/NotificationStrings.swift new file mode 100644 index 0000000..1389b27 --- /dev/null +++ b/OrderScheduling/Strings/NotificationStrings.swift @@ -0,0 +1,22 @@ +// +// NotificationStrings.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/4. +// + +import Foundation + +public let Notification_loginSuccessToRescueController = "Notification_loginSuccessToRescueController" + +public let Notification_toLoginController = "Notification_toLoginController" + +public let Notification_logoutSuccessToLoginController = "Notification_logoutSuccessToLoginController" + +public let Notification_reLoginToLoginController = "Notification_reLoginToLoginController" + +public let Notification_dispatchOrderSuccessReloadIsRescuingController = "Notification_dispatchOrderSuccessReloadIsRescuingController" + +public let Notification_dispatchOrderSuccessReloadPendingDispatchController = "Notification_dispatchOrderSuccessReloadPendingDispatchController" + +public let Notification_reloadRescusControolerToDoMessageCount = "Notification_reloadRescusControolerToDoMessageCount" diff --git a/OrderScheduling/Strings/TimerStrings.swift b/OrderScheduling/Strings/TimerStrings.swift new file mode 100644 index 0000000..502fac3 --- /dev/null +++ b/OrderScheduling/Strings/TimerStrings.swift @@ -0,0 +1,10 @@ +// +// TimerStrings.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/7. +// + +import Foundation + +public let login_code_timer_key = "login_code_timer_key" diff --git a/OrderScheduling/Strings/UserDefaultStrings.swift b/OrderScheduling/Strings/UserDefaultStrings.swift new file mode 100644 index 0000000..25277d0 --- /dev/null +++ b/OrderScheduling/Strings/UserDefaultStrings.swift @@ -0,0 +1,12 @@ +// +// UserDefaultStrings.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/4. +// + +import Foundation + +public let token_key = "token_key" + +public let supplierType_key = "supplierType_key" diff --git a/OrderScheduling/Upcoming/.DS_Store b/OrderScheduling/Upcoming/.DS_Store new file mode 100644 index 0000000..6cddc85 Binary files /dev/null and b/OrderScheduling/Upcoming/.DS_Store differ diff --git a/OrderScheduling/VehicleMonitoring/.DS_Store b/OrderScheduling/VehicleMonitoring/.DS_Store new file mode 100644 index 0000000..6cddc85 Binary files /dev/null and b/OrderScheduling/VehicleMonitoring/.DS_Store differ diff --git a/OrderScheduling/VehicleMonitoring/ViewController/VehicleMonitorVideoController.swift b/OrderScheduling/VehicleMonitoring/ViewController/VehicleMonitorVideoController.swift new file mode 100644 index 0000000..86e9d8d --- /dev/null +++ b/OrderScheduling/VehicleMonitoring/ViewController/VehicleMonitorVideoController.swift @@ -0,0 +1,152 @@ +// +// VehicleMonitorVideoController.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/16. +// + +import Foundation +import DDControlsKit_Private +import DDCategoryKit_Private +import DDAutoUIKit_Private +import JXCategoryView +import SnapKit +import RxSwift +import RxRelay +import RxCocoa +import DDProgressHUDKit_Private + +extension VehicleMonitorVideoController { + func addActions() { + reloadRelay + .filter({[weak self] _ in + return self?.vehicleId != nil + }) + .observe(on: MainScheduler.instance) + .do(onNext: {[weak self] _ in + self?.view.dd_showHUD() + }) + .flatMapLatest {[weak self] _ in + return RQ.getRtspChannel(prameters: RtspChannelParameters(vehicleId: 203656)) + } + .observe(on: MainScheduler.instance) + .do(onNext: {[weak self] _ in + self?.view.dd_hideHUD() + }) + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] response in + if response?.success == true { + var channels : [String] = [] + for index in 0..<(response?.data?.count ?? 0) { + channels.append("通道"+"\(index + 1)") + } + if let data = response?.data { + self?.videos.removeAll() + self?.videos.append(contentsOf: data) + } + self?.vehicleMonitorVideoView.categoryView.titles = channels + self?.vehicleMonitorVideoView.categoryView.reloadData() + self?.vehicleMonitorVideoView.categoryView.selectItem(at: 0) + }else{ + self?.view.dd_makeToast(response?.msg) + } + + }) + .disposed(by: disposeBag) + + reloadRelay.accept(nil) + } +} + +extension VehicleMonitorVideoController : JXCategoryViewDelegate { + public func categoryView(_ categoryView: JXCategoryBaseView!, didSelectedItemAt index: Int) { + + let vc = children.first as? VehicleMonitoringVideoDetailController + vc?.playAssetURL(assetURL: URL(string: videos[index])!) + } +} + +open class VehicleMonitorVideoController : DDViewController { + private let vehicleId : Int? + private let deviceCode : String? + private let vehicleMonitorVideoView : VehicleMonitorVideoView + private let reloadRelay = ReplayRelay.create(bufferSize: 1) + private let disposeBag = DisposeBag() + private var videos : [String] = [] + + public init(vehicleId:Int?,deviceCode:String?) { + self.vehicleId = vehicleId + self.deviceCode = deviceCode + self.vehicleMonitorVideoView = VehicleMonitorVideoView() + super.init(nibName: nil, bundle: nil) + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + open override func viewDidLoad() { + super.viewDidLoad() + dd_navigationItemTitle = "视频监控" + dd_navigationBarBackgroundColor = .hex("354683") + dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(17)] + dd_backBarButtonItem?.tintColor = .hex("000000") + + vehicleMonitorVideoView.categoryView.delegate = self + view.addSubview(vehicleMonitorVideoView) + vehicleMonitorVideoView.snp.makeConstraints { make in + make.top.equalToSuperview().offset(CGRectGetHeight(UIApplication.shared.dd_statusBarFrame)+CGRectGetHeight(navigationController?.navigationBar.frame ?? .zero)) + make.left.right.bottom.equalToSuperview() + } + + let videoDetailVc = VehicleMonitoringVideoDetailController(assetURL: nil) + videoDetailVc.dd_navigationBarBackgroundColor = .white + videoDetailVc.dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.hex("000000"),.font:UIFont.mediumFont(17)] + addChild(videoDetailVc) + vehicleMonitorVideoView.addSubview(videoDetailVc.view) + videoDetailVc.view.snp.makeConstraints { make in + make.top.equalTo(vehicleMonitorVideoView.categoryView.snp.bottom).offset(auto(10)) + make.width.equalTo(auto(375)) + make.height.equalTo(auto(300)) + make.centerX.equalToSuperview() + } + + addActions() + } + + open override var preferredStatusBarStyle: UIStatusBarStyle { + return .default + } +} + +open class VehicleMonitorVideoView : DDView { + public let categoryView : JXCategoryTitleView + + public override init(frame: CGRect) { + categoryView = JXCategoryTitleView.init() + super.init(frame: frame) + categoryView.titleColor = .hex("737373").alpha(0.55) + categoryView.titleSelectedColor = .hex("3678FF") + categoryView.titleFont = .mediumFont(auto(14)) + categoryView.backgroundColor = .hex("FFFFFF") + let indicator = JXCategoryIndicatorLineView() + indicator.indicatorColor = .hex("3678FF") + indicator.indicatorWidth = JXCategoryViewAutomaticDimension + indicator.verticalMargin = 7 + categoryView.indicators = [indicator] + addSubview(categoryView) + categoryView.snp.makeConstraints { make in + make.top.equalToSuperview().offset(0) + make.left.equalTo(auto(20)) + make.right.equalTo(-auto(20)) + make.height.equalTo(auto(40)) + } + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + +} + diff --git a/OrderScheduling/VehicleMonitoring/ViewController/VehicleMonitoringController.swift b/OrderScheduling/VehicleMonitoring/ViewController/VehicleMonitoringController.swift new file mode 100644 index 0000000..e255e45 --- /dev/null +++ b/OrderScheduling/VehicleMonitoring/ViewController/VehicleMonitoringController.swift @@ -0,0 +1,761 @@ +// +// VehicleMonitoringController.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/14. +// + +import Foundation +import DDControlsKit_Private +import DDMAMapKit_Private +import DDAutoUIKit_Private +import RxSwift +import RxCocoa +import RxRelay +import JXCategoryView +import SnapKit + +fileprivate let vehicleMonitoringPannelViewHeight = auto(300) +fileprivate let vehicleMonitoringPannelViewTopInset = auto(90) + +fileprivate let vehicleMonitoringPointAnnotationW = auto(120) +fileprivate let vehicleMonitoringPointAnnotationNameLeftInset = auto(35) +fileprivate let vehicleMonitoringPointAnnotationNameRightInset = auto(35) +fileprivate let vehicleMonitoringPointAnnotationNameAtLeastH = auto(30) + +extension VehicleMonitoringController { + func addAction() { + MCOUNT.messageCountRelay + .subscribe(onNext: {[weak self] count in + if count > 0 { + self?.messageView.countLabel.isHidden = false + self?.messageView.countLabel.text = String(count) + self?.messageView.countLabel.snp.updateConstraints({ make in + make.width.equalTo(20) + }) + }else{ + self?.messageView.countLabel.isHidden = true + self?.messageView.countLabel.snp.updateConstraints({ make in + make.width.equalTo(0) + }) + } + }) + .disposed(by: disposeBag) + + MCOUNT.pendingCountRelay + .subscribe(onNext: {[weak self] count in + if count > 0 { + self?.pendingView.countLabel.isHidden = false + self?.pendingView.countLabel.text = String(count) + self?.pendingView.countLabel.snp.updateConstraints({ make in + make.width.equalTo(20) + }) + }else{ + self?.pendingView.countLabel.isHidden = true + self?.pendingView.countLabel.snp.updateConstraints({ make in + make.width.equalTo(0) + }) + } + }) + .disposed(by: disposeBag) + + NotificationCenter.default.post(name: NSNotification.Name(rawValue: Notification_reloadRescusControolerToDoMessageCount), object: nil) + + reloadRelay + .flatMapLatest { _ in + return RQ.vehicleMonitorList() + } + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] response in + if response?.success == true { + self?.dataModel = response?.data + let roster = String(response?.data?.vehicleMonitorCount.rosterCount ?? 0)+"\n"+"排班" + let onLineCount = String(response?.data?.vehicleMonitorCount.onLineCount ?? 0)+"\n"+"上线" + let lostConnectionCount = String(response?.data?.vehicleMonitorCount.lostConnectionCount ?? 0)+"\n"+"掉线" + let leisureCount = String(response?.data?.vehicleMonitorCount.leisureCount ?? 0)+"\n"+"空闲" + let busyCount = String(response?.data?.vehicleMonitorCount.busyCount ?? 0)+"\n"+"忙碌" + let alarmCount = String(response?.data?.vehicleMonitorCount.alarmCount ?? 0)+"\n"+"报警" + if USER.supplierType == 2 { + self?.vehicleMonitoringView.vehicleMonitoringPannelView.categoryView.titles = [roster,onLineCount,lostConnectionCount,leisureCount,busyCount,alarmCount] + }else{ + self?.vehicleMonitoringView.vehicleMonitoringPannelView.categoryView.titles = [onLineCount,lostConnectionCount,leisureCount,busyCount,alarmCount] + } + self?.vehicleMonitoringView.vehicleMonitoringPannelView.categoryView.reloadData() + self?.vehicleMonitoringView.vehicleMonitoringPannelView.categoryView.selectItem(at: 0) + }else{ + self?.view.dd_makeToast(response?.msg) + } + }) + .disposed(by: disposeBag) + + let bottomSafeArea = view.safeAreaInsets.bottom + vehicleMonitoringView.vehicleMonitoringPannelView.tapButton.rx.tap + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + if let isSelected = self?.vehicleMonitoringView.vehicleMonitoringPannelView.tapButton.isSelected { + self?.vehicleMonitoringView.vehicleMonitoringPannelView.tapButton.isSelected = !isSelected + + if isSelected == false { + self?.vehicleMonitoringView.coverView.isHidden = true + self?.vehicleMonitoringView.vehicleMonitoringPannelView.snp.updateConstraints({ make in + make.bottom.equalToSuperview().offset((vehicleMonitoringPannelViewHeight - vehicleMonitoringPannelViewTopInset) - (self?.tabBarController?.tabBar.height ?? 0) - bottomSafeArea) + }) + }else{ + self?.vehicleMonitoringView.coverView.isHidden = false + self?.vehicleMonitoringView.vehicleMonitoringPannelView.snp.updateConstraints({ make in + make.bottom.equalToSuperview().offset(0) + }) + } + + UIView.animate(withDuration: 0.25) {[weak self] in + self?.vehicleMonitoringView.layoutIfNeeded() + } + } + }) + .disposed(by: disposeBag) + + vehicleMonitoringView.tapGes.rx.event + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + self?.vehicleMonitoringView.coverView.isHidden = true + self?.vehicleMonitoringView.vehicleMonitoringPannelView.tapButton.isSelected = true + self?.vehicleMonitoringView.vehicleMonitoringPannelView.snp.updateConstraints({ make in + make.bottom.equalToSuperview().offset((vehicleMonitoringPannelViewHeight - vehicleMonitoringPannelViewTopInset) - (self?.tabBarController?.tabBar.height ?? 0) - bottomSafeArea) + }) + + UIView.animate(withDuration: 0.25) {[weak self] in + self?.vehicleMonitoringView.layoutIfNeeded() + } + }) + .disposed(by: disposeBag) + + vehicleMonitoringView.panGes.rx.event + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + self?.vehicleMonitoringView.coverView.isHidden = true + self?.vehicleMonitoringView.vehicleMonitoringPannelView.tapButton.isSelected = true + self?.vehicleMonitoringView.vehicleMonitoringPannelView.snp.updateConstraints({ make in + make.bottom.equalToSuperview().offset((vehicleMonitoringPannelViewHeight - vehicleMonitoringPannelViewTopInset) - (self?.tabBarController?.tabBar.height ?? 0) - bottomSafeArea) + }) + + UIView.animate(withDuration: 0.25) {[weak self] in + self?.vehicleMonitoringView.layoutIfNeeded() + } + }) + .disposed(by: disposeBag) + + reloadRelay.accept(nil) + } +} + +extension VehicleMonitoringController : DDMAMapViewDelegate { + public func dd_mapView(_ mapView: MAMapView, viewFor annotation: MAAnnotation) -> MAAnnotationView { + if annotation.isMember(of: MAPointAnnotation.self) { + let pointAnnotation = annotation as! MAPointAnnotation + if pointAnnotation.annotationClass == VehicleMonitoringPointAnnotation.self{ + let DriverPointReuseIndentifier = "DispatchMapStatePointAnnotation" + var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: DriverPointReuseIndentifier) as? VehicleMonitoringPointAnnotation + if annotationView == nil { + annotationView = VehicleMonitoringPointAnnotation.init(annotation: pointAnnotation, reuseIdentifier: DriverPointReuseIndentifier) + } + annotationView!.annotation = pointAnnotation + let model = mapModel?[pointAnnotation.tag] + + if let alarmType = model?.alarmType { + switch alarmType.code { + case .busy: + annotationView?.pointView.backgroundColor = .hex("BA1717") + annotationView?.verticalView.backgroundColor = .hex("BA1717") + annotationView?.stateImageView.backgroundColor = .hex("BA1717") + annotationView?.nameLabel.textColor = .hex("BA1717") + annotationView?.topBackgroundImageView.backgroundColor = .hex("BA1717").alpha(0.1) + annotationView?.cameraBackgroundImageView.layer.borderColor = UIColor.hex("BA1717").cgColor + annotationView?.cameraIcon.tintColor = .hex("BA1717") + annotationView?.cameraArrow.tintColor = .hex("BA1717") + break + default: + annotationView?.pointView.backgroundColor = .hex("787878") + annotationView?.verticalView.backgroundColor = .hex("787878") + annotationView?.stateImageView.backgroundColor = .hex("787878") + annotationView?.nameLabel.textColor = .hex("787878") + annotationView?.topBackgroundImageView.backgroundColor = .hex("787878").alpha(0.1) + annotationView?.cameraBackgroundImageView.layer.borderColor = UIColor.hex("787878").cgColor + annotationView?.cameraIcon.tintColor = .hex("787878") + annotationView?.cameraArrow.tintColor = .hex("787878") + break + } + }else{ + switch model?.vehicleStatus?.code { + case .offLine,.lostConnection: + annotationView?.pointView.backgroundColor = .hex("787878") + annotationView?.verticalView.backgroundColor = .hex("787878") + annotationView?.stateImageView.backgroundColor = .hex("787878") + annotationView?.nameLabel.textColor = .hex("787878") + annotationView?.topBackgroundImageView.backgroundColor = .hex("787878").alpha(0.1) + annotationView?.cameraBackgroundImageView.layer.borderColor = UIColor.hex("787878").cgColor + annotationView?.cameraIcon.tintColor = .hex("787878") + annotationView?.cameraArrow.tintColor = .hex("787878") + break + case .onLine,.leisure: + annotationView?.pointView.backgroundColor = .hex("2956DB") + annotationView?.verticalView.backgroundColor = .hex("2956DB") + annotationView?.stateImageView.backgroundColor = .hex("2956DB") + annotationView?.nameLabel.textColor = .hex("2956DB") + annotationView?.topBackgroundImageView.backgroundColor = .hex("2956DB").alpha(0.1) + annotationView?.cameraBackgroundImageView.layer.borderColor = UIColor.hex("2956DB").cgColor + annotationView?.cameraIcon.tintColor = .hex("2956DB") + annotationView?.cameraArrow.tintColor = .hex("2956DB") + break + case .busy: + annotationView?.pointView.backgroundColor = .hex("BA1717") + annotationView?.verticalView.backgroundColor = .hex("BA1717") + annotationView?.stateImageView.backgroundColor = .hex("BA1717") + annotationView?.nameLabel.textColor = .hex("BA1717") + annotationView?.topBackgroundImageView.backgroundColor = .hex("BA1717").alpha(0.1) + annotationView?.cameraBackgroundImageView.layer.borderColor = UIColor.hex("BA1717").cgColor + annotationView?.cameraIcon.tintColor = .hex("BA1717") + annotationView?.cameraArrow.tintColor = .hex("BA1717") + break + case .BuyBusy: + annotationView?.pointView.backgroundColor = .hex("ffa400") + annotationView?.verticalView.backgroundColor = .hex("ffa400") + annotationView?.stateImageView.backgroundColor = .hex("ffa400") + annotationView?.nameLabel.textColor = .hex("ffa400") + annotationView?.topBackgroundImageView.backgroundColor = .hex("ffa400").alpha(0.1) + annotationView?.cameraBackgroundImageView.layer.borderColor = UIColor.hex("ffa400").cgColor + annotationView?.cameraIcon.tintColor = .hex("ffa400") + annotationView?.cameraArrow.tintColor = .hex("ffa400") + break + case .none: + break + } + } + + annotationView?.stateLabel.text = model?.vehicleStatus?.label + annotationView?.nameLabel.text = model?.vehicleName + if model?.isSelected == true { + var content = "" + if model?.orderCode?.isEmpty == false { + content.append("· \((model?.orderCode)!)") + }else if model?.serviceName?.isEmpty == false { + content.append("· \((model?.serviceName)!)") + }else if model?.taskStatusString?.isEmpty == false { + content.append("· \((model?.taskStatusString)!)") + }else if model?.workingCount != nil { + content = content + "· " + String((model?.workingCount)!) + } + annotationView?.contentLabel.text = content + annotationView?.zIndex = zIndex + 1 + }else{ + annotationView?.contentLabel.text = nil + } + + var vehicleMonitoringPointAnnotationNameInset = vehicleMonitoringPointAnnotationNameLeftInset + vehicleMonitoringPointAnnotationNameRightInset +// if model?.terminalType == .GPS { +// annotationView?.cameraBackgroundImageView.isHidden = false +// annotationView?.nameLabel.snp.updateConstraints({ make in +// make.right.equalToSuperview().offset(-auto(35)) +// }) +// }else{ +// annotationView?.cameraBackgroundImageView.isHidden = true +// annotationView?.nameLabel.snp.updateConstraints({ make in +// make.right.equalToSuperview().offset(-auto(5)) +// }) +// vehicleMonitoringPointAnnotationNameInset = vehicleMonitoringPointAnnotationNameInset - auto(30) +// } + + let contentSizeH = annotationView?.contentLabel.sizeThatFits(CGSize(width: vehicleMonitoringPointAnnotationW, height: 1000)).height ?? 0 + var nameSizeH = annotationView?.nameLabel.sizeThatFits(CGSize(width: vehicleMonitoringPointAnnotationW - vehicleMonitoringPointAnnotationNameInset, height: 1000)).height ?? 0 + if nameSizeH < vehicleMonitoringPointAnnotationNameAtLeastH { + nameSizeH = vehicleMonitoringPointAnnotationNameAtLeastH + } + annotationView?.frame = CGRect(origin: (annotationView?.frame.origin)!, size: CGSize(width: vehicleMonitoringPointAnnotationW, height: contentSizeH + nameSizeH)) + + annotationView?.tapGes.rx.event + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + let vc = VehicleMonitorVideoController(vehicleId: model?.vehicleId, deviceCode: nil) + self?.navigationController?.pushViewController(vc, animated: true) + }) + .disposed(by: annotationView!.disposeBag) + return annotationView! + } + + if pointAnnotation.annotationClass == DispatchMapSericeAddressPointAnnotation.self{ + let DriverPointReuseIndentifier = "DispatchMapSericeAddressPointAnnotation" + var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: DriverPointReuseIndentifier) as? DispatchMapSericeAddressPointAnnotation + if annotationView == nil { + annotationView = DispatchMapSericeAddressPointAnnotation.init(annotation: pointAnnotation, reuseIdentifier: DriverPointReuseIndentifier) + } + annotationView!.annotation = pointAnnotation + return annotationView! + } + } + + return MAAnnotationView.init(annotation: annotation, reuseIdentifier: "cell") + } + + public func dd_mapView(_ mapView: MAMapView, didAnnotationViewTapped view: MAAnnotationView) { + zIndex += 1 + view.zIndex = zIndex + } +} + +// MARK: JXCategoryListContainerViewDelegate +extension VehicleMonitoringController : JXCategoryListContainerViewDelegate { + public func number(ofListsInlistContainerView listContainerView: JXCategoryListContainerView!) -> Int { + return vehicleMonitoringView.vehicleMonitoringPannelView.categoryView.titles.count + } + + public func listContainerView(_ listContainerView: JXCategoryListContainerView!, initListFor index: Int) -> JXCategoryListContentViewDelegate! { + let vc = VehicleMonitoringListController() + if USER.supplierType == 2 { + if index == 0 { + vc.reloadCell(models: dataModel?.rosterList,isPaiban: true) + }else if index == 1 { + vc.reloadCell(models: dataModel?.onLineList) + }else if index == 2 { + vc.reloadCell(models: dataModel?.lostConnectionList) + }else if index == 3 { + vc.reloadCell(models: dataModel?.leisureList) + }else if index == 4 { + vc.reloadCell(models: dataModel?.busyList) + }else if index == 5 { + vc.reloadCell(models: dataModel?.alarmList,isAlarm: true) + } + }else{ + if index == 0 { + vc.reloadCell(models: dataModel?.onLineList) + }else if index == 1 { + vc.reloadCell(models: dataModel?.lostConnectionList) + }else if index == 2 { + vc.reloadCell(models: dataModel?.leisureList) + }else if index == 3 { + vc.reloadCell(models: dataModel?.busyList) + }else if index == 4 { + vc.reloadCell(models: dataModel?.alarmList,isAlarm: true) + } + } + + vc.selectCellBlock = {[weak self] model in + // 去掉其他tableview的选中 + for index in 0..<(self?.dataModel?.rosterList.count ?? 0) { + let _model = self?.dataModel?.rosterList[index] + _model?.isSelected = false + } + for index in 0..<(self?.dataModel?.onLineList.count ?? 0) { + let _model = self?.dataModel?.onLineList[index] + _model?.isSelected = false + } + for index in 0..<(self?.dataModel?.lostConnectionList.count ?? 0) { + let _model = self?.dataModel?.lostConnectionList[index] + _model?.isSelected = false + } + for index in 0..<(self?.dataModel?.leisureList.count ?? 0) { + let _model = self?.dataModel?.leisureList[index] + _model?.isSelected = false + } + for index in 0..<(self?.dataModel?.busyList.count ?? 0) { + let _model = self?.dataModel?.busyList[index] + _model?.isSelected = false + } + for index in 0..<(self?.dataModel?.alarmList.count ?? 0) { + let _model = self?.dataModel?.alarmList[index] + _model?.isSelected = false + } + self?.preciousTableView?.reloadData() + model.isSelected = true + vc.vehicleMonitoringListView.tableView.reloadData() + self?.preciousTableView = vc.vehicleMonitoringListView.tableView + + // 设置当前选中的annotation + self?.vehicleMonitoringView.maMapView.maMapView.setCenter(CLLocationCoordinate2D(latitude: Double(model.lat ?? "0")!, longitude: Double(model.lon ?? "0")!), animated: true) + + // 当前annotation展开,其他闭合 + self?.vehicleMonitoringView.maMapView.maMapView.removeAnnotations(self?.mapAnnotaions) + self?.mapAnnotaions.removeAll() + for index in 0...create(bufferSize: 1) + private var dataModel : VehicleMonitorListDataModel? + private var mapModel : [VehicleMonitorListDataModel.ItemModel]? + private var mapAnnotaions : [MAPointAnnotation] = [] + public lazy var categoryContainerView = JXCategoryListContainerView(type: .scrollView, delegate: self) + private var preciousTableView : DDTableView? + private var preciousModel : (VehicleMonitorListDataModel.ItemModel)? + private let messageTapGes = UITapGestureRecognizer() + private let messageView = MessageView() + private let pendingTapGes = UITapGestureRecognizer() + private let pendingView = MessageView() + + open override func viewDidLoad() { + super.viewDidLoad() + dd_navigationItemTitle = "车辆监控" + dd_navigationBarBackgroundColor = .hex("354683") + dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(17)] + navigationItem.leftBarButtonItems = nil + + addSubviews() + addAction() + } + + func addSubviews() { + view.addSubview(vehicleMonitoringView) + vehicleMonitoringView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalToSuperview().offset(CGRectGetHeight(UIApplication.shared.dd_statusBarFrame)+CGRectGetHeight(navigationController?.navigationBar.frame ?? .zero)) + } + + vehicleMonitoringView.maMapView.delegate = self + vehicleMonitoringView.vehicleMonitoringPannelView.categoryView.delegate = self + vehicleMonitoringView.vehicleMonitoringPannelView.radiusView.addSubview(categoryContainerView!) + vehicleMonitoringView.vehicleMonitoringPannelView.categoryView.listContainer = categoryContainerView + categoryContainerView?.snp.makeConstraints({ make in + make.top.equalTo(vehicleMonitoringView.vehicleMonitoringPannelView.categoryView.snp.bottom) + make.left.right.equalToSuperview() + make.bottom.equalToSuperview() + }) + + messageView.titleLabel.text = "消息" + messageView.addGestureRecognizer(messageTapGes) + navigationItem.leftBarButtonItem = UIBarButtonItem(customView: messageView) + messageView.snp.makeConstraints { make in + make.height.equalTo(40) + make.width.greaterThanOrEqualTo(40) + } + + pendingView.titleLabel.text = "待办" + pendingView.addGestureRecognizer(pendingTapGes) + navigationItem.rightBarButtonItem = UIBarButtonItem(customView: pendingView) + pendingView.snp.makeConstraints { make in + make.height.equalTo(40) + make.width.greaterThanOrEqualTo(40) + } + } + + open override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + } +} + +// MARK: UI +open class VehicleMonitoringView : DDView { + public let vehicleMonitoringPannelView : VehicleMonitoringPannelView + public let maMapView : DDMAMapView + public let coverView : DDView + public let tapGes : UITapGestureRecognizer + public let panGes : UIPanGestureRecognizer + public init(titles:[String]) { + vehicleMonitoringPannelView = VehicleMonitoringPannelView(titles:titles) + maMapView = DDMAMapView() + coverView = DDView() + tapGes = UITapGestureRecognizer() + panGes = UIPanGestureRecognizer() + super.init(frame: .zero) + + maMapView.maMapView.logoCenter = CGPoint(x: 100, y: 100) + addSubview(maMapView) + coverView.addGestureRecognizer(tapGes) + coverView.addGestureRecognizer(panGes) + coverView.isHidden = true + addSubview(coverView) + vehicleMonitoringPannelView.layer.cornerRadius = auto(16) + addSubview(vehicleMonitoringPannelView) + + maMapView.snp.makeConstraints { make in + make.top.left.right.equalToSuperview() + make.bottom.equalTo(vehicleMonitoringPannelView.snp.top).offset(auto(30)) + } + + coverView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + vehicleMonitoringPannelView.snp.makeConstraints { make in + make.bottom.equalToSuperview() + make.left.right.equalToSuperview() + make.height.equalTo(vehicleMonitoringPannelViewHeight) + } + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +open class VehicleMonitoringPannelView : DDView { + public let radiusView : DDView + public let tapButton : DDButton + public let categoryView : JXCategoryTitleView + + public init(titles:[String]) { + radiusView = DDView() + tapButton = DDButton.dd_initCustom() + categoryView = JXCategoryTitleView.init() + categoryView.titles = titles + super.init(frame: .zero) + backgroundColor = .hex("FBFBFB") + radiusView.backgroundColor = .clear + addSubview(radiusView) + tapButton.setImage(UIImage(named: "dispatchOrder_down"), for: .normal) + tapButton.setImage(UIImage(named: "dispatchOrder_up"), for: .selected) + radiusView.addSubview(tapButton) + categoryView.titleNumberOfLines = 2 + categoryView.titleColor = .hex("737373").alpha(0.55) + categoryView.titleSelectedColor = .hex("3678FF") + categoryView.titleFont = .mediumFont(auto(14)) + categoryView.backgroundColor = .hex("FBFBFB") + let indicator = JXCategoryIndicatorLineView() + indicator.indicatorColor = .hex("3678FF") + indicator.indicatorWidth = JXCategoryViewAutomaticDimension + indicator.verticalMargin = 7 + categoryView.indicators = [indicator] + radiusView.addSubview(categoryView) + + radiusView.layer.cornerRadius = auto(4) + radiusView.snp.makeConstraints { make in + make.top.left.right.equalToSuperview() + make.bottom.equalTo(-safeAreaInsets.bottom) + } + + tapButton.snp.makeConstraints { make in + make.top.equalTo(auto(7)) + make.height.width.equalTo(auto(23)) + make.centerX.equalToSuperview() + } + + categoryView.snp.makeConstraints { make in + make.left.right.equalToSuperview() + make.top.equalTo(tapButton.snp.bottom) + make.height.equalTo(auto(60)) + } + + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +open class VehicleMonitoringPointAnnotation : MAAnnotationView { + public let radiusView : DDView + public let topBackgroundImageView : DDImageView + public let stateImageView : DDImageView + public let stateLabel : DDLabel + public let nameLabel : DDLabel + public let contentLabel : DDLabel + public let cameraBackgroundImageView : DDImageView + public let cameraIcon : DDImageView + public let cameraArrow : DDImageView + public let tapGes : UITapGestureRecognizer + public let verticalView : UIView + public let pointView : UIView + public var disposeBag : DisposeBag + + override init!(annotation: MAAnnotation!, reuseIdentifier: String!) { + radiusView = DDView.init() + topBackgroundImageView = DDImageView.init() + stateImageView = DDImageView.init() + stateLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(10)), textColor: .white(alpha: 1.0)) + nameLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("#2C395F")) + contentLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("#2C395F")) + cameraBackgroundImageView = DDImageView() + cameraIcon = DDImageView(image: UIImage(named: "vehicleMonitoring_cameraIdle")?.withRenderingMode(.alwaysTemplate)) + cameraArrow = DDImageView(image: UIImage(named: "vehicleMonitoring_cameraIdleArrow")?.withRenderingMode(.alwaysTemplate)) + tapGes = UITapGestureRecognizer() + verticalView = UIView.init() + pointView = UIView.init() + disposeBag = DisposeBag() + super.init(annotation: annotation, reuseIdentifier: reuseIdentifier) + setUpSubviews() + } + + required public init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + open override func prepareForReuse() { + super.prepareForReuse() + disposeBag = DisposeBag() + } + + func setUpSubviews(){ + backgroundColor = .white + layer.cornerRadius = auto(4) + isUserInteractionEnabled = true + imageView.isUserInteractionEnabled = true + + radiusView.backgroundColor = .white(alpha: 1) + radiusView.layer.cornerRadius = auto(4) + radiusView.layer.masksToBounds = true + radiusView.isUserInteractionEnabled = true + addSubview(radiusView) + radiusView.snp.makeConstraints { make in + make.top.left.right.equalToSuperview() + make.width.equalTo(vehicleMonitoringPointAnnotationW) + make.bottom.equalToSuperview() + } + + topBackgroundImageView.isUserInteractionEnabled = true + radiusView.addSubview(topBackgroundImageView) + topBackgroundImageView.snp.makeConstraints { make in + make.top.left.right.equalTo(0) + make.height.greaterThanOrEqualTo(auto(30)) + } + + stateImageView.isUserInteractionEnabled = false + topBackgroundImageView.addSubview(stateImageView) + stateImageView.snp.makeConstraints { make in + make.left.top.bottom.equalToSuperview() + make.width.equalTo(auto(30)) + } + + stateLabel.textAlignment = .center + stateLabel.isUserInteractionEnabled = false + stateImageView.addSubview(stateLabel) + stateLabel.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + nameLabel.textAlignment = .center + nameLabel.numberOfLines = 0 + nameLabel.isUserInteractionEnabled = false + topBackgroundImageView.addSubview(nameLabel) + nameLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(vehicleMonitoringPointAnnotationNameLeftInset) + make.right.equalToSuperview().offset(-vehicleMonitoringPointAnnotationNameRightInset) + make.top.bottom.equalToSuperview() + } + + cameraBackgroundImageView.layer.cornerRadius = auto(4) + cameraBackgroundImageView.layer.borderColor = UIColor.hex("4D64DA").cgColor + cameraBackgroundImageView.layer.borderWidth = 1 + cameraBackgroundImageView.isUserInteractionEnabled = true + cameraBackgroundImageView.addGestureRecognizer(tapGes) + topBackgroundImageView.addSubview(cameraBackgroundImageView) + cameraBackgroundImageView.snp.makeConstraints { make in + make.right.equalTo(-auto(3)) + make.centerY.equalToSuperview() + make.width.equalTo(auto(30)) + make.height.equalTo(auto(15)) + } + + cameraIcon.isUserInteractionEnabled = false + cameraBackgroundImageView.addSubview(cameraIcon) + cameraIcon.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.left.equalTo(auto(3)) + make.width.equalTo(auto(15)) + make.height.equalTo(auto(10)) + } + + cameraArrow.isUserInteractionEnabled = false + cameraBackgroundImageView.addSubview(cameraArrow) + cameraArrow.snp.makeConstraints { make in + make.right.equalTo(-auto(3)) + make.centerY.equalToSuperview() + } + + contentLabel.numberOfLines = 0 + radiusView.addSubview(contentLabel) + contentLabel.snp.makeConstraints { make in + make.top.equalTo(topBackgroundImageView.snp.bottom) + make.left.right.bottom.equalToSuperview() + } + + verticalView.isUserInteractionEnabled = false + addSubview(verticalView) + verticalView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(radiusView.snp.bottom) + make.width.equalTo(auto(2.5)) + make.height.equalTo(auto(15)) + } + + pointView.isUserInteractionEnabled = false + pointView.layer.cornerRadius = auto(5) + pointView.layer.borderColor = UIColor.white.cgColor + pointView.layer.borderWidth = auto(2) + addSubview(pointView) + pointView.snp.makeConstraints { make in + make.centerX.equalTo(verticalView.snp.centerX) + make.top.equalTo(verticalView.snp.bottom).offset(0) + make.width.height.equalTo(auto(10)) + } + + } +} diff --git a/OrderScheduling/VehicleMonitoring/ViewController/VehicleMonitoringListController.swift b/OrderScheduling/VehicleMonitoring/ViewController/VehicleMonitoringListController.swift new file mode 100644 index 0000000..768a96a --- /dev/null +++ b/OrderScheduling/VehicleMonitoring/ViewController/VehicleMonitoringListController.swift @@ -0,0 +1,257 @@ +// +// VehicleMonitoringListController.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/15. +// + +import Foundation +import DDAutoUIKit_Private +import DDControlsKit_Private +import DDMAMapKit_Private +import JXCategoryView +import SnapKit +import RxSwift +import RxCocoa + +extension VehicleMonitoringListController : UITableViewDelegate,UITableViewDataSource { + public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return models.count + } + + public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + var cell = tableView.dequeueReusableCell(withIdentifier: "cell") as? VehicleMonitoringListCell + if cell == nil { + cell = VehicleMonitoringListCell(style: .default, reuseIdentifier: "cell") + } + let model = models[indexPath.item] + cell?.icon.isHidden = !(model.isSelected ?? false) + cell?.indexLabel.text = String(indexPath.item + 1)+"." + if isPaiban == true { + cell?.dateLabel.text = (model.rosterStartTime ?? "") + "\n~\n" + (model.rosterEndTime ?? "") + }else{ + var status = model.vehicleStatus?.label ?? "" + if model.onlineStatus?.code == .lostConnection { + status = status + ",掉" + } + cell?.dateLabel.text = (model.vehicleName ?? "")+"/"+status + } + cell?.nameLabel.text = model.driverName + cell?.phoneLabel.text = model.driverPhone + + if self.isAlarm == true { + if model.alarmType?.code == .busy { + cell?.indexLabel.textColor = .hex("1C62D9") + cell?.dateLabel.textColor = .hex("1C62D9") + cell?.nameLabel.textColor = .hex("1C62D9") + cell?.phoneLabel.textColor = .hex("1C62D9") + }else{ + cell?.indexLabel.textColor = .hex("787878") + cell?.dateLabel.textColor = .hex("787878") + cell?.nameLabel.textColor = .hex("787878") + cell?.phoneLabel.textColor = .hex("787878") + } + }else{ + if model.onlineStatus?.code == .onLine { + cell?.indexLabel.textColor = .hex("1C62D9") + cell?.dateLabel.textColor = .hex("1C62D9") + cell?.nameLabel.textColor = .hex("1C62D9") + cell?.phoneLabel.textColor = .hex("1C62D9") + }else{ + cell?.indexLabel.textColor = .hex("787878") + cell?.dateLabel.textColor = .hex("787878") + cell?.nameLabel.textColor = .hex("787878") + cell?.phoneLabel.textColor = .hex("787878") + } + } + + cell?.callButton.rx.tap + .observe(on: MainScheduler.instance) + .subscribe(onNext: { _ in + TOOL.call(phone: model.driverPhone) + }) + .disposed(by: cell!.disposeBag) + return cell! + } + + public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + if selectCellBlock != nil { + let model = models[indexPath.item] + selectCellBlock!(model) + } + } +} + +open class VehicleMonitoringListController : DDViewController { + public let vehicleMonitoringListView = VehicleMonitoringListView() + public var models : [VehicleMonitorListDataModel.ItemModel] = [] + public var selectCellBlock: ((VehicleMonitorListDataModel.ItemModel) -> Void)? + private var isPaiban : Bool? + private var isAlarm : Bool? + open override func viewDidLoad() { + super.viewDidLoad() + + dd_navigationBarBackgroundColor = .hex("354683") + dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(17)] + + view.addSubview(vehicleMonitoringListView) + vehicleMonitoringListView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + vehicleMonitoringListView.tableView.delegate = self + vehicleMonitoringListView.tableView.dataSource = self + } + + public func reloadCell(models:[VehicleMonitorListDataModel.ItemModel]?,isPaiban:Bool? = false,isAlarm:Bool? = false) { + self.isPaiban = isPaiban + self.isAlarm = isAlarm + + self.models.removeAll() + if let models { + self.models.append(contentsOf: models) + } + vehicleMonitoringListView.tableView.reloadData() + } +} + +open class VehicleMonitoringListView : DDView { + public let tableView : DDTableView + public override init(frame: CGRect) { + tableView = DDTableView.init(frame: frame, style: .plain) + super.init(frame: frame) + + tableView.separatorStyle = .none + + addSubview(tableView) + tableView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +open class VehicleMonitoringListCell : DDTableViewCell { + public var disposeBag : DisposeBag + private let radiusView : DDView + public let icon : DDImageView + public let indexLabel : DDLabel + public let dateLabel : DDLabel + public let nameLabel : DDLabel + public let phoneLabel : DDLabel + public let callButton : DDButton + public var callLayer : CAGradientLayer = { + var layer = CAGradientLayer.init() + layer.startPoint = CGPoint(x: 0, y: 0) + layer.endPoint = CGPoint(x: 1, y: 1) + layer.locations = [0.0,1.0] + layer.colors = [UIColor.hex("FF5A2C").cgColor,UIColor.hex("FE9D4D").cgColor] + layer.cornerRadius = auto(4) + layer.masksToBounds = true + return layer + }() + private let line : DDView + public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + disposeBag = DisposeBag() + radiusView = DDView() + icon = DDImageView(image: UIImage(named: "vehicleMonitoring_cellSelected")) + indexLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("1C62D9")) + dateLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("1C62D9")) + nameLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("1C62D9")) + phoneLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("1C62D9")) + callButton = DDButton.dd_initCustom() + line = DDView() + super.init(style: style, reuseIdentifier: reuseIdentifier) + + selectionStyle = .none + + contentView.addSubview(radiusView) + icon.isHidden = true + radiusView.addSubview(icon) + radiusView.addSubview(indexLabel) + dateLabel.numberOfLines = 0 + dateLabel.textAlignment = .center + radiusView.addSubview(dateLabel) + radiusView.addSubview(nameLabel) + radiusView.addSubview(phoneLabel) + callButton.layer.cornerRadius = auto(4) + callButton.layer.insertSublayer(callLayer, at: 0) + callButton.setTitle("呼叫", for: .normal) + callButton.titleLabel?.font = .mediumFont(auto(13)) + radiusView.addSubview(callButton) + line.backgroundColor = .hex("F2F3F6") + radiusView.addSubview(line) + + radiusView.snp.makeConstraints { make in + make.edges.equalToSuperview() + make.height.greaterThanOrEqualTo(auto(44)) + } + + icon.snp.makeConstraints { make in + make.left.equalTo(auto(15)) + make.centerY.equalToSuperview() + } + + indexLabel.snp.makeConstraints { make in + make.left.equalTo(icon.snp.right).offset(auto(5)) + make.centerY.equalToSuperview() + } + + dateLabel.snp.makeConstraints { make in + make.left.equalTo(indexLabel.snp.right).offset(auto(3)) + make.width.equalTo(auto(80)) + make.top.equalToSuperview().offset(auto(5)) + make.bottom.equalToSuperview().offset(-auto(5)) + } + + nameLabel.snp.makeConstraints { make in + make.left.equalTo(dateLabel.snp.right).offset(auto(5)) + make.width.equalTo(auto(60)) + make.centerY.equalToSuperview() + } + + phoneLabel.snp.makeConstraints { make in + make.left.equalTo(nameLabel.snp.right).offset(auto(5)) + make.width.equalTo(auto(100)) + make.centerY.equalToSuperview() + } + + callButton.snp.makeConstraints { make in + make.right.equalToSuperview().offset(-auto(10)) + make.centerY.equalToSuperview() + make.width.equalTo(auto(50)) + make.height.equalTo(auto(20)) + } + + line.snp.makeConstraints { make in + make.bottom.equalToSuperview() + make.left.equalToSuperview() + make.right.equalToSuperview() + make.height.equalTo(1) + } + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + open override func layoutSubviews() { + super.layoutSubviews() + callLayer.frame = CGRectMake(0, 0, auto(50), auto(20)) + } + + open override func prepareForReuse() { + super.prepareForReuse() + disposeBag = DisposeBag() + } +} + +extension VehicleMonitoringListController : JXCategoryListContentViewDelegate { + public func listView() -> UIView! { + return view + } +} + diff --git a/OrderScheduling/VehicleMonitoring/ViewController/VehicleMonitoringVideoDetailController.swift b/OrderScheduling/VehicleMonitoring/ViewController/VehicleMonitoringVideoDetailController.swift new file mode 100644 index 0000000..d11c0aa --- /dev/null +++ b/OrderScheduling/VehicleMonitoring/ViewController/VehicleMonitoringVideoDetailController.swift @@ -0,0 +1,105 @@ +// +// VehicleMonitoringVideoDetailController.swift +// OrderScheduling +// +// Created by 中道 on 2023/8/16. +// + +import Foundation +import DDControlsKit_Private +import DDCategoryKit_Private +import DDAutoUIKit_Private +import SnapKit +import ZFPlayer + +open class VehicleMonitoringVideoDetailController : DDViewController { + private let player : ZFPlayerController + private let controlView : ZFPlayerControlView + private let containerView : DDImageView + + public init(assetURL:URL?) { + + controlView = ZFPlayerControlView() + controlView.fastViewAnimated = true + controlView.autoHiddenTimeInterval = 5 + controlView.autoFadeTimeInterval = 0.5 + controlView.prepareShowLoading = true + controlView.prepareShowControlView = false + controlView.fullScreenMode = .landscape + + containerView = DDImageView() + + let playManager = ZFIJKPlayerManager() + player = ZFPlayerController(playerManager: playManager, containerView: containerView) + player.controlView = controlView + super.init(nibName: nil, bundle: nil) + + player.pauseWhenAppResignActive = true + + player.orientationDidChanged = { (player,isFullScreen) in + let appdelegate = UIApplication.shared.delegate as? AppDelegate + appdelegate?.allowOrentitaionRotation = isFullScreen + } + + view.addSubview(containerView) + containerView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + if let assetURL { + player.assetURLs = [assetURL] + player.playTheIndex(0) + controlView.showTitle("", coverURLString: nil,fullScreenMode: .automatic) + } + } + + public required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + deinit{ + player.stop() + } + + public func playAssetURL(assetURL:URL?) { + if let assetURL { + player.stop() + player.assetURLs = [assetURL] + player.playTheIndex(0) + } + } + + public func stop() { + player.stop() + } + + open override func viewDidLoad() { + super.viewDidLoad() + dd_navigationBarBackgroundColor = .hex("354683") + dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(17)] + } + + open override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + player.isViewControllerDisappear = false + } + + open override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) + player.isViewControllerDisappear = true + } + + open override var preferredStatusBarStyle: UIStatusBarStyle { + return .default + } + + open override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation { + return .none + } + + open override var supportedInterfaceOrientations: UIInterfaceOrientationMask { + return .allButUpsideDown + } +} + + diff --git a/Podfile b/Podfile new file mode 100644 index 0000000..a5281c9 --- /dev/null +++ b/Podfile @@ -0,0 +1,64 @@ +source 'git@github.com:DDIsFriend/DDSpecs.git' +source 'https://github.com/CocoaPods/Specs.git' + +platform :ios, '13.0' + +target 'OrderScheduling' do + # Comment the next line if you don't want to use dynamic frameworks + use_modular_headers! + +# pod 'CocoaDebug', :configurations => ['Debug'] + + pod 'ESTabBarController-swift' + pod 'DDCategoryKit_Private' + pod 'DDBasicControlsKit_Private' + pod 'DDColorKit_Private' + pod 'DDFontKit_Private' + pod 'IQKeyboardManagerSwift' + pod 'DDMAMapKit_Private' + pod 'SnapKit' + pod 'DDAutoUIKit_Private' + pod 'RxSwift' + pod 'RxRelay' + pod 'RxCocoa' + pod 'DDTimerKit_Private' + pod 'DDToastKit_Private' + pod 'DDNetworkingOfAlamofireKit_Private',:path => "/Users/zd/Desktop/PodRepository/DDNetworkingOfAlamofireKit_Private" + pod 'DDProgressHUDKit_Private' + pod 'JXCategoryView' + pod 'DDControlsKit_Private' + pod 'SwiftEntryKit' + pod 'MJRefresh' + pod 'DDWebImageKit_Private' + pod 'ZLPhotoBrowser' + pod 'ZFPlayer',:path=> '/Users/zd/Downloads/iOS相关/ZFPlayer-master' + pod 'ZFPlayer/ControlView',:path=> '/Users/zd/Downloads/iOS相关/ZFPlayer-master' + pod 'ZFPlayer/ijkplayer',:path=> '/Users/zd/Downloads/iOS相关/ZFPlayer-master' + +# pod 'ZFPlayer', '~> 4.0' +# pod 'ZFPlayer/ControlView' +# pod 'ZFPlayer/ijkplayer' +# pod 'ZFPlayer/AVPlayer' + + post_install do |installer| + installer.pods_project.targets.each do |target| + target.build_configurations.each do |config| + config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" + config.build_settings["DEVELOPMENT_TEAM"] = "W4SG324NS4" + end + end + + installer.pods_project.targets.each do |target| + target.build_configurations.each do |config| + if (config.name <=> 'Pre-Release') == 0 + config.build_settings['SWIFT_ACTIVE_COMPILATION_CONDITIONS'] ||= ['$(inherited)'] + config.build_settings['SWIFT_ACTIVE_COMPILATION_CONDITIONS'] << 'PRERELEASE' + end + if (config.name <=> 'Release') == 0 + config.build_settings['SWIFT_ACTIVE_COMPILATION_CONDITIONS'] ||= ['$(inherited)'] + config.build_settings['SWIFT_ACTIVE_COMPILATION_CONDITIONS'] << 'RELEASE' + end + end + end + end +end diff --git a/Podfile.lock b/Podfile.lock new file mode 100644 index 0000000..48133c0 --- /dev/null +++ b/Podfile.lock @@ -0,0 +1,395 @@ +PODS: + - Alamofire (5.7.1) + - AMapFoundation-NO-IDFA (1.8.2) + - AMapLocation-NO-IDFA (2.9.0): + - AMapFoundation-NO-IDFA (>= 1.7.0) + - AMapNavi-NO-IDFA (9.6.0): + - AMapFoundation-NO-IDFA (>= 1.8.0) + - AMapSearch-NO-IDFA (9.5.0): + - AMapFoundation-NO-IDFA (>= 1.8.0) + - AMapTrack-NO-IDFA (1.4.2): + - AMapFoundation-NO-IDFA (>= 1.6.4) + - AMapLocation-NO-IDFA (>= 2.6.7) + - DDAutoUIKit_Private (0.1.2) + - DDBasicControlsKit_Private (0.3.1): + - DDBasicControlsKit_Private/DDBaseAnimation (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseAttributedString (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseButton (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseCollectionView (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseCollectionViewCell (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseImage (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseImageView (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseLabel (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseModel (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseNavigationController (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseScrollView (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseTabBarController (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseTableView (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseTableViewCell (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseTextField (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseTextView (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseView (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseViewController (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseViewModel (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseAnimation (0.3.1): + - DDBasicControlsKit_Private/DDBaseAnimation/DDTransitionAnimation (= 0.3.1) + - DDBasicControlsKit_Private/DDBaseAnimation/DDTransitionAnimation (0.3.1) + - DDBasicControlsKit_Private/DDBaseAttributedString (0.3.1): + - "DDCategoryKit_Private/NSAttributedString+DDCategory" + - DDBasicControlsKit_Private/DDBaseButton (0.3.1): + - "DDCategoryKit_Private/UIButton+DDCategory" + - DDBasicControlsKit_Private/DDBaseCollectionView (0.3.1): + - "DDCategoryKit_Private/UICollectionView+DDCategory" + - DDBasicControlsKit_Private/DDBaseCollectionViewCell (0.3.1): + - "DDCategoryKit_Private/UICollectionViewCell+DDCategory" + - DDBasicControlsKit_Private/DDBaseImage (0.3.1): + - "DDCategoryKit_Private/UIImage+DDCategory" + - DDBasicControlsKit_Private/DDBaseImageView (0.3.1): + - "DDCategoryKit_Private/UIImageView+DDCategory" + - DDBasicControlsKit_Private/DDBaseLabel (0.3.1): + - "DDCategoryKit_Private/UILabel+DDCategory" + - DDBasicControlsKit_Private/DDBaseModel (0.3.1) + - DDBasicControlsKit_Private/DDBaseNavigationController (0.3.1): + - DDBasicControlsKit_Private/DDBaseAnimation/DDTransitionAnimation + - "DDCategoryKit_Private/UINavigationController+DDCategory" + - DDLogKit_Private + - DDBasicControlsKit_Private/DDBaseScrollView (0.3.1): + - "DDCategoryKit_Private/UIScrollView+DDCategory" + - DDBasicControlsKit_Private/DDBaseTabBarController (0.3.1): + - DDLogKit_Private + - DDBasicControlsKit_Private/DDBaseTableView (0.3.1): + - "DDCategoryKit_Private/UITableView+DDCategory" + - DDBasicControlsKit_Private/DDBaseTableViewCell (0.3.1): + - "DDCategoryKit_Private/UITableViewCell+DDCategory" + - DDBasicControlsKit_Private/DDBaseTextField (0.3.1): + - "DDCategoryKit_Private/UITextField+DDCategory" + - DDBasicControlsKit_Private/DDBaseTextView (0.3.1): + - "DDCategoryKit_Private/UITextView+DDCategory" + - DDBasicControlsKit_Private/DDBaseView (0.3.1): + - "DDCategoryKit_Private/UIView+DDCategory" + - DDBasicControlsKit_Private/DDBaseViewController (0.3.1): + - "DDCategoryKit_Private/UIImage+DDCategory" + - "DDCategoryKit_Private/UIViewController+DDCategory" + - DDLogKit_Private + - DDBasicControlsKit_Private/DDBaseViewModel (0.3.1) + - DDCategoryKit_Private (0.5.3): + - "DDCategoryKit_Private/CALayer+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/NSAttributedString+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/NSBundle+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/NSObject+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/NSThread+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/NSURL+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UIApplication+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UIBarButtonItem+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UIButton+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UICollectionView+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UICollectionViewCell+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UIFont+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UIImage+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UIImageView+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UILabel+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UINavigationBar+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UINavigationController+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UINavigationItem+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UIScreen+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UIScrollView+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UITabBarController+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UITableView+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UITableViewCell+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UITextField+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UITextView+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UIView+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UIViewController+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/UIWindow+DDCategory (= 0.5.3)" + - "DDCategoryKit_Private/CALayer+DDCategory (0.5.3)" + - "DDCategoryKit_Private/NSAttributedString+DDCategory (0.5.3)" + - "DDCategoryKit_Private/NSBundle+DDCategory (0.5.3)" + - "DDCategoryKit_Private/NSObject+DDCategory (0.5.3)" + - "DDCategoryKit_Private/NSThread+DDCategory (0.5.3)" + - "DDCategoryKit_Private/NSURL+DDCategory (0.5.3)" + - "DDCategoryKit_Private/UIApplication+DDCategory (0.5.3)" + - "DDCategoryKit_Private/UIBarButtonItem+DDCategory (0.5.3)" + - "DDCategoryKit_Private/UIButton+DDCategory (0.5.3)": + - "DDCategoryKit_Private/NSObject+DDCategory" + - "DDCategoryKit_Private/UICollectionView+DDCategory (0.5.3)" + - "DDCategoryKit_Private/UICollectionViewCell+DDCategory (0.5.3)" + - "DDCategoryKit_Private/UIFont+DDCategory (0.5.3)" + - "DDCategoryKit_Private/UIImage+DDCategory (0.5.3)" + - "DDCategoryKit_Private/UIImageView+DDCategory (0.5.3)" + - "DDCategoryKit_Private/UILabel+DDCategory (0.5.3)" + - "DDCategoryKit_Private/UINavigationBar+DDCategory (0.5.3)": + - "DDCategoryKit_Private/NSObject+DDCategory" + - "DDCategoryKit_Private/UIViewController+DDCategory" + - "DDCategoryKit_Private/UINavigationController+DDCategory (0.5.3)": + - "DDCategoryKit_Private/NSObject+DDCategory" + - "DDCategoryKit_Private/UINavigationItem+DDCategory (0.5.3)": + - "DDCategoryKit_Private/NSObject+DDCategory" + - "DDCategoryKit_Private/UIViewController+DDCategory" + - "DDCategoryKit_Private/UIScreen+DDCategory (0.5.3)" + - "DDCategoryKit_Private/UIScrollView+DDCategory (0.5.3)" + - "DDCategoryKit_Private/UITabBarController+DDCategory (0.5.3)": + - "DDCategoryKit_Private/NSObject+DDCategory" + - "DDCategoryKit_Private/UITableView+DDCategory (0.5.3)" + - "DDCategoryKit_Private/UITableViewCell+DDCategory (0.5.3)" + - "DDCategoryKit_Private/UITextField+DDCategory (0.5.3)" + - "DDCategoryKit_Private/UITextView+DDCategory (0.5.3)" + - "DDCategoryKit_Private/UIView+DDCategory (0.5.3)" + - "DDCategoryKit_Private/UIViewController+DDCategory (0.5.3)": + - "DDCategoryKit_Private/NSObject+DDCategory" + - "DDCategoryKit_Private/UIWindow+DDCategory (0.5.3)" + - DDColorKit_Private (0.1.0) + - DDControlsKit_Private (0.1.1): + - DDControlsKit_Private/DDAttributedString (= 0.1.1) + - DDControlsKit_Private/DDButton (= 0.1.1) + - DDControlsKit_Private/DDCollectionView (= 0.1.1) + - DDControlsKit_Private/DDCollectionViewCell (= 0.1.1) + - DDControlsKit_Private/DDImage (= 0.1.1) + - DDControlsKit_Private/DDImageView (= 0.1.1) + - DDControlsKit_Private/DDLabel (= 0.1.1) + - DDControlsKit_Private/DDNavigationController (= 0.1.1) + - DDControlsKit_Private/DDScrollView (= 0.1.1) + - DDControlsKit_Private/DDTableView (= 0.1.1) + - DDControlsKit_Private/DDTableViewCell (= 0.1.1) + - DDControlsKit_Private/DDTextField (= 0.1.1) + - DDControlsKit_Private/DDTextView (= 0.1.1) + - DDControlsKit_Private/DDView (= 0.1.1) + - DDControlsKit_Private/DDViewController (= 0.1.1) + - DDControlsKit_Private/DDAttributedString (0.1.1): + - DDBasicControlsKit_Private/DDBaseAttributedString + - DDControlsKit_Private/DDButton (0.1.1): + - DDBasicControlsKit_Private/DDBaseButton + - DDControlsKit_Private/DDCollectionView (0.1.1): + - DDBasicControlsKit_Private/DDBaseCollectionView + - DDControlsKit_Private/DDCollectionViewCell (0.1.1): + - DDBasicControlsKit_Private/DDBaseCollectionViewCell + - DDControlsKit_Private/DDImage (0.1.1): + - DDBasicControlsKit_Private/DDBaseImage + - DDControlsKit_Private/DDImageView (0.1.1): + - DDBasicControlsKit_Private/DDBaseImageView + - DDControlsKit_Private/DDLabel (0.1.1): + - DDBasicControlsKit_Private/DDBaseLabel + - DDControlsKit_Private/DDNavigationController (0.1.1): + - DDBasicControlsKit_Private/DDBaseNavigationController + - DDControlsKit_Private/DDScrollView (0.1.1): + - DDBasicControlsKit_Private/DDBaseScrollView + - DDControlsKit_Private/DDTableView (0.1.1): + - DDBasicControlsKit_Private/DDBaseTableView + - DDControlsKit_Private/DDTableViewCell (0.1.1): + - DDBasicControlsKit_Private/DDBaseTableViewCell + - DDControlsKit_Private/DDTextField (0.1.1): + - DDBasicControlsKit_Private/DDBaseTextField + - DDControlsKit_Private/DDTextView (0.1.1): + - DDBasicControlsKit_Private/DDBaseTextView + - DDControlsKit_Private/DDView (0.1.1): + - DDBasicControlsKit_Private/DDBaseView + - DDControlsKit_Private/DDViewController (0.1.1): + - DDBasicControlsKit_Private/DDBaseViewController + - DDFontKit_Private (0.1.0) + - DDLogKit_Private (0.1.4): + - DDLogKit_Private/OCLog (= 0.1.4) + - DDLogKit_Private/SwiftLog (= 0.1.4) + - DDLogKit_Private/OCLog (0.1.4) + - DDLogKit_Private/SwiftLog (0.1.4) + - DDMAMapKit_Private (0.1.3): + - DDMAMapKit_Private/DDMALocation (= 0.1.3) + - DDMAMapKit_Private/DDMAMap (= 0.1.3) + - DDMAMapKit_Private/DDMANaviManager (= 0.1.3) + - DDMAMapKit_Private/DDMASearch (= 0.1.3) + - DDMAMapKit_Private/DDMATrackManager (= 0.1.3) + - DDMAMapKit_Private/DDMAUtil (= 0.1.3) + - DDMAMapKit_Private/DDMALocation (0.1.3): + - AMapLocation-NO-IDFA (= 2.9.0) + - DDLogKit_Private + - DDMAMapKit_Private/DDMAMap (0.1.3): + - "DDCategoryKit_Private/UIImage+DDCategory" + - DDLogKit_Private + - DDMAMapKit_Private/DDMAMap/Annotation (= 0.1.3) + - DDMAMapKit_Private/DDMAMap/AnnotationView (= 0.1.3) + - DDMAMapKit_Private/DDMAMap/MapView (= 0.1.3) + - DDMAMapKit_Private/DDMAMap/Overlay (= 0.1.3) + - DDMAMapKit_Private/DDMAMap/Sources (= 0.1.3) + - DDMAMapKit_Private/DDMAMap/Trace (= 0.1.3) + - DDMAMapKit_Private/DDMANaviManager + - DDMAMapKit_Private/DDMAMap/Annotation (0.1.3): + - "DDCategoryKit_Private/UIImage+DDCategory" + - DDLogKit_Private + - DDMAMapKit_Private/DDMANaviManager + - DDMAMapKit_Private/DDMAMap/AnnotationView (0.1.3): + - "DDCategoryKit_Private/UIImage+DDCategory" + - DDLogKit_Private + - DDMAMapKit_Private/DDMANaviManager + - DDMAMapKit_Private/DDMAMap/MapView (0.1.3): + - "DDCategoryKit_Private/UIImage+DDCategory" + - DDLogKit_Private + - DDMAMapKit_Private/DDMAMap/Annotation + - DDMAMapKit_Private/DDMAMap/AnnotationView + - DDMAMapKit_Private/DDMAMap/Overlay + - DDMAMapKit_Private/DDMAMap/Sources + - DDMAMapKit_Private/DDMAMap/Trace + - DDMAMapKit_Private/DDMANaviManager + - DDMAMapKit_Private/DDMAMap/Overlay (0.1.3): + - "DDCategoryKit_Private/UIImage+DDCategory" + - DDLogKit_Private + - DDMAMapKit_Private/DDMANaviManager + - DDMAMapKit_Private/DDMAMap/Sources (0.1.3): + - "DDCategoryKit_Private/UIImage+DDCategory" + - DDLogKit_Private + - DDMAMapKit_Private/DDMANaviManager + - DDMAMapKit_Private/DDMAMap/Trace (0.1.3): + - "DDCategoryKit_Private/UIImage+DDCategory" + - DDLogKit_Private + - DDMAMapKit_Private/DDMANaviManager + - DDMAMapKit_Private/DDMANaviManager (0.1.3): + - AMapNavi-NO-IDFA (= 9.6.0) + - DDMAMapKit_Private/DDMASearch (0.1.3): + - AMapSearch-NO-IDFA (= 9.5.0) + - "DDCategoryKit_Private/NSThread+DDCategory" + - DDLogKit_Private + - DDMAMapKit_Private/DDMATrackManager (0.1.3): + - AMapTrack-NO-IDFA (= 1.4.2) + - DDLogKit_Private + - DDMAMapKit_Private/DDMAUtil (0.1.3): + - DDMAMapKit_Private/DDMAMap + - DDNetworkingOfAlamofireKit_Private (0.1.7): + - Alamofire + - DDLogKit_Private + - RxSwift + - DDProgressHUDKit_Private (0.1.1) + - DDTimerKit_Private (0.1.0): + - DDTimerKit_Private/GCDTimer (= 0.1.0) + - DDTimerKit_Private/GCDTimer (0.1.0) + - DDToastKit_Private (0.1.2) + - DDWebImageKit_Private (0.1.3): + - DDWebImageKit_Private/DDWebImage (= 0.1.3) + - DDWebImageKit_Private/SDWebImage (= 0.1.3) + - DDWebImageKit_Private/DDWebImage (0.1.3): + - DDWebImageKit_Private/SDWebImage/Core + - DDWebImageKit_Private/SDWebImage (0.1.3): + - DDWebImageKit_Private/SDWebImage/Core (= 0.1.3) + - DDWebImageKit_Private/SDWebImage/MapKit (= 0.1.3) + - DDWebImageKit_Private/SDWebImage/Core (0.1.3) + - DDWebImageKit_Private/SDWebImage/MapKit (0.1.3): + - DDWebImageKit_Private/SDWebImage/Core + - ESTabBarController-swift (2.8.0) + - IQKeyboardManagerSwift (6.5.12) + - JXCategoryView (1.6.1) + - MJRefresh (3.7.5) + - RxCocoa (6.5.0): + - RxRelay (= 6.5.0) + - RxSwift (= 6.5.0) + - RxRelay (6.5.0): + - RxSwift (= 6.5.0) + - RxSwift (6.5.0) + - SnapKit (5.6.0) + - SwiftEntryKit (2.0.0) + - ZFPlayer (4.0.5): + - ZFPlayer/Core (= 4.0.5) + - ZFPlayer/ControlView (4.0.5): + - ZFPlayer/Core + - ZFPlayer/Core (4.0.5) + - ZFPlayer/ijkplayer (4.0.5): + - ZFPlayer/Core + - ZLPhotoBrowser (4.4.3.2): + - ZLPhotoBrowser/Core (= 4.4.3.2) + - ZLPhotoBrowser/Core (4.4.3.2) + +DEPENDENCIES: + - DDAutoUIKit_Private + - DDBasicControlsKit_Private + - DDCategoryKit_Private + - DDColorKit_Private + - DDControlsKit_Private + - DDFontKit_Private + - DDMAMapKit_Private + - DDNetworkingOfAlamofireKit_Private (from `/Users/zd/Desktop/PodRepository/DDNetworkingOfAlamofireKit_Private`) + - DDProgressHUDKit_Private + - DDTimerKit_Private + - DDToastKit_Private + - DDWebImageKit_Private + - ESTabBarController-swift + - IQKeyboardManagerSwift + - JXCategoryView + - MJRefresh + - RxCocoa + - RxRelay + - RxSwift + - SnapKit + - SwiftEntryKit + - "ZFPlayer (from `/Users/zd/Downloads/iOS相关/ZFPlayer-master`)" + - "ZFPlayer/ControlView (from `/Users/zd/Downloads/iOS相关/ZFPlayer-master`)" + - "ZFPlayer/ijkplayer (from `/Users/zd/Downloads/iOS相关/ZFPlayer-master`)" + - ZLPhotoBrowser + +SPEC REPOS: + "git@github.com:DDIsFriend/DDSpecs.git": + - DDAutoUIKit_Private + - DDBasicControlsKit_Private + - DDCategoryKit_Private + - DDColorKit_Private + - DDControlsKit_Private + - DDFontKit_Private + - DDLogKit_Private + - DDMAMapKit_Private + - DDProgressHUDKit_Private + - DDTimerKit_Private + - DDToastKit_Private + - DDWebImageKit_Private + https://github.com/CocoaPods/Specs.git: + - Alamofire + - AMapFoundation-NO-IDFA + - AMapLocation-NO-IDFA + - AMapNavi-NO-IDFA + - AMapSearch-NO-IDFA + - AMapTrack-NO-IDFA + - ESTabBarController-swift + - IQKeyboardManagerSwift + - JXCategoryView + - MJRefresh + - RxCocoa + - RxRelay + - RxSwift + - SnapKit + - SwiftEntryKit + - ZLPhotoBrowser + +EXTERNAL SOURCES: + DDNetworkingOfAlamofireKit_Private: + :path: "/Users/zd/Desktop/PodRepository/DDNetworkingOfAlamofireKit_Private" + ZFPlayer: + :path: "/Users/zd/Downloads/iOS相关/ZFPlayer-master" + +SPEC CHECKSUMS: + Alamofire: 0123a34370cb170936ae79a8df46cc62b2edeb88 + AMapFoundation-NO-IDFA: 6ce0ef596d4eb8d934ff498e56747b6de1247b05 + AMapLocation-NO-IDFA: 6839d1543b3138ae594ddd36ab72741dc87df66f + AMapNavi-NO-IDFA: 70c724400376bfadcb8ec08b9761f526096cfdb6 + AMapSearch-NO-IDFA: 10cbd3ad7d122045a0c1f5760f6d46ff576ca918 + AMapTrack-NO-IDFA: 7109cf1867f5d6c407c8191492b1f73101e1682e + DDAutoUIKit_Private: 4d031662fdd86c46b1dc4b88271f2303661225fd + DDBasicControlsKit_Private: 04e64a24551a24e76555835fc14002415db80f94 + DDCategoryKit_Private: db12e3f6923e2309dd1894fc36c967d6bce94605 + DDColorKit_Private: 77fddb62410a2d5e6fb003083d233c0d7ea0a08f + DDControlsKit_Private: f304e041bb171c6cfacaf0fc55c967fd395cf645 + DDFontKit_Private: 7b8f4ebf0f60622874036202734d8460dc7b3806 + DDLogKit_Private: 1ed442cc7be004bd05f27bfda9b525e113df54e0 + DDMAMapKit_Private: 8e70d3f58cb70ce30705a2f10d696e42878ce52d + DDNetworkingOfAlamofireKit_Private: 3cfdd9f5498cac07092667c18dd30bb6df42be99 + DDProgressHUDKit_Private: 2046b3cc10a6fe4c7bd454b7431fe80efdd58923 + DDTimerKit_Private: 3713d029a72710f42a5dd5a32083d6aad8f51eb0 + DDToastKit_Private: b6ae3709d110cadca503a037419f3709d1755256 + DDWebImageKit_Private: b905111547e44626773b729bae9030403a9a0c76 + ESTabBarController-swift: 05593a6ad64700b03c0eb60ff625916370aa4136 + IQKeyboardManagerSwift: 371b08cb39664fb56030f5345c815a4ffc74bbc0 + JXCategoryView: 7b1ee69ede4843c581688afe84d0f047723262f2 + MJRefresh: fdf5e979eb406a0341468932d1dfc8b7f9fce961 + RxCocoa: 94f817b71c07517321eb4f9ad299112ca8af743b + RxRelay: 1de1523e604c72b6c68feadedd1af3b1b4d0ecbd + RxSwift: 5710a9e6b17f3c3d6e40d6e559b9fa1e813b2ef8 + SnapKit: e01d52ebb8ddbc333eefe2132acf85c8227d9c25 + SwiftEntryKit: 61b5fa36f34a97dd8013e48a7345bc4c4720be9a + ZFPlayer: ba6410f1043fc8a3b7769749f860cf237016df09 + ZLPhotoBrowser: 0563c2bfc7b247b65d023d646012f46cba94101b + +PODFILE CHECKSUM: 73391f27087fbdd1ea2c05bf543e9f5f3227e4d1 + +COCOAPODS: 1.11.3 diff --git a/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/AMapDemangleNodes.def b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/AMapDemangleNodes.def new file mode 100644 index 0000000..3964df2 --- /dev/null +++ b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/AMapDemangleNodes.def @@ -0,0 +1,260 @@ +//===--- AMapDemangleNodes.def - Demangling Tree Metaprogramming ----*- C++ -*-===// +// +// This source file is part of the Swift.org open source project +// +// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors +// Licensed under Apache License v2.0 with Runtime Library Exception +// +// See https://swift.org/LICENSE.txt for license information +// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors +// +//===----------------------------------------------------------------------===// +// +// This file defines macros useful for macro-metaprogramming with nodes in +// the demangling tree. +// +//===----------------------------------------------------------------------===// + +/// NODE(ID) +/// The node's enumerator value is Node::Kind::ID. + +/// CONTEXT_NODE(ID) +/// Nodes that can serve as contexts for other entities. +#ifndef CONTEXT_NODE +#define CONTEXT_NODE(ID) NODE(ID) +#endif + +CONTEXT_NODE(Allocator) +CONTEXT_NODE(AnonymousContext) +NODE(AnyProtocolConformanceList) +NODE(ArgumentTuple) +NODE(AssociatedType) +NODE(AssociatedTypeRef) +NODE(AssociatedTypeMetadataAccessor) +NODE(DefaultAssociatedTypeMetadataAccessor) +NODE(AssociatedTypeWitnessTableAccessor) +NODE(BaseWitnessTableAccessor) +NODE(AutoClosureType) +NODE(BoundGenericClass) +NODE(BoundGenericEnum) +NODE(BoundGenericStructure) +NODE(BoundGenericProtocol) +NODE(BoundGenericOtherNominalType) +NODE(BoundGenericTypeAlias) +NODE(BoundGenericFunction) +NODE(BuiltinTypeName) +NODE(CFunctionPointer) +CONTEXT_NODE(Class) +NODE(ClassMetadataBaseOffset) +NODE(ConcreteProtocolConformance) +CONTEXT_NODE(Constructor) +NODE(CoroutineContinuationPrototype) +CONTEXT_NODE(Deallocator) +NODE(DeclContext) +CONTEXT_NODE(DefaultArgumentInitializer) +NODE(DependentAssociatedConformance) +NODE(DependentAssociatedTypeRef) +NODE(DependentGenericConformanceRequirement) +NODE(DependentGenericParamCount) +NODE(DependentGenericParamType) +NODE(DependentGenericSameTypeRequirement) +NODE(DependentGenericLayoutRequirement) +NODE(DependentGenericSignature) +NODE(DependentGenericType) +NODE(DependentMemberType) +NODE(DependentPseudogenericSignature) +NODE(DependentProtocolConformanceRoot) +NODE(DependentProtocolConformanceInherited) +NODE(DependentProtocolConformanceAssociated) +CONTEXT_NODE(Destructor) +CONTEXT_NODE(DidSet) +NODE(Directness) +NODE(DynamicAttribute) +NODE(DirectMethodReferenceAttribute) +NODE(DynamicSelf) +NODE(DynamicallyReplaceableFunctionImpl) +NODE(DynamicallyReplaceableFunctionKey) +NODE(DynamicallyReplaceableFunctionVar) +CONTEXT_NODE(Enum) +NODE(EnumCase) +NODE(ErrorType) +NODE(EscapingAutoClosureType) +NODE(NoEscapeFunctionType) +NODE(ExistentialMetatype) +CONTEXT_NODE(ExplicitClosure) +CONTEXT_NODE(Extension) +NODE(FieldOffset) +NODE(FullTypeMetadata) +CONTEXT_NODE(Function) +NODE(FunctionSignatureSpecialization) +NODE(FunctionSignatureSpecializationParam) +NODE(FunctionSignatureSpecializationParamKind) +NODE(FunctionSignatureSpecializationParamPayload) +NODE(FunctionType) +NODE(GenericPartialSpecialization) +NODE(GenericPartialSpecializationNotReAbstracted) +NODE(GenericProtocolWitnessTable) +NODE(GenericProtocolWitnessTableInstantiationFunction) +NODE(ResilientProtocolWitnessTable) +NODE(GenericSpecialization) +NODE(GenericSpecializationNotReAbstracted) +NODE(GenericSpecializationParam) +NODE(InlinedGenericFunction) +NODE(GenericTypeMetadataPattern) +CONTEXT_NODE(Getter) +NODE(Global) +CONTEXT_NODE(GlobalGetter) +NODE(Identifier) +NODE(Index) +CONTEXT_NODE(IVarInitializer) +CONTEXT_NODE(IVarDestroyer) +NODE(ImplEscaping) +NODE(ImplConvention) +NODE(ImplFunctionAttribute) +NODE(ImplFunctionType) +CONTEXT_NODE(ImplicitClosure) +NODE(ImplParameter) +NODE(ImplResult) +NODE(ImplErrorResult) +NODE(InOut) +NODE(InfixOperator) +CONTEXT_NODE(Initializer) +NODE(KeyPathGetterThunkHelper) +NODE(KeyPathSetterThunkHelper) +NODE(KeyPathEqualsThunkHelper) +NODE(KeyPathHashThunkHelper) +NODE(LazyProtocolWitnessTableAccessor) +NODE(LazyProtocolWitnessTableCacheVariable) +NODE(LocalDeclName) +CONTEXT_NODE(MaterializeForSet) +NODE(MergedFunction) +NODE(Metatype) +NODE(MetatypeRepresentation) +NODE(Metaclass) +NODE(MethodLookupFunction) +NODE(ObjCMetadataUpdateFunction) +CONTEXT_NODE(ModifyAccessor) +CONTEXT_NODE(Module) +CONTEXT_NODE(NativeOwningAddressor) +CONTEXT_NODE(NativeOwningMutableAddressor) +CONTEXT_NODE(NativePinningAddressor) +CONTEXT_NODE(NativePinningMutableAddressor) +NODE(NominalTypeDescriptor) +NODE(NonObjCAttribute) +NODE(Number) +NODE(ObjCAttribute) +NODE(ObjCBlock) +CONTEXT_NODE(OtherNominalType) +CONTEXT_NODE(OwningAddressor) +CONTEXT_NODE(OwningMutableAddressor) +NODE(PartialApplyForwarder) +NODE(PartialApplyObjCForwarder) +NODE(PostfixOperator) +NODE(PrefixOperator) +NODE(PrivateDeclName) +NODE(PropertyDescriptor) +CONTEXT_NODE(Protocol) +CONTEXT_NODE(ProtocolSymbolicReference) +NODE(ProtocolConformance) +NODE(ProtocolConformanceRefInTypeModule) +NODE(ProtocolConformanceRefInProtocolModule) +NODE(ProtocolConformanceRefInOtherModule) +NODE(ProtocolDescriptor) +NODE(ProtocolConformanceDescriptor) +NODE(ProtocolList) +NODE(ProtocolListWithClass) +NODE(ProtocolListWithAnyObject) +NODE(ProtocolSelfConformanceDescriptor) +NODE(ProtocolSelfConformanceWitness) +NODE(ProtocolSelfConformanceWitnessTable) +NODE(ProtocolWitness) +NODE(ProtocolWitnessTable) +NODE(ProtocolWitnessTableAccessor) +NODE(ProtocolWitnessTablePattern) +NODE(ReabstractionThunk) +NODE(ReabstractionThunkHelper) +CONTEXT_NODE(ReadAccessor) +NODE(RelatedEntityDeclName) +NODE(RetroactiveConformance) +NODE(ReturnType) +NODE(Shared) +NODE(Owned) +NODE(SILBoxType) +NODE(SILBoxTypeWithLayout) +NODE(SILBoxLayout) +NODE(SILBoxMutableField) +NODE(SILBoxImmutableField) +CONTEXT_NODE(Setter) +NODE(SpecializationPassID) +NODE(IsSerialized) +CONTEXT_NODE(Static) +CONTEXT_NODE(Structure) +CONTEXT_NODE(Subscript) +NODE(Suffix) +NODE(ThinFunctionType) +NODE(Tuple) +NODE(TupleElement) +NODE(TupleElementName) +NODE(Type) +CONTEXT_NODE(TypeSymbolicReference) +CONTEXT_NODE(TypeAlias) +NODE(TypeList) +NODE(TypeMangling) +NODE(TypeMetadata) +NODE(TypeMetadataAccessFunction) +NODE(TypeMetadataCompletionFunction) +NODE(TypeMetadataInstantiationCache) +NODE(TypeMetadataInstantiationFunction) +NODE(TypeMetadataSingletonInitializationCache) +NODE(TypeMetadataLazyCache) +NODE(UncurriedFunctionType) +#define REF_STORAGE(Name, ...) NODE(Name) +#include "AMapReferenceStorage.def" +CONTEXT_NODE(UnsafeAddressor) +CONTEXT_NODE(UnsafeMutableAddressor) +NODE(ValueWitness) +NODE(ValueWitnessTable) +CONTEXT_NODE(Variable) +NODE(VTableThunk) +NODE(VTableAttribute) // note: old mangling only +CONTEXT_NODE(WillSet) +NODE(ReflectionMetadataBuiltinDescriptor) +NODE(ReflectionMetadataFieldDescriptor) +NODE(ReflectionMetadataAssocTypeDescriptor) +NODE(ReflectionMetadataSuperclassDescriptor) +NODE(GenericTypeParamDecl) +NODE(CurryThunk) +NODE(DispatchThunk) +NODE(MethodDescriptor) +NODE(ProtocolRequirementsBaseDescriptor) +NODE(AssociatedConformanceDescriptor) +NODE(DefaultAssociatedConformanceAccessor) +NODE(BaseConformanceDescriptor) +NODE(AssociatedTypeDescriptor) +NODE(ThrowsAnnotation) +NODE(EmptyList) +NODE(FirstElementMarker) +NODE(VariadicMarker) +NODE(OutlinedBridgedMethod) +NODE(OutlinedCopy) +NODE(OutlinedConsume) +NODE(OutlinedRetain) +NODE(OutlinedRelease) +NODE(OutlinedInitializeWithTake) +NODE(OutlinedInitializeWithCopy) +NODE(OutlinedAssignWithTake) +NODE(OutlinedAssignWithCopy) +NODE(OutlinedDestroy) +NODE(OutlinedVariable) +NODE(AssocTypePath) +NODE(LabelList) +NODE(ModuleDescriptor) +NODE(ExtensionDescriptor) +NODE(AnonymousDescriptor) +NODE(AssociatedTypeGenericParamRef) +NODE(SugaredOptional) +NODE(SugaredArray) +NODE(SugaredDictionary) +NODE(SugaredParen) +#undef CONTEXT_NODE +#undef NODE diff --git a/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/AMapFoundationKit b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/AMapFoundationKit new file mode 100644 index 0000000..0f89528 Binary files /dev/null and b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/AMapFoundationKit differ diff --git a/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/AMapReferenceStorage.def b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/AMapReferenceStorage.def new file mode 100644 index 0000000..f74ded7 --- /dev/null +++ b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/AMapReferenceStorage.def @@ -0,0 +1,197 @@ +//===--- AMapReferenceStorage.def - Non-default reference storage ---*- C++ -*-===// +// +// This source file is part of the Swift.org open source project +// +// Copyright (c) 2018 Apple Inc. and the Swift project authors +// Licensed under Apache License v2.0 with Runtime Library Exception +// +// See https://swift.org/LICENSE.txt for license information +// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors +// +//===----------------------------------------------------------------------===// +// +// This file defines non-default reference storage kind macros used for +// macro-metaprogramming. +// +//===----------------------------------------------------------------------===// + +/// There are two fundamental reference storage types: checked and unchecked. +/// Checked storage types have runtime enforced correctness. +/// Unchecked storage types have no runtime enforced correctness. +/// +/// Checked reference storage types are also subcategorized by loadability. +/// * Always loadable: The compiler may move the reference or use registers. +/// * Never loadable: The runtime (etc) tracks the address of the reference. +/// * Sometimes loadable: If the reference is a native object, then it is +/// always loadable. Otherwise fall back to never loadable semantics, a.k.a. +/// "address only". +/// +/// Unchecked reference storage types are always loadable. +/// +/// The primary macros therefore are: +/// * ALWAYS_LOADABLE_CHECKED_REF_STORAGE +/// * SOMETIMES_LOADABLE_CHECKED_REF_STORAGE +/// * NEVER_LOADABLE_CHECKED_REF_STORAGE +/// * UNCHECKED_REF_STORAGE +/// +/// Helper macros include: +/// * CHECKED_REF_STORAGE -- Any checked reference storage type. Specifically +/// "always", "sometimes", and "never" -- but not "unchecked". +/// * LOADABLE_REF_STORAGE -- Any loadable reference storage type. Specifically +/// "always", "sometimes", and "unchecked" -- but not "never". +/// * ALWAYS_OR_SOMETIMES_LOADABLE_CHECKED_REF_STORAGE -- self describing. +/// * NEVER_OR_SOMETIMES_LOADABLE_CHECKED_REF_STORAGE -- self describing. +/// +/// SUBSYSTEMS NOTES +/// +/// In general, reference storage types are barely visible in the user facing +/// type system and therefore AST clients above SIL can get away with +/// just REF_STORAGE, or CHECKED_REF_STORAGE with UNCHECKED_REF_STORAGE. +/// +/// When it comes to SIL aware AST clients, loadability matters. The best way +/// to understand how the helper macros are used is to look at SILNodes.def. +/// What follows is a short -- possibly not up to date -- summary: +/// +/// UNCHECKED_REF_STORAGE +/// Name##RetainValueInst +/// Name##ReleaseValueInst +/// LOADABLE_REF_STORAGE +/// Ref*ToNameInst +/// Name*ToRefInst +/// NEVER_OR_SOMETIMES_LOADABLE_CHECKED_REF_STORAGE +/// Load##Name##Inst +/// Store##Name##Inst +/// ALWAYS_OR_SOMETIMES_LOADABLE_CHECKED_REF_STORAGE +/// Copy##Name##ValueInst +/// StrongRetain##Name##Inst +/// Name##RetainInst +/// Name##ReleaseInst +/// +/// After helper macro expansion: +/// +/// UNCHECKED_REF_STORAGE +/// Ref*ToNameInst +/// Name*ToRefInst +/// Name##RetainValueInst +/// Name##ReleaseValueInst +/// ALWAYS_LOADABLE_CHECKED_REF_STORAGE +/// Ref*ToNameInst +/// Name*ToRefInst +/// Copy##Name##ValueInst +/// StrongRetain##Name##Inst +/// Name##RetainInst +/// Name##ReleaseInst +/// SOMETIMES_LOADABLE_CHECKED_REF_STORAGE +/// Ref*ToNameInst +/// Name*ToRefInst +/// Load##Name##Inst +/// Store##Name##Inst +/// Copy##Name##ValueInst +/// StrongRetain##Name##Inst +/// Name##RetainInst +/// Name##ReleaseInst +/// NEVER_LOADABLE_CHECKED_REF_STORAGE +/// Load##Name##Inst +/// Store##Name##Inst +/// +/// Finally, a note about IRGen: TypeInfos need to be created per reference +/// storage type, and SOMETIMES_LOADABLE_CHECKED_REF_STORAGE needs *two* +/// TypeInfos to be created. One for the loadable scenario, and one for the +/// address-only scenario. + + +#ifndef REF_STORAGE +#define REF_STORAGE(Name, name, NAME) +#endif + +#ifdef ALWAYS_OR_SOMETIMES_LOADABLE_CHECKED_REF_STORAGE +#if defined(ALWAYS_LOADABLE_CHECKED_REF_STORAGE) || \ +defined(SOMETIMES_LOADABLE_CHECKED_REF_STORAGE) +#error Overlapping meta-programming macros +#endif +#define ALWAYS_LOADABLE_CHECKED_REF_STORAGE(Name, name, NAME) \ +ALWAYS_OR_SOMETIMES_LOADABLE_CHECKED_REF_STORAGE(Name, name, NAME) +#define SOMETIMES_LOADABLE_CHECKED_REF_STORAGE(Name, name, NAME) \ +ALWAYS_OR_SOMETIMES_LOADABLE_CHECKED_REF_STORAGE(Name, name, NAME) +#endif + +#ifdef NEVER_OR_SOMETIMES_LOADABLE_CHECKED_REF_STORAGE +#if defined(NEVER_LOADABLE_CHECKED_REF_STORAGE) || \ +defined(SOMETIMES_LOADABLE_CHECKED_REF_STORAGE) +#error Overlapping meta-programming macros +#endif +#define NEVER_LOADABLE_CHECKED_REF_STORAGE(Name, name, NAME) \ +NEVER_OR_SOMETIMES_LOADABLE_CHECKED_REF_STORAGE(Name, name, NAME) +#define SOMETIMES_LOADABLE_CHECKED_REF_STORAGE(Name, name, NAME) \ +NEVER_OR_SOMETIMES_LOADABLE_CHECKED_REF_STORAGE(Name, name, NAME) +#endif + +#ifdef LOADABLE_REF_STORAGE +#if defined(ALWAYS_LOADABLE_CHECKED_REF_STORAGE) || \ +defined(SOMETIMES_LOADABLE_CHECKED_REF_STORAGE) || \ +defined(UNCHECKED_REF_STORAGE) +#error Overlapping meta-programming macros +#endif +#define ALWAYS_LOADABLE_CHECKED_REF_STORAGE(Name, name, NAME) \ +LOADABLE_REF_STORAGE(Name, name, NAME) +#define SOMETIMES_LOADABLE_CHECKED_REF_STORAGE(Name, name, NAME) \ +LOADABLE_REF_STORAGE(Name, name, NAME) +#define UNCHECKED_REF_STORAGE(Name, name, NAME) \ +LOADABLE_REF_STORAGE(Name, name, NAME) +#endif + +#ifdef CHECKED_REF_STORAGE +#if defined(SOMETIMES_LOADABLE_CHECKED_REF_STORAGE) || \ +defined(ALWAYS_LOADABLE_CHECKED_REF_STORAGE) || \ +defined(NEVER_LOADABLE_CHECKED_REF_STORAGE) +#error Overlapping meta-programming macros +#endif +#define ALWAYS_LOADABLE_CHECKED_REF_STORAGE(Name, name, NAME) \ +CHECKED_REF_STORAGE(Name, name, NAME) +#define SOMETIMES_LOADABLE_CHECKED_REF_STORAGE(Name, name, NAME) \ +CHECKED_REF_STORAGE(Name, name, NAME) +#define NEVER_LOADABLE_CHECKED_REF_STORAGE(Name, name, NAME) \ +CHECKED_REF_STORAGE(Name, name, NAME) +#endif + +#ifndef NEVER_LOADABLE_CHECKED_REF_STORAGE +#define NEVER_LOADABLE_CHECKED_REF_STORAGE(Name, name, NAME) \ +REF_STORAGE(Name, name, NAME) +#endif + +#ifndef SOMETIMES_LOADABLE_CHECKED_REF_STORAGE +#define SOMETIMES_LOADABLE_CHECKED_REF_STORAGE(Name, name, NAME) \ +REF_STORAGE(Name, name, NAME) +#endif + +#ifndef ALWAYS_LOADABLE_CHECKED_REF_STORAGE +#define ALWAYS_LOADABLE_CHECKED_REF_STORAGE(Name, name, NAME) \ +REF_STORAGE(Name, name, NAME) +#endif + +#ifndef UNCHECKED_REF_STORAGE +#define UNCHECKED_REF_STORAGE(Name, name, NAME) \ +REF_STORAGE(Name, name, NAME) +#endif + +#ifndef REF_STORAGE_RANGE +#define REF_STORAGE_RANGE(First, Last) +#endif + +// NOTE: You will need to update ReferenceOwnership in ModuleFormat.h. +//NEVER_LOADABLE_CHECKED_REF_STORAGE(Weak, weak, WEAK) +//SOMETIMES_LOADABLE_CHECKED_REF_STORAGE(Unowned, unowned, UNOWNED) +//UNCHECKED_REF_STORAGE(Unmanaged, unmanaged, UNMANAGED) +REF_STORAGE_RANGE(Weak, Unmanaged) + +#undef REF_STORAGE +#undef NEVER_LOADABLE_CHECKED_REF_STORAGE +#undef ALWAYS_LOADABLE_CHECKED_REF_STORAGE +#undef SOMETIMES_LOADABLE_CHECKED_REF_STORAGE +#undef UNCHECKED_REF_STORAGE +#undef REF_STORAGE_RANGE + +#undef ALWAYS_OR_SOMETIMES_LOADABLE_CHECKED_REF_STORAGE +#undef NEVER_OR_SOMETIMES_LOADABLE_CHECKED_REF_STORAGE +#undef LOADABLE_REF_STORAGE +#undef CHECKED_REF_STORAGE diff --git a/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/AMapStandardTypesMangling.def b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/AMapStandardTypesMangling.def new file mode 100644 index 0000000..f44b5fe --- /dev/null +++ b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/AMapStandardTypesMangling.def @@ -0,0 +1,68 @@ +//===--- AMapStandardTypesMangling - Mangling Metaprogramming ---*- C++ -*-===// +// +// This source file is part of the Swift.org open source project +// +// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors +// Licensed under Apache License v2.0 with Runtime Library Exception +// +// See https://swift.org/LICENSE.txt for license information +// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors +// +//===----------------------------------------------------------------------===// + +/// STANDARD_TYPE(KIND, MANGLING, TYPENAME) +/// The 1-character MANGLING for a known TYPENAME of KIND. + +STANDARD_TYPE(Structure, A, AutoreleasingUnsafeMutablePointer) +STANDARD_TYPE(Structure, a, Array) +STANDARD_TYPE(Structure, b, Bool) +STANDARD_TYPE(Structure, c, UnicodeScalar) +STANDARD_TYPE(Structure, D, Dictionary) +STANDARD_TYPE(Structure, d, Double) +STANDARD_TYPE(Structure, f, Float) +STANDARD_TYPE(Structure, h, Set) +STANDARD_TYPE(Structure, I, DefaultIndices) +STANDARD_TYPE(Structure, i, Int) +STANDARD_TYPE(Structure, J, Character) +STANDARD_TYPE(Structure, N, ClosedRange) +STANDARD_TYPE(Structure, n, Range) +STANDARD_TYPE(Structure, O, ObjectIdentifier) +STANDARD_TYPE(Structure, P, UnsafePointer) +STANDARD_TYPE(Structure, p, UnsafeMutablePointer) +STANDARD_TYPE(Structure, R, UnsafeBufferPointer) +STANDARD_TYPE(Structure, r, UnsafeMutableBufferPointer) +STANDARD_TYPE(Structure, S, String) +STANDARD_TYPE(Structure, s, Substring) +STANDARD_TYPE(Structure, u, UInt) +STANDARD_TYPE(Structure, V, UnsafeRawPointer) +STANDARD_TYPE(Structure, v, UnsafeMutableRawPointer) +STANDARD_TYPE(Structure, W, UnsafeRawBufferPointer) +STANDARD_TYPE(Structure, w, UnsafeMutableRawBufferPointer) + +STANDARD_TYPE(Enum, q, Optional) + +STANDARD_TYPE(Protocol, B, BinaryFloatingPoint) +STANDARD_TYPE(Protocol, E, Encodable) +STANDARD_TYPE(Protocol, e, Decodable) +STANDARD_TYPE(Protocol, F, FloatingPoint) +STANDARD_TYPE(Protocol, G, RandomNumberGenerator) +STANDARD_TYPE(Protocol, H, Hashable) +STANDARD_TYPE(Protocol, j, Numeric) +STANDARD_TYPE(Protocol, K, BidirectionalCollection) +STANDARD_TYPE(Protocol, k, RandomAccessCollection) +STANDARD_TYPE(Protocol, L, Comparable) +STANDARD_TYPE(Protocol, l, Collection) +STANDARD_TYPE(Protocol, M, MutableCollection) +STANDARD_TYPE(Protocol, m, RangeReplaceableCollection) +STANDARD_TYPE(Protocol, Q, Equatable) +STANDARD_TYPE(Protocol, T, Sequence) +STANDARD_TYPE(Protocol, t, IteratorProtocol) +STANDARD_TYPE(Protocol, U, UnsignedInteger) +STANDARD_TYPE(Protocol, X, RangeExpression) +STANDARD_TYPE(Protocol, x, Strideable) +STANDARD_TYPE(Protocol, Y, RawRepresentable) +STANDARD_TYPE(Protocol, y, StringProtocol) +STANDARD_TYPE(Protocol, Z, SignedInteger) +STANDARD_TYPE(Protocol, z, BinaryInteger) + +#undef STANDARD_TYPE diff --git a/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/AMapValueWitnessMangling.def b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/AMapValueWitnessMangling.def new file mode 100644 index 0000000..e69de29 diff --git a/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapFoundationConst.h b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapFoundationConst.h new file mode 100644 index 0000000..000ffac --- /dev/null +++ b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapFoundationConst.h @@ -0,0 +1,70 @@ +// +// AMapFoundationConst.h +// AMapFoundationKit +// +// Created by JL on 2019/7/22. +// Copyright © 2019 Amap.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NSInteger AMapFoundationNSErrorCode; + +//ErrorDomain:文件不存在 错误码:-555555 +extern NSErrorDomain const AMapFoundationNSErrorFileDonotExist; +extern AMapFoundationNSErrorCode const AMapFoundationNSErrorFileDonotExistCode; + +//ErrorDomain:文件路径不合法 错误码:-555556 +extern NSErrorDomain const AMapFoundationNSErrorFilePathInvaild; +extern AMapFoundationNSErrorCode const AMapFoundationNSErrorFilePathInvaildCode; + +//ErrorDomain:指定类型的日志文件不存在 错误码:-555557 +extern NSErrorDomain const AMapFoundationNSErrorTypeLogDonotExist; +extern AMapFoundationNSErrorCode const AMapFoundationNSErrorTypeLogDonotExistCode; + +//ErrorDomain:待上传的数据为空(可能是组装/压缩时出错) 错误码:-555558 +extern NSErrorDomain const AMapFoundationNSErrorUploadDataIsEmpty; +extern AMapFoundationNSErrorCode const AMapFoundationNSErrorUploadDataIsEmptyCode; + +//ErrorDomain:参数错误 错误码:-444444 +extern NSErrorDomain const AMapFoundationNSErrorParametersInvalid; +extern AMapFoundationNSErrorCode const AMapFoundationNSErrorParametersInvalidCode; + + +extern NSErrorDomain const AMapFoundationNSErrorCloudConfigDisable; +extern AMapFoundationNSErrorCode const AMapFoundationNSErrorCloudConfigDisableCode; + +extern NSErrorDomain const AMapFoundationNSErrorNetworkUnusable; +extern AMapFoundationNSErrorCode const AMapFoundationNSErrorNetworkUnusableCode; + +extern NSErrorDomain const AMapFoundationNSErrorCurrentworkIsRunning; +extern AMapFoundationNSErrorCode const AMapFoundationNSErrorCurrentworkIsRunningCode; + +extern NSErrorDomain const AMapFoundationNSErrorCurrentUploadSizeHaveExcess; +extern AMapFoundationNSErrorCode const AMapFoundationNSErrorCurrentUploadSizeHaveExcessCode; + + +extern NSErrorDomain const AMapFoundationErrorPrivacyShowUnknow; +extern AMapFoundationNSErrorCode const AMapFoundationErrorPrivacyShowUnknowCode; + +extern NSErrorDomain const AMapFoundationErrorPrivacyShowNoShow; +extern AMapFoundationNSErrorCode const AMapFoundationErrorPrivacyShowNoShowCode; + +extern NSErrorDomain const AMapFoundationErrorPrivacyInfoUnknow; +extern AMapFoundationNSErrorCode const AMapFoundationErrorPrivacyInfoUnknowCode; + +extern NSErrorDomain const AMapFoundationErrorPrivacyInfoNotContain; +extern AMapFoundationNSErrorCode const AMapFoundationErrorPrivacyInfoNotContainCode; + +extern NSErrorDomain const AMapFoundationErrorPrivacyAgreeUnknow; +extern AMapFoundationNSErrorCode const AMapFoundationErrorPrivacyAgreeUnknowCode; + +extern NSErrorDomain const AMapFoundationErrorPrivacyAgreeNotAgreee; +extern AMapFoundationNSErrorCode const AMapFoundationErrorPrivacyAgreeNotAgreeeCode; + +extern NSErrorDomain const AMapFoundationErrorInvaildUserKey; +extern AMapFoundationNSErrorCode const AMapFoundationErrorInvaildUserKeyCode; + +NS_ASSUME_NONNULL_END diff --git a/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapFoundationKit.h b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapFoundationKit.h new file mode 100644 index 0000000..258e115 --- /dev/null +++ b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapFoundationKit.h @@ -0,0 +1,16 @@ +// +// AMapFoundationKit.h +// AMapFoundationKit +// +// Created by xiaoming han on 15/10/28. +// Copyright © 2015年 Amap. All rights reserved. +// + +#import +#import +#import +#import +#import +#import + +#import diff --git a/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapFoundationVersion.h b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapFoundationVersion.h new file mode 100644 index 0000000..124d170 --- /dev/null +++ b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapFoundationVersion.h @@ -0,0 +1,19 @@ +// +// AMapFoundationVersion.h +// AMapFoundation +// +// Created by xiaoming han on 15/10/26. +// Copyright © 2015年 Amap. All rights reserved. +// + +#import + +#ifndef AMapFoundationVersion_h +#define AMapFoundationVersion_h + +#define AMapFoundationVersionNumber 10802 + +FOUNDATION_EXTERN NSString * const AMapFoundationVersion; +FOUNDATION_EXTERN NSString * const AMapFoundationName; + +#endif /* AMapFoundationVersion_h */ diff --git a/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapServices.h b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapServices.h new file mode 100644 index 0000000..d23eaba --- /dev/null +++ b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapServices.h @@ -0,0 +1,63 @@ +// +// AMapSearchServices.h +// AMapSearchKit +// +// Created by xiaoming han on 15/6/18. +// Copyright (c) 2015年 xiaoming han. All rights reserved. +// + +#import + + +/** + * 是否为海外用户...海外用户,SDK内部会屏蔽一些操作 默认为NO. + * @warning AMapServices初始化之前,设置才能生效 + */ +extern BOOL _amapLocationOverseas; + +// 显示隐私弹窗状态 -1: unknow , 0 : 未显示 , 1 : 已显示 +typedef NS_ENUM(NSInteger, AMapPrivacyShowStatus) +{ + AMapPrivacyShowStatusUnknow = -1, + AMapPrivacyShowStatusNotShow = 0, + AMapPrivacyShowStatusDidShow = 1, +}; + +// 集成SDK隐私信息状态 -1: unknow , 0 : 未集成 , 1 : 已集成 +typedef NS_ENUM(NSInteger, AMapPrivacyInfoStatus) +{ + AMapPrivacyInfoStatusUnknow = -1, + AMapPrivacyInfoStatusNotContain = 0, + AMapPrivacyInfoStatusDidContain = 1, +}; + +// 用户同意隐私状态 -1: unknow , 0 : 未同意 , 1 : 已同意 +typedef NS_ENUM(NSInteger, AMapPrivacyAgreeStatus) +{ + AMapPrivacyAgreeStatusUnknow = -1, + AMapPrivacyAgreeStatusNotAgree = 0, + AMapPrivacyAgreeStatusDidAgree = 1, +}; + +///高德SDK服务类 +@interface AMapServices : NSObject + +/** + * @brief 获取单例 + */ ++ (AMapServices *)sharedServices; + + +///APIkey。设置key,需要在高德官网控制台绑定对应的bundleid。 +@property (nonatomic, copy) NSString *apiKey; + +///是否开启HTTPS,从1.3.3版本开始默认为YES。 +@property (nonatomic, assign) BOOL enableHTTPS; + +///是否启用崩溃日志上传。默认为YES, 只有在真机上设置有效。\n开启崩溃日志上传有助于我们更好的了解SDK的状况,可以帮助我们持续优化和改进SDK。需要注意的是,SDK内部是通过设置NSUncaughtExceptionHandler来捕获异常的,如果您的APP中使用了其他收集崩溃日志的SDK,或者自己有设置NSUncaughtExceptionHandler的话,请保证 AMapServices 的初始化是在其他设置NSUncaughtExceptionHandler操作之后进行的,我们的handler会再处理完异常后调用前一次设置的handler,保证之前设置的handler会被执行。 +@property (nonatomic, assign) BOOL crashReportEnabled __attribute__((deprecated("从v1.5.7开始废弃,调用无任何作用"))); + +///设备标识,取自idfv。用于排查问题时提供。 +@property (nonatomic, readonly) NSString *identifier; + +@end diff --git a/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapURLSearch.h b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapURLSearch.h new file mode 100644 index 0000000..9379f4f --- /dev/null +++ b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapURLSearch.h @@ -0,0 +1,41 @@ +// +// AMapURLSearch.h +// AMapFoundation +// +// Created by xiaoming han on 15/10/28. +// Copyright © 2015年 Amap. All rights reserved. +// + +#import +#import "AMapURLSearchConfig.h" + +///调起高德地图URL进行搜索,若是调起失败,可使用`+ (void)getLatestAMapApp;`方法获取最新版高德地图app. +@interface AMapURLSearch : NSObject + +/** + * @brief 打开高德地图AppStore页面 + */ ++ (void)getLatestAMapApp; + +/** + * @brief 调起高德地图app驾车导航. + * @param config 配置参数. + * @return 是否成功.若为YES则成功调起,若为NO则无法调起. + */ ++ (BOOL)openAMapNavigation:(AMapNaviConfig *)config; + +/** + * @brief 调起高德地图app进行路径规划. + * @param config 配置参数. + * @return 是否成功. + */ ++ (BOOL)openAMapRouteSearch:(AMapRouteConfig *)config; + +/** + * @brief 调起高德地图app进行POI搜索. + * @param config 配置参数. + * @return 是否成功. + */ ++ (BOOL)openAMapPOISearch:(AMapPOIConfig *)config; + +@end diff --git a/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapURLSearchConfig.h b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapURLSearchConfig.h new file mode 100644 index 0000000..666b492 --- /dev/null +++ b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapURLSearchConfig.h @@ -0,0 +1,79 @@ +// +// MAMapURLSearchConfig.h +// MAMapKitNew +// +// Created by xiaoming han on 15/5/25. +// Copyright (c) 2015年 xiaoming han. All rights reserved. +// + +#import +#import +#import "AMapURLSearchType.h" + +///导航配置信息 +@interface AMapNaviConfig : NSObject + +///应用返回的Scheme +@property (nonatomic, copy) NSString *appScheme; + +///应用名称 +@property (nonatomic, copy) NSString *appName; + +///终点 +@property (nonatomic, assign) CLLocationCoordinate2D destination; + +///导航策略 +@property (nonatomic, assign) AMapDrivingStrategy strategy; + +@end + +#pragma mark - + +///路径搜索配置信息 +@interface AMapRouteConfig : NSObject + +///应用返回的Scheme +@property (nonatomic, copy) NSString *appScheme; + +///应用名称 +@property (nonatomic, copy) NSString *appName; + +///起点坐标 +@property (nonatomic, assign) CLLocationCoordinate2D startCoordinate; + +///终点坐标 +@property (nonatomic, assign) CLLocationCoordinate2D destinationCoordinate; + +///驾车策略 +@property (nonatomic, assign) AMapDrivingStrategy drivingStrategy; + +///公交策略 +@property (nonatomic, assign) AMapTransitStrategy transitStrategy; + +///路径规划类型 +@property (nonatomic, assign) AMapRouteSearchType routeType; + +@end + +#pragma mark - + +///POI搜索配置信息 +@interface AMapPOIConfig : NSObject + +///应用返回的Scheme +@property (nonatomic, copy) NSString *appScheme; + +///应用名称 +@property (nonatomic, copy) NSString *appName; + +///搜索关键字 +@property (nonatomic, copy) NSString *keywords; + +///左上角坐标 +@property (nonatomic, assign) CLLocationCoordinate2D leftTopCoordinate; + +///右下角坐标 +@property (nonatomic, assign) CLLocationCoordinate2D rightBottomCoordinate; + +@end + diff --git a/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapURLSearchType.h b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapURLSearchType.h new file mode 100644 index 0000000..424d905 --- /dev/null +++ b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapURLSearchType.h @@ -0,0 +1,44 @@ +// +// MAMapURLSearchType.h +// MAMapKitNew +// +// Created by xiaoming han on 15/5/25. +// Copyright (c) 2015年 xiaoming han. All rights reserved. +// + +///驾车策略 +typedef NS_ENUM(NSInteger, AMapDrivingStrategy) +{ + AMapDrivingStrategyFastest = 0, ///<速度最快 + AMapDrivingStrategyMinFare = 1, ///<避免收费 + AMapDrivingStrategyShortest = 2, ///<距离最短 + + AMapDrivingStrategyNoHighways = 3, ///<不走高速 + AMapDrivingStrategyAvoidCongestion = 4, ///<躲避拥堵 + + AMapDrivingStrategyAvoidHighwaysAndFare = 5, ///<不走高速且避免收费 + AMapDrivingStrategyAvoidHighwaysAndCongestion = 6, ///<不走高速且躲避拥堵 + AMapDrivingStrategyAvoidFareAndCongestion = 7, ///<躲避收费和拥堵 + AMapDrivingStrategyAvoidHighwaysAndFareAndCongestion = 8 ///<不走高速躲避收费和拥堵 +}; + +///公交策略 +typedef NS_ENUM(NSInteger, AMapTransitStrategy) +{ + AMapTransitStrategyFastest = 0,///<最快捷 + AMapTransitStrategyMinFare = 1,///<最经济 + AMapTransitStrategyMinTransfer = 2,///<最少换乘 + AMapTransitStrategyMinWalk = 3,///<最少步行 + AMapTransitStrategyMostComfortable = 4,///<最舒适 + AMapTransitStrategyAvoidSubway = 5,///<不乘地铁 +}; + +///路径规划类型 +typedef NS_ENUM(NSInteger, AMapRouteSearchType) +{ + AMapRouteSearchTypeDriving = 0, ///<驾车 + AMapRouteSearchTypeTransit = 1, ///<公交 + AMapRouteSearchTypeWalking = 2, ///<步行 +}; + + diff --git a/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapUtility.h b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapUtility.h new file mode 100644 index 0000000..6cb2692 --- /dev/null +++ b/Pods/AMapFoundation-NO-IDFA/AMapFoundationKit.framework/Headers/AMapUtility.h @@ -0,0 +1,50 @@ +// +// AMapUtility.h +// AMapFoundation +// +// Created by xiaoming han on 15/10/27. +// Copyright © 2015年 Amap. All rights reserved. +// + +#import +#import + +//工具方法 + +/** + * @brief 如果字符串为nil则返回空字符串 + */ +FOUNDATION_STATIC_INLINE NSString * AMapEmptyStringIfNil(NSString *s) +{ + return s ? s : @""; +} + +///坐标类型枚举 +typedef NS_ENUM(NSInteger, AMapCoordinateType) +{ + AMapCoordinateTypeAMap = -1, /// +#import "AMapGeoFenceRegionObj.h" + +// 以下类涉及的坐标需要使用高德坐标系坐标(GCJ02) + +@protocol AMapGeoFenceManagerDelegate; + +///地理围栏监听状态类型 +typedef NS_OPTIONS(NSUInteger, AMapGeoFenceActiveAction) +{ + AMapGeoFenceActiveActionNone = 0, ///< 不进行监听 + AMapGeoFenceActiveActionInside = 1 << 0, ///< 在范围内 + AMapGeoFenceActiveActionOutside = 1 << 1, ///< 在范围外 + AMapGeoFenceActiveActionStayed = 1 << 2, ///< 停留(在范围内超过10分钟) +}; + +///地理围栏任务状态类型 +typedef NS_OPTIONS(NSUInteger, AMapGeoFenceRegionActiveStatus) +{ + AMapGeoFenceRegionActiveUNMonitor = 0, ///< 未注册 + AMapGeoFenceRegionActiveMonitoring = 1 << 0, ///< 正在监控 + AMapGeoFenceRegionActivePaused = 1 << 1, ///< 暂停监控 +}; + +///地理围栏管理类(since 2.3.0) +@interface AMapGeoFenceManager : NSObject + + +///实现了 AMapGeoFenceManagerDelegate 协议的类指针。 +@property (nonatomic, weak) id delegate; + + +///需要进行通知的行为,默认为AMapGeoFenceActiveActionInside。 +@property (nonatomic, assign) AMapGeoFenceActiveAction activeAction; + + +///指定定位是否会被系统自动暂停。默认为NO。 +@property (nonatomic, assign) BOOL pausesLocationUpdatesAutomatically; + + +///是否允许后台定位。默认为NO。只在iOS 9.0及之后起作用。设置为YES的时候必须保证 Background Modes 中的 Location updates 处于选中状态,否则会抛出异常。 +@property (nonatomic, assign) BOOL allowsBackgroundLocationUpdates; + +///检测是否存在虚拟定位风险,默认为NO,即不检测。 \n如果设置为YES,检测到风险后,会通过amapGeoFenceManager:didGeoFencesStatusChangedForRegion:customID:error: 的error给出风险提示,error的格式为error.domain==AMapGeoFenceErrorDomain; error.code==AMapGeoFenceErroFailureLocating; +@property (nonatomic, assign) BOOL detectRiskOfFakeLocation; + + +/** + * @brief 添加一个圆形围栏 + * @param center 围栏的中心点经纬度坐标 + * @param radius 围栏的半径,单位:米,要求大于0 + * @param customID 用户自定义ID,可选,SDK原值返回 + */ +- (void)addCircleRegionForMonitoringWithCenter:(CLLocationCoordinate2D)center radius:(CLLocationDistance)radius customID:(NSString *)customID; + + +/** + * @brief 根据经纬度坐标数据添加一个闭合的多边形围栏,点与点之间按顺序尾部相连, 第一个点与最后一个点相连 + * @param coordinates 经纬度坐标点数据,coordinates对应的内存会拷贝,调用者负责该内存的释放 + * @param count 经纬度坐标点的个数,不可小于3个 + * @param customID 用户自定义ID,可选,SDK原值返回 + */ +- (void)addPolygonRegionForMonitoringWithCoordinates:(CLLocationCoordinate2D *)coordinates count:(NSInteger)count customID:(NSString *)customID; + + +/** + * @brief 根据要查询的关键字,类型,城市等信息,添加一个或者多个POI地理围栏 + * @param keyword 要查询的关键字,多个关键字用“|”分割,必填,keyword和type两者至少必选其一 + * @param type 要查询的POI类型,多个类型用“|”分割,必填,keyword和type两者至少必选其一,具体分类编码和规则详见: http://lbs.amap.com/api/webservice/guide/api/search/#text + * @param city 要查询的城市 + * @param size 要查询的数据的条数,(0,25],传入<=0的值为10,传入大于25的值为25,默认10 + * @param customID 用户自定义ID,可选,SDK原值返回 + */ +- (void)addKeywordPOIRegionForMonitoringWithKeyword:(NSString *)keyword POIType:(NSString *)type city:(NSString *)city size:(NSInteger)size customID:(NSString *)customID; + + +/** + * @brief 根据要查询的点的经纬度,搜索半径等信息,添加一个或者多个POI围栏 + * @param locationPoint 点的经纬度坐标,必填 + * @param aroundRadius 查询半径,单位:米,(0,50000],超出范围取3000,默认3000 + * @param keyword 要查询的关键字,多个关键字用“|”分割,可选 + * @param type 要查询的POI类型,多个类型用“|”分割,可选 + * @param size 要查询的数据的条数,(0,25],传入<=0的值为10,传入大于25的值为25,默认10 + * @param customID 用户自定义ID,可选,SDK原值返回 + */ +- (void)addAroundPOIRegionForMonitoringWithLocationPoint:(CLLocationCoordinate2D)locationPoint aroundRadius:(NSInteger)aroundRadius keyword:(NSString *)keyword POIType:(NSString *)type size:(NSInteger)size customID:(NSString *)customID; + + +/** + * @brief 根据要查询的行政区域关键字,添加一个或者多个行政区域围栏 + * @param districtName 行政区域关键字,必填,只支持单个关键词语:行政区名称、citycode、adcode,规则详见: http://lbs.amap.com/api/webservice/guide/api/district/#district + * @param customID 用户自定义ID,可选,SDK原值返回 + */ +- (void)addDistrictRegionForMonitoringWithDistrictName:(NSString *)districtName customID:(NSString *)customID; + +/** + * @brief 获取指定围栏的运行状态 + * @param region 要获取运行状态的围栏 + * @return 返回指定围栏的运行状态 + */ +- (AMapGeoFenceRegionActiveStatus)statusWithGeoFenceRegion:(AMapGeoFenceRegion *)region; + +/** + * @brief 根据customID获得所有已经注册的围栏,如果customID传nil,则返回全部已注册围栏 + * @param customID 用户执行添加围栏函数时传入的customID + * @return 获得的围栏构成的数组,如果没有结果,返回nil + */ +- (NSArray *)geoFenceRegionsWithCustomID:(NSString *)customID; + +/** + * @brief 根据customID获得所有正在监控的围栏,如果customID传nil,则返回全部正在监控的围栏 + * @param customID 用户执行添加围栏函数时传入的customID + * @return 获得的围栏构成的数组,如果没有结果,返回nil + */ +- (NSArray *)monitoringGeoFenceRegionsWithCustomID:(NSString *)customID; + +/** + * @brief 根据customID获得所有已经暂停的围栏,如果customID传nil,则返回全部已经暂停的围栏 + * @param customID 用户执行添加围栏函数时传入的customID + * @return 获得的围栏构成的数组,如果没有结果,返回nil + */ +- (NSArray *)pausedGeoFenceRegionsWithCustomID:(NSString *)customID; + + +/** + * @brief 暂停指定customID的围栏 + * @param customID 用户执行添加围栏函数时传入的customID + * @return 返回被暂停围栏的数组,如果没有围栏被暂停,返回nil + */ +- (NSArray *)pauseGeoFenceRegionsWithCustomID:(NSString *)customID; + + +/** + * @brief 暂停指定围栏 + * @param region 要暂停监控的围栏 + * @return 返回指定围栏是否被暂停,如果指定围栏没有注册,则返回NO + */ +- (BOOL)pauseTheGeoFenceRegion:(AMapGeoFenceRegion *)region; + +/** + * @brief 根据customID开始监控已经暂停的围栏 + * @param customID 用户执行添加围栏函数时传入的customID + * @return 返回开始监控的围栏构成的数组 + */ +- (NSArray *)startGeoFenceRegionsWithCustomID:(NSString *)customID; + +/** + * @brief 开始监控指定围栏 + * @param region 要开始监控的围栏 + * @return 返回指定围栏是否开始监控,如果指定围栏没有注册,则返回NO + */ +- (BOOL)startTheGeoFenceRegion:(AMapGeoFenceRegion *)region; + +/** + * @brief 移除指定围栏 + * @param region 要停止监控的围栏 + */ +- (void)removeTheGeoFenceRegion:(AMapGeoFenceRegion *)region; + +/** + * @brief 移除指定customID的围栏 + * @param customID 用户执行添加围栏函数时传入的customID + */ +- (void)removeGeoFenceRegionsWithCustomID:(NSString *)customID; + +/** + * @brief 移除所有围栏 + */ +- (void)removeAllGeoFenceRegions; + +@end + +///地理围栏代理协议(since 2.3.0),该协议定义了获取地理围栏相关回调方法,包括添加、状态改变等。 +@protocol AMapGeoFenceManagerDelegate + +@required + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 140000 + +/** + * @brief iOS14及以上版本使用地理围栏功能,需要在plist中配置NSLocationTemporaryUsageDescriptionDictionary字典描述,且添加自定义Key描述地理围栏的使用场景,此描述会在申请临时精确定位权限的弹窗中展示。该回调触发条件:拥有定位权限,但是没有获得精确定位权限的情况下,会触发该回调。此方法实现调用申请临时精确定位权限API即可: + * [locationManager requestTemporaryFullAccuracyAuthorizationWithPurposeKey:@"PurposeKey" completion:^(NSError *error){ + * if(completion){ + * completion(error); + * } + * }]; (必须调用,不然无法正常获取临时精确定位权限) + * @param manager 地理围栏管理类。 + * @param locationManager 需要申请临时精确定位权限的locationManager。 + * @param completion 临时精确定位权限API回调结果。直接返回系统error即可 + * @since 2.6.7 + */ +- (void)amapLocationManager:(AMapGeoFenceManager *)manager doRequireTemporaryFullAccuracyAuth:(CLLocationManager*)locationManager completion:(void(^)(NSError *error))completion; + +#endif + +@optional + +/** + * @brief 当plist配置NSLocationAlwaysUsageDescription或者NSLocationAlwaysAndWhenInUseUsageDescription,并且[CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined,会调用代理的此方法。 + 此方法实现申请后台权限API即可:[locationManager requestAlwaysAuthorization](必须调用,不然无法正常获取定位权限) + * @param manager 地理围栏管理类。 + * @param locationManager 需要申请后台定位权限的locationManager。 + * @since 2.6.2 + */ +- (void)amapGeoFenceManager:(AMapGeoFenceManager *)manager doRequireLocationAuth:(CLLocationManager*)locationManager; + +/** + * @brief 添加地理围栏完成后的回调,成功与失败都会调用 + * @param manager 地理围栏管理类 + * @param regions 成功添加的一个或多个地理围栏构成的数组 + * @param customID 用户执行添加围栏函数时传入的customID + * @param error 添加失败的错误信息 + */ +- (void)amapGeoFenceManager:(AMapGeoFenceManager *)manager didAddRegionForMonitoringFinished:(NSArray *)regions customID:(NSString *)customID error:(NSError *)error; + + +/** + * @brief 地理围栏状态改变时回调,当围栏状态的值发生改变,定位失败都会调用 + * @param manager 地理围栏管理类 + * @param region 状态改变的地理围栏 + * @param customID 用户执行添加围栏函数时传入的customID + * @param error 错误信息,如定位相关的错误 + */ +- (void)amapGeoFenceManager:(AMapGeoFenceManager *)manager didGeoFencesStatusChangedForRegion:(AMapGeoFenceRegion *)region customID:(NSString *)customID error:(NSError *)error; + +@end diff --git a/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Headers/AMapGeoFenceRegionObj.h b/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Headers/AMapGeoFenceRegionObj.h new file mode 100644 index 0000000..833fa9c --- /dev/null +++ b/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Headers/AMapGeoFenceRegionObj.h @@ -0,0 +1,120 @@ +// +// AMapGeoFenceRegionObj.h +// AMapLocationKit +// +// Created by hanxiaoming on 16/12/5. +// Copyright © 2016年 Amap. All rights reserved. +// + +#import "AMapLocationCommonObj.h" + + +///AMapGeoFence Region State +typedef NS_ENUM(NSInteger, AMapGeoFenceRegionStatus) +{ + AMapGeoFenceRegionStatusUnknown = 0, ///< 未知 + AMapGeoFenceRegionStatusInside = 1, ///< 在范围内 + AMapGeoFenceRegionStatusOutside = 2, ///< 在范围外 + AMapGeoFenceRegionStatusStayed = 3, ///< 停留(在范围内超过10分钟) +}; + +typedef NS_ENUM(NSInteger, AMapGeoFenceRegionType) +{ + AMapGeoFenceRegionTypeCircle = 0, /// 圆形地理围栏 + AMapGeoFenceRegionTypePolygon = 1, /// 多边形地理围栏 + AMapGeoFenceRegionTypePOI = 2, /// 兴趣点(POI)地理围栏 + AMapGeoFenceRegionTypeDistrict = 3, /// 行政区划地理围栏 +}; + +#pragma mark - AMapGeoFenceRegion + + +///地理围栏基类,不可直接使用。(since 2.3.0) +@interface AMapGeoFenceRegion : NSObject + + +///AMapGeoFenceRegion的唯一标识符 +@property (nonatomic, copy, readonly) NSString *identifier; + + +///用户自定义ID,可为nil。 +@property (nonatomic, copy, readonly) NSString *customID; + + +///坐标点和围栏的关系,比如用户的位置和围栏的关系 +@property (nonatomic, assign) AMapGeoFenceRegionStatus fenceStatus; + +///用户自定义ID,可为nil。 +@property (nonatomic, assign) AMapGeoFenceRegionType regionType; + +///缓存最近获取的定位信息,可能会存在延时,可为nil,会在获取定位时更新 +@property (nonatomic, copy) CLLocation *currentLocation; + +@end + + +#pragma mark - AMapLocationCircleRegion + + +///圆形地理围栏(since 2.3.0) +@interface AMapGeoFenceCircleRegion : AMapGeoFenceRegion + + +///中心点的经纬度坐标 +@property (nonatomic, readonly) CLLocationCoordinate2D center; + + +///半径,单位:米 +@property (nonatomic, readonly) CLLocationDistance radius; + +@end + + +#pragma mark -AMapGeoFencePolygonRegion + + +///多边形地理围栏(since 2.3.0) +@interface AMapGeoFencePolygonRegion : AMapGeoFenceRegion + + +///经纬度坐标点数据 +@property (nonatomic, readonly) CLLocationCoordinate2D *coordinates; + + +///经纬度坐标点的个数 +@property (nonatomic, readonly) NSInteger count; + + +@end + + +#pragma mark -AMapGeoFencePOIRegion + + +///兴趣点(POI)地理围栏(since 2.3.0) +@interface AMapGeoFencePOIRegion : AMapGeoFenceCircleRegion + + +///POI信息 +@property (nonatomic, strong, readonly) AMapLocationPOIItem *POIItem; + + +@end + + +#pragma mark -AMapGeoFenceDistrictRegion + + +///行政区划地理围栏(since 2.3.0) +@interface AMapGeoFenceDistrictRegion : AMapGeoFenceRegion + + +///行政区域信息 +@property (nonatomic, strong, readonly) AMapLocationDistrictItem *districtItem; + + +///行政区域轮廓坐标点,每个行政区可能有多个模块,每个模块的坐标点数组由AMapLocationPoint构成 +@property (nonatomic, copy, readonly) NSArray *> *polylinePoints; + + +@end diff --git a/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Headers/AMapLocationCommonObj.h b/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Headers/AMapLocationCommonObj.h new file mode 100644 index 0000000..d5529d0 --- /dev/null +++ b/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Headers/AMapLocationCommonObj.h @@ -0,0 +1,203 @@ +// +// AMapLocationCommonObj.h +// AMapLocationKit +// +// Created by AutoNavi on 15/10/22. +// Copyright © 2015年 Amap. All rights reserved. +// + +#import +#import +#import + + +///AMapLocation errorDomain +extern NSString * const AMapLocationErrorDomain; + +///AMapLocation errorCode +typedef NS_ENUM(NSInteger, AMapLocationErrorCode) +{ + AMapLocationErrorUnknown = 1, ///<未知错误 + AMapLocationErrorLocateFailed = 2, ///<定位错误 + AMapLocationErrorReGeocodeFailed = 3, ///<逆地理错误 + AMapLocationErrorTimeOut = 4, ///<超时 + AMapLocationErrorCanceled = 5, ///<取消 + AMapLocationErrorCannotFindHost = 6, ///<找不到主机 + AMapLocationErrorBadURL = 7, /// + +///格式化地址 +@property (nonatomic, copy) NSString *formattedAddress; + +///国家 +@property (nonatomic, copy) NSString *country; + +///省/直辖市 +@property (nonatomic, copy) NSString *province; + +///市 +@property (nonatomic, copy) NSString *city; + +///区 +@property (nonatomic, copy) NSString *district; + +///乡镇 +@property (nonatomic, copy) NSString *township __attribute__((deprecated("该字段从v2.2.0版本起不再返回数据,建议您使用AMapSearchKit的逆地理功能获取."))); + +///社区 +@property (nonatomic, copy) NSString *neighborhood __attribute__((deprecated("该字段从v2.2.0版本起不再返回数据,建议您使用AMapSearchKit的逆地理功能获取."))); + +///建筑 +@property (nonatomic, copy) NSString *building __attribute__((deprecated("该字段从v2.2.0版本起不再返回数据,建议您使用AMapSearchKit的逆地理功能获取."))); + +///城市编码 +@property (nonatomic, copy) NSString *citycode; + +///区域编码 +@property (nonatomic, copy) NSString *adcode; + +///街道名称 +@property (nonatomic, copy) NSString *street; + +///门牌号 +@property (nonatomic, copy) NSString *number; + +///兴趣点名称 +@property (nonatomic, copy) NSString *POIName; + +///所属兴趣点名称 +@property (nonatomic, copy) NSString *AOIName; + +@end + +#pragma mark - AMapLocationPoint + +///经纬度坐标点对象 +@interface AMapLocationPoint : NSObject + +///纬度 +@property (nonatomic, assign) CGFloat latitude; + +///经度 +@property (nonatomic, assign) CGFloat longitude; + +/** + * @brief AMapNaviPoint类对象的初始化函数 + * @param lat 纬度 + * @param lon 经度 + * @return AMapNaviPoint类对象id + */ ++ (AMapLocationPoint *)locationWithLatitude:(CGFloat)lat longitude:(CGFloat)lon; + +@end + +///POI信息 +@interface AMapLocationPOIItem : NSObject + +///id +@property (nonatomic, copy) NSString *pId; + +///名称 +@property (nonatomic, copy) NSString *name; + +///类型 +@property (nonatomic, copy) NSString *type; + +///类型编码 +@property (nonatomic, copy) NSString *typeCode; + +///地址信息 +@property (nonatomic, copy) NSString *address; + +///经纬度 +@property (nonatomic, strong) AMapLocationPoint *location; + +///电话号码 +@property (nonatomic, copy) NSString *tel; + +///省份 +@property (nonatomic, copy) NSString *province; + +///城市 +@property (nonatomic, copy) NSString *city; + +///区 +@property (nonatomic, copy) NSString *district; + +@end + +///行政区域信息 +@interface AMapLocationDistrictItem : NSObject + +///城市编码 +@property (nonatomic, copy) NSString *cityCode; + +///区域编码 +@property (nonatomic, copy) NSString *districtCode; + +///区名 +@property (nonatomic, copy) NSString *district; + +///行政区域轮廓坐标点,每个行政区可能有多个模块,每个模块的坐标点数组由AMapLocationPoint构成 +@property (nonatomic, copy) NSArray *> *polylinePoints; + +@end + +///AMapLocation CoordinateType +typedef NS_ENUM(NSUInteger, AMapLocationCoordinateType) +{ + AMapLocationCoordinateTypeBaidu = 0, /// + +#import +#import +#import + +#import +#import +#import diff --git a/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Headers/AMapLocationManager.h b/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Headers/AMapLocationManager.h new file mode 100644 index 0000000..d151d77 --- /dev/null +++ b/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Headers/AMapLocationManager.h @@ -0,0 +1,282 @@ +// +// AMapLocationManager.h +// AMapLocationKit +// +// Created by AutoNavi on 15/10/22. +// Copyright © 2015年 Amap. All rights reserved. +// + +#import +#import +#import "AMapLocationCommonObj.h" +#import "AMapLocationRegionObj.h" + +/** + * @brief AMapLocatingCompletionBlock 单次定位返回Block + * @param location 定位信息 + * @param regeocode 逆地理信息 + * @param error 错误信息,参考 AMapLocationErrorCode + */ +typedef void (^AMapLocatingCompletionBlock)(CLLocation *location, AMapLocationReGeocode *regeocode, NSError *error); + +@protocol AMapLocationManagerDelegate; + +#pragma mark - AMapLocationManager + +///AMapLocationManager类。初始化之前请设置 AMapServices 中的apikey(例如:[AMapServices sharedServices].apiKey = @"您的key"),否则将无法正常使用服务. +@interface AMapLocationManager : NSObject + +///实现了 AMapLocationManagerDelegate 协议的类指针。 +@property (nonatomic, weak) id delegate; + +///设定定位的最小更新距离。单位米,默认为 kCLDistanceFilterNone,表示只要检测到设备位置发生变化就会更新位置信息。 +@property(nonatomic, assign) CLLocationDistance distanceFilter; + +///设定期望的定位精度。单位米,默认为 kCLLocationAccuracyBest。定位服务会尽可能去获取满足desiredAccuracy的定位结果,但不保证一定会得到满足期望的结果。 +///注意:设置为kCLLocationAccuracyBest或kCLLocationAccuracyBestForNavigation时,单次定位会在达到locationTimeout设定的时间后,将时间内获取到的最高精度的定位结果返回。 +///⚠️ 当iOS14及以上版本,模糊定位权限下可能拿不到设置精度的经纬度 +@property(nonatomic, assign) CLLocationAccuracy desiredAccuracy; + +///指定定位是否会被系统自动暂停。默认为NO。 +@property(nonatomic, assign) BOOL pausesLocationUpdatesAutomatically; + +///是否允许后台定位。默认为NO。只在iOS 9.0及之后起作用。设置为YES的时候必须保证 Background Modes 中的 Location updates 处于选中状态,否则会抛出异常。由于iOS系统限制,需要在定位未开始之前或定位停止之后,修改该属性的值才会有效果。 +@property(nonatomic, assign) BOOL allowsBackgroundLocationUpdates; + +///指定单次定位超时时间,默认为10s。最小值是2s。注意单次定位请求前设置。注意: 单次定位超时时间从确定了定位权限(非kCLAuthorizationStatusNotDetermined状态)后开始计算。 +@property(nonatomic, assign) NSInteger locationTimeout; + +///指定单次定位逆地理超时时间,默认为5s。最小值是2s。注意单次定位请求前设置。 +@property(nonatomic, assign) NSInteger reGeocodeTimeout; + +///连续定位是否返回逆地理信息,默认NO。 +@property (nonatomic, assign) BOOL locatingWithReGeocode; + +///逆地址语言类型,默认是AMapLocationRegionLanguageDefault +@property (nonatomic, assign) AMapLocationReGeocodeLanguage reGeocodeLanguage; + +///获取被监控的region集合。 +@property (nonatomic, readonly, copy) NSSet *monitoredRegions; + +///检测是否存在虚拟定位风险,默认为NO,不检测。 \n注意:设置为YES时,单次定位通过 AMapLocatingCompletionBlock 的error给出虚拟定位风险提示;连续定位通过 amapLocationManager:didFailWithError: 方法的error给出虚拟定位风险提示。error格式为 error.domain==AMapLocationErrorDomain; error.code==AMapLocationErrorRiskOfFakeLocation; \n附带的error的详细信息参考 error.localizedDescription 中的描述以及 error.userInfo 中的信息(error.userInfo.AMapLocationRiskyLocateResult 表示有虚拟风险的定位结果; error.userInfo.AMapLocationAccessoryInfo 表示外接辅助设备信息)。 +@property (nonatomic, assign) BOOL detectRiskOfFakeLocation; + + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 140000 + +/** + * @brief 设置定位数据回调精度模式,默认为AMapLocationAccuracyFullAndReduce。\n + 注意:如果定位时未获得定位权限,则首先会调用申请定位权限API,实际定位精度权限取决于用户的权限设置。\n + * ————————————————————————————————————————————————————————————————\n + * | 设置选项 | doRequireTemporaryFullAccuracyAuth | 异常/定位数据回调 |\n + * | AMapLocationFullAndReduceAccuracy | 会触发申请临时精确定位回调 | 如果未获得精确定位权限,则依然开启定位,回调模糊定位 |\n + * | AMapLocationFullAccuracy | 会触发申请临时精确定位回调 | 如果未获得精确定位权限,则不开启定位,回调error |\n + * | AMapLocationReduceAccuracy | 不会触发申请临时精确定位回调 | 根据当前定位精度权限,回调定位数据 |\n + * ————————————————————————————————————————————————————————————————\n + * 当设置AMapLocationFullAndReduceAccuracy时,定位数据回调可通过currentAuthorization判断当前是否是精确定位 + * @since 2.6.7 + */ +@property (nonatomic, assign) AMapLocationAccuracyMode locationAccuracyMode API_AVAILABLE(ios(14.0)); + +/** + * @brief 获取当前定位精度权限。 + * @since 2.6.7 + */ +@property (nonatomic, readonly) CLAccuracyAuthorization currentAuthorization API_AVAILABLE(ios(14.0)); + +#endif + +/** + * @brief 设备是否支持方向识别 + * @return YES:设备支持方向识别 ; NO:设备不支持支持方向识别 + */ ++ (BOOL)headingAvailable; + +/** + * @brief 开始获取设备朝向,如果设备支持方向识别,则会通过代理回调方法 + */ +- (void)startUpdatingHeading; + +/** + * @brief 停止获取设备朝向 + */ +- (void)stopUpdatingHeading; + +/** + * @brief 停止设备朝向校准显示 + */ +- (void)dismissHeadingCalibrationDisplay; + +/** + * @brief 单次定位。如果当前正在连续定位,调用此方法将会失败,返回NO。\n该方法将会根据设定的 desiredAccuracy 去获取定位信息。如果获取的定位信息精确度低于 desiredAccuracy ,将会持续的等待定位信息,直到超时后通过completionBlock返回精度最高的定位信息。\n可以通过 stopUpdatingLocation 方法去取消正在进行的单次定位请求。 + * @param withReGeocode 是否带有逆地理信息(获取逆地理信息需要联网) + * @param completionBlock 单次定位完成后的Block + * @return 是否成功添加单次定位Request + */ +- (BOOL)requestLocationWithReGeocode:(BOOL)withReGeocode completionBlock:(AMapLocatingCompletionBlock)completionBlock; + +/** + * @brief 开始连续定位。调用此方法会cancel掉所有的单次定位请求。 + */ +- (void)startUpdatingLocation; + +/** + * @brief 停止连续定位。调用此方法会cancel掉所有的单次定位请求,可以用来取消单次定位。 + */ +- (void)stopUpdatingLocation; + +/** + * @brief 开始监控指定的region。如果已经存在相同identifier的region,则之前的region将会被移除。对 AMapLocationCircleRegion 类实例,将会优先监控radius小的region。 + * @param region 要被监控的范围 + */ +- (void)startMonitoringForRegion:(AMapLocationRegion *)region __attribute__((deprecated("请使用AMapGeoFenceManager"))); + +/** + * @brief 停止监控指定的region + * @param region 要停止监控的范围 + */ +- (void)stopMonitoringForRegion:(AMapLocationRegion *)region __attribute__((deprecated("请使用AMapGeoFenceManager"))); + +/** + * @brief 查询一个region的当前状态。查询结果通过amapLocationManager:didDetermineState:forRegion:回调返回 + * @param region 要查询的region + */ +- (void)requestStateForRegion:(AMapLocationRegion *)region __attribute__((deprecated("请使用AMapGeoFenceManager"))); + +#pragma mark - Privacy 隐私合规 +/** + * @brief 更新App是否显示隐私弹窗的状态,隐私弹窗是否包含高德SDK隐私协议内容的状态,注意:必须在AMapLocationManager实例化之前调用. since 2.8.0 + * @param showStatus 隐私弹窗状态 + * @param containStatus 包含高德SDK隐私协议状态 + */ ++ (void)updatePrivacyShow:(AMapPrivacyShowStatus)showStatus privacyInfo:(AMapPrivacyInfoStatus)containStatus; +/** +* @brief 更新用户授权高德SDK隐私协议状态,注意:必须在AMapLocationManager实例化之前调用. since 2.8.0 +* @param agreeStatus 用户授权高德SDK隐私协议状态 +*/ ++ (void)updatePrivacyAgree:(AMapPrivacyAgreeStatus)agreeStatus; + +@end + +#pragma mark - AMapLocationManagerDelegate + +///AMapLocationManagerDelegate 协议定义了发生错误时的错误回调方法,连续定位的回调方法等。 +@protocol AMapLocationManagerDelegate + +@optional + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 140000 + +/** + * @brief 触发前提条件:1、plist配置NSLocationTemporaryUsageDescriptionDictionary。2、locationAccuracyMode设置为AMapLocationFullAndReduceAccuracy/AMapLocationFullAccuracy。3、当前用户已授权过定位权限,且为模糊定位权限。触发时机:满足前提条件时,再次发起定位请求会调用代理的此方法。此方法实现调用申请临时精确定位权限API即可: + * [manager requestTemporaryFullAccuracyAuthorizationWithPurposeKey:@"PurposeKey" completion:^(NSError *error){ + * if(completion){ + * completion(error); + * } + * }]; (必须调用,不然无法正常获取临时精确定位权限) + * @param manager 定位 AMapLocationManager 类。 + * @param locationManager 需要申请临时精确定位权限的locationManager。 + * @param completion 临时精确定位权限API回调结果,error: 直接返回系统error即可。 + * @since 2.6.7 + */ +- (void)amapLocationManager:(AMapLocationManager *)manager doRequireTemporaryFullAccuracyAuth:(CLLocationManager*)locationManager completion:(void(^)(NSError *error))completion; + +#endif + +/** + * @brief 当plist配置NSLocationAlwaysUsageDescription或者NSLocationAlwaysAndWhenInUseUsageDescription,并且[CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined,会调用代理的此方法。 + 此方法实现调用申请后台权限API即可:[locationManager requestAlwaysAuthorization] (必须调用,不然无法正常获取定位权限) + * @param manager 定位 AMapLocationManager 类。 + * @param locationManager 需要申请后台定位权限的locationManager。 + * @since 2.6.2 + */ +- (void)amapLocationManager:(AMapLocationManager *)manager doRequireLocationAuth:(CLLocationManager*)locationManager; + +/** + * @brief 当定位发生错误时,会调用代理的此方法。 + * @param manager 定位 AMapLocationManager 类。 + * @param error 返回的错误,参考 CLError 。 + */ +- (void)amapLocationManager:(AMapLocationManager *)manager didFailWithError:(NSError *)error; + +/** + * @brief 连续定位回调函数.注意:本方法已被废弃,如果实现了amapLocationManager:didUpdateLocation:reGeocode:方法,则本方法将不会回调。 + * @param manager 定位 AMapLocationManager 类。 + * @param location 定位结果。 + */ +- (void)amapLocationManager:(AMapLocationManager *)manager didUpdateLocation:(CLLocation *)location; + +/** + * @brief 连续定位回调函数.注意:如果实现了本方法,则定位信息不会通过amapLocationManager:didUpdateLocation:方法回调。 + * @param manager 定位 AMapLocationManager 类。 + * @param location 定位结果。 + * @param reGeocode 逆地理信息。 + */ +- (void)amapLocationManager:(AMapLocationManager *)manager didUpdateLocation:(CLLocation *)location reGeocode:(AMapLocationReGeocode *)reGeocode; + +/** + * @brief 定位权限状态改变时回调函数。注意:iOS13及之前版本回调 + * @param manager 定位 AMapLocationManager 类。 + * @param status 定位权限状态。 + */ +- (void)amapLocationManager:(AMapLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status; + +/** + * @brief 定位权限状态改变时回调函数。注意:iOS14及之后版本回调 + * @param manager 定位 AMapLocationManager 类。 + * @param locationManager 定位CLLocationManager类,可通过locationManager.authorizationStatus获取定位权限,通过locationManager.accuracyAuthorization获取定位精度权限 + */ +- (void)amapLocationManager:(AMapLocationManager *)manager locationManagerDidChangeAuthorization:(CLLocationManager*)locationManager; + +/** + * @brief 是否显示设备朝向校准 + * @param manager 定位 AMapLocationManager 类。 + * @return 是否显示设备朝向校准 + */ +- (BOOL)amapLocationManagerShouldDisplayHeadingCalibration:(AMapLocationManager *)manager; + +/** + * @brief 设备方向改变时回调函数 + * @param manager 定位 AMapLocationManager 类。 + * @param newHeading 设备朝向。 + */ +- (void)amapLocationManager:(AMapLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading; + +/** + * @brief 开始监控region回调函数 + * @param manager 定位 AMapLocationManager 类。 + * @param region 开始监控的region。 + */ +- (void)amapLocationManager:(AMapLocationManager *)manager didStartMonitoringForRegion:(AMapLocationRegion *)region __attribute__((deprecated("请使用AMapGeoFenceManager"))); + +/** + * @brief 进入region回调函数 + * @param manager 定位 AMapLocationManager 类。 + * @param region 进入的region。 + */ +- (void)amapLocationManager:(AMapLocationManager *)manager didEnterRegion:(AMapLocationRegion *)region __attribute__((deprecated("请使用AMapGeoFenceManager"))); + +/** + * @brief 离开region回调函数 + * @param manager 定位 AMapLocationManager 类。 + * @param region 离开的region。 + */ +- (void)amapLocationManager:(AMapLocationManager *)manager didExitRegion:(AMapLocationRegion *)region __attribute__((deprecated("请使用AMapGeoFenceManager"))); + +/** + * @brief 查询region状态回调函数 + * @param manager 定位 AMapLocationManager 类。 + * @param state 查询的region的状态。 + * @param region 查询的region。 + */ +- (void)amapLocationManager:(AMapLocationManager *)manager didDetermineState:(AMapLocationRegionState)state forRegion:(AMapLocationRegion *)region __attribute__((deprecated("请使用AMapGeoFenceManager"))); + +/** + * @brief 监控region失败回调函数 + * @param manager 定位 AMapLocationManager 类。 + * @param region 失败的region。 + * @param error 错误信息,参考 AMapLocationErrorCode 。 + */ +- (void)amapLocationManager:(AMapLocationManager *)manager monitoringDidFailForRegion:(AMapLocationRegion *)region withError:(NSError *)error __attribute__((deprecated("请使用AMapGeoFenceManager"))); + +@end diff --git a/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Headers/AMapLocationRegionObj.h b/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Headers/AMapLocationRegionObj.h new file mode 100644 index 0000000..ed74aad --- /dev/null +++ b/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Headers/AMapLocationRegionObj.h @@ -0,0 +1,90 @@ +// +// AMapLocationRegionObj.h +// AMapLocationKit +// +// Created by AutoNavi on 15/11/27. +// Copyright © 2015年 Amap. All rights reserved. +// + +#import "AMapLocationCommonObj.h" + +// 以下类涉及的坐标需要使用高德坐标系坐标(GCJ02) + +#pragma mark - AMapLocationRegion + + +///AMapLocationRegion类,该类提供范围类的基本信息,并无具体实现,不要直接使用。 +@interface AMapLocationRegion : NSObject + +///AMapLocationRegion的identifier +@property (nonatomic, copy, readonly) NSString *identifier; + +///当进入region范围时是否通知,默认YES +@property (nonatomic, assign) BOOL notifyOnEntry; + +///当离开region范围时是否通知,默认YES +@property (nonatomic, assign) BOOL notifyOnExit; + +/** + * @brief 初始化方法 + * @param identifier 唯一标识符,必填,不可为nil + */ +- (instancetype)initWithIdentifier:(NSString *)identifier; + +/** + * @brief 坐标点是否在范围内 + * @param coordinate 要判断的坐标点 + * @return 是否在范围内 + */ +- (BOOL)containsCoordinate:(CLLocationCoordinate2D)coordinate; + +@end + +#pragma mark - AMapLocationCircleRegion + + +///AMapLocationCircleRegion类,定义一个圆形范围。 +@interface AMapLocationCircleRegion : AMapLocationRegion + +///中心点的经纬度坐标 +@property (nonatomic, readonly) CLLocationCoordinate2D center; + +///半径,单位:米 +@property (nonatomic, readonly) CLLocationDistance radius; + +/** + * @brief 根据中心点和半径生成圆形范围 + * @param center 中心点的经纬度坐标 + * @param radius 半径,单位:米 + * @param identifier 唯一标识符,必填,不可为nil + * @return AMapLocationCircleRegion类实例 + */ +- (instancetype)initWithCenter:(CLLocationCoordinate2D)center radius:(CLLocationDistance)radius identifier:(NSString *)identifier; + + +@end + +#pragma mark - AMapLocationPolygonRegion + + +///AMapLocationCircleRegion类,定义一个闭合多边形范围,点与点之间按顺序尾部相连, 第一个点与最后一个点相连。 +@interface AMapLocationPolygonRegion : AMapLocationRegion + +///经纬度坐标点数据 +@property (nonatomic, readonly) CLLocationCoordinate2D *coordinates; + +///经纬度坐标点的个数 +@property (nonatomic, readonly) NSInteger count; + +/** + * @brief 根据经纬度坐标数据生成闭合多边形范围 + * @param coordinates 经纬度坐标点数据,coordinates对应的内存会拷贝,调用者负责该内存的释放 + * @param count 经纬度坐标点的个数,不可小于3个 + * @param identifier 唯一标识符,必填,不可为nil + * @return AMapLocationCircleRegion类实例 + */ +- (instancetype)initWithCoordinates:(CLLocationCoordinate2D *)coordinates count:(NSInteger)count identifier:(NSString *)identifier; + + + +@end diff --git a/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Headers/AMapLocationVersion.h b/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Headers/AMapLocationVersion.h new file mode 100644 index 0000000..5b3af14 --- /dev/null +++ b/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Headers/AMapLocationVersion.h @@ -0,0 +1,26 @@ +// +// AMapLoctionVersion.h +// AMapLocationKit +// +// Created by AutoNavi on 16/1/22. +// Copyright © 2016年 Amap. All rights reserved. +// + +#import +#import + +#ifndef AMapLoctionVersion_h +#define AMapLoctionVersion_h + +#define AMapLocationVersionNumber 20900 +#define AMapLocationFoundationVersionMinRequired 10700 + +// 依赖库版本检测 +#if AMapFoundationVersionNumber < AMapLocationFoundationVersionMinRequired +#error "The AMapFoundationKit version is less than minimum required, please update! Any questions please to visit http://lbs.amap.com" +#endif + +FOUNDATION_EXTERN NSString * const AMapLocationVersion; +FOUNDATION_EXTERN NSString * const AMapLocationName; + +#endif /* AMapLoctionVersion_h */ diff --git a/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Modules/module.modulemap b/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Modules/module.modulemap new file mode 100644 index 0000000..6a1a586 --- /dev/null +++ b/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module AMapLocationKit { + umbrella header "AMapLocationKit.h" + + export * + module * { export * } +} diff --git a/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/version.txt b/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/version.txt new file mode 100644 index 0000000..ee2555b --- /dev/null +++ b/Pods/AMapLocation-NO-IDFA/AMapLocationKit.framework/version.txt @@ -0,0 +1 @@ +2.9.0+loc.f158f70 diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/3d_navi_sky_day.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/3d_navi_sky_day.data new file mode 100644 index 0000000..4947a5a Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/3d_navi_sky_day.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/3d_sky_day.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/3d_sky_day.data new file mode 100644 index 0000000..55a4616 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/3d_sky_day.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/3d_sky_night.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/3d_sky_night.data new file mode 100644 index 0000000..4af6dbd Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/3d_sky_night.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/3dlandscape.xml b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/3dlandscape.xml new file mode 100644 index 0000000..17fbb3a --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/3dlandscape.xml @@ -0,0 +1,112 @@ + + v1.0 + + + 1 + + 30 + + 70 + + 40 + + 50 + + 10 + + 45 + + + 100 + + 100 + + 70 + + 40 + + + 100 + + 100 + + 75 + + 3.0 + + 4 + + + 10 + + 0 + + + 15 + + 150 + + 80 + + + 250 + + 25 + + 50 + + + 6.5 + + + 7.0 + + 0 + 174 + 255 + 204 + + + 30 + + 30 + + 7.0 + + 100 + + + + + 29 + + 30 + + 26 + + 4 + + 6 + + + 29 + + 30 + + 26 + + 2 + + 3 + + + 60 + + 120 + + 180 + + 100 + + + diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/3dportrait.xml b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/3dportrait.xml new file mode 100644 index 0000000..90a616c --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/3dportrait.xml @@ -0,0 +1,112 @@ + + v1.0 + + + 0 + + 30 + + 65 + + 50 + + 50 + + 10 + + 45 + + + 100 + + 100 + + 65 + + 50 + + + 100 + + 100 + + 70 + + 3.0 + + 4 + + + 10 + + 0 + + + 15 + + 150 + + 80 + + + 250 + + 25 + + 50 + + + 6.5 + + + 7.0 + + 0 + 174 + 255 + 204 + + + 30 + + 30 + + 7.0 + + 100 + + + + + 29 + + 30 + + 26 + + 4 + + 6 + + + 29 + + 30 + + 26 + + 2 + + 3 + + + 60 + + 120 + + 180 + + 100 + + + diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1015_1.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1015_1.png new file mode 100644 index 0000000..3edab19 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1015_1.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1015_2.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1015_2.png new file mode 100644 index 0000000..0f4044d Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1015_2.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1016_1.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1016_1.png new file mode 100644 index 0000000..3285339 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1016_1.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1016_2.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1016_2.png new file mode 100644 index 0000000..18c1614 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1016_2.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_bk_grass_day.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_bk_grass_day.png new file mode 100644 index 0000000..b699004 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_bk_grass_day.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_bk_grass_night.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_bk_grass_night.png new file mode 100644 index 0000000..a42e8ce Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_bk_grass_night.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_sky_day.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_sky_day.png new file mode 100644 index 0000000..8af2167 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_sky_day.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_sky_night.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_sky_night.png new file mode 100644 index 0000000..80322ab Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_sky_night.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/crossing_day_bk.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/crossing_day_bk.data new file mode 100644 index 0000000..fff1b61 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/crossing_day_bk.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/crossing_nigth_bk.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/crossing_nigth_bk.data new file mode 100644 index 0000000..928155e Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/crossing_nigth_bk.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/d_yellow_day.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/d_yellow_day.png new file mode 100644 index 0000000..39a10c5 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/d_yellow_day.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/d_yellow_night.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/d_yellow_night.png new file mode 100644 index 0000000..2b5f54c Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/d_yellow_night.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/exit_label_bk_main_day.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/exit_label_bk_main_day.png new file mode 100644 index 0000000..2cc5acb Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/exit_label_bk_main_day.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/exit_label_bk_secondary_day.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/exit_label_bk_secondary_day.png new file mode 100644 index 0000000..55f58a1 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/exit_label_bk_secondary_day.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/grass_day.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/grass_day.png new file mode 100644 index 0000000..a57fe33 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/grass_day.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/grass_night.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/grass_night.png new file mode 100644 index 0000000..0820386 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/grass_night.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/icons_42_18_1615218949.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/icons_42_18_1615218949.data new file mode 100644 index 0000000..f6f2d71 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/icons_42_18_1615218949.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/road_bottom_day.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/road_bottom_day.png new file mode 100644 index 0000000..5ef99c4 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/road_bottom_day.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/road_bottom_night.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/road_bottom_night.png new file mode 100644 index 0000000..0e0bb9e Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/road_bottom_night.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/roadbk_main_day.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/roadbk_main_day.png new file mode 100644 index 0000000..c3732fe Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/roadbk_main_day.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/roadbk_main_night.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/roadbk_main_night.png new file mode 100644 index 0000000..f9f1ae2 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/roadbk_main_night.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/anscii.fnt b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/anscii.fnt new file mode 100644 index 0000000..cccf994 --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/anscii.fnt @@ -0,0 +1,191 @@ +info face="Arial" size=32 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1 outline=0 +common lineHeight=32 base=26 scaleW=256 scaleH=256 pages=1 packed=0 alphaChnl=1 redChnl=0 greenChnl=0 blueChnl=0 +page id=0 file="anscii_0.png" +chars count=95 +char id=32 x=110 y=22 width=3 height=1 xoffset=-1 yoffset=31 xadvance=8 page=0 chnl=15 +char id=33 x=199 y=63 width=4 height=20 xoffset=2 yoffset=6 xadvance=8 page=0 chnl=15 +char id=34 x=242 y=79 width=10 height=7 xoffset=0 yoffset=6 xadvance=10 page=0 chnl=15 +char id=35 x=0 y=48 width=16 height=20 xoffset=-1 yoffset=6 xadvance=15 page=0 chnl=15 +char id=36 x=94 y=0 width=15 height=23 xoffset=0 yoffset=5 xadvance=15 page=0 chnl=15 +char id=37 x=161 y=0 width=22 height=20 xoffset=1 yoffset=6 xadvance=24 page=0 chnl=15 +char id=38 x=132 y=21 width=17 height=20 xoffset=1 yoffset=6 xadvance=18 page=0 chnl=15 +char id=39 x=0 y=106 width=5 height=7 xoffset=0 yoffset=6 xadvance=5 page=0 chnl=15 +char id=40 x=47 y=0 width=8 height=25 xoffset=1 yoffset=6 xadvance=9 page=0 chnl=15 +char id=41 x=56 y=0 width=8 height=25 xoffset=1 yoffset=6 xadvance=9 page=0 chnl=15 +char id=42 x=230 y=79 width=11 height=8 xoffset=0 yoffset=6 xadvance=11 page=0 chnl=15 +char id=43 x=187 y=84 width=14 height=12 xoffset=1 yoffset=10 xadvance=16 page=0 chnl=15 +char id=44 x=6 y=106 width=4 height=6 xoffset=2 yoffset=24 xadvance=8 page=0 chnl=15 +char id=45 x=53 y=106 width=9 height=2 xoffset=0 yoffset=18 xadvance=9 page=0 chnl=15 +char id=46 x=209 y=79 width=4 height=2 xoffset=2 yoffset=24 xadvance=8 page=0 chnl=15 +char id=47 x=153 y=63 width=10 height=20 xoffset=-1 yoffset=6 xadvance=8 page=0 chnl=15 +char id=48 x=15 y=69 width=14 height=20 xoffset=0 yoffset=6 xadvance=15 page=0 chnl=15 +char id=49 x=164 y=63 width=9 height=20 xoffset=2 yoffset=6 xadvance=15 page=0 chnl=15 +char id=50 x=134 y=42 width=14 height=20 xoffset=0 yoffset=6 xadvance=15 page=0 chnl=15 +char id=51 x=59 y=68 width=13 height=20 xoffset=1 yoffset=6 xadvance=15 page=0 chnl=15 +char id=52 x=179 y=42 width=14 height=20 xoffset=0 yoffset=6 xadvance=15 page=0 chnl=15 +char id=53 x=45 y=69 width=13 height=20 xoffset=1 yoffset=6 xadvance=15 page=0 chnl=15 +char id=54 x=194 y=42 width=14 height=20 xoffset=0 yoffset=6 xadvance=15 page=0 chnl=15 +char id=55 x=115 y=66 width=13 height=20 xoffset=1 yoffset=6 xadvance=15 page=0 chnl=15 +char id=56 x=102 y=45 width=15 height=20 xoffset=0 yoffset=6 xadvance=15 page=0 chnl=15 +char id=57 x=118 y=43 width=15 height=20 xoffset=0 yoffset=6 xadvance=15 page=0 chnl=15 +char id=58 x=251 y=63 width=4 height=15 xoffset=2 yoffset=11 xadvance=8 page=0 chnl=15 +char id=59 x=204 y=63 width=4 height=19 xoffset=2 yoffset=11 xadvance=8 page=0 chnl=15 +char id=60 x=172 y=84 width=14 height=13 xoffset=1 yoffset=10 xadvance=16 page=0 chnl=15 +char id=61 x=215 y=79 width=14 height=8 xoffset=1 yoffset=12 xadvance=16 page=0 chnl=15 +char id=62 x=157 y=84 width=14 height=13 xoffset=1 yoffset=10 xadvance=16 page=0 chnl=15 +char id=63 x=101 y=68 width=13 height=20 xoffset=1 yoffset=6 xadvance=15 page=0 chnl=15 +char id=64 x=0 y=0 width=26 height=26 xoffset=1 yoffset=6 xadvance=27 page=0 chnl=15 +char id=65 x=227 y=0 width=19 height=20 xoffset=-1 yoffset=6 xadvance=18 page=0 chnl=15 +char id=66 x=17 y=48 width=16 height=20 xoffset=1 yoffset=6 xadvance=18 page=0 chnl=15 +char id=67 x=58 y=26 width=18 height=20 xoffset=1 yoffset=6 xadvance=20 page=0 chnl=15 +char id=68 x=168 y=21 width=17 height=20 xoffset=2 yoffset=6 xadvance=20 page=0 chnl=15 +char id=69 x=51 y=47 width=16 height=20 xoffset=1 yoffset=6 xadvance=18 page=0 chnl=15 +char id=70 x=240 y=21 width=15 height=20 xoffset=2 yoffset=6 xadvance=17 page=0 chnl=15 +char id=71 x=0 y=27 width=19 height=20 xoffset=1 yoffset=6 xadvance=21 page=0 chnl=15 +char id=72 x=186 y=21 width=17 height=20 xoffset=1 yoffset=6 xadvance=19 page=0 chnl=15 +char id=73 x=184 y=63 width=4 height=20 xoffset=2 yoffset=6 xadvance=8 page=0 chnl=15 +char id=74 x=129 y=64 width=12 height=20 xoffset=0 yoffset=6 xadvance=13 page=0 chnl=15 +char id=75 x=39 y=26 width=18 height=20 xoffset=1 yoffset=6 xadvance=18 page=0 chnl=15 +char id=76 x=0 y=69 width=14 height=20 xoffset=1 yoffset=6 xadvance=15 page=0 chnl=15 +char id=77 x=184 y=0 width=21 height=20 xoffset=1 yoffset=6 xadvance=23 page=0 chnl=15 +char id=78 x=96 y=24 width=17 height=20 xoffset=1 yoffset=6 xadvance=19 page=0 chnl=15 +char id=79 x=206 y=0 width=20 height=20 xoffset=1 yoffset=6 xadvance=21 page=0 chnl=15 +char id=80 x=85 y=47 width=16 height=20 xoffset=1 yoffset=6 xadvance=17 page=0 chnl=15 +char id=81 x=110 y=0 width=21 height=21 xoffset=0 yoffset=6 xadvance=21 page=0 chnl=15 +char id=82 x=77 y=26 width=18 height=20 xoffset=2 yoffset=6 xadvance=20 page=0 chnl=15 +char id=83 x=68 y=47 width=16 height=20 xoffset=1 yoffset=6 xadvance=18 page=0 chnl=15 +char id=84 x=34 y=48 width=16 height=20 xoffset=0 yoffset=6 xadvance=16 page=0 chnl=15 +char id=85 x=204 y=21 width=17 height=20 xoffset=1 yoffset=6 xadvance=19 page=0 chnl=15 +char id=86 x=222 y=21 width=17 height=20 xoffset=0 yoffset=6 xadvance=17 page=0 chnl=15 +char id=87 x=132 y=0 width=28 height=20 xoffset=0 yoffset=6 xadvance=28 page=0 chnl=15 +char id=88 x=150 y=21 width=17 height=20 xoffset=0 yoffset=6 xadvance=17 page=0 chnl=15 +char id=89 x=20 y=27 width=18 height=20 xoffset=0 yoffset=6 xadvance=18 page=0 chnl=15 +char id=90 x=114 y=22 width=17 height=20 xoffset=0 yoffset=6 xadvance=17 page=0 chnl=15 +char id=91 x=73 y=0 width=7 height=25 xoffset=1 yoffset=6 xadvance=8 page=0 chnl=15 +char id=92 x=174 y=63 width=9 height=20 xoffset=-1 yoffset=6 xadvance=8 page=0 chnl=15 +char id=93 x=65 y=0 width=7 height=25 xoffset=0 yoffset=6 xadvance=8 page=0 chnl=15 +char id=94 x=202 y=84 width=12 height=10 xoffset=0 yoffset=6 xadvance=12 page=0 chnl=15 +char id=95 x=35 y=106 width=17 height=2 xoffset=-1 yoffset=29 xadvance=15 page=0 chnl=15 +char id=96 x=28 y=106 width=6 height=4 xoffset=1 yoffset=6 xadvance=9 page=0 chnl=15 +char id=97 x=48 y=90 width=14 height=15 xoffset=0 yoffset=11 xadvance=15 page=0 chnl=15 +char id=98 x=149 y=42 width=14 height=20 xoffset=1 yoffset=6 xadvance=15 page=0 chnl=15 +char id=99 x=106 y=89 width=13 height=15 xoffset=0 yoffset=11 xadvance=14 page=0 chnl=15 +char id=100 x=164 y=42 width=14 height=20 xoffset=0 yoffset=6 xadvance=15 page=0 chnl=15 +char id=101 x=0 y=90 width=15 height=15 xoffset=0 yoffset=11 xadvance=15 page=0 chnl=15 +char id=102 x=142 y=63 width=10 height=20 xoffset=-1 yoffset=6 xadvance=7 page=0 chnl=15 +char id=103 x=209 y=42 width=14 height=20 xoffset=0 yoffset=11 xadvance=15 page=0 chnl=15 +char id=104 x=73 y=68 width=13 height=20 xoffset=1 yoffset=6 xadvance=15 page=0 chnl=15 +char id=105 x=189 y=63 width=4 height=20 xoffset=1 yoffset=6 xadvance=6 page=0 chnl=15 +char id=106 x=81 y=0 width=7 height=25 xoffset=-2 yoffset=6 xadvance=6 page=0 chnl=15 +char id=107 x=87 y=68 width=13 height=20 xoffset=1 yoffset=6 xadvance=14 page=0 chnl=15 +char id=108 x=194 y=63 width=4 height=20 xoffset=1 yoffset=6 xadvance=6 page=0 chnl=15 +char id=109 x=209 y=63 width=20 height=15 xoffset=1 yoffset=11 xadvance=22 page=0 chnl=15 +char id=110 x=78 y=89 width=13 height=15 xoffset=1 yoffset=11 xadvance=15 page=0 chnl=15 +char id=111 x=16 y=90 width=15 height=15 xoffset=0 yoffset=11 xadvance=15 page=0 chnl=15 +char id=112 x=30 y=69 width=14 height=20 xoffset=1 yoffset=11 xadvance=15 page=0 chnl=15 +char id=113 x=224 y=42 width=14 height=20 xoffset=0 yoffset=11 xadvance=15 page=0 chnl=15 +char id=114 x=147 y=84 width=9 height=15 xoffset=1 yoffset=11 xadvance=9 page=0 chnl=15 +char id=115 x=63 y=89 width=14 height=15 xoffset=0 yoffset=11 xadvance=14 page=0 chnl=15 +char id=116 x=247 y=0 width=8 height=20 xoffset=0 yoffset=6 xadvance=8 page=0 chnl=15 +char id=117 x=92 y=89 width=13 height=15 xoffset=1 yoffset=11 xadvance=15 page=0 chnl=15 +char id=118 x=32 y=90 width=15 height=15 xoffset=-1 yoffset=11 xadvance=13 page=0 chnl=15 +char id=119 x=230 y=63 width=20 height=15 xoffset=-1 yoffset=11 xadvance=19 page=0 chnl=15 +char id=120 x=134 y=85 width=12 height=15 xoffset=0 yoffset=11 xadvance=12 page=0 chnl=15 +char id=121 x=239 y=42 width=14 height=20 xoffset=0 yoffset=11 xadvance=14 page=0 chnl=15 +char id=122 x=120 y=87 width=13 height=15 xoffset=0 yoffset=11 xadvance=13 page=0 chnl=15 +char id=123 x=37 y=0 width=9 height=25 xoffset=0 yoffset=6 xadvance=9 page=0 chnl=15 +char id=124 x=89 y=0 width=4 height=25 xoffset=1 yoffset=6 xadvance=6 page=0 chnl=15 +char id=125 x=27 y=0 width=9 height=25 xoffset=0 yoffset=6 xadvance=9 page=0 chnl=15 +char id=126 x=11 y=106 width=16 height=4 xoffset=0 yoffset=14 xadvance=16 page=0 chnl=15 +kernings count=91 +kerning first=32 second=65 amount=-2 +kerning first=32 second=84 amount=-1 +kerning first=32 second=89 amount=-1 +kerning first=121 second=46 amount=-2 +kerning first=121 second=44 amount=-2 +kerning first=119 second=46 amount=-2 +kerning first=119 second=44 amount=-2 +kerning first=118 second=46 amount=-2 +kerning first=118 second=44 amount=-2 +kerning first=114 second=46 amount=-2 +kerning first=49 second=49 amount=-2 +kerning first=65 second=32 amount=-2 +kerning first=65 second=84 amount=-2 +kerning first=65 second=86 amount=-2 +kerning first=65 second=87 amount=-1 +kerning first=65 second=89 amount=-2 +kerning first=65 second=118 amount=-1 +kerning first=65 second=119 amount=-1 +kerning first=65 second=121 amount=-1 +kerning first=114 second=44 amount=-2 +kerning first=70 second=44 amount=-3 +kerning first=70 second=46 amount=-3 +kerning first=70 second=65 amount=-2 +kerning first=76 second=32 amount=-1 +kerning first=76 second=84 amount=-2 +kerning first=76 second=86 amount=-2 +kerning first=76 second=87 amount=-2 +kerning first=76 second=89 amount=-2 +kerning first=76 second=121 amount=-1 +kerning first=102 second=102 amount=-1 +kerning first=80 second=32 amount=-1 +kerning first=80 second=44 amount=-4 +kerning first=80 second=46 amount=-4 +kerning first=80 second=65 amount=-2 +kerning first=82 second=84 amount=-1 +kerning first=82 second=86 amount=-1 +kerning first=82 second=87 amount=-1 +kerning first=82 second=89 amount=-1 +kerning first=84 second=32 amount=-1 +kerning first=84 second=44 amount=-3 +kerning first=84 second=45 amount=-2 +kerning first=84 second=46 amount=-3 +kerning first=84 second=58 amount=-3 +kerning first=89 second=118 amount=-2 +kerning first=84 second=65 amount=-2 +kerning first=84 second=79 amount=-1 +kerning first=84 second=97 amount=-3 +kerning first=84 second=99 amount=-3 +kerning first=84 second=101 amount=-3 +kerning first=84 second=105 amount=-1 +kerning first=84 second=111 amount=-3 +kerning first=84 second=114 amount=-1 +kerning first=84 second=115 amount=-3 +kerning first=84 second=117 amount=-1 +kerning first=84 second=119 amount=-2 +kerning first=84 second=121 amount=-2 +kerning first=86 second=44 amount=-3 +kerning first=86 second=45 amount=-2 +kerning first=86 second=46 amount=-3 +kerning first=86 second=58 amount=-1 +kerning first=89 second=117 amount=-2 +kerning first=86 second=65 amount=-2 +kerning first=86 second=97 amount=-2 +kerning first=86 second=101 amount=-2 +kerning first=86 second=105 amount=-1 +kerning first=86 second=111 amount=-2 +kerning first=86 second=114 amount=-1 +kerning first=86 second=117 amount=-1 +kerning first=86 second=121 amount=-1 +kerning first=87 second=44 amount=-2 +kerning first=87 second=45 amount=-1 +kerning first=87 second=46 amount=-2 +kerning first=87 second=58 amount=-1 +kerning first=89 second=113 amount=-3 +kerning first=87 second=65 amount=-1 +kerning first=87 second=97 amount=-1 +kerning first=87 second=101 amount=-1 +kerning first=89 second=112 amount=-2 +kerning first=87 second=111 amount=-1 +kerning first=87 second=114 amount=-1 +kerning first=87 second=117 amount=-1 +kerning first=89 second=111 amount=-3 +kerning first=89 second=32 amount=-1 +kerning first=89 second=44 amount=-4 +kerning first=89 second=45 amount=-3 +kerning first=89 second=46 amount=-4 +kerning first=89 second=58 amount=-2 +kerning first=89 second=105 amount=-1 +kerning first=89 second=65 amount=-2 +kerning first=89 second=97 amount=-2 +kerning first=89 second=101 amount=-3 diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/anscii_0.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/anscii_0.png new file mode 100644 index 0000000..25305da Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/anscii_0.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/arrow_topface.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/arrow_topface.data new file mode 100644 index 0000000..196ce02 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/arrow_topface.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/bktile.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/bktile.data new file mode 100644 index 0000000..6fdf33b Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/bktile.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/bktile_n.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/bktile_n.data new file mode 100644 index 0000000..e244043 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/bktile_n.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/config_1_18_1655983581.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/config_1_18_1655983581.data new file mode 100644 index 0000000..1bf1a8f Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/config_1_18_1655983581.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/config_2_18_1605512060.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/config_2_18_1605512060.data new file mode 100644 index 0000000..e19cee2 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/config_2_18_1605512060.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/dash.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/dash.data new file mode 100644 index 0000000..da1b48f Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/dash.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/dash_cd.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/dash_cd.data new file mode 100644 index 0000000..3a59032 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/dash_cd.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/dash_tq.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/dash_tq.data new file mode 100644 index 0000000..c721927 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/dash_tq.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_10_18_1620803632.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_10_18_1620803632.data new file mode 100644 index 0000000..3e8f255 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_10_18_1620803632.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_11_18_1611742683.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_11_18_1611742683.data new file mode 100644 index 0000000..d2ed354 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_11_18_1611742683.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_1_18_1620803672.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_1_18_1620803672.data new file mode 100644 index 0000000..e54cc68 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_1_18_1620803672.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_24_18_1619768490.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_24_18_1619768490.data new file mode 100644 index 0000000..6a75bce Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_24_18_1619768490.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_25_18_1616413163.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_25_18_1616413163.data new file mode 100644 index 0000000..a91edc6 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_25_18_1616413163.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_2_18_1620803665.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_2_18_1620803665.data new file mode 100644 index 0000000..4db9e20 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_2_18_1620803665.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_3_18_1620803657.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_3_18_1620803657.data new file mode 100644 index 0000000..8ad873f Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_3_18_1620803657.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_40_18_1629979483.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_40_18_1629979483.data new file mode 100644 index 0000000..d1d5219 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_40_18_1629979483.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_4_18_1624863920.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_4_18_1624863920.data new file mode 100644 index 0000000..4754659 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_4_18_1624863920.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_50_18_1621241047.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_50_18_1621241047.data new file mode 100644 index 0000000..bfba766 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_50_18_1621241047.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_5_18_1616413149.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_5_18_1616413149.data new file mode 100644 index 0000000..1e68538 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_5_18_1616413149.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_6_18_1624863929.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_6_18_1624863929.data new file mode 100644 index 0000000..48d3446 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_6_18_1624863929.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_9_18_1609147790.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_9_18_1609147790.data new file mode 100644 index 0000000..1144936 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/icons_9_18_1609147790.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/laneprofile_1_18_1640573575.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/laneprofile_1_18_1640573575.data new file mode 100644 index 0000000..98a9c26 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/laneprofile_1_18_1640573575.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/lineround.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/lineround.data new file mode 100644 index 0000000..0231b37 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/lineround.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/mapprofile_1_18_1626748603.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/mapprofile_1_18_1626748603.data new file mode 100644 index 0000000..6260574 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/mapprofile_1_18_1626748603.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/mapprofile_2_18_1620443466.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/mapprofile_2_18_1620443466.data new file mode 100644 index 0000000..52c1893 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/mapprofile_2_18_1620443466.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/search_scenic_icon.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/search_scenic_icon.data new file mode 100644 index 0000000..d103f2f Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/search_scenic_icon.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_0_18_1641525834.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_0_18_1641525834.data new file mode 100644 index 0000000..41acc64 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_0_18_1641525834.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_100_18_1640182887.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_100_18_1640182887.data new file mode 100644 index 0000000..d11de99 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_100_18_1640182887.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_16_18_1605511194.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_16_18_1605511194.data new file mode 100644 index 0000000..f59c23a Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_16_18_1605511194.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_17_18_1605511247.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_17_18_1605511247.data new file mode 100644 index 0000000..680f2c8 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_17_18_1605511247.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_18_18_1624864928.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_18_18_1624864928.data new file mode 100644 index 0000000..12b369d Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_18_18_1624864928.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_19_18_1605511205.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_19_18_1605511205.data new file mode 100644 index 0000000..63f62e8 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_19_18_1605511205.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_1_17_for_terrain.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_1_17_for_terrain.data new file mode 100644 index 0000000..b7664e2 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_1_17_for_terrain.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_1_18_1627443174.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_1_18_1627443174.data new file mode 100644 index 0000000..df27a22 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_1_18_1627443174.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_25_18_1624864857.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_25_18_1624864857.data new file mode 100644 index 0000000..aa821e2 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_25_18_1624864857.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_26_18_1624864866.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_26_18_1624864866.data new file mode 100644 index 0000000..dcca0b4 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_26_18_1624864866.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_28_18_1621223375.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_28_18_1621223375.data new file mode 100644 index 0000000..b75b39b Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_28_18_1621223375.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_29_18_1637641334.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_29_18_1637641334.data new file mode 100644 index 0000000..155740b Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_29_18_1637641334.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_2_18_1655970883.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_2_18_1655970883.data new file mode 100644 index 0000000..2d2015e Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_2_18_1655970883.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_35_18_1641374969.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_35_18_1641374969.data new file mode 100644 index 0000000..883d191 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_35_18_1641374969.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_36_18_1641374988.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_36_18_1641374988.data new file mode 100644 index 0000000..ad47816 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_36_18_1641374988.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_37_18_1612505452.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_37_18_1612505452.data new file mode 100644 index 0000000..61e802f Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_37_18_1612505452.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_38_18_1630469232.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_38_18_1630469232.data new file mode 100644 index 0000000..482664f Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_38_18_1630469232.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_39_18_1630469193.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_39_18_1630469193.data new file mode 100644 index 0000000..86568f8 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_39_18_1630469193.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_3_18_1624864847.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_3_18_1624864847.data new file mode 100644 index 0000000..91e6e8f Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_3_18_1624864847.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_40_18_1624871103.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_40_18_1624871103.data new file mode 100644 index 0000000..2ace9a3 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_40_18_1624871103.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_41_18_1623986571.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_41_18_1623986571.data new file mode 100644 index 0000000..f6d0726 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_41_18_1623986571.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_4_18_1630315891.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_4_18_1630315891.data new file mode 100644 index 0000000..3389390 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_4_18_1630315891.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_50_18_1639057433.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_50_18_1639057433.data new file mode 100644 index 0000000..bc19f03 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_50_18_1639057433.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_5_18_1630315937.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_5_18_1630315937.data new file mode 100644 index 0000000..4ef65fb Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_5_18_1630315937.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_6_18_1624866734.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_6_18_1624866734.data new file mode 100644 index 0000000..68a36f3 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_6_18_1624866734.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_8_18_1624864902.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_8_18_1624864902.data new file mode 100644 index 0000000..74295a9 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/style_8_18_1624864902.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/styleiconslist.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/styleiconslist.data new file mode 100644 index 0000000..f3212bb --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/styleiconslist.data @@ -0,0 +1,44 @@ +43 +style_1_18_1627443174.data +style_26_18_1624864866.data +style_35_18_1641374969.data +style_3_18_1624864847.data +style_6_18_1624866734.data +icons_40_18_1629979483.data +mapprofile_1_18_1626748603.data +icons_1_18_1620803672.data +style_4_18_1630315891.data +icons_2_18_1620803665.data +style_50_18_1639057433.data +style_38_18_1630469232.data +style_0_18_1641525834.data +icons_3_18_1620803657.data +style_25_18_1624864857.data +icons_10_18_1620803632.data +style_28_18_1621223375.data +style_18_18_1624864928.data +icons_25_18_1616413163.data +style_17_18_1605511247.data +style_29_18_1637641334.data +style_16_18_1605511194.data +style_8_18_1624864902.data +icons_5_18_1616413149.data +laneprofile_1_18_1640573575.data +config_2_18_1605512060.data +style_39_18_1630469193.data +icons_4_18_1624863920.data +config_1_18_1655983581.data +icons_50_18_1621241047.data +style_41_18_1623986571.data +style_19_18_1605511205.data +icons_11_18_1611742683.data +icons_24_18_1619768490.data +style_40_18_1624871103.data +mapprofile_2_18_1620443466.data +style_100_18_1640182887.data +style_37_18_1612505452.data +style_5_18_1630315937.data +style_36_18_1641374988.data +icons_6_18_1624863929.data +icons_9_18_1609147790.data +style_2_18_1655970883.data diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc3d_allinone.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc3d_allinone.data new file mode 100644 index 0000000..86f1021 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc3d_allinone.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc3d_blind_allinone.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc3d_blind_allinone.data new file mode 100644 index 0000000..33548e2 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc3d_blind_allinone.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc3d_l_allinone.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc3d_l_allinone.data new file mode 100644 index 0000000..dc4bcb7 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc3d_l_allinone.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc3d_n_allinone.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc3d_n_allinone.data new file mode 100644 index 0000000..63300da Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc3d_n_allinone.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc_allinone.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc_allinone.data new file mode 100644 index 0000000..cfdd6a3 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc_allinone.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc_blind_allinone.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc_blind_allinone.data new file mode 100644 index 0000000..61e3f66 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc_blind_allinone.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc_l_allinone.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc_l_allinone.data new file mode 100644 index 0000000..b7adf48 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc_l_allinone.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc_n_allinone.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc_n_allinone.data new file mode 100644 index 0000000..26a0a70 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/tmc_n_allinone.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/waterline.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/waterline.data new file mode 100644 index 0000000..96f117d Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/AMap3D.bundle/waterline.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/GNaviConfig.xml b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/GNaviConfig.xml new file mode 100755 index 0000000..fb3eff1 --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/GNaviConfig.xml @@ -0,0 +1,9 @@ + + + + ./data/ + ./diff/ + ./res900/ + ./log/ + + diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/arrow_line_3d_inner.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/arrow_line_3d_inner.png new file mode 100644 index 0000000..11a0b1a Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/arrow_line_3d_inner.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/arrow_line_3d_outer.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/arrow_line_3d_outer.png new file mode 100644 index 0000000..f2b40cb Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/arrow_line_3d_outer.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/arrow_line_3d_shadow.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/arrow_line_3d_shadow.png new file mode 100644 index 0000000..e531d68 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/arrow_line_3d_shadow.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/arrow_line_inner.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/arrow_line_inner.png new file mode 100644 index 0000000..6c3e709 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/arrow_line_inner.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/arrow_line_outer.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/arrow_line_outer.png new file mode 100644 index 0000000..26ddb2c Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/arrow_line_outer.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/calloutArrowMask.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/calloutArrowMask.png new file mode 100644 index 0000000..a89c653 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/calloutArrowMask.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/calloutArrowMask@2x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/calloutArrowMask@2x.png new file mode 100644 index 0000000..f3e2cf2 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/calloutArrowMask@2x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin.png new file mode 100644 index 0000000..20d0424 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin@2x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin@2x.png new file mode 100644 index 0000000..54d0460 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin@2x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin@3x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin@3x.png new file mode 100644 index 0000000..cd5c6a3 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin@3x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin_lift.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin_lift.png new file mode 100644 index 0000000..48f5c1b Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin_lift.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin_lift@2x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin_lift@2x.png new file mode 100644 index 0000000..20d15d7 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin_lift@2x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin_lift@3x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin_lift@3x.png new file mode 100644 index 0000000..f2598b7 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/greenPin_lift@3x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/infowindow.jpg b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/infowindow.jpg new file mode 100644 index 0000000..03ddf73 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/infowindow.jpg differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/lineDashTexture.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/lineDashTexture.png new file mode 100644 index 0000000..20c7df8 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/lineDashTexture.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/lineDashTextureDot.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/lineDashTextureDot.png new file mode 100644 index 0000000..1092c26 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/lineDashTextureDot.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/lineTexture.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/lineTexture.png new file mode 100644 index 0000000..a3d7e71 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/lineTexture.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/lineTextureThin.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/lineTextureThin.png new file mode 100644 index 0000000..4755362 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/lineTextureThin.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/marker_blue.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/marker_blue.png new file mode 100644 index 0000000..6368615 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/marker_blue.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/marker_blue@2x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/marker_blue@2x.png new file mode 100644 index 0000000..ddb06df Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/marker_blue@2x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_clear@2x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_clear@2x.png new file mode 100644 index 0000000..aed3659 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_clear@2x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_down@2x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_down@2x.png new file mode 100644 index 0000000..b950a2f Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_down@2x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_shouqi@2x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_shouqi@2x.png new file mode 100755 index 0000000..9ac82af Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_shouqi@2x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_shouqi_2@2x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_shouqi_2@2x.png new file mode 100644 index 0000000..b00a79b Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_shouqi_2@2x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_sousuo@2x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_sousuo@2x.png new file mode 100644 index 0000000..23eed11 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_sousuo@2x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_zhankai@2x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_zhankai@2x.png new file mode 100644 index 0000000..0056674 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_zhankai@2x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_zhankai_2@2x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_zhankai_2@2x.png new file mode 100644 index 0000000..86ce247 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/offline_zhankai_2@2x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_fog.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_fog.png new file mode 100644 index 0000000..f1aa1e7 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_fog.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_haze.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_haze.png new file mode 100644 index 0000000..e24725a Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_haze.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_rain.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_rain.png new file mode 100644 index 0000000..bcb304b Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_rain.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_snow.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_snow.png new file mode 100644 index 0000000..984abeb Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_snow.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_sun_0.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_sun_0.png new file mode 100644 index 0000000..8ffaeea Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_sun_0.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_sun_1.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_sun_1.png new file mode 100644 index 0000000..b57761e Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/particle_sun_1.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/pin_shadow.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/pin_shadow.png new file mode 100644 index 0000000..4f85ff1 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/pin_shadow.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/pin_shadow@2x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/pin_shadow@2x.png new file mode 100644 index 0000000..8acfc67 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/pin_shadow@2x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/pin_shadow@3x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/pin_shadow@3x.png new file mode 100644 index 0000000..fc16658 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/pin_shadow@3x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin.png new file mode 100644 index 0000000..ffe3892 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin@2x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin@2x.png new file mode 100644 index 0000000..4a08cf2 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin@2x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin@3x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin@3x.png new file mode 100644 index 0000000..2f92d11 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin@3x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin_lift.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin_lift.png new file mode 100644 index 0000000..bf1f8f4 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin_lift.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin_lift@2x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin_lift@2x.png new file mode 100644 index 0000000..ef2b2a6 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin_lift@2x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin_lift@3x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin_lift@3x.png new file mode 100644 index 0000000..d58f14f Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/purplePin_lift@3x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin.png new file mode 100644 index 0000000..1cf4744 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin@2x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin@2x.png new file mode 100644 index 0000000..0882272 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin@2x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin@3x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin@3x.png new file mode 100644 index 0000000..2a66034 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin@3x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin_lift.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin_lift.png new file mode 100644 index 0000000..24c4b9a Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin_lift.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin_lift@2x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin_lift@2x.png new file mode 100644 index 0000000..cfee8aa Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin_lift@2x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin_lift@3x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin_lift@3x.png new file mode 100644 index 0000000..5d90fa3 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/redPin_lift@3x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/select_.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/select_.png new file mode 100644 index 0000000..5889ed2 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/select_.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/select_@2x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/select_@2x.png new file mode 100644 index 0000000..5889ed2 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/select_@2x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/select_@3x.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/select_@3x.png new file mode 100644 index 0000000..dd955cd Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/select_@3x.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/terrainDefault.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/terrainDefault.png new file mode 100644 index 0000000..11ef10f Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/terrainDefault.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_blue.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_blue.png new file mode 100644 index 0000000..c54767e Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_blue.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_darkred.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_darkred.png new file mode 100644 index 0000000..7935f1a Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_darkred.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_gray.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_gray.png new file mode 100644 index 0000000..2a36842 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_gray.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_green.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_green.png new file mode 100644 index 0000000..1cad28c Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_green.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_red.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_red.png new file mode 100644 index 0000000..fccb898 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_red.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_yellow.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_yellow.png new file mode 100644 index 0000000..b222b87 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/images/traffic_texture_yellow.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/offline/offlinePackage.plist b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/offline/offlinePackage.plist new file mode 100644 index 0000000..786118a Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/offline/offlinePackage.plist differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/res.ck b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/res.ck new file mode 100644 index 0000000..53bd2cf --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/res.ck @@ -0,0 +1 @@ +6a99be7e3b71ecdfbba3067b4547be1f \ No newline at end of file diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/res.zip b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/res.zip new file mode 100644 index 0000000..3e01a9f Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/res.zip differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/back.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/back.png new file mode 100644 index 0000000..09df5e6 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/back.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/bottom.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/bottom.png new file mode 100644 index 0000000..b0e5f8e Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/bottom.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/front.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/front.png new file mode 100644 index 0000000..a740564 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/front.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/left.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/left.png new file mode 100644 index 0000000..a0cea69 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/left.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/right.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/right.png new file mode 100644 index 0000000..e287e6d Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/right.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/top.png b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/top.png new file mode 100644 index 0000000..ffd5340 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/skybox-1/top.png differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/terrainStyle.data b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/terrainStyle.data new file mode 100644 index 0000000..769b336 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMap.bundle/terrainStyle.data differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/audios/autoReroute.mp3 b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/audios/autoReroute.mp3 new file mode 100644 index 0000000..26e205a Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/audios/autoReroute.mp3 differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/audios/edog_dingdong.mp3 b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/audios/edog_dingdong.mp3 new file mode 100644 index 0000000..034119b Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/audios/edog_dingdong.mp3 differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/audios/naviCarema.mp3 b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/audios/naviCarema.mp3 new file mode 100644 index 0000000..9d8926a Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/audios/naviCarema.mp3 differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/audios/naviprompt.mp3 b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/audios/naviprompt.mp3 new file mode 100644 index 0000000..f6ceb49 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/audios/naviprompt.mp3 differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/guide/GSafeConfig.dat b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/guide/GSafeConfig.dat new file mode 100644 index 0000000..83eb54c Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/guide/GSafeConfig.dat differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/guide/changeplay.bin b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/guide/changeplay.bin new file mode 100644 index 0000000..a617ee4 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/guide/changeplay.bin differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/guide/default_config.bin b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/guide/default_config.bin new file mode 100644 index 0000000..909a25f Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/guide/default_config.bin differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/guide/default_config_eng.bin b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/guide/default_config_eng.bin new file mode 100644 index 0000000..33c9f93 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/guide/default_config_eng.bin differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/guide/odd_config.bin b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/guide/odd_config.bin new file mode 100644 index 0000000..dd7d959 Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/guide/odd_config.bin differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/route/road_config.bin b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/route/road_config.bin new file mode 100644 index 0000000..5d9b37e Binary files /dev/null and b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/core/tts/route/road_config.bin differ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/aggregation/aggregationLayerDefine.json b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/aggregation/aggregationLayerDefine.json new file mode 100644 index 0000000..3941f26 --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/aggregation/aggregationLayerDefine.json @@ -0,0 +1 @@ +{"version":[1113,64],"data":[{"layerId":2000090,"sceneList":[{"sceneId":2,"pageId":1},{"sceneId":8,"pageId":1},{"sceneId":9,"pageId":1},{"sceneId":5,"pageId":1}],"itemcategory":110012,"markerType":1,"maxLevel":16}]} \ No newline at end of file diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/arrow/finearrow.json b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/arrow/finearrow.json new file mode 100644 index 0000000..ea8a539 --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/arrow/finearrow.json @@ -0,0 +1 @@ +[{"level":[18,19,20],"width":12,"headWidthRate":2.0,"headAngle":60.0,"hang":0.1,"height":0.6,"purfleWidthRatio1":0.1,"purfleWidthRatio2":0.15,"shadowPurfleWidthRatio":0.45,"surfaceColor":"0xffffffff","purfleColor1":"0xff005BC8","purfleColor2":"0xff00a2ff","wallColor":"0xff1368CF","shadowColor":"0x66000000","shadowAngle":180.0,"shadowOffsetRate":0.625,"headFittleScale":0.25,"bodyInnerFittleScale":0.25,"bodyOuterFittleScale":0.5}] diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/camera/defualtCloud.json b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/camera/defualtCloud.json new file mode 100644 index 0000000..64c8f86 --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/camera/defualtCloud.json @@ -0,0 +1 @@ +{"condition":[{"roadClass":0,"type":5,"priority":12,"speed":40},{"roadClass":6,"type":5,"priority":12,"speed":40},{"roadClass":9,"type":4,"priority":11,"speed":20}],"breakRuleCameraSubType":[{"collision":0,"enablepop":1,"state":0,"type":14,"priority":40},{"collision":0,"enablepop":1,"state":0,"type":21,"priority":28},{"collision":0,"enablepop":1,"state":0,"type":15,"priority":39},{"collision":0,"enablepop":1,"state":0,"type":10,"priority":37},{"collision":0,"enablepop":1,"state":0,"type":19,"priority":36},{"collision":0,"enablepop":1,"state":0,"type":20,"priority":35},{"collision":0,"enablepop":1,"state":0,"type":2,"priority":34},{"collision":0,"enablepop":1,"state":0,"type":5,"priority":33},{"collision":0,"enablepop":1,"state":0,"type":18,"priority":32},{"collision":1,"enablepop":0,"state":0,"type":0,"priority":0}],"cameraType":[{"collision":0,"enablepop":1,"state":1,"type":8,"priority":60},{"collision":0,"enablepop":1,"state":1,"type":9,"priority":60},{"collision":0,"enablepop":1,"state":1,"type":0,"priority":59},{"collision":0,"enablepop":1,"state":1,"type":4,"priority":50},{"collision":0,"enablepop":1,"state":1,"type":5,"priority":49},{"collision":1,"enablepop":0,"state":0,"type":11,"priority":9},{"collision":1,"enablepop":0,"state":0,"type":3,"priority":8},{"collision":1,"enablepop":1,"state":0,"type":2,"priority":7},{"collision":1,"enablepop":1,"state":0,"type":6,"priority":6},{"collision":1,"enablepop":0,"state":0,"type":1,"priority":5}]} diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/camera/defualtCloudExt.json b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/camera/defualtCloudExt.json new file mode 100644 index 0000000..e8d8d45 --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/camera/defualtCloudExt.json @@ -0,0 +1,30 @@ +{"cameraType":[{"type":7,"state":1,"collision":0,"enablepop":1}, +{"type":25,"state":1,"collision":0,"enablepop":1}, +{"type":26,"state":1,"collision":0,"enablepop":1}, +{"type":30,"state":0,"collision":1,"enablepop":1}, +{"type":15,"state":0,"collision":1,"enablepop":1}, +{"type":10,"state":0,"collision":1,"enablepop":1}, +{"type":19,"state":0,"collision":1,"enablepop":1}, +{"type":20,"state":0,"collision":1,"enablepop":1}, +{"type":2,"state":0,"collision":1,"enablepop":1}, +{"type":5,"state":0,"collision":1,"enablepop":1}, +{"type":18,"state":0,"collision":1,"enablepop":1}, +{"type":21,"state":0,"collision":1,"enablepop":1}, +{"type":17,"state":0,"collision":1,"enablepop":1}, +{"type":99,"state":0,"collision":1,"enablepop":1}, +{"type":16,"state":0,"collision":1,"enablepop":1}, +{"type":29,"state":0,"collision":1,"enablepop":1}, +{"type":28,"state":0,"collision":1,"enablepop":1}, +{"type":24,"state":0,"collision":1,"enablepop":1}, +{"type":1,"state":0,"collision":1,"enablepop":1}, +{"type":100,"state":0,"collision":1,"enablepop":0}, +{"type":102,"state":0,"collision":1,"enablepop":0}, +{"type":6,"state":0,"collision":1,"enablepop":0}, +{"type":8,"state":0,"collision":1,"enablepop":0}, +{"type":11,"state":0,"collision":1,"enablepop":1}, +{"type":12,"state":0,"collision":1,"enablepop":1}, +{"type":13,"state":0,"collision":1,"enablepop":0}, +{"type":14,"state":0,"collision":1,"enablepop":1}, +{"type":23,"state":0,"collision":1,"enablepop":0}, +{"type":3,"state":0,"collision":1,"enablepop":0}, +{"type":4,"state":0,"collision":1,"enablepop":0}]} diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/camera/localConfig.json b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/camera/localConfig.json new file mode 100644 index 0000000..0e3013e --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/camera/localConfig.json @@ -0,0 +1 @@ +{"popCameraDist":[{"roadClass":0,"popDistance":2000,"mustPopDistance":1000},{"roadClass":1,"popDistance":800,"mustPopDistance":800},{"roadClass":2,"popDistance":800,"mustPopDistance":800},{"roadClass":7,"popDistance":700,"mustPopDistance":700},{"roadClass":6,"popDistance":1500,"mustPopDistance":1000}],"defPopDistance":{"roadClass":0,"popDistance":500,"mustPopDistance":500}} diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/camera/titleDetailConfig.json b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/camera/titleDetailConfig.json new file mode 100644 index 0000000..53c9b83 --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/camera/titleDetailConfig.json @@ -0,0 +1,3 @@ +{"titles":[{"type":1,"mainTitle":"违规用灯拍照","subtitle":"抓拍违规使用转向灯、远光灯"},{"type":2,"mainTitle":"不系安全带拍照","subtitle":"抓拍前后排不系安全带"},{"type":3,"mainTitle":"违法拍照","subtitle":"抓拍违反交通规则的驾驶行为"},{"type":4,"mainTitle":"违法拍照","subtitle":"抓拍违反交通规则的驾驶行为"},{"type":5,"mainTitle":"接打电话拍照","subtitle":"抓拍驾车接打电话"},{"type":7,"mainTitle":"测速{maxspeed}拍照","subtitle":"抓拍超速行驶"},{"type":8,"mainTitle":"违法拍照","subtitle":"抓拍违反交通规则的驾驶行为"},{"type":10,"mainTitle":"闯红灯拍照","subtitle":"抓拍违规闯红灯行为"},{"type":11,"mainTitle":"尾号限行拍照","subtitle":"抓拍不按规定驾驶当日限行尾号汽车"},{"type":12,"mainTitle":"环保限行拍照","subtitle":"抓拍不符合国家环保排放标准的车辆"},{"type":13,"mainTitle":"违法拍照","subtitle":"抓拍违反交通规则的驾驶行为"},{"type":14,"mainTitle":"车道违规拍照","subtitle":"抓拍路口不按车道规定方向驾驶行为"},{"type":15,"mainTitle":"礼让行人拍照","subtitle":"抓拍行车不礼让行人"},{"type":16,"mainTitle":"逆向行驶拍照","subtitle":"抓拍路口及路段中逆向行驶"},{"type":17,"mainTitle":"违章停车拍照","subtitle":"抓拍违反道路交通安全法律停放机动车"},{"type":18,"mainTitle":"非机动车道拍照","subtitle":"抓拍违规占用非机动车道行驶"},{"type":19,"mainTitle":"公交车道拍照","subtitle":"抓拍违规占用公交车道行驶"},{"type":20,"mainTitle":"应急车道拍照","subtitle":"抓拍违规占用应急车道行驶"},{"type":21,"mainTitle":"禁止鸣笛拍照","subtitle":"抓拍违反道路交通安全法律鸣笛行为"},{"type":23,"mainTitle":"违法拍照","subtitle":"抓拍违反交通规则的驾驶行为"},{"type":24,"mainTitle":"违规过铁路道口拍照","subtitle":"抓拍通过铁路道口时违反交通信号或者管理人员指挥行驶"},{"type":25,"mainTitle":"区间测速{maxspeed}起点拍照","subtitle":"抓拍区间内超速行驶"},{"type":26,"mainTitle":"区间测速{maxspeed}终点拍照","subtitle":"抓拍区间内超速行驶"},{"type":28,"mainTitle":"车间距拍照","subtitle":"抓拍不与前车保持安全距离行驶"},{"type":29,"mainTitle":"禁止空驶拍照","subtitle":"抓拍空车(无乘客)车辆驶入多乘员通道行为"},{"type":30,"mainTitle":"压线拍照","subtitle":"抓拍违规压实线、导流线、网格线"},{"type":99,"mainTitle":"ETC计费拍照","subtitle":"仅用于计费拍照"},{"type":100,"mainTitle":"违法拍照","subtitle":"抓拍违反交通规则的驾驶行为"},{"type":101,"mainTitle":"违法拍照","subtitle":"抓拍违反交通规则的驾驶行为"}, + {"type":100000,"mainTitle":"连续区间测速拍照","subtitle":"此处为区间测速{end}的终点和下一段区间测速{start}的起点,抓拍区间内超速行驶。"}] +} diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/carLayer/smartAnimation.json b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/carLayer/smartAnimation.json new file mode 100644 index 0000000..7f10127 --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/carLayer/smartAnimation.json @@ -0,0 +1 @@ +{"animations":[{"name":"smartAnimation","overlays":[{"overlayGuid":-2000054,"itemGuid":1,"animationType":6,"afterend":2,"animationstyle":0,"advisefps":10,"delay":0,"duration":600,"value":{"from":1,"to":0.7}},{"overlayGuid":-2000054,"itemGuid":1,"animationType":6,"afterend":2,"animationstyle":0,"advisefps":10,"delay":600,"duration":1000,"value":{"from":0.7,"to":1.0}},{"overlayGuid":-2000053,"itemGuid":4,"animationType":6,"afterend":2,"animationstyle":0,"advisefps":10,"delay":0,"duration":600,"value":{"from":1.0,"to":0.7}},{"overlayGuid":-2000053,"itemGuid":4,"animationType":6,"afterend":2,"animationstyle":0,"advisefps":10,"delay":600,"duration":1000,"value":{"from":0.7,"to":1.0}},{"overlayGuid":-2000053,"itemGuid":5,"animationType":13,"afterend":1,"delay":0,"advisefps":10,"duration":600,"value":{"from":0.6,"to":1.15}},{"overlayGuid":-2000053,"itemGuid":5,"animationType":13,"afterend":1,"advisefps":10,"delay":600,"duration":1000,"value":{"from":1.15,"to":0.6}}]}],"versionCode":0} diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/carLayer/weakAnimation.json b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/carLayer/weakAnimation.json new file mode 100644 index 0000000..7360a9d --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/carLayer/weakAnimation.json @@ -0,0 +1 @@ +{"animations":[{"name":"weakAnimation","overlays":[{"overlayGuid":-2000054,"itemGuid":1,"animationType":6,"afterend":2,"animationstyle":0,"advisefps":10,"delay":0,"duration":600,"value":{"from":1,"to":0.7}},{"overlayGuid":-2000054,"itemGuid":1,"animationType":6,"afterend":2,"animationstyle":0,"advisefps":10,"delay":600,"duration":1000,"value":{"from":0.7,"to":1.0}},{"overlayGuid":-2000053,"itemGuid":4,"animationType":6,"afterend":2,"animationstyle":0,"advisefps":10,"delay":0,"duration":600,"value":{"from":1.0,"to":0.7}},{"overlayGuid":-2000053,"itemGuid":4,"animationType":6,"afterend":2,"animationstyle":0,"advisefps":10,"delay":600,"duration":1000,"value":{"from":0.7,"to":1.0}}]}],"versionCode":0} diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/cardLayouts/layoutAGroup.xml b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/cardLayouts/layoutAGroup.xml new file mode 100644 index 0000000..1f9ea46 --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/cardLayouts/layoutAGroup.xml @@ -0,0 +1,71 @@ + + + + + +
+ +
+ +
+
+
+
+ + + + +
+
+
+ +
+
+
+
+
+
+ + + + +
+
+
+ +
+
+
+
+ + + + +
+ +
+
+ + + +
+ + +
+
+ + + +
+ +
+
+ + +
diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/cardLayouts/layoutBusGuide.xml b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/cardLayouts/layoutBusGuide.xml new file mode 100644 index 0000000..ecec979 --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/cardLayouts/layoutBusGuide.xml @@ -0,0 +1,231 @@ + + + + + + + +
+ +
+ +
+
+
+ + +
+ +
+ +
+
+
+ + +
+ +
+ +
+
+
+ + +
+ +
+ +
+
+
+ + +
+ +
+ +
+
+
+ + +
+ +
+ +
+
+
+ + + + + +
+ +
+
+ + + + + +
+
+
+ + +
+
+
+ + +
+
+
+ + + + + +
+
+
+ + +
+
+
+ + +
+
+
+ + + + + +
+
+
+ + + + + 150011,150013,150012,150010 + 38% 44% 58% 53%,49% 44% 47% 53%,49% 54% 47% 43%,38% 54% 58% 43% + 31px 20px 37px 43px,31px 20px 27px 43px,31px 33px 27px 30px,21px 33px 37px 30px +
+
+
+ +
+
+ + + + + 150011,150013,150012,150010 + 38% 44% 58% 53%,49% 44% 47% 53%,49% 54% 47% 43%,38% 54% 58% 43% + 13px 35px 29px 48px,23px 35px 19px 48px,23px 48px 19px 35px,13px 48px 29px 35px +
+
+
+ + + + + + +
+
+
+ + + + + +
+
+
+ + + + + 150011,150013,150012,150010 + 38% 44% 58% 53%,49% 44% 47% 53%,49% 54% 47% 43%,38% 54% 58% 43% + 13px 35px 29px 48px,23px 35px 19px 48px,23px 48px 19px 35px,13px 48px 29px 35px +
+
+
+ + + + + + 116007,116008,116010,116011 + 35% 53% 61% 38%,53% 52% 44% 39%,35% 40% 61% 51%,53% 40% 44% 51% + 20px 47px 44px 32px,36px 46px 28px 33px,20px 32px 44px 47px,36px 32px 28px 47px +
+ +
+
+
+
+ + +
+ +
+
+
+
+
diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/cardLayouts/layoutDriveCommute.xml b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/cardLayouts/layoutDriveCommute.xml new file mode 100644 index 0000000..c66d2e3 --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/cardLayouts/layoutDriveCommute.xml @@ -0,0 +1,31 @@ + + + + + + + +
+ +
+
+ + + + +
+
+ +
+
+ +
+
+
+ +
diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/cardLayouts/layoutDriveExplore.xml b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/cardLayouts/layoutDriveExplore.xml new file mode 100644 index 0000000..e196ab8 --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/cardLayouts/layoutDriveExplore.xml @@ -0,0 +1,27 @@ + + + + + + + 110516,110517,110518,110519,110542,110543,110544,110545,110520,110521,110522,110523,110546,110547,110548,110549 + 34% 52% 61% 36%,52% 46% 43% 42%,34% 41% 61% 48%,52% 41% 43% 48%,34% 52% 61% 36%,52% 46% 43% 42%,34% 41% 61% 48%,52% 41% 43% 48%,34% 52% 61% 36%,52% 46% 43% 42%,34% 41% 61% 48%,52% 41% 43% 48%,34% 52% 61% 36%,52% 46% 43% 42%,34% 41% 61% 48%,52% 41% 43% 48% + 21px 47px 45px 32px,39px 47px 30px 32px,21px 32px 45px 47px,39px 32px 30px 47px,21px 47px 45px 32px,39px 47px 30px 32px,21px 32px 45px 47px,39px 32px 30px 47px,21px 47px 45px 32px,39px 47px 30px 32px,21px 32px 45px 47px,39px 32px 30px 47px,21px 47px 45px 32px,39px 47px 30px 32px,21px 32px 45px 47px,39px 32px 30px 47px +
+
+
+
+
+
+
+ +
+ diff --git a/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/cardLayouts/layoutDriveGuide.xml b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/cardLayouts/layoutDriveGuide.xml new file mode 100644 index 0000000..4c6e1db --- /dev/null +++ b/Pods/AMapNavi-NO-IDFA/AMapNaviKit.framework/AMapNavi.bundle/eyrie/horusAssets/cardLayouts/layoutDriveGuide.xml @@ -0,0 +1,1308 @@ + + + + + +
+ +
+
+ + +
+ +
+
+ + + +
+ +
+
+ + +
+ +
+
+ + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+
+ + + +
+ +
+
+ + + +
+
+ +
+
+ +
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+ + + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+ + + + +
+ +
+
+
+
+ + +
+ +
+
+
+
+ + +
+ +
+
+
+
+ + +
+
+
+ + + + +
+
+
+ +
+
+
+
+ + + + + 110858,110859,110860,110861 + 35px 100px 60px 60px,65px 100px 40px 50px,35px 50px 55px 90px,50px 40px 40px 90px + 22px 45px 45px 32px,35px 45px 30px 32px,20px 32px 47px 45px,35px 32px 30px 45px +
+