装卸货优化

This commit is contained in:
lijia 2024-03-07 15:28:35 +08:00
parent cfc9b81650
commit 3023d57680
36 changed files with 598 additions and 216 deletions

View File

@ -137,9 +137,9 @@ dependencies {
implementation project(path: ':mylibrary')
//
implementation 'com.amap.api:map2d:6.0.0'
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'
}

View File

@ -15,7 +15,14 @@
<!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!--用于获取wifi的获取权限wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<!--如果您的应用需要后台定位权限且有可能运行在Android Q设备上,并且设置了target>28必须增加这个权限声明-->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

View File

@ -3,10 +3,13 @@ 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.CarBean
import com.dahe.glex.bean.WayBillBean
import com.dahe.mylibrary.utils.ImageLoader
/**
* @ClassName WaybillAdapter
@ -15,9 +18,17 @@ import com.dahe.glex.bean.WayBillBean
* @Description TODO
*/
class CarsAdapter :
BaseQuickAdapter<WayBillBean, QuickViewHolder>() {
override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: WayBillBean?) {
BaseQuickAdapter<CarBean, QuickViewHolder>() {
override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: CarBean?) {
holder.run {
setText(R.id.tvCarNum, item?.vehicleNum)
setText(R.id.tvCarType, item?.vehicleType)
setText(R.id.tvCarLen, """${item?.carLong}""")
setText(R.id.tvCarWei, """${item?.approvedLoad?.toFloat()?.div(1000)}""")
ImageLoader.getInstance()
.loadRoundImage(context, item?.carUrl, 6, getView<ImageView>(R.id.ivHead))
}
}
override fun onCreateViewHolder(

View File

@ -3,10 +3,13 @@ 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.glex.bean.WayBillBean
import com.dahe.mylibrary.utils.ImageLoader
/**
* @ClassName WaybillAdapter
@ -15,9 +18,18 @@ import com.dahe.glex.bean.WayBillBean
* @Description TODO
*/
class DriversAdapter :
BaseQuickAdapter<WayBillBean, QuickViewHolder>() {
override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: WayBillBean?) {
BaseQuickAdapter<DriverBean, QuickViewHolder>() {
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.tvDays,"""加入${it.diffDay}""")
ImageLoader.getInstance()
.loadRoundImage(context, it.driverAvatar, 6, getView<ImageView>(R.id.ivHead))
}
}
}
override fun onCreateViewHolder(

View File

@ -0,0 +1,22 @@
package com.dahe.gldriver.bean
/**
* @ClassName DriverBean
* @Author john
* @Date 2024/3/6 17:10
* @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
)

View File

@ -21,6 +21,8 @@ data class OrderBean(
val orderId: String= "",
val orderNum: String= "",
val orderStatus: String= "",
val waybillId: String= "",
val orderChildreId: String= "",
val orderType: String= "",
val passingPointsNum: String= "",
val realCompanyName: String= "",

View File

@ -29,6 +29,7 @@ data class OrderDetailBean(
val vehicleLength: String,
val vehicleType: String,
val waybillId: String,
val vehicleNum: String,
val waybillInfo: WaybillInfo
)
@ -92,5 +93,8 @@ data class WaybillInfo(
val trailerVehicleNum: String,
val unloadTime: String,
val vehicleNum: String,
val carLong: String,
val approvedLoad: String,
val vehicleType: String,
val waybillId: String
)

View File

@ -19,7 +19,7 @@ data class UpPicBean(
var province: String= "",
var provinceCityArea: String= "",
var provinceCode: String= "",
var type: String= "",
var type: String= "",//1装货2卸货
var waybillId: String= "",
var waybillPhotoList: MutableList<WaybillPhoto> = mutableListOf<WaybillPhoto>()
)

View File

@ -1,5 +1,7 @@
package com.dahe.glex.bean
import retrofit2.http.GET
/**
* @ClassName UserBean
* @Author 用户
@ -8,6 +10,7 @@ package com.dahe.glex.bean
*/
data class UserBean(
var access_token :String,
var token :String,
var id :String,
var roleId :String,
var uname :String,
@ -24,5 +27,10 @@ data class UserBean(
var isCar :String,
var qrcodeUrl :String,
var expires_in :Int,
var credit :String
var credit :String,
var isCarCaptain :String,
var contactName :String,
var idcardName :String,
var captainId :String
)

View File

@ -1,8 +1,10 @@
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.CarBean
import com.dahe.gldriver.bean.DriverBean
import com.dahe.gldriver.bean.OcrPersonBean
import com.dahe.gldriver.bean.OrderDetailBean
import com.dahe.gldriver.bean.OssBean
@ -145,7 +147,7 @@ interface Api {
fun selectMyWaybillList(
@Query("pageNum") pageNum: Int = 1,
@Query("pageSize") pageSize: Int = 20,
@Query("waybillStatus") waybillStatus: String ="",
@Query("waybillStatus") waybillStatus: String = "",
@Query("searchValue") searchValue: String = ""
): Observable<CommonResponseBean<MutableList<OrderBean>>>
@ -156,12 +158,6 @@ interface Api {
@GET(BASE_URL + "driver/order/detail")
fun orderDetail(@Query("orderId") orderId: String): Observable<CommonResponseBean<OrderDetailBean>>
/**
*
* 车辆列表
* */
@GET(BASE_URL+"driver/car/carList")
fun carList(): Observable<CommonResponseBean<MutableList<CarBean>>>
/**
* 司机接单
@ -184,6 +180,30 @@ interface Api {
@GET(BASE_URL + "driver/driver/setUpDriverRole")
fun setUpDriverRole(@Query("role") role: String): Observable<CommonResponseBean<String>>
/**
*
* 车辆列表
* */
@GET(BASE_URL + "driver/car/carList")
fun carList(): Observable<CommonResponseBean<MutableList<CarBean>>>
/**
*
* 解绑车辆
* */
@POST(BASE_URL + "driver/car/unBindCar")
fun unBindCar(@Body carBean: CarBean): Observable<CommonResponseBean<String>>
/**
* 查询车队所属的司机列表包含车辆
* @return Observable<CommonResponseBean<MutableList<DriverBean>>>
*/
@GET(BASE_URL + "driver/captain/selectDriversInCaptain")
fun selectDriversInCaptain(@Query("captainId") captainId: String): Observable<CommonResponseBean<MutableList<DriverBean>>>
companion object {
// String BASE_URL = "https://tmstest.dahehuoyun.com/";
const val BASE_URL = BuildConfig.BASE_URL

View File

@ -20,13 +20,12 @@ class RequestHeadInterceptor : Interceptor {
@Throws(IOException::class)
override fun intercept(chain: Interceptor.Chain): Response {
val builder: Request.Builder = chain.request().newBuilder()
var tokken = SPUtils.instance.getUserInfo(App.app)?.access_token
if (BaseSPUtils.hasUserInfo(App.app) && !TextUtils.isEmpty(SPUtils.instance.getUserInfo(App.app)?.access_token)) {
if (!TextUtils.isEmpty(SPUtils.instance.getUserToken(App.app))) {
// builder.addHeader("Authorization", SPUtils.getUserInfo(App.getApp()).getToken());
builder.addHeader("Authorization",
"Bearer " + SPUtils.instance.getUserInfo(App.app)?.access_token)
"Bearer " + SPUtils.instance.getUserToken(App.app))
}
val request: Request = builder
.addHeader("versionCode", AppUtils.getAppVersionCode().toString() + "")

View File

@ -26,7 +26,7 @@ class LauncherActivity : BaseActivity<ActivityLauncherBinding>() {
//已登录,直接跳转首页
val userInfo = SPUtils.instance.getUserInfo(mContext)
//
if (userInfo != null && StringUtils.isNotEmpty(userInfo.access_token)) {
if (userInfo != null && StringUtils.isNotEmpty(userInfo.token)) {
ActivityUtils.startActivity(mContext, LoginActivity::class.java, intent.extras)
} else {
ActivityUtils.startActivity(this@LauncherActivity, LoginActivity::class.java)
@ -45,7 +45,7 @@ class LauncherActivity : BaseActivity<ActivityLauncherBinding>() {
//已登录,直接跳转首页
//已登录,直接跳转首页
val userInfo = SPUtils.instance.getUserInfo(mContext)
if (userInfo != null && StringUtils.isNotEmpty(userInfo.access_token)) {
if (userInfo != null && StringUtils.isNotEmpty(userInfo.token)) {
ActivityUtils.startActivity(
mContext,
SelectRoleActivity::class.java,

View File

@ -51,14 +51,17 @@ class CodeLoginActivity : BaseActivity<ActivityCodeBinding>(), View.OnClickListe
// setResult(RESULT_OK, Intent().apply { putExtra(AppConfig.CODE, "2024") })
// finish()
DataManager.getInstance().login(phone, "2024")
.flatMap {
//两个接口token字段名称不一致先进行保存
SPUtils.instance.setUserToken(mContext,it.data.access_token)
DataManager.getInstance().getUserInfo()
}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext, object : RxHttpCallBack<UserBean>() {
override fun onSuccess(t: CommonResponseBean<UserBean>) {
super.onSuccess(t)
SPUtils.instance.setUserInfo(mContext, Gson().toJson(t.data))
ActivityUtils.startActivity(
mContext,
SelectRoleActivity::class.java

View File

@ -52,15 +52,6 @@ class CarTeamActivity : BaseActivity<ActivityCarTeamBinding>() {
// pagerAdapter.addFragment(AllWaybillFragment())
binding.circleBarView.setProgress(30f,1000)
binding.circleBarView2.run {
text = "完成度"
valueText = "10"
unitText= "%"
progress = 20
}
mFragmentContainerHelper.handlePageSelected(0,true)
binding.viewPager.adapter = pagerAdapter

View File

@ -6,14 +6,23 @@ 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.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.ConvertUtils
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
/**
* @ClassName CarsManActivity
@ -22,23 +31,15 @@ import com.dahe.mylibrary.utils.ConvertUtils
* @Description 车辆管理
*/
class CarsManActivity : BaseActivity<ActivityCarsManBinding>() {
lateinit var adapter: CarsAdapter
override fun initView(savedInstanceState: Bundle?) {
setStatusBarColor(R.color.white)
setTitleBar("车辆管理",true)
setTitleBar("车辆管理", true)
var datas = mutableListOf<WayBillBean>(
WayBillBean(),
WayBillBean(),
WayBillBean(),
WayBillBean(),
WayBillBean(),
WayBillBean(),
WayBillBean(),
WayBillBean()
)
var adapter = binding.recycler.run {
adapter = binding.recycler.run {
layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false)
addItemDecoration(
RecycleViewDivider(
@ -49,12 +50,34 @@ class CarsManActivity : BaseActivity<ActivityCarsManBinding>() {
)
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<String>(){
override fun onSuccess(t: CommonResponseBean<String>) {
super.onSuccess(t)
initDate()
}
}))
}
}
}
adapter.submitList(datas)
}
override fun initDate() {
DataManager.getInstance().carList()
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(
BaseObserver(mContext, object : RxHttpCallBack<MutableList<CarBean>>() {
override fun onSuccess(t: CommonResponseBean<MutableList<CarBean>>) {
super.onSuccess(t)
adapter.submitList(t.data)
}
})
)
}
}

View File

@ -29,16 +29,6 @@ class CarsManFragment : BaseFragment<FragmentWaybillListBinding>() {
}
override fun onFragmentFirstVisible() {
var datas = mutableListOf<WayBillBean>(
WayBillBean(),
WayBillBean(),
WayBillBean(),
WayBillBean(),
WayBillBean(),
WayBillBean(),
WayBillBean(),
WayBillBean()
)
var adapter = binding.recyclerView.run {
layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false)
@ -53,6 +43,5 @@ class CarsManFragment : BaseFragment<FragmentWaybillListBinding>() {
adapter as CarsAdapter
}
adapter.submitList(datas)
}
}

View File

@ -10,13 +10,21 @@ 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.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.utils.SPUtils
import com.dahe.glex.bean.WayBillBean
import com.dahe.mylibrary.base.BaseActivity
import com.dahe.mylibrary.base.BaseFragment
import com.dahe.mylibrary.net.CommonResponseBean
import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider
import com.dahe.mylibrary.utils.ConvertUtils
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
/**
* @ClassName CarsManActivity
@ -26,22 +34,12 @@ import com.dahe.mylibrary.utils.ConvertUtils
*/
class DriversManFragment : BaseFragment<FragmentWaybillListBinding>() {
lateinit var adapter : DriversAdapter
override fun onFragmentVisibleChange(isVisible: Boolean) {
}
override fun onFragmentFirstVisible() {
var datas = mutableListOf<WayBillBean>(
WayBillBean(),
WayBillBean(),
WayBillBean(),
WayBillBean(),
WayBillBean(),
WayBillBean(),
WayBillBean(),
WayBillBean()
)
var adapter = binding.recyclerView.run {
adapter = binding.recyclerView.run {
layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false)
addItemDecoration(
RecycleViewDivider(
@ -54,6 +52,18 @@ class DriversManFragment : BaseFragment<FragmentWaybillListBinding>() {
adapter as DriversAdapter
}
adapter.submitList(datas)
initData()
}
private fun initData(){
DataManager.getInstance().selectDriversInCaptain(SPUtils.instance.getUserInfo(mContext)!!.captainId)
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext,object : RxHttpCallBack<MutableList<DriverBean>>(){
override fun onSuccess(t: CommonResponseBean<MutableList<DriverBean>>) {
super.onSuccess(t)
adapter.submitList(t.data)
}
}))
}
}

View File

@ -8,21 +8,18 @@ import android.widget.LinearLayout
import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.amap.api.maps2d.model.LatLng
import com.amap.api.maps.model.LatLng
import com.dahe.gldriver.R
import com.dahe.gldriver.adapter.WaybillAdapter
import com.dahe.gldriver.adapter.WaybillNodeAdapter
import com.dahe.gldriver.base.AppConfig
import com.dahe.gldriver.bean.OrderDetailBean
import com.dahe.gldriver.databinding.ActivityWaybillDetailBinding
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.utils.GDLocationUtils
import com.dahe.gldriver.utils.LocationUtils
import com.dahe.gldriver.utils.OrderUtils
import com.dahe.glex.bean.OrderBean
import com.dahe.mylibrary.base.BaseActivity
import com.dahe.mylibrary.net.CommonResponseBean
import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider
@ -34,7 +31,6 @@ import com.dahe.mylibrary.utils.SelectPicUtils
import com.permissionx.guolindev.PermissionX
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
import org.greenrobot.eventbus.EventBus
/**
* @ClassName WaybillDetailActivity

View File

@ -8,7 +8,10 @@ import android.widget.LinearLayout
import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.amap.api.maps2d.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.dahe.gldriver.R
import com.dahe.gldriver.adapter.WaybillNodeAdapter
import com.dahe.gldriver.base.AppConfig
@ -18,12 +21,15 @@ import com.dahe.gldriver.net.BaseObserver
import com.dahe.gldriver.net.DataManager
import com.dahe.gldriver.net.RxHttpCallBack
import com.dahe.gldriver.utils.GDLocationUtils
import com.dahe.gldriver.utils.LocationUtils
import com.dahe.gldriver.utils.OrderUtils
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.BaseUtils
import com.dahe.mylibrary.utils.ConvertUtils
import com.dahe.mylibrary.utils.LoadingUtils
import com.dahe.mylibrary.utils.ToastUtils
import com.permissionx.guolindev.PermissionX
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
@ -38,7 +44,7 @@ import io.reactivex.rxjava3.schedulers.Schedulers
*/
class WaybillLoadActivity : BaseActivity<ActivityWaybillLoadBinding>() {
var aMap: AMap? = null
lateinit var aMap: AMap
var orderId: String = ""
lateinit var orderBean: OrderDetailBean
@ -48,13 +54,16 @@ class WaybillLoadActivity : BaseActivity<ActivityWaybillLoadBinding>() {
ToastUtils.showToast(mContext, "查看单据")
}
orderId = intent.extras?.getString(AppConfig.ORDER_ID,"").toString()
orderId = intent.extras?.getString(AppConfig.ORDER_ID, "").toString()
initRecy()
getLocation()
binding.run {
mapView.onCreate(savedInstanceState)
if (aMap == null) mapView.map
aMap = mapView.map.apply {
uiSettings.run { isZoomControlsEnabled = false }
}
btnRight.setOnClickListener {
var data = orderBean.orderChildList.first { it.type == "1" }
@ -63,9 +72,9 @@ class WaybillLoadActivity : BaseActivity<ActivityWaybillLoadBinding>() {
WaybillUpPicActivity::class.java,
Bundle().apply {
putInt(AppConfig.SUCCESS_TYPE, 1)
putString(AppConfig.ORDER_ID,orderId)
putString(AppConfig.WAYBILL_ID,orderBean.waybillId)
putString(AppConfig.CHILDRE_ID,data.orderChildreId)
putString(AppConfig.ORDER_ID, orderId)
putString(AppConfig.WAYBILL_ID, orderBean.waybillId)
putString(AppConfig.CHILDRE_ID, data.orderChildreId)
})
}
}
@ -79,14 +88,47 @@ class WaybillLoadActivity : BaseActivity<ActivityWaybillLoadBinding>() {
override fun onSuccess(t: CommonResponseBean<OrderDetailBean>) {
super.onSuccess(t)
orderBean = t.data
val load = orderBean.orderChildList.first { it.type == "1" }
var distance = ""
loadPos = LatLng(load.latitude.toDouble(), load.longitude.toDouble())
LocationUtils.getInstance().changeCamera(loadPos, aMap!!)
if (::gdLatLng.isInitialized) {
distance = LocationUtils.getInstance().getDistance(
gdLatLng,
loadPos
) + "km"
}
var goods =
t.data.goodsList.map { """${it.goodName},${it.goodItemGrossWeight}吨,${if (it.goodCube.isNullOrEmpty()) "" else it.goodCube + "方"}""" }
.reduce { acc, s ->
"""${acc}
|${s}""".trimMargin()
}
binding.run {
tvWaybillNum.text = """运单号:${orderBean.orderNum}"""
tvWaybillStatu.text =
OrderUtils.getInstance().getOrderStatu(orderBean.orderStatus)
tvTime.text = orderBean.receiverDeadline
tvComName.text = orderBean.realCompanyName//货主
tvCarNum.text = orderBean.waybillInfo.vehicleNum
tvCarLen.text =
"""${orderBean.waybillInfo.carLong}mm/${orderBean.waybillInfo.approvedLoad}"""
tvCarType.text = orderBean.vehicleType//车辆类型
if (!distance.isNullOrEmpty()) tvLoadDis.text = distance
tvUnloadDis.text = orderBean.distance + "km"
tvType.text = if (orderBean.orderType == "0") "一装一卸" else "一装多卸"
tvCom.text = orderBean?.receiverBusinessName
tvCom.text = orderBean?.receiverBusinessName//收货方
tvFreight.text = orderBean?.driverFreight.toString()
tvCarInfo.text = """${t.data.vehicleLength} ${t.data.vehicleType}"""
tvGoods.text = goods
if (!t.data.requirement.isNullOrEmpty()) tvRemark.text = t.data.requirement
btnLeft.setOnClickListener {
PermissionX.init(this@WaybillLoadActivity)
.permissions(Manifest.permission.CALL_PHONE)
@ -132,10 +174,7 @@ class WaybillLoadActivity : BaseActivity<ActivityWaybillLoadBinding>() {
}
override fun onDestroy() {
if (binding.mapView != null)
binding.mapView.onDestroy();
super.onDestroy()
}
var adapter: WaybillNodeAdapter? = null
@ -165,4 +204,31 @@ class WaybillLoadActivity : BaseActivity<ActivityWaybillLoadBinding>() {
}
}
lateinit var gdLatLng: LatLng
lateinit var loadPos: LatLng
fun getLocation() {
GDLocationUtils.instance.getLocation(mContext) {
//errCode等于0代表定位成功其他的为定位失败具体的可以参照官网定位错误码说明
runOnUiThread {
LoadingUtils.instance.dissLoading()
if (it.getErrorCode() == 0) {
it.getLongitude()//经 度
it.getLatitude()//纬 度
gdLatLng = LatLng(it.latitude, it.longitude)
if (::loadPos.isInitialized) {
var distance = LocationUtils.getInstance().getDistance(
gdLatLng,
loadPos
) + "km"
binding.tvLoadDis.text = distance
}
} else {
showToast("定位失败,请检查定位权限是否开启")
}
}
}
}
}

View File

@ -4,10 +4,12 @@ import android.os.Bundle
import com.dahe.gldriver.R
import com.dahe.gldriver.base.AppConfig
import com.dahe.gldriver.databinding.ActivityWaybillSuccBinding
import com.dahe.gldriver.ui.HomeActivity
import com.dahe.mylibrary.base.BaseActivity
import com.dahe.mylibrary.utils.ActivityUtils
import com.dahe.mylibrary.utils.AppUtils
import com.dahe.mylibrary.utils.BaseUtils
import com.dahe.mylibrary.utils.TimeUtil
import com.dahe.mylibrary.utils.ToastUtils
/**
@ -20,7 +22,7 @@ class WaybillSuccActivity : BaseActivity<ActivityWaybillSuccBinding>() {
override fun initView(savedInstanceState: Bundle?) {
setStatusBarColor(R.color.white)
val type = intent.extras?.getInt(AppConfig.SUCCESS_TYPE)
setTitleBar("接单成功", true)
setTitleBar(if (type==0) "接单成功" else if (type==1) "装货成功" else "卸货成功", true)
changeType(type)
binding.run {
btnLeft.setOnClickListener {
@ -29,6 +31,8 @@ class WaybillSuccActivity : BaseActivity<ActivityWaybillSuccBinding>() {
btnRight.setOnClickListener {
goLeftOrRight(type,false)
}
tvTime.text = TimeUtil.getNowString("")
}
}
@ -81,7 +85,7 @@ class WaybillSuccActivity : BaseActivity<ActivityWaybillSuccBinding>() {
if (isLeft){
when(type){
0->ActivityUtils.startActivity(mContext, WaybillLoadActivity::class.java)
1,2->ActivityUtils.startHomeActivity(mContext)
1,2->ActivityUtils.finishToActivity(HomeActivity::class.java,false)
}
}else{
when(type){

View File

@ -8,22 +8,26 @@ import android.widget.LinearLayout
import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.amap.api.maps2d.AMap
import com.amap.api.maps.AMap
import com.amap.api.maps.model.LatLng
import com.dahe.gldriver.R
import com.dahe.gldriver.adapter.WaybillNodeAdapter
import com.dahe.gldriver.base.AppConfig
import com.dahe.gldriver.bean.OrderDetailBean
import com.dahe.gldriver.databinding.ActivityWaybillLoadBinding
import com.dahe.gldriver.databinding.ActivityWaybillUnloadBinding
import com.dahe.gldriver.net.BaseObserver
import com.dahe.gldriver.net.DataManager
import com.dahe.gldriver.net.RxHttpCallBack
import com.dahe.gldriver.utils.GDLocationUtils
import com.dahe.gldriver.utils.LocationUtils
import com.dahe.gldriver.utils.OrderUtils
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.BaseUtils
import com.dahe.mylibrary.utils.ConvertUtils
import com.dahe.mylibrary.utils.LoadingUtils
import com.dahe.mylibrary.utils.ToastUtils
import com.permissionx.guolindev.PermissionX
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
@ -37,7 +41,7 @@ import io.reactivex.rxjava3.schedulers.Schedulers
*/
class WaybillUnlLoadActivity : BaseActivity<ActivityWaybillUnloadBinding>() {
var aMap: AMap? = null
lateinit var aMap: AMap
var orderId: String = ""
@ -50,12 +54,14 @@ class WaybillUnlLoadActivity : BaseActivity<ActivityWaybillUnloadBinding>() {
}
orderId = intent.extras?.getString(AppConfig.ORDER_ID, "").toString()
initRecy()
getLocation()
binding.run {
mapView.onCreate(savedInstanceState)
if (aMap == null) mapView.map
aMap = mapView.map.apply {
uiSettings.run { isZoomControlsEnabled = false }
}
btnRight.setOnClickListener {
var data = orderBean.orderChildList.first { it.type == "2" }
ActivityUtils.startActivity(
mContext,
WaybillUpPicActivity::class.java,
@ -63,7 +69,6 @@ class WaybillUnlLoadActivity : BaseActivity<ActivityWaybillUnloadBinding>() {
putInt(AppConfig.SUCCESS_TYPE, 2)
putString(AppConfig.ORDER_ID, orderId)
putString(AppConfig.WAYBILL_ID, orderBean.waybillId)
putString(AppConfig.CHILDRE_ID, data.orderChildreId)
})
}
}
@ -77,14 +82,47 @@ class WaybillUnlLoadActivity : BaseActivity<ActivityWaybillUnloadBinding>() {
override fun onSuccess(t: CommonResponseBean<OrderDetailBean>) {
super.onSuccess(t)
orderBean = t.data
val load = orderBean.orderChildList.first { it.type == "1" }
var distance = ""
loadPos = LatLng(load.latitude.toDouble(), load.longitude.toDouble())
LocationUtils.getInstance().changeCamera(loadPos, aMap!!)
if (::gdLatLng.isInitialized) {
distance = LocationUtils.getInstance().getDistance(
gdLatLng,
loadPos
) + "km"
}
var goods =
t.data.goodsList.map { """${it.goodName},${it.goodItemGrossWeight}吨,${if (it.goodCube.isNullOrEmpty()) "" else it.goodCube + "方"}""" }
.reduce { acc, s ->
"""${acc}
|${s}""".trimMargin()
}
binding.run {
tvWaybillNum.text = """运单号:${orderBean.orderNum}"""
tvWaybillStatu.text =
OrderUtils.getInstance().getOrderStatu(orderBean.orderStatus)
tvTime.text = orderBean.receiverDeadline
tvComName.text = orderBean.realCompanyName//货主
tvCarNum.text = orderBean.waybillInfo.vehicleNum
tvCarLen.text =
"""${orderBean.waybillInfo.carLong}mm/${orderBean.waybillInfo.approvedLoad}"""
tvCarType.text = orderBean.vehicleType//车辆类型
if (!distance.isNullOrEmpty()) tvLoadDis.text = distance
tvUnloadDis.text = orderBean.distance + "km"
tvType.text = if (orderBean.orderType == "0") "一装一卸" else "一装多卸"
tvCom.text = orderBean?.receiverBusinessName
tvCom.text = orderBean?.receiverBusinessName//收货方
tvFreight.text = orderBean?.driverFreight.toString()
tvCarInfo.text = """${t.data.vehicleLength} ${t.data.vehicleType}"""
tvGoods.text = goods
if (!t.data.requirement.isNullOrEmpty()) tvRemark.text = t.data.requirement
btnLeft.setOnClickListener {
PermissionX.init(this@WaybillUnlLoadActivity)
.permissions(Manifest.permission.CALL_PHONE)
@ -157,12 +195,30 @@ class WaybillUnlLoadActivity : BaseActivity<ActivityWaybillUnloadBinding>() {
binding.mapView.onSaveInstanceState(outState);
}
override fun onDestroy() {
if (binding.mapView != null)
binding.mapView.onDestroy();
super.onDestroy()
lateinit var gdLatLng: LatLng
lateinit var loadPos: LatLng
fun getLocation() {
GDLocationUtils.instance.getLocation(mContext) {
//errCode等于0代表定位成功其他的为定位失败具体的可以参照官网定位错误码说明
runOnUiThread {
LoadingUtils.instance.dissLoading()
if (it.getErrorCode() == 0) {
it.getLongitude()//经 度
it.getLatitude()//纬 度
gdLatLng = LatLng(it.latitude, it.longitude)
if (::loadPos.isInitialized) {
var distance = LocationUtils.getInstance().getDistance(
gdLatLng,
loadPos
) + "km"
binding.tvLoadDis.text = distance
}
} else {
showToast("定位失败,请检查定位权限是否开启")
}
}
}
}
}

View File

@ -3,7 +3,7 @@ package com.dahe.gldriver.ui.waybill.activity
import android.os.Bundle
import android.view.View
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps2d.model.LatLng
import com.amap.api.maps.model.LatLng
import com.dahe.gldriver.base.AppConfig
import com.dahe.gldriver.bean.UpPicBean
import com.dahe.gldriver.bean.WaybillPhoto
@ -112,7 +112,6 @@ class WaybillUpPicActivity : BaseActivity<ActivityWaybillUppicBinding>() {
}
//回单处理
recyclerView2.run {
layoutManager =
@ -133,14 +132,14 @@ class WaybillUpPicActivity : BaseActivity<ActivityWaybillUppicBinding>() {
override fun openPicture() {
PopsUtils.getInstance().showSelPic(mContext, myAdapter) {
OssServiceUtil.getInstance().run {
asyncPutImage(it[0].realPath, this@WaybillUpPicActivity)
setResultCallBack { data, oldPath ->
picBean = WaybillPhoto()
picBean.run {
photoUrl = oldPath
receiptType = if (type == 1) "4" else if (type == 2) "5" else "6"
receiptType =
if (type == 1) "4" else if (type == 2) "5" else "6"
this.type = "3"
}
upBean.waybillPhotoList.add(picBean)
@ -163,31 +162,35 @@ class WaybillUpPicActivity : BaseActivity<ActivityWaybillUppicBinding>() {
waybillId = this@WaybillUpPicActivity.waybillId
latitude = latLng.latitude.toString()
longitude = latLng.longitude.toString()
orderChildreId = this@WaybillUpPicActivity.childreId
// orderChildreId = this@WaybillUpPicActivity.childreId
this.type = if (type == 1) "1" else "2"
}
if (type==2){
if (upBean.waybillPhotoList.find { it.receiptType == "4" || it.receiptType == "5" } == null) {
showToast("卸货请上传卸货回单照片")
return@setOnClickListener
}
}
DataManager.getInstance().driverLoadOrUnload(upBean)
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext, object : RxHttpCallBack<String>() {
override fun onSuccess(t: CommonResponseBean<String>) {
super.onSuccess(t)
if (1 == type) {
ActivityUtils.startActivity(
mContext,
WaybillSuccActivity::class.java,
Bundle().apply { putInt(AppConfig.SUCCESS_TYPE, 1) })
} else {
ActivityUtils.startActivity(
mContext,
WaybillSuccActivity::class.java,
Bundle().apply { putInt(AppConfig.SUCCESS_TYPE, 2) })
}
}
}))
if (1 == type) {
ActivityUtils.startActivity(
mContext,
WaybillSuccActivity::class.java,
Bundle().apply { putInt(AppConfig.SUCCESS_TYPE, 1) })
} else {
ActivityUtils.startActivity(
mContext,
WaybillSuccActivity::class.java,
Bundle().apply { putInt(AppConfig.SUCCESS_TYPE, 2) })
}
}
}
}
@ -200,7 +203,7 @@ class WaybillUpPicActivity : BaseActivity<ActivityWaybillUppicBinding>() {
fun getLocation() {
LoadingUtils.instance.showLoading(this,"定位中,请稍等...")
LoadingUtils.instance.showLoading(this, "定位中,请稍等...")
GDLocationUtils.instance.getLocation(this@WaybillUpPicActivity) {
//errCode等于0代表定位成功其他的为定位失败具体的可以参照官网定位错误码说明
runOnUiThread {

View File

@ -2,17 +2,23 @@ package com.dahe.gldriver.ui.waybill.fragment
import android.content.Context
import android.graphics.Color
import android.os.Bundle
import android.widget.LinearLayout
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter4.BaseQuickAdapter
import com.dahe.gldriver.R
import com.dahe.gldriver.adapter.WaybillListAdapter
import com.dahe.gldriver.base.AppConfig
import com.dahe.gldriver.callback.OnSearchListener
import com.dahe.gldriver.databinding.FragmentWaybillBinding
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.activity.CarsManActivity
import com.dahe.gldriver.ui.waybill.activity.WaybillLoadActivity
import com.dahe.gldriver.ui.waybill.activity.WaybillUpPicActivity
import com.dahe.gldriver.utils.OrderUtils
import com.dahe.glex.bean.OrderBean
import com.dahe.glex.bean.WayBillBean
@ -20,6 +26,7 @@ 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,7 +37,8 @@ import io.reactivex.rxjava3.schedulers.Schedulers
* @Date 2024/1/24 14:06
* @Description 待装货
*/
class WaitLoadFragment : BaseFragment<FragmentWaybillListBinding>(), RefreshCallBack , OnSearchListener {
class WaitLoadFragment : BaseFragment<FragmentWaybillListBinding>(), RefreshCallBack,
OnSearchListener {
lateinit var adapter: WaybillListAdapter
@ -54,6 +62,29 @@ class WaitLoadFragment : BaseFragment<FragmentWaybillListBinding>(), RefreshCall
adapter = WaybillListAdapter()// 打开空布局功能
(adapter as WaybillListAdapter).isStateViewEnable = true
adapter as WaybillListAdapter
}.apply {
setOnItemClickListener() { adapter, view, position ->
//装货页面
ActivityUtils.startActivity(context,
WaybillLoadActivity::class.java,
Bundle().apply {
putString(AppConfig.ORDER_ID, items[position].orderId)
}
)
}
addOnItemChildClickListener(R.id.btnOk) { _, _, position ->
val orderBean = items[position]
ActivityUtils.startActivity(
mContext,
WaybillUpPicActivity::class.java,
Bundle().apply {
putInt(AppConfig.SUCCESS_TYPE, 1)
putString(AppConfig.ORDER_ID, orderBean.orderId)
putString(AppConfig.WAYBILL_ID, orderBean.waybillId)
// putString(AppConfig.CHILDRE_ID, orderBean.orderChildreId)
})
}
}
}
initData()
@ -68,16 +99,16 @@ class WaitLoadFragment : BaseFragment<FragmentWaybillListBinding>(), RefreshCall
}
private fun initData(search: String = "") {
DataManager.getInstance().selectMyWaybillList(mRefreshPage,mRefreshCount,"102040",search)
DataManager.getInstance().selectMyWaybillList(mRefreshPage, mRefreshCount, "102040", search)
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext, object : RxHttpCallBack<MutableList<OrderBean>>() {
override fun onSuccess(t: CommonResponseBean<MutableList<OrderBean>>) {
super.onSuccess(t)
if (mRefreshPage === 1) {
if (t.data.size==0){
if (t.data.size == 0) {
adapter.submitList(null)
adapter.setStateViewLayout(mContext, R.layout.empty_view)
}else{
} else {
adapter?.submitList(t.data)
}
} else {
@ -89,7 +120,10 @@ class WaitLoadFragment : BaseFragment<FragmentWaybillListBinding>(), RefreshCall
)
}
override fun onCodeError(mContext: Context?, t: CommonResponseBean<MutableList<OrderBean>>) {
override fun onCodeError(
mContext: Context?,
t: CommonResponseBean<MutableList<OrderBean>>
) {
super.onCodeError(mContext, t)
setFinishRefresh(
binding.refresh,

View File

@ -2,17 +2,22 @@ package com.dahe.gldriver.ui.waybill.fragment
import android.content.Context
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.WaybillListAdapter
import com.dahe.gldriver.base.AppConfig
import com.dahe.gldriver.callback.OnSearchListener
import com.dahe.gldriver.databinding.FragmentWaybillBinding
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.waybill.activity.WaybillLoadActivity
import com.dahe.gldriver.ui.waybill.activity.WaybillUnlLoadActivity
import com.dahe.gldriver.ui.waybill.activity.WaybillUpPicActivity
import com.dahe.gldriver.utils.OrderUtils
import com.dahe.glex.bean.OrderBean
import com.dahe.glex.bean.WayBillBean
@ -20,6 +25,7 @@ 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
@ -56,6 +62,28 @@ class WaitUnLoadFragment : BaseFragment<FragmentWaybillListBinding>(), RefreshCa
// 打开空布局功能
(adapter as WaybillListAdapter).isStateViewEnable = true
adapter as WaybillListAdapter
}.apply {
setOnItemClickListener() { adapter, view, position ->
//装货页面
ActivityUtils.startActivity(context,
WaybillUnlLoadActivity::class.java,
Bundle().apply {
putString(AppConfig.ORDER_ID, items[position].orderId)
}
)
}
addOnItemChildClickListener(R.id.btnOk) { _, _, position ->
val orderBean = items[position]
ActivityUtils.startActivity(
mContext,
WaybillUpPicActivity::class.java,
Bundle().apply {
putInt(AppConfig.SUCCESS_TYPE, 2)
putString(AppConfig.ORDER_ID, orderBean.orderId)
putString(AppConfig.WAYBILL_ID, orderBean.waybillId)
})
}
}
}
initData()

View File

@ -6,6 +6,7 @@ import com.dahe.gldriver.mypop.OnCarSelectListener
import com.dahe.gldriver.mypop.PopBottomCar
import com.dahe.mylibrary.base.SingletonNoPHolder
import com.lxj.xpopup.XPopup
import com.lxj.xpopup.interfaces.OnCancelListener
import com.lxj.xpopup.interfaces.OnConfirmListener
/**
@ -46,4 +47,22 @@ class CommonPopUtils private constructor() {
}
/**
*
* @param context Context
* @param title String
* @param content String
* @param listener OnConfirmListener
*/
fun showCommCenterPop(context: Context,title:String = "提示" ,content: String,listener: OnConfirmListener) {
XPopup.Builder(context)
.isDestroyOnDismiss(true)
.asConfirm(
title, content,
"取消", "确定",
listener, null, false
)
.show()
}
}

View File

@ -1,7 +1,13 @@
package com.dahe.gldriver.utils
import com.amap.api.maps2d.AMapException
import com.amap.api.maps2d.model.LatLng
import com.amap.api.maps.AMap
import com.amap.api.maps.AMapException
import com.amap.api.maps.CameraUpdateFactory
import com.amap.api.maps.model.BitmapDescriptorFactory
import com.amap.api.maps.model.CameraPosition
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.MarkerOptions
import com.dahe.gldriver.R
import com.dahe.mylibrary.base.SingletonNoPHolder
/**
@ -64,4 +70,15 @@ class LocationUtils private constructor() {
}
}
}
fun changeCamera(latLng: LatLng,aMap: AMap){
aMap.moveCamera(CameraUpdateFactory.newCameraPosition(CameraPosition(latLng,12f,30f,30f)))
aMap.clear()
aMap.addMarker(
MarkerOptions().position(latLng)
.icon(
BitmapDescriptorFactory.fromResource(R.drawable.icon_loca_load)
)
)
}
}

View File

@ -12,7 +12,7 @@ import com.dahe.mylibrary.utils.BaseSPUtils
* @Description TODO
*/
class SPUtils private constructor() : BaseSPUtils() {
companion object{
companion object {
val instance = Holder.holder
}
@ -37,10 +37,26 @@ class SPUtils private constructor() : BaseSPUtils() {
*/
fun getUserInfo(context: Context?): UserBean? {
return JsonUtils.getInstance()
.fromJson(BaseSPUtils.get(context, BaseSPUtils.USER_INFO_KEY, "") as String,
UserBean::class.java)
.fromJson(
BaseSPUtils.get(context, BaseSPUtils.USER_INFO_KEY, "") as String,
UserBean::class.java
)
}
fun setUserToken(context: Context?, token: String) {
put(context, USER_TOKEN_KEY, token)
}
fun getUserToken(context: Context?): String {
return get(context, USER_TOKEN_KEY, "") as String
}
fun removeUserToken(context: Context?) {
remove(context, USER_TOKEN_KEY)
}
/**
* 存服务器类型
*
@ -72,8 +88,10 @@ class SPUtils private constructor() : BaseSPUtils() {
fun getSearchCache(context: Context?): String? {
return JsonUtils.getInstance()
.fromJson(BaseSPUtils.get(context, BaseSPUtils.SEARRH_CACHE, "") as String,
String::class.java)
.fromJson(
BaseSPUtils.get(context, BaseSPUtils.SEARRH_CACHE, "") as String,
String::class.java
)
}
fun removeSearchCache(context: Context?) {
@ -89,8 +107,10 @@ class SPUtils private constructor() : BaseSPUtils() {
fun getNaviPreferenceCache(context: Context?): String? {
return JsonUtils.getInstance()
.fromJson(BaseSPUtils.get(context, BaseSPUtils.NAVI_PH_EDIT_CACHE, "") as String,
String::class.java)
.fromJson(
BaseSPUtils.get(context, BaseSPUtils.NAVI_PH_EDIT_CACHE, "") as String,
String::class.java
)
}
fun removeNaviPreference(context: Context?) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

@ -21,19 +21,6 @@
android:layout_marginTop="@dimen/dp_100"
android:orientation="vertical">
<com.dahe.mylibrary.weight.CircleBarView
android:id="@+id/circleBarView"
android:layout_width="300dp"
android:layout_height="@dimen/dp_150"
app:progress_color1="@color/red"
/>
<com.dahe.mylibrary.weight.CircleBarView2
android:id="@+id/circleBarView2"
android:layout_width="300dp"
android:layout_height="@dimen/dp_150"
/>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"

View File

@ -16,7 +16,7 @@
<include layout="@layout/common_toolbar"></include>
</RelativeLayout>
<com.amap.api.maps2d.MapView
<com.amap.api.maps.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_200" />
@ -54,6 +54,7 @@
<TextView
android:id="@+id/tvWaybillNum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="运单号DJHS15541125541"
@ -61,6 +62,7 @@
android:textSize="@dimen/sp_15" />
<TextView
android:id="@+id/tvWaybillStatu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
@ -76,6 +78,7 @@
android:background="@drawable/head_defaut" />
<TextView
android:id="@+id/tvComName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
@ -120,40 +123,47 @@
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="@dimen/dp_8">
<RelativeLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="horizontal"
android:padding="@dimen/dp_16">
<TextView
android:layout_weight="1"
android:id="@+id/tvCarNum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="豫A87SF9"
android:gravity="left"
android:textColor="@color/black"
android:textSize="@dimen/sp_17"
android:textStyle="bold" />
<TextView
android:layout_weight="1"
android:id="@+id/tvCarLen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:text="16米/30吨"
android:textColor="@color/color_01"
android:textSize="@dimen/sp_14" />
<TextView
android:layout_weight="1"
android:id="@+id/tvCarType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:gravity="center"
android:text="重型栏板半挂车"
android:textColor="@color/color_01"
android:textSize="@dimen/sp_14" />
</RelativeLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
@ -463,13 +473,14 @@
android:textSize="@dimen/sp_15" />
<TextView
android:id="@+id/tvCarInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/tvCarTitle"
android:layout_alignParentRight="true"
android:layout_marginTop="@dimen/dp_40"
android:paddingRight="@dimen/dp_16"
android:text="整车 4.2/6.2/6.8 米 高栏/厢式"
android:text="4.2/6.2/6.8 米 高栏/厢式"
android:textColor="@color/main_red"
android:textSize="@dimen/sp_15" />
@ -485,6 +496,7 @@
android:textSize="@dimen/sp_15" />
<TextView
android:id="@+id/tvGoods"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/tvGoodsTitle"
@ -507,6 +519,7 @@
android:textSize="@dimen/sp_15" />
<TextView
android:id="@+id/tvRemark"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/tvNotesTitle"

View File

@ -16,7 +16,7 @@
<include layout="@layout/common_toolbar"></include>
</RelativeLayout>
<com.amap.api.maps2d.MapView
<com.amap.api.maps.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_200" />
@ -54,6 +54,7 @@
<TextView
android:id="@+id/tvWaybillNum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="运单号DJHS15541125541"
@ -61,6 +62,7 @@
android:textSize="@dimen/sp_15" />
<TextView
android:id="@+id/tvWaybillStatu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
@ -76,6 +78,7 @@
android:background="@drawable/head_defaut" />
<TextView
android:id="@+id/tvComName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
@ -120,40 +123,47 @@
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="@dimen/dp_8">
<RelativeLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="horizontal"
android:padding="@dimen/dp_16">
<TextView
android:layout_weight="1"
android:id="@+id/tvCarNum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="豫A87SF9"
android:gravity="left"
android:textColor="@color/black"
android:textSize="@dimen/sp_17"
android:textStyle="bold" />
<TextView
android:layout_weight="1"
android:id="@+id/tvCarLen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:text="16米/30吨"
android:textColor="@color/color_01"
android:textSize="@dimen/sp_14" />
<TextView
android:layout_weight="1"
android:id="@+id/tvCarType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:gravity="center"
android:text="重型栏板半挂车"
android:textColor="@color/color_01"
android:textSize="@dimen/sp_14" />
</RelativeLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
@ -400,6 +410,7 @@
android:textSize="@dimen/sp_15" />
<TextView
android:id="@+id/tvCarInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/tvCarTitle"
@ -422,6 +433,7 @@
android:textSize="@dimen/sp_15" />
<TextView
android:id="@+id/tvGoods"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/tvGoodsTitle"
@ -444,6 +456,7 @@
android:textSize="@dimen/sp_15" />
<TextView
android:id="@+id/tvRemark"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/tvNotesTitle"

View File

@ -17,57 +17,69 @@
android:orientation="horizontal">
<ImageView
android:id="@+id/ivHead"
android:layout_width="@dimen/dp_76"
android:layout_height="@dimen/dp_55"
android:background="@drawable/login_car"
/>
android:background="@drawable/login_car" />
<RelativeLayout
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/dp_16"
android:layout_weight="1">
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/tvCarNum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="豫A4982S"
android:textColor="@color/black"
android:textSize="@dimen/sp_18" />
<TextView
android:id="@+id/tvCarType"
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginTop="@dimen/dp_6"
android:text="重型半挂牵引车"
android:textColor="@color/color_9"
android:textSize="@dimen/sp_12" />
android:orientation="horizontal">
<TextView
android:id="@+id/tvCarLen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginLeft="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_6"
android:layout_toRightOf="@+id/tvCarType"
android:text="16米"
android:textColor="@color/color_9"
android:textSize="@dimen/sp_12" />
<TextView
android:id="@+id/tvCarType"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.5"
android:maxLines="1"
android:singleLine="true"
android:text="重型半挂牵引车"
android:textColor="@color/color_9"
android:textSize="@dimen/sp_12" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginLeft="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_6"
android:layout_toRightOf="@+id/tvCarLen"
android:text="30顿"
android:textColor="@color/color_9"
android:textSize="@dimen/sp_12" />
</RelativeLayout>
<TextView
android:id="@+id/tvCarLen"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxLines="1"
android:singleLine="true"
android:text="16米"
android:textColor="@color/color_9"
android:textSize="@dimen/sp_12" />
<TextView
android:id="@+id/tvCarWei"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="30顿"
android:textColor="@color/color_9"
android:textSize="@dimen/sp_12" />
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/tvUnbind"

View File

@ -3,8 +3,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_white_8"
android:padding="@dimen/dp_10"
android:orientation="vertical">
android:orientation="vertical"
android:padding="@dimen/dp_10">
<LinearLayout
android:layout_width="match_parent"
@ -63,28 +63,38 @@
android:textColor="@color/black"
android:textSize="@dimen/sp_20" />
<View
android:layout_width="@dimen/dp_30"
android:layout_height="@dimen/dp_1"
android:background="@color/black" />
<TextView
android:id="@+id/tvDis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_8"
android:layout_marginRight="@dimen/dp_8"
android:text="56km" />
<View
android:layout_width="@dimen/dp_30"
android:layout_height="@dimen/dp_1"
android:background="@color/black" />
<TextView
<LinearLayout
android:layout_weight="1"
android:gravity="center"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="horizontal">
<View
android:layout_width="@dimen/dp_30"
android:layout_height="@dimen/dp_1"
android:background="@color/black" />
<TextView
android:id="@+id/tvDis"
android:maxLines="1"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_8"
android:layout_marginRight="@dimen/dp_8"
android:text="56km" />
<View
android:layout_width="@dimen/dp_30"
android:layout_height="@dimen/dp_1"
android:background="@color/black" />
</LinearLayout>
<TextView
android:id="@+id/tvEnd"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:maxLines="1"

View File

@ -13,6 +13,7 @@ import com.luck.picture.lib.basic.PictureSelectionCameraModel
import com.luck.picture.lib.basic.PictureSelectionModel
import com.luck.picture.lib.basic.PictureSelector
import com.luck.picture.lib.config.SelectMimeType
import com.luck.picture.lib.config.SelectModeConfig
import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.interfaces.OnResultCallbackListener
import com.lxj.xpopup.core.BottomPopupView
@ -92,6 +93,7 @@ class PopBottomPic(
.isMaxSelectEnabledMask(true)
.setMaxSelectNum(1)
.isGif(false)
.setSelectionMode(SelectModeConfig.SINGLE)
.setSelectedData(myAdapter.data)
selectionModel.forResult(object : OnResultCallbackListener<LocalMedia> {
override fun onResult(result: ArrayList<LocalMedia>) {

View File

@ -87,7 +87,7 @@ class PopNorBottomPic(
.isPreviewImage(true)
.isMaxSelectEnabledMask(true)
.setMaxSelectNum(1)
.setSelectionMode(SelectModeConfig.SINGLE )
.setSelectionMode(SelectModeConfig.SINGLE)
.isGif(false)
// .isDirectReturnSingle(true)
// .setSelectedData(myAdapter.data)

View File

@ -18,6 +18,7 @@ public class BaseSPUtils {
*/
public static final String FILE_NAME = "sp_data";
public static final String USER_INFO_KEY = "user_info_key";
public static final String USER_TOKEN_KEY = "user_token_key";
public static final String NET_SERVICE_TEST = "net_service_test";
public static final String SEARRH_CACHE = "search_cache";
public static final String NAVI_PH_EDIT_CACHE = "navi_ph_edit_cache";