搜索功能

This commit is contained in:
DDIsFriend
2024-01-03 11:54:31 +08:00
parent 527dc9f97c
commit d2268e3f0a
33 changed files with 887 additions and 67 deletions

View File

@@ -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 = "<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>"; };
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>"; };
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>"; };
@@ -513,6 +517,8 @@
79DD0DA92A9481BC00768FE7 /* NotificationAuthTool.swift */,
79DD0DB02A94B3DB00768FE7 /* EmptyView.swift */,
79E434242AA1919400AEB16C /* CommonAlertView.swift */,
7940277B2B3E9ECB00EC52D4 /* ConditionalSearchView.swift */,
7940277D2B43B9B600EC52D4 /* ConditionalSearchTool.swift */,
);
path = View;
sourceTree = "<group>";
@@ -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 */,

View File

@@ -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">
</BreakpointContent>
@@ -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">
</BreakpointContent>
@@ -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">
</BreakpointContent>
@@ -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">
</BreakpointContent>
@@ -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">
</BreakpointContent>
@@ -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">
</BreakpointContent>
@@ -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">
</BreakpointContent>
@@ -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">
</BreakpointContent>
@@ -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">
</BreakpointContent>
@@ -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">
</BreakpointContent>
@@ -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">
</BreakpointContent>
@@ -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">
</BreakpointContent>
@@ -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">
</BreakpointContent>
@@ -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">
<Locations>
@@ -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">
</BreakpointContent>
@@ -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">
</BreakpointContent>
@@ -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">
</BreakpointContent>
@@ -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">
</BreakpointContent>
@@ -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">
</BreakpointContent>
@@ -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">
</BreakpointContent>
@@ -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">
<Locations>
@@ -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">
<Locations>
@@ -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">
</BreakpointContent>
@@ -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">
<Locations>
@@ -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">
</BreakpointContent>
</BreakpointProxy>
@@ -5644,5 +5644,21 @@
landmarkType = "7">
</BreakpointContent>
</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>
</Bucket>

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 707 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 711 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -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"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 559 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 711 B

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

View File

@@ -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"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 B

View 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)
}
}

View 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)
}
}

View File

@@ -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)
}

View File

@@ -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()
}
}

View File

@@ -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))
}
}
}

View File

@@ -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 {

View File

@@ -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<OrderListDataModel>.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))
}
}
}

View File

@@ -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))
}
}
}

View File

@@ -26,3 +26,5 @@ public let vehicleLogoutEntry = "vehicleLogoutEntry"
public let notObtainUserPermissionsEntry = "notObtainPermissionsEntry"
public let vehicleMonitoringConfigEntry = "vehicleMonitoringConfigEntry"
public let conitionalSearchEntry = "conitionalSearchEntry"

View File

@@ -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 classname="fastlane.lanes" name="1: gym" time="61.883672">
<testcase classname="fastlane.lanes" name="1: gym" time="59.624824">
</testcase>
<testcase classname="fastlane.lanes" name="2: pgyer" time="16.781955">
<testcase classname="fastlane.lanes" name="2: pgyer" time="10.149935">
</testcase>