younger_times
2023-05-05 557ae747976945dbd60caca93384a71d281c737b
新增
18个文件已添加
12个文件已修改
868 ■■■■■ 已修改文件
BrokerDriver.xcodeproj/project.pbxproj 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Btn/btn_time.imageset/Contents.json 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Btn/btn_time.imageset/btn_time@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Icon/icon_box.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Icon/icon_box.imageset/icon_box@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Icon/icon_box.imageset/icon_box@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Icon/icon_seletedBox.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Icon/icon_seletedBox.imageset/icon_seletedBox@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Icon/icon_seletedBox.imageset/icon_seletedBox@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/TCell/AttachTCell.swift 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/TCell/NoteContentTCell.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/TCell/TroubleHistoryTCell.swift 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/TCell/TroubleHistoryTCell.xib 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/TCell/TroubleTCell.swift 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/TCell/TroubleTCell.xib 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/VC/HomeDetailAttachVC.swift 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/VC/HomeDetailContentVC.swift 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/VC/HomeDetailMapVC.swift 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/VC/HomeDetailNoteVC.swift 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/VC/HomeDetailVC.swift 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/VC/HomePageVC.swift 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/VC/HomeVC.swift 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/VC/TroubleHistoryContentVC.swift 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/VC/TroubleHistoryContentVC.xib 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/VC/TroubleHistoryListVC.swift 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/VC/TroubleListVC.swift 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/View/TroubleFootView.swift 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/View/TroubleFootView.xib 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Models/OrderModel.swift 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Network/Services.swift 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver.xcodeproj/project.pbxproj
@@ -34,6 +34,16 @@
        135FD1E52A0393B60048BE7A /* AddTextView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 135FD1E42A0393B60048BE7A /* AddTextView.xib */; };
        135FD1E72A03A1E20048BE7A /* CommonAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 135FD1E62A03A1E20048BE7A /* CommonAlertView.swift */; };
        135FD1E92A03A1E80048BE7A /* CommonAlertView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 135FD1E82A03A1E80048BE7A /* CommonAlertView.xib */; };
        135FD1EB2A0498F40048BE7A /* TroubleListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 135FD1EA2A0498F40048BE7A /* TroubleListVC.swift */; };
        135FD1EE2A049DD80048BE7A /* TroubleTCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 135FD1EC2A049DD80048BE7A /* TroubleTCell.swift */; };
        135FD1EF2A049DD80048BE7A /* TroubleTCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 135FD1ED2A049DD80048BE7A /* TroubleTCell.xib */; };
        135FD1F12A04A86B0048BE7A /* TroubleFootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 135FD1F02A04A86B0048BE7A /* TroubleFootView.swift */; };
        135FD1F32A04A87C0048BE7A /* TroubleFootView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 135FD1F22A04A87C0048BE7A /* TroubleFootView.xib */; };
        135FD1F52A04B3B40048BE7A /* TroubleHistoryListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 135FD1F42A04B3B40048BE7A /* TroubleHistoryListVC.swift */; };
        135FD1F82A04B4150048BE7A /* TroubleHistoryTCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 135FD1F62A04B4150048BE7A /* TroubleHistoryTCell.swift */; };
        135FD1F92A04B4150048BE7A /* TroubleHistoryTCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 135FD1F72A04B4150048BE7A /* TroubleHistoryTCell.xib */; };
        135FD1FC2A04BC650048BE7A /* TroubleHistoryContentVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 135FD1FA2A04BC650048BE7A /* TroubleHistoryContentVC.swift */; };
        135FD1FD2A04BC650048BE7A /* TroubleHistoryContentVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 135FD1FB2A04BC650048BE7A /* TroubleHistoryContentVC.xib */; };
        13795C0B2A035EF30026320D /* AttachTypeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13795C0A2A035EF30026320D /* AttachTypeView.swift */; };
        13795C0D2A035F0E0026320D /* AttachTypeView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13795C0C2A035F0E0026320D /* AttachTypeView.xib */; };
        138DA4B829F62F9500A71FE7 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138DA4B729F62F9500A71FE7 /* AppDelegate.swift */; };
@@ -110,6 +120,16 @@
        135FD1E42A0393B60048BE7A /* AddTextView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AddTextView.xib; sourceTree = "<group>"; };
        135FD1E62A03A1E20048BE7A /* CommonAlertView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommonAlertView.swift; sourceTree = "<group>"; };
        135FD1E82A03A1E80048BE7A /* CommonAlertView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CommonAlertView.xib; sourceTree = "<group>"; };
        135FD1EA2A0498F40048BE7A /* TroubleListVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TroubleListVC.swift; sourceTree = "<group>"; };
        135FD1EC2A049DD80048BE7A /* TroubleTCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TroubleTCell.swift; sourceTree = "<group>"; };
        135FD1ED2A049DD80048BE7A /* TroubleTCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TroubleTCell.xib; sourceTree = "<group>"; };
        135FD1F02A04A86B0048BE7A /* TroubleFootView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TroubleFootView.swift; sourceTree = "<group>"; };
        135FD1F22A04A87C0048BE7A /* TroubleFootView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TroubleFootView.xib; sourceTree = "<group>"; };
        135FD1F42A04B3B40048BE7A /* TroubleHistoryListVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TroubleHistoryListVC.swift; sourceTree = "<group>"; };
        135FD1F62A04B4150048BE7A /* TroubleHistoryTCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TroubleHistoryTCell.swift; sourceTree = "<group>"; };
        135FD1F72A04B4150048BE7A /* TroubleHistoryTCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TroubleHistoryTCell.xib; sourceTree = "<group>"; };
        135FD1FA2A04BC650048BE7A /* TroubleHistoryContentVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TroubleHistoryContentVC.swift; sourceTree = "<group>"; };
        135FD1FB2A04BC650048BE7A /* TroubleHistoryContentVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TroubleHistoryContentVC.xib; sourceTree = "<group>"; };
        13795C0A2A035EF30026320D /* AttachTypeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttachTypeView.swift; sourceTree = "<group>"; };
        13795C0C2A035F0E0026320D /* AttachTypeView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AttachTypeView.xib; sourceTree = "<group>"; };
        138DA4B429F62F9500A71FE7 /* BrokerDriver.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BrokerDriver.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -200,6 +220,8 @@
                13045E7829F7C312004E10BE /* AttachHeadView.xib */,
                13F536C929FA7AA900A7937A /* DatePickerView.swift */,
                13F536CB29FA7AB000A7937A /* DatePickerView.xib */,
                135FD1F02A04A86B0048BE7A /* TroubleFootView.swift */,
                135FD1F22A04A87C0048BE7A /* TroubleFootView.xib */,
            );
            path = View;
            sourceTree = "<group>";
@@ -337,6 +359,10 @@
                1309AE1029F7919900F5FA26 /* HomeDetailAttachVC.xib */,
                1309AE1329F791BA00F5FA26 /* HomeDetailNoteVC.swift */,
                1309AE1429F791BA00F5FA26 /* HomeDetailNoteVC.xib */,
                135FD1EA2A0498F40048BE7A /* TroubleListVC.swift */,
                135FD1F42A04B3B40048BE7A /* TroubleHistoryListVC.swift */,
                135FD1FA2A04BC650048BE7A /* TroubleHistoryContentVC.swift */,
                135FD1FB2A04BC650048BE7A /* TroubleHistoryContentVC.xib */,
            );
            path = VC;
            sourceTree = "<group>";
@@ -354,6 +380,10 @@
                13F536B129F7D0DF00A7937A /* NoteContentTCell.xib */,
                13F536C529FA527A00A7937A /* HomeDetailContentTCell.swift */,
                13F536C629FA527A00A7937A /* HomeDetailContentTCell.xib */,
                135FD1EC2A049DD80048BE7A /* TroubleTCell.swift */,
                135FD1ED2A049DD80048BE7A /* TroubleTCell.xib */,
                135FD1F62A04B4150048BE7A /* TroubleHistoryTCell.swift */,
                135FD1F72A04B4150048BE7A /* TroubleHistoryTCell.xib */,
            );
            path = TCell;
            sourceTree = "<group>";
@@ -480,13 +510,16 @@
                139F0F8329F689F9007D9EA4 /* HomeItemTCell.xib in Resources */,
                1309AE1229F7919900F5FA26 /* HomeDetailAttachVC.xib in Resources */,
                13045E7D29F7C4D9004E10BE /* AttachTCell.xib in Resources */,
                135FD1FD2A04BC650048BE7A /* TroubleHistoryContentVC.xib in Resources */,
                1309AE0029F7848C00F5FA26 /* WalletTCell.xib in Resources */,
                13941CE429F763C900AB569F /* PersonalCenterVC.xib in Resources */,
                13795C0D2A035F0E0026320D /* AttachTypeView.xib in Resources */,
                138DA4C429F62F9700A71FE7 /* LaunchScreen.storyboard in Resources */,
                138DA4C129F62F9700A71FE7 /* Assets.xcassets in Resources */,
                135FD1F32A04A87C0048BE7A /* TroubleFootView.xib in Resources */,
                130F4EF229F7B86000937687 /* CargoTableHeaderView.xib in Resources */,
                1309ADF829F77F7700F5FA26 /* Impact.ttf in Resources */,
                135FD1F92A04B4150048BE7A /* TroubleHistoryTCell.xib in Resources */,
                135FD1E52A0393B60048BE7A /* AddTextView.xib in Resources */,
                138DA4DA29F6305600A71FE7 /* LoginVC.xib in Resources */,
                13F536B329F7D0DF00A7937A /* NoteContentTCell.xib in Resources */,
@@ -497,6 +530,7 @@
                1309AE1629F791BA00F5FA26 /* HomeDetailNoteVC.xib in Resources */,
                13F536C829FA527A00A7937A /* HomeDetailContentTCell.xib in Resources */,
                1309AE0429F788D900F5FA26 /* PersonalDataVC.xib in Resources */,
                135FD1EF2A049DD80048BE7A /* TroubleTCell.xib in Resources */,
                13941CEF29F77A7F00AB569F /* PersonalWalletVC.xib in Resources */,
                13F536CC29FA7AB000A7937A /* DatePickerView.xib in Resources */,
                135FD1E92A03A1E80048BE7A /* CommonAlertView.xib in Resources */,
@@ -558,6 +592,7 @@
                138DA4B829F62F9500A71FE7 /* AppDelegate.swift in Sources */,
                139F0F7329F65497007D9EA4 /* ForgotPwdVC.swift in Sources */,
                13F536C729FA527A00A7937A /* HomeDetailContentTCell.swift in Sources */,
                135FD1FC2A04BC650048BE7A /* TroubleHistoryContentVC.swift in Sources */,
                13941CE829F76BF400AB569F /* CompanyVC.swift in Sources */,
                1309AE0829F78D1400F5FA26 /* HomeDetailMenuVC.swift in Sources */,
                13795C0B2A035EF30026320D /* AttachTypeView.swift in Sources */,
@@ -568,8 +603,11 @@
                13941CDF29F6901D00AB569F /* BaseTableView.swift in Sources */,
                1309AE0A29F78D9200F5FA26 /* HomeDetailMapVC.swift in Sources */,
                13F536C029F927E900A7937A /* OrderViewModel.swift in Sources */,
                135FD1EB2A0498F40048BE7A /* TroubleListVC.swift in Sources */,
                135FD1EE2A049DD80048BE7A /* TroubleTCell.swift in Sources */,
                139F0F7829F6589F007D9EA4 /* HomeVC.swift in Sources */,
                130F4EEC29F7B6C100937687 /* CargoInfoTCell.swift in Sources */,
                135FD1F12A04A86B0048BE7A /* TroubleFootView.swift in Sources */,
                1309AE1129F7919900F5FA26 /* HomeDetailAttachVC.swift in Sources */,
                139F0F7A29F66EB7007D9EA4 /* HomeHeaderVC.swift in Sources */,
                138DA4D929F6305600A71FE7 /* LoginVC.swift in Sources */,
@@ -589,12 +627,14 @@
                139F0F7C29F67091007D9EA4 /* HomeMenuVC.swift in Sources */,
                1309AE0629F78C6700F5FA26 /* HomeDetailVC.swift in Sources */,
                13045E7C29F7C4D9004E10BE /* AttachTCell.swift in Sources */,
                135FD1F82A04B4150048BE7A /* TroubleHistoryTCell.swift in Sources */,
                139F0F8229F689F9007D9EA4 /* HomeItemTCell.swift in Sources */,
                135FD1E32A0393B00048BE7A /* AddTextView.swift in Sources */,
                1309AE1529F791BA00F5FA26 /* HomeDetailNoteVC.swift in Sources */,
                13F536BE29F8CECE00A7937A /* UserViewModel.swift in Sources */,
                13941CEB29F7728300AB569F /* TapButton.swift in Sources */,
                130F4EF029F7B81A00937687 /* CargoTableHeaderView.swift in Sources */,
                135FD1F52A04B3B40048BE7A /* TroubleHistoryListVC.swift in Sources */,
                138DA4BA29F62F9500A71FE7 /* SceneDelegate.swift in Sources */,
                138DA4D729F6305600A71FE7 /* BaseNavigationController.swift in Sources */,
                138DA4D529F6305600A71FE7 /* Def.swift in Sources */,
BrokerDriver/Assets.xcassets/Btn/btn_time.imageset/Contents.json
New file
@@ -0,0 +1,21 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "btn_time@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
BrokerDriver/Assets.xcassets/Btn/btn_time.imageset/btn_time@2x.png
BrokerDriver/Assets.xcassets/Icon/icon_box.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "icon_box@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "icon_box@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
BrokerDriver/Assets.xcassets/Icon/icon_box.imageset/icon_box@2x.png
BrokerDriver/Assets.xcassets/Icon/icon_box.imageset/icon_box@3x.png
BrokerDriver/Assets.xcassets/Icon/icon_seletedBox.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "icon_seletedBox@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "icon_seletedBox@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
BrokerDriver/Assets.xcassets/Icon/icon_seletedBox.imageset/icon_seletedBox@2x.png
BrokerDriver/Assets.xcassets/Icon/icon_seletedBox.imageset/icon_seletedBox@3x.png
BrokerDriver/Home/TCell/AttachTCell.swift
@@ -33,6 +33,9 @@
            guard let weakSelf = self else { return }
            Services.delAttachment(id: weakSelf.recordModel!.id).subscribe(onNext: { data in
                NotificationCenter.default.post(name: RefresgDetailAttach_Noti, object: nil)
                Services.deleteFile(weakSelf.recordModel!.file).subscribe(onNext: {data in
                }).disposed(by: weakSelf.disposeBag)
            }) { error in
            }.disposed(by: weakSelf.disposeBag)
BrokerDriver/Home/TCell/NoteContentTCell.swift
@@ -14,7 +14,7 @@
    var indexPath:IndexPath!
    private var disposeBag:DisposeBag!
    var contentModel:NoteOrTroubleContentModel?{
    var contentModel:NoteContentModel?{
        didSet{
            label_content.text = contentModel?.describe ?? ""
        }
BrokerDriver/Home/TCell/TroubleHistoryTCell.swift
New file
@@ -0,0 +1,19 @@
//
//  TroubleHistoryTCell.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/5/5.
//
import UIKit
class TroubleHistoryTCell: UITableViewCell {
    @IBOutlet weak var label_title: UILabel!
    @IBOutlet weak var label_time: UILabel!
    override func awakeFromNib() {
        super.awakeFromNib()
        selectionStyle = .none
    }
}
BrokerDriver/Home/TCell/TroubleHistoryTCell.xib
New file
@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <objects>
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="_TroubleHistoryTCell" rowHeight="95" id="KGk-i7-Jjw" customClass="TroubleHistoryTCell" customModule="BrokerDriver" customModuleProvider="target">
            <rect key="frame" x="0.0" y="0.0" width="403" height="95"/>
            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
                <rect key="frame" x="0.0" y="0.0" width="403" height="95"/>
                <autoresizingMask key="autoresizingMask"/>
                <subviews>
                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ewn-ln-JH5">
                        <rect key="frame" x="13" y="12" width="37.666666666666664" height="17"/>
                        <constraints>
                            <constraint firstAttribute="height" constant="17" id="FmV-ma-bKb"/>
                        </constraints>
                        <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/>
                        <nil key="textColor"/>
                        <nil key="highlightedColor"/>
                    </label>
                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1pB-RH-lyd">
                        <rect key="frame" x="13" y="37" width="31" height="48.666666666666657"/>
                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
                        <color key="textColor" red="0.22352941176470587" green="0.22352941176470587" blue="0.22352941176470587" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                        <nil key="highlightedColor"/>
                    </label>
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_arrow" translatesAutoresizingMaskIntoConstraints="NO" id="FFH-Vq-ggj">
                        <rect key="frame" x="382" y="41.666666666666664" width="7" height="12"/>
                    </imageView>
                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0Bi-bo-MGE">
                        <rect key="frame" x="15" y="94.666666666666671" width="373" height="0.3333333333333286"/>
                        <color key="backgroundColor" red="0.84705882352941175" green="0.84705882352941175" blue="0.84705882352941175" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                        <constraints>
                            <constraint firstAttribute="height" constant="0.5" id="di7-Mo-t1T"/>
                        </constraints>
                    </view>
                </subviews>
                <constraints>
                    <constraint firstAttribute="bottom" secondItem="0Bi-bo-MGE" secondAttribute="bottom" id="1Vo-rQ-Wim"/>
                    <constraint firstItem="0Bi-bo-MGE" firstAttribute="top" secondItem="1pB-RH-lyd" secondAttribute="bottom" constant="9" id="CG0-18-Ygn"/>
                    <constraint firstItem="1pB-RH-lyd" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="13" id="SxT-Rd-eiR"/>
                    <constraint firstItem="0Bi-bo-MGE" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="15" id="X8s-KZ-3Q6"/>
                    <constraint firstItem="ewn-ln-JH5" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="13" id="Z8j-6m-OJk"/>
                    <constraint firstAttribute="trailing" secondItem="FFH-Vq-ggj" secondAttribute="trailing" constant="14" id="axw-lT-W3I"/>
                    <constraint firstItem="1pB-RH-lyd" firstAttribute="top" secondItem="ewn-ln-JH5" secondAttribute="bottom" constant="8" id="dNV-s1-H4K"/>
                    <constraint firstItem="ewn-ln-JH5" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="12" id="dgN-q8-zq8"/>
                    <constraint firstItem="FFH-Vq-ggj" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="hXH-dT-SQb"/>
                    <constraint firstAttribute="trailing" secondItem="0Bi-bo-MGE" secondAttribute="trailing" constant="15" id="lRe-z8-stY"/>
                </constraints>
            </tableViewCellContentView>
            <connections>
                <outlet property="label_time" destination="1pB-RH-lyd" id="LTd-eg-s2A"/>
                <outlet property="label_title" destination="ewn-ln-JH5" id="Jft-Ls-2P3"/>
            </connections>
            <point key="canvasLocation" x="193.12977099236642" y="36.971830985915496"/>
        </tableViewCell>
    </objects>
    <resources>
        <image name="icon_arrow" width="7" height="12"/>
    </resources>
</document>
BrokerDriver/Home/TCell/TroubleTCell.swift
New file
@@ -0,0 +1,19 @@
//
//  TroubleTCell.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/5/5.
//
import UIKit
class TroubleTCell: UITableViewCell {
    @IBOutlet weak var label_content: UILabel!
    @IBOutlet weak var boxImage: UIImageView!
    override func awakeFromNib() {
        super.awakeFromNib()
        selectionStyle = .none
    }
}
BrokerDriver/Home/TCell/TroubleTCell.xib
New file
@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <objects>
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="_TroubleTCell" rowHeight="132" id="KGk-i7-Jjw" customClass="TroubleTCell" customModule="BrokerDriver" customModuleProvider="target">
            <rect key="frame" x="0.0" y="0.0" width="490" height="132"/>
            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
                <rect key="frame" x="0.0" y="0.0" width="490" height="132"/>
                <autoresizingMask key="autoresizingMask"/>
                <subviews>
                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="c0k-np-IxU">
                        <rect key="frame" x="15" y="15" width="423" height="102"/>
                        <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/>
                        <color key="textColor" red="0.22352941176470587" green="0.22352941176470587" blue="0.22352941176470587" alpha="0.84705882352941175" colorSpace="custom" customColorSpace="sRGB"/>
                        <nil key="highlightedColor"/>
                    </label>
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_box" translatesAutoresizingMaskIntoConstraints="NO" id="qCa-C9-e9q">
                        <rect key="frame" x="453" y="55" width="22" height="22"/>
                        <constraints>
                            <constraint firstAttribute="height" constant="22" id="9Se-vJ-ahv"/>
                            <constraint firstAttribute="width" constant="22" id="kKe-AF-pj4"/>
                        </constraints>
                    </imageView>
                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="con-1g-WBl">
                        <rect key="frame" x="15" y="131.66666666666666" width="460" height="0.33333333333334281"/>
                        <color key="backgroundColor" red="0.84705882352941175" green="0.84705882352941175" blue="0.84705882352941175" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                        <constraints>
                            <constraint firstAttribute="height" constant="0.5" id="DJZ-WY-tfa"/>
                        </constraints>
                    </view>
                </subviews>
                <constraints>
                    <constraint firstItem="c0k-np-IxU" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="15" id="382-bY-aMe"/>
                    <constraint firstItem="qCa-C9-e9q" firstAttribute="leading" secondItem="c0k-np-IxU" secondAttribute="trailing" constant="15" id="4qV-o0-rSM"/>
                    <constraint firstItem="qCa-C9-e9q" firstAttribute="centerY" secondItem="c0k-np-IxU" secondAttribute="centerY" id="4s8-gd-n5E"/>
                    <constraint firstItem="con-1g-WBl" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="15" id="Cbx-Tq-sdM"/>
                    <constraint firstAttribute="bottom" secondItem="con-1g-WBl" secondAttribute="bottom" id="FBV-F3-RHA"/>
                    <constraint firstAttribute="trailing" secondItem="con-1g-WBl" secondAttribute="trailing" constant="15" id="KI8-Kl-s54"/>
                    <constraint firstItem="c0k-np-IxU" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="15" id="Mh9-Dd-MPs"/>
                    <constraint firstAttribute="bottom" secondItem="c0k-np-IxU" secondAttribute="bottom" constant="15" id="YSi-RQ-BFl"/>
                    <constraint firstAttribute="trailing" secondItem="qCa-C9-e9q" secondAttribute="trailing" constant="15" id="goq-Am-RTy"/>
                </constraints>
            </tableViewCellContentView>
            <viewLayoutGuide key="safeArea" id="njF-e1-oar"/>
            <connections>
                <outlet property="boxImage" destination="qCa-C9-e9q" id="2iI-Z4-xZs"/>
                <outlet property="label_content" destination="c0k-np-IxU" id="Zsa-ZH-L6c"/>
            </connections>
            <point key="canvasLocation" x="268.70229007633588" y="51.408450704225352"/>
        </tableViewCell>
    </objects>
    <resources>
        <image name="icon_box" width="22" height="22"/>
    </resources>
</document>
BrokerDriver/Home/VC/HomeDetailAttachVC.swift
@@ -9,6 +9,7 @@
import RxSwift
import RxRelay
import JQTools
import FFPage
let RefresgDetailAttach_Noti = Notification.Name.init("RefresgDetailAttach_Noti")
@@ -19,6 +20,7 @@
    public let refreshStatus = BehaviorSubject(value: RefreshStatus.others)
    private var page = 1
    private var datas = [AttachmentRecordModel]()
    var adapterViewController:FFAdapterViewController!
    struct AttachmentType:HandyJSON {
        var orderId = ""
@@ -67,6 +69,13 @@
        }.disposed(by: disposeBag)
    }
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let offetY = -(scrollView.contentOffset.y - UIDevice.jq_safeEdges.top) + UIDevice.jq_safeEdges.top + 30
        if offetY >= 0 {
            adapterViewController.scrollview.contentOffset = scrollView.contentOffset
        }
    }
    private func getData(_ isHeader:Bool = true){
        if isHeader{
BrokerDriver/Home/VC/HomeDetailContentVC.swift
@@ -19,7 +19,6 @@
    @IBOutlet weak var contentTableView: UITableView!
    @IBOutlet weak var contentTableHeiCons: NSLayoutConstraint!
    @IBOutlet weak var label_BLN: UILabel!
        //    @IBOutlet weak var cargoTableView: UIView!
    var adapterViewController:FFAdapterViewController!
BrokerDriver/Home/VC/HomeDetailMapVC.swift
@@ -9,10 +9,48 @@
class HomeDetailMapVC: BaseViewController {
    private var troubleBtn:UIButton!
    private var orderId:String!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    required init(orderId:String) {
        super.init(nibName: nil, bundle: nil)
        self.orderId = orderId
    }
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    override func setUI() {
        super.setUI()
        troubleBtn = UIButton(type: .custom)
        troubleBtn.setTitle("Trouble", for: .normal)
        troubleBtn.cornerRadius = 6
        troubleBtn.jq_masksToBounds = false
        troubleBtn.setTitleColor(UIColor(hexStr: "#333333"), for: .normal)
        troubleBtn.titleLabel?.font = UIFont.systemFont(ofSize: 12, weight: .medium)
        troubleBtn.backgroundColor = UIColor.white
        troubleBtn.shadowColor = UIColor(hexStr: "#C2C2C2")
        troubleBtn.shadowOffset = CGSize(width: 0, height: 2)
        troubleBtn.shadowOpacity = 1
        troubleBtn.addTarget(self, action: #selector(troubleAction), for: .touchUpInside)
        view.addSubview(troubleBtn)
        troubleBtn.snp.makeConstraints { make in
            make.centerY.equalToSuperview()
            make.right.equalTo(-12)
            make.width.equalTo(61)
            make.height.equalTo(24)
        }
    }
    @objc func troubleAction(){
        let vc = TroubleListVC(orderId: orderId)
        push(vc: vc)
    }
}
BrokerDriver/Home/VC/HomeDetailNoteVC.swift
@@ -6,6 +6,7 @@
    //
import UIKit
import FFPage
let DetailNote_Noti = Notification.Name.init("DetailNote_Noti")
@@ -15,11 +16,12 @@
    private(set) var orderId:String!
    public let refreshStatus = BehaviorSubject(value: RefreshStatus.others)
    private var page = 1
    private var datas = [NoteOrTroubleContentModel]()
    private var datas = [NoteContentModel]()
    var adapterViewController:FFAdapterViewController!
    struct DetailNotModel:HandyJSON {
        var category:String?
        var describe = ""
        var describe:String?
        var orderId = ""
        var type:TextType = .note
        var driverId:Int? = UserViewModel.getUserInfo()?.id ?? 0
@@ -65,7 +67,7 @@
            page += 1
        }
        Services.orderNote(id: orderId, page: page, type: .note).subscribe(onNext: { data in
        Services.orderNote(id: orderId, page: page).subscribe(onNext: { data in
            if let model = data.data{
                if isHeader{
                    self.datas.removeAll()
@@ -102,6 +104,13 @@
        }).disposed(by: disposeBag)
    }
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let offetY = -(scrollView.contentOffset.y - UIDevice.jq_safeEdges.top) + UIDevice.jq_safeEdges.top + 30
        if offetY >= 0 {
            adapterViewController.scrollview.contentOffset = scrollView.contentOffset
        }
    }
    @IBAction func addNoteAction(_ sender: UIButton) {
        AddTextView.show(type: .note) { [weak self] text in
            guard let weakSelf = self else { return }
BrokerDriver/Home/VC/HomeDetailVC.swift
@@ -33,7 +33,7 @@
    }()
    lazy var headerViewController:HomeDetailMapVC = {
        let vc = HomeDetailMapVC()
        let vc = HomeDetailMapVC(orderId: orderId)
        return vc
    }()
@@ -91,9 +91,13 @@
            vc.adapterViewController = adapterViewController
            return vc
        }else if page == 1{
            return HomeDetailAttachVC(orderId: orderId)
            let vc = HomeDetailAttachVC(orderId: orderId)
            vc.adapterViewController = adapterViewController
            return vc
        }else if page == 2{
            return HomeDetailNoteVC(orderId: orderId)
            let vc = HomeDetailNoteVC(orderId: orderId)
            vc.adapterViewController = adapterViewController
            return vc
        }
        return UIViewController()
BrokerDriver/Home/VC/HomePageVC.swift
@@ -8,6 +8,7 @@
import UIKit
import RxSwift
import RxRelay
import FFPage
class HomePageVC: BaseViewController,Refreshable {
@@ -24,6 +25,7 @@
    var box:JQBox<(String?,Date?)>?
    private var containerNo:String?
    private var date:String?
    var adapterViewController:FFAdapterViewController!
    lazy private var tableView:BaseTableView = {
        let tableView = BaseTableView(frame: .zero, style: .plain)
@@ -96,6 +98,13 @@
    }
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let offetY = -(scrollView.contentOffset.y - UIDevice.jq_safeEdges.top) + UIDevice.jq_safeEdges.top + 30
        if offetY >= 0 {
            adapterViewController.scrollview.contentOffset = scrollView.contentOffset
        }
    }
    override func setUI() {
        super.setUI()
        view.backgroundColor = UIColor(hexStr: "#F9FAFF")
BrokerDriver/Home/VC/HomeVC.swift
@@ -90,8 +90,16 @@
        if page == 0{
             let vc = HomePageVC(style: .progress)
            vc.box = menuViewController.box
            vc.adapterViewController = adapterViewController
            return vc
        }
        return HomePageVC(style: .complete)
        if page == 1{
            let vc = HomePageVC(style: .complete)
            vc.adapterViewController = adapterViewController
            return vc
        }
        return UIViewController()
    }
}
BrokerDriver/Home/VC/TroubleHistoryContentVC.swift
New file
@@ -0,0 +1,41 @@
//
//  TroubleHistoryContentVC.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/5/5.
//
import UIKit
class TroubleHistoryContentVC: BaseViewController {
    @IBOutlet weak var label_title: UILabel!
    @IBOutlet weak var label_content: UILabel!
    private var model:TroubleContentModel!
    override func viewDidLoad() {
        super.viewDidLoad()
        title = "Trouble"
        label_title.text = model.category
        if model.describe.isEmpty{
            label_content.text = "Empty describe"
            label_content.textColor = UIColor(hexString: "#393939")?.withAlphaComponent(0.30)
        }else{
            label_content.text = model.describe
        }
    }
    required init(model:TroubleContentModel) {
        super.init(nibName: nil, bundle: nil)
        self.model = model
    }
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}
BrokerDriver/Home/VC/TroubleHistoryContentVC.xib
New file
@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="System colors in document resources" minToolsVersion="11.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <objects>
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="TroubleHistoryContentVC" customModule="BrokerDriver" customModuleProvider="target">
            <connections>
                <outlet property="label_content" destination="aw5-Ic-ju8" id="5b7-fN-rzO"/>
                <outlet property="label_title" destination="Qeg-gx-Upj" id="4lD-Xg-tB9"/>
                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
            </connections>
        </placeholder>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Qeg-gx-Upj">
                    <rect key="frame" x="15" y="82" width="363" height="17"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="17" id="NBE-3N-Ysy"/>
                    </constraints>
                    <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/>
                    <nil key="textColor"/>
                    <nil key="highlightedColor"/>
                </label>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wBw-kb-kSK">
                    <rect key="frame" x="15" y="115" width="363" height="0.6666666666666714"/>
                    <color key="backgroundColor" red="0.84705882349999995" green="0.84705882349999995" blue="0.84705882349999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="0.5" id="s6i-QD-bIc"/>
                    </constraints>
                </view>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aw5-Ic-ju8">
                    <rect key="frame" x="15" y="131.66666666666666" width="363" height="17"/>
                    <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/>
                    <nil key="textColor"/>
                    <nil key="highlightedColor"/>
                </label>
            </subviews>
            <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
            <constraints>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="Qeg-gx-Upj" secondAttribute="trailing" constant="15" id="5dI-AN-Oot"/>
                <constraint firstItem="Qeg-gx-Upj" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="23" id="H4x-EY-PvL"/>
                <constraint firstItem="wBw-kb-kSK" firstAttribute="top" secondItem="Qeg-gx-Upj" secondAttribute="bottom" constant="16" id="N62-Zx-5DU"/>
                <constraint firstItem="aw5-Ic-ju8" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="15" id="Zsi-JL-kxZ"/>
                <constraint firstItem="wBw-kb-kSK" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="15" id="e2b-gJ-7Sb"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="wBw-kb-kSK" secondAttribute="trailing" constant="15" id="fqi-Yz-tZ9"/>
                <constraint firstItem="Qeg-gx-Upj" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="15" id="fvE-q9-Jcn"/>
                <constraint firstItem="aw5-Ic-ju8" firstAttribute="top" secondItem="wBw-kb-kSK" secondAttribute="bottom" constant="16" id="izc-tV-w01"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="aw5-Ic-ju8" secondAttribute="trailing" constant="15" id="x3O-kc-0Ca"/>
            </constraints>
            <point key="canvasLocation" x="138" y="21"/>
        </view>
    </objects>
    <resources>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>
BrokerDriver/Home/VC/TroubleHistoryListVC.swift
New file
@@ -0,0 +1,117 @@
//
//  TroubleHistoryListVC.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/5/5.
//
import UIKit
import RxSwift
import RxRelay
import JQTools
class TroubleHistoryListVC: BaseViewController,Refreshable{
    private var tableView:BaseTableView!
    public let refreshStatus = BehaviorSubject(value: RefreshStatus.others)
    private var page = 1
    private var datas = [TroubleContentModel]()
    private var orderId:String!
    init(orderId:String) {
        super.init(nibName: nil, bundle: nil)
        self.orderId = orderId
    }
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        title = "Historical trouble"
        self.refreshStatusBind(to: tableView, header: { [weak self] () in
            self?.getData()
        }, footer: {  [weak self] () in
            self?.getData(false)
        }).disposed(by: disposeBag)
        tableView.jq_setEmptyView("Not data", image: UIImage(named: "empty"), foregroundColor: .gray, clouse: nil)
        DispatchQueue.main.asyncAfter(deadline: .now()+0.2) {
            self.refreshStatus.onNext(.beingHeaderRefresh)
        }
    }
    private func getData(_ isHeader:Bool = true){
        if isHeader{
            page = 1
        }else{
            page += 1
        }
        Services.orderTrouble(id: orderId, page: page).subscribe(onNext: { data in
            if let model = data.data{
                if isHeader{
                    self.datas.removeAll()
                    self.refreshStatus.onNext(.endHeaderRefresh)
                    self.refreshStatus.onNext(.resetNoMoreData)
                }else{
                    if model.records.count == 0{
                        self.refreshStatus.onNext(.noMoreData)
                    }else{
                        self.refreshStatus.onNext(.endFooterRefresh)
                    }
                }
                self.datas.append(contentsOf: model.records)
                self.tableView.reloadData()
            }
        }) { error in
            alert(msg: error.localizedDescription)
            self.refreshStatus.onNext(.endFooterRefresh)
            self.refreshStatus.onNext(.endHeaderRefresh)
        }.disposed(by: disposeBag)
    }
    override func setUI() {
        super.setUI()
        tableView = BaseTableView(frame: .zero, style: .plain)
        tableView.delegate = self
        tableView.dataSource = self
        tableView.separatorStyle = .none
        tableView.register(UINib(nibName: "TroubleHistoryTCell", bundle: nil), forCellReuseIdentifier: "_TroubleHistoryTCell")
        view.addSubview(tableView)
        tableView.snp.makeConstraints { make in
            make.edges.equalToSuperview().inset(view.safeAreaInsets)
        }
    }
}
extension TroubleHistoryListVC:UITableViewDelegate{
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let data = datas[indexPath.row]
        let vc = TroubleHistoryContentVC(model: data)
        push(vc: vc)
    }
}
extension TroubleHistoryListVC:UITableViewDataSource{
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return datas.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let data = datas[indexPath.row]
        let cell = tableView.dequeueReusableCell(withIdentifier: "_TroubleHistoryTCell") as! TroubleHistoryTCell
        cell.label_title.text = data.category
        cell.label_time.text = data.createTime
        return cell
    }
}
BrokerDriver/Home/VC/TroubleListVC.swift
New file
@@ -0,0 +1,105 @@
//
//  TroubleListVC.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/5/5.
//
import UIKit
class TroubleListVC: BaseViewController {
    private var orderId:String!
    private var tableView:BaseTableView!
    private var selectIndex:Int = -1
    private let items = ["Appointment cancelled","Appointment expired","Terminal closed","Terminal break","Accident","Container not found","Container line hold","Container custom hold","Container TMF hold","Container Pierpass hold"]
    override func viewDidLoad() {
        super.viewDidLoad()
        title = "Trouble"
        let rightBtn = UIBarButtonItem(target: self, action: #selector(historyAction), image: "btn_time", highImage: "btn_time")
        navigationItem.rightBarButtonItem = rightBtn
    }
    required init(orderId:String) {
        super.init(nibName: nil, bundle: nil)
        self.orderId = orderId
    }
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    override func setUI() {
        super.setUI()
        tableView = BaseTableView(frame: .zero, style: .plain)
        tableView.delegate = self
        tableView.dataSource = self
        tableView.separatorStyle = .none
        tableView.register(UINib(nibName: "TroubleTCell", bundle: nil), forCellReuseIdentifier: "_TroubleTCell")
        view.addSubview(tableView)
        tableView.snp.makeConstraints { make in
            make.edges.equalToSuperview().inset(view.safeAreaInsets)
        }
        let footView = TroubleFootView.jq_loadNibView()
        footView.submitClouse { [weak self] text in
            guard let weakSelf = self else { return }
            guard weakSelf.selectIndex != -1 else {alert(msg: "Please select your problem");return}
            var model = HomeDetailNoteVC.DetailNotModel()
            model.category = weakSelf.items[weakSelf.selectIndex]
            model.type = .troble
            model.orderId = weakSelf.orderId
            model.describe = text
            Services.addOrderNote(model: model).subscribe(onNext: {data in
                if data.code == 200{
                    alert(msg: "Submit successed")
                    DispatchQueue.main.asyncAfter(deadline: .now()+0.5) {
                        self?.navigationController?.popViewController()
                    }
                }else{
                    alert(msg: data.msg)
                }
            }) { error in
                alert(msg: error.localizedDescription)
            }.disposed(by: weakSelf.disposeBag)
        }
        tableView.tableFooterView = footView
    }
    @objc func historyAction(){
        let vc = TroubleHistoryListVC(orderId: orderId)
        push(vc: vc)
    }
}
extension TroubleListVC:UITableViewDelegate{
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        selectIndex = indexPath.row
        tableView.reloadData()
    }
}
extension TroubleListVC:UITableViewDataSource{
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return items.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
       let item = items[indexPath.row]
        let cell = tableView.dequeueReusableCell(withIdentifier: "_TroubleTCell") as! TroubleTCell
        cell.boxImage.image = UIImage(named: "")
        cell.label_content.text = item
        if indexPath.row == selectIndex{
            cell.boxImage.image = UIImage(named: "icon_seletedBox")
        }else{
            cell.boxImage.image = UIImage(named: "icon_box")
        }
        return cell
    }
}
BrokerDriver/Home/View/TroubleFootView.swift
New file
@@ -0,0 +1,33 @@
//
//  TroubleFootView.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/5/5.
//
import UIKit
import QMUIKit
class TroubleFootView: UITableViewHeaderFooterView,JQNibView {
    @IBOutlet weak var textView: QMUITextView!
    private var clouse:((String?)->Void)!
    override func awakeFromNib() {
        super.awakeFromNib()
        autoresizingMask = .flexibleWidth
    }
    @IBAction func submitAction(_ sender: UIButton) {
        if textView.text.isEmpty{
            clouse?(nil)
        }else{
            clouse?(textView.text)
        }
    }
    func submitClouse(clouse:@escaping (String?)->Void){
        self.clouse = clouse
    }
}
BrokerDriver/Home/View/TroubleFootView.xib
New file
@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
        <capability name="Named colors" minToolsVersion="9.0"/>
        <capability name="System colors in document resources" minToolsVersion="11.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <objects>
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="TroubleFootView" customModule="BrokerDriver" customModuleProvider="target">
            <rect key="frame" x="0.0" y="0.0" width="393" height="299"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="3Xd-QH-ME0" customClass="QMUITextView">
                    <rect key="frame" x="15" y="16" width="363" height="149"/>
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="149" id="AFS-Qd-VXa"/>
                    </constraints>
                    <color key="textColor" systemColor="labelColor"/>
                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
                    <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                    <userDefinedRuntimeAttributes>
                        <userDefinedRuntimeAttribute type="string" keyPath="placeholder" value="Add trouble information"/>
                        <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor">
                            <color key="value" red="0.22352941176470587" green="0.22352941176470587" blue="0.22352941176470587" alpha="0.29999999999999999" colorSpace="custom" customColorSpace="sRGB"/>
                        </userDefinedRuntimeAttribute>
                    </userDefinedRuntimeAttributes>
                </textView>
                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="tYa-sX-Ox3">
                    <rect key="frame" x="16" y="175" width="361" height="44"/>
                    <color key="backgroundColor" name="ThemeColor"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="44" id="x6e-Kh-0xg"/>
                    </constraints>
                    <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                    <state key="normal" title="Submit">
                        <color key="titleColor" red="0.22352941179999999" green="0.22352941179999999" blue="0.22352941179999999" alpha="0.84705882349999995" colorSpace="custom" customColorSpace="sRGB"/>
                    </state>
                    <userDefinedRuntimeAttributes>
                        <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB">
                            <real key="value" value="22"/>
                        </userDefinedRuntimeAttribute>
                        <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/>
                    </userDefinedRuntimeAttributes>
                    <connections>
                        <action selector="submitAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="cBQ-EC-0yM"/>
                        <action selector="submitAction:" destination="-1" eventType="touchUpInside" id="kJp-D9-8if"/>
                    </connections>
                </button>
            </subviews>
            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
            <constraints>
                <constraint firstAttribute="trailing" secondItem="3Xd-QH-ME0" secondAttribute="trailing" constant="15" id="Bf4-q7-t0L"/>
                <constraint firstAttribute="trailing" secondItem="tYa-sX-Ox3" secondAttribute="trailing" constant="16" id="Kt6-Ok-2Ij"/>
                <constraint firstAttribute="bottom" secondItem="tYa-sX-Ox3" secondAttribute="bottom" priority="750" constant="18" id="RYP-Sg-9ae"/>
                <constraint firstItem="3Xd-QH-ME0" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="15" id="UIk-zo-2Hs"/>
                <constraint firstItem="3Xd-QH-ME0" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="16" id="q9g-6D-jXZ"/>
                <constraint firstItem="tYa-sX-Ox3" firstAttribute="top" secondItem="3Xd-QH-ME0" secondAttribute="bottom" constant="10" id="sZK-YN-mc8"/>
                <constraint firstItem="tYa-sX-Ox3" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="16" id="vzZ-jp-K1C"/>
            </constraints>
            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
            <connections>
                <outlet property="textView" destination="3Xd-QH-ME0" id="83l-a4-xHX"/>
            </connections>
            <point key="canvasLocation" x="142.74809160305344" y="-172.18309859154931"/>
        </view>
    </objects>
    <resources>
        <namedColor name="ThemeColor">
            <color red="0.99199998378753662" green="0.82700002193450928" blue="0.016000000759959221" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </namedColor>
        <systemColor name="labelColor">
            <color red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </systemColor>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>
BrokerDriver/Models/OrderModel.swift
@@ -35,15 +35,15 @@
}
struct NoteOrTroubleModel:HandyJSON{
struct NoteModel:HandyJSON{
    var current = -1
    var pages = -1
    var records = [NoteOrTroubleContentModel]()
    var records = [NoteContentModel]()
    var size = -1
    var total = -1
}
struct NoteOrTroubleContentModel:HandyJSON {
struct NoteContentModel:HandyJSON {
    var id = 0
    var orderId = 0
    var createTime = ""
@@ -52,3 +52,21 @@
    var describe = ""
    var driverId = 0
}
struct TroubleModel:HandyJSON{
    var current = -1
    var pages = -1
    var records = [TroubleContentModel]()
    var size = -1
    var total = -1
}
struct TroubleContentModel:HandyJSON {
    var id = 0
    var orderId = 0
    var createTime = ""
    var category = ""
    var type = ""
    var describe = ""
    var driverId = 0
}
BrokerDriver/Network/Services.swift
@@ -91,13 +91,23 @@
        return NetworkRequest.request(params: params, method: .post, encoding: JSONEncoding.default, progress: true)
    }
    class func orderNote(id:String,page:Int,type:TextType)->Observable<BaseResponse<NoteOrTroubleModel>>{
    class func orderNote(id:String,page:Int)->Observable<BaseResponse<NoteModel>>{
        let params = ParamsAppender.build(url: All_Url)
            .interface(url: "/api/index/orderNote")
            .append(key: "pageNumber", value:page)
            .append(key: "pageSize", value: 20)
            .append(key: "id", value: id)
            .append(key: "type", value: type.rawValue)
            .append(key: "type", value: TextType.note.rawValue)
        return NetworkRequest.request(params: params, method: .get, progress: false)
    }
    class func orderTrouble(id:String,page:Int)->Observable<BaseResponse<TroubleModel>>{
        let params = ParamsAppender.build(url: All_Url)
            .interface(url: "/api/index/orderNote")
            .append(key: "pageNumber", value:page)
            .append(key: "pageSize", value: 20)
            .append(key: "id", value: id)
            .append(key: "type", value: TextType.troble.rawValue)
        return NetworkRequest.request(params: params, method: .get, progress: false)
    }
@@ -130,4 +140,11 @@
        return NetworkRequest.request(params: params, method: .get, progress: false)
    }
    class func deleteFile(_ url:String)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
            .interface(url: "/api/upload/fileDelete")
            .append(key: "url", value: url)
        return NetworkRequest.request(params: params, method: .get, progress: false)
    }
}