搜索功能
@@ -36,6 +36,8 @@
|
|||||||
792EE0952AA74E0A00A212AB /* PushNotiCommonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 792EE0942AA74E0A00A212AB /* PushNotiCommonView.swift */; };
|
792EE0952AA74E0A00A212AB /* PushNotiCommonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 792EE0942AA74E0A00A212AB /* PushNotiCommonView.swift */; };
|
||||||
792EE0972AA74E5800A212AB /* PushNotiCommonTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 792EE0962AA74E5800A212AB /* PushNotiCommonTool.swift */; };
|
792EE0972AA74E5800A212AB /* PushNotiCommonTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 792EE0962AA74E5800A212AB /* PushNotiCommonTool.swift */; };
|
||||||
7940277A2B3BD46B00EC52D4 /* VehicleMonitoringConfigView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794027792B3BD46B00EC52D4 /* VehicleMonitoringConfigView.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 */; };
|
794FBB0D2A8F040D00D57BB8 /* HistoryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB0C2A8F040D00D57BB8 /* HistoryController.swift */; };
|
||||||
794FBB142A8F045F00D57BB8 /* MineController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB132A8F045F00D57BB8 /* MineController.swift */; };
|
794FBB142A8F045F00D57BB8 /* MineController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB132A8F045F00D57BB8 /* MineController.swift */; };
|
||||||
794FBB162A8F1A3300D57BB8 /* RescuePhotoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794FBB152A8F1A3300D57BB8 /* RescuePhotoController.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 = "<group>"; };
|
792EE0942AA74E0A00A212AB /* PushNotiCommonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushNotiCommonView.swift; sourceTree = "<group>"; };
|
||||||
792EE0962AA74E5800A212AB /* PushNotiCommonTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushNotiCommonTool.swift; sourceTree = "<group>"; };
|
792EE0962AA74E5800A212AB /* PushNotiCommonTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushNotiCommonTool.swift; sourceTree = "<group>"; };
|
||||||
794027792B3BD46B00EC52D4 /* VehicleMonitoringConfigView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VehicleMonitoringConfigView.swift; sourceTree = "<group>"; };
|
794027792B3BD46B00EC52D4 /* VehicleMonitoringConfigView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VehicleMonitoringConfigView.swift; sourceTree = "<group>"; };
|
||||||
|
7940277B2B3E9ECB00EC52D4 /* ConditionalSearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConditionalSearchView.swift; sourceTree = "<group>"; };
|
||||||
|
7940277D2B43B9B600EC52D4 /* ConditionalSearchTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConditionalSearchTool.swift; sourceTree = "<group>"; };
|
||||||
794FBB0C2A8F040D00D57BB8 /* HistoryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoryController.swift; sourceTree = "<group>"; };
|
794FBB0C2A8F040D00D57BB8 /* HistoryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoryController.swift; sourceTree = "<group>"; };
|
||||||
794FBB132A8F045F00D57BB8 /* MineController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MineController.swift; sourceTree = "<group>"; };
|
794FBB132A8F045F00D57BB8 /* MineController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MineController.swift; sourceTree = "<group>"; };
|
||||||
794FBB152A8F1A3300D57BB8 /* RescuePhotoController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RescuePhotoController.swift; sourceTree = "<group>"; };
|
794FBB152A8F1A3300D57BB8 /* RescuePhotoController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RescuePhotoController.swift; sourceTree = "<group>"; };
|
||||||
@@ -513,6 +517,8 @@
|
|||||||
79DD0DA92A9481BC00768FE7 /* NotificationAuthTool.swift */,
|
79DD0DA92A9481BC00768FE7 /* NotificationAuthTool.swift */,
|
||||||
79DD0DB02A94B3DB00768FE7 /* EmptyView.swift */,
|
79DD0DB02A94B3DB00768FE7 /* EmptyView.swift */,
|
||||||
79E434242AA1919400AEB16C /* CommonAlertView.swift */,
|
79E434242AA1919400AEB16C /* CommonAlertView.swift */,
|
||||||
|
7940277B2B3E9ECB00EC52D4 /* ConditionalSearchView.swift */,
|
||||||
|
7940277D2B43B9B600EC52D4 /* ConditionalSearchTool.swift */,
|
||||||
);
|
);
|
||||||
path = View;
|
path = View;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -983,6 +989,7 @@
|
|||||||
794FBB212A934E0A00D57BB8 /* AppUpdateView.swift in Sources */,
|
794FBB212A934E0A00D57BB8 /* AppUpdateView.swift in Sources */,
|
||||||
79DD0DB42A95F00B00768FE7 /* Extension.swift in Sources */,
|
79DD0DB42A95F00B00768FE7 /* Extension.swift in Sources */,
|
||||||
791887802A7CE6F1007EA0C1 /* UserDefaultStrings.swift in Sources */,
|
791887802A7CE6F1007EA0C1 /* UserDefaultStrings.swift in Sources */,
|
||||||
|
7940277E2B43B9B600EC52D4 /* ConditionalSearchTool.swift in Sources */,
|
||||||
79FB75EC2A988EC000DB00A4 /* MessageCenterTool.swift in Sources */,
|
79FB75EC2A988EC000DB00A4 /* MessageCenterTool.swift in Sources */,
|
||||||
79FB76152A9DEE7400DB00A4 /* RefuseOrderConfirmView.swift in Sources */,
|
79FB76152A9DEE7400DB00A4 /* RefuseOrderConfirmView.swift in Sources */,
|
||||||
79FB76262A9F0A0000DB00A4 /* BackgroundTask.swift in Sources */,
|
79FB76262A9F0A0000DB00A4 /* BackgroundTask.swift in Sources */,
|
||||||
@@ -1011,6 +1018,7 @@
|
|||||||
79CECC122A89BD1A00B95D8B /* MessageCenterController.swift in Sources */,
|
79CECC122A89BD1A00B95D8B /* MessageCenterController.swift in Sources */,
|
||||||
794FBB1F2A92F7C300D57BB8 /* WebViewTool.swift in Sources */,
|
794FBB1F2A92F7C300D57BB8 /* WebViewTool.swift in Sources */,
|
||||||
791887822A7CE71D007EA0C1 /* AppKeyStrings.swift in Sources */,
|
791887822A7CE71D007EA0C1 /* AppKeyStrings.swift in Sources */,
|
||||||
|
7940277C2B3E9ECB00EC52D4 /* ConditionalSearchView.swift in Sources */,
|
||||||
79CB07CC2AA8465A00154B61 /* UserPermission.swift in Sources */,
|
79CB07CC2AA8465A00154B61 /* UserPermission.swift in Sources */,
|
||||||
79CECC282A8CADEA00B95D8B /* VehicleMonitoringVideoDetailController.swift in Sources */,
|
79CECC282A8CADEA00B95D8B /* VehicleMonitoringVideoDetailController.swift in Sources */,
|
||||||
792EE0972AA74E5800A212AB /* PushNotiCommonTool.swift in Sources */,
|
792EE0972AA74E5800A212AB /* PushNotiCommonTool.swift in Sources */,
|
||||||
|
|||||||
@@ -427,8 +427,8 @@
|
|||||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "1010"
|
startingLineNumber = "1070"
|
||||||
endingLineNumber = "1010"
|
endingLineNumber = "1070"
|
||||||
landmarkName = "collectionView(_:cellForItemAt:)"
|
landmarkName = "collectionView(_:cellForItemAt:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -1221,8 +1221,8 @@
|
|||||||
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
|
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "285"
|
startingLineNumber = "320"
|
||||||
endingLineNumber = "285"
|
endingLineNumber = "320"
|
||||||
landmarkName = "reloadData()"
|
landmarkName = "reloadData()"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -1285,8 +1285,8 @@
|
|||||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "247"
|
startingLineNumber = "267"
|
||||||
endingLineNumber = "247"
|
endingLineNumber = "267"
|
||||||
landmarkName = "entry(model:remarkId:)"
|
landmarkName = "entry(model:remarkId:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -2045,8 +2045,8 @@
|
|||||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "1021"
|
startingLineNumber = "1081"
|
||||||
endingLineNumber = "1021"
|
endingLineNumber = "1081"
|
||||||
landmarkName = "collectionView(_:didSelectItemAt:)"
|
landmarkName = "collectionView(_:didSelectItemAt:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -2093,8 +2093,8 @@
|
|||||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "322"
|
startingLineNumber = "342"
|
||||||
endingLineNumber = "322"
|
endingLineNumber = "342"
|
||||||
landmarkName = "addActions()"
|
landmarkName = "addActions()"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -2109,8 +2109,8 @@
|
|||||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "311"
|
startingLineNumber = "331"
|
||||||
endingLineNumber = "311"
|
endingLineNumber = "331"
|
||||||
landmarkName = "addActions()"
|
landmarkName = "addActions()"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -2125,8 +2125,8 @@
|
|||||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "313"
|
startingLineNumber = "333"
|
||||||
endingLineNumber = "313"
|
endingLineNumber = "333"
|
||||||
landmarkName = "addActions()"
|
landmarkName = "addActions()"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -2284,8 +2284,8 @@
|
|||||||
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
|
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "124"
|
startingLineNumber = "144"
|
||||||
endingLineNumber = "124"
|
endingLineNumber = "144"
|
||||||
landmarkName = "addActions()"
|
landmarkName = "addActions()"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -2380,8 +2380,8 @@
|
|||||||
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
|
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "284"
|
startingLineNumber = "319"
|
||||||
endingLineNumber = "284"
|
endingLineNumber = "319"
|
||||||
landmarkName = "reloadData()"
|
landmarkName = "reloadData()"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -2396,8 +2396,8 @@
|
|||||||
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
|
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "283"
|
startingLineNumber = "318"
|
||||||
endingLineNumber = "283"
|
endingLineNumber = "318"
|
||||||
landmarkName = "reloadData()"
|
landmarkName = "reloadData()"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -2412,8 +2412,8 @@
|
|||||||
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
|
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "231"
|
startingLineNumber = "254"
|
||||||
endingLineNumber = "231"
|
endingLineNumber = "254"
|
||||||
landmarkName = "viewDidLoad()"
|
landmarkName = "viewDidLoad()"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -2428,8 +2428,8 @@
|
|||||||
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
|
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "225"
|
startingLineNumber = "248"
|
||||||
endingLineNumber = "225"
|
endingLineNumber = "248"
|
||||||
landmarkName = "viewDidLoad()"
|
landmarkName = "viewDidLoad()"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -3003,8 +3003,8 @@
|
|||||||
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
|
filePath = "OrderScheduling/ReviewFailed/ViewController/ReviewFailedController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "209"
|
startingLineNumber = "232"
|
||||||
endingLineNumber = "209"
|
endingLineNumber = "232"
|
||||||
landmarkName = "init(nibName:bundle:)"
|
landmarkName = "init(nibName:bundle:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -3419,8 +3419,8 @@
|
|||||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "957"
|
startingLineNumber = "1017"
|
||||||
endingLineNumber = "957"
|
endingLineNumber = "1017"
|
||||||
landmarkName = "tableView(_:cellForRowAt:)"
|
landmarkName = "tableView(_:cellForRowAt:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
<Locations>
|
<Locations>
|
||||||
@@ -3467,8 +3467,8 @@
|
|||||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "962"
|
startingLineNumber = "1022"
|
||||||
endingLineNumber = "962"
|
endingLineNumber = "1022"
|
||||||
landmarkName = "tableView(_:cellForRowAt:)"
|
landmarkName = "tableView(_:cellForRowAt:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -3819,8 +3819,8 @@
|
|||||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "204"
|
startingLineNumber = "224"
|
||||||
endingLineNumber = "204"
|
endingLineNumber = "224"
|
||||||
landmarkName = "addActions()"
|
landmarkName = "addActions()"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -3835,8 +3835,8 @@
|
|||||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "211"
|
startingLineNumber = "231"
|
||||||
endingLineNumber = "211"
|
endingLineNumber = "231"
|
||||||
landmarkName = "addActions()"
|
landmarkName = "addActions()"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -3883,8 +3883,8 @@
|
|||||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "349"
|
startingLineNumber = "389"
|
||||||
endingLineNumber = "349"
|
endingLineNumber = "389"
|
||||||
landmarkName = "addActions()"
|
landmarkName = "addActions()"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -3899,8 +3899,8 @@
|
|||||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "359"
|
startingLineNumber = "399"
|
||||||
endingLineNumber = "359"
|
endingLineNumber = "399"
|
||||||
landmarkName = "addActions()"
|
landmarkName = "addActions()"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -3915,8 +3915,8 @@
|
|||||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "290"
|
startingLineNumber = "310"
|
||||||
endingLineNumber = "290"
|
endingLineNumber = "310"
|
||||||
landmarkName = "addActions()"
|
landmarkName = "addActions()"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -4423,8 +4423,8 @@
|
|||||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "1951"
|
startingLineNumber = "2050"
|
||||||
endingLineNumber = "1951"
|
endingLineNumber = "2050"
|
||||||
landmarkName = "init(style:reuseIdentifier:)"
|
landmarkName = "init(style:reuseIdentifier:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
<Locations>
|
<Locations>
|
||||||
@@ -4471,8 +4471,8 @@
|
|||||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "1958"
|
startingLineNumber = "2057"
|
||||||
endingLineNumber = "1958"
|
endingLineNumber = "2057"
|
||||||
landmarkName = "init(style:reuseIdentifier:)"
|
landmarkName = "init(style:reuseIdentifier:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
<Locations>
|
<Locations>
|
||||||
@@ -4519,8 +4519,8 @@
|
|||||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "636"
|
startingLineNumber = "696"
|
||||||
endingLineNumber = "636"
|
endingLineNumber = "696"
|
||||||
landmarkName = "tableView(_:cellForRowAt:)"
|
landmarkName = "tableView(_:cellForRowAt:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@@ -4599,8 +4599,8 @@
|
|||||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "949"
|
startingLineNumber = "1009"
|
||||||
endingLineNumber = "949"
|
endingLineNumber = "1009"
|
||||||
landmarkName = "tableView(_:cellForRowAt:)"
|
landmarkName = "tableView(_:cellForRowAt:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
<Locations>
|
<Locations>
|
||||||
@@ -4649,7 +4649,7 @@
|
|||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "35"
|
startingLineNumber = "35"
|
||||||
endingLineNumber = "35"
|
endingLineNumber = "35"
|
||||||
landmarkName = "post(urlString:parameters:encoding:headers:responseType:completionHandler:)"
|
landmarkName = "get(urlString:parameters:encoding:headers:responseType:completionHandler:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
</BreakpointProxy>
|
</BreakpointProxy>
|
||||||
@@ -5644,5 +5644,21 @@
|
|||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
</BreakpointProxy>
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
uuid = "E5FAD01D-72CD-4C9F-BCF3-2BE63BC37B2C"
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "OrderScheduling/Global/Tool/CustomPicker.swift"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "37"
|
||||||
|
endingLineNumber = "37"
|
||||||
|
landmarkName = "showDate(minDate:maxDate:selectDate:resultHandler:)"
|
||||||
|
landmarkType = "7">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
</Breakpoints>
|
</Breakpoints>
|
||||||
</Bucket>
|
</Bucket>
|
||||||
|
|||||||
BIN
OrderScheduling/Assets.xcassets/Common/.DS_Store
vendored
|
Before Width: | Height: | Size: 432 B |
|
Before Width: | Height: | Size: 707 B |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 422 B |
|
Before Width: | Height: | Size: 711 B |
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
{
|
{
|
||||||
"images" : [
|
"images" : [
|
||||||
{
|
{
|
||||||
"filename" : "dispatchOrder_down.png",
|
"filename" : "conditional_search.png",
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"scale" : "1x"
|
"scale" : "1x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "dispatchOrder_down@2x.png",
|
"filename" : "conditional_search@2x.png",
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"scale" : "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "dispatchOrder_down@3x.png",
|
"filename" : "conditional_search@3x.png",
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"scale" : "3x"
|
"scale" : "3x"
|
||||||
}
|
}
|
||||||
BIN
OrderScheduling/Assets.xcassets/ConditionalSearch/conditional_search.imageset/conditional_search.png
vendored
Normal file
|
After Width: | Height: | Size: 339 B |
|
After Width: | Height: | Size: 559 B |
|
After Width: | Height: | Size: 711 B |
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 148 B |
|
After Width: | Height: | Size: 176 B |
|
After Width: | Height: | Size: 202 B |
@@ -1,17 +1,17 @@
|
|||||||
{
|
{
|
||||||
"images" : [
|
"images" : [
|
||||||
{
|
{
|
||||||
"filename" : "dispatchOrder_up.png",
|
"filename" : "conditional_search_exit.png",
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"scale" : "1x"
|
"scale" : "1x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "dispatchOrder_up@2x.png",
|
"filename" : "conditional_search_exit@2x.png",
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"scale" : "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "dispatchOrder_up@3x.png",
|
"filename" : "conditional_search_exit@3x.png",
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"scale" : "3x"
|
"scale" : "3x"
|
||||||
}
|
}
|
||||||
|
After Width: | Height: | Size: 316 B |
|
After Width: | Height: | Size: 377 B |
|
After Width: | Height: | Size: 462 B |
133
OrderScheduling/Common/View/ConditionalSearchTool.swift
Normal file
@@ -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<ControlEvent<Void>?>.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<Any?>.create(bufferSize: 1)
|
||||||
|
public var searchSub = ReplayRelay<Any?>.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)
|
||||||
|
}
|
||||||
|
}
|
||||||
338
OrderScheduling/Common/View/ConditionalSearchView.swift
Normal file
@@ -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)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -450,6 +450,50 @@ open class Entry {
|
|||||||
SwiftEntryKit.display(entry: view, using: attributes)
|
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 {
|
public func isCurrentlyDisplaying(entryNamed name: String? = nil) -> Bool {
|
||||||
return SwiftEntryKit.isCurrentlyDisplaying(entryNamed: name)
|
return SwiftEntryKit.isCurrentlyDisplaying(entryNamed: name)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,4 +28,16 @@ open class CustomPicker {
|
|||||||
}
|
}
|
||||||
pickerView.show()
|
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()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ extension HistoryItemController {
|
|||||||
|
|
||||||
refreshRelay
|
refreshRelay
|
||||||
.flatMapLatest {[weak self] pageNum in
|
.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)
|
.observe(on: MainScheduler.instance)
|
||||||
.subscribe(onNext: {[weak self] (response, pageNum) in
|
.subscribe(onNext: {[weak self] (response, pageNum) in
|
||||||
@@ -132,6 +132,26 @@ extension HistoryItemController {
|
|||||||
})
|
})
|
||||||
.disposed(by: disposeBag)
|
.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()
|
historyItemView.tableView.mj_header?.beginRefreshing()
|
||||||
|
|
||||||
USERP.userPermissionRelay
|
USERP.userPermissionRelay
|
||||||
@@ -387,6 +407,9 @@ class HistoryItemController : ZDViewController {
|
|||||||
private var type : OrderTypeEnum
|
private var type : OrderTypeEnum
|
||||||
private var emptyView = EmptyView()
|
private var emptyView = EmptyView()
|
||||||
|
|
||||||
|
private var searchButton = DDButton.dd_initCustom()
|
||||||
|
private lazy var conditionalSearchTool = ConditionalSearchTool()
|
||||||
|
|
||||||
public init(type:OrderTypeEnum) {
|
public init(type:OrderTypeEnum) {
|
||||||
self.type = type
|
self.type = type
|
||||||
super.init(nibName: nil, bundle: nil)
|
super.init(nibName: nil, bundle: nil)
|
||||||
@@ -420,6 +443,16 @@ class HistoryItemController : ZDViewController {
|
|||||||
|
|
||||||
historyItemView.tableView.delegate = self
|
historyItemView.tableView.delegate = self
|
||||||
historyItemView.tableView.dataSource = 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))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,77 @@ public struct OrderListParameters : Encodable {
|
|||||||
var pageNum : Int
|
var pageNum : Int
|
||||||
var pageSize : Int = 12
|
var pageSize : Int = 12
|
||||||
var queryType : OrderTypeEnum
|
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 {
|
public struct AcceptDispatchParameters : Encodable {
|
||||||
|
|||||||
@@ -96,8 +96,8 @@ extension RescuePendingOrderController {
|
|||||||
})
|
})
|
||||||
|
|
||||||
refreshRelay
|
refreshRelay
|
||||||
.flatMapLatest { pageNum in
|
.flatMapLatest {[weak self] pageNum in
|
||||||
return Observable.zip(RQ.orderList(parameters: OrderListParameters(pageNum: pageNum, queryType: .TO_ACCEPT_DISPATCH)).asObservable(), Observable.just(pageNum))
|
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)
|
.observe(on: MainScheduler.instance)
|
||||||
.subscribe(onNext: {[weak self] (response, pageNum) in
|
.subscribe(onNext: {[weak self] (response, pageNum) in
|
||||||
@@ -198,6 +198,26 @@ extension RescuePendingOrderController {
|
|||||||
})
|
})
|
||||||
.disposed(by: disposeBag)
|
.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
|
USER.refreshTokenSub
|
||||||
.observe(on: MainScheduler.instance)
|
.observe(on: MainScheduler.instance)
|
||||||
.subscribe(onNext: {[weak self] _ in
|
.subscribe(onNext: {[weak self] _ in
|
||||||
@@ -296,8 +316,8 @@ extension RescuePendingDispatchController {
|
|||||||
})
|
})
|
||||||
|
|
||||||
refreshRelay
|
refreshRelay
|
||||||
.flatMapLatest { pageNum in
|
.flatMapLatest {[weak self] pageNum in
|
||||||
return Observable.zip(RQ.orderList(parameters: OrderListParameters(pageNum: pageNum, queryType: .TO_DISPATCH_VEHICLE)).asObservable(), Observable.just(pageNum))
|
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)
|
.observe(on: MainScheduler.instance)
|
||||||
.subscribe(onNext: {[weak self] (response, pageNum) in
|
.subscribe(onNext: {[weak self] (response, pageNum) in
|
||||||
@@ -336,6 +356,26 @@ extension RescuePendingDispatchController {
|
|||||||
})
|
})
|
||||||
.disposed(by: disposeBag)
|
.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
|
USER.refreshTokenSub
|
||||||
.observe(on: MainScheduler.instance)
|
.observe(on: MainScheduler.instance)
|
||||||
.subscribe(onNext: {[weak self] _ in
|
.subscribe(onNext: {[weak self] _ in
|
||||||
@@ -365,8 +405,8 @@ extension RescueIsIngController {
|
|||||||
})
|
})
|
||||||
|
|
||||||
refreshRelay
|
refreshRelay
|
||||||
.flatMapLatest { pageNum in
|
.flatMapLatest {[weak self] pageNum in
|
||||||
return Observable.zip(RQ.orderList(parameters: OrderListParameters(pageNum: pageNum, queryType: .TO_RESCUE)).asObservable(), Observable.just(pageNum))
|
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)
|
.observe(on: MainScheduler.instance)
|
||||||
.subscribe(onNext: {[weak self] (response, pageNum) in
|
.subscribe(onNext: {[weak self] (response, pageNum) in
|
||||||
@@ -405,6 +445,26 @@ extension RescueIsIngController {
|
|||||||
})
|
})
|
||||||
.disposed(by: disposeBag)
|
.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
|
USER.refreshTokenSub
|
||||||
.observe(on: MainScheduler.instance)
|
.observe(on: MainScheduler.instance)
|
||||||
.subscribe(onNext: {[weak self] _ in
|
.subscribe(onNext: {[weak self] _ in
|
||||||
@@ -1127,6 +1187,9 @@ class RescuePendingOrderController : ZDViewController {
|
|||||||
private var acceptOrderRelay = ReplayRelay<OrderListDataModel>.create(bufferSize: 1)
|
private var acceptOrderRelay = ReplayRelay<OrderListDataModel>.create(bufferSize: 1)
|
||||||
private var emptyView = EmptyView()
|
private var emptyView = EmptyView()
|
||||||
|
|
||||||
|
private var searchButton = DDButton.dd_initCustom()
|
||||||
|
private lazy var conditionalSearchTool = ConditionalSearchTool()
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
dd_navigationBarBackgroundColor = .hex("354683")
|
dd_navigationBarBackgroundColor = .hex("354683")
|
||||||
@@ -1152,6 +1215,16 @@ class RescuePendingOrderController : ZDViewController {
|
|||||||
pendingOrderView.tableView.backgroundColor = .hex("FAFAFA")
|
pendingOrderView.tableView.backgroundColor = .hex("FAFAFA")
|
||||||
pendingOrderView.tableView.delegate = self
|
pendingOrderView.tableView.delegate = self
|
||||||
pendingOrderView.tableView.dataSource = 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 pageNum : Int = 1
|
||||||
private var emptyView = EmptyView()
|
private var emptyView = EmptyView()
|
||||||
|
|
||||||
|
private var searchButton = DDButton.dd_initCustom()
|
||||||
|
private lazy var conditionalSearchTool = ConditionalSearchTool()
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
dd_navigationBarBackgroundColor = .hex("354683")
|
dd_navigationBarBackgroundColor = .hex("354683")
|
||||||
@@ -1189,6 +1265,16 @@ class RescuePendingDispatchController : ZDViewController {
|
|||||||
pendingDispatchView.tableView.backgroundColor = .hex("FAFAFA")
|
pendingDispatchView.tableView.backgroundColor = .hex("FAFAFA")
|
||||||
pendingDispatchView.tableView.delegate = self
|
pendingDispatchView.tableView.delegate = self
|
||||||
pendingDispatchView.tableView.dataSource = 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 pageNum : Int = 1
|
||||||
private var emptyView = EmptyView()
|
private var emptyView = EmptyView()
|
||||||
|
|
||||||
|
private var searchButton = DDButton.dd_initCustom()
|
||||||
|
private lazy var conditionalSearchTool = ConditionalSearchTool()
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
dd_navigationBarBackgroundColor = .hex("354683")
|
dd_navigationBarBackgroundColor = .hex("354683")
|
||||||
@@ -1226,6 +1315,16 @@ class RescueIsIngController : ZDViewController {
|
|||||||
pendingIsIngView.tableView.backgroundColor = .hex("FAFAFA")
|
pendingIsIngView.tableView.backgroundColor = .hex("FAFAFA")
|
||||||
pendingIsIngView.tableView.delegate = self
|
pendingIsIngView.tableView.delegate = self
|
||||||
pendingIsIngView.tableView.dataSource = 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))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -64,8 +64,8 @@ extension ReviewFailedController {
|
|||||||
})
|
})
|
||||||
|
|
||||||
refreshRelay
|
refreshRelay
|
||||||
.flatMapLatest { pageNum in
|
.flatMapLatest {[weak self] pageNum in
|
||||||
return Observable.zip(RQ.orderList(parameters: OrderListParameters(pageNum: pageNum, queryType: .TO_AUDIT_FAILED)).asObservable(), Observable.just(pageNum))
|
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)
|
.observe(on: MainScheduler.instance)
|
||||||
.subscribe(onNext: {[weak self] (response, pageNum) in
|
.subscribe(onNext: {[weak self] (response, pageNum) in
|
||||||
@@ -118,6 +118,26 @@ extension ReviewFailedController {
|
|||||||
})
|
})
|
||||||
.disposed(by: disposeBag)
|
.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
|
preRefreshRelay
|
||||||
.observe(on: MainScheduler.instance)
|
.observe(on: MainScheduler.instance)
|
||||||
.subscribe(onNext: {[weak self] _ in
|
.subscribe(onNext: {[weak self] _ in
|
||||||
@@ -199,6 +219,9 @@ open class ReviewFailedController : ZDViewController {
|
|||||||
private let pendingView = MessageView()
|
private let pendingView = MessageView()
|
||||||
private var emptyView = EmptyView()
|
private var emptyView = EmptyView()
|
||||||
|
|
||||||
|
private var searchButton = DDButton.dd_initCustom()
|
||||||
|
private lazy var conditionalSearchTool = ConditionalSearchTool()
|
||||||
|
|
||||||
public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
|
public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
|
||||||
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
|
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
|
||||||
MCOUNT.reviewFailedCountRelay
|
MCOUNT.reviewFailedCountRelay
|
||||||
@@ -261,6 +284,11 @@ open class ReviewFailedController : ZDViewController {
|
|||||||
make.height.equalTo(40)
|
make.height.equalTo(40)
|
||||||
make.width.greaterThanOrEqualTo(40)
|
make.width.greaterThanOrEqualTo(40)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
searchButton.backgroundColor = .hex("2A5094")
|
||||||
|
searchButton.setImage(UIImage(named: "conditional_search"), for: .normal)
|
||||||
|
view.addSubview(searchButton)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open override func viewSafeAreaInsetsDidChange() {
|
open override func viewSafeAreaInsetsDidChange() {
|
||||||
@@ -272,6 +300,13 @@ open class ReviewFailedController : ZDViewController {
|
|||||||
make.left.right.equalToSuperview()
|
make.left.right.equalToSuperview()
|
||||||
make.bottom.equalTo(-view.safeAreaInsets.bottom)
|
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))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,3 +26,5 @@ public let vehicleLogoutEntry = "vehicleLogoutEntry"
|
|||||||
public let notObtainUserPermissionsEntry = "notObtainPermissionsEntry"
|
public let notObtainUserPermissionsEntry = "notObtainPermissionsEntry"
|
||||||
|
|
||||||
public let vehicleMonitoringConfigEntry = "vehicleMonitoringConfigEntry"
|
public let vehicleMonitoringConfigEntry = "vehicleMonitoringConfigEntry"
|
||||||
|
|
||||||
|
public let conitionalSearchEntry = "conitionalSearchEntry"
|
||||||
|
|||||||
@@ -5,17 +5,17 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="0: default_platform" time="0.000178">
|
<testcase classname="fastlane.lanes" name="0: default_platform" time="0.000201">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="1: gym" time="61.883672">
|
<testcase classname="fastlane.lanes" name="1: gym" time="59.624824">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="2: pgyer" time="16.781955">
|
<testcase classname="fastlane.lanes" name="2: pgyer" time="10.149935">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|||||||