宽窄优行-由【嘉易行】项目成品而来
younger_times
2023-06-12 cc8902d86a58d6ccb7ee19c0d87cc65044e5fbf9
新增录音
6个文件已修改
10个文件已添加
659 ■■■■■ 已修改文件
OKProject.xcodeproj/project.pbxproj 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OKProject/API/API.swift 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OKProject/Assets.xcassets/icon_vioce.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OKProject/Assets.xcassets/icon_vioce.imageset/icon_vioce@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
OKProject/Assets.xcassets/icon_vioce.imageset/icon_vioce@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
OKProject/Assets.xcassets/icon_warining.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OKProject/Assets.xcassets/icon_warining.imageset/icon_warining@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
OKProject/Assets.xcassets/icon_warining.imageset/icon_warining@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
OKProject/Class/Home/Controller/HomeVC.swift 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OKProject/Class/Home/Model/UserInfoModel.swift 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OKProject/Class/LeftMenu/Controller/MineSetUpVC.swift 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OKProject/Class/LeftMenu/Controller/VoiceSettingVC.swift 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OKProject/Class/LeftMenu/Controller/VoiceSettingVC.xib 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OKProject/Class/LeftMenu/View/AuthRecordView.swift 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OKProject/Class/LeftMenu/View/AuthRecordView.xib 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OKProject/Class/LeftMenu/ViewModel/AgreementViewModel.swift 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OKProject.xcodeproj/project.pbxproj
@@ -229,6 +229,10 @@
        3D745012253828F700C5D8A3 /* YYSpecialCarCanceledNoDriverViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D745011253828F700C5D8A3 /* YYSpecialCarCanceledNoDriverViewController.swift */; };
        3D7450172538299600C5D8A3 /* YYSpecialCarCanceledNoDriverViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D7450152538299600C5D8A3 /* YYSpecialCarCanceledNoDriverViewCell.swift */; };
        3D7450182538299600C5D8A3 /* YYSpecialCarCanceledNoDriverViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3D7450162538299600C5D8A3 /* YYSpecialCarCanceledNoDriverViewCell.xib */; };
        8DC99C842A36F32800D0F04E /* AuthRecordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DC99C832A36F32800D0F04E /* AuthRecordView.swift */; };
        8DC99C862A36F33600D0F04E /* AuthRecordView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8DC99C852A36F33600D0F04E /* AuthRecordView.xib */; };
        8DEEE0FD2A36C85F007422BB /* VoiceSettingVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DEEE0FB2A36C85F007422BB /* VoiceSettingVC.swift */; };
        8DEEE0FE2A36C85F007422BB /* VoiceSettingVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8DEEE0FC2A36C85F007422BB /* VoiceSettingVC.xib */; };
        D9091E3D24932D0E00C86BB9 /* ShareView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9091E3C24932D0E00C86BB9 /* ShareView.swift */; };
        D9091E3F24932D2800C86BB9 /* ShareView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D9091E3E24932D2800C86BB9 /* ShareView.xib */; };
        D90D7329248DCA04006200A7 /* MyOrderListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90D7328248DCA04006200A7 /* MyOrderListVC.swift */; };
@@ -906,6 +910,10 @@
        3D745011253828F700C5D8A3 /* YYSpecialCarCanceledNoDriverViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YYSpecialCarCanceledNoDriverViewController.swift; sourceTree = "<group>"; };
        3D7450152538299600C5D8A3 /* YYSpecialCarCanceledNoDriverViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YYSpecialCarCanceledNoDriverViewCell.swift; sourceTree = "<group>"; };
        3D7450162538299600C5D8A3 /* YYSpecialCarCanceledNoDriverViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = YYSpecialCarCanceledNoDriverViewCell.xib; sourceTree = "<group>"; };
        8DC99C832A36F32800D0F04E /* AuthRecordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthRecordView.swift; sourceTree = "<group>"; };
        8DC99C852A36F33600D0F04E /* AuthRecordView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AuthRecordView.xib; sourceTree = "<group>"; };
        8DEEE0FB2A36C85F007422BB /* VoiceSettingVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoiceSettingVC.swift; sourceTree = "<group>"; };
        8DEEE0FC2A36C85F007422BB /* VoiceSettingVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = VoiceSettingVC.xib; sourceTree = "<group>"; };
        BF3E41CA69E50A6219D00A56 /* Pods-OKProject.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OKProject.debug.xcconfig"; path = "Target Support Files/Pods-OKProject/Pods-OKProject.debug.xcconfig"; sourceTree = "<group>"; };
        C6166D6DCB4A3FC387582E3D /* Pods_OKProject.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_OKProject.framework; sourceTree = BUILT_PRODUCTS_DIR; };
        D6351323AF902B1472CDE1B0 /* Pods-OKProject.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OKProject.release.xcconfig"; path = "Target Support Files/Pods-OKProject/Pods-OKProject.release.xcconfig"; sourceTree = "<group>"; };
@@ -2168,6 +2176,8 @@
                13F6D5A329E50051003FDF28 /* MineBusinessCreditVC.xib */,
                1302065B2A1E00B300A06489 /* MineBusinessCreditDetailVC.swift */,
                1302065C2A1E00B300A06489 /* MineBusinessCreditDetailVC.xib */,
                8DEEE0FB2A36C85F007422BB /* VoiceSettingVC.swift */,
                8DEEE0FC2A36C85F007422BB /* VoiceSettingVC.xib */,
            );
            path = Controller;
            sourceTree = "<group>";
@@ -2214,6 +2224,8 @@
                D9ED9F3724AED36F00B7D753 /* MineWithdrawalRecordCell.xib */,
                13987A8A2A1C9471002C1751 /* MineApplyRecordTCell.swift */,
                13987A8B2A1C9471002C1751 /* MineApplyRecordTCell.xib */,
                8DC99C832A36F32800D0F04E /* AuthRecordView.swift */,
                8DC99C852A36F33600D0F04E /* AuthRecordView.xib */,
            );
            path = View;
            sourceTree = "<group>";
@@ -3251,6 +3263,7 @@
                13A27FC127BB434300DD0CDF /* UseCouponSuccessView.xib in Resources */,
                D99E2CF524ADBC56005E147E /* UMSocialSDKResources.bundle in Resources */,
                132387A527B4E5B700D2BD1F /* TravelCardBuyTCell.xib in Resources */,
                8DC99C862A36F33600D0F04E /* AuthRecordView.xib in Resources */,
                D953BB2C2499EA9B002BA5EF /* MineOnlineCustomerServiceVC.xib in Resources */,
                D9A6A7BA2497195A008E251B /* MineBirthdayView.xib in Resources */,
                1302065A2A1DEC6500A06489 /* RejectReasonView.xib in Resources */,
@@ -3259,6 +3272,7 @@
                1327631F27B3CAFB0039C712 /* BindRelationAgreementVC.xib in Resources */,
                D9582EC22491D0B4005F2142 /* DriverInfoCell.xib in Resources */,
                13A17B322828A68800190FDC /* MinePublishSaleDetailMoreVC.xib in Resources */,
                8DEEE0FE2A36C85F007422BB /* VoiceSettingVC.xib in Resources */,
                F3FF6F9D25834CCB00EDBBC8 /* BRPickerView.bundle in Resources */,
                13C92B0428292A6500F1A5BE /* CarPriceListView.xib in Resources */,
                1365117429E403D40051C926 /* OrderReviewDetailVC.xib in Resources */,
@@ -3410,6 +3424,7 @@
                D93CBC78247E0F04005746EB /* ForgotPasswordVC.swift in Sources */,
                1323879C27B4C3DD00D2BD1F /* TravelCardDetailVC.swift in Sources */,
                D953BB54249A1EF6002BA5EF /* MineShareVC.swift in Sources */,
                8DC99C842A36F32800D0F04E /* AuthRecordView.swift in Sources */,
                D9CB224C2500CA3D005E97C2 /* YYCarTypeModel.swift in Sources */,
                F3830811255932620060BA72 /* FOREmptyAssistantConfiger.m in Sources */,
                138A188B282B4A2C004705F5 /* CommentReplyTCell.swift in Sources */,
@@ -3721,6 +3736,7 @@
                D979B28D24976CA6001CFB74 /* MineSafeCell.swift in Sources */,
                F32FFB9B2530A7AE006106BE /* MZDateUtils.swift in Sources */,
                D9A09B3B2498C4B80077B756 /* MineExpenseRecordViewModel.swift in Sources */,
                8DEEE0FD2A36C85F007422BB /* VoiceSettingVC.swift in Sources */,
                F3E35C4B25810B2900327888 /* RecipientInformationVC.swift in Sources */,
                F3FF6FBE25835A4200EDBBC8 /* RecipientInfomationModel.swift in Sources */,
                13B96B5129E3F01400EEF378 /* EnterpriseMembersTCell.swift in Sources */,
OKProject/API/API.swift
@@ -704,6 +704,8 @@
    case approveOrderDetail(id:Int)
    
    case approveOrderAudit(id:Int,status:Int,auditRemark:String? = nil)
    case soundSet(isOn:Bool)
}
@@ -1036,6 +1038,7 @@
            return "/api/business/approveOrderDetail"
        case .approveOrderAudit:
            return "/api/business/approveOrder"
        case .soundSet:return "/api/user/setSound"
        }
    }
    
@@ -2092,6 +2095,11 @@
                .append(key: "auditStatus", value: status)
                .append(key: "auditRemark", value: auditRemark)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        case .soundSet(let isOn):
            let params = APIParamsAppender()
                .append(key: "soundSet", value: isOn ? 1:0)
            return .requestParameters(parameters: params.done(), encoding: URLEncoding.queryString)
        }
    }
}
OKProject/Assets.xcassets/icon_vioce.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "icon_vioce@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "icon_vioce@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
OKProject/Assets.xcassets/icon_vioce.imageset/icon_vioce@2x.png
OKProject/Assets.xcassets/icon_vioce.imageset/icon_vioce@3x.png
OKProject/Assets.xcassets/icon_warining.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "icon_warining@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "icon_warining@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
OKProject/Assets.xcassets/icon_warining.imageset/icon_warining@2x.png
OKProject/Assets.xcassets/icon_warining.imageset/icon_warining@3x.png
OKProject/Class/Home/Controller/HomeVC.swift
@@ -162,7 +162,14 @@
    /// 设置广告
    func setupAdvert()  {
        viewModel.getAdvertising()
        DispatchQueue.main.asyncAfter(deadline: .now()+5) {
            if app.userInfo.soundSet == 0{
                AuthRecordView.show {
                    let vc = VoiceSettingVC()
                    self.yy_push(vc: vc)
                }
            }
        }
    }
    
    //MARK: - UI
OKProject/Class/Home/Model/UserInfoModel.swift
@@ -66,6 +66,9 @@
    
    /// 实名认证状态(1=待认证,2=认证通过,3=认证失败)
    var verified: Int = 0
    var soundSet:Int = 0 //是否开启录音(1是 0否)
//    var auditStatus:MerchantAudit = .none //1:待审核 2同意 3拒绝
    var merchant = 0 //是否开通了商家 0 :否 , 1:是
OKProject/Class/LeftMenu/Controller/MineSetUpVC.swift
@@ -25,7 +25,7 @@
    }()
    
    /// 数据源
    private let dataSource = [["账户安全","常见问题","隐私协议","法律条款和平台规则","充值领劵规则","取消订单规则","计价规则","用户指南","用户协议","关于我们"],["清理缓存","当前版本"]]
    private let dataSource = [["账户安全","车内录音设置","常见问题","隐私协议","法律条款和平台规则","充值领劵规则","取消订单规则","计价规则","用户指南","用户协议","关于我们"],["清理缓存","当前版本"]]
    
    /// 缓存
    private var label_cache: UILabel?
@@ -122,30 +122,34 @@
                let vc = MineAccountSecurityVC()
                self.yy_push(vc: vc)
            }else if  indexPath.row == 1 {
                let vc = VoiceSettingVC()
                self.yy_push(vc: vc)
            }
            else if  indexPath.row == 2 {
                viewModel.type.accept(.Q_A)
                viewModel.agreement()
            }else if  indexPath.row == 2 {
            }else if  indexPath.row == 3 {
                viewModel.type.accept(.privacy)
                viewModel.agreement()
            }else if  indexPath.row == 3 {
            }else if  indexPath.row == 4 {
                viewModel.type.accept(.legalProvisions)
                viewModel.agreement()
            }else if  indexPath.row == 4 {
            }else if  indexPath.row == 5 {
                viewModel.type.accept(.topUp)
                viewModel.agreement()
            }else if  indexPath.row == 5 {
            }else if  indexPath.row == 6 {
                viewModel.type.accept(.cancel)
                viewModel.agreement()
            }else if  indexPath.row == 6 {
            }else if  indexPath.row == 7 {
                viewModel.type.accept(.valuation)
                viewModel.agreement()
            }else if  indexPath.row == 7 {
            }else if  indexPath.row == 8 {
                viewModel.type.accept(.userGuide)
                viewModel.agreement()
            }else if  indexPath.row == 8 {
            }else if  indexPath.row == 9 {
                viewModel.type.accept(.userAgreement)
                viewModel.agreement()
            }else if  indexPath.row == 9 {
            }else if  indexPath.row == 10 {
                viewModel.type.accept(.aboutUs)
                viewModel.agreement()
            }
OKProject/Class/LeftMenu/Controller/VoiceSettingVC.swift
New file
@@ -0,0 +1,93 @@
//
//  VoiceSettingVC.swift
//  OKProject
//
//  Created by 杨锴 on 2023/6/12.
//  Copyright © 2023 yangwang. All rights reserved.
//
import UIKit
import QMUIKit
class VoiceSettingVC: YYViewController {
    @IBOutlet weak var label_hint: QMUIButton!
    @IBOutlet weak var view_hint: UIView!
    @IBOutlet weak var btn_handle: UIButton!
    private let userInfoViewModel = HomeLeftMenuViewModel()
    override func viewDidLoad() {
        super.viewDidLoad()
        title = "车内录音设置"
        userInfoViewModel.queryUserInfo()
        userInfoViewModel.requestSubject
            .subscribe(onNext: {[unowned self] (status) in
                switch status{
                case .loading:
                    break
                case .success(let model):
                    guard let data = model as? UserInfoModel else{return}
                    app.userInfo.save(model: data)
                    switch data.soundSet{
                    case 1:
                        label_hint.setTitle("车内录音功能已开启", for: .normal)
                        view_hint.backgroundColor = UIColor(hexString: "#45B494")
                        btn_handle.setTitle("立即关闭车内录音", for: .normal)
                        btn_handle.backgroundColor = UIColor.red
                    case 0:
                        label_hint.setTitle("车内录音功能已关闭", for: .normal)
                        view_hint.backgroundColor = UIColor(hexString: "#B1B1B1")
                        btn_handle.setTitle("立即开启车内录音", for: .normal)
                        btn_handle.backgroundColor = UIColor(hexString: "#45B494")
                    default:break
                    }
                    break
                case .error(let error):
                    alert(text: error.localizedDescription)
                    break
                }
            }).disposed(by: rx.disposeBag)
    }
    override func setupViews() {
        view.backgroundColor = UIColor(hexString: "#F3F4F5")
        label_hint.imagePosition = .left
        label_hint.spacingBetweenImageAndTitle = 7
    }
    @IBAction func handleAction(_ sender: UIButton) {
        if app.userInfo.soundSet == 0{
            alert(popup: .double, title: "是否开启车内录音?", text: "开启后下一订单即生效", submitTitle: "确认开启", cancelTitle: "取消") {
                self.show()
                APIManager.shared.provider.rx.request(.soundSet(isOn: true)).mapThenValidate(Nothing.self).subscribe(onSuccess: {result in
                    self.hide()
                    alert(text: "车内录音将在下一订单开启")
                    self.userInfoViewModel.queryUserInfo()
                }) { error in
                    alert(text: error.localizedDescription)
                }.disposed(by: self.disposeBag)
            } cancelClick: {
            }
        }else{
            alert(popup: .double, title: "是否关闭车内录音?", text: "关闭后立即生效", submitTitle: "确认关闭", cancelTitle: "取消") {
                self.show()
                APIManager.shared.provider.rx.request(.soundSet(isOn: false)).mapThenValidate(Nothing.self).subscribe(onSuccess: {result in
                    self.hide()
                    alert(text: "已关闭车内录音功能")
                    self.userInfoViewModel.queryUserInfo()
                }) { error in
                    alert(text: error.localizedDescription)
                }.disposed(by: self.disposeBag)
            } cancelClick: {
            }
        }
    }
}
OKProject/Class/LeftMenu/Controller/VoiceSettingVC.xib
New file
@@ -0,0 +1,276 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" 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="21505"/>
        <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="VoiceSettingVC" customModule="OK出行" customModuleProvider="target">
            <connections>
                <outlet property="btn_handle" destination="Mff-Qq-Y4Y" id="9MN-WE-cRq"/>
                <outlet property="label_hint" destination="FB4-TG-GuB" id="02q-LA-d60"/>
                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
                <outlet property="view_hint" destination="g21-F7-G40" id="rMy-1Z-Ack"/>
            </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>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="g21-F7-G40">
                    <rect key="frame" x="0.0" y="59" width="393" height="36"/>
                    <subviews>
                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FB4-TG-GuB" customClass="QMUIButton">
                            <rect key="frame" x="134" y="8" width="125" height="20"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="20" id="EP1-G5-R6Q"/>
                            </constraints>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                            <state key="normal" title="车内录音功能已关闭" image="icon_warining"/>
                        </button>
                    </subviews>
                    <color key="backgroundColor" red="0.69411764705882351" green="0.69411764705882351" blue="0.69411764705882351" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    <constraints>
                        <constraint firstItem="FB4-TG-GuB" firstAttribute="centerX" secondItem="g21-F7-G40" secondAttribute="centerX" id="10L-tG-3B1"/>
                        <constraint firstAttribute="height" constant="36" id="3j8-ie-Nnv"/>
                        <constraint firstItem="FB4-TG-GuB" firstAttribute="centerY" secondItem="g21-F7-G40" secondAttribute="centerY" id="RI7-Xm-CGb"/>
                    </constraints>
                </view>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="H4f-Q8-wfM">
                    <rect key="frame" x="14" y="106" width="365" height="102"/>
                    <subviews>
                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_vioce" translatesAutoresizingMaskIntoConstraints="NO" id="Byv-Fs-a6d">
                            <rect key="frame" x="6" y="6" width="22" height="22"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="22" id="2N0-we-u2U"/>
                                <constraint firstAttribute="width" constant="22" id="J7s-Ah-Ohs"/>
                            </constraints>
                        </imageView>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="若您选择开启车内录音" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="be6-AD-iTl">
                            <rect key="frame" x="34" y="8.6666666666666714" width="143" height="17"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
                            <nil key="textColor"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bO4-PD-Zeu">
                            <rect key="frame" x="6" y="35" width="359" height="1"/>
                            <color key="backgroundColor" red="0.59215686274509804" green="0.59215686274509804" blue="0.59215686274509804" alpha="0.050000000000000003" colorSpace="custom" customColorSpace="sRGB"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="1" id="nNK-fq-s0R"/>
                            </constraints>
                        </view>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cG8-00-PMc">
                            <rect key="frame" x="6" y="49" width="4" height="4"/>
                            <color key="backgroundColor" red="0.27058823529411763" green="0.70588235294117641" blue="0.58039215686274503" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <constraints>
                                <constraint firstAttribute="width" constant="4" id="4Bc-BK-fnM"/>
                                <constraint firstAttribute="height" constant="4" id="zAi-mH-kgH"/>
                            </constraints>
                            <userDefinedRuntimeAttributes>
                                <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounds" value="YES"/>
                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                                    <real key="value" value="2"/>
                                </userDefinedRuntimeAttribute>
                            </userDefinedRuntimeAttributes>
                        </view>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="开启后下一订单即生效" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Gbu-ij-M7J">
                            <rect key="frame" x="16" y="44" width="339" height="14.333333333333336"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nQZ-MD-Fri">
                            <rect key="frame" x="6" y="74" width="4" height="4"/>
                            <color key="backgroundColor" red="0.27058823529999998" green="0.70588235290000001" blue="0.58039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="4" id="FST-g9-VkU"/>
                                <constraint firstAttribute="width" constant="4" id="Ghm-57-NUQ"/>
                            </constraints>
                            <userDefinedRuntimeAttributes>
                                <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounds" value="YES"/>
                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                                    <real key="value" value="2"/>
                                </userDefinedRuntimeAttribute>
                            </userDefinedRuntimeAttributes>
                        </view>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="为保障您的出行安全,宽窄出行建议您全程开启车内录音" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZiK-RA-oUN">
                            <rect key="frame" x="16" y="69" width="306.33333333333331" height="14.333333333333329"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
                        </label>
                    </subviews>
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstAttribute="trailing" secondItem="Gbu-ij-M7J" secondAttribute="trailing" constant="10" id="8sV-JC-AKR"/>
                        <constraint firstItem="cG8-00-PMc" firstAttribute="leading" secondItem="H4f-Q8-wfM" secondAttribute="leading" constant="6" id="GHi-cf-pB9"/>
                        <constraint firstItem="nQZ-MD-Fri" firstAttribute="leading" secondItem="H4f-Q8-wfM" secondAttribute="leading" constant="6" id="KzS-d3-QMQ"/>
                        <constraint firstAttribute="bottom" secondItem="nQZ-MD-Fri" secondAttribute="bottom" constant="24" id="Mwc-BC-UZW"/>
                        <constraint firstItem="nQZ-MD-Fri" firstAttribute="top" secondItem="cG8-00-PMc" secondAttribute="bottom" constant="21" id="aPQ-oL-Ly2"/>
                        <constraint firstAttribute="trailing" secondItem="bO4-PD-Zeu" secondAttribute="trailing" id="fmg-Pe-ivz"/>
                        <constraint firstItem="nQZ-MD-Fri" firstAttribute="centerY" secondItem="ZiK-RA-oUN" secondAttribute="centerY" id="gY5-03-qKG"/>
                        <constraint firstItem="bO4-PD-Zeu" firstAttribute="leading" secondItem="H4f-Q8-wfM" secondAttribute="leading" constant="6" id="hbO-cB-6ND"/>
                        <constraint firstItem="bO4-PD-Zeu" firstAttribute="top" secondItem="Byv-Fs-a6d" secondAttribute="bottom" constant="7" id="hvB-bS-mqr"/>
                        <constraint firstItem="be6-AD-iTl" firstAttribute="centerY" secondItem="Byv-Fs-a6d" secondAttribute="centerY" id="kHb-Pf-ASV"/>
                        <constraint firstItem="Byv-Fs-a6d" firstAttribute="leading" secondItem="H4f-Q8-wfM" secondAttribute="leading" constant="6" id="kc5-IW-GBf"/>
                        <constraint firstItem="cG8-00-PMc" firstAttribute="top" secondItem="bO4-PD-Zeu" secondAttribute="bottom" constant="13" id="qUv-Ph-1jZ"/>
                        <constraint firstItem="be6-AD-iTl" firstAttribute="leading" secondItem="Byv-Fs-a6d" secondAttribute="trailing" constant="6" id="qef-GM-eFO"/>
                        <constraint firstItem="cG8-00-PMc" firstAttribute="centerY" secondItem="Gbu-ij-M7J" secondAttribute="centerY" id="r93-1e-ezR"/>
                        <constraint firstItem="ZiK-RA-oUN" firstAttribute="leading" secondItem="nQZ-MD-Fri" secondAttribute="trailing" constant="6" id="rTm-7e-UE8"/>
                        <constraint firstItem="Byv-Fs-a6d" firstAttribute="top" secondItem="H4f-Q8-wfM" secondAttribute="top" constant="6" id="upE-uk-gZQ"/>
                        <constraint firstItem="Gbu-ij-M7J" firstAttribute="leading" secondItem="cG8-00-PMc" secondAttribute="trailing" constant="6" id="zST-lm-hEq"/>
                    </constraints>
                    <userDefinedRuntimeAttributes>
                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounds" value="YES"/>
                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                            <real key="value" value="6"/>
                        </userDefinedRuntimeAttribute>
                    </userDefinedRuntimeAttributes>
                </view>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="lum-ul-C2O">
                    <rect key="frame" x="14" y="219" width="365" height="122"/>
                    <subviews>
                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_vioce" translatesAutoresizingMaskIntoConstraints="NO" id="UVr-MA-unU">
                            <rect key="frame" x="6" y="6" width="22" height="22"/>
                            <constraints>
                                <constraint firstAttribute="width" constant="22" id="mE9-wd-6nm"/>
                                <constraint firstAttribute="height" constant="22" id="ofd-am-cmm"/>
                            </constraints>
                        </imageView>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="若您选择关闭车内录音" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yMR-Dc-npY">
                            <rect key="frame" x="34" y="8.6666666666666572" width="143" height="17"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
                            <nil key="textColor"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Y3b-MX-hs7">
                            <rect key="frame" x="6" y="35" width="359" height="1"/>
                            <color key="backgroundColor" red="0.59215686270000001" green="0.59215686270000001" blue="0.59215686270000001" alpha="0.050000000000000003" colorSpace="custom" customColorSpace="sRGB"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="1" id="QkR-6R-7Vb"/>
                            </constraints>
                        </view>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Rt3-Eu-BSw">
                            <rect key="frame" x="6" y="49" width="4" height="4"/>
                            <color key="backgroundColor" red="0.27058823529999998" green="0.70588235290000001" blue="0.58039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <constraints>
                                <constraint firstAttribute="width" constant="4" id="R9Q-7I-9VW"/>
                                <constraint firstAttribute="height" constant="4" id="fgT-eT-nqi"/>
                            </constraints>
                            <userDefinedRuntimeAttributes>
                                <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounds" value="YES"/>
                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                                    <real key="value" value="2"/>
                                </userDefinedRuntimeAttribute>
                            </userDefinedRuntimeAttributes>
                        </view>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="关闭后立即生效/拼车订单不生效" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3pi-pt-Vi8">
                            <rect key="frame" x="16" y="44" width="339" height="14.333333333333336"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="M0R-mB-dHV">
                            <rect key="frame" x="6" y="74" width="4" height="4"/>
                            <color key="backgroundColor" red="0.27058823529999998" green="0.70588235290000001" blue="0.58039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <constraints>
                                <constraint firstAttribute="width" constant="4" id="Uvi-6t-QIG"/>
                                <constraint firstAttribute="height" constant="4" id="q8Y-ay-wbh"/>
                            </constraints>
                            <userDefinedRuntimeAttributes>
                                <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounds" value="YES"/>
                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                                    <real key="value" value="2"/>
                                </userDefinedRuntimeAttribute>
                            </userDefinedRuntimeAttributes>
                        </view>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ljO-52-jbV">
                            <rect key="frame" x="16" y="68" width="285.66666666666669" height="43"/>
                            <string key="text">关闭车内录音提示:由于录制设备不同,录音、录像功
能需单独设置。若您想关闭车内录像功能,请前往“
我的-设置-车内录像设置”进行关闭</string>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
                        </label>
                    </subviews>
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstItem="yMR-Dc-npY" firstAttribute="leading" secondItem="UVr-MA-unU" secondAttribute="trailing" constant="6" id="3BL-7W-wNs"/>
                        <constraint firstItem="Rt3-Eu-BSw" firstAttribute="centerY" secondItem="3pi-pt-Vi8" secondAttribute="centerY" id="Aqn-oM-Hb3"/>
                        <constraint firstAttribute="trailing" secondItem="3pi-pt-Vi8" secondAttribute="trailing" constant="10" id="G33-rI-ZCM"/>
                        <constraint firstItem="UVr-MA-unU" firstAttribute="top" secondItem="lum-ul-C2O" secondAttribute="top" constant="6" id="Gno-4d-mXu"/>
                        <constraint firstItem="Rt3-Eu-BSw" firstAttribute="leading" secondItem="lum-ul-C2O" secondAttribute="leading" constant="6" id="Irf-Z0-g1o"/>
                        <constraint firstItem="3pi-pt-Vi8" firstAttribute="leading" secondItem="Rt3-Eu-BSw" secondAttribute="trailing" constant="6" id="JHw-Ko-BKn"/>
                        <constraint firstItem="M0R-mB-dHV" firstAttribute="top" secondItem="ljO-52-jbV" secondAttribute="top" constant="6" id="QFe-bl-Vnq"/>
                        <constraint firstItem="M0R-mB-dHV" firstAttribute="top" secondItem="Rt3-Eu-BSw" secondAttribute="bottom" constant="21" id="RyY-JU-yUa"/>
                        <constraint firstItem="Rt3-Eu-BSw" firstAttribute="top" secondItem="Y3b-MX-hs7" secondAttribute="bottom" constant="13" id="TZt-mQ-CXc"/>
                        <constraint firstAttribute="trailing" secondItem="Y3b-MX-hs7" secondAttribute="trailing" id="cSv-Q8-AeM"/>
                        <constraint firstItem="Y3b-MX-hs7" firstAttribute="top" secondItem="UVr-MA-unU" secondAttribute="bottom" constant="7" id="cn4-w2-FcI"/>
                        <constraint firstItem="yMR-Dc-npY" firstAttribute="centerY" secondItem="UVr-MA-unU" secondAttribute="centerY" id="gcL-Yp-y3q"/>
                        <constraint firstItem="UVr-MA-unU" firstAttribute="leading" secondItem="lum-ul-C2O" secondAttribute="leading" constant="6" id="hJQ-bp-EFa"/>
                        <constraint firstItem="M0R-mB-dHV" firstAttribute="leading" secondItem="lum-ul-C2O" secondAttribute="leading" constant="6" id="l2L-te-rFE"/>
                        <constraint firstAttribute="bottom" secondItem="ljO-52-jbV" secondAttribute="bottom" constant="11" id="qYN-Tw-Aph"/>
                        <constraint firstItem="ljO-52-jbV" firstAttribute="leading" secondItem="M0R-mB-dHV" secondAttribute="trailing" constant="6" id="xHR-vU-WGs"/>
                        <constraint firstItem="Y3b-MX-hs7" firstAttribute="leading" secondItem="lum-ul-C2O" secondAttribute="leading" constant="6" id="xi5-Ze-Pqu"/>
                    </constraints>
                    <userDefinedRuntimeAttributes>
                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounds" value="YES"/>
                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                            <real key="value" value="6"/>
                        </userDefinedRuntimeAttribute>
                    </userDefinedRuntimeAttributes>
                </view>
                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Mff-Qq-Y4Y">
                    <rect key="frame" x="14" y="766" width="365" height="40"/>
                    <color key="backgroundColor" red="0.27058823529999998" green="0.70588235290000001" blue="0.58039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="40" id="Uk9-0C-Zju"/>
                    </constraints>
                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                    <state key="normal" title="立即开启车内录音"/>
                    <userDefinedRuntimeAttributes>
                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounds" value="YES"/>
                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                            <real key="value" value="4"/>
                        </userDefinedRuntimeAttribute>
                    </userDefinedRuntimeAttributes>
                    <connections>
                        <action selector="handleAction:" destination="-1" eventType="touchUpInside" id="G1U-bd-erE"/>
                    </connections>
                </button>
            </subviews>
            <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
            <constraints>
                <constraint firstItem="Mff-Qq-Y4Y" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="14" id="GKu-C4-dU3"/>
                <constraint firstItem="g21-F7-G40" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" id="JL1-Hm-kwm"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="lum-ul-C2O" secondAttribute="trailing" constant="14" id="R3L-ga-8Iw"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="g21-F7-G40" secondAttribute="trailing" id="Soa-qm-Tbc"/>
                <constraint firstItem="H4f-Q8-wfM" firstAttribute="top" secondItem="g21-F7-G40" secondAttribute="bottom" constant="11" id="Sza-Yf-DSy"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="Mff-Qq-Y4Y" secondAttribute="trailing" constant="14" id="jhj-C1-Sed"/>
                <constraint firstItem="lum-ul-C2O" firstAttribute="top" secondItem="H4f-Q8-wfM" secondAttribute="bottom" constant="11" id="mFO-hp-CWp"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="Mff-Qq-Y4Y" secondAttribute="bottom" constant="12" id="mdT-6q-ahb"/>
                <constraint firstItem="lum-ul-C2O" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="14" id="mv7-Oo-IJU"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="H4f-Q8-wfM" secondAttribute="trailing" constant="14" id="qe8-UP-pAQ"/>
                <constraint firstItem="g21-F7-G40" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="ttm-1B-e7K"/>
                <constraint firstItem="H4f-Q8-wfM" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="14" id="xwM-dg-CPm"/>
            </constraints>
            <point key="canvasLocation" x="139.69465648854961" y="20.422535211267608"/>
        </view>
    </objects>
    <resources>
        <image name="icon_vioce" width="22" height="22"/>
        <image name="icon_warining" width="14" height="14"/>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>
OKProject/Class/LeftMenu/View/AuthRecordView.swift
New file
@@ -0,0 +1,55 @@
//
//  AuthRecordView.swift
//  OKProject
//
//  Created by 杨锴 on 2023/6/12.
//  Copyright © 2023 yangwang. All rights reserved.
//
import UIKit
class AuthRecordView: UIView,LDNibView{
    @IBOutlet weak var view_container: UIView!
    @IBOutlet weak var label_content: UILabel!
    private var clouse:(()->Void)!
    override func awakeFromNib() {
        super.awakeFromNib()
        view_container.transform = .init(scaleX: 0.1, y: 0.1)
        alpha = 0
        layoutIfNeeded()
    }
    static func show(_ clouse:@escaping ()->Void){
        let authRecordView = AuthRecordView.ld_loadNibView()
        authRecordView.clouse = clouse
        authRecordView.frame = app.window?.frame ?? .zero
        app.window?.addSubview(authRecordView)
        UIView.animate(withDuration: 0.4) {
            authRecordView.view_container.transform = .init(scaleX: 1.0, y: 1.0)
            authRecordView.alpha = 1
        }
    }
    @IBAction func settingAction(_ sender: UIButton) {
        UIView.animate(withDuration: 0.4) {
            self.view_container.transform = .init(scaleX: 0.1, y: 0.1)
            self.alpha = 0
        } completion: { _ in
            self.removeFromSuperview()
            self.clouse()
        }
    }
    @IBAction func closeAction(_ sender: UIButton) {
        UIView.animate(withDuration: 0.4) {
            self.view_container.transform = .init(scaleX: 0.1, y: 0.1)
            self.alpha = 0
        } completion: { _ in
            self.removeFromSuperview()
        }
    }
}
OKProject/Class/LeftMenu/View/AuthRecordView.xib
New file
@@ -0,0 +1,125 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" 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="21505"/>
        <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="AuthRecordView" customModule="OK出行" customModuleProvider="target">
            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kTB-dH-ACo">
                    <rect key="frame" x="37" y="250.99999999999997" width="319" height="350.33333333333326"/>
                    <subviews>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="“宽窄优行”需要使用车内录音权限" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hj6-P8-bgK">
                            <rect key="frame" x="52.666666666666671" y="36" width="213.66666666666663" height="17"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
                            <nil key="textColor"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YNJ-p2-Epb">
                            <rect key="frame" x="16" y="76.000000000000014" width="287" height="179.33333333333337"/>
                            <string key="text">若您选择开启车内录音:
.开启后下一订单即生效
.为保障您的出行安全,建议您全程开启车内录音
若您选择关闭车内录音:
.关闭后立即生效
.关闭车内录音提示:由于录制设备不同,录音、录像功能需单独设置。若您想关闭车内录像功能,请前往“我的-设置-车内录音设置”进行关闭</string>
                            <fontDescription key="fontDescription" type="system" pointSize="15"/>
                            <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="i1L-Gm-C6V">
                            <rect key="frame" x="16" y="285.33333333333337" width="139.66666666666666" height="40"/>
                            <color key="backgroundColor" red="0.94117647059999998" green="0.94117647059999998" blue="0.96470588239999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="40" id="dw7-cj-Dbw"/>
                            </constraints>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/>
                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                            <state key="normal" title="关闭">
                                <color key="titleColor" red="0.59607843140000005" green="0.60784313729999995" blue="0.69019607839999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            </state>
                            <userDefinedRuntimeAttributes>
                                <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounds" value="YES"/>
                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                                    <real key="value" value="4"/>
                                </userDefinedRuntimeAttribute>
                            </userDefinedRuntimeAttributes>
                            <connections>
                                <action selector="closeAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="uyp-CX-9Ay"/>
                            </connections>
                        </button>
                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qy1-em-2b7">
                            <rect key="frame" x="163.66666666666663" y="286.33333333333337" width="139.33333333333337" height="40"/>
                            <color key="backgroundColor" name="Color"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="40" id="Hkw-40-3vb"/>
                            </constraints>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/>
                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                            <state key="normal" title="去开启"/>
                            <userDefinedRuntimeAttributes>
                                <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounds" value="YES"/>
                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                                    <real key="value" value="4"/>
                                </userDefinedRuntimeAttribute>
                            </userDefinedRuntimeAttributes>
                            <connections>
                                <action selector="settingAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="bFf-n2-tQd"/>
                            </connections>
                        </button>
                    </subviews>
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstAttribute="trailing" secondItem="qy1-em-2b7" secondAttribute="trailing" constant="16" id="6xt-qN-sAb"/>
                        <constraint firstItem="hj6-P8-bgK" firstAttribute="centerX" secondItem="kTB-dH-ACo" secondAttribute="centerX" id="6zT-LX-U7D"/>
                        <constraint firstItem="i1L-Gm-C6V" firstAttribute="leading" secondItem="kTB-dH-ACo" secondAttribute="leading" constant="16" id="7Fn-bh-DFW"/>
                        <constraint firstItem="qy1-em-2b7" firstAttribute="width" secondItem="i1L-Gm-C6V" secondAttribute="width" id="GGM-kQ-OJl"/>
                        <constraint firstAttribute="bottom" secondItem="i1L-Gm-C6V" secondAttribute="bottom" constant="25" id="agz-y1-jm6"/>
                        <constraint firstAttribute="trailing" secondItem="YNJ-p2-Epb" secondAttribute="trailing" constant="16" id="ebd-M5-bGX"/>
                        <constraint firstItem="hj6-P8-bgK" firstAttribute="top" secondItem="kTB-dH-ACo" secondAttribute="top" constant="36" id="mHl-M3-UQx"/>
                        <constraint firstAttribute="bottom" secondItem="qy1-em-2b7" secondAttribute="bottom" constant="24" id="nSu-BV-cOE"/>
                        <constraint firstItem="qy1-em-2b7" firstAttribute="leading" secondItem="i1L-Gm-C6V" secondAttribute="trailing" constant="8" id="owF-dV-yCQ"/>
                        <constraint firstItem="i1L-Gm-C6V" firstAttribute="top" secondItem="YNJ-p2-Epb" secondAttribute="bottom" constant="30" id="vxR-k4-Oym"/>
                        <constraint firstItem="YNJ-p2-Epb" firstAttribute="leading" secondItem="kTB-dH-ACo" secondAttribute="leading" constant="16" id="wY1-IO-EXV"/>
                        <constraint firstItem="YNJ-p2-Epb" firstAttribute="top" secondItem="hj6-P8-bgK" secondAttribute="bottom" constant="23" id="zR9-X1-3GC"/>
                    </constraints>
                    <userDefinedRuntimeAttributes>
                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounds" value="YES"/>
                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                            <real key="value" value="6"/>
                        </userDefinedRuntimeAttribute>
                    </userDefinedRuntimeAttributes>
                </view>
            </subviews>
            <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
            <constraints>
                <constraint firstItem="kTB-dH-ACo" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="QNr-si-hIh"/>
                <constraint firstItem="kTB-dH-ACo" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="37" id="Zd4-Bb-G4d"/>
                <constraint firstAttribute="trailing" secondItem="kTB-dH-ACo" secondAttribute="trailing" constant="37" id="gCU-Mg-wOJ"/>
                <constraint firstItem="kTB-dH-ACo" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="jiE-Qx-lvO"/>
            </constraints>
            <connections>
                <outlet property="label_content" destination="YNJ-p2-Epb" id="b6I-i3-TT8"/>
                <outlet property="view_container" destination="kTB-dH-ACo" id="Oqq-2l-N0Q"/>
            </connections>
            <point key="canvasLocation" x="37" y="21"/>
        </view>
    </objects>
    <resources>
        <namedColor name="Color">
            <color red="0.27099999785423279" green="0.70599997043609619" blue="0.57999998331069946" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </namedColor>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>
OKProject/Class/LeftMenu/ViewModel/AgreementViewModel.swift
@@ -47,6 +47,9 @@
    case carRent
    case carSale
    case scenic
    case vioceRecord
    func parame() -> Int {
        switch self {
        case .privacy:
@@ -85,6 +88,9 @@
                return 20
            case .scenic:
                return 22
        case .vioceRecord:
            return 23
        }
    }
    
@@ -126,6 +132,8 @@
                return "常见问题"
            case .scenic:
                return "景区直通车"
        case .vioceRecord:
            return "车内录音设置"
        }
    }
}