diff --git a/OrderScheduling.xcodeproj/project.pbxproj b/OrderScheduling.xcodeproj/project.pbxproj index 4f399a8..8dd299c 100644 --- a/OrderScheduling.xcodeproj/project.pbxproj +++ b/OrderScheduling.xcodeproj/project.pbxproj @@ -36,6 +36,8 @@ 792EE0952AA74E0A00A212AB /* PushNotiCommonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 792EE0942AA74E0A00A212AB /* PushNotiCommonView.swift */; }; 792EE0972AA74E5800A212AB /* PushNotiCommonTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 792EE0962AA74E5800A212AB /* PushNotiCommonTool.swift */; }; 7940277A2B3BD46B00EC52D4 /* VehicleMonitoringConfigView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794027792B3BD46B00EC52D4 /* VehicleMonitoringConfigView.swift */; }; + 7940277C2B3E9ECB00EC52D4 /* ConditionalSearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7940277B2B3E9ECB00EC52D4 /* ConditionalSearchView.swift */; }; + 7940277E2B43B9B600EC52D4 /* ConditionalSearchTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7940277D2B43B9B600EC52D4 /* ConditionalSearchTool.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 */; }; @@ -139,6 +141,8 @@ 792EE0942AA74E0A00A212AB /* PushNotiCommonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushNotiCommonView.swift; sourceTree = ""; }; 792EE0962AA74E5800A212AB /* PushNotiCommonTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushNotiCommonTool.swift; sourceTree = ""; }; 794027792B3BD46B00EC52D4 /* VehicleMonitoringConfigView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VehicleMonitoringConfigView.swift; sourceTree = ""; }; + 7940277B2B3E9ECB00EC52D4 /* ConditionalSearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConditionalSearchView.swift; sourceTree = ""; }; + 7940277D2B43B9B600EC52D4 /* ConditionalSearchTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConditionalSearchTool.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 = ""; }; @@ -513,6 +517,8 @@ 79DD0DA92A9481BC00768FE7 /* NotificationAuthTool.swift */, 79DD0DB02A94B3DB00768FE7 /* EmptyView.swift */, 79E434242AA1919400AEB16C /* CommonAlertView.swift */, + 7940277B2B3E9ECB00EC52D4 /* ConditionalSearchView.swift */, + 7940277D2B43B9B600EC52D4 /* ConditionalSearchTool.swift */, ); path = View; sourceTree = ""; @@ -983,6 +989,7 @@ 794FBB212A934E0A00D57BB8 /* AppUpdateView.swift in Sources */, 79DD0DB42A95F00B00768FE7 /* Extension.swift in Sources */, 791887802A7CE6F1007EA0C1 /* UserDefaultStrings.swift in Sources */, + 7940277E2B43B9B600EC52D4 /* ConditionalSearchTool.swift in Sources */, 79FB75EC2A988EC000DB00A4 /* MessageCenterTool.swift in Sources */, 79FB76152A9DEE7400DB00A4 /* RefuseOrderConfirmView.swift in Sources */, 79FB76262A9F0A0000DB00A4 /* BackgroundTask.swift in Sources */, @@ -1011,6 +1018,7 @@ 79CECC122A89BD1A00B95D8B /* MessageCenterController.swift in Sources */, 794FBB1F2A92F7C300D57BB8 /* WebViewTool.swift in Sources */, 791887822A7CE71D007EA0C1 /* AppKeyStrings.swift in Sources */, + 7940277C2B3E9ECB00EC52D4 /* ConditionalSearchView.swift in Sources */, 79CB07CC2AA8465A00154B61 /* UserPermission.swift in Sources */, 79CECC282A8CADEA00B95D8B /* VehicleMonitoringVideoDetailController.swift in Sources */, 792EE0972AA74E5800A212AB /* PushNotiCommonTool.swift in Sources */, diff --git a/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/UserInterfaceState.xcuserstate b/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/UserInterfaceState.xcuserstate index c03dcd7..8234d7b 100644 Binary files a/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/UserInterfaceState.xcuserstate 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 index 53a209f..e717a8d 100644 --- a/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/OrderScheduling.xcworkspace/xcuserdata/zd.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -427,8 +427,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "1010" - endingLineNumber = "1010" + startingLineNumber = "1070" + endingLineNumber = "1070" landmarkName = "collectionView(_:cellForItemAt:)" landmarkType = "7"> @@ -1221,8 +1221,8 @@ filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "285" - endingLineNumber = "285" + startingLineNumber = "320" + endingLineNumber = "320" landmarkName = "reloadData()" landmarkType = "7"> @@ -1285,8 +1285,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "247" - endingLineNumber = "247" + startingLineNumber = "267" + endingLineNumber = "267" landmarkName = "entry(model:remarkId:)" landmarkType = "7"> @@ -2045,8 +2045,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "1021" - endingLineNumber = "1021" + startingLineNumber = "1081" + endingLineNumber = "1081" landmarkName = "collectionView(_:didSelectItemAt:)" landmarkType = "7"> @@ -2093,8 +2093,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "322" - endingLineNumber = "322" + startingLineNumber = "342" + endingLineNumber = "342" landmarkName = "addActions()" landmarkType = "7"> @@ -2109,8 +2109,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "311" - endingLineNumber = "311" + startingLineNumber = "331" + endingLineNumber = "331" landmarkName = "addActions()" landmarkType = "7"> @@ -2125,8 +2125,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "313" - endingLineNumber = "313" + startingLineNumber = "333" + endingLineNumber = "333" landmarkName = "addActions()" landmarkType = "7"> @@ -2284,8 +2284,8 @@ filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "124" - endingLineNumber = "124" + startingLineNumber = "144" + endingLineNumber = "144" landmarkName = "addActions()" landmarkType = "7"> @@ -2380,8 +2380,8 @@ filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "284" - endingLineNumber = "284" + startingLineNumber = "319" + endingLineNumber = "319" landmarkName = "reloadData()" landmarkType = "7"> @@ -2396,8 +2396,8 @@ filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "283" - endingLineNumber = "283" + startingLineNumber = "318" + endingLineNumber = "318" landmarkName = "reloadData()" landmarkType = "7"> @@ -2412,8 +2412,8 @@ filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "231" - endingLineNumber = "231" + startingLineNumber = "254" + endingLineNumber = "254" landmarkName = "viewDidLoad()" landmarkType = "7"> @@ -2428,8 +2428,8 @@ filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "225" - endingLineNumber = "225" + startingLineNumber = "248" + endingLineNumber = "248" landmarkName = "viewDidLoad()" landmarkType = "7"> @@ -3003,8 +3003,8 @@ filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "209" - endingLineNumber = "209" + startingLineNumber = "232" + endingLineNumber = "232" landmarkName = "init(nibName:bundle:)" landmarkType = "7"> @@ -3419,8 +3419,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "957" - endingLineNumber = "957" + startingLineNumber = "1017" + endingLineNumber = "1017" landmarkName = "tableView(_:cellForRowAt:)" landmarkType = "7"> @@ -3467,8 +3467,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "962" - endingLineNumber = "962" + startingLineNumber = "1022" + endingLineNumber = "1022" landmarkName = "tableView(_:cellForRowAt:)" landmarkType = "7"> @@ -3819,8 +3819,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "204" - endingLineNumber = "204" + startingLineNumber = "224" + endingLineNumber = "224" landmarkName = "addActions()" landmarkType = "7"> @@ -3835,8 +3835,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "211" - endingLineNumber = "211" + startingLineNumber = "231" + endingLineNumber = "231" landmarkName = "addActions()" landmarkType = "7"> @@ -3883,8 +3883,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "349" - endingLineNumber = "349" + startingLineNumber = "389" + endingLineNumber = "389" landmarkName = "addActions()" landmarkType = "7"> @@ -3899,8 +3899,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "359" - endingLineNumber = "359" + startingLineNumber = "399" + endingLineNumber = "399" landmarkName = "addActions()" landmarkType = "7"> @@ -3915,8 +3915,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "290" - endingLineNumber = "290" + startingLineNumber = "310" + endingLineNumber = "310" landmarkName = "addActions()" landmarkType = "7"> @@ -4423,8 +4423,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "1951" - endingLineNumber = "1951" + startingLineNumber = "2050" + endingLineNumber = "2050" landmarkName = "init(style:reuseIdentifier:)" landmarkType = "7"> @@ -4471,8 +4471,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "1958" - endingLineNumber = "1958" + startingLineNumber = "2057" + endingLineNumber = "2057" landmarkName = "init(style:reuseIdentifier:)" landmarkType = "7"> @@ -4519,8 +4519,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "636" - endingLineNumber = "636" + startingLineNumber = "696" + endingLineNumber = "696" landmarkName = "tableView(_:cellForRowAt:)" landmarkType = "7"> @@ -4599,8 +4599,8 @@ filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "949" - endingLineNumber = "949" + startingLineNumber = "1009" + endingLineNumber = "1009" landmarkName = "tableView(_:cellForRowAt:)" landmarkType = "7"> @@ -4649,7 +4649,7 @@ endingColumnNumber = "9223372036854775807" startingLineNumber = "35" endingLineNumber = "35" - landmarkName = "post(urlString:parameters:encoding:headers:responseType:completionHandler:)" + landmarkName = "get(urlString:parameters:encoding:headers:responseType:completionHandler:)" landmarkType = "7"> @@ -5644,5 +5644,21 @@ landmarkType = "7"> + + + + diff --git a/OrderScheduling/Assets.xcassets/Common/.DS_Store b/OrderScheduling/Assets.xcassets/Common/.DS_Store index b5f2afd..a80d37c 100644 Binary files a/OrderScheduling/Assets.xcassets/Common/.DS_Store and b/OrderScheduling/Assets.xcassets/Common/.DS_Store differ diff --git a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/dispatchOrder_down.png b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/dispatchOrder_down.png deleted file mode 100644 index 9d201d9..0000000 Binary files a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/dispatchOrder_down.png and /dev/null 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 deleted file mode 100644 index 6ce8759..0000000 Binary files a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/dispatchOrder_down@2x.png and /dev/null 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 deleted file mode 100644 index b92c111..0000000 Binary files a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/dispatchOrder_down@3x.png and /dev/null differ diff --git a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/dispatchOrder_up.png b/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/dispatchOrder_up.png deleted file mode 100644 index c5ccd54..0000000 Binary files a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/dispatchOrder_up.png and /dev/null 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 deleted file mode 100644 index 98d7d57..0000000 Binary files a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/dispatchOrder_up@2x.png and /dev/null 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 deleted file mode 100644 index 865a96d..0000000 Binary files a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/dispatchOrder_up@3x.png and /dev/null differ diff --git a/OrderScheduling/Assets.xcassets/ConditionalSearch/Contents.json b/OrderScheduling/Assets.xcassets/ConditionalSearch/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/OrderScheduling/Assets.xcassets/ConditionalSearch/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/Contents.json b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search.imageset/Contents.json similarity index 65% rename from OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/Contents.json rename to OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search.imageset/Contents.json index 9d8ed8c..318b2b7 100644 --- a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_down.imageset/Contents.json +++ b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "dispatchOrder_down.png", + "filename" : "conditional_search.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "dispatchOrder_down@2x.png", + "filename" : "conditional_search@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "dispatchOrder_down@3x.png", + "filename" : "conditional_search@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search.imageset/conditional_search.png b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search.imageset/conditional_search.png new file mode 100644 index 0000000..42ec7ce Binary files /dev/null and b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search.imageset/conditional_search.png differ diff --git a/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search.imageset/conditional_search@2x.png b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search.imageset/conditional_search@2x.png new file mode 100644 index 0000000..d7a5e1f Binary files /dev/null and b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search.imageset/conditional_search@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search.imageset/conditional_search@3x.png b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search.imageset/conditional_search@3x.png new file mode 100644 index 0000000..aa3f95f Binary files /dev/null and b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search.imageset/conditional_search@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_down_arrow.imageset/Contents.json b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_down_arrow.imageset/Contents.json new file mode 100644 index 0000000..ee9ff9f --- /dev/null +++ b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_down_arrow.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "conditional_search_down_arrow.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "conditional_search_down_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "conditional_search_down_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_down_arrow.imageset/conditional_search_down_arrow.png b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_down_arrow.imageset/conditional_search_down_arrow.png new file mode 100644 index 0000000..b66419c Binary files /dev/null and b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_down_arrow.imageset/conditional_search_down_arrow.png differ diff --git a/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_down_arrow.imageset/conditional_search_down_arrow@2x.png b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_down_arrow.imageset/conditional_search_down_arrow@2x.png new file mode 100644 index 0000000..2a03951 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_down_arrow.imageset/conditional_search_down_arrow@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_down_arrow.imageset/conditional_search_down_arrow@3x.png b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_down_arrow.imageset/conditional_search_down_arrow@3x.png new file mode 100644 index 0000000..e1618a0 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_down_arrow.imageset/conditional_search_down_arrow@3x.png differ diff --git a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/Contents.json b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_exit.imageset/Contents.json similarity index 63% rename from OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/Contents.json rename to OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_exit.imageset/Contents.json index f134f5d..6b0d47c 100644 --- a/OrderScheduling/Assets.xcassets/Common/dispatchOrder_up.imageset/Contents.json +++ b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_exit.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "dispatchOrder_up.png", + "filename" : "conditional_search_exit.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "dispatchOrder_up@2x.png", + "filename" : "conditional_search_exit@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "dispatchOrder_up@3x.png", + "filename" : "conditional_search_exit@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_exit.imageset/conditional_search_exit.png b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_exit.imageset/conditional_search_exit.png new file mode 100644 index 0000000..e36af5d Binary files /dev/null and b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_exit.imageset/conditional_search_exit.png differ diff --git a/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_exit.imageset/conditional_search_exit@2x.png b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_exit.imageset/conditional_search_exit@2x.png new file mode 100644 index 0000000..eb38c6a Binary files /dev/null and b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_exit.imageset/conditional_search_exit@2x.png differ diff --git a/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_exit.imageset/conditional_search_exit@3x.png b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_exit.imageset/conditional_search_exit@3x.png new file mode 100644 index 0000000..a05bbb8 Binary files /dev/null and b/OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search_exit.imageset/conditional_search_exit@3x.png differ diff --git a/OrderScheduling/Common/View/ConditionalSearchTool.swift b/OrderScheduling/Common/View/ConditionalSearchTool.swift new file mode 100644 index 0000000..7b5d2d5 --- /dev/null +++ b/OrderScheduling/Common/View/ConditionalSearchTool.swift @@ -0,0 +1,133 @@ +// +// ConditionalSearchTool.swift +// OrderScheduling +// +// Created by 中道 on 2024/1/2. +// + +import Foundation +import RxSwift +import RxRelay +import RxCocoa + +class ConditionalSearchTool : NSObject { + + private lazy var searchView = ConditionalSearchView.init() + private let disposeBag = DisposeBag() + public let showSearchViewSub = ReplayRelay?>.create(bufferSize: 1) + + public var contractSelectedItem : Int? + public var contractSelectedItemString : String? + public var serviceSelectedItem : Int? + public var serviceSelectedItemString : String? + public var fromSelectedItem : String? + public var toSelectedItem : String? + + public var searchParameters : OrderListParameters? + + public var resetSub = ReplayRelay.create(bufferSize: 1) + public var searchSub = ReplayRelay.create(bufferSize: 1) + + override init() { + super.init() + + showSearchViewSub + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + if let searchView = self?.searchView { + ENTRY.showSearchEntry(view: searchView,name: conitionalSearchEntry) + } + }) + .disposed(by: disposeBag) + + searchView.exitButton.rx.tap + .observe(on: MainScheduler.instance) + .subscribe(onNext: { + ENTRY.dismiss(name: conitionalSearchEntry) + }) + .disposed(by: disposeBag) + + searchView.contractTypeButton.rx.tap + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + CP.showItems(items: [OrderListParameters.ContractTypeEnum.baoxian.rawValue,OrderListParameters.ContractTypeEnum.chechan.rawValue,OrderListParameters.ContractTypeEnum.fours.rawValue,OrderListParameters.ContractTypeEnum.wuliu.rawValue,OrderListParameters.ContractTypeEnum.sanke.rawValue,OrderListParameters.ContractTypeEnum.xuni.rawValue,OrderListParameters.ContractTypeEnum.yiliao.rawValue,OrderListParameters.ContractTypeEnum.zixun.rawValue,OrderListParameters.ContractTypeEnum.huicheng.rawValue],selectedItem: self?.contractSelectedItemString) {[weak self] result in + self?.contractSelectedItem = OrderListParameters.ContractTypeValue(contractType: OrderListParameters.ContractTypeEnum(rawValue: result?.value ?? OrderListParameters.ContractTypeEnum.none.rawValue) ?? OrderListParameters.ContractTypeEnum.none).value + self?.contractSelectedItemString = result?.value + DispatchQueue.main.async {[weak self] in + self?.searchView.setButtonValue(button: self?.searchView.contractTypeButton, value: result?.value) + } + } + }) + .disposed(by: disposeBag) + + searchView.serviceAppointButton.rx.tap + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + CP.showItems(items: [OrderListParameters.ServiceTypeEnum.shi.rawValue,OrderListParameters.ServiceTypeEnum.fou.rawValue], selectedItem: self?.serviceSelectedItemString) {[weak self] result in + self?.serviceSelectedItem = OrderListParameters.ServiceTypeValue(serviceType: OrderListParameters.ServiceTypeEnum(rawValue: result?.value ?? OrderListParameters.ServiceTypeEnum.none.rawValue) ?? OrderListParameters.ServiceTypeEnum.none).value + self?.serviceSelectedItemString = result?.value + + DispatchQueue.main.async {[weak self] in + self?.searchView.setButtonValue(button: self?.searchView.serviceAppointButton, value: result?.value) + } + } + }) + .disposed(by: disposeBag) + + searchView.fromDateButton.rx.tap + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + CP.showDate(maxDate: Date.init()) {[weak self] date, dateString in + self?.fromSelectedItem = dateString + + DispatchQueue.main.async { + self?.searchView.setButtonValue(button: self?.searchView.fromDateButton, value: dateString) + } + } + }) + .disposed(by: disposeBag) + + searchView.toDateButton.rx.tap + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + CP.showDate(maxDate: Date.init()) {[weak self] date, dateString in + self?.toSelectedItem = dateString + + DispatchQueue.main.async { + self?.searchView.setButtonValue(button: self?.searchView.toDateButton, value: dateString) + } + } + }) + .disposed(by: disposeBag) + + searchView.resetButton.rx.tap + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + self?.searchView.resetAction() + + self?.contractSelectedItem = nil + self?.contractSelectedItemString = nil + self?.serviceSelectedItem = nil + self?.serviceSelectedItemString = nil + + self?.fromSelectedItem = nil + self?.toSelectedItem = nil + + self?.resetSub.accept(nil) + }) + .disposed(by: disposeBag) + + + searchView.searchButton.rx.tap + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + ENTRY.dismiss(name: conitionalSearchEntry) + self?.searchSub.accept(nil) + }) + .disposed(by: disposeBag) + } + + func getParameters(pageNum: Int,queryType: OrderTypeEnum) -> OrderListParameters { + return OrderListParameters(pageNum: pageNum, queryType: queryType, searchCode: searchView.orderCodeTextFiled.text?.isEmpty == false ? searchView.orderCodeTextFiled.text : nil, userPhone: searchView.carOwnerTextField.text?.isEmpty == false ? searchView.carOwnerTextField.text : nil, soleCode: searchView.licenseTextField.text?.isEmpty == false ? searchView.licenseTextField.text : nil, contractName: searchView.contractTextFiled.text?.isEmpty == false ? searchView.contractTextFiled.text : nil, contractType:contractSelectedItem,createTimeStart: fromSelectedItem,createTimeEnd: toSelectedItem,isAppoint: serviceSelectedItem,serviceName: searchView.serviceTextField.text?.isEmpty == false ? searchView.serviceTextField.text : nil) + } +} diff --git a/OrderScheduling/Common/View/ConditionalSearchView.swift b/OrderScheduling/Common/View/ConditionalSearchView.swift new file mode 100644 index 0000000..6a4d753 --- /dev/null +++ b/OrderScheduling/Common/View/ConditionalSearchView.swift @@ -0,0 +1,338 @@ +// +// ConditionalSearchView.swift +// OrderScheduling +// +// Created by 中道 on 2023/12/29. +// + +import Foundation +import DDControlsKit_Private +import DDAutoUIKit_Private +import DDColorKit_Private + +class ConditionalSearchView : DDView { + public var titleLabel : DDLabel + public var exitButton : DDButton + public var scrollView : DDScrollView + public var scrollContentView : DDView + public var resetButton : DDButton + public var searchButton : DDButton + + public let orderInfoTitleLabel : DDLabel + public let orderCodeTextFiled : DDTextField + public let licenseTextField : DDTextField + public let carOwnerTextField : DDTextField + + public let contractTitleLabel : DDLabel + public let contractTextFiled : DDTextField + public let contractTypeButton : DDButton + + public let dateTitleLabel : DDLabel + public let fromDateButton : DDButton + public let toDateButton : DDButton + + public let serviceTitleLabel : DDLabel + public let serviceTextField : DDTextField + public let serviceAppointButton : DDButton + + public let controlBackgroundColor = UIColor.hex("000000").alpha(0.1) + public let noneColor = UIColor.hex("000000").alpha(0.2) + public let valueColor = UIColor.black + public let noneFont = UIFont.mediumFont(14) + public let valueFont = UIFont.mediumFont(14) + + public override init(frame: CGRect) { + titleLabel = DDLabel.dd_init(withText: "订单筛选", font: .mediumFont(17), textColor: .hex("000000").alpha(0.8)) + exitButton = DDButton.dd_initCustom() + scrollView = DDScrollView.init() + scrollContentView = DDView.init() + resetButton = DDButton.dd_initCustom() + searchButton = DDButton.dd_initCustom() + + orderInfoTitleLabel = DDLabel.dd_init(withText: "任务信息", font: .mediumFont(16), textColor: .hex("000000").alpha(0.8)) + orderCodeTextFiled = DDTextField.init() + licenseTextField = DDTextField.init() + carOwnerTextField = DDTextField.init() + + contractTitleLabel = DDLabel.dd_init(withText: "合同信息", font: .mediumFont(16), textColor: .hex("000000").alpha(0.8)) + contractTextFiled = DDTextField.init() + contractTypeButton = DDButton.dd_initCustom() + + dateTitleLabel = DDLabel.dd_init(withText: "事发时间", font: .mediumFont(16), textColor: .hex("000000").alpha(0.8)) + fromDateButton = DDButton.dd_initCustom() + toDateButton = DDButton.dd_initCustom() + + serviceTitleLabel = DDLabel.dd_init(withText: "服务内容", font: .mediumFont(16), textColor: .hex("000000").alpha(0.8)) + serviceTextField = DDTextField.init() + serviceAppointButton = DDButton.dd_initCustom() + super.init(frame: frame) + + backgroundColor = .white + exitButton.setImage(UIImage(named: "conditional_search_exit"), for: .normal) + resetButton.setTitle("重置", for: .normal) + resetButton.dd_setBackgroundColor(controlBackgroundColor) + searchButton.setTitle("完成", for: .normal) + searchButton.dd_setBackgroundColor(.hex("2A5094")) + layer.maskedCorners = [.layerMinXMinYCorner,.layerMaxXMinYCorner] + layer.masksToBounds = true + layer.cornerRadius = auto(16) + + let bottomView = DDView.init() + let contentView = DDView.init() + addSubview(bottomView) + bottomView.snp.makeConstraints { make in + make.bottom.left.right.equalToSuperview() + make.height.equalTo(auto(80)) + } + + contentView.layer.cornerRadius = auto(20) + contentView.layer.masksToBounds = true + bottomView.addSubview(contentView) + contentView.snp.makeConstraints { make in + make.centerX.centerY.equalToSuperview() + make.left.right.equalToSuperview().inset(auto(10)) + make.height.equalTo(auto(40)) + } + + contentView.addSubview(resetButton) + resetButton.snp.makeConstraints { make in + make.left.top.bottom.equalToSuperview() + make.width.equalToSuperview().multipliedBy(0.5) + } + + contentView.addSubview(searchButton) + searchButton.snp.makeConstraints { make in + make.right.top.bottom.equalToSuperview() + make.width.equalToSuperview().multipliedBy(0.5) + } + + addSubview(titleLabel) + titleLabel.snp.makeConstraints { make in + make.top.equalToSuperview().offset(auto(20)) + make.centerX.equalToSuperview() + } + + addSubview(exitButton) + exitButton.snp.makeConstraints { make in + make.centerY.equalTo(titleLabel) + make.right.equalTo(-auto(20)) + } + + addSubview(scrollView) + scrollView.snp.makeConstraints { make in + make.left.right.equalToSuperview() + make.top.equalTo(titleLabel.snp.bottom).offset(auto(20)) + make.bottom.equalTo(bottomView.snp.top) + } + + scrollView.addSubview(scrollContentView) + scrollContentView.snp.makeConstraints { make in + make.edges.equalToSuperview() + make.width.equalToSuperview() + } + + scrollContentView.addSubview(orderInfoTitleLabel) + orderInfoTitleLabel.snp.makeConstraints { make in + make.left.equalTo(auto(10)) + make.top.equalTo(scrollContentView) + } + + orderCodeTextFiled.backgroundColor = controlBackgroundColor + orderCodeTextFiled.layer.cornerRadius = auto(6) + orderCodeTextFiled.tintColor = .gray + orderCodeTextFiled.attributedPlaceholder = NSAttributedString(string: "内部编号/外部编号", attributes: [.foregroundColor : noneColor,.font : UIFont.mediumFont(14)]) + orderCodeTextFiled.textAlignment = .center + orderCodeTextFiled.font = valueFont + scrollContentView.addSubview(orderCodeTextFiled) + orderCodeTextFiled.snp.makeConstraints { make in + make.left.equalTo(orderInfoTitleLabel) + make.top.equalTo(orderInfoTitleLabel.snp.bottom).offset(auto(10)) + make.width.equalToSuperview().multipliedBy(0.5).offset(-auto(15)) + make.height.equalTo(auto(30)) + } + + licenseTextField.backgroundColor = controlBackgroundColor + licenseTextField.layer.cornerRadius = auto(6) + licenseTextField.tintColor = .gray + licenseTextField.attributedPlaceholder = NSAttributedString(string: "车架/车牌/单证", attributes: [.foregroundColor : noneColor,.font : UIFont.mediumFont(14)]) + licenseTextField.textAlignment = .center + licenseTextField.font = valueFont + scrollContentView.addSubview(licenseTextField) + licenseTextField.snp.makeConstraints { make in + make.right.equalTo(-auto(10)) + make.top.equalTo(orderCodeTextFiled) + make.width.equalToSuperview().multipliedBy(0.5).offset(-auto(15)) + make.height.equalTo(orderCodeTextFiled) + } + + carOwnerTextField.backgroundColor = controlBackgroundColor + carOwnerTextField.layer.cornerRadius = auto(6) + carOwnerTextField.tintColor = .gray + carOwnerTextField.attributedPlaceholder = NSAttributedString(string: "车主/报案人姓名/电话", attributes: [.foregroundColor : noneColor,.font : UIFont.mediumFont(14)]) + carOwnerTextField.textAlignment = .center + carOwnerTextField.font = valueFont + scrollContentView.addSubview(carOwnerTextField) + carOwnerTextField.snp.makeConstraints { make in + make.top.equalTo(orderCodeTextFiled.snp.bottom).offset(auto(10)) + make.left.equalTo(orderCodeTextFiled) + make.width.equalTo(orderCodeTextFiled) + make.height.equalTo(orderCodeTextFiled) + } + + scrollContentView.addSubview(contractTitleLabel) + contractTitleLabel.snp.makeConstraints { make in + make.left.equalTo(orderInfoTitleLabel) + make.top.equalTo(carOwnerTextField.snp.bottom).offset(auto(10)) + } + + contractTextFiled.backgroundColor = controlBackgroundColor + contractTextFiled.layer.cornerRadius = auto(6) + contractTextFiled.tintColor = .gray + contractTextFiled.attributedPlaceholder = NSAttributedString(string: "车主/报案人姓名/电话", attributes: [.foregroundColor : noneColor,.font : UIFont.mediumFont(14)]) + contractTextFiled.textAlignment = .center + contractTextFiled.font = valueFont + scrollContentView.addSubview(contractTextFiled) + contractTextFiled.snp.makeConstraints { make in + make.top.equalTo(contractTitleLabel.snp.bottom).offset(auto(10)) + make.left.equalTo(orderCodeTextFiled) + make.height.equalTo(orderCodeTextFiled) + make.width.equalTo(orderCodeTextFiled) + } + + contractTypeButton.titleLabel?.textAlignment = .center + contractTypeButton.backgroundColor = controlBackgroundColor + contractTypeButton.layer.cornerRadius = auto(6) + contractTypeButton.setTitleColor(noneColor, for: .normal) + contractTypeButton.titleLabel?.font = .mediumFont(14) + contractTypeButton.setTitle("合同类型", for: .normal) + contractTypeButton.titleLabel?.font = valueFont + let contractTypeImageView = DDImageView.init(image: UIImage(named: "conditional_search_down_arrow")) + contractTypeButton.addSubview(contractTypeImageView) + contractTypeImageView.snp.makeConstraints { make in + make.right.equalTo(-auto(10)) + make.centerY.equalToSuperview() + } + scrollContentView.addSubview(contractTypeButton) + contractTypeButton.snp.makeConstraints { make in + make.right.equalTo(licenseTextField.snp.right) + make.top.equalTo(contractTextFiled) + make.height.width.equalTo(contractTextFiled) + } + + scrollContentView.addSubview(dateTitleLabel) + dateTitleLabel.snp.makeConstraints { make in + make.left.equalTo(orderInfoTitleLabel) + make.top.equalTo(contractTextFiled.snp.bottom).offset(auto(10)) + } + + fromDateButton.titleLabel?.textAlignment = .center + fromDateButton.backgroundColor = controlBackgroundColor + fromDateButton.layer.cornerRadius = auto(6) + fromDateButton.setTitleColor(noneColor, for: .normal) + fromDateButton.setTitle("开始日期", for: .normal) + fromDateButton.titleLabel?.font = valueFont + scrollContentView.addSubview(fromDateButton) + fromDateButton.snp.makeConstraints { make in + make.top.equalTo(dateTitleLabel.snp.bottom).offset(auto(10)) + make.left.equalTo(auto(10)) + make.height.equalTo(orderCodeTextFiled) + make.width.equalToSuperview().multipliedBy(0.5).offset(-auto(20)) + } + + let middleLine = DDView() + middleLine.backgroundColor = noneColor + scrollContentView.addSubview(middleLine) + middleLine.snp.makeConstraints { make in + make.centerY.equalTo(fromDateButton) + make.height.equalTo(2) + make.width.equalTo(auto(10)) + make.centerX.equalToSuperview() + } + + toDateButton.titleLabel?.textAlignment = .center + toDateButton.backgroundColor = controlBackgroundColor + toDateButton.layer.cornerRadius = auto(6) + toDateButton.setTitleColor(noneColor, for: .normal) + toDateButton.setTitle("结束日期", for: .normal) + toDateButton.titleLabel?.font = valueFont + scrollContentView.addSubview(toDateButton) + toDateButton.snp.makeConstraints { make in + make.right.equalTo(licenseTextField.snp.right) + make.top.equalTo(fromDateButton) + make.height.width.equalTo(fromDateButton) + make.width.equalToSuperview().multipliedBy(0.5).offset(-auto(20)) + } + + scrollContentView.addSubview(serviceTitleLabel) + serviceTitleLabel.snp.makeConstraints { make in + make.left.equalTo(orderInfoTitleLabel) + make.top.equalTo(fromDateButton.snp.bottom).offset(auto(10)) + } + + serviceTextField.backgroundColor = controlBackgroundColor + serviceTextField.layer.cornerRadius = auto(6) + serviceTextField.tintColor = .gray + serviceTextField.attributedPlaceholder = NSAttributedString(string: "服务内容", attributes: [.foregroundColor : UIColor.hex("000000").alpha(0.2),.font : UIFont.mediumFont(14)]) + serviceTextField.textAlignment = .center + serviceTextField.font = valueFont + scrollContentView.addSubview(serviceTextField) + serviceTextField.snp.makeConstraints { make in + make.top.equalTo(serviceTitleLabel.snp.bottom).offset(auto(10)) + make.left.equalTo(orderCodeTextFiled) + make.height.equalTo(orderCodeTextFiled) + make.width.equalTo(orderCodeTextFiled) + make.bottom.equalTo(scrollContentView.snp.bottom) + } + + serviceAppointButton.titleLabel?.textAlignment = .center + serviceAppointButton.backgroundColor = controlBackgroundColor + serviceAppointButton.layer.cornerRadius = auto(6) + serviceAppointButton.setTitleColor(noneColor, for: .normal) + serviceAppointButton.setTitle("是否预约", for: .normal) + serviceAppointButton.titleLabel?.font = valueFont + let serviceAppointImageView = DDImageView.init(image: UIImage(named: "conditional_search_down_arrow")) + serviceAppointButton.addSubview(serviceAppointImageView) + serviceAppointImageView.snp.makeConstraints { make in + make.right.equalTo(-auto(10)) + make.centerY.equalToSuperview() + } + scrollContentView.addSubview(serviceAppointButton) + serviceAppointButton.snp.makeConstraints { make in + make.right.equalTo(licenseTextField.snp.right) + make.top.equalTo(serviceTextField) + make.height.width.equalTo(serviceTextField) + } + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func resetAction() { + contractTypeButton.setTitle("合同类型", for: .normal) + contractTypeButton.setTitleColor(noneColor, for: .normal) + + fromDateButton.setTitle("开始日期", for: .normal) + fromDateButton.setTitleColor(noneColor, for: .normal) + + toDateButton.setTitle("结束日期", for: .normal) + toDateButton.setTitleColor(noneColor, for: .normal) + + serviceAppointButton.setTitle("是否预约", for: .normal) + serviceAppointButton.setTitleColor(noneColor, for: .normal) + + orderCodeTextFiled.text = nil + licenseTextField.text = nil + carOwnerTextField.text = nil + + contractTextFiled.text = nil + + serviceTextField.text = nil + } + + func setButtonValue(button: DDButton?, value: String?) { + button?.setTitle(value, for: .normal) + button?.setTitleColor(valueColor, for: .normal) + } + +} diff --git a/OrderScheduling/Entry/Entry.swift b/OrderScheduling/Entry/Entry.swift index 20bc8ec..7515aa1 100644 --- a/OrderScheduling/Entry/Entry.swift +++ b/OrderScheduling/Entry/Entry.swift @@ -450,6 +450,50 @@ open class Entry { SwiftEntryKit.display(entry: view, using: attributes) } + func showSearchEntry(view: UIView, name: String? = nil) { + var attributes = EKAttributes() + attributes = .bottomFloat + attributes.name = name + attributes.precedence = .override(priority: .min, dropEnqueuedEntries: false) + attributes.displayMode = .inferred + attributes.displayDuration = .infinity + attributes.screenBackground = .color(color: .black.with(alpha: 0.3)) + attributes.entryBackground = .color(color: .clear) + 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: .fill, + height: .constant(value: auto(500)) + ) + attributes.positionConstraints.verticalOffset = 0 + attributes.positionConstraints.safeArea = .overridden + attributes.positionConstraints.rotation.isEnabled = false + attributes.statusBar = .light + SwiftEntryKit.display(entry: view, using: attributes) + } + public func isCurrentlyDisplaying(entryNamed name: String? = nil) -> Bool { return SwiftEntryKit.isCurrentlyDisplaying(entryNamed: name) } diff --git a/OrderScheduling/Global/Tool/CustomPicker.swift b/OrderScheduling/Global/Tool/CustomPicker.swift index 6aec41f..c11bf9a 100644 --- a/OrderScheduling/Global/Tool/CustomPicker.swift +++ b/OrderScheduling/Global/Tool/CustomPicker.swift @@ -28,4 +28,16 @@ open class CustomPicker { } pickerView.show() } + + func showDate(minDate: Date? = nil,maxDate: Date? = nil,selectDate: Date? = nil,resultHandler:@escaping ((Date?, String?) -> Void)) { + let pickerView = BRDatePickerView() + pickerView.pickerMode = .YMDHMS + pickerView.minDate = minDate + pickerView.maxDate = maxDate + pickerView.selectDate = selectDate + pickerView.resultBlock = { date,dateString in + resultHandler(date,dateString) + } + pickerView.show() + } } diff --git a/OrderScheduling/History/ViewController/HistoryController.swift b/OrderScheduling/History/ViewController/HistoryController.swift index 1a8342a..c936946 100644 --- a/OrderScheduling/History/ViewController/HistoryController.swift +++ b/OrderScheduling/History/ViewController/HistoryController.swift @@ -93,7 +93,7 @@ extension HistoryItemController { refreshRelay .flatMapLatest {[weak self] pageNum in - return Observable.zip(RQ.orderList(parameters: OrderListParameters(pageNum: pageNum, queryType: (self?.type)!)).asObservable(), Observable.just(pageNum)) + return Observable.zip(RQ.orderList(parameters: self?.conditionalSearchTool.getParameters(pageNum: pageNum, queryType: (self?.type)!) ?? OrderListParameters(pageNum: pageNum, queryType: (self?.type)!)).asObservable(), Observable.just(pageNum)) } .observe(on: MainScheduler.instance) .subscribe(onNext: {[weak self] (response, pageNum) in @@ -132,6 +132,26 @@ extension HistoryItemController { }) .disposed(by: disposeBag) + searchButton.rx.tap + .subscribe(onNext: {[weak self] _ in + self?.conditionalSearchTool.showSearchViewSub.accept(nil) + }) + .disposed(by: disposeBag) + + conditionalSearchTool.resetSub + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + self?.historyItemView.tableView.mj_header?.beginRefreshing() + }) + .disposed(by: disposeBag) + + conditionalSearchTool.searchSub + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + self?.historyItemView.tableView.mj_header?.beginRefreshing() + }) + .disposed(by: disposeBag) + historyItemView.tableView.mj_header?.beginRefreshing() USERP.userPermissionRelay @@ -387,6 +407,9 @@ class HistoryItemController : ZDViewController { private var type : OrderTypeEnum private var emptyView = EmptyView() + private var searchButton = DDButton.dd_initCustom() + private lazy var conditionalSearchTool = ConditionalSearchTool() + public init(type:OrderTypeEnum) { self.type = type super.init(nibName: nil, bundle: nil) @@ -420,6 +443,16 @@ class HistoryItemController : ZDViewController { historyItemView.tableView.delegate = self historyItemView.tableView.dataSource = self + + searchButton.backgroundColor = .hex("2A5094") + searchButton.setImage(UIImage(named: "conditional_search"), for: .normal) + view.addSubview(searchButton) + searchButton.layer.cornerRadius = auto(15) + searchButton.snp.remakeConstraints { make in + make.bottom.equalTo(historyItemView.snp.bottom).offset(-auto(30)) + make.right.equalTo(historyItemView.snp.right).offset(-auto(20)) + make.width.height.equalTo(auto(30)) + } } } diff --git a/OrderScheduling/HttpRequestCenter/ParametersList.swift b/OrderScheduling/HttpRequestCenter/ParametersList.swift index 317411c..6b93f43 100644 --- a/OrderScheduling/HttpRequestCenter/ParametersList.swift +++ b/OrderScheduling/HttpRequestCenter/ParametersList.swift @@ -50,6 +50,77 @@ public struct OrderListParameters : Encodable { var pageNum : Int var pageSize : Int = 12 var queryType : OrderTypeEnum + var searchCode : String? + var userPhone : String? + var soleCode : String? + var contractName : String? + var contractType : Int? + var createTimeStart : String? + var createTimeEnd : String? + var isAppoint : Int? + var serviceName : String? + + public enum ContractTypeEnum : String, Encodable { + case baoxian = "保险类" + case chechan = "车厂类" + case fours = "4s店类" + case wuliu = "物流类" + case sanke = "散客类" + case xuni = "虚拟类" + case yiliao = "医疗类" + case zixun = "400咨询类" + case huicheng = "回乘车" + case none = "" + } + + public struct ContractTypeValue : Encodable { + var value : Int? + init(contractType: ContractTypeEnum) { + switch contractType { + case .baoxian: + self.value = 1 + case .chechan: + self.value = 2 + case .fours: + self.value = 3 + case .wuliu: + self.value = 4 + case .sanke: + self.value = 5 + case .xuni: + self.value = 6 + case .yiliao: + self.value = 7 + case .zixun: + self.value = 8 + case .huicheng: + self.value = 9 + default: + self.value = nil + } + } + } + + public enum ServiceTypeEnum : String, Encodable { + case shi = "是" + case fou = "否" + case none = "" + } + + public struct ServiceTypeValue : Encodable { + var value : Int? + var string : String? + init(serviceType: ServiceTypeEnum) { + switch serviceType { + case .shi: + self.value = 1 + case .fou: + self.value = 0 + default: + self.value = nil + } + } + } } public struct AcceptDispatchParameters : Encodable { diff --git a/OrderScheduling/Rescue/ViewController/RescueController.swift b/OrderScheduling/Rescue/ViewController/RescueController.swift index cc24f2b..3c2e47a 100644 --- a/OrderScheduling/Rescue/ViewController/RescueController.swift +++ b/OrderScheduling/Rescue/ViewController/RescueController.swift @@ -96,8 +96,8 @@ extension RescuePendingOrderController { }) refreshRelay - .flatMapLatest { pageNum in - return Observable.zip(RQ.orderList(parameters: OrderListParameters(pageNum: pageNum, queryType: .TO_ACCEPT_DISPATCH)).asObservable(), Observable.just(pageNum)) + .flatMapLatest {[weak self] pageNum in + return Observable.zip(RQ.orderList(parameters:self?.conditionalSearchTool.getParameters(pageNum: pageNum, queryType: .TO_ACCEPT_DISPATCH) ?? OrderListParameters(pageNum: pageNum, queryType: .TO_ACCEPT_DISPATCH)).asObservable(), Observable.just(pageNum)) } .observe(on: MainScheduler.instance) .subscribe(onNext: {[weak self] (response, pageNum) in @@ -198,6 +198,26 @@ extension RescuePendingOrderController { }) .disposed(by: disposeBag) + searchButton.rx.tap + .subscribe(onNext: {[weak self] _ in + self?.conditionalSearchTool.showSearchViewSub.accept(nil) + }) + .disposed(by: disposeBag) + + conditionalSearchTool.resetSub + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + self?.pendingOrderView.tableView.mj_header?.beginRefreshing() + }) + .disposed(by: disposeBag) + + conditionalSearchTool.searchSub + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + self?.pendingOrderView.tableView.mj_header?.beginRefreshing() + }) + .disposed(by: disposeBag) + USER.refreshTokenSub .observe(on: MainScheduler.instance) .subscribe(onNext: {[weak self] _ in @@ -296,8 +316,8 @@ extension RescuePendingDispatchController { }) refreshRelay - .flatMapLatest { pageNum in - return Observable.zip(RQ.orderList(parameters: OrderListParameters(pageNum: pageNum, queryType: .TO_DISPATCH_VEHICLE)).asObservable(), Observable.just(pageNum)) + .flatMapLatest {[weak self] pageNum in + return Observable.zip(RQ.orderList(parameters:self?.conditionalSearchTool.getParameters(pageNum: pageNum, queryType: .TO_DISPATCH_VEHICLE) ?? OrderListParameters(pageNum: pageNum, queryType: .TO_DISPATCH_VEHICLE)).asObservable(), Observable.just(pageNum)) } .observe(on: MainScheduler.instance) .subscribe(onNext: {[weak self] (response, pageNum) in @@ -336,6 +356,26 @@ extension RescuePendingDispatchController { }) .disposed(by: disposeBag) + searchButton.rx.tap + .subscribe(onNext: {[weak self] _ in + self?.conditionalSearchTool.showSearchViewSub.accept(nil) + }) + .disposed(by: disposeBag) + + conditionalSearchTool.resetSub + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + self?.pendingDispatchView.tableView.mj_header?.beginRefreshing() + }) + .disposed(by: disposeBag) + + conditionalSearchTool.searchSub + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + self?.pendingDispatchView.tableView.mj_header?.beginRefreshing() + }) + .disposed(by: disposeBag) + USER.refreshTokenSub .observe(on: MainScheduler.instance) .subscribe(onNext: {[weak self] _ in @@ -365,8 +405,8 @@ extension RescueIsIngController { }) refreshRelay - .flatMapLatest { pageNum in - return Observable.zip(RQ.orderList(parameters: OrderListParameters(pageNum: pageNum, queryType: .TO_RESCUE)).asObservable(), Observable.just(pageNum)) + .flatMapLatest {[weak self] pageNum in + return Observable.zip(RQ.orderList(parameters:self?.conditionalSearchTool.getParameters(pageNum: pageNum,queryType: .TO_RESCUE) ?? OrderListParameters(pageNum: pageNum, queryType: .TO_RESCUE)).asObservable(), Observable.just(pageNum)) } .observe(on: MainScheduler.instance) .subscribe(onNext: {[weak self] (response, pageNum) in @@ -405,6 +445,26 @@ extension RescueIsIngController { }) .disposed(by: disposeBag) + searchButton.rx.tap + .subscribe(onNext: {[weak self] _ in + self?.conditionalSearchTool.showSearchViewSub.accept(nil) + }) + .disposed(by: disposeBag) + + conditionalSearchTool.resetSub + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + self?.pendingIsIngView.tableView.mj_header?.beginRefreshing() + }) + .disposed(by: disposeBag) + + conditionalSearchTool.searchSub + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + self?.pendingIsIngView.tableView.mj_header?.beginRefreshing() + }) + .disposed(by: disposeBag) + USER.refreshTokenSub .observe(on: MainScheduler.instance) .subscribe(onNext: {[weak self] _ in @@ -1127,6 +1187,9 @@ class RescuePendingOrderController : ZDViewController { private var acceptOrderRelay = ReplayRelay.create(bufferSize: 1) private var emptyView = EmptyView() + private var searchButton = DDButton.dd_initCustom() + private lazy var conditionalSearchTool = ConditionalSearchTool() + override func viewDidLoad() { super.viewDidLoad() dd_navigationBarBackgroundColor = .hex("354683") @@ -1152,6 +1215,16 @@ class RescuePendingOrderController : ZDViewController { pendingOrderView.tableView.backgroundColor = .hex("FAFAFA") pendingOrderView.tableView.delegate = self pendingOrderView.tableView.dataSource = self + + searchButton.backgroundColor = .hex("2A5094") + searchButton.setImage(UIImage(named: "conditional_search"), for: .normal) + view.addSubview(searchButton) + searchButton.layer.cornerRadius = auto(15) + searchButton.snp.remakeConstraints { make in + make.bottom.equalTo(pendingOrderView.snp.bottom).offset(-auto(30)) + make.right.equalTo(pendingOrderView.snp.right).offset(-auto(20)) + make.width.height.equalTo(auto(30)) + } } } @@ -1164,6 +1237,9 @@ class RescuePendingDispatchController : ZDViewController { private var pageNum : Int = 1 private var emptyView = EmptyView() + private var searchButton = DDButton.dd_initCustom() + private lazy var conditionalSearchTool = ConditionalSearchTool() + override func viewDidLoad() { super.viewDidLoad() dd_navigationBarBackgroundColor = .hex("354683") @@ -1189,6 +1265,16 @@ class RescuePendingDispatchController : ZDViewController { pendingDispatchView.tableView.backgroundColor = .hex("FAFAFA") pendingDispatchView.tableView.delegate = self pendingDispatchView.tableView.dataSource = self + + searchButton.backgroundColor = .hex("2A5094") + searchButton.setImage(UIImage(named: "conditional_search"), for: .normal) + view.addSubview(searchButton) + searchButton.layer.cornerRadius = auto(15) + searchButton.snp.remakeConstraints { make in + make.bottom.equalTo(pendingDispatchView.snp.bottom).offset(-auto(30)) + make.right.equalTo(pendingDispatchView.snp.right).offset(-auto(20)) + make.width.height.equalTo(auto(30)) + } } } @@ -1201,6 +1287,9 @@ class RescueIsIngController : ZDViewController { private var pageNum : Int = 1 private var emptyView = EmptyView() + private var searchButton = DDButton.dd_initCustom() + private lazy var conditionalSearchTool = ConditionalSearchTool() + override func viewDidLoad() { super.viewDidLoad() dd_navigationBarBackgroundColor = .hex("354683") @@ -1226,6 +1315,16 @@ class RescueIsIngController : ZDViewController { pendingIsIngView.tableView.backgroundColor = .hex("FAFAFA") pendingIsIngView.tableView.delegate = self pendingIsIngView.tableView.dataSource = self + + searchButton.backgroundColor = .hex("2A5094") + searchButton.setImage(UIImage(named: "conditional_search"), for: .normal) + view.addSubview(searchButton) + searchButton.layer.cornerRadius = auto(15) + searchButton.snp.remakeConstraints { make in + make.bottom.equalTo(pendingIsIngView.snp.bottom).offset(-auto(30)) + make.right.equalTo(pendingIsIngView.snp.right).offset(-auto(20)) + make.width.height.equalTo(auto(30)) + } } } diff --git a/OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift b/OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift index af5a604..2881d34 100644 --- a/OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift +++ b/OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift @@ -64,8 +64,8 @@ extension ReviewFailedController { }) refreshRelay - .flatMapLatest { pageNum in - return Observable.zip(RQ.orderList(parameters: OrderListParameters(pageNum: pageNum, queryType: .TO_AUDIT_FAILED)).asObservable(), Observable.just(pageNum)) + .flatMapLatest {[weak self] pageNum in + return Observable.zip(RQ.orderList(parameters: self?.conditionalSearchTool.getParameters(pageNum: pageNum,queryType: .TO_AUDIT_FAILED) ?? OrderListParameters(pageNum: pageNum, queryType: .TO_AUDIT_FAILED)).asObservable(), Observable.just(pageNum)) } .observe(on: MainScheduler.instance) .subscribe(onNext: {[weak self] (response, pageNum) in @@ -118,6 +118,26 @@ extension ReviewFailedController { }) .disposed(by: disposeBag) + searchButton.rx.tap + .subscribe(onNext: {[weak self] _ in + self?.conditionalSearchTool.showSearchViewSub.accept(nil) + }) + .disposed(by: disposeBag) + + conditionalSearchTool.resetSub + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + self?.reviewFailedView.tableView.mj_header?.beginRefreshing() + }) + .disposed(by: disposeBag) + + conditionalSearchTool.searchSub + .observe(on: MainScheduler.instance) + .subscribe(onNext: {[weak self] _ in + self?.reviewFailedView.tableView.mj_header?.beginRefreshing() + }) + .disposed(by: disposeBag) + preRefreshRelay .observe(on: MainScheduler.instance) .subscribe(onNext: {[weak self] _ in @@ -199,6 +219,9 @@ open class ReviewFailedController : ZDViewController { private let pendingView = MessageView() private var emptyView = EmptyView() + private var searchButton = DDButton.dd_initCustom() + private lazy var conditionalSearchTool = ConditionalSearchTool() + public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) MCOUNT.reviewFailedCountRelay @@ -261,6 +284,11 @@ open class ReviewFailedController : ZDViewController { make.height.equalTo(40) make.width.greaterThanOrEqualTo(40) } + + searchButton.backgroundColor = .hex("2A5094") + searchButton.setImage(UIImage(named: "conditional_search"), for: .normal) + view.addSubview(searchButton) + } open override func viewSafeAreaInsetsDidChange() { @@ -272,6 +300,13 @@ open class ReviewFailedController : ZDViewController { make.left.right.equalToSuperview() make.bottom.equalTo(-view.safeAreaInsets.bottom) } + + searchButton.layer.cornerRadius = auto(15) + searchButton.snp.remakeConstraints { make in + make.bottom.equalToSuperview().offset(-auto(30) - view.safeAreaInsets.bottom) + make.right.equalToSuperview().offset(-auto(20)) + make.width.height.equalTo(auto(30)) + } } } diff --git a/OrderScheduling/Strings/EntryStrings.swift b/OrderScheduling/Strings/EntryStrings.swift index 7b1f8d0..88d175e 100644 --- a/OrderScheduling/Strings/EntryStrings.swift +++ b/OrderScheduling/Strings/EntryStrings.swift @@ -26,3 +26,5 @@ public let vehicleLogoutEntry = "vehicleLogoutEntry" public let notObtainUserPermissionsEntry = "notObtainPermissionsEntry" public let vehicleMonitoringConfigEntry = "vehicleMonitoringConfigEntry" + +public let conitionalSearchEntry = "conitionalSearchEntry" diff --git a/fastlane/report.xml b/fastlane/report.xml index f173b6e..f38bebd 100644 --- a/fastlane/report.xml +++ b/fastlane/report.xml @@ -5,17 +5,17 @@ - + - + - +