资料修改-司机资料编辑功能

This commit is contained in:
lijia 2024-03-22 17:26:33 +08:00
parent ce822d0845
commit 69276f7a58
25 changed files with 913 additions and 203 deletions

View File

@ -34,7 +34,7 @@ android {
ndk { ndk {
//SO库架构so //SO库架构so
abiFilters "armeabi", "arm64-v8a" abiFilters "armeabi-v7a", "arm64-v8a"
// abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64" // abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
} }
} }
@ -142,11 +142,13 @@ dependencies {
implementation project(path: ':mylibrary') implementation project(path: ':mylibrary')
// //
implementation 'com.amap.api:3dmap:9.8.3' // implementation 'com.amap.api:3dmap:9.8.3'
// //
// implementation 'com.amap.api:location:6.4.2'//6.4.2 // implementation 'com.amap.api:location:6.4.2'//6.4.2
implementation 'com.amap.api:search:9.7.0' implementation 'com.amap.api:search:9.7.0'
implementation 'com.amap.api:navi-3dmap:latest.integration'
// implementation 'com.amap.api:navi-3dmap:9.8.3_3dmap9.8.3'
// //
implementation files('libs/EsignSDK.aar') implementation files('libs/EsignSDK.aar')

View File

@ -34,6 +34,13 @@
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.CALL_PHONE" />
<!--用于用户链接蓝牙时在导航组件页面的蓝牙连接提醒建立链接后开发者可选用蓝牙通道进行tts播报-->
<uses-permission android:name="android.permission.BLUETOOTH" />
<!--用与导航状态中保持屏幕常亮-->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!--允许读设备等信息,用于问题排查-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- Android 13版本适配细化存储权限--> <!-- Android 13版本适配细化存储权限-->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
@ -85,6 +92,7 @@
android:name="com.amap.api.v2.apikey" android:name="com.amap.api.v2.apikey"
android:value="e0c32c80b14f78b770b3671add9c4515" /> android:value="e0c32c80b14f78b770b3671add9c4515" />
<service android:name="com.amap.api.location.APSService" />
<activity <activity
android:name=".ui.LauncherActivity" android:name=".ui.LauncherActivity"
@ -149,16 +157,32 @@
android:configChanges="keyboardHidden|orientation|locale" android:configChanges="keyboardHidden|orientation|locale"
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateHidden" /> android:windowSoftInputMode="adjustPan|stateHidden" />
<activity
android:name=".ui.account.authperson.EditPersonActivity"
android:configChanges="keyboardHidden|orientation|locale"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateHidden" />
<activity <activity
android:name=".ui.account.authperson.AuthDriverActivity" android:name=".ui.account.authperson.AuthDriverActivity"
android:configChanges="keyboardHidden|orientation|locale" android:configChanges="keyboardHidden|orientation|locale"
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateHidden" /> android:windowSoftInputMode="adjustPan|stateHidden" />
<activity
android:name=".ui.account.authperson.EditDriverActivity"
android:configChanges="keyboardHidden|orientation|locale"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateHidden" />
<activity <activity
android:name=".ui.account.authperson.AuthQualificationActivity" android:name=".ui.account.authperson.AuthQualificationActivity"
android:configChanges="keyboardHidden|orientation|locale" android:configChanges="keyboardHidden|orientation|locale"
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateHidden" /> android:windowSoftInputMode="adjustPan|stateHidden" />
<activity
android:name=".ui.account.authperson.EditQualificationActivity"
android:configChanges="keyboardHidden|orientation|locale"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateHidden" />
<activity <activity
android:name=".ui.account.authperson.AuthBankCardActivity" android:name=".ui.account.authperson.AuthBankCardActivity"
android:configChanges="keyboardHidden|orientation|locale" android:configChanges="keyboardHidden|orientation|locale"
@ -300,7 +324,12 @@
<!-- 我的相关end --> <!-- 我的相关end -->
<!-- 导航相关end -->
<activity
android:name="com.amap.api.navi.AmapRouteActivity"
android:configChanges="orientation|keyboardHidden|screenSize|navigation"
android:launchMode="singleInstance" />
<!-- 导航相关end -->
</application> </application>
</manifest> </manifest>

View File

@ -11,6 +11,7 @@ import com.dahe.mylibrary.CommonBaseLibrary
import com.esign.esignsdk.EsignSdk import com.esign.esignsdk.EsignSdk
import com.github.gzuliyujiang.dialog.DialogConfig import com.github.gzuliyujiang.dialog.DialogConfig
import com.github.gzuliyujiang.dialog.DialogStyle import com.github.gzuliyujiang.dialog.DialogStyle
import com.tencent.bugly.crashreport.CrashReport
import com.umeng.commonsdk.UMConfigure import com.umeng.commonsdk.UMConfigure
import com.umeng.message.PushAgent import com.umeng.message.PushAgent
import com.umeng.umverify.UMVerifyHelper import com.umeng.umverify.UMVerifyHelper
@ -34,7 +35,7 @@ class App : Application() {
// CrashHandler.getInstance().init(this); // CrashHandler.getInstance().init(this);
// CrashHandler2.getInstance().init(getApplicationContext()); // CrashHandler2.getInstance().init(getApplicationContext());
} }
// CrashReport.initCrashReport(getApplicationContext(), AppConfig.BUGLY_APP_ID, false); CrashReport.initCrashReport(getApplicationContext(), AppConfig.BUGLY_APP_ID, false);
// SophixManager.getInstance().queryAndLoadNewPatch(); // SophixManager.getInstance().queryAndLoadNewPatch();
@ -95,28 +96,34 @@ class App : Application() {
} }
} }
private fun initUmeng(){ private fun initUmeng() {
// thread { // thread {
//友盟 //友盟
UMConfigure.preInit(this,AppConfig.APP_KEY,"Umeng"); UMConfigure.preInit(this, AppConfig.APP_KEY, "Umeng");
// 推送注册 // 推送注册
val api = PushAgent.getInstance(this) val api = PushAgent.getInstance(this)
PushHelper.setting(api) PushHelper.setting(api)
UMConfigure.init(this,AppConfig.APP_KEY,"Umeng",UMConfigure.DEVICE_TYPE_PHONE,AppConfig.MESSAGE_SECRET) UMConfigure.init(
//实名认证 this,
val authHelper = UMVerifyHelper.getInstance(this, object : UMTokenResultListener { AppConfig.APP_KEY,
override fun onTokenSuccess(ret: String) { "Umeng",
Log.e("Umenginit", "onTokenSuccess: $ret") UMConfigure.DEVICE_TYPE_PHONE,
} AppConfig.MESSAGE_SECRET
)
//实名认证
val authHelper = UMVerifyHelper.getInstance(this, object : UMTokenResultListener {
override fun onTokenSuccess(ret: String) {
Log.e("Umenginit", "onTokenSuccess: $ret")
}
override fun onTokenFailed(ret: String) { override fun onTokenFailed(ret: String) {
Log.e("Umenginit", "onTokenFailed: $ret") Log.e("Umenginit", "onTokenFailed: $ret")
} }
}) })
authHelper.setLoggerEnable(true) authHelper.setLoggerEnable(true)
authHelper.setAuthSDKInfo("iiBVGHSKbUML/NTbj187eM1N1KMvRzh1sJbM+2FMbV7FNOnmngDlPr2reqlvouhK/8dXcaNGJuI9B+Kv7C6IlBMoGE0PMVWvwY754T8zxSgSfLUM6s7e0dVxmtMFRrCDawKBiv6g/5+X1mSK5OXNG+H//8rtDDf0vePyUUPCAU26tIX/7BCJ4wvUjobAHBDtSbMMhzqWR5MC7jTCnR0k1OwwvEYxIH6jZuRqT4QgBBO4AMKvFjboqj3rsrr5uE6Gn28fWQrBBrOkPS830GnZFU8ND/0LedGgTlMllBAXLy0gbZZ/8LKJOQ==") authHelper.setAuthSDKInfo("iiBVGHSKbUML/NTbj187eM1N1KMvRzh1sJbM+2FMbV7FNOnmngDlPr2reqlvouhK/8dXcaNGJuI9B+Kv7C6IlBMoGE0PMVWvwY754T8zxSgSfLUM6s7e0dVxmtMFRrCDawKBiv6g/5+X1mSK5OXNG+H//8rtDDf0vePyUUPCAU26tIX/7BCJ4wvUjobAHBDtSbMMhzqWR5MC7jTCnR0k1OwwvEYxIH6jZuRqT4QgBBO4AMKvFjboqj3rsrr5uE6Gn28fWQrBBrOkPS830GnZFU8ND/0LedGgTlMllBAXLy0gbZZ/8LKJOQ==")
// }.start() // }.start()

View File

@ -7,7 +7,7 @@ package com.dahe.gldriver.base
* @Description TODO * @Description TODO
*/ */
object AppConfig { object AppConfig {
const val BUGLY_APP_ID = "a5b894cef7" const val BUGLY_APP_ID = "0487c49b52"
const val TIME = "DA_HE_TIME" const val TIME = "DA_HE_TIME"
const val ID = "DA_HE_ID" const val ID = "DA_HE_ID"
const val PHONE = "DA_HE_PHONE" const val PHONE = "DA_HE_PHONE"

View File

@ -60,7 +60,7 @@ data class Face(
) )
data class DataX( data class DataX(
val address: String = "", var address: String = "",
val birthDate: String = "", val birthDate: String = "",
val ethnicity: String = "", val ethnicity: String = "",
val idNumber: String = "", val idNumber: String = "",

View File

@ -42,39 +42,40 @@ data class UserBean(
) )
data class UserDetail( data class UserDetail(
val createBy: String, var createBy: String="",
val createTime: String, var createTime: String="",
val driverBankcardAddress: String, var isRealName: String="",
val driverBankcardNumber: String, var driverBankcardAddress: String="",
val driverBankcardPhotoUrl: String, var driverBankcardNumber: String="",
val driverId: Int, var driverBankcardPhotoUrl: String="",
val idcardAddress: String, var driverId: String="",
val idcardBackUrl: String, var idcardAddress: String="",
val idcardEffectiveEnd: String, var idcardBackUrl: String="",
val idcardEffectiveStart: String, var idcardEffectiveEnd: String="",
val idcardEthnicity: String, var idcardEffectiveStart: String="",
val idcardFrontUrl: String, var idcardEthnicity: String="",
val idcardIsEndless: String, var idcardFrontUrl: String="",
val idcardName: String, var idcardIsEndless: String="",
val idcardNo: String, var idcardName: String="",
val idcardSex: String, var idcardNo: String="",
val licenseApproveOrganization: String, var idcardSex: String="",
val licenseEffectiveEnd: String, var licenseApproveOrganization: String="",
val licenseEffectiveStart: String, var licenseEffectiveEnd: String="",
val licenseFirstGetDate: String, var licenseEffectiveStart: String="",
val licenseName: String, var licenseFirstGetDate: String="",
val licenseNo: String, var licenseName: String="",
val licensePhotoBackUrl: String, var licenseNo: String="",
val licensePhotoFaceUrl: String, var licensePhotoBackUrl: String="",
val licenseRecordNumber: String, var licensePhotoFaceUrl: String="",
val licenseType: String, var licenseRecordNumber: String="",
val qualificationCertificateEffectiveEnd: String, var licenseType: String="",
val qualificationCertificateExamineDate: String, var qualificationCertificateEffectiveEnd: String="",
val qualificationCertificateNo: String, var qualificationCertificateExamineDate: String="",
val qualificationCertificatePhotoUrl: String, var qualificationCertificateNo: String="",
val remark: String, var qualificationCertificatePhotoUrl: String="",
val taxpayerCaptainId: String, var remark: String="",
val updateBy: String, var taxpayerCaptainId: String="",
val updateTime: String var updateBy: String="",
var updateTime: String=""
) )

View File

@ -0,0 +1,76 @@
package com.dahe.gldriver.callback
import android.view.View
import com.amap.api.navi.INaviInfoCallback
import com.amap.api.navi.model.AMapNaviLocation
/**
* @ClassName MyOnInitNaviFailure
* @Author john
* @Date 2024/3/21 16:12
* @Description TODO
*/
abstract class MyINaviInfoCallback : INaviInfoCallback {
override fun onInitNaviFailure() {
}
override fun onGetNavigationText(p0: String?) {
}
override fun onLocationChange(p0: AMapNaviLocation?) {
}
override fun onArriveDestination(p0: Boolean) {
}
override fun onStartNavi(p0: Int) {
}
override fun onCalculateRouteSuccess(p0: IntArray?) {
}
override fun onCalculateRouteFailure(p0: Int) {
}
override fun onStopSpeaking() {
}
override fun onReCalculateRoute(p0: Int) {
}
override fun onExitPage(p0: Int) {
}
override fun onStrategyChanged(p0: Int) {
}
override fun onArrivedWayPoint(p0: Int) {
}
override fun onMapTypeChanged(p0: Int) {
}
override fun onNaviDirectionChanged(p0: Int) {
}
override fun onDayAndNightModeChanged(p0: Int) {
}
override fun onBroadcastModeChanged(p0: Int) {
}
override fun onScaleAutoChanged(p0: Boolean) {
}
override fun getCustomMiddleView(): View? {
return null
}
override fun getCustomNaviView(): View? {
return null
}
override fun getCustomNaviBottomView(): View? {
return null
}
}

View File

@ -139,6 +139,12 @@ interface Api {
@POST(BASE_URL + "driver/driver/setUpDriverIdCard") @POST(BASE_URL + "driver/driver/setUpDriverIdCard")
fun setUpDriverIdCard(@Body carBean: UpPersonInfoBean): Observable<CommonResponseBean<Any>> fun setUpDriverIdCard(@Body carBean: UpPersonInfoBean): Observable<CommonResponseBean<Any>>
/**
* 司机重新上传身份证
* */
@POST(BASE_URL + "driver/driver/reUpDriverIdCard")
fun reUpDriverIdCard(@Body carBean: UserDetail): Observable<CommonResponseBean<Any>>
/** /**
* 司机上传驾驶证 * 司机上传驾驶证
@ -146,12 +152,24 @@ interface Api {
@POST(BASE_URL + "driver/driver/setUpDriverLicense") @POST(BASE_URL + "driver/driver/setUpDriverLicense")
fun setUpDriverLicense(@Body driverBean: UpDriverInfoBean): Observable<CommonResponseBean<Any>> fun setUpDriverLicense(@Body driverBean: UpDriverInfoBean): Observable<CommonResponseBean<Any>>
/**
* 司机重新上传驾驶证
* */
@POST(BASE_URL + "driver/driver/reUpDriverLicense")
fun reUpDriverLicense(@Body driverBean: UserDetail): Observable<CommonResponseBean<Any>>
/** /**
* 司机上传从业资格证 * 司机上传从业资格证
* */ * */
@POST(BASE_URL + "driver/driver/setUpDriverQualificationCertificate") @POST(BASE_URL + "driver/driver/setUpDriverQualificationCertificate")
fun setUpDriverQualificationCertificate(@Body qualiBean: UpQualiInfoBean): Observable<CommonResponseBean<Any>> fun setUpDriverQualificationCertificate(@Body qualiBean: UpQualiInfoBean): Observable<CommonResponseBean<Any>>
/**
* 司机重新上传从业资格证
* */
@POST(BASE_URL + "driver/driver/reUpDriverQualificationCertificate")
fun reUpDriverQualificationCertificate(@Body qualiBean: UserDetail): Observable<CommonResponseBean<Any>>
/** /**
* 上传车辆的道路运输证 * 上传车辆的道路运输证
* */ * */
@ -164,6 +182,19 @@ interface Api {
@POST(BASE_URL + "driver/driver/setUpDriverBankCard") @POST(BASE_URL + "driver/driver/setUpDriverBankCard")
fun setUpDriverBankCard(@Body bankBean: UpBankInfoBean): Observable<CommonResponseBean<Any>> fun setUpDriverBankCard(@Body bankBean: UpBankInfoBean): Observable<CommonResponseBean<Any>>
/**
* 司机重新上传银行卡
* */
@POST(BASE_URL + "driver/driver/reUpDriverBankCard")
fun reUpDriverBankCard(@Body bankBean: UpBankInfoBean): Observable<CommonResponseBean<Any>>
/**
* 查询司机证件完整度信息
* @return Observable<CommonResponseBean<UserDetail>>
*/
@GET(BASE_URL + "driver/driver/getDriverDocIntegrity")
fun getDriverDocIntegrity(): Observable<CommonResponseBean<UserDetail>>
/** /**
* 司机认证成为车队长 * 司机认证成为车队长
@ -376,7 +407,7 @@ interface Api {
* @return Observable<CommonResponseBean<CaptainBean>> * @return Observable<CommonResponseBean<CaptainBean>>
*/ */
@GET(BASE_URL + "driver/opinions/list") @GET(BASE_URL + "driver/opinions/list")
fun waybillRate(@Query("opinionsType") opinionsType : String): Observable<CommonResponseBean<MutableList<RateBean>>> fun waybillRate(@Query("opinionsType") opinionsType: String): Observable<CommonResponseBean<MutableList<RateBean>>>
/** /**
* 查询司机总评价信息 * 查询司机总评价信息
@ -392,7 +423,7 @@ interface Api {
* @return Observable<CommonResponseBean<RateBean>> * @return Observable<CommonResponseBean<RateBean>>
*/ */
@GET(BASE_URL + "driver/order/orderPhoto") @GET(BASE_URL + "driver/order/orderPhoto")
fun orderPhoto(@Query("orderId") orderId :String): Observable<CommonResponseBean<MutableList<OrderChild>>> fun orderPhoto(@Query("orderId") orderId: String): Observable<CommonResponseBean<MutableList<OrderChild>>>
companion object { companion object {

View File

@ -91,6 +91,9 @@ class HomeActivity : BaseActivity<ActivityHomeBinding>(), OnTabSelectListener,
.permissions( .permissions(
Manifest.permission.CAMERA, Manifest.permission.CAMERA,
Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_BACKGROUND_LOCATION,
) )
.request { allGranted, grantedList, deniedList -> .request { allGranted, grantedList, deniedList ->
if (allGranted) { if (allGranted) {

View File

@ -1,18 +1,14 @@
package com.dahe.gldriver.ui package com.dahe.gldriver.ui
import android.os.Bundle import android.os.Bundle
import android.view.WindowManager
import com.amap.api.location.AMapLocationClient import com.amap.api.location.AMapLocationClient
import com.dahe.gldriver.base.AppConfig import com.amap.api.maps.MapsInitializer
import com.dahe.gldriver.databinding.ActivityLauncherBinding import com.dahe.gldriver.databinding.ActivityLauncherBinding
import com.dahe.mylibrary.base.BaseActivity
import com.dahe.mylibrary.utils.ActivityUtils
import com.dahe.gldriver.ui.account.LoginActivity import com.dahe.gldriver.ui.account.LoginActivity
import com.dahe.gldriver.ui.account.SelectRoleActivity
import com.dahe.gldriver.utils.CommonPopUtils import com.dahe.gldriver.utils.CommonPopUtils
import com.dahe.gldriver.utils.SPUtils import com.dahe.gldriver.utils.SPUtils
import com.dahe.mylibrary.utils.BaseSPUtils import com.dahe.mylibrary.base.BaseActivity
import com.dahe.mylibrary.utils.StringUtils import com.dahe.mylibrary.utils.ActivityUtils
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Observable import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.disposables.Disposable import io.reactivex.rxjava3.disposables.Disposable
@ -45,10 +41,12 @@ class LauncherActivity : BaseActivity<ActivityLauncherBinding>() {
override fun initDate() { override fun initDate() {
val isFirstOpenApp = SPUtils.instance.getIsFirstOpenApp(mContext) val isFirstOpenApp = SPUtils.instance.getIsFirstOpenApp(mContext)
if (isFirstOpenApp) { if (isFirstOpenApp) {
MapsInitializer.updatePrivacyShow(this, true, true)
CommonPopUtils.getInstance().showCenterAgreement(mContext) { CommonPopUtils.getInstance().showCenterAgreement(mContext) {
SPUtils.instance.setIsFirstOpenApp(mContext, false) SPUtils.instance.setIsFirstOpenApp(mContext, false)
AMapLocationClient.updatePrivacyShow(mContext, true, true) AMapLocationClient.updatePrivacyShow(mContext, true, true)
AMapLocationClient.updatePrivacyAgree(mContext, true) AMapLocationClient.updatePrivacyAgree(mContext, true)
MapsInitializer.updatePrivacyAgree(this, true)
goNext() goNext()
} }
} else { } else {

View File

@ -82,6 +82,7 @@ class AuthDriverActivity : BaseActivity<ActivityAuthDriverBinding>() {
private fun subMit() { private fun subMit() {
binding.run { binding.run {
driverInfoBean.run { driverInfoBean.run {
licenseName = etName.text.toString().trim()
licenseNo = etId.text.toString() licenseNo = etId.text.toString()
licenseType = tvCarType.text.toString() licenseType = tvCarType.text.toString()
licenseEffectiveStart = tvStart.text.toString() licenseEffectiveStart = tvStart.text.toString()

View File

@ -38,16 +38,14 @@ import java.io.File
class AuthPersonActivity : BaseActivity<ActivityAuthPersonBinding>() { class AuthPersonActivity : BaseActivity<ActivityAuthPersonBinding>() {
lateinit var ossServiceUtil: OssServiceUtil // var isOnlyShow = false
var isOnlyShow = false
var perInfoBean: UpPersonInfoBean = UpPersonInfoBean() var perInfoBean: UpPersonInfoBean = UpPersonInfoBean()
override fun initView(savedInstanceState: Bundle?) { override fun initView(savedInstanceState: Bundle?) {
setStatusBarColor(R.color.white) setStatusBarColor(R.color.white)
setTitleBar("实名认证", true) setTitleBar("实名认证", true)
isOnlyShow = intent.extras?.getBoolean(AppConfig.IS_ONLY_SHOW, false) == true // isOnlyShow = intent.extras?.getBoolean(AppConfig.IS_ONLY_SHOW, false) == true
ossServiceUtil = OssServiceUtil.getInstance()
binding.run { binding.run {
var inBinding = this var inBinding = this
btnOk.setOnClickListener { btnOk.setOnClickListener {
@ -98,6 +96,7 @@ class AuthPersonActivity : BaseActivity<ActivityAuthPersonBinding>() {
perInfoBean.run { perInfoBean.run {
idcardNo = idNumber idcardNo = idNumber
idcardName = name idcardName = name
idcardAddress = address
idcardEthnicity = ethnicity idcardEthnicity = ethnicity
idcardSex = if (sex == "") "0" else "1" idcardSex = if (sex == "") "0" else "1"
} }
@ -111,54 +110,23 @@ class AuthPersonActivity : BaseActivity<ActivityAuthPersonBinding>() {
} }
ivBack.setOnClickListener { ivBack.setOnClickListener {
PopsUtils.getInstance().showSimSelPic(mContext) { OcrUtils.getInstance().ocrPerson(mContext,this@AuthPersonActivity) { picPath, result ->
var data = it[0] ImageLoader.getInstance()
val path: String .loadRoundImage(mContext, picPath.locPic, 12, ivBack)
if (data.isCut && !data.isCompressed) { result?.data?.back?.let {
// 裁剪过 if (it.data.validPeriod?.contains("-") == true) {
path = data.cutPath val split = it.data.validPeriod.split("-")
} else if (data.isCompressed || (data.isCut && data.isCompressed)) { binding.run {
// 压缩过,或者裁剪同时压缩过,以最终压缩过图片为准 tvStart.text =
path = data.compressPath TimeUtil.changeDateFormat(split[0])
} else { tvEnd.text =
// 原图 if (split.size == 2) TimeUtil.changeDateFormat(
path = data.path split[1]
) else ""
}
}
} }
ImageLoader.getInstance().loadRoundImage(mContext, data.realPath, 12, ivBack)
val file = File(data.realPath)
val filePic: MultipartBody.Part = MultipartBody.Part.createFormData(
"file",
file.getName(),
file.asRequestBody("multipart/form-data".toMediaTypeOrNull())
)
DataManager.getInstance().uploadToOss(filePic).flatMap {
perInfoBean.idcardBackUrl = it.data.url
DataManager.getInstance().recognizeIdcard(it.data.url)
}.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(
BaseObserver(
mContext,
object : RxHttpCallBack<OcrPersonBean>(this@AuthPersonActivity) {
override fun onSuccess(t: CommonResponseBean<OcrPersonBean>) {
super.onSuccess(t)
t.data.data.back?.let {
if (it.data.validPeriod?.contains("-") == true) {
val split = it.data.validPeriod.split("-")
binding.run {
tvStart.text =
TimeUtil.changeDateFormat(split[0])
tvEnd.text =
if (split.size == 2) TimeUtil.changeDateFormat(
split[1]
) else ""
}
}
}
}
})
)
} }
} }
} }
@ -167,41 +135,41 @@ class AuthPersonActivity : BaseActivity<ActivityAuthPersonBinding>() {
} }
override fun initDate() { override fun initDate() {
val data = // val data =
Gson().fromJson(intent.extras?.getString(USER_DETAIL), UserDetail::class.java) // Gson().fromJson(intent.extras?.getString(USER_DETAIL), UserDetail::class.java)
if (isOnlyShow) { // if (isOnlyShow) {
binding.run { // binding.run {
llBtn.visibility = View.GONE // llBtn.visibility = View.GONE
etName.isEnabled = false // etName.isEnabled = false
etId.isEnabled = false // etId.isEnabled = false
tvStart.isEnabled = false // tvStart.isEnabled = false
tvEnd.isEnabled = false // tvEnd.isEnabled = false
ivFront.isEnabled = false // ivFront.isEnabled = false
ivBack.isEnabled = false // ivBack.isEnabled = false
//
etName.setText(data.idcardName) // etName.setText(data.idcardName)
etId.setText(data.idcardNo) // etId.setText(data.idcardNo)
tvStart.text = data.idcardEffectiveStart // tvStart.text = data.idcardEffectiveStart
tvEnd.text = data.idcardEffectiveEnd // tvEnd.text = data.idcardEffectiveEnd
ImageLoader.getInstance() // ImageLoader.getInstance()
.loadRoundImage(mContext, data.idcardFrontUrl, 12, ivFront) // .loadRoundImage(mContext, data.idcardFrontUrl, 12, ivFront)
ImageLoader.getInstance() // ImageLoader.getInstance()
.loadRoundImage(mContext, data.idcardBackUrl, 12, ivBack) // .loadRoundImage(mContext, data.idcardBackUrl, 12, ivBack)
} // }
} else { // } else {
if (data != null) { // if (data != null) {
binding.run { // binding.run {
etName.setText(data.idcardName) // etName.setText(data.idcardName)
etId.setText(data.idcardNo) // etId.setText(data.idcardNo)
tvStart.text = data.idcardEffectiveStart // tvStart.text = data.idcardEffectiveStart
tvEnd.text = data.idcardEffectiveEnd // tvEnd.text = data.idcardEffectiveEnd
ImageLoader.getInstance() // ImageLoader.getInstance()
.loadRoundImage(mContext, data.idcardFrontUrl, 12, ivFront) // .loadRoundImage(mContext, data.idcardFrontUrl, 12, ivFront)
ImageLoader.getInstance() // ImageLoader.getInstance()
.loadRoundImage(mContext, data.idcardBackUrl, 12, ivBack) // .loadRoundImage(mContext, data.idcardBackUrl, 12, ivBack)
} // }
} // }
//
} // }
} }
} }

View File

@ -0,0 +1,192 @@
package com.dahe.gldriver.ui.account.authperson
import android.os.Bundle
import android.view.View
import com.dahe.gldriver.R
import com.dahe.gldriver.base.AppConfig
import com.dahe.gldriver.bean.OcrPersonBean
import com.dahe.gldriver.bean.UpDriverInfoBean
import com.dahe.gldriver.databinding.ActivityAuthDriverBinding
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.utils.OcrUtils
import com.dahe.glex.bean.UserDetail
import com.dahe.mylibrary.utils.PickerUtils
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.TimeUtil
import com.dahe.mylibrary.utils.ToastUtils
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
/**
* @ClassName AuthRoleActivity
* @Author 用户
* @Date 2024/1/25 11:15
* @Description 驾驶证认证-编辑
*/
class EditDriverActivity : BaseActivity<ActivityAuthDriverBinding>() {
var driverInfoBean = UserDetail()
override fun initView(savedInstanceState: Bundle?) {
setStatusBarColor(R.color.white)
setTitleBar("实名认证", true)
binding.run {
btnOk.text = "确定"
btnOk.setOnClickListener {
subMit()
}
tvStart.run {
setOnClickListener {
PickerUtils.getInstance()
.showDate(this@EditDriverActivity, "有效起始日期") { date ->
this.text = date
}
}
}
tvEnd.run {
setOnClickListener {
PickerUtils.getInstance()
.showDate(this@EditDriverActivity, "有效结束日期") { date ->
this.text = date
}
}
}
tvCarType.setOnClickListener {
PickerUtils.getInstance()
.showSelectCarType(this@EditDriverActivity, "选择准驾车型") { _, item ->
tvCarType.text = item.toString()
}
}
ivFront.setOnClickListener {
selFrontPic()
}
ivBack.setOnClickListener {
selBackPic()
}
}
}
override fun initDate() {
DataManager.getInstance().getUserDetail()
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext, object : RxHttpCallBack<UserDetail>() {
override fun onSuccess(t: CommonResponseBean<UserDetail>) {
super.onSuccess(t)
driverInfoBean = t.data
var isOnlyShow =
intent.extras?.getBoolean(AppConfig.IS_ONLY_SHOW, false) == true
if (isOnlyShow) {
binding.run {
llBtn.visibility = View.GONE
etName.isEnabled = false
etId.isEnabled = false
tvCarType.isEnabled = false
tvStart.isEnabled = false
tvEnd.isEnabled = false
ivFront.isEnabled = false
ivBack.isEnabled = false
}
}
binding.run {
etName.setText(driverInfoBean.licenseName)
etId.setText(driverInfoBean.licenseNo)
tvStart.text = driverInfoBean.licenseEffectiveStart
tvEnd.text = driverInfoBean.licenseEffectiveEnd
tvCarType.text = driverInfoBean.licenseType
ImageLoader.getInstance()
.loadRoundImage(mContext, driverInfoBean.licensePhotoFaceUrl, 12, ivFront)
ImageLoader.getInstance()
.loadRoundImage(mContext, driverInfoBean.licensePhotoBackUrl, 12, ivBack)
}
}
}))
}
private fun subMit() {
binding.run {
driverInfoBean.run {
licenseName = etName.text.toString().trim()
licenseNo = etId.text.toString()
licenseType = tvCarType.text.toString()
licenseEffectiveStart = tvStart.text.toString()
licenseEffectiveEnd = tvEnd.text.toString()
}
}
if (driverInfoBean.licenseNo.isNullOrBlank() || driverInfoBean.licensePhotoBackUrl.isNullOrBlank()) {
ToastUtils.showToast(mContext, "请完善信息")
return
}
DataManager.getInstance().reUpDriverLicense(driverInfoBean)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext, object : RxHttpCallBack<Any>() {
override fun onSuccess(t: CommonResponseBean<Any>) {
super.onSuccess(t)
showToast("修改成功")
setResult(RESULT_OK)
finish()
}
}))
}
private fun selFrontPic() {
OcrUtils.getInstance().ocrDriver(mContext, this) { picPath, result ->
result?.data?.face?.data.let {
ImageLoader.getInstance()
.loadRoundImage(mContext, picPath.locPic, 12, binding.ivFront)
driverInfoBean.licensePhotoFaceUrl = picPath.picPath
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 ""
}
}
}
}
}
}
private fun selBackPic() {
OcrUtils.getInstance().ocrDriver(mContext, this) { picPath, result ->
result?.data?.back?.data.let {
ImageLoader.getInstance()
.loadRoundImage(mContext, picPath.locPic, 12, binding.ivBack)
driverInfoBean.licensePhotoBackUrl = picPath.picPath
ToastUtils.showToast(mContext, "驾驶证副页上传成功")
}
}
}
}

View File

@ -0,0 +1,172 @@
package com.dahe.gldriver.ui.account.authperson
import android.os.Bundle
import android.view.View
import com.dahe.gldriver.R
import com.dahe.gldriver.base.AppConfig
import com.dahe.gldriver.base.AppConfig.USER_DETAIL
import com.dahe.gldriver.bean.OcrPersonBean
import com.dahe.gldriver.bean.UpPersonInfoBean
import com.dahe.gldriver.databinding.ActivityAuthPersonBinding
import com.dahe.gldriver.net.BaseObserver
import com.dahe.gldriver.net.DataManager
import com.dahe.gldriver.net.RxHttpCallBack
import com.dahe.gldriver.utils.OcrUtils
import com.dahe.glex.bean.UserDetail
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.dahe.mylibrary.utils.TimeUtil
import com.google.gson.Gson
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody.Companion.asRequestBody
import java.io.File
/**
* @ClassName AuthRoleActivity
* @Author 用户
* @Date 2024/1/25 11:15
* @Description 身份证认证-编辑
*/
class EditPersonActivity : BaseActivity<ActivityAuthPersonBinding>() {
var perInfoBean: UserDetail = UserDetail()
override fun initView(savedInstanceState: Bundle?) {
setStatusBarColor(R.color.white)
setTitleBar("实名认证", true)
binding.run {
btnOk.text = "确定"
var inBinding = this
btnOk.setOnClickListener {
perInfoBean.run {
idcardNo = inBinding.etId.text.toString()
idcardName = inBinding.etName.text.toString()
idcardEffectiveStart = inBinding.tvStart.text.toString()
idcardEffectiveEnd = inBinding.tvEnd.text.toString()
}
DataManager.getInstance().reUpDriverIdCard(perInfoBean)
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext, object : RxHttpCallBack<Any>() {
override fun onSuccess(t: CommonResponseBean<Any>) {
super.onSuccess(t)
showToast("修改成功")
setResult(RESULT_OK)
finish()
}
}))
}
tvStart.run {
setOnClickListener {
PickerUtils.getInstance()
.showDate(this@EditPersonActivity, "有效起始日期") { date ->
this.text = date
}
}
}
tvEnd.run {
setOnClickListener {
PickerUtils.getInstance()
.showDate(this@EditPersonActivity, "有效结束日期") { date ->
this.text = date
}
}
}
ivFront.setOnClickListener {
OcrUtils.getInstance()
.ocrPerson(mContext, this@EditPersonActivity) { picPath, result ->
ImageLoader.getInstance()
.loadRoundImage(mContext, picPath.locPic, 12, ivFront)
perInfoBean.idcardFrontUrl = picPath.picPath
result?.data?.face?.data.let {
it?.run {
perInfoBean.run {
idcardNo = idNumber
idcardName = name
idcardAddress = address
idcardEthnicity = ethnicity
idcardSex = if (sex == "") "0" else "1"
}
}
binding.run {
etName.setText(it?.name)
etId.setText(it?.idNumber)
}
}
}
}
ivBack.setOnClickListener {
OcrUtils.getInstance()
.ocrPerson(mContext, this@EditPersonActivity) { picPath, result ->
ImageLoader.getInstance()
.loadRoundImage(mContext, picPath.locPic, 12, ivBack)
result?.data?.back?.let {
if (it.data.validPeriod?.contains("-") == true) {
val split = it.data.validPeriod.split("-")
binding.run {
tvStart.text =
TimeUtil.changeDateFormat(split[0])
tvEnd.text =
if (split.size == 2) TimeUtil.changeDateFormat(
split[1]
) else ""
}
}
}
}
}
}
}
override fun initDate() {
DataManager.getInstance().getUserDetail()
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext, object : RxHttpCallBack<UserDetail>() {
override fun onSuccess(t: CommonResponseBean<UserDetail>) {
super.onSuccess(t)
perInfoBean = t.data
var isOnlyShow =
intent.extras?.getBoolean(AppConfig.IS_ONLY_SHOW, false) == true
if (isOnlyShow) {
binding.run {
llBtn.visibility = View.GONE
etName.isEnabled = false
etId.isEnabled = false
tvStart.isEnabled = false
tvEnd.isEnabled = false
ivFront.isEnabled = false
ivBack.isEnabled = false
}
}
binding.run {
etName.setText(perInfoBean.idcardName)
etId.setText(perInfoBean.idcardNo)
tvStart.text = perInfoBean.idcardEffectiveStart
tvEnd.text = perInfoBean.idcardEffectiveEnd
ImageLoader.getInstance()
.loadRoundImage(mContext, perInfoBean.idcardFrontUrl, 12, ivFront)
ImageLoader.getInstance()
.loadRoundImage(mContext, perInfoBean.idcardBackUrl, 12, ivBack)
}
}
}))
}
}

View File

@ -0,0 +1,121 @@
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.UpQualiInfoBean
import com.dahe.gldriver.databinding.ActivityAuthQualificationBinding
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.utils.OcrUtils
import com.dahe.glex.bean.UserDetail
import com.dahe.mylibrary.utils.PickerUtils
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 io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
/**
* @ClassName AuthQualificationActivity
* @Author john
* @Date 2024/1/25 15:20
* @Description 从业资格证认证-编辑
*/
class EditQualificationActivity : BaseActivity<ActivityAuthQualificationBinding>() {
var upQuaInfo = UserDetail()
override fun initView(savedInstanceState: Bundle?) {
setStatusBarColor(R.color.white)
setTitleBar("实名认证", true)
binding.btnOk.setOnClickListener {
subMit()
}
binding.run {
btnOk.text = "确定"
tvDate.run {
setOnClickListener {
PickerUtils.getInstance()
.showDateSim(
this@EditQualificationActivity,
"选择有效期至"
) { date ->
this.text = date
}
}
}
ivFront.setOnClickListener {
OcrUtils.getInstance()
.noOcrUpPic(mContext, this@EditQualificationActivity) { picPath, _ ->
ImageLoader.getInstance()
.loadRoundImage(mContext, picPath.locPic, 12, ivFront)
upQuaInfo.qualificationCertificatePhotoUrl = picPath.picPath
}
}
}
}
override fun initDate() {
DataManager.getInstance().getUserDetail()
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext, object : RxHttpCallBack<UserDetail>() {
override fun onSuccess(t: CommonResponseBean<UserDetail>) {
super.onSuccess(t)
upQuaInfo = t.data
binding.run {
var isOnlyShow =
intent.extras?.getBoolean(AppConfig.IS_ONLY_SHOW, false) == true
if (isOnlyShow) {
tvDate.isEnabled = false
etId.isEnabled = false
ivFront.isEnabled = false
}
tvDate.setText(upQuaInfo.qualificationCertificateEffectiveEnd)
etId.setText(upQuaInfo.qualificationCertificateNo)
ImageLoader.getInstance()
.loadRoundImage(
mContext,
upQuaInfo.qualificationCertificatePhotoUrl,
12,
ivFront
)
}
}
}))
}
private fun subMit() {
upQuaInfo.run {
qualificationCertificateNo = binding.etId.text.toString()
qualificationCertificateEffectiveEnd = binding.tvDate.text.toString()
if (qualificationCertificateNo.isNullOrEmpty() || qualificationCertificateEffectiveEnd.isNullOrEmpty()) {
showToast("请完善信息")
return@run
}
DataManager.getInstance().reUpDriverQualificationCertificate(upQuaInfo)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext, object : RxHttpCallBack<Any>() {
override fun onSuccess(t: CommonResponseBean<Any>) {
super.onSuccess(t)
showToast("修改成功")
setResult(RESULT_OK)
finish()
}
}))
}
}
}

View File

@ -21,6 +21,7 @@ import com.dahe.mylibrary.utils.BaseUtils
import com.dahe.mylibrary.utils.ImageLoader import com.dahe.mylibrary.utils.ImageLoader
import com.dahe.mylibrary.utils.PhoneFormatCheckUtils import com.dahe.mylibrary.utils.PhoneFormatCheckUtils
import com.dahe.mylibrary.utils.ToastUtils import com.dahe.mylibrary.utils.ToastUtils
import com.tencent.bugly.crashreport.CrashReport
import kotlin.system.exitProcess import kotlin.system.exitProcess
class MineFragment : BaseFragment<FragmentMineBinding>(), View.OnClickListener { class MineFragment : BaseFragment<FragmentMineBinding>(), View.OnClickListener {

View File

@ -1,5 +1,6 @@
package com.dahe.gldriver.ui.mine.activity package com.dahe.gldriver.ui.mine.activity
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import com.dahe.gldriver.R import com.dahe.gldriver.R
@ -8,7 +9,12 @@ import com.dahe.gldriver.databinding.ActivityPersonInfoBinding
import com.dahe.gldriver.net.BaseObserver import com.dahe.gldriver.net.BaseObserver
import com.dahe.gldriver.net.DataManager import com.dahe.gldriver.net.DataManager
import com.dahe.gldriver.net.RxHttpCallBack import com.dahe.gldriver.net.RxHttpCallBack
import com.dahe.gldriver.ui.account.authperson.AuthDriverActivity
import com.dahe.gldriver.ui.account.authperson.AuthPersonActivity import com.dahe.gldriver.ui.account.authperson.AuthPersonActivity
import com.dahe.gldriver.ui.account.authperson.AuthQualificationActivity
import com.dahe.gldriver.ui.account.authperson.EditDriverActivity
import com.dahe.gldriver.ui.account.authperson.EditPersonActivity
import com.dahe.gldriver.ui.account.authperson.EditQualificationActivity
import com.dahe.gldriver.utils.OrderUtils import com.dahe.gldriver.utils.OrderUtils
import com.dahe.gldriver.utils.SPUtils import com.dahe.gldriver.utils.SPUtils
import com.dahe.glex.bean.UserDetail import com.dahe.glex.bean.UserDetail
@ -57,7 +63,7 @@ class PersonInfoActivity : BaseActivity<ActivityPersonInfoBinding>(), View.OnCli
} }
override fun initDate() { override fun initDate() {
DataManager.getInstance().getUserDetail() DataManager.getInstance().getDriverDocIntegrity()
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext, object : RxHttpCallBack<UserDetail>() { .subscribe(BaseObserver(mContext, object : RxHttpCallBack<UserDetail>() {
override fun onSuccess(t: CommonResponseBean<UserDetail>) { override fun onSuccess(t: CommonResponseBean<UserDetail>) {
@ -71,27 +77,41 @@ class PersonInfoActivity : BaseActivity<ActivityPersonInfoBinding>(), View.OnCli
super.onClick(view) super.onClick(view)
binding.run { binding.run {
when (view?.id) { when (view?.id) {
btnId.id, llAgainId.id -> ActivityUtils.startActivity( btnId.id, llAgainId.id -> ActivityUtils.startActivityForResult(
mContext, this@PersonInfoActivity,
AuthPersonActivity::class.java, EditPersonActivity::class.java, 1
Bundle().apply { )
putBoolean(AppConfig.IS_ONLY_SHOW, false)
putString(AppConfig.USER_DETAIL, Gson().toJson(userDetail))
})
llSeeId.id -> ActivityUtils.startActivity( llSeeId.id -> ActivityUtils.startActivity(
mContext, mContext,
AuthPersonActivity::class.java, EditPersonActivity::class.java,
Bundle().apply { Bundle().apply {
putBoolean(AppConfig.IS_ONLY_SHOW, true) putBoolean(AppConfig.IS_ONLY_SHOW, true)
putString(AppConfig.USER_DETAIL, Gson().toJson(userDetail))
}) })
btnDriver.id, llAgainDriver.id -> {} btnDriver.id, llAgainDriver.id -> ActivityUtils.startActivityForResult(
llSeeDriver.id -> {} this@PersonInfoActivity,
EditDriverActivity::class.java, 1
)
btnQua.id, llAgainQua.id -> {} llSeeDriver.id -> ActivityUtils.startActivity(
llSeeQua.id -> {} mContext,
EditDriverActivity::class.java,
Bundle().apply {
putBoolean(AppConfig.IS_ONLY_SHOW, true)
})
btnQua.id, llAgainQua.id -> ActivityUtils.startActivityForResult(
this@PersonInfoActivity,
EditQualificationActivity::class.java, 1
)
llSeeQua.id -> ActivityUtils.startActivity(
mContext,
EditQualificationActivity::class.java,
Bundle().apply {
putBoolean(AppConfig.IS_ONLY_SHOW, true)
})
btnFace.id -> {} btnFace.id -> {}
} }
@ -100,9 +120,9 @@ class PersonInfoActivity : BaseActivity<ActivityPersonInfoBinding>(), View.OnCli
} }
private fun initViewByData(data: UserDetail) { private fun initViewByData(data: UserDetail) {
doneInfoCount = 0
userDetail = data userDetail = data
binding.run { binding.run {
val userInfo = SPUtils.instance.getUserInfo(mContext)
var missInfo = "" var missInfo = ""
if (data.idcardNo.isNullOrEmpty()) { if (data.idcardNo.isNullOrEmpty()) {
@ -127,8 +147,8 @@ class PersonInfoActivity : BaseActivity<ActivityPersonInfoBinding>(), View.OnCli
tvQualiInfo.text = """${data.qualificationCertificateNo}""" tvQualiInfo.text = """${data.qualificationCertificateNo}"""
} }
if (userInfo?.isRealName == "0") { if (data?.isRealName == "0") {
btnFace.text = "未实名认证将无法进行接单" tvFaceInfo.text = "未实名认证将无法进行接单"
missInfo.plus("实名认证缺失") missInfo.plus("实名认证缺失")
} else { } else {
doneInfoCount++ doneInfoCount++
@ -148,10 +168,17 @@ class PersonInfoActivity : BaseActivity<ActivityPersonInfoBinding>(), View.OnCli
if (data.qualificationCertificateNo.isNullOrEmpty()) View.GONE else View.VISIBLE if (data.qualificationCertificateNo.isNullOrEmpty()) View.GONE else View.VISIBLE
btnQua.visibility = btnQua.visibility =
if (data.qualificationCertificateNo.isNullOrEmpty()) View.VISIBLE else View.GONE if (data.qualificationCertificateNo.isNullOrEmpty()) View.VISIBLE else View.GONE
btnFace.visibility = if (userInfo?.isRealName == "0") View.VISIBLE else View.GONE btnFace.visibility = if (data?.isRealName == "0") View.VISIBLE else View.GONE
circleBarView2.progress = doneInfoCount * 100 / 4 circleBarView2.progress = doneInfoCount * 100 / 4
} }
} }
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == RESULT_OK && requestCode == 1) {
initDate()
}
}
} }

View File

@ -1,23 +1,25 @@
package com.dahe.gldriver.ui.waybill.activity package com.dahe.gldriver.ui.waybill.activity
import android.Manifest import android.Manifest
import android.annotation.SuppressLint
import android.graphics.Color import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.view.View
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.Toast import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.amap.api.maps.AMap import com.amap.api.maps.AMap
import com.amap.api.maps.CameraUpdateFactory
import com.amap.api.maps.MapView
import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
import com.amap.api.navi.AmapNaviPage
import com.amap.api.navi.AmapNaviParams
import com.amap.api.navi.AmapNaviType
import com.dahe.gldriver.R import com.dahe.gldriver.R
import com.dahe.gldriver.adapter.WaybillNodeAdapter import com.dahe.gldriver.adapter.WaybillNodeAdapter
import com.dahe.gldriver.base.AppConfig import com.dahe.gldriver.base.AppConfig
import com.dahe.gldriver.bean.OrderDetailBean import com.dahe.gldriver.bean.OrderDetailBean
import com.dahe.gldriver.callback.MyINaviInfoCallback
import com.dahe.gldriver.databinding.ActivityWaybillLoadBinding import com.dahe.gldriver.databinding.ActivityWaybillLoadBinding
import com.dahe.gldriver.event.RefreshEvent
import com.dahe.gldriver.net.BaseObserver import com.dahe.gldriver.net.BaseObserver
import com.dahe.gldriver.net.DataManager import com.dahe.gldriver.net.DataManager
import com.dahe.gldriver.net.RxHttpCallBack import com.dahe.gldriver.net.RxHttpCallBack
@ -31,11 +33,9 @@ import com.dahe.mylibrary.utils.ActivityUtils
import com.dahe.mylibrary.utils.BaseUtils import com.dahe.mylibrary.utils.BaseUtils
import com.dahe.mylibrary.utils.ConvertUtils import com.dahe.mylibrary.utils.ConvertUtils
import com.dahe.mylibrary.utils.LoadingUtils import com.dahe.mylibrary.utils.LoadingUtils
import com.dahe.mylibrary.utils.ToastUtils
import com.permissionx.guolindev.PermissionX import com.permissionx.guolindev.PermissionX
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers import io.reactivex.rxjava3.schedulers.Schedulers
import org.greenrobot.eventbus.EventBus
/** /**
@ -50,11 +50,16 @@ class WaybillLoadActivity : BaseActivity<ActivityWaybillLoadBinding>() {
var orderId: String = "" var orderId: String = ""
lateinit var orderBean: OrderDetailBean lateinit var orderBean: OrderDetailBean
@SuppressLint("SuspiciousIndentation")
override fun initView(savedInstanceState: Bundle?) { override fun initView(savedInstanceState: Bundle?) {
orderId = intent.extras?.getString(AppConfig.ORDER_ID, "").toString() orderId = intent.extras?.getString(AppConfig.ORDER_ID, "").toString()
setStatusHeightParams(binding.rlTop) setStatusHeightParams(binding.rlTop)
setTitleBar("运单详情",true,true,"查看单据"){ setTitleBar("运单详情", true, true, "查看单据") {
ActivityUtils.startActivity(mContext,SeeDocActivity::class.java,Bundle().apply { putString(AppConfig.ORDER_ID,orderId) }) ActivityUtils.startActivity(
mContext,
SeeDocActivity::class.java,
Bundle().apply { putString(AppConfig.ORDER_ID, orderId) })
} }
@ -67,6 +72,16 @@ class WaybillLoadActivity : BaseActivity<ActivityWaybillLoadBinding>() {
aMap = mapView.map.apply { aMap = mapView.map.apply {
uiSettings.run { isZoomControlsEnabled = false } uiSettings.run { isZoomControlsEnabled = false }
} }
llGoStart.setOnClickListener {
if (!::loadPos.isInitialized)
showToast("请等待定位成功")
return@setOnClickListener
AmapNaviPage.getInstance().showRouteActivity(
applicationContext,
AmapNaviParams(null, null, Poi("天安门", loadPos, ""), AmapNaviType.DRIVER),
object : MyINaviInfoCallback() {}
)
}
btnRight.setOnClickListener { btnRight.setOnClickListener {
var data = orderBean.orderChildList.first { it.type == "1" } var data = orderBean.orderChildList.first { it.type == "1" }

View File

@ -1,6 +1,7 @@
package com.dahe.gldriver.ui.waybill.activity package com.dahe.gldriver.ui.waybill.activity
import android.Manifest import android.Manifest
import android.content.res.Resources
import android.graphics.Color import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
@ -10,16 +11,24 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.amap.api.maps.AMap import com.amap.api.maps.AMap
import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
import com.amap.api.navi.AmapNaviPage
import com.amap.api.navi.AmapNaviParams
import com.amap.api.navi.AmapNaviType
import com.amap.api.navi.INaviInfoCallback
import com.amap.api.navi.model.AMapNaviLocation
import com.dahe.gldriver.R import com.dahe.gldriver.R
import com.dahe.gldriver.adapter.WaybillNodeAdapter import com.dahe.gldriver.adapter.WaybillNodeAdapter
import com.dahe.gldriver.base.AppConfig import com.dahe.gldriver.base.AppConfig
import com.dahe.gldriver.bean.OrderDetailBean import com.dahe.gldriver.bean.OrderDetailBean
import com.dahe.gldriver.callback.MyINaviInfoCallback
import com.dahe.gldriver.databinding.ActivityWaybillUnloadBinding import com.dahe.gldriver.databinding.ActivityWaybillUnloadBinding
import com.dahe.gldriver.net.BaseObserver import com.dahe.gldriver.net.BaseObserver
import com.dahe.gldriver.net.DataManager import com.dahe.gldriver.net.DataManager
import com.dahe.gldriver.net.RxHttpCallBack import com.dahe.gldriver.net.RxHttpCallBack
import com.dahe.gldriver.utils.GDLocationUtils import com.dahe.gldriver.utils.GDLocationUtils
import com.dahe.gldriver.utils.LocationUtils import com.dahe.gldriver.utils.LocationUtils
import com.dahe.gldriver.utils.NaviUtils
import com.dahe.gldriver.utils.OrderUtils import com.dahe.gldriver.utils.OrderUtils
import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.base.BaseActivity
import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.net.CommonResponseBean
@ -28,7 +37,6 @@ import com.dahe.mylibrary.utils.ActivityUtils
import com.dahe.mylibrary.utils.BaseUtils import com.dahe.mylibrary.utils.BaseUtils
import com.dahe.mylibrary.utils.ConvertUtils import com.dahe.mylibrary.utils.ConvertUtils
import com.dahe.mylibrary.utils.LoadingUtils import com.dahe.mylibrary.utils.LoadingUtils
import com.dahe.mylibrary.utils.ToastUtils
import com.permissionx.guolindev.PermissionX import com.permissionx.guolindev.PermissionX
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers import io.reactivex.rxjava3.schedulers.Schedulers
@ -47,11 +55,15 @@ class WaybillUnlLoadActivity : BaseActivity<ActivityWaybillUnloadBinding>() {
var orderId: String = "" var orderId: String = ""
var waybillId: String = "" var waybillId: String = ""
lateinit var orderBean: OrderDetailBean lateinit var orderBean: OrderDetailBean
override fun initView(savedInstanceState: Bundle?) { override fun initView(savedInstanceState: Bundle?) {
orderId = intent.extras?.getString(AppConfig.ORDER_ID, "").toString() orderId = intent.extras?.getString(AppConfig.ORDER_ID, "").toString()
setStatusHeightParams(binding.rlTop) setStatusHeightParams(binding.rlTop)
setTitleBar("运单详情",true,true,"查看单据"){ setTitleBar("运单详情", true, true, "查看单据") {
ActivityUtils.startActivity(mContext,SeeDocActivity::class.java,Bundle().apply { putString(AppConfig.ORDER_ID,orderId) }) ActivityUtils.startActivity(
mContext,
SeeDocActivity::class.java,
Bundle().apply { putString(AppConfig.ORDER_ID, orderId) })
} }
initRecy() initRecy()
@ -61,6 +73,15 @@ class WaybillUnlLoadActivity : BaseActivity<ActivityWaybillUnloadBinding>() {
aMap = mapView.map.apply { aMap = mapView.map.apply {
uiSettings.run { isZoomControlsEnabled = false } uiSettings.run { isZoomControlsEnabled = false }
} }
llGoStart.setOnClickListener {
if (!::loadPos.isInitialized) {
showToast("请等待定位成功")
return@setOnClickListener
}
NaviUtils.getInstance().goNextPoint(mContext,loadPos)
}
btnRight.setOnClickListener { btnRight.setOnClickListener {
ActivityUtils.startActivity( ActivityUtils.startActivity(

View File

@ -0,0 +1,40 @@
package com.dahe.gldriver.utils
import android.content.Context
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
import com.amap.api.navi.AmapNaviPage
import com.amap.api.navi.AmapNaviParams
import com.amap.api.navi.AmapNaviType
import com.dahe.gldriver.callback.MyINaviInfoCallback
import com.dahe.mylibrary.base.SingletonNoPHolder
/**
* @ClassName NaviUtils
* @Author john
* @Date 2024/3/22 09:10
* @Description TODO
*/
class NaviUtils private constructor(){
companion object : SingletonNoPHolder<NaviUtils>(::NaviUtils)
fun goNextPoint(context: Context,latLng: LatLng,startName:String = ""){
AmapNaviPage.getInstance().showRouteActivity(
context,
AmapNaviParams(null, null, Poi(startName, latLng, ""), AmapNaviType.DRIVER),
object : MyINaviInfoCallback() {}
)
}
fun getRoute(context: Context,startLatLng: LatLng,endLatLng: LatLng,startName:String = "",endName:String = ""){
val params = AmapNaviParams(
Poi(startName, startLatLng, ""),
null,
Poi(endName, endLatLng, ""),
AmapNaviType.DRIVER
)
params.setUseInnerVoice(true)
AmapNaviPage.getInstance()
.showRouteActivity(context, params, object : MyINaviInfoCallback() {})
}
}

View File

@ -59,11 +59,11 @@ class OcrUtils private constructor() {
// super.onCodeError(mContext, t) // super.onCodeError(mContext, t)
LoadingUtils.instance.dissLoading() LoadingUtils.instance.dissLoading()
if (t.code == 500) { if (t.code == 500) {
if (t.msg.contains("code: 400, The image type does not match the API operation")) { // if (t.msg.contains("code: 400, The image type does not match the API operation")) {
ToastUtils.showToast(mContext, "图片识别失败,请重新上传") ToastUtils.showToast(mContext, "图片识别失败,请重新上传")
} else { // } else {
ToastUtils.showToast(mContext, t.msg) // ToastUtils.showToast(mContext, t.msg)
} // }
} }
} }
})) }))
@ -108,14 +108,14 @@ class OcrUtils private constructor() {
// super.onCodeError(mContext, t) // super.onCodeError(mContext, t)
LoadingUtils.instance.dissLoading() LoadingUtils.instance.dissLoading()
if (t.code == 500) { if (t.code == 500) {
if (t.msg.contains("code: 400, The image type does not match the API operation")) { // if (t.msg.contains("code: 400, The image type does not match the API operation")) {
ToastUtils.showToast( ToastUtils.showToast(
mContext, mContext,
"图片识别失败,请重新上传" "图片识别失败,请重新上传"
) )
} else { // } else {
ToastUtils.showToast(mContext, t.msg) // ToastUtils.showToast(mContext, t.msg)
} // }
} }
} }
}) })
@ -166,14 +166,14 @@ class OcrUtils private constructor() {
// super.onCodeError(mContext, t) // super.onCodeError(mContext, t)
LoadingUtils.instance.dissLoading() LoadingUtils.instance.dissLoading()
if (t.code == 500) { if (t.code == 500) {
if (t.msg.contains("code: 400, The image type does not match the API operation")) { // if (t.msg.contains("code: 400, The image type does not match the API operation")) {
ToastUtils.showToast( ToastUtils.showToast(
mContext, mContext,
"图片识别失败,请重新上传" "图片识别失败,请重新上传"
) )
} else { // } else {
ToastUtils.showToast(mContext, t.msg) // ToastUtils.showToast(mContext, t.msg)
} // }
} }
} }
}) })
@ -222,14 +222,14 @@ class OcrUtils private constructor() {
// super.onCodeError(mContext, t) // super.onCodeError(mContext, t)
LoadingUtils.instance.dissLoading() LoadingUtils.instance.dissLoading()
if (t.code == 500) { if (t.code == 500) {
if (t.msg.contains("code: 400, The image type does not match the API operation")) { // if (t.msg.contains("code: 400, The image type does not match the API operation")) {
ToastUtils.showToast( ToastUtils.showToast(
mContext, mContext,
"图片识别失败,请重新上传" "图片识别失败,请重新上传"
) )
} else { // } else {
ToastUtils.showToast(mContext, t.msg) // ToastUtils.showToast(mContext, t.msg)
} // }
} }
} }
}) })
@ -278,14 +278,14 @@ class OcrUtils private constructor() {
// super.onCodeError(mContext, t) // super.onCodeError(mContext, t)
LoadingUtils.instance.dissLoading() LoadingUtils.instance.dissLoading()
if (t.code == 500) { if (t.code == 500) {
if (t.msg.contains("code: 400, The image type does not match the API operation")) { // if (t.msg.contains("code: 400, The image type does not match the API operation")) {
ToastUtils.showToast( ToastUtils.showToast(
mContext, mContext,
"图片识别失败,请重新上传" "图片识别失败,请重新上传"
) )
} else { // } else {
ToastUtils.showToast(mContext, t.msg) // ToastUtils.showToast(mContext, t.msg)
} // }
} }
} }
}) })

View File

@ -254,6 +254,7 @@
android:background="@color/white"></View> android:background="@color/white"></View>
<LinearLayout <LinearLayout
android:id="@+id/llBtn"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_70" android:layout_height="@dimen/dp_70"
android:background="@color/white" android:background="@color/white"

View File

@ -315,6 +315,7 @@
android:textStyle="bold" /> android:textStyle="bold" />
<LinearLayout <LinearLayout
android:id="@+id/llGoStart"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_centerVertical="true"

View File

@ -253,6 +253,7 @@
android:textStyle="bold" /> android:textStyle="bold" />
<LinearLayout <LinearLayout
android:id="@+id/llGoStart"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_centerVertical="true"

View File

@ -86,7 +86,9 @@ class PopNorBottomPic(
.setCompressEngine(ImageFileCompressEngine()) .setCompressEngine(ImageFileCompressEngine())
.isPreviewImage(true) .isPreviewImage(true)
.isMaxSelectEnabledMask(true) .isMaxSelectEnabledMask(true)
.setMaxSelectNum(1) // .setMaxSelectNum(1)
.setSelectionMode(SelectModeConfig.SINGLE)
.isDirectReturnSingle(true)
.setSelectionMode(SelectModeConfig.SINGLE) .setSelectionMode(SelectModeConfig.SINGLE)
.isGif(false) .isGif(false)
// .isDirectReturnSingle(true) // .isDirectReturnSingle(true)