From 124943cb75f4a7beb2f3ebbfe6d276e0378c71a1 Mon Sep 17 00:00:00 2001 From: lijia Date: Tue, 12 Mar 2024 15:03:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=A6=E9=98=9F=EF=BC=88=E9=82=80=E8=AF=B7?= =?UTF-8?q?=EF=BC=8C=E5=90=8C=E6=84=8F=EF=BC=8C=E6=8B=92=E7=BB=9D=EF=BC=89?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 42 ++- .../com/dahe/gldriver/adapter/CarsAdapter.kt | 10 +- .../gldriver/adapter/DriverTeamsAdapter.kt | 45 +++ .../dahe/gldriver/adapter/DriversAdapter.kt | 11 +- .../gldriver/adapter/InviteRecordAdapter.kt | 47 +++ .../java/com/dahe/gldriver/base/AppConfig.kt | 3 + .../com/dahe/gldriver/bean/CaptainBean.kt | 34 ++ .../java/com/dahe/gldriver/bean/CarBean.kt | 2 +- .../java/com/dahe/gldriver/bean/DicBean.kt | 21 ++ .../java/com/dahe/gldriver/bean/DriverBean.kt | 28 +- .../java/com/dahe/gldriver/bean/OcrBean.kt | 6 +- .../java/com/dahe/gldriver/bean/UpInfoBean.kt | 81 ++++- .../java/com/dahe/gldriver/bean/UserBean.kt | 1 + .../callback/OnOcrPicResultListener.kt | 2 +- .../main/java/com/dahe/gldriver/net/Api.kt | 117 +++++++ .../gldriver/ui/account/AuthSuccActivity.kt | 57 ++++ .../gldriver/ui/account/CodeLoginActivity.kt | 24 +- .../dahe/gldriver/ui/account/LoginActivity.kt | 8 + .../gldriver/ui/account/SelectRoleActivity.kt | 6 +- .../account/authperson/AuthDriverActivity.kt | 4 +- .../account/authperson/AuthDrivingActivity.kt | 312 +++++++++++++----- .../ui/account/authperson/AuthFaceActivity.kt | 3 +- .../account/authperson/AuthPersonActivity.kt | 2 +- .../ui/account/authperson/AuthRoadActivity.kt | 32 +- .../account/authperson/AuthTrailerActivity.kt | 177 ++++++++++ .../ui/account/authteam/AuthTeamActivity.kt | 18 +- .../com/dahe/gldriver/ui/home/HomeFragment.kt | 7 +- .../gldriver/ui/mine/InviteDriverActivity.kt | 115 +++++++ .../gldriver/ui/mine/InviteRecordActivity.kt | 140 ++++++++ .../com/dahe/gldriver/ui/mine/MineFragment.kt | 17 +- .../ui/mine/activity/CarTeamActivity.kt | 64 +++- .../ui/mine/activity/CarsManActivity.kt | 80 +++-- .../mine/activity/DriverTeamDetailActivity.kt | 195 +++++++++++ .../ui/mine/activity/DriverTeamsActivity.kt | 108 ++++++ .../ui/mine/fragment/CarsManFragment.kt | 81 ++++- .../ui/mine/fragment/DriversManFragment.kt | 53 ++- .../com/dahe/gldriver/utils/CommonPopUtils.kt | 19 ++ .../java/com/dahe/gldriver/utils/DicUtils.kt | 115 +++++++ .../java/com/dahe/gldriver/utils/OcrUtils.kt | 81 +++++ .../main/res/drawable-xxhdpi/icon_search.png | Bin 0 -> 2238 bytes .../main/res/layout/activity_auth_driving.xml | 187 ++++++++++- .../main/res/layout/activity_auth_road.xml | 16 +- .../main/res/layout/activity_auth_succ.xml | 66 ++++ .../main/res/layout/activity_auth_trailer.xml | 301 +++++++++++++++++ app/src/main/res/layout/activity_car_team.xml | 3 + .../res/layout/activity_driver_car_team.xml | 26 ++ .../layout/activity_driver_team_detail.xml | 197 +++++++++++ .../res/layout/activity_invite_driver.xml | 62 ++++ .../res/layout/activity_invite_record.xml | 25 ++ .../main/res/layout/fragment_waybill_list.xml | 25 +- app/src/main/res/layout/item_cars.xml | 5 +- app/src/main/res/layout/item_carteam.xml | 74 +++++ app/src/main/res/layout/item_driver.xml | 42 ++- .../main/res/layout/item_invite_record.xml | 40 +++ .../com/dahe/mylibrary/base/BaseActivity.java | 28 ++ .../dahe/mylibrary/utils/ActivityUtils.java | 25 ++ .../com/dahe/mylibrary/utils/PickerUtils.kt | 28 +- .../com/dahe/mylibrary/utils/TimeUtil.java | 15 + 58 files changed, 3098 insertions(+), 235 deletions(-) create mode 100644 app/src/main/java/com/dahe/gldriver/adapter/DriverTeamsAdapter.kt create mode 100644 app/src/main/java/com/dahe/gldriver/adapter/InviteRecordAdapter.kt create mode 100644 app/src/main/java/com/dahe/gldriver/bean/CaptainBean.kt create mode 100644 app/src/main/java/com/dahe/gldriver/bean/DicBean.kt create mode 100644 app/src/main/java/com/dahe/gldriver/ui/account/AuthSuccActivity.kt create mode 100644 app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthTrailerActivity.kt create mode 100644 app/src/main/java/com/dahe/gldriver/ui/mine/InviteDriverActivity.kt create mode 100644 app/src/main/java/com/dahe/gldriver/ui/mine/InviteRecordActivity.kt create mode 100644 app/src/main/java/com/dahe/gldriver/ui/mine/activity/DriverTeamDetailActivity.kt create mode 100644 app/src/main/java/com/dahe/gldriver/ui/mine/activity/DriverTeamsActivity.kt create mode 100644 app/src/main/java/com/dahe/gldriver/utils/DicUtils.kt create mode 100644 app/src/main/res/drawable-xxhdpi/icon_search.png create mode 100644 app/src/main/res/layout/activity_auth_succ.xml create mode 100644 app/src/main/res/layout/activity_auth_trailer.xml create mode 100644 app/src/main/res/layout/activity_driver_car_team.xml create mode 100644 app/src/main/res/layout/activity_driver_team_detail.xml create mode 100644 app/src/main/res/layout/activity_invite_driver.xml create mode 100644 app/src/main/res/layout/activity_invite_record.xml create mode 100644 app/src/main/res/layout/item_carteam.xml create mode 100644 app/src/main/res/layout/item_invite_record.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ee16b45..11de551 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,13 +16,13 @@ - + - + - + - + @@ -127,6 +127,11 @@ android:configChanges="keyboardHidden|orientation|locale" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan|stateHidden" /> + @@ -166,6 +171,12 @@ + @@ -239,12 +250,33 @@ android:configChanges="keyboardHidden|orientation|locale" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan|stateHidden" /> + + - + + + + diff --git a/app/src/main/java/com/dahe/gldriver/adapter/CarsAdapter.kt b/app/src/main/java/com/dahe/gldriver/adapter/CarsAdapter.kt index 0392303..cee27a4 100644 --- a/app/src/main/java/com/dahe/gldriver/adapter/CarsAdapter.kt +++ b/app/src/main/java/com/dahe/gldriver/adapter/CarsAdapter.kt @@ -23,8 +23,14 @@ class CarsAdapter : holder.run { setText(R.id.tvCarNum, item?.vehicleNum) setText(R.id.tvCarType, item?.vehicleType) - setText(R.id.tvCarLen, """${item?.carLong}mm""") - setText(R.id.tvCarWei, """${item?.approvedLoad?.toFloat()?.div(1000)}吨""") + setText(R.id.tvCarLen, """${if (!item?.carLong.isNullOrEmpty()) item?.carLong else ""}mm""") + setText( + R.id.tvCarWei, + """${ + if (!item?.approvedLoad.isNullOrEmpty()) item?.approvedLoad?.toFloat() + ?.div(1000) else 0 + }吨""" + ) ImageLoader.getInstance() .loadRoundImage(context, item?.carUrl, 6, getView(R.id.ivHead)) diff --git a/app/src/main/java/com/dahe/gldriver/adapter/DriverTeamsAdapter.kt b/app/src/main/java/com/dahe/gldriver/adapter/DriverTeamsAdapter.kt new file mode 100644 index 0000000..839c087 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/adapter/DriverTeamsAdapter.kt @@ -0,0 +1,45 @@ +package com.dahe.gldriver.adapter + +import android.content.Context +import android.view.ViewGroup +import android.widget.Button +import android.widget.ImageView +import com.chad.library.adapter4.BaseQuickAdapter +import com.chad.library.adapter4.viewholder.QuickViewHolder +import com.dahe.gldriver.R +import com.dahe.gldriver.bean.CaptainBean +import com.dahe.gldriver.bean.DriverBean +import com.dahe.glex.bean.WayBillBean +import com.dahe.mylibrary.utils.ImageLoader + +/** + * @ClassName WaybillAdapter + * @Author 用户 + * @Date 2024/1/23 16:27 + * @Description TODO + */ +class DriverTeamsAdapter() : + BaseQuickAdapter() { + override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: CaptainBean?) { + item?.let { + holder.run { + setText(R.id.tvName, it.captainName) + setText(R.id.tvPhone, """司机:${item.driverNum} 车辆:${item.carNum}""") + setVisible(R.id.tvStatu, item.joinStatus == "0") + ImageLoader.getInstance() + .loadRoundImage(context, it.avatar, 6, getView(R.id.ivHead)) + + + } + } + } + + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ): QuickViewHolder { + // 返回一个 ViewHolder + return QuickViewHolder(R.layout.item_carteam, parent) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/adapter/DriversAdapter.kt b/app/src/main/java/com/dahe/gldriver/adapter/DriversAdapter.kt index ee7bd4a..589e8b5 100644 --- a/app/src/main/java/com/dahe/gldriver/adapter/DriversAdapter.kt +++ b/app/src/main/java/com/dahe/gldriver/adapter/DriversAdapter.kt @@ -17,17 +17,24 @@ import com.dahe.mylibrary.utils.ImageLoader * @Date 2024/1/23 16:27 * @Description TODO */ -class DriversAdapter : +class DriversAdapter(var isInvite : Boolean = false) : BaseQuickAdapter() { override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: DriverBean?) { item?.let { holder.run { setText(R.id.tvName,it.idcardName) - setText(R.id.tvPhone,it.driverPhone) + setText(R.id.tvPhone,if (isInvite) it.contactPhone else it.driverPhone) setText(R.id.tvDays,"""加入${it.diffDay}天""") ImageLoader.getInstance() .loadRoundImage(context, it.driverAvatar, 6, getView(R.id.ivHead)) + + setVisible(R.id.tvStatu,it.level=="2") + setVisible(R.id.tvInvite,isInvite) + setVisible(R.id.vLine,!isInvite) + setVisible(R.id.tvDays,!isInvite) + + } } } diff --git a/app/src/main/java/com/dahe/gldriver/adapter/InviteRecordAdapter.kt b/app/src/main/java/com/dahe/gldriver/adapter/InviteRecordAdapter.kt new file mode 100644 index 0000000..9bb4dc8 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/adapter/InviteRecordAdapter.kt @@ -0,0 +1,47 @@ +package com.dahe.gldriver.adapter + +import android.content.Context +import android.view.ViewGroup +import android.widget.Button +import android.widget.ImageView +import com.chad.library.adapter4.BaseQuickAdapter +import com.chad.library.adapter4.viewholder.QuickViewHolder +import com.dahe.gldriver.R +import com.dahe.gldriver.bean.DriverBean +import com.dahe.gldriver.bean.InviteRecord +import com.dahe.glex.bean.WayBillBean +import com.dahe.mylibrary.utils.ImageLoader + +/** + * @ClassName WaybillAdapter + * @Author 用户 + * @Date 2024/1/23 16:27 + * @Description TODO + */ +class InviteRecordAdapter() : + BaseQuickAdapter() { + override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: InviteRecord?) { + item?.let { + holder.run { + setText(R.id.tvTime,it.createTime) + setText(R.id.tvContent, """${if (it.joinStatus=="0")"邀请" else ""}${it.driverName} ${it.driverPhone} ${if (it.joinStatus=="2") "拒绝加入车队" else "加入车队"}""") + setText(R.id.tvReason,it.reason) + + + setGone(R.id.tvReason,it.joinStatus!="2") + + + + } + } + } + + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ): QuickViewHolder { + // 返回一个 ViewHolder + return QuickViewHolder(R.layout.item_invite_record, parent) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/base/AppConfig.kt b/app/src/main/java/com/dahe/gldriver/base/AppConfig.kt index 68a4e20..e2c54be 100644 --- a/app/src/main/java/com/dahe/gldriver/base/AppConfig.kt +++ b/app/src/main/java/com/dahe/gldriver/base/AppConfig.kt @@ -12,9 +12,12 @@ object AppConfig { const val ID = "DA_HE_ID" const val PHONE = "DA_HE_PHONE" const val ORDER_ID = "DA_HE_ORDER_ID" + const val CAR_ID = "DA_HE_CAR_ID" + const val IS_SHOW = "DA_HE_IS_SHOW" const val WAYBILL_ID = "DA_HE_WAYBILL_ID" const val CHILDRE_ID = "DA_HE_CHILDRE_ID" const val CODE = "DA_HE_PHONE" + const val REFRSH = "DA_HE_REFRSH" const val SUCCESS_TYPE = "DA_HE_SUCCESS_TYPE" } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/bean/CaptainBean.kt b/app/src/main/java/com/dahe/gldriver/bean/CaptainBean.kt new file mode 100644 index 0000000..b4ae32c --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/bean/CaptainBean.kt @@ -0,0 +1,34 @@ +package com.dahe.gldriver.bean + +/** + * @ClassName CaptainBean + * @Author john + * @Date 2024/3/11 15:45 + * @Description 车队信息bean + */ +data class CaptainBean( + val auditStatus: String, + val avatar: String, + val captainId: String, + val captainName: String, + val driverNum: String, + val carNum: String, + val captainType: String, + val contactName: String, + val isRealname: String, + val joinStatus: String, + val status: String +) + +data class InviteRecord( + val bindTime: String, + val captainId: Int, + val createTime: String, + val driverName: String, + val driverPhone: String, + val driverId: Int, + val joinStatus: String, + val level: String, + val linkId: Int, + val reason: String +) \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/bean/CarBean.kt b/app/src/main/java/com/dahe/gldriver/bean/CarBean.kt index 4f6f711..e9c64c8 100644 --- a/app/src/main/java/com/dahe/gldriver/bean/CarBean.kt +++ b/app/src/main/java/com/dahe/gldriver/bean/CarBean.kt @@ -9,7 +9,7 @@ package com.dahe.gldriver.bean data class CarBean( val approvedLoad: String="", val carHeight: String="", - val carId: String="", + var carId: String="", val carLong: String="", val carUrl: String="", val carWidth: String="", diff --git a/app/src/main/java/com/dahe/gldriver/bean/DicBean.kt b/app/src/main/java/com/dahe/gldriver/bean/DicBean.kt new file mode 100644 index 0000000..44fc086 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/bean/DicBean.kt @@ -0,0 +1,21 @@ +package com.dahe.gldriver.bean + +import com.github.gzuliyujiang.wheelview.contract.TextProvider + +/** + * @ClassName DicBean + * @Author john + * @Date 2024/3/11 08:52 + * @Description 字典bean + */ +data class DiCarColor( + val dictCode: Int, + val dictLabel: String, + val dictValue: String, + val isDefault: String, + val status: String +) : TextProvider { + override fun provideText(): String { + return dictLabel + } +} diff --git a/app/src/main/java/com/dahe/gldriver/bean/DriverBean.kt b/app/src/main/java/com/dahe/gldriver/bean/DriverBean.kt index b02be33..1eac298 100644 --- a/app/src/main/java/com/dahe/gldriver/bean/DriverBean.kt +++ b/app/src/main/java/com/dahe/gldriver/bean/DriverBean.kt @@ -7,16 +7,20 @@ package com.dahe.gldriver.bean * @Description TODO */ data class DriverBean( - val bindTime: String, - val captainId: String, - val createTime: String, - val diffDay: String, - val driverAvatar: String, - val driverId: String, - val driverPhone: String, - val idcardName: String, - val idcardSex: String, - val isRealName: String, - val joinStatus: String, - val level: String + var bindTime: String = "", + var captainId: String = "", + var createTime: String = "", + var diffDay: String = "", + var driverNum: String = "", + var carNum: String = "", + var driverAvatar: String = "", + var driverId: String = "", + var driverPhone: String = "", + var contactName: String = "", + var contactPhone: String = "", + var idcardName: String = "", + var idcardSex: String = "", + var isRealName: String = "", + var joinStatus: String = "", + var level: String = "" ) \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/bean/OcrBean.kt b/app/src/main/java/com/dahe/gldriver/bean/OcrBean.kt index 9833bc2..fa6c015 100644 --- a/app/src/main/java/com/dahe/gldriver/bean/OcrBean.kt +++ b/app/src/main/java/com/dahe/gldriver/bean/OcrBean.kt @@ -77,12 +77,11 @@ data class DataX( val validFromDate: String = "", //行驶证 - val issueDate: String = "", val model: String = "", val owner: String = "", val licensePlateNumber: String = "", val registrationDate: String = "", - val useNature: String = "", + val useNature: String = "",//使用性质 val vehicleType: String = "", val vinCode: String = "", val recordNumber: String = "",//档案编号 @@ -92,6 +91,9 @@ data class DataX( val permittedWeight: String = "",//核定载质量 val tractionWeight: String = "",//准牵引总质量 val overallDimension: String = "",//6915×2550×3960mm + val plateColorCode: String = "",//车牌颜色 + val inspectionRecord: String = "",//检验有效期至2023年06月吉J 有效期 + val issueDate: String = "",//发证日期 val energySign: String = "",//能源类型 ) diff --git a/app/src/main/java/com/dahe/gldriver/bean/UpInfoBean.kt b/app/src/main/java/com/dahe/gldriver/bean/UpInfoBean.kt index ae58d24..67579b8 100644 --- a/app/src/main/java/com/dahe/gldriver/bean/UpInfoBean.kt +++ b/app/src/main/java/com/dahe/gldriver/bean/UpInfoBean.kt @@ -35,6 +35,58 @@ data class UpDriverInfoBean( var licenseApproveOrganization: String = "" ) + +/** + * 上传行驶证 + * */ +data class UpDrivingInfoBean( + var address: String = "", + var approvedLoad: String = "", + var barcodeNumber: String = "", + var carHeight: String = "", + var carLong: String = "", + var carUrl: String = "", + var carId: String = "", + var carWidth: String = "", + var curbWeight: String = "", + var energySign: String = "", + var energySignCode: String = "", + var engineNo: String = "", + var inspectionRecord: String = "", + var isTrailer: String = "", + var issuingAuthority: String = "", + var licenseBackUrl: String = "", + var licenseFaceUrl: String = "", + var licenseIssueDate: String = "", + var licenseRegisterDate: String = "", + var licenseRemarks: String = "", + var licensevaridity: String = "", + var model: String = "", + var overallDimension: String = "", + var owner: String = "", + var passengerCapacity: String = "", + var plateColor: String = "", + var plateColorCode: String = "", + var trailerPlateColor: String = "", + var trailerPlateColorCode: String = "", + var recordNumber: String = "", + var registerImageUrl: String = "", + var roadLicense: String = "", + var roadLicensePhotoUrl: String = "", + var roadLicenseSend: String = "", + var roadLicensevaridity: String = "", + var totalWeight: String = "", + var tractionWeight: String = "", + var useNature: String = "", + var vehicleNum: String = "", + var vehicleType: String = "", + var vehicleTypeCode: String = "", + var roadLicenseValidity: String = "", + var licenseValidity: String = "",//到期时间 + var vinCode: String = "" +) + + /** * 上传从业资格 * */ @@ -45,6 +97,18 @@ data class UpQualiInfoBean( var qualificationCertificateExamineDate: String = "" ) + +/** + * 上传车辆的道路运输证 + * */ +data class UpRoadInfoBean( + var carId: String = "", + var roadLicensePhotoUrl: String = "", + var roadLicense: String = "", + var roadLicensevaridity: String = "", + var roadLicenseSend: String = "" +) + /** * 上传银行卡 * */ @@ -75,7 +139,7 @@ data class AuthTeamBean( var idcardNo: String="", var roadLicensePhotoUrl: String="", var roadLicense: String="", - var roadLicenseValidity: String="", + var roadLicensevaridity: String="", var businessLicensePhoneUrl: String="", var businessLicenseCreditCode: String="", var businessLicenseEffectiveStart: String="", @@ -87,3 +151,18 @@ data class AuthTeamBean( } } +/** + * 司机同意/拒绝加入车队 + * @property joinStatus String 0=待同意,1=已同意,2=已拒绝 + * @property linkId Int + * @property reason String + * @constructor + */ +data class UpCaptain( + var joinStatus: String="", + var linkId: String="", + var captainId: String="", + var driverId: String="", + var reason: String="" +) + diff --git a/app/src/main/java/com/dahe/gldriver/bean/UserBean.kt b/app/src/main/java/com/dahe/gldriver/bean/UserBean.kt index 255907c..4977af9 100644 --- a/app/src/main/java/com/dahe/gldriver/bean/UserBean.kt +++ b/app/src/main/java/com/dahe/gldriver/bean/UserBean.kt @@ -23,6 +23,7 @@ data class UserBean( var distance :String, var idCardValidity :String, var driverValidity :String, + var driverId :String, var qualificationValidity :String, var isCar :String, var qrcodeUrl :String, diff --git a/app/src/main/java/com/dahe/gldriver/callback/OnOcrPicResultListener.kt b/app/src/main/java/com/dahe/gldriver/callback/OnOcrPicResultListener.kt index 07e752d..a112025 100644 --- a/app/src/main/java/com/dahe/gldriver/callback/OnOcrPicResultListener.kt +++ b/app/src/main/java/com/dahe/gldriver/callback/OnOcrPicResultListener.kt @@ -10,7 +10,7 @@ import com.luck.picture.lib.entity.LocalMedia * @Description TODO */ fun interface OnOcrPicResultListener { - fun onSuccResult(picPath: PicPath, result: OcrPersonBean) + fun onSuccResult(picPath: PicPath, result: OcrPersonBean?) } data class PicPath( diff --git a/app/src/main/java/com/dahe/gldriver/net/Api.kt b/app/src/main/java/com/dahe/gldriver/net/Api.kt index ae1f113..a7ac5f7 100644 --- a/app/src/main/java/com/dahe/gldriver/net/Api.kt +++ b/app/src/main/java/com/dahe/gldriver/net/Api.kt @@ -3,16 +3,22 @@ package com.dahe.gldriver.net import com.dahe.gldriver.BuildConfig import com.dahe.gldriver.BuildConfig.BASE_URL import com.dahe.gldriver.bean.AuthTeamBean +import com.dahe.gldriver.bean.CaptainBean import com.dahe.gldriver.bean.CarBean +import com.dahe.gldriver.bean.DiCarColor import com.dahe.gldriver.bean.DriverBean +import com.dahe.gldriver.bean.InviteRecord import com.dahe.gldriver.bean.OcrPersonBean import com.dahe.gldriver.bean.OrderDetailBean import com.dahe.gldriver.bean.OssBean import com.dahe.gldriver.bean.UpBankInfoBean +import com.dahe.gldriver.bean.UpCaptain import com.dahe.gldriver.bean.UpDriverInfoBean +import com.dahe.gldriver.bean.UpDrivingInfoBean import com.dahe.gldriver.bean.UpPersonInfoBean import com.dahe.gldriver.bean.UpPicBean import com.dahe.gldriver.bean.UpQualiInfoBean +import com.dahe.gldriver.bean.UpRoadInfoBean import com.dahe.glex.bean.* import com.dahe.mylibrary.net.CommonResponseBean import io.reactivex.rxjava3.core.Observable @@ -23,6 +29,7 @@ import retrofit2.http.Multipart import retrofit2.http.POST import retrofit2.http.Part import retrofit2.http.Query +import java.util.Objects /** @@ -40,6 +47,17 @@ interface Api { ): Observable> + /** + * 根据字典类型查询字典-不分页 + * @param dictType String + * @return Observable>> + */ + @GET(BASE_URL + "driver/common/dict/getSysDictDataList/all") + fun getSysDictDataList( + @Query("dictType") dictType: String + ): Observable>> + + /** * 获取验证码 * */ @@ -120,6 +138,12 @@ interface Api { @POST(BASE_URL + "driver/driver/setUpDriverQualificationCertificate") fun setUpDriverQualificationCertificate(@Body qualiBean: UpQualiInfoBean): Observable> + /** + * 上传车辆的道路运输证 + * */ + @POST(BASE_URL + "driver/car/setUpRoadLicense") + fun setUpRoadLicense(@Body roadBean: UpRoadInfoBean): Observable> + /** * 司机上传银行卡 * */ @@ -177,6 +201,11 @@ interface Api { ): Observable> + /** + * 设置司机账号类型 + * @param role String 0普通司机,1车队长 + * @return Observable> + */ @GET(BASE_URL + "driver/driver/setUpDriverRole") fun setUpDriverRole(@Query("role") role: String): Observable> @@ -188,6 +217,13 @@ interface Api { @GET(BASE_URL + "driver/car/carList") fun carList(): Observable>> + /** + * + * 根据车牌号查询车辆信息 + * */ + @GET(BASE_URL + "driver/car/getCarByCarVehicleNum") + fun getCarByCarVehicleNum(@Query("vehicleNum") vehicleNum: String): Observable> + /** * * 解绑车辆 @@ -195,6 +231,72 @@ interface Api { @POST(BASE_URL + "driver/car/unBindCar") fun unBindCar(@Body carBean: CarBean): Observable> + /** + * + * 绑定车辆 + * */ + @POST(BASE_URL + "driver/car/bindCar") + fun bindCar(@Body carBean: CarBean): Observable> + + /** + * + * 新增车辆 + * */ + @POST(BASE_URL + "driver/car/addCar") + fun addCar(@Body upDrivingInfoBean: UpDrivingInfoBean): Observable> + + /** + * + * 新增挂车信息 + * */ + @POST(BASE_URL + "driver/car/addTrailer") + fun addTrailer(@Body upDrivingInfoBean: UpDrivingInfoBean): Observable> + + /** + * + *邀请司机加入车队 + * */ + @POST(BASE_URL + "driver/captain/askToDriver") + fun askToDriver(@Body upDrivingInfoBean: DriverBean): Observable> + + + /** + * + *根据手机号查询司机 + * */ + @GET(BASE_URL + "driver/captain/selectDriverList") + fun selectDriverList(@Query("phone") phone: String): Observable>> + + /** + * + *查询司机所在车队信息 + * */ + @GET(BASE_URL + "driver/captain/selectCaptainListInDriver") + fun selectCaptainListInDriver(): Observable>> + + /** + * + *查询车队邀请历史 + * */ + @GET(BASE_URL + "driver/captain/selectCaptainAskByDriverHistoryList") + fun selectCaptainAskByDriverHistoryList(): Observable>> + + /** + * 司机同意/拒绝加入车队 + * @param upCaptain UpCaptain + * @return Observable> + */ + @POST(BASE_URL + "driver/driver/responseToCaptain") + fun responseToCaptain(@Body upCaptain: UpCaptain): Observable> + + /** + * 司机退出车队 + * @param upCaptain UpCaptain + * @return Observable> + */ + @POST(BASE_URL + "driver/captain/unbindDriver") + fun unbindDriver(@Body upCaptain: UpCaptain): Observable> + /** * 查询车队所属的司机列表(包含车辆) @@ -203,6 +305,21 @@ interface Api { @GET(BASE_URL + "driver/captain/selectDriversInCaptain") fun selectDriversInCaptain(@Query("captainId") captainId: String): Observable>> + /** + * 根据ID查询车队车辆列表-根据司机分页 + * @return Observable>> + */ + @GET(BASE_URL + "driver/captain/selectDriverIdsForCarPage") + fun selectDriverIdsForCarPage(@Query("captainId") captainId: String): Observable>> + + /** + * 根据ID查询车队信息 + * @param captainId String + * @return Observable>> + */ + @GET(BASE_URL + "driver/captain/getCaptainById") + fun getCaptainById(@Query("captainId") captainId: String): Observable> + companion object { // String BASE_URL = "https://tmstest.dahehuoyun.com/"; diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/AuthSuccActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/AuthSuccActivity.kt new file mode 100644 index 0000000..d684d0a --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/ui/account/AuthSuccActivity.kt @@ -0,0 +1,57 @@ +package com.dahe.gldriver.ui.account + +import android.os.Bundle +import com.dahe.gldriver.R +import com.dahe.gldriver.base.AppConfig +import com.dahe.gldriver.databinding.ActivityAuthSuccBinding +import com.dahe.gldriver.ui.HomeActivity +import com.dahe.gldriver.ui.account.authperson.AuthDrivingActivity +import com.dahe.gldriver.ui.mine.activity.CarsManActivity +import com.dahe.gldriver.ui.waybill.activity.WaybillDetailActivity +import com.dahe.gldriver.ui.waybill.activity.WaybillLoadActivity +import com.dahe.gldriver.ui.waybill.activity.WaybillUnlLoadActivity +import com.dahe.gldriver.ui.waybill.activity.WaybillUpPicActivity +import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.utils.ActivityUtils +import com.dahe.mylibrary.utils.BaseUtils +import com.dahe.mylibrary.utils.TimeUtil + +/** + * @ClassName AuthSuccActivity + * @Author john + * @Date 2024/3/8 15:13 + * @Description TODO + */ +class AuthSuccActivity : BaseActivity() { + override fun initView(savedInstanceState: Bundle?) { + setStatusBarColor(R.color.white) + val type = intent.extras?.getInt(AppConfig.SUCCESS_TYPE) + setTitleBar("提交成功", true) + + binding.run { + btnLeft.setOnClickListener { + goLeftOrRight(type, true) + } + btnRight.setOnClickListener { + goLeftOrRight(type, false) + } + + } + } + + override fun initDate() { + + } + + + /* + * + * */ + private fun goLeftOrRight(type: Int?, isLeft: Boolean) { + if (isLeft) { + ActivityUtils.finishToActivity(HomeActivity::class.java, false) + } else { + ActivityUtils.finishToActivity(mContext,CarsManActivity::class.java,AuthDrivingActivity::class.java,false) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/CodeLoginActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/CodeLoginActivity.kt index e5d6d5c..68b66d7 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/CodeLoginActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/CodeLoginActivity.kt @@ -33,14 +33,15 @@ class CodeLoginActivity : BaseActivity(), View.OnClickListe } override fun initDate() { - DataManager.getInstance().getCode(phone) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { - override fun onSuccess(t: CommonResponseBean) { - super.onSuccess(t) - } - })) + // TODO: 获取验证码,暂时注释 +// DataManager.getInstance().getCode(phone) +// .subscribeOn(Schedulers.io()) +// .observeOn(AndroidSchedulers.mainThread()) +// .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { +// override fun onSuccess(t: CommonResponseBean) { +// super.onSuccess(t) +// } +// })) } override fun onClick(view: View?) { @@ -58,16 +59,15 @@ class CodeLoginActivity : BaseActivity(), View.OnClickListe } .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + .subscribe(BaseObserver(mContext, object : RxHttpCallBack(this) { override fun onSuccess(t: CommonResponseBean) { super.onSuccess(t) SPUtils.instance.setUserInfo(mContext, Gson().toJson(t.data)) ActivityUtils.startActivity( mContext, - SelectRoleActivity::class.java + HomeActivity::class.java ) - finish() - ActivityUtils.finishActivity(LoginActivity::class.java) + ActivityUtils.finishToActivity(LoginActivity::class.java,true) } })) diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/LoginActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/LoginActivity.kt index 84a0b40..6c9cf22 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/LoginActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/LoginActivity.kt @@ -6,6 +6,8 @@ import android.view.View import com.dahe.gldriver.base.AppConfig import com.dahe.gldriver.databinding.ActivityLoginBinding import com.dahe.gldriver.ui.HomeActivity +import com.dahe.gldriver.ui.account.authperson.AuthDrivingActivity +import com.dahe.gldriver.ui.account.authperson.AuthTrailerActivity import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.utils.ActivityUtils import com.dahe.mylibrary.utils.ToastUtils @@ -40,6 +42,12 @@ class LoginActivity : BaseActivity(), View.OnClickListener binding.ok.setOnClickListener(this) binding.imgHead.setOnLongClickListener { + // TODO: 调试图片上传 +// ActivityUtils.startActivity(mContext, AuthTrailerActivity::class.java,Bundle().apply { +// putString(AppConfig.CAR_ID,"25") +// }) +// ActivityUtils.startActivity(mContext, AuthDrivingActivity::class.java) + ActivityUtils.startActivity(mContext, HomeActivity::class.java) return@setOnLongClickListener true } diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/SelectRoleActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/SelectRoleActivity.kt index 71d7470..26a365a 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/SelectRoleActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/SelectRoleActivity.kt @@ -7,6 +7,7 @@ import com.dahe.gldriver.net.BaseObserver import com.dahe.gldriver.net.DataManager import com.dahe.gldriver.net.RxHttpCallBack import com.dahe.gldriver.ui.account.authperson.AuthDrivingActivity +import com.dahe.gldriver.ui.account.authperson.AuthPersonActivity import com.dahe.gldriver.ui.account.authteam.AuthTeamActivity import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.net.CommonResponseBean @@ -27,7 +28,7 @@ class SelectRoleActivity : BaseActivity() { binding.rlPerson.setOnClickListener { - ActivityUtils.startActivity(mContext, AuthDrivingActivity::class.java) + ActivityUtils.startActivity(mContext, AuthPersonActivity::class.java) // DataManager.getInstance().setUpDriverRole("0") // .subscribeOn(Schedulers.io()) @@ -48,9 +49,10 @@ class SelectRoleActivity : BaseActivity() { .subscribe(BaseObserver(mContext, object : RxHttpCallBack(this) { override fun onSuccess(t: CommonResponseBean) { super.onSuccess(t) + ActivityUtils.startActivity(mContext, AuthTeamActivity::class.java) } })) - ActivityUtils.startActivity(mContext, AuthTeamActivity::class.java) + } } diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDriverActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDriverActivity.kt index 60abfe9..98cb2c8 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDriverActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDriverActivity.kt @@ -113,7 +113,7 @@ class AuthDriverActivity : BaseActivity() { private fun selFrontPic() { OcrUtils.getInstance().ocrDriver(mContext, this) { picPath, result -> - result.data.face?.data.let { + result?.data?.face?.data.let { ImageLoader.getInstance() .loadRoundImage(mContext, picPath.locPic, 12, binding.ivFront) driverInfoBean.licensePhotoFaceUrl = picPath.picPath @@ -143,7 +143,7 @@ class AuthDriverActivity : BaseActivity() { private fun selBackPic() { OcrUtils.getInstance().ocrDriver(mContext, this) { picPath, result -> - result.data.back?.data.let { + result?.data?.back?.data.let { ImageLoader.getInstance() .loadRoundImage(mContext, picPath.locPic, 12, binding.ivBack) driverInfoBean.licensePhotoBackUrl = picPath.picPath diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDrivingActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDrivingActivity.kt index f546e5d..8113995 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDrivingActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDrivingActivity.kt @@ -2,17 +2,22 @@ package com.dahe.gldriver.ui.account.authperson import android.os.Bundle import com.dahe.gldriver.R -import com.dahe.gldriver.bean.OcrPersonBean +import com.dahe.gldriver.base.AppConfig +import com.dahe.gldriver.bean.DiCarColor +import com.dahe.gldriver.bean.UpDrivingInfoBean import com.dahe.gldriver.databinding.ActivityAuthDrivingBinding import com.dahe.gldriver.net.BaseObserver import com.dahe.gldriver.net.DataManager import com.dahe.gldriver.net.RxHttpCallBack -import com.dahe.gldriver.oss.OssServiceUtil +import com.dahe.gldriver.ui.account.AuthSuccActivity +import com.dahe.gldriver.utils.DicUtils +import com.dahe.gldriver.utils.OcrUtils import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.utils.ActivityUtils import com.dahe.mylibrary.utils.ImageLoader -import com.dahe.mylibrary.utils.PopsUtils +import com.dahe.mylibrary.utils.PickerUtils +import com.dahe.mylibrary.utils.TimeUtil import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers @@ -24,119 +29,258 @@ import io.reactivex.rxjava3.schedulers.Schedulers */ class AuthDrivingActivity : BaseActivity() { - var ossServiceUtil: OssServiceUtil = OssServiceUtil.getInstance() + + var upDrivingInfoBean = UpDrivingInfoBean() override fun initView(savedInstanceState: Bundle?) { setStatusBarColor(R.color.white) setTitleBar("实名认证", true) binding.btnOk.setOnClickListener { - ActivityUtils.startActivity(mContext, AuthRoadActivity::class.java) + subMit() } binding.run { ivFront.setOnClickListener { selFrontPic() -// PopsUtils.getInstance().showSimSelPic(mContext) { -// ImageLoader.getInstance().loadRoundImage(mContext, it[0].path, 12, ivFront) -// } } ivBack.setOnClickListener { selBackPic() -// PopsUtils.getInstance().showSimSelPic(mContext) { -// ImageLoader.getInstance().loadRoundImage(mContext, it[0].path, 12, ivBack) -// } + } + ivRoadFront.setOnClickListener { + OcrUtils.getInstance() + .noOcrUpPic(mContext, this@AuthDrivingActivity) { picPath, ocrResult -> + ImageLoader.getInstance() + .loadRoundImage(mContext, picPath.locPic, 12, ivRoadFront) + upDrivingInfoBean.roadLicensePhotoUrl = picPath.picPath + } } ivCar.setOnClickListener { - PopsUtils.getInstance().showSimSelPic(mContext) { - ImageLoader.getInstance().loadRoundImage(mContext, it[0].path, 12, ivCar) + OcrUtils.getInstance() + .noOcrUpPic(mContext, this@AuthDrivingActivity) { picPath, ocrResult -> + ImageLoader.getInstance() + .loadRoundImage(mContext, picPath.locPic, 12, ivCar) + upDrivingInfoBean.carUrl = picPath.picPath + } + } + + tvDate.setOnClickListener { + PickerUtils.getInstance().showDateSim(this@AuthDrivingActivity) { + tvDate.text = it } } + //车辆类型 + tvCarType.setOnClickListener { + //车辆类型 + DicUtils.getInstance() + .selectDicCarType(mContext, this@AuthDrivingActivity, isLoading = true) { position, item -> + var data = item as DiCarColor + tvCarType.text = data.dictLabel + upDrivingInfoBean.run { + vehicleTypeCode = data.dictValue + vehicleType = data.dictLabel + } + } + } + tvEnd.setOnClickListener { + PickerUtils.getInstance().showDateSim(this@AuthDrivingActivity) { + tvEnd.text = it + } + } + + + + tvCarColor.setOnClickListener { + DicUtils.getInstance() + .getCarColor(mContext, this@AuthDrivingActivity) { position, item -> + var data = item as DiCarColor + tvCarColor.text = data.dictLabel + upDrivingInfoBean.run { + plateColorCode = data.dictValue + plateColor = data.dictLabel + } + } + } } } override fun initDate() { } + /** + * 行驶证正面 + */ private fun selFrontPic() { - PopsUtils.getInstance().showSimSelPic(mContext) { - var data = it[0] - ossServiceUtil.asyncPutImage(data.realPath, this@AuthDrivingActivity) - ossServiceUtil.setResultCallBack { data, oldPath -> - DataManager.getInstance().recognizeVehicleLicense(oldPath) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe( - BaseObserver(mContext, - object : RxHttpCallBack() { - override fun onSuccess(t: CommonResponseBean) { - super.onSuccess(t) - t.data.data.face?.data?.let { - binding.run { - etCarNum.setText(it.licensePlateNumber) - etOwner.setText(it.owner) - etUseNature.setText(it.useNature) - etCurbWeight.setText(it.curbWeight) - etPermittedWeight.setText(it.permittedWeight) - tvCarType.text = it.vehicleType - } - } -// t.data.data.face?.data.let { -// driverInfoBean.licensePhotoFaceUrl = oldPath -// it?.run { -// driverInfoBean.run { -// licenseApproveOrganization = -// issueAuthority //发证机关 -// } -// -// -// binding.run { -// etName.setText(it.name) -// etId.setText(it.licenseNumber) -// tvCarType.text = it.approvedType -// if (validPeriod.contains("至")) { -// val split = validPeriod.split("至") -// tvStart.text = split[0] -// tvEnd.text = -// if (split.size == 2) split[1] else "" -// } -// } -// } -// } - } - }) - ) + OcrUtils.getInstance().ocrDriveing(mContext, this) { picPath, result -> + ImageLoader.getInstance() + .loadRoundImage(mContext, picPath.locPic, 12, binding.ivFront) + upDrivingInfoBean.licenseFaceUrl = picPath.picPath//行驶证照片(正面) + result?.data?.face?.data?.let { + var isHasFow = it.vehicleType.contains("牵引车") + upDrivingInfoBean.isTrailer = if (isHasFow) "1" else "0"//是否有挂车(0否 1是) + + //识别车辆类型后,调用接口匹配code值!!!??? + DicUtils.getInstance() + .getCarTypeByValue(mContext, it.vehicleType) { position, item -> + if (item != null) { + var data = item as DiCarColor + upDrivingInfoBean.run { + vehicleTypeCode = data.dictValue + vehicleType = data.dictLabel + } + binding.tvCarType.text = data.dictLabel + } + } + + binding.run { + etCarNum.setText(it.licensePlateNumber) + etOwner.setText(it.owner) + etUseNature.setText(it.useNature) + etCurbWeight.setText(it.curbWeight) + etPermittedWeight.setText(it.permittedWeight) + } } - - ImageLoader.getInstance().loadRoundImage(mContext, data.realPath, 12, binding.ivFront) } } private fun selBackPic() { - PopsUtils.getInstance().showSimSelPic(mContext) { - var data = it[0] - ossServiceUtil.asyncPutImage(data.realPath, this@AuthDrivingActivity) - ossServiceUtil.setResultCallBack { data, oldPath -> - run { - DataManager.getInstance().recognizeVehicleLicense(oldPath) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe( - BaseObserver(mContext, - object : RxHttpCallBack() { - override fun onSuccess(t: CommonResponseBean) { - super.onSuccess(t) -// t.data.data.back?.data.let { -// driverInfoBean.licensePhotoBackUrl = oldPath -// } - } - }) - ) + OcrUtils.getInstance().ocrDriveing(mContext, this) { picPath, result -> + ImageLoader.getInstance() + .loadRoundImage(mContext, picPath.locPic, 12, binding.ivBack) + upDrivingInfoBean.licenseBackUrl = picPath.picPath//行驶证照片(反面) + + result?.data?.back?.data?.let { + if (it.inspectionRecord.length > 13) { + val changeDateNoneFormat = TimeUtil.changeDateNoneFormat( + it.inspectionRecord.substring(6, 14), + "yyyy年MM月" + ) + if (!changeDateNoneFormat.isNullOrEmpty()) { + upDrivingInfoBean.licenseValidity = changeDateNoneFormat//行驶证到期时间 + binding.tvEnd.text = changeDateNoneFormat + } + } + //车长 + val split = it.overallDimension.split("mm")[0].split("X") + if (split!=null&&split.size>2){ + upDrivingInfoBean.run { + carLong = split[0] + carWidth = split[1] + carHeight = split[2] + } + } + upDrivingInfoBean.tractionWeight = it.tractionWeight + upDrivingInfoBean.energySignCode = it.energySign + binding.run { + etCurbWeight.setText(it.curbWeight)//整备质量 + etPermittedWeight.setText(it.permittedWeight)//核定载质量 } } - - - ImageLoader.getInstance().loadRoundImage(mContext, data.realPath, 12, binding.ivBack) } + + +// PopsUtils.getInstance().showSimSelPic(mContext) { +// var data = it[0] +// ossServiceUtil.asyncPutImage(data.realPath, this@AuthDrivingActivity) +// ossServiceUtil.setResultCallBack { data, oldPath -> +// run { +// DataManager.getInstance().recognizeVehicleLicense(oldPath) +// .subscribeOn(Schedulers.io()) +// .observeOn(AndroidSchedulers.mainThread()) +// .subscribe( +// BaseObserver(mContext, +// object : RxHttpCallBack() { +// override fun onSuccess(t: CommonResponseBean) { +// super.onSuccess(t) +//// t.data.data.back?.data.let { +//// driverInfoBean.licensePhotoBackUrl = oldPath +//// } +// } +// }) +// ) +// +// } +// } +// +// +// ImageLoader.getInstance().loadRoundImage(mContext, data.realPath, 12, binding.ivBack) +// } } + + private fun subMit() { + binding.run { + if (etCarNum.text.isNullOrEmpty() || + tvCarType.text.isNullOrEmpty() || + tvEnd.text.isNullOrEmpty() || + tvCarColor.text.isNullOrEmpty() + ) { + showToast("请完善车辆信息") + return@subMit + } + } + + upDrivingInfoBean.run { + roadLicenseValidity = binding.tvDate.text.toString()//道路有效期 + licenseValidity = binding.tvEnd.text.toString()//行驶证有效期 + roadLicense = binding.etID.text.toString()//道路运输许可证号 + vehicleNum = binding.etCarNum.text.trim().toString() + vehicleType = binding.tvCarType.text.trim().toString() + plateColor = binding.tvCarColor.text.trim().toString() + } + + DataManager.getInstance().addCar(upDrivingInfoBean) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + if (upDrivingInfoBean.isTrailer == "1") { + finish() + ActivityUtils.startActivity(mContext, AuthTrailerActivity::class.java,Bundle().apply { + putString(AppConfig.CAR_ID,t.data.carId) + }) + } else { + ActivityUtils.startActivity(mContext, AuthSuccActivity::class.java) + } + } + })) + } + + + /** + * 根据车牌号查询车辆信任 + * @param carNum String + */ + private fun getCarInfoByCarNum(carNum: String) { + DataManager.getInstance().getCarByCarVehicleNum(carNum) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + t.data.let { + binding.run { + ImageLoader.getInstance() + .loadRoundImage(mContext, it.licenseFaceUrl, 12, ivFront) + ImageLoader.getInstance() + .loadRoundImage(mContext, it.licenseBackUrl, 12, ivBack) + ImageLoader.getInstance() + .loadRoundImage(mContext, it.carUrl, 12, ivCar) + ImageLoader.getInstance() + .loadRoundImage(mContext, it.roadLicensePhotoUrl, 12, ivRoadFront) + + etCarNum.setText(it.vehicleNum) + etOwner.setText(it.owner) + tvCarType.text = it.vehicleType + etUseNature.setText(it.useNature) + etID.setText(it.roadLicense) + tvDate.text = it.roadLicenseValidity + } + } + + } + })) + } + + } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthFaceActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthFaceActivity.kt index e7e6738..b3bcc97 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthFaceActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthFaceActivity.kt @@ -3,6 +3,7 @@ package com.dahe.gldriver.ui.account.authperson import android.os.Bundle import com.dahe.gldriver.R import com.dahe.gldriver.databinding.ActivityAuthFaceBinding +import com.dahe.gldriver.ui.account.AuthSuccActivity import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.utils.ActivityUtils @@ -17,7 +18,7 @@ class AuthFaceActivity : BaseActivity() { setStatusBarColor(R.color.white) setTitleBar("实名认证",true) binding.btnOk.setOnClickListener { - ActivityUtils.startActivity(mContext,AuthDrivingActivity::class.java) + ActivityUtils.startActivity(mContext,AuthSuccActivity::class.java) } } diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthPersonActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthPersonActivity.kt index 4605ba0..7c299d4 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthPersonActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthPersonActivity.kt @@ -84,7 +84,7 @@ class AuthPersonActivity : BaseActivity() { OcrUtils.getInstance().ocrPerson(mContext,this@AuthPersonActivity){picPath,result-> ImageLoader.getInstance().loadRoundImage(mContext, picPath.locPic, 12, ivFront) perInfoBean.idcardFrontUrl = picPath.picPath - result.data.face?.data.let { + result?.data?.face?.data.let { it?.run { perInfoBean.run { idcardNo = idNumber diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthRoadActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthRoadActivity.kt index 63d7f78..b963a3f 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthRoadActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthRoadActivity.kt @@ -3,15 +3,23 @@ package com.dahe.gldriver.ui.account.authperson import android.os.Bundle import com.dahe.gldriver.R import com.dahe.gldriver.bean.UpQualiInfoBean +import com.dahe.gldriver.bean.UpRoadInfoBean import com.dahe.gldriver.databinding.ActivityAuthRoadBinding +import com.dahe.gldriver.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack import com.dahe.gldriver.oss.OssServiceUtil +import com.dahe.gldriver.ui.account.AuthSuccActivity import com.dahe.gldriver.ui.account.SelectRoleActivity import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.utils.ActivityUtils import com.dahe.mylibrary.utils.ImageLoader import com.dahe.mylibrary.utils.PickerUtils import com.dahe.mylibrary.utils.PopsUtils import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers /** * @ClassName AuthRoadActivity @@ -22,18 +30,18 @@ import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener class AuthRoadActivity : BaseActivity() { var ossServiceUtil: OssServiceUtil = OssServiceUtil.getInstance() - var upQuaInfo = UpQualiInfoBean() + var upRoad = UpRoadInfoBean() override fun initView(savedInstanceState: Bundle?) { setStatusBarColor(R.color.white) setTitleBar("实名认证",true) binding.run { btnOk.setOnClickListener { - ActivityUtils.startActivity(mContext, SelectRoleActivity::class.java) + subMit() } tvDate.setOnClickListener { PickerUtils.getInstance().showDate(this@AuthRoadActivity){ date -> - +// upRoad.roadLicenseValidity = date } } ivFront.setOnClickListener { @@ -46,4 +54,22 @@ class AuthRoadActivity : BaseActivity() { override fun initDate() { } + + private fun subMit() { + upRoad.run { + roadLicense = binding.etID.text.trim().toString() +// qualificationCertificateNo = binding.etId.text.toString() +// qualificationCertificateEffectiveEnd = binding.tvDate.text.toString() + + DataManager.getInstance().setUpRoadLicense(upRoad) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + ActivityUtils.startActivity(mContext, AuthSuccActivity::class.java) + } + })) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthTrailerActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthTrailerActivity.kt new file mode 100644 index 0000000..19ea453 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthTrailerActivity.kt @@ -0,0 +1,177 @@ +package com.dahe.gldriver.ui.account.authperson + +import android.os.Bundle +import com.dahe.gldriver.R +import com.dahe.gldriver.base.AppConfig +import com.dahe.gldriver.bean.DiCarColor +import com.dahe.gldriver.bean.UpDrivingInfoBean +import com.dahe.gldriver.databinding.ActivityAuthTrailerBinding +import com.dahe.gldriver.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.ui.account.AuthSuccActivity +import com.dahe.gldriver.utils.DicUtils +import com.dahe.gldriver.utils.OcrUtils +import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.net.CommonResponseBean +import com.dahe.mylibrary.utils.ActivityUtils +import com.dahe.mylibrary.utils.ImageLoader +import com.dahe.mylibrary.utils.PickerUtils +import com.dahe.mylibrary.utils.TimeUtil +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers + +/** + * @ClassName AuthTrailerActivity + * @Author john + * @Date 2024/3/11 10:00 + * @Description TODO + */ +class AuthTrailerActivity : BaseActivity() { + + var carId :String = "" + var upDrivingInfoBean = UpDrivingInfoBean() + override fun initView(savedInstanceState: Bundle?) { + setStatusBarColor(R.color.white) + setTitleBar("实名认证", true) + carId = intent.extras?.getString(AppConfig.CAR_ID,"").toString() + + binding.run { + ivFront.setOnClickListener { + selFrontPic() + } + + ivBack.setOnClickListener { + selBackPic() + } + tvCarType.setOnClickListener { + //车辆类型 + DicUtils.getInstance() + .selectDicCarType(mContext, this@AuthTrailerActivity,"重型自卸半挂车",true) { position, item -> + var data = item as DiCarColor + tvCarType.text = data.dictLabel + upDrivingInfoBean.run { + vehicleTypeCode = data.dictValue + vehicleType = data.dictLabel + } + } + } + + tvCarColor.setOnClickListener { + DicUtils.getInstance() + .getCarColor(mContext, this@AuthTrailerActivity,true) { position, item -> + var data = item as DiCarColor + tvCarColor.text = data.dictLabel + upDrivingInfoBean.run { + trailerPlateColorCode = data.dictValue + trailerPlateColor = data.dictLabel + } + } + } + + tvEnd.setOnClickListener { + PickerUtils.getInstance().showDateSim(this@AuthTrailerActivity) { + tvEnd.text = it + upDrivingInfoBean.licenseValidity = it + } + } + + btnOk.setOnClickListener { + subMint() + } + + } + } + + override fun initDate() { + + } + + /** + * 行驶证正面 + */ + private fun selFrontPic() { + OcrUtils.getInstance().ocrDriveing(mContext, this) { picPath, result -> + ImageLoader.getInstance() + .loadRoundImage(mContext, picPath.locPic, 12, binding.ivFront) + upDrivingInfoBean.licenseFaceUrl = picPath.picPath//行驶证照片(正面) + + result?.data?.face?.data?.let { + + //识别车辆类型后,调用接口匹配code值!!!??? + DicUtils.getInstance() + .getCarTypeByValue(mContext, it.vehicleType) { position, item -> + if (item != null) { + var data = item as DiCarColor + upDrivingInfoBean.run { + vehicleTypeCode = data.dictValue + vehicleType = data.dictLabel + } + binding.tvCarType.text = data.dictLabel + } + } + + binding.run { + etCarNum.setText(it.licensePlateNumber) + etUseNature.setText(it.useNature) + } + } + } + } + + private fun selBackPic() { + + OcrUtils.getInstance().ocrDriveing(mContext, this) { picPath, result -> + ImageLoader.getInstance() + .loadRoundImage(mContext, picPath.locPic, 12, binding.ivBack) + upDrivingInfoBean.licenseBackUrl = picPath.picPath//行驶证照片(反面) + + result?.data?.back?.data?.let { + if (it.inspectionRecord.length > 19) { + //行驶证到期时间 + val changeDateNoneFormat = TimeUtil.changeDateNoneFormat( + it.inspectionRecord.substring(12, 19), + "yyyy年MM月" + ) + if (!changeDateNoneFormat.isNullOrEmpty()) { + upDrivingInfoBean.licenseValidity = changeDateNoneFormat + binding.tvEnd.text = changeDateNoneFormat + } + } + } + } + } + + + private fun subMint() { + if (binding.tvCarType.text.isNullOrEmpty() || + binding.etCarNum.text.isNullOrEmpty() || + binding.tvCarColor.text.isNullOrEmpty() || + upDrivingInfoBean.licenseFaceUrl.isNullOrEmpty() || + upDrivingInfoBean.licenseBackUrl.isNullOrEmpty() || + binding.tvEnd.text.isNullOrEmpty() + ) { + showToast("请完善证件信息") + return + } + + + upDrivingInfoBean.run { + vehicleNum = binding.etCarNum.text.trim().toString() + vehicleType = binding.tvCarType.text.trim().toString()//车辆类型 + licenseValidity = binding.tvEnd.text.trim().toString() + trailerPlateColor = binding.tvCarColor.text.trim().toString() + carId = this@AuthTrailerActivity.carId + } + + DataManager.getInstance().addTrailer(upDrivingInfoBean) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + ActivityUtils.startActivity(mContext, AuthSuccActivity::class.java) + } + })) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/authteam/AuthTeamActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/authteam/AuthTeamActivity.kt index d062597..ef79baf 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/authteam/AuthTeamActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/authteam/AuthTeamActivity.kt @@ -29,11 +29,9 @@ import io.reactivex.rxjava3.schedulers.Schedulers class AuthTeamActivity : BaseActivity(), View.OnClickListener { private var checkTeamType = 1 //1代表运输公司,0代表个人车队 - var fff : MutableList = mutableListOf("sdfsdf","asdfasdf") - var ossServiceUtil: OssServiceUtil = OssServiceUtil.getInstance() - var upComInfoBean: AuthTeamBean = AuthTeamBean("1")//公司车队 + var upComInfoBean: AuthTeamBean = AuthTeamBean("1")//企业车队 var upPerInfoBean: AuthTeamBean = AuthTeamBean("0")//个人车队 override fun initView(savedInstanceState: Bundle?) { @@ -49,7 +47,7 @@ class AuthTeamActivity : BaseActivity(), View.OnClickLi .ocrBusinessCard(mContext, this@AuthTeamActivity) { picPath, result -> upComInfoBean.businessLicensePhoneUrl = picPath.picPath - result.data?.run { + result?.data?.run { upComInfoBean.businessLicenseCreditCode = creditCode upComInfoBean.businessLicenseEffectiveStart= TimeUtil.changeDateNoneFormat(validFromDate) upComInfoBean.businessLicenseEffectiveEnd=TimeUtil.changeDateNoneFormat(validToDate) @@ -65,7 +63,7 @@ class AuthTeamActivity : BaseActivity(), View.OnClickLi .ocrPerson(mContext, this@AuthTeamActivity) { picPath, result -> ImageLoader.getInstance() .loadRoundImage(mContext, picPath.locPic, 12, ivComFront) - result.data.face?.data?.run { + result?.data?.face?.data?.run { etName.setText(name) etId.setText(idNumber) upComInfoBean.run { @@ -85,7 +83,7 @@ class AuthTeamActivity : BaseActivity(), View.OnClickLi .ocrPerson(mContext, this@AuthTeamActivity) { picPath, result -> ImageLoader.getInstance() .loadRoundImage(mContext, picPath.locPic, 12, ivComBack) - result.data.back?.data?.run { + result?.data?.back?.data?.run { if (validPeriod.contains("-")) { val split = validPeriod.split("-") tvStart.text = TimeUtil.changeDateFormat(split[0]) @@ -105,7 +103,7 @@ class AuthTeamActivity : BaseActivity(), View.OnClickLi .ocrPerson(mContext, this@AuthTeamActivity) { picPath, result -> ImageLoader.getInstance() .loadRoundImage(mContext, picPath.locPic, 12, ivFront) - result.data.face?.data?.run { + result?.data?.face?.data?.run { etPerName.setText(name) etPerId.setText(idNumber) @@ -127,7 +125,7 @@ class AuthTeamActivity : BaseActivity(), View.OnClickLi .ocrPerson(mContext, this@AuthTeamActivity) { picPath, result -> ImageLoader.getInstance() .loadRoundImage(mContext, picPath.locPic, 12, ivBack) - result.data.back?.data?.run { + result?.data?.back?.data?.run { if (validPeriod.contains("-")) { val split = validPeriod.split("-") tvPerStart.text = TimeUtil.changeDateFormat(split[0]) @@ -151,7 +149,7 @@ class AuthTeamActivity : BaseActivity(), View.OnClickLi .ocrBankCard(mContext, this@AuthTeamActivity) { picPath, result -> ImageLoader.getInstance() .loadRoundImage(mContext, picPath.locPic, 12, ivBank) - result.data.run { + result?.data?.run { etPerBankId.setText(cardNumber) tvPerBankName.setText(bankName) upPerInfoBean.run { @@ -175,7 +173,7 @@ class AuthTeamActivity : BaseActivity(), View.OnClickLi .ocrBankCard(mContext, this@AuthTeamActivity) { picPath, result -> ImageLoader.getInstance() .loadRoundImage(mContext, picPath.locPic, 12, ivComBank) - result.data?.run { + result?.data?.run { binding.let { it.etComBankId.setText(cardNumber) it.etComBankName.setText(bankName) diff --git a/app/src/main/java/com/dahe/gldriver/ui/home/HomeFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/home/HomeFragment.kt index 7673f02..c328703 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/home/HomeFragment.kt @@ -17,6 +17,7 @@ import com.dahe.gldriver.event.OrderStauEvent import com.dahe.gldriver.net.BaseObserver import com.dahe.gldriver.net.DataManager import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.ui.account.authperson.AuthDrivingActivity import com.dahe.gldriver.ui.waybill.activity.WaybillDetailActivity import com.dahe.gldriver.ui.waybill.activity.WaybillUpPicActivity import com.dahe.gldriver.utils.CommonPopUtils @@ -77,12 +78,6 @@ class HomeFragment : BaseFragment(), RefreshCallBack { tvMar.isSelected = true ivMyWaybill.setOnClickListener { - - // TODO: 调试图片上传 -// ActivityUtils.startActivity(mContext,WaybillUpPicActivity::class.java,Bundle().apply { -// putInt(AppConfig.SUCCESS_TYPE,1) -// }) - if (this@HomeFragment.mListener != null) this@HomeFragment?.mListener?.invoke(2) } diff --git a/app/src/main/java/com/dahe/gldriver/ui/mine/InviteDriverActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/InviteDriverActivity.kt new file mode 100644 index 0000000..519faf7 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/ui/mine/InviteDriverActivity.kt @@ -0,0 +1,115 @@ +package com.dahe.gldriver.ui.mine + +import android.graphics.Color +import android.os.Bundle +import android.widget.LinearLayout +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.dahe.gldriver.R +import com.dahe.gldriver.adapter.CarsAdapter +import com.dahe.gldriver.adapter.DriversAdapter +import com.dahe.gldriver.base.AppConfig +import com.dahe.gldriver.bean.DriverBean +import com.dahe.gldriver.databinding.ActivityInviteDriverBinding +import com.dahe.gldriver.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.utils.CommonPopUtils +import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.callback.RefreshCallBack +import com.dahe.mylibrary.net.CommonResponseBean +import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider +import com.dahe.mylibrary.utils.ConvertUtils +import com.lxj.xpopup.util.KeyboardUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers + +/** + * @ClassName InviteDriverActivity + * @Author john + * @Date 2024/3/11 16:13 + * @Description 搜索司机 + */ +class InviteDriverActivity : BaseActivity(), RefreshCallBack { + + lateinit var adapter: DriversAdapter + override fun initView(savedInstanceState: Bundle?) { + setStatusBarColor(R.color.white) + setTitleBar("邀请司机", true) + binding.run { + setRefresh(refresh, this@InviteDriverActivity) + adapter = recycler.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(16.0f), + Color.TRANSPARENT + ) + ) + adapter = DriversAdapter(true) + adapter as DriversAdapter + }.apply { + isStateViewEnable = true + setStateViewLayout(mContext, R.layout.empty_view) + addOnItemChildClickListener(R.id.tvInvite) { _, _, postion -> + var data = items[postion] as DriverBean + CommonPopUtils.getInstance() + .showCommCenterPop(mContext, content = """确定邀请 ${data.idcardName} 加入车队?""") { + DataManager.getInstance().askToDriver(DriverBean().apply { + driverId = data.driverId + }).subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + showToast("邀请成功,等待对方同意") + } + })) + } + } + } + + tvSearch.setOnClickListener { + KeyboardUtils.hideSoftInput(etPhone) + getDrivers() + } + } + } + + override fun initDate() { + + } + + override fun getRefreshDate(stat: Int, page: Int, count: Int) { + + } + + private fun getDrivers() { + val phone = binding.etPhone.text.toString() + if (phone.isNullOrEmpty()){ + return + } + DataManager.getInstance().selectDriverList(phone).subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext,object : RxHttpCallBack>(){ + override fun onSuccess(t: CommonResponseBean>) { + super.onSuccess(t) + if (mRefreshPage === 1) { + if (t.data.size == 0) { + adapter.submitList(null) + adapter.setStateViewLayout(mContext, R.layout.empty_view) + } else { + adapter?.submitList(t.data) + } + } else { + adapter?.addAll(t.data) + } + setFinishRefresh( + binding.refresh, + t.total > mRefreshPage * mRefreshCount + ) + } + })) + } +} diff --git a/app/src/main/java/com/dahe/gldriver/ui/mine/InviteRecordActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/InviteRecordActivity.kt new file mode 100644 index 0000000..588e68c --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/ui/mine/InviteRecordActivity.kt @@ -0,0 +1,140 @@ +package com.dahe.gldriver.ui.mine + +import android.graphics.Color +import android.os.Bundle +import android.widget.LinearLayout +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.dahe.gldriver.R +import com.dahe.gldriver.adapter.CarsAdapter +import com.dahe.gldriver.adapter.DriversAdapter +import com.dahe.gldriver.adapter.InviteRecordAdapter +import com.dahe.gldriver.base.AppConfig +import com.dahe.gldriver.bean.DriverBean +import com.dahe.gldriver.bean.InviteRecord +import com.dahe.gldriver.databinding.ActivityInviteDriverBinding +import com.dahe.gldriver.databinding.ActivityInviteRecordBinding +import com.dahe.gldriver.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.utils.CommonPopUtils +import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.callback.RefreshCallBack +import com.dahe.mylibrary.net.CommonResponseBean +import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider +import com.dahe.mylibrary.utils.ConvertUtils +import com.lxj.xpopup.util.KeyboardUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers + +/** + * @ClassName InviteDriverActivity + * @Author john + * @Date 2024/3/11 16:13 + * @Description 邀请记录 + */ +class InviteRecordActivity : BaseActivity(), RefreshCallBack { + + lateinit var adapter: InviteRecordAdapter + override fun initView(savedInstanceState: Bundle?) { + setStatusBarColor(R.color.white) + setTitleBar("邀请记录", true) + binding.run { + setRefresh(refresh, this@InviteRecordActivity) + adapter = recycler.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(16.0f), + Color.TRANSPARENT + ) + ) + adapter = InviteRecordAdapter() + adapter as InviteRecordAdapter + }.apply { + isStateViewEnable = true + setStateViewLayout(mContext, R.layout.empty_view) + addOnItemChildClickListener(R.id.tvInvite) { _, _, postion -> + var data = items[postion] as DriverBean + CommonPopUtils.getInstance() + .showCommCenterPop( + mContext, + content = """确定邀请 ${data.idcardName} 加入车队?""" + ) { + DataManager.getInstance().askToDriver(DriverBean().apply { + driverId = data.driverId + }).subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + showToast("邀请成功,等待对方同意") + } + })) + } + } + } + + + } + } + + override fun initDate() { + DataManager.getInstance().selectCaptainAskByDriverHistoryList().subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack>() { + override fun onSuccess(t: CommonResponseBean>) { + super.onSuccess(t) + if (mRefreshPage === 1) { + if (t.data.size == 0) { + adapter.submitList(null) + adapter.setStateViewLayout(mContext, R.layout.empty_view) + } else { + adapter?.submitList(t.data) + } + } else { + adapter?.addAll(t.data) + } + setFinishRefresh( + binding.refresh, + t.total > mRefreshPage * mRefreshCount + ) + } + })) + } + + override fun getRefreshDate(stat: Int, page: Int, count: Int) { + initDate() + } + + + /** + * TODO + * 获取邀请记录 + */ + private fun getRecord() { + + DataManager.getInstance().selectCaptainAskByDriverHistoryList().subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack>() { + override fun onSuccess(t: CommonResponseBean>) { + super.onSuccess(t) + if (mRefreshPage === 1) { + if (t.data.size == 0) { + adapter.submitList(null) + adapter.setStateViewLayout(mContext, R.layout.empty_view) + } else { + adapter?.submitList(t.data) + } + } else { + adapter?.addAll(t.data) + } + setFinishRefresh( + binding.refresh, + t.total > mRefreshPage * mRefreshCount + ) + } + })) + } +} diff --git a/app/src/main/java/com/dahe/gldriver/ui/mine/MineFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/MineFragment.kt index 55546ad..6354a72 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/mine/MineFragment.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/mine/MineFragment.kt @@ -10,14 +10,13 @@ import com.dahe.gldriver.databinding.FragmentMineBinding import com.dahe.gldriver.ui.account.authperson.AuthPartyActivity import com.dahe.gldriver.ui.mine.activity.CarTeamActivity import com.dahe.gldriver.ui.mine.activity.CarsManActivity +import com.dahe.gldriver.ui.mine.activity.DriverTeamsActivity import com.dahe.gldriver.ui.mine.activity.PersonInfoActivity -import com.dahe.gldriver.ui.mine.activity.RulesActivity import com.dahe.gldriver.ui.mine.activity.WalletActivity import com.dahe.gldriver.utils.SPUtils import com.dahe.mylibrary.base.BaseFragment import com.dahe.mylibrary.utils.ActivityUtils import com.dahe.mylibrary.utils.ToastUtils -import com.tencent.bugly.crashreport.CrashReport class MineFragment : BaseFragment(), View.OnClickListener { private val tools = mutableListOf( @@ -100,7 +99,13 @@ class MineFragment : BaseFragment(), View.OnClickListener { private fun goTools(pos: Int) { when (pos) { 0 -> { - ActivityUtils.startActivity(mContext, CarTeamActivity::class.java) + if (SPUtils.instance.getUserInfo(mContext)?.isCarCaptain == "1") {//车队长 + ActivityUtils.startActivity(mContext, CarTeamActivity::class.java) + } else {//司机 + ActivityUtils.startActivity(mContext, DriverTeamsActivity::class.java) + } + + } 1 -> { @@ -109,9 +114,9 @@ class MineFragment : BaseFragment(), View.OnClickListener { 2 -> { var bundle = Bundle() - bundle.putString("title","我的百度") - bundle.putString("url","www.baidu.com") - ActivityUtils.startActivity(mContext,WebActivity::class.java,bundle) + bundle.putString("title", "我的百度") + bundle.putString("url", "www.baidu.com") + ActivityUtils.startActivity(mContext, WebActivity::class.java, bundle) ToastUtils.showToast(mContext, tools[pos].title) } diff --git a/app/src/main/java/com/dahe/gldriver/ui/mine/activity/CarTeamActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/CarTeamActivity.kt index 0da66d6..50145c5 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/mine/activity/CarTeamActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/CarTeamActivity.kt @@ -6,11 +6,24 @@ import android.os.Bundle import androidx.fragment.app.Fragment import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback import com.dahe.gldriver.adapter.PagersAdapter +import com.dahe.gldriver.base.AppConfig +import com.dahe.gldriver.bean.CaptainBean import com.dahe.gldriver.databinding.ActivityCarTeamBinding +import com.dahe.gldriver.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.ui.mine.InviteRecordActivity import com.dahe.gldriver.ui.mine.fragment.CarsManFragment import com.dahe.gldriver.ui.mine.fragment.DriversManFragment import com.dahe.gldriver.ui.waybill.fragment.AllWaybillFragment +import com.dahe.gldriver.utils.SPUtils import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.net.CommonResponseBean +import com.dahe.mylibrary.utils.ActivityUtils +import com.dahe.mylibrary.utils.ImageLoader +import com.dahe.mylibrary.utils.ToastUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers import net.lucode.hackware.magicindicator.FragmentContainerHelper import net.lucode.hackware.magicindicator.buildins.UIUtil import net.lucode.hackware.magicindicator.buildins.commonnavigator.CommonNavigator @@ -25,41 +38,47 @@ import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.ColorT * @ClassName CarTeamActivity * @Author john * @Date 2024/2/6 16:38 - * @Description 车队管理 + * @Description 车队长-车队管理 */ class CarTeamActivity : BaseActivity() { private val mFragmentContainerHelper = FragmentContainerHelper() - var mFragments = mutableListOf( - DriversManFragment(), - CarsManFragment(), - AllWaybillFragment() - ) + var mFragments = mutableListOf() val titles = mutableListOf( "司机管理", - "车辆管理", - "车队订单" + "车辆管理" ) override fun initView(savedInstanceState: Bundle?) { setStatusHeightParams(binding.rlTop) - setTitleBar("车队管理",true,true) + setTitleBar("车队管理", true, true, "邀请记录") { + ActivityUtils.startActivity(mContext, InviteRecordActivity::class.java) + } + mFragments.run { + add(DriversManFragment().apply { + arguments = Bundle().apply { + putString(AppConfig.ID, SPUtils.instance.getUserInfo(mContext)!!.captainId) + } + }) + add(CarsManFragment().apply { + arguments = Bundle().apply { + putString(AppConfig.ID, SPUtils.instance.getUserInfo(mContext)!!.captainId) + } + }) + } - var pagerAdapter = PagersAdapter(this,mFragments) -// pagerAdapter.addFragment(AllWaybillFragment()) -// pagerAdapter.addFragment(AllWaybillFragment()) -// pagerAdapter.addFragment(AllWaybillFragment()) + var pagerAdapter = PagersAdapter(this, mFragments) - mFragmentContainerHelper.handlePageSelected(0,true) + mFragmentContainerHelper.handlePageSelected(0, true) binding.viewPager.adapter = pagerAdapter binding.viewPager.currentItem = 0 binding.viewPager.registerOnPageChangeCallback(object : OnPageChangeCallback() { override fun onPageSelected(position: Int) { super.onPageSelected(position) - mFragmentContainerHelper.handlePageSelected(position,true) + mFragmentContainerHelper.handlePageSelected(position, true) } }); @@ -100,9 +119,22 @@ class CarTeamActivity : BaseActivity() { } override fun initDate() { + DataManager.getInstance().getCaptainById(SPUtils.instance.getUserInfo(mContext)!!.captainId) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + val data = t.data + binding.run { + tvCapName.text = data.captainName + tvStatu.text = if (data.isRealname == "0") "未实名" else "已实名" + ImageLoader.getInstance().loadCircleImage(mContext, data.avatar, ivHead) + } + } + })) } - private fun switchPages(index: Int){ + private fun switchPages(index: Int) { binding.viewPager.currentItem = index } diff --git a/app/src/main/java/com/dahe/gldriver/ui/mine/activity/CarsManActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/CarsManActivity.kt index c91c567..57a5c6f 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/mine/activity/CarsManActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/CarsManActivity.kt @@ -5,21 +5,19 @@ import android.os.Bundle import android.widget.LinearLayout import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import androidx.recyclerview.widget.RecyclerView.LayoutManager -import com.chad.library.adapter4.BaseQuickAdapter import com.dahe.gldriver.R import com.dahe.gldriver.adapter.CarsAdapter -import com.dahe.gldriver.adapter.WaybillAdapter import com.dahe.gldriver.bean.CarBean import com.dahe.gldriver.databinding.ActivityCarsManBinding import com.dahe.gldriver.net.BaseObserver import com.dahe.gldriver.net.DataManager import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.ui.account.authperson.AuthDrivingActivity import com.dahe.gldriver.utils.CommonPopUtils -import com.dahe.glex.bean.WayBillBean import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider +import com.dahe.mylibrary.utils.ActivityUtils import com.dahe.mylibrary.utils.ConvertUtils import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers @@ -38,34 +36,45 @@ class CarsManActivity : BaseActivity() { setTitleBar("车辆管理", true) - - adapter = binding.recycler.run { - layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) - addItemDecoration( - RecycleViewDivider( - LinearLayout.VERTICAL, - ConvertUtils.dp2px(16.0f), - Color.TRANSPARENT + binding.run { + adapter = recycler.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(16.0f), + Color.TRANSPARENT + ) ) - ) - adapter = CarsAdapter() - adapter as CarsAdapter - }.apply { - addOnItemChildClickListener(R.id.tvUnbind) { adapter, view, position -> - CommonPopUtils.getInstance() - .showCommCenterPop(mContext, content = """您确定解绑:${items[position].vehicleNum}么?"""){ - DataManager.getInstance().unBindCar(items[position]) - .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(BaseObserver(mContext,object : RxHttpCallBack(){ - override fun onSuccess(t: CommonResponseBean) { - super.onSuccess(t) - initDate() - } - })) - } + adapter = CarsAdapter() + adapter as CarsAdapter + }.apply { + addOnItemChildClickListener(R.id.tvUnbind) { adapter, view, position -> + CommonPopUtils.getInstance() + .showCommCenterPop( + mContext, + content = """您确定解绑:${items[position].vehicleNum}么?""" + ) { + DataManager.getInstance().unBindCar(items[position]) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver(mContext, + object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + unBindCar(items[position].carId) + } + }) + ) + } + } + } + + btnOk.setOnClickListener { + ActivityUtils.startActivity(mContext, AuthDrivingActivity::class.java) } } - } override fun initDate() { @@ -80,4 +89,17 @@ class CarsManActivity : BaseActivity() { }) ) } + + private fun unBindCar(carId: String) { + DataManager.getInstance().unBindCar(CarBean().apply { + this.carId = carId + }) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + initDate() + } + })) + } } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/mine/activity/DriverTeamDetailActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/DriverTeamDetailActivity.kt new file mode 100644 index 0000000..699ef8d --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/DriverTeamDetailActivity.kt @@ -0,0 +1,195 @@ +package com.dahe.gldriver.ui.mine.activity + +import android.content.Context +import android.content.Intent +import android.graphics.Color +import android.os.Bundle +import android.view.View +import androidx.fragment.app.Fragment +import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback +import com.dahe.gldriver.adapter.PagersAdapter +import com.dahe.gldriver.base.AppConfig +import com.dahe.gldriver.bean.CaptainBean +import com.dahe.gldriver.bean.UpCaptain +import com.dahe.gldriver.databinding.ActivityDriverTeamDetailBinding +import com.dahe.gldriver.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.ui.mine.fragment.CarsManFragment +import com.dahe.gldriver.ui.mine.fragment.DriversManFragment +import com.dahe.gldriver.utils.CommonPopUtils +import com.dahe.gldriver.utils.SPUtils +import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.net.CommonResponseBean +import com.dahe.mylibrary.utils.ImageLoader +import com.lxj.xpopup.interfaces.OnInputConfirmListener +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers +import net.lucode.hackware.magicindicator.FragmentContainerHelper +import net.lucode.hackware.magicindicator.buildins.UIUtil +import net.lucode.hackware.magicindicator.buildins.commonnavigator.CommonNavigator +import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter +import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerIndicator +import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerTitleView +import net.lucode.hackware.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator +import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.ColorTransitionPagerTitleView + + +/** + * @ClassName CarTeamActivity + * @Author john + * @Date 2024/2/6 16:38 + * @Description 司机-车队详情 + */ +class DriverTeamDetailActivity : BaseActivity() { + + lateinit var captainId: String + var upCaptain: UpCaptain = UpCaptain() + + private val mFragmentContainerHelper = FragmentContainerHelper() + var mFragments = mutableListOf() + val titles = mutableListOf( + "司机管理", + "车辆管理" + ) + + + override fun initView(savedInstanceState: Bundle?) { + setStatusHeightParams(binding.rlTop) + setTitleBar("车队管理", true, true) + captainId = intent.extras?.getString(AppConfig.ID, "").toString() + mFragments.run { + add(DriversManFragment().apply { + arguments = Bundle().apply { + putString(AppConfig.ID, captainId) + putInt(AppConfig.IS_SHOW, View.GONE) + } + }) + add(CarsManFragment().apply { + arguments = Bundle().apply { + putInt(AppConfig.IS_SHOW, View.GONE) + putString(AppConfig.ID, captainId) + } + }) + } + + var pagerAdapter = PagersAdapter(this, mFragments) + + mFragmentContainerHelper.handlePageSelected(0, true) + + binding.viewPager.adapter = pagerAdapter + binding.viewPager.currentItem = 0 + binding.viewPager.registerOnPageChangeCallback(object : OnPageChangeCallback() { + override fun onPageSelected(position: Int) { + super.onPageSelected(position) + mFragmentContainerHelper.handlePageSelected(position, true) + } + }); + + var commonNavigator = CommonNavigator(mContext) + commonNavigator.run { + isAdjustMode = true + adapter = object : CommonNavigatorAdapter() { + override fun getCount(): Int { + return titles.size + } + + override fun getTitleView(context: Context?, index: Int): IPagerTitleView { + val colorTransitionPagerTitleView = ColorTransitionPagerTitleView(context) + colorTransitionPagerTitleView.normalColor = Color.BLACK + colorTransitionPagerTitleView.selectedColor = Color.RED + colorTransitionPagerTitleView.text = titles[index] + colorTransitionPagerTitleView.setOnClickListener { + mFragmentContainerHelper.handlePageSelected(index) + switchPages(index) + } + return colorTransitionPagerTitleView + } + + override fun getIndicator(context: Context?): IPagerIndicator { + val indicator = LinePagerIndicator(context) + indicator.mode = LinePagerIndicator.MODE_WRAP_CONTENT + indicator.yOffset = + UIUtil.dip2px(context, 3.0).toFloat() + indicator.setColors(Color.RED) + return indicator + } + + } + } + + binding.run { + btnReject.setOnClickListener { + CommonPopUtils.getInstance().showCenterInputPop(mContext, "拒绝原因") { + dealData("2", reject = it) + } + + } + btnOk.setOnClickListener { + dealData("1") + } + btnQuit.setOnClickListener { + dealData("1", true) + } + } + + binding.magicIndicator.navigator = commonNavigator + mFragmentContainerHelper.attachMagicIndicator(binding.magicIndicator) + } + + override fun initDate() { + DataManager.getInstance().getCaptainById(captainId) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + val data = t.data + binding.run { + tvCapName.text = data.captainName + tvStatu.text = if (data.isRealname == "0") "未实名" else "已实名" + tvPhone.text = """司机:${data.driverNum} 车辆:${data.carNum}""" + ImageLoader.getInstance().loadCircleImage(mContext, data.avatar, ivHead) + llJoin.visibility = if (data.joinStatus == "0") View.VISIBLE else View.GONE + btnQuit.visibility = if (data.joinStatus == "0") View.GONE else View.VISIBLE + } + } + })) + } + + private fun switchPages(index: Int) { + binding.viewPager.currentItem = index + } + + private fun dealData(status: String, quit: Boolean = false, reject: String = "") { + if (quit) { + DataManager.getInstance().unbindDriver(upCaptain.apply { + captainId = this@DriverTeamDetailActivity.captainId + driverId = SPUtils.instance.getUserInfo(mContext)!!.driverId + }) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + setResult(RESULT_OK, Intent().apply { putExtra(AppConfig.REFRSH, true) }) + finish() + } + })) + } else { + DataManager.getInstance().responseToCaptain(upCaptain.apply { + joinStatus = status + captainId = this@DriverTeamDetailActivity.captainId + reason = reject + }) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + setResult(RESULT_OK, Intent().apply { putExtra(AppConfig.REFRSH, true) }) + finish() + } + })) + } + + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/mine/activity/DriverTeamsActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/DriverTeamsActivity.kt new file mode 100644 index 0000000..f924582 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/DriverTeamsActivity.kt @@ -0,0 +1,108 @@ +package com.dahe.gldriver.ui.mine.activity + +import android.content.Intent +import android.graphics.Color +import android.os.Bundle +import android.widget.LinearLayout +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.dahe.gldriver.R +import com.dahe.gldriver.adapter.DriverTeamsAdapter +import com.dahe.gldriver.base.AppConfig +import com.dahe.gldriver.bean.CaptainBean +import com.dahe.gldriver.bean.DriverBean +import com.dahe.gldriver.databinding.ActivityDriverCarTeamBinding +import com.dahe.gldriver.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.callback.RefreshCallBack +import com.dahe.mylibrary.net.CommonResponseBean +import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider +import com.dahe.mylibrary.utils.ActivityUtils +import com.dahe.mylibrary.utils.ConvertUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers + + +/** + * @ClassName CarTeamActivity + * @Author john + * @Date 2024/2/6 16:38 + * @Description 司机-车队管理-车队列表 + */ +class DriverTeamsActivity : BaseActivity(), RefreshCallBack { + lateinit var adapter: DriverTeamsAdapter + + override fun initView(savedInstanceState: Bundle?) { + setStatusBarColor(R.color.white) + setTitleBar("车队管理", true) + + binding.run { + setRefresh(refresh, this@DriverTeamsActivity) + adapter = recycler.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(16.0f), + Color.TRANSPARENT + ) + ) + adapter = DriverTeamsAdapter() + adapter as DriverTeamsAdapter + }.apply { + isStateViewEnable = true + setStateViewLayout(mContext, R.layout.empty_view) + setOnItemClickListener { adapter, view, position -> + ActivityUtils.startActivityForResult( + this@DriverTeamsActivity, + DriverTeamDetailActivity::class.java, + Bundle().apply { putString(AppConfig.ID, items[position].captainId) }, + 1 + ) + } + } + } + + + } + + override fun initDate() { + DataManager.getInstance().selectCaptainListInDriver() + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack>() { + override fun onSuccess(t: CommonResponseBean>) { + super.onSuccess(t) + if (mRefreshPage === 1) { + if (t.data.size == 0) { + adapter.submitList(null) + adapter.setStateViewLayout(mContext, R.layout.empty_view) + } else { + adapter?.submitList(t.data) + } + } else { + adapter?.addAll(t.data) + } + setFinishRefresh( + binding.refresh, + t.total > mRefreshPage * mRefreshCount + ) + } + })) + } + + override fun getRefreshDate(stat: Int, page: Int, count: Int) { + initDate() + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK && requestCode == 1) { + var code = data?.getBooleanExtra(AppConfig.REFRSH, false) + mRefreshPage = 1 + initDate() + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/mine/fragment/CarsManFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/fragment/CarsManFragment.kt index 6a685d8..fe0fdbe 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/mine/fragment/CarsManFragment.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/mine/fragment/CarsManFragment.kt @@ -2,20 +2,34 @@ package com.dahe.gldriver.ui.mine.fragment import android.graphics.Color import android.os.Bundle +import android.view.View import android.widget.LinearLayout import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.LayoutManager import com.dahe.gldriver.R import com.dahe.gldriver.adapter.CarsAdapter +import com.dahe.gldriver.adapter.DriversAdapter import com.dahe.gldriver.adapter.WaybillAdapter +import com.dahe.gldriver.base.AppConfig +import com.dahe.gldriver.bean.CarBean import com.dahe.gldriver.databinding.ActivityCarsManBinding import com.dahe.gldriver.databinding.FragmentWaybillListBinding +import com.dahe.gldriver.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.ui.mine.InviteDriverActivity +import com.dahe.gldriver.utils.SPUtils import com.dahe.glex.bean.WayBillBean import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.base.BaseFragment +import com.dahe.mylibrary.callback.RefreshCallBack +import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider +import com.dahe.mylibrary.utils.ActivityUtils import com.dahe.mylibrary.utils.ConvertUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers /** * @ClassName CarsManActivity @@ -23,25 +37,66 @@ import com.dahe.mylibrary.utils.ConvertUtils * @Date 2024/2/1 08:59 * @Description 车辆管理 */ -class CarsManFragment : BaseFragment() { - +class CarsManFragment : BaseFragment(), RefreshCallBack { + private var captainId: String = "" + lateinit var adapter: CarsAdapter override fun onFragmentVisibleChange(isVisible: Boolean) { } override fun onFragmentFirstVisible() { - - var adapter = binding.recyclerView.run { - layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) - addItemDecoration( - RecycleViewDivider( - LinearLayout.VERTICAL, - ConvertUtils.dp2px(16.0f), - Color.TRANSPARENT + arguments?.let { + captainId = it.getString(AppConfig.ID, "") + } + binding.run { + setRefresh(refresh, this@CarsManFragment) + adapter = binding.recyclerView.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(16.0f), + Color.TRANSPARENT + ) ) - ) - adapter = CarsAdapter() - adapter as CarsAdapter + adapter = CarsAdapter() + adapter as CarsAdapter + }.apply { + isStateViewEnable = true + } + llOk.visibility=View.GONE + } + + initData() + } + + override fun getRefreshDate(stat: Int, page: Int, count: Int) { + initData() + } + + private fun initData() { + DataManager.getInstance() + .selectDriverIdsForCarPage(captainId) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack>() { + override fun onSuccess(t: CommonResponseBean>) { + super.onSuccess(t) + if (mRefreshPage === 1) { + if (t.data.isNullOrEmpty() || t.data.size == 0) { + adapter.submitList(null) + adapter.setStateViewLayout(mContext, R.layout.empty_view) + } else { + adapter?.submitList(t.data) + } + } else { + adapter?.addAll(t.data) + } + setFinishRefresh( + binding.refresh, + t.total > mRefreshPage * mRefreshCount + ) + } + })) } } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/mine/fragment/DriversManFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/fragment/DriversManFragment.kt index 10d8b4a..bdd76a9 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/mine/fragment/DriversManFragment.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/mine/fragment/DriversManFragment.kt @@ -1,7 +1,9 @@ package com.dahe.gldriver.ui.mine.fragment import android.graphics.Color +import android.opengl.Visibility import android.os.Bundle +import android.view.View import android.widget.LinearLayout import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -10,18 +12,22 @@ import com.dahe.gldriver.R import com.dahe.gldriver.adapter.CarsAdapter import com.dahe.gldriver.adapter.DriversAdapter import com.dahe.gldriver.adapter.WaybillAdapter +import com.dahe.gldriver.base.AppConfig import com.dahe.gldriver.bean.DriverBean import com.dahe.gldriver.databinding.ActivityCarsManBinding import com.dahe.gldriver.databinding.FragmentWaybillListBinding import com.dahe.gldriver.net.BaseObserver import com.dahe.gldriver.net.DataManager import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.ui.mine.InviteDriverActivity import com.dahe.gldriver.utils.SPUtils import com.dahe.glex.bean.WayBillBean import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.base.BaseFragment +import com.dahe.mylibrary.callback.RefreshCallBack import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider +import com.dahe.mylibrary.utils.ActivityUtils import com.dahe.mylibrary.utils.ConvertUtils import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers @@ -30,15 +36,21 @@ import io.reactivex.rxjava3.schedulers.Schedulers * @ClassName CarsManActivity * @Author john * @Date 2024/2/1 08:59 - * @Description 车辆管理 + * @Description 司机管理 */ -class DriversManFragment : BaseFragment() { +class DriversManFragment : BaseFragment(), RefreshCallBack { - lateinit var adapter : DriversAdapter + private var captainId: String = "" + lateinit var adapter: DriversAdapter override fun onFragmentVisibleChange(isVisible: Boolean) { } override fun onFragmentFirstVisible() { + setRefresh(binding.refresh, this) + arguments?.let { + binding.llOk.visibility = it.getInt(AppConfig.IS_SHOW) + captainId = it.getString(AppConfig.ID, "") + } adapter = binding.recyclerView.run { layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) addItemDecoration( @@ -50,20 +62,47 @@ class DriversManFragment : BaseFragment() { ) adapter = DriversAdapter() adapter as DriversAdapter + }.apply { + isStateViewEnable = true } + binding.btnOk.setOnClickListener { + ActivityUtils.startActivity(mContext, InviteDriverActivity::class.java) + } initData() } - private fun initData(){ + open fun setVisibility(visibility: Int): DriversManFragment { + binding.llOk.visibility = visibility + return this + } - DataManager.getInstance().selectDriversInCaptain(SPUtils.instance.getUserInfo(mContext)!!.captainId) + private fun initData() { + DataManager.getInstance() + .selectDriversInCaptain(captainId) .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(BaseObserver(mContext,object : RxHttpCallBack>(){ + .subscribe(BaseObserver(mContext, object : RxHttpCallBack>() { override fun onSuccess(t: CommonResponseBean>) { super.onSuccess(t) - adapter.submitList(t.data) + if (mRefreshPage === 1) { + if (t.data.size == 0) { + adapter.submitList(null) + adapter.setStateViewLayout(mContext, R.layout.empty_view) + } else { + adapter?.submitList(t.data) + } + } else { + adapter?.addAll(t.data) + } + setFinishRefresh( + binding.refresh, + t.total > mRefreshPage * mRefreshCount + ) } })) } + + override fun getRefreshDate(stat: Int, page: Int, count: Int) { + initData() + } } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/utils/CommonPopUtils.kt b/app/src/main/java/com/dahe/gldriver/utils/CommonPopUtils.kt index d3b0192..905e283 100644 --- a/app/src/main/java/com/dahe/gldriver/utils/CommonPopUtils.kt +++ b/app/src/main/java/com/dahe/gldriver/utils/CommonPopUtils.kt @@ -8,6 +8,7 @@ import com.dahe.mylibrary.base.SingletonNoPHolder import com.lxj.xpopup.XPopup import com.lxj.xpopup.interfaces.OnCancelListener import com.lxj.xpopup.interfaces.OnConfirmListener +import com.lxj.xpopup.interfaces.OnInputConfirmListener /** * @ClassName CommonPopUtils @@ -65,4 +66,22 @@ class CommonPopUtils private constructor() { .show() } + + /** + * 弹出带有输入框的 + * @param context Context + * @param title String + * @param listener OnInputConfirmListener + */ + fun showCenterInputPop(context: Context,title: String,listener: OnInputConfirmListener){ + XPopup.Builder(context) + .hasStatusBarShadow(false) + .hasNavigationBar(false) + .autoOpenSoftInput(true) + .asInputConfirm(title,"","请输入拒绝原因",listener) + .show() + + + } + } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/utils/DicUtils.kt b/app/src/main/java/com/dahe/gldriver/utils/DicUtils.kt new file mode 100644 index 0000000..8249e6b --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/utils/DicUtils.kt @@ -0,0 +1,115 @@ +package com.dahe.gldriver.utils + +import android.content.Context +import androidx.appcompat.app.AppCompatActivity +import com.dahe.gldriver.bean.DiCarColor +import com.dahe.gldriver.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.mylibrary.base.SingletonNoPHolder +import com.dahe.mylibrary.net.CommonResponseBean +import com.dahe.mylibrary.utils.PickerUtils +import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers + +/** + * @ClassName DicUtils + * @Author john + * @Date 2024/3/11 09:32 + * @Description 字典工具类 + */ +class DicUtils private constructor() { + companion object : SingletonNoPHolder(::DicUtils) + + + /** + * 选择车辆类型 + * @param context Context + * @param activity AppCompatActivity + * @param listener OnOptionPickedListener + */ + fun selectDicCarType( + context: Context, + activity: AppCompatActivity, + defaultCont: String = "重型半挂牵引车", + isLoading: Boolean = false, + listener: OnOptionPickedListener + ) { + //车辆类型 + DataManager.getInstance().getSysDictDataList("vehicle_type") + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver(context, object : RxHttpCallBack>(if (isLoading) activity else null) { + override fun onSuccess(t: CommonResponseBean>) { + super.onSuccess(t) + PickerUtils.getInstance() + .showSelectCarColor( + activity, + "车辆类型", + "重型半挂牵引车", + t.data, listener + ) + } + }) + ) + } + + /** + * 根据名称获取车辆类型 + * @param context Context + * @param value String + * @param listener OnOptionPickedListener + */ + fun getCarTypeByValue( + context: Context, + value: String, + listener: OnOptionPickedListener + ) { + //车辆类型 + DataManager.getInstance().getSysDictDataList("vehicle_type") + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver(context, object : RxHttpCallBack>() { + override fun onSuccess(t: CommonResponseBean>) { + super.onSuccess(t) + var first = t.data?.firstOrNull { it.dictLabel == value } + listener.onOptionPicked(0, first) + } + }) + ) + } + + + /** + * 设置车牌颜色 + * @param context Context + * @param appCompatActivity AppCompatActivity + * @param listener OnOptionPickedListener + */ + fun getCarColor( + context: Context, appCompatActivity: AppCompatActivity, + isLoading : Boolean=false, + listener: OnOptionPickedListener + ) { + DataManager.getInstance().getSysDictDataList("plate_color") + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver(context, object : RxHttpCallBack>(if (isLoading) appCompatActivity else null) { + override fun onSuccess(t: CommonResponseBean>) { + super.onSuccess(t) + PickerUtils.getInstance() + .showSelectCarColor( + appCompatActivity, + "车牌颜色", + "黄色", + t.data, listener + ) + } + }) + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/utils/OcrUtils.kt b/app/src/main/java/com/dahe/gldriver/utils/OcrUtils.kt index 111d037..fb8f778 100644 --- a/app/src/main/java/com/dahe/gldriver/utils/OcrUtils.kt +++ b/app/src/main/java/com/dahe/gldriver/utils/OcrUtils.kt @@ -11,6 +11,7 @@ import com.dahe.gldriver.net.RxHttpCallBack import com.dahe.gldriver.oss.OssServiceUtil import com.dahe.mylibrary.base.SingletonNoPHolder import com.dahe.mylibrary.net.CommonResponseBean +import com.dahe.mylibrary.utils.ImageLoader import com.dahe.mylibrary.utils.LoadingUtils import com.dahe.mylibrary.utils.PopsUtils import com.dahe.mylibrary.utils.ToastUtils @@ -125,6 +126,64 @@ class OcrUtils private constructor() { } + /** + * 行驶证ocr识别 + * */ + fun ocrDriveing( + context: Context, + activity: AppCompatActivity, + listener: OnOcrPicResultListener + ) { + PopsUtils.getInstance().showSimSelPic(context) { result -> + LoadingUtils.instance.showLoading(activity) + //上传oss得到图片地址 + OssServiceUtil.getInstance().run { + asyncPutImage(result[0].realPath, null) + setResultCallBack { data, oldPath -> + DataManager.getInstance().recognizeVehicleLicense(oldPath)//行驶证识别 + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver( + context, + object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + LoadingUtils.instance.dissLoading() + t.data?.let { + listener.onSuccResult( + PicPath( + result[0].realPath, + oldPath + ), it + ) + } + } + + override fun onCodeError( + mContext: Context?, + t: CommonResponseBean + ) { +// super.onCodeError(mContext, t) + LoadingUtils.instance.dissLoading() + if (t.code == 500) { + if (t.msg.contains("code: 400, The image type does not match the API operation")) { + ToastUtils.showToast( + mContext, + "图片识别失败,请重新上传" + ) + } else { + ToastUtils.showToast(mContext, t.msg) + } + } + } + }) + ) + } + } + } + } + + /** * 银行卡ocr识别 * */ @@ -235,4 +294,26 @@ class OcrUtils private constructor() { } } } + + + fun noOcrUpPic( + context: Context, + activity: AppCompatActivity, + listener: OnOcrPicResultListener + ) { + PopsUtils.getInstance().showSimSelPic(context) { + var data = it[0] + OssServiceUtil.getInstance().run { + asyncPutImage(data.realPath, activity) + setResultCallBack { data, oldPath -> + activity.runOnUiThread { + listener.onSuccResult( + PicPath(it[0].realPath, oldPath), null + ) + } + + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable-xxhdpi/icon_search.png b/app/src/main/res/drawable-xxhdpi/icon_search.png new file mode 100644 index 0000000000000000000000000000000000000000..7a2d9f24aba7656d1153560c26ae37316e232815 GIT binary patch literal 2238 zcmV;v2toIWP)Px-cu7P-RA@u(nSE?qR~5j|xzF#*sk(kl6;x^~t)r}&23l;ViS6e!Y^7CL#adO} z=%9kB(7`|jB&I_7sGurze*h{-Rgt=mO>9(RoyG>*lvQc`Y$r|Z2-Ze0wm~&@0yd_t zYm(>pbq`!S?%Xu7pA)C3(w-FMk9Xg>=XcNNJw~|BAH2@>hYtY$-xh3|1+u5It4Iy6 z@tL;*fh`3f4GA0{z+ymeNDz9>ao#=G-QDdq6MD`7=}i6sK==v)Ek{HR2vh(FF~)$1 z#Gm-*AfiRU$B^NR3Q7k%I&OcZ86dL)=U*bQl}E z)XR|`dh3nzXSZ+P?g#mHx-|_0q_abx1!CV-HT9!Y6%U0%AQTj*kBA_ch&cE@2haC_ zIKQleEX&|Hj?Wl7Mjq`?rK10w4Mal#>Fn@t5pgRZlP@cS2#PG1EZ}*b37oQo{AED) zE)Z!5xSS(Ikl-#|*B9Eh4ZI3Oz;d6z&XL`_KG8PNC`2HDzP`}~l42c~Bx#%Pm#r;M zm=pIA+20xGhZBkD5k#!%3a7I}F$QcO0j!r8yP*P7wib;s!VSq}WUvv4x&TDP%-qNm zny%ebw5*bBRaL>Z?Y}W(54-loUpJar(&>B~G1wzXZ0BU4mt2o?-$6!qB|BohK_Th_ zn3?FLt-L|10Q5Q`hzN^@T#}4LgYVqr#vSs}j+h$o)?m#=1WT zkzEtO%#M7HfIlMAq7YW{SMr}XI-@;^7%c77(c-i@v>6efW{gR~8s(VqpARv2Ydjt= zo4m#|BY0JJ9AUJ`Dir7n0RB(&M9flEm za@GLpfx<(otQ-mAI8k#KN-zAR;t#1sf6N za)BbB5O#OPW5?jyU>D=(wRYm(*<@AZ@ zmA|NP>+WdOovngFzB99hFQ}UONU>NfFGu)?(HU7?E8eD!f&NT>lrd~A`=bJ$ZGSD9 zjQui*5_4T+X7g_&V@pa|k6?@g_N-4v%$ej~1<*eaZh7j?l(mSFIQn4qQ zOkSGq5T~=i_n5?fD1t~2hryXBZc8NEp1M{RFwK`16FM1W*edqq#PiMs-nn5z^kP7O zp>HFT4vGw<>tUEEPTbcOk3Mm&0CKs}B_3FV2>6k*0r#`| z+7hkYKI}E>6q9Dcy^zf=3xjqR5SC54Q18T;yk+CYkB2%?ouP_Gb&nLK3@QTpuTk$qT7ObklrmpUM2`RwW!dSF|R3 zA%Op=A^((;&95WuPI$f`vx`uXwk%W-pwkZ)qCY#_FEJ@4Qn>a!#e>A!Lgl%;El; zt~vv-nE?h0Ymrj{5Op!&5q**Gd3%gR^l-D4?;9HW5ObNyklifiNFwfRyLi-yM;@rR z*NgxnnD5xI`KN%eM-;Wvt*kVrqAz#FV@K-=ZsdJBmmigw)GA_ba$Iu(eQXah?5cUG z7k!EBNrMdW=E~?$bcG1~ONq|t@wv9xrN)iXX(mZ)s)k)2B7e|`xBn{0A=DkKqz6Y@ z$@kN8NM0&Z+vE^R$UcH9{KSYxUk|d;)HSDb!=GV<2N;uX;{1wvn1#T08;Q2ZgUGE5 zAcUmL#jOt!msD9oG+O^gl#Zt2Z9fRInOKv}j&yoJhY{d5L{MiK3VVpS#fV3qt0y-Q zfDmF179!-+Nyga9>e;5q7Totl%6l9DPauc0w(Qx8qi{>IP*+t6Ew&68-$VfShr{7D zqRLhu1QCh5w#aS^Dhi8ExM*3M>p=tt5Q2Nn{7MDkpcIns6Pc-cwi%M;(va779PnK4 z9Z^LIi6P*UmX;P-1gJ>KmD#G0C+-`TWu5=u;A1~>egP!ucZjg4$|^oX*qN-+4L1ZJ zHa(ip%WEB$0^*OUsO%t_0u<7?VmP$SajbD9^=8zt)IR;W#4nhEV!WXXowb zrz%x~@Oc&yFIyrk+-ZFL)5&D)_fyx;37{gZ9OTdj2(3VT1rXebh$;bb0CtIhzln&i za-W}*z|I(k@lLJaJe@gXFbq9|h>Jz#5f36b;KLn;5zSP8+Z2Fmfup0N%7qJ_+|qK1 zx$a_8)r-Du+is&H_<@1KT35IeilHwrr*97XQpw1{c?GDK_8NJg%jIuz2{IC6OS#X- zkZ`AAM4rBG04g;Ieb~$Z|2o}pq3JHv$O$)N?FRtOIK{chxb7|RUz%#_UV=y3i~s-t M07*qoM6N<$g5K&tJpcdz literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_auth_driving.xml b/app/src/main/res/layout/activity_auth_driving.xml index f593b9a..f1aa920 100644 --- a/app/src/main/res/layout/activity_auth_driving.xml +++ b/app/src/main/res/layout/activity_auth_driving.xml @@ -203,7 +203,7 @@ android:drawableRight="@drawable/right_gray" android:drawablePadding="@dimen/dp_6" android:gravity="right|center_vertical" - android:hint="重型栏板半挂车" + android:hint="请选择车辆类型" android:paddingLeft="@dimen/dp_10" android:textColor="@color/black" android:textSize="@dimen/sp_15"> @@ -265,12 +265,75 @@ android:textSize="@dimen/sp_15" tools:text="王海生"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:textSize="@dimen/sp_14" /> + android:textSize="@dimen/sp_15" /> + android:textSize="@dimen/sp_15" /> @@ -121,7 +123,7 @@ android:layout_height="wrap_content" android:text="有效期至" android:textColor="@color/black" - android:textSize="@dimen/sp_15"/> + android:textSize="@dimen/sp_15" /> + android:textSize="@dimen/sp_15" /> @@ -147,7 +149,7 @@ android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" - android:background="@color/white"/> + android:background="@color/white" /> + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_car_team.xml b/app/src/main/res/layout/activity_car_team.xml index 92b5dfc..9207385 100644 --- a/app/src/main/res/layout/activity_car_team.xml +++ b/app/src/main/res/layout/activity_car_team.xml @@ -38,11 +38,13 @@ android:padding="@dimen/dp_12"> + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_driver_team_detail.xml b/app/src/main/res/layout/activity_driver_team_detail.xml new file mode 100644 index 0000000..9c3dfbc --- /dev/null +++ b/app/src/main/res/layout/activity_driver_team_detail.xml @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_invite_driver.xml b/app/src/main/res/layout/activity_invite_driver.xml new file mode 100644 index 0000000..e0c9d5c --- /dev/null +++ b/app/src/main/res/layout/activity_invite_driver.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_invite_record.xml b/app/src/main/res/layout/activity_invite_record.xml new file mode 100644 index 0000000..5236b4e --- /dev/null +++ b/app/src/main/res/layout/activity_invite_record.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_waybill_list.xml b/app/src/main/res/layout/fragment_waybill_list.xml index d0f9dff..249601e 100644 --- a/app/src/main/res/layout/fragment_waybill_list.xml +++ b/app/src/main/res/layout/fragment_waybill_list.xml @@ -8,7 +8,8 @@ + android:layout_height="match_parent" + android:layout_weight="1"> + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_cars.xml b/app/src/main/res/layout/item_cars.xml index bb0cc17..4f68641 100644 --- a/app/src/main/res/layout/item_cars.xml +++ b/app/src/main/res/layout/item_cars.xml @@ -3,6 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="@dimen/dp_90" + xmlns:tools="http://schemas.android.com/tools" android:layout_marginLeft="@dimen/dp_15" android:layout_marginRight="@dimen/dp_15" android:background="@color/white" @@ -57,6 +58,7 @@ android:textSize="@dimen/sp_12" /> diff --git a/app/src/main/res/layout/item_carteam.xml b/app/src/main/res/layout/item_carteam.xml new file mode 100644 index 0000000..763f407 --- /dev/null +++ b/app/src/main/res/layout/item_carteam.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_driver.xml b/app/src/main/res/layout/item_driver.xml index 18e8d2b..6eff8e2 100644 --- a/app/src/main/res/layout/item_driver.xml +++ b/app/src/main/res/layout/item_driver.xml @@ -22,6 +22,22 @@ android:textColor="@color/black" android:textSize="@dimen/sp_16" /> + + + + android:layout_alignBottom="@+id/tvPhone" + android:layout_marginLeft="@dimen/dp_10" + android:layout_marginBottom="@dimen/dp_2" + android:layout_toRightOf="@+id/tvPhone" + android:background="@color/color_c" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_invite_record.xml b/app/src/main/res/layout/item_invite_record.xml new file mode 100644 index 0000000..7661b09 --- /dev/null +++ b/app/src/main/res/layout/item_invite_record.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseActivity.java b/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseActivity.java index 0c4dad3..9083f2b 100644 --- a/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseActivity.java +++ b/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseActivity.java @@ -221,6 +221,34 @@ public abstract class BaseActivity extends AppCompatActi mToolbar.setNavigationOnClickListener(listener); } + + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + protected void setTitleBar(String title, boolean isWhite,boolean isBack, String right, View.OnClickListener rightListener) { + + mToolbar = (Toolbar) findViewById(R.id.common_toolbar); + mToolbar.setBackgroundColor(statusColor == -1 ? Color.TRANSPARENT : ContextCompat.getColor(mContext, statusColor)); + + if (isBack) { + mToolbar.setNavigationIcon(isWhite ? R.drawable.left : R.drawable.left_black); + mToolbar.setNavigationOnClickListener(view -> finish()); + } + if (!TextUtils.isEmpty(title)) {// + ((TextView) findViewById(R.id.common_toolBar_title)).setTextColor(isWhite ? getColor(R.color.colorWhite) : getColor(R.color.black)); + ((TextView) findViewById(R.id.common_toolBar_title)).setText(title); + } + + if (!TextUtils.isEmpty(right)) { + TextView mTextRight = (TextView) findViewById(R.id.common_toolBar_text_right); + mTextRight.setTextColor(isWhite ? getColor(R.color.colorWhite) : getColor(R.color.black)); + mTextRight.setVisibility(View.VISIBLE); + mTextRight.setText(right); + mTextRight.setOnClickListener(rightListener); + } + if (isWhite) { + StatusBar.cancelLightStatusBar(this);//图标文字白色 + } + } + /** * 设置距离顶部距离 */ diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/utils/ActivityUtils.java b/mylibrary/src/main/java/com/dahe/mylibrary/utils/ActivityUtils.java index 77c9195..1480644 100644 --- a/mylibrary/src/main/java/com/dahe/mylibrary/utils/ActivityUtils.java +++ b/mylibrary/src/main/java/com/dahe/mylibrary/utils/ActivityUtils.java @@ -285,6 +285,31 @@ public class ActivityUtils { return false; } + + /** + * 结束到指定Activity,并进入指定页面 + * + * @param isIncludeSelf 是否结束该activity自己 + */ + public static boolean finishToActivity(Context ctx ,@NonNull final Class clz,@NonNull final Class newclz, + final boolean isIncludeSelf) { + List activities = CommonBaseLibrary.activityList; + for (int i = activities.size() - 1; i >= 0; --i) { + Activity aActivity = activities.get(i); + if (aActivity.getClass().equals(clz)) { + if (isIncludeSelf) { + finishActivity(aActivity); + } + startActivity(ctx,newclz); + return true; + } else { + finishActivity(aActivity); + } +// finishActivity(aActivity); + } + return false; + } + /** * 结束除最新之外的同类型Activity *

也就是让栈中最多只剩下一种类型的Activity

diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/utils/PickerUtils.kt b/mylibrary/src/main/java/com/dahe/mylibrary/utils/PickerUtils.kt index 404e02f..d8cf7e0 100644 --- a/mylibrary/src/main/java/com/dahe/mylibrary/utils/PickerUtils.kt +++ b/mylibrary/src/main/java/com/dahe/mylibrary/utils/PickerUtils.kt @@ -10,6 +10,8 @@ import com.github.gzuliyujiang.wheelpicker.annotation.DateMode import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener import com.github.gzuliyujiang.wheelpicker.entity.DateEntity +import com.github.gzuliyujiang.wheelview.contract.TextProvider +import java.util.ArrayList /** * @ClassName PickUtils @@ -57,7 +59,7 @@ class PickerUtils private constructor() { */ fun showDateSim( activity: AppCompatActivity, - title: String = "", + title: String = "日期选择", listener: OnMyDatePickedListener ) { val picker = DatePicker(activity) @@ -93,4 +95,28 @@ class PickerUtils private constructor() { show() } } + + /** + * 底部弹框-单选 + * @param activity AppCompatActivity + * @param title String + * @param listener OnOptionPickedListener + */ + fun showSelectCarColor( + activity: AppCompatActivity, + title: String = "", + default: String = "", + datas: MutableList, + listener: OnOptionPickedListener + ) { + OptionPicker(activity) + .run { + setData(datas) + setDefaultValue(default) + setTitle(title) + setOnOptionPickedListener(listener) + show() + } + } + } \ No newline at end of file diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/utils/TimeUtil.java b/mylibrary/src/main/java/com/dahe/mylibrary/utils/TimeUtil.java index 9bcaa33..f02f5a1 100644 --- a/mylibrary/src/main/java/com/dahe/mylibrary/utils/TimeUtil.java +++ b/mylibrary/src/main/java/com/dahe/mylibrary/utils/TimeUtil.java @@ -659,6 +659,21 @@ public final class TimeUtil { return ""; } + /** + * 转换数据类型 + * @param date + * @param formart 原始数据类型 + * @return yyyy-MM-dd + */ + public static String changeDateNoneFormat(String date, String formart) { + long l = string2Millis(date,new SimpleDateFormat(formart, Locale.getDefault())); + if (l != -1) { + return millis2String(l, DEFAULT_FORMAT_DATE); + } + return ""; + } + + /** * 获取合适型与当前时间的差 *