Files
OrderScheduling/OrderScheduling/Rescue/ViewController/RescueController.swift
2025-03-25 15:26:30 +08:00

2231 lines
95 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// RescueController.swift
// OrderScheduling
//
// Created by on 2023/8/4.
//
import Foundation
import JXCategoryView
import SnapKit
import DDCategoryKit_Private
import DDAutoUIKit_Private
import DDControlsKit_Private
import RxSwift
import RxRelay
import MJRefresh
import DDWebImageKit_Private
import ESTabBarController_swift
import DDUtilsSwiftKit_Private
import DDAudioPlayerKit_Private
import TYCyclePagerView
// MARK: Action
extension RescueController {
func addActions() {
MCOUNT.messageCountRelay
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] count in
if count > 0 {
self?.messageView.countLabel.isHidden = false
self?.messageView.countLabel.text = String(count)
self?.messageView.countLabel.snp.updateConstraints({ make in
make.width.equalTo(20)
})
}else{
self?.messageView.countLabel.isHidden = true
self?.messageView.countLabel.snp.updateConstraints({ make in
make.width.equalTo(0)
})
}
})
.disposed(by: disposeBag)
MCOUNT.pendingCountRelay
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] count in
if count > 0 {
self?.pendingView.countLabel.isHidden = false
self?.pendingView.countLabel.text = String(count)
self?.pendingView.countLabel.snp.updateConstraints({ make in
make.width.equalTo(20)
})
}else{
self?.pendingView.countLabel.isHidden = true
self?.pendingView.countLabel.snp.updateConstraints({ make in
make.width.equalTo(0)
})
}
})
.disposed(by: disposeBag)
messageTapGes.rx.event
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] _ in
MESSAGETOOL.openMessageCenter(by: self?.navigationController)
})
.disposed(by: disposeBag)
pendingTapGes.rx.event
.observe(on: MainScheduler.instance)
.subscribe(onNext: { _ in
WEBTOOL.open(name: .todoList,appending: nil)
})
.disposed(by: disposeBag)
filterButton.rx.tap
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] _ in
if let containerView = self?.categoryView.listContainer as? JXCategoryListContainerView,let selectedIndex = self?.categoryView.selectedIndex {
let key = NSNumber(value: selectedIndex)
let vc = containerView.validListDict[key] as? ConditionalSearchParentController
vc?.conditionalSearchTool.showFilterView()
}
})
.disposed(by: disposeBag)
USER.refreshTokenSub
.subscribe(onNext: {[weak self] _ in
NewTraining.default.newTrainingRelay.accept(nil)
self?.appBannerRelay.accept(nil)
self?.appPushRecordRelay.accept(nil)
})
.disposed(by: disposeBag)
appPushRecordRelay
.flatMapLatest { _ in
return RQ.appPushRecordList()
}
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] response in
if response?.success == true {
var flag = false
if (response?.data?.count ?? 0) > 1 {
flag = true
}
if let model = response?.data?.first {
PushNotiCommonTool.default.open(model: model) {[weak self] in
if flag == true {
self?.appPushRecordRelay.accept(nil)
}
}
}
}else{
self?.view.dd_makeToast(response?.msg)
}
})
.disposed(by: disposeBag)
appBannerRelay
.flatMapLatest { _ in
return RQ.getConfigByCode(parameters: ConfigByCodeParameters(code: "supplierAppBannerConfig"))
}
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] response in
if response?.success == true {
self?.bannerDataSources = response?.data?.bannerConfig ?? []
self?.pagerView.reloadData()
if let count = self?.bannerDataSources.count, count > 0 {
self?.pagerView.snp.updateConstraints({ make in
make.height.equalTo(auto(56))
})
}
}else{
self?.view.dd_makeToast(response?.msg)
}
})
.disposed(by: disposeBag)
// tabBar
preRefreshRelay
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] _ in
NewTraining.default.newTrainingRelay.accept(nil)
self?.appBannerRelay.accept(nil)
self?.appPushRecordRelay.accept(nil)
MCOUNT.newestMessage()
self?.categoryView.reloadData()
})
.disposed(by: disposeBag)
}
}
extension RescueController : TYCyclePagerViewDataSource, TYCyclePagerViewDelegate {
func layout(for pageView: TYCyclePagerView) -> TYCyclePagerViewLayout {
let layout = TYCyclePagerViewLayout()
layout.itemSize = CGSize(width: pageView.width, height: pageView.height)
layout.itemHorizontalCenter = true
return layout
}
func numberOfItems(in pageView: TYCyclePagerView) -> Int {
return bannerDataSources.count
}
func pagerView(_ pagerView: TYCyclePagerView, cellForItemAt index: Int) -> UICollectionViewCell {
let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", for: index) as? TYCyclePagerViewCell
let model = bannerDataSources[index]
if let bannerIcon = model.bannerIcon {
cell?.imageView.dd_setImage(with: URL(string: bannerIcon))
}
return cell!
}
func pagerView(_ pageView: TYCyclePagerView, didSelectedItemCell cell: UICollectionViewCell, at index: Int) {
let model = bannerDataSources[index]
if let linkUrl = model.linkUrl {
let vc = WebViewController.init(showNavBar: false,title: nil,url: linkUrl+"?token=\((USER.token)!)")
navigationController?.pushViewController(vc, animated: true)
}
}
}
extension RescuePendingOrderController {
func addActions() {
pendingOrderView.tableView.mj_header = MJRefreshNormalHeader(refreshingBlock: {[weak self] in
self?.pageNum = 1
self?.refreshRelay.accept(self?.pageNum ?? 1)
})
pendingOrderView.tableView.mj_footer = MJRefreshBackNormalFooter(refreshingBlock: {[weak self] in
self?.pageNum+=1
self?.refreshRelay.accept(self?.pageNum ?? 1)
})
refreshRelay
.flatMapLatest {[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
if response?.success == true {
if pageNum == 1 {
self?.resultArr.removeAll()
self?.pendingOrderView.tableView.mj_footer?.resetNoMoreData()
self?.pendingOrderView.tableView.mj_header?.endRefreshing()
}else{
if response?.data?.isEmpty == false {
self?.pendingOrderView.tableView.mj_footer?.endRefreshing()
}else{
self?.pendingOrderView.tableView.mj_footer?.endRefreshingWithNoMoreData()
}
}
if let array = response?.data {
self?.resultArr.append(contentsOf: array)
}
if self?.resultArr.isEmpty == false {
self?.emptyView.isHidden = true
}else{
self?.emptyView.isHidden = false
}
self?.pendingOrderView.tableView.reloadData()
}else{
if pageNum == 1 {
self?.pendingOrderView.tableView.mj_header?.endRefreshing()
}else{
self?.pendingOrderView.tableView.mj_footer?.endRefreshing()
}
self?.view.dd_makeToast(response?.msg)
}
})
.disposed(by: disposeBag)
refuseOrderConfirmView.cancelButton.rx.tap
.observe(on: MainScheduler.instance)
.subscribe(onNext: { _ in
ENTRY.dismiss(name: refuseOrderConfirmEntry)
})
.disposed(by: disposeBag)
refuseOrderConfirmView.sureButton.rx.tap
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] _ in
ENTRY.dismiss(name: refuseOrderConfirmEntry) {[weak self] in
if let model = self?.refuseOrderModel {
self?.refuseRemarkIdRelay.accept(model)
}
}
})
.disposed(by: disposeBag)
refuseRemarkIdRelay
.observe(on: MainScheduler.instance)
.do(onNext: {[weak self] _ in
self?.view.dd_showHUD()
})
.flatMapLatest { model in
return Observable.zip(RQ.refuseDispatch(parameters: RefuseDispatchParameters(userOrderId: model.userOrderId, taskOrderId: model.taskOrderId)).asObservable(), Observable.just(model))
}
.observe(on: MainScheduler.instance)
.do(onNext: {[weak self] _ in
self?.view.dd_hideHUD()
})
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] (response,model) in
if response?.success == true {
self?.entry(model: model,remarkId: response?.data)
}else{
self?.view.dd_makeToast(response?.msg)
}
})
.disposed(by: disposeBag)
acceptOrderRelay
.flatMapLatest { model in
return Observable.zip(RQ.acceptDispatch(parameters: AcceptDispatchParameters(userOrderId: model.userOrderId, taskOrderId: model.taskOrderId)).asObservable(), Observable.just(model))
}
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] (response,model) in
if response?.success == true {
self?.resultArr.removeAll { _model in
_model.userOrderId == model.userOrderId
}
if self?.resultArr.isEmpty == false {
self?.emptyView.isHidden = true
}else{
self?.emptyView.isHidden = false
}
self?.pendingOrderView.tableView.reloadData()
}else{
self?.view.dd_makeToast(response?.msg)
}
})
.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
self?.pendingOrderView.tableView.mj_header?.beginRefreshing()
})
.disposed(by: disposeBag)
USERP.userPermissionRelay
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] _ in
self?.pendingOrderView.tableView.reloadData()
})
.disposed(by: disposeBag)
}
func entry(model:OrderListDataModel,remarkId:String?) {
let view = RefuseOrderEntryView()
view.exitButton.rx.tap
.observe(on: MainScheduler.instance)
.subscribe(onNext: { _ in
ENTRY.dismiss(name: refuseOrderEntry)
})
.disposed(by: disposeBag)
view.submitButton.rx.tap
.flatMapLatest({[weak self] _ in
return self?.getRefuseParameters(view:view,model: model,remarkId: remarkId) ?? Observable.just(RefuseDispatchParameters(userOrderId: model.userOrderId, taskOrderId: model.taskOrderId))
})
.flatMapLatest({ parameters in
return RQ.refuseDispatch(parameters: parameters)
})
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] response in
if response?.success == true {
self?.resultArr.removeAll { _model in
_model.userOrderId == model.userOrderId
}
if self?.resultArr.isEmpty == false {
self?.emptyView.isHidden = true
}else{
self?.emptyView.isHidden = false
}
self?.pendingOrderView.tableView.reloadData()
ENTRY.dismiss(name: refuseOrderEntry)
}else{
UIApplication.shared.dd_keyWindow.dd_makeToast(response?.msg)
}
})
.disposed(by: disposeBag)
ENTRY.showRefuseOrderEntry(view: view,name: refuseOrderEntry)
}
func getRefuseParameters(view:RefuseOrderEntryView,model:OrderListDataModel,remarkId:String?) -> Observable<RefuseDispatchParameters>{
return Observable.create { ob in
var refuseReasonItem : String?
var refuseReasonDesc : String?
if view.timeView.selectButton.isSelected == true {
refuseReasonItem = RefuseDispatchParameters.RefuseReasonItemEnum.time.rawValue
if view.timeTextFieldView.textFiled.text?.isEmpty == false {
refuseReasonDesc = (view.timeTextFieldView.textFiled.text)!+(view.timeTextFieldView.unitLabel.text)!
}else{
refuseReasonDesc = nil
}
}
if view.distanceView.selectButton.isSelected == true {
refuseReasonItem = RefuseDispatchParameters.RefuseReasonItemEnum.disatance.rawValue
if view.distanceTextFieldView.textFiled.text?.isEmpty == false {
refuseReasonDesc = (view.distanceTextFieldView.textFiled.text)!+(view.distanceTextFieldView.unitLabel.text)!
}else{
refuseReasonDesc = nil
}
}
if view.cannotDispatchView.selectButton.isSelected == true {
refuseReasonItem = RefuseDispatchParameters.RefuseReasonItemEnum.cannotDispatch.rawValue
refuseReasonDesc = view.cannotDispatchTextViewView.textView.text
}
let parameters = RefuseDispatchParameters(userOrderId: model.userOrderId, taskOrderId: model.taskOrderId,remarkId: remarkId,refuseReasonItem: refuseReasonItem,refuseReasonDesc: refuseReasonDesc)
ob.onNext(parameters)
ob.onCompleted()
return Disposables.create()
}
}
}
extension RescuePendingDispatchController {
func addActions() {
pendingDispatchView.tableView.mj_header = MJRefreshNormalHeader(refreshingBlock: {[weak self] in
self?.pageNum = 1
self?.refreshRelay.accept(self?.pageNum ?? 1)
})
pendingDispatchView.tableView.mj_footer = MJRefreshBackNormalFooter(refreshingBlock: {[weak self] in
self?.pageNum+=1
self?.refreshRelay.accept(self?.pageNum ?? 1)
})
refreshRelay
.flatMapLatest {[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
if response?.success == true {
if pageNum == 1 {
self?.resultArr.removeAll()
self?.pendingDispatchView.tableView.mj_footer?.resetNoMoreData()
self?.pendingDispatchView.tableView.mj_header?.endRefreshing()
}else{
if response?.data?.isEmpty == false {
self?.pendingDispatchView.tableView.mj_footer?.endRefreshing()
}else{
self?.pendingDispatchView.tableView.mj_footer?.endRefreshingWithNoMoreData()
}
}
if let array = response?.data {
self?.resultArr.append(contentsOf: array)
}
if self?.resultArr.isEmpty == false {
self?.emptyView.isHidden = true
}else{
self?.emptyView.isHidden = false
}
self?.pendingDispatchView.tableView.reloadData()
}else{
if pageNum == 1 {
self?.pendingDispatchView.tableView.mj_header?.endRefreshing()
}else{
self?.pendingDispatchView.tableView.mj_footer?.endRefreshing()
}
self?.view.dd_makeToast(response?.msg)
}
})
.disposed(by: disposeBag)
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
self?.pendingDispatchView.tableView.mj_header?.beginRefreshing()
})
.disposed(by: disposeBag)
USERP.userPermissionRelay
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] _ in
self?.pendingDispatchView.tableView.reloadData()
})
.disposed(by: disposeBag)
}
}
extension RescueIsIngController {
func addActions() {
pendingIsIngView.tableView.mj_header = MJRefreshNormalHeader(refreshingBlock: {[weak self] in
self?.pageNum = 1
self?.refreshRelay.accept(self?.pageNum ?? 1)
})
pendingIsIngView.tableView.mj_footer = MJRefreshBackNormalFooter(refreshingBlock: {[weak self] in
self?.pageNum+=1
self?.refreshRelay.accept(self?.pageNum ?? 1)
})
refreshRelay
.flatMapLatest {[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
if response?.success == true {
if pageNum == 1 {
self?.resultArr.removeAll()
self?.pendingIsIngView.tableView.mj_footer?.resetNoMoreData()
self?.pendingIsIngView.tableView.mj_header?.endRefreshing()
}else{
if response?.data?.isEmpty == false {
self?.pendingIsIngView.tableView.mj_footer?.endRefreshing()
}else{
self?.pendingIsIngView.tableView.mj_footer?.endRefreshingWithNoMoreData()
}
}
if let array = response?.data {
self?.resultArr.append(contentsOf: array)
}
if self?.resultArr.isEmpty == false {
self?.emptyView.isHidden = true
}else{
self?.emptyView.isHidden = false
}
self?.pendingIsIngView.tableView.reloadData()
}else{
if pageNum == 1 {
self?.pendingIsIngView.tableView.mj_header?.endRefreshing()
}else{
self?.pendingIsIngView.tableView.mj_footer?.endRefreshing()
}
self?.view.dd_makeToast(response?.msg)
}
})
.disposed(by: disposeBag)
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
self?.pendingIsIngView.tableView.mj_header?.beginRefreshing()
})
.disposed(by: disposeBag)
USERP.userPermissionRelay
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] _ in
self?.pendingIsIngView.tableView.reloadData()
})
.disposed(by: disposeBag)
}
}
// MARK: JXCategoryViewDelegate,JXCategoryListContainerViewDelegate
extension RescueController : JXCategoryViewDelegate,JXCategoryListContainerViewDelegate {
func categoryView(_ categoryView: JXCategoryBaseView!, didSelectedItemAt index: Int) {
DispatchQueue.main.async { [weak self] in
if index == 0 {
self?.pendingTableView?.mj_header?.beginRefreshing()
}else if index == 1 {
self?.dispatchTableView?.mj_header?.beginRefreshing()
}else if index == 2 {
self?.isRescueTableView?.mj_header?.beginRefreshing()
}
}
}
func number(ofListsInlistContainerView listContainerView: JXCategoryListContainerView!) -> Int {
return categoryView.titles.count
}
func listContainerView(_ listContainerView: JXCategoryListContainerView!, initListFor index: Int) -> JXCategoryListContentViewDelegate! {
var vc : ConditionalSearchParentController
if index == 0 {
vc = RescuePendingOrderController.init()
pendingTableView = (vc as? RescuePendingOrderController)?.pendingOrderView.tableView
}else if index == 1 {
vc = RescuePendingDispatchController.init()
dispatchTableView = (vc as? RescuePendingDispatchController)?.pendingDispatchView.tableView
}else{
vc = RescueIsIngController.init()
isRescueTableView = (vc as? RescueIsIngController)?.pendingIsIngView.tableView
}
vc.conditionalSearchTool.isFilterSub
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] isFilter in
ConditionalSearchTool.resetFilterButton(self?.filterButton, filterState: isFilter, type: .rescue)
})
.disposed(by: disposeBag)
return vc
}
}
// MARK: UITableViewDelegate,UITableViewDataSource
extension RescuePendingOrderController : UITableViewDelegate,UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return resultArr.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: "cell") as? RescuePendingOrderCell
if cell == nil {
cell = RescuePendingOrderCell(style: .default, reuseIdentifier: "cell")
cell?.line.backgroundColor = .hex("E9E9EA").alpha(0.6)
cell?.merchantTitleLabel.text = "商户名称:"
cell?.serviceTitleLabel.text = "服务地:"
cell?.acceptButton.setTitle("接单", for: .normal)
cell?.refuseButton.setTitle("拒单", for: .normal)
}
//
let model = resultArr[indexPath.row]
cell?.typeLabel.text = model.taskServiceName
cell?.orderNumLabel.text = model.orderCode
cell?.merchantLabel.text = model.contractName
if model.model?.isEmpty == false {
cell?.carTypeTitleLabel.text = "车型:"
cell?.carTypeLabel.text = model.model
cell?.carTypeTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.merchantLabel.snp.bottom).offset(auto(8))
})
}else{
cell?.carTypeTitleLabel.text = nil
cell?.carTypeLabel.text = nil
cell?.carTypeTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.merchantLabel.snp.bottom).offset(0)
})
}
cell?.serviceLabel.text = model.vehiclePointAddress
if model.destinationAddress?.isEmpty == false || (model.taskFlowId != 1) {
cell?.destinationTitleLabel.text = "目的地:"
cell?.destinationLabel.text = model.destinationAddress?.isEmpty == false ? model.destinationAddress : " "
cell?.destinationTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.serviceLabel.snp.bottom).offset(auto(8))
})
}else{
cell?.destinationTitleLabel.text = nil
cell?.destinationLabel.text = nil
cell?.destinationTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.serviceLabel.snp.bottom).offset(0)
})
}
if model.appointTime?.isEmpty == false {
cell?.reserveTitleLabel.text = "预约时间:"
cell?.reserveLabel.text = model.appointTime
cell?.reserveTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.destinationLabel.snp.bottom).offset(auto(8))
})
}else{
cell?.reserveTitleLabel.text = nil
cell?.reserveLabel.text = nil
cell?.reserveTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.destinationLabel.snp.bottom).offset(0)
})
}
cell?.refuseButton.rx.tap
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] _ in
if let refuseOrderConfirmView = self?.refuseOrderConfirmView {
self?.refuseOrderModel = model
ENTRY.showRefuseOrderConfirmEntry(view: refuseOrderConfirmView,name:refuseOrderConfirmEntry)
}
})
.disposed(by: cell!.disposeBag)
cell?.acceptButton.rx.tap
.subscribe(onNext: {[weak self] _ in
self?.acceptOrderRelay.accept(model)
})
.disposed(by: cell!.disposeBag)
if USERP.canRejectDispatchHandle == true {
cell?.refuseButton.isHidden = false
cell?.refuseButton.snp.updateConstraints({ make in
make.right.equalTo(cell!.acceptButton.snp.left).offset(-auto(5))
make.width.equalTo(auto(80))
})
}else{
cell?.refuseButton.isHidden = true
cell?.refuseButton.snp.updateConstraints({ make in
make.right.equalTo(cell!.acceptButton.snp.left).offset(0)
make.width.equalTo(0)
})
}
if USERP.canAcceptDispatchHandle == true {
cell?.acceptButton.isHidden = false
cell?.acceptButton.snp.updateConstraints({ make in
make.width.equalTo(auto(80))
make.right.equalTo(-auto(8))
})
}else{
cell?.acceptButton.isHidden = true
cell?.acceptButton.snp.updateConstraints({ make in
make.width.equalTo(0)
make.right.equalTo(0)
})
}
if USERP.canRejectDispatchHandle == false && USERP.canAcceptDispatchHandle == false {
cell?.acceptButton.snp.updateConstraints({ make in
make.height.equalTo(0)
})
}else{
cell?.acceptButton.snp.updateConstraints({ make in
make.height.equalTo(auto(30))
})
}
return cell!
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let model = resultArr[indexPath.item]
WEBTOOL.open(name: .workOrderDetail, appending: "&queryType=\(OrderTypeEnum.TO_ACCEPT_DISPATCH.rawValue)&userOrderId=\(model.userOrderId)&orderCode=\(model.orderCode)&taskOrderId=\(model.taskOrderId)")
}
}
extension RescuePendingDispatchController : UITableViewDelegate,UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return resultArr.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: "cell") as? RescuePendingDispatchCell
if cell == nil {
cell = RescuePendingDispatchCell(style: .default, reuseIdentifier: "cell")
cell?.line.backgroundColor = .hex("E9E9EA").alpha(0.6)
cell?.merchantTitleLabel.text = "客商:"
cell?.serviceTitleLabel.text = "事发地:"
cell?.reportButton.setTitle("报备", for: .normal)
cell?.contactButton.setTitle("联系客户", for: .normal)
cell?.dispatchButton.setTitle("指派车辆", for: .normal)
}
let model = resultArr[indexPath.row]
cell?.typeLabel.text = model.taskServiceName
cell?.orderNumLabel.text = model.orderCode
cell?.merchantLabel.text = model.contractName
if model.model?.isEmpty == false {
cell?.carTypeTitleLabel.text = "车型:"
cell?.carTypeLabel.text = model.model
cell?.carTypeTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.merchantLabel.snp.bottom).offset(auto(8))
})
}else{
cell?.carTypeTitleLabel.text = nil
cell?.carTypeLabel.text = nil
cell?.carTypeTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.merchantLabel.snp.bottom).offset(0)
})
}
if model.positionEnvironment?.label.isEmpty == false {
cell?.positionTitleLabel.text = "所处位置:"
cell?.positionLabel.text = model.positionEnvironment?.label
cell?.positionTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.carTypeLabel.snp.bottom).offset(auto(8))
})
}else{
cell?.positionTitleLabel.text = nil
cell?.positionLabel.text = nil
cell?.positionTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.carTypeLabel.snp.bottom).offset(auto(0))
})
}
if model.juheVehicleId != nil {
cell?.juheTitleLabel.text = "聚合车辆:"
cell?.juheButton.setTitle("\(model.juheVehcileName ?? "")-\(model.juheStaffPhone ?? "")", for: .normal)
cell?.juheButton.setImage(UIImage(named: "rescue_orderDispatch_call"), for: .normal)
cell?.juheButton.isHidden = false
cell?.juheTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.positionLabel.snp.bottom).offset(auto(8))
})
cell?.juheButton.snp.updateConstraints({ make in
make.height.equalTo(auto(17))
})
}else{
cell?.juheTitleLabel.text = nil
cell?.juheButton.setTitle(nil, for: .normal)
cell?.juheButton.setImage(nil, for: .normal)
cell?.juheButton.isHidden = true
cell?.juheTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.positionLabel.snp.bottom).offset(0)
})
cell?.juheButton.snp.updateConstraints({ make in
make.height.equalTo(0)
})
}
cell?.serviceLabel.text = model.vehiclePointAddress
if model.vehiclePointRemark?.isEmpty == false {
cell?.serviceNoticeLabel.text = "备注:"+(model.vehiclePointRemark ?? "")
cell?.serviceNoticeView.snp.updateConstraints({ make in
make.top.equalTo(cell!.serviceLabel.snp.bottom).offset(auto(4))
})
cell?.serviceNoticeLabel.snp.updateConstraints({ make in
make.top.equalTo(auto(5))
make.bottom.equalTo(-auto(5))
})
cell?.destinationTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.serviceNoticeView.snp.bottom).offset(auto(4))
})
}else{
cell?.serviceNoticeLabel.text = nil
cell?.serviceNoticeView.snp.updateConstraints({ make in
make.top.equalTo(cell!.serviceLabel.snp.bottom).offset(0)
})
cell?.serviceNoticeLabel.snp.updateConstraints({ make in
make.top.equalTo(0)
make.bottom.equalTo(0)
})
cell?.destinationTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.serviceNoticeView.snp.bottom).offset(auto(8))
})
}
if model.destinationAddress?.isEmpty == false || (model.taskFlowId != 1) {
cell?.destinationTitleLabel.text = "目的地:"
cell?.destinationLabel.text = model.destinationAddress?.isEmpty == false ? model.destinationAddress : " "
}else{
cell?.destinationTitleLabel.text = nil
cell?.destinationLabel.text = nil
cell?.destinationTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.serviceNoticeView.snp.bottom).offset(0)
})
}
// if model.destinationRemark?.isEmpty == false {
// cell?.destinationNoticeView.isHidden = false
// cell?.destinationNoticeLabel.text = ":"+(model.destinationRemark ?? "")
// cell?.destinationNoticeView.snp.updateConstraints({ make in
// make.top.equalTo(cell!.destinationLabel.snp.bottom).offset(auto(4))
// })
// cell?.destinationNoticeLabel.snp.updateConstraints({ make in
// make.top.equalTo(auto(5))
// make.bottom.equalTo(-auto(5))
// })
// }else{
// cell?.destinationNoticeView.isHidden = true
// cell?.destinationNoticeLabel.text = nil
// cell?.destinationNoticeView.snp.updateConstraints({ make in
// make.top.equalTo(cell!.destinationLabel.snp.bottom).offset(auto(4))
// })
// cell?.destinationNoticeLabel.snp.updateConstraints({ make in
// make.top.equalTo(0)
// make.bottom.equalTo(0)
// })
// }
if model.appointTime?.isEmpty == false {
cell?.reserveTitleLabel.text = "预约时间:"
cell?.reserveLabel.text = model.appointTime
cell?.reserveTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.destinationLabel.snp.bottom).offset(auto(8))
})
}else{
cell?.reserveTitleLabel.text = nil
cell?.reserveLabel.text = nil
cell?.reserveTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.destinationLabel.snp.bottom).offset(0)
})
}
cell?.photoCollectionView.tag = indexPath.row
cell?.photoCollectionView.delegate = self
cell?.photoCollectionView.dataSource = self
cell?.photoCollectionView.register(RescuePendingDispatchPhotoCell.self, forCellWithReuseIdentifier: "cell")
if model.environmentPic?.isEmpty == false {
cell?.photoTitleLabel.text = "查看照片:"
cell?.photoView.isHidden = false
cell?.photoTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.reserveTitleLabel.snp.bottom).offset(auto(8))
})
cell?.photoView.snp.updateConstraints({ make in
make.height.equalTo(auto(50))
})
cell?.photoCollectionView.reloadData()
}else{
cell?.photoTitleLabel.text = nil
cell?.photoView.isHidden = true
cell?.photoTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.reserveTitleLabel.snp.bottom).offset(0)
})
cell?.photoView.snp.updateConstraints({ make in
make.height.equalTo(0)
})
}
cell?.juheButton.rx.tap
.observe(on: MainScheduler.instance)
.subscribe(onNext: { _ in
if let phone = model.juheStaffPhone {
SC.userOrderId = model.userOrderId
SC.orderCode = model.orderCode
SC.taskOrderId = model.taskOrderId
URLLINKS.openUrl(type: .phone, appending: phone)
}
})
.disposed(by: cell!.disposeBag)
cell?.reportButton.rx.tap
.observe(on: MainScheduler.instance)
.subscribe(onNext: { _ in
WEBTOOL.open(name: .reporting,appending: "&queryType=\(OrderTypeEnum.TO_DISPATCH_VEHICLE.rawValue)&userOrderId=\(model.userOrderId)&orderCode=\(model.orderCode)")
})
.disposed(by: cell!.disposeBag)
cell?.contactButton.rx.tap
.observe(on: MainScheduler.instance)
.subscribe(onNext: { _ in
SC.userOrderId = model.userOrderId
SC.orderCode = model.orderCode
SC.taskOrderId = model.taskOrderId
URLLINKS.openUrl(type: .phone, appending: model.userPhone)
})
.disposed(by: cell!.disposeBag)
cell?.dispatchButton.rx.tap
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] _ in
let vc = DispatchOrderController.init(userOrderId: model.userOrderId, taskOrderId: model.taskOrderId,serviceAddressLat: model.vehiclePointLatitude,serviceAddressLon: model.vehiclePointLongitude)
vc.dispatchCompletionHandler = {[weak self] _ in
self?.resultArr.removeAll(where: { _model in
_model.userOrderId == model.userOrderId
})
self?.pendingDispatchView.tableView.reloadData()
}
self?.navigationController?.pushViewController(vc, animated: true)
})
.disposed(by: cell!.disposeBag)
if USERP.canWaitdispatchBtn == true {
cell?.dispatchButton.isHidden = false
cell?.dispatchButton.snp.updateConstraints({ make in
make.right.equalTo(-auto(8))
make.width.equalTo(auto(80))
})
}else{
cell?.dispatchButton.isHidden = true
cell?.dispatchButton.snp.updateConstraints({ make in
make.right.equalTo(0)
make.width.equalTo(0)
})
}
if USERP.canSupplierRemarkBtn == true {
cell?.reportButton.isHidden = false
cell?.reportButton.snp.updateConstraints({ make in
make.right.equalTo(cell!.contactButton.snp.left).offset(-auto(5))
make.width.equalTo(auto(80))
})
}else{
cell?.reportButton.isHidden = true
cell?.reportButton.snp.updateConstraints({ make in
make.right.equalTo(cell!.contactButton.snp.left).offset(0)
make.width.equalTo(0)
})
}
return cell!
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let model = resultArr[indexPath.item]
WEBTOOL.open(name: .workOrderDetail, appending: "&queryType=\(OrderTypeEnum.TO_DISPATCH_VEHICLE.rawValue)&userOrderId=\(model.userOrderId)&orderCode=\(model.orderCode)&taskOrderId=\(model.taskOrderId)")
}
}
extension RescueIsIngController : UITableViewDelegate,UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return resultArr.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: "cell") as? RescueIsIngCell
if cell == nil {
cell = RescueIsIngCell(style: .default, reuseIdentifier: "cell")
cell?.line.backgroundColor = .hex("E9E9EA").alpha(0.6)
cell?.orderStatusTitleLabel.text = "状态:"
cell?.serviceTitleLabel.text = "故障地:"
cell?.destinationTitleLabel.text = "目的地:"
cell?.contactButton.setTitle("联系客户", for: .normal)
cell?.reportButton.setTitle("报备", for: .normal)
cell?.reportDetailButton.setTitle("报备查看", for: .normal)
cell?.dispatchButton.setTitle("改派", for: .normal)
}
let model = resultArr[indexPath.row]
cell?.typeLabel.text = model.taskServiceName
cell?.orderStatusLabel.text = model.taskOrderStatusString
cell?.orderNumLabel.text = model.orderCode
cell?.orderDateLabel.text = model.createTime
if model.driverName?.isEmpty == false && model.driverPhone?.isEmpty == false {
cell?.driverLabel.text = "\(model.driverName!)/\(model.driverPhone!)"
}else if model.driverName?.isEmpty == false {
cell?.driverLabel.text = model.driverName!
}else if model.driverPhone?.isEmpty == false {
cell?.driverLabel.text = model.driverPhone!
}else{
cell?.driverLabel.text = nil
}
cell?.serviceLabel.text = model.vehiclePointAddress
if model.destinationAddress?.isEmpty == false || (model.taskFlowId != 1) {
cell?.destinationTitleLabel.text = "目的地:"
cell?.destinationLabel.text = model.destinationAddress?.isEmpty == false ? model.destinationAddress : " "
cell?.destinationTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.serviceLabel.snp.bottom).offset(auto(8))
})
}else{
cell?.destinationTitleLabel.text = nil
cell?.destinationLabel.text = nil
cell?.destinationTitleLabel.snp.updateConstraints({ make in
make.top.equalTo(cell!.serviceLabel.snp.bottom).offset(0)
})
}
cell?.contactButton.rx.tap
.observe(on: MainScheduler.instance)
.subscribe(onNext: { _ in
SC.userOrderId = model.userOrderId
SC.orderCode = model.orderCode
SC.taskOrderId = model.taskOrderId
URLLINKS.openUrl(type: .phone, appending: model.userPhone)
})
.disposed(by: cell!.disposeBag)
cell?.dispatchButton.rx.tap
.observe(on: MainScheduler.instance)
.subscribe(onNext: {[weak self] _ in
let vc = DispatchOrderController.init(userOrderId: model.userOrderId, taskOrderId: model.taskOrderId,serviceAddressLat: model.vehiclePointLatitude,serviceAddressLon: model.vehiclePointLongitude)
vc.dispatchCompletionHandler = {[weak self] _ in
self?.resultArr.removeAll(where: { _model in
_model.userOrderId == model.userOrderId
})
DispatchQueue.main.async {[weak self] in
self?.pendingIsIngView.tableView.reloadData()
}
}
self?.navigationController?.pushViewController(vc, animated: true)
})
.disposed(by: cell!.disposeBag)
cell?.reportButton.rx.tap
.observe(on: MainScheduler.instance)
.subscribe(onNext: { _ in
WEBTOOL.open(name: .reporting,appending: "&queryType=\(OrderTypeEnum.TO_RESCUE.rawValue)&userOrderId=\(model.userOrderId)&orderCode=\(model.orderCode)")
})
.disposed(by: cell!.disposeBag)
cell?.reportDetailButton.rx.tap
.observe(on: MainScheduler.instance)
.subscribe(onNext: { _ in
WEBTOOL.open(name: .reportingList,appending: "&queryType=\(OrderTypeEnum.TO_RESCUE.rawValue)&userOrderId=\(model.userOrderId)&orderCode=\(model.orderCode)&taskOrderId=\(model.taskOrderId)")
})
.disposed(by: cell!.disposeBag)
//
if USERP.canWaitModifyDispatchBtn == true {
if (model.taskOrderStatus ?? 0) >= 12001 {
cell?.dispatchButton.isHidden = true
cell?.dispatchButton.snp.updateConstraints({ make in
make.right.equalTo(cell!.reportDetailButton.snp.left).offset(0)
make.width.equalTo(0)
})
}else{
cell?.dispatchButton.isHidden = false
cell?.dispatchButton.snp.updateConstraints({ make in
make.right.equalTo(cell!.reportDetailButton.snp.left).offset(-auto(5))
make.width.equalTo(auto(80))
})
}
}else{
cell?.dispatchButton.isHidden = true
cell?.dispatchButton.snp.updateConstraints({ make in
make.right.equalTo(cell!.reportDetailButton.snp.left).offset(0)
make.width.equalTo(0)
})
}
if USERP.canSupplierRemarkBtn == true {
cell?.reportButton.isHidden = false
cell?.reportButton.snp.updateConstraints({ make in
make.width.equalTo(auto(80))
make.right.equalTo(-auto(8))
})
}else{
cell?.reportButton.isHidden = true
cell?.reportButton.snp.updateConstraints({ make in
make.width.equalTo(0)
make.right.equalTo(0)
})
}
return cell!
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let model = resultArr[indexPath.item]
WEBTOOL.open(name: .workOrderDetail, appending: "&queryType=\(OrderTypeEnum.TO_RESCUE.rawValue)&userOrderId=\(model.userOrderId)&orderCode=\(model.orderCode)&taskOrderId=\(model.taskOrderId)")
}
}
// MARK: UICollectionViewDelegate, UICollectionViewDataSource
extension RescuePendingDispatchController : UICollectionViewDelegate, UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
let model = resultArr[collectionView.tag]
let environmentPics = model.environmentPic?.components(separatedBy: ",") ?? []
return environmentPics.count > 4 ? 4 : environmentPics.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as? RescuePendingDispatchPhotoCell
let model = resultArr[collectionView.tag]
let environmentPics = model.environmentPic?.components(separatedBy: ",") ?? []
let imageUrlStr = environmentPics[indexPath.item]
cell!.imageView.image = nil
if imageUrlStr.contains(".mp4?") == true {
if let url = URL(string: imageUrlStr) {
DispatchQueue.global().async {
DDImage.dd_thumbnailImage(forVideo: url) { (thumbnailImage, _, _) in
let image = thumbnailImage?.dd_compress(withQulitySize: 5 * 1024)
DispatchQueue.main.async {
cell!.imageView.image = image
}
}
}
DispatchQueue.global().async {
let cmTime = TOOL.getDuration(url: url)
DispatchQueue.main.async {
cell!.dateLabel.text = TOOL.getVideoDateString(duration: Int(cmTime.seconds))
}
}
}
}else{
cell!.imageView.sd_setImage(with: URL(string: imageUrlStr))
cell!.dateLabel.text = nil
}
return cell!
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let model = resultArr[collectionView.tag]
let environmentPics = model.environmentPic?.components(separatedBy: ",") ?? []
let vc = RescuePhotoController(environmentPics: environmentPics)
navigationController?.pushViewController(vc, animated: true)
}
}
// MARK:
class RescueController : ZDViewController {
public let pagerView = TYCyclePagerView()
public let categoryView = JXCategoryTitleView()
private let filterButton = DDButton.dd_initCustom()
private lazy var categoryContainerView = JXCategoryListContainerView(type: .scrollView, delegate: self)
private let messageTapGes = UITapGestureRecognizer()
private let messageView = MessageView()
private let pendingTapGes = UITapGestureRecognizer()
private let pendingView = MessageView()
private let disposeBag = DisposeBag()
private let h5Relay = ReplayRelay<Any?>.create(bufferSize: 1)
private var pendingTableView : DDTableView?
private var dispatchTableView : DDTableView?
private var isRescueTableView : DDTableView?
private var preRefreshRelay = ReplayRelay<Any?>.create(bufferSize: 1)
private var appPushRecordRelay = ReplayRelay<Any?>.create(bufferSize: 1)
private var appBannerRelay = ReplayRelay<Any?>.create(bufferSize: 1)
private var bannerDataSources : [ConfigByCodeDataModel.ConfigByCodeBannerModel] = []
override func viewDidLoad() {
super.viewDidLoad()
dd_navigationBarBackgroundColor = .hex("354683")
dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(auto(15))]
dd_navigationBarBarButtonItemAttributes = [.foregroundColor : UIColor.white]
dd_navigationItemTitle = "救援工单"
navigationItem.leftBarButtonItems = nil
addSubviews()
addActions()
}
func addSubviews() {
pagerView.register(TYCyclePagerViewCell.self, forCellWithReuseIdentifier: "cell")
pagerView.isInfiniteLoop = false
pagerView.delegate = self
pagerView.dataSource = self
categoryView.titles = ["待接单","待派车","救援中"]
categoryView.titleColor = .hex("737373").alpha(0.55)
categoryView.titleSelectedColor = .hex("3678FF")
categoryView.backgroundColor = .hex("FAFAFA")
categoryView.delegate = self
view.addSubview(categoryView)
//
let indicator = JXCategoryIndicatorLineView()
indicator.indicatorColor = .hex("3678FF")
indicator.indicatorWidth = JXCategoryViewAutomaticDimension
indicator.verticalMargin = 7
indicator.indicatorWidth = auto(18)
categoryView.indicators = [indicator]
if let categoryContainerView {
view.addSubview(categoryContainerView)
categoryView.listContainer = categoryContainerView
}
///
ConditionalSearchTool.configFilterButton(filterButton, type: .rescue)
view.addSubview(filterButton)
filterButton.snp.makeConstraints { make in
make.left.equalTo(categoryView.snp.right)
make.right.equalToSuperview()
make.top.equalTo(categoryView)
make.bottom.equalTo(categoryView)
}
messageView.titleLabel.text = "消息"
messageView.addGestureRecognizer(messageTapGes)
navigationItem.leftBarButtonItem = UIBarButtonItem(customView: messageView)
messageView.snp.makeConstraints { make in
make.height.equalTo(40)
make.width.greaterThanOrEqualTo(40)
}
pendingView.titleLabel.text = "待办"
pendingView.addGestureRecognizer(pendingTapGes)
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: pendingView)
pendingView.snp.makeConstraints { make in
make.height.equalTo(40)
make.width.greaterThanOrEqualTo(40)
}
}
override func viewSafeAreaInsetsDidChange() {
super.viewSafeAreaInsetsDidChange()
if pagerView.superview == nil {
view.addSubview(pagerView)
pagerView.snp.makeConstraints { make in
make.top.equalTo(view.safeAreaInsets.top)
make.left.right.equalToSuperview()
make.height.equalTo(0)
}
}
categoryView.snp.remakeConstraints { make in
make.left.equalToSuperview()
make.right.equalToSuperview().offset(-auto(60))
make.top.equalTo(pagerView.snp.bottom)
make.height.equalTo(auto(44))
}
// view.safeAreaInsets.bottom0hiddenBottomBarview.safeAreaInsets.bottom0
if view.safeAreaInsets.bottom == 0 {
}else{
categoryContainerView?.snp.remakeConstraints({ make in
make.top.equalTo(categoryView.snp.bottom)
make.left.right.equalToSuperview()
make.bottom.equalTo(-view.safeAreaInsets.bottom)
})
}
}
override func reloadData() {
super.reloadData()
preRefreshRelay.accept(nil)
}
}
// MARK:
class RescuePendingOrderController : ConditionalSearchParentController {
private let disposeBag = DisposeBag()
public let pendingOrderView = RescuePendingOrderView()
public let refuseOrderConfirmView = RefuseOrderConfirmView()
public var refuseOrderModel : OrderListDataModel?
private var resultArr : [OrderListDataModel] = []
private var refreshRelay = ReplayRelay<Int>.create(bufferSize: 1)
private var pageNum : Int = 1
private var refuseRemarkIdRelay = ReplayRelay<OrderListDataModel>.create(bufferSize: 1)
private var refuseSubmitRelay = ReplayRelay<Any?>.create(bufferSize: 1)
private var acceptOrderRelay = ReplayRelay<OrderListDataModel>.create(bufferSize: 1)
private var emptyView = EmptyView()
override func viewDidLoad() {
super.viewDidLoad()
dd_navigationBarBackgroundColor = .hex("354683")
dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(17)]
dd_navigationBarBarButtonItemAttributes = [.foregroundColor : UIColor.white]
addSubviews()
addActions()
}
func addSubviews() {
view.addSubview(pendingOrderView)
pendingOrderView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
pendingOrderView.tableView.addSubview(emptyView)
emptyView.snp.makeConstraints { make in
make.centerX.centerY.equalToSuperview()
make.width.equalTo(auto(303))
make.height.equalTo(auto(94))
}
pendingOrderView.tableView.backgroundColor = .hex("FAFAFA")
pendingOrderView.tableView.delegate = self
pendingOrderView.tableView.dataSource = self
}
}
// MARK:
class RescuePendingDispatchController : ConditionalSearchParentController {
private let disposeBag = DisposeBag()
public let pendingDispatchView = RescuePendingDispatchView()
private var resultArr : [OrderListDataModel] = []
private var refreshRelay = ReplayRelay<Int>.create(bufferSize: 1)
private var pageNum : Int = 1
private var emptyView = EmptyView()
override func viewDidLoad() {
super.viewDidLoad()
dd_navigationBarBackgroundColor = .hex("354683")
dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(17)]
dd_navigationBarBarButtonItemAttributes = [.foregroundColor : UIColor.white]
addSubviews()
addActions()
}
func addSubviews() {
view.addSubview(pendingDispatchView)
pendingDispatchView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
pendingDispatchView.tableView.addSubview(emptyView)
emptyView.snp.makeConstraints { make in
make.centerX.centerY.equalToSuperview()
make.width.equalTo(auto(303))
make.height.equalTo(auto(94))
}
pendingDispatchView.tableView.backgroundColor = .hex("FAFAFA")
pendingDispatchView.tableView.delegate = self
pendingDispatchView.tableView.dataSource = self
}
}
// MARK:
class RescueIsIngController : ConditionalSearchParentController {
private let disposeBag = DisposeBag()
public let pendingIsIngView = RescueIsIngView()
private var resultArr : [OrderListDataModel] = []
private var refreshRelay = ReplayRelay<Int>.create(bufferSize: 1)
private var pageNum : Int = 1
private var emptyView = EmptyView()
override func viewDidLoad() {
super.viewDidLoad()
dd_navigationBarBackgroundColor = .hex("354683")
dd_navigationBarTitleTextAttributes = [.foregroundColor : UIColor.white(alpha: 0.7),.font:UIFont.mediumFont(17)]
dd_navigationBarBarButtonItemAttributes = [.foregroundColor : UIColor.white]
addSubviews()
addActions()
}
func addSubviews() {
view.addSubview(pendingIsIngView)
pendingIsIngView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
pendingIsIngView.tableView.addSubview(emptyView)
emptyView.snp.makeConstraints { make in
make.centerX.centerY.equalToSuperview()
make.width.equalTo(auto(303))
make.height.equalTo(auto(94))
}
pendingIsIngView.tableView.backgroundColor = .hex("FAFAFA")
pendingIsIngView.tableView.delegate = self
pendingIsIngView.tableView.dataSource = self
}
}
// MARK: SUPER
class ConditionalSearchParentController : ZDViewController, JXCategoryListContentViewDelegate {
public lazy var conditionalSearchTool = ConditionalSearchTool()
func listView() -> UIView! {
return view
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
conditionalSearchTool.isFilterSub.accept(conditionalSearchTool.isFiltered())
}
override func viewSafeAreaInsetsDidChange() {
super.viewSafeAreaInsetsDidChange()
if parent?.view.safeAreaInsets.bottom != 0 {
conditionalSearchTool.bottomSafeArea = (parent?.view.safeAreaInsets.bottom ?? 0) - 49
}
}
}
// MARK: Cell
class RescuePendingOrderCell : DDTableViewCell {
public let radiusView : DDView
public let typeLabel : DDLabel
public let orderNumLabel : DDLabel
public let line : DDView
public let merchantTitleLabel : DDLabel
public let merchantLabel : DDLabel
public let carTypeTitleLabel : DDLabel
public let carTypeLabel : DDLabel
public let serviceTitleLabel : DDLabel
public let serviceLabel : DDLabel
public let destinationTitleLabel : DDLabel
public let destinationLabel : DDLabel
public let reserveTitleLabel : DDLabel
public let reserveLabel : DDLabel
public let refuseButton : DDButton
public let acceptButton : DDButton
public var acceptLayer : CAGradientLayer = {
var layer = CAGradientLayer.init()
layer.startPoint = CGPoint(x: 0, y: 0)
layer.endPoint = CGPoint(x: 1, y: 1)
layer.locations = [0.0,1.0]
layer.colors = [UIColor.hex("FF5A2C").cgColor,UIColor.hex("FE9D4D").cgColor]
layer.cornerRadius = auto(4)
layer.masksToBounds = true
return layer
}()
public var disposeBag : DisposeBag
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
radiusView = DDView.init()
typeLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("000000").alpha(0.85))
orderNumLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(11)), textColor: .hex("000000").alpha(0.55))
line = DDView.init()
merchantTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5))
merchantLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000"))
carTypeTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5))
carTypeLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000"))
serviceTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5))
serviceLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000"))
destinationTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5))
destinationLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000"))
reserveTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5))
reserveLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000"))
refuseButton = DDButton.dd_initCustom()
refuseButton.titleLabel?.font = .mediumFont(auto(13))
refuseButton.setTitleColor(.hex("000000").alpha(0.7), for: .normal)
acceptButton = DDButton.dd_initCustom()
acceptButton.titleLabel?.font = .mediumFont(auto(13))
acceptButton.setTitleColor(.hex("FFFFFF"), for: .normal)
disposeBag = DisposeBag()
super.init(style: style, reuseIdentifier: reuseIdentifier)
contentView.backgroundColor = .hex("F4F5F7")
radiusView.layer.cornerRadius = auto(6)
radiusView.layer.shadowColor = UIColor.black(alpha: 0.1).cgColor
radiusView.layer.shadowOpacity = 1.0
radiusView.layer.shadowRadius = 3
radiusView.layer.shadowOffset = CGSize(width: 0, height: 3)
radiusView.backgroundColor = .white
contentView.addSubview(radiusView)
radiusView.addSubview(typeLabel)
radiusView.addSubview(orderNumLabel)
radiusView.addSubview(line)
radiusView.addSubview(merchantTitleLabel)
radiusView.addSubview(merchantLabel)
carTypeLabel.numberOfLines = 0
radiusView.addSubview(carTypeLabel)
radiusView.addSubview(carTypeTitleLabel)
radiusView.addSubview(serviceTitleLabel)
serviceLabel.numberOfLines = 0
radiusView.addSubview(serviceLabel)
radiusView.addSubview(destinationTitleLabel)
destinationLabel.numberOfLines = 0
radiusView.addSubview(destinationLabel)
radiusView.addSubview(reserveTitleLabel)
radiusView.addSubview(reserveLabel)
refuseButton.layer.borderColor = UIColor.hex("DDDDDD").cgColor
refuseButton.layer.borderWidth = 1
refuseButton.layer.cornerRadius = auto(4)
refuseButton.setImage(UIImage(named: "rescue_orderPending_refuse"), for: .normal)
radiusView.addSubview(refuseButton)
acceptButton.layer.cornerRadius = auto(4)
acceptButton.layer.masksToBounds = true
acceptButton.backgroundColor = .hex("FF5A2C")
acceptButton.layer.insertSublayer(acceptLayer, at: 0)
radiusView.addSubview(acceptButton)
radiusView.snp.makeConstraints { make in
make.left.equalTo(auto(12))
make.right.equalTo(-auto(12))
make.top.equalTo(0)
make.bottom.equalTo(-auto(12))
}
typeLabel.snp.makeConstraints { make in
make.left.equalTo(auto(18))
make.top.equalTo(auto(13))
}
orderNumLabel.snp.makeConstraints { make in
make.centerY.equalTo(typeLabel)
make.left.equalTo(typeLabel.snp.right).offset(auto(10))
}
line.snp.makeConstraints { make in
make.top.equalTo(typeLabel.snp.bottom).offset(auto(7))
make.left.right.equalTo(0)
make.height.equalTo(0.5)
}
merchantTitleLabel.snp.makeConstraints { make in
make.top.equalTo(line.snp.bottom).offset(auto(8))
make.left.equalTo(typeLabel)
make.width.equalTo(auto(60))
}
merchantLabel.snp.makeConstraints { make in
make.centerY.equalTo(merchantTitleLabel)
make.left.equalTo(merchantTitleLabel.snp.right)
make.right.equalTo(-auto(20))
}
carTypeTitleLabel.snp.makeConstraints { make in
make.top.equalTo(merchantLabel.snp.bottom).offset(auto(8))
make.left.equalTo(typeLabel)
make.width.equalTo(merchantTitleLabel)
}
carTypeLabel.snp.makeConstraints { make in
make.top.equalTo(carTypeTitleLabel)
make.left.equalTo(carTypeTitleLabel.snp.right)
make.right.equalTo(-auto(20))
}
serviceTitleLabel.snp.makeConstraints { make in
make.top.equalTo(carTypeLabel.snp.bottom).offset(auto(8))
make.left.equalTo(typeLabel)
make.width.equalTo(merchantTitleLabel)
}
serviceLabel.snp.makeConstraints { make in
make.top.equalTo(serviceTitleLabel)
make.left.equalTo(serviceTitleLabel.snp.right)
make.right.equalTo(-auto(20))
}
destinationTitleLabel.snp.makeConstraints { make in
make.top.equalTo(serviceLabel.snp.bottom).offset(auto(8))
make.left.equalTo(typeLabel)
make.width.equalTo(merchantTitleLabel)
}
destinationLabel.snp.makeConstraints { make in
make.top.equalTo(destinationTitleLabel)
make.left.equalTo(destinationTitleLabel.snp.right)
make.right.equalTo(-auto(20))
}
reserveTitleLabel.snp.makeConstraints { make in
make.top.equalTo(destinationLabel.snp.bottom).offset(auto(8))
make.left.equalTo(typeLabel)
make.width.equalTo(merchantTitleLabel)
}
reserveLabel.snp.makeConstraints { make in
make.centerY.equalTo(reserveTitleLabel)
make.left.equalTo(reserveTitleLabel.snp.right)
}
acceptButton.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-auto(8))
make.top.equalTo(reserveTitleLabel.snp.bottom).offset(auto(10))
make.width.equalTo(auto(80))
make.height.equalTo(auto(30))
make.bottom.equalToSuperview().offset(-auto(10))
}
refuseButton.snp.makeConstraints { make in
make.right.equalTo(acceptButton.snp.left).offset(-auto(5))
make.top.equalTo(acceptButton)
make.width.equalTo(auto(80))
make.height.equalTo(auto(30))
}
}
required public init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func layoutSubviews() {
super.layoutSubviews()
acceptLayer.frame = CGRectMake(0, 0, auto(80), auto(30))
refuseButton.dd_customize(with: .ImageLeftPaddingTitleRightWithWholeCenter, padding: 5)
}
override func prepareForReuse() {
super.prepareForReuse()
disposeBag = DisposeBag()
}
}
class RescuePendingDispatchCell : DDTableViewCell {
public let radiusView : DDView
public let typeLabel : DDLabel
public let orderNumLabel : DDLabel
public let line : DDView
public let merchantTitleLabel : DDLabel
public let merchantLabel : DDLabel
public let carTypeTitleLabel : DDLabel
public let carTypeLabel : DDLabel
public let positionTitleLabel : DDLabel
public let positionLabel : DDLabel
public let juheTitleLabel : DDLabel
public let juheButton : DDButton
public let serviceTitleLabel : DDLabel
public let serviceLabel : DDLabel
public let serviceNoticeView : DDView
public let serviceNoticeLabel : DDLabel
public let destinationTitleLabel : DDLabel
public let destinationLabel : DDLabel
// public let destinationNoticeView : DDView
// public let destinationNoticeLabel : DDLabel
public let reserveTitleLabel : DDLabel
public let reserveLabel : DDLabel
public let photoTitleLabel : DDLabel
public let photoView : DDView
public let photoCollectionView : DDCollectionView
public let reportButton : DDButton
public let contactButton : DDButton
public let dispatchButton : DDButton
public var dispatchLayer : CAGradientLayer = {
var layer = CAGradientLayer.init()
layer.startPoint = CGPoint(x: 0, y: 0)
layer.endPoint = CGPoint(x: 1, y: 1)
layer.locations = [0.0,1.0]
layer.colors = [UIColor.hex("FF5A2C").cgColor,UIColor.hex("FE9D4D").cgColor]
layer.cornerRadius = auto(4)
layer.masksToBounds = true
return layer
}()
public var disposeBag : DisposeBag
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
radiusView = DDView.init()
typeLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("000000").alpha(0.85))
orderNumLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(11)), textColor: .hex("000000").alpha(0.55))
line = DDView.init()
merchantTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5))
merchantLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000"))
carTypeTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5))
carTypeLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000"))
positionTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5))
positionLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000"))
juheTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("ff0000").alpha(0.7))
juheButton = DDButton.dd_initCustom()
serviceTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5))
serviceLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000"))
serviceNoticeView = DDView.init()
serviceNoticeLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(11)), textColor: .hex("FF8F37"))
destinationTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5))
destinationLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000"))
// destinationNoticeView = DDView.init()
// destinationNoticeLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(11)), textColor: .hex("FF8F37"))
reserveTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5))
reserveLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000"))
photoTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5))
photoView = DDView.init()
let flowLayout = UICollectionViewFlowLayout.init()
flowLayout.itemSize = CGSize(width: auto(60), height: auto(45))
flowLayout.scrollDirection = .vertical
flowLayout.minimumInteritemSpacing = auto(5)
photoCollectionView = DDCollectionView(frame: CGRectZero, collectionViewLayout: flowLayout)
reportButton = DDButton.dd_initCustom()
reportButton.titleLabel?.font = .mediumFont(auto(13))
reportButton.setTitleColor(.hex("000000").alpha(0.7), for: .normal)
contactButton = DDButton.dd_initCustom()
contactButton.titleLabel?.font = .mediumFont(auto(13))
contactButton.setTitleColor(.hex("000000").alpha(0.7), for: .normal)
contactButton.setImage(UIImage(named: "rescue_orderDispatch_call"), for: .normal)
dispatchButton = DDButton.dd_initCustom()
dispatchButton.setTitleColor(.hex("FFFFFF"), for: .normal)
dispatchButton.titleLabel?.font = .mediumFont(auto(13))
disposeBag = DisposeBag()
super.init(style: style, reuseIdentifier: reuseIdentifier)
contentView.backgroundColor = .hex("F4F5F7")
radiusView.layer.cornerRadius = auto(6)
radiusView.layer.shadowColor = UIColor.black(alpha: 0.1).cgColor
radiusView.layer.shadowOpacity = 1.0
radiusView.layer.shadowRadius = 3
radiusView.layer.shadowOffset = CGSize(width: 0, height: 3)
radiusView.backgroundColor = .white
contentView.addSubview(radiusView)
radiusView.addSubview(typeLabel)
radiusView.addSubview(orderNumLabel)
radiusView.addSubview(line)
radiusView.addSubview(merchantTitleLabel)
radiusView.addSubview(merchantLabel)
radiusView.addSubview(positionTitleLabel)
radiusView.addSubview(positionLabel)
radiusView.addSubview(juheTitleLabel)
juheButton.setTitleColor(.hex("ff0000"), for: .normal)
juheButton.titleLabel?.font = .mediumFont(auto(13))
juheButton.contentEdgeInsets = UIEdgeInsets(top: 0, left: 3, bottom: 0, right: 3)
radiusView.addSubview(juheButton)
carTypeLabel.numberOfLines = 0
radiusView.addSubview(carTypeLabel)
radiusView.addSubview(carTypeTitleLabel)
radiusView.addSubview(serviceTitleLabel)
serviceLabel.numberOfLines = 0
radiusView.addSubview(serviceLabel)
serviceNoticeView.backgroundColor = .hex("FFF7EE")
radiusView.addSubview(serviceNoticeView)
serviceNoticeLabel.numberOfLines = 0
serviceNoticeView.addSubview(serviceNoticeLabel)
radiusView.addSubview(destinationTitleLabel)
destinationLabel.numberOfLines = 0
radiusView.addSubview(destinationLabel)
// destinationNoticeView.backgroundColor = .hex("FFF7EE")
// radiusView.addSubview(destinationNoticeView)
// destinationNoticeLabel.numberOfLines = 0
// destinationNoticeView.addSubview(destinationNoticeLabel)
radiusView.addSubview(reserveTitleLabel)
radiusView.addSubview(reserveLabel)
radiusView.addSubview(photoTitleLabel)
radiusView.addSubview(photoView)
photoCollectionView.backgroundColor = .white
photoView.addSubview(photoCollectionView)
reportButton.layer.borderColor = UIColor.hex("DDDDDD").cgColor
reportButton.layer.borderWidth = 1
reportButton.layer.cornerRadius = auto(4)
radiusView.addSubview(reportButton)
contactButton.layer.borderColor = UIColor.hex("DDDDDD").cgColor
contactButton.layer.borderWidth = 1
contactButton.layer.cornerRadius = auto(4)
radiusView.addSubview(contactButton)
dispatchButton.layer.cornerRadius = auto(4)
dispatchButton.layer.masksToBounds = true
dispatchButton.backgroundColor = .hex("FF5A2C")
dispatchButton.layer.insertSublayer(dispatchLayer, at: 0)
radiusView.addSubview(dispatchButton)
radiusView.snp.makeConstraints { make in
make.left.equalTo(auto(12))
make.right.equalTo(-auto(12))
make.top.equalTo(0)
make.bottom.equalTo(-auto(12))
}
typeLabel.snp.makeConstraints { make in
make.left.equalTo(auto(18))
make.top.equalTo(auto(13))
}
orderNumLabel.snp.makeConstraints { make in
make.centerY.equalTo(typeLabel)
make.left.equalTo(typeLabel.snp.right).offset(auto(10))
}
line.snp.makeConstraints { make in
make.top.equalTo(typeLabel.snp.bottom).offset(auto(7))
make.left.right.equalTo(0)
make.height.equalTo(0.5)
}
merchantTitleLabel.snp.makeConstraints { make in
make.top.equalTo(line.snp.bottom).offset(auto(8))
make.left.equalTo(typeLabel)
make.width.equalTo(auto(60))
}
merchantLabel.snp.makeConstraints { make in
make.centerY.equalTo(merchantTitleLabel)
make.left.equalTo(merchantTitleLabel.snp.right)
make.right.equalTo(-auto(20))
}
carTypeTitleLabel.snp.makeConstraints { make in
make.top.equalTo(merchantLabel.snp.bottom).offset(auto(8))
make.left.equalTo(typeLabel)
make.width.equalTo(merchantTitleLabel)
}
carTypeLabel.snp.makeConstraints { make in
make.top.equalTo(carTypeTitleLabel)
make.left.equalTo(carTypeTitleLabel.snp.right)
make.right.equalTo(-auto(20))
}
positionTitleLabel.snp.makeConstraints { make in
make.top.equalTo(carTypeLabel.snp.bottom).offset(auto(8))
make.left.equalTo(typeLabel)
make.width.equalTo(merchantTitleLabel)
}
positionLabel.snp.makeConstraints { make in
make.top.equalTo(positionTitleLabel)
make.left.equalTo(positionTitleLabel.snp.right)
make.right.equalTo(-auto(20))
}
juheTitleLabel.snp.makeConstraints { make in
make.top.equalTo(positionLabel.snp.bottom).offset(auto(8))
make.left.equalTo(typeLabel)
make.width.equalTo(merchantTitleLabel)
}
juheButton.snp.makeConstraints { make in
make.centerY.equalTo(juheTitleLabel)
make.left.equalTo(juheTitleLabel.snp.right)
make.right.lessThanOrEqualTo(-auto(20))
make.height.equalTo(auto(17))
}
serviceTitleLabel.snp.makeConstraints { make in
make.top.equalTo(juheButton.snp.bottom).offset(auto(8))
make.left.equalTo(typeLabel)
make.width.equalTo(merchantTitleLabel)
}
serviceLabel.snp.makeConstraints { make in
make.top.equalTo(serviceTitleLabel)
make.left.equalTo(serviceTitleLabel.snp.right)
make.right.equalTo(-auto(20))
}
serviceNoticeView.snp.makeConstraints { make in
make.top.equalTo(serviceLabel.snp.bottom).offset(auto(4))
make.left.equalTo(auto(10))
make.right.equalTo(-auto(10))
}
serviceNoticeLabel.snp.makeConstraints { make in
make.top.left.equalToSuperview().offset(auto(5))
make.bottom.right.equalToSuperview().offset(-auto(5))
}
destinationTitleLabel.snp.makeConstraints { make in
make.top.equalTo(serviceNoticeView.snp.bottom).offset(auto(4))
make.left.equalTo(typeLabel)
make.width.equalTo(merchantTitleLabel)
}
destinationLabel.snp.makeConstraints { make in
make.top.equalTo(destinationTitleLabel)
make.left.equalTo(destinationTitleLabel.snp.right)
make.right.equalTo(-auto(20))
}
// destinationNoticeView.snp.makeConstraints { make in
// make.top.equalTo(destinationLabel.snp.bottom).offset(auto(4))
// make.left.equalTo(auto(10))
// make.right.equalTo(-auto(10))
// }
//
// destinationNoticeLabel.snp.makeConstraints { make in
// make.top.left.equalToSuperview().offset(auto(5))
// make.bottom.right.equalToSuperview().offset(-auto(5))
// }
reserveTitleLabel.snp.makeConstraints { make in
make.top.equalTo(destinationLabel.snp.bottom).offset(auto(8))
make.left.equalTo(typeLabel)
make.width.equalTo(merchantTitleLabel)
}
reserveLabel.snp.makeConstraints { make in
make.centerY.equalTo(reserveTitleLabel)
make.left.equalTo(reserveTitleLabel.snp.right)
}
photoTitleLabel.snp.makeConstraints { make in
make.left.equalTo(typeLabel)
make.top.equalTo(reserveTitleLabel.snp.bottom).offset(auto(8))
make.width.equalTo(merchantTitleLabel)
}
photoView.snp.makeConstraints { make in
make.left.equalTo(photoTitleLabel.snp.right)
make.top.equalTo(photoTitleLabel)
make.right.equalToSuperview().offset(-auto(5))
make.height.equalTo(auto(50))
}
photoCollectionView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
dispatchButton.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-auto(8))
make.top.equalTo(contactButton)
make.width.equalTo(auto(80))
make.height.equalTo(auto(30))
}
contactButton.snp.makeConstraints { make in
make.right.equalTo(dispatchButton.snp.left).offset(-auto(5))
make.width.equalTo(auto(80))
make.height.equalTo(auto(30))
make.top.equalTo(photoView.snp.bottom).offset(auto(10))
make.bottom.equalToSuperview().offset(-auto(10))
}
reportButton.snp.makeConstraints { make in
make.right.equalTo(contactButton.snp.left).offset(-auto(5))
make.top.equalTo(contactButton)
make.width.equalTo(auto(80))
make.height.equalTo(auto(30))
}
}
required public init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func layoutSubviews() {
super.layoutSubviews()
dispatchLayer.frame = CGRectMake(0, 0, auto(80), auto(30))
contactButton.dd_customize(with: .ImageLeftPaddingTitleRightWithWholeCenter, padding: 3)
juheButton.dd_customize(with: .ImageRightPaddingTitleLeftWithWholeCenter, padding: 3)
}
override func prepareForReuse() {
super.prepareForReuse()
disposeBag = DisposeBag()
}
}
class RescuePendingDispatchPhotoCell : DDCollectionViewCell {
public let imageView : DDImageView
public let dateLabel : DDLabel
override init(frame: CGRect) {
imageView = DDImageView.init()
dateLabel = DDLabel.dd_init(withText: "", font: .regularFont(12), textColor: .white)
super.init(frame: frame)
contentView.backgroundColor = .hex("F4F5F7")
imageView.contentMode = .scaleAspectFill
imageView.layer.masksToBounds = true
addSubview(imageView)
addSubview(dateLabel)
imageView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
dateLabel.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-auto(2))
make.bottom.equalToSuperview().offset(-auto(2))
}
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
class RescueIsIngCell : DDTableViewCell {
public let radiusView : DDView
public let typeLabel : DDLabel
public let orderNumLabel : DDLabel
public let orderStatusTitleLabel : DDLabel
public let orderStatusLabel : DDLabel
public let line : DDView
public let orderDateLabel : DDLabel
public let driverLabel : DDLabel
public let serviceTitleLabel : DDLabel
public let serviceLabel : DDLabel
public let destinationTitleLabel : DDLabel
public let destinationLabel : DDLabel
public let contactButton : DDButton
public let dispatchButton : DDButton
public let reportButton : DDButton
public let reportDetailButton : DDButton
public var disposeBag : DisposeBag
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
radiusView = DDView.init()
typeLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(13)), textColor: .hex("000000").alpha(0.85))
orderNumLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(11)), textColor: .hex("000000").alpha(0.55))
orderStatusTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5))
orderStatusLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("E69B0B"))
line = DDView.init()
orderDateLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("252525"))
driverLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("252525"))
serviceTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5))
serviceLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000"))
destinationTitleLabel = DDLabel.dd_init(withText: "", font: .mediumFont(auto(12)), textColor: .hex("000000").alpha(0.5))
destinationLabel = DDLabel.dd_init(withText: "", font: .regularFont(auto(12)), textColor: .hex("000000"))
contactButton = DDButton.dd_initCustom()
contactButton.titleLabel?.font = .mediumFont(13)
contactButton.setTitleColor(.hex("000000").alpha(0.7), for: .normal)
dispatchButton = DDButton.dd_initCustom()
dispatchButton.titleLabel?.font = .mediumFont(13)
dispatchButton.setTitleColor(.hex("000000").alpha(0.7), for: .normal)
reportButton = DDButton.dd_initCustom()
reportButton.titleLabel?.font = .mediumFont(13)
reportButton.setTitleColor(.hex("FFFFFF"), for: .normal)
reportDetailButton = DDButton.dd_initCustom()
reportDetailButton.titleLabel?.font = .mediumFont(13)
reportDetailButton.setTitleColor(.hex("000000").alpha(0.7), for: .normal)
disposeBag = DisposeBag()
super.init(style: style, reuseIdentifier: reuseIdentifier)
contentView.backgroundColor = .hex("F4F5F7")
radiusView.layer.cornerRadius = auto(6)
radiusView.layer.shadowColor = UIColor.black(alpha: 0.1).cgColor
radiusView.layer.shadowOpacity = 1.0
radiusView.layer.shadowRadius = 3
radiusView.layer.shadowOffset = CGSize(width: 0, height: 3)
radiusView.backgroundColor = .white
contentView.addSubview(radiusView)
radiusView.addSubview(typeLabel)
radiusView.addSubview(orderNumLabel)
radiusView.addSubview(orderStatusTitleLabel)
orderStatusLabel.numberOfLines = 0
radiusView.addSubview(orderStatusLabel)
radiusView.addSubview(line)
radiusView.addSubview(orderDateLabel)
radiusView.addSubview(driverLabel)
radiusView.addSubview(serviceTitleLabel)
serviceLabel.numberOfLines = 0
radiusView.addSubview(serviceLabel)
radiusView.addSubview(destinationTitleLabel)
destinationLabel.numberOfLines = 0
radiusView.addSubview(destinationLabel)
contactButton.layer.borderColor = UIColor.hex("DDDDDD").cgColor
contactButton.layer.borderWidth = 1
contactButton.layer.cornerRadius = auto(4)
contactButton.setImage(UIImage(named: "rescue_orderDispatch_call"), for: .normal)
radiusView.addSubview(contactButton)
dispatchButton.layer.borderColor = UIColor.hex("DDDDDD").cgColor
dispatchButton.layer.borderWidth = 1
dispatchButton.layer.cornerRadius = auto(4)
radiusView.addSubview(dispatchButton)
reportButton.layer.cornerRadius = auto(4)
reportButton.layer.masksToBounds = true
reportButton.backgroundColor = .hex("2A5094")
radiusView.addSubview(reportButton)
reportDetailButton.layer.borderColor = UIColor.hex("DDDDDD").cgColor
reportDetailButton.layer.borderWidth = 1
reportDetailButton.layer.cornerRadius = auto(4)
radiusView.addSubview(reportDetailButton)
radiusView.snp.makeConstraints { make in
make.left.equalTo(auto(12))
make.right.equalTo(-auto(12))
make.top.equalTo(0)
make.bottom.equalTo(-auto(12))
}
typeLabel.snp.makeConstraints { make in
make.left.equalTo(auto(18))
make.top.equalTo(auto(13))
}
orderNumLabel.snp.makeConstraints { make in
make.centerY.equalTo(typeLabel)
make.left.equalTo(typeLabel.snp.right).offset(auto(10))
}
line.snp.makeConstraints { make in
make.top.equalTo(typeLabel.snp.bottom).offset(auto(7))
make.left.right.equalTo(0)
make.height.equalTo(0.5)
}
orderDateLabel.snp.makeConstraints { make in
make.left.equalTo(typeLabel)
make.top.equalTo(line.snp.bottom).offset(auto(5))
}
driverLabel.snp.makeConstraints { make in
make.left.equalTo(orderDateLabel.snp.right).offset(auto(10))
make.centerY.equalTo(orderDateLabel)
}
orderStatusTitleLabel.snp.makeConstraints { make in
make.top.equalTo(orderDateLabel.snp.bottom).offset(auto(8))
make.left.equalTo(typeLabel)
make.width.equalTo(auto(60))
}
orderStatusLabel.snp.makeConstraints { make in
make.right.equalTo(-auto(20))
make.top.equalTo(orderStatusTitleLabel)
make.left.equalTo(orderStatusTitleLabel.snp.right)
}
serviceTitleLabel.snp.makeConstraints { make in
make.top.equalTo(orderStatusLabel.snp.bottom).offset(auto(8))
make.left.equalTo(typeLabel)
make.width.equalTo(orderStatusTitleLabel)
}
serviceLabel.snp.makeConstraints { make in
make.top.equalTo(serviceTitleLabel)
make.left.equalTo(serviceTitleLabel.snp.right)
make.right.equalTo(-auto(20))
}
destinationTitleLabel.snp.makeConstraints { make in
make.top.equalTo(serviceLabel.snp.bottom).offset(auto(8))
make.left.equalTo(typeLabel)
make.width.equalTo(serviceTitleLabel)
}
destinationLabel.snp.makeConstraints { make in
make.top.equalTo(destinationTitleLabel)
make.left.equalTo(destinationTitleLabel.snp.right)
make.right.equalTo(-auto(20))
}
reportButton.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-auto(8))
make.width.equalTo(auto(80))
make.height.equalTo(auto(30))
make.top.equalTo(contactButton)
}
reportDetailButton.snp.makeConstraints { make in
make.right.equalTo(reportButton.snp.left).offset(-auto(5))
make.top.equalTo(contactButton)
make.width.equalTo(auto(80))
make.height.equalTo(auto(30))
}
dispatchButton.snp.makeConstraints { make in
make.right.equalTo(reportDetailButton.snp.left).offset(-auto(5))
make.top.equalTo(contactButton)
make.width.equalTo(auto(80))
make.height.equalTo(auto(30))
}
contactButton.snp.makeConstraints { make in
make.right.equalTo(dispatchButton.snp.left).offset(-auto(5))
make.width.equalTo(auto(80))
make.height.equalTo(auto(30))
make.top.equalTo(destinationLabel.snp.bottom).offset(auto(10))
make.bottom.equalToSuperview().offset(-auto(10))
}
}
required public init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func prepareForReuse() {
super.prepareForReuse()
disposeBag = DisposeBag()
}
}
// MARK: View
class RescuePendingOrderView : DDView {
public let tableView = DDTableView.init(frame: CGRectZero)
override init(frame: CGRect) {
super.init(frame: frame)
tableView.separatorStyle = .none
addSubview(tableView)
tableView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
}
required public init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
class RescuePendingDispatchView : DDView {
public let tableView = DDTableView.init(frame: CGRectZero)
override init(frame: CGRect) {
super.init(frame: frame)
tableView.separatorStyle = .none
addSubview(tableView)
tableView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
}
required public init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
class RescueIsIngView : DDView {
public let tableView = DDTableView.init(frame: CGRectZero)
override init(frame: CGRect) {
super.init(frame: frame)
tableView.separatorStyle = .none
addSubview(tableView)
tableView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
}
required public init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
class TYCyclePagerViewCell : UICollectionViewCell {
var imageView : UIImageView
override init(frame: CGRect) {
imageView = UIImageView()
super.init(frame: frame)
addSubview(imageView)
imageView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}